По мере вникания в тему работы 1С-овских продуктов в среде linux, обнаружился один недостаток — отсутствие удобного графического мультиплатформенного инструмента для управления кластером серверов 1С. И решено было этот недостаток исправить, путём написания GUI для консольной утилиты rac. Языком для разработки был выбран tcl/tk как, на мой взгляд, наиболее подходящий для этой задачи. И вот, некоторые интересные аспекты решения хочу представить в данном материале.
Читать полностью »
Рубрика «Программирование» - 431
Пишем GUI к 1С RAC, или снова о Tcl-Tk
2018-07-02 в 5:54, admin, рубрики: 1c, tcl/tk, Программирование, системное администрирование, функциональное программированиеPHP-DataGen — генератор PHP классов со строго-типизированными свойствами
2018-07-01 в 19:08, admin, рубрики: cli, php, кодогенерация, Компиляторы, ПрограммированиеВведение
Помимо многих проблем, в PHP существует проблема строгой типизации переменных и свойств классов, точнее её отсутствие. Более того, нет даже возможности однозначно задать какие будут свойства у объектов того или иного класса, пользуясь только синтаксисом и не прибегая к так называемым магическим методам (потому что любое свойство может быть удалено при помощи оператора unset, а также к объекту может быть дописано несуществующее ранее свойство).
Однако при разработке часто возникает потребность в чётком знании, что можно ожидать от объекта, а чего можно не ожидать. Разумеется, можно пойти простым путём: сделать все свойства protected и понаписать геттеров и сеттеров. Много бойлерплейта, хочется проще. Лично я пытался решить эту проблему с помощью трейтов, но выходило всё равно некрасиво. Так и появилась идея этого проекта…
Кому интересно, добро пожаловать под кат!
Читать полностью »
Регулярные выражения + логическое программирование. Что в результате?
2018-06-30 в 22:31, admin, рубрики: Delphi, Алгоритмы, алгоритмы поиска, логическое программирование, Программирование, Регулярные выраженияЗдравствуйте, уважаемые читатели.
Регулярные выражения — хорошо известная вещь, которая используется в разнообразных проектах, чаще всего, для не очень сложных случаев разбора структурированных текстов. Занимаясь, на первый взгляд, такой несколько иной задачей, как обратный синтез моделей программ (когда есть код программы, порожденный автоматически некоторой системой по некоторой блочной модели решаемой задачи, и необходимо по этому коду воссоздать исходную модель), а также синтезом моделей программ по текстовому описанию задачи, я столкнулся с проблемой анализа текстов, а точнее — идентификации фрагментов текста некоторым настраиваемым шаблонам. Хотелось получить достаточно простое и гибкое (настраиваемое) решение. Регулярные выражения, с ходу, такими не казались, поскольку даже в такой простой задаче, как проверка слова по словарю, требовала, к сожалению, тщательного перечисления всех вариантов в этом выражении. Да и дерево синтаксического разбора они не строили. Однако, их явно можно было улучшить. Об этом и пойдет речь.
Читать полностью »
Компилятор Go: язык описания правил SSA оптимизаций
2018-06-30 в 14:09, admin, рубрики: compilers, dancing-gopher, Go, golang, open source, optimization, s-expressions, ssa, Компиляторы, Программирование, системное программирование
В компиляторе gc для описания Static Single Assignment (SSA) правил оптимизаций используется специальный Лисп-подобный предметно-ориентированный язык (DSL).
Предлагаю разобрать основные элементы этого языка, его особенности и ограничения.
В качестве упражнения, добавим в Go компилятор генерацию инструкции, которую он раньше не генерировал, оптимизируя выражение a*b+c.
Это первая статья из серии про внутренности Go SSA compiler backend, поэтому помимо обзора самого DSL описания правил мы рассмотрим связанные компоненты, чтобы создать необходимую базу для нашей следующей сессии.
Блокчейн-деривативы: решение проблемы на $500 трлн и победа на хакатоне Consensus 2018
2018-06-30 в 10:42, admin, рубрики: 8base, solidity, блокчейн, деривативы, Криптовалюты, Программирование, финансы, хакатон, Хакатоны11 и 12 мая 2018 года команда 8base в лице меня, Евгения Семушина и Гейба Келли решила испытать свои силы и побороться за приз AlphaPoint на хакатоне Consensus 2018, который проходил в Нью-Йорке. Всего в хакатоне участвовало 33 команды, а среди его спонсоров были такие гиганты, как CoinDesk, Microsoft, IBM, Hyperledger и Quorum.

