purple_m0nkey, после прочтения твоей мотивационной статьи мы посовещались с друзьями и решили, что если уж китайский за ночь выучили, то и php за час освоим. Купили в интернетах ваучеры и поехали в Сибинфоцентр сдавать на ZCE, как таковых знаний никогда не было и нет, из книг читали только «Освой самостоятельно PHP4 за 24 часа», да и то пока ехали на экзамен на трамвае. Поначалу было трудно, трамвай трясло, но мы успели прочитать оглавление.
сдал вчера. вопросы показались гораздо более простыми, чем мок-тест от php|architects.
суть подготовки
1. надо несколько раз поставить и настроить php (в различных вариантах — apache + mod_php, apache + cgi, nginx + php-fpm), это заставит хотя бы пару раз заглянуть в php.ini, поняв, что и за что там отвечает;
2. в качестве обертки для БД — использовать каждый день PDO с различными драйверами под него (никаких PEAR DB или сторонних);
3. написать пару веб-сервисов (REST, XML-RPC, SOAP), применив различные шаблоны проектирования (Singleton/Registry, Builder/Factory, Adapter/Strategy, Proxy/ActiveRecord, Command/ChainOfResponsibility) — сервис погоды, случайных фраз или цитат известных людей, вариантов множество, выбирать вам. Заодно разберетесь, что есть такое валидный XML, и почему важен UTF-8 encode entities (привет w3c.org);
4. поковырять любой современный CMF (ZF, Symphony, CodeIgniter), чтобы просмотреть что такое MVC, __autoload, SPL, PPP (public, protected, private), abstract, final, понять как грамотно использовать различные предустановленные константы вроде __FILE__, __CLASS__ и функции вроде call_user_func(), func_num_args(), func_get_args();
5. найти на milw0rm'e любой бажный движок и внимательно просмотреть все патчи, разобравшись, чем грозит SQL Injection, XSS, CSRF и RFI, на php.net прочесть про magic_quotes, ===, basename(), htmlentities (с пониманием разницы между ним и htmspecialchars), strip_tags, mysql_real_escape (с разницей от mysql_escape) и hash. погуглить немного prepared statements, написать свою функцию экранирования, понять, где нужно включать allow_url_fopen, чем полезна open_basedir и как ее можно обойти, не пропустить filter_var
6. сесть и переписать свой тысячный твиттер с приобретенными знаниями о безопасности, поигравшись в запросах c EXPLAIN и EXPLAIN ANALYZE, созданием правильных индексов и применения нормализации (и почему на нагруженных проектах про нее надо забывать)
7. развернуть для своих игрищ линух (пойдет ubuntu 8.04) — для виндузятников в VMWARE. разобраться с rwx, chmod и umask. узнать про tempnam.
там же доставить xdebug через pecl, memcached и php-apc через aptitude. понять весь масштаб трагедии еще недописанного твиттера, добавить туда $mc->set('user_31337_friends', $friends, 0, 900); $friends = $mc->get('user_31337_friends'), узнать о race conditions, обойти его с помощью ключа с ttl, включить APC и увидеть прирост скорости
8. найти книжку про оптимизацию css и js, выставление грамотных header с cache-control'ом. понять про че она)
9. написать мне, я допишу квест… а пока иду спать.
отдал своей красавице месяц назад домашний компьютер, через три недели не выдержал, купил mp3-флешку с радио, через неделю опять отдал ей, потом девушке понадобился по фрилансу интернет — отдал телефон с блютус-адаптером, взамен забрал тупой кирпич — чтобы звонить. дабы совсем не сойти — с ума записался в автошколу, нашел вторую работу вечером, и теперь проблемы отсутствующего компа и интернета меня не занимают, только цикл «работа №1->автошкола->работа №2->6ти часовойсон->работа №1» утомляют.
ковырял двиг, но без перехода на PDO в плане баз, без перехода на Smarty в плане шаблонов, и на паттерн MVC в плане архитектуры - делать нечего, ибо дырявый двиг с макаронокодом, который не поддерживается, и рефакторится прям титаническими усилиями - создал бы SafExplay.
процесс оптимизации скорости выдачи исключительно интимный,
для оптимизации надо конкретно знать, что оптимизировать. для этого умные люди сначала развивают средства диагностики и профайлинга, а советы в стиле Y!SLOW - рассчитаны на то, что у тебя уже дорогое и мощное железо в виде бэка, широкий канал и многое другое, что буржуями уже подразумевается за их бабло.
думаю, в отношении национальных веб-два-нольных приложений - важно обеспечить быструю выдачу для многих клиентов, а это уже затрагивает вопросы кластеризации/отказоустойчивости разработанного решения.
суть подготовки
1. надо несколько раз поставить и настроить php (в различных вариантах — apache + mod_php, apache + cgi, nginx + php-fpm), это заставит хотя бы пару раз заглянуть в php.ini, поняв, что и за что там отвечает;
2. в качестве обертки для БД — использовать каждый день PDO с различными драйверами под него (никаких PEAR DB или сторонних);
3. написать пару веб-сервисов (REST, XML-RPC, SOAP), применив различные шаблоны проектирования (Singleton/Registry, Builder/Factory, Adapter/Strategy, Proxy/ActiveRecord, Command/ChainOfResponsibility) — сервис погоды, случайных фраз или цитат известных людей, вариантов множество, выбирать вам. Заодно разберетесь, что есть такое валидный XML, и почему важен UTF-8 encode entities (привет w3c.org);
4. поковырять любой современный CMF (ZF, Symphony, CodeIgniter), чтобы просмотреть что такое MVC, __autoload, SPL, PPP (public, protected, private), abstract, final, понять как грамотно использовать различные предустановленные константы вроде __FILE__, __CLASS__ и функции вроде call_user_func(), func_num_args(), func_get_args();
5. найти на milw0rm'e любой бажный движок и внимательно просмотреть все патчи, разобравшись, чем грозит SQL Injection, XSS, CSRF и RFI, на php.net прочесть про magic_quotes, ===, basename(), htmlentities (с пониманием разницы между ним и htmspecialchars), strip_tags, mysql_real_escape (с разницей от mysql_escape) и hash. погуглить немного prepared statements, написать свою функцию экранирования, понять, где нужно включать allow_url_fopen, чем полезна open_basedir и как ее можно обойти, не пропустить filter_var
6. сесть и переписать свой тысячный твиттер с приобретенными знаниями о безопасности, поигравшись в запросах c EXPLAIN и EXPLAIN ANALYZE, созданием правильных индексов и применения нормализации (и почему на нагруженных проектах про нее надо забывать)
7. развернуть для своих игрищ линух (пойдет ubuntu 8.04) — для виндузятников в VMWARE. разобраться с rwx, chmod и umask. узнать про tempnam.
там же доставить xdebug через pecl, memcached и php-apc через aptitude. понять весь масштаб трагедии еще недописанного твиттера, добавить туда $mc->set('user_31337_friends', $friends, 0, 900); $friends = $mc->get('user_31337_friends'), узнать о race conditions, обойти его с помощью ключа с ttl, включить APC и увидеть прирост скорости
8. найти книжку про оптимизацию css и js, выставление грамотных header с cache-control'ом. понять про че она)
9. написать мне, я допишу квест… а пока иду спать.
из протестированных выбрал бы Avast!
из коммерческих взял бы ESET NOD32,
Касперский, поставленный вместе с Я.Онлайн — прилично нагрузил систему, не заметив кучи вирусов (видимо не самые свежие базы)
а я думал, мопед. только он еще и с PostgreSQL умеет, если что.
для оптимизации надо конкретно знать, что оптимизировать. для этого умные люди сначала развивают средства диагностики и профайлинга, а советы в стиле Y!SLOW - рассчитаны на то, что у тебя уже дорогое и мощное железо в виде бэка, широкий канал и многое другое, что буржуями уже подразумевается за их бабло.
думаю, в отношении национальных веб-два-нольных приложений - важно обеспечить быструю выдачу для многих клиентов, а это уже затрагивает вопросы кластеризации/отказоустойчивости разработанного решения.