2008-11-11

Базовый класс для наследования в JavaScript

Под впечатлением класса разработанного Дином Эдвардсом создал свой собственный класс, который позволяет значительно упростить структуру программ на JavaScript где необходимо неследование.

Основные особенности следующие:
- маленький и простой - неминифицированный размер: 622 байта.
- конструктор описывается явно как функция с именем 'constructor'
- наследование статических и обычных членов класса
- при определениии объекта не используется MyClass.prototype;
- не используются глобальные функции для создания цепочек прототипов;
- не изменяется Object.prototype.

 Вот пример использования:

var Animal = BaseClass.extend({
  constructor:function(){
    alert("Anumal is created!");
  },
  say:function(){
    alert("hm...");
  }

});

ver Cow = Animal.extend({
  constructor:function(){
    alert("Cow is created!");
  },
  say:function(){
    alert("mooo");
  }  

});
var cow1 = new Cow();
cow1.say();

Фактически, от версии Дина отличается только отсутствием статических методов на этапе наследования - их можно и явно прикрутить, что улучшит читаемость кода,  также отсутствует метод super, на мой взгляд у Дина эта штука будет понижать производительность, перегруженных функций независимо используется super или нет, поэтому я решил от неё отказаться, к тому же её можно эмулировать просто отдельной функцией.

Upd. Позже я пересмотрел мысль насчет super и включил её в реализацию метода. В ztools.org можно найти последнюю версию функции.

 

Коментариев: 1

 
  2008-11-10

Опрос вебсервера по протоколу HTTP

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

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

 

Коментариев: 1

 
  2008-11-07

OpenOffice и клавиши навигации

Я тут уже писал о проблемах дистрибутива третей версии OpenOffice, оказывается, на сайте Инфра Ресурс даже приостановили его скачивание по этой причине, правда через несколько часов восстановили, с их слов при сборке дистрибутива произошло отключение энергии и из-за этого дистрибутив оказался, мягко говоря, неработоспособным.

Скачал исправленную русскую версию с сайта OpenOffice.org - панельки управления появились, но вот беда, навигационные клавиши перестали работать - стрелка вверх, стрелка вниз, вправо, влево, Backspace, Home, PageDown, PageUp все эти клавиши перестали откликаться. Скачивание дистрибутива с сайта ИнфраРесурс тоже помогло мало.

Похоже, что помимо панелек исчезли ещё и назначения клавиш. В меню Настройки все назначения клавиш оказались пустыми! Попробовал расставить сочетания клавиш вручную, но это оказалось нелегким делом, так как русский перевод названий операций оказался довольно странным - Down - До верхней строки, Up - До нижней строки, Left - Символ слева, Right - перейти вправо. То есть, по названию операции вообще трудно определить что она делает.

К счастью, решение нашлось очень быстро, дело в том, что OpenOffice позволяет не только назначить сочетания клавиш но и записать настройки клавиш в файл и соответственно считать их из файла. На одном из компьютеров нашлась предыдущая инсталляция OpenOffice, с коей и удалось переписать назначения клавиш. После этой процедуры всё встало на свои места, все навигационные клавиши заработали как им и полагается.

Читать далее...

 

Оставить комментарий

 
  2008-11-03

WYSIWYG для сайта

Добавил WYSIWYG на сайт, использовал свой любимый FCKEditor, пока насторил не все функции, но для начала и так пойдет...

 

Коментариев: 5

 
  2008-11-03

Билайн-спаммеры?

Второй день подряд удаляю из почтовых ящиков сообщения типа "Получи iPhone 3G бесплатно" вроде как от Билайна. "Вроде" потому что я пока не очень верю что солидная сотовая компания может рассылать подобные сообщения.

Все письма сделаны в стиле официального сайта Билайна, правда в письме нет ссылки чтобы описаться и нет вообще ни одной ссылки которая бы вела на сайт Билайна где можно было бы получить информацию о акции или злобно наругаться на спамеров.

Обратный адрес стоит: ltdbvujwhd@boba.pds.cdx.mot.com так что это точно не Билайн. Кодовой фразой является Отправь SMS с текстом "я не лох" "iPhone" на короткий номер 7733

Думаю многие попадутся на эту удочку, т.к. для обычного пользователя придраться почти не к чему.

 

Оставить комментарий

 
  2008-11-03

Одноклассники - неумейки?

Прочитал замечательный ответ Экслеру от Одноклассников когда тот раскритиковал их за жадность. Больше всего мне понравилось следующее высказывание:

Немного информации. В последние дни в системе в определенные моменты были попытки регистраций десятков ботов в секунду. Сотни тысяч ботов, по повелению своих создателей, в пиковые часы могли начать одновременно голосовать за миллионы фотографий и ходить по миллионам анкет, для привлечения к себе внимания. Заходит человек посмотреть, кто это ему оценочку поставил, а там – рекламный месседж. И все эти действия создают такую нагрузку на сервера, что Экслер с Плющевым вместе взятые не смогли бы себе такое представить.

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

