Go позволяет писать на ассемблере. Но авторы языка написали такую стандартную библиотеку, что бы этого делать не пришлось. Есть способы писать переносимый и быстрый код одновремено. Как? Добро пожаловат под cut.
Читать полностью »
Рубрика «golang» - 10
Встраиваемые функции в Go
2019-09-16 в 21:16, admin, рубрики: assembly, Go, golang, ida, дизассемблирование, низкоуровневое программированиеMaven-путь построения Go проектов
2019-09-04 в 7:58, admin, рубрики: Go, golang, maven, maven pluginСначала небольшая предыстория. В начале 2010-х, я сделал небольшую утилиту-конвертер для BIN файлов эмулятора БК-0010 в WAV файлы. Утилита была написана на Python с целью максимальной переносимости, работала без проблем и я на какое то время забыл о ней. Но в 2016м появился пользователь "неИТшник", понятия не имеющий про Python и как его устанавливать. Он хотел простой исполняемый файл-монолит, который "просто бы работал". Мне его просьба показалась логичной и я решил переработать утилиту в виде набора бинарных исполняемых файлов для основных платформ.
Python и Java не давали такую возможность (если конечно не было желания раздуть утилиту на много десятков мегабайт). Потенциально решение можно было сделать на C/C++, но при таком целевом охвате платформ, сложности с кросс-компиляцией выходили бы за рамки отведенного на задачу времени (а мне надо было поддерживать кросс-сборку для Windows, Linux и MacOS в 64 и 32 битных вариантах). Так что я обратил внимание на набирающий популярность язык Go, который к тому времени уже стал достаточно зрелым и единственным, кто без "плясок с бубном" обеспечивает всю требуемую кросс-компиляцию прямо из коробки (!).
Go Gett Juno Meetup – 12 сентября, Минск
2019-08-30 в 13:28, admin, рубрики: Gett RnD, Go, golang, Блог компании Gett, конференции, митапыВсем привет, меня зовут Антон Тупиков, я – тимлид команды B2B Development в Gett.
Gett – не просто сервис такси, а динамический маркетплейс. Это высоконагруженная система: десятки тысяч водителей и миллионы клиентов в 120 городах по всему миру пользуются сервисами Gett каждый день.
Развиваясь изначально как B2C приложение, Gett в последние 6 лет запускал несколько «стартапов внутри стартапа”. Это были эксперименты с доставкой, маршрутками и корпоративными продажами. Многие из них позже вылились в успешные направления бизнеса. Например, B2B решение успешно работает для более чем 15 000 крупных корпораций, среди которых такие бренды как Google, Visa, Gucci, LVMH, Nestle и др.
Ближайшая важная задача, которая стоит перед Gett – это выход на IPO в следующем году. Мы рассчитываем, что продукт нового поколения поможет нашему IPO стать успешным, и именно поэтому было принято решение объединить усилия лучших инженеров Gett и Juno для достижении этой цели. Речь идет о разработке инновационных продуктовых решений с нуля c использованием самого современного технологического стека.
Хочу пригласить всех желающих на митап в Минске, который пройдет 12 сентября при поддержке GoWay-комьюнити, где мои коллеги разработчики расскажут о технических челенджах, с которыми они сталкиваются ежедневно и немного о том, с чем нам предстоит столкнуться в перспективе работы над новыми решениями.
Полное руководство по массивам и срезам в Golang
2019-08-30 в 13:13, admin, рубрики: Go, golang, Блог компании OTUS. Онлайн-образование, ПрограммированиеПеревод статьи подготовлен специально для студентов курса «Разработчик Golang», занятия по которому начинаются уже сегодня!
Поначалу легко воспринимать массивы и срезы как одно и то же, но с разными названиями: и то и другое является структурой данных для представления коллекций. Однако на самом деле они сильно отличаются друг от друга.
В этой статье мы рассмотрим их различия и реализации в Go.
Мы обратимся к примерам, чтобы вы могли принимать более взвешенное решение о том, где их применять.Читать полностью »
Как сделать BTC-транзакцию без сдачи из мелких монет
2019-08-26 в 22:28, admin, рубрики: bitcoin, Go, golang, knapsack problem, Алгоритмы, биткоин, задача о рюкзаке, Криптовалюты
Многие кошельки биткоина при выборе монет для отправки предпочитают использовать крупную монету, баланс которой больше отправляемой суммы. После каждой такой транзакции образуется монета-сдача. Через какое-то время весь кошелёк зарастает такими монетами порядка 0.001 (~10 долларов на текущий момент), которые уже и не на что потратить. Когда в очередной раз мне понадобилось сделать транзакцию, мне пришла в голову мысль, а нельзя ли собрать транзакцию так, чтобы сдачи не было. Кошелёк упрямо предлагал «распилить» ещё одну более крупную монету, так что я решил руками выбрать монеты, чтобы насобирать необходимую сумму. Однако это оказалось не так просто: сумма или получалась меньше нужного значения или слишком сильно его превосходила. В итоге я решил, что должен быть алгоритм, с помощью которого из монет можно собрать нужную сумму или чуть больше. Оказалось, что это не только возможно, но работает настолько хорошо, что сподвигло меня написать эту статью. Но обо всём по порядку.
Ищем баги в PHP коде без статических анализаторов
2019-08-26 в 14:11, admin, рубрики: Go, golang, grep, open source, php, phpgrep, Разработка веб-сайтов, статический анализ кода, управление разработкойМоя самая любимая часть в статическом анализе кода — это выдвижение гипотез о потенциальных ошибках в коде с последующей их проверкой.
Пример гипотезы:
Функции strpos легко передать аргументы в неправильном порядке.
Но есть вероятность, что даже на нескольких миллионах строк кода подобная диагностика не "выстрелит", поэтому на неудачные гипотезы тратить много времени не хочется.
Сегодня я покажу как выполнять простейший статический анализ с помощью утилиты phpgrep без написания кода.
Под катом:
|
Gonkey — инструмент тестирования микросервисов
2019-08-21 в 14:11, admin, рубрики: Go, golang, open source, автотестирование, Блог компании Lamoda, веб-сервисы, микросервисы, Тестирование веб-сервисовGonkey тестирует наши микросервисы в Lamoda, и мы подумали, что он может протестировать и ваши, поэтому выложили его в open source. Если функциональность ваших сервисов реализована преимущественно через API, и используется JSON для обмена данными, то почти наверняка Gonkey подойдет и вам.
Ниже я расскажу о нем подробнее и покажу на конкретных примерах, как его использовать.
Sampler. Консольная утилита для визуализации результата любых shell команд
2019-08-19 в 4:11, admin, рубрики: bash, console, demo, devops, Go, golang, linux, open source, prototyping, shell, terminal, visualization, визуализация данных, ПрограммированиеВ общем случае с помощью shell команды можно получить любую метрику, без написания кода и интеграций. А значит в консоли должен быть простой и удобный инструмент для визуализации.
Наблюдение за изменением состояния в базе данных, мониторинг размера очередей, телеметрия с удаленных серверов, запуск деплой скриптов и получение нотификации по завершению — конфигурируется за минуту простым YAML файлом.
Код доступен на гитхабе. Инструкции по установке — для Linux, macOS и (экспериментально) Windows.
Семейный бюджет в Telegram
2019-08-16 в 19:16, admin, рубрики: Go, golang, mongodb, telegram, боты, семейный бюджет, Системы обмена сообщениями, финансовый учет, финансы в ITСтатья посвящена обзору Telegram-бота @budgetmoneybot для ведения семейного бюджета.
Прежде чем начать обзор, я бы хотел написать несколько строк о том, как мы с супругой пришли к ведению бюджета в Telegram.
Надо сказать, что необходимость ведения бюджета мы начали осознавать с первых дней после свадьбы. Сначала мы записывали наши доходы и расходы в простую ods-таблицу.
Но ведение такой таблицы уже через несколько месяцев показалось нам утомительным. Очень хотелось иметь более мобильный инструмент, позволяющий сохранять данные и выводить отчеты.
Тем не менее 5 лет мы усердно заполняли таблицу, в той или иной степени регулируя свои расходы. Потом был год перерыва, в течение которого мы еще раз убедились, что вести бюджет нужно.
В начале 2019 года мы снова решили вести бюджет, но возвращаться к заполнению ods-таблицы мы не хотели. Мы попробовали некоторые мобильные сервисы и пришли к выводу, что нам они не подходят.
Тогда я подумал, что для ведения бюджета было бы удобно использовать Telegram-бота, который принимал бы сообщения с числами или с математическими выражениями и распределял бы суммы по заранее настроенным категориям. Кроме того, хотелось иметь возможность направлять такому боту фотографии QR-кодов на чеках, чтобы бот сам распределял позиции в чеках по категориям. А для ведения семейного бюджета хорошо было бы создать отдельную группу в Telegram и добавить в неё бота.
Несколько месяцев мне потребовалось на реализацию и тестирование такого бота. Но, как говорится, «дорогу осилит идущий» — в августе 2019 года бот был реализован.
Telegram-бот @budgetmoneybot предоставляет пользователям возможность вести как личный, так и семейный бюджет.
Читать полностью »
Разбираемся с интерфейсами в Go
2019-08-09 в 10:18, admin, рубрики: Go, golang, interfaces, Анализ и проектирование систем, Блог компании Mail.Ru Group, никто не читает теги, Программирование, Совершенный кодВ последние несколько месяцев я проводил исследование, в котором спрашивал людей, что им трудно понять в Go. И заметил, что в ответах регулярно упоминалась концепция интерфейсов. Go был первым языком с интерфейсами, который я использовал, и я помню, что в то время эта концепция казалась сильно запутанной. И в этом руководстве я хочу сделать вот что:
- Человеческим языком объяснить, что такое интерфейсы.
- Объяснить, чем они полезны и как вы можете использовать их в своём коде.
- Поговорить о том, что такое
interface{}
(пустой интерфейс). - И пройтись по нескольким полезным типам интерфейсов, которые вы можете найти в стандартной библиотеке.