Generated by All in One SEO v4.9.8, this is an llms.txt file, used by LLMs to index the site. # Токарчук Андрей Михайлович | TypeScript, AI, VueJS, PHP и другие интересные штуки. Блог Zend Framework разработчика. Программирование на PHP, вопросы использование memcached, mysql, nosql баз данных, jquery, apache, nginx,mongodb, php и т.д. Разработка корпоративных веб-приложений ## Sitemaps - [XML Sitemap](https://tokarchuk.ru/sitemap.xml): Contains all public & indexable URLs for this website. ## Blog - [Посты](https://tokarchuk.ru/posts/) - [Obsidian Sync без подписки: мой метод](https://tokarchuk.ru/2025/10/02/obsidian-sync-for-free/) - Когда я только начал использовать Obsidian, то быстро понял, что встроенный сервис Obsidian Sync — это удобно, но не дешево. Я решил собрать свою схему синхронизации заметок без подписки. Ниже делюсь рабочим вариантом, которым пользуюсь уже давно. Базовая идея У меня есть две цели: Синхронизировать заметки между компьютером и телефоном. Делать автоматический бэкап в GitLab, - [Настройка GitLab Service Desk: пошаговое руководство](https://tokarchuk.ru/2025/09/02/configure-gitlab-service-desk/) - Всем привет! С вами @netandreus, и сегодня мы рассмотрим настройку GitLab Service Desk. Это мощный инструмент для автоматизации обработки обращений пользователей через электронную почту. Ниже рассмотрим процесс настройки системы для группы компаний, где каждая компания получает собственный репозиторий и адрес для технической поддержки. Архитектура решения Концепция Система построена на принципе автоматического создания тикетов (issues) в - [Lazydocker - быстрая установка](https://tokarchuk.ru/2025/03/19/lazydocker-quick-install/) - Несколько лет назад, в поисках более удобного способа управления Docker-контейнерами, я наткнулся на Lazydocker — интерактивный терминальный интерфейс для Docker и Docker Compose. С тех пор этот инструмент стал неотъемлемой частью моей повседневной работы. Lazydocker предоставляет возможность в одном окне терминала отслеживать состояние контейнеров, просматривать логи, статистику использования ресурсов и управлять сервисами. Благодаря поддержке как - [Зависание картинки RDP](https://tokarchuk.ru/2025/03/12/rdp-hang-out/) - Столкнулся тут с проблемой, когда коннектишься по RDP к Windows 10 из стандартного маковского клиента Microsoft RDP то почему-то зависает картинка и дальше коннект не идет. Выглядит это вот так: Спасибо коллеге, подсказал, как это можно быстро пофиксить. Итак запускаем в целевой виртуалке консоль с правами администратора, выполняем там: reg add "HKLM\software\policies\microsoft\windows nt\Terminal Services\Client" /v - [Использование NetBird peer как default gateway](https://tokarchuk.ru/2025/03/11/netbird-peer-default-gateway/) - Есть несколько вариантов установки NetBird. Один из вариантов подразумевает, что вы можете использовать его как шлюз по умолчанию для других ваших сетевых устройств (на которых не установлен vpn-клиент). Так вот, из коробки он не работает. Вообще :) Схема сети у нас такая: vm-1 (10.10.109.22) - пользовательская машина на локальной площадке. vm-2 (10.10.109.24) - netbird peer - [Настройка SFTP расширения в VSCode](https://tokarchuk.ru/2025/02/19/sftp-vscode-extension/) - Сейчас пытался настроить синхронихзацию файлов десктопной среды разработки VSCode и удаленного сервера по ssh. Как обычно сразу не зараотало, поэтому делюсь солюшеном. Проблема В консоле великолепно проходит ssh-авторизация по ключу, а вот в VSCode файлы через него не закачиваются. Оказалось, что проблема была в алгоритме шифрования. Решение Устанавливаем расширение "SFTP" от автора Natizyskunk. Сейчас - [NetBird и проблемы с Caddy контейнером](https://tokarchuk.ru/2025/02/24/netbird-and-caddy-container-problems/) - Сегодня внезапно отвалилась оверлейная сеть. Когда начал разибраться - то выяснилось странное. Не стартовал web интерфейс, и половина контейнеров не работала. Проблема Когда я подключился на vCenter то увидел совершенно дичайшее потребление CPU. А внутри машины отображалась вот эта ошибка. В общем из-за того, что надиске кончилось место контейнер с Caddy не - [AI Tinkerers - Meetup #3 (Feb 2025)](https://tokarchuk.ru/2025/02/22/ai-tinkerers-meetup-3/) - Вчера вечером, после работы, я был уже довольно уставшим, но в календаре висело приглашение на митап AI Tinkerers. А как истинный tinkerer, я просто не мог его пропустить. И, как оказалось, не зря. Вначале Mohammed Fazalullah, как обычно, обратился с приветственным словом и рассказал о нашем сообществе, встречах и основной идее, которая за ним - [Особенности применения NetBird](https://tokarchuk.ru/2025/02/17/features-of-netbird-application/) - Многие из вас знают, что такое оверлейные сети, а некоторые даже уже успели с ними столкнуться. В качестве связи между филиалами (branch office) или удаленными площадками (remote datacenters) мы пробуем использовать такое решение, как NetBird. Сейчас оно проходит тестирование в нашей инфраструктуре. Однако пока мы все еще не запустили его в продакшен. NetBird представляет собой - [Если начал отваливаться ssh](https://tokarchuk.ru/2024/08/19/ssh-problems/) - Недавное у меня ни с того ни с сего начали возникать проблемы с ssh. А так как, у меня для нескольких проектов в phpStorm настроен AutoDeploy через ssh-туннель, то проблемы начали появлятьс и там. Примеры ошибок и странного поведения При обычном ssh-коннекте из консоли постоянно вылетала ошибка: kex_exchange_identification: read: Connection reset by peer При работе - [Расчет требуемой видеопамяти для LLM](https://tokarchuk.ru/2024/02/01/calculation-gpu-memory-for-serving-llms/) - При подборе видеокарты или AI-ускорителя одним из основных критериев является количество видеопамяти, которое необходимо для загрузки LLM-модели. В этом посте коротко опишу, как посчитать требуемый объем памяти. Подбираем LLM модель Для начала надо определиться с моделью. Итак, пусть P - количество параметров модели (указываем в миллиардах). Q - степень квантизации модели (4 / 8 и - [WhatsApp не приходит смс](https://tokarchuk.ru/2024/01/24/whatsapp-sms-not-coming/) - Сейчас у нас много мессенджеров, WhatsApp, Viber, Telegram. Сообщения, нотификации, чаты, мемасики с котятами. Мы уже привыкли к этому, и проводим в них много времени. Но иногда может случиться так, что вы захотели поменять телефон. Ну например на новый iPhone 15 (бррр) или хитяру от Xiaomi (рекомендую присмотреться к Xiaomi Poco F5 12 256gb). Ну - [Как очистить Sentry](https://tokarchuk.ru/2023/12/20/sentry-clean-up/) - Когда в разработке программного обеспечения возникают ошибки, система трекинга ошибок становится незаменимым инструментом для выявления, мониторинга и устранения проблем. Sentry — одна из таких платформ, предоставляющая мощные инструменты для отслеживания и анализа ошибок в реальном времени. Однако, с течением времени и развитием проекта, накапливается большой объем данных, что может замедлить производительность и усложнить обнаружение критических - [Не работает сайт мосэнергосбыта](https://tokarchuk.ru/2023/11/24/mosenergosbyt-down/) - Последнее время все чаще и чаще возникают проблемы с сайтом мосэнергосбыта. Он то работает, то нет. Мы уже привыкли к тому, что у этого сайта свое расписание работы. Да, он не работает по ночам. Потом сайт заблокировали для доступа из-за рубежа (видимо из-за DDOS-атак), что хотя-бы имеет какую-то логику. Но теперь появился новый прикол. МосЭнергоСбыт - [Mikrotik site-to-site VPN](https://tokarchuk.ru/2023/07/25/mikrotik-site-to-site-vpn/) - Расскажу, как организовать связь нескольких подсетей. Например, сети основного офиса и сети филиалов компании. Будем использовать оборудование Mikrotik как в главном офисе, так и в филиалах. Задача Необходимо организовать маршрутизацию пакетов из сети филиалов в сеть головного офиса и обратно. Решение Main Router - центральный (или edge) маршрутизатор основного офиса. Branch Router - маршрутизатор филиала. - [Mikrotik - настройка Wi-Fi WAN](https://tokarchuk.ru/2023/07/20/mikrotik-wi-fi-wan/) - Мы будем настраивать роутер Mikrotik hAp lite tc (RB941-2nD-TC) у которого в качестве WAN интерфейса будет использоваться Wi-Fi. При этом этот же wi-fi адаптер будет раздавать другую wi-fi сеть, которая будет являться внутренней сетью. Расскажу, как это сделать. Почему hAp lite tc? Возможно вы зададитесь вопросом, почему в своих экспериментах я выбрал именно этот роутер? - [Разворачиваем WordPress за Nginx Proxy Manager](https://tokarchuk.ru/2023/05/17/deploy-wordpress-behind-nginx-proxy-manager/) - Сейчас вечер, из колонки звучит Ambient-музыка, приглушенный свет, а это значит что самое время поговорить про терминацию SSL и установку WordPress за Nginx Proxy Manager. Уже довольно продолжительное время поисковые системы начали пессимизировать в результатах поиска те сайты, который отдают контент без шифрования по протоколу HTTP. А так как основная масса контента это блоги в - [Обновление удаленного сервера VMWare ESXi по ssh](https://tokarchuk.ru/2023/03/24/update-remote-esxi-through-ssh/) - Гипервизор является сердцем любой крупной системы, и иногда бывает так, что его надо обновить. Мероприятие это довольно серьезное, особенно в том случае, когда речь идет о сервере за тысячи километров от тебя. В этой заметке я расскажу о способе удаленного обновления ESXi-сервера по ssh. Когда я развернул новый VMWare vCenter Server 7, то понял, что - [Вышел свежий релиз Manticore search 6.0.0](https://tokarchuk.ru/2023/02/08/manticore-search-6-0-0/) - Сегодня вышел релиз поисковой машины Manticore Search. Я расскажу, что это такое, для чего используется и почему я так рад новому релизу. Раньше для индексирования данных из MySQL и полнотекстового поиска я использовал Sphinx Search. Не скажу, что использовал его на всю катушку, но одна его фича пришлась мне по душе. Это SphinxSE (Sphinx storage - [PHP Composer: личные впечатления](https://tokarchuk.ru/2012/11/14/composer/) - В этом посте я расскажу о личных впечатлениях от использования такой интересной штуки, как Composer. Если кто не в курсе, это менеджер зависимостей для PHP библиотек, который облегчает установку, обновление и поддержку различных библиотек в вашем проекте.Программисту для комфортной работы нужна инфраструктура (это я вам точно говорю :-). Это и удобное кресло, мощная машина с - [Zend Framework Day 2012. Слайды, фото и немного мыслей.](https://tokarchuk.ru/2012/11/28/zend-framework-day-2012/) - Совершенно неожиданно, уже в третий год подряд я отправился на конференцию Zend Framework Day 2012. В этом году она полностью посвящена выходу Zend Framework 2. Последние несколько лет народ живо интересовался, когда же выйдет новый фреймворк, и вот случилось чудо. Такое событие как конфа по новому ZF не могло не привлечь меня и я направился - [PHP Composer, Git submodules и Assembla](https://tokarchuk.ru/2012/12/06/php-composer-git-submodules/) - Некоторое время назад я решил навести порядок в списках своих библиотек, подключить всё через Composer, настроить человеческую автозагрузки по PSR-0, и вообще как следует прибраться в коде. Однако не всё шло гладко. В этом посте я расскажу об особенностях работы с Composer внутри Git репозитария с библиотеками, подключаемыми как git submodules. Проблема с Git Submodules - [Как убрать deprecated warnings в Symfony 2?](https://tokarchuk.ru/2012/12/11/disable-deprecated-warnings-in-symfony-2/) - Разбирался я тут недавно с подключением различных бандлов к symfony 2. Необходимо было подключить много чего, а в частности Doctrine 2 ORM/ODM бандлы. Вроде проблемы с composer уже решил, но все равно надо было определить рабочие версии и их совместимость. Как всегда, не без нюансов. Рабочие версии бандлов и модуля mongo Версия монго-драйвера: 1.3.0beta2 "doctrine/common": "2.3.0", - [Заполнение свойств из Embedded другого документа](https://tokarchuk.ru/2012/12/18/fill-one-embedded-from-other/) - На днях столкнулись с коллегой с одним занимательным багом. По какой-то причине не заполняся Embedded документ в Doctrine ODM. При всём при этом, когда мы его дампили, то он исправно показывался, а вот до самой MongoDB так и не доходил. Проблема Суть баги можно выразить вот таким псевдокодом. /* @var Doctrine\ODM\MongoDB\DocumentManager */ $a = $dm->getRepository('Document\SomeDoc')->findOneBy(array('id' - [IT-шные посиделки](https://tokarchuk.ru/2012/12/25/it-compot/) - На днях друзья вновь пригласили меня в свой подкаст "IT-компот". Не смог отказаться, тем более, что тема подкаста очень важная и актуальная - "Миграция с Zend Framework 1 на Zend Framework 2". Итак, одним воскресным вечером мы собрались на свои посиделки. Что из этого вышло - смотрите под катом. Вы можете подписаться в iTunes или - [С новым 2013 или итоги уходящего](https://tokarchuk.ru/2012/12/29/happy-new-2013/) - Нет, ну наверное я всё-таки графоман. Пришел после работы, вроде и сделали сегодня много всего и устал порядочно, а вот хочется посидеть с чашечкой чая и написать строчку-другую. Это даже скорее не желание написать, а желание разобраться в собственной голове, разложить мысли по полочкам. Итак, близится к концу 2012 год, обещанного многоми зомби-апокалипсиса конца света так - [Оживляем Doctrine 2 Document/Entity при получении из кэша](https://tokarchuk.ru/2013/01/24/refresh-odm-orm-objects/) - Недавно столкнулись на работе с такой проблемой. При получении объекта (Doctrine 2 Document) из кэша все методы, которые у него вызываются, возвращают пустое значение. Особенно интересно было смотерть на это, когда ttl кэша был 10 секунд, и при обновлении страницы результаты то были, то пропадали. Задача Ну, например, есть у нас объект Пользователь. А - [Глобальные блокировки на MongoDB](https://tokarchuk.ru/2013/01/31/global-locks/) - Представим себе типичный стартап. Начинается всё с маленького хостинга за пару баксов, потом покупается VPS или даже VDS. Потом убирается первая буква V, и проект переезжает на dedicated а то и colocation. Ну, а через какое-то время у нас уже несколько серверов - один для базы, другой - веб-сервер. А потом.... ... приходит тот замечательный - [Тормозят inserts в MongoDB (Doctrine 2 ODM)](https://tokarchuk.ru/2013/02/12/slow-inserts-doctrine2-odm/) - Недавно на работе столкнулись с такой проблемой. Необходимо было провести импорт множества сущностей из MySQL в MongoDB. Но вот незадача, первые 200 объектов импортировались нормально, а потом скорость начала асимптотически падать стремясь к нулю. Задача в принципе была простая, даже впилил в консольную команду Symfony 2 прогресс-бар. Кстати хорошая штука. Позволяет прикидывать как скорость процесса, - [Потокобезопасные миграции Doctrine 2 / Symfony 2](https://tokarchuk.ru/2013/02/19/thread-safe-migrations/) - В этой статье я раскрою сразу две темы. Первая тема - это потокобезопасные миграции в Doctrine 2, а второй будет каскадное исполнение команд в консоле Symfony 2. На самом деле, ко всему надо иметь прагматический подход. Вот например, касаясь той же симфонии, есть там кое-что, что мне определенно нарвится. В частности - это замечательная симфоневская - [JavaScript Frameworks Day 2013](https://tokarchuk.ru/2013/02/21/javascript-frameworks-day-2013/) - Мои друзья, организаторы конференции Frameworks Day, сегодня поделились интересной новостью. Уже совсем скоро, 2 марта стартует конференция JavaScript Frameworks Day 2013. Теперь ребята решили осветить не только server-side разработку, но и клиентскую часть. Очень трудно себе представить современное веб-приложение, которое не использует JS. Язык становится всё более популярным, особенно в свете развития современных технологий. Вообще - [MMUG: 5.6 новая стабильная ветка MySQL Server](https://tokarchuk.ru/2013/03/25/mmug-mysql-5-6/) - В пятницу посетил семинар Moscow MySQL User Group. На нём был интересный доклад Дмитрия Ленева "5.6 новая стабильная ветка MySQL Server". В этот раз нас приютила Mail.ru. Дмитрий начал с замечательных слов "Оказывается многие не знают MySQL". На семинаре в основном рассказывалось о новых возможностях MySQL 5.6 а также обозревались бенчмарки. Некоторые функци перетащили из Percona, - [Пару слов про Doctrine 2 Identity Map](https://tokarchuk.ru/2013/03/27/doctrine-2-identity-map/) - Ну что мои траварищи, эту заметку я пишу после тяжелого трудового дня в поисках одного коварного бага. Было тяжело, но интересно. Я познал, так сказать, прелести внутреннестей и внутренности прелестей Doctrine 2 ODM.Дело было так. Есть страничка, как полагается контроллер, экшен, вид. В виде вызывается несколько блоков. Понадобилось мне получить в контроллере ещё кое какие - [Первоапрельский компот](https://tokarchuk.ru/2013/04/01/1-april-compot/) - Хе-хей! Сегодня 1ое апреля, а у нас метёт как в феврале! И шутит сегодня не только природа. В посте будет небольшой обзор первоапрельских шуток, немного новостей и позитивная картинка))) Когда взглянул в окно - немножко прибалдел. Ощущение, что не весна пришла (а она всё никак не придёт), а наоборот - что наступила зима. Но всё-равно - [Сокращалка ссылок tok.pw](https://tokarchuk.ru/2013/04/08/tok-pw/) - Всегда хотел купить себе короткий домен. Искал-искал, а они продавались толкьо на аукционах, и за бешенные деньги. А тут недавно РуЦентр порадовал открытием для веобщей регистрации новой зоны PW. Ну и понелась :-) Конечно, это ещё одна зона, способ заработка для регистратора. Однако, это и возможность зарегисть что-нибудь необычное, что уже забито в старых доменных - [Простой бекап сайтов и БД](https://tokarchuk.ru/2013/04/10/simple-backup/) - В этом посте расскажу, как можно очень просто наладить систему резервного копирования файлов сайта и баз данных. Наверняка многие из вас сталкивались с проблемой организации резервного копирования сайтов. Сейчас раскажу об одном из вариантов организации такой системы. Сейчас на рынке присутствует множество систем резервного копирования и восстановления, начиная от серьезных корпоративных решений от именитых фирм, - [Symfony 2.1 Session Handler MongoDB MongoTimestamp Bug](https://tokarchuk.ru/2013/04/15/sf-2-1-session-mongodb-bug/) - В этом посте я расскажу, почему нельзя использовать MongoDbSessionHandler в Symfony 2.1 и о том, к чему это привело. А привело это к довольно долгому поиску и анализу бага, который изрядно подпортил нам нервы и заставит нецензурно ругаться в адрес одного француза. Проблема Сидел я себе спокойно в своей веточке в git-е, кодил помаленьку, - [О pcntl_signal() и открытых сокетах](https://tokarchuk.ru/2013/04/22/pcntl_signal-and-open-sockets/) - Сейчас пишу асинхронный PHP-демон и довольно глубоко пришлось погрузиться в библиотеку pcntl, а в частности в её функции работы с сигналами. Надо заметить, что касается написания всяких серверных долгоживущих штук - то там вообще всё очень интересно, и, на первый взгляд, совсем не очевидно. Интро Представим себе что у нас есть демон, который слушает сокет - [Тормозит отправка писем в php (sendmail)](https://tokarchuk.ru/2013/04/25/php-mail-slow/) - Недавно настраивал домашний сервер, и понадобилось мне там протестировать отправку почты. Но вот беда, при запросе страницы, которая отправляет почту вылезала 500 ошибка. Проблема Начал смотреть, в чём же дело. В логах php-fpm ничего интереного нет, в логах nginx видно, что php-fpm upstream отваливает по таймауту. 2013/04/18 15:28:01 [error] 6928#0: *1409 upstream timed out (110: - [WebSocket Application Messaging Protocol (WAMP)](https://tokarchuk.ru/2013/05/16/wamp/) - В этом посте я обозрею, так сказать, протокол WebSocket Application Messaging Protocol или WAMP (не путать с аббривеатурой стека Windows Apache Mysql Php). Что же это такой за зверь, для чего он нужен, и вообще, с чего вдруг я начал им заниматься вы узнаете в этом посте. Понадобилось мне для одного сервиса наладить реал-тайм взаимодействие, да - [Яндекс острова для разработчика](https://tokarchuk.ru/2013/05/20/яндекс-острова/) - Не так давно Яндекс публично объявил о запуске в бета-тестирование (читай для ознакомления разработчиков) своей платформы Яндекс-Острова. Я немного пощупал эта платформу на предмет полезности моему проекту. Что такое Яндекс Острова? Итак, что нам предлагает Яндекс. Основная идея - сократить количество кликов до желаемого действия. Например, наш сайт продаёт авиабилеты, и мы основную прибыль мы - [DevConf 2013](https://tokarchuk.ru/2013/05/29/devconf-2013/) - Привет, читатели! Приглашаю посетить самую крупную конференцию года для профессиональных разработчиков, которая пройдет 14 июня в Москве и состоит из секций: Python, Ruby, PHP, Mobi, Javascript и общей секции. 15 июня пройдут эксклюзивные мастер-классы: [Highload] Разработка крупного масштабируемого web 2.0 проекта с нуля (соц.сеть на 100 млн пользователей) Дмитрий Бородин - программист и архитектор ПО. [Highload] Основы построения масштабируемых - [К.т.н. Как это было.](https://tokarchuk.ru/2013/05/31/phd/) - 4 года. Четыре года упоротых упорных трудов и наконец-то я достиг цели. Это трудно описать, ещё труднее в это поверить. Это было чудесно и мучительно, долго, муторно, порой необычно и немного самонадеяно. Но это было. Это - вызов самому себе. Я его принял, и я прошел до конца. xxx: воот, образование - это как с - [Про pinba и pinboard для мониторинга PHP](https://tokarchuk.ru/2013/07/02/pinba/) - Вот есть у меня какие-то задумки, идеи, но не всегда есть время их реализовать или проверить. Так было и с Pinba. О ней я узнал на позапрошлом DevConf. Собирался поставить... да, целый год собирался, и таки поставил. И знаете что, она мне понравилась. Особенно в свете недавно вышедшей гуевины Pinboard. Концептуально Pinba, как и любое - [Виртуалки на OpenVZ (и немного Vesta CP)](https://tokarchuk.ru/2013/08/12/openvz-vestacp/) - В моей работе приходится постоянно экспериментировать, разрабатывать и отлаживать новые сервисы. Искать баги, как в собственном коде, так и в стороннем софте на разных платформах. В связи с этим возникла необходимость иметь под рукой небольшой загончик для виртаульных машин для тестирования всего, что нужно.С системами виртаулизации я, в принципе, работал и раньше. На одном из - [PHP Frameworks Day 2013](https://tokarchuk.ru/2013/09/27/php-frameworks-day-2013/) - Хе-хей! 12 октября в Киеве пройдёт самая масштабная PHP конференция аж со всего бывшего Союза - PHP Frameworks Day 2013. Кэп говорил мне, что конфа будет в основном про всякие-разные php-фреймворки, ну а вы знаете, как я люблю стандартизацию и не люблю велосипеды. Что же будет? Кто туда приедет? Скандалы, интриги, расследования :-) С организаторами конференции я - [PHP Frameworks Day 2013 - Фотоотчёт о конференции](https://tokarchuk.ru/2013/10/16/conf-php-frameworks-day-2013/) - Утро. 9:00. Москва. За окном пробка из сотен авто, томящихся в ожидании того, чтобы продвинуться на метр-другой вперед. Кто-то курит из окна, кто-то разглядывает соседние лица. Все готовятся к суете наступающего дня. По встречке пролетают скорые, отчаянно гремя сиренами, разгоняя водителям остатки сна. Я сижу за столом, смотрю в окно и вспоминаю выходные... Как приятно - [Конференция веб-разработичиков DevConf-2014](https://tokarchuk.ru/2014/04/29/devconf-2014-announce/) - Привет, всем! Давно не писал, но мимо такого события не мог пройти мимо. В июне состоится ежегодная конференция веб-разработчиков DevConf-2014. Это пожалуй самая крупнуа конференция года для профессиональных разработчиков, которая пройдет 14 июня в Москве. 14 июня будет основной день конференции с несколькими секциями: Python, Ruby, PHP, Mobi, Javascript, Storage(new!) и общей секции. 15 июня пройдут - [Когда не получается ввести компьютер в домен](https://tokarchuk.ru/2014/07/08/join-to-ad-errors/) - Довольно часто после всяческих экспериментов с сетевыми подключениями, переустановкой винды и прочего может возникнуть такая ситуация, что рабочая станция перестанет входить в домен. Это бывает по нескольким причинам. В этом посте я расскажу о двух из них Ошибка при запросе DNS записи ресурса размещения службы (SRV), используемой для нахождения контроллера домена Active Directory Полный текст - [OTRS: Установка на Ubuntu, аутентификация в Active Directory и Single sign on](https://tokarchuk.ru/2014/08/13/otrs-install-auth-sso/) - В этой статье я опишу опыт установки helpdesk системы OTRS. Первоначально для себя надо ответить на вопрос, а зачем же вам нужна helpdesk система? Может быть хватит обычной тикет-системы, или какого-либо онлайн сервиса. При выборе helpdesk системы я, в первую очередь, руководствовался не обширным набором функций, а успешным опытом развертывания данной системы в различных организациях. - [Ubuntu 14.04.1 LTS на HP MicroServer Gen8](https://tokarchuk.ru/2014/10/01/ubuntu-14-04-1-lts-on-hp-microserver-gen8/) - В этом посте я опишу установку ОС и первоначальную настройку на достаточно интересной машине, а именно на HP MicroServer Gen8. Это поколение пришло на смену Gen7, и хотя у 8ки соотношение цена-качество не такое вкусное, как у 7-го поколения, на нём можно собрать более шустрого зверька. Итак, знакомьтесь HP Gen8. Я не буду обозревать сам - [Настройка port-forwarding на D-Link DFL-260E](https://tokarchuk.ru/2015/01/28/port-forwarding-на-d-link-dfl-260e/) - В этой статье я расскажу о том, как пробросить порты на роутере D-Link DFL-260E. Вообще это довольно занятный зверь, самая младшая модель в линейке профессиональных межсетевых экранов от D-Link.Сразу скажу, что интуитивно-непонятный интерфейс - это мало сказано. Если цензурно. Но после хорошего курения мануалов можно понять, что железка довольно мощная и раскрыть весь её потенциал. - [Дополненная реальность своими руками](https://tokarchuk.ru/2015/03/01/mate-expo/) - 14 марта собираюсь на выставку MATE, на которой состоится мастер-класс, участники которого в реальном времени смогут создать и протестировать собственное приложение дополненной реальности. Говорят, команда специалистов из компании EligoVision предоставит всем участникам бесплатную версию инструментария для работы с технологией, подробно расскажет о его особенностях и покажет, как им пользоваться. И вообще каждый участник создаст как - [Hi-tech Fashion Show: мода и технологии](https://tokarchuk.ru/2015/03/01/hi-tech-fashion-show/) - 12-14 марта 2015 года в КВЦ «Сокольники» состоится выставка, посвященная мобильным технологиям будущего, - МАТЕ. В рамках экспозиции 14 марта пройдет трендовое Hi-tech Fashion Show с демонстрацией одежды, созданной с применением инновационных технологий. Hi-tech Fashion Show - это не имеющее аналогов мероприятие, высокая миссия которого - выявить и популяризировать внедрение инноваций в индустрию моды. Дизайнеры - [Два публичных статуса в WordPress](https://tokarchuk.ru/2015/03/10/wordpress-second-public-status/) - В этом посте я расскажу, как сделать так, чтобы у вас в WordPress было бы два публичных статуса. Публичный статус присваивается постам (или другим объектам сайта), которые доступны пользователям без дополнительных условия (ввод пароля и т.д.). Задача Когда на сайте есть объекты, которые часто включаются-выключаются - то это не нравится поисковикам. Например, есть у нас - [Выставка Mate-2015: фотоотчёт и личные впечатления](https://tokarchuk.ru/2015/03/14/mate-2015-review/) - В эту субботу по приглашению Lesia Gnidets мы решили посетить выставку Mate-2015. Тот, кто следит за моим блогом уже мог видеть анонсы этого мероприятия. Выставка проходила в КВЦ Сокольники, где мы чуть было не пересеклись с нашими друзьями, которые приехали отмечать там День Святого Патрика)) Выставка была разделена на несколько секций. SNCE - Social Network Congress - [DevConf-2015. Анонс конференции.](https://tokarchuk.ru/2015/05/30/devconf-2015-preview/) - Всем привет! Тот, кто читает мой блог знает, что я можносказать фанат веб-технологий, и особенно интересуюсь самыми передовыми из них. Конечно не могу пропустить и не сказать пару слов о грядущей конференции DevConf.Приглашаю вас посетить самую крупную конференцию года для профессиональных разработчиков, которая пройдет 19 июня в Москве. Она состоит из нескольких секций: Storage, Python, - [Как запустить Hyper-V сервер внутри виртуалки VMWare ESXi](https://tokarchuk.ru/2015/06/15/hyper-v-inside-vmware/) - Привет, это я, Andrey Tokarchuk, и сегодня мы попробуем запустить Hyper-V в VMWare :-) Зачем?? Многие сразу покрутят пальцем у виска и зададут вопрос - "А нафига?". Отвечу в начале статьи, чтобы всё стало понятно. Это не продакшен, не переживайте. Это испытательный стенд, который состоит у меня из парочки HP MicroServer Gen7 N54L. Если кто-то - [DevConf-2015. Как это было.](https://tokarchuk.ru/2015/06/29/devconf-2015/) - В этом посте я расскажу про ежегодную конференцию посвященную веб-разработке и организации хранения данных DevConf-2015, проходившую в Москве в середине июня. Закончились дожди, тучи рассеялись и я наконец-то сел писать пост про девконф. Хоть в прошлом году я и пропустил её, однако, могу считать себя завсегдатаем этой конфы. Вообще конференции интересны прежде всего тем, что там - [View Helper'ы Zend Framework в видах Symfony 2](https://tokarchuk.ru/2016/01/26/zf-view-helpers-in-sf/) - В жизни возникает много всяких инетересных задач. Как правило, можно выделить задачи класса "реализовать такую-то фишку" и "извернуться, чтобы оно работало". Вот, как раз, о последнем типе задач и пойдёт речь в этом посте. Иногда в процессе разработки параллельно с разработкой идут несколько "миграций". Ну например переход с SQL на NoSQL, я об этом как-то - [За каким компьютером работает пользователь Active Directory](https://tokarchuk.ru/2015/11/11/active-directory-user-computer/) - В целях инвентаризации, да и вообще для админского удобства, надо знать за каким компьютером сидит пользователь. Ну и обратная задача - какой пользователь сидит за компом в данный момент. Решению этой задачи посвещен сегодняшний пост. 1. Сделаем это так - при логине/логауте в описании компьютера будем писать юзера, а в описании юзера - писать компьютер. - [Настройка разрешения экрана гостя в VirtualBox](https://tokarchuk.ru/2015/09/24/virtualbox-guest-screen-resolution/) - У меня недавно возникла такая проблема. На хосте (Ubuntu Desktop) стоит виртуальная машина VirtualBox, а в ней гостём стоит Windows. В госте не получается поменять разрешение экрана, максимальное разрешение устанавливается в 1024x768 даже после установки Guest Additions. В этой статье я опишу солюшен как поменять разрешение. Как поменять разрешение в госте Устанавливаем в гостя - [Настройка коммутаторов Huawei](https://tokarchuk.ru/2016/02/19/huawei-switches-setup/) - В последнее время много говорят об импортозамещении, санкциях и т.д. Всё это как-правило принимает чудные формы. Например, мы старательно "отказываемся" от западных товаров, в случае с ИТ инфраструктурой с оборудования Cisco переориентируемся на Huawei. В этом посте я расскажу, как ко мне попали на тестирование коммутаторы Huawei и что с ними удалось сделать.Для тестирования внедрения - [Виртуальная Россия 2015](https://tokarchuk.ru/2015/11/16/vtrussia-2105/) - На прошлой неделе вместе с коллегами удалось посетить мероприятие "Виртуальная Россия 2015". Основная тематика - виртуализация и сопутствующие продукты. Организатором конференции выступала VMWare. Как театр начинается с вешалки, конференция начинается с регистрации. Приятно удивило, что не было толкотни, девушки на стойках быстро выдали инфокомплект и можно было спокойно обходить стенды компаний. Было новое железо, - [Подключение sip-телефона Cisco 7821 и Cisco 6921 к IP АТС Asterisk](https://tokarchuk.ru/2016/03/21/cisco-7821-6921-asterisk/) - Расскажу, как подключить софтфоны от Cisco к IP АТС Asterisk, сэкономив тем самым деньги на покупке Cisco Unified Communication. Сей пост - это описания граблей, и ни в коем случае не истина в последней инстанции. Так что, если у вас будут замечания - велкам в комменты. Особенно меня волнует вопрос с tlv-файлами. Телефоны CISCO в - [Проблемы с форматированием тома на Storewize v3700](https://tokarchuk.ru/2016/03/11/volume-format-storewize/) - В этот статье я расскажу, как решить проблему с длительным временем форматирования тома на дисковой полке v3700. Проблема Недавно ко мне попала дисковая полка IBM v3700 и я начал активно разбираться с ней. В результате по мере заполнения экстентов выяснилась любопытная вещь. Во время создания дискового тома (volume) в gui автоматически ставится галочка [x] Форматировать том. - [Делаем IPSEC туннель между Dlink DFL-260E и Mikrotik 450G](https://tokarchuk.ru/2016/03/17/ipsec-dlink-dfl-260e-mikrotik-450g/) - Всем привет! В этом посте я расскажу, как организовать безопасный ipsec-туннель между D-link DFL-260E (актуально для линейки устройств DFL: 2100E00E) и Mikrotik 450G. Будет много картинок и рабочий пример конфига. Так что, если у вас есть интерес к сабжу - велкам под кат. Схема сети Пусть у нас имеется две локальных сети, которые нужно объединить через IPsec - [Ставим древнюю версию php 5.2 на Ubuntu 14.04 (nginx/apache+php_fastcgi)](https://tokarchuk.ru/2016/03/28/php-5-2-on-ubuntu-14-04/) - В этом посте я расскажу, как на современный веб-сервер можно поставить такую древнюю версию php, как 5.2.17 Зачем это может понадобиться - даже не спрашивайте :) В качестве примера можно представить ситуацию, когда необходимо развернуть какой-нибудь стародавний скрипт и отдебажить его или посмотреть вживую. В общем всех некрофилов - велкам под кат. Тестовый стенд Операционка - [Установка PHP 7 (для php-fpm) с помощью phpbrew + бенчмарки php 7](https://tokarchuk.ru/2016/04/01/php7/) - Всем привет. Это я, Netandreus и сейчас мы попробуем накатить свежий php 7 параллельно с текущей веткой. И не просто накатить, а сделать это с помощью phpbrew. Эта утилита пришла к нам из мира ruby, где rvm уже давно радует разработчиков и админов. С ней поддерживать разные версии интерпретатора значительно лучше, чем.... чем без неё. Задача Поставить - [Конференция "Технологии Больших Данных" (ТБД-2016)](https://tokarchuk.ru/2016/06/14/tdb-2016/) - По весне обычно много интересных конференций, прямо сезон. Вот и эта весна не стала исключением. Пока вел @backendsecret еще раз обозрел мероприятия и наткнулся вот на эту конференцию. Cоциальные сети, Интернет вещей и мобильные решения привели к экспоненциальному росту объемов данных, для оперативной и эффективной обработки которых традиционные инструменты и средства программирования бессильны. Вместе с - [Выставка MATE-2016: анонс](https://tokarchuk.ru/2016/04/12/mate-expo-2016/) - В прошлом году я побывал на выставке Mate. Впечатления можете посмотреть в этом посте. Ну а сейчас хотел бы предложить вашему вниманию анонс будущей конференции. 26 апреля в Courtyard Marriott Moscow City Center состоится главное ежегодное событие в области мобильных приложений и технологий – MATE 2016. Организатор бизнес-встречи компания Smile-Expo подготовила специальную акцию: при покупке - [ProxMox 2.1 под i386/i686 платформу](https://tokarchuk.ru/2016/04/19/proxmox-2-1-i386/) - Статья из архива. На тему Docker будут отдельные посты. Последнее время активно смотрю в сторону систем виртаулизации. Очень нравится контейнерная виртаулизация на базе OpenVZ-контейнеров. Плюсов много: быстро разворачивается, есть готовые образы всех нужных операционных систем, низкое потребление ресурсов по сравниению с любыми другимим средствами виртуализации. Одним словом контейнеры - наше всё. Есть конечно и ряд - [DevConf-2016: ждём заявок на доклады](https://tokarchuk.ru/2016/04/21/devconf-2016-speakers-wanted/) - Пьешь свой смузи в коворкинге? Зарылся в коде в офисе? Не проспи главное событие этого лета! Разработчики, фронтэндеры, девопсы - приглашаем принять участие в ежегодной международной конференции по веб-разработке, которая состоится 17 июня 2016 года в г.Москва. В этом году у нас новое место проведения конференции - Сколково. Почувствуй инновации и получи знания по передовым - [Race Condition при включенной автогенерации гидраторов Doctrine ORM](https://tokarchuk.ru/2016/04/27/race-condition-hydrators-doctrine/) - Как-то раз столкнулись с очень странной ошибкой. Периодически на продакшене вылетал то один то другой запрос с ошибкой PHP Fatal error: Class 'Hydrators\VendorDefaultBundleDocumentUserHydrator' not found in /web/vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Hydrator/HydratorFactory.php. Проблема Что было очень странно, так как файл гидратора спокойно лежал по этому пути. При проверке на develop-машине подобный баг не воспроизводился, только под нагрузкой. Довольно долго гадали, в - [Решение ошибки подключения vSphere Data Protection](https://tokarchuk.ru/2016/05/31/vmware-data-protection-time/) - Недавно столкнулся с проблемой - не удалось подключить свежеразвернутый VMWare Data Protection (VDP) к основному vCenter Server. Он ругался на то, что не синхронизировано время. Как решить эту проблему расскажу далее. Проблема При заходе в консоль vSphere Web Client в раздел DataProtection и попытке VDP к vCenter выдавал ошибку: "The most recent request has been - [Установка vSphere Client 6 на Windows 10](https://tokarchuk.ru/2016/06/01/vsphere-client-6-on-windows-10/) - Замучал я тут компьютер на работе окончательно. Ну глючил он у меня достаточно давно, а тут прилетело свежее обновление на Windows 8.1, которое его окончательно угробило. По этому поводу решил снести всё и накатить десятку. Не Балтику-10, а Windows-10 :-) Ну а теперь настал тот момент, когда я восстанавливаю софт, доставляю всё, что было раньше. - [SNMP мониторинг MySQL](https://tokarchuk.ru/2016/06/08/mysql-snmp-monitoring/) - В этом посте я расcкажу, как можно мониторить хост с БД MySQL через SNMP. В качестве ПО для мониторинга будем использовать The Dude. Это софт от разработчиков роутеров Microtic, который зарекомендовал себя очень хорошо. Особенно примечательно в нем то, что там используется минимум сторонних библиотек, из-за чего он может похвастаться минимальным размером. Будем считать, что - [Разворачиваем Hello Word сервис во Fleet](https://tokarchuk.ru/2016/06/09/fleet-hello-word/) - В этом посте я расскажу, как развернуть свой первый "облачный" сервис через распределённую систему fleet. Это система запуска сервисов в кластере машин на базе CoreOS. Вообще рекомендую прочитать про эту операционку, т.к. там многое сделано и заточено именно под кластерные системы. Теория CoreOS - это операционная система, заточенная на работу в кластере. У неё нет - [Конференция Mixar-2016](https://tokarchuk.ru/2016/06/20/mixar-2016/) - 24 сентября 2016 года территории Культурного центра ЗИЛ состоится неклассическая конференция по новейшим технологиям MIXAR2016. Мероприятие объединит искусство, науку и бизнес в сферах 3D/Дополненная и Виртуальная Реальность/Интерактивные технологии вторую осень подряд. Конференция соберет 4000 гостей в течение всего дня. MIXAR2016 - это имиджевая конференция на целый день с погружением во всевозможные реальности. Выставка технологий, увлекательные доклады - [Пробуем GitLab Docker Container Registry и CI](https://tokarchuk.ru/2016/06/28/gitlab-docker-container-registry-and-ci/) - В этом посте я расскажу, как поставить и запустить Docker Container Registry, а потом настроить continuous integration в докер контейнерах. Ведь очень удобно хранить в одном месте не только исходники, но и настройки для окружения в виде собранных докер образов. И это я еще не говорю о CI, которую с помощью GitLab развернуть довольно приятно. В - [PRTG: правильная проверка памяти](https://tokarchuk.ru/2016/08/04/prtg-memory/) - На работе частенько приходится работать с системами мониторинга серверов и сетевых устройств. И вот однажды случился один странный случай. Пробовал подключать к мониторингу машину и внезапно по его данным начала стремительно заканчиваться память. Машина была подключена к мониторингу не так давно, но график памяти показывал, что она стремительно заканчивалась. В сенсоре SNMP Linux meminfo стояло 3% - [Большие коммиты и BitBucket](https://tokarchuk.ru/2016/12/26/bitbucket-and-huge-commits/) - Есть у меня тут один репозиторий большой, ну как большой, на 172 Gb. И при очередном коммите мне вылезла вот такая ошибка: git user session has timed out idling after 6000000 ms. Как я её пофиксил - читайте под катом. В консольном клиенте git мне вылезла вот такая ошибка: git user session has timed out idling - [Отладка удаленного xdebug за NAT](https://tokarchuk.ru/2017/07/20/remote-xdebug-behind-nat/) - В этом посте я расскажу, как настроить xdebug и PhpStorm для отладки удалённого сервера за NAT. Возможно, такая задача встанет у вас, когда рабочая версия вашего проекта будет лежать на удалённой машине (вне вашей подсети), а phpStorm - установлен локально. Проблема Итак, ситуация такая: имеется рабочая станция, получающая доступ к интернету через роутер с NAT. - [Централизованный бекап MySQL](https://tokarchuk.ru/2017/12/18/mysql-centralized-backup/) - Давненько мне хотелось сделать так, чтобы было одно место, где хранились все бекапы баз данных с разных серверов. Сервера, как правило виртуалки на Linux, а машина с бекапами - Windows Server +Veeam. В этом посте расскажу, что получилось и как. Задача Есть разнородные машины с крутящимся на них MySQL. Машин много, а я одна (бекапная - [Особенности PARTIAL DQL запросов в Doctrine](https://tokarchuk.ru/2017/12/28/partial-dql-requests/) - Иногда у вас может возникнуть ситуация, когда вроде бы при нормальном DQL-запросе объект почему-то грузится не весь. Ну т.е. запрос проходит стадию преобразования из DQL в SQL, выполняется, потом обратно идёт гидрация в объект, а части данных то и нет - отсутствуют некоторые поля, котоыре есть а базе данных. Вы конечно пробуете отключить все кэши, - [Строим сеть вида Hub and Spoke + L2TP](https://tokarchuk.ru/2018/01/11/hub-and-spoke-l2tp/) - В этом посте мы будем рассматривать схему организации связи офисов по средством ipsec туннелей на базе оборудования D-Link и Mikrotic. Возьмем схему их предыдущего поста (site-to-site) и развернем её до уровня (hub-and-spoke), также известная как топология звезда. Нам необходимо построить сеть следующего вида. В качестве маршрутизатора в центральном офисе будем использоваться D-link dfl-260e. Эта железка - [Мигрируем с self-hosted BitBucket на self-hosted GitLab](https://tokarchuk.ru/2018/04/13/migrate-from-self-hosted-bitbucket-to-self-hosted-gitlab/) - В этом посте я расскажу, как можно сделать переезд с BitBucket на GitLab наиболее безболезненным. Делать мы это будем с помощью такой возможности, как зеркалирование репозитариев. Зеркалирование нужно, чтобы у нас были два синхронизируемых репозитария по принципу master -> slave, и потом мы спокойно могли бы сменить remote у наших локальных репозитариев. Задача Сделать два - [Запускаем свой CI сервер для PHP](https://tokarchuk.ru/2017/08/21/codeception-selenium-webdriver-ci-php/) - Всем привет! С вами netandreus, и сегодня я расскажу, как настроить свой CI сервер на базе Jenkins+CodeCeption. Будет много кода и в конце концов рабочее решение. Сразу пишу для тех, кто прочитает пост в будущем - касается актуальных версий, если разработчики чего-то там поломают - RTFM и GitHub. Общая схема Итак, что же нам надо? - [Снижение уровня шума кулеров Dell R-210-II](https://tokarchuk.ru/2019/03/20/dell-r210-ii-reduce-noise/) - Попал тут ко мне давеча сервер Dell-R210-II на замену моему HP MicroServer G8 и стал я его крутить-вертеть. В принципе у меня в стойке как раз было свободное место под него (а он 1U-овый), и освободить место Microserver-а показалось мне хорошей идеей, да и место в стойке пропадать не должно) Проблема Очень долго я пытался - [Конференция по Symfony in UA](https://tokarchuk.ru/2012/10/16/symfony-camp-2012/) - В этом посте анонсирую зимнюю конференцию пщ Symfony. Приятно, что разработчики становятся активнее и всё чаще и чаще объединяются, выступают с докладами и общаются на afterparty :-)Итак, 1 декабря 2012 г. в Киеве состоится конференция Symfony Camp UA 2012, посвященная разработке веб-приложений с использованием PHP фреймворка Symfony. На сегодняшний день это самое большое ежегодное мероприятие - [Типы индексов, виды индексов, или какие вообще бывают индексы?](https://tokarchuk.ru/2012/08/02/indexes-classification/) - После прочтения многочисленной литературы по СУБД, некоторого опыта работы с MongoDB и листанию статей по базам данных у меня созрело желание сделать cheatsheet по индексам применительно к БД. А индексирование - достаточно интересный раздел теории баз данных, а главное - нужный в практике. Вообще-то говоря, золотое правило индексирования - иметь индекс под каждый запрос. По - [Рабочее тегирования для кэша в памяти](https://tokarchuk.ru/2012/07/20/tagging-in-memory-cache/) - Недавно встала, казалось бы, типичная задача - орагнизовать блочное кэширование веб-приложения. Имеется в виду кэширование HTML-фрагментов. Однако в процессе решения задачи всплыл один момент. Задача Необходимо сделать кэширование HTML фрагментов, называемых блоками. Блок генерируется "тяжело" с использованием SQL запросов через ORM слой. Это означает, что надо минимизировать количество обращений к БД для увеличения производительности. - [DevConf 2012, как это было](https://tokarchuk.ru/2012/06/13/devconf-2012/) - На днях мне повезло в очередной раз сходить на одну из самых интереснейших IT конференций - DevConf. В этом году, местом была выбрана гостиница Измайлово. И это было правильно, т.к. в окресностях нашлось много баров для приятного времяприпровождения :-) День первый: доклады DevConf-2012 К половине одиннадцатого утра в конференц-зал вереницей начали подтягиваться IT'шники. Настроение у - [Двойное обертывание в PHP](https://tokarchuk.ru/2012/06/07/double-wrapping-php/) - В этой статье я расскажу о том, как делать двойное (ну или n-ое) обертывание некой функции в php 5.3 Вообще это может понадобиться для очень многих вещей: кэширование, логирование и т.д. Задача. Мы находимся в контроллере, в котором происходит итерация некой функции по месяцам. При этом в каждом экшене контроллера функция - разная. В тоже - [KnpMenuBundle + Twitter Bootstrap](https://tokarchuk.ru/2012/05/24/knpmenubundle-twitter-bootstrap/) - Этим постом открывается рубрика блога "Symfony 2". В этой заметке я расскажу, как привести верстку менюшки к верстке Twitter Bootstrap. Задача Итак, необходимо чтобы при рендеренге менюшки отображались дополнительные атрибуты от Bootstrap. Я погуглил и нашел солшен, который, к сожалению, мне не подошел (knpmenu+twitter bootstrap). А всё из за непонятного Twig-тега Con. {% Con dropdown - [Doctrine 2 и предзагрузка моделей по связи](https://tokarchuk.ru/2012/05/14/doctrine-2-lazy-loading-related/) - В этом посте я расскажу о том, почему могут не грузиться значения свойств модели, полученной через связь в Doctrine 2. Друг тут пожаловался, что при получении модели по связи один-к-одному у него не грузяся значения свойств. Например, такой код возвращал NULL. $release = $em->getRepository('Model\SomeModel')->find(1); $user = $release->getCreateUserLink(); var_dump($user->nick); Свойство описывалось вот так: /** * @OneToOne(targetEntity="User") - [Zend Cloud + WebDav + Яндекс.Диск](https://tokarchuk.ru/2012/05/10/zend-cloud-webdav-yandex-disk/) - В нашем проекте встала задача выделения отдельного сервера под хранение и отдачу статических данных (картинок, музыки и видео). В этом посте я расскажу о том, как я писал свой адаптер хранения на Zend SimpleCloud API. Основаня фишка в том, что он стандартизирован и при желании его можно будет поменять на Amazon S3 не переписывая код. - [Генерация PDF без PHP](https://tokarchuk.ru/2012/05/04/generate-pdf-without-php/) - В этом посте я расскажу, как быстро сгенерировать pdf файлы на основе данных из БД. При этом мы не будем использовать zf, php и другие технологии веб-разреботки. Мы даже не напишем ни строчки кода. Задача Имеется произвольная БД, в таблицах которой хранятся нужные нам данные. На основе этих данных нужно сгенерировать множество PDF-файлов. Есть - [ATI Rage XL (rev 27) on Ubuntu 11.10](https://tokarchuk.ru/2012/05/02/ati-rage-xl-rev-27-on-ubuntu-11-10/) - В этом посте я расскажу об одной баге, связанной с установкой Ubuntu 11.10 на сервер. Решил проблемку с работой графики на ATI Rage XL, консольным режимом и настройкой сети. Проблема Итак, есть у меня сервер на базе Gygabyte GA-8IKXR и стоит в нём замечательно видео от ATI, а именно ATI Rage XL (rev 27). Раньше - [ZFConf 2012. Фотоотчёт.](https://tokarchuk.ru/2012/04/23/zfconf-2012/) - ZFConf. Уже в третий раз я побывал на конференции, посвящённой моему любимому фреймворку. География постоянно расширяется, Киев, Питер, теперь вот и Москва. Сейчас я понимаю, что конференция явно удалась. Мои впечатления - как всегда под катом. Программа была интересной. В этот раз нас ожидал гость из Италии - Enrico Zimuel. Zend Framework 2, a - [Высший замысел или моделезависимый реализм Стивена Хокинга](https://tokarchuk.ru/2012/04/18/the-grand-design/) - Иногда я беру чашку чая, выхожу на балкон и думаю... Думаю неосознанно, а просто множества мыслей крутятся у меня в подсознании. События сегодняшнего дня, и прошлого, просмотренные фильмы, разговоры, прочитанные книги... На выходных случайно зайдя в магазин я увидел книгу Стивена Хокинга "Высший замысел". Безусловно она привлекла меня именем автора, ну и красивой абстрактной - [ZFConf-2012. Конференция Zend Framework разработчиков.](https://tokarchuk.ru/2012/04/13/zfconf-2012-announce/) - Сейчас community веб-разработчиков выходит в реал. Общение из форумов и блогов потихоньку перетекает в кафешки бизнес-центров и залы конференций. В этом году пройдёт конференция Zend Framework разработчиков ZFConf-2012. Что же на ней будет? Читайте в анонсе. С тех пор, как я всерьез увлёкся Zend Framework'ом прошло довольно много времени. Я был свидетелем того, как он - [DevConf 2012. Москва, Измайлово. Доклады от авторов PHP, MySQL, MongoDB.](https://tokarchuk.ru/2012/04/10/devconf-2012-announce/) - Пожалуй одна из самых интересных конференций для разработчиков стартует в июне в Москве. Соберутся такие известные личности, как Дерик Ретанс (разработчик MongoDB), David Soria Parra (разработчик php и git), Сергей Рыжиков (1С-Битрикс), Алексей Рыбак (Badoo.com), Андрей Аксенов (Sphinx) и многие другие. Интро Уже 2 года, как я являюсь постоянным участником этого мероприятия. Когда приходишь на - [CodeLobster PHP IDE](https://tokarchuk.ru/2012/04/09/codelobster-php-ide/) - В этом посте я расскажу об одном из инструментов разработки на PHP - CodeLobster. Сейчас на рынке IDE присутствуют такие гиганты, как Eclipse, Zend Studio, NetBeans, PhpStorm. Чем же так примечательна эта IDE? PHP IDE можно разделить на две большие категории. Первые - это монстры, вроде Eclipse. В них есть огромное количество инструментов, куча функций - [Ускорение парсинга INI-файлов для Zend Framework веб-приложений (в 4-5 раз)](https://tokarchuk.ru/2012/03/28/speed-up-ini-parsing/) - В этой статье я расскажу, как можно увеличить скорость обработки запросов в вашем проекте на ZF с помощью уменьшения времени, необходимого на парсинг INI-файлов конфигурации. Не секрет, что при создании большого приложения на Zend Framework большинство разработчиков используют для хранения настроек конфигурационные файлы. Некоторые любят XML-формат, другие модный YAML, я же возможно из-за своего админского - [Nvidia Optimus on Linux Ubuntu 11.10](https://tokarchuk.ru/2012/03/22/nvidia-optimus-on-linux-ubuntu-11-10/) - Прошел год, с тех пор, когда я последний раз воевал с гибридной графикой в Linux. Много всего изменилось с тех пор и забегая вперед, скажу, что в лучшую сторону. В этой заметке я расскажу о технологии Nvidia Optimus, что она даёт владельцам ноутбуков и какие неприятности готовит линуксоидам. Nvidia Optimus - что это за зверь? Всем известно, - [Исправление ошибки Not all identifier properties can be found in the ResultSetMapping](https://tokarchuk.ru/2012/03/20/not-all-identifier-properties-can-be-found-in-the-resultsetmapping/) - Сегодня пол дня потратил на исправлние ошибки, которая возникла после обновления Doctrine 2.1 -> 2.2. В принципе потом все разрешилось благополучно, но мозг как всегда поломать пришлось. Проблема Мне в почту свлился тикет с ошибкой вот такого содержания. Not all identifier properties can be found in the ResultSetMapping Файл: /home/www/site.ru/web/lib/Doctrine/ORM/Tools/Pagination/CountOutputWalker.php Строка: 107 #0 /home/www/site.ru/web/lib/Doctrine/ORM/Query/Exec/SingleSelectExecutor.php(38): Doctrine\ORM\Tools\Pagination\CountOutputWalker->walkSelectStatement(Object(Doctrine\ORM\Query\AST\SelectStatement)) - [Баг в igbinary 1.1.1 при сериализации сессий в MongoDB Session Handler](https://tokarchuk.ru/2012/03/07/igbinary-1-1-1-bug/) - В этом посте я расскажу о баге, на посик которого мы потратили три дня. Периодически PHP сыпался SegFault. Очень долго ловили этот баг. Igbinary Для начала стоит рассказать, что за расширение igbinary, и для чего оно нужно. Igbinary используется для сохранения объектов, массивов и других сущностей языка программирования в виде строки используются методы сериализации типа - [RE: The MicroPHP Manifesto](https://tokarchuk.ru/2012/03/01/re-the-microphp-manifesto/) - Меня всегда удивляла способность некоторых людей возводить всё в абсолют. Они мыслят чёрно-белыми категориями. Как будто есть только "да" и "нет", "хорошо" и "плохо". Мир серый, люди! И в жизни есть 40 оттенков чёрного. xx> Пошёл в магазин, купил там новых носков, одинаковых, обычных, чёрных, без рисунков и всякой фигни...... xx> Живи и радуйся. yy> - [Распределённый счётчик для веб-приложений](https://tokarchuk.ru/2012/02/27/distributed-counter/) - В этом посте я расскажу об одном варианте реализации счётчика запросов (или счётчика посетителей в одном из вариантов) к веб-приложению, распределённому на нескольких серверах. Задача Итак, необходимо учитывать количество пользователей, осуществляющих запросы к веб-приложению, которое расположено на нескольких (n) серверах. Временной лаг обновления статистики составляет $timeout = 10 секунд. Период неактивности пользователя, после которого считаем, - [Doctrine 2: аксессоры, мутаторы, fromArray(), toArray()](https://tokarchuk.ru/2012/02/20/doctrine-2-properties/) - Всем хороша новая Doctrine, вот только нет там многих удобных функций, решающих повседневные проблемы. В этой статье я расскажу о том, как можно сделать Doctrine 2 более комфортной для разработки. Основное нововведение Doctrine 2 в том, что классы моделей (entities) теперь ни от кого не наследуются. А значит нет функций, добавляемых раньше через Doctrine_Record. Особенно - [Вложенные критерии в Doctrine 2 Query Builder](https://tokarchuk.ru/2012/02/15/nested-criterias-in-doctrine-2-query-builder/) - В этой статье я расскажу об одном интересном способе формирования вложенных критериев в DQL запросах Doctrine 2. Последнее время я всё больше занимаюсь разработкой под Doctrine 2. В текущем проекте ORM система вообще не использовалась (ну если не считать Zend_Db и разбросанные то тут, то там куски кода). Поэтому при выборе ORM решил использовать последнюю - [Мерцает второй монитор, подключенный к ноутбуку](https://tokarchuk.ru/2012/02/13/second-display-blinking/) - Очень долго возился с такой проблемой. К ноутбуку подключен второй монтиор, и на нём видны мигающие горизонтальные полосы. Забегая вперед, скажу, что проблема всё-таки была решена. Задача Вот такая IT-загадка. У меня есть ноутбук, и к нему подключен монитор. Смена монитора не помогает - значит проблема не в мониторе. Смена ОС - не помогает, исключаем - [ZFConf 2012 будет в Москве](https://tokarchuk.ru/2012/02/09/zfconf-2012-moscow/) - Одна из моих любимых конференция - это ZFConf. Даже не потому, что я работаю с ZF каждый день и хочу быть в курсе всех новых технологий и методов оптимизации. А потому, что у ZF есть сплоченное, дружное коммьюнити. В этот раз конференция пройдёт в Москве, а не в Питере. С одной стороны это хорошо, потому, - [Упаковка Zend Framework 2 в PHAR архив](https://tokarchuk.ru/2011/12/12/zend-framework-2-in-phar/) - В этой статье я хочу поближе познакомить вас с замечательной фичей - Phar-архивами. В предыдущем посте я упоминал о ней, а много раньше даже писал обзорную статью по Phar. Целью этого поста будет полная упаковка Zend Framework 2 в один архив, чтобы раз и навсегда исключить проблему инклюдов в ZF веб-приложениях.В последнее время я слышу - [Zend Framework 2. Материалы для изучения.](https://tokarchuk.ru/2011/11/28/zend-framework-2-materials/) - Сейчас ходит много слухов о грядущей версии Zend Fremework 2. В основном слухи касаются увеличенной производительности, новым более гибким подходам, улучшенной по сравнению с 1ой версией стандартизацией и унификацией. В этом посте я хочу разместить подборку материалов для изучающих ZF2. ZF2 - это абсолютно новый фреймворк. Это значит, что он не совместим с ZF1. Да. - [Invision power board, кэширование, nginx и редиректы](https://tokarchuk.ru/2011/11/21/nginx-redirect-bug/) - В этом посте я расскажу о баге, который недавно правил. Проблема была в том, что nginx выдавал 404 ошибку при обращении к одной из внутренних страниц форума. Баг проявлялся временами, и обладал ещё рядом особенностей. Он проявлялся исключительно на сайте с движком IPB (Invision Power Board). После выключения кэширования в движке или перезапуске memcached работа - [Перевод часов в Ubuntu Server / Desktop](https://tokarchuk.ru/2011/10/31/timezones-ubuntu/) - В воскресенье утром обнаружил, что почему-то техника показывает разное время. На одних часах время ушло на час назад, на других нет. Пытался даже позвонить в службу точного времени (+7(495) 100) но там было занято, а механических часов дома давно уж нет :-)Потом у друзей узнал время, и понял в чём засада. Некоторые железки так и - [Linux Kernel 3.0.8 with Ubuntu 10.10](https://tokarchuk.ru/2011/10/25/linux-kernel-3-0-8-with-ubuntu-10-10/) - В этом посте будет описано обновление ядра для Ubuntu, его причины и результаты. Также расскажу об установке модуля Virtualbox на него. Являясь "счастливым" обладателем ноутбука с процессором Core i7 620М я не устаю удивляться, что до сих пор Linux корректно не поддерживает интегрированное видео. Хотя в последнее время были подвижки на эту тему, однако с - [Ruby 1.9.2 и Ubuntu 11.10](https://tokarchuk.ru/2011/10/19/ruby-1-9-2-and-ubuntu-11-10/) - Сегодня товарищ на работе обновил Ubuntu до версии 11.10 (Oneiric Ocelot). Ну и начали ловить первые баги. В этом посте я расскажу, как поставить Ruby 1.9.2.Итак ставили Ruby как обычно, по этому мануалу. Однако потом наткнулись на несколько глюков. Во первых после установки ruby-1.9.2 и выполнении # rvm use 1.9.2 # rvm --default 1.9.2 версия - [Zend Framework Day 2011](https://tokarchuk.ru/2011/10/14/zf-day-2011/) - 12 ноября, в Киеве, пройдет конференция "Zend Framework Day" - посвященная популярному PHP фреймворку Zend Framework. Среди докладчиков непосредственные разработчики компонент Zend Framework. Событие соберет лучших PHP и Zend Framework специалистов из Украины, России, Белоруссии и других стран СНГ. С текущим списком тем и докладчиков можно ознакомиться на странице. Событие будет интересно не только тем, - [1С Битрикс Облачный драйв. Фотоотчёт.](https://tokarchuk.ru/2011/10/12/1c-cloud-and-v11/) - Пару дней назад в мою почту свалилось приглашение на конференцию Битрикса. Откуда я собственно узнал, что вышла его новая 11 версия. Интересно было узнать, что же там нового, да и вообще приглядеться к самой популярной отечественной платной CMS системе.Конференция проходила в отеле Ararat Park Hyatt Moscow, в самом центре, недалеко от красной площади. Там кстати - [MHA for MySQL: Master High Availability Manager and tools for MySQL](https://tokarchuk.ru/2011/10/06/mha-for-mysql-master-high-availability-manager-and-tools-for-mysql/) - Недавно вышел релиз 0.52 замечательного средства поддержки MySQL кластера "Master High Availability Manager" от моего японского товарища Yoshinori Matsunobu. Он известен в первую очередь, как разработчик HandlerSocket (NoSQL средства доступа к БД MySQL). Он работает в компании DeNA, которая управляет географически-распределённый MySQL кластером. Чем больше машин в кластере, тем больше вероятность сбоев. Именно поэтому Yoshinori - [Редирект внешних ссылок в IPB (Invisiop Power Board)](https://tokarchuk.ru/2011/09/29/ipb-redirect-links/) - Недавно решил провести SEO аналитику одного из своих проектов - форума на IPB. Обнаружил интересную вещь. Сервис анализатор траста выдавал просто зашкаливающее число внешних ссылок с ресурса. Начал шерстить настройки и PHP код форума. Вот несколько мероприятий, которые я проделал. 1. Изменил настройки пользователей. Настройки и инструменты > Системные настройки > Пользователи > Профили пользователей - [Software Freedom Day (День Свободного ПО) в Екатеринбурге. Фотоотчёт.](https://tokarchuk.ru/2011/09/26/software-freedom-day/) - Вчера вечером искал чего-то на хабре, и совершенно случайно нашёл анонс конференции Software Freedom Day Ekb. А так как я фанат свободных технологий, то такое мероприятия я просто не могу пропустить. Тем более, что я как раз был в Екатеринбурге. В программе мероприятия было 4 доклада. Она изначально планировалась как небольшая, и все выступления должны - [Производительность GridFS](https://tokarchuk.ru/2011/09/23/gridfs-benchmark/) - В этой заметке я хочу разместить свой перевод замечательной статьи про GridFS. Задача хранения и раздачи файлов в кластерной среде сегодня с развитием облачных вычислений приобретает всё большую актуальность. Задача Хранить и раздавать статические файлы (картинки, стили и скрипты) на кластере из нескольких серверов. Возможные решения NFS, Lustre, SMB (Samba), Hadoop, DRBD (сетевой RAID). Из - [Пробуем кластерную файловую систему GridFS](https://tokarchuk.ru/2011/09/21/gridfs/) - Сейчас есть множество кластерных файловых систем, например DRBD, GlusterFS и другие. В этой заметке я хочу рассказать о файловой системе GridFS, от разработчиков MongoDB стартапа 10gen. Интерес к кластерным ФС возник у меня не случайно, а в следствии поиска решения задачи распределённого хранения картинок пользователей (ака CDN). 10gen stack Вообще 10gen предлагают свой стек технологий - [Zend Framework SEO](https://tokarchuk.ru/2011/09/19/zend-framework-seo/) - В этом посте я не буду "палить темы", а расскажу о нюансах, которые следует не забыть при создании веб-приложения на Zend Framework и его оптимизации для поисковых систем. ЧПУ или ЧеловекоПонятные Урлы Адреса на сайте должны быть понятны человеку, т.е. даже в том случае если пользователь ещё не зашел на ваш сайт, аолько видит ссылку - [Запуск Ruby-скрипта по cron или из Teamcity](https://tokarchuk.ru/2011/09/06/invalid-byte-sequence/) - Очень часто встает задача запускать мелкие скрипты на ruby/php из консоли по расписанию. Мы также пишем небольшие утилитки и привязываем их к нашему любимому средству развертывания TeamCity. Но руби скрипт не отображается в процессах, при том, что из консоли он запускается нормально. Оказывается дело было в кодировке. Используемый нами гем inifile, который парсит ini-файлы вываливался - [Гейзенбаг: коды возврата при использовании Memcached+Nginx](https://tokarchuk.ru/2011/09/02/nginx-memcached-return-codes/) - На этой неделе в нашей тикет-системе был совершенно изумительный гейзенбаг. При запросе определённой страницы, на которой расположен уже удалённый объект было необходимо выдавать код 404. Однако в произвольные моменты времени там выдавался код 200.Начали расследования. К нему подключился наш #seo-шник. Оказалось, что код 200 выдается совершенно произвольно. Пробовали разные браузеры, сначала грешили на Firefox, но - [Карта сайта для поисковиков (Sitemap) в Zend Framework приложении](https://tokarchuk.ru/2011/08/24/sitemap-zend-framework/) - По работе занимаюсь созданием довольно большого портала. Не люблю я это слово, но оно наиболее полно отражает суть веб-сервиса. На этой неделе встала задача генерации sitemap файла для поисковиков. Всё бы ничего но по примерным подсчётам на сайте никак не меньше 3 000 000 страниц, которые надо скормить роботу. Ввиду такого количества поисковик просто не - [У PEAR появился веб-интерфейс](https://tokarchuk.ru/2011/08/10/pear-webinstaller/) - Сегодня обновлял pear и у удивлением обнаружил, что у него появился веб-интерфейс. После обновления командой pear install pear :-) увидел в консоли вот такое сообщение: PEAR: Optional feature webinstaller available (PEAR's web-based installer) PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer) PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer) Поставить веб-интерфейс можно вот так: $ - [Zend_Cache_Backend_Apc и shared memory segments](https://tokarchuk.ru/2011/08/05/zend_cache_backend_apc/) - В этом посте я напишу об одной банальной истине, а именно о распределении адресного пространства. В ОС Linux все процессы работают каждый в своём адресном пространстве, что логично :-) Зачем я это написал читайте под катом. Сегодня мы решили использовать самый быстрый (из бесплатных) вариант кэширования информации между запросами - кэширование в APC. Т.к. мы - [Троичная логика (ternary logic) в Doctrine ORM](https://tokarchuk.ru/2011/07/07/tertiary-logic-in-doctrine-orm/) - В этой статье речь пойдет о третичной логике. Я не буду говорить об операциях в троичной логике, а коснусь лишь вопросов хранения данных в Doctrine. Представим, что есть некоторый столбец в БД, данные которого могут принимать три возможных значения. Для хранения типа boolean (двоичная логика) Doctrine используется тип данных boolean в PHP, а при отражении - [Двадцать пять](https://tokarchuk.ru/2011/06/30/twenty-five/) - Юбилей, не юбилей - не знаю. Сегодня мне стукнуло 25, а этому блогу год. За этот год многое удалось, много всего случилось. Вообще мне кажется, что я живу с нереальной скоростью. Еле всё успеваю. Иногда бывает чертовски приятно замереть на несколько мгновений, расслабившись с чашкой кофе в уютном кресле, как сейчас :-) Монетка 1838 - [Установка SphinxSE](https://tokarchuk.ru/2011/06/14/install-sphinxse/) - Очень хотел попробовать SphinxSE. Кто не знает - это интерфейс работы mysql-sphinx, когда в рамках существующего соединения с mysql можно делать запросы к Sphinx. Итак, подробности установки под катом. Зачем? Да, безусловно можно использовать клиент для PHP/Ruby для доступа к Sphinx с помощью бинарного протокола. Но, как сказали на последних ZfConf и DevConf, сначала все - [DevConf 2011. Фотоотчёт и немного видео.](https://tokarchuk.ru/2011/06/06/devconf-2011/) - Рубрика "IT-конференции" в моём блоге начинает медленно но верно наполняться. Вчера побывал на DevConf, и как и в прошлом году мне оочень понравилось. В этой заметке будет много текста, моих мыслей (всё сплошное ИМХО и личные впечатления) немного фоток и видео.Сразу хочу сказать, что фотик у меня сел, и некоторые фотки получились размытые, но думаю - [Вышел TeamCity 6.5 (CI сервер)](https://tokarchuk.ru/2011/06/01/teamcity-6-5/) - Несколько дней назад вышла новая версия сервера непрерывной интеграции TeamCity. Я, как его ярый фанат, регулярно слежу за обновлениями. Что же нового в 6.5? Отключние неудачных тестов бывают случаи, когда приложенеи меняется настолкьо сильно, что программисты не успевают написать тесты, следующие этим изменениям, тогда хорошей возможностью будет поставить эти тесты "на паузу", т.е. временно отключить - [Уральский вебдев. Конференция Dump в Екатеринбурге. Фотоотчёт.](https://tokarchuk.ru/2011/05/31/dump-2011-ekb/) - 30 мая в Екатеринбурге прошла уральская конференция веб-разработчиков "Development Usability Management Practice" (Dump), которую мне удалось посетить. Основных направлений два, как следует из названия, - это веб-разработки и менеджмент IT технологий.Конференция проходила в новом отеле Angelo, который находится аккурат справа от терминала внутренних авиалиний аэропорта "Кольцово". Отель построен совсем недавно, чуть позже чем сам терминал, - [Один порт для нескольких воркеров phpDaemon](https://tokarchuk.ru/2011/05/30/one-port-binding-for-multiple-workers/) - Сегодня разбирались с демонизацией Zend Framework приложения на базе phpDaemon. При тестировании возникла одна проблема - при старте демона и обработке запроса на одном порту мог висеть только один демон.При увеличении параметров max-workers и start-workers вылетали ошибки вида "Couldn't bind TCP-socket". Пробовали вариант с созданием нескольких демонов на разных портах и балансировкой их через nginx. - [Особенности кодировки при работе PHP & Ruby & Starling](https://tokarchuk.ru/2011/05/27/encoding-php-ruby-starling/) - В статье Ruby & PHP. Скрещиваем ужа с ежом с помощью Starling и Zend_Queue я рассказал, как организовать обмен данными между Ruby и PHP. В процессе работы возникла проблема передачи локализованных данных (на русском языке). Дальше я расскажу, как удалось её решить. Задача Starling работает по текстовому протоколу, информация в котором (команды и данные) кодируются - [Как восстановить skype](https://tokarchuk.ru/2011/05/26/how-to-repair-skype/) - Сегодня, буквально пару минут назад, произошел странный инцидент. Skype вылетел и на данный момент не желает запускаться. Открывается окно, попытка авторизации и процесс умирает. В htop процесса не видно. Проблема наблюдается у всех разработчиков, у кого Ubuntu. Как заставить работать Skype под виндой заставить работать можно удалив файл shared.xml из папки C:\Users\%username%\AppData\Roaming\Skype Или, если XP, - [Установка iconv для Ruby 1.9.2](https://tokarchuk.ru/2011/05/26/iconv-for-ruby-1-9-2/) - Для того, чтобы работать с юниксовой библиоеткой iconv, необходимо добавить её поддержку в Ruby. Оказывается, это не так тривиально. iconv — утилита UNIX (и одноимённая библиотека) для преобразования текста из одной кодировки в другую. Она также портирована под Windows. Утилита iconv конвертирует текст из одной кодировки в другую. Входная кодировка задаётся ключом -f, а выходная - [Ruby & PHP. Скрещиваем ужа с ежом с помощью Starling и Zend_Queue.](https://tokarchuk.ru/2011/05/21/php-ruby-with-starling/) - В этой статье я расскажу о животрепещущем для многих вопросе. Как соединить между собой приложения на разных языках. Например, Ruby и PHP. В Twitter проблему интеграции с очередью решили с помощью Starling. Вообще сейчас намечается тенденция, что для каждой задачи подбирают свой язык. Гомогенных систем становится всё меньше. В следствии этого возникает потребность в стандартах - [Учим Ruby вместе! Урок 1](https://tokarchuk.ru/2011/05/20/learning-ruby-together/) - "Привет! Чем занимаешься?" - "Да так, одну штуку на руби программлю." - "Это заразно :-)" Вот такой диалог состоялся у меня сегодня с одним приятелем. Почему ruby? Зачем учить Ruby Этот вопрос касается тех, кто уже долго и успешно программирует на PHP. Вы освоились в одном языке, это здорово, но не надо останавливаться на - [ZFConf-2011. Фотоотчёт о конференции по Zend Framework.](https://tokarchuk.ru/2011/05/17/zfconf-2011/) - Ну вот я и вернулся из Питера, где в эти выходные проходила конференция PHP разработчиков ZFConf-2011. Для тех, кто ещё не догадался, конференция посвящена самому популярному каркасу веб-разработки "Zend Framework". Конференция проходит уже в третий раз, предыдущая была в Киеве, а позапрошлая тоже в Питере. В этот раз организаторы попробовали сделать конференцию платной. С одной - [Установка RVM, Ruby 1.9.2, Ruby on Rails 3.0.1 на Ubuntu + решение проблемы с гемом mysql2](https://tokarchuk.ru/2011/05/13/installing-rvm-ruby-1-9-rails-3-0-1-in-ubuntu/) - В этой статье я опишу идеологически правильную установку Rails 3.0.1 и сопутствующего добра на Ubuntu. Вообще я стараюсь ставить весь софт из пакетов, но в данном случае, для лучшего контроля версий сделаю исключение. Сразу хочу ответить на вопрос, зачем я это делаю. В сети много материалов по установке Rails, про RVM тоже есть. Однако везде - [Пишем своё расширение PHP на C. Часть 2: Windows](https://tokarchuk.ru/2011/05/13/own-php-extension-windows/) - В предыдущей статье я рассказывал как скомпилировать свое расширение PHP под Linux. Теперь разберемся, ка сделать это же под Windows. Исходные данные • Исходные коды расширения. php_hello.c php_hello.h config.m4 config.w32 • Исходные коды php интерпретатора в установлены каталоге (ссылка: http://www.php.net/get/php-5.2.11.tar.bz2/from/a/mirror ): C:\php5_source • Откомпилированная сборка php интерпретатора установлена в каталоге (ссылка: http://www.php.net/get/php-5.2.11-Win32.zip/from/a/mirror ): C:\php5 Среда - [Пишем своё расширение PHP на C. Часть 1: Linux](https://tokarchuk.ru/2011/05/12/own-php-extension-linux/) - Очень часто бывает так, что встроенного в PHP набора функций недостаточно, или алгоритм выполняется слишком долго. Также возможен случай, когда надо запрограммировать какой-нибудь уникальный алгоритм. Тогда одним из вариантов будет написание собственного расширения для PHP.Эту статью я разделил на две части. Первая будет посвящена компилированию своего расширения на платформе Linux, а вторая компилированию на Windows. - [О двух способах работы геолокации (GeoIP) в PHP](https://tokarchuk.ru/2011/05/10/geolocation-geoip-in-php/) - Мы начинаем потихоньку привыкать к Web 2.0 сайтам. Удобный (местами минималистический) дизайн, скруглённые уголки, тени, контент, генерируемый пользователем. А что главное с точки зрения юзабилити в w2.0-сайте? Не заставлять пользователя совершать лишние движения. Надо максимально облегчить ему процесс использования сайтом. Например, если в форме регистрации можно автоматически определить страну и город - зачем заставлять пользователя - [ZFCONF 2011. Список докладов второй российской конференции по Zend Framework.](https://tokarchuk.ru/2011/05/05/zfconf2011/) - Основные подготовительные работы по конференции закончены. Доклады сформированы. Среди спикеров представители KnpLabs, Magento, JetBrains, Sphinx и других известных компаний. Открыта финальная регистрация! Если Вы проходили предварительную регистрацию, то для прохождения финальной регистрации Вам нужно перейти по специальной ссылке, отправленной на e-mail. Введенную ранее информацию нужно будет только подтвердить. Если ссылка не приходила Вам, ее можно - [Выполнение системных команд из MySQL с помощью UDF(lib_mysqludf_sys)](https://tokarchuk.ru/2011/04/19/execute-system-commands-from-mysql/) - Сегодня понадобилось выполнить системную команду ОС Linux из MySQL. Оказалось, что сделать это из коробки не получится. Зато с одной замечательной библиотечкой всё вполне срослось. Компиляция и установка 1. Качаем библиотеку lib_mysqludf_sys 2. Распаковываем архив, удаляем оттуда всё кроме lib_mysqludf_sys.c и lib_mysqludf_sys.sql 3. Компилируем библиотеку из c-файла gcc -fPIC -Wall -g -c ./lib_mysqludf_sys.c gcc -g - [Расширение MySQL с помощью User defined functions (UDF)](https://tokarchuk.ru/2011/04/18/user-defined-functions-in-mysql/) - На днях я вплотную занялся вопросами расширения MySQL. В этой заметке вы узнаете, как это возможно, и какие инструменты MySQL предлагает для этого. Плагины MySQL В первую очередь, средством расширения выступают плагины. Краткое представление о них вы можете составить по этой презентации: Всем извесный движок хранения InnoDB, поставляется как раз в виде плагина типа "storage - [Учёные 21 века](https://tokarchuk.ru/2011/04/16/science-21-century/) - Знаете что интересно? Интересно познавать мир, создавать что-то новое. Разрабатывать алгоритмы, интегрировать разные сервисы. Интересно ковыряться с железом, чтобы выжать из него максимум. Что нужно, чтобы стать учёным, ну скажем в фундаментальной физике? Лаборатория, дорогостоящее оборудование, которое не так то просто получить. Могут элементарно через границу не пустить. Гранты на это оборудование, которые ещё надо - [Sphinx и SphinxQL. Установка на Ubuntu Server и первый практический опыт.](https://tokarchuk.ru/2011/04/15/sphinx-and-sphinxql-ubuntu-install-and-first-experience/) - Рано или поздно при разработке поисковой системы по сайту, у программиста появляется идея - "а переведу ка я весь поиск на Sphinx". Вот и у меня возникла такая идея. После непродолжительного гугления, мне удалось установить и даже попробовать в работе SQL интерфейс доступа к Sphinx. Установка У вас уже должен стоять mysql сервер и клиент. - [MySQL 5.6.2 Теперь ещё и Memcached интерфейс!](https://tokarchuk.ru/2011/04/13/mysql-with-memcached-interface/) - Сегодня хочу рассказать вам отличную новость! Вышла новая экспериментальная версия MySQL 5.2.6 которая получила memcached интерфейс к InnoDB. Что же это значит? Буквально пол-года назад был сделан первый шаг в NoSQL направлении со стороны MySQL. Ну не самой компании, и не разработчиков, а вообще сторонней компании. Речь конечно идёт о HandlerSocket. Oracle видимо поняла, что - [Решение проблемы расхода памяти PHPUnit & Zend_Test для Zend Framework веб-приложения](https://tokarchuk.ru/2011/04/12/phpunit-and-zend-test-memory-limit/) - На работе часть команды занимается написанием тестов для веб-приложения на Zend Framework. Надо сказать, что фреймворк довольно тяжелый, а уж в режиме тестов тем более (т.к. один процесс в этом режиме обрабатывает не один HTTP-запрос, как в обычном режиме, а целую кучу). Раньше всё было хорошо, но постепенно тестов становилось всё больше и больше, они - [Обновляем Percona Server 5.1 -> 5.5](https://tokarchuk.ru/2011/04/08/percona-server-5-1-to-5-5-upgrad/) - Как известно, не так давно вышла версия MySQL 5.5, с большим числом нововведений. В частности очень сильно увеличилась производительность. Товарищи из компании Percona, которые разрабатывают свой набор патчей к MySQL под названием Percona Server на той неделе выложили в свои репозитарии percona-server-server-5.5 и percona-server-client-5.5, которые автоматически к сожалению не обновляются... При обновлении Percona возникает отображаются - [Сравнение PHP кэшеров в реальных условиях](https://tokarchuk.ru/2011/03/25/php-cachers-testing/) - Один из моих читателей (тоже Андрей кстати) провел тестирование различных кэшеров опкода PHP на своём проекте. И с его разрешения, публикую результаты проведённых полевых испытаний. Синтетические тесты Если вы хотите посмотреть синтетические тесты, то ни есть тут, и тут. Вкратце результаты синтетического тестирования таковы: В лидерах, по-прежнему, eAccelerator и XCache. Даже помня о точности замеров, - [PHP велосипеды. Зачем?](https://tokarchuk.ru/2011/03/24/php-velosipedy/) - Давно задавался вопросом, почему многие PHP программисты пишут свои велосипеды (CMS,CMF,ORM и т.д.)? Ведь есть куча готовых наработок, готовые PHP классы, PEAR. Почти все стандартные задачи, которые встречаются в веб-разработке, уже реализованы в Zend Framework да и во многих других фреймворках. И я решил провести небольшое исследование...Запостив опрос на Хабре, сейчас я смотрю результаты и - [Взаимная блокировка транзакций БД. Как решать проблему?](https://tokarchuk.ru/2011/03/21/transaction-lock-timeout-trouble/) - В данной статье описывается решение проблемы взаимных блокировок транзакций БД, когда одна транзакция блокирует данные и не дает запуститься другой. Сегодня столкнулись с такой проблемой. Есть группа действия с БД, которые обернуты в транзакцию. На сервер в один момент времени стали поступать запросы на функцию, которая выполняла эти действия. При этом MySQL выдавал следующее сообщение: - [Настройка nginx для хостинга](https://tokarchuk.ru/2011/03/20/nginx-config-for-web-hosting/) - В последнее время замечаю большой интерес к nginx, и организации веб-сервера на его основе. UP 20.11.2011 Если раньше строили двухзвенную систему (фронтэнд - Nginx, бекэнд - Apache), то сейчас постепенно переходят только на Nginx, полностью отказываясь от Apache. Для таких случаев можно использовать следующий конфиг: # PHP-FPM (backend) upstream php-fpm { server 127.0.0.1:9000; } # - [Добавление плеера PowerPoint презентаций Slideshare на форум IPB](https://tokarchuk.ru/2011/03/14/slideshare-powerpoint-presentation-in-invision-power-board/) - Иногда бывает необходимо вставить на форум презентации в PowerPoint, например по ZendFramework. Можно конечно загрузить их на сайт по FTP, и дать ссылку, чтобы пользователи могли качать. Но гораздо интереснее будет сделать так, чтобы можно было бы смотреть презентацию прямо на сайте. В Invision Power Board (как впрочем и в других форумных движках) для вставки - [WTFM - новая единица качества кода :-)](https://tokarchuk.ru/2011/03/08/wtfm-code-measure/) - Щютка конечно, но уж больно жизненно :-) - [Проброс портов хоста (Ubuntu) в гостя (Windows) в VirtualBox](https://tokarchuk.ru/2011/03/04/port-forwarding-in-virtualbox/) - Как и многие веб-разработчики, мы вынуждены тестировать наш веб-сервис в разнообразных броузерах и средах. И всё бы было хорошо, но, нам также приходится тестировать его в Internet Explorer 6, что доставляет нам много принеприятнейших минут. Не буду говорить всё, что я думаю по поводу этого броузера, а то к сути статьи я перейду не скоро. - [Получение списка внешних ключей для таблицы MySQL](https://tokarchuk.ru/2011/03/01/show-foreign-keys-mysql/) - Сегодня думал, как бы получить список внешних ключей. Мы используем InnoDB, и таблицы связаны через Foreign keys.Сначала думал, что есть что-то типа SHOW FOREIGN KEYS FROM 'tablename'; но оно не сработало. Тогда нашел два варианта. Первый немного костыльный: SHOW CREATE TABLE 'tablename'; Отображает SQL команду CREATE TABLE, которой была создана таблица, включая все внешние ключи. - [Простая аутентификация. Nginx + .htpasswd](https://tokarchuk.ru/2011/02/15/простая-аутентификация-nginx-htpasswd/) - Для создания простой аутентификации (Base Auth) вместе с Apache используются файлы .htaccess и .htpasswd. Для Nginx всё почти так же. В настройке vhost'а Nginx добавляем следующие строки: location /admin/ { auth_basic "Admin Zone"; auth_basic_user_file /var/www/example.com/admin/.htpasswd; } Потом создаем файл .htpasswd командой: #htpasswd -c -d .htpasswd myname Для полного счастья запрещаем доступ к .htpasswd файлам, если - [Новый подход к тестированию Zend Framework/Doctrine приложения: пусть тестируют пользователи!](https://tokarchuk.ru/2011/02/09/new-testing-technique-let-users-do-itself/) - Когда проект растет, то, как правило, растет и его кодовая база, количество модулей, да и число программистов, вовлечённых в проект. Постепенно от закачки файлов по ftp (если такое было :-) команда переходит к Subversion/Git репозитарию, тикет-системам и начинает использовать инструменты для увеличения производительности совместной работы. Важным вопросом становится тестирование, т.к. в больших веб-приложениях компоненты так - [Настройка пассивного режима VSFTPD и проброс портов через Firewall в Ubuntu](https://tokarchuk.ru/2011/02/08/vsftpd-passive-mode-firewall-iptables-ubunt/) - Многие сервисы имеют стандартные порты для работы. Например SSH работает на 22 порту, а Apache на 80. Такие сервисы очень просто записать в правила firewall, а что делать с сервисом VSFTPd, который кроме статических портов 20 и 21 для управления использует динамические номера портов для обмена данными? Для этого надо сделать всего две вещи. 1. - [Сложный код, плавающие баги и инсайт](https://tokarchuk.ru/2011/02/07/complex-code-floating-bugs-and-insight/) - Мы три дня ловили баг. Есть такая противная категория ошибок - плавающие баги. Гейзенбаг (англ. Heisenbug) — термин, используемый в программировании для описания программной ошибки, которая исчезает или меняет свои свойства при попытке её обнаружения. Это слово, в отличие от слова «баг», в русском языке практически не используется. Не полностью идентичный, но достаточно близкий по - [Ubuntu Flash полный экран](https://tokarchuk.ru/2011/02/06/ubuntu-flash-полный-экран/) - После переустановки ОС на Ubuntu 10.10 у меня возникла пробелма. При переключении flash плейера в полноэкранный режим, он не врубался, а вместо этого вешался Firefox. Долго откладывал решение проблемы, а на деле оказалось, что всё просто. Открываем Менеджер настройки Compiz и идем в общие настройки и ставим птичку на против принудительной независимой отрисовки. Далее делаем - [PHP & APC & SVN не работающая инвалидация кэша при операциях с Subversion](https://tokarchuk.ru/2011/02/04/php-svn-apc-brocken-cache-invalidation/) - Премия "грабли дня" сегодня присуждаются php-расширению "APC". Вкратце, APC это байт-код кэшер, который кэширует операцию преобразования php скрипта в байт-код, позволяя каждый раз не загружать код заново из файла, а по-быстрому доставать из сегмента shared memory. Ещё одно преимущество в том, что сегмент памяти шарится между процессами php, и когда на сайт заходит вторйо пользователь, - [Включение TRIM для SSD дисков в Ubuntu](https://tokarchuk.ru/2011/01/31/enable-trim-support-in-ubuntu/) - Сегодня на почте я прочитал комментарий от читателя моего блога "ещё TRIM включить?" к статье "Настройка Ubuntu для рабоыт на SSD диске". И действительно, самое главное то я и забыл. В этой заметке опишу процесс настройки поддержки команды TRIM в Ubuntu. TRIM — команда, позволяющая операционной системе уведомить твердотельный накопитель о том, какие блоки данных - [Аудит кода: плагин FAQ-Tastik для WordPress](https://tokarchuk.ru/2011/01/29/faq-tastik-wordpress-plugin-code-review/) - Сегодня в моем блоге торжественно открывается новая рубрика - "Аудит кода". В ней я буду смотреть код популярных и не очень PHP приложений, и высказывать свои мысли по этому поводу. Открывает рубрику плагин FUCK FAQ-Tastik для WordPress. Плагин является самым популярным решением по созданию системы вопросов и ответов на сайте на базе WordPress. У него - [Установка php-handlersocket 0.0.7 на ubuntu (новые грабли)](https://tokarchuk.ru/2011/01/28/install-php-handlersocket/) - Со времени прошлого поста прошло много времени, расширение php-handlersocket успело обновитсья с 0.5 до 0.7, автор исправил некоторые баги. Спасибо вам, за то что находили их и постили в Issues. Сегодня обновили Ubuntu на компе разработчика с 10.04 до 10.10 и старая метода установки HandlerSocket работать перестала. Но нам всё-таки удалось его установить! Баг актуален - [Openfire, Vcard и UTF-8](https://tokarchuk.ru/2011/01/19/openfire-and-utf-8/) - Сегодня после перестановки сервера Openfire столкнулись с проблемой с кодировкой. В Jabber протоколе есть такая замечательная штука, как Vcard. vCard — формат файлов для обмена электронными визитными карточками. vCard-файл состоит из vCard-записей, каждая из которых содержит информацию одной визитной карточки. vCard-запись может содержать имя, адрес, номера телефонов, URL, логотип, видео и аудио фрагменты. Формат vCard - [Автосжатие в php-memcached после 20 000 символов при выключенном сжатии](https://tokarchuk.ru/2011/01/14/autocompress-memcached-after-20000-symbols/) - После переезда на новый сервер, мы запустили сайт. Грузился он конечно очень быстро, но хотелось ещё быстрее. Посмотрели, а у нас выключено страничное кэширование. После включения начал вылезать мистический баг... История Для мониторинга обращений к Memcached я использовал следующую команду: tail -f /var/log/memcached.log | grep -E "FOUND|STORED" Она выводила мне запросы к ключам, и попадания/промахи - [Использование OpenId брокеров Loginza.ru и Janrain.com (RPXNow.com) в Zend Framework](https://tokarchuk.ru/2011/01/13/openid-zend-framework/) - Когда вы пишете веб-приложение, то рано или поздно (а лучше чтобы рано) у вам приходится решать задачу авторизации пользователей на сайте. Вы лепите форму регистрации, и вроде бы всё готово. Но юзеры сейчас пошли ленивые, им надоедает заполнять очередную форму регистрации, чтобы узнать, а что собственно вы им предлагаете. Поэтому большое количество ваших посетителей просто - [VirtualBox без X сервера (Headless mode) & phpVirtualBox](https://tokarchuk.ru/2010/12/29/virtualbox-without-x-server-and-phpvirtualbox/) - В этой заметке я хочу рассказать о развертывании системы виртуализации на базе Ubuntu 10.10 Server + VirtualBox + phpVirtualBox. Думаю, вы в курсе, что это такое и с чем его едят. Преимущества и недостатки VirtualBox, как системы виртуализации, я оставлю за рамками этой статьи.Наша задача: развернуть инфраструктуру виртуализации на хост-машине без графического интерфейса (X-сервера). В - [Настройка Ubuntu для работы на SSD диске](https://tokarchuk.ru/2010/12/28/tuning-ssd-on-ubuntu-10-10/) - В этой заметке я хочу поделиться практическим опытом настройки Ubunntu 10.10 для работы с SSD диском. В интернете есть довольно много информации на эту тему, но иногда она противоречивая, иногда уже неактуальная, так что думаю эта статья пойдёт на пользу людям, админящим сервера под Ubuntu Server. Swap? Очень интересно было узнать, а нужно ли использовать - [Хранение сессий в Memory Storage Engine и переполнение кучи (heap)](https://tokarchuk.ru/2010/12/27/memory-storage-engine-for-sessions-and-heap-overflow/) - Сегодня речь порйдёт об интересных граблях с авторизацией на сайте. Хранение сессий у нас реализовано в БД, с помощью Zend_Session_SaveHandler_DbTable. Это очень удобно, т.к. быстрее чем хранение в виде файлов, и нагляднее. Так вот, сегодня при авторизации вдруг стало выдаваться сообщение: Error: Zend_Session is currently marked as read-only. Также очень часто вылетала вот эта ошибка: - [Sony VAIO VPCZ11 VS Ubuntu 10.10 (UP)](https://tokarchuk.ru/2010/12/21/sony-vaio-vpcz11-vs-ubuntu-10-10/) - Вот вы спросите, почему такое название темы, почему Sony против Ubuntu? А я вам скажу. Попал тут ко мне недавно этот ноутбук, и оказалось что установить на него Ubuntu без танцев с бубнами не получится. Настолько, что на форумах даже раздавались крики - "что, неужели всё? неужто опять на Windows переходить?". Дальше я расскажу, что - [Введение в HandlerSocket: описание протокола и расширения php-handlersocket](https://tokarchuk.ru/2010/12/20/handlersocket-protocol-and-php-handlersocket-extension/) - Сейчас на волне популярности различных NoSQL решений создана интересная разработка - плагин для MySQL, реализущий NoSQL доступ к нему, представленный 20 октября 2010г Yoshinori Matsunobu. В этой заметке я рассмотрю сам протокол, а также его реализацию в php-расширении php-handlersocket. Что такое HandlerSocket HandlerSocket - это протокол, реализованный в одноимённом плагине для РСУБД MySQL, позволяющий использовать - [Решение проблемы "mysqlnd cannot connect to MySQL 4.1+ using old authentication" для PHP 5.3](https://tokarchuk.ru/2010/12/17/solving-problem-mysqlnd-old-passwords-for-php53/) - После обновления сервера БД на Percona Server 5.1.52-rel12.3 с удивлением обнаружил, что перестал коннектиться PhpMyAdmin, а также все веб-приложения на PHP. WTF? Проблема Оказывается, что в новом MySQL (ну и Percona) изменился алгоритм шифрования паролей, да так здорово, что стал несовместим со старыми клиентами. Так что вам придется пройти это, если вы планируете обновлять MySQL - [Скорость HandlerSocket на SSD](https://tokarchuk.ru/2010/12/16/handlersocket-on-ssd/) - Эта заметка - перевод статьи на MysqlPerfomanceBlog небольшими комментариями. Вообще я в последнее время очень сильно изучаю возможности наращивания производительности веб-приложений на базе Zend Framework, использующих MySQL (ну или Percona :-) что роли не играет) в качестве хранилища данных. Также недавно у меня проскочила заметка про флешку, которую мы использовали на мини-сервере и в связи - [Установка и настройка HandlerSocket и Percona Server в Ubuntu 10.10 из пакетов](https://tokarchuk.ru/2010/12/15/install-handlersocket-and-percona-server-from-packages/) - В одной из прошлых заметок я писал о плагине к MySQL Handler Socket, и о том, каких результатов можно добаться применяя его. Сейчас модно юзать NoSQL базы, хотя MySQL на порядок быстрее их (вместе с этим плагином) он, по результатам тестов, оказался даже быстрее Memcached! Да и вообще заманчиво использовать NoSQL-решение (HandlerSocket), хранить всё в - [Интеграция Zend_Cache_Frontend_Page, Nginx и Memcached или 1000 запросов в секунду](https://tokarchuk.ru/2010/12/13/integration-zend_cache_frontend_page-nginx-and-memcached/) - Сколько грузится ваш движок? Я имею в виду число врмя генерации скрипта? 0,5 0,6 или может быть аж целую секунду? :-) Наш вот срабатывает за 0,8. После последних оптимизаций (см. предыдущие статьи) стал отрабатывать за 0,5. Это примерно 2 запроса в секунду. Хотите раскажу, как довести это число до 1000*? Что в наличии? 1. Несколько - [Автоинкрементные ключи и хранение сессий в БД](https://tokarchuk.ru/2010/12/11/autoincrement-kays-and-session-storage-in-database/) - Вчера разбирался с интересным багом с Zend_Session_Storage_DbTable. Хотя в конце выяснилось, что он то тут и не причем :-) Итак, веб-приложение на базе Zend Framework хранит сессии в бд MySQL с помощью Zend_Session_SaveHandler_DbTable. Структура таблицы аналогичная мануалу. CREATE TABLE IF NOT EXISTS `dao_session` ( `id` char(32) NOT NULL DEFAULT '', `modified` int(20) DEFAULT NULL, `lifetime` - [Moscow MySQL User Group Meeting @ Rambler](https://tokarchuk.ru/2010/12/10/moscow-mysql-user-group-meeting-rambler/) - Вчера вечером состоялась встреча московской группы пользователей MySQL, на которую меня пригласил товарищ. Очень хорошо, что встречу (а по сути это была мини-конференция) назначили на 19:30. Не помешало поработать, да и сотрудникам Рамблера мы не помешали. Добираться конечно было тяжко, ТТК ехало довольно вяло, но, тем не менее, мне удалось вовремя добраться до офиса Рамблера. - [Флешка в помощь веб-серверу или ReadyBoost для Ubuntu Linux](https://tokarchuk.ru/2010/12/08/flash-and-web-server/) - Многие из админов задаются вопросом, а может ли USB(MMC/SD...) флешка увеличить скорость работы веб-сервера. И если может, то что для этого нужно сделать? Я задал этот вопрос на хабре, но конструктивного ответа так и не получил. Недавно в мое распоряжение поступил неттоп, который необходимо было превратить в веб-сервер. Памяти там - 4Gb, и я думал, - [Быстрая русификация консоли Ubuntu 10.10 Server](https://tokarchuk.ru/2010/12/08/русская-консоль-в-ubuntu/) - По-умолчанию (даже если выбирать русский язык при установке) консоль Ubuntu почему-то всё равно остается нерусифицированной. Возможно это бага, возможно просто отсутствие локали в пакете. На просторах интернета есть много решений данного вопроса, и я предлагаю вам пожалуй самое короткое из них. sudo apt-get install console-cyrillic sudo dpkg-reconfigure console-cyrillic Далее откроется псевдо-графический мастер, главное там выбрать - [Acer eRecovery без CD/DVD привода](https://tokarchuk.ru/2010/12/07/acer-erecovery-without-cd-or-dvd/) - Сейчас всё большее распространение получают нетоопы. Созданные на базе мобильных технологий, бесшумные компьютеры в компактном корпусе завоемывыют популярность. Ещё бы, ведь для офисных задач их вполне хватает, ещё и в некоторые игрушки можно поиграть (конечно Starcraft 2 вряд ли пойдёт). Другие же пользователи (в том числе и я) смотрят на неттопы совершено с другой стороны - [DQL to Raw SQL](https://tokarchuk.ru/2010/12/03/dql-query-to-raw-sql/) - Я довольно давно работаю с Doctrine ORM, и очень часто при отладке необходимо посмотреть, какой именно SQL запрос получается из DQL запроса. Для этого раньше я использовал $dql->getSqlQuery() вместе с $dql->getParams(). Первая команда отображает SQL-запрос плейсхолдерами ("?") вместо переменных, а вторая собственно отображает массив переменных. Приходится смотреть туда-сюда, чтобы сопоставить их. Ладно если запрос маленький, - [Подключение PHP-FPM и Memcached к Nginx](https://tokarchuk.ru/2010/11/26/connecting-php-fpm-and-memcached-to-nginx/) - На продакшен сервере у нас связка Nginx (отдает статику) + Apache (отдает динамику) + mod_php. Задумали отказаться от Apache, а заодно и подключить PHP в режиме FastCGI с помощью php-fpm, т.к. исследование показало прирост скорости. Итак, Nginx - фронт-энд на 80 порту. PHP-FPM - бекэнд на 9091 порту.Memcached на 11211 порту машины. Конфиг Nginx: # - [Автоматическое создание моделей из таблиц в Ruby on Rails 3](https://tokarchuk.ru/2010/11/26/import-legacy-data-in-rails/) - Очень часто бывает ситуация, когда имеется готовая структура БД, и необходимо сделать модели на её основе. Если таблиц 10, то это не проблема, а если больше, и они большие по структуре? Импорт можно сделать буквально за 5 минут! На данный момент есть несколько методик, которые позволяют импортировать структуру из бд. Они делятся на два типа: - [Оптимизация mysql](https://tokarchuk.ru/2010/11/25/оптимизация-mysql/) - В этой статье я хотел бы рассказать о приемах оптимизации MySQL. Многие из них очевидны, другие довольно необычны, но большей частью они тривиальны. 1. Один большой запрос или несколько маленьких. Очень часто бизнес-логика приложения требует загрузить сразу много связанных данных. Например это могут быть 10 товаров, отсортированных по дате, вместе (JOIN) со странами этих товаров, - [ZFConf Ukraine 2010 и MageConf 2010 Полная программа](https://tokarchuk.ru/2010/11/24/zfconf-ukraine-2010-and-mageconf-2010-full-program/) - Наконец-то стала доступна полная программа мероприятия! Для тех кто не в курсе небольшой анонс: 27го ноября в в Киеве пройдет бесплатная, международная, совместная конференция ZFConf Ukraine & MageConf. Цель конференции - объединить лучших специалистов PHP и Zend Framework Украины, России и других стран СНГ. ZFConf Ukraine – первая в Украине конференция по Zend Framework, проводится - [Pimcore CMS: Zend Framework + extJS](https://tokarchuk.ru/2010/11/24/pimcore-cms-zend-framework-extjs/) - Посмотрел тут результаты конкурса 2010 Open Source Awards. Там, скажу я вам очень много интересных разработок. Например, CMS система Pimcore на базе Zend Framework и extJS. Т.к. мы в компании тесно работаем с ZF, мне было интересно посмотреть реализацию работы со страницами и объектами в этой CMS. Далее я напишу, как создать первую страницу в - [Логическая задачка](https://tokarchuk.ru/2010/11/18/zadachka-kolduni/) - Тут товарищ задачку загадал. Было у великого султана 100 колдунов. Все они, конечно, были шарлатанами, и султан это заподозрил. Собрал он их и сказал: — Завтра поутру устроим вам проверку, кто настоящий колдун, а кто нет. Проверка будет такой. Выведут вас в поле, построят в ряд. Потом каждому на голову наденут колпак либо черного, либо - [3QNTP-Tank-B46DOS-D EAN и перегрев](https://tokarchuk.ru/2010/11/16/3qntp-tank-b46dos-d-ean-and-overheating/) - Недавно купили неттоп из сабжа, и обнаружил, что после двух минут работы он перегревается. При этом перстает работать клавиатура. Пробовал разные клавы, беспроводные и проводные - один фиг. Гуглил, смотрел на офсайте (на котором кроме одной красивой картинки ничего нет), смотрел мануалку на прилагаемом диске (1 листочек на китайском). После целого дня колупания с этим - [Настройка MD5 авторизации на Openfire](https://tokarchuk.ru/2010/11/12/md5-auth-at-openfire/) - Openfire (ранее известный как Wildfire Server и Jive Messenger) — это XMPP-сервер, написанный на Java и использующий двойное лицензирование под Apache License 2.0 и коммерческой лицензией. При установке, он по-умолчанию использует алгоритм хэширования паролей Blowfish. В свою очередь многие CMS-системы используют алгоритм MD5 для хэширования паролей пользователей. При интеграции Openfire и CMS возникает задача по - [Сравнительное тестирование apache+mod_php VS nginx+php5_fpm на Zend Framework приложении](https://tokarchuk.ru/2010/11/11/perfomance-test-apachemod_php-vs-nginxphp5_fpm-on-zf/) - Сейчас рассматриваю варианты увеличения производительности Zend Framework веб-приложения. Один из вариантов - это перевод веб-серера с Apache + mod_php на Nginx + php5-fpm Итак для просто ты сделал два теста. Тесты Первый (конкурентность 1): andrey@vaio:~$ ab -c 1 -n 10 http://site.new/ru/ This is ApacheBench, Version 2.3 Copyright 1996 Adam Twiss, Zeus Technology - [Асинхронная работа с MySQL в Ruby](https://tokarchuk.ru/2010/11/10/asynchronous-mysql-in-ruby/) - Ваш движок работает с MySQL? Скорее всего да. Тогда вы должны знать, что ваш код (будь это PHP или Ruby) исполняется последовательно. Формируется SQL-запрос, отправляется к базе, извлекаются данные, затем следующий запрос и т.д. А вы не думали, что можно ускорить ваше приложение, используя асинхронные запросы? Я посмотрел несколько материалов на эту тему в сети, - [Установка, настройка и тестирования Refinery CMS (Ruby on Rails)](https://tokarchuk.ru/2010/11/09/install-and-test-refinery-cms-on-rails/) - В этом посте я расскажу, как я ставил Refinery cms. Это первая CMS, которую мне удалось опробовать из тех, что доступны на Ruby on Rails, да и количество гемов для неё подкупает. Установка gem install refinerycms refinerycms path/to/my_new_app --database=mysql Когда на экране будет этап создания базы делаем Ctrl+C и прерываем установку, т.к. пароля мы ещё - [Быстрая установка Ruby on Rails 3 и Ruby из пакетов на Ubuntu](https://tokarchuk.ru/2010/11/08/fast-install-ruby-on-rails-3-from-packets-on-ubuntu/) - В этом посте я опишу установку Ruby on Rails и самого Ruby из пакетов. Это не в пример проще, чем установка его из исходников. К тому же пакеты проще администрировать. Установка производилась на чистой Ubuntu 10.10. В конце статьи будет одна строка для apt-get'а, которая сразу всё поставит, для тех кому лень читать. Думаю это - [Ruby VS PHP, Rails VS Zend Framework](https://tokarchuk.ru/2010/11/08/ruby-vs-php-rails-vs-zend-framework/) - Итак, в предыдущей заметке мы создали наше первое приложение. Какие выводы можно из этого сделать? Предлагаю обсуждение, что лучше для веб-разработки Ruby on Rails или Zend Framework. Понимаю, что из этого может вырасти холивар, но мне интересны конкретные аспекты этих фреймворков. И да, будем сравнивать правильно язык с языком (Ruby VS PHP), фреймфорк с фреймворком - [Создаем первое приложение в Ruby on Rails 3](https://tokarchuk.ru/2010/11/07/creating-first-application-at-ruby-on-rails-3/) - В этой статье я хочу рассказать, как создать простое приложение, работающее с базой данных MySQL в среде Ruby on Rails 3. Можно рассматривать этот материал, как пошаговое руководство для начинающих программистов Rails. Итак, для работы нам необходима установленные рельсы и rubygems. С последними у меня вчера была проблема, поэтому пришлось удалить пакет rubygems1.8 не понятно - [Установка поддержки GIT в NetBeans](https://tokarchuk.ru/2010/11/05/install-git-support-in-netbeans/) - Сегодня решил пощупать GIT, сначала поигрался с ним из консоли (спасибо хабру за статью). Потом решил найти себе какую-нибудь гуевину, чтобы с комфортом работать с GIT'ным репозитарием. Погуглив немного решил посмотреть, а есть ли что-то для NetBeans, чтобыкоммитить можно было бы прямо оттуда, не вылезая в консоль. Оказывается есть. Называется это чудо Nbgit, и представляет - [Установка Rmagick на Ubuntu](https://tokarchuk.ru/2010/11/04/install-rmagick-in-ubuntu/) - На днях работал с одним проектом, который требовал gem "rmagick". А он у меня не был установлен. Решил разместить алгоритм его установки, чтобы вы не наступали на эти грабли. При установки gem install rmagick у меня выскочило такое вот сообщение: andrey@vaio:~$ sudo gem install rmagick Building native extensions. This could take a while... ERROR: Error - [Ruby - Базовые типы данных](https://tokarchuk.ru/2010/11/02/ruby-base-data-types/) - Недавно я начал изучать язык Ruby и платформу Ruby on Rails. Первой статьей будет описание типов данных в Ruby. Данные любого типа в Ruby суть объекты тех или иных классов. Самые используемые встроенные типы данных: Fixnum (целые числа, меньшие 2^30), Bignum (целые числа, большие 2^30), Float (числа с плавающей запятой), Array (массивы), String (строки), Hash - [Печать документа Word в виде брошюры](https://tokarchuk.ru/2010/10/30/печать-документа-word-в-виде-брошюры/) - Иногда бывает актуально распечатать текст таким образом, чтобы из него можно было собрать брошюру. До сих пор для этой цели использовались внешние надстройки, например широко известный макрос А. Орлова " http://orlovs.pp.ru/ Пакет макрокоманд для верстки текста книжкой ". При этом, наверное, не все знают, что в последней версии Word 2003 имеется штатная аналогичная возможность. Вот - [CI сервер TeamCity: установка и настройка системы непрерывной интеграции для PHP](https://tokarchuk.ru/2010/10/26/ci-server-teamcity-setup/) - Одной из важных задач при разработке большого проекта является развертывание программного продукта. Как правило, чем больше и сложнее продукт тем сложнее будет и развертывание. Оно включает в себя несколько этапов: Подготовка к развертыванию. Определение переменных, путей и т.д. Получение исходного кода из репозитария, или обновление его. Для SVN-репозитариев это будет svn::update или svn::checkout. Установка необходимых - [NoSQL в MySQL: разгон MySQL до 750 000 запросов в секунду](https://tokarchuk.ru/2010/10/25/nosql-in-mysql-improve-mysql/) - Yoshinori Matsunobu 20 октября в своем блоге опубликовал интересную (на мой взгляд) статью – компания, в которой он работает разработала и успешно использует MySQL плагин, который позволяет обрабатывать более 750 тысяч запросов на вполне обычном железе. Решение – очень красивое, при этом позволяет использовать как обычные SQL запросы, так и достигать производительности, которая не доступна - [Apache Ant, резервное копирование и длинные пути файлов в Zend Framework](https://tokarchuk.ru/2010/10/16/apache-ant-backup-and-long-files-names-in-zend-framework/) - Очень часто перед очередным развертыванием веб-приложения встает задача по резервному копированию старой версии (на случай падения), чтобы если что, можно было бы откатиться до неё. Если для развертывания вы используете Apache Ant, то можно создать для него цель (target) и для резервирования данных. В примерах чаще всего предлагают следующий код: - [PHP DeadCode Detector: установка и настройка](https://tokarchuk.ru/2010/10/15/php-deadcode-detector-install-notices/) - * PHPDCD - это детектор неиспользуемого кода (Dead Code Detector) для PHP. Он сканирует PHP проект на предмет всех определенных функций и методов и сообщает о них как о неиспользуемых если из вызов не встречается хотя бы однажды. Автор: Sebastian Bergmann Официальный сайт: http://github.com/sebastianbergmann/phpdcd Официальный PEAR канал: pear.phpunit.de Текущая версия: 0.9.2 (beta) Ставится он очень - [Установка PHP_CodeBrowser](https://tokarchuk.ru/2010/10/14/php_codebrowser-install-ubuntu/) - PHP_CodeBrowser обеспечивает просмотр кода с синтаксической подсветкой, имеет богатые возможности по визуализации, может использовать отчеты от: phpunit, phpcpd, padawan, phpcs. Из этого обзора можно понять насколько инструмент перспективный. Автор: Mayflower GmbH Официальный сайт: http://github.com/mayflowergmbh/PHP_CodeBrowser Официальный PEAR канал: http://pear.phpunit.de/ Текущая версия: 0.1.3 (alpha) Для установки вам потребуется новая версия pear (1.9.1). В репозитариях Ubuntu до сих - [Сессии в БД и SET NAMES utf8 в Zend Framework](https://tokarchuk.ru/2010/10/13/sessions-in-db-and-utf8-zend-framework/) - Zend Framework очень хорош, на нём удобно строить большие системы, но уж очень он неповоротлив. У нас в системе есть несколько утилит, который вызываются через AJAX-запрос после загрузки страницы и делают что-нибудь полезное. Например, есть утилита которая подгружает варианты автодополнения при поиске по сайту, еще есть утилита, которая обновляет статусы пользователей (онлайн-офлайн) на странице. Вот - [Правильное зеркалирование сайта](https://tokarchuk.ru/2010/10/12/правильное-зеркалирование-сайта/) - Иногда бывает важно создать зеркало уже имеющегоса сайта. Например у вас есть сайт site.com и вы хотели бы сделать зеркало site2.com для него. Важно знать, что зеркала - полностью идентичные сайты. В качестве примера зеркал могут выступать сайты www.site.com и site.com Для того, чтобы сделать зеркало нужно прежде всего перенести весь контент на зеркало со - [Крякозябры при распаковке архивов Windows в Ubuntu](https://tokarchuk.ru/2010/10/11/крякозябры-при-распаковке-архивов-windows-в-u/) - Если после распаковки архивов, присланных вам по почте добрыми Windows пользователями, вы видите всякую ересь, то надо сделать следующее: sudo apt-get remove rar sudo apt-get install unrar По мотивам поста с хабра. - [Offline-версия сайта](https://tokarchuk.ru/2010/10/08/offline-site-loading/) - Иногда бывает нужно получить offline-версию сайта. Например, когда на выходные ты уезжаешь на дачу, где интернет ну совсем не ловится. В Ubuntu сделать это можно одной строкой: wget -m -k -K -E http://site.ru Пользователям Windows могу поповетовать скачать программу Teleport PRO. - [Сброс пароля на webmin](https://tokarchuk.ru/2010/10/05/reset-password-webmin/) - Может кому-нибудь пригодится. В Ubuntu сбросить пароль на webmin можно следующей командой: root@server# /usr/share/webmin/changepass.pl /etc/webmin root XXXXXX где XXXXXX - новый пароль - [Scrum? Поехали!](https://tokarchuk.ru/2010/10/01/lets-scrum/) - В нашей компании создается большой программный продукт. ПО тестируется, обнаруживаются новые баги, выкладываются тикеты. И всё это продолжается и продолжается. Иногда когда смотришь на Stream-ленту, кажется, что она бесконечна, ты делаешь один тикет, на его месте появляется ещё два. Так было до сегодняшнего дня. Итак, в начале немного теории. Scrum — это набор принципов, на которых - [Ubuntu One: как добавить компьютер](https://tokarchuk.ru/2010/09/28/ubuntu-one-how-to-add-computer/) - У меня возникла проблема, компьютер не добавлялся в "облако" Ubuntu One в Ubuntu 10.04. Нигде не было кнопки "Добавить компьютер". Решить проблему можно так. Закройте окна Ubuntu One и в терминале наберите: u1sdtool -q; killall ubuntuone-login; u1sdtool -c Откроектся броузер по-умолчанию (должна быть валидная сессия Ubuntu.com) с выбором имени компьютера. - [Установка Sun (Oracle) JDK вместо OpenJDK на Ubuntu 10.04](https://tokarchuk.ru/2010/09/28/replace-open-jdk-by-sunoracle-jdk-at-ubuntu-10-04/) - На днях, по совету Ильи Алшанетского (кстати, одного из разработчиков PHP) решил поставить phpStorm. Скачал и поставил её довольно быстро, но вот незадача, при запуске она писала мне сообщение: WARNING: You are launching IDE using OpenJDK Java Runtime. This is strictly unsupported due to numerous OpenJDK perfomance and graphical problems with GUI apps. Please install - [Экранирование строк в UPDATE запросах Doctrine](https://tokarchuk.ru/2010/09/23/quote-strings-in-dql-queries/) - С коллегой разбирали, почему не экранируются строки при UPDATE DQL-запросах. $q = Doctrine_Core::getTable('SomeModel')->getQueryObject() ->update('SomeModel model') ->set('block_name',$blockName) ->where('id=?', (int)$id); Так вот значение поля blockNamе не было обрамлено кавычками, в результате SQL-запрос не выполнялся. А дело было вот в чем, правильный синтаксис set() для экранирования такой: // If you just want to set the amount to a - [CAS: сервер приложений на C++ для веб-приложений](https://tokarchuk.ru/2010/09/13/cas/) - Попытки создания удобных и одновременно высокопроизводительных веб- инструментариев регулярно предпринимаются еще со времен использования первых CGI- сценариев. К сожалению, из-за высокой сложности разработки подобных систем лишь не- многие их них доводятся до состояния, пригодного для коммерческого использования. Прототип CAS был разработан в ноябре 2003 года в компании “НетБридж Сервисез” (Mail.ru). Представлял он собой монолитное приложение, - [Асинхронное программирование в PHP (phpDaemon: пристегните ремни — взлетаем)](https://tokarchuk.ru/2010/09/12/asynchronical-php/) - В этой статье я решил разместить выступление Василия Зорина на конференции Highload. В нём рассказывается об асинхронном программировании в PHP. Может после этой статьи многие передумают переходить на Node.JS и попробуют накодить что-нибудь асинхронное на PHP. Вы наверняка уже наслышаны о протоколе FastCGI, который служит каналом связи с приложением. Популярное применение — связь между Веб-сервером - [PHAR - упаковка PHP-приложений](https://tokarchuk.ru/2010/09/10/phar-упаковка-php-приложений/) - В ближайшее время должна быть выпущена версия PHP V5.3. Cерия статей Что нового в PHP V5.3" посвящена новым замечательным функциям, появившимся в этой версии. В части 1 рассматриваются изменения в версии PHP V5.3, относящиеся к объектно-ориентированному программированию и управлению объектами, в части 2 - лямбда-функции и замыкания, а в части 3 мы говорили о пространстве - [Установка phpDaemon + libevent на Ubuntu](https://tokarchuk.ru/2010/09/10/установка-phpdaemon-libevent-на-ubuntu/) - Зачем нам это надо можно понять из предыдущей статьи, теперь о том как нам всё это установить: 0. PHP должен быть собран с этим: PHP5 CLI >= 5.3 с поддержкой pcntl, shmop и sockets 1. На всякий случай удаляем старывй libevent (если его не было ничего страшного не будет). apt-get remove --purge libevent1 2. Качаем - [Про инкремент в UPDATE запросе Doctrine ORM](https://tokarchuk.ru/2010/09/10/set-update-increment-doctrin/) - Сегодня обнаружил с коллегой особенность при создании DQL-запроса. Оказывается конструкции вида $q = Doctrine_Query::create() ->update('Account') ->set('amount', 'amount+200') ->where('id > 200'); не срабатывали. А дело было как всегда в мелочи. В двух пробелах слева и справа от знака операции (+). Исправили на вариант, полностью аналогичный мануалу: $q = Doctrine_Query::create() ->update('Account') ->set('amount', 'amount + 200') ->where('id > - [True FastCGI для PHP - ускорение Symfony и Zend Framework](https://tokarchuk.ru/2010/09/09/true-fastcgi-php/) - Начиная с PHP 5.3, язык стал готов к работе в режиме True FastCGI. Я решил попробовать эту возможность на практике... Ну и вот что из этого вышло. В статье описана попытка использования технологии, сложности, которые пришлось преодолевать и некоторые бенчмарки, демонстрирующие возможный эффект перехода на True FastCGI. PHP и Javascript часто используются вместе, а это - [SphinxQL. Теперь Sphinx поддерживает SQL запросы к индексам!](https://tokarchuk.ru/2010/08/27/sphinxql/) - В этой статье будетрассказано о двух новых мега-фичах в Sphinx. Обе фичи добавлены в версии 0.9.9-rc2, опубликованной в начале апреля 2009го. Версия традиционно (слишком) стабильная, известных серьезных багов нету, тесты проходятся, итп. Отважные люди, а также коммерческие клиенты с контрактами про поддержку, уже успешно используют в продакшне, несмотря на отличный от «release» тег. 1я мега-фича. - [Сравнение PHP и NodeJS](https://tokarchuk.ru/2010/07/30/php-vs-nodejs/) - Нашел интересную табличку по сравнению PHP и NodeJS для применения в веб-разработке. Comparison (good, bad, solution) Apache, PHP node.js syntax Additional language to web standard ECMA script try to use common structures One language to rule them all = reuse parts of your framework on the client side strings 'line line' 'line\nline' or "line\n\ line" - [Технологии Facebook: Cassandra](https://tokarchuk.ru/2010/07/26/facebook-technologies-cassandra/) - Продолжаю публиковать материалы, связанные с высоконагруженными проектами. Первую статью цикла "Архитектура высоконагруженных проектов: Facebook" я опубликовал пару дней назад. Дальше я продолжу публиковать материалы о технологиях, которые используются в фейсбуке: HipHop, Haystack, BigPipe, Cassandra, Scribe, Hadoop, Hive, Thrift, Varnish, GateKeeper и другие. Эта статья посвящена Cassandra. Это перевод статьи, датированной 1м сентября 2009 года, следует - [Архитектура больших проектов: Facebook](https://tokarchuk.ru/2010/07/25/архитектура-больших-проектов-facebook/) - На том уровне, на котором работает Facebook, традиционные подходы к организации работы вебсайтов не работают вообще или, как минимум, не обеспечивают должной производительности. Огромная посещаемость проекта бросила вызов инженерам Facebook необходимостью поддерживать работоспособность сайта при почти полумиллиарде активных пользователей. Эта статья описывает программное обеспечение и техники, благодаря которым это стало возможно. Задачи Сайт Facebook имеет - [Вебинары по Zend Framework](https://tokarchuk.ru/2010/07/24/zend-framework-webinars/) - Сегодня вашему вниманию предлагаются несколько вебинаров доступных на сайте компании Zend. Данные вебинары, подготовленные экспертами в Zend Framework, помогут вам создавать насыщенные веб приложения и более еффективно решать проблемы, возникающие при программировании с использованием MVC каркаса от Zend. Ознакомление с диспетчером кластера серверов от Zend Новое в функциональности инструмента разработки PHP (PDT) v.2.2 и Eclipse - [Быстрый загрузчик классов Zend Framework](https://tokarchuk.ru/2010/07/24/zf-fast-autoloade/) - Позволяет максимально быстро загружать классы Zend Framework без использования require_once() или Yii::import(). Установка Расширение Распаковываем расширение в protected/extensions/. Zend Framework Копируем директорию Zend фреймворка в protected/vendors/. Также можно воспользоваться сервисом, вырезающим из ZF необходимый функционал. Вырезаем require_once из ZF Это необходимо для работы расширения и позволяет быстрее загружать классы ZF. Через поиск-замену в IDE: require_once - [CloudStack 2.1 Ubuntu Installation](https://tokarchuk.ru/2010/07/24/cloudstack-2-1-ubuntu-installation/) - Компания Cloud.com после двух лет разработки анонсировала доступность исходных текстов системы CloudStack, предназначенной для упрощения организации и управления работой приватной, гибридной или публичной cloud-инфраструктуры, доступной только внутри предприятия или нацеленной на предоставление публичного сервиса, похожего на Amazon EC2. В разработку системы было инвестировано более 17 млн. долларов. Разработка велась под руководством Sheng Liang, создателя виртуальной - [Что нас ожидает в Zend Framework 2 и Doctrine 2](https://tokarchuk.ru/2010/07/23/what-awaits-us-in-zend-framework-2-and-doctrine-2/) - Я, как Zend Framework (PHP) программист работаю в основном с такими инструментами как ZF и Doctrine. Поэтому пристально слежу за выпуском их новых версий. Думаю к концу года (пока это есть в планах) завершится разработка второй ветки Zend Framework. Итак, что же нас ждет в новой версии? Zend Framework 2.0 Использование пространств имен (namespaces) Пространство - [Новое в PHP 5.3 PHP Quebec 2008](https://tokarchuk.ru/2010/07/23/introducting-php-5-3-php-quebec-2008/) - Доклад Илья Алшанетского с конференции PHP Quebec 2008 [wp-pdf-view swf='http://tokarchuk.ru/wp-content/uploads/2010/07/php53.swf' /] - [Особенности триггеров в MySQL (SHOW TRIGGERS и SUPER PRIVELEGES)](https://tokarchuk.ru/2010/07/23/mysql-triggers-invisible-problem/) - На сервере возникла проблема такого плана. От имени пользователя root выполняем скрипт, который добавляет в БД триггеры. Потом другой пользователь выполняет команду SHOW TRIGGERS; и... ничего не видит. Но триггеры есть, мы можем посмотреть таблицу information_schema.TRIGGERS и увидеть их. Как же так получилось, что триггеры для пользователя стали невидимыми? Сначала я подумал, что дело в - [MySQLFS. Хранение чего угодно в MySQL](https://tokarchuk.ru/2010/07/23/mysqlfs-store-everything-in-mysql/) - Наткнулся тут на днях на замечательный проект. MySQLFS - пользовательская файловая система, основанная на FUSE, хранящая данные в БД MySQL. Сайт проекта: http://sourceforge.net/projects/mysqlfs/files/ Очень интересно было бы посмотреть схему хранения в БД (структуру таблиц), и проделать такой трюк. Попробовать сменить stortage engine на Memory, и протесить по скорости. А если добавить репликацию, то в теории - [Хранение PHP сессий в memcached: испытание на production сервере](https://tokarchuk.ru/2010/07/22/storing-php-sessions-in-memcache-troubles/) - Сегодня на работе выкатили свежую версию проекта на production-сервер. Посмотрели, потестили под одним юзером, всё нормально. Но потом наштестировщик, обнаружил, что постоянно начали отваливаться сессии, часто происходила подмена сессий, т.е. когда человек логиниться, то в его сессии лежат данные другого пользователя, а именно того, кто залогинился ранее. Я пробовал исследовать проблему со всех сторон, нашел, - [Eventr.com как смесь веб-технологий](https://tokarchuk.ru/2010/07/21/eventr-com-как-смесь-веб-технологий/) - Недавно состоялся запуск проекта Evantr.com. Коротко скажу, что по функционалу это социальный RSS-ридер, гибрид twitter и GoogleReader. Кстати, очень занятная получилась штука. Можно импортировать RSS к себе в ленту, добавлять в неё ленты друзей, и удобно читать всё это дело. Чем мне сразу понравился проект, так это тем, что разработчики не пытаются объять необъятное, а - [PHP for Android](https://tokarchuk.ru/2010/07/14/php-for-android/) - Анонсирован проект "PHP for Android" в рамках которого представлена система для выполнения на платформе Android приложений, написанных на языке PHP. В настоящий момент для телефонов на базе платформы Android подготовлен установочный APK-файл, интегрирующий поддержку PHP 5.3 в созданную разработчиками Google подсистему Android Scripting Environment (ASE). Исходные тексты разработки распространяются в рамках лицензии Apache. PHP-скрипты могут - [Работа с MySQL кластером в Doctrine](https://tokarchuk.ru/2010/07/14/работа-с-mysql-кластером-в-doctrine/) - В этой статье я хочу рассказать, как настроить Doctrine таким образом, чтобы использовать master-сервера для записи, а slave-сервера для чтения данных. Эта стратегия позволит добиться распределения нагрузки между серверами БД. Речь идет именно о нескольких серверах, на которых реплицируются базы, а не о ndbcluster, как некоторые могли бы подумать. Итак, сначала мы должны сконфигурировать все - [Тормоза при коннектах к MySQL на другом сервере](https://tokarchuk.ru/2010/07/14/тормоза-при-коннектах-к-mysql-на-другом-сер/) - У сайта вдруг начали появляться тормоза. Скрипт отарбатывал больше 10 секунд. Начали с коллегами копать и выяснили, что очень большое время занимает коннект к серверу БД. По 5 секунд на коннект, два коннекта = 10 секунд. Оказывается, это виноват резолв имен. Чтобы решить проблему прописали хосты с которых идут коннекты в /etc/hosts сервера БД, и - [eAccelerator и php Reflection](https://tokarchuk.ru/2010/07/13/eaccelerator-и-php-reflection/) - Оказывается метод ReflectionClass::getDocComment() выдает пустой массив, когда включен eAccelerator. Сам баг: http://eaccelerator.net/ticket/229 А решение простое, сконфигурировать его с параметром --with-eaccelerator-doc-comment-inclusion - [Исходники алгоритма шифрования Skype](https://tokarchuk.ru/2010/07/08/исходники-алгоритма-шифрования-skype/) - Один из алгоритмов шифрования Skype раскрыт. См. http://habrahabr.ru/blogs/infosecurity/98546/ - [Восстановление с Acer eRecovery](https://tokarchuk.ru/2010/07/08/восстановление-с-acer-erecovery/) - Попал тут недавно ко мне ноутбук, на котором сломалась Ось . Ноутбук был Acer и была там волшебная Acer eRecovery. Я понадеялся на то, что быстренько восстановлю ось. Но не тут то было. По Alt+F10 я загрузился со скрытого раздела, и вроде бы процесс пошел. Восстановил Windows на раздел Acer, перезагрузился, и всё. Система не - [Английский язык интерфейса в NetBeans 6.8](https://tokarchuk.ru/2010/07/08/английский-язык-интерфейса-в-netbeans-6-8/) - Установил себе NetBeans 6.8 По -умолчанию она встала с русским языком. Ничего не понял, перевод - просто кошмар. Решил сменить язык. Казалось бы, зайди в настройки да и меняй, ан нет. Всё облазил ничего нет. Полазил по сети, нашел всё-таки, как сменить язык. Для этого надо запустить NetBeans с параметром локали: --locale en:US Аналогично для - [Сессии в memcached с Zend Framework](https://tokarchuk.ru/2010/06/30/сессии-в-memcached-в-zend-framework/) - Столкнулся тут с очень странным багом. У нас в проекте реализовано централизованное хранение сессий. Т.е. разные бекэнды хранят сессии в одном месте. Это позволяет автоматически "узнавать" пользователя, вне зависимости от того с какого фронт-энда пришел запрос. При выключенном кэше сессии хранятся в БД MySQL, при включенном в Memcached. И вот тут то и начались глюки. - [Кроссбраузерные закруглённые уголки](https://tokarchuk.ru/2010/06/29/кроссбраузерные-закруглённые-уголки/) - Нашел тут интересную статью про методы закругления уголков для разных броузеров. http://web-standards.ru/articles/cross-browser-rounded-corners/ - [Импорт картинок из MS Word(.doc)](https://tokarchuk.ru/2010/06/29/импорт-картинок-из-ms-word-doc/) - Очень часто по работе приходится вытаскивать картинки из документов Microsoft Word. Раньше я делал это в лоб: принтскрин, буфер фотошоп. Но когда картинок в документе много, и они отсканены с хорошим разрешением, то такой способ уже не подходит. А решение оказалось простое. Открываем MS Word или OpenOffice Writer. Сохраняем наш файл в формат .docx (word - [Web science](https://tokarchuk.ru/2010/06/28/web-science/) - Нашел интересную картинку про Web-science. Подробнее вот здесь: http://letoosh.habrahabr.ru/blog/90639/#habracut - [Веб-приложения реального времени: jSocket,Node.JS, Redis, MQ.](https://tokarchuk.ru/2010/06/28/веб-приложения-реального-времени-jsocketnode-js-redi/) - Приветствую своих читателей. Сегодня мы продолжим начатую ранее тему о веб-приложениях реального времени и поговорим о серверной части. Буквально на днях по аське у меня состоялся разговор по теме онлайн игр и архитектуры движка для реалтайм игры. Оказалось, мы оба думали про одно и то же, а именно, использование NodeJS как сервера для ядра системы, - [Ученый доказал, что Бог существует](https://tokarchuk.ru/2010/06/27/ученый-доказал-что-бог-существует/) - 72-летний польский священник и математик Михаль Геллер получил в Нью-Йорке самую крупную научную премию за работу, которая предоставляет косвенные доказательства существования Бога. Геллер, являющийся также специалистом по космологии и философии, получил за свою работу 820 тыс. евро, сообщает Innovanews.ru. Теории профессора не только содержат доказательства существования Бога, но и заставляют усомниться в материальном существовании мира - [Пт и Пацаны - Олимпиада](https://tokarchuk.ru/2010/06/24/olimpiada/) - Друзья прикольную музыку про олимпиаду сочинили. PT_I_Patcani_Olimpiada.mp3 - [PHP Best practice](https://tokarchuk.ru/2010/06/24/php-best-practice/) - Здесь я собрал некоторые лучшие практики по PHP, которым следую (ну или буду следовать :-) Для итерации по массивам, их изменению и фильтрации - учимся использовать array_* функции в пхп. Особенно лямбда-функции: - [PHP includes caching](https://tokarchuk.ru/2010/06/24/php-includes-caching/) - Сейчас озадачен проблемой кэширования инклюдов. Взглянул на наш проект, более 150 инклюдов, и это только на Zend Framework. Нашел ссылку про __autoload с кэширование, сейчас копаю в этом направлении. Осталось понять, как автоматически парсить инклюды в исходном коде и вырезать их... По сути вот моя проблема. Возможные ходы по решению: In order to preserve the - [phpDocumentor и UTF-8 исходники](https://tokarchuk.ru/2010/06/24/phpdocumentor-и-utf-8-исходники/) - Как заставить phpDocumentator понимать русский текст в исходниках на UTF-8: 1. нужно править файл Setup.inc.php. В нем есть метод createDocs, где нужно исправить следующее - if (stristr($ret, "utf-8") !== "") + if (stristr($ret, "utf-8") === false) { $ret = utf8_decode($ret); } 2. Пройтись глобальной заменой по всем (*.*) файлам документатора и заменить charset=iso-8859-1'/> на charset=utf-8'/> - [Произвольный html-код в Zend_Form](https://tokarchuk.ru/2010/06/24/произвольный-html-код-в-zend_form/) - Возникла сегодня в процессе работы над одним проектом такая задача. Но нигде не смог найти решение. Можно обрамить форму с помощью Zend_Form_Decorator_HtmlTag, а вот просто вставить код нельзя. Zend_Form_Decorator_HtmlTag при создании получает переменную tag, например td, и выдает примерно следующее: ... А если убрать закрывающийся тэг, а из первого убрать треугольные скобки? Мысля пошла… И я - [Пагинация в Doctrine (Использование SQL_CALC_FOUND_ROWS)](https://tokarchuk.ru/2010/06/24/пагинация-в-doctrine-использование-sql_calc_found_rows/) - Начиная от версии 4.0 в СУБД MySQL появилась достаточно удобная возможность подсчета количества всех подходящих под запрос записей, когда количество записей ограничивается LIMIT’ом. При работе с поиском в БД, а так же при выборках из таблиц с большим количеством записей такой функционал просто необходим. В этой статье я расскажу, как можно использовать эту возможность в - [Точные имена свойств модели в Doctrine](https://tokarchuk.ru/2010/06/24/точные-имена-свойств-модели-в-doctrine/) - Эта статья посвящена точному(с учётом регистра) отображению названий колонок таблицы БД в свойства модели. Данная проблема актуальна для 1ой ветки ORM, т.к. во второй ветке она похоже уже решена. Но т.к. стабильным релизом на данный момент является версия 1.2.1 а версия 2 в стадии ALPHA4, то думаю, что эта проблема актуальная для многих пользователей ORM. - [Multi-Master репликация в MySQL](https://tokarchuk.ru/2010/06/24/multi-master-репликация-в-mysql/) - В данной статье будет рассмотрен процесс развертывания отказоустойчивой подсистемы баз данных на базе MySQL сервера. Перед прочтением советую прочитать эту статью. На работе встал вопрос по созданию зеркала сайта для другого региона (Азия). Т.к. время прохождения пакетов туда довольно большое, сказывается географическая удалённость, да и Великий Китайский Файервол тоже еще не отменили, то было решено создать - [Zend Server Cluster Manager](https://tokarchuk.ru/2010/06/24/zend-server-cluster-manager/) - Посмотрел вот ссылочку из Google-групп. https://www.zend.com/en/products/server-cluster-manager/scalability Теперь очень интересно, каков же реальный прирост, и что же на самом деле кроме обычного балансировщика предлагает нам Zend? - [Велкам!](https://tokarchuk.ru/2010/06/23/welcome/) - Ну что ж, решил завести свой блог. Удивительно, в веб-девелопменте уже 12 лет, а своего сайта так и нет. Сапожник без сапог :-) Всё как-то времени не хватало, обычно писал на хабре, но в последнее время стало трудно доносить мысли до народа. Напишишь хорошую статью - заминусуют, чтобы свои выше были. Хотя лучшего места для ## Pages - [Главная страница](https://tokarchuk.ru/) - Founder... Web developer... Backend-developer... DevOps... TeamLead... IT enthusiast... Andrey Tokarchuk Этот сайт - моя лаборатория, такая вот «IT-мастерская», в которой я размещаю статьи о разработке, эксперименты и просто интересные на мой взгляд мысли. Основная мотивация создания лаборатории - желание делиться знаниями. Ведь, как часто бывает - когда ты тратишь несколько часов, бьешься над какой-то задачей, - [Резюме](https://tokarchuk.ru/resume/) - Начинал свой трудовой опыт я с фриланса и администрирования сетей. Прошел путь от эникейшика до тимлида. Среди мест в которых я работал есть как небольшие фирмы, где админил компьютерные сети, так и серьезные НИИ и университеты в которых основной род занятий — проектирование и программирование. В данный момент основное место работы — компания-разработчик ПО. Образование - [Команда](https://tokarchuk.ru/team/) - Я работаю со многими талантливыми людьми. Но некоторых из них хочется выделить особо. Андрей НикольскийВеб-разработчик, PHP-программист, верстальщики специалист по 1С-Битрикс. Алексей ТачеевВеб-разработчик, PHP-программисттоварищ и коллега по работе.Максим ЧистовСистемный администратор, разработчик Pythonи любитель FreeBSDLinux Specialist, Linux Administrator Андрей Никольский Веб-разработчик Веб-разработчик, PHP-программист, верстальщик и специалист по 1С-Битрикс. Алексей Тачеев Веб-разработчик Веб-разработчик, PHP-программист товарищ и коллега по - [ThankYou](https://tokarchuk.ru/resume/thankyou/) - О компании ThankYou.ru — интернет-портал, распространяющий творческий контент по схеме «pay what you want» («плати, сколько хочешь»). В настоящее время на сайте работают музыкальный и литературный разделы. Музыку и книги, размещённые на сайте, можно свободно скачать, а затем, при желании, заплатить их правообладателям, нажав кнопку «Спасибо». Обязанности — Руководство разработкой портала.— Постановка и корректировка задач, - [МНИИТЭП](https://tokarchuk.ru/resume/mniitep/) - Об институте Открытое акционерное общество «Московский научно-исследовательский и проектный институт типологии, экспериментального проектирования» (ОАО МНИИТЭП) является ведущим институтом по формированию идеологии и методических основ проектирования объектов массового и экспериментального жилищно-гражданского строительства в городе Москве, Московской области, других регионах Российской Федерации и ближайшего зарубежья. Обязанности — Управление системой контроля версий (Git) для проектных репозитариев.— Внедрение и - [Скачать резюме](https://tokarchuk.ru/resume/download/) - Russian Скачать резюме на русском языке в формете PDF. Пароль от файла: tokarchuk Скачать PDF-файл (RU) English English CV is available on LinkedIN web-site. Please click the button below. Go to LinkedIn - [Услуги](https://tokarchuk.ru/services/) - Могу предложить вам следущие услуги. Разработка (веб-программирование) и дизайн Разработка дизайна сайта: сайт-визитка, корпоративный сайт, промо-сайт, и др.Разработка интернет и интранет сервисов для вашей компанииПроектирование информационной системыСистемное администрирование и поддержка серверовРазработка ПОПоисковая оптимизация и продвижение вашего сайта в Интернете Контент (информационное наполнение сайта) Копирайтинг - написание статей на заданную тематику (от 2000 символов).Рерайт - переписывание - [Обо мне](https://tokarchuk.ru/about/) - Родился и вырос в Москве, с детства увлекался компьютерами и высокими технологиями. В последствии мое увлечение перешло в профессиональное. Наверное это связано с природным любопытством. Просто пользоваться вещью мне было не интересно. Мне было интересно разобраться, как она работает, и это затягивает. Первое высшее образование по специальности "Вычислительные машины, комплексы, сети, системы" получил в Московском - [DaoBay - международная торговая площадка](https://tokarchuk.ru/resume/daobay/) - О компании Международный торговый B2B портал, торговая площадкаDaoBay.com – это международный B2B портал,который предлагает Вам следующие возможности:размещение товаров и услуг, конструктор сайтов, создание сайта компании, создание интернет-магазина, перевод входящих сообщений от зарубежных партнеров и покупателей,DaoBay Messenger для Онлайн общения с партнерами,покупка и продажа товаров. Обязанности Основная работа - проектирование и разработка высоконагруженной системы обработки запросов - [MainDoor - агрегатор риелторов](https://tokarchuk.ru/resume/maindoor/) - О проекте Worldwide Real Estate Web Portal. Мировой портал недвижимости Maindoor.ru. На портале были представлены риелторы со своими объектами недвижимости. Был полностью переработал внутренний кабинет риелтора. Обязанности — Бизнес-аналитика и разработка технических заданий программистам.— Планирование ИТ-стратегии компании, взаимодействие с внешними подрядчиками.— Эксплуатация инфраструктуры (веб-сервера, сервера БД, репозитарии кода, тикет-система, база знаний), мониторинг серверов.— Активное участие - [Контакты](https://tokarchuk.ru/contact/) - Email По любым вопросам можете писать на netandreus@gmail.com. Да, я ее читаю :) Facebook В Facebook меня можно найти по адресу https://facebook.com/netandreus Telegram Хотите пообщаться - я доступен в Telegram под ником @netandreus Отправить сообщение Я даю свое согласие на обработку моих персональных данных, в соответствии с Федеральным законом от 27.07.2006 года N152-ФЗ "О персональных - [Блог](https://tokarchuk.ru/blog/) - WordPress 04 Dec 2019 How to Make a WordPress Plugin Extensible Design 04 Dec 2019 6 Easy Steps to Better Icon Design UI 04 Dec 2019 Creative and Innovative Navigation Designs Design 04 Dec 2019 Why I Switched to Sketch For UI Design E-Commerce 04 Dec 2019 An Overview of E-Commerce Platforms E-Commerce 04 Dec - [Портфолио](https://tokarchuk.ru/portfolio/) - All Аудит Контентные сайты Корпоративные сайты Личные сайты Медицинский сайты Мероприятия Поддержка Порталы Разработка Форумы - [Согласие на обработку персональных данных](https://tokarchuk.ru/personal-info-agreement/) - Задавая вопрос специалисту и ставя галочку напротив графы «Я даю свое согласие на обработку моих персональных данных» на данном сайте, настоящим я добровольно и в своем интересе даю согласие на обработку указанных мной персональных данных, предоставленных мной лично и добровольно Оператору с целью получения общей информации. Настоящим также подтверждаю, что согласен на обработку моих персональных - [Портфолио](https://tokarchuk.ru/портфолио/) - ThankYou.ru - музыкально-литературный портал ThankYou.ru — интернет-проект, распространяющий креативный контент по схеме «плати, сколько считаешь нужным». Самая справедливая модель оплаты творческого труда — это когда поклонники благодарят своих кумиров напрямую, минуя многочисленных посредников. Мы верим, что с нашей и вашей помощью будут рождаться все новые прекрасные произведения. http://thankyou.ru Читать подробнее >> Body-Shape.su - массаж ## Projects - [Онлайн игра "Помехи в Эфире" (Ether noise)](https://tokarchuk.ru/project/ether-noise/) - Описание проекта Многопользовательская логическая онлайн-игра представляет собой инструмент для исследования когнитивных и коммуникативных процессов у подростков и юношей при решении игровых задач в цифровых средах.В основу игры легла диагностическая методика "Периметр", адаптированная под условия онлайн-игры. Игроки (2 или 4 человека) совместно заполняют геометрическими фигурами защитный контур игрового поля, при этом каждый участник имеет своё индивидуальное задание, известное только ему. Ключевые особенности — Многопользовательский режим — - [Игра "Балансир"](https://tokarchuk.ru/project/balancer/) - О проекте Многопользовательская образовательная онлайн-игра, разработанная для изучения принципов физического равновесия в игровой форме. Проект создан на основе методики совместной деятельности из работ В.В. Рубцова по социально-генетической психологии развивающего образования. Описание проекта Игровое поле представляет собой весы с двумя плечами. Два игрока должны совместно уравновесить весы, управляя гирьками в виде котиков. Каждый игрок контролирует только один параметр:— Левый игрок управляет расстоянием — перемещает груз между тремя позициями на своём плече весов— Правый игрок управляет массой — изменяет - [Образовательная платформа "Навигатор: Миры Л.С. Выготского"](https://tokarchuk.ru/project/vw/) - Описание проекта Веб-приложение для изучения основ культурно-исторической психологии через систему интерактивных видеолекций и тестирования. Проект разработан для МГППУ (Московского государственного психолого-педагогического университета) под руководством академика РАО В.В. Рубцова. О проекте Платформа предоставляет доступ к 42 видеолекциям по ключевым понятиям культурно-исторической психологии: сотрудничество, зона ближайшего развития, вращивание, знак, переживание, рефлексия. Система позволяет студентам (в том числе иностранным) последовательно осваивать теоретические основы научной школы Выготского. Функциональность — Просмотр видеолекций с интеграцией RuTube— - [AI чатбот "GamletAI"](https://tokarchuk.ru/project/gamlet-ai/) - Описание проекта GamletAI — это интеллектуальный чат-бот, помогающий учителям и руководителям театральных кружков организовывать занятия с подростками. Система содержит базу игр, упражнений и методических материалов для развития актёрского мастерства, коммуникативных навыков и эмоционального интеллекта.Проект реализован как полноценное веб-приложение с современной микросервисной архитектурой, полностью контейнеризированное в Docker. Технологический стек Frontend:— Vue.js 3 (Composition API)— TypeScript— PrimeVue (UI-фреймворк)— Pinia (state management)— Socket.IO (WebSocket-клиент)— Vite (сборка)Backend:— NestJS (Node.js фреймворк)— MongoDB + Mongoose— - [Cohere Ollama Reranker](https://tokarchuk.ru/project/cohere-ollama-reranker/) - Описание проекта REST API-сервис, выступающий мостом между клиентами Cohere API и локальным сервером Ollama. Позволяет использовать локальные модели для переранжирования документов (reranking), сохраняя полную совместимость с существующими интеграциями Cohere API.Сервис предназначен для AI-приложений, которым необходимо:— приватное переранжирование документов без отправки данных в облако— экономически эффективная альтернатива облачным сервисам ранжирования— интеграция локальных LLM-моделей в существующую инфраструктуру Ключевые особенности — Совместимость с Cohere API — полная поддержка формата запросов и ответов Cohere Rerank API— Интеграция с Ollama — бесшовная работа с - [ChildResearch](https://tokarchuk.ru/project/childresearch/) - О центре Современные дети и подростки отличаются от своих сверстников предыдущих поколений. Существующие различия являются закономерными, если исходить из того, что развитие и взросление протекают сегодня в принципиально иных культурно-исторических условиях. Особенности современной социальной ситуации связаны с широким распространением новых технологий, которые не только изменили все формы деятельности человека (включая общение, обучение и игру), но - [Мануальный терапевт](https://tokarchuk.ru/project/manual-gynecolog-net/) - Сайт под ключ. - [Body-Shape.su — массаж и остеопатия](https://tokarchuk.ru/project/body-shape-su/) - Body-Shape.ru — сайт группы остеопатов, которые оказывают услуги лечебного, спортивного массажа, кинезиотейпирования и лфк. Изначально ко мне обратились с просьбой «просто скопировать сайт», к которому не было доступа иначе, как по http. Естественно делать тупое копирование не хотелось, поэтому с нуля был создан данный сайт. - [DaoBay.com — международная торговая площадка](https://tokarchuk.ru/project/daobay/) - Руководство командой разработчиков, teamlead, SCRUM мастер, технический директор. Проектирование архитектуры системы, схемы БД, исследование и внедрение новых технологий для оптимизации сервиса. Разработка модулей системы и руководство командой программистов. Организация рабочего процесса, цикла разработки и развертывания. - [Heliotherm.ru — тепловые насосы](https://tokarchuk.ru/project/heliotherm-ru/) - Heliotherm.ru — сайт одного из лидеров в Европе по производству тепловых насосов для отопления загородного дома. Первоначально ко мне обратились с просьбой о поддержке этого сайта. В тот момент он использовал движок Joomla. Поработав какое-то время с ним мы приняли решение произвести миграцию проекта на WordPress. были портированы все статьи и посты, картинки и галерея, - [IHCIM — Хоккейный центр Игоря Мисько](https://tokarchuk.ru/project/ihcim/) - Создание сайта «под ключ». Дизайн, проектирование, верстка, программирование. - [Group-FBM.ru — Fornaci Briziarelli Marsciano](https://tokarchuk.ru/project/group-fbm/) - Создание сайта «под ключ». Дизайн, проектирование, верстка, программирование, создание моделей предметной области, создание каталога категорий продукции, каталога заводов, протфолио проектов, внутренних текстовых блоков и т.д. - [ThankYou.ru — музыкально-литературный портал](https://tokarchuk.ru/project/thankyou/) - ThankYou.ru — интернет-портал, распространяющий творческий контент по схеме «pay what you want» («плати, сколько хочешь»). В настоящее время на сайте работают музыкальный и литературный разделы. Музыку и книги, размещённые на сайте, можно свободно скачать, а затем, при желании, заплатить их правообладателям, нажав кнопку «Спасибо». Портал ThankYou.ru открылся в 2010 году.Первоначально на сайте работал только музыкальный - [MNIITEP - руководство управлением ИТ](https://tokarchuk.ru/project/mniitep-cio/) - Об институте Открытое акционерное общество «Московский научно-исследовательский и проектный институт типологии, экспериментального проектирования» (ОАО МНИИТЭП) является ведущим институтом по формированию идеологии и методических основ проектирования объектов массового и экспериментального жилищно-гражданского строительства в городе Москве, Московской области, других регионах Российской Федерации и ближайшего зарубежья. Обязанности — Управление системой контроля версий (Git) для проектных репозитариев.— Внедрение и - [Моспроект-3 - интеграция IP-телефонии холдинга](https://tokarchuk.ru/project/mosproekt_3_voip/) - О группе компаний ГК «Моспроект-3» – лидер по освоению подземного пространства и созданию современных систем внеуличного городского транспорта.Команда обладает компетенциями по реализации станций глубокого и мелкого заложения, уникальных наземных участков метро. Задачи На момент начала работы над проектом каждый из трех институтов холдинга имел свою телефонную станцию, свой внутренний диалплан и свои внешние номера. Чтобы - [MainDoor.ru - агрегатор риелторов](https://tokarchuk.ru/project/maindoor-ru-агрегатор-риелторов/) - Информация о проекте Портал о мировой недвижимости: последние новости, аналитика, каталог компаний и, безусловно, тысячи предложений об аренде и продаже недвижимости за рубежом и в России.Особенности проекта.- Автоматический импорт фидов данных- Автоматический прием платежей- Многофункциональный личный кабинет- Удобный поиск объектов недвижимости. TeamLead & Head developer Пришел в проект на должность TeamLead. Занимался всеми вопросами: закупка - [MainDoor - wallet](https://tokarchuk.ru/project/maindoor-wallet/) - Разработка системы "Кошелек" Разработал систему "Кошелек" для использования партнерами (риелторами) с подключением к платежным системам. PDF презентация maindoor_balance_presentation - [Tokarchuk Labs](https://tokarchuk.ru/project/tokarchuk-labs/) - Задача Необходимо было сделать редизайн сайта, актуализировать версии плагинов, а вслучае отсутствия актуальных версий - произвести их замену. - [GoForexRates](https://tokarchuk.ru/project/goforexrates/) - Задачи Было необходимо разработать отдельный микросервис, который бы отвечал бы за:— Получение исторических курсов валютных пар от провайдеров финаносвой информации.— Кэшировал бы исторические курсы во внутренней базе данных— Кэшировал бы исторические курсы в оперативной памяти для более быстрой выдачи (L1, L2 - система кэширования).— Получал бы и кэшировал на короткий срок real-time курсы валют с - [Союзное государство/ Корпорация Союз](https://tokarchuk.ru/project/souz/) - Разработка и дизайн сайта союзного государства России и Беларуси. Используемые технологии: PHP, Apache, Nginx - [Gynecolog.net (редизайн)](https://tokarchuk.ru/project/gynecolog-net-редизайн/) - Перевод сайта с движка Joomla на WordPress. Подбор и программирование соответствующих плагинов. - [Медицинский центр «Профессионал»](https://tokarchuk.ru/project/professional/) - Сайт под ключ. - [МИИТ](https://tokarchuk.ru/project/миит/) - Юзабилити тестирование сайта. - [Сонник](https://tokarchuk.ru/project/sonnik-womantalk-ru/) - Разработка и дизайн сайта-сонника. Впоследствии перенесено на Joomla. Используемые технологии: PHP, Apache, Nginx - [Тара-ГрадЪ](https://tokarchuk.ru/project/tara-grad-ru/) - Разработка и дизайн сайта агентства недвижимости «Тара-ГрадЪ», а также интранет сайта для риэлторов. Используемые технологии: PHP, Apache, Nginx - [Телфис — оператор связи](https://tokarchuk.ru/project/telfis-ru/) - Разработка сайта. - [Медицинский центр «Сет-Мед» (сайт set-med.su)](https://tokarchuk.ru/project/set-med-su/) - Сайт под ключ. - [Медицинский центр «Сет-Мед» (сайт set-med.ru)](https://tokarchuk.ru/project/set-med-ru-support/) - Системное администрирование. Поддержка сайта. - [Gynecolog.net (редизайн 2)](https://tokarchuk.ru/project/gynecolog-net-redesign-2/) - Стояла задача сделать сайт в более «презентационном» стиле и поменять цветовую гамму на более светлую. - [Калинов родник](https://tokarchuk.ru/project/fonteaqua_ru/) - Разработка дизайна сайта минеральной воды «Калинов родник». - [Викон-инвест](https://tokarchuk.ru/project/vikon-invest_ru/) - Разработка и дизайн сайта агентства недвижимости «Викон-инвест». Используемые технологии: PHP, Apache, Nginx - [ООО СКК Поло](https://tokarchuk.ru/project/skk_polo/) - Разработка и дизайн сайта строительной компании «Поло». Используемые технологии: PHP, Apache, Nginx - [Русская Геральдическая Коллегия (РГК)](https://tokarchuk.ru/project/русская-геральдическая-коллегия-ргк/) - Разработка дизайна сайта русской геральдической коллегии (РГК). Используемые технологии: PHP, Apache, Nginx - [Сайт о сексе](https://tokarchuk.ru/project/sex-womantalk-ru/) - Разработка дизайна сайта «Популярно о сексе». Используемые технологии: PHP, Apache, Nginx - [Ева-тест](https://tokarchuk.ru/project/eva-test/) - Разработка дизайна сайта прибора «Ева-тест». Используемые технологии: PHP, Apache, Nginx - [Рецепты для похудения](https://tokarchuk.ru/project/recept-womantalk-ru/) - Разработка дизайна сайта «Рейепты для похудения». Используемые технологии: PHP, Apache, Nginx - [Женский форум](https://tokarchuk.ru/project/forum-womantalk-ru/) - Разработка дизайна сайта женского форума. Используемые технологии: PHP, Apache, Nginx, IPB - [Катхат импекс](https://tokarchuk.ru/project/kathatimpex-com/) - Разработка дизайна сайта текстильной компании «Катхат импекс». Используемые технологии: PHP, Apache, Nginx - [Женский магазин (движок iShop)](https://tokarchuk.ru/project/shop-womantalk-ru/) - Разработка и дизайн сайта женского интернет-магазина. Использовался собственный движок iShop. Используемые технологии: PHP, Apache, Nginx - [LTS-Group](https://tokarchuk.ru/project/ltsgroup-ru/) - Разработка и дизайн сайта туристической компании «LTS-Group» Используемые технологии: PHP, Apache, Nginx - [Медицинский центр «Медика-менте»](https://tokarchuk.ru/project/medica-mente-ru/) - Сайт под ключ. - [Сауны Екатеринбурга](https://tokarchuk.ru/project/saunyekaterinburga-ru/) - Сайт под ключ. Дизайн, верстка, программирование модулей. - [Серебро Поноя](https://tokarchuk.ru/project/silverofponoi-ru/) - Сайт на авторской CMS ExLibris. Интеграция дизайна в шаблоны, разработка модулей. - [DolceNova — светодиодные люстры](https://tokarchuk.ru/project/dolcenova/) - Led-Lpo.ru — сайт-визитка компании по производству светодиодных люстр DolceNova. ри разработке дизайна сделан акцент на воздушных тонах и простоте. С сайтом интегрирован каталог продукции. Основные используемые технологии: Сайт прошел два этапа смены дизайна в связи с реорганизацией компании. Была проведена SEO оптимизация, внутренняя перелинковка.Был спланирован бюджет на контакстную рекламу и поисковое продвижение. За 3 месяца - [Завидово OPEN](https://tokarchuk.ru/project/завидово-open/) - Сайт под ключ. Подмосковный покерный турнир «Завидово OPEN». Использовалась CMS Exlibris. Дизайн, разработка, создание модулей. - [FitoKan.ru — Сайт доктора Кана](https://tokarchuk.ru/project/fitokan_ru/) - Сайт под ключ. Разработка персонального сайта доктора Кана. Занимается фитотерапией (лечением травами). Это подчеркивает цветовая палитра сайта в зеленых тонах и логотип. - [Бутик Времени — интернет-магазин часов](https://tokarchuk.ru/project/butik-vremeni/) - Создание интернет-магазина под ключ на платформе WooCommerce. Импорт более 3000 товаров из Прайс-листа в Excel. Экпорт товарных позиций в Яндекс-Маркет. - [MainDoor - новый личный кабинет для риэлторов](https://tokarchuk.ru/project/personal-cabinet/) - Личный кабинет риэлтора 1. Реализованы все пожелания product owner. В т.ч. касаемо терминологии (компании, карточки).2. Проведено тестирование кабинета модератором, бухгалтером и реализованы все их пожелания.3. Отошел от концепции разных кабинетов для пользователя, менеджера (intranet), риелтора. Сделал единый кабинет для всех типов пользователей, одно глобальное меню – которое адаптируется под конкретный случай. Как результат – код - [ЦМИСД](https://tokarchuk.ru/project/cmisd/) - О центре Современные дети и подростки отличаются от своих сверстников предыдущих поколений. Существующие различия являются закономерными, если исходить из того, что развитие и взросление протекают сегодня в принципиально иных культурно-исторических условиях. Особенности современной социальной ситуации связаны с широким распространением новых технологий, которые не только изменили все формы деятельности человека (включая общение, обучение и игру), но ## Categories - [WordPress](https://tokarchuk.ru/category/wordpress/) - [Без рубрики](https://tokarchuk.ru/category/без-рубрики/) - [PHP](https://tokarchuk.ru/category/php/) - [Асинхронное программирование](https://tokarchuk.ru/category/асинхронное-программирование-2/) - [Веб-разработка](https://tokarchuk.ru/category/веб-разработка/) - [Highload](https://tokarchuk.ru/category/highload-2/) - [Аппаратное обеспечение](https://tokarchuk.ru/category/аппаратное-обеспечение/) - [Мысли](https://tokarchuk.ru/category/мысли/) - [MySQL](https://tokarchuk.ru/category/mysql/) - [NoSQL](https://tokarchuk.ru/category/nosql/) - [Doctrine 2](https://tokarchuk.ru/category/doctrine-2-2/) - [CSS](https://tokarchuk.ru/category/css/) - [Системное администрирование](https://tokarchuk.ru/category/системное-администрирование/) - [Ubuntu](https://tokarchuk.ru/category/ubuntu/) - [Виртуализация](https://tokarchuk.ru/category/виртуализация/) - [Symfony 2](https://tokarchuk.ru/category/symfony-2/) - [IT конференции](https://tokarchuk.ru/category/it-конференции/) - [Системы контроля версий (VCS)](https://tokarchuk.ru/category/системы-контроля-версий-vcs/) - [Zend Framework](https://tokarchuk.ru/category/zend-framework/) - [Doctrine](https://tokarchuk.ru/category/doctrine/) - [Memcached](https://tokarchuk.ru/category/memcached/) - [NodeJS](https://tokarchuk.ru/category/nodejs-2/) - [Методологии разработки](https://tokarchuk.ru/category/методологии-разработки/) - [Ruby](https://tokarchuk.ru/category/ruby/) - [Ruby on Rails](https://tokarchuk.ru/category/ruby-on-rails/) - [XMPP (Jabber)](https://tokarchuk.ru/category/xmpp-jabber/) - [Я негодую](https://tokarchuk.ru/category/я-негодую/) - [Логические задачки](https://tokarchuk.ru/category/логические-задачки/) - [CMS](https://tokarchuk.ru/category/cms-2/) - [Аудит кода](https://tokarchuk.ru/category/code-review/) - [Юмор](https://tokarchuk.ru/category/юмор/) - [Sphinx](https://tokarchuk.ru/category/sphinx-2/) - [RVM](https://tokarchuk.ru/category/rvm/) - [SEO](https://tokarchuk.ru/category/seo/) - [Yaf](https://tokarchuk.ru/category/yaf/) - [Поисковые системы](https://tokarchuk.ru/category/поисковые-системы/) - [WordPress](https://tokarchuk.ru/category/wordpress-2/) - [AI](https://tokarchuk.ru/category/ai/) - [Искусственный интеллект](https://tokarchuk.ru/category/искусственный-интеллект/) ## Tags - [cms](https://tokarchuk.ru/tag/cms/) - [photoshop](https://tokarchuk.ru/tag/photoshop/) - [WordPress](https://tokarchuk.ru/tag/wordpress/) - [highload](https://tokarchuk.ru/tag/highload/) - [php](https://tokarchuk.ru/tag/php-2/) - [phpDaemon](https://tokarchuk.ru/tag/phpdaemon/) - [mongodb](https://tokarchuk.ru/tag/mongodb/) - [css](https://tokarchuk.ru/tag/css-2/) - [верстка](https://tokarchuk.ru/tag/верстка/) - [active directory](https://tokarchuk.ru/tag/active-directory/) - [vmware](https://tokarchuk.ru/tag/vmware/) - [vmware data protection](https://tokarchuk.ru/tag/vmware-data-protection/) - [memcached](https://tokarchuk.ru/tag/memcached-2/) - [nginx](https://tokarchuk.ru/tag/nginx/) - [docker](https://tokarchuk.ru/tag/docker/) - [Zend Framework](https://tokarchuk.ru/tag/zf/) - [mysql](https://tokarchuk.ru/tag/mysql-2/) - [doctrine](https://tokarchuk.ru/tag/doctrine-2/) - [произвольный код zend form](https://tokarchuk.ru/tag/произвольный-код-zend-form/) - [phpDocumentator](https://tokarchuk.ru/tag/phpdocumentator/) - [UTF-8](https://tokarchuk.ru/tag/utf-8/) - [оптимизация](https://tokarchuk.ru/tag/оптимизация/) - [no-sql](https://tokarchuk.ru/tag/no-sql/) - [nodejs](https://tokarchuk.ru/tag/nodejs/) - [redis](https://tokarchuk.ru/tag/redis/) - [наука](https://tokarchuk.ru/tag/наука/) - [doc](https://tokarchuk.ru/tag/doc/) - [docx](https://tokarchuk.ru/tag/docx/) - [сессии](https://tokarchuk.ru/tag/сессии/) - [Atom](https://tokarchuk.ru/tag/atom/) - [Evented I/O](https://tokarchuk.ru/tag/evented-io/) - [git](https://tokarchuk.ru/tag/git/) - [Google Reader](https://tokarchuk.ru/tag/google-reader/) - [jQuery](https://tokarchuk.ru/tag/jquery/) - [node.js](https://tokarchuk.ru/tag/node-js/) - [TTL](https://tokarchuk.ru/tag/ttl/) - [выводы](https://tokarchuk.ru/tag/выводы/) - [очереди](https://tokarchuk.ru/tag/очереди/) - [zend session savehandler dbtable](https://tokarchuk.ru/tag/zend-session-savehandler-dbtable/) - [сессииб session_save_handler_memcached](https://tokarchuk.ru/tag/сессииб-session_save_handler_memcached/) - [fuse](https://tokarchuk.ru/tag/fuse/) - [mysqlfs](https://tokarchuk.ru/tag/mysqlfs/) - [vfs](https://tokarchuk.ru/tag/vfs/) - [triggers](https://tokarchuk.ru/tag/triggers/) - [doctrine 2.0](https://tokarchuk.ru/tag/doctrine-2-0/) - [zend framework 2.0](https://tokarchuk.ru/tag/zend-framework-2-0/) - [zf 2.0](https://tokarchuk.ru/tag/zf-2-0/) - [zend franework](https://tokarchuk.ru/tag/zend-franework/) - [zf compiler](https://tokarchuk.ru/tag/zf-compiler/) - [adobe](https://tokarchuk.ru/tag/adobe/) - [best practise](https://tokarchuk.ru/tag/best-practise/) - [drupal](https://tokarchuk.ru/tag/drupal/) - [flash](https://tokarchuk.ru/tag/flash/) - [flex](https://tokarchuk.ru/tag/flex/) - [i18n](https://tokarchuk.ru/tag/i18n/) - [ibm](https://tokarchuk.ru/tag/ibm/) - [zend server](https://tokarchuk.ru/tag/zend-server/) - [zend_form](https://tokarchuk.ru/tag/zend_form/) - [вебинары](https://tokarchuk.ru/tag/вебинары/) - [facebook](https://tokarchuk.ru/tag/facebook/) - [open soiurce](https://tokarchuk.ru/tag/open-soiurce/) - [высокая нагрузка](https://tokarchuk.ru/tag/высокая-нагрузка/) - [новые технологии](https://tokarchuk.ru/tag/новые-технологии/) - [BigPipe](https://tokarchuk.ru/tag/bigpipe/) - [Cassandra](https://tokarchuk.ru/tag/cassandra/) - [GateKeeper](https://tokarchuk.ru/tag/gatekeeper/) - [Hadoop](https://tokarchuk.ru/tag/hadoop/) - [Haystack](https://tokarchuk.ru/tag/haystack/) - [HipHop](https://tokarchuk.ru/tag/hiphop/) - [Hive](https://tokarchuk.ru/tag/hive/) - [Scribe](https://tokarchuk.ru/tag/scribe/) - [Thrift](https://tokarchuk.ru/tag/thrift/) - [Varnish](https://tokarchuk.ru/tag/varnish/) - [sphinx](https://tokarchuk.ru/tag/sphinx/) - [sphinxQL](https://tokarchuk.ru/tag/sphinxql/) - [sql](https://tokarchuk.ru/tag/sql/) - [FastCGI](https://tokarchuk.ru/tag/fastcgi/) - [Symphony](https://tokarchuk.ru/tag/symphony/) - [dql](https://tokarchuk.ru/tag/dql/) - [set](https://tokarchuk.ru/tag/set/) - [update](https://tokarchuk.ru/tag/update/) - [libevent](https://tokarchuk.ru/tag/libevent/) - [асинхронное программирование](https://tokarchuk.ru/tag/асинхронное-программирование/) - [jar](https://tokarchuk.ru/tag/jar/) - [java](https://tokarchuk.ru/tag/java/) - [phar](https://tokarchuk.ru/tag/phar/) - [c++](https://tokarchuk.ru/tag/c/) - [экранирование](https://tokarchuk.ru/tag/экранирование/) - [JDK](https://tokarchuk.ru/tag/jdk/) - [JRE](https://tokarchuk.ru/tag/jre/) - [OpenJDK](https://tokarchuk.ru/tag/openjdk/) - [Oracle JDK](https://tokarchuk.ru/tag/oracle-jdk/) - [phpStorm](https://tokarchuk.ru/tag/phpstorm/) - [Sun JDK](https://tokarchuk.ru/tag/sun-jdk/) - [cloud](https://tokarchuk.ru/tag/cloud/) - [Ubuntu](https://tokarchuk.ru/tag/ubuntu/) - [ubuntu cloud](https://tokarchuk.ru/tag/ubuntu-cloud/) - [Ubuntu One](https://tokarchuk.ru/tag/ubuntu-one/) - [agile](https://tokarchuk.ru/tag/agile/) - [Scrum](https://tokarchuk.ru/tag/scrum/) - [гибкая разработка](https://tokarchuk.ru/tag/гибкая-разработка/) - [методология разработки](https://tokarchuk.ru/tag/методология-разработки/) - [скрам](https://tokarchuk.ru/tag/скрам/) - [webmin](https://tokarchuk.ru/tag/webmin/) - [сброс пароля](https://tokarchuk.ru/tag/сброс-пароля/) - [сервер](https://tokarchuk.ru/tag/сервер/) - [offline browser](https://tokarchuk.ru/tag/offline-browser/) - [offline site](https://tokarchuk.ru/tag/offline-site/) - [wget](https://tokarchuk.ru/tag/wget/) - [зеркалирование сайта](https://tokarchuk.ru/tag/зеркалирование-сайта/) - [копия сайта](https://tokarchuk.ru/tag/копия-сайта/) - [правильное зеркалирование](https://tokarchuk.ru/tag/правильное-зеркалирование/) - [сайт зеркало](https://tokarchuk.ru/tag/сайт-зеркало/) - [session_savehandler_dbtable](https://tokarchuk.ru/tag/session_savehandler_dbtable/) - [set names](https://tokarchuk.ru/tag/set-names/) - [сессии в БД](https://tokarchuk.ru/tag/сессии-в-бд/) - [pear](https://tokarchuk.ru/tag/pear/) - [php_CodeBrowser](https://tokarchuk.ru/tag/php_codebrowser/) - [dead code](https://tokarchuk.ru/tag/dead-code/) - [dead code detector](https://tokarchuk.ru/tag/dead-code-detector/) - [phpdcd](https://tokarchuk.ru/tag/phpdcd/) - [apache ant](https://tokarchuk.ru/tag/apache-ant/) - [long files paths](https://tokarchuk.ru/tag/long-files-paths/) - [HandlerSocket](https://tokarchuk.ru/tag/handlersocket/) - [плагин для mysql](https://tokarchuk.ru/tag/плагин-для-mysql/) - [ускорение mysql](https://tokarchuk.ru/tag/ускорение-mysql/) - [ci](https://tokarchuk.ru/tag/ci/) - [jetbrains](https://tokarchuk.ru/tag/jetbrains/) - [teamcity](https://tokarchuk.ru/tag/teamcity/) - [непрерывная интеграция](https://tokarchuk.ru/tag/непрерывная-интеграция/) - [Word](https://tokarchuk.ru/tag/word/) - [печать брошюры](https://tokarchuk.ru/tag/печать-брошюры/) - [печать в виде брошюры](https://tokarchuk.ru/tag/печать-в-виде-брошюры/) - [RoR](https://tokarchuk.ru/tag/ror/) - [Ruby](https://tokarchuk.ru/tag/ruby/) - [ruby data types](https://tokarchuk.ru/tag/ruby-data-types/) - [Ruby on Rails](https://tokarchuk.ru/tag/ruby-on-rails/) - [типы данных](https://tokarchuk.ru/tag/типы-данных/) - [Rmagick](https://tokarchuk.ru/tag/rmagick/) - [netbeans](https://tokarchuk.ru/tag/netbeans/) - [svn](https://tokarchuk.ru/tag/svn/) - [vcs](https://tokarchuk.ru/tag/vcs/) - [rails](https://tokarchuk.ru/tag/rails/) - [refinery](https://tokarchuk.ru/tag/refinery/) - [gem](https://tokarchuk.ru/tag/gem/) - [rubygems](https://tokarchuk.ru/tag/rubygems/) - [asynchronic mysql](https://tokarchuk.ru/tag/asynchronic-mysql/) - [asynchronous mysql](https://tokarchuk.ru/tag/asynchronous-mysql/) - [асинхронный mysql](https://tokarchuk.ru/tag/асинхронный-mysql/) - [apache](https://tokarchuk.ru/tag/apache/) - [mod_php](https://tokarchuk.ru/tag/mod_php/) - [php_fpm](https://tokarchuk.ru/tag/php_fpm/) - [im](https://tokarchuk.ru/tag/im/) - [jabber](https://tokarchuk.ru/tag/jabber/) - [openfire](https://tokarchuk.ru/tag/openfire/) - [xmpp](https://tokarchuk.ru/tag/xmpp/) - [интеграция](https://tokarchuk.ru/tag/интеграция/) - [3q](https://tokarchuk.ru/tag/3q/) - [qoo](https://tokarchuk.ru/tag/qoo/) - [неттоп](https://tokarchuk.ru/tag/неттоп/) - [задачи на смекалку](https://tokarchuk.ru/tag/задачи-на-смекалку/) - [Open Source Awards](https://tokarchuk.ru/tag/open-source-awards/) - [Pinecore](https://tokarchuk.ru/tag/pinecore/) - [zend framework cms](https://tokarchuk.ru/tag/zend-framework-cms/) - [оптимизация mysql](https://tokarchuk.ru/tag/оптимизация-mysql/) - [mageconf](https://tokarchuk.ru/tag/mageconf/) - [Ukraine](https://tokarchuk.ru/tag/ukraine/) - [zfconf](https://tokarchuk.ru/tag/zfconf/) - [zfconf 2010](https://tokarchuk.ru/tag/zfconf-2010/) - [acts_as_importable](https://tokarchuk.ru/tag/acts_as_importable/) - [legacy_data](https://tokarchuk.ru/tag/legacy_data/) - [trucker](https://tokarchuk.ru/tag/trucker/) - [php5-fpm](https://tokarchuk.ru/tag/php5-fpm/) - [acer](https://tokarchuk.ru/tag/acer/) - [revo](https://tokarchuk.ru/tag/revo/) - [virtual cd](https://tokarchuk.ru/tag/virtual-cd/) - [русификация](https://tokarchuk.ru/tag/русификация/) - [mmc](https://tokarchuk.ru/tag/mmc/) - [usb](https://tokarchuk.ru/tag/usb/) - [zend_cache_backend_memcached](https://tokarchuk.ru/tag/zend_cache_backend_memcached/) - [zend_cache_frontend_page](https://tokarchuk.ru/tag/zend_cache_frontend_page/) - [percona](https://tokarchuk.ru/tag/percona/) - [SSD](https://tokarchuk.ru/tag/ssd/) - [mysqlnd](https://tokarchuk.ru/tag/mysqlnd/) - [php_pdo](https://tokarchuk.ru/tag/php_pdo/) - [php_pdo_mysql](https://tokarchuk.ru/tag/php_pdo_mysql/) - [geforce](https://tokarchuk.ru/tag/geforce/) - [intel](https://tokarchuk.ru/tag/intel/) - [nvidia](https://tokarchuk.ru/tag/nvidia/) - [sony](https://tokarchuk.ru/tag/sony/) - [vaio](https://tokarchuk.ru/tag/vaio/) - [vpcz11V9](https://tokarchuk.ru/tag/vpcz11v9/) - [z11](https://tokarchuk.ru/tag/z11/) - [phpvirtualbox](https://tokarchuk.ru/tag/phpvirtualbox/) - [virtualbox](https://tokarchuk.ru/tag/virtualbox/) - [janrain](https://tokarchuk.ru/tag/janrain/) - [loginza](https://tokarchuk.ru/tag/loginza/) - [openid](https://tokarchuk.ru/tag/openid/) - [rpxnow](https://tokarchuk.ru/tag/rpxnow/) - [20000](https://tokarchuk.ru/tag/20000/) - [php-memcached](https://tokarchuk.ru/tag/php-memcached/) - [faq](https://tokarchuk.ru/tag/faq/) - [faq-tastik](https://tokarchuk.ru/tag/faq-tastik/) - [wp-paginate](https://tokarchuk.ru/tag/wp-paginate/) - [ext4](https://tokarchuk.ru/tag/ext4/) - [trim](https://tokarchuk.ru/tag/trim/) - [apc](https://tokarchuk.ru/tag/apc/) - [php-apc](https://tokarchuk.ru/tag/php-apc/) - [subversion](https://tokarchuk.ru/tag/subversion/) - [автозагрузчик](https://tokarchuk.ru/tag/автозагрузчик/) - [инсайт](https://tokarchuk.ru/tag/инсайт/) - [сложный код](https://tokarchuk.ru/tag/сложный-код/) - [firewall](https://tokarchuk.ru/tag/firewall/) - [vsftpd](https://tokarchuk.ru/tag/vsftpd/) - [bot](https://tokarchuk.ru/tag/bot/) - [crawler](https://tokarchuk.ru/tag/crawler/) - [spider](https://tokarchuk.ru/tag/spider/) - [tdd](https://tokarchuk.ru/tag/tdd/) - [unit tests](https://tokarchuk.ru/tag/unit-tests/) - [тестирование](https://tokarchuk.ru/tag/тестирование/) - [base auth](https://tokarchuk.ru/tag/base-auth/) - [htaccess](https://tokarchuk.ru/tag/htaccess/) - [htpasswd](https://tokarchuk.ru/tag/htpasswd/) - [foreign keys](https://tokarchuk.ru/tag/foreign-keys/) - [внешние ключи](https://tokarchuk.ru/tag/внешние-ключи/) - [ie6](https://tokarchuk.ru/tag/ie6/) - [port forwarding](https://tokarchuk.ru/tag/port-forwarding/) - [vboxsvr](https://tokarchuk.ru/tag/vboxsvr/) - [порты](https://tokarchuk.ru/tag/порты/) - [проброс портов](https://tokarchuk.ru/tag/проброс-портов/) - [code review](https://tokarchuk.ru/tag/code-review-2/) - [wtf](https://tokarchuk.ru/tag/wtf/) - [wtfm](https://tokarchuk.ru/tag/wtfm/) - [качество кода](https://tokarchuk.ru/tag/качество-кода/) - [bb code](https://tokarchuk.ru/tag/bb-code/) - [bb-код](https://tokarchuk.ru/tag/bb-код/) - [bbcode](https://tokarchuk.ru/tag/bbcode/) - [invision](https://tokarchuk.ru/tag/invision/) - [invision power board](https://tokarchuk.ru/tag/invision-power-board/) - [ipb](https://tokarchuk.ru/tag/ipb/) - [powerpoint](https://tokarchuk.ru/tag/powerpoint/) - [ppt](https://tokarchuk.ru/tag/ppt/) - [slideshare](https://tokarchuk.ru/tag/slideshare/) - [innodb](https://tokarchuk.ru/tag/innodb/) - [innodb_lock_wait_timeout](https://tokarchuk.ru/tag/innodb_lock_wait_timeout/) - [transaction lock](https://tokarchuk.ru/tag/transaction-lock/) - [transaction wait](https://tokarchuk.ru/tag/transaction-wait/) - [transactions](https://tokarchuk.ru/tag/transactions/) - [блокировка транзакций](https://tokarchuk.ru/tag/блокировка-транзакций/) - [транзакции](https://tokarchuk.ru/tag/транзакции/) - [велосипеды](https://tokarchuk.ru/tag/велосипеды/) - [рефакторинг](https://tokarchuk.ru/tag/рефакторинг/) - [фреймворк](https://tokarchuk.ru/tag/фреймворк/) - [eaccelerator](https://tokarchuk.ru/tag/eaccelerator/) - [xcache](https://tokarchuk.ru/tag/xcache/) - [кэширование](https://tokarchuk.ru/tag/кэширование/) - [phpunit](https://tokarchuk.ru/tag/phpunit/) - [zend_test](https://tokarchuk.ru/tag/zend_test/) - [учёные](https://tokarchuk.ru/tag/учёные/) - [lib_mysqludf_sys](https://tokarchuk.ru/tag/lib_mysqludf_sys/) - [udf](https://tokarchuk.ru/tag/udf/) - [user defined functions](https://tokarchuk.ru/tag/user-defined-functions/) - [geoip](https://tokarchuk.ru/tag/geoip/) - [MaxMind](https://tokarchuk.ru/tag/maxmind/) - [mod_geoip](https://tokarchuk.ru/tag/mod_geoip/) - [геолокация](https://tokarchuk.ru/tag/геолокация/) - [hello world](https://tokarchuk.ru/tag/hello-world/) - [pecl](https://tokarchuk.ru/tag/pecl/) - [php_hello](https://tokarchuk.ru/tag/php_hello/) - [extension](https://tokarchuk.ru/tag/extension/) - [RVM](https://tokarchuk.ru/tag/rvm/) - [bdd](https://tokarchuk.ru/tag/bdd/) - [di](https://tokarchuk.ru/tag/di/) - [ioc](https://tokarchuk.ru/tag/ioc/) - [rsrec](https://tokarchuk.ru/tag/rsrec/) - [rubymine](https://tokarchuk.ru/tag/rubymine/) - [DNS](https://tokarchuk.ru/tag/dns/) - [JSON](https://tokarchuk.ru/tag/json/) - [php_serialize](https://tokarchuk.ru/tag/php_serialize/) - [queuq](https://tokarchuk.ru/tag/queuq/) - [starling](https://tokarchuk.ru/tag/starling/) - [XML](https://tokarchuk.ru/tag/xml/) - [Zend_Queue](https://tokarchuk.ru/tag/zend_queue/) - [маршализация](https://tokarchuk.ru/tag/маршализация/) - [очереди сообщений](https://tokarchuk.ru/tag/очереди-сообщений/) - [сериализация](https://tokarchuk.ru/tag/сериализация/) - [хостинг](https://tokarchuk.ru/tag/хостинг/) - [iconv](https://tokarchuk.ru/tag/iconv/) - [readline](https://tokarchuk.ru/tag/readline/) - [перекодировка](https://tokarchuk.ru/tag/перекодировка/) - [ascii](https://tokarchuk.ru/tag/ascii/) - [base64](https://tokarchuk.ru/tag/base64/) - [unicode](https://tokarchuk.ru/tag/unicode/) - [utf](https://tokarchuk.ru/tag/utf/) - [свертка](https://tokarchuk.ru/tag/свертка/) - [port](https://tokarchuk.ru/tag/port/) - [skype](https://tokarchuk.ru/tag/skype/) - [commerceML](https://tokarchuk.ru/tag/commerceml/) - [dba](https://tokarchuk.ru/tag/dba/) - [dump](https://tokarchuk.ru/tag/dump/) - [dump-it](https://tokarchuk.ru/tag/dump-it/) - [e1](https://tokarchuk.ru/tag/e1/) - [kanso](https://tokarchuk.ru/tag/kanso/) - [memcache](https://tokarchuk.ru/tag/memcache/) - [xscript](https://tokarchuk.ru/tag/xscript/) - [xtradb](https://tokarchuk.ru/tag/xtradb/) - [екатеринбург](https://tokarchuk.ru/tag/екатеринбург/) - [уральская конференция](https://tokarchuk.ru/tag/уральская-конференция/) - [mercurial](https://tokarchuk.ru/tag/mercurial/) - [деплоилка](https://tokarchuk.ru/tag/деплоилка/) - [деплой](https://tokarchuk.ru/tag/деплой/) - [.NET](https://tokarchuk.ru/tag/net/) - [devconf](https://tokarchuk.ru/tag/devconf/) - [javascript](https://tokarchuk.ru/tag/javascript/) - [perl](https://tokarchuk.ru/tag/perl/) - [python](https://tokarchuk.ru/tag/python/) - [sphinxse](https://tokarchuk.ru/tag/sphinxse/) - [cache](https://tokarchuk.ru/tag/cache/) - [php-cli](https://tokarchuk.ru/tag/php-cli/) - [php-fpm](https://tokarchuk.ru/tag/php-fpm/) - [zend_cache](https://tokarchuk.ru/tag/zend_cache/) - [zend_cache_backend](https://tokarchuk.ru/tag/zend_cache_backend/) - [web-interface](https://tokarchuk.ru/tag/web-interface/) - [sitemap](https://tokarchuk.ru/tag/sitemap/) - [карта сайта](https://tokarchuk.ru/tag/карта-сайта/) - [cron](https://tokarchuk.ru/tag/cron/) - [seo](https://tokarchuk.ru/tag/seo-2/) - [gridfs](https://tokarchuk.ru/tag/gridfs/) - [mongo](https://tokarchuk.ru/tag/mongo/) - [nginx-gridfs](https://tokarchuk.ru/tag/nginx-gridfs/) - [fs](https://tokarchuk.ru/tag/fs/) - [gridfs-fuse](https://tokarchuk.ru/tag/gridfs-fuse/) - [gnu](https://tokarchuk.ru/tag/gnu/) - [linux](https://tokarchuk.ru/tag/linux/) - [1с](https://tokarchuk.ru/tag/1с/) - [битрикс](https://tokarchuk.ru/tag/битрикс/) - [kernel](https://tokarchuk.ru/tag/kernel/) - [tzdata](https://tokarchuk.ru/tag/tzdata/) - [zend framework 2](https://tokarchuk.ru/tag/zend-framework-2/) - [yaf](https://tokarchuk.ru/tag/yaf-2/) - [распределённые системы](https://tokarchuk.ru/tag/распределённые-системы/) - [Облачные вычисления](https://tokarchuk.ru/tag/облачные-вычисления/) - [composer](https://tokarchuk.ru/tag/composer/) - [symfony](https://tokarchuk.ru/tag/symfony/) - [symfony 2](https://tokarchuk.ru/tag/symfony-2-2/) - [odm](https://tokarchuk.ru/tag/odm/) - [orm](https://tokarchuk.ru/tag/orm/) - [nosql](https://tokarchuk.ru/tag/nosql-2/) - [frameworks day](https://tokarchuk.ru/tag/frameworks-day/) - [mysql 5.6](https://tokarchuk.ru/tag/mysql-5-6/) - [веб-сервисы](https://tokarchuk.ru/tag/веб-сервисы/) - [сокращалка ссылок](https://tokarchuk.ru/tag/сокращалка-ссылок/) - [сокращалка урлов](https://tokarchuk.ru/tag/сокращалка-урлов/) - [pcntl_sockets](https://tokarchuk.ru/tag/pcntl_sockets/) - [сигналы](https://tokarchuk.ru/tag/сигналы/) - [сокеты](https://tokarchuk.ru/tag/сокеты/) - [backups](https://tokarchuk.ru/tag/backups/) - [бекапы](https://tokarchuk.ru/tag/бекапы/) - [wamp](https://tokarchuk.ru/tag/wamp/) - [websocket](https://tokarchuk.ru/tag/websocket/) - [websockets](https://tokarchuk.ru/tag/websockets/) - [mail](https://tokarchuk.ru/tag/mail/) - [sendmail](https://tokarchuk.ru/tag/sendmail/) - [диссер](https://tokarchuk.ru/tag/диссер/) - [к.т.н.](https://tokarchuk.ru/tag/к-т-н/) - [кандидаская диссертация](https://tokarchuk.ru/tag/кандидаская-диссертация/) - [яндекс](https://tokarchuk.ru/tag/яндекс/) - [яндекс остров](https://tokarchuk.ru/tag/яндекс-остров/) - [яндекс острова](https://tokarchuk.ru/tag/яндекс-острова/) - [devfonf 2013](https://tokarchuk.ru/tag/devfonf-2013/) - [pinba](https://tokarchuk.ru/tag/pinba/) - [pinboard](https://tokarchuk.ru/tag/pinboard/) - [Мониторинг](https://tokarchuk.ru/tag/мониторинг/) - [отладка](https://tokarchuk.ru/tag/отладка/) - [openvz](https://tokarchuk.ru/tag/openvz/) - [vesta](https://tokarchuk.ru/tag/vesta/) - [vesta hosting panel](https://tokarchuk.ru/tag/vesta-hosting-panel/) - [vestacp](https://tokarchuk.ru/tag/vestacp/) - [bluz](https://tokarchuk.ru/tag/bluz/) - [fwdays](https://tokarchuk.ru/tag/fwdays/) - [Phalcon](https://tokarchuk.ru/tag/phalcon/) - [phalconphp](https://tokarchuk.ru/tag/phalconphp/) - [rasmus lerdorf](https://tokarchuk.ru/tag/rasmus-lerdorf/) - [symfony2](https://tokarchuk.ru/tag/symfony2/) - [volt](https://tokarchuk.ru/tag/volt/) - [yii](https://tokarchuk.ru/tag/yii/) - [zephyr](https://tokarchuk.ru/tag/zephyr/) - [devconf 2014](https://tokarchuk.ru/tag/devconf-2014/) - [kerberos](https://tokarchuk.ru/tag/kerberos/) - [mod_auth_kerb](https://tokarchuk.ru/tag/mod_auth_kerb/) - [otrs](https://tokarchuk.ru/tag/otrs/) - [sso](https://tokarchuk.ru/tag/sso/) - [windows](https://tokarchuk.ru/tag/windows/) - [hp](https://tokarchuk.ru/tag/hp/) - [microserver](https://tokarchuk.ru/tag/microserver/) - [d-link](https://tokarchuk.ru/tag/d-link/) - [dfl-260e](https://tokarchuk.ru/tag/dfl-260e/) - [dlink](https://tokarchuk.ru/tag/dlink/) - [Mate](https://tokarchuk.ru/tag/mate/) - [mate-expo](https://tokarchuk.ru/tag/mate-expo/) - [дополненная реальность](https://tokarchuk.ru/tag/дополненная-реальность/) - [custom status](https://tokarchuk.ru/tag/custom-status/) - [editflow](https://tokarchuk.ru/tag/editflow/) - [pods](https://tokarchuk.ru/tag/pods/) - [kvm](https://tokarchuk.ru/tag/kvm/) - [proxmox](https://tokarchuk.ru/tag/proxmox/) - [quemu](https://tokarchuk.ru/tag/quemu/) - [virtualization](https://tokarchuk.ru/tag/virtualization/) - [gpo](https://tokarchuk.ru/tag/gpo/) - [3d](https://tokarchuk.ru/tag/3d/) - [hi-tech](https://tokarchuk.ru/tag/hi-tech/) - [tesla](https://tokarchuk.ru/tag/tesla/) - [tesla motors](https://tokarchuk.ru/tag/tesla-motors/) - [принтеры](https://tokarchuk.ru/tag/принтеры/) - [devconf 2015](https://tokarchuk.ru/tag/devconf-2015/) - [hyper-v](https://tokarchuk.ru/tag/hyper-v/) - [huawei](https://tokarchuk.ru/tag/huawei/) - [storewize](https://tokarchuk.ru/tag/storewize/) - [v3700](https://tokarchuk.ru/tag/v3700/) - [ipsec](https://tokarchuk.ru/tag/ipsec/) - [mikrotik](https://tokarchuk.ru/tag/mikrotik/) - [vpn](https://tokarchuk.ru/tag/vpn/) - [vdp](https://tokarchuk.ru/tag/vdp/) - [cisco](https://tokarchuk.ru/tag/cisco/) - [cisco 6921](https://tokarchuk.ru/tag/cisco-6921/) - [cisco 7821](https://tokarchuk.ru/tag/cisco-7821/) - [sip](https://tokarchuk.ru/tag/sip/) - [joomla](https://tokarchuk.ru/tag/joomla/) - [php 5.2](https://tokarchuk.ru/tag/php-5-2/) - [installing php 7](https://tokarchuk.ru/tag/installing-php-7/) - [php 7 debian](https://tokarchuk.ru/tag/php-7-debian/) - [php 7 mysql](https://tokarchuk.ru/tag/php-7-mysql/) - [php 7 ubuntu](https://tokarchuk.ru/tag/php-7-ubuntu/) - [php-7](https://tokarchuk.ru/tag/php-7/) - [php7](https://tokarchuk.ru/tag/php7/) - [phpbrew](https://tokarchuk.ru/tag/phpbrew/) - [ubuntu php 7 install](https://tokarchuk.ru/tag/ubuntu-php-7-install/) - [бенчмарки php 7](https://tokarchuk.ru/tag/бенчмарки-php-7/) - [тесты php 7](https://tokarchuk.ru/tag/тесты-php-7/) - [установить php 7](https://tokarchuk.ru/tag/установить-php-7/) - [devconf-2016](https://tokarchuk.ru/tag/devconf-2016/) - [vsphere](https://tokarchuk.ru/tag/vsphere/) - [windows 10](https://tokarchuk.ru/tag/windows-10/) - [dude](https://tokarchuk.ru/tag/dude/) - [snmp](https://tokarchuk.ru/tag/snmp/) - [the dude](https://tokarchuk.ru/tag/the-dude/) - [coreos](https://tokarchuk.ru/tag/coreos/) - [fleet](https://tokarchuk.ru/tag/fleet/) - [systemd](https://tokarchuk.ru/tag/systemd/) - [big data](https://tokarchuk.ru/tag/big-data/) - [gitlab](https://tokarchuk.ru/tag/gitlab/) - [gitlab-ci](https://tokarchuk.ru/tag/gitlab-ci/) - [memory sensor](https://tokarchuk.ru/tag/memory-sensor/) - [prtg](https://tokarchuk.ru/tag/prtg/) - [bitbucket](https://tokarchuk.ru/tag/bitbucket/) - [nat](https://tokarchuk.ru/tag/nat/) - [xdebug](https://tokarchuk.ru/tag/xdebug/) - [codeception](https://tokarchuk.ru/tag/codeception/) - [qa](https://tokarchuk.ru/tag/qa/) - [selenium](https://tokarchuk.ru/tag/selenium/) - [backup](https://tokarchuk.ru/tag/backup/) - [bitvise](https://tokarchuk.ru/tag/bitvise/) - [mysqlbackup](https://tokarchuk.ru/tag/mysqlbackup/) - [ssh](https://tokarchuk.ru/tag/ssh/) - [dell](https://tokarchuk.ru/tag/dell/) - [dell-r210](https://tokarchuk.ru/tag/dell-r210/) - [админство](https://tokarchuk.ru/tag/админство/) - [manticore](https://tokarchuk.ru/tag/manticore/) - [мосэнергосбыт](https://tokarchuk.ru/tag/мосэнергосбыт/) - [mosenergosbyt](https://tokarchuk.ru/tag/mosenergosbyt/) - [sentry](https://tokarchuk.ru/tag/sentry/) - [error tracking](https://tokarchuk.ru/tag/error-tracking/) - [whatsapp](https://tokarchuk.ru/tag/whatsapp/) - [LLM](https://tokarchuk.ru/tag/llm/) - [netbird](https://tokarchuk.ru/tag/netbird/) - [vscode](https://tokarchuk.ru/tag/vscode/) - [Azure](https://tokarchuk.ru/tag/azure/) - [AI](https://tokarchuk.ru/tag/ai/) - [AI Tinkerers](https://tokarchuk.ru/tag/ai-tinkerers/) - [RDP](https://tokarchuk.ru/tag/rdp/) - [service desk](https://tokarchuk.ru/tag/service-desk/) - [helpdesk](https://tokarchuk.ru/tag/helpdesk/) - [obsidian](https://tokarchuk.ru/tag/obsidian/) - [evernote](https://tokarchuk.ru/tag/evernote/) ## Portfolio Categories - [Порталы](https://tokarchuk.ru/portfolio/portals/) - [Корпоративные сайты](https://tokarchuk.ru/portfolio/enterprise/) - [Мероприятия](https://tokarchuk.ru/portfolio/events/) - [Личные сайты](https://tokarchuk.ru/portfolio/personal/) - [Разработка](https://tokarchuk.ru/portfolio/webdev/) - [Форумы](https://tokarchuk.ru/portfolio/forums/) - [Поддержка](https://tokarchuk.ru/portfolio/support/) - [Аудит](https://tokarchuk.ru/portfolio/audit/) - [Контентные сайты](https://tokarchuk.ru/portfolio/content-sites/) - [Медицинский сайты](https://tokarchuk.ru/portfolio/medical/) - [Онлайн-игры](https://tokarchuk.ru/portfolio/онлайн-игры/) - [Образовательные платформы](https://tokarchuk.ru/portfolio/образовательные-платформы/) - [AI (Искусственный Интеллект)](https://tokarchuk.ru/portfolio/ai-искусственный-интеллект/)