Вечер брюзжания

2 июня 2010; Рубрика: Гон; Теги: , ;

Обсуждается на каком-то, допустим, форуме, допустим, какая-то новая возможность в, пускай, PHP. Вот, например, type hinting. Какие в подобных дискуссиях самые распростронённые аргументы противников внедрения нового?

— Возможность, конечно, полезная, но многие поймут её превратно и говнокода станет больше.
— У многих хостеров PHP 4, а о PHP 5.3 они вообще не слышали.

Какие все глубоко мыслящие и широкие натуры.

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

Мне вот интересно только то, что я с этого получу, как я смогу это использовать и чем это мне упростит жизнь. А вы?

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

goDB 1.1.3

1 июня 2010; Рубрика: Библиотеки; Теги: , , , , ;

После года разгильдяйничества, решил снова заняться своей библиотечкой для работы с MySQL.

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

(Остальной текст под катом)

Честь php_memcached восстановлена

28 мая 2010; Рубрика: memcached; Теги: , , ;

На днях на highload.com.ua появилась статья сравнивающая два php-расширения для работы с Memcached. Старое php_memcache и относительно новое php_memcached.

Среди прочего был приведен тест производительности, который внёс сумятицу в стройные ряды поклонников нового расширения. По нему получалось, что php_memcached умудрился стать втрое медленнее php_memcache.

(Остальной текст под катом)

Сериализация с Igbinary

27 мая 2010; Рубрика: extension,php; Теги: , , , ;

Дошли, наконец, руки поставить и протестировать PHP-расширение Igbinary, о котором сегодня и поведую.

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

$A = array(1, 2, 'three', true);
$s = serialize($A);
 
var_dump($s); // 'a:4:{i:0;i:1;i:1;i:2;i:2;s:5:"three";i:3;b:1;}'

Для подобных действий используются функции serialize() и unserialize. Кроме того сериализация происходит неявно для данных сессий, значений в мемкэше и др.

Основной недостаток стандартной сериализации: формат строки — слишком многословный. Именно эту проблему решает Igbinary, сохраняя данные в компактной двоичной последовательности.

(Остальной текст под катом)

Протухшие мировые новости

19 мая 2010; Рубрика: мировые новости; ;

Google вконец слетел с катушек и занялся распознаванием речи на JavaScript. Наверняка это откроет новые горизонты для долбоёбов-сайтоделов. Фоновая музыка и мигающее меню — вчерашний день, голосовая навигация по сайту выбор нового поколения.

Пока гугл страдает фигнёй, Яндекс начал искать по мировому интернету.

В Японии же робот I-Fairy провёл брачную церемонию. Скоро должны последовать свадьбы роботов и роботов-гомосексуалистов.

Волнующие вести для всех патриотов: заработал первый кириллический домен http://xn--d1abbgf6aiiy.xn--p1ai/. Обращает на себя внимение часто повторяющееся киррилическое сочетание «х..н.».

И ещё больше радости патриотам: объем компьютерного пиратства в России вернулся на докризисный уровень.

Ubuntu 10.04 (рысь непереводимой расцветки) победно шествует по планете, поражая в первую очередь уёбищными кнопками на окнах.

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

В тоже время робот из молекулы ДНК смог пройти 50 шагов, спиздить трактор и съебаться подальше.

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

Появилось сравнение производительности php_memcache и php_memcached. D сосёт.

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

Как-то глухо проходит devconf. Что и неудивительно, так как самым ярким событием в мире веб-разработки за последнее время стал, как обычно всемирный пiхослёт в Киеве.

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

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

Redis: установка на локалку (Ubuntu)

5 апреля 2010; Рубрика: Redis; Теги: ;

Redis logo
Не так давно, я публиковал здесь перевод официальной документации по Redis. Теперь попробуем пощупать этот самый Редис непосредственно.

