Всем привет. В дополнении к моей предыдущей статье был интересный диалог с
kirill_danshin. В конце концов мы это сделали. Встречайте — efaceconv, тулза для go generate, с помощью которой можно приводить типы из interface{} без аллокаций и в ~4 раза быстрее.
Читать полностью »
Рубрика «Go» - 61
Type assertation without allocations
2016-11-22 в 5:56, admin, рубрики: Go, hack-runtime, runtime, type assertationПоддержка https совсем без настроек
2016-11-20 в 12:21, admin, рубрики: Go, golang, HTTPS, Let's Encrypt, LetsEncrypt, reverse-proxy, криптографияНаписал программу для автоматического выписывания ssl-сертификатов налету (при первом запросе к домену).
Для начала работы программы её достаточно просто запустить, настраивать не надо совсем (даже домены для сертификатов указывать не надо).
github.com/rekby/lets-proxy/releases/latest
Подробности внутри.
Читать полностью »
Go panic(), runtime error и их реализации в своей ОС на Go+asm Part 0x000c03f.(float32)
2016-11-18 в 9:25, admin, рубрики: gccgo, Go, OS на Go, panic, runtime error, картинок нет и не будет, Компиляторы, ненормальное программированиеВсем привет! Недавно я писал про реализацию пустых интерфейсов в Go, та статья, как можно догадаться имеет прямое отношение к разработке ОС на Go, да данная тема не заброшена и не забыта, но была отложена на долгий срок.
Под катом: «выкидываем» asm прокси-методы, имплементируем методы panic() и поддержку рантаймовых ошибок.
Читать полностью »
Ваш язык программирования — отстой
2016-11-16 в 18:40, admin, рубрики: Backbase, C, C#, c++, css, Go, haskell, java, javascript, Lua, perl, php, pithon, ruby, Rust, scala, vba, XML, языки программирования1 Почему JavaScript отстой
• 1.1 Плохая конструкция
• 1.2 Система типов
• 1.3 Плохие функции
• 1.4 Отсутствующие функции
• 1.5 DOM
2 Почему Lua отстой
3 Почему PHP отстой
• 3.1 Исправлено в поддерживаемых в настоящее время версиях
4 Почему Perl 5 отстой
5 Почему Python отстой
• 5.1 Исправлено в Python 3
6 Почему Ruby отстой
7 Почему Flex/ActionScript отстой
8 Почему скриптовые языки отстой
9 Почему C отстой
10 Почему C++ отстой
11 Почему .NET отстой
12 Почему C# отстой
13 Почему VB.NET отстой
15 Почему Objective-C отстой
16 Почему Java отстой
• 16.1 Синтаксис
• 16.2 Исправлено в Java 7 (2011)
• 16.3 Библиотека
• 16.4 Обсуждение
17 Почему Backbase отстой
18 Почему XML отстой
19 Почему отстой XSLT/XPath
20 Почему CSS отстой
• 20.1 Исправлено в CSS3
21 Почему Scala отстой
22 Почему Haskell отстой
23 Почему Closure отстой
24 Почему Go отстой
• 24.1 Базовые средства программирования (базовый язык)
• 24.2 Взаимосовместимость
• 24.3 Стандартная библиотека
• 24.4 Набор инструментальных средств
• 24.5 Сообщество
25 Почему Rust отстой
• 25.1 Безопасность
• 25.2 Синтаксис
• 25.3 Конструкция API и система типов
• 25.4 Сообщество
• 25.5 Набор инструментальных средств
Почему JavaScript отстой
Учтите, что некоторые положения относятся не к самому JavaScript, а к программным интерфейсам веб-приложений (https://developer.mozilla.org/en/docs/Web/API).
Плохая конструкция
• Каждый скрипт исполняется в едином глобальном пространство имён, доступ в которое возможен в браузерах с оконным объектом.
• Camel-регистр никуда не годится:
XMLHttpRequest
HTMLHRElement
Читать полностью »
Языку программирования Go — семь лет
2016-11-10 в 9:30, admin, рубрики: Go, mail.ru, Блог компании Mail.Ru Group, Программирование
Семь лет — важный возраст в жизни многих людей, символический рубеж нового этапа взросления, когда мы начинаем ходить в школу. Вроде бы семь лет — не так уж много, но всё-таки и не мало. Так что если языки программирования представить в виде людей, то сегодня мы празднуем день рождения первоклассника Go — ему исполнилось семь!
Что такое Go и чем он хорош, мы описывать не будем: кто в теме, знают и так, а остальные могут почитать в Википедии. Уже вчера мы поделились с вами полезным переводом 50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков, а сегодня передаём слово нашим разработчикам, пишущим на Go. В честь годовщины мы задали каждому из них три вопроса:
- Почему ты выбрал Go (плюсы/минусы)?
- Что ты уже написал на Go?
- Как лучше изучать Go, что посоветуешь начинающим?
Вот что они ответили.
Читать полностью »
50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков
2016-11-09 в 11:50, admin, рубрики: Go, golang, tutorial, Блог компании Mail.Ru Group, Программирование, Совершенный код
Go — простой и забавный язык. Но в нём, как и в любых других языках, есть свои подводные камни. И во многих из них сам Go не виноват. Одни — это естественное следствие прихода программистов из других языков, другие возникают из-за ложных представлений и нехватки подробностей. Если вы найдёте время и почитаете официальные спецификации, вики, почтовые рассылки, публикации в блогах и исходный код, то многие из подводных камней станут для вас очевидны. Но далеко не каждый так начинает, и это нормально. Если вы новичок в Go, статья поможет сэкономить немало часов, которые вы бы потратили на отладку кода. Мы будем рассматривать версии Go 1.5 и ниже.
Читать полностью »
goader — консольный бенчмарк с уклоном на запись-чтение файлов
2016-11-05 в 9:26, admin, рубрики: benchmark, Go, golang, performance, testing, Тестирование IT-систем, Тестирование веб-сервисовgoader — консольный бенчмарк с простой конфигурацией и поддержкой различных бэкендов для тестирования
Название происходит от go и loader, а также имеет свое значение на английском, "подгонять копьем, палкой"
На данный момент можно тестировать (аргумент -requests-engine):
- http (GET запросы либо GET+PUT)
- disk
- s3 (С авторизацией по ACCESS/SECRET keys, endpoint необходим, но это дает возможность проверять private s3, signature ver4 на данный момент не поддерживается, но планирую)
- null и sleep для тестирования самого бенчмарка
Уклон сделан на запись и считывание файлов, не страничек
Пример использования
goader -rps=300 -wps=150 -min-body-size=1 -max-body-size=128k --max-requests=1000 -requests-engine=disk -url=tmp/NN/RRRRR

Точки появляются в реальном времени в соответствии с каждым запросом, мне в свое время это позволило визуально выявить проблемы, в том случае, что цифры мало что дали бы. В случае ошибок на их месте будет E
Существует немало утилит для нагрузочного тестирования, но лично у меня к ним ряд претензий, что и сподвигло написать свой...Читать полностью »
Пишем сервер-помощник для BaaS или «Ну и зачем мне тогда Firebase?»
2016-11-03 в 8:53, admin, рубрики: android, firebase, firebase cloud messaging, Go, iOS, Разработка под android, разработка под iOSПредисловие
Я начинающий Android разработчик, за плечами у меня около 1,5 года опыта в данной сфере. Взялся я за довольно-таки большой проект, в команде кроме меня никого нет, а бекенд писать я не умею. Решено было в качестве платформы выбрать Firebase. Так как специфика моего приложения требовала постоянной работы и получения данных из базы в фоне, я просто вставил все EventListener-ы в сервис и был доволен. До того самого момента, когда я решил написать iOS версию. Выучив Swift я ринулся в бой. Firebase SDK благо оказались очень хороши и похожи для обеих систем, так что я быстро написал основную часть и… Почему не работает?
Суть проблемы и постановка задачи
iOS мягко говоря не уважает приложения работающие в фоне. Единственный способ пробудить приложение которое убила система (а убивает она их из-за любого чиха) — уведомления через APNS. К тому же, на Android 6+ постоянное соединение не держится и уведомления в итоге приходят с задержкой от 5 минут до 2 часов (на 7.1), если они реализованы не через GCM. Хорошо, что Firebase Cloud Messaging поддерживает и APNS, и GCM. Плохо, что для этого нужен дополнительный сервер. Было бы круто, если б уведомления автоматически отправлялись по определённым изменениям в базе данных. Инженеры обещают сделать нечто подобное в следующем году… А работать то должно уже сейчас.
Читать полностью »
Ещё один способ отображения строк в Go
2016-10-24 в 21:44, admin, рубрики: Go, golang, ненормальное программированиеКак-то сидя на работе, и занимаясь написанием кода на Go, я вспомнил про старую задачку, суть которой заключалась в том, что нам необходимо реализовать деление любого числа на заранее заданное в условии задачи. Казалось бы просто, но было два ограничения:
1. Нельзя использовать числа в явном виде, кроме 0.
2. Количество разрешённых математических операций тоже было ограничено.
Повторять её на Go я не стал, но решил применить один из вариантов решения, для отображения строки. Идея эта не нова, и на полноправное авторство не претендую, просто решил поделиться.
Читать полностью »
Хобби-проект польского разработчика — усовершенствованная и дополненная версия языка Go
2016-09-26 в 7:58, admin, рубрики: Go, перспективные технологии, Программирование, разработка по, улучшение мира, хобби-проекты, языки программирования
Один из признаков того, что язык программирования имеет успех, – появление новых языков на его основе. Известным примером является JavaScript. На его базе возникли такие языки, как TypeScript, GorillaScript, Kaffeine, Sweet.js и так далее.
Со временем язык программирования Go, разработанный компанией Google, сможет соперничать с JavaScript по количеству надстроек и диалектов.
Миру уже был явлен Oden – функциональный язык со статической типизацией, разработанный в рамках экосистемы Go. В то же время он создавался как надстройка Go и впитал в себя его лучшие стороны.
А теперь появился новый язык – Have, который имеет все шансы стать усовершенствованной и дополненной версией Go. Читать полностью »
