TJclAnsiMappedTextReader - Быстрое чтение текстового файла очень больших размеров
Unit JclFileUtils
В JCL есть TJclAnsiMappedTextReader и TJclWideMappedTextReader основанных на mapped-файлах. Есть свойства Lines[LineNumber: Integer] и LineCount.
При создании Reader'ов можно задать параметр создания индекса.
Произвольный доступ к строкам работает очень быстро и память расходуется только на массив позиций строк.
Но, конечно, есть ограничение винды на максимальный размер mapped-файла.
Максимальный размер файла на FAT16 = 2Гб, на FAT32 = 4Гб. На NTFS максимальный размер ну очень большой
Версия FB 2.5 Firebird-2.5.0.26074_1_Win32.exe ODS 11.2 Скачала FB 2.5.1 Firebird-2.5.1.26351_1_Win32.exe - та же особенность
БД в кодировке UTF-8 UNION in VIEW
String truncation error when selecting from a VIEW with UNION inside особенность пофиксена
Пример. Дерево, по клику на ноде создается tab с гридой.
За отображение и заполнение дерева отвечают:
mainwin/spr-main-win.js
mainwin/spr-main-tree.php
За отображение гриды
mainwin/grid-class-vdoc.js
mainwin/model-vdoc.php
Интерфейс состоит из одного окна (window), в котором на западе растет дерево, в центре tab panel. На дереве поставлен listener, который обрабатывает событие on click - добавляется новая tab panel.
Фактически для динамического создания колонок мы должны передать метаданные и построить по ним модель колонок. Метаданные передаются JsonReader'у вместе с данными и начинаются со слова "metaData", они содержат параметры для конфигурации reader'а, полей и могут содержать произвольные данные.
При чтении наш JsonReader должен выделить метаданные, сконфигурировать себя, заполнить модель колонок и массив полей.
Массив полей он заполнит и без нашего участия, а вот модель колонок придется создавать ручками.
Новый язык go от google (поддержку win обещают)
http://www.ibm.com/developerworks/ru/library/l-go_04/index.html
(серия статей по языку: синтаксис, web разработка, gui, базы)
Немного теории.
Сообщения WM_COPYDATA дают возможность обмениваться информацией между процессами. Обмен происходит через ядро (kernel). В принимающем процессе выделяется память (space) и удерживается для скопированных ядром данных. Отправитель обязан передать указатель на структуру с данными (COPYDATASTRUCT). WM_COPYDATA
wParam = (WPARAM) (HWND) hwnd; // дескриптор передающего окна
lParam = (LPARAM) (PCOPYDATASTRUCT) pcds; // pointer COPYDATASTRUCT - указатель на структуру с данными
Результат true - если принимающая программа обработала сообщение, false - нет. Реализация.
В этой статье. Небольшая схема работы веб сервисов Практическая реализация простого приложения Передача файла с progress bar'ом
Сервисы - это модульные приложения, которые могут быть вызваны и опубликованы в инете.
Работа с ними ведется с помощью протокола SOAP - стандарт легковесного протокола обмена информацией (simple object protocol). Это протокол использует XML для кодирования удаленных вызовов процедур и использует коммуникационный протокол HTTP.
Приложения Web-служб публикуют информацию о том, через какой интерфейс они доступны и как осуществить их вызов с помощью документов WSDL.
Этот код:
1. Кодирует обычную строку в utf-8
2. Помещает эту строчку в поток (stream)
3. И пишет этот поток в ответ (Response)
В результате клиент в браузере получает строчку Это данные из потока ...
Задача. Получить дату в виде строки (из txt файла), преобразовать ее в формат понятный для БД. В дальнейшем преобразованная дата может быть залита в базу или в CSV файл (файл с разделителями)
Необходимо учесть, что разделители могут отсутствовать вовсе, и не совпадать с системными.
To-do Функции проверки даты ...
CGI на Lazarus. Минимальное приложение. POST & GET запросы
Windows / Lazarus 0.9.28.2 beta / fpc 2.2.4
Механизм взаимодействия cgi 1. При получении запроса обозревателя к cgi сервер запускает приложение, передает ему данные из командной строки запроса
2. cgi формирует ответ и помещает его в выходной поток
3. сервер посылает ответ, используя http протокол обратно обозревателю
недостатки cgi - невысокая скорость обработки, повышенная загрузка web сервера, т.к. в случае паралелльной обработки сервер запускает отдельный процесс, для каждого процесса - копию модуля расширения памяти компьютера
Задача. В блобе содержится javaArray с полными именами файлов, включая директории (windows). Необходимо вытащить все имена файлов (без директорий) одной строкой и одним sql запросом.