Pull to refresh

Создаём парсер для ini-файлов на Haskell

Haskell *
В данной статье я расскажу как написать свой парсер ini-файлов на Haskell. За основу возьму контекстно-свободную грамматику, построенную в моей предыдущей статье. Для построения парсера будет использоваться библиотека Parsec, которая позволяет строить свои собственные парсеры комбинируя готовые примитивные парсеры при помощи парсерных комбинаторов.

Важно: в данной статье предполагается, что читатель знаком с основами Haskell. Если это не так, то я советую сначала прочитать пару статей для новичков (их можно найти в том числе и на Хабре).
Читать дальше →
Total votes 39: ↑30 and ↓9 +21
Views 8.1K
Comments 15

Создаём парсер для ini-файлов. Теория

Website development *
Эта статья задумывалась как наглядное сравнение двух схожих библиотек для создания парсеров: Boost Spirit для C++ и Parsec для Haskell. Потом я решил, что лучше разбить статью на 3 части. В первой части я расскажу как написать контекстно-свободную грамматику для описания содержимого ini-файла.
Читать дальше →
Total votes 43: ↑36 and ↓7 +29
Views 28K
Comments 25

Создаём парсер для ini-файлов на C++

C++ *
В данной статье я расскажу как написать свой парсер ini-файлов на C++. За основу возьмём контекстно-свободную грамматику, построенную в моей предыдущей статье. Для построения парсера будет использоваться библиотека Boost Spirit, которая позволяет строить свои собственные парсеры комбинируя готовые примитивные парсеры при помощи парсерных комбинаторов.

Важно: в данной статье предполагается, что читатель знаком с основами C++ (в том числе будет активно использоваться STL). Если вы не очень в себе уверены, то я советую сначала прочитать пару статей для новичков по С++ и по STL.
Читать дальше →
Total votes 68: ↑58 and ↓10 +48
Views 35K
Comments 43

Работа с предпочтениями групповой политики: управление INI-файлами

System administration *
Настройка установленных программных продуктов – довольно утомительная процедура. А если учесть то, что в большинстве организаций идентичные настройки должны быть установлены не на одной машине, а по меньшей мере у нескольких сотрудников одного отдела, то если вы настраиваете приложения средствами графического интерфейса, весь этот процесс может затянуться надолго. Учитывая этот момент, можно сразу прийти к такому выводу, что желательно было бы попробовать автоматизировать процесс настройки программ, чтобы можно было централизованно управлять конфигурациями приложений ваших пользователей.
По большому счету, можно выделить несколько методов, позволяющих настраивать программные продукты, не прибегая к использованию пользовательского интерфейса. К таким методам можно отнести формирование сценариев для автоматизации определенных задач средствами какого-то скриптового языка, например Windows PowerShell или AutoIT, и последующее распространение таких сценариев средствами групповой политики. Помимо этого, если программные продукты генерируют определенные параметры в системном реестре операционных систем, вы можете централизованно предопределять такие настройки при помощи соответствующего элемента предпочтения групповой политики. В конце концов, некоторые программы могут для хранения своих настроек использовать конфигурационные файлы, изменяя которые вы можете вносить некоторые изменения в настройке таких продуктов.
Сегодня мы с вами остановимся именно на последнем описанном выше методе. Другими словами, из материала данной статьи вы узнаете о том, что собой представляют INI-файлы, каким образом они могут повлиять на настройку программ, а также, естественно, я расскажу о централизованной настройке INI-файлов. Но обо всем по порядку.
Читать дальше →
Total votes 18: ↑15 and ↓3 +12
Views 20K
Comments 9

Tree — убийца JSON, XML, YAML и иже с ними

Programming *D *
Recovery mode
Здравствуйте, меня зовут Дмитрий Карловский и я… много думал. Думал я о том, что не так с XML и почему его в последнее время променяли, на бестолковый JSON. Результатом этих измышлений стал новый стандарт формат данных, который вобрал в себя гибкость XML, простоту JSON и наглядность YAML.

