Блогът

нищо лично

Честита Баба Марта

without comments

Здрави и живи!
… от мен и от чичо

Written by tzappa

март 1st, 2011 at 1:41 pm

Да си направим Coca-Cola

without comments

Ето рецептата

  • 3 капки течен екстракт от листата на южноамериканския храст кока
  • 85 грама лимонена киселина
  • 28.3 грама кофеин
  • 30 грама захар
  • 9.46 литра вода
  • 1.06 литра сок от лайм
  • 28.3 грама ванилия
  • 42.5 грама карамел
  • Tайната съставка 7Х (от нея се слагат 56.7 грама на всеки 19 литра сироп):
  • 227 грама алкохол
  • 20 капки портокалово масло
  • 30 капки лимоново масло
  • 10 капки масло от индийско орехче
  • 5 капки кориандър
  • 10 капки масло нероли
  • 10 капки канела

Това е била оригиналната рецепта. Както е известно отдавна няма ни кока ни кола.

Written by tzappa

февруари 16th, 2011 at 9:58 am

JavaScript enclosure

without comments

Това е enclosure функцията, която използват в jQuery:

(function (window, undefined) {
   // jQuery код
})(window);

Виждал съм и разширена версия на горното:

(function (window, document, undefined) {
   // код
})(window, window.document);

Това защо така го правят javascript гурутата няма да пиша, но аз бих се спрял на нещо подобно

(function (window, $, undefined) {
   // код
})(window, window.jQuery);

// или дори още по-разширеното:
(function (window, document, $, undefined) {
   // код
})(window, window.document, window.jQuery);

защото почти във всичките ми проекти jQuery-то присъства и освен това очаквам функцията да е достъпна и със краткото име $. Това може и да не е така, ако се наложи да преправяш сайт, който използва prototype (или беше нещо друго?) и кратката форма не е свободна.

Written by tzappa

октомври 1st, 2010 at 12:23 am

target=“_blank“ и W3C

without comments

При проверка за валидността на XHTML strict документ в сайта на W3C разбрах, че едно от правилата забранява използването на атрибута target в <a> тага, а шефа настояваше някои от линковете да се отварят в нов прозорец. Ето какво измислих:
Вместо да използвам target=“_blank“ слагам class=“blank“ и с jQuery добавям onclick event към DOM, който да отвори линка в нова страница:

$(document).ready(function () {
    $('a.blank').click(function () {
        window.open($(this).attr('href'));
        return false;
    });
});

В конкретния случай това ми костваше само 4 реда код, защото имах заредено jQuery и вече имах и $(document).ready(function () {}).

Written by tzappa

септември 30th, 2010 at 11:36 pm

Търсене през SSL

with one comment

ssl_logo_lgДнес разбрах, че Гугъл пускат търсачка на адрес https://www.google.com, т.е. през SSL за да подобри „privacy“-то. Така трети страни няма да знаят какво ви вълнува в момента. Това е добре, но така или иначе това какво търсите го интересува преди всичко чичо Гугъл и той неуморно записва всичко това в огромната си база от данни. По тази причина, и ако защитата на интимните ви мисли е важно за вас, ще предложа да пробвате мегатърсачката StartPage.com. Те гарантират, че не записват нищо, а резултатите се сервират както от Гугъл така и от другите големи търсачки. Разбира се и те използват SSL. Единствения недостатък поне за мен, е че няма разделяне на резултатите по регионален признак. Т.е. ако ви интересува информация само за и от България ще се наложи да минете през google.bg.

Written by tzappa

май 23rd, 2010 at 4:06 pm

Posted in Без категория

Tagged with ,

Нова изненада от Гугъл

without comments

Гугъл имат ново лого по случай 30-годишнината от създаването на играта PacMan.
logo
Това нямаше да е толкова голяма изненада, ако логото беше само картинка. Но този път логото може да бъде играно! Търсачката превърна първата си страница в игра на PacMan. Играта-лого ще е там 2 дни, така че играйте докато можете :)
PacMan

