Как и зачем писать тесты?
📹 https://youtu.be/sVevmvyFmCA
Смотрим, комментируем, лайкаем 😉
Гора полезных ссылок в первом комментарии 👇
Смотрим, комментируем, лайкаем 😉
Гора полезных ссылок в первом комментарии 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15🦄2❤🔥1👍1🌭1
Вы наверняка знаете про Hugo — генератор статических сайтов, написанный, кстати, на Go.
Недавно у меня появилась необходимость сделать резюме, но я не хотел делать его в Google Docs или чём-то подобном, потому что такие доки у меня вечно теряются. Верстать руками HTML я тоже не хотел, поэтому просто заполнил все нужные данные в YAML-файлах, подготовил шаблон, а дальше Hugo сделал всё сам. В итоге получилось сделать всё так, что при конвертации страницы в PDF всё помещается на одну страницу.
Если вам нужен шаблон резюме, можете забрать его здесь 👉 https://github.com/tomakado/cv
Недавно у меня появилась необходимость сделать резюме, но я не хотел делать его в Google Docs или чём-то подобном, потому что такие доки у меня вечно теряются. Верстать руками HTML я тоже не хотел, поэтому просто заполнил все нужные данные в YAML-файлах, подготовил шаблон, а дальше Hugo сделал всё сам. В итоге получилось сделать всё так, что при конвертации страницы в PDF всё помещается на одну страницу.
Если вам нужен шаблон резюме, можете забрать его здесь 👉 https://github.com/tomakado/cv
❤6❤🔥4🔥2
Через какое-то время мой доклад будет доступен для всех, а пока что его могут посмотреть любимки на Бусти, Патреоне и в платном канале:
Новый ролик тоже в процессе производства. Но если вы ещё не смотрели видос про тестирование, то вы знаете, что делать 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥5👍1👏1
Поделюсь с вами ещё одним исследованием рынка труда в IT. Если вам надоела эта тема — извините, в последние месяцы это всё было для меня очень актуально. Но вообще держать на руку на пульсе и отслеживать рынок полезно, даже если вы не собираетесь менять работу в обозримом будущем.
Так вот, devjobsscanner представил своё исследование рынка с 8 наиболее востребованными языками программирования в прошлом году. В топ вошёл, конечно, и💎 . Методика у исследования немного странная: как я понял, из выборки исключены вакансии без упоминания стека (типа просто “Backend developer”). С одной стороны идея понятна, с другой стороны стек можно было вытащить из описания, но для кого-то это, видимо, непостижимый рокет саенс.
Нужен кто-то, кто сделает метаисследование, чтобы сгладить сдвиги каждого из отдельных 😄
P.S. Поздравляю всех гоферок и вообще женщин в IT с Международным женским днём👀 🌷
Так вот, devjobsscanner представил своё исследование рынка с 8 наиболее востребованными языками программирования в прошлом году. В топ вошёл, конечно, и
Нужен кто-то, кто сделает метаисследование, чтобы сгладить сдвиги каждого из отдельных 😄
P.S. Поздравляю всех гоферок и вообще женщин в IT с Международным женским днём
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰3👍2
algo — коллекция решений задач с интервью с лайвкодингом на Go.
Если вы ещё никогда не ходили на кодинг-интервью (например, вы стажёр, джуниор или только учитесь), то наверняка полезно. Как минимум облегчит тренировки и подготовку.
У меня опыт такой, что я обычно прохожу кодинг-интервью без подобных тренировок, но у меня все эти алгоритмы были в универеи частично на работе + в FAANG я не пробовался.
Если вы ещё никогда не ходили на кодинг-интервью (например, вы стажёр, джуниор или только учитесь), то наверняка полезно. Как минимум облегчит тренировки и подготовку.
У меня опыт такой, что я обычно прохожу кодинг-интервью без подобных тренировок, но у меня все эти алгоритмы были в универе
GitHub
GitHub - hoanhan101/algo: 101+ coding interview problems in Go
101+ coding interview problems in Go. Contribute to hoanhan101/algo development by creating an account on GitHub.
👍11😍2❤1
Forwarded from Николай Тузов
Интеграция ChatGPT в Raycast ❤️
https://www.raycast.com/ai
Недавно у ChatGPT появился API, что позволяет творить всякие крутые штуки, ограниченные только фантазией разработчиков.
И одна из наиболее крутых и ожидаемых мною штук - интеграция с Raycast. Ожидал я её давно, но узнал только сегодня. Посмотрел демку от разработчиков, сказал своё "shut up and take my money" и присоединился к waitlist.
На мой взгляд, Raycast это самый лучший кандидат в клиенты для ChatGPT на маках, т.к. у него очень удобный, красивый и гибкий UI. К тому же, нативный, а не какой-нибудь электрон.
Вместо того, чтобы искать нужную вкладку или окошко, вы просто вызываете привычным хоткеем окошко Рэйкаста и пишете свой вопрос/команду, получаете результат. Плюс тут есть привычные для Рэйкаста плюшки: возможность создания "команд" (по сути, макросов из промтов), возможность назначения хоткеев на какие-то конкретные фичи и др.
Уже не терпится попробовать =)
#chatgpt #raycast
https://www.raycast.com/ai
Недавно у ChatGPT появился API, что позволяет творить всякие крутые штуки, ограниченные только фантазией разработчиков.
И одна из наиболее крутых и ожидаемых мною штук - интеграция с Raycast. Ожидал я её давно, но узнал только сегодня. Посмотрел демку от разработчиков, сказал своё "shut up and take my money" и присоединился к waitlist.
На мой взгляд, Raycast это самый лучший кандидат в клиенты для ChatGPT на маках, т.к. у него очень удобный, красивый и гибкий UI. К тому же, нативный, а не какой-нибудь электрон.
Вместо того, чтобы искать нужную вкладку или окошко, вы просто вызываете привычным хоткеем окошко Рэйкаста и пишете свой вопрос/команду, получаете результат. Плюс тут есть привычные для Рэйкаста плюшки: возможность создания "команд" (по сути, макросов из промтов), возможность назначения хоткеев на какие-то конкретные фичи и др.
Уже не терпится попробовать =)
#chatgpt #raycast
Please open Telegram to view this post
VIEW IN TELEGRAM
Raycast
AI that works with your OS - Raycast AI
Raycast AI combines leading models like GPT-5.5 and Claude Opus 4.8 with powerful extensions - right on your OS.
❤2👍2🤔1
Я, кстати, обновил свой текстовый блог.
• новый дизайн — более аккуратный и адаптивный
• добавил поиск — да, на статическом сайте
• актуализировал информацию о себе
• перенёс сайт с Digital Ocean на GitHub Pages — второй вариант бесплатный, и не нужно свой раннер для GitHub Actions держать
Постепенно буду выкладывать туда уже публично доступные текстовые версии роликов.
У меня также куплен домен deferpanic.dev (и ещё куча других, я их коллекционирую :), и пока что я его приспособил только для инстанса Мастодона. Позже точно сделаю на нём блатную почту, но идей для того, что будет открываться по адресу deferpanic.dev особо нет. Если у вас есть мысли, делитесь в комментах )
• новый дизайн — более аккуратный и адаптивный
• добавил поиск — да, на статическом сайте
• актуализировал информацию о себе
• перенёс сайт с Digital Ocean на GitHub Pages — второй вариант бесплатный, и не нужно свой раннер для GitHub Actions держать
Постепенно буду выкладывать туда уже публично доступные текстовые версии роликов.
У меня также куплен домен deferpanic.dev (и ещё куча других, я их коллекционирую :), и пока что я его приспособил только для инстанса Мастодона. Позже точно сделаю на нём блатную почту, но идей для того, что будет открываться по адресу deferpanic.dev особо нет. Если у вас есть мысли, делитесь в комментах )
🔥7👍3👻1
⚠️ Набрасываю на SQL
Я как-то раз писал про то, почему я не люблю SQL (именно язык как концепцию и философию, а не конкретные реализации), зато люблю про это говорить — уже третий пост, где я это упоминаю. Тем не менее я сейчас пишу код для следующего ролика, и я сознательно решил там использовать PostgreSQL. Причина простая — это видос про написание проекта. Такие видосы по моей гипотезе полезны прежде всего джунам, чтобы те могли приложить к резюме свой гитхаб, где лежит реализованный проект. И в данном случае джун, умеющий хоть как-то в PostgreSQL будет иметь преимущество, потому что постгря сейчас практически везде.
Так вот, я вчера мозг сломал в трёх местах, пока пытался написать запрос с элементарной фильтрацией по колонкам с таймстемпами. Не то что бы это что-то сложное, но способов выразить время и фильтры по времени в PostgreSQL миллион (как и положено в SQL). А к ним добавляется ещё неясность относительно того, как эти даты и интервалы правильно передавать конкретному драйверу — авторы того драйвера, что у меня решили, что не будут делать авто маппинг time.Duration в интервалы. Почему? Потому что не будут.
Вообще я думал про то, что в СУБД нужно выкинуть/сделать SQL опциональным и предоставлять бинарный протокол. Почему SQL нужен аналитикам — понятно. Зачем промежуточный язык для продакшен-кода — мне непонятно. Если бы у СУБД существовал бинарный протокол, то язык запросов мог бы быть выражен инструментами языка, на котором ведётся разработка. Да, я знаю про ORM и ActiveRecord. Но они всё равно превращают код на одном языке в код на SQL. Тут уж я скорее солидарен с го-коммьюнити — если и писать SQL-запросы, то на самом SQL.
Есть тула, на которую я недавно наткнулся — sqlc. Она отчасти, но решает эту проблему: вы описываете схему БД, как обычно вы это делаете в миграциях на создание таблиц, а дальше sqlc генерит код. Сгенерированный код реализует только CRUD, но при этом никто не мешает в отдельном файле рядом дописать к структурам методы, которых вам не хватает. В sqlc нравится, что это не ORM, а именно кодогенерация — при необходимости с sqlc можно будет постепенно без проблем съехать или, например, подменить части сгенерированного кода (засчёт эмбеддинга и прочих танцев, но всё равно). Выкинуть ORM просто так уже не получится.
Я как-то раз писал про то, почему я не люблю SQL (именно язык как концепцию и философию, а не конкретные реализации), зато люблю про это говорить — уже третий пост, где я это упоминаю. Тем не менее я сейчас пишу код для следующего ролика, и я сознательно решил там использовать PostgreSQL. Причина простая — это видос про написание проекта. Такие видосы по моей гипотезе полезны прежде всего джунам, чтобы те могли приложить к резюме свой гитхаб, где лежит реализованный проект. И в данном случае джун, умеющий хоть как-то в PostgreSQL будет иметь преимущество, потому что постгря сейчас практически везде.
Так вот, я вчера мозг сломал в трёх местах, пока пытался написать запрос с элементарной фильтрацией по колонкам с таймстемпами. Не то что бы это что-то сложное, но способов выразить время и фильтры по времени в PostgreSQL миллион (как и положено в SQL). А к ним добавляется ещё неясность относительно того, как эти даты и интервалы правильно передавать конкретному драйверу — авторы того драйвера, что у меня решили, что не будут делать авто маппинг time.Duration в интервалы. Почему? Потому что не будут.
Вообще я думал про то, что в СУБД нужно выкинуть/сделать SQL опциональным и предоставлять бинарный протокол. Почему SQL нужен аналитикам — понятно. Зачем промежуточный язык для продакшен-кода — мне непонятно. Если бы у СУБД существовал бинарный протокол, то язык запросов мог бы быть выражен инструментами языка, на котором ведётся разработка. Да, я знаю про ORM и ActiveRecord. Но они всё равно превращают код на одном языке в код на SQL. Тут уж я скорее солидарен с го-коммьюнити — если и писать SQL-запросы, то на самом SQL.
Есть тула, на которую я недавно наткнулся — sqlc. Она отчасти, но решает эту проблему: вы описываете схему БД, как обычно вы это делаете в миграциях на создание таблиц, а дальше sqlc генерит код. Сгенерированный код реализует только CRUD, но при этом никто не мешает в отдельном файле рядом дописать к структурам методы, которых вам не хватает. В sqlc нравится, что это не ORM, а именно кодогенерация — при необходимости с sqlc можно будет постепенно без проблем съехать или, например, подменить части сгенерированного кода (засчёт эмбеддинга и прочих танцев, но всё равно). Выкинуть ORM просто так уже не получится.
Telegram
defer panic
Сижу и мечтаю о том, как все перестанут использовать SQL в частности и реляционный подход в целом везде, где только можно, и натыкаюсь на нечто под названием TablaM — реляционный язык программирования.
Вообще реляционные СУБД всегда казались мне странным…
Вообще реляционные СУБД всегда казались мне странным…
👍7
Иногда мне нужно проверить какой-нибудь маленький сниппет кода, и обычно для этого я открываю Go Playground. А тут мне попалась штука под названием gore. Это по сути REPL для Go! Т.е. можно построчно и интерактивно вводить части кода и тут же выполнять их. Конечно, до лисповых реплов ему как до Луны (да и до питонячего, я подозреваю, тоже), но для описанного мной юзкейса в самый раз.
👍9🔥5
Делюсь с вами моим докладом с Podlokda Go Crew про принципы построения CLI-приложений.
Возможно, вам покажется, что говорить в 2023м о консольных приложениях странно, но в докладе мы покажем, почему CLI-приложения еще актуальны. Разберемся, какие инструменты помогут нам баланс и сделать такие приложения максимально удобными и понятными пользователю. На закуску предложим шаблон с конфигами, который можно унести к себе в команду.
Спасибо Подлодке за то, что позвали выступить.
📹 https://youtu.be/kbciYciNO4Y
Возможно, вам покажется, что говорить в 2023м о консольных приложениях странно, но в докладе мы покажем, почему CLI-приложения еще актуальны. Разберемся, какие инструменты помогут нам баланс и сделать такие приложения максимально удобными и понятными пользователю. На закуску предложим шаблон с конфигами, который можно унести к себе в команду.
Спасибо Подлодке за то, что позвали выступить.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1👏1
В следующем релизе Go, кажется, завезут структурированный логгер прямо в стандартную библиотеку
https://go.googlesource.com/proposal/+/master/design/56345-structured-logging.md
https://go.googlesource.com/proposal/+/master/design/56345-structured-logging.md
🔥14
Не пишите комменты
В какой-то момент я перестал практически полностью писать комменты к коду и отключил везде линтер, который проверяет их наличие. Потому что 99,(9)% времени комменты либо описывают что-то очевидное (
• Код запутан из-за оптимизации или специфики алгоритма
• В языке нет вменяемой системы типов (привет, Clojure)
• Выразительность языка на уровне write only (привет, Haskell)
Вторые два случая нас не интересуют — мы же тут про Go говорим. Да и с первым всё понятно — если алгоритм или предметная область сложные сами по себе, тут уже ничего не поделаешь. В остальных случаях, когда я вижу комменты к коду, которые добавлены «для ясности», то я понимаю, что на самом деле человек потратил лишнее время, для того чтобы написать ясный комментарий (если повезло) вместо того, чтобы написать ясный код.
Я вдруг вспомнил столь холиварную тему, т.к. за завтраком наткнулся на ролик с офигенного канала Code Aesthetic: https://youtu.be/Bf7vDBBOBUA
Но вообще интересно почитать, что думаете вы. Поэтому если не согласны (и согласны тоже), то напишите в комментах, почему — к этому посту, не в коде😀
В какой-то момент я перестал практически полностью писать комменты к коду и отключил везде линтер, который проверяет их наличие. Потому что 99,(9)% времени комменты либо описывают что-то очевидное (
GetUser returns user или ID is ID of user), либо описывают что-то очевидное и врут, потому что забыли обновить коммент или неточно выразили свои мысли (GetUser is goroutine-safe). Я понимаю, что кто-то может возразить, что бывают случаи, когда комменты нужны. Я вижу для себя три возможные причины:• Код запутан из-за оптимизации или специфики алгоритма
• В языке нет вменяемой системы типов (привет, Clojure)
• Выразительность языка на уровне write only (привет, Haskell)
Вторые два случая нас не интересуют — мы же тут про Go говорим. Да и с первым всё понятно — если алгоритм или предметная область сложные сами по себе, тут уже ничего не поделаешь. В остальных случаях, когда я вижу комменты к коду, которые добавлены «для ясности», то я понимаю, что на самом деле человек потратил лишнее время, для того чтобы написать ясный комментарий (если повезло) вместо того, чтобы написать ясный код.
Я вдруг вспомнил столь холиварную тему, т.к. за завтраком наткнулся на ролик с офигенного канала Code Aesthetic: https://youtu.be/Bf7vDBBOBUA
Но вообще интересно почитать, что думаете вы. Поэтому если не согласны (и согласны тоже), то напишите в комментах, почему — к этому посту, не в коде
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Don't Write Comments
Why you shouldn't write comments in your code (write documentation)
Access to code examples, discord, song names and more at https://www.patreon.com/codeaesthetic
References:
https://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/?
Access to code examples, discord, song names and more at https://www.patreon.com/codeaesthetic
References:
https://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/?
👍5🔥2👎1🤔1
GitHub Copilot получил вполне логичное развитие, и теперь по сути в него встроен ChatGPT. Давно пора! Теперь не нужно будет копировать код, вставлять в ChatGPT и просить что-то с ним сделать, всё стало чуть удобнее.
Тут, правда, нужно оговориться, что это скорее анонс, чем уже рабочий продукт.
https://github.com/features/preview/copilot-x
Тут, правда, нужно оговориться, что это скорее анонс, чем уже рабочий продукт.
https://github.com/features/preview/copilot-x
❤2👍1
Как вы относитесь к «классическим» паттернам из ООП в Go? (Visitor, Observer и так далее)
Anonymous Poll
29%
А как без них?
19%
Иногда применяю, но по привычке после Жавы/Питона/younameit
41%
Воняет Жавой, не нужны
11%
Свой вариант в комментарии
🎙️Новая камера, мощь Apple Silicon, ChatGPT, Breaking Bad / defer panic podcast
У меня давно была мысль попробовать делать подкаст. И вот наконец-то я решил начать! Для простоты первый выпуск в режиме соло без гостей, и скорее всего так и останется какое-то время.
Формат подкаста такой: я рассказываю, как у меня дела в первую очередь относительно канала, а также рассуждаю вслух на какие-то темы. Первый (нулевой, если быть точнее) выпуск, он же пилот — это эксперимент, поэтому я очень жду фидбек сначала от платных подписчиков, а потом и от вас.
Подкаст сейчас доступен подписчикам платного канала, а так же бустерам и патронам.
💳 dfrp.cc/A6wciz
💳 dfrp.cc/Fs8Xr
Темы выпуска
- О чем подкаст
- Зачем я его начал вести
- Вернулся микрофон
- Новая монтажная машина
- Новая камера
- Агрегатор статей на базе ChatGPT
- Заменит ли ChatGPT всех?
- Я посмотрел Breaking Bad
У меня давно была мысль попробовать делать подкаст. И вот наконец-то я решил начать! Для простоты первый выпуск в режиме соло без гостей, и скорее всего так и останется какое-то время.
Формат подкаста такой: я рассказываю, как у меня дела в первую очередь относительно канала, а также рассуждаю вслух на какие-то темы. Первый (нулевой, если быть точнее) выпуск, он же пилот — это эксперимент, поэтому я очень жду фидбек сначала от платных подписчиков, а потом и от вас.
Подкаст сейчас доступен подписчикам платного канала, а так же бустерам и патронам.
Темы выпуска
- О чем подкаст
- Зачем я его начал вести
- Вернулся микрофон
- Новая монтажная машина
- Новая камера
- Агрегатор статей на базе ChatGPT
- Заменит ли ChatGPT всех?
- Я посмотрел Breaking Bad
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3
defer panic
🎙️Новая камера, мощь Apple Silicon, ChatGPT, Breaking Bad / defer panic podcast У меня давно была мысль попробовать делать подкаст. И вот наконец-то я решил начать! Для простоты первый выпуск в режиме соло без гостей, и скорее всего так и останется какое…
FYI: если вы ставили Телеграм из App Store, оплатить доступ в платный канал не получится — требование Apple 😒
Поэтому нужно это делать с десктопа или веба. Пишу, т.к. вижу висящие запросы на вступление, а некоторые подписчики писали, что у них на девайсах заблокирована оплата, поэтому они в висящих запросах и остались.
Поэтому нужно это делать с десктопа или веба. Пишу, т.к. вижу висящие запросы на вступление, а некоторые подписчики писали, что у них на девайсах заблокирована оплата, поэтому они в висящих запросах и остались.
Please open Telegram to view this post
VIEW IN TELEGRAM
Пилотный эпизод подкаста вышел на основных платформах:
📹 YouTube
🍎 Apple Podcasts
🎵 Spotify
🎵 Яндекс.Музыка
🎧 SoundStream
Позже подтянутся Google Подкасты и Overcast.
Позже подтянутся Google Подкасты и Overcast.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Чтобы сгенерировать видеоряд для подкаста на ютуб, я взял Game of Life и начал играться с параметрами. Несмотря на то, что использовалась в итоге только одна конфигурация, всяких красивых залипательных штук получилось много. Вот такая красота вышла.
🔥1