вівторок, 24 березня 2015 р.

  

for(auto type : {pdfa_XObject, pdfa_Pattern, pdfa_ExtGState})
{
...
}

///
pV = GetVarByPath(pD, {pdfa_SMask, pdfa_G, pdfa_Resources});

PdfStr5::PDFVariant GetVarByPath(PdfStr5::PDFVariant pVar, const std::initializer_list& path)
{
 PdfStr5::PDFVariant* pRes = nullptr;
 PdfStr5::PDFDictionary* pDict = pVar ? pVar->GetDictionary() : NULL;

 for (auto key : path)
 {
  if (pDict == nullptr)
  {
   pRes = nullptr;
   break;
  }

середа, 15 травня 2013 р.

Час перевести до локального

Для FILETIME

 
  BOOL WINAPI FileTimeToLocalFileTime(
  _In_   const FILETIME *lpFileTime, // Час по Гринвичу
  _Out_  LPFILETIME lpLocalFileTime  // Отриманий час по локальному
);

Для SYSTEMTIME

 
  TIME_ZONE_INFORMATION TimeZone;
  GetTimeZoneInformation(&TimeZone)
  SystemTimeToTzSpecificLocalTime(&TimeZone, &UniversalTime, &LocalTime);

четвер, 19 травня 2011 р.

Формати дати і часу

Container
Domain
Format / Notes
Min Date
Resolution
SYSTEMTIME
Win32
Struct (16 bytes)
January 1, 1601
1 millisecond
FILETIME
Win32
Offset value (64bit unsigned int)
January 1, 1601
100 nanoseconds
VT_DATE
Win32 / OLE Automation
Offset value (64bit signed float), 0.0 is December 30, 1899.
January 1, 100 (1)
500 milliseconds (2)
FAT/MS-DOS
Win32
Struct (values packed into two 16bit ints)
January 1, 1980
2 seconds
time_t
CRT
Offset value (unsigned int)
January 1, 1970
1 second
tm
CRT
Struct (36 bytes (3))
January 1, 1900
1 second

Перетворення

Windows Times


SYSTEMTIME
FILETIME
VT_DATE
FAT/приложений-DOS
SYSTEMTIME

SystemTimeToFileTime
SystemTimeToVariantTime

FILETIME
FileTimeToSystemTime


FileTimeToDosDateTime
VT_DATE
VariantTimeToSystemTime


VariantTimeToDosDateTime
FAT/приложений-DOS

DosDateTimeToFileTime
DosDateTimeToVariantTime

CRT Times


time_t
ТМ
time_t

gmtime
ТМ
mktime


Converting between SYSTEMTIME and time_t

 
void SystemTimeToTime_t(SYSTEMTIME *systemTime, time_t *dosTime) 
{ 
 LARGE_INTEGER jan1970FT = {0}; 
 jan1970FT.QuadPart = 116444736000000000I64; // january 1st 1970 
 LARGE_INTEGER utcFT = {0}; 
 SystemTimeToFileTime(systemTime, (FILETIME*)&utcFT); 
 unsigned __int64 utcDosTime = (utcFT.QuadPart - an1970FT.QuadPart) / 10000000; 
 *dosTime = (time_t)utcDosTime; 
}
void Time_tToSystemTime(time_t dosTime, SYSTEMTIME *systemTime)
{ 
 LARGE_INTEGER jan1970FT = {0}; 
 jan1970FT.QuadPart = 116444736000000000I64; // january 1st 1970
 LARGE_INTEGER utcFT = {0};
 utcFT.QuadPart = ((unsigned __int64)dosTime) * 10000000 + jan1970FT.QuadPart; 
 FileTimeToSystemTime((FILETIME*)&utcFT, systemTime);
}


четвер, 10 лютого 2011 р.

Игровые движки для Delphi

Полный список игровых движков на (доступных для) Delphi от pascalgames.net
Игровые движки:
ZenGL - http://andru-kun.ru/zengl.html
OMEGA Engine - http://isadateam.com/omega.php
Asphyre - http://afterwarp.net/
DGLEngine - http://dronprogs.mirgames.ru/dgle_about.html
eXgine - http://xproger.mirgames.ru/?id=2&page=4
eXgine 2.0 - http://code.google.com/p/exgine/
CAST II - http://casteng.com/ru
GLScene - http://glscene.org/
ReLi 3D Engine - http://coderman.org.ru/index.php?id=9
HGEDelphi - http://www.bilsen.com/HGEDelphi.zip
Genesis Device - http://www.genesisdevice.net/
Tokyo Game Engine - http://www.mathpudding.com/PGD/tss/
TRIPLE DASH GARLIC 3D - http://www.igrodel.ru/
DanJetX - http://dan.mirgames.ru/main.php?page=djx
3DOED - http://oed3d.narod.ru/3dOED.htm
pHEngine - http://rdi.mirgames.ru/?page=pheng
3DE - http://svsd.mirgames.ru/
LEAF 2 - http://leafproject.com.sapo.pt/
DunconGames - http://code.google.com/p/duncongames/
Andorra - http://andorra.sourceforge.net/
Irrlicht - http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=10511
Sky3D - http://sky3d.sourceforge.net/news.php
DiF Engine - http://code.google.com/p/difengine/
ZGE - http://code.google.com/p/zgameeditor/
Физические движки:
PAPPE - http://sourceforge.net/projects/pappe
Newton - http://www.saschawillems.de/?page_id=75
Chipmunk - http://www.par-com.net/~paulr/GLScene/chipmunkdemo.zip

середа, 23 вересня 2009 р.

Браузер как текстовой редактор

Хочу чтобы браузер был как текстовой редактор — отредактировать текст (болд, курсив, выделение), удалить текст, выбрать фон.
Наберите в строке браузера
 
javascript:document.body.contentEditable='true'; document.designMode='on'; void 0

и нажмите Enter. Болд и курсив делаются посредством выделения текста мышью и нажатия Ctrl+B и Ctrl+I соответственно(в Опере так). Эту фичу по стандарту должны поддерживать все браузеры.

четвер, 14 травня 2009 р.

Собственно блокировка: pg_try_advisory_lock()

clipped from dklab.ru

В качестве первого параметра pg_try_advisory_lock() мы используем tableoid::integer,
что является внутренним идентификатором таблицы subscription. Это значение отлично
подходит в качестве изолированного "пространства имен" для блокировки.
blog it

середа, 29 квітня 2009 р.

Хороша стаття про чергу завдань на PostgreSQL

Скопійовано із статі

Собственно блокировка: pg_try_advisory_lock()

Теперь модифицируем наш запрос так, чтобы при его запуске на нескольких машинах результаты никогда не пересекались. Это делается так (псевдо-операция @IDS := ... означает, что данные нужно сохранить в некоторый массив вызывающего скрипта):

/* Исходный запрос: получаем элементы-кандидаты на обработку. */
@IDS := ARRAY(
 SELECT id
 FROM subscription
 WHERE
   last_mail_at < MAILING_STARTED_AT
   AND subscription_type = <тип подписки>
   AND pg_try_advisory_lock(tableoid::INTEGER, id) /* вот она, блокировка! */
 LIMIT 100
);

/* Пост-проверка: отсеиваем тех, кто успел пометиться обработанным за */
/* время работы предыдущего запроса (см. ниже подробности про это). */
@IDS := ARRAY(
 SELECT id
 FROM subscription
 WHERE
   last_mail_at < MAILING_STARTED_AT
   AND id IN (@IDS)

);


Функция pg_try_advisory_lock() пытается "повесить" исключительную блокировку на некоторый
"виртуальный" идентификтор, который описывается парой ее параметров. Если этот идентификатор
уже заблокирован, она ничего не делает и возвращает false. Если же блокировку удалось
установить, то функция возвращает true. Блокировка снимается, когда вызывается
pg_advisory_unlock(), либо когда клиент отсоединяется от базы данных.