2007-12-14

Фракталы

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

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

Исходники можно скачать здесь

 

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

 
  2007-12-06

Созерцательное программирование

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

Вот например новый термин - "Созерцательное программирование". Русский поиск в гугле не дает много результатов на это словосочетание, - оно является моей версией перевода термина Contemplative Programming.

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

Именно в такие моменты можно сделать что-то стоящее, а не когда натужно колотишь по клавишам ожидая когда количество перейдет в качество, хотя так тоже частенько случается.

 

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

 
  2007-12-02

Борьба за трезвость

Сегодня выходной, хотел было достать из холодильника бутылочку Каберне, которая стоит там с последнего сабантуя, но в фосе наткнулся на видеозаписи лекций о вреде этого дела в исполнении некоего Жданова, собственно обратил внимание только по причине того что они (файлы с лекциями) лежали рядом с Норбековым.

Что я могу сказать. Сильно, очень сильно, я прослушал только половину пока на обязательно дослушаю до конца.

Вино похоже придется вылить.

Правда несет этот Жданов полный бред, хотя и не совсем лишенный смысла. Возможно кто нибудь послушав его действительно бросит пить, курить, колоться, заниматься сексом....

Хотя про секс это наверно лишнее.

 

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

 
  2007-11-27

PHP4: это не баг, это системная функция

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

Не работает:

class SomeClass { function singleton(){ static $instance = null; if ($instance==null){ $instance =& new SomeClass(); } } }

Работает:

class SomeClass { function singleton(){ static $instance = null; if ($instance==null){ $instance = new SomeClass(); } } }

В пятом PHP будет работать только первый вариант, второй правда хотя и со скрипом, то тоже будет (будет ругаться чтобы к функции поставили модификатор static и не использовали никаких амперсандов у оператора new)

 

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

 
  2007-11-15

Перебираем XML ноды

Обычно я использлую цикл while когда нужно сделать итерацию по дочерним элементам XML нода, а тут решил что цикл for для этих целей подходит гораздо лучше.

было:

var item = element.firstChild; while(item!=null){ if ((item.nodeType==1) and (item.nodeName=='tagname') { //здесь код } item = item.nextSibling; }

стало:

for(var item = element.firstChild;item!=null;item = item.nextSibling;){ if ((item.nodeType==1) and (item.nodeName=='tagname') { //здесь код } }
 

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

 
  2007-11-10

Статические пременные класса vs. суперглобальных переменных

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

В PHP есть также т.н. суперглобальные переменные - $_POST, $_GET.

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

Захотелось мне сделать свои суперглобальные переменные куда я хочу поместить значения из $_POST и $_GET, но без magic_quotes.

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

Как быть? Суперглобальные переменные нельзя создать - они накрепко зашиты в PHP и новые суперглобальные переменные сделать невозможно, но я нашел один выход из данной ситуации.

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

class Site{ static $POST; static $GET; static $COOKIE; static function stripslashes($val){ $type = gettype($val); if ($type=='string'){ return stripslashes($val); } elseif($type=='array'){ $var1 = array(); foreach($val as $key=>$value){ $var1[$key] = Site::stripslashes($val[$key]); } return $var1; } else { return $val; } } static function initSite(){ if (ini_get('magic_quotes_gpc')){ Site::$GET = Site::stripslashes($_GET); Site::$POST = Site::stripslashes($_POST); Site::$COOKIE = Site::stripslashes($_COOKIE); } else { Site::$GET = $_GET; Site::$POST = $_POST; Site::$COOKIE = $_COOKIE; } } } Site::initSite();

При этом полученные переменные Site::$POST и Site::$GET ведут себя также как и аналогичные классические аналоги $_POST и $_GET.

 

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

 
  2007-11-09

Microsoft forever!

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

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

 

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

 
  2007-11-09

Бритва Оккама

Хотел было сделать новый раздел на сайте куда можно будет записывать хорошие афоризмы и просто интересные мысли, но первое что бы я туда записал было бы "entia non sunt multiplicanda praeter necessitatem" - Не множь сущностей без необходимости.

Так что идея с созданием нового раздела отпала сама собой. Значит будем улучшать раздел с блогами :)))

 

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

 
  2007-11-08

Дзен-программизм

Недавно на баше наткнулся на симпатичный пост

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

Вот если написать простейший код на JavaScript
<html> <head> <title>Дзен-программизм</title> </head> <script type="text/javascript"> intQuanty = 1; intQuanty = intQuanty + 0; alert(intQuanty); </script> </html>

Результат выполнения программы будет "1" как и следовало ожидать.

Однако стоит сделать переменную intQuanty строковой, то результат будет совсем другой

<html> <head> <title>Дзен-программизм</title> </head> <script type="text/javascript"> intQuanty = "1"; intQuanty = intQuanty + 0; alert(intQuanty); </script> </html>

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

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

Однажды показал такой фокус одинеснице - так она на меня смотрела как на прокаженного.

 

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

 
  2007-11-06

Улучшения

Сегодня забил на работу и целый день обкатывал-улучшал сайт. Правда улучшений так и не видно, все они прошли на уровне ядра. Однако теперь на сайте можно комментировать блоги, и регистрироваться, хотя качество этих сервисов прямо скажем все еще далеко от того который я вижу идеалом. Поэтому постараютсь в ближайшее время это все довести до более менее хорошего качества.

 

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