Путь Golang
411 subscribers
16 photos
2 files
37 links
Всё о Golang

Ресурсы и материалы: https://t.iss.one/waygolang/12

Кроме чата, Golang обсудить можно тут: https://t.iss.one/gogolang
Download Telegram
🖖 Ладно, пусть будет своя болталка
🔸 Коллега прислал ссылку на интересный проект. Пакет предоставляет возможность пользоваться функциями из библиотек разных систем. Насколько я понимаю, поддерживается пока только Darwin и Linux:
https://github.com/ebitengine/purego

🫴 Вместо тысячи слов:
func main() {
libc, err := purego.Dlopen(
getSystemLibrary(),
purego.RTLD_NOW|purego.RTLD_GLOBAL,
)
if err != nil {
panic(err)
}
var puts func(string)
purego.RegisterLibFunc(&puts, libc, "puts")
puts("Calling C from Go without Cgo!")
}

• Кросскомпиляция
• Динамическая подгрузка
• Отсутствие врапперов
🏆 Хотите конкурс на интерес? У меня есть.

Представьте банальную задачу. Ваш сервис что-то постоянно делает, Допустим раз в час обрабатывает какие-то данные и записывает их обработанными. Раз в месяц вы хотите сбросить какой-то счётчик. Раз в месяц от некой стартовой даты Tstart. Существуют два глобальных варианта:

• При старте и после каждого сброса счётчика записывать значение, когда надо сбросить счётчик, прибавив месяц — время Tx. Каждый раз проверять на now.Before(Tx)
• При старте и каждый сброс счётчика записывать текущее время. Каждую обработку проверять, не истёк ли месяц.

В обоих случаях надо или прибавить месяц, или отнять.

🥁 Банальщина какая-то. Давайте напишем функцию(и) добавления/вычитания месяцев к time.Time (не обязательно текущему). С тестами.

🤖 chatGPT можно и интересно. Но я попрошу опубликовать полный диалог с ним.

❗️ По возможности размещайте свой код на go.dev/play

💐 Лайк, шар, репост, вот это всё.

🐰 Внутренний голос сказал: «Вставай, иди на охоту, будет весело»
🔹 Уже вчера, 4 апреля 2023 года вышел минорный релиз Go 1.20.3:
https://go.dev/doc/devel/release#go1.20.minor

☑️ Из интересного — вроде бы он закрыл раздражавший в Dependabot alerts баг с возможностью DoS в net/http и там ещё целой пачке библиотек.

☝️ Кстати о Dependabot alerts. Вы ведь знаете о Dependabot? Мир программирования оброс конечно офигенными помощниками — подсветка кода, линтеры, Copilot... Dependabot — это github умеет сообщать вам, если в зависимостях вашего софта есть известные уязвимости. Фишку надо включить. Рекомендую
😎 Я хотел подготовить небольшое показательное выступление по chatGPT и получил смешное. «I see, you're looking for ways to integrate custom encryption into your Golang HTTP services at a higher level», — говорит мне Cylon. А потом мы полчаса толчём варианты. А дальше — картинка. «Девочка, что ты плетёшь?..» (c)
👍 Очень характерная хорошая подсказка github Copilot во время рефакторинга
👍 И вот прямо буквально через строку тоже. Я это всё показываю в качестве рекламной паузы и для чистоты понимания возможностей Copilot. Обратите внимание, он посмотрел по аналогии, вытащив строку из комментария
😄 Четверг же это маленькая пятница?

👉 Есть такой популярный среди айтишников редактор — vim . И есть у него есть режим vim -y . Попробовали?

🖖 А теперь хорошая тренировка — попробуйте с помощью chatGPT выйти из редактора, запущенного в режиме vim -y

👇 Присылайте успешные диалоги с chatGPT в каменты
💥 В битве vim -y vs chatGPT выиграл vim -y

🤙 1:0, хромированный тостер!!!

👉 Для перехода в обычный режим нажмите Ctrl+L, а дальше как обычно из vim
🍺 Помню это был октябрь 2020. Я только устроился программистом в майнинг. Ездил от ст.м. Московская на 187 автобусе. И пытался слушать Go Time подкаст по дороге: https://changelog.com/gotime

