Categories
сметачи

глупаво IE, глупаво

В един момент спря да ми се коментира.
Страница 0. Страница 1. Ако ви се намира IE, вижте тези две страници под IE. Моля.
Разликата между тях е само повтарящия се знак.
Кодът около дългия текст е:

<div style='width: 718px; border: 1px solid black;'>...</div>

Оказва се, че ако повтарящият се знак е например ?, (, ), !, {, }, [, ], / (може да има и още, не съм опитва всички) IE чисто и просто не пренася думите на нов ред.

Ако има някаква логика в това му десйтвие, моля, споеделете я с мен. Аз не я виждам. Създателите на всички други браузъри, които ми бяха под ръка, очевидно също не са видели логика в подобен тип действия.

Categories
сметачи

baba вече и в mysql

Снощи на ИББ се оказа, че няма да е толкова лесно (трябвало да се минава през маркетинга, май) да се появи в MySQL функция с име BABA, която… да връща низа baba. Трябвало било сам да си я напиша. Ами щом трябва. Като се прибрах набързо си спретнах една. Кръпките към кода са три и то адски мънички.

Ако вашата мечта също е в MySQL да има функция BABA или просто сте любопитни: кръпките са общи. Пробвани са върху версии 4.0.26 и 4.0.25. Подозирам, че ще работят и за по-стари такива от 4.0.x клона.

Ето го и батко:
mysql> SELECT BABA();
Усетихте ли мощта?

Categories
свят сметачи

свобода?

Липсата на свобода не е хубаво нещо. Не мога да си представя някой да ми я отнеме.
Интернет обществото е достатъчно силно за да не го позволи. Силата се изразява в инициативи като EFF15 Blog-a-thon

Blog-a-thon tag:

Categories
сметачи

уеб за добро

Преди известно време си попромених пак темичката на блога. За пръв път наистина ми харесва. Има още какво да се доизкусурява, но поне измислих шрифта – голямата въпросителна. Не ми беше никак лесно да се откъсна от любимата georgia, но сега за заглавията пасва идеално (и по-голям размер даже), а Arial-а си е Arial. Макар и може би малко подценяван напоследък, но се чете по-лесно и има малко повече място за писане. Последното се дължи и на това, че поразширих малко цялото сайтче де. За съжаление картинката горе не позволява да си го направя както аз си искам – да е на цялата широчина, но здраве да е.

Мдаам. Направих си и две странички за грешка. 404 и 500. С много зор (и мазни хакове) успях да си направя google custom search-а да ми търси що-годе само в моята си директория (/~nb/), а не в целия дебиан-ски домейн (ааа, не, не питайте как – гледайте гадния js ако искате…).

И портокалова (мандаринена?) икончица.

Галерийката е почти готова. Stay tuned…

Появяването на всички тези глезотийки и отделянето на време за тях бяха силно подпомогнати от дребния факт, че съм във сесия. Вива ла сесия!

Categories
сметачи

рег. изр.

Някои хора обичат честичко да използват регулярни изрази. Аз също съм от тях. Понякога някои от тези хора се сблъскват със следния проблем: какъв би бил регулярен израз, който отговаря на думи несъдържащи в себе си низа баба.

След кратки справки с книги, интернет и perldoc и местни perl гуру-та стана ясно, че лесен начин наистина няма. Набързо обаче се сетих за един труден. Поне на пръв поглед труден.

Всеки регулярен израз описва един език – това е множеството от думи, които на практика този регулярен израз match-ва (български превод?). Всеки език описан с регулярен израз се нарича регулярен език (защо ли…). Езиците породени от крайни автомати се наричат автоматни.

Теорема на Клини: Регулярните езици и автоматните езици съвпадат.

Сега захождаме към съставяне на нашия регулярен израз – опитваме се да си построим краен автомат, който да описва езика, който ние искаме. Тъй като обаче някакво вътрешно чувство ни води, решаваме да си опишем езика, който включва всички думи несъдържащи в себе си ба вместо баба. От втория път успяваме да си построим едно крайно детерминирано автоматче:
Приятен краен автомат
Малка забележка: дискретната математика не вярвам да познава означението ^xyz, но в нашия случай (благодарим на perl) с това чудо означаваме множеството на всички букви от азбуката, без x, y и z.

Сега остава по този автомат да си съставим регулярния израз.
Както доста от доказателствата на теореми от дискретната математика и това на Клини е конструктивно и от него получаваме алгоритъм за намиране на регуларярен израз, съответен да даден краен автомат. Няма да се впускам в подробности. Доказателството, както и алгоритъма ги има във вероятно всеки учебник по дискретна математика. След една-две страници сметки накрая от горния автомат получаваме следния регулярен израз, записан в термините на езика perl:

(([^b]*)|([^b]*b(([^ab][^b]*b)|b)*)|([^b]*b(([^ab][^b]*b)|b)*[^ab][^b]*))

Ето и по-грозна негова версия:

( [^b]* ) |
( [^b]* b ( ( [^ab] [^b]* b ) | b )* ) |
( [^b]* b ( ( [^ab] [^b]* b ) | b )* [^ab] [^b]* )

Това е. Ето тук има примерно скриптче, което използва горния регулярен израз и проверява верността му за всички думи с дължина по-малка или равна на 5 върху азбуката {a,b,c,d}.

П.П. Подозирам, че горният израз може да се поопрости и дължината му да се намали поне наполовина. Спи ми се…
П.П.П. Нищо чудно това да може да се направи и с двадесетинасимволен израз. Не ми пука :)