Допълнение:
От Гугъл са решили, че интереса към играта е бил твърде голям за да стои само 1 ден, и затова са я поместили на адрес: http://www.google.com/pacman/ за да и се наслаждаваме по-дълго.

Written by tzappa

май 23rd, 2010 at 1:53 pm

Цифров сертификат и Ubuntu 10.04

with one comment

На старата версия на Убунту (09.10) така и не успях да си подкарам Цифровия сертификат от Спектър АД, но сега се справих за 2 минути. Сега ще отделя далеч повече време да опиша стъпките.
Използвам четец за смарт карти OMNIKEY® CardMan 6121 и смарт карта Siemens OS V 4.3 B 32K. И двете са закупени от Спектър АД, но същите се предлагат и от InfoNotary, така че стъпките за притежателите им са еднакви.
Инсталираме демон за смарт карти (четци) pcscd и диагностична програма:
# sudo apt-get install pcsc-tools
# sudo apt-get install pcscd

И още един пакет свързан с Smart Cart
# sudo apt-get install opensc

Това е!
Сега остава да импортираме веригата от сертификати на Спектър от тук http://spektar.org/certificates1.html, като за целта един по един добавяме Spektar Root CA, Spektar Universal CA, Spektar Qualified CA, Spektar NonUniversal C. За всеки сертификат Firefox визуализира прозорец подобен на този:
Screenshot-Edit CA certificate trust settings
Аз лично маркирах и трите опции, защото не знаех точно кой от тези 4-ти сертификати за какво служи.
При инфонотари адреса от който могат да се вземат техните 4-ри сертификата е този http://www.infonotary.com/site/?p=doc_g1_2
И идва последната стъпка – добавянето на собствения сертификат, който ще се чете от смарт картата. Във Firefox -> Preferences -> Advanced -> Encryption -> Security Devices
Screenshot-Firefox Preferences

натискаме Load и избираме следния файл: /usr/lib/onepin-opensc-pkcs11.so

Screenshot-Load PKCS#11 Device

Натискаме ОК и сме готови!

p.s. Забравих да спомена, че може да се наложи да се рестартира, защото pcscd не тръгва автоматично.

Written by tzappa

май 18th, 2010 at 1:09 pm

ufw – Ubuntu firewall

without comments

По принцип настройките на Firewall за линункс са истинско предизвикателство. За да бъде една стена ефективна са нужни огромни познания и много внимателна преценка за конкретните нужди. В замяна на това получавате най-добрата възможна защита. За жалост не съм голям разбирач, и въпреки че съм чел в интернет много за iptables, не съм стигнал до никъде. Късмет е че има и не е една и не две програми, които подпомагат писането на правила за iptables, но и при тях се налага да се отдели много време за да ги изучим, а след това се забравят много бързо. В моя конкретен случай това не ме задоволява. Така попаднах на ufw. Там нещата на повърхността са лесни и се помнят също толкова лесно.
За елементарна настройка на стената елементарни команди:
# ufw status – проверяваме сегашното състояние. В моя случай резултатът беше:
Status: inactive

Добавяне на пълна забрана за външен достъп:
# ufw default deny
Добавяне на изключение за SSH:
# ufw allow 22
Добавяне на изключение за Apache:
# ufw allow 80
И активиране на firewall-а:
# ufw enable

А сега резултата, който се вижда с ufw status verbose:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip

To Action From
– —— —-
22 ALLOW IN Anywhere
80 ALLOW IN Anywhere

От това се разбира, че защитната стена е активна, записва в лог файл само важни събития, че целия изходящ трафик е разрешен, входящия е забранен с изключение на портове 22 и 80.
За натоварени сървъри може да спрем записа в лог файлове:
# ufw logging off
и т.н.

И за десерт – резултата в IPTables от тези 4-5 команди:

Chain INPUT (policy DROP)
target prot opt source destination
ufw-before-logging-input all — anywhere anywhere
ufw-before-input all — anywhere anywhere
ufw-after-input all — anywhere anywhere
ufw-after-logging-input all — anywhere anywhere
ufw-reject-input all — anywhere anywhere
ufw-track-input all — anywhere anywhere

