Author archives: Moonlight

Защищённая авторизация: Javascript+PHP+MD5

Если возникает проблема отправки данных на сервер защищённым способом (особенно это касается логина и пароля пользователя), а использовать SSL нет возможности, то можно воспользоваться вот таким решением.Качаем отсюда файл md5.js (реализация алгоритма шифрования md5 на JavaScript).Создаём страницу с формой авторизации

<?php $_SESSION['key'] = mt_rand();?><br><scripttype="text/javascript"src="js/md5.js"></script><br><scripttype="text/javascript"src="js/secure.js"></script><br><formaction="login.php"method="post"onsubmit="return crypt_form(this, 'key', 'hash')"><br> Login:<br><inputtype="text"name="login"/><br>    Password:<br><inputtype="password name="pass" /><br><input type="submit ...

Читать далее

Транслит средствами JS. Пример из жизни

Решение, позволяющее тем, кто в силу тех или иных причин вынужден писать транслитом, быстро перевести написанное в нормальный русский текст.

Для начала - скрипт, выполняющий преобразование.



Код не мой, взят отсюда, я только чуть переделал его с учётом поставленной задачи (написать что-то своё на то время просто не было возможности). Вся суть заключается в использовании ассоциативных массивов(хэшей) в качестве "словарей" - каждой английской букве/буквосочетанию ставится в соответствие буква русская. При загрузке скрипта алгоритм транслитерации будет автоматически применён к первому элементу textarea на странице.

Теперь размещаем скрипт где-нибудь на общедоступном сервере, а затем создаём ссылку-букмарклет вот такого содержания:

<a href='javascript ...

Читать далее

Валидатор форм на стороне клиента