На соревновании AlphaPoint требовалось написать приложение, привязанное к криптовалютной бирже, поэтому мы надеялись, что мой опыт работы в хедж-фонде будет весьма кстати. Мы хотели создать нечто большее, чем фронт-энд к существующему блокчейн-решению. Нашей целью было решить реальную проблему, применив уникальные возможности блокчейн-архитектуры, собственный опыт разработки смарт-контрактов и знания о внутренней механике финансов.
Мы создали набор смарт-контрактов в сети Ethereum, который позволяет формировать децентрализованные деривативы и управлять их обеспечением на основе блокчейна. С помощью нашего решения любой пользователь может стать поручителем по контракту на продажу или покупку любого актива ERC20 без какого-либо внешнего управления требованиями и их исполнением. В результате мы удостоились главного приза.
Под катом нюансы реализации этого проекта.
Читать полностью »
Что не так с std::visit в современном C++
2018-06-30 в 5:29, admin, рубрики: c++, variant, visit, visitor pattern, Программирование, Совершенный кодСигма-тип и вы
Давайте поговорим о простой, но мощной концепции в программировании — сигма-типах.
Сигма-тип (тип-сумма, меченное объединение) может содержать значения одного и только одного из нескольких типов. Например, рассмотрим настройки в INI-подобном файле конфигурации. Пусть каждая настройка может быть строкой, целым или булевым значением. Если бы мы хотели сделать свою библиотеку на C++, мы бы написали что-то вроде этого:
Читать полностью »
Аспектно-ориентированное программирование на PHP
2018-06-29 в 14:43, admin, рубрики: php, аспектно-ориентированное, Блог компании Отус, ПрограммированиеВсем привет!
Закончили в этом месяце первый набор курса «Backend разработчик на PHP» и трудоустраиваем их вовсю (ну насколько это возможно в пору отпусков). Курс пополнился ещё одним преподавателем — Евгением Волосатовым, которого многие, наверное, знают. Ну, а мы традиционно делимся интересными вещами.
Поехали.
В любом приложении есть части кода, “пересекающие” несколько частей архитектуры одновременно.
Эта проблема не так очевидна при работе с полнофункциональным фреймворком. Скорее всего ваша проблема окажется распространенной, и будет шанс, что фреймворк уже разрешил ее, пожертвовав разделением ответственности или предоставив абстракцию поверх фреймворка. Многие фреймворки используют событийно-ориентированную архитектуру для решения проблем сквозной функциональности. Но всегда наступает момент, когда фреймворк не способен предоставить нужный уровень контроля над конкретным фрагментом логики. Это особенно актуально при использовании микрофреймворков или разработке со специализированными библиотеками. Чем больше ваше приложение учитывает принципы разделения ответственности, тем больше будет роль сквозной функциональности в вашей архитектуре.
Learn OpenGL. Урок 5.5 – Normal Mapping
2018-06-29 в 12:17, admin, рубрики: bitangent, bump mapping, c++, normal mapping, OpenGL, opengl 3, tangent, tangent space, Программирование, разработка игр
Normal Mapping
Все сцены, которые мы используем состоят из многоугольников, в свою очередь состоящих из сотен, тысяч абсолютно плоских треугольников. Нам уже удалось немного повысить реализм сцен за счет дополнительных деталей, которые обеспечивает нанесение двухмерных текстур на эти плоские треугольники. Текстурирование помогает скрыть факт того, что все объекты в сцене – всего лишь набор множества мелких треугольников. Великолепная техника, но возможности её не безграничны: при приближении к любой поверхности все одно становится ясно, что она состоит из плоских поверхностей. Большая же часть реальных объектов не является абсолютно плоской и демонстрирует множество рельефных деталей.
Читать полностью »
Сравнение сортировок обменами
2018-06-29 в 12:02, admin, рубрики: php, python, Алгоритмы, алгоритмы сортировки, Программирование, Тестирование IT-систем
Сферические алгоритмы в вакууме — это прекрасно. Однако давайте спустимся с небес на грешную землю и посмотрим как вся эта теоретическая красота покажет себя на практике.
Читать полностью »
Пятничная PHP-викторина: немного приключений программиста Брэда, одна странная последовательность и призы
2018-06-29 в 11:06, admin, рубрики: php, quiz, Блог компании Avito, Занимательные задачки, ненормальное программирование, Программирование, Учебный процесс в ITПривет! Обещали — делаем: продолжаем серию мини-квизов, посвященных разным языкам программирования в нашем блоге (предыдущие: 1 (на знание Python, PHP, Golang и DevOps), 2 (полностью по Go)). Сегодняшний выпуск посвящён PHP.
Под катом — восемь вопросов, немного приключений программиста Брэда, одна странная последовательность и клёвый мерч в качестве призов. Квиз проходит до 4 июля.


