Category Archives: Web

Обо всём, что связано с WEB технологиями и мной

PHP Security conference в Каунасе

Итак, прошёл PHP Security conference или PHP Security training в Каунасе.

XSS, SQL-Injections, Code Executions, Code Inclusions, Using google to find a Target, Shell Executions, Intranet Exploits, Output Encodings hacks и прочие вкусные вещи прошли огромным кол-вом через мои мозги. Часть осела, часть знал, о части даже не подозревал.

Johann-Peter Hartmann очень правильно подобрал материал, с немцам присущей пунктуальностью провёл не только лекции, но и hands-on курс с примерами взлома сайтов местных. 30 минут на взлом, несколько минут на поиск потенциальных мест для взлома, анализ кода (были даны примеры кода из зала, а он показал как надо это делать).

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

Были затронуты вопросы безопастности на уровне сервера (в смысле Apache, Linux/Unix конфигурации), но очень поверхностно, так как это от части не совсем забота программиста.

Вообще, очень полезная инвестиция, как денег фирмы, так и личных. Очень прочистило мозг. Очень! Чаще бы так.

Начало весны 2007

Начало весны (хотя уже середина) многообещающее.

14 марта прошла первая конференция блогеров Литвы, в которой я участвовал и описал ключевые моменты: Часть первая, Часть вторая, Фотографии, Награждения, Послесловие..

Как тут-же, 28 апреля пройдут “Круглые столы блогеров”. Итак, 28 апреля, Вильнюс, Факультет коммуникаций Вильнюсского университета, алея Саулетикио 9-I, 205 аудитория (VU komunikacijos fakultetas, Saulėtekio al. 9-I, 205 auditorija). Конечно, всё будет на Литовском языке. Официальное заявления организаторов альтернативной конференции.

К этому всему добавиться Kaunas PHP::Conf 2007, которая пройдёт 14 апреля в Каунасском технологическом университете.

А кроме всего: PHP Security training, который пройдёт 16-17 апреля в Каунас. Ведёт его Johann-Peter Hartmann, участвует в разработке PEAR и PECL, а также член документирующей команды PHP. Вот только вопрос, почему оно стоит таких смешных денег 60 Литов за 2 дня, правда ничего не включено – ни проживание в Каунасе, ни обеды, ни что либо ещё.

И везде я принимаю участие. Потратиться не малое количество денег на езду, еду и удовольствия. Но дело того стоит.

Вчерашние новости

Вчерашние новости, наверно так можно назвать то, что я сейчас опишу.

Итак, лучший HTML кодер, которого я познал за свою жизнь, Олег, ака nyvirus1, открыл свой сайт, http://coin-locker.com/. Нет, пока вы там не найдёте там супер-крутых советов, как сверстать сайт или чего либо связанного с кодингом. Нет, это очень личный блог, посвящённый его жизни и (кто бы сомневался), его девушке. Читайте, следите, никто не знает, куда повернёт этот гений.
Если вам интересно, почему он лучший HTML кодер, то я скажу, что я видел, как он за 3 месяца с ноля начал делать такое, что мне и не снилось, по моему достаточно, чтобы восхищаться человеком.

Коллега enc запустил свой проект на Ruby on Rails: ITopia – korespondencija pietų pertraukai. Комиксы на литовском языке о несуществующей фирме и людях, отображающий будни и реальности, которые происходили в разных местах, а иногда и просто вымышленные истории. Казалось-бы проекту нету месяца, но уже к 7 комиксу в сети появились шаржи и пародии – а ведь это успех старта. Мне лично все комиксы понравились, и я рад, что в Литовкой сети появился такой проект, а человек, который его создал, сидит за соседним столом. Хотя, нужно уделить внимание и человеку, который рисует каждый комикс: metalife (блог, тоже на литовском).

UAB “Dabarties Interneto projektų studija” начала обновлять свой сайт. Дада, мы обратили внимание на заметки в блогах, что мы как-бы замерли. Нет не, мы помним и знаем, что нас читают. Итак, в данный момент мы сменили первую страницу сайта. Причём, на ней самая важная информация об очень важном событие в истории фирмы. В то время, как вся Литва играет с Бизнес-планами (проект рекламируют, но основа конкурса – сделать лучший бизнес-план), UAB “Dabarties Interneto projektų studija” участвует в международном конкурсе Content 360°. И мало того, что участвует, она выходит в финал в категории “On-Demand participation”. Насколько известно мне, UAB “Dabarties Interneto projektų studija” единственная Литовская компания, которая вышла в финал, начиная с 1991 года. А вот вам и маленькая конфетка – клип, который представляет нашу идею.

