Страница 1 от 212»

Archive for Програмиране

Мистерия: if (something==NULL) или if (NULL==something)?

   Нека разгледаме следния програмен отрязък:

if (NULL == someApiPointer)
{
  //do something here
};

Защо сравняваме NULL със стойността на someApiPointer, а не обратното - както са ни учили в училище и както изглежда по-логично?
Когато за първи път срещнах подобна конструкция си помислих, че има нещо специално в нея - прави се от гледна точка на сигурността или пък е нов стил на писане?

Продължение » » »

Print This Post Print This Post
1 Star2 Stars3 Stars4 Stars5 Stars (7 votes, average: 5.00 out of 5)
Loading ... Loading ...

Разни програми, написани на Delphi

Хмм...първата таблица определено ме изненада :)

[ http://delphi.wikia.com/wiki/Good_Quality_Applications_Built_With_Delphi ]

Print This Post Print This Post
1 Star2 Stars3 Stars4 Stars5 Stars (13 votes, average: 5.00 out of 5)
Loading ... Loading ...

Безумната комбинация CreateToolhelp32Snapshot + TH32CS_SNAPTHREAD

CreateToolhelp32Snapshot е основна функция що се отнася до изброяване на процеси, модули, нишки и heap-ове. В MSDN тя е дефинирана така:

HANDLE WINAPI CreateToolhelp32Snapshot(
  __in  DWORD dwFlags,
  __in  DWORD th32ProcessID
);

Най-просто казано първият параметър указва каква информация ще се изисква, а вторият - процесът, за който се отнася въпросната информация.

Нека за момент си представим, че искате да получите списък с нишките, които принадлежат на даден процес. Необходимият флаг е TH32CS_SNAPTHREAD. По инерция въвеждате и идентификатора на процеса, който Ви интересува. Изпълнявате и ХОП - ИЗНЕНАДА!  Сдобивате се със списък на всички активни в операционната система нишки (до които имате достъп), а не за конкретната програма?!?

Продължение » » »

Print This Post Print This Post
1 Star2 Stars3 Stars4 Stars5 Stars (17 votes, average: 5.00 out of 5)
Loading ... Loading ...

Вирус поразява инсталации на Delphi?!?

   Едва ли има потребител, който не знае що е то компютърен вирус (като потърпевш или обеззаразител :) ). Но поведението на вируса, за който ще стане дума е доста нестандартно. Открит е съвсем случайно, поради БЪГ в него :)

Историята.

Преди време, в руски Delphi форум е зададен въпрос, относно неочаквана грешка по време на изпълнение на някаква програма: Runtime Error 3. В последствие става ясно, че в компилираната програма има скрит изпълним код:

delphi-virus-code

Изследването му води до следния извод: вирусът НЕ ЗАРАЗЯВА изпълними файлове, а самия Delphi компилатор! И прави само това - разпространява се т.е. не извършва деструктивни операции и може да се смята, че е "безвреден". Ето и част от неговия код:

delphi-virus-code-pascal

В Интернет вирусът е познат под името W32/Induc-A.

Вирус, поразяващ програмисти :D

Продължение » » »

Print This Post Print This Post
1 Star2 Stars3 Stars4 Stars5 Stars (28 votes, average: 4.89 out of 5)
Loading ... Loading ...

SignTool Error: File not found:

SignTool.exe е command-line инструмент за подписване на изпълним код (CodeSigning). На скоро трябваше да го използвам за подписване на една примерна програма и се сблъсках с "многозначителното" съобщение за грешка: "SignTool Error: File not found:", при положение, че файлът, който трябваше да се подпише си беше коректно зададен и си беше на мястото.

Продължение » » »

Print This Post Print This Post
1 Star2 Stars3 Stars4 Stars5 Stars (12 votes, average: 5.00 out of 5)
Loading ... Loading ...

Колко струва един PDF?

   На скоро един клиент поиска нещо съвсем просто - в страничката, където се показва една километрична шарена таблица да има един бутон: "Запази като PDF файл".
Сайтът беше писан на PHP, което привидно улесняваше нещата - все някой, все някога е правил някаква библиотека за такива работи. Отговорът "Добре, няма проблем" си дойде някак естествено... Аз и голямата ми уста... :) :) :)

Всъщност това си е интересна задачка. Особеното в случая беше, че не исках да "пиша" буква по буква PDF-а, нито да рисувам чертички, ка-мо-ли да оцветявам. Желанието ми беше да намеря от ония вълшебни и безплатни класове за PHP, които да конвертират HTML код директно в PDF. След малко Гугълуване нещата започнаха да се нареждат - намерих няколко опен-сорс решения и картината започна да става цветна:

Продължение » » »

Print This Post Print This Post
1 Star2 Stars3 Stars4 Stars5 Stars (17 votes, average: 5.00 out of 5)
Loading ... Loading ...

How-To: Инсталиране на PHP под Windows и IIS

   Ще се постарая тази статия да не е поредната на тема "Инсталация на PHP под Windows". Казвам го, защото обикновено стъпките са непълни, липсва ценна информация и възникват неочаквани неща, за които трябва да се ровите по форумите. Освен това не съм привърженик на принципа "цъкай без да знаеш какво значи това, което цъкаш" :)

Какво е PHP?

Продължение » » »

Print This Post Print This Post
1 Star2 Stars3 Stars4 Stars5 Stars (14 votes, average: 5.00 out of 5)
Loading ... Loading ...

PHP & MySQL & IIS6: Unable to load dynamic library ./ext/php_mysql.dll – The specified procedure could not be found

   Доста лъжливо съобщение при положение, че конфигурацията в 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 ]

Print This Post Print This Post
1 Star2 Stars3 Stars4 Stars5 Stars (8 votes, average: 5.00 out of 5)
Loading ... Loading ...

Преминаване към Unix timestamp и обратно при различните езици

   Доста често се налага да се конвертира време в Unix еквивалента, който представлява броя на секундите, изминали от 01.01.1970 00:00:00 до сега*. В езици като PHP, Ruby, Perl и т.н. това не е проблем, но при VBScript, ASP си е направо кошмарна/досадна задача.

* Без да се броят т.нар. Leap Seconds

Случайно попаднах на един хубав сайт, който показва начините за пресмятане на Unix timestamp в различните езици, включително бази данни:

Продължение » » »

Print This Post Print This Post
1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 5.00 out of 5)
Loading ... Loading ...

Изпълняване на .php скриптове вместо .vbs под Command Prompt?

[ UPDATED - 11.01.2009 ]

   Почти съм убеден, че повечето от Вас, които пишете скриптове за управление/конфигуриране на компютри под Windows използват VBScript. Защо? Защото го има от мноооого отдавна, защото има купища информация за него в Интернет, заедно с безброй примери и защото е почти "прост" за използване ... даже прекалено? Нека си признаем - като скриптов език не е нищо особено. Основните му предимства са три (според мен!):

  • вграден е в операционната система от Windows 95/98 насам;
  • лесно се инстанциират ActiveX/COM обекти (дефакто в това му е силата...но и слабото място);
  • подписване на скрипта с цифров сертификат (codeSigning);

Продължение » » »

Print This Post Print This Post
1 Star2 Stars3 Stars4 Stars5 Stars (21 votes, average: 5.00 out of 5)
Loading ... Loading ...