Меню

Дмитрий Меркушин

Пишу преимущественно о работе

function_exists vs. extension_loaded

Одно небольшое бесполезное исследование провел сегодня на работе по долгу службы. Код и результаты его выполнения ниже.

<?php

$functionExistsStart = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
    function_exists('this_function_doesnt_exist');
}
$functionExistsEnd = microtime(true);

$extenstionLoadedStart = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
    extension_loaded('this_extension_is_not_loaded');
}
$extenstionLoadedEnd = microtime(true);

echo 'function_exists ' .
    ($functionExistsEnd - $functionExistsStart) .
    PHP_EOL;

echo 'extension_loaded ' .
    ($extenstionLoadedEnd - $extenstionLoadedStart) .
    PHP_EOL;
function_exists 0.35822796821594
extension_loaded 0.40138292312622

Последние события

Как я писал ниже, я сменил место работы, но писать об этом в блоге пока что не хочется. Поэтому пришлось придумать повод — я записался на мастер-классы по веб-разработке. Это может показаться смешно, так как я и сам, наверное, мог бы их вести и даже для более подготовленных слушателей, чем присутствовали вчера на первом занятии. Проводт эти мастер-классы ака семинары Барс-групп, стоят они всего 2500 рублей. Длительность месяц, занятия каждый понедельник и четверг.

Как я уже сказал, для меня интересного тут будет мало. (Единственное, может быть, эти семинары помогут как-то систематизировать мои отрывочные познания Питона и Джанго.) Во время занятия я попытался не засыпать, а представить себя новичком, который ничего не понимает. Как раз такой сидел рядом со мной. Я послушал ведущего и понял, что ничего не понял. То есть будь я подготовлен так же, как мой сосед, то многое мне осталось бы непонятным и неизвестным. К сожалению, было видно, что лектор подготовился плоховато, в некоторой мере его энергичность и готовность помочь компенсировали это. Последнее время часто смотрю лекции из зарубежных (преимущественно американских) университетов, которые мне очень нравятся. Так вот разница была не просто ощутима, она была колоссальна. Надеюсь, что дальше лекторы будут лучше подготовлены к семинарам.

Еще хотел заметить, что скоро будет две конференции, которые должны быть обязательно интересны всем веб-разработчикам — На стачку и DevConf. Надеюсь, увидимся там.

Мамба, до свидания!

Прошла зима, а вместе с ней завершилась и моя работа в казанском офисе Мамбы.
С 1 марта я начал трудиться в другой казанской компании, которая хорошо известна российской аудитории благодаря одному из своих проектов.

GitHub

Я уже всем друзьям прожужжал уши про то, что стал активнее использовать свой аккаунт на github. Сам аккаунт я создал еще два года назад, но он не проявлял тогда никакой активности.

Разумеется, главной причиной того, что данный сервис стал для меня так интересен, является скорый вывод проекта FullCart в open source. Но по мере его изучения понял, сколько это удобная платформа, чтобы следить за любимыми проектами. Все в одном месте.

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

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

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

Если раньше вы ни разу не сталкивались с git, то это простое руководство поможет быстро его освоить. Кроме того, на самом гитхабе куча полезной информации по этому вопросу. Жду и вас на гитхабе!

Ruby

Вообще говоря, эта запись вовсе не о Руби и даже не о Рельсах. На прошлой неделе где-то прочитал про http://www.edx.org и сразу решил попробовать пройти какой-нибудь бесплатный курс. Кстати, бесплатность тут — вещь условная. Я, например, приобрел еще Киндл-версию книги, которая была специально написана для этого курса. Хотя покупать ее было не обязательно, но без нее пришлось бы перелопачивать кучу разной документации и литературы, тут же собрана вся необходимая информация, чтоб сделать домашнее задание или сдать тест. Так вот, в процессе изучения Руби, который, как я неоднократно заявлял ранее, терпеть не могу, и Рельс, стал замечать, что кое-что уже где-то видел. Особенно ярким это «дежа вю» было, когда в лекции рассказывали про ActiveRecord. В голове моментально всплыл класс ActiveRecord, который входил в фреймворк, написанный на предыдущем месте работы. Кто-то пытался довольно точно скопировать рельсовую версию этого класса в PHP. В детали вдаваться не буду, это все не имеет особого значения. Просто это довольно интересно, как люди пытаются принести что-то им понравившееся из одной, скажем так, субкультуры в другую. Наверное, это даже хорошо. Когда они берут, действительно, что-то хорошее и так же хорошо это реализуют. Тем не менее, думаю, перенесенная сущность будет все же смотреться несколько чужеродно. Должен, кстати, признаться, что у меня появился определенный интерес к Руби. Помнится, когда-то я знакомился с ним, но на базовом уровне. В этом плане язык, как я по-прежнему думаю, ничем особо не примечательный, но Рельсы делают его мощным инструментом. Кстати, недавно также открыл для себя Джанго. С Питоном я тоже довольно давно знаком, он-то меня всегда привлекал, его нахожу особенно интересным применимо к системному администрированию. Кроме того, меня очень привлекает определенный строгость и простота языка, которые вынуждают программиста писать будто бы более приятный для восприятия код.

