Pull to refresh
0
0
nmike @nmike

User

Send message

Чечетка в ластах

Reading time4 min
Views12K
Супервступление

Здравствуй, %username%. Мы, такая вся из себя замечательная компания, ла-ла, позиции на рынке, основаны бла-бла, лучшая практика, ознакомиться на нашем сайте… в общем на этом будем считать игру в булшит-бинго законченной :) Перейдем к делу. Расскажу ка я вам о том, как у нас все плохо.
Читать дальше →
Total votes 168: ↑153 and ↓15+138
Comments36

Обработка входящей почты на PHP

Reading time2 min
Views37K
Хочу поделиться рецептом, как совместить php-скрипт и почтовый сервер Postfix для автоматической обработки входящей почты.

С помощью такой связки мы собираем статистику по количеству возвратов bounce-писем:Undelivered Mail Returned to Sender.

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

Как это сделать...
Total votes 73: ↑62 and ↓11+51
Comments43

8123 байта хватит каждому

Reading time2 min
Views11K
Сегодня во время перевода одного сайта с таблиц MyISAM на InnoDB, у последних выяснилась одна интересна особенность. Запрос на изменение движка для двух таблиц возвращал странную ошибку «Got error 139 from storage engine». После поиска информации на эту тему, было выяснено, что данная ошибка возникает тогда, когда какая-либо строка таблицы не вмещается в половину страницы памяти, с которыми работает MySQL. Страницы эти равны 16 Кб, а половина, стало быть, 8 Кб.

Само по себе ограничение довольно странное, но на первый взгляд кажется трудно достижимым, ведь как известно, MySQL хранят текстовые данные в хранилище, отдельном от табличных строк. Оказалось, что это верно только на половину. На самом деле InnoDB хранит в отдельном хранилище только «излишки», к коим он не относит первые 768 байтов каждого текстового поля. Т.е. любой текст будет отъедать от длины строки столько байт, сколько он содержит, но не больше 768. Несложно подсчитать, что максимальное число текстовых полей длиной от 768 байт, которое можно безопасно хранить в одной таблице — 10. И действительно, если запустить пример, все пройдет гладко. Но стоит увеличить количество полей хотя бы на одно, и мы получим ту же ошибку, что и в начале.
Читать дальше →
Total votes 82: ↑75 and ↓7+68
Comments27

Видео: Игорь Ашманов о кризисе, жуликах и улитках

Reading time1 min
Views7.6K
20 июля в Ингрии выступал Игорь Ашманов с темой «Кризис роста в IT-компании».
После выступления мы взяли у Игоря небольшое интервью, в котором он говорил о SEO будущего, книгах, чернухе и сеошной психологии «успешных жуликов».



В ходе основной встречи был подробно проиллюстрирован путь компании, не справляющейся с активным ростом, и сопутствующие этому росту проблемы. Доклад создавался не без учета личного опыта выращивания лидирующей компании, поэтому после завершения слушатели заблокировали Игоря в углу и не давали выйти, пока он не ответит на массу вопросов :)
Полная запись выступления, а также фоторепортаж доступны здесь.
Total votes 32: ↑24 and ↓8+16
Comments11

AMQP по-русски

Reading time4 min
Views97K
Сегодня довольно мало информации о протоколе AMQP (Advanced Message Queueing Protocol) и его применении, особенно на русском языке. А вообще это — замечательный, уже достаточно широко поддерживаемый открытый протокол для передачи сообщений между компонентами системы с низкой задержкой и на высокой скорости. При этом семантика обмена сообщениями настраивается под нужды конкретного проекта. Такие решения существовали и ранее, но это первый стандарт, для которого существует большое количество свободных реализаций.

Основная идея состоит в том, что отдельные подсистемы (или независимые приложения) могут обмениваться произвольным образом сообщениями через AMQP-брокер, который осуществляет маршрутизацию, возможно гарантирует доставку, распределение потоков данных, подписку на нужные типы сообщений. В качестве классических примеров обычно приводятся финансовые приложения, связанные, например, с доставкой потребителям информации о курсах ценных бумаг в режиме реального времени, также возможно RPC-взаимодействие двух подсистем, которые не имеют связи друг с другом (взаимодействие через общий протокол AMQP) и так далее и тому подобное.

Сегодня тема доставки информации в реальном времени является крайне актуальной (достаточно вспомнить хотя бы Twitter, Google Wave). И здесь системы передачи сообщений могут служить внутренним механизмом обмена данными, который обеспечивает доставку данных (изменений данных) клиентам.

Я не ставлю своей целью сегодня рассказать о том, как писать приложения для AMQP. Хочу лишь немного рассказать о том, что это совсем не страшно, не очень сложно, и действительно работает, хотя стандарт находится еще в развитии, выходят новые версии протокола, брокеров и т.п. Но это уже вполне production-quality. Расскажу лишь базовые советы, чтобы помочь “въехать” в протокол.
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments31

О «проблемах» молодых предпринимателей (стартаперов) в России простыми словами

