А как всё начиналось… :-)

Решил окунуться в воспоминания

Итак, на дворе 2008 год. ikenfin был в поисках себя — программирование на Delphi уже не доставляло былой радости (как и программирование под десктопы в целом), поэтому начал искать себя. В какой–то момент, в колледже дали курсовое задание на разработку «системы обучения иностранному языку».

Сначала я понял задание слишком буквально и начал пилить интерактивный учебник. Именно тогда я познакомился с HTML — весь текстовый контент у меня был именно в этом формате. Честно признаться, написание десктопного кода мне перестало доставлять именно на этом этапе — чем дальше я углублялся в базовый web, тем интереснее становилось. Сначала HTML, потом CSS, а в последствии и Javascript.

Свой самый первый в жизни сайт запилил примерно в то же время. (кстати, случайно наткнулся на него – оно еще живое, лол). Javascript для меня оказался первой любовью с первого взгляда. И тут понеслось — htmlbook, javascript.ru и куча других ресурсов, тонны бесполезного кода и море удовольствия.

Затем я узнал о существовании серверных языков программирования. Почему–то вопреки советам стал активно изучать Perl. Прочитал пару книг, создал несколько несложных скриптов, параллельно правда посматривал и на PHP, и на Python, но как–то сильно упоролся на перле.

*   *   *

Время шло, давно уже наступил 2011–й, учёба в коллеже подходила к концу — в итоге за плечами армия, полученное средне–специальное образование и небольшой опыт в Delphi, Perl и Javascript.

Я всеми силами пытался постичь дзен perl и javascript, и написать свой файловый движок для форума.

Впрочем, этому проекту не суждено было завершиться — к тому моменту когда я закончил процентов 20 движка, пришло понимание, что perl через CGI в нашем городе никому не нужен как навык, поэтому решил переключиться на более перспективный PHP. Особых проблем с переходом не было, ведь синтаксис PHP был во многом похож на сильно упрощённый Perl.

Поступив в университет, я встретил свою вторую любовь с первого взгляда – C. Господи, этот язык божественен!

Как бы то ни было, курс в web был проложен окончательно, поэтому как бы сильно мне ни нравился Си, Javascript был чуточку милее. На PHP я пытался повторить свой Perl’овский подвиг и реализовать таки форум, но и тут как–то не срослось. После переноса Perl кода на PHP, наткнулся на первый opensource движок в моей жизни — nanote.

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

Получилось что–то типа этого (тема получилась немного другой, но её у меня уже нет):

Вообще, nanote в то время сильно помог(ла?) освоить язык на начальном уровне. Всё это свистело у меня под WindowsXP + USB Web Server.

Спустя некоторое время я открыл для себя чудный мир GNU Linux — Ubuntu 10.04 с окружением на базе Gnome 2. Это было поистине откровением. Первые полгода я ковырял/настраивал/перенастраивал систему по 8–10 раз на дню (знаете это извращенское желание — ломать/чинить/ломать).

Спустя полгода учёбы в вузе, устроился в МХМ «Мозаика». По причине отсутствия на тот момент достаточных навыков программирования, меня приняли на двойную должность — web редактор/программист, ну я собственно и не противился — когда постоянно работаешь с системой и одновременно дорабатываешь её намного легче найти и исправить косяки, или добавить отсутствующий функционал.:)

Мне дали PC их бывшего программиста с установленной Ubuntu. Я не знаю, что там было наколхожено с системой, но lighdm упорно отказывался принимать переданную мне пару (логин/пароль).

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

Если не ошибаюсь, то первым моим заданием по разработке стало допиливание слайдера новостей на probki.mosaica.ru (сейчас уже тот слайдер не работает — дропнули обратную совместимость). Далее было что–то связанное с локальным Freebsd сервером — учитывая отсутствие тогда опыта администрирования nix систем, это скатилось в три дня адской настройки python и чего–то ещё под фряхой — хотели потестить на нём систему Treeio (спустя пару дней тыканий, дропнули их, лол).

