Читаете ли вы блог Хабр Карьеры? Если да — оцените, как мы справляемся. А если нет — расскажите, что читаете для развития карьеры. Пройти опрос (займет 5-7 минут)
Профессиональные навыки
ООПPHPMySQLNginxLinuxJavaScriptGit
Участие в профессиональных сообществах
Опыт работы
Свои проэкты
Домодедово
Сентябрь 2010 — Октябрь 2018 (8 лет и 2 месяца)

На волне начала программирования хочется что-то делать, экспериментировать, был создан сайт родного города www.domodedovo-city.ru. Развернут от был на движке LDU 7.02. В дальнейшем сначала были какие-то доделки вроде добавления плагина для поиска работы (размещение вакансий и резюме). Это был год 2005

В 2006 году, с ростом популярности сайта (просто потому что никаких аналогов не было) потребовалась отдельная доска объявлений, т. к. темы на форуме не справлялись с такой задачей. Купил готовый «скрипт» доски объявлений – получилось очень плохо, результат описал отдельно: https://searchengines.guru/showthread.php?t=90064 По итогу пришлось заново написать доску объявлений. Для авторизации использовать учетные данные основного сайта.

После ухода с последнего места работы (Правда.Ру) решил сделать для сайта справочник, в дальнейшем эта идея немного видоизменилась. Но справочник таки был реализован. Началась реализация справочника уже так же на onPHP (затем на него пришлось переписать основной сайт и доску объявлений – т.к. использовалась одна БД, те же учетные данные пользователей).

 До справочника назрело обновление форума, версия из движка давно морально устарела. Т. к. было уже несколько связанных между собой проектов и движок переписан на onPHP – добавление форума и сохранение данных пользователей казалось не тривиальной задачей. В итоге запилил форум на onPHP сам, который до сих пор и работает.

В какой-то момент назрело на сайте так же систему личных сообщений. В процессе переделки взгляд упал на node.js. В результате вместо личных сообщений появились «диалоги» по примеру ВК. На двоих или групповые. Сообщения отображаются сразу на странице, так же отображается индикация если кто-то из собеседников набирает сообщение.

В справочник можно добавить компанию самостоятельно, при добавлении создается домен третьего уровня – можно его использовать для простого сайта компании. С таким же адресом создается почта в домене (реализовано на API Яндекс почта для домена). Есть редактор страниц. К компании можно привязать отдельный шаблон. Компании структурированы по категориям и адресам. Отдельным городам можно привязывать свои домены – получится самостоятельный справочник города, например справочникдомодедово.рф

Проект начинался с виртуального хостинга, затем по мере роста переезд на VPS. Затем и этих ресурсов стало не хватать, не хватало так же свободы для творчества. Был переезд уже на свой сервер, настройка всего на нем с нуля: Debian, nginx, PHP, MySQL, Memcached, git. Написал скрипт автоматических бэкапов раз в сутки на удаленный FTP сервер. Для отправки писем с сайта был поднят и настроен Postfix, потом прикрутил для писем DKIM, SPF, DMARC.

В 2018 году расстался со всеми проектами разом, т.к. поддерживать их было довольно сложно. А глобальные конкуренты наступали по всем фронтам )

PHPMySQLJavaScriptLinuxNode.jsООПGitNginxMemcacheDebian
ЗАО Правда.Ру
Москва
веб программист
Июль 2008 — Июль 2010 (2 года и 1 месяц)

Крупное интернет-издание со множеством сопутствующих сайтов пришло к мнению что им необходимо в корне все поменять на своем сайте. Старая версия просто не справлялась с большим потоком посетителей и работой редакторов. Был с нуля создан IT отдел по работам над сайтом. Я пришел в команду чуть позже. Именно здесь уже была очень сильные коллеги, которые многому научили, показали. За основу был взят самописный фреймворк onPHP этих ребят с предыдущей работы. Основной БД здесь было решено сделать PostgreSQL. Это было мое первое с ней знакомство. У проекта было множество сопутствующих небольших сайтов – переделку было решено начинать с них.

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

• medpulse.ru – как пример одного из сайтов, переписанных и запущенных на новой логике.

После реализации проекта писали скрипты для импорта/переноса данных из старой базы в новую. При необходимости пересоздавались картинки на новые размеры. Если менялись у статей адреса – делали таблицу и скрипты мапинга, что бы при переходе по старым ссылкам или из поисковиков происходила корректная переадресация на новые адреса и не было битых ссылок.

• politonline.ru – как еще один пример проекта с одной базой, но сильно видоизмененной логикой. Здесь были добавлены различные сборы и анализ постов из ЖЖ с возможностью формировать из этого сюжеты и дополнять комментариями. Потом проект еще сильно развивался и изменялся.

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

Это был очень полезный опыт, здесь я познакомился с фреймворками в принципе, с командной разработкой, системами управления версий сначала CVS, а затем и GIT. Использование nginx (после этого вообще перестал использовать Apache), Memcached и прочие интересные штуки.