Reading time1 min
Views2.9K
Дмитрий Потапенко как всегда четко и по-простому рассказывает о «проблемах» предпринимательства в России.

«У нас до сих пор совковый подход к себе… Якобы, у нас проблема с мотивацией… Если ты не хочешь, урод, то тебя, урода, невозможно что-то заставить делать» (с) Потапенко

Total votes 136: ↑115 and ↓21+94
Comments187

DevPoint: Selenium в тестировании веб-приложений

Reading time7 min
Views45K
Что делать когда:
  • Достался хард-кодный проект непокрытый тестами;
  • код желает лучшего, а времени на рефакторинг нет;
  • внесение правок в одном месте нарушает работу логики в другом;
  • для покрытия *Unit тестами, проще переписать проект;
  • бизнес логика размыта по коду и даже по шаблонам.

Забить и оправдываться, что такой код не должен жить?

С такими ситуациями очень часто сталкивался и меня это не устраивало. При поиске подходящего метода/инструмента тестирования я наткнулся на Selenium. И применяю его уже более 3-х лет.

В Киеве 9-го апреля прошла конференция DevPoint, посвященная web — разработке. Организатором данного мероприятия была компания Uniweb. В рамках ее, решил поделиться впечатлением про Selenium.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments3

Вдохновение для юнит-тестов

Reading time4 min
Views7.4K
Много слов сказано о достоинствах юнит-тестов (TDD, BDD — в данном случае неважно), а также о том, почему люди всё-таки их не используют.

Но я думаю, что одна из главных причин заключается в том, что люди не знают, с чего начать. Вот прочитал я статью про юнит-тесты, понравилось; решил, что надо бы когда-нибудь попробовать. Но что дальше? С чего начать? Как придумывать все эти требования, как называть тест-методы?

В последнее время набирает популярность тенденция превращать юнит-тесты в BDD-спецификации, то есть говорится о том, что хороший юнит-тест должен не тестировать что-то, а описывать поведение программы. Но как описать это чёртово поведение; откуда брать вдохновение, чтобы придумать названия для всех этих тест-кейсов?

Об этом и пойдёт речь:
откуда брать вдохновение.
Total votes 95: ↑89 and ↓6+83
Comments50

Автоматизированная проверка PHP кода при комитах

Reading time6 min
Views33K
В свое время работая в узком кругу программистов, отдельными задачами и даже проектам, мы не задумывались о проблемах связанными с текучкой кадров. Точнее думать — думали, но ни каких мер не применяли, да и в целом коллектив был сплоченный никто не уходил и никого «не уходили». С ростом внутренних проектов и корпоративных клиентов, штат начал разрастаться и казалось, что все отлично — нас больше, значит будем больше успевать и делать, но не тут то было. Мы начали тратить кучу времени на “бесполезные” обсуждения, проверки, излишние проектирование и т.д, больше всего раздражает — это проверка кода. И тут я начал думать, что “мудрые и древние” наверняка решали эти проблемы с сотнями, тысячами программистов, неужели мы не справимся? Я решил провести эксперимент, под названием “автоматизированная проверка стиля кода при комитах”. Для большинства из Вас это не новость и наверняка вы этим пользуетесь, но поделиться опытом внедрения думаю, не будет лишним.
Читать дальше →
Total votes 84: ↑74 and ↓10+64
Comments48

Масштабируем до сотен миллионов запросов: что работает, а что нет

Reading time1 min
Views2.8K
Прекрасная тридцатиминутная история (на английском) от Джеймса Голика — CTO американской бдсм-соцсети выдерживающей 180 000 000 реквестов в месяц, при среднем времени отдачи ~200 мс, имея шесть серверов. В двух словах — смотрите тэги.

Total votes 35: ↑26 and ↓9+17
Comments31

Build Your First PHP for Android Application

Reading time5 min
Views34K
Операционная система Android повергла рынок сматрфонов в шок :). В отличии от компании Apple, которая предъявляет достаточно строгие требования к разработчикам, которые хотят выставлять свои приложения в iPhone App Store, Google создал платформу Android открытой (в оригинале wide open). В настоящее время вы можете писать приложения PHP. Парни из Irontech создали необходимое, и используя Scripting Layer для Android (SL4A), вы можете создавать на PHP приложения для Android.
Вы думаете - сейчас мы будем читать о чем-нибудь ужасном?
Total votes 84: ↑67 and ↓17+50
Comments59

Непрерывная интеграция и TeamCity

Reading time4 min
Views102K
Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий.

imageВ этом топике мы в общих чертах рассмотрим процесс реализации непрерывной интеграции на примере TeamCity Enterprise 6.0 EAP (build 15400) и обратим внимание на применении инструментов рассмотренных в прошлой теме: Обеспечение качества программного продукта.
Читать дальше →
Total votes 49: ↑44 and ↓5+39
Comments49

Тестирование контроллера в Symfony2