А в переди 4 дня выходных, 2 из которых я просвещу семье, а два – наверняка работе. Спонсор блогпоста – пиво FAXE в литровой жестяной упаковке.

Google учит создавать сайты (никакого сарказма).

Ах, как мне это нравиться! Дедушка Google нас учит строить сайты. Нет, реально, Official Google Webmaster Central Blog пишет в блогпосте Site content and use of web catalogues, что все, включая SEO специалистов, должны делать не странички, предназначенные для поисковиков, а именно контент сайта, предназначенный для пользователей.

Хотя, мне честно говоря смешно читать такой блогпост. Такое ощущение, что в сети есть херова гора псевдоSEOшников, которые тем только и занимаются, что страдают хернёй, создавая клоаки, воруют контент, используют Wikipedia и Open Directory Project. Идиотизм и пустая трата времени.

Хм.. А хотя, да, есть часть. Как-то один из мною поддерживаемых и отслеживаемых сайтов попал наконец в Open Directory Project. А так как его цитирование в интернете отслеживается через Google Alerts, было получена лавина оповещений, что упоминание сайта было обнаружено на сотнях разных сайтов и все фактически по одному и тому-же адресу – адресу, схожему с его положением в Open Directory Project. Правда в поиске этих сайтов я так и не увидел – хорошо дедушка Google работает.

W3C заявила о возобнавлении работ над HTML стандартом

Итак, мальчики и девочки, хочу вас поздравить с тем, что скоро наступит полная победа коммунизма, или W3C возвращается к HTML.Вообще, это скорее подарок для женщин, так как новость запущена аж 7 марта 2007 года, а я (как настоящий мужчина) узнал о ней попозже.

Получается, что он будут делать HTML стандарт 5ой версии. И это после того, как последняя версия стандарта вышла аж в 1998 году и с тех пор разрабатывался XHTML? И это после того, как MS, Firefox, Opera и многие другие уже вполне терпимо поддерживали всё связанное с XHTML? А то что CSS2 они не поддерживают или поддерживают, но не совсем так как хотят все, им разрабатывать следующую версию CSS не мешает? Типо теперь они сделают что-то космическое и всеми поддерживаемое? То что все SEO и прочие WEB компании стараются везде пропихивать XHTML никого не волнует?

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

Если я в чём-то не прав – поправте меня.

О работе, php и своём framework

А всё-таки этo оправдалось. Пишешь свой, пусть и с косяками, php-framework. Пусть он под PHP4, пусть он не идеален, но он работает на 6 проектах, давая максимум функционалии для простых и удобных CMS. За время написания этих проектов, framework развивается, тестится и живёт.

Приходит день, и на основе его начинается новый, большой проект, когда над проектом работают сразу 2 программиста, 1 HTML кодер и ему помогает ещё 1 специалист по JavaScript. Потом сваливается новость, что не плохо бы перейти на PHP5. Не то чтобы для меня радость, но и не горе. Да, я потерял совместимость с предыдущими сайтами, но не это главное.

Первы сложным шагом было: перейти с PHP4 на PHP5 не потеряв всего что написано по функционалии. Пришлось написать добрую кучу Unit тестов, а потом переписать все компоненты для поддержки основных возможностей PHP5. Это новые конструкторы, это __sleep/__wakeup для моделей, это static, public, protected для нужных методов и прочие косяки, которые вдруг полезли.

Второй сложный шаг: помнить, что ты пишешь на PHP5.

Теперь о косяках, на которые можно нарваться головой.
Косяк №1 – документация кода. Она всегда страдает, что бы вы не использовали. Заставить себя писать комментарии, хотябы в виде phpDoc очень сложно. Заставить кого либо это делать, если не делаешь сам – ещё сложнее. Документировать код через недели после написания – дело скучное и вовсе не интересное. А надо.
Косяк №2 – Когда принимаешь нового человека в команду, нужно быть готовым к этому и иметь список внутренних стандартов кода. Спорить о том, как лучше писать код и по каким стилям при написанной части framework не самая хорошая идея.
Косяк №3 – Не надо бояться общаться в команде при работе, это решает проблемы. Не надо бояться иногда эксперементировать с принципами экстремального программирования – помогает, да ещё как.
Косяк №4 – Как всегда, у большинства самодельных framework страдает скорость. Но! У нас ведь есть право в любой момент отступиться, осмотреться и что-то изменить. Проект то большой и уникальный в своём плане. Можно отказать от каких-то возможностей, что-то переписать с максимальной пользой, где-то поправить не оптимальный код коллеги.
Из косяков вроде всё.