ООПPHPMySQLJavaScriptGitLinuxPostgreSQLNginxAjaxJQuery
ЗАО Комэнерго
Москва
веб программист
Июль 2006 — Июль 2008 (2 года и 1 месяц)

Владелец крупной компании в энергетическом секторе Москвы решил попробовать силы в интернет проектах. А именно была идея реализовать блог – платформу ничуть не хуже ЖЖ. Была набрана команда из нескольких программистов, верстальщика и дизайнера.

• presscom.org – бесплатный сервис журналов. Изначально проект был задуман для создания некоторого числа журналов с редакторским составом, наполнятся который будет из постов пользователей блогов. В дальнейшем проект трансформировался в сервис журналов, где каждый желающий может завести себе журнал. Для привлечения пользователей и поднятия интереса к журналам проводятся конкурсы среди пользовательских журналов. Но как модно сейчас говорить проект «не взлетел».

В момент работы над сервисом журналов появилась идея сделать свое независимое СМИ. Была приглашена целая команда, начиная с главного редактора и заканчивая журналистами. Для них сделали отдельную интернет-газету.

• izbrannoe.ru (информация осталась только здесь http://www.lipka.ru/portfolio/izbrannoe/ ) – Интернет газета «Избранное». В корне отличающаяся от прочих информационных ресурсов не освещением происходящих событий в России и в Мире, а предоставление аналитического материала на эти события. (Более подробно в разделе о газете). Над проектом работал с самого начала в команде с дизайнером. После определения с целями и задачами проекта была начата разработка с копии репозитория движка журналов и на этой основе начал развиваться проект. Изначально движок был тот же, но после разделения сильно ушел в сторону от изначальных журналов. Все страницы сайта состоят из модулей, которые можно различным образом компоновать на странице для достижения желаемого результата отображения, при необходимости модули дописываются. Функционал по конфигурации модулей вынесен в настройки через веб интерфейс. Для статей прикрепляются изображения определенных размеров, для чего реализована библиотека редакторских изображений. При загрузке картинки оригинал сохраняется в одном месте. Далее при помощи визуального редактора из исходного изображения, путем выделения области, вырезаются изображения нужных размеров. Если вырезалась маленькая картинка, то из нее дополнительно автоматически создается маленькая сепия и маленькая черно-белая картинка; из больших и средних автоматически создаются еще только черно-белые. После того как из исходного сделаны все необходимые изображения, его можно прикреплять к статье. Для экспорта новостей на другие сайты, помимо RSS предусмотрен вариант экспорта посредством вставки JavaScript и HTML кода в IFRAME. Для уменьшения нагрузки на сервер при размещении кода на высоко посещаемых ресурсах сделано кеширование в статику из предопределенных шаблонов. И отдача JavaScript`а или HTML происходит посредством nginx без участия Apache с затратой минимальных ресурсов сервера. Посты в баннер можно добавлять в ручную или создать автоматически генерируемый баннер из новостей часа или «гвоздей» (определенный тип новостей)

PHPJavaScriptMySQLSVNLinux
G/P/S
Москва
веб программист
Апрель 2005 — Июнь 2006 (1 год и 3 месяца)

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

• gps-ru.ru - сайт компании, представляет из себя каталог продукции, на русском и английском языке. Сайт существовал задолго до моего прихода, все работы с ним сводились к незначительным изменениям и исправлению ошибок.

• vezem.ru / adjob.ru – сопутствующие ничем не примечательные сайты компании

В компании была начата разработка (я пришел в середине этапа и ушел почти в самом конце разработки, потому как начались финансовые сложности)
На тот момент до наступления кризиса 2008 года многие компании успешно себя чувствовали и динамично развивались. Кому-то нужны были сувениры на праздники, кому-то просто брендированые ручки, ежедневники или зажигалки. Фирменная продукция для выставок и офисов. Поток запросов был хороший, в компании был собственный офис в Китае, который мог найти у поставщиков требуемые товары, просчитать стоимость заказа партии, необходимой обработки и доставки.
Именно для оптимизации всех этих процессов была написана CRM с различными отделами, сотрудниками, разделением прав и статусами запросов и если клиента устраивало – то и заявок.
Так же все движение денег было завязано на CRM - все оплаты (выдача наличных денег, оплата счетов. После создания Кассовой заявки (счета), необходимо получить утверждение у руководства, далее утвердить в финансовом отделе. При утверждении кассир выдает деньги (бухгалтерия оплачивает счет) и вносит соответствующие отметки об оплате (частичной оплате). Следующий этап - создание авансового отчета по кассовой заявке, сотрудником, получившим деньги. Например создать Кассовую Заявку может один сотрудник, а получить деньги по ней - другой. Далее идет утверждение авансового отчета (так же возможен возврат денег в кассу) и закрытие платежа.
Это был уже серьезный и интересный опыт

PHPMySQLООПHTMLJavaScript
Различные небольшие компании
Москва
веб программист
Январь 2004 — Март 2005 (1 год и 3 месяца)

Различные небольшие сайты, ничего интересного, хранение данных в файлах и разработка в блокноте

PHPMySQLApache