А вот дальше начался довольно долгий период, связанный исключительно с основным сайтом – mosaica.ru и её сердцем – drupal 7 (для непосвящённых — это не лучшая cms для новичков (хотя как показывает мой опыт это вообще не лучшая cms)).

Первый год работы был весьма насыщен. Например, компания решила разработать для сайта iphone приложение. Разработка самого приложения была заказана у itech (теперь itech.mobile), а api для него пилил я. В общем–то ничего сложного в этом не было, сложности начались когда мы начали добавлять поддержку Push–уведомлений. В общем–тотут сработал закон Паретта — 20% (меньше) функционала мы пилили 80% времени.

Спустя где–то год, за плечами я имел пару собственных drupal модулей (соответственно прокачал PHP), подтянул свои знания HTML/CSS, ну и, помимо этого, разумеется, Javascript.

А ещё я выработал несколько лайфхаков как web–редактор (двойная должность же была):

  • на сайте был раздел с pdf версиями газеты. 8~32 pdf файла нужно было смерджить в 4 и залить на сайт (для этого я юзал великий pdfshuffle). Учитывая тогдашний, довольно тупой интернет через адский прокси wingate, залить эти 4 файла на сайт можно было в лучшем случае минут за 25 (а еще иногда срабатывал какой–то друпаловский geizen bug, в результате чего нужно было перезагружать страницу и заливать всё заново)
  • все пикчи я приводил к одному разрешению при помощи некого расширения для nautilus (сейчас уже и не вспомню какого именно)

Для публикации объявлений использовалась некая виндовая утилита, написанная на C#. Под убунтой она нормально работала при наличии wine, но в итоге обновились требования к утилите, а исходников в наличии не было, тем самым подарив мне мой первый опыт reverse engineering. Утилитку я переписал с нуля на java и оформил в виде jar, что позволило запускать её на любой ОС с установленным jre. Надо сказать, что на тот момент моей жизни мечта моя была стать хардкорным java developer, поэтому я с удовольствием изучал код некой системы подачи объвлений (это было до масштабного внедрения 1С), созданной сторонними умельцами для компании.

Мой аццкий UI на Swing

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

*   *   *

Мде, с джавой печальненько вышло, но дальше пару лет я проводил в основном со стандартной четвёркой — PHP/HTML/CSS/JS, изредка пописывая что-либо на других языках. Наверное на второй год работы, мы начали пилить каталог — сервис, аля 2Гис, но об этой части истории можно прочесть здесь — https://ikfi.ru/project/catalog-mosaica-ru, это кстати был первый мой проект на Yii, мы тогда потратили очень много времени чтобы как следует разобраться что к чему и с тех пор бэкенд всех сервисов пилился исключительно на нём. Разве что, когда мы хотели запилить один из секретных сервисов — была попытка бэкенд сделать на основе Python, но сроки начали гореть и пришлось отказаться от этой идеи.

В 2015 наконец-то было одобрено решение по переводу mosaica.ru на новую платформу. Если я не ошибаюсь, начали мы где-то июле, а первый релиз состоялся в октябре. Тогда это было настоящей проверкой — всё что мы знали и умели на тот момент, все лучшие решения, подсмотренные у существующих решений, мы вложили в этот проект.

Основная цель была сделать сайт максимально быстрым и максимально расширяемым, который легко было бы дорабатывать и тестировать новые идеи (ну, по крайней мере я его видел таким — early 1.5 версия перед 2.0, но этому пока не суждено было случиться).

Ну и разумеется, было необходимо перетащить все материалы со старого сайта на новый, для этого я тогда сделал целый мультиязычный пакет утилит, тут вам и python скрипты, потому что адекватную php orm на тот момент я не знал, но знал sqlalchemy, и пара руби скриптов из далекого 2013, ну и разумеется PHP для простых вещей.

Подробнее об этом можете здесь почитать — https://ikfi.ru/project/mosaica-v1-5

Комментарии

comments powered by Disqus
Яндекс.Метрика