Установка ZendServer на Mac OS X Lion

Для опытного PHP-разработчика, как правило, не составляет труда установить Apache, PHP, MySQL, но порой это бывает несколько утомительно. Дизайнеры, верстальщики и прочие специалисты, работающие больше с клиентской стороной нежели серверной, часто так и вовсе испытывают ужас от одной мысли, что что-то там надо ставить и настраивать. В связи с этим некоторые мои знакомые периодически обращались с вопросами, как это все же сделать. Каждый раз приходилось вкратце рассказывать, что и как поставить, где и чем открыть, что и как поменять. Вообще говоря, существуют решения, которые настраивать почти нет необходимости — это Denwer для Windows, MAMP для Mac OS X и прочие. Но какое-то время назад компания Zend (занимающаяся еще и разработкой движка для интерпретатора PHP) создала универсальное решение — ZendServer. Универсальное оно потому, что существует для всех платформ (Mac, Win, Linux). Поэтому я обычно рекомендую всем ставить именно его. Что важно, ZendServer можно использовать как для разработки, так и для боевого сервера. Существуют как бесплатная редакция, так и несколько различных платных. И пару месяцев назад я написал (а несколько дней назад и опубликовал) небольшое руководство, которое повествует, как установить и настроить ZendServer на Mac OS X. Пожалуйста, читайте. Надеюсь, будет полезно.

MacBook Pro & SSD

На днях я отмечал свой день рождения. По этому случаю Алексей Касаев подарил мне SSD на 120 Гб. Сам он давно установил на свой макбук 16 Гб оперативки и 250 Гб SSD — он, к сожалению, не заметил большой разницы в быстродействии системы после установки SSD, так как такой объем памяти решал, наверное, уже все проблемы.

У меня же максимальный объем оперативки, которую можно установить, 8 Гб. И еще, кажется, осенью прошлого года я ее установил. К сожалению, этот объем съедается приложениями всегда за день-два (а у меня нет привычки выключать/перезагружать бук), после чего Сафари, IDE, даже Finder начинают тормозить.

В общем, установил я SSD. Сразу заметно, что с ним система загружается во много раз быстрее! Так как диск установил только вчера, то про долгосрочный эффект написать ничего не могу, но, уверен, что и там прирост быстродействия системы будет заметен еще больше.

В общем, рекомендую!

Приложение для Мамбы

Многим в нашей стране известен сервис знакомств Мамба. Собственно, в этой компании я и тружусь последние полтора года (в сентябре 2012 будет два года). Несколько месяцев назад Мамба запустила платформу для приложений. Какое-то время мы с коллегой наблюдали за происходящим со стороны, а потом решили-таки сделать небольшое приложение. Надо заметить, что мы оба являемся PHP-разработчиками, хотя каждый из нас в той или иной степени знаком и с другими языками.

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

Разработка заняла довольно много времени — два месяца. Причиной тому то, что для написания клиентской части мы выбрали все тот же ActionScript (мы, наверное, и сейчас не сможем объяснить себе, с чем это было связано). На сервере крутился комет, написанный нами на Питоне, который управлял самим процессом общения с клиентской частью, ну а API было написано на PHP. Приложение получилось очень милое.

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

База пользователей стремительно росла, а вот онлайн нет. К сожалению, для работы нашего приложения требовался онлайн, а он не мог появиться, если его не будет. Получился такой порочный круг. Пользователь заходил, искал собеседника, не находил и покидал приложение. У нас были мысли создать ботов или еще что-то в этом роде, но в конечном счете мы признали поражение. Приложение называлось «Свидание вслепую».

