🔸 Коллега прислал ссылку на интересный проект. Пакет предоставляет возможность пользоваться функциями из библиотек разных систем. Насколько я понимаю, поддерживается пока только Darwin и Linux:
https://github.com/ebitengine/purego
🫴 Вместо тысячи слов:
• Динамическая подгрузка
• Отсутствие врапперов
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!")
}
• Динамическая подгрузка
• Отсутствие врапперов
GitHub
GitHub - ebitengine/purego
Contribute to ebitengine/purego development by creating an account on GitHub.
🏆 Хотите конкурс на интерес? У меня есть.
⏰ Представьте банальную задачу. Ваш сервис что-то постоянно делает, Допустим раз в час обрабатывает какие-то данные и записывает их обработанными. Раз в месяц вы хотите сбросить какой-то счётчик. Раз в месяц от некой стартовой даты Tstart. Существуют два глобальных варианта:
• При старте и после каждого сброса счётчика записывать значение, когда надо сбросить счётчик, прибавив месяц — время Tx. Каждый раз проверять на now.Before(Tx)
• При старте и каждый сброс счётчика записывать текущее время. Каждую обработку проверять, не истёк ли месяц.
В обоих случаях надо или прибавить месяц, или отнять.
🥁 Банальщина какая-то. Давайте напишем функцию(и) добавления/вычитания месяцев к time.Time (не обязательно текущему). С тестами.
🤖 chatGPT можно и интересно. Но я попрошу опубликовать полный диалог с ним.
❗️ По возможности размещайте свой код на go.dev/play
💐 Лайк, шар, репост, вот это всё.
🐰 Внутренний голос сказал: «Вставай, иди на охоту, будет весело»
⏰ Представьте банальную задачу. Ваш сервис что-то постоянно делает, Допустим раз в час обрабатывает какие-то данные и записывает их обработанными. Раз в месяц вы хотите сбросить какой-то счётчик. Раз в месяц от некой стартовой даты Tstart. Существуют два глобальных варианта:
• При старте и после каждого сброса счётчика записывать значение, когда надо сбросить счётчик, прибавив месяц — время Tx. Каждый раз проверять на now.Before(Tx)
• При старте и каждый сброс счётчика записывать текущее время. Каждую обработку проверять, не истёк ли месяц.
В обоих случаях надо или прибавить месяц, или отнять.
🥁 Банальщина какая-то. Давайте напишем функцию(и) добавления/вычитания месяцев к time.Time (не обязательно текущему). С тестами.
🤖 chatGPT можно и интересно. Но я попрошу опубликовать полный диалог с ним.
❗️ По возможности размещайте свой код на go.dev/play
💐 Лайк, шар, репост, вот это всё.
🐰 Внутренний голос сказал: «Вставай, иди на охоту, будет весело»
go.dev
Go Playground - The Go Programming Language
🔹 Уже вчера, 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 умеет сообщать вам, если в зависимостях вашего софта есть известные уязвимости. Фишку надо включить. Рекомендую
https://go.dev/doc/devel/release#go1.20.minor
☑️ Из интересного — вроде бы он закрыл раздражавший в Dependabot alerts баг с возможностью DoS в net/http и там ещё целой пачке библиотек.
☝️ Кстати о Dependabot alerts. Вы ведь знаете о Dependabot? Мир программирования оброс конечно офигенными помощниками — подсветка кода, линтеры, Copilot... Dependabot — это github умеет сообщать вам, если в зависимостях вашего софта есть известные уязвимости. Фишку надо включить. Рекомендую
go.dev
Release History - The Go Programming Language
😎 Я хотел подготовить небольшое показательное выступление по chatGPT и получил смешное. «I see, you're looking for ways to integrate custom encryption into your Golang HTTP services at a higher level», — говорит мне Cylon. А потом мы полчаса толчём варианты. А дальше — картинка. «Девочка, что ты плетёшь?..» (c)
💥 В битве
👉 Для перехода в обычный режим нажмите
vim -y
vs chatGPT
выиграл vim -y
🤙 1:0, хромированный тостер!!!👉 Для перехода в обычный режим нажмите
Ctrl+L
, а дальше как обычно из vim
🍺 Помню это был октябрь 2020. Я только устроился программистом в майнинг. Ездил от ст.м. Московская на 187 автобусе. И пытался слушать Go Time подкаст по дороге: https://changelog.com/gotime
🍺 Так вот. Еду я как-то, а там обсуждают, что из Golang удалить бы. И дядька один такой — я бы
🙅♂️ Первой моей реакцией было — как так можно-то? Жутко не удобно. На половине кейсов спотыкаешься и тратишь время на перестановки!!! switch ещё этот!!!
❤️ А где-то через пару месяцев я взглянул на код... И понял, что там где я заставил делать перестановки и выворачиваться из-за избегания
🍓 Я не знаю до сих пор как это работает, но почему-то очень неудобно делать вложенные
🫵 А ты используешь
👉 Да, конечно, неявно такая практика рекомендуется и передовыми животноводами. но явного избегания
• https://google.github.io/styleguide/go/index
• https://github.com/uber-go/guide/blob/master/style.md
🍺 Так вот. Еду я как-то, а там обсуждают, что из 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
Changelog
The Go Time podcast
Your source for wide-ranging discussions from all around the Go community.
#game ⚡️⚡️⚡️ Вышла новая реал-тайм стратегия, написанная на Golang!
https://t.iss.one/roboden_game/35
• Игра написана на Golang
• Браузерная версия сделана на Go WASM (это может быть интересно с академической точки зрения)
• Игра наследует go-style — меньше бессмысленных действий
• Игра сделана в стиле мексиканских сериалов — вы можете играть в игру, мыть посуду, стирать, укачивать ребёнка, готовить кофий, иногда бросая взгляд на экран
• Именитые разработчики
👆Обратите внимание, завтра 21 апреля у них стрим.
https://t.iss.one/roboden_game/35
• Игра написана на Golang
• Браузерная версия сделана на Go WASM (это может быть интересно с академической точки зрения)
• Игра наследует go-style — меньше бессмысленных действий
• Игра сделана в стиле мексиканских сериалов — вы можете играть в игру, мыть посуду, стирать, укачивать ребёнка, готовить кофий, иногда бросая взгляд на экран
• Именитые разработчики
👆Обратите внимание, завтра 21 апреля у них стрим.
Telegram
Roboden Game
Рободен готов! 🔥
Можно играть прямо из браузера, а можно скачать дистрибутивы под Windows и Linux: https://quasilyte.itch.io/roboden
Завтра, 21-го апреля в 20:00 по Москве будем стримить игровой процесс. Подключайтесь, будем рады вас видеть. ❤️
Можно играть прямо из браузера, а можно скачать дистрибутивы под Windows и Linux: https://quasilyte.itch.io/roboden
Завтра, 21-го апреля в 20:00 по Москве будем стримить игровой процесс. Подключайтесь, будем рады вас видеть. ❤️
#game ❤️ Собственно Искандер рассказывает про детали разработки на Хабре. Обещает цикл статей. Даже если вы никогда не будете писать игр на Golang — это всё равно интересно и познавательно:
https://habr.com/ru/articles/730848/
https://habr.com/ru/articles/730848/
Хабр
Разработка игр на Go: шейдеры
Давненько я не писал никаких статей на Хабре. Я планировал вести серию заметок о разработке игр на Go и начал я с рендеринга текста , но меня не хватило даже на второй текст. Что же, настало время...
Соседний канал офигенный примерчик привёл.
А тут?
func() {Что будет на экране? https://t.iss.one/HowToGoWrong/150
f, err := net.Dial("tcp", "1.1.1.1:443") // network is down
defer f.Close()
fmt.Println(err)
}()
А тут?
func() {https://t.iss.one/HowToGoWrong/148
f, err := os.Open("does-not-exist")
defer f.Close()
fmt.Println(err)
}()
Telegram
How to Go wrong
Что будет на экране?
<nil> / dial tcp 1.1.1.1:443: connect: no route to host / panic: runtime error: invalid memory address or nil pointer dereference / ( ╯°益°) ╯彡 ┻━┻
<nil> / dial tcp 1.1.1.1:443: connect: no route to host / panic: runtime error: invalid memory address or nil pointer dereference / ( ╯°益°) ╯彡 ┻━┻
Forwarded from addmeto (Grigory Bakunov)
Пользователи бета-версии нового Github CoPilot смогли добраться до его промпта, т.е. текстового запроса который помещается в каждый диалог, чтобы GPT4 делал то, что задумано. Посмотрите как любопытно.
Для тех кто не программирует, посмотрите на картинку - вот так выглядит будущее программирование искусственного интеллекта https://twitter.com/marvinvonhagen/status/1657060506371346432
Для тех кто не программирует, посмотрите на картинку - вот так выглядит будущее программирование искусственного интеллекта https://twitter.com/marvinvonhagen/status/1657060506371346432
⚡️⚡️⚡️ OpenAI сделало функционал «поделиться диалогом» для chatGPT. Вот например про golang, Wireguard VPN и preshared keys:
https://chat.openai.com/share/ff6af8d8-2aba-4f8d-a898-e655d415e486
✅ Поделиться диалогом — это прямо нереально круто!
https://chat.openai.com/share/ff6af8d8-2aba-4f8d-a898-e655d415e486
✅ Поделиться диалогом — это прямо нереально круто!
ChatGPT
WireGuard cryptography and PSK.
A conversational AI system that listens, learns, and challenges
Forwarded from Эшер II A+
🎓 Помните, Минцифра рекламировала федеральную образовательную программу для старшеклаcсников? Типа программистов там готовят: https://digital.gov.ru/ru/events/46032/
🙀 Это задачка курса по Python с ожидаемым ответом в одной из школ (в рамках этой программы). Ответы проверяются платформой. Полученный результат сравнивается с ожидаемым.
🤷♂️ А потом я удивляюсь, что 146% кандидатов на разработчика на Golang не могут объяснить, что такое горутины. Не, ну счастливо, конечно. Но Максут Игоревич, это бардак вселенского масштаба.
☝️ Для непрограммистов — в программировании нельзя проверять числа с плавающей точкой на равенство. В данном случае платформа проверяет ученика по результату в том числе, и по вот этому числу.
🫵 Если ты программист и не в курсе, о чём я, то... то я не знаю что
🙀 Это задачка курса по Python с ожидаемым ответом в одной из школ (в рамках этой программы). Ответы проверяются платформой. Полученный результат сравнивается с ожидаемым.
🤷♂️ А потом я удивляюсь, что 146% кандидатов на разработчика на Golang не могут объяснить, что такое горутины. Не, ну счастливо, конечно. Но Максут Игоревич, это бардак вселенского масштаба.
☝️ Для непрограммистов — в программировании нельзя проверять числа с плавающей точкой на равенство. В данном случае платформа проверяет ученика по результату в том числе, и по вот этому числу.
🫵 Если ты программист и не в курсе, о чём я, то... то я не знаю что
Forwarded from Эшер II A+
Путь Golang
🎓 Помните, Минцифра рекламировала федеральную образовательную программу для старшеклаcсников? Типа программистов там готовят: https://digital.gov.ru/ru/events/46032/ 🙀 Это задачка курса по Python с ожидаемым ответом в одной из школ (в рамках этой программы).…
👍 Но так выявляются пытливые умы. Тру будущий программист приходит с вопросом:
— Мать(отец), WTF?!!!
— Мать(отец), WTF?!!!