Вот к примеру сегодня (точнее уже вчера) я целый день провёл в профайлере, отлавливая тормозящие функции, методы и просто куски кода. Когда идёш по чужому коду (пусть не документированному) и видишь все его идеи (благо MVC это позволяет без проблем) – править тормозящие мелочи очень легко, тем самым отвоёвывая по 10-20 ms. За любой код, пусть самый кривой, ты не ругаешь, ты просто его правишь на более корректный (и то это на твой взгляд) и быстрый. Главное, что оба кода правильные, оба кода по функционалии абсолютно одинаковые, просто есть разница в 2-3 запроса к базе, 10-20 ms и никаких нервов или ругани.

А вот показать это чудо, я не думаю, что уже когда смогу.

PECL на Unix/Linux

Меня всё волновал вопрос, как ставить PECL на PHP из исходников. Сегодня я не только наконец нашёл ответ не этот вопрос (я не сильно искал его, если честно), но и попробывал сам это сделать.

Итак, есть 3 способа поставить PECL под Unix/Linux:

Как это делает PEAR я не знаю, не делал я этого с ним, зато провёл живой эксперимент с memcache-2.1.0, PHP 5.2.0 на Ubuntu 6.06 LTS (The Dapper Drake). Всё что от меня потребовалось сделать:

wget http://pecl.php.net/get/memcache-2.1.0.tgz
gunzip memcache-2.1.0.tgz
tar -xf memcache-2.1.0.tar
cd memcache-2.1.0
phpize
./configure
make
make install

Оно само всё сделало, и даже положило в нужную папку. Осталось только активировать его в php.ini.

Сделать это statically мне не удалось – всё остальное было поставлено из packages или как это у них называлось и компилировать все исходники с нуля никто не хотел.

Памятка, как установить CentOS 4 с Server CD

Итак, да, мне пришлось это делать 5 раз и возможно придётся делать ещё не раз. Поэтому памятка для меня, как это сделать.

Да, именно CentOS 4, именно с Single Server CD.
Вроде-бы всё просто. Качаем Single Server CD, вставляем в привод, грузимся с него. Там везде всё почти Next Next Next, естественно читая и отмечаю то что нужно. Ставили Minimal, так как всё равно нам не нужен был ни KDE ни тот набор предустановленного ПО. Да, я отказался от Firewall и прочей безопастности – я не администратор-профессионал, я только ставлю сервер, который будет стоять в LANе и только для внутреннего пользования. Как только всё установлено – Reboot.

Входим в SHELL (можно уже и по SSH), делаем yum update. Всё что он скажет, подтверждаем. Далее отрубаем, ненужные сервисы (короткий список сервисов, которые можно вырубить). Команды service name stop, chkconfig name off. Для того что бы увидеть список врубленных сервисов есть комманда chkconfig –list | grep on.

Так как я фанат Midnight Commanderа – устанавливаю и его: yum install mc.i386.
Для удобной работы через SSH мне рекомендовали установить yum install screen.i386 – да, он внутри, но держать постоянно открытым Putty я не могу, а к серверу монитор – роскошь, места много занимает, да и мы ленивые, ходить не любим.

Ещё мне рекомендовали систему конфигурировать не через DHCP. Следовательно, нужно отредактировать файл /etc/sysconfig/network-scripts/ifcfg-eth0 или соответствующий к вашему интерфейсу. Ключи:

  • DEVICE=eth0
  • BOOTPROT=none
  • HWADDR=xx:xx:xx:xx:xx:xx
  • ONBOOT=yes
  • NETWORK=xxx.xxx.xxx.xxx
  • NETMASK=xxx.xxx.xxx.xxx
  • IPADDR=xxx.xxx.xxx.xxx
  • TYPE=Ethernet
  • GATEWAY=xxx.xxx.xxx.xxx
  • DNS=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx

Подробнее: Interface Configuration Files По окончанию: service network restart.

Первый этап закончен.