Первым делом его, конечно же, нужно установить. Здесь я опишу установку на Ubuntu 9.10. Также подразумевается, что устанавливаем мы его не на рабочий сервер, а на собственную машину для личных нужд. Установка на другие nix’ы вряд ли будет сильно отличаться.

Официальной поддержки Windows нет. Есть отдельная сборка, которая у меня вполне работала. К сожалению, последний релиз датирован прошлым апрелем и содержит достаточно старую версию сервера (0.91).
(Остальной текст под катом)

Hostgen.py: генератор конфигов Apache под Win

12 марта 2010; Рубрика: tools; Теги: , , ;

Большая часть web-разработки проходит у меня на данный момент в Windows и под Apache. При этом часто приходится создавать локальные домены (и часто удалять их). При этом процесс создания обычно следующий:

  1. Вспомнить, где у меня лежит vhosts.conf и найти его
  2. Скопипастить одну из секций <VirtualHost>
  3. Внести в неё нужные изменения для нового домена
  4. Выдумать домену уникальный локальный IP и указать его тут же
  5. Откопать глубоко в недрах папки Windows файл hosts и добавить IP туда
  6. Перезапустить Apache
  7. PROFIT

Это утомляло мою лентяйскую натуру. Кроме того, я намеревался написать какую-нибудь простенькую утилитку на Python, для лучшего изучения этого, пока ещё тёмного для меня языка. Встречайте — Hostgen.py, может даже кому-нибудь пригодится. (Брать — здесь, zip 11K)
(Остальной текст под катом)

Mercurial-3: head всему голова

10 марта 2010; Рубрика: mercurial; Теги: , , , ;

Это продолжение части 1 и части 2.

С момента написания предыдущей части прошло две недели, но за это время произошло немало событий. Зарелизились Mercurial 1.5 и TortoiseHg 1.0, а Джоэл Спольски написал туториал по mercurial. Что характерно, повествование своё, Джоэл разбавил логами виндовой консоли, что позволяет мне в тайне надеяться, что перед этим он читал мой блог :)

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

Сегодня тема будет небольшая и, на первый взгляд, простая. Однако и здесь можно запутаться. Итак — головы (heads) в Mercurial.
(Остальной текст под катом)

Redis: перевод официальной документации

9 марта 2010; Рубрика: Redis; Теги: , , , ;

Redis logo

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

Для тех, кто не в курсе: Redis, это хранилище типа «ключ-значение» (key-value). Как Memcached (вернее MemcacheDB с его постоянным хранением данных), только круче :).
 
От мемкэша Redis оставил себе скорость и простоту доступа к данным по ключам, а так же легкость в разнесении большого хранилища на множество серверов. Однако, если Memcached в качестве значений поддерживал только строки, то Redis поддерживает также более сложные типы данных (списки и множества). И, вместе с этими типами, также имеется большой набор атомарных операций над ними.

Таким образом, если Memcached это, по большому счёту, всего лишь система для кэширования, то Redis уже полноценная база данных (так называемая NoSQL-БД).

Если хорошо подумать, в большинстве веб-приложений, где используются реляционные БД (типа MySQL), их реляционность по большому счёту и не нужна. И их с большей эффективностью можно заменить на NoSQL-базы типа Redis’а. Особенно это касается высоконагруженных проектов, где требуется высокая скорость и масштабируемость (и нет недостатка в аппаратных ресурсах).

Относительно средних по размеру проектов — Redis может успешно дополнять тот же MySQL, забирая себе некоторые из его функций. Например, основные данных хранить в Redis, а индексы, выборки и сортировки оставить MySQL.

Итак: Перевод официальной документации по Redis на pyha-wiki.

Из наиболее интересного:

Tools: генерилка паролей

4 марта 2010; Рубрика: tools; Теги: ;

Новый полезно/бесполезный сервис — генерилка паролей.

Генерите себе пароли на любой вкус! По одному и целыми пачками :)

Типочки:
© Я не я и сайта не моя, 2008–2011