🍺 Так вот. Еду я как-то, а там обсуждают, что из Golang удалить бы. И дядька один такой — я бы else удалил, я им не пользуюсь. И я такой наушники выронил — как это? Но решил для разнообразия попробовать.

🙅‍♂️ Первой моей реакцией было — как так можно-то? Жутко не удобно. На половине кейсов спотыкаешься и тратишь время на перестановки!!! switch ещё этот!!!

❤️ А где-то через пару месяцев я взглянул на код... И понял, что там где я заставил делать перестановки и выворачиваться из-за избегания else — там код читаемый, тестируемый и расширяемый. А там, где я так не делал, в ряде случаев он был запутанный и зачастую с ошибками (логическими).

🍓 Я не знаю до сих пор как это работает, но почему-то очень неудобно делать вложенные if, если избегать else и как-то эти вложения автоматом исчезают

🫵 А ты используешь else?

👉 Да, конечно, неявно такая практика рекомендуется и передовыми животноводами. но явного избегания else там нет:
https://google.github.io/styleguide/go/index
https://github.com/uber-go/guide/blob/master/style.md
#midjourney Будущее программирования с помощью ИИ
#game ⚡️⚡️⚡️ Вышла новая реал-тайм стратегия, написанная на Golang!
https://t.iss.one/roboden_game/35

• Игра написана на Golang
• Браузерная версия сделана на Go WASM (это может быть интересно с академической точки зрения)
• Игра наследует go-style — меньше бессмысленных действий
• Игра сделана в стиле мексиканских сериалов — вы можете играть в игру, мыть посуду, стирать, укачивать ребёнка, готовить кофий, иногда бросая взгляд на экран
• Именитые разработчики

👆Обратите внимание, завтра 21 апреля у них стрим.
#game ❤️ Собственно Искандер рассказывает про детали разработки на Хабре. Обещает цикл статей. Даже если вы никогда не будете писать игр на Golang — это всё равно интересно и познавательно:
https://habr.com/ru/articles/730848/
Соседний канал офигенный примерчик привёл.

func() {
f, err := net.Dial("tcp", "1.1.1.1:443") // network is down
defer f.Close()

fmt.Println(err)
}()

Что будет на экране? https://t.iss.one/HowToGoWrong/150

А тут?

func() {
f, err := os.Open("does-not-exist")
defer f.Close()

fmt.Println(err)
}()

https://t.iss.one/HowToGoWrong/148
Forwarded from addmeto (Grigory Bakunov)
Пользователи бета-версии нового Github CoPilot смогли добраться до его промпта, т.е. текстового запроса который помещается в каждый диалог, чтобы GPT4 делал то, что задумано. Посмотрите как любопытно.

Для тех кто не программирует, посмотрите на картинку - вот так выглядит будущее программирование искусственного интеллекта https://twitter.com/marvinvonhagen/status/1657060506371346432
⚡️⚡️⚡️ OpenAI сделало функционал «поделиться диалогом» для chatGPT. Вот например про golang, Wireguard VPN и preshared keys:
https://chat.openai.com/share/ff6af8d8-2aba-4f8d-a898-e655d415e486

Поделиться диалогом — это прямо нереально круто!
Forwarded from Эшер II A+
🎓 Помните, Минцифра рекламировала федеральную образовательную программу для старшеклаcсников? Типа программистов там готовят: https://digital.gov.ru/ru/events/46032/

🙀 Это задачка курса по Python с ожидаемым ответом в одной из школ (в рамках этой программы). Ответы проверяются платформой. Полученный результат сравнивается с ожидаемым.

🤷‍♂️ А потом я удивляюсь, что 146% кандидатов на разработчика на Golang не могут объяснить, что такое горутины. Не, ну счастливо, конечно. Но Максут Игоревич, это бардак вселенского масштаба.

☝️ Для непрограммистов — в программировании нельзя проверять числа с плавающей точкой на равенство. В данном случае платформа проверяет ученика по результату в том числе, и по вот этому числу.

🫵 Если ты программист и не в курсе, о чём я, то... то я не знаю что