🩷👨💻 Пока влюбленные шлют друг другу валентинки, айтишники отмечают свой профессиональный праздник. 14 февраля считается неофициальным днем компьютерщика.
🤦♂️ Так совпало, что именно в этот день в 1946 году общественности был продемонстрирован первый работающий электронный компьютер ENIAC I. Именно к этому событию приурочено празднование.
💬 А ведь раньше действительно айтишников называли компьютерщиками… Или кого там так называли? Кто винду мог переустановить?
🤦♂️ Так совпало, что именно в этот день в 1946 году общественности был продемонстрирован первый работающий электронный компьютер ENIAC I. Именно к этому событию приурочено празднование.
💬 А ведь раньше действительно айтишников называли компьютерщиками… Или кого там так называли? Кто винду мог переустановить?
🔥5❤3👍2🥱1
🤔 «Зачем уменьшать зависимости?» — спросите вы. Как минимум для уменьшения сложности, снижения риска, сокращения времени сборки и уменьшения размера итогового бинаря.
🤩 Под катом — взгляд на этот вопрос с примерами в Huma , Go-фреймворке для создания REST API с использованием OpenAPI, который может вдохновить вас на рассмотрение аналогичных вариантов для ваших собственных проектов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2🥱2👍1🌚1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in your browser
VIEW IN TELEGRAM
🏎️ Основные особенности gRPC: на заметку разработчику
gRPC (Remote Procedure Calls) — это система удалённого вызова процедур с открытым исходным кодом, первоначально разработанная в Google в 2015 году. Под капотом используется HTTP/2 для транспорта и Protocol Buffers в качестве языка описания интерфейса.
🔹Protocol Buffers (Protobuf): gRPC по умолчанию использует Protocol Buffers (файлы .proto) в качестве языка описания интерфейса (IDL). Это делает сообщения gRPC меньше и быстрее по сравнению с JSON или XML. Protobuf позволяет определять структуру данных и интерфейс сервиса в едином формате, что упрощает сериализацию/десериализацию данных.
🔹Транспорт на основе HTTP/2: gRPC использует HTTP/2 для транспорта, что позволяет реализовать ряд улучшений по сравнению с HTTP/1.x. Включая такие фичи, как мультиплексирование потоков, сжатие заголовков, приоритизация запросов и поддержка серверного push.
🔹Поддержка множества языков программирования: gRPC поддерживает широкий спектр ЯП, включая C#, Java, Python, и Go, что делает его универсальным инструментом для создания распределенных систем.
🔹Двунаправленный стриминг: gRPC поддерживает стриминг запросов и ответов, что позволяет разрабатывать сложные real-time приложения вроде чат-сервисов.
👉 Источник
#инфографика
gRPC (Remote Procedure Calls) — это система удалённого вызова процедур с открытым исходным кодом, первоначально разработанная в Google в 2015 году. Под капотом используется HTTP/2 для транспорта и Protocol Buffers в качестве языка описания интерфейса.
🔹Protocol Buffers (Protobuf): gRPC по умолчанию использует Protocol Buffers (файлы .proto) в качестве языка описания интерфейса (IDL). Это делает сообщения gRPC меньше и быстрее по сравнению с JSON или XML. Protobuf позволяет определять структуру данных и интерфейс сервиса в едином формате, что упрощает сериализацию/десериализацию данных.
🔹Транспорт на основе HTTP/2: gRPC использует HTTP/2 для транспорта, что позволяет реализовать ряд улучшений по сравнению с HTTP/1.x. Включая такие фичи, как мультиплексирование потоков, сжатие заголовков, приоритизация запросов и поддержка серверного push.
🔹Поддержка множества языков программирования: gRPC поддерживает широкий спектр ЯП, включая C#, Java, Python, и Go, что делает его универсальным инструментом для создания распределенных систем.
🔹Двунаправленный стриминг: gRPC поддерживает стриминг запросов и ответов, что позволяет разрабатывать сложные real-time приложения вроде чат-сервисов.
👉 Источник
#инфографика
👍9❤2🔥2
💸 Рост или падение? Изменение зарплат в IT за 2023 год
Чтобы разобраться в этом вопросе, «Библиотека программиста» решила провести опрос среди читателей издания. Мы хотим понять, выросли ли ваши зарплаты в 2023 году и если да, то на сколько процентов. Или может быть наоборот — ваши доходы снизились на фоне кризисных явлений в экономике?
Примите участие в нашем коротком опросе и поделитесь своим мнением! Вместе мы проанализируем текущую ситуацию на рынке труда в IT-сфере и поймем, что ждёт эту отрасль дальше. Ждём ваших ответов!
Опрос займёт у вас примерно 4 минуты.
👉 Ссылка на опрос
Чтобы разобраться в этом вопросе, «Библиотека программиста» решила провести опрос среди читателей издания. Мы хотим понять, выросли ли ваши зарплаты в 2023 году и если да, то на сколько процентов. Или может быть наоборот — ваши доходы снизились на фоне кризисных явлений в экономике?
Примите участие в нашем коротком опросе и поделитесь своим мнением! Вместе мы проанализируем текущую ситуацию на рынке труда в IT-сфере и поймем, что ждёт эту отрасль дальше. Ждём ваших ответов!
Опрос займёт у вас примерно 4 минуты.
👉 Ссылка на опрос
👏6🤔3❤2👍1
💬 Как вы относитесь к парному программированию? Это то самое, при котором два разраба работают вместе над одной задачей, сидя за одним рабочим местом.
👨💻 Кирилл Мокевкин разобрался, что к чему, — если вам интересна эта тема.
#холивар
👨💻 Кирилл Мокевкин разобрался, что к чему, — если вам интересна эта тема.
#холивар
Telegram
Организованное программирование | Кирилл Мокевнин
Парный кодинг для всех
Про парное программирование слышали наверное все, но все ли его практикуют?
Сразу к делу, парное программирование, при правильном использовании, лучшая техника прокачки и распространения знаний в команде. Кроме того, качество кода…
Про парное программирование слышали наверное все, но все ли его практикуют?
Сразу к делу, парное программирование, при правильном использовании, лучшая техника прокачки и распространения знаний в команде. Кроме того, качество кода…
🥱10👍9🌚3❤2
Используйте
jsonfile
для сохранения значения Go в файле JSON.type JSONFile
func Load[Data any](path string) (*JSONFile[Data], error)
func New[Data any](path string) (*JSONFile[Data], error)
func (p *JSONFile[Data]) Read(fn func(data *Data))
func (p *JSONFile[Data]) Write(fn func(*Data) error) error
В несколько строк кода этого репозитория вложено немного больше мыслей, чем вы могли ожидать. Если вам нужна более подробная информация, смотрите заметки в блоге.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - crawshaw/jsonfile: Persist a Go object to a JSON file
Persist a Go object to a JSON file. Contribute to crawshaw/jsonfile development by creating an account on GitHub.
🥱10👍3❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2
🏃 Самоучитель по Go для начинающих. Часть 7. Массивы и слайсы. Append и сopy. Пакет slices
Рассмотрим реализацию массивов и слайсов в языке Go, разберем функции append и copy, изучим пакет slices и по традиции решим несколько занимательных задач.
👉 Читать статью
👉 Часть 1
👉 Часть 2
👉 Часть 3
👉 Часть 4
👉 Часть 5
👉 Часть 6
Рассмотрим реализацию массивов и слайсов в языке Go, разберем функции append и copy, изучим пакет slices и по традиции решим несколько занимательных задач.
👉 Читать статью
👉 Часть 1
👉 Часть 2
👉 Часть 3
👉 Часть 4
👉 Часть 5
👉 Часть 6
👍17❤2🔥1😁1🥱1
🤔 Остаться или уйти? Оптимальный срок работы на одном месте
Вы любите свою работу, интересные проекты вам гарантированы, зарплата повышается каждый год. Но вот уже 5 лет вы трудитесь в одной и той же компании. Не пора ли что-то изменить, пока мотивация окончательно не улетучилась?
Многие опытные айтишники сталкиваются с такой дилеммой. С одной стороны, текущее место работы устраивает. С другой — хочется разнообразия, новых задач и знаний.
Должен ли современный IT-специалист менять работу чаще, чем раз в 5 лет? Или лучше наращивать экспертизу в рамках одной компании? А может дело совсем не в сроках, а в качестве задач и развитии карьеры?
👉 Расскажите о своём опыте в нашем новом опросе 👈
Вы любите свою работу, интересные проекты вам гарантированы, зарплата повышается каждый год. Но вот уже 5 лет вы трудитесь в одной и той же компании. Не пора ли что-то изменить, пока мотивация окончательно не улетучилась?
Многие опытные айтишники сталкиваются с такой дилеммой. С одной стороны, текущее место работы устраивает. С другой — хочется разнообразия, новых задач и знаний.
Должен ли современный IT-специалист менять работу чаще, чем раз в 5 лет? Или лучше наращивать экспертизу в рамках одной компании? А может дело совсем не в сроках, а в качестве задач и развитии карьеры?
👉 Расскажите о своём опыте в нашем новом опросе 👈
🥱21🌚4👍3❤2👾1
📌 Для базового использования просто укажите интересующий путь к пакету в качестве первого аргумента:
errcheck github.com/kisielk/errcheck/testdata
📌 Проверить все пакеты в текущей директории:
errcheck ./...
📌 Или проверьте все пакеты в вашем $GOPATH и $GOROOT:
errcheck all
👉 GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Release v.1.7.0 · kisielk/errcheck
What's Changed
Go 1.22 support, plus other fixes.
Correct typos in comments and doc by @alexandear in #225
Fix errcheck issues in tests by @alexandear in #227
Directly specify the needed field...
Go 1.22 support, plus other fixes.
Correct typos in comments and doc by @alexandear in #225
Fix errcheck issues in tests by @alexandear in #227
Directly specify the needed field...
👍21❤2
00:00 — Lock-free структуры данных
00:41 — Реализация стека на связном списке
01:59 — Неправильная реализация lock-free стека
06:17 — Правильная реализация lock-free стека
09:43 — ABA проблема
11:55 — Hazard pointers
12:13 — Tagged pointers
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍12🌚3🥱2
🤔 От Go к Rust: два типа читаемого кода
Читаемость кода часто связана с тем, насколько синтаксис и концепции языка знакомы разработчику. Что кажется читаемым одному, может быть непонятным другому.
Автор статьи разделил понятия «читаемость для новичков» (как быстро можно начать читать новый ЯП) и «читаемость для опытных» (как быстро опытный разработчик может понять код).
«При чем тут Go и Rust?» — спросите вы. А при том, что по мнению автора Go выбирает читаемость для новичков, в то время как Rust оптимизируется для опытных разработчиков.
Важно соблюдать баланс между упрощением кода для новичков и предоставлением продвинутых инструментов для опытных разрабов.
💬 Что думаете?
Читаемость кода часто связана с тем, насколько синтаксис и концепции языка знакомы разработчику. Что кажется читаемым одному, может быть непонятным другому.
Автор статьи разделил понятия «читаемость для новичков» (как быстро можно начать читать новый ЯП) и «читаемость для опытных» (как быстро опытный разработчик может понять код).
«При чем тут Go и Rust?» — спросите вы. А при том, что по мнению автора Go выбирает читаемость для новичков, в то время как Rust оптимизируется для опытных разработчиков.
Важно соблюдать баланс между упрощением кода для новичков и предоставлением продвинутых инструментов для опытных разрабов.
💬 Что думаете?
Earthly Blog
From Go to Rust: The Two Types of Readable Code
<p>Ever looked at some code and thought, “Wow, that’s an ugly mess!”? Or maybe you picked up a new programming language and felt right at hom...
👍6🌚4❤2
🤔 Начиная проект, новички часто задают следующие вопросы:
🔸 Какой логгер/веб-фреймворк/... следует использовать?
🔸 Какую ORM лучше использовать?
🤷♂️ Эти вопросы заданы из лучших побуждений, но все они упускают из виду ключевой аспект — Go имеет отличную стандартную библиотеку.
📌 Читайте подробнее, почему иногда действительно следует начать с использования стандартной библиотеки Go.
Please open Telegram to view this post
VIEW IN TELEGRAM
💯15👍5❤1
⚒️ Go 1.22: Rangefunc Experiment
Перевод материала с Go Wiki о простых одноуровневых циклах:
☑️ Что такое range func?
☑️ Нюансы
☑️ Push/Pull - семантика
☑️ Как попробовать
☑️ Пример: перебор слайса в случайном порядке
☑️ Послесловие
Перевод материала с Go Wiki о простых одноуровневых циклах:
☑️ Что такое range func?
☑️ Нюансы
☑️ Push/Pull - семантика
☑️ Как попробовать
☑️ Пример: перебор слайса в случайном порядке
☑️ Послесловие
Хабр
Go 1.22: Rangefunc Experiment
Дисклеймер Данная статья - проба пера. Данная статья - перевод/вольная интерпретация соответствующей страницы с Go Wiki . Если знаете английский язык, то, возможно, стоит зайти в первоисточник, а...
🔥5😁3👍1
Мы стараемся быть лучше для вас. Какие материалы вы хотите больше видеть на канале?
Anonymous Poll
37%
Интересные авторские статьи
19%
Туториалы в видеоформате
70%
Практика и использование Go в реальных проектах
39%
Использование Go-инструментов
60%
Архитектура приложений
22%
Продолжайте в том же духе — всё круто
0%
Свой вариант (напишу в комментариях)
🔥18
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in your browser
VIEW IN TELEGRAM
👍31😁31💯8🔥1👾1
👌 Искусство интеграции Go и C: гайд по работе с cgo
📌 Автор рассматривает ключевые аспекты и лучшие практики взаимодействия с C-библиотеками, акцентируя внимание на:
🔸 Введении в cgo: обзор основных концепций и использования пакета C в Go.
🔸 Работе с массивами и срезами: техники для безопасной и эффективной передачи данных между Go и C.
🔸 Строковых преобразованиях: методы для конвертации строк между Go и C, включая управление памятью.
🔸 Управлении указателями: решения для обработки указателей Go в контексте C, избегая проблем со сборщиком мусора.
🔸 Обработке errno в Go: подходы к обработке ошибок в интегрированных системах Go и C.
🔸 Экспорте Go в C: обсуждение возможностей и ограничений использования Go в качестве shared library.
🔸 Лучших практиках и общих подводных камнях: советы и предостережения для разрабов, использующих cgo.
📌 Автор рассматривает ключевые аспекты и лучшие практики взаимодействия с C-библиотеками, акцентируя внимание на:
🔸 Введении в cgo: обзор основных концепций и использования пакета C в Go.
🔸 Работе с массивами и срезами: техники для безопасной и эффективной передачи данных между Go и C.
🔸 Строковых преобразованиях: методы для конвертации строк между Go и C, включая управление памятью.
🔸 Управлении указателями: решения для обработки указателей Go в контексте C, избегая проблем со сборщиком мусора.
🔸 Обработке errno в Go: подходы к обработке ошибок в интегрированных системах Go и C.
🔸 Экспорте Go в C: обсуждение возможностей и ограничений использования Go в качестве shared library.
🔸 Лучших практиках и общих подводных камнях: советы и предостережения для разрабов, использующих cgo.
👍27
🤔 В чем сила пакета singleflight?
🔸
🔸Если несколько запросов инициируют один и тот же вызов, это может привести к множественным идентичным вызовам к БД или API. Это создает нагрузку на систему, ведет к потерям CPU, памяти и пропускной способности сети.
🔸Matthew Boyle, автор Domain-Driven Design with Golang, приводит пример использования
💡
#tip
🔸
singleflight
предоставляет механизм подавления дублирующихся вызовов функций. Например, наше приложение запрашивает данные из API или базы данных. 🔸Если несколько запросов инициируют один и тот же вызов, это может привести к множественным идентичным вызовам к БД или API. Это создает нагрузку на систему, ведет к потерям CPU, памяти и пропускной способности сети.
🔸Matthew Boyle, автор Domain-Driven Design with Golang, приводит пример использования
singleflight
для устранения дублирующихся вызовов. В примере, несмотря на то, что 5 горутин одновременно запрашивают данные для одного и того же ключа, функция fetchData
будет вызвана только один раз благодаря функции group.Do
из пакета singleflight
.💡
singleflight
также может используется в serverless кейсах. Google App Engine, например, применяет его как часть функции инициализации, поскольку там нет main.go
.#tip
👍20🤔9🥱3❤1🔥1
👉 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36🥱8