Chain FORWARD (policy DROP)
target prot opt source destination
ufw-before-logging-forward all — anywhere anywhere
ufw-before-forward all — anywhere anywhere
ufw-after-forward all — anywhere anywhere
ufw-after-logging-forward all — anywhere anywhere
ufw-reject-forward all — anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ufw-before-logging-output all — anywhere anywhere
ufw-before-output all — anywhere anywhere
ufw-after-output all — anywhere anywhere
ufw-after-logging-output all — anywhere anywhere
ufw-reject-output all — anywhere anywhere
ufw-track-output all — anywhere anywhere

Chain ufw-after-forward (1 references)
target prot opt source destination

Chain ufw-after-input (1 references)
target prot opt source destination
ufw-skip-to-policy-input udp — anywhere anywhere udp dpt:netbios-ns
ufw-skip-to-policy-input udp — anywhere anywhere udp dpt:netbios-dgm
ufw-skip-to-policy-input tcp — anywhere anywhere tcp dpt:netbios-ssn
ufw-skip-to-policy-input tcp — anywhere anywhere tcp dpt:microsoft-ds
ufw-skip-to-policy-input udp — anywhere anywhere udp dpt:bootps
ufw-skip-to-policy-input udp — anywhere anywhere udp dpt:bootpc
ufw-skip-to-policy-input all — anywhere anywhere ADDRTYPE match dst-type BROADCAST

Chain ufw-after-logging-forward (1 references)
target prot opt source destination

Chain ufw-after-logging-input (1 references)
target prot opt source destination

Chain ufw-after-logging-output (1 references)
target prot opt source destination

Chain ufw-after-output (1 references)
target prot opt source destination

Chain ufw-before-forward (1 references)
target prot opt source destination
ufw-user-forward all — anywhere anywhere

Chain ufw-before-input (1 references)
target prot opt source destination
ACCEPT all — anywhere anywhere
ACCEPT all — anywhere anywhere state RELATED,ESTABLISHED
ufw-logging-deny all — anywhere anywhere state INVALID
DROP all — anywhere anywhere state INVALID
ACCEPT icmp — anywhere anywhere icmp destination-unreachable
ACCEPT icmp — anywhere anywhere icmp source-quench
ACCEPT icmp — anywhere anywhere icmp time-exceeded
ACCEPT icmp — anywhere anywhere icmp parameter-problem
ACCEPT icmp — anywhere anywhere icmp echo-request
ACCEPT udp — anywhere anywhere udp spt:bootps dpt:bootpc
ufw-not-local all — anywhere anywhere
ACCEPT all — BASE-ADDRESS.MCAST.NET/4 anywhere
ACCEPT all — anywhere BASE-ADDRESS.MCAST.NET/4
ufw-user-input all — anywhere anywhere

Chain ufw-before-logging-forward (1 references)
target prot opt source destination

Chain ufw-before-logging-input (1 references)
target prot opt source destination

Chain ufw-before-logging-output (1 references)
target prot opt source destination

Chain ufw-before-output (1 references)
target prot opt source destination
ACCEPT all — anywhere anywhere
ACCEPT all — anywhere anywhere state RELATED,ESTABLISHED
ufw-user-output all — anywhere anywhere

Chain ufw-logging-allow (0 references)
target prot opt source destination

Chain ufw-logging-deny (2 references)
target prot opt source destination

Chain ufw-not-local (1 references)
target prot opt source destination
RETURN all — anywhere anywhere ADDRTYPE match dst-type LOCAL
RETURN all — anywhere anywhere ADDRTYPE match dst-type MULTICAST
RETURN all — anywhere anywhere ADDRTYPE match dst-type BROADCAST
ufw-logging-deny all — anywhere anywhere limit: avg 3/min burst 10
DROP all — anywhere anywhere

Chain ufw-reject-forward (1 references)
target prot opt source destination

Chain ufw-reject-input (1 references)
target prot opt source destination

Chain ufw-reject-output (1 references)
target prot opt source destination

Chain ufw-skip-to-policy-forward (0 references)
target prot opt source destination
DROP all — anywhere anywhere