Над чем я работаю в свободное время

В свободное от основной работы время я занимаюсь собственными проектами, которые мы разрабатываем совместно с Алексеем Касаевым.

У нас есть такие проекты, которые уже будто умерли, например, сервис микроблогов Публико. Есть проекты, на которые нам явно не хватает времени, например, онлайн-игра Кетхоум, которая существует с 2006 года, переживая то взлеты, то падения. Код игры был переписан уже трижды, а сейчас переписывается в четвертый раз.

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

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

Был небольшой сайт artebledev.ru, который брал содержимое с сайта студии Артемия Лебедева и путал буквы в словах. Это была такая шутка, которая порой даже пользовалась популярностью среди поклонников известного дизайнера.

Кстати, сегодня я возродил маленький полезный сервис, о котором как-то писал на Хабре. Он позволяет скорректировать субтитры. Правда, адрес его теперь http://subtitler.ru.

Нельзя не вспомнить сайт Давности. Его идея пришла в тот момент, когда мой папа сказал, что будет вести на радио программу «Казанские старости». Это сейчас на сайте радиостанции стали публиковать тексты из программы, а в то время даже в эфир она выходила нерегулярно, зато материала было полно, больше, чем можно было записать для передачи. К сожалению, обработка этого материала (а берется он весь не из Интернета, а со старого доброго носителя — бумажной газеты, которую к тому же запрещено выносить за пределы библиотеки) процесс трудоемкий, требует много времени. Ни у моего папы, ни у нас с Алексеем не было достаточно времени, чтобы продолжить работу над сайтом. Поэтому теперь он в замороженном состоянии.

Покойся с миром старый добрый Мастхев, домен продали год или два назад. В 2003 году мы с Алексеем чего только не хотели на нем сделать, но в итоге волею судьбы в 2004 году на нем образовалась тусовка молодых людей, интересующихся информационной безопасностью. Проект прожил до 2007 года, а в его день рождения (11 октября) было принято решение о закрытии. К слову, на нем сложилась и определенная офлайн-тусовка, которая периодически встречается в Москве. Ныне почти все те молодые люди работают в ИТ — программисты, админы, консультанты по ИБ.

Хочется вспомнить и о двух блогах, которые велись также мной и Алексеем: Бродим.ру и Гуглд. На первом мы рассказывали обо всем том интересном, что нашли в Сети, а второй полностью посвящался известной всем компании. К сожалению, они, как и еще многие другие наши небольшие проектики, стали жертвами переезда с одного сервера на другой.

Кстати, как-то совсем вылетел из головы небольшой сервис для размещения исходного кода — PasteCode. Я его сделал на скорую руку, когда мне срочно надо было разместить какой-то код в сети, а фаервол не пропускал меня к известным мне сервисам. Чуть позже Алексей сделал для него хоть какой-то дизайн, а недавно мы даже его немного отрефакторили и поразмышляли о возможных путях развития.

Пожалуй, это все, о чем я готов был рассказать сейчас.

«Поисковая оптимизация» FlatSoft?

Ниже я писал про посещение мастер-классов по iOS-программированию. Хотел проверить ссылки и узнал, что, оказывается, старые уже недоступны. Просматривая ленту новостей, нашел-таки необходимые новости. Но везде в заголовках и по тексту «iOS» было заменено на «Ruby on Rails».
Также обратил внимание, что оба тренера оказались будто бы из FlatSoft, хотя, конечно, в последующих абзацах упоминается, что Тазетдинов Данис из АйСиЭл.
Ребята (я обращаюсь к FlatSoft), у меня такое смутное подозрение, что это ваших рук дело. Это очень похоже на «поисковую оптимизацию». Очень некрасиво.

Хочу сразу сказать, что Ruby я терпеть не могу и ни за что не пошел бы на мастер-классы, как-либо связанные с этим языком. Аргументировать предыдущее высказывание ни чем не собираюсь, это просто мое личное мнение, ни на чем не основанное.

Ссылки на новости ниже:
День первый: http://bi.itpark-kazan.ru/ru/node/275
День второй: http://bi.itpark-kazan.ru/ru/node/295
День третий: http://bi.itpark-kazan.ru/ru/node/296 (лишь в этой записи все осталось по-старому)