C, PHP, VB, .NET

Дневникът на Филип Петров


Авторски архив

* Double submit cookie

Публикувано на 14 май 2024 в раздел ОСУП.

Техниката за двойно изпращане на бисквитка се използва за превенция на XSRF атаки в случаите, в които не желаем да записваме XSRF token в сесията или просто не използваме сесии. Прочети още…

.

 


* Из историята на текстовия редактор vi

Публикувано на 13 май 2024 в раздел История.

Първият в света What you see is what you get (WYSIWYG) текстови редактор е създаден преди близо 50 години. Казвал се е Bravo и е бил предназначен за Xerox Alto. Всяка буква от клавиатурата е съответствала на команда. Писането на текст се извършвало с команда „i“ (insert) – отваря буфер, който се запълва до натискане на бутона Return. Най-проблемно за новаците било да седнат, да отворят документ и да напишат думата „edit“. Команда „e“ (everything) маркирала целия текст, „d“ (delete) го изтривала, „i“ (insert) вкарвала в режим за писане и „t“ просто вкарвал буквата t. За нещастие команда „u“ (undo) можела да обърне само последната операция. Прочети още…

.

 


* Плаващите училища в Бангладеш

Публикувано на 29 март 2024 в раздел История.

В Бангладеш около 20% от територията на страната страда от тежки наводнения по време на мусоните. Говорим за период от началото на месец юни до средата и понякога дори до края на октомври. В по-критични ситуации понякога се стига и до над 70% потопена територия. Бедствията от наводненията по това време на годината са много чести.
Можете да си представите колко тежко е за живот на хората от такива райони. Очаквано те не строят масивни постройки, които могат да бъдат унищожени ако се потопят под вода, а по-скоро живеят в леки колиби, които могат лесно да бъдат възстановени за кратко време. А какво се случва с училищата? Прочети още…

.

 


* Покриващи индекси

Публикувано на 12 декември 2023 в раздел Бази от Данни.

Разработчици знаят, че тежките заявки могат да подобрят значително бързодействието си при наличие на индекси при колоните, които участват в условието WHERE. Това обикновено води до значително подобрение. Има обаче една техника, която може да ускори нещата дори още повече. Нарича се „покриващи индекси“. Прочети още…

.

 


* Дължина на отсечка с краища произволни точки от страни на квадрат

Публикувано на 14 ноември 2023 в раздел Вероятности.

Нека е даден квадрат, чиято страна е с дължина [mathi]l[/mathi]. Върху страните на квадрата са избрани произволни точки [mathi]P[/mathi] и [mathi]Q[/mathi]. Каква е вероятността [mathi]|PQ|>l?[/mathi]? Прочети още…

.

 


* Триъгълник в квадрат

Публикувано на 25 октомври 2023 в раздел Вероятности.

Нека е даден квадрат [mathi]ABCD[/mathi] чиято страна е с дължина [mathi]a[/mathi]. Избираме произволна точка [mathi]P[/mathi] вътре в квадрата. Каква е вероятността [mathi]\triangle ABP[/mathi] да е тъпоъгълен? Прочети още…

.

 


* Страниране

Публикувано на 17 октомври 2023 в раздел Бази от Данни.

Когато информацията на някоя страница е много, понякога решаваме да направим т.нар. страниране. Това означава да покажем първите няколко записа и след тях да поставим връзки към следваща страница, на която ще се покажат следващите няколко записа. Тоест даваме възможност на потребителят да прелиства напред-назад като в книга, вместо да му изсипваме цялото съдържание накуп. Как се постига това в MySQL/MariaDB? Прочети още…

.

 


* Нестандартна задача с претегляния на монети

Публикувано на 28 септември 2023 в раздел Математика.

Имате 10 купчинки с по 10 монети от 2 лева. В една от купчинките монетите са фалшиви. Знаете, че истинска монета от 2 лв. тежи 9 грама, а фалшива монета тежи 8 грама. Имате и много прецизен електронен кантар. Как може само с ЕДНО претегляне да определите коя е купчинката с фалшиви монети?

Прочети още…

.

 


* Играта с плувеца и гоблина

Публикувано на 06 юли 2023 в раздел УКИ.

Дадено е кръгло езеро. Един плувец влиза да се къпе в него. Изведнъж на брега се появява гоблин. За щастие лошият гоблин не може да плува. За нещастие той е много по-бърз от плувеца. Прочети още…

.

 


* Монитори и семафори в Java

Публикувано на 04 юли 2023 в раздел ПИК3 Java.

Вече съм показвал няколко примери с употребата на монитори. Зад кадър в тях стои т.нар. мютекс (mutex) – представете си го като ключалка (променлива със стойности „отключено“ и „заключено“). Идеята е, че когато някоя нишка заключи мютекса, други могат да видят това и съответно да спрат и да изчакат, докато тя си свърши работата. Мониторите автоматизират този процес, като организират централизирано управлявана опашка за изчакване на ресурсите. Това се прави чрез синхронизирани блокове или синхронизирани методи. Тук просто ще припомня с елементарен пример. Прочети още…

.