Chain ufw-skip-to-policy-input (7 references)
target prot opt source destination
DROP all — anywhere anywhere

Chain ufw-skip-to-policy-output (0 references)
target prot opt source destination
ACCEPT all — anywhere anywhere

Chain ufw-track-input (1 references)
target prot opt source destination

Chain ufw-track-output (1 references)
target prot opt source destination
ACCEPT tcp — anywhere anywhere state NEW
ACCEPT udp — anywhere anywhere state NEW

Chain ufw-user-forward (1 references)
target prot opt source destination

Chain ufw-user-input (1 references)
target prot opt source destination
ACCEPT tcp — anywhere anywhere tcp dpt:ssh
ACCEPT udp — anywhere anywhere udp dpt:ssh
ACCEPT tcp — anywhere anywhere tcp dpt:www
ACCEPT udp — anywhere anywhere udp dpt:www

Chain ufw-user-limit (0 references)
target prot opt source destination
REJECT all — anywhere anywhere reject-with icmp-port-unreachable

Chain ufw-user-limit-accept (0 references)
target prot opt source destination
ACCEPT all — anywhere anywhere

Chain ufw-user-logging-forward (0 references)
target prot opt source destination
RETURN all — anywhere anywhere

Chain ufw-user-logging-input (0 references)
target prot opt source destination
RETURN all — anywhere anywhere

Chain ufw-user-logging-output (0 references)
target prot opt source destination
RETURN all — anywhere anywhere

Chain ufw-user-output (1 references)
target prot opt source destination

Written by tzappa

май 17th, 2010 at 11:57 am

Ubuntu root login

without comments

Имам няколко виртуални сървъра от rackspacecloud.com на които върви Ubuntu, но от време на време добавям по още някой за различни тестове. Това са някои от началните стъпки, които предприемам за тях.

За разлика от Desktop версията на Ubuntu, тук в началото имам само root account. За да премахна възможността за root логин през SSH изпълнявам тези стъпки:

Изтеглям и инсталирам всички налични актуализации (като root)
# apt-get update
# apt-get upgrade

Добавям обикновен потребител
# adduser tzappa
Задавам парола и т.н.

Проверявам дали имам отдалечен достъп през SSH за този клиент и ако е така забранявам на root акаунта достъпа през ssh, като редактирам /etc/ssh/sshd_config
PermitRootLogin no

Рестартирам ssh
# /etc/init.d/ssh restart

Сменям паролата на root.
# passwd

Това ми се налага, защото при инсталацията на сървър в Rackspace се генерира автоматична такава и се изпраща на мейла.

Сега за достъп до системата е нужно да се влезе през SSH с обикновен потребител и чак тогава да станем root чрез
$ su -

Това са лесни и много важни стъпки за подобряване на сигурността.

Written by tzappa

май 15th, 2010 at 2:38 pm

Отново нарушители

without comments

Рядко срещана наглост е това да минеш над 500 м по тротоара с буса, за да си паркираш точно пред входа:

СА 1785 ВН

СА 1785 ВН


СА1785ВН

СА1785ВН


Ето го и пътя по който е минал:
CA1785BH

CA1785BH

Това са други двама, за които това е ежедневие, въпреки че съм им правил забележка. Държа да кажа, че не е като да няма къде да паркират (не че липсата на паркоместа е повод да се нарушава закона), но си е друго пред входа

С 2551 КР и С 0398 МР

С 2551 КР и С 0398 МР


С 2551 КР и С 0398 МР

С 2551 КР и С 0398 МР


И чичката който не се съобразява с това, че на детска площадка не е хубаво да се паркира:
С 0398 МР

С 0398 МР

И последния виден представител на „органите“ в България паркирал на тротоара, така, че да не може да се мине не само с количка, но и с липсата на такава. Затова пък добре облепил си е колата със стикери – „полиция“, „полюция“ и прочее:

СА0775НК

СА0775НК


СА 0775 НК

СА 0775 НК


CA 0775 HK

CA 0775 HK

Естествено това не са единствените нарушители, но тях имах желанието и възможността да снимам.

Written by tzappa

май 11th, 2010 at 5:54 pm