[{"data":1,"prerenderedAt":237},["ShallowReactive",2],{"posts:ru":3},[4,23,35,42,56,67,77,86,97,108,123,132,140,151,158,167,174,182,190,197,209,217,229],{"path":5,"title":6,"description":7,"date":8,"image":9,"tags":10,"author":15,"draft":16,"series":17,"part":18,"seriesPart":19},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fhalfword_android_rendering","Я проверил свои экраны для Android без эмулятора. Все 114, на четырёх языках.","Эмулятор Android и куча Gradle-сборок положили мой Mac, поэтому экраны Halfword для Android рисуются на JVM: Robolectric запускает настоящее приложение, Roborazzi сохраняет картинки, 456 штук на четырёх языках за 2 минуты 19 секунд. Рассказываю, как это работает, что оно поймало и чего показать не может.","2026-10-02","\u002Fimages\u002Fhalfword_android\u002Fcover.jpg",[11,12,13,14],"code","android","kotlin","testing","slnt_opp",false,"halfword",null,{"slug":17,"title":20,"path":21,"n":22},"Как я делал Halfword","\u002Fru\u002Fseries\u002Fhalfword",2,{"path":24,"title":25,"description":26,"date":27,"image":28,"tags":29,"author":15,"draft":16,"series":17,"part":18,"seriesPart":33},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fhalfword","Я сделал игру для компании. У всех одно и то же слово. Почти.","Halfword — это игра в слова Undercover на одном телефоне, который передают по кругу: пиксель-арт, восемь особых ролей и очки, которые копятся весь вечер. Она уже вышла на iPhone и Android. Рассказываю, чего стоило её сделать: очки, подобранные симуляцией, одна кодовая база на Swift для двух платформ, движок, который может воспроизвести любую игру заново, пиксель-арт без файлов картинок и экраны, нарисованные раньше, чем написан код.","2026-10-01","\u002Fimages\u002Fhalfword\u002Fcover.png",[11,30,31,32],"swift","ios","games",{"slug":17,"title":20,"path":21,"n":34},1,{"path":36,"title":37,"description":38,"date":39,"image":40,"tags":41,"author":15,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Ffare_enough","Я сделал таксометр для айфона. Просто так.","Fare Enough превращает айфон в таксометр: тарифы настоящих городов, старый добрый аппаратный счётчик, если повернуть телефон боком, и чеки на карманном термопринтере. Рассказываю, чему меня научили Skip, фоновая геолокация и Bluetooth-принтеры.","2026-09-25","\u002Fimages\u002Ffare_enough\u002Fcover.jpg",[11,30,31],{"path":43,"title":44,"description":45,"date":46,"image":47,"tags":48,"author":15,"draft":16,"series":49,"part":52,"seriesPart":53},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fcuando_vector","Пятьдесят восемь мегабайт","Полтора года мы рисовали карту картинками. Почему Cuando переезжает на вектор: один файл на 58,67 МБ вместо 15 ГБ на тему, упавший рендерер во Flutter и три картографических движка за одной вьюхой в новых приложениях.","2026-08-15","\u002Fimages\u002Fcuando_vector\u002Fcover.jpg",[11,49,50,51],"cuando","maps","cloudflare","3",{"slug":49,"title":54,"path":55,"n":52},"Как мы делали Cuando","\u002Fru\u002Fseries\u002Fcuando",{"path":57,"title":58,"description":59,"date":60,"image":61,"tags":62,"author":15,"draft":16,"series":49,"part":65,"seriesPart":66},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fcuando_valhalla","Все лампочки горели зелёным","С сегодняшнего дня автобусные маршруты в Cuando строит Valhalla по GTFS-расписанию, которое мы генерируем сами. Мы публикуем его — или пытаемся — каждый будний день с марта, и до сегодняшнего дня никто не спросил у него ни одного автобуса. Как сделать GTFS, когда его никто не публикует, и как Valhalla теряет все автобусы, пока все проверки горят зелёным.","2026-08-04","\u002Fimages\u002Fcuando_valhalla\u002Fcover.jpg",[11,49,63,64,51],"valhalla","gtfs","5",{"slug":49,"title":54,"path":55,"n":65},{"path":68,"title":69,"description":70,"date":71,"image":72,"tags":73,"author":15,"draft":16,"series":49,"part":75,"seriesPart":76},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fcuando_routing_sql","Запрос, который съел базу","Целый год поиск пути в Cuando был одним рекурсивным SQL-запросом. Этой осенью его начало вызывать приложение, и тут ему перестало хватать памяти. Как устроен поиск пути на SQL, почему он взрывается и почему с сегодняшнего дня он переехал в Worker.","2025-12-04","\u002Fimages\u002Fcuando_routing_sql\u002Fcover.jpg",[11,49,74,51],"sqlite","4",{"slug":49,"title":54,"path":55,"n":75},{"path":78,"title":79,"description":80,"date":81,"image":82,"tags":83,"author":15,"draft":16,"series":49,"part":84,"seriesPart":85},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fcuando_tiles","Платим за каждый тайл","Все решения про карту в Cuando до сих пор вытекали из того, как за эту карту брали деньги. Полгода Mapbox, одна неделя векторных тайлов, тепловая карта, которая решает, насколько глубоко можно зумить, и — с этой недели — карта, которую мы рисуем сами.","2025-02-22","\u002Fimages\u002Fcuando_tiles\u002Fcover.jpg",[11,49,50,51],"2",{"slug":49,"title":54,"path":55,"n":84},{"path":87,"title":88,"description":89,"date":90,"image":91,"tags":92,"author":15,"draft":16,"series":49,"part":95,"seriesPart":96},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fcuando_bus_app","Мы сделали приложение про автобусы Торревьехи. Оно задаёт один вопрос","Cuando — приложение про автобусы Торревьехи, теперь в Google Play и App Store. Данных для старта не было, так что сеть мы нарисовали руками: 163 остановки, 16 маршрутов, приложение-секундомер и куча YAML. Рассказываю, как оно работает и почему графовая база продержалась восемь недель.","2025-01-24","\u002Fimages\u002Fcuando_bus_app\u002Fcover.jpg",[11,49,93,94],"flutter","pocketbase","1",{"slug":49,"title":54,"path":55,"n":95},{"path":98,"title":99,"description":100,"date":101,"image":102,"tags":103,"author":15,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Flinguo_firebase","Клон Duolingo в два вечера с Firebase","Как-то давно(около четырех лет назад) у меня появилась идея, сделать базу данных и аутентификационный шлюз тире сервис работающий только как API, дабы делать динамические веб приложения без бэкэнда. Два года перед эту идею купил Google не у меня. Об этом как-нибудь в другой раз, а сейчас разбираемся что такое Firebase, как им пользоваться и нужен ли он.","2020-09-04","\u002Fimages\u002Fdeutsch_vue_firebase.png",[104,105,106,11,107],"blog","frameworks","services","vue",{"path":109,"title":110,"description":111,"date":112,"image":113,"tags":114,"author":122,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fgermany\u002Fblaue_karte","Получить BlueCard без завершенного образования? Легко","Да-да, это возможно, хоть и не так давно. Тут я постараюсь рассказать как это прошло у меня и немного пролить на свет на такую тайнственную формаулировку, как \"подтвержденный опыт\"","2020-06-29","\u002Fimages\u002Fblaue_karte.jpg",[115,116,117,118,119,120,121],"deutschland","visa","visum","виза","визы","blaue karte","blue card","deutscher",{"path":124,"title":125,"description":126,"date":127,"image":128,"tags":129,"author":18,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Ftensorflow_from_source","Ускоряем TensorFlow сборкой из исходников","Как заставить TensorFlow работать на CPU до 7 раз быстрее.","2020-02-26","\u002Fimages\u002Ftf_logo_social.png",[130,131,11],"ml","machine learing",{"path":133,"title":134,"description":135,"date":136,"image":137,"tags":138,"author":18,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Flinks_preview","OpenGraph: предпросмотр ссылок в Telegram и Facebook","О чем это всё Недавно(нет) я заметил, что ссылки на мои статьи неправильно \"предпоказываются\" в Telegram(и как выяснилось в facebook), несмотря на то, что я включил OpenGraph в hugo. Почему? Сейчас разберемся, а также глянем, что такое OpenGraph в целом. ---","2020-01-26","\u002Fimages\u002Flinks_preview\u002Flogo.png",[11,104,105,139],"hugo",{"path":141,"title":142,"description":143,"date":144,"image":145,"tags":146,"author":18,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fbx24","Vue и Битрикс24","Однажды мне пришлось... Писать приложение для Битрикс24. Такие приложения состоят из интерфейса и номинального бэк-энда. Это значит, что по сути это SPA приложение и скрипт на богомерзком php или нормальном языке который заметит веб-сервер.","2020-01-21","\u002Fimages\u002Fbx24_vue.png",[11,147,107,148,149,150],"js","b24","bitrix24","битрикс24",{"path":152,"title":153,"description":154,"date":155,"image":156,"tags":157,"author":15,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fshortener","Ук(о)ротитель ссылок под hugo","В чем проблема Как известно ссылки часто бывают слишком длинными, например меня на идею автоматизировать линкшортингх","2019-12-22","\u002Fimages\u002Fshortener.png",[104,11,139],{"path":159,"title":160,"description":161,"date":162,"image":163,"tags":164,"author":15,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fdevs_against_machine_2019","Devs Against Machine 2019","Небольшое объявление В свете последних событий что в России, что в Беларуси, а так же попытки захвата nginx-а, всех разрабов приглашаю поучавствовать в хакатоне","2019-12-13","\u002Fimages\u002Fdevs_against_2019.jpg",[104,165,166],"hackaton","announcement",{"path":168,"title":169,"description":170,"date":171,"image":172,"tags":173,"author":15,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fpictures_n_favicon","Картиночки, теги, ммм","Ну что опять? В общем научился добавлять картиночки и теги, так что теперь:","2019-12-02","\u002Fimages\u002Ftags.jpg",[104,139,11],{"path":175,"title":176,"description":177,"date":171,"image":178,"tags":179,"author":181,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fya_sdelal\u002F0","#0","В этот раз монтаж-приколюхи","\u002Fimages\u002Fya_sdelal.jpg",[180],"йасделяль","cringesuperpro",{"path":183,"title":184,"description":185,"date":186,"image":187,"tags":188,"author":15,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fssl_added","Не сп***ел и добавил SSL | Как натянуть https на lighttpd","Что поменялось Особо ничего не скажешь, просто теперь есть 🔒 возле урла. Аплодисменты, кайф и Google Search.","2019-11-28","\u002Fimages\u002Fssl.png",[104,189,11],"ssl",{"path":191,"title":192,"description":193,"date":194,"image":195,"tags":196,"author":15,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fcode_n_shit\u002Fnew_blog_engine","Свершилось | Hugo","Итак, после полугода обещаний самому себе перенести сайт с дурацкого конструктора на свой сервер, это свершилось. Сайт переведен на удобный движок написанный на Go-lang -- Hugo! Как это работает?","2019-11-27","\u002Fimages\u002Fhugo.svg",[104,105,139,11],{"path":198,"title":199,"description":200,"date":201,"image":202,"tags":203,"author":208,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fgermany\u002Fdsh_automator","Решение трудностей записи на DSH в Spraachen Akademie","Привет, если ты уже пробовал записаться на DSH экстерном в Аахене или любом другом городе, то ты знаешь, что это очень сложно, потому что места заранее забиты студентами академий, а оставшиеся места разбирают в считанные минуты. Что ж, я тоже сталкивался с такой проблемой, поэтому я написал простой скрипт, который поможет тебе ее решить.","2019-10-21","\u002Fimages\u002Fspraachen.jpg",[204,11,115,205,206,207],"на коленке","germany","DSH","ruby","script kiddie",{"path":210,"title":211,"description":212,"date":213,"image":214,"tags":215,"author":122,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fgermany\u002Fdeutschland0","Поступление в ВУЗ в Германии #0. Виза и Блокированный Счет\u002FSperrkonto. Как обойти","Согласен, странно начинать с визы в таком цикле статей, но возможно тебе, мой случайный читатель, это поможет сэкономить много денег и времени. Прошу дочитать внимательно и до конца, несмотря на мое косноязычие и общий невысокий уровень грамотности:)","2019-08-23","\u002Fimages\u002Fdeutschland.png",[115,116,117,118,119,216],"блокированный счет",{"path":218,"title":219,"description":220,"date":221,"image":222,"tags":223,"author":228,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fuseful\u002Fukmail_n_dhl","UKMail и DHL","Привет, друг, возможно ты нашел эту статью потому что столкнулся с мошейничеством и не можешь отменить свою посылку DHL до того как она попадет к мошейнику. Или ты просто хочешь дозвониться до человека в UKMail. К твоей и моей удачи, я уже нашел нужный номер, вот он: ​02477711904","2019-06-28","\u002Fimages\u002Fukmail_n_dhl.jpg",[224,225,226,227],"ukmail","dhl","fraud","contact","лох",{"path":230,"title":231,"description":232,"date":233,"image":18,"tags":234,"author":236,"draft":16,"series":18,"part":18},"\u002Fru\u002Fposts\u002Fblog\u002Fchance_vs_moglichkeit","Шанс vs. Возможность","Тут пока ничего не будет, переводить долго и лень, но похоже нужно чтобы было и на русском, чтобы оно отобразилось на главной в немецкой версии.","2019-03-07",[235],"вода","школьник",1791333559898]