← All posts tagged программирование

janPona

1) Проблема позднего внедрения.

FE dev: Давай заюзаем модный фреймворк Ф. На нём же так просто делать штуки Ш1, Ш2 и Ш3!
Lead: Нет! Он слишком молод. Мы не можем так рисковать. Давайте пилить свой велосипед.

... прошло 1.5 года

Lead: Бля, пора это говно порефакторить. Давай что ли перепишем Ш1, Ш2 и Ш3 на фреймворке Ф?
FE dev: Пиздно. Там столько кода, что хуй его знает, как оно вообще работает. код Ш2 содержит 15000 строк. А от Ш1 вообще зависит сторонний сервис, который нельзя трогать, иначе пиздец. К тому же стили для Ш3 используются ещё и на другом скрине, а в случае рефакторинга, стилей там вообще не будет.

2) Проблема раннего внедрения

FE Dev: Давай заюзаем модный фреймворк Ф. На нём же так просто делать штуки Ш1, Ш2 и Ш3!
Lead: О, ништяк! Давай!

... прошло 1.5 года

Lead: давай обновим фреймворк Ф1 с версии 0.1.1 до версии 9.14.0. Там залатали 10миллионов уязвимостей и сделали API совместимый с Zend Framework, который сейчас использует команда К5.
FE Dev: Пиздно. API фреймворка Ф1 последней версии поменялся. А в наших фичах столько кода, что хуй его знает, как оно вообще работает. Код Ш2 содержит 15000 строк. А от Ш1 вообще зависит сторонний сервис, который нельзя трогать, иначе пиздец. К тому же стили для Ш3 используются ещё и на другом скрине, а в случае апдейта версии, стилей там вообще не будет.

janPona
· Edited

Программисты — унылые говнюки.

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

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

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

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

Это, кстати, и объясняет, почему у программистов (да и вообще, у инженеров) доходы практически не растут (ну, скажем, не в десятки же раз) — в отличие от бизнесменов.

И объясняет, почему я не просто в жопе, не просто в сраке, я тот созидающий глист, который строит полную сраку вокруг себя и в ней же и живёт. А из сраки мозга не видно.

janPona
· Edited

*дыбр *программирование Две недели отпуска закончились.
Часы сдал, правда не без неприятных сюрпризов, вылезших на проде. Ну а куда без них?

На душе как-то депрессивно из-за мгнозапно навалившегося отвращения к коду, программированию и it отрасли в целом. Вавилон, мегатонны информационного шума, толпа незнакомых фреймворков, чуждых мне предметных областей. Слишком сильно ощутил себя песчинкой на дне мирового океана. Тревожный звонок: пропало желание программировать для себя. Это пройдёт, послезавтра на работу, втянусь. Другим не советую так блюзовать, выше нос!

janPona

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

janPona

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

janPona

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

Именно socks прокси, не mtproto.

В итоге пишу щас его руками на Go.

janPona

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

Ну казалось бы, что может быть проще — возьми и отфильтруй по endTime > now.
Но это был только вход в кроличью нору.

У каждого события есть начало и конец.
У системы есть свой часовой пояс (который можно произвольно менять), отличный от часового пояса юзера.
Ну отлично, где тут проблема? Нормальные люди хранят в таких случаях отдельно часовой пояс, отдельно абстрактное время. В виде строки, не важно.

Но нет же, наши дорогие заказчики изобрели свой формат времени. Я его назвал pseudoUTC, почему псевдо — читайте дальше.
Начало события они хранят так:

startDate = toPseudoUtc(SYS_TZ, beginningOfDay(SYS_TZ, absStartTime))
То есть мы сначала вычисляем начало дня в таймзоне системы, затем (НАБЕРИТЕ ВОЗДУХА!) переводим получившийся таймштамп в такой таймштамп, который будучи сформированным в UTC, давал бы строку абстрактного начала дня. "2018-09-28 00:00:00". Но храним не строку, а именно этот абсолютно фейковый, бесполезный и сбивающий с толка таймштамп!
Но это не всё, часы с минутами же отброшены, поэтому они хранят отдельно минуты с начала дня.
startMinutes = бла бла бла, вычисляем разницу в минутах

C endDate всё ещё интереснее. Они переводят тоже в такой тупорылый таймштамп, но только считают конец дня! То есть, условно таймштамп, который при рендеринге в строку в часовом поясе UTC дал бы "2018-09-28 23:59:59". Но (НАБЕРИТЕ ВОЗДУХА ЕЩЁ БОЛЬШЕ!!!) endMinutes они вычисляют... с НАЧАЛА ДНЯ!

Можно выдыхать.

Это пиздец, блядь.

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

А если бы хранили время в виде строки (или хотя бы хуй уже с ним, не хранили, но просто отдавали бы его клиенту в виде строки, всё равно ж оно абстрактное), то не было бы таких проблем.

janPona

В общем, прошёл собеседование на должность техлида в одну безумно крутую компанию.

Но когда понял, что там придётся ВПАХИВАТЬ, РАБОТАТЬ, а не просиживать штаны, прокрастинировать и заниматься левыми проектами на положении капризного гения-любимчика, то понял кое-что.

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

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