Libraries, Articles, Tips and Code Snippets
February 19th, 2019
Common
Video talks
- Яндекс Я.Гости: C++ User Group Meeting
- C++ User Group, Russia (Сообщество C++ программистов в России)
- Видео со встречи в Екатеринбурге
- Александр Коновалов. Масштабируемое управление памятью
- Алексей Кутумов. C++ without exceptions design of some parts of standard library
- Облаков Константин. Lock-free in practice. RealTime-Server
- Алексей Кутумов, Coroutines everywhere
- Видео со встречи в Екатеринбурге
- Meeting C++ 2016
- Implementation of a multithreaded compile-time ECS in C++14 – Vittorio Romeo
- SYCL building blocks for C++ libraries – Gordon Brown. Overview (Slides)
- Qt’s moc and QMetaObject reflection – Olivier Goffart
- Modern C++: What You Need to Know. Apr 7, 2014
- Build 2016
- Build 2015
- CppCon 2016
- CppCon 2014
- T. Grue & S. Kabbes “A Deep Dive into 2 Cross-Platform Mobile Apps Written in C++“. 18 Oct, 2014.
- Zaika Antoun “Microsoft w/ C++ to Deliver Office Across Different Platforms, Part I“. 17 Oct, 2014.
- CppCon 2015
- Chandler Carruth “Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!“
- code::dive 2016 conference
- Chandler Carruth – Making C++ easier, faster and safer (part 1)
- Microsoft GoingNative 2013
- C++ Boot Camp (Embarcadero)
- C++11 Language Deep Dive – Day 3
- Delphi
- FireUI Multi-Device Designer Deep Dive With Sarina DuPont
- Coding Bootcamp: Learn Blazing Fast Android And iOS Development With 13 Hours Of FREE Training
- C++ Coding Bootcamp: Training Course With Over 10 Hours Of FREE Training For Android And iOS
- STL
General
Philosophy
Design patterns
Microsoft Specific API
Windows – IT
Windows
- Emulating CoCreateInstance()
- COM in plain C
- Step by Step: Calling C++ DLLs from VC++ and VB
- Patterns for using the InitOnce functions
- How to determine if the user has administrator privileges?
- Creating an AutoRun-Enabled Application (see additional links in the article)
- Wikipedia: AutoRun, AutoPlay
- Создание компактных приложений на VC++
- Potential Errors Passing CRT Objects Across DLL Boundaries
- How to link with the correct C Run-Time (CRT) library
- How To Use the C Run-Time
- Оптимизация производительности с помощью Concurrency Visualizer в Visual Studio 2010
- The Complete Idiot’s Guide to Writing Shell Extensions – Index
- Deployment (Visual C++)
- Батники против эксплойтов (создание пользователя под которым можно безопасно запускать браузер)
- How To Use NTFS Alternate Data Streams
Windows – Services
- Remote Differential Compression Interfaces. RDC provides COM interfaces that enable synchronization between two locations with an efficient use of bandwidth between the locations.
- DIFF: Your IRdcLibrary API for Remote Differential Compression
- C++, Win32 and Scripting: Quick way to add Scripting support to your applications
Windows – Sensors
Windows – UI
- Windows Libraries – Windows 7 introduces libraries, which provide users with a single, coherent view of their files even when those files are stored in different locations
- Win32 Tips & Tricks
- Message Cracker Wizard for Win32 SDK Developers
- Using WindowsX.h for Better Code Organization and Message Cracking
- Win32 Programming Introduction
- Converting a BMP Image to a PNG Image
- Windows GDI+
- Articles by Michael Dunn
- C++ and Flash: Send or get data from/to a SWF using C++ and ActiveX in Win32
- Visual C++ Samples
- C++ 11 tricks to call a slow function with a progress dialog box
Windows – UI – Ribbon
- Windows Ribbon Framework. The Windows Ribbon framework is a rich command presentation system that provides a modern alternative to the layered menus, toolbars, and task panes of traditional Windows applications.
- Introducing the Windows Ribbon Framework (MSDN)
- Windows 7 Goodies in C++: Introduction to the Ribbon
- How to Support the Ribbon and a Menu in the Same Executable
- Relook your Old and New Native Applications with a Ribbon UI under Vista or Windows 7 (WTL)
- Windows Ribbon for WinForms, Part 0 – Table of Contents
- The Windows Native Ribbon Part 1.5: Laying out Controls and Groups
- The Windows Native Ribbon Part 2: Setting Ribbon Properties at Runtime
- The Windows Native Ribbon Part 3: Buttons and Menus
- Ribbon with C++, Part 1: Introduction to the Windows Ribbon Framework (web)
- Ribbon with C++, Part 2: First Ribbon Enabled Application (web)
- Ribbon with C++, Part 3: Using Buttons with Windows Ribbon Framework (web)
- Ribbon with C++, Part 4: Layout Controls in Windows Ribbon Framework (web)
- Ribbon with C++, Part 5: Using Galleries with Windows Ribbon Framework
- Ribbon with C++, Post 6: Ribbon Dynamic Structure Capabilities
- Windows 7: Exploration of 7 exciting new programming features in a single application!
Windows – C++
Windows – COM/ActiveX
Windows – Web/Network
- SMTP Client with SSL/TLS
- A Fully Featured Windows HTTP Wrapper in C++
- Advanced Data I/O using IPC in Windows (Codeproject)
Windows – System
Windows – Crypto
- Microsoft CryptoAPI Samples Source Code. Here is a list of cryptographic samples that run on the Windows platform and that use Microsoft Crypto API
- Using Crypto++ library with Windows Phone 8
- RAD Studio 10.1 Berlin – App Tethering using Encryption Hooks
Windows 7
Windows 8
- Visual C++ and WinRT/Metro – Some fundamentals (codeproject)
- Tutorial: Create your first Metro style app using C++
- MSDN: Developing Metro style apps (rus)
- Загрузка данных в Windows 8 с использованием BackgroundTransfer
Windows Phone
- 3 Ways to update the Application Tile Content in Mango
- Create your first Metro style app using C# or Visual Basic
- Мини reverse engineering и модификация Windows Phone приложений
- Примеры приложений для Windows Phone 7 от Microsoft
- Weather in Windows Phone 7
- My Windows Phone 7 Applications
- Working with GIF images in Windows Phone
- How to display GIF images in a Windows Phone application
- Local Database for Windows Phone
- Facebook authentication in Windows Phone application
- Application Bar Overview for Windows Phone
- Как написать своё VoIP-приложение с работой в фоне под Windows Phone
- List of all Metro colors as on Windows 8 and Windows Phone
- CodeProject: Introduction to Apache Cordova in Universal Windows Platform Using Visual Studio
Media – Audio
Debug – MSDN
- Debugging Tools for Windows (WinDbg, KD, CDB, NTSD)
- Debug Diagnostic Tool v2.0 (Update 1)
- Switching to Managed Compatibility Mode in Visual Studio 2013
- Debugging and Error Handling (see also SetUnhandledExceptionHandler)
- 10 More Visual Studio Debugging Tips for Native Development
- Finding Heap Corruption Tip on Windows
- Monitoring Desktop Heap Memory and troubleshooting issues (part I)
- WinDBG – The Basics for Debugging Crash Dumps in Windows 10
Testing
Debug – PDB
- Description of the .PDB files and of the .DBG files
- Querying the .Pdb File
- Debug Interface Access SDK
- Information from Microsoft about the PDB format. We’ll try to keep this up to date. Just trying to help the CLANG/LLVM community get onto Windows.
Architecture (hardware)
Architecture – Memory
- Wikipedia: Data structure alignment
- MSDN: Examples of Structure Alignment
- MSDN: Windows Data Alignment on IPF, x86, and x64
- Umdhtools.exe: How to use Umdh.exe to find memory leak
- Finding Memory Leaks Using the CRT Library
- Visual C++ 2010: Detecting Memory Leaks For Global Variables
- What every programmer should know about memory, Part 1
- Разработка на PC и производительность — Memory Latency
- Несколько слов о размере структур в С/С++ и о том, почему так получилось
- Data alignment: Straighten up and fly right (russian version)
- Поиск ошибок при работе с памятью
- Размещение объектов в оперативной памяти. Понятие указателя
- Every Programmer Should Know These Latency Numbers
- Архитектура памяти в Windows: мифы и легенды (spin-off)
- Padding and Rearranging Structure Members
Multi-threading
- MTCopy: A Multi-threaded Single/Multi File Copying Tool
- Delphi
- Safe locks for multi-thread applications
- How to write fast multi-thread Delphi applications
- Thread safe values, version 1.2
- Faster parallel programs with improved FastMM with Primož Gabrijelčič
- OmniThreadLibrary
- ModernCpp: Tag Tasks
- C++ 11 Threads: Make your (multitasking) life easier
- C/C++: Optimizations That Aren’t (In a Multithreaded World)
- Потоки, блокировки и условные переменные в C++11 (часть 1, часть 2)
- C++11 Multithreading Tutorial via Q&A – Thread Management Basics
- Lock-free структуры данных. Итераторы: multi-level array
- CodeProject:
- Parallel programming – OpenCL
- C# Example – Using Parallel ForEach to Improve Existing Code
- C++ Coding Exercise – Parallel For – Monte Carlo PI Calculation
- MFC Support for Direct2D – Part 3: Multithreading
- OpenMP
- OpenMP (site)
- Профилировка производительности OpenMP приложений
- OpenMP Specifications
- OpenMP Compilers
- Начало работы с OpenMP
- Эффективное распределение нагрузки между потоками с помощью OpenMP
- Advanced OpenMP Programming
- Использование OpenMP для распараллеливания вычислений
- 32 OpenMP Traps For C++ Developers (rus)
Signals / Delegates
- Performance of a C++11 Signal System. Original GitHub source code. Fork1.
- The Impossibly Fast C++ Delegates, Fixed
- Implementation of Delegates in C++11
JSON
- JSON for Modern C++ (GitHub)
- Refactoring Session #3 – from JSON to a Proper Class.
- Parsing json documents from a stream
- Компактное представление таблиц в JSON
- Codeproject: fastBinaryJSON
- Delphi:
REST
Network
- Delphi
- Sending iOS (and Android) remote push notifications from your Delphi service with the HTTP/2 protocol
- Foundation classes used by other Grijjy repositories (GitHub)
- Scalable HTTP/S and TCP client sockets for the cloud (Example: DelphiScalableHttp application)
- Компонент TChromium: начало работы, установка
- Как удалить кукисы (cookies) в TChromium
- TChromium: заполнение и сабмит формы
- Practical C++ Sockets
Network – SSL
- SSL : Convert your Plain Sockets to SSL Sockets in an Easy Way
- MSDN: Windows Sockets 2 (Windows) (Winsock)
Network – Libraries
- C/C++: Nghttp2: HTTP/2 C Library (GitHub) – This is an implementation of the Hypertext Transfer Protocol version 2 in C. The framing layer of HTTP/2 is implemented as a reusable C library. On top of that, we have implemented an HTTP/2 client, server and proxy. We have also developed load test and benchmarking tools for HTTP/2 and SPDY. An HPACK encoder and decoder are available as a public API.
- Delphi
- Delphi Scalable Client Sockets (GiHub) – Scalable HTTP/S and TCP client sockets for the cloud. Now that the cloud has become a core part of every developer’s life, we are faced with designing scalable, distributed services that reside on these platforms (Amazon’s AWS, Google Compute and Microsoft Azure) and are able to interact with other third-party facing services and middle-ware such as databases, messaging brokers, remote push messaging services and more.
- Delphi — проверка почты (Часть 3)
Debug – Optimization and Performance
- Build faster and high performing native applications using PGO (Profile Guided Optimization)
- Using likely() and unlikely()
- Number crunching: Why you should never, ever, EVER use linked-list in your code again
- WinAPI: QueryPerformanceCounter
- Profile-guided optimization (далее PGO) — техника оптимизации программы компилятором, нацеленная на увеличение производительности выполнения программы.
- .NET – Comparing implementations with BenchmarkDotnet
Debug – Tools
Debug – C++
Debug – Delphi
- Основы оптимизации прикладных программ на Delphi
- How to debug application’s hang?
- Как узнать, почему зависла программа?
- Обработка ошибок
- Debugging Techniques in Delphi and Bug Prevention (pdf)
- A Better Way to Present and Organize Error Messages in Your Delphi Applications
Archive – Delphi
- using Abbrevia example. Stackoverflow
.NET
- Encrypting and Decrypting a C# string
- How to convert from System::String* to Char* in Visual C++
- The Microsoft All-In-One Code Framework is a free, centralized code sample library (browser all code samples) provided by the Microsoft Community team. Our goal is to provide typical code samples for all Microsoft development technologies. Our team listens to developers’ pains in MSDN forums, social media and various developer communities. We write code samples based on developers’ frequently asked programming tasks, and allow developers to download them with a short code sample publishing cycle. Additionally, our team offers a free code sample request service. This service is a proactive way for our developer community to obtain code samples for certain programming tasks directly from Microsoft.
- Marshaling between Managed and Unmanaged Code
- Bring The Simplicity of Windows Forms to Native Apps
- Using NRefactory for analyzing C# code
- PInvoke pointer safety: Replacing IntPtr with unsafe struct pointers
- How to: Use an Application Configuration File to Target a .NET Framework Version
- Gmail Contact List using C#.net Code
.NET – App configuration
- Loading .NET Assemblies out of Seperate Folders
- Load external C#/C++ dll from a specific folder in C#
- 6 ways to get the current directory in C#
- C#: Simple Command Line Arguments Parser
- Redirecting Assembly Loads at Runtime
.NET – UI
.NET – Controls
- Custom List Box Control with Enable/Disable Items Feature
- ListBox with custom items (colors, images, text alignment)
- A Professional Ribbon You Will Use (Now with orb!)
- Fancy Windows Forms
- Cool Vista-style Menu
.NET – VB.NET
.NET – Optimization
- Interpolated strings: advanced usages
- Performance: string concatenation vs String.Format vs interpolated string
- Comparing implementations with BenchmarkDotnet
- BenchmarkDotNet is a powerful .NET library for benchmarking
.NET – Exceptions
.NET – Testing
- How to Start Unit Testing .NET Projects
- InternalsVisibleTo with strong-named assemblies
- Analyse your code with NDepend
- MSTest v2: Setup a test project and run tests
- Providing Constant Context for .NET Core Tests
.NET – Debug
.NET – PowerShell
.NET – web services
ASP.NET
HTML
C/C++
- Макросы с переменным числом параметров
- Declaration matching
- Please declare your variables as const
- FIO19-C. Do not use fseek() and ftell() to compute the size of a file
- utarray: dynamic array macros for C
- Слежение за изменениями в директории: как это делается в разных ОС
- Initialization in C++ is bonkers
- Пять популярных мифов про C++: часть 1, часть 2
- Почему не лишено смысла писать код на C, а не на C++
- Reversing C++ Virtual Functions: Part 1
C++ 11/17
- 10 new C++11 features in Visual Studio 2013
- One line template call for a dynamically loaded DLL function
- Ranges: the STL to the Next Level
- C++0x (С++11). Лямбда-выражения
- Why Do We Need std::addressof, If We Already Have The & Operator?
- Help me sort out the meaning of “{}” as a constructor argument
- Type-Traits: Performance Matters
- Hash Tables
- New standard library features in Visual C++ 2017 RC
C++ – STL
C++ 11/17 Optimization
C++ Mobile Development
- Connect();// 2014. C++: Conformance And Cross-Platform Mobile Development. Nov 12, 2014. by Herb Sutter
- Visual C++ for Cross-Platform Mobile Development
- Create an Android Native Activity App
- CodeProject: C++ on Android
- Video
C++ Design Patterns
C++ – Testing
C/C++ – Codeproject
- MetaEncrypt. A C++ template to encrypt strings at compile time with template metaprogramming.
- Faster Bit Rotation
- State Machine Design in C++
C/C++ – Libraries
C++/CLI
Delphi – Embarcadero Documentation
Delphi – Learn
- Learn to Program in Delphi – Putting the Calculator Together
- Learn to program with C++Builder: Homepage
Delphi
- Don’t Just Code in Delphi, Think in Delphi
- Основные события формы
- Take care of CONST and interface parameters!
- Code Snippets Database (DelphiDabbler CodeSnip is a Delphi code snippets repository)
- search for installed windows updates using Delphi, WMI and WUA
- Reading the SMBios Tables using Delphi
- Prevent the System from Entering Sleep or Turning off the Display
- Индикатор загрузки/ожидания
- Как создать свое событие для своего класса (TNotifyEvent)
- Delphi: работа с cURL с помощью библиотеки-обертки Curlpas
- SOAP в Delphi. API Яндекс.Спеллер (проверка правописания)
- Как создать ярлык URL для доступа в интернет
- Регистрация DLL и ActiveX
- Pseudobinary case statement. Convert array of booleans to a pseudobinary integer. Good for up to 12 bits.
- Отслеживаем изменение реестра Windows
- Отключение файрвола в XP
- Склеиваем изображения средствами Delphi
- WMI Tasks using Delphi – Services
- Sending messages to non-windowed applications
- Deep copy clone object in Delphi
- How to determine if a string matches a pattern – Sometimes we need to know if a string matches a pattern, which is a string with wildcards ( for example ? and * )
- String comparison in Delphi – Have you ever wondered how utilities like Beyond Compare or DIFF are comparing files? They do it (I guess) by solving the longest common subsequence (LCS) problem.
- Receive Windows Messages In Your Custom Delphi Class – NonWindowed Control
- Using C object files in Delphi
- Using C++ objects in Delphi
- Sharing Code Between Delphi and C++Builder
- An Object Binding Prototype
- Delphi 2010 – RTTI & Attributes
- Сериализация объектов стандартными средствами Delphi
- Работа с библиотекой Synapse в Delphi – начало
- Synapse
- ISAPI Extensions for IIS or How to write CMS on Delphi (rus)
- Сверхмалые приложения на Delphi
- Разработка «стандартных» TAction
- Работа с TCanvas в Delphi под Android
- Using Delphi containers from C++ (Video)
- Great Video On Delphi Form/Code Separation (+Video)
- Introducing Inline Variables in the Delphi Language
- What Every Delphi Developer Should Know About Writing for Windows and Mac
- A Better Way to Present and Organize Error Messages in Your Delphi Applications
- Delphi Language Enhancements
- Immediate TTimer to emulate PostCreate / PostOnCreate event in Delphi
- Use the Excel.Application in C++Builder(bcc64)
- LiveBindings in RAD Studio
- What’s New – The Berlin release contains the following new and improved features. Improved Installation Experience
Delphi – IDE
- Delphi RTL Improvements in 10.3 Rio
- VCL Support for Per Monitor v2 and GetSystemMetrics Coming in 10.3
- New in RAD Studio 10.3: High DPI Image List for Windows
- iOS 12 and Android 9 Support in RAD Studio 10.3 Rio
Delphi – Language Features
Delphi – UI
- Powerful GUIs using Scalable Vector Graphics and the RiverSoftAVG SVG Component Library with Tom Grubb
Delphi UI – FireMonkey
Delphi – Protect
- TurboPower OnGuard is a library to create demo versions of your Borland Delphi & C++Builder applications. Create demo versions that are time-limited, feature-limited, limited to a certain number of uses, or limited to a certain # of concurrent network users.
Delphi – Open Source projects
- processoskiller
- ZXing Barcode Scanning object Pascal Library
- TMS myCloudData REST client – FREE open-source client component for seamless access to the myCloudData.net service. (GitHub)
Delphi – Resources
Delphi – Code samples
- Malcome Groves’ repository contains all the sample sourcecode from his conference and event sessions, from the blog entries on http://www.malcolmgroves.com, from videos, etc.
- ZLibCompressDecompress – This example shows the usage of TZCompressionStream and TZDecompressionStream. Supply the two filenames in the Edit controls of the main form and then press either the Compress or the Decompress button to do the actions. When the Compress button is pressed, the ‘.zip’ extension is automatically added to the output file. When the Decompress button is pressed, ‘.zip’ is automatically removed.
- Drag Multiple Files From Delphi’s TShellListView. Get The List Of Selected Files When TShellListView.MultiSelect is True. – The TShellListView control (a part of the Shell Controls package) can be used to display files from the file system. Paired with TShellTreeView shell, the TShellListView can be used to mimic Windows Explorer user interface.
- Selecting a TListView Item on Item Check / Uncheck. Selecting a List View Item When the Item’s Checkbox is Checked.
- Base64
- Rad Studio 10.1 Berlin Dialog API Sample Source
Delphi – Android
- Основы программирования под Android на примере игры Судоку
- Riding the waves over the holidays with REST
- Quickly Auto Generate iOS, OSX, And Android Headers For Delphi And C++Builder
- Android Permission Model
Delphi – 3D
- Introduction to 3D Multi-Device App Development with FireMonkey and C++Builder
Delphi – Tools
- Delphi Programming Helper
- Using CMake with the free Embarcadero C++ compiler
- OTA Interface Search – A tools to allow users to search for Open Tools API interfaces in the Open Tools API .pas files and find paths to interfaces, methods and properties. (more info)
SQL
SQLite
- SQLite in C++ Using SQLite databases in C++
- Delphi
- SQLite и Delphi 7: работа с БД с помощью DISQLite
- Как отобразить данные SQLite в DBGrid
- DISQLite3 implements a self-contained, embeddable, zero-configuration SQL database engine for Delphi (Embarcadero / CodeGear / Borland).
- Getting Started with SQLite on Windows 8 > Installation
- How to Store data or variables using SQLite in WP AppWindowsPhone 8.1 SQLite: How to Store Data in DataBase for Beginners Tutorial(C#-XAML)
- Производительность LINQ to SQL CE
- Using the SQLite database engine with Windows Phone 8 apps
Tips
Tips – Delphi
Behavior-driven development (BDD)
In software engineering, behavior-driven development (BDD) is a software development process that emerged from test-driven development (TDD). Behavior-driven development combines the general techniques and principles of TDD with ideas from domain-driven design and object-oriented analysis and design to provide software development and management teams with shared tools and a shared process to collaborate on software development. (wiki)
TDD (Unit Testing)
Delphi – Other
Delphi – Web
- Tutorial for making a Service Application using Delphi
- How to call Delphi code from scripts running in a TWebBrowser
- How to call Delphi code from scripts running in a TWebBrowser (part 1 of 6)
- DMVCFramework (GitHub): “Getting Started: 5 minutes guide“
Delphi – Localization
C/C++
- Идеи по усовершенствованию реализации библиотек на языке Си
- Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP)
- A garbage collector for C and C++
- Что такое size_t и ptrdiff_t
- Статический анализ кода C++
- Идеи по усовершенствованию реализации библиотек на языке Си (On C Library Implementation)
- Обфускация строк C++ в Visual Studio
C Language
- C Finally Gets A New Standard. Tom Plum explores the new additions to C in a series of articles, starting with language-level atomic operations and thread primitives.
- Object Orientation in C?!
Objective-C
- Авторотация сложных интерфейсов в программах для iPad
- Objective-C с нуля
- Objective-C для C# разработчиков
C/C++ – Presentations
Libraries – Graphics
- Работа с Clutter: Часть 1. Знакомство с библиотекой Clutter
Libraries – Network
Tools – CMake
Qt
- C++ Qt Programming Playlist
- Сборка Qt без зависимостей (MS Visual Studio)
- Приватные слоты в паттерне Pimpl от Qt
- Pimpl. D-pointer. Или чеширский кот по версии Qt
- What Threads are not, and how to avoid making a fool out of yourself
- QLibrary (brief)
- Implementing a Reusable Custom QNetworkReply
- Threads, Events and QObjects
- Understand the Qt containers
- Локализация и числительные
- Qt — трудности перевода
- Qt — статическая линковка библиотеки под Windows
- Desktop Components for Qt 5
Qt – Performance
Qt – Samples
Articles – Web
Articles – Lua
- Добавление скриптинга в программу с помощью Lua
- Пишем интерпретатор Brainfuck на Lua
- Я люблю Lua. I love Lua.
Python
Git
- Wikipedia: Git. Russian and English articles
- Tools
- Git SCM to Windows
- SourceTree – a free Git client for Windows or Mac
- TortoiseGit
- GitHub is the best way to collaborate with others. Fork, send pull requests and manage all your public and private git repositories.
- Learn Git
- Руководство пользователя GIT
- The entire Pro Git book (v2), written by Scott Chacon and Ben Straub and published by Apress, is available here (online book) (Russian version (v1))
- Удачная модель ветвления для Git
- Про Git на пальцах (для переходящих с SVN)
Marketing
- 31 Video Marketing Statistics to Inform Your Strategy [Infographic]
Орфография
- LanguageTool — это свободное программное обеспечение для проверки грамматики, пунктуации, орфографии и стиля. В состав LanguageTool входят грамматические правила для 30 языков. Программа представлена в виде расширения для LibreOffice и Apache OpenOffice, дополнений к Google Chrome и Mozilla Firefox, а также в форме независимых консольного и графического приложений.