Странно, почему gmail не испытывает подобных трудностей? У него аудитория гораздо шире... Специально зашел на регистрацию в одноклассниках, капча на месте, думаю вроде не должны их ломать, однако дай думаю посмотрю как капча сделана, смотрю код.... ха, оказалось капча то не на одноклассники ведет... а на http://recaptcha.net/.

Иными словами ВСЕ что они перепробывали это воспользовались бесплатным сервисом теста Тьюринга!

Не удивительно что их ломают все кто не попадя... Все это так дорого, требует так много денег чтобы такую защиту поставить, нужно очень дорогих специалистов привлекать... У меня студенты на первом курсе за час справляются...

 

Коментариев: 3

 
  2008-11-02

Open Office 3.0 и DOCX

Сразу после установки Open Office 3.0 решил проверить насколько он умеет работать с docx. Оказалось что, действительно, docx он открывает, а вот сохранять docx не умеет, что очень странно для формата который Microsoft усиленно хотела сертифицировать в ISO, похоже, что так сделали намерено в рамках корпоративной политики, подождем следующих версий когда война форматов закончится.

 

Оставить комментарий

 
  2008-10-30

strpos vs. ereg vs. preg_match

Тут возник вопрос как между собой соотносится быстродействие POSIX регулярных выражений, Perl-совместимых регулярных выражений и кодирования "в лоб" с использованием обчных си-подобных str* функций. Можно долго на эту тему рассуждать, поэтому привожу тест который расставляет все по местам. Исходник здесь

 

Коментариев: 1

 
  2008-10-30

Как вывести список файлов через FTP

Встала такая задача - вывести в список всех флеш роликов используемых в проекте. При этом известен только FTP заход. Конечно, можно просмотреть все страницы сайта, посмотреть где есть ссылки на swf и записать их адреса, но это займет много времени да к тому же можно что либо пропустить. Можно воспользоваться возможностями FAR Мanager, но он не выводит результат в текстовый файл, поэтому написал вот такую программку:

<?php error_reporting(E_ALL | E_STRICT); class FtpSearch { var $server_url = ''; var $username = ''; var $password = ''; var $remote_folder = ''; var $ftp; function log($message){ print $message; } function show(){ $this->ftp = ftp_connect($this->server_url); if ($this->ftp===FALSE){ $this->log('Can not connect to FTP server'); } else { $this->log('Connected successful'); if(ftp_login($this->ftp,$this->username,$this->password)){ $this->getListOfFiles($this->remote_folder,$this->remote_folder); } else { $this->log('Login failure!'); } ftp_quit($this->ftp); $this->log('Connection closed!'); } } function getListOfFiles($folder,$filename){ flush (); set_time_limit(30); if (ereg('\.swf$',$folder)){ print $folder.'<br />'; } $c = @ftp_chdir($this->ftp,$filename); if ($c){ $list = ftp_rawlist($this->ftp,''); $files = array(); reset($list); while (list(,$row) = each($list)) { $buf=""; if ($row[0]=='d'||$row[0]=='-'){ $buf = ltrim(substr($row,55)); $files[]=$buf; } } if ($files!==FALSE){ foreach($files as $file){ if (($file!='..') and ($file!='.')){ $this->getListOfFiles($folder.'/'.$file,$file); } } } $c = ftp_chdir($this->ftp,'..'); } } } $c = new FtpSearch(); $c->show(); ?>
 

Коментариев: 4

 
  2008-10-29

Как удалить все сообщения из почтового ящика?

Сегодня случилось удалять сообщения из POP3 почтового аккаунта в коем набралось больше шести тысяч писем спама. Конечно гораздо проще убить и заново создать ящик, но это слишком просто, гораздо интереснее написать небольшую программку, которая и убьет все сообщения, тем более что здесь нашел замечательную функцию на PHP. Вот ее код:

function deleteAllMessages($server,$username,$password){ $cmd = array(); $cmd[] = "USER $username\r\n"; $cmd[] = "PASS $password\r\n"; $cmd[] = "STAT\r\n"; $cmd[] = "QUIT\r\n"; // Server is your POP3 server, ie pop3.server.com // Port is the port number ( should be 110 ) $port = 110; $fp = fsockopen($server, $port); if(!$fp) { print("Error connecting to server $server"); } else { $ret = fgets($fp, 1024); foreach($cmd as $ret) { fputs($fp,$ret); $line = fgets($fp, 1024); if($ret=="STAT\r\n") { $fields = explode(" ",$line); print 'found '.$fields[1].' massages
'; $num_mails = $fields[1]; for($i=1;$i<=$num_mails;$i++) { set_time_limit(30); fputs($fp,"DELE $i\r\n"); $line = fgets($fp, 1024); flush(); } } } fclose($fp); } }

здесь выложил работающий пример.

 

Оставить комментарий