Практически в каждом проекте, встает задача персистентного чтения/записи конфигурации. Не секрет что существует большое количество уже готовых библиотек для решения этой задачи. Некоторые из-них просты, некоторые чуть сложнее в использовании.
Если же проект разрабатывается с использованием Qt, думаю нет смысла линковать дополнительную библиотеку, так как в Qt есть все средства для создания очень простого, гибкого и кроссплатформенного решения.
Как раз о таком решении хочу расказать вам в этом посте.
Читать полностью »
Метка «c++» - 68
Один из методов работы с конфигурационными файлами в С++ (Qt)
2012-08-05 в 16:29, admin, рубрики: c++, config, qt, Qt Software, tricks, Программирование, метки: c++, config, Qt, tricks, ПрограммированиеНабираем в LilyPond с помощью midi-клавиатуры
2012-08-05 в 14:43, admin, рубрики: lilypond, MIDI, метки: c++, lilypond, MIDIЯ уже пару раз писал про lilypond, а теперь я купил midi-клавиатуру.
Многие нотные редакторы, в том числе Finale и Sibelius, имеют возможность набора нот с midi-клавиатуры аж двумя способами: или можно сыграть что-нибудь под метроном, и это будет немедленно записано нотами, либо можно вводить с оной только ноты, а ритм и всё прочее вводится обычным способом.
Я решил, что аналогичная возможность не помешала бы и для предпочитаемого мною lilypond'а. Так как возможность записать midi-файл, а потом преобразовать его с помощью midi2ly меня не устраивает — слишком много информации именно нотонаборного толка в midi-файле отражены быть не могут (мы об этом уже дискутировали) — я решил написать программу для того, чтобы нажатые клавиши и аккорды немедленно преобразовывались в необходимый формат.
Читать полностью »
Создаем игру на SFML
2012-08-05 в 11:45, admin, рубрики: c++, game development, Gamedev, OpenGL, SFML, разработка игр, метки: c++, Gamedev, OpenGL, SFML, разработка игрПриветствую всех игроделов и им сочуствующих. В этой статье я хочу рассказать о таком фреймворке, как SFML, и попытаться написать на нем простейшую игру (в нашем случае это будет клон легендарного Pong).
Основы подключения C/C++-кода к Haskell проекту
2012-08-05 в 10:11, admin, рубрики: c++, ffi, haskell, метки: c++, ffi, haskellHaskell один из быстроразвивающихся функциональных языков программирования. Возможно это один из тех функциональных языков которому вы хотите отдать предпочтение практического использования в ближайшее время.
Этот топик для тех, кто хотел бы опробовать Haskell на деле, но имеет горы полезного C и C++ кода с которым требуется считаться.Читать полностью »
Quick Text Complex — программы для работы с иностранными языками
2012-08-04 в 10:31, admin, рубрики: c++, google translate client, gpl v3, open source, qt, translator, метки: c++, google translate client, gpl v3, open source, Qt, translator
Здесь на Хабре я уже писал о своем маленьком проекте QuickTextTranslator и на этот раз расскажу о следующем шаге его развития — QuickTextComplex.
Скачать программу
Напомню, что проект является открытым и опубликован под лицензией GPLv3. Это значит, что любой желающий может скачать исходные коды, изменять и распространять эту программу в различных целях, соблюдая при этом требования самой лицензии.
Скачать QuickTextComplex
QuickTextComplex
Это комплекс для работы с иностранными языками, включающий в себя следующие программы:
- QuickTextTranslator v0.3
- QuickTextLearn v0.1
- QuickTextTranslatorConsole v0.1
Под катом описание каждой программы из списка.
Читать полностью »
Максимально точное измерение кода
2012-08-04 в 9:49, admin, рубрики: amd, benchmark, c++, gcc, intel, оптимизация кода, метки: amd, benchmark, c++, gcc, intel, ассемблер, оптимизация кода
В моей статье полугодичной давности о длинной арифметике есть замеры скорости (throughput в тактах) очень коротких фрагментов кода — всего по несколько инструкций. Методика измерения была кривовата, но давала правдоподобные результаты. Потом выяснилось, что результаты таки неверные — поверхностный подход всегда сказывается.
В этом посте я опишу надежный метод «нанобенчмаркинга» с минимальной погрешностью и без подключения специальных библиотек и драйверов, к которому в итоге пришел. Применимость: сравнение однопоточного потенциала процессоров, просто интерес.Читать полностью »
Распаковка Perl2Exe
2012-08-03 в 19:38, admin, рубрики: c++, detours, ollydbg, perl, windows, Программирование, метки: c++, detours, ollydbg, perl
Одним из наиболее часто используемых продуктов для создания standalone-приложений из perl-скриптов и организации какой-никакой защиты является продукт IndigoStar Perl2Exe. Периодически возникают ситуации, когда исходный код скрипта потерян, а на руках имеется только полученный с помощью этой программы exe-файл, но всенепременно хочется добраться до сорцев. Разберемся, как это сделать.
Читать полностью »
Конфигурационные файлы. Библиотека libconfig
2012-08-02 в 13:42, admin, рубрики: c++, c++ библиотеки, конфигурационные файлы, метки: c++, c++ библиотеки, конфигурационные файлыВведение
Как-то находясь в поиске как мне прикрутить конфигурационные ini файлы или json к моему сервачку перебирал варианты, но почему-то они были неудобны или слишком простые, или велосипеды. И хоть я люблю xml конфигурирование, но порою это чрезмерно огромные файлы и неудобно для небольшого количества настроек писать много текста. Раз задал другу вопрос по этой теме, он то мне и подкинул библиотеку. Напоминает она json в смеси с yaml.
Библиотека имеет два интерфейса: функциональный и объектный. Они очень похожи, так как объектный использует внутри функциональную реализацию, но имеют некоторые различия, рассмотренные в данном посте.
Duck typing или “так ли прост старина foreach?”
2012-08-01 в 17:42, admin, рубрики: .net, tricks, метки: c++, tricksЯ думаю, что многие разработчики знают, что цикл foreach в языке C# не так прост, каким он кажется на первый взгляд. Для начала давайте ответим на вопрос: «А что нужно, чтобы конструкция foreach успешно компилировалась?». Интуитивным ответом на этот вопрос кажется что-то типа: «Реализация классом интерфейса IEnumerable или IEnumerable<T>.». Однако, это не так, ну, или не совсем так.
Полный ответ на этот вопрос такой: «Для того чтобы конструкция foreach успешно компилировалась необходимо, чтобы у объекта был метод GetEnumerator(), который вернет объект с методом MoveNext() и свойством Current, а если такого метода нет, то тогда будем искать интерфейсы IEnumerable и IEnumerable<T>».
Причин у такого «утиного» поведения две.
Читать полностью »