image Tree — двумерный бинарно-безопасный формат представления структурированных данных. Легко читаемый как человеком так и компьютером. Простой, компактный, быстрый, выразительный и расширяемый. Сравнивая его с другими популярными форматами, можно составить следующую сравнительную таблицу:
Больше — лучше JSON XML YAML INI Tree
Человекопонятность 3 1 4 5 5
Удобство редактирования 3 1 4 5 5
Произвольная иерархия 3 3 3 1 5
Простота реализации 3 2 1 5 5
Скорость парсинга/сериализации 3 1 1 5 5
Размер в сериализованном виде 3 1 4 5 5
Поддержка поточной обработки 0 0 5 5 5
Бинарная безопасность 3 0 0 0 5
Распространённость 5 5 3 3 0
Поддержка редакторами 5 5 3 5 1
Поддержка языками программирования 5 5 3 5 1
Читать дальше →
Total votes 275: ↑168 and ↓107 +61
Views 167K
Comments 629

Создаём REST-сервис на Rust. Часть 2: читаем INI; multirust

Rust *
Tutorial
Всем привет.

В первой части мы сделали простейший прототип, работающий с PostgreSQL.

При этом мы прописали все параметры соединения с базой прямо в коде. Давайте теперь вынесем их в конфигурационный файл.

В качестве формата конфигурации я выбрал INI — достаточно простой и известный формат.

Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Views 18K
Comments 9

C#, способы хранения настроек программы

Visual Studio *C# *
Tutorial
Recovery mode
Sandbox

Введение


В интернете приведено очень много способов хранения настроек программы, но все они как-то разбросаны, поэтому я решил их собрать вместе и расписать, как этим пользоваться.

C# и app.config


На хабре уже была посвящена этому тема, поэтому… перейти

C# и Properties.Settings


Информация о Properties.Settings

Организация Properties.Settings — это обычный xml файл, который можно найти в папке пользователя:

С:\ Users \ [user name] \ AppData \ Local \ [ (Project Name) or (AssemblyCompany) ] \ [name project_cashBuild] \ [AssemblyVersion] \ user.config

Для начала нам нужно создать такие переменные для Properties.Settings. Перейдем в Properties -> Settings.settings:
Читать дальше →
Total votes 26: ↑10 and ↓16 -6
Views 140K
Comments 22

Механизм контроля версий базы данных в GIT (управление дампами MySQL)

CMS *Website development *MySQL *MODX *Git *
Sandbox

Привет, любители Хабра! Сегодня я решил поделиться своим вариантом бекапа данных из MySql и рассказать о том как его можно использовать для контроля версий в Git. И если вам интересно узнать, как можно контролировать состояние базы данных на всех этапах разработки, или просто делать правильные бекапчики базы своих проектиков и разворачивать из в любой момент времени, тогда прошу к прочтению!

Читать дальше →
Total votes 22: ↑17 and ↓5 +12
Views 11K
Comments 13

PHP-класс для работы с INI-файлами

PHP *Designing and refactoring *ООP *

Касс-помощник для работы с INI файлами. Класс расширяет возможности класса File. Класс реализует шаблон проектирования "Строитель". В представленном классе идет реализация функционала для работы с INI файлами. В качестве базового функционала представлено создание, добавление и чтение секций, добавление и удаление ключей и другой функционал.

Узнать больше
Total votes 13: ↑9 and ↓4 +5
Views 2.4K
Comments 18

Bare-metal kubernetes-кластер на своём локальном компьютере

X5 Tech corporate blog System administration *IT Infrastructure *DevOps *

Привет, я Кирилл Шаталаев, инженер инфраструктуры и автоматизации в X5 Tech.

Я в курсе, что статей на эту тему достаточно, в том числе и на Habr. И когда у меня возникла задача поднять кластер, я их все перечитал. Где-то очень подробно рассказывается, как ставить виртуалки с убунтой на Windows под virtualbox, и очень скудно про сам кубер. Где-то досконально описано, как это всё круто можно провернуть с terraform в Яндекс.Облаке. Где-то про сам kubespray скупо пару слов, зато куча скриншотов прометея с кибаной.

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

Читать далее
Total votes 16: ↑14 and ↓2 +12
Views 16K
Comments 22