Этот скрипт позволяет быстро организовать проверку форм на сайте. Написал для себя в ходе одного из последних проектов, ибо надоело всё время писать конструкции вида

  1. if(!(document.forms[0].login.value)){
  2.     /*bla-bla-bla*/
  3. elseif(!(document.forms[0].password.value)){
  4.    /*bla-bla-bla*/
  5. }
  6. elseif(!(document.forms[0].email.value)){
  7.     /*bla-bla-bla*/
  8. }

Скрипт выглядит так.

  1. var js={
  2.     assoc:function(data, func){
  3. for(i in data)if(data[ i])func(data[ i], i);return data;
  4.     },
  5.   validate:function(frm, setup){
  6. var errFunc = arguments[2] || function(e){for(i in e)alert(i+':'+e[ i])}, errs = {}, cnt = 0, stop = arguments[3], deferr = arguments[4], ip = function(c ...

Читать далее

Пример работы с AJAX. Набор функций.

Простой набор функций для построения клиентской части AJAX-приложения.

var ajax = {
   /* Отправляет запрос к серверу. Базовая функция, все остальные являются обёртками для неё */
   query:function(url, ok){
      var req = (function(){
         /* Создаём AJAX-объект */
         try{return new XMLHttpRequest()}
         catch(e)
         {
            try{return new ActiveXObject('Microsoft.XMLHTTP')}
            catch(e){throw new Error('Your browser does not support AJAX')}
         }
      })(), a = arguments, c_err = a[2] || function(){}, data = a[3], mtd = a[4]||(data?'POST':'GET');
      with(req){
         /* Вешаем обработчик */
         onreadystatechange =function(){
            if(readyState == 4 && ok)(/200|304/.test(status)?ok:c_err)(req);
         };
         open(mtd, url, true);
         /* Выставляем нужные заголовки и отправляем запрос */
         if(mtd=='POST')setRequestHeader ...

Читать далее

Конвертирование текста в поле ввода из русского в английский. Вставка BB-кодов в текстовое поле.

Конвертирование текста в поле ввода из русской раскладки в английскую и обратно.

<script type="text/javascript">
function convertLayout(e, elem)
{
   e = e || window.event;
   var eng='qwertyuiop[]asdfghjkl;\'zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?@#$^&|';
   var rus='йцукенгшщзхъфывапролджэячсмитьбю.ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,"№;:?/';
   var src=elem.value;
   if((e.ctrlKey) && ((e.keyCode == 0xA) || (e.keyCode == 0xD)))
   {
           for(i=0;i<src.length;i++){
         for(j=0;j<eng.length;j++)
         {
            if(src.substr(i,1)==eng.substr(j,1))
               src=src.replace(src.substr(i,1),rus.substr(j,1));
            else if(src.substr(i,1)==(rus.substr(j,1)))
               src=src.replace(src.substr(i,1 ...

Читать далее

Быстрый доступ к функциям Панели управления и оснасткам MMC

Большинство компонентов Панели управления WIndows (или апплетов Панели управления, Control Panel Applets) представляют собой файлы с расширением .cpl. И быстро получить доступ к ним можно из командной строки (командой "Пуск - Выполнить" или в окне cmd). Для этого необходимо выполнить команду:

control имя_файла.cpl

или просто

имя_файла.cpl

Вот список некоторых основных приложений Панели управления:

alsndmgr.cpl - Realtek Sound Manager. Утилита для расширенной настройки звуковых параметров. Обычно устанавливается вместе с драйверами для звуковых карт Realtek.
access.cpl - специальные возможности (залипание клавиш, управление указателем мыши с клавиатуры etc.).
appwiz.cpl - установка/удаление программ.
desk.cpl - свойства Рабочего стола (заставка, обои, настройка параметров ...

Читать далее

rundll32 и доступ к системным функциям

rundll32 - это средство командной строки, позволяющие выполнять некоторые функции, экспортируемые из DLL-библиотек. Его "предшественником" был rundll, использовавшийся в 16-разрядных версиях Windows. Эта прога позволяет выполнять функции только из тех DLL, в которые подобная возможность была заложена при разработке.Синтаксис команды rundll32 такой:

rundll32 <dllname>,<entrypoint> <optional arguments>

dllname - название библиотеки.
entrypoint - имя процедуры/функции.
optional arguments - параметры.

Вот список некоторых команд, которые можно выполнять с помощью rundll32:

rundll32 shell32,Control_RunDLL hotplug.dll - диалоговое окно "Безопасное извлечение устройства"
rundll32 diskcopy,DiskCopyRunDll - вызов диалога "Копирование диска"
rundll32 mshtml.dll,PrintHTML "HtmlFileNameAndPath" - распечатать документ HTML, где "HtmlFileNameAndPath" - путь к файлу и его имя ...

Читать далее

Некоторые полезные команды Windows

sfc /scannow - восстановление системных файлов.
iexpress - стандартный системный архиватор для работы с файлами формата CAB.
chkdsk - проверка дисков
fsquirt - мастер передачи файлов Bluetooth
msconfig - настройка системы
msinfo32 - сведения о системе
clipbrd - управление буфером обмена.
sigverif - проверка цифровой подписи у системных файлов.
mstsc - подключение к удалённому рабочему столу.
regedit - редактор реестра
eudcedit - редактор личных символов
dxdiag - служба диагностики DirectX
assoc - вывод либо изменение сопоставлений по расширениям имен файлов
cacls - отображение/редактирование списков управления доступом (ACL) к файлам
chcp - вывод либо установка активной кодовой страницы
comp - сравнение содержимого двух файлов или двух наборов файлов
compact - отображение/изменение сжатия файлов в разделах NTFS ...

Читать далее

Управление CD/DVD-приводом с помощью Windows Scripting Host

Когда искал инфу по виндовым командам, случайно наткнулся на вот такую вот прикольную вещь)) В данном примере в качестве языка используется VBScript, но можно использовать и JS.Создаём файл с расширением .vbs и пишем там вот такой код:

  1. Set oWMP = CreateObject("WMPlayer.OCX.7" ) 
  2. Set colCDROMs = oWMP.cdromCollection 
  3. colCDROMs.Item(Wscript.arguments.Item(0)).Eject 
  4. Wscript.CreateObject("Wscript.Shell").Run "taskkill /im wscript.exe /f"

В первой строчке создаётся объект WMPLayer.OCX, в составе которого имеется множество свойств и методов для управления мультимедийным контентом. В том числе и коллекция (массив объектов) cdromCollection, элементы которой соответствуют всем оптическим приводам, установленным в ...

Читать далее

Fabric - автоматизация административных задач на python

Fabric - это инструмент, позволяющий автоматизировать выполнение различных операций на удалённом сервере. Например, заливка и развёртывание проекта на удалённом сервере.

Fabric представляет собой обычное python-приложение. Для соединения с удалённым сервером применяется SSH (используется питоновский модуль Paramiko).
Для установки Fabric вам понадобится pip - средство для установки python-приложений. Так что необходимая последовательность команд (для Debian-based систем) будет примерно такой:

Код:
aptitude install pip
pip install fabric
Естественно, перед этим нужно скачать исходники Fabric с офсайта.Далее нужно составить список инструкций, который хранится в файле fabfile.py. Например, вот так:
Код: 
from fabric.api import *
env.hosts = ['usr1@host1:22', 'usr2@host2:22']
def ...

Читать далее