Владимир Лучанинов
@how
Пользователь
Upgrade до Middle PHP-разработчика за 3 месяца
2 min
193KВ очередной раз на меня свалилась задача найти хорошего PHP-программиста.
По результатам прозвона потенциальных кандидатов, 90% тех, кто мнит себя Middle, на самом деле Junior и годы опыта не спасают, потому что клепают однотипный код в пределах заданий, посланных свыше.
Прописал минимальный план желающим сделать рывок и перейти на следующий уровень без отрыва от производства.
Яндекс выпустил антивирус для сайтов — Manul
4 min
116KПоиск Яндекса ежесуточно показывает людям больше восьми миллионов предупреждений о том, что страница, на которую они хотят перейти, заражена. Часто владелец сайта вспоминает о том, что его сайт может быть взломан и на нём может быть размещен вредоносный код, только тогда, когда худшее уже случилось, трафик упал, и пользователи успели заразиться.
Чтобы вебмастера могли как можно быстрее реагировать на проблемы, мы уже несколько лет рассылаем предупреждения о заражении в Яндекс.Вебмастере. В них мы даём подробные инструкции, что нужно делать, а в самых сложных случаях вебмастерам помогает наша служба поддержки.
Однако всегда хочется лучшего. Одна из главных проблем, с которыми мы сталкиваемся при общении с владельцами зараженных сайтов, — это поиск источника заражения на стороне сервера. У Яндекса, который каждые сутки размечает тысячи сайтов как зараженные вирусом и опасные для устройств человека, есть регулярно обновляемая база вирусов. И у нашей команды появилась идея, выросшая в большой проект, – антивирус для сайтов. Так мы создали Manul, который решили выложить в open source. Это утилита, которая поможет вебмастеру понять, что произошло с сайтом и вылечить его. Под катом я расскажу подробнее о том, как он устроен и какие проблемы решает.
Чтобы вебмастера могли как можно быстрее реагировать на проблемы, мы уже несколько лет рассылаем предупреждения о заражении в Яндекс.Вебмастере. В них мы даём подробные инструкции, что нужно делать, а в самых сложных случаях вебмастерам помогает наша служба поддержки.
Однако всегда хочется лучшего. Одна из главных проблем, с которыми мы сталкиваемся при общении с владельцами зараженных сайтов, — это поиск источника заражения на стороне сервера. У Яндекса, который каждые сутки размечает тысячи сайтов как зараженные вирусом и опасные для устройств человека, есть регулярно обновляемая база вирусов. И у нашей команды появилась идея, выросшая в большой проект, – антивирус для сайтов. Так мы создали Manul, который решили выложить в open source. Это утилита, которая поможет вебмастеру понять, что произошло с сайтом и вылечить его. Под катом я расскажу подробнее о том, как он устроен и какие проблемы решает.
Facebook признала, что 83 млн. учётных записей — фейковые
2 min
2.8K
Translation
В квартальном отчёте, опубликованном компанией 30 июня, говорится, что 8,7% из 955 млн. активных учётных записей нарушают правила Facebook.
Доля от общей численности | Описание | |
Дубликаты | 4,8% | учётные записи, которые пользователь поддерживает в дополнение к основной учётной записи |
Неправильные | 2,4% | профили организаций, домашних животных и других нечеловеческих существ |
1,5% | поддельные имена; предназначены для использования в целях запрещённых условиями предоставления услуг, таких как спам |
Домашняя инвентаризация средствами Яндекс.Маркет
1 min
2K
Recovery Mode
Наверное многие, как и я, время от времени сталкиваются с проблемой, когда нужно срочно найти какую-либо информацию о домашнем девайсе (характеристику, инструкцию, дату покупки, драйвер и т.д.). Но в памяти нет не только этой информации, но и само название модели давно позабыто. Всё усугубляется, если устройство уже не у Вас, а, например, подарено родителям, и нет возможности подойти и посмотреть название. А бывает, что и в собственной квартире доступ к названию очень затруднен (например, название 50-дюймовой и 50-килограмовой плазмы на обратной ее стороне).
Чтобы не вставать каждый раз, при необходимости посмотреть модель своего утюга или пылесоса я поступил так.
Чтобы не вставать каждый раз, при необходимости посмотреть модель своего утюга или пылесоса я поступил так.
Утечка документов Google помогла узнать, как много большие бренды тратят на поисковую рекламу
2 min
2KAd Age получил внутренний документ Google, в котором освещены некоторые из крупнейших покупателей AdWords за июнь 2010. Согласно этому документу, крупнейшими клиентами AdWords в июне были AT&T Mobility, Amazon, eBay и BP. Большинство из этих компаний постоянно тратят много денег на рекламу, но BP — новичок в списке. Расходы BP на рекламу из-за разлива нефти составили 3,59 миллиона долларов, тогда как за два предшествующих месяца компания потратила всего 57 тысяч долларов.
Больше всего на поисковую рекламу в июне потратила AT&T Mobility — 8,08 миллиона долларов — что совпало с выходом iPhone 4. Согласно Ad Age, компания AT&T вообще занимает третье место в США по объёму покупаемой рекламы. Среди других много потративших компаний:
Больше всего на поисковую рекламу в июне потратила AT&T Mobility — 8,08 миллиона долларов — что совпало с выходом iPhone 4. Согласно Ad Age, компания AT&T вообще занимает третье место в США по объёму покупаемой рекламы. Среди других много потративших компаний:
- Apollo Group (University of Phoenix) — 6,67 миллиона долларов;
- Expedia — 5,95 миллиона долларов;
- Amazon — 5,85 миллиона долларов;
- eBay — 4,25 миллиона долларов;
- Hotels.com — 3,30 миллиона долларов;
- JC Penney — 2,46 миллиона долларов;
- Living Social — 2,29 миллиона долларов;
- ADT Security — 2,19 миллиона долларов.
Простая автоматизация резервного копирования под Windows
7 min
32KВопрос резервного копирования волнует каждого специалиста, ответственного за сохранность вверенных ему бесценных служебных документов/баз данных/иных файлов. Для того, чтобы чувствовать себя более уверенно перед лицом различных вероятных форс-мажоров, необходимо периодически выполнять резервное копирование критически важных данных. Не менее актуальна проблема сохранения нажитого непосильным трудом и для домашних пользователей.
Вашему вниманию предлагается простой, но эффективный скриптик, помогающий решать данную проблему.
Вашему вниманию предлагается простой, но эффективный скриптик, помогающий решать данную проблему.
Контент-генераторы по ключевым словам
2 min
15KНа фотографии — 40-летний Ричард Розенблатт (Richard Rosenblatt), исполнительный директор компании Demand Media, которая сейчас планирует IPO с ориентировочной оценкой $1,5 млрд. Ричард основал компанию в 2006 году, примерно через шесть месяцев после того, как продал MySpace медиамагнату Руперту Мердоку.
Ричард Розенблатт придумал проект, который за четыре прошедших года совершил тихую революцию в интернет-медиа и поставил генерацию контента на конвейер. Эксперты называют его детище «симбиозом Форда и Гутенберга».
Demand Media занимается созданием эксклюзивного контента в огромном количестве специально для привлечения поискового трафика по редким, но дорогим ключевым запросам. Компания генерирует 180 000 статей и видеороликов в месяц — все они размещаются на принадлежащих фирме сайтах (eHow.com и др.), а также на YouTube. На сегодня Demand Media является крупнейшим генератором видеоконтента на YouTube, впятеро превосходя ближайшего конкурента.
Ричард Розенблатт придумал проект, который за четыре прошедших года совершил тихую революцию в интернет-медиа и поставил генерацию контента на конвейер. Эксперты называют его детище «симбиозом Форда и Гутенберга».
Demand Media занимается созданием эксклюзивного контента в огромном количестве специально для привлечения поискового трафика по редким, но дорогим ключевым запросам. Компания генерирует 180 000 статей и видеороликов в месяц — все они размещаются на принадлежащих фирме сайтах (eHow.com и др.), а также на YouTube. На сегодня Demand Media является крупнейшим генератором видеоконтента на YouTube, впятеро превосходя ближайшего конкурента.
Исследование американского игрового рынка. Демография, объемы продаж и прочие любопытные факты
2 min
1.1K
Translation
Ассоциация Entertainment Software Association опубликовала недавнее исследование американского рынка компьютерных и видео игр. Согласно отчету средний возраст геймера составляет 34 года!
Автоматизация веб-сервера FreeBSD8 Apache2+Mysql5 Часть 1
3 min
1.3KТак уж сложилось, что я жутко ленивый. Два года назад когда я приобрел себе VDS и встретился с FreeBSD 7.1 первый раз, убил две недели на настройку всего, что мне нужно было. Сейчас у меня 2*Pentium III 1GHz / RAM 1Гб / 2*SCSI 17Гб, под мои задачи он вполне подходит.
Мой любимый редактор vi. Если кто не знает как с ним работать можно везде где я указал vi заменять на свой ee,mcedit и т.д
Скрипт создания хостов.
Структура на моем сервере следующая, у каждого пользователя в хомдир лежит папка www, выглядит это так.
/home/user/www.
Скрипт внутри папки www создает каталоги с именем хоста.
Пример mk_host.sh domen.ru user
в каталоге /home/user/www будет создана папка domen.ru с директориями
Также будет создан хост в директории Apache2. По моей схеме, для каждого виртуального хоста создается отдельный конфиг.
Смотрим сам скрипт.
- Создание хостов
- Ротация логов Apache2
- Архивация логов Apache2 и удаление старых логов.
- Создание базы данных и добавление нового пользователя с правами только к одной базе, с генерацией нового пароля.
Мой любимый редактор vi. Если кто не знает как с ним работать можно везде где я указал vi заменять на свой ee,mcedit и т.д
Скрипт создания хостов.
Структура на моем сервере следующая, у каждого пользователя в хомдир лежит папка www, выглядит это так.
/home/user/www.
Скрипт внутри папки www создает каталоги с именем хоста.
Пример mk_host.sh domen.ru user
в каталоге /home/user/www будет создана папка domen.ru с директориями
- cgi-bin
- html
- logs
- shadow
Также будет создан хост в директории Apache2. По моей схеме, для каждого виртуального хоста создается отдельный конфиг.
Смотрим сам скрипт.
Apple начала прием заявок на расширения для Safari 5 в Extensions Gallery
1 min
421Вскоре после выхода Safari 5 с поддержкой расширений, первые из них уже были доступны в течении нескольких часов. Однако Apple ничего не упоминала про официальный репозиторий для этих расширений.
Сегодня Apple начала официальный прием заявок от разработчиков на созданные ими расширения для добавления их в свой официальный Extensions Gallery. Сделать это можно из своего аккаунта в Safari Dev Center через эту форму.
Обычных пользователей Extensions Gallery будут ждать следующие типы расширений:
Сегодня Apple начала официальный прием заявок от разработчиков на созданные ими расширения для добавления их в свой официальный Extensions Gallery. Сделать это можно из своего аккаунта в Safari Dev Center через эту форму.
Обычных пользователей Extensions Gallery будут ждать следующие типы расширений:
FoneMonkey — первый инструмент для автоматизированного тестирования приложений под iPhone
2 min
1.8KПривет, хабрасообщество.
Я занимаюсь тестированием мобильных приложений, в связи с чем периодически просматриваю просторы интернета в поисках инструментов, способных облегчить этот нелегкий труд. Сегодня я хочу рассказать как раз об одном из них.
Этот инструмент — приложение FoneMonkey от фирмы Gorilla Logic. Как ни странно, не нашла упоминаний о нем в рунете. Хотя приложение может оказаться очень и очень полезным для многих разработчиков/тестировщиков/etc.
Я занимаюсь тестированием мобильных приложений, в связи с чем периодически просматриваю просторы интернета в поисках инструментов, способных облегчить этот нелегкий труд. Сегодня я хочу рассказать как раз об одном из них.
Этот инструмент — приложение FoneMonkey от фирмы Gorilla Logic. Как ни странно, не нашла упоминаний о нем в рунете. Хотя приложение может оказаться очень и очень полезным для многих разработчиков/тестировщиков/etc.
MongoDB Is Web Scale
4 min
32K
Translation
Внимание: тег «юмор».
И в заключение. Мы пришли к выводу, что MySQL — это прекрасная база данных для нашего сайта. Вопросы?
Да, у меня есть вопрос. Почему вы не использовали MongoDB? MongoDB — это горизонтально масштабируемая база данных, она не использует SQL или JOINы, поэтому обладает высокой производительностью.
Это прекрасный вопрос. Мы изучили несколько NoSQL баз данных и поняли, что все варианты пока ещё незрелы для применения на работающих проектах. MySQL — это проверенная база данных, которая используется во всём мире и имеет все необходимые нам функции.
Но она не масштабируется. Все знают, что реляционные базы данных не масштабируются, потому что они используют JOINы и записывают на диск.
И в заключение. Мы пришли к выводу, что MySQL — это прекрасная база данных для нашего сайта. Вопросы?
Да, у меня есть вопрос. Почему вы не использовали MongoDB? MongoDB — это горизонтально масштабируемая база данных, она не использует SQL или JOINы, поэтому обладает высокой производительностью.
Это прекрасный вопрос. Мы изучили несколько NoSQL баз данных и поняли, что все варианты пока ещё незрелы для применения на работающих проектах. MySQL — это проверенная база данных, которая используется во всём мире и имеет все необходимые нам функции.
Но она не масштабируется. Все знают, что реляционные базы данных не масштабируются, потому что они используют JOINы и записывают на диск.
jQuery-сниппеты и плагины для iPad
6 min
26KПодборка простых jQuery-сниппетов и плагинов, которые помогут адаптировать сайт для отображения на iPad. Некоторые подойдут и для других тач-устройств.
AzaThread — многопоточность для PHP с блэкджеком
6 min
18KВ сети гуляет довольно много решений для эмуляции многопоточности в php. Чаще всего они основываются на форках, но есть и вариации на тему с использованием curl, proc_open и т.п.
Все встреченные варианты по тем или иным причинам меня не устроили и пришлось написать свое решение.
Набор требований у меня был следующий:
В результате получилась библиотека AzaThread (старое название — CThread).
Все встреченные варианты по тем или иным причинам меня не устроили и пришлось написать свое решение.
Набор требований у меня был следующий:
- Использование форков;
- Синхронный режим с сохранением интерфейса при отсутствии необходимых расширений;
- Многократное использование дочерних процессов;
- Полноценный обмен данными между процессами. Т.е. запуск с аргументами и получение результата по завершении;
- Возможность обмена событиями между дочерним процессом-«потоком» и основным процессом во время работы;
- Работа с пулом потоков с сохранением многократного использования, передачи аргументов и получения результатов;
- Обработка ошибок выполнения;
- Таймауты на выполнение работы, ожидание работы потоком, инициализацию;
- Максимум производительности;
В результате получилась библиотека AzaThread (старое название — CThread).
Определение части речи слова на PHP одной функцией
3 min
40KПрочитав пост http://toster.ru/2410/, я написал функцию, которая определяет из строки слов их части речи. Определение, конечно не 100%, но можно легко дорабатывать.
Функция возвращает массив значений групп:
Пример вызова функции:
Результат работы функции (массив):
Функция возвращает массив значений групп:
- 1. прилагательное
- 2. причастие
- 3. глагол
- 4. существительное
- 5. наречие
- 6. числительное
- 7. союз
- 8. предлог
Пример вызова функции:
print_r(chastrechiRUS('В небе летит красивый сверкающий самолёт'));
Результат работы функции (массив):
Array ( [0] => 8 [1] => 4 [2] => 3 [3] => 1 [4] => 2 [5] => 4 )
Отдаем файлы эффективно с помощью PHP
3 min
280KЕсли Вам потребовалось отдавать файлы не напрямую веб сервером, а с помощью PHP (например для сбора статистики скачиваний), прошу под кат.
Полезные метрики для оценки проектов
7 min
46KВ октябре я уже рассказывала о способах оценки тестирования, все страждующие и сочувствующие могут посмотреть запись здесь. А сегодня мне захотелось затронуть тему метрик проекта в целом, причём метрик не «длягалочных», а метрик «пользуприносящих» и «проектыулучшающих». Именно поэтому, вместо сухих формул и перечня метрик, я расскажу 3 истории из опыта о внедрении и использовании строго определённых метрик в строго определённых условиях — и о результатах, которые с их помощью удалось достичь.
Есть проект. Ваш любимый, родной, которому вы желаете расти и процветать.
Но как вы оцените его процветание, если нет критериев этого самого процветания?
Как вы сможете оперативно среагировать на проблемы до того, как они стали неисправимыми, если не будете использовать «датчик грядущей Ж»?
Как вы поймёте, что именно следует улучшать, если вам неизвестен источник проблем?
Если вкратце, то метрики нужны, чтобы эффективно управлять проектом: диагностировать проблемы, локализовывать их, исправлять и проверять, правда ли выбранные вами способы решения проблемы помогают.
Я поделюсь разными типами метрик, каждые из которых проверены и принесли немалую пользу. Каждый раз, внедряя их, любой команде очень лень и некомфортно: приходится сохранять дополнительную информацию, что-то там мерять, разводить бюрократию. Но когда мы впервые получаем от какой-либо метрики пользу, на смену лени приходят дисциплина и глубокое понимание важности той или иной метрики.
А если не приходят, значит метрику можно смело выбросить ;)
Зачем что-либо измерять?
Есть проект. Ваш любимый, родной, которому вы желаете расти и процветать.
Но как вы оцените его процветание, если нет критериев этого самого процветания?
Как вы сможете оперативно среагировать на проблемы до того, как они стали неисправимыми, если не будете использовать «датчик грядущей Ж»?
Как вы поймёте, что именно следует улучшать, если вам неизвестен источник проблем?
Если вкратце, то метрики нужны, чтобы эффективно управлять проектом: диагностировать проблемы, локализовывать их, исправлять и проверять, правда ли выбранные вами способы решения проблемы помогают.
Я поделюсь разными типами метрик, каждые из которых проверены и принесли немалую пользу. Каждый раз, внедряя их, любой команде очень лень и некомфортно: приходится сохранять дополнительную информацию, что-то там мерять, разводить бюрократию. Но когда мы впервые получаем от какой-либо метрики пользу, на смену лени приходят дисциплина и глубокое понимание важности той или иной метрики.
А если не приходят, значит метрику можно смело выбросить ;)
Начала отладки и профилирования веб-приложений
8 min
18K
Tutorial
Вступление
Много существует статей на Хабре, описывающих интересные и сложные аспекты веб-разработки, но много существует читателей, которые, находясь в начале своей карьеры веб-разработчика, хотели бы видеть материал, который позволил бы сделать первый шаг от «PHP за 24 часа» до разработки на серьезном уровне, и я хотел бы поделиться своим опытом в этом деле.
Особенности веб-приложения делают его разделенным на две части: клиентскую и серверную. На стороне клиента работает код на JavaScript (может быть, где-то можно найти и VBScript, но мы, пожалуй, не будем рассматривать этот случай), на серверной же — много что, в принципе, но мы рассмотрим PHP, наиболее популярный язык для серверной части веб-приложений. Так же интересно было бы поговорить об отладке и профилировании Flash-приложений на клиентской стороне, но затронутая тема и так обширна, так что пока оставим это.
Так же можно отнести к задачам отладки клиентского кода анализ и валидацию HTML кода. Это, вроде бы, задача не совсем из области программирования, но также немаловажная.
Некоторые части рассмотренных задач уже рассматривались в других статьях, и я предоставил на них ссылки.
Information
- Rating
- Does not participate
- Location
- Киев, Киевская обл., Украина
- Registered
- Activity