← All posts tagged job

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

Только что подошёл тестер и спросил:
— Ты пользовался когда-нибудь sitename (очередной аналог пастбина)?
— Нет, а что?
— Я туда перекидывал для коллеги лог деплоя (в котором всякие креды в открытом виде), выставил expires in hour, а он проебался.

Только что на работе анлокнул ачивку Lucky Bastard.

Апдейтил по просьбе менеджеров несколько записей (некоторые сущности между юзерами раскидывал) и в одном запросе указал неправильный айдишник. Запрос к тому времени отработал.

Осознав произошедшее, полез искать по FK и другим косвенным признакам изначального владельца записи и оказалось... что это тот же самый чувак, то есть запись не поменялась.

Вот и не верь потом во всякое.

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

Мы выкинули нахуй джангу и прикрутили пирамиду, не отрываясь от производства. Изничтожили монгу, смигрировав данные в настоящие базы данных. Наконец, только что закончилась эра монструозных изменений: мускуль уступил место его величество постгресу. Конечно, можно было потратить три-четыре месяца и сделать то же самое гораздо раньше, но меня греет мысль, что был пройден дичайший челленж по одновременному развитию проекта на хуёвых инструментах с внедрением таких кардинальных изменений.

Теперь и последователям передать работу, в случае чего, не стыдно будет. Да пребудет с вами сила!

Продолжаем портировать сервис с мускуля на постгрес. Столько нового узнаём. То NULL'ы, оказывается, раньше проставлялись спокойно там, где не должны были. То группировка сломана, но мускуль молчал.

Присели с парнями на "оптимизатор" мускуля. Кейс простой: однотабличный запрос с парой сотен значений в IN.

Explain показал, что база поперебирала десяток индексов, остановившись на полном отказе от оных. Пришлось ткнуть её носом (USE INDEX).
Кстати, смешно, что с базой пришлось разговаривать как нашим законтворцам — с населением:
— Делай, как велит закон (USE INDEX).
— Лол нет, иди нахуй, не буду.
— АНУПАДЛАБЛЯДЬБЫСТРО (FORCE INDEX).
— Okay.jpg (

Ну мальчики, ну ёб вашу мать.

Я вытерпел изобретенные вами лингвистические конструкции в официальной документации вроде "самый заклашенный объект" и "сделать решару". Молчу уж про мгимо, когда читаю "it's differs".
Я хихикнул над "Хижиной дедушки Пу" и геометкой, указывающей на Кремль.
Я даже почти простил вам, что был вынужден плюнуть на очередную задачу, когда тупо не нашёл кучи нужной информации. Зато смехуёчки распиханы.
Но теперь вы пишете в описании к методу "Сессия необязательна", а потом выдаёте ошибку <error_msg>PARAM_SESSION_KEY : Invalid session key</error_msg> .

В общем, если есть на жуйце мейлрушники с возможностью дойти до ОК-отдела: нассыте им на лица там от меня, пожалуйста.

С нового года наш офис переехал, и я переживал, что не смогу отведывать на регулярной основе божественный Фо во вьетнамском ресторане. А вчера случайно наткнулся на смесь для приготовления этого дела в домашних условиях. Сегодня проэкспериментировал и — о чудо! — получилось. Теперь, чую, буду как на наркоте каждую неделю себе варить борщи^W вьетнамский супец.

Я писал как-то, что мы избавились от жанги в проекте. Это было первым важным, победным шагом на пути к здоровью сервиса. Сегодня мы сделали следующий — погасли последние инстансы монги, только данные вживых на крайний случай. Осталось сменить mysql на постгрес, и можно будет говорить о СТАБИЛЬНОСТИ. Ура, товаrищи!

Выходные почти кончились, а отдохнуть так толком и не вышло. Зато задеплоили наконец-то многонедельные излияния в репозиторий. Конечно, теперь надо следить за тем, чтобы всё "прижилось" на продакшене, но начало положено. Кстати, итоговая миграция архитектуры вышла в 1995 строк, хе-хе.

Чуть причинное место не сломал, пытаясь понять, куда уходит оперативка в скрипте. При первом запуске такого поведения не наблюдалось. Потом вспомнил, что второй раз запустил через пирамидовый pshell, в котором включен debug_toolbar, кеширующий результаты запросов в базу, коих у меня было много. В общем, домохозяйкам на заметку: вырубайте debug_toolbar, если лихо общаетесь с базой.

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

Спасибо амазону за прекрасное детство. И так ночные бдения с перебросом монги с одной жестянки на другую, так тут ещё и сраный AWS с лимитом в 1 Tb на volume. Охуительно, когда надо "вот сейчас блять" поднять более емкое хранилище, и тут ты начинаешь срочно разбираться в рейдах.

Надо запомнить сегодняшний кейс для собеседований.
Есть монгоколлекция на 500кк записей (содержат информацию о некоторых событиях) для кучи объектов с полями obj_id, timestamp и т.д. Есть объект (obj_id = 1), для которого в этой коллекции лежит 10кк записей. Задача: брать из этих десяти миллионов по 50к для аггрегации. Сложность: skip() дичайше сканит все предыдущие события, т.е. чем больше число, переданное в skip(), тем дольше работает вся кверя. Дискас.