3 Jun, 2010
Нека разгледаме следния програмен отрязък:
if (NULL == someApiPointer)
{
//do something here
};
Защо сравняваме NULL със стойността на someApiPointer, а не обратното - както са ни учили в училище и както изглежда по-логично?
Когато за първи път срещнах подобна конструкция си помислих, че има нещо специално в нея - прави се от гледна точка на сигурността или пък е нов стил на писане?
Продължение » » »
16 Dec, 2009
CreateToolhelp32Snapshot е основна функция що се отнася до изброяване на процеси, модули, нишки и heap-ове. В MSDN тя е дефинирана така:
HANDLE WINAPI CreateToolhelp32Snapshot(
__in DWORD dwFlags,
__in DWORD th32ProcessID
);
Най-просто казано първият параметър указва каква информация ще се изисква, а вторият - процесът, за който се отнася въпросната информация.
Нека за момент си представим, че искате да получите списък с нишките, които принадлежат на даден процес. Необходимият флаг е TH32CS_SNAPTHREAD. По инерция въвеждате и идентификатора на процеса, който Ви интересува. Изпълнявате и ХОП - ИЗНЕНАДА! Сдобивате се със списък на всички активни в операционната система нишки (до които имате достъп), а не за конкретната програма?!?
Продължение » » »
26 Sep, 2009
Едва ли има потребител, който не знае що е то компютърен вирус (като потърпевш или обеззаразител
). Но поведението на вируса, за който ще стане дума е доста нестандартно. Открит е съвсем случайно, поради БЪГ в него
Историята.
Преди време, в руски Delphi форум е зададен въпрос, относно неочаквана грешка по време на изпълнение на някаква програма: Runtime Error 3. В последствие става ясно, че в компилираната програма има скрит изпълним код:
Изследването му води до следния извод: вирусът НЕ ЗАРАЗЯВА изпълними файлове, а самия Delphi компилатор! И прави само това - разпространява се т.е. не извършва деструктивни операции и може да се смята, че е "безвреден". Ето и част от неговия код:
В Интернет вирусът е познат под името W32/Induc-A.
Вирус, поразяващ програмисти
Продължение » » »
23 Aug, 2009
SignTool.exe е command-line инструмент за подписване на изпълним код (CodeSigning). На скоро трябваше да го използвам за подписване на една примерна програма и се сблъсках с "многозначителното" съобщение за грешка: "SignTool Error: File not found:", при положение, че файлът, който трябваше да се подпише си беше коректно зададен и си беше на мястото.
Продължение » » »
20 Apr, 2009
На скоро един клиент поиска нещо съвсем просто - в страничката, където се показва една километрична шарена таблица да има един бутон: "Запази като PDF файл".
Сайтът беше писан на PHP, което привидно улесняваше нещата - все някой, все някога е правил някаква библиотека за такива работи. Отговорът "Добре, няма проблем" си дойде някак естествено... Аз и голямата ми уста...
Всъщност това си е интересна задачка. Особеното в случая беше, че не исках да "пиша" буква по буква PDF-а, нито да рисувам чертички, ка-мо-ли да оцветявам. Желанието ми беше да намеря от ония вълшебни и безплатни класове за PHP, които да конвертират HTML код директно в PDF. След малко Гугълуване нещата започнаха да се нареждат - намерих няколко опен-сорс решения и картината започна да става цветна:
Продължение » » »
21 Feb, 2009
Ще се постарая тази статия да не е поредната на тема "Инсталация на PHP под Windows". Казвам го, защото обикновено стъпките са непълни, липсва ценна информация и възникват неочаквани неща, за които трябва да се ровите по форумите. Освен това не съм привърженик на принципа "цъкай без да знаеш какво значи това, което цъкаш"
Какво е PHP?
Продължение » » »
21 Feb, 2009
Доста лъжливо съобщение при положение, че конфигурацията в php.ini е ОК, а пътят до PHP и EXT папките е добавен в променливата на обкръжението (environment variable) %PATH%
Имаме следното: php 5.2.8 като архивен файл, а не .MSI.
Всъщност PHP-то си намира библиотеката php_mysql.dll, ОБАЧЕ самата библиотека не може да намери helper файла си libmysql.dll, въпреки, че се намира в достъпна през %PATH% директория (!?!). Така че ако искате да си спестите момента с дебъгването просто копирайте libmysql.dll в %SYSTEMROOT%\System32 и всичко заспива.
%SYSTEMROOT% е променлива, която съдържа пътя до директорията, където е инсталиран Windows. Обикновено е C:\Windows
Ако и това не помогне и държите ДА НЕ използвате .MSI пакети или прословутите бъндели (PHP+MySQL+каквото се сетите друго) можете да проверите дали сте конфигурирали нещата както трябва, базирайки се статията за инсталиране на PHP.
Допълнителна информация:
[ http://www.issociate.de/board/post/102775/PHP5/IIS6_Unable_to_load_dynamic_library.html ]
8 Feb, 2009
Доста често се налага да се конвертира време в Unix еквивалента, който представлява броя на секундите, изминали от 01.01.1970 00:00:00 до сега*. В езици като PHP, Ruby, Perl и т.н. това не е проблем, но при VBScript, ASP си е направо кошмарна/досадна задача.
* Без да се броят т.нар. Leap Seconds
Случайно попаднах на един хубав сайт, който показва начините за пресмятане на Unix timestamp в различните езици, включително бази данни:
Продължение » » »
10 Jan, 2009
[ UPDATED - 11.01.2009 ]
Почти съм убеден, че повечето от Вас, които пишете скриптове за управление/конфигуриране на компютри под Windows използват VBScript. Защо? Защото го има от мноооого отдавна, защото има купища информация за него в Интернет, заедно с безброй примери и защото е почти "прост" за използване ... даже прекалено? Нека си признаем - като скриптов език не е нищо особено. Основните му предимства са три (според мен!):
- вграден е в операционната система от Windows 95/98 насам;
- лесно се инстанциират ActiveX/COM обекти (дефакто в това му е силата...но и слабото място);
- подписване на скрипта с цифров сертификат (codeSigning);
Продължение » » »