Сообщения

Сообщения за 2017

Go: Изучаем код проекта Gogs. Урок №1

Изображение
Углубленное изучение программирования на языке Go (Golang) методом исследования исходного кода крупных проектов. Урок 1. Изучаем код проекта https://gogs.io/


Приложение "Список задач" на платформе Гонец

Изображение
Опубликовал пример создания приложения на языке Гонец с использованием фронтенд-библиотеки vue.js и библиотеки визуализации bootstrap.


Гонец 3.6 : микросервисы для продакшена

Вышел финальный релиз 3.6 платформы Гонец!


Добавлены все ключевые строковые функцииДобавлена функция Окр для чисел с плавающей запятойДобавлена работа с key-value in-memory локальной базой данных boltdb
Пример работы с базой данных добавлен в скрипт демонстрационного примера.

Данный релиз является финальным для текущей функциональности, и он готов к промышленному использованию.

В релиз входят исполняемые файлы для Windows x64 и Linux x64.
Версия для Linux x64 подготовлена для развертывания в контейнерах docker с параметром окружения PORT и ключом запуска -web

Ссылка: https://github.com/covrom/gonec/releases/tag/3.6

Гонец 3.3а: интересные новинки

Изображение
Новинки за последнее время:


Гонец приобрел новый внешний вид и удобство при редактировании кода в своем вэб-интерфейсе. Редактор получил новую тему оформления и автодополнение кода по Ctrl+Space.Протестирован под нагрузкой бинарный TCP-протокол обмена. На обычном немолодом компьютере (4 ядра Core i5 3xxx) получена пропускная способность 7000 запрос-ответов в секунду!


Добавлена инфраструктура микросервисов (менеджер микросервисов, базовые структуры для разработки встроенных микросервисов на Го)Интерпретатор переведен на микросервисную архитектуру и интегрирован с системой Consul. Запуск микросервиса и его интеграция выполняется командой gonec.exe -web -t -consul.

Гонец 3.2а начал общаться по сети

Изображение
Отличные новости - вышла версия 3.2а!
Виртуальная машина получила работу с синхронным пулом Го (sync.Pool), что позволило оптимизировать использование памяти при работе с регистрами и переменными в стэке вызовов.Оптимизирована работа с переменными в окруженияхПоявились первые базовые объекты метаданных: Сервер и КлиентПодробнее о сервере и клиенте

Гонец 3.1 и планы на версию 4.0

Проведен масштабный рефакторинг архитектуры под интерфейсные типы, что позволило получить большую масштабируемость при существенном увеличении производительности.

Интерпретатор Гонец 2.0a

Ура! Релиз 2.0a вышел!
Реализована новая регистровая виртуальная машина, которая от 2х до 10 раз быстрее исполняет код за счет предварительной компиляции кода в линейную структуру из простых команд, по сравнению с предыдущей стэковой версией.
Работа старой стэковой версии интерпретатора сохранена (запускать с ключом -stack), но в будущих релизах будет удалена.
Усовершенствована работа с модулями, появилась компиляция в бинарный файл ".gnx" для распространения модулей без исходного кода.
Множество улучшений и исправлений ошибок.
Несомненно, появились и новые ошибки, которые будут устраняться в результате альфа-тестирования.

https://github.com/covrom/gonec

Архитектура языка и платформы Гонец

Изображение
Архитектура платформы:


Архитектура языка Гонец:


Онлайн версия интерпретатора Гонец

Изображение
Запустил онлайн версию интерпретатора Гонец в docker-контейнере heroku.
Размер дистрибутива показывает всего 6 мегабайт!
Отличный результат!
Попробовать можно здесь.

Первая альфа-версия языка Gonec

Изображение
Готова первая альфа-версия. Она уже во многом работоспособна, но работа над релизом еще будет продолжаться.

Интерпретатор 1С-подобного языка ГОНЕЦ

Изображение
Начал разработку интерпретатора языка, максимально приближенного к языку платформы 1С:Предприятие 8.3.


Настройка Dockerfile для создания и запуска контейнера Docker с вашей программой на Go

Вы написали программу (микросервис) на Go, и хотите развернуть ее в контейнере Docker?
В этой небольшой заметке я постараюсь максимально компактно и практично описать этот процесс для новичков, учитывая современный уровень развития docker. В интернете нашел много статей с непонятными или устаревшими инструкциями, и мало практики, поэтому, решил написать свою.Про Docker в двух словах скажу так — он позволяет запустить контейнер с виртуальной операционной системой и вашим приложением, размещенным в ней. А так же, когда надоест, удалить напрочь этот контейнер, не заботясь о том, что Ваше приложение где-то тайком намусорило в системе.
Вот, собственно, и все преимущества от использования контейнеров docker для новичков :)    В данной заметке я рассматриваю способ компиляции Вашей программы внутри образа, на этапе его сборки. Это самый очевидный способ для начинающих.

Еще пару слов о том, с чем docker работает. Он хранит у себя образы (image) контейнеров, на основе которых Вы можете наклепат…

Тип map всегда передается по ссылке

Недавно проскакивала статья о том, как устроены разные простые типы и слайсы в памяти. Из этой статьи мы узнали, почему переданный «по значению» слайс в функцию является передачей слайса по ссылке только до того момента, пока слайс внутри функции не потребует реаллокацию в памяти при увеличении своего capacity. Если внутри функции capacity этого слайса изменяется, и он был передан «по значению», а не в виде указателя, то слайс начинает ссылаться на совсем другой массив, совсем не тот, который будет дальше использоваться в вызывающей функции.
Такая особенность слайса может порождать «случайные» ошибки логики работы программы на этапе выполнения, если программист не учел это.
У меня возник вопрос, а нет ли похожей ситуации с типом map? Ведь у него тоже есть capacity, и он тоже может менять аллокацию в памяти при росте числа пар значений.

Как правильно написать ТЗ на систему или доработку системы 1С

Для того, чтобы Вам как заказчику, консультанту или методологу понять, что нужно разработчику 1С для того, чтобы доработать Вашу систему или разработать новую, нужно понимать, какими категориями информации он оперирует в ходе своей работы. Это сильно упростит программисту понимание того, что же от него хотят. В данной статье я постараюсь кратко и, при этом, достаточно полно объяснить, что Вам нужно написать в техническом задании помимо общих разделов с глоссарием, титульным листом и описанием бизнес-требований. Данные правила легко соблюдать даже при написании кратких пользовательских историй, если Вы создаете их в рамках проекта SCRUM / Agile.
Итак, приступим.
Для начала вы должны понимать, что же на самом деле программирует программист: Формы ввода информацииКонтрольные процедурыМодель данныхАлгоритмы автоматического заполнения данныхФормы вывода информации Давайте отдельно рассмотрим каждую категорию.

Шахматный движок для тренировки игры в блиц на C++

Модифицировал шахматный движок Rodent II для тренировки игры в блиц. Движок известен тем, что имеет массу настроек для подбора стиля игры при игре с человеком, и ориентирован на тренировку шахматистов.
Мне не хватало в этом движке одной простой настройки, идея которой лежит на поверхности.