Closed m1kc closed 9 years ago
Итак, чем мы занимаемся прямо сейчас? Работой под капотом - невидимой снаружи, но нужной.
Развлекательные видеоролики про работу над uonline:
Я туда ещё музыку через YouTube добавил, но она появляется как-то через раз.
Ну и ещё было сделано где-то примерно двадцать семь мелких улучшений и исправлений.
В качестве эксперимента была написана реализация части движка на Node.js. Результаты впечатляющие - движок стал работать быстрее раз в десять. Если всё остальное окажется так же хорошо, мы перейдём на эту платформу.
По основному направлению не было сделано ничего: Дима сейчас очень занят.
Дима по-прежнему очень занят. В результате за неделю мы успели только прибить пару багов.
А ещё мы перешли на платформу Node.js. В результате образовался такой гибрид, который пропускает запросы через себя и отдаёт старому движку то, что пока не умеет обрабатывать сам. Потихоньку переносим куски кода на новый движок.
Всё ещё потихоньку переносим куски кода. В отличие от старого движка, мы параллельно пишем и юнит-тесты, поэтому работа идёт медленнее, зато качество кода резко повышается. Знаю, что и так работаем медленно. Но чувствую, что баги потом ловить будет некогда, поэтому лучше подстраховаться сейчас. По грубой прикидке, сейчас на Node.js перенесено порядка 25% кода. С приходом Антона мы, конечно, прибавили темпы. С другой стороны, Дима уходит в армию. Печаль, уныние. Наверное, надо искать ещё программистов. Ну, в общем, мы работаем.
Я уже упоминал, что в связи с переходом на Node.js у проекта сейчас гибридная архитектура. Движок на Node принимает запрос и смотрит, может ли он его сам обработать, и отдаёт его старому движку, если нет. Так вот. По состоянию на сегодняшний день Node.js может самостоятельно обрабатывать около 40% запросов. Это неплохо. Что ещё лучше, 75% кода обложено юнит-тестами, что позволяет нам вносить изменения, почти не боясь, что что-то сломается.
Прогноз вполне оптимистичный. Работаем дальше.
Попутно было выяснено, что новый движок производительнее в несколько десятков раз, спокойно держит до 130 одновременных запросов (это как минимум 1300 человек онлайн, тыкающих без перерыва) и даёт лучшее время обработки запроса 3 мс (для сравнения, РНР со всеми оптимизациями и кэшированием никогда не давал меньше 50). Кстати, об оптимизациях. В ходе портирования мы улучшили работу с базой, снизив нагрузку на БД раза в полтора.
Всю неделю разработка медленно и вдумчиво стояла, потому что ваш покорный слуга был в Саратове и не мог влиять на код своими мощными ментальными полями. Тем не менее, мы смогли начать портировать код, связанный с боями. Попутно обнаружилось, что он в своё время был выполнен через задницу, и мы начали его приводить в более адекватный вид. Ну и привели чутка.
Вообще, в переписывании кода хорошо то, что мы ещё раз оцениваем свои решения и заменяем гнилые куски более продуманными и эффективными. Мы уже провели сотню оптимизаций и запланировали ещё столько же. Код стал чище, движок - легче, а юнит-тесты позволяют пробовать смелые решения, не боясь всё сломать. Чота я каждый раз говорю про оптимизации, но мы ими постоянно и занимаемся.
Ну и, кстати, мы уже портировали почти весь код, связанный непосредственно с игрой. Осталось портировать систему миграций БД и прочую околоземную фигню. И впереди ещё переход на PostgreSQL. Не переключайтесь.
да как не переключаться, если новости еженедельные, а не ежедневные?) шутка с долей правды. на самом деле очень классно.
На олимпиаде был?
Ога.
И как оно?
Да так, средне. Одна команда из нашего универа прошла в полуфинал, но не мы.
Опять Гошан прошёл)
Знаешь его?
Можно сказать, что наслышан)
Эта неделя была посвящена техническим вопросам. Мы портировали с РНР ещё несколько функций, написали ещё несколько тестов (покрытие уже порядка 90%), провели ещё пару оптимизаций (ваш покорный слуга трижды переписывал одну функцию, пока она не обрела нормальный вид), исправили пару косяков и уже готовимся наконец выкинуть весь код на РНР, занимающийся обработкой запросов, к чёртовой матери. Это, конечно, будет веха.
Ещё я попробовал реализовать пару модулей на CoffeeScript. Это язык, похожий на JavaScript, но отличающийся крайней лаконичностью вплоть до идиотизма. Возможно, в будущем у нас часть кода будет на нём.
Ну и ещё мы готовимся начать работать над боёвкой. Пора уже делать что-то новое, правда?
Пожалуйста, не надо отправлять в письмах цитаты, их никому не интересно читать.
Эта неделя прошла так хорошо, что если бы я пил, то на радостях бы набухался. Произошла целая куча важных событий, в высшей степени значимых для проекта. Даже не знаю, с чего начать, поэтому просто пойду по порядку.
Фух. Вроде ничего не забыл. Пойду дальше работать.
Это мой страховой полис?
пока бутылка будет виртуальной - да.
Мы внесли пару мелких исправлений и портировали ещё немного кода. Ещё немного - и у нас будет возможность выкинуть весь код на PHP, занимающийся отрисовкой страниц. Это тоже будет важной вехой.
Мы решили чуть-чуть отложить работу над боевой системой и вместо этого заняться другими задачами. В частности:
Ну и под конец плохая новость: у Антона сейчас мало свободного времени, у меня тоже, так что в ближайшие две недели больших результатов не ждите. Вот.
Пиздец оказался не очень жутким, поэтому мы всё-таки кое-что сделали. А именно:
Мы всё ещё пилим систему миграции таблиц. Функции перенесли, теперь доделываем интерфейс. Попутно внесли пару улучшений и ускорили процесс создания таблиц (теперь там не вызывается ALTER, если можно обойтись без него, и поэтому нагрузка на базу значительно меньше). Ещё, если кому-то интересно, мы чуть-чуть изменили планы и теперь используем пакет dashdash вместо ранее запланированного optimist для разбора флагов командной строки - у последнего обнаружилась вредная привычка молча игнорировать ошибки (а жаль, я когда-то сам туда коммитил). Да, кстати, автор NodeUnit по-прежнему пидорас и хуесос, потому что уже несколько месяцев не может принять мой багфикс и даже на письма не отвечает. Такие дела вот.
Да, забыл сказать. Теперь у нас есть кастомный buildpack для Heroku. Это, вообще, очень крутая вещь - теперь мы полностью управляем процессом развёртывания сервера в облаке и можем позволить себе такие вещи, как сборка скриптов для браузера через Grunt или установка пакетов Bower - раньше всё это можно было сделать только через костыли.
Ну и пара слов о Bower, которого у нас пока нет, но скоро будет. Это пакетный менеджер, как и npm, но предназначенный для тех вещей, которые обычно отдаются в браузер. После его внедрения мы сможем наконец выкинуть из репозитория Bootstrap и jQuery, а заодно и автоматически обновлять их, вовремя получать обновления и багфиксы и так далее.
А то у нас Bootstrap 2.2.2 до сих пор. Даже не 2.3.2. Про 3.0.2 просто молчу.
Вот, кстати, наше сегодняшнее дерево. Растёт.
Это дерево я тоже выпилил.
Теперь в проекте чуть больше CoffeeScript. Больше за неделю ничего не было сделано; гуляет ветер, перекати-поле перекатывается по полю. Считайте, что техотдел взял себе первый отпуск без объявления войны. Такие дела.
Кстати, реально - про sync рассказать? Это чисто технический момент, но вдруг кому интересно.
Лол, а что-то мы ни хрена и не сделали. Исправили пару ошибок, ещё раз перекопали init, добавили туда оптимизацию таблиц, сломали билд, потом починили, потом выгрузили свежатину на Heroku, потом исправили ещё багов, потом стемнело. Хотя стойте, тогда выходит, что всё-таки что-то сделали. Но мало.
Делаем ставки на то, сколько у нас ещё времени уйдёт на то, чтобы доковырять init.
Coming soon...
А не, ложный вызов.
Хола.
Последние несколько дней я нахожусь за границей, и тут дичайший напряг с интернетом. Местное население выходит в интернет через диалап (для которого у моего ноута нет разъёма) и 3G-свистки, драйвера для которых были утеряны ещё во времена царя Гороха. Всё это причиняет мне некоторый дискомфорт. Я даже пытался взломать чей-нибудь вайфай, но попытка оказалось безуспешной. За целый вечер я не смог перехватить ни одного сетевого пакета. В радиоэфире глухо, как в танке. Только точки доступа вещают свои SSID.
Стоило бы порадоваться за такую тишь и гладь, но моя беспокойная душа мечется в поисках выхода. Мобильник, к слову, тоже не спасёт: после того, как я увидел цены на интернет в международном роуминге, у меня упал. Поэтому я сижу на диване и развлекаюсь оптимизацией решений задач из Project Euler. То есть я беру свои старые решения и пытаюсь сделать так, чтобы они укладывались в 400 мс. Это не слишком легко, потому что некоторые из них работают минуту. Но у меня времени полно, а настойчивости ещё больше. (Я бы с удовольствием решал другие задачи оттуда, но как мне их скачать?)
Ну, в общем, с Новым годом всех. Счастья вам в новом году, не хворайте, не пейте лишнего, живите на всю катушку и гребите деньги лопатой (к каковому процессу, надеюсь, в 2014-м году мы всё-таки приступим). С годом! С счастьем! Конец связи.
P.S. Вернусь 6-7 числа.
Ну вот, я тут.
В связи с экзаменами мы с Антоном приостанавливаем работу примерно до 27 числа.
Летим дальше.
Сегодня у нас есть повод выпить. Повод, как обычно, огласим в конце недели.
Так вот, обещанный инфоповод (простите, пишу в спешке). Мы полностью избавились ото всех страниц, генерируемых РНР - теперь их все отдаёт новый движок. Это важная веха, чоужтам. Осталось только механизм миграции переписать, и переход можно будет считать законченным. За пару недель, думаю, управимся. Всех поздравляю, все молодцы.
Пилим механизм миграции. Ну, точнее, там остался только парсер unify, его и делаем. За неделю, как и ожидалось, не успели, доделаем на следующей.
Есть хорошие новости и плохие. Хорошая - мы почти дописали парсер. Плохая (для проекта) - мы участвуем в Volga-CTF, поэтому на выходных ничего писать не будем. Ещё хуже - во вторник Антон ложится в больницу на две недели.
Третье место на CTF. Парсер, конечно, не успели.
Ну что ж, вот он - исторический день. Сегодня из репозитория были выброшены последние куски кода на РНР и удалены все связанные с ним ресурсы.
Переход на новую платформу потребовал почти полгода работы. Это дохуя. Если бы я знал, что будет так дохуя, я бы ещё четыре раза подумал, прежде чем менять платформу. Я не жалею о принятом решении, но возможно, что мы смогли бы как-нибудь прожить и без этого. А может, и не смогли бы - проекты на РНР, по статистике, скатываются в сраное говно очень часто, и это далеко не случайность.
В общем, что мы получили в итоге:
Новый парсер стал более-менее стабильным и влит в основную ветку.
В общем, мы сделали дохуя работы и сделали её хорошо. Всех поздравляю.
Но впереди её ещё больше.
Опять всякая техническая хуета.
На следующую неделю запланированы работы такого же плана. Ждём, когда Антона из больницы выпишут.
Всю неделю разгребал завал в универе. Антона выписали. Но, в общем, написали мы мало. Самое заметное - теперь игра не путает оффлайн и истёкшую сессию. Остальные изменения коснулись самого кода: он стал лучше, чище и добрее, и мы исправили некоторые старые баги.
Сегодня в очередной раз осознал, что пора учиться. Вот только теперь, совершенно точно, наступает момент дедлайна, когда промедление подобно смерти. Моя нехорошая привычка игнорировать одни дела в пользу других, меня ещё не поводила, но испытывать удачу на прочность в очередной раз как-то не хочется. Посему, к сожалению, я вынужден оставить работу которой занимался с таким упоением. Вдвойне печальней то, что оставляю я её незаконченной, и боюсь в состоянии 50-и %-ной готовности. Так уж вышло, что всё раздулось до немыслимых объёмов: две недели превратились в два месяца, а затем и в полгода. Возможно, займись я этим сейчас в плотную, мне удалось бы привести всё в хоть какой-то товарный вид к началу апреля. Но сил и времени уже нет. Это грустные новости. Теперь о новостях более менее хороших. Дабы не быть пустозвоном, я выложу всё, чем занимался с середины сентября. Более конкретно о том, чем я таки занимался, будет сказано в соответствующей теме. Тут же пока добавлю следующее. Несмотря на учёбу, не думаю, что прекращу рисовать. Более того, постараюсь рисовать в тему, а не налево. Мне кажется, что я нашёл что-то похожее на стиль к которому стремился, и теперь его нужно затачивать к нужному виду. Ну идеи, надеюсь, тоже меня не покинут. Буду записывать их по мере поступления, на будущее. А да, и про будущее. Оклематься от учёбы очень надеюсь к началу июня. К тому времени определённо должны будут появиться новые силы продолжить вплотную заниматься Эрией.
Мне тут подумалось, что обитателям universe практически неизвестно, чем сейчас занимаются программисты. Конечно, это клёво, что вы избавляете меня от лишних расспросов, но я подумал, что от этакого еженедельного бюллетеня хуже никому точно не станет.