Reading time5 min
Views8.8K
Предлагаю вашему вниманию перевод вчерашнего поста одного из разработчиков Symfony2 о подходе к unit-тестированию контроллеров в Symfony2. Тема очень актуальна для Symfony2 разработчиков. Также стоит отметить, что в посте упоминается результат дискуссии на dev-groups об использовании контроллера в роли сервиса в Symfony2.
Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments25

svn + bash = пишем консольный svn браузер

Reading time10 min
Views4.6K
Для тех кто пользуется svn в командной строке, а так же для тех кто интересуется программированием bash-скриптов, в топике рассмотрен пример написания интерактивного bash-скрипта «svn-браузера», работающего в терминале и позволяющего делать несколько «ежедневных» операций с деревом репозитория, а именно:
  • Серфить по репозиторию
  • Просматривать логи
  • Копировать директории для создания tags/branchs
  • Создавать/удалять/переименовывать директории
  • Извлекать/экспортировать (checkout/export)
При этом любая операция делается нажатием одной-двух кнопок, не считая ввода комментариев, и не требует помнить/вводить длинные пути, такие как:<br><br>
$svn cp "http://workserver.com/_main_repository/embedded_system/product_xxx/_trunk/main_task/ http://workserver.com/_main_repository/embedded_system/product_xxx/_tags/"

Под катом обзор внутренностей, результат можно скачать по ссылке svnb
Сделать исполняемым, запускать в директории — рабочей копии svn (запустить можно в любом месте, но тогда придется ввести путь до репозитория с которым вы хотите поработать).

P.S. В конце статьи добавил еще одно решение для улучшения юзабилити command line svn — автодополнение пути.
что же внутри...
Total votes 42: ↑38 and ↓4+34
Comments20

Форматирование телефонных номеров на PHP

Reading time13 min
Views58K
Возникла задача автоматического форматирования телефонных номеров в виде страна (город) номер, и первым делом я обратился к существующим решениям.
К сожалению, оказалось, что все найденные решения основываются на обычном подгоне строки под пользовательский формат, имея ограниченную область применения и ошибки при выходе за ее пределы.
Читать дальше →
Total votes 103: ↑81 and ↓22+59
Comments98

Правильная работа с исключениями в PHP

Reading time4 min
Views67K
В предыдущей статье я предложил свести все «механизмы ошибок» к исключениям, поэтому логично будет объяснить, как правильно работать с исключениями в PHP.
Сначала поясню, почему я выбрал именно исключения, как механизм работы с ошибками:
  1. Исключения — это гибкий, расширяемый метод обработки ошибок;
  2. Это стандартизованный механизм – человеку, не работавшему с вашим кодом, не нужно будет читать мануал, чтобы понять, как обрабатывать ошибки. Ему достаточно знать, как работают исключения;
  3. С исключениями гораздо проще находить источник ошибок, так как всегда есть стек вызовов (trace).

Сразу скажу, что в этой статье я не открываю Америку. Описаны стандартные принципы работы с исключениями плюс некоторые особенности, налагаемые PHP. Полезно будет почитать новичкам, хотя может быть и опытные разработчики найдут что-нибудь новое для себя.
Несколько советов по работе с исключениями:
Total votes 75: ↑64 and ↓11+53
Comments137

Непрерывная интеграция: Hudson + PHPUnit

Reading time4 min
Views2.6K
Существует цепочка в мозгу: мы напишем юнит тесты, затем эти тесты нам расскажут если мы что-то сломали, затем они нам почту будут отправлять о том, что проект поломался.
Это ничто иное, как иллюстрация непрерывной интеграции (Continious Integration) нычне крайне модного направления гибкой разработки. Единственный недостающий элемент цепочки — «КАК». Ниже коротенький рецепт, как бы отвечающий «очень просто».
Читать дальше →
Total votes 35: ↑32 and ↓3+29
Comments19

Каким надо быть руководителем? Секреты профессии

Reading time4 min
Views9.6K
Скажу сразу — «Америку не открываю», так же как не «изобретаю велосипед». Статья базируется на модели ситуационного лидерства Херси-Бланчарда. Сама модель в значительной степени изменена в применении к управлению именно ИТ-командами в нашей стране и подкреплена практическим опытом управления командами в Майкрософт Рус и в собственном бизнесе.

Выбирая между «академическим» и «популярным» стилями изложения выбрал «академический». Все таки разговор о серьезных вещах. Так что если эта тема Вам прямо сейчас не супер-актуальна — смотрите диаграммы, их достаточно для понимания идеи. Остальное — для достаточно узкой аудитории.
Читать дальше →
Total votes 101: ↑90 and ↓11+79
Comments50

PHPUnit. Часть 03 Написание тестов для PHPUnit

Reading time9 min
Views50K
Предисловие переводчика
Эта статья продолжает серию переводов официальной документации по PHPUnit на русский язык.
Часть 1, Часть 2

Пример 4.1 демонстрирует как с помощью PHPUnit можно выполнить тестирование операций с массивами PHP. В этом примере показаны базовые соглашения и шаги, свойственные тестам PHPUnit:
Читать дальше →
Total votes 31: ↑23 and ↓8+15
Comments12

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity