В этом году долгожданный пляжный фестиваль Ulcamp наконец-то состоялся. Это был юбилейный десятый раз когда программисты собирались на берегу Волги на пьянку чтобы послушать доклады.
Жаль конечно что многие друзья и знакомые не смогли приехать, но тем не менее дух фестиваля остался и все было очень круто и весело!
Кстати даже погода повторяла прошлый фестиваль 2019 года. В пятницу вечером начался ливень с жестким ветром, а в субботу погода была переменной. Палящее солнце сменялось кратковременным ливнем со шквалистым ветром.
Не буду утомлять читателей кучей текста с фотографиями, ведь у меня есть кое-что получше - отчетное видео! 🙂
Предыдущие улкэмпы:
]]>В этом году долгожданный пляжный фестиваль Ulcamp наконец-то состоялся. Это был юбилейный десятый раз когда программисты собирались на берегу Волги на пьянку чтобы послушать доклады.
Уже много лет в интернете я оставляю свой цифровой след - где-то это аккаунты в социальных сетях и платформах, где-то мои собственные сайты.
Каждый раз когда я пишу что-то в сети задумываюсь о приемлемом для меня балансе откровенности. С одной стороны иногда хочется поделиться чем-то довольно личным, а с другой я понимаю что это не очень безопасно. Да и в реальной жизни я не особо любитель трепаться о личном. В итоге рождаются неинтересные посты с кучей недомолвок и намеков. Вот и сейчас видимо один из них.
Год начинался в целом неплохо, но в начале марта в моей семье случилось довольно печальное событие. У меня умер отец. Я конечно понимал что никто не вечен и все это лишь вопрос времени, но переживать это довольно сложно.
Рад что с отцом в последние годы у нас были прекрасные отношения. Да, местами возникало недопонимание из-за разницы поколений, но при этом мы не ругались. Отца я любил, но при этом нечасто заходил к родителям в гости. Он был далеко не идеальным, но при этом хорошим человеком. Покойся с миром отец! Минем әти!
Теперь нужно стараться больше помогать маме, следить за дачей, гаражом и т.д. Ну что ж, так тому и быть.
В этом году мы снова поехали на новогодние праздники в Свияжские Холмы. В предыдущие годы мы ездили туда с друзьями на двух машинах, а в этот раз вынужденно отправились на одной нашей. Поездка была забронирована заранее и мы не знали что в эти дни ударят морозы в -35. В итоге мы просидели все дни в домике. На сноуборде и лыжах не катались. Машину заморозили и она не завелась)
Более подробно - в блоге финика
В декабре 2022 я купил себе б/ушный сноуборд так как захотелось кататься больше. Также я приобрел себе сноубордический шлем и очки.
В этом сезоне удалось где-то 6-7 раз сгонять на горку. Катался я исключительно на склоне для новичков так как решил сперва научиться уверенно стоять на доске.
Оказалось что привозить свою доску, переобуваться и сразу идти кататься это удобно! Надеюсь что сноуборд не испортится от хранения в подвале гаража.
Жигули для дрифта. Еще одно новое зимнее увлечение. Напишу об этом отдельный пост.
На этом пока все.
Времена начиная с прошлого года пошли неспокойные. Многое поменялось и меняется до сих пор.
Желаю вам всего хорошего!
]]>Еще в начале марта я успел положить деньги на баланс Apple ID чтобы в случае чего их хватило на ближайшие полгода. Тогда еще банковские карты не были заблокированы и платеж успешно прошел.
Примерно в тот же момент я забил на личные проекты и забил на инстаграм. Больше занимался работой и семьей.
В марте пришел последний платеж с Google Adsense. Платежи у меня были небольшие, но регулярные. А тут им настал конец.
Я как-то писал в прошлом году что закинул немного денег на Тинькофф Инвестиции. Закинул ту сумму которую не жалко. Частенько большая часть портфеля у меня была в плюсе. Теперь же у меня в портфеле почти все стало красное и неизвестно когда отрастет. В приложение я даже и не захожу чтобы лишний раз не огорчаться.
В конце апреля съездили с супругой в Казань. Из примечательного - тогда я посетил музей АкБарс Авто. Также мне очень понравился парк Урам.
Далее в начале июня была семейная поездка в Тольятти (в Alpen Park). Альпенпарк удивил крутыми гостиничными номерами в отдельно стоящем коттедже.
Ну и заодно удалось исполнить давнюю мечту – посетить музей АвтоВАЗ 😉. На обратном пути мы еще заехали в AlphaGlamping. Место довольно интересное, но ехать туда далековато)
Старый добрый Ulcamp остался в доковидном и доспецоперационном 2019 году. С каждым годом надежда на его возрождение угасает. В этом году взамен улкэмпа были проведены две конференции помельче - SummerMerge и DevSpace.
На мердж я не поехал (мерджей мне и на работе хватает лол), а вот девспейс оказался пропитан духом того самого улкэмпа. Масштабы были в разы меньше, но тусовка была ламповой. Я очень рад что встретил кучу друзей и знакомых и хорошо провел там время.
Также удалось в этом году сходить на байдарки с друзьями. Получилось очень атмосферно.
Прочитал летом две книги Дмитрия Глуховского - «Пост» и «Пост. Спастись и сохранить».
Дальше история про то как деньги на Apple ID стали заканчиваться и я решил пополнить счет через мобильного оператора. Один раз я уже платил с мобильного счета Yota. Но сейчас вроде как платежи через Yota уже не работают. Честно говоря не знаю, не проверял.
На этот раз я решил затестить Билайн. Для этих целей я приобрел e-sim с каким-то непонятным тарифом за 300 рублей в месяц. Плюс с меня взяли дополнительно 50 рублей за выпуск сим-карты (которой не было). Выглядело это так - я в салоне связи заплатил 350 рублей, а мне в ответ дали чек с QR-кодом. Я скачал приложение для того чтобы поменять тариф на “посекундный” и вернуть потраченные деньги на счет. Тариф успешно поменялся, а вот на счет вернули только 88 рублей. Да и то произошло это после бодания со специалистом техподдержки в чате.
Уровень клиентского сервиса оцениваю на 3 из 5.
Но, главное что мне таки удалось положить деньги на счет Билайна и затем оттуда пополнить ими счет Apple ID. Потраченные деньги считаю комиссией.
Честно говоря я хотел себе квадрокоптер еще в те времена когда Dji только начала выпускать свои первые устройства. Затем у меня было желание купить Dji Mini. Потом я на все это забил и в итоге ничего не купил. И тут листая объявления на одной из айтишных барахолок я увидел пост о продаже б/ушного Dji Mavic Air. Ну и купил в итоге.
Штука прикольная. Налетал я пока очень мало, но занятие это очень увлекательное. Очень рад что решился на покупку.
]]>А оказалось что дальше события будут разворачиваться куда динамичнее и события 2020 года покажутся куда более простыми. Очень многое поменялось.
На компьютере при этом мало что изменилось. Даже в истории команд zsh все еще сохранились команды для hexo которые я набирал чтобы создать предыдущий пост в блоге.
Я собирался написать пост с обзором прошедшего 2021 года в начале января, но так это и не сделал. А сейчас уже частично и позабыл что там было в 2021 году.
Из того что смог вспомнить:
Новый год начался не очень, причем с самого начала его празднования. Я даже думал что это все возможно потому что мы изменили традициям и вместо того чтобы уехать на турбазу или горнолыжный курорт мы решили отметить этот праздник дома. Было весело, но завершился праздник не очень хорошо. Тут уж без подробностей) Уже тогда возникло ощущение что что-то не то.
Далее, спустя неделю мы съездили на горнолыжку в Свияжские Холмы и в целом хорошо провели там время. А в это время в соседнем Казахстане происходили смутные события. Не то что бы это как-то влияло на нас, но сейчас по прошествии полугода это выглядит как тревожный звоночек.
Спустя еще пару недель мы с женой отправились в Казань и на скользкой дороге мы вылетели с трассы. Сами целы, с машиной тоже почти все в порядке, но эмоционально это оставило довольно сильный отпечаток. Я всегда понимал что на дороге может случиться всякое и никто от этого не застрахован, но к этому мы не были готовы. В Казань по этой трассе я ездил много раз и днем и ночью и в хорошую погоду и даже в плохую. А тут бац и понимаешь что потерять контроль за доли секунды. С тех пор я стал помедленнее ездить и реже обгонять машины на трассе. Больше конечно это в эмоциональном плане повлияло на мою супругу. Она теперь с тревогой думает о предстоящих поездках.
Получилось довольно иронично что спустя неделю после съезда в кювет я сходил на урок контраварийного вождения от Биньямина Джепаева. Урок был запланирован на три недели раньше, но боевой УАЗ сломался в тот раз. Сам урок пролетел очень быстро. Гонять на УАЗе по заснеженной трассе оказалось очень увлекательно. Но для закрепления занятий лучше сразу брать пакет из 6 занятий. Заодно удалось поговорить с многократным чемпионом автогонщиком Биньямином Джепаевым. Хороший дядька.
В начале февраля дорожный инцидент уже начал забываться, а в новостях стали появляться тревожные материалы связанные со страной X и страной Y. Я до последнего полагал что все обойдется и верил в лучшее. А потом все как завертелось… и мы стали жить в стремительно меняющемся мире.
Практически моментально возникли сложности с оплатой зарубежных сервисов, работой Apple Pay. А еще я удалил с телефона Tandem так как мне стало стрёмно знакомиться с людьми и говорить кто я и откуда.
Но это мелочи которые можно потерпеть.
]]>Мне очень жаль пострадавших людей и до сих пор трудно поверить в то что такое может происходить в 21 веке. Очень хочу чтобы все это поскорее закончилось и люди перестали страдать.
А оказалось что дальше события будут разворачиваться куда динамичнее и события 2020 года покажутся куда более простыми. Очень многое поменялось.
]]>Здесь короткий пост о том как я посетил экспозицию AK BARS RETRO CARS в Казани.
Этот пост я написал в мае 2023 года, но выставил ему дату публикации на май 2022 чтобы не нарушать хронологию. Возможно содержимое выставки уже изменилось спустя год.
Вообще попасть в музей обычно несложно. Нужно всего лишь купить билет и придти в рабочие часы 🙂
Но тут все вышло несколько сложнее.
Итак, мы поехали по делам в Казань и по пути решили заскочить в музей. Войти нам тогда не удалось так как в этот день в помещении музея проводилось закрытое мероприятие
На следующий день у меня был свободен целый день и я решил еще разок попробовать туда попасть. На сей раз на входе я увидел большое количество молодых людей. Встал в очередь. Уже стоя в очереди краем уха услышал диалог парней стоящих спереди. Они обсуждали инвестиции. Тут у меня начали закрадываться подозрения в том что не все эти люди стоящие в очереди ценители ретро-автомобилей 😀
Когда дошла моя очередь я узнал что там проводится инвестиционный форум и что на машины можно посмотреть только купив билет на форум. Билет стоил 3000 рублей вместо обычных 300. Я вежливо отказался от покупки и вышел из здания.
Кто знает, возможно мне стоило купить билет на форум и сейчас я был бы сказочно богат)
Честно говоря в тот момент я огорчился что приезжаю сюда второй раз и никак не могу попасть внутрь. Я собирался уже уехать оттуда, но потом решил зайти снова и посмотреть экспонаты хотя бы издалека.
Внутри я увидел лестницу ведущую на второй этаж и поднялся туда. На втором этаже располагалось кафе, а также открывался вид сверху на выставку. Там же был стенд с призовыми кубками.
Я посмотрел на автомобили издалека, посмотрел кубки и… увидел еще одну неприметную лестницу в углу. Спустился и оказался прямо в центре выставки 😀
Вот так посещение музея получилось для меня бесплатным.
«Тройка» на автомате. Снаружи она ничем не отличается, но в салоне действительно виднеется селектор АКПП.
ЗиЛ-41047
Мотовездеход GG Quad
Тот самый «вид сверху» на выставку 😀
Гоночный КамАЗ команды Kamaz-Master
Внедорожник Zibar MK2
Aurus и Maybach
Bugatti Veyron Grand Sport 2010 года.
Модный стильный молодежный Chevrolet Apache 1959 года.
ЗиС 110
ГАЗ 13
В целом выставка не очень большая и все экспонаты умещаются в одном зале. Я туда хотел попасть в первую очередь чтобы прикоснуться к гоночному КамАЗу.
Музей рекомендую к посещению. Также рекомендую предварительно туда позвонить и уточнить можно ли туда попасть в этот день.
Больше фото на Google Drive
]]>Здесь короткий пост о том как я посетил экспозицию AK BARS RETRO CARS в Казани.
]]>Этот пост я написал в мае 2023 года, но выставил ему дату публикации на май 2022 чтобы не нарушать хронологию. Возможно содержимое выставки уже изменилось спустя год.
Увидел на днях новость о том что вышел Next.js 12 с кучей новых крутых фич и улучшений. А я давно хотел уже поиграться с современным фронтендом на своих pet-проектах, да все никак не находил подходящую задачу под эти инструменты.
Я зашел на официальный сайт Next.js и увидел большой раздел документации посвященный интеграции со сторонними CMS.
Тут мне закралась мысль, а не попробовать ли мне Next.js для блога 🤔
Я свои блоги уже давно перевел на статик-генераторы и в большинстве случаев использую Hugo. Генерируется все моментально из простых md-файлов в не менее простые html-файлы. Из коробки есть Live-reload, возможность использовать минимальную логику в шаблонах и т.д. Готовую статику можно закидывать на GitHub/GitLab pages, Vercel, S3 и куда душе угодно.
Но вот есть один минус – это использование картинок постах. У меня это выглядит так – я копирую картинки в static/uploads и вручную прописываю к ним пути в редакторе во время написания поста.
А хочется как в современных CMS - просто перетянуть файл в окошко редактора чтобы оно само куда надо подтянулось.
Вот тут я и решил попробовать связку Next.js + WordPress. Тем более что все основные фичи для создания блога у WordPress есть из коробки + с недавних пор там есть новый крутой блочный редактор для текстов.
Я открыл ридми у https://github.com/vercel/next.js/tree/canary/examples/cms-wordpress, поднял локальный веб-сервер с WordPress и начал погружение в удивительный мир современного фронтенда.
Из описания стало понятно что при сборке сайта посты подтягиваются из WordPress и превращаются в странички на Next.js. Кажется то что мне нужно)
Удивительно, но на этапе npx create-next-app
и npm install
даже ничего не сломалось 😂
Нужно отметить что делал я все по документации - создал пару постов в WordPress с текстом и картинками с unsplash.com и установил плагин WP Graphql
Затем я запустил npm run dev
и получил ошибку гласящую о том что картинку с домена gravatar мы загрузить не можем и нужно этот домен добавить в список разрешенных в конфиг-файле (которого ещё нет). Что ж, я нагуглил в официальной документации как должен выглядеть кусок конфига и пофиксил эту проблему.
next.config.js1
2
3
4
5
6
7
8
9
10
11
12/**
* @type {import('next').NextConfig}
*/
const nextConfig = {
images: {
loader: 'imgix',
path: 'https://example.com/images/',
domains: ['1.gravatar.com'],
},
}
module.exports = nextConfig
Главная страница моего чудесного блога стала загружаться по адресу http://localhost:3000
!
Далее я кликнул на один из постов и после долгого ожидания увидел сообщение об ошибке. Оказалось что наш Next.js ожидает наличие главного изображения у каждого поста и в случае его отсутствия падает с ошибкой. Окей.
Я добавил главные картинки в оба поста и на сей раз мой блог все же прогрузился.
Тут я уже решил что несмотря на эти косяки в целом все круто и пора бы собрать статичную версию сайта (как раз везде пишут что для Next.js рекомендован режим SSG!).
Набрал npm run build
и надо ли говорить о том что ожидаемых html-файлов которые можно закинуть куда угодно я не увидел. В официальной доке пишут что все ок, нужно просто импортнуть то что получилось в Vercel и оно там будет работать. В качестве альтернатив предлагается поднять свой сервер на node.js для запуска нашего сайта либо экспортировать статичный сайт.
Окей, переходим на страницу документации рассказывающую о next export
и кажется это то что нужно. Запускаю команду и получаю ошибку - оптимизация картинок в этом режиме не поддерживается и потому экспортировать сайт нельзя. В качестве решения предлагается воспользоваться сторонними облачными сервисами для оптимизации картинок или прикручивать свой кастомный loader который будет как-то манипулировать с картинками.
Ну ок, прописал в настройках использование стороннего сервиса imgix
и запустил экспорт.
Получил новую ошибку:
1 | Pages with `fallback` enabled in `getStaticPaths` can not be exported. |
На этом мое терпение лопнуло.
Перед установкой всего этого зоопарка я думал о том что получится собрать из коробки простое решение где можно будет запустить WP локально, написать новый пост, а затем подтянув эти данные собрать статичный сайт и задеплоить его. В идеале чтобы картинки вытянулись из WP и задеплоились вместе со статичным сайтом. Ну или на худой конец поставить в WP плагин чтобы картинки улетали в S3 и были доступны оттуда.
Оказалось что из коробки это не работает. Даже если просто воспроизводить шаги из документации то наткнешься на досадные ошибки.
Как я понял дефолтный юзкейс такой – имеем запущенный и доступный публично WordPress + деплоим Next.js на Vercel. Посты у нас импортируются при сборке Next.js, а картинки видимо планируется тянуть с WP.
При таком подходе никаких плюсов по сравнению с голым WP я не увидел. Теперь вместо одной точки отказа у нас их две + добавляется шаг по пересборке всей этой балалайке при каждом обновлении контента.
Для чего-то простого оно не подходит и не работает из коробки, а для сложного нужно все переписывать.
Если честно, у меня однажды был подобный юзкейс. Где-то в недрах корпоративной сети был установлен WordPress в котором контент-менеджеры создавали новые посты и запускалась некая тулза которая подтягивала все посты через REST API и публиковала эти посты наружу. С таким я сталкивался лишь один раз и больше о таком никто не просил)
Странно это все. В очередной раз я решил попробовать новый модный инструмент и он не подошел под мои задачи.
]]>Увидел на днях новость о том что вышел Next.js 12 с кучей новых крутых фич и улучшений. А я давно хотел уже поиграться с современным фронтендом на своих pet-проектах, да все никак не находил подходящую задачу под эти инструменты.
]]>Это ультра-короткая заметка о ныне закрытом музее МОСТ.
Этот пост я написал в августе 2023 года, но выставил ему дату публикации на октябрь 2021 чтобы не нарушать хронологию. За эти неполных два года изменилось очень многое. Тогда главной проблемой было вакцинироваться от ковида и получить QR-код. Музей кстати уже закрылся.
Музей находился в гаражном помещении под мостом, откуда и получил свое название. Музей был в основном посвящен американской автокультуре. Там выставлялись культовые масл-кары и другие интересные автомобили.
Я давно туда хотел попасть и осенью 2021 года мне это удалось.
Я прилетел к другу в гости на пару дней в Москву и мы с ним скатались в музей.
Это ультра-короткая заметка о ныне закрытом музее МОСТ.
]]>Этот пост я написал в августе 2023 года, но выставил ему дату публикации на октябрь 2021 чтобы не нарушать хронологию. За эти неполных два года изменилось очень многое. Тогда главной проблемой было вакцинироваться от ковида и получить QR-код. Музей кстати уже закрылся.
Этот выпуска дайджеста вышел уже через 1.5 месяца. Прогресс 😄
Проекты на GitHub подросли, но прямо чуть-чуть:
А вот так себя чувствуют скринкасты:
Просмотры растут, но очень медленно.
Также я собирался записать скринкаст по NeoVim. Нужно это сделать в ближайшее время)
А еще мы с друзьями задумали проект по оживлению старых Жигулей. Сил и свободного времени пока хватило только на 3 ролика.
Вот самый первый:
VS Code + Remote - SSH
Понадобилось тут мне поднять копию приложения вместе с довольно большой базой (около 50 гигабайт). Крутить все это на ноутбуке под аккомпанемент шумящих вентиляторов не хотелось и потому я арендовал виртуальную машину в Hetzner Cloud c 4 vCPU, 8Gb RAM и 160 Gb SSD.
Первые несколько дней я использовал связку Tmux + NeoVim, а порты прокидывал через дополнительное ssh подключение (ssh -L 8080:127.0.0.1:8080 hetzner
).
Затем подлагивания при редактировании кода стали немного раздражать и я решил попробовать новую фичу VS Code - возможность установить серверную часть VS Code и работать с кодом на удаленной машине локально.
Когда-то давно я уже использовал VS Code для подобных целей просто монтируя директории по SSHFS. Почему VS Code? Да потому что он один среди аналогичных редакторов не глючил при подобной схеме работы.
Ну и тут я решил попробовать новую фичу. Установил плагин и увидел список хостов из своего ssh-конфига. Кликнул на нужный и спустя пару десятков секунд увидел сообщение о том что VS Code успешно установлен на удаленном хосте. Затем я просто открыл директорию с кодом на удаленном сервере и приступил за работу.
Оказалось что пользоваться встроенным терминалом в целом удобно. Понравилась фича с пробрасыванием портов на локальную машину. Здесь это дело пары кликов.
В итоге я получил полноценное “облачное” рабочее место с выполнением всех необходимых операций в VS Code.
Разве что для запуска каких то тяжелых тасков я подключался по SSH из Alacritty и запускал на сервере сессию Tmux. Запускать Tmux в маленьком окошке встроенного терминала VS Code я не решился 🙂
Дошли руки до написания тестов для одного старого проекта на Yii2. Жил он себе жил без тестов, а теперь они появились для части функционала 😀
Оказалось что никаких сложностей здесь нет и тесты для этого фреймворка пишутся вполне себе удобно. Просто я ленился и не начинал.
Duolingo, Tandem и Cake я пока забросил. Прохожу платный курс в Skyeng и иногда смотрю видео с resh.edu.ru (сейчас смотрю видосики за 7 класс средней школы).
Хотел продолжить читать книгу по ООП в Ruby, но никак не могу найти её дома. Нужно заняться этим вопросом.
Узнал про хоткей в macOS который открывает панель с emoji - Control + Command + Spacebar
Забавно что в эмуляторе терминала Kitty при этом запускается консольная тулза для выбора emoji 😉
На канале Lenta.ru вышел новый сезон видео об истории русской поп-музыки. На сей раз рассказывается о поп-музыке с 2001 по 2010 годы.
Пока что самое интересное для меня видео было про 2006 год:
Видео с концерта группы Anacondaz на песню “Метафизика”. Песня крутая, монтаж очень классный. Видео полностью погружает в атмосферу концерта. Открыл для себя группу “Заточка”. Классные ребята.
Идею со спринтами не закончил, но на третьей неделе переоценил свои возможности и спринт “Ghost in Shell” идет до сих пор (я его продляю так как никак не могу завершить таски по нему). Подход неправильный. Следующие спринты будут с меньшим количеством тасков и жестко зафиксированной датой.
Tech
Подкасты
Книги
Этот выпуска дайджеста вышел уже через 1.5 месяца. Прогресс 😄
]]>This issue of the digest came out in 1.5 months. Progress 😄
Projects on GitHub have grown, but just a little bit:
And here my statistics about screencasts:
Views are growing, but very slowly.
Also, I have a plan to record a screencast about my NeoVim settings. I need to record it soon.
And also We (I and my Friends) started a YouTube project about restoring a classic LADA car. So far, we only had enough strength for 3 videos 😁
Here is the first video:
VS Code + Remote - SSH
I needed to run a local copy of a web application with a huge database (about 50 Gb). I didn’t want to spin all this on a laptop to the accompaniment of noisy fans, so I rented a virtual machine in the Hetzner Cloud with 4 vCPU, 8Gb RAM and 160 Gb SSD.
For the first few days, I used a bundle of Tmux + NeoVim, and passed the ports through an additional ssh connection (ssh -L 8080: 127.0.0.1: 8080 hetzner
).
Then the lags when editing the code became a little annoying and I decided to try a new feature of VS Code - the ability to install the server-side of VS Code and work with the code on a remote machine locally.
Once upon a time I already used VS Code for similar purposes simply by mounting directories via SSHFS. Why VS Code? Yes, because he alone among similar editors did not bug with such a scheme of work.
Well, and then I decided to try a new feature. I installed the plugin and saw a list of hosts from my ssh config. I clicked on the desired one and after a couple of tens of seconds, I saw a message stating that VS Code was successfully installed on the remote host. Then I just opened the code directory on the remote server and got to work.
It turned out that it is generally convenient to use the built-in terminal. I liked the feature with port forwarding to the local machine. This is done in just a couple of clicks.
As a result, I got a full-fledged “cloud” workplace in VS Code.
But to run some heavy tasks, I am connecting via SSH from Alacritty and starting a Tmux session on the server. I did not dare to launch Tmux in a small window of the built-in terminal of VS Code 🙂
I started to write tests for one old project in Yii2. This project lived a long time without tests, and now they have appeared for part of the functionality 😀
It turns out that writing tests for this framework are very convenient. And I was just lazy and did not write tests.
I have given up Duolingo, Tandem and Cake for now. I take a paid course at Skyeng and sometimes watch videos from resh.edu.ru (now I watch videos for the 7th grade of high school).
I wanted to read a book about OOP in Ruby, but I lost this book somewhere at home.
I learned about hotkey that opens a panel with emoji’s - Control + Command + Spacebar
A new season of video about the history of Russian pop music has been released on the Lenta.ru channel. This time it is about pop music from 2001 to 2010.
So far, the most interesting video for me was about 2006:
Video from the concert of the group Anacondaz for the song “Metaphysics”. The song is cool, the editing is very cool. The video completely immerses you in the atmosphere of the concert. I discovered the “Zatochka” group. Nice guys.
I did not cancel the idea with sprints, but in the third week I overestimated my capabilities and the sprint “Ghost in Shell” is still going on (I am extending it since I can not complete tasks on it in any way). The approach is wrong. The next sprints will be with fewer tasks and a fixed date.
Tech
Podcasts
Books
This issue of the digest came out in 1.5 months. Progress 😄
]]>Это новый выпуск дайджеста. Опять придется мучительно вспоминать чем же я занимался эти 3 месяца)
Проекты на GitHub совсем немного подросли:
Пора уже пилить новый и более полезный опенсорс 🙂
В конце мая в блоге появился новый пост в блоге о том как я посетил автомобильную экспозицию на ВДНХ - «Выставка «Мечта Москвича»
VSCodium => Sublime Text 3 => NeoVim 0.44 => RubyMine => NeoVim 0.5
Вот такие интересные метаморфозы) Я попробовал VSCodium и заметил что в некоторых случаях набор текста начинает сильно тормозить. Скорее всего проблема в плагине реализующем режим Vim. Немного огорчившись (в остальном VSCodium реально удобный) я попробовал старый добрый ST3.
Sublime Text 3 работает шустро, памяти ест мало, режим Vim из коробки. Работать можно, но есть ощущение что саблайм уже сдал свои позиции. Плагинов у него сильно меньше и разрабатываются они не так шустро. Поддержки LSP насколько я понимаю нет. Но удалять его у меня не поднялась рука. Оставил саблайм на всякий случай.
Далее я перекатился обратно на Neovim 0.44. Тут без каких-либо изменений.
Потом я попробовал денек поработать в RubyMine. Тут как и в остальных IDE от JetBrains. Сперва долго индексирует проект, а потом дает кучу подсказок и подсвечивает всё и вся. Работает все хорошо, да и проблем со шрифтами в маке нет. Но все равно не то пальто)
Случайно узнал о том что наконец-то зарелизился NeoVim 0.5 с нативной поддержкой LSP, поддержкой нового конфига init.lua, а также кучей новых плагинов написаных на Lua. Вот мой новый init.lua
Веб-браузер Safari
В прошлом дайджесте я писал о том как решил попробовать браузер Brave. В целом он мне понравился, но оказался не так удобен как Firefox. Да и история с майнингом криптовалют браузером мне не понравилась.
Затем я решил попробовать Safari в качестве основного браузера. Да, батарейка при работе в Safari живет на макбуке чуть дольше, но браузер сильно уступает по функционалу Chrome и Firefox.
Я думал недельку пожить на сафари, но протерпел день или два. И я снова на Firefox 🙂
Broot
Добавил в копилку установленных cli-утилит на rust новый файл-менеджер под названием «broot». Штука удобная, особенно мне понравился ключик “-w” (на скрине) отображающий директории отсортированными по занимаемому месту.
Скринкаст
В прошлом дайджесте я писал про скринкаст про настройку OpenVPN и про видео с переводом татарской песни.
Обновленные результаты:
Также я записал 2 новых видео. И они практически не набрали никаких просмотров 🙂
Выставка «Мечта Москвича». Тут 17 умопомрачительных просмотров 🙂
Настройка терминала в macOS. Тут уже побольше, целых 20 просмотров!
Duolingo – на это приложение я честно говоря подзабил. Всего 144 короны по итогу. Платную подписку пока что отменил. Посмотрим как будет дальше.
Skyeng - купил платную подписку на 16 уроков и уже практически прошел их. Нужно поторопиться с изучением английского! Тем более что компания предложила компенсировать мне стоимость уроков. Спасибо!
HelloTalk – я попробовал использовать это приложение и удалил его по итогу так как нашел более крутой аналог - Tandem. В HelloTalk очень мало пользователей и какие-то странные ограничения в бесплатной версии.
Tandem - тут принцип такой же как в HelloTalk. Показывается список пользователей желающих поболтать и улучшить владение языком и между делом показываются баннеры. Есть функционал текстовых сообщений, аудиосообщений, аудио и видеозвонков. Пользователей тут в разы больше и люди не прочь поболтать. Вот он тот самый интернет о котором я мечтал - с возможностью просто поболтать с человеком на другом конце земного шара. В основном мне пока попадались только адекватные собеседники)
Resh.edu.ru - тут я начал проходить школьную программу по английскому языку. В школе я изучал немецкий, поэтому это будет не лишним. Начал с 5 класса. Платформа кстати крутая, видеоуроки тут бесплатные и качественные.
Атомные привычки - эту книгу я прочитал)
In the Komarovo
На видео лицо Игоря Скляра заменено на лицо Честера Беннингтона. Mashup в итоге получился крутой, а песня обрела новый грустный смысл.
На этой неделе я решил изменить подход с планами. У меня уже есть аккаунт в YouTrack в котором я как-то пытался трекать и создавать себе задачки по саморазвитию. В итоге я создал пару десятков тасков и они висели.
На этой неделе я решил попробовать недельные спринты. Я создал спринты и раскидал по ним подвисшие и новые задачки. Каждому спринту решил дать название фильма. Например сейчас идет спринт Project X =)))
Tech
Подкасты
Книги
Это новый выпуск дайджеста. Опять придется мучительно вспоминать чем же я занимался эти 3 месяца)
]]>This is a new issue of Digest. Again, I will have to painfully remember what I was doing these 3 months)
Projects on GitHub have grown a little:
It’s time for me to create new open-source projects 🙂
At the end of May, a new blog post appeared on the blog about how I visited the automobile exposition at VDNKh - Exhibition “Moskvitch Dream”
VSCodium => Sublime Text 3 => NeoVim 0.44 => RubyMine => NeoVim 0.5
These are such interesting metamorphoses) I tried VSCodium and noticed that in some cases typing starts to slow down. Most likely the problem is in the plugin implementing Vim mode. A bit upset (the rest of the VSCodium is really comfortable), I tried the good old ST3.
Sublime Text 3 works smartly, eats little memory, Vim mode out of the box. You can work, but there is a feeling that the “sublime” has already surrendered its positions. He has much fewer plugins and they are not developed so quickly. As far as I understand, there is no LSP support. But my hand did not rise to remove it. I left the sublime just in case.
Then I rolled back to Neovim 0.44. Here without any changes.
Then I tried RubyMine for a day. Here, as in other IDEs from JetBrains. First, it indexes the project for a long time, and then gives a bunch of tips and highlights everything and everyone. Everything works well, and there are no problems with fonts in the poppy. But still the wrong coat)
I accidentally found out that NeoVim 0.5 has finally been released with native LSP support, support for the new init.lua config, and a bunch of new plugins written in Lua. Here is my new [init.lua] (https://github.com/rhamdeew/dotfiles/blob/master/nvim/init.lua)
Safari web browser
In the last digest, I wrote about how I decided to try the Brave browser. In general, I liked it, but it was not as user-friendly as Firefox. And I didn’t like the story of cryptocurrency mining by the browser.
Then I decided to try Safari as my primary browser. Yes, when working in Safari, the battery lives on a MacBook a little longer, but the browser is much inferior in functionality to Chrome and Firefox.
I thought of living on a safari for a week, but endured a day or two. And I’m back on Firefox 🙂
Broot
Added a new file manager called “broot” to the list of installed cli utilities for rust. The thing is convenient, I especially liked the “-w” argument (on the screen), which displays the directories sorted by the space they occupy.
Screencast
In the last digest, I wrote about a screencast about setting up OpenVPN and about a video with a translation of a Tatar song.
Updated results:
I also recorded 2 new videos. And they almost didn’t get any views 🙂
Exhibition “Moskvich’s Dream”. Here 17 breathtaking views 🙂
Terminal setup in macOS. There are already more, as much as 20 views!
Duolingo - I honestly forgot about this application. A total of 144 crowns in total. I have cancelled my paid subscription so far. Let’s see what happens next.
Skyeng - I bought a paid subscription for 16 lessons and have almost completed them. We need to hurry up with learning English! Moreover, the company offered to compensate me for the cost of the lessons. Thank you!
HelloTalk - I tried using this application and deleted it as a result, as I found a cooler analogue - Tandem. HelloTalk has very few users and some strange restrictions in the free version.
Tandem - the principle is the same as in HelloTalk. A list of users who want to chat and improve their language skills is shown and banners are shown in between. There is a functionality of text messages, audio messages, audio and video calls. There are many more users here and people are not averse to chatting. This is the Internet that I dreamed of - with the ability to just chat with a person on the other side of the world. Basically, so far only adequate interlocutors have come across to me)
Resh.edu.ru - here I started to go through the school curriculum in English. I studied German at school, so it won’t be superfluous. I started with the 5th grade. By the way, the platform is cool, video tutorials here are free and of high quality.
Atomic Habits - I have read this book already
In the Komarovo
In the video, Igor Sklyar’s face is replaced with the face of Chester Bennington. The mashup ended up being cool and the song took on a new sad meaning.
This week I decided to change my approach with plans. I already have an account in YouTrack in which I somehow tried to track and create self-development tasks for myself. As a result, I created a couple of dozen tasks and they hung.
This week I decided to try weekly sprints. I have created sprints and scattered the hanging and new issues around them. I decided to give each sprint a movie title. For example, now there is a sprint Project X =)))
Tech
Podcasts
Books
This is a new issue of Digest. Again, I will have to painfully remember what I was doing these 3 months)
]]>Когда-то давно у меня был сайт unique-autos.ru где я писал о различных уникальных автомобилях. Так получилось что основная масса постов была об отечественных эксклюзивных прототипах и модификациях. Мне очень нравилось отыскивать фотографии этих редких машин и крупицы информации об их технических характеристиках.
Тогда же мне очень хотелось посетить заводские музеи и прикоснуться к истории. В 2016 году удалось частично исполнить мечту и посетить музей УАЗ. Ну а теперь удалось прикоснуться к прототипам «Яуза», «Истра» и вживую увидеть гоночный «Москвич Г5».
Вообще получилось все спонтанно. Будучи в гостях в столице я увидел в метро рекламу этой выставки. Сообщалось что выставка проходит в одном из павильонов ВДНХ. Спустя пару дней мы гуляли по ВДНХ и тут я вспомнил про музей!
Нагуглил сайт музея «Музея Транспорта Москвы» и начал бронировать билет. Для того чтобы ограничить поток посетителей во время пандемии администрация музея установила лимит на 10 электронных билетов на каждый временной слот (один слот - 15 минут). В итоге я попробовал все варианты покупки билета с выбором разных слотов, но каждый раз получал ответ что свободных билетов нет. Причем покупка билетов организована довольно странно – сперва нужно выбрать тайм-слот и заполнить большую форму и только потом высвечивается сообщение об отсутствии билетов.
Короче эту форму я заполнял по меньшей мере раз 10 =)
Тогда я решил дойти до музея и попробовать купить билет на месте. Как оказалось посетителей внутри очень мало, а сотрудники очень удивились тому что онлайн-покупка билетов не работает. Подождав кассира минут 10 я купил заветный билет за 400 рублей и прошел внутрь.
Экспозиция начинается с самых первых моделей завода. Из примечательного – тут есть «Москвич» с деревянным кузовом и тряпичной крышей. Оказалось что такие изменения в конструкцию вносились для ускорения и удешевления производства автомобилей. Такое вот решение на скорую руку.
Особенно порадовала строчка про расход масла
Машина хорошая, но до серийного выпуска не добралась. Не нужен был простому советскому человеку кабриолет.
Красивая, гармоничная машина.
Очень красивая машина. Была заменена более вместительным “каблуком”.
Тут меня порадовала ширина задних покрышек.
Зря конечно проект свернули, была бы альтернатива УАЗам и Ниве. Внешне машина напоминает Toyota Land Cruiser 40.
Выглядит неплохо, но дальше прототипов дело не пошло.
Черты 2140 узнаваемы, но машина выглядит более современной.
Такой вот советский “Ford Galaxy” который опередил свое время и оказался не нужен.
Очень сильно напоминает вазовскую десятку в профиль. Правда у автомобиля какие-то проблемы с пропорциями. Считаю что лучше всего машина выглядит спереди – похожа на японские и корейские малолитражки конца 80-х и начала 90-х.
Интересное решение с дверью типа “крыло чайки”, но опять же какие-то проблемы с пропорциями. Да и решение сделать единую дверь для передних и задних пассажиров какое-то странное.
Внешне не сильно отличается от серийного автомобиля, но судя по описанию ездит на электричестве.
Залил все фотографии в оригинальном разрешении в облако.
Скачать их можно здесь: https://cloud.mail.ru/public/4gN8/ABVTKBM8r
Также есть вот такое видео:
]]>Изначально я собирался публиковать дайджест раз в неделю. Но как видите прошло три месяца с момента публикации прошлого дайджеста 🙂.
За это время произошло много различных событий, как хороших так и не очень. Здесь я традиционно пишу только о том что связано с техническими моментами.
Эти проекты получили еще немного звезд на GitHub:
Конечно это очень небольшое количество, но мне все равно приятно) Особенно приятно осознавать что твои поделки кому-то могут быть полезны.
Со времен прошлого дайджеста здесь также появилось несколько новых записей (сюрприз!).
Используем кэш в GitLab CI – en, ru
Логи из Docker в Google Cloud – ru
Alacritty => Kitty
Я решил попробовать эмулятор терминала Kitty вместо уже используемого Alacritty и этот инструмент показался мне более удобным. Скорость работы терминала даже выше чем у Alacritty, но при этом есть поддержка табов благодаря которой нет необходимости постоянно запускать Tmux.
Но тут есть небольшая проблема с поддержкой терминала на удаленных серверах. Где-то может неправильно функционировать клавиша Backspace. Для того чтобы исправить это поведение можно подключаться по ssh вот такой командой kitty +kitten ssh server
NeoVim => VSCodium
В качестве эксперимента я решил удалить VS Code вместе со всеми его настройками и установить очищенный от телеметрии MS форк под названием VSCodium. Плагинов решил установить по минимуму.
Новая конфигурация показалась мне более удобной чем использование NeoVim так что я переобулся обратно =)
Список установленных плагинов:
Веб-браузер Brave
Начитался про секьюрный браузер с интересными настройками приватности по-умолчанию под названием Brave. Он основан на движке Chromium, тут есть блокировщик рекламы из коробки и поддержка Tor. Также мне понравилась красивая стартовая страница с красивыми случайными фоновыми изображениями.
AdBlocker Ultimate
На Brave я все равно не перекатился так как прикипел к браузеру Firefox, да и удобство использования плагина Firefox Containers для меня стало решающим фактором. Но чтобы видеть поменьше рекламы я установил блокировщик AdBlocker Ultimate.
SemGrep
Также недавно узнал про такой полезный линтер ориентированный на поиск потенциальных багов и уязвимостей под названием SemGrep. Правила подгружаются из библиотеки с сайта программы. Правил пока немного, но есть возможность написать собственные и добавить их в библиотеку 😉.
Скринкаст
А здесь мой скринкаст про быструю настройку сервера OpenVPN. После публикации видео на YouTube я написал о нем в несколько сабреддитов и добавил пост на dev.to. В результате получил сумасшедшие 200 просмотров 😂.
Перевод татарской песни на русский
А вот здесь в качестве эксперимента в рамках проекта #берсүзтатарча я записал видео с переводом одной татарской песни на русский. Тема это очень непопулярная, но лично мне интересная.
А вот мои результаты постинга на dev.to. Суммарно у двух опубликованных постов и одного загруженного видео получилось около 1000 просмотров.
Duolingo – на данный момент я заработал 137 корон в этом приложении
HelloTalk – еще одно приложение по изучению английского которое я решил попробовать. Здесь предлагается найти собеседника интересующегося тем языком который ты знаешь и знающего тот язык который интересен тебе. В результате получается разговор на смеси из двух языков с взаимным исправлением речевых оборотов) Пользователи тут не особо активные, но если постараться то можно найти интересных собеседников.
Яндекс.Книга – начинал читать эту книгу еще в 2019 году и наконец дочитал её 😁.
Атомные привычки – очень интересная книга. Прочел пока что 30%.
Отмененная поезда в Турцию
В середине мая собирались посетить Турцию, но в связи с пандемией Россия закрыла границы. Так поездка была отменена 😕.
Serjan Bratan
Этой весной я посмотрел казахстанский сериал под названием «Сержан братан». Рекомендую.
Выступление DubFX
Случайно попалось это видео. Выступление просто чудесное.
Tech
Tech
Подкасты
Книги
Изначально я собирался публиковать дайджест раз в неделю. Но как видите прошло три месяца с момента публикации прошлого дайджеста 🙂.
За это время произошло много различных событий, как хороших так и не очень. Здесь я традиционно пишу только о том что связано с техническими моментами.
]]>I originally wanted to publish this digest once a week. But it’s been more than three months since the last one 🙂.
During this time, a lot of different events happened, good and not so. Here I will traditionally write only about technical issues)
These projects have gained even more stars on GitHub:
Of course, it is a very small number of stars, but I’m still pleased)
There are also some new blog entries (I’m surprised myself 😁).
How to cache dependencies (GitLab) – en, ru
Store logs from Docker in Google Cloud – ru
Alacritty => Kitty
I decided to try Kitty instead of Alacritty and it seemed more comfortable. Support for tabs allows you to avoid using Tmux every time.
NeoVim => VSCodium
As an experiment, I decided to remove VS Code with all its settings and install VSCodium with the minimum of necessary plugins instead. Then I tried to start using it permanently instead of NeoVim. As a result, the new configuration turned out to be more convenient for me.
List of VSCodium plugins:
Brave browser
Installed this modern web browser and ran it a couple of times. This browser looks very nice, especially the start page with random background images. I’m also pleased with its focus on privacy.
AdBlocker Ultimate
Keeping privacy in mind, I also decided to install an unwanted ad blocker in Firefox. During a week of work, the plugin blocked about 10 thousand unwanted elements and trackers.
SemGrep
I also decided to try using a utility to search for potential bugs and vulnerabilities called SemGrep. The utility uses its own library with rules for validation. The number of rules in the library is still small, but it is possible to add your own rules there 😉.
Screencast
Here is my Screencast about setup own OpenVPN server. After the video was published, I added it to several subreddits and wrote a post about the Screencast on dev.to. As a result, we have a crazy 200 views 😂.
Russian version of this Screencast
Tatar-song translate
And here is my new experiment for the #берсүзтатарча project. In this video, I translated the song from Russian into Tatar.
I also tried posting posts on dev.to. In two months, I got a little more than 1000 views in total.
Duolingo – so far i got 137 crowns in this app
HelloTalk – another app for learning languages by communicating with native speakers. The chats are not very active, but you can find interesting people here)
Yandex Book – finally finished reading this book. I couldn’t finish reading it since 2019 🙂
Atomic Habits – very interesting book. I read it 30%.
Cancelled Turkey Travel
In mid-May we were going to go on a trip to Turkey. But due to the pandemic, this travel was canceled 😕.
Serjan Bratan
This spring I watched a Kazakh TV series called “Serjan Bratan”. I advise 😉.
DubFX live performance
I saw this video today. This performance is just wonderful!
Tech
Tech
Podcasts
Books
И вот хотелось еще прикрутить отправку логов в какой-нибудь удобный внешний сервис в котором их можно удобно хранить и анализировать, но при этом не хотелось ставить и конфигурировать дополнительный софт типа fluentd и т.д.
Короче мне было просто лень на самом деле 😃. А потом я случайно увидел что в докере из коробки есть драйвер для записи логов который называется gcplogs.
Итак, какие условия предоставляет Google Cloud. Если верить вот этой странице то нам доступно сохранение первых 50 гигабайт логов в месяц на проект бесплатно и далее по 0.5$ за гигабайт. В аккаунте по-умолчанию можно создать до 25 проектов.
В конце месяца я на всякий случай проверю сколько это в итоге стоит)
Дашборд для просмотра логов в real-time выглядит вот так:
Также здесь есть продвинутые средства для поиска и анализа логов с кучей фильтров.
Итак, решено. Прикручиваем 😉
Тут все можно поделить на 3 шага
Допустим что вы успешно зарегистрировались в GCP и создали проект. Теперь в строке поиска пишем Service Accounts и попадаем на страницу настройки сервисных аккаунтов.
Отлично!
Здесь мы создаем новый сервисный аккаунт.
Придумываем идентификатор для нового сервисного аккаунта.
В моем случае это просто ‘test’.
Добавляем созданному аккаунту роль “Logs Writer”.
Добавляем себя в owner’ов сервисного аккаунта.
Теперь в списке сервисных аккаунтов у нас появился наш только что созданный. Теперь идем в Manage keys и генерируем ключ доступа для этого аккаунта.
Генерируем ключ в формате JSON.
Сохраняем файл с ключом у себя на компьютере.
Теперь заливаем ключ на сервер. В качестве примера пусть будет путь /root/.gcp.json
Затем редактируем сервис в systemd
1 | vim /lib/systemd/system/docker.service |
И добавляем строчку Environment="GOOGLE_APPLICATION_CREDENTIALS=/root/.gcp.json"
1 | [Service] |
Перезапускаем Docker
1 | systemctl daemon-reload |
1 | systemctl restart docker |
Открываем docker-compose.yml и меняем настройки логирования
1 | version: '3.7' |
Затем рестартим docker-compose и идем смотреть наши логи в Google Cloud Log Explorer.
Готово =)
]]>Hi everybody!
Today I want to tell you about my experience of using GitLab CI dependency caching.
I have a small pet project where I usually experiment with new technologies and approaches. The repository of this project is stored in GitLab. There I configured CI/CD tasks for testing and deploying a project.
CI-task with testing usually completed in 2 minutes. But every time I thought about what actions are being performed in this time. An example is installing Python dependencies.
On one hand, this guarantees reproducible builds (let’s say hello to leftpad and mimemagick 😄).
But on the other hand, these actions are performed every time when I push changes to the repository. And that’s just a pet project.
Let’s try to enable caching 🤟
Here is an official GitLab documentation about CI caching with examples - https://docs.gitlab.com/ee/ci/caching
The project on which I tested CI-caching is written on Django and uses poetry for dependency and virtual environments management.
1 | stages: |
Here We install Debian packages and then install poetry through pip and install project dependencies with poetry.
1 | stages: |
I added some settings to tell pip and poetry where packages should be stored. Then I added ‘cache’ section and set poetry.lock and .gitlab-ci.yml files as key for cache.
This means that if at least one of the files is changed then packages should be installed from PyPI, but in another case will be used cached directories with already installed packages.
CI-task running time is decreased from 2 minutes to 1 minute. Of course, the checking and unpacking cache operation was added, but it’s still faster than installing dependencies from PyPI.
On the screenshot with the task logs, we can see how pip use the cache.
And here We can see that the poetry did not install anything new.
Cache dependencies in GitLab CI/CD are a powerful tool for faster-running tasks and the economy of resources.
]]>Всем привет!
Сегодня я решил написать короткую заметку о своем опыте использования кэша в GitLab CI.
Есть у меня небольшой pet-project на котором я обычно обкатываю различные нововведения. Репозиторий проекта хранится в GitLab и там же в CI настроены две задачи - на запуск тестов и на деплой.
Задача с тестами проходила довольно быстро – примерно за 2 минуты. Но каждый раз я задумывался о том что GitLab-runner каждый раз выполняет одно и то же действие с установкой Python-зависимостей.
Да, с одной стороны это гарантирует воспроизводимость сборки и бережет от возможных проблем с отсутствием нужного пакета в каталоге пакетов в самый ответственный момент (привет leftpad и mimemagick 😄).
Но с другой стороны у меня это всего лишь pet-project для которого все это некритично. Поэтому я решил прикрутить кэш для зависимостей.
Вот официальная документация с примерами кэширования зависимостей - https://docs.gitlab.com/ee/ci/caching/
Проект на котором я все тестировал написан на Django. Для управления зависимостей я использую poetry и через него же активирую virtualenv.
1 | stages: |
Здесь у меня устанавливаются пакеты в Debian, затем из pip устанавливается poetry и потом poetry доустанавливает необходимые пакеты для проекта.
1 | stages: |
Я добавил настройки указывающие для pip и poetry директории в которых нужно хранить установленные пакеты. Затем добавил эти директории в директиву cache и в качестве ключа указал два файла - poetry.lock и .gitlab-ci.yml
Это означает что в случае если эти два файла не изменялись то установленные зависимости берутся из кэша, в обратном случае мы все устанавливаем заново и кэшируем.
Время работы задачи с тестами снизилось с двух минут до одной. Распаковка закэшированных директорий также занимает время, но это происходит намного быстрее чем установка пакетов из PyPi. Если бы у меня было побольше зависимостей на проекте то ускорение было бы еще более ощутимым.
На этом скриншоте можно увидеть как устанавливается poetry и все зависимости достаются из кэша.
А тут видно что poetry install рапортует о том что никаких новых зависимостей устанавливать не нужно.
Кэширование на CI это мощная штука позволяющая экономить ресурсы и время.
Также для серьезного продакшна можно настроить более сложный конфиг и на каких-то ветках не использовать кэширование. В этом случае мы получаем и производительность и надежность.
Есть еще один вариант - это собирать Docker-контейнеры со всеми зависимостями, класть их в registry и потом использовать в CI. Я думаю на каком-то проекте стоит попробовать и его)
]]>С начала 2021 года прошло почти 5 недель, и я решил продолжить практику написания еженедельных отчетов, которую начал в прошлом году.
Как вы, наверное, уже заметили, новые отчеты отличаются от прошлогодних.
Основные различия
посты 2020 | посты 2021 |
---|---|
публикации только на русском | публикации на русском и английском |
нумерация постов жестко связана с номером недели | последовательная нумерация |
изображение без заголовка | основное изображение с заголовком |
планы без детализации | детализированные планы |
Главное изменение - публикация постов на английском языке. Мне сложно писать по-английски, поэтому предложения довольно короткие. Надеюсь, что это хотя бы точно передает их смысл 😃.
Я хочу сначала написать пост на английском и только потом перевести на русский. Также я хочу публиковать посты с некоторой задержкой - сначала пост на английском, потом тот же пост на русском. Это авторская методика обучения английскому)
Январь прошел очень быстро, и с начала этого года я почти ничего не публиковал в блоге.
Из интересного - я попробовал Oracle Cloud на практике. В рамках бесплатного плана вы можете создать 2 виртуальные машины с 1 виртуальным CPU, 1 Гб оперативной памяти и 35 Гб SSD. Такие виртуальные машины я часто покупал в Aruba Cloud и PQ Hosting за 1 евро. Теперь я пользуюсь также и этими бесплатными машинами.
Также мой проект docker-compose-php набрал 20 звёзд на GitHub. Мелочь, а приятно )
CyberTat 2077. Фантазия авторов на тему Татарстана будущего.
achannarasappa/ticker - утилита для мониторинга стоимости акций в терминале
@shugozhor73 - Симбирский шугожор
https://copychar.cc/ - коллекция специальных символов
Tech
Tech
Подкасты
Книги
Almost 5 weeks have passed since the beginning of 2021, and I decided to continue the practice of writing weekly reports that I started last year.
As you probably already noticed, the new reporting posts are different from last year.
Main differences
2020 posts | 2021 posts |
---|---|
publication in Russian only | publication in Russian and in English |
numbering is rigidly linked to the week number | sequential numbering |
cover image without title | cover image with title |
planning without details | specific goals |
The main change is the publication of posts in English. I find it difficult to write in English and therefore the sentences are rather short. I hope that this at least accurately conveys their meaning 😃.
I want to first write the post in English and only then translate it into Russian. Also, I want to publish posts with some delay - first a post in English, then the same post in Russian. This is the author’s method of teaching English)
January went by very quickly and I’ve posted almost nothing on the blog since the beginning of this year.
What I can say of interest is this - I tried Oracle Cloud in practice. As part of the free plan there you can create 2 virtual machines with 1 vCPU 1 Gb RAM and 35 Gb SSD. Such virtual machines I often bought from Aruba Cloud and PQ Hosting for 1 euro. Now I also use these free machines.
Also, my docker-compose-php project got 20 stars on GitHub.
CyberTat 2077. The authors’ fantasy about Tatarstan of the future.
achannarasappa/ticker - terminal stock watcher and stock position tracker
@shugozhor73 - Simbirsk Sugar eater
https://copychar.cc/ - Copy special characters to your clipboard
Tech
Tech
Podcasts
Books
Вообще мне нужно было в декабре опубликовать 4 поста из серии “ограниченный контент”, а сейчас стоило бы подводить итоги прошедшего года.
Но так получилось что декабрь был очень суетной и я в блоге так ничего и не опубликовал. А сейчас вот открыл свою тудушечку и увидел что
давно запланировал добавить lazy-loading для картинок в этом блоге.
Сперва я хотел заюзать атрибут loading, но лень (каламбур!) взяла свое и
я просто установил плагин для Hexo под названием hexo-lazyload-image
Перед деплоем я замерил скорость загрузки страниц через Pagespeed Insights, а затем померил еще раз.
Получил вот такие результаты:
Прирост составил:
Надеюсь что это поможет сэкономить немного трафика у посетителeй сайта (у тех кто свалит не доскроллив страницу до конца, лол).
Есть правда и побочные эффекты - если быстро скроллить страницу то приходится еще ждать пока подтянутся изображения. Но в целом решение вроде ок.
Возможно нативное браузерное решение будет лучше. Возможно попробую и его.
]]>Вообще мне нужно было в декабре опубликовать 4 поста из серии “ограниченный контент”, а сейчас стоило бы подводить итоги прошедшего года.
Но так получилось что декабрь был очень суетной и я в блоге так ничего и не опубликовал. А сейчас вот открыл свою тудушечку и увидел что
давно запланировал добавить lazy-loading для картинок в этом блоге.