Programming and Exciting Things

Jquery & Prototype заедно

Published on 20.04.2011

Aко по някаква причина се налага да се използват двете библиотеки заедно в една и съща страница, въниква проблем с използването на $ namespace-а, подразбира се че не може да имаме 2 различни библиотеки използващи един и същ namespace :)
Решението:
Jquery има една функция наречена

 jQuery.noConflict(); 
и единственото нещо което трябва да се направи е това да се добави веднага след извикването на jQuery библиотеката (или в самата нея :) ).
и вместо
 $("div p").hide();
ползваме
 jQuery("div p").hide(); 
друг вариант е и
(function($) {
  $("div p").hide(); 
})(jQuery);
Освен това ако $ не се "презаписва" може да се използват и функциите на Prototype вътре в jQuery блок :)
Това още веднъж показва колко готина библиотека е Jquery :) по моя информация само Jquery има тази функционалност да работи с другите библиотеки, за разлика от mooTools и Prototype.

Четене на големи файлове с python

Published on 13.04.2011

Най-използваният начин за четене на файлове под Python е следният

f = open('fayl.txt', 'r')
for line in f.readlines():
	print line

Като по този начин първо зареждаме целия файл в паметта и след това започваме обработката му, което при големи файлове може да е леко проблемно. Другият вариант е чрез използването на fileinput модула
import fileinput
file_1 = 'golqqqqm_file.csv'
for line in fileinput.input([file_1]):
	print line
Хубавото на модула е че не зарежда целия файл в паметта и че позволява да се добавят десетки файлове за четене т.е може да се направи нещо такова
import fileinput
for line in fileinput.input(['file1.txt','file2.txt','file2.txt']):
	print line

При обработването на едни Apache логове (2 GB файлове) Python се справи безпроблемно за 10тина минутки.

Face detection на снимка с jquery

Published on 13.04.2011

Jay Salvat е написал едно plugin-че за jquery с помощта на която много лесно може да се направи face detection на дадена снимка.
Използването на въпросната библиотека е супер лесно, ето пример:

$(function(){
    $('#detect').click(function(){    
        var coords = $('#demo img').faceDetection({
            start: function(img){
                $('.face').remove();
                $('#detect').text('Processing...');
            },
            complete: function(img, coords){
                $('#detect').fadeOut();
            },
            error: function(img, code, message){
                alert('Error ' + code + ': ' + message);
            }
        });
        
        for (var i = 0; i < coords.length; i++) {
            $('<div>', {
                'class': 'face',
                'css': {
                    'position': 'absolute',
                    'left': coords[i].positionX + 'px',
                    'top': coords[i].positionY + 'px',
                    'width': coords[i].width + 'px',
                    'height': coords[i].height + 'px'
                }
            }).appendTo('#demo');
        }
        
        return false;
    });
});

Горният примерен код заедно с плъгина генерира няколко (в зависимост от намерените лица) div-а които се позиционират спрямо координатите върху снимката, а по-късно примерно с jquery ui въпросните div-ове може да се направят "по-интерактивни" :)

Plugin-a заедно с демо файловете може да се свали от тук
Оригиналният алгоритъм за "намирането" на лица е написан от Liu Liu и може да бъде разгледан/свален от тук

Между другото една от причините да харесвам Jquery като framework е именно това че има много повече написани plugin-и за него и не е нужно винаги да се открива топлата вода отново и отново :)

[php] regex проверка валиден e-mail

Published on 11.04.2011

Много бърза проверка дали въведеният от потребителя текст е валиден email адрес.

if (preg_match('/^[^\W][a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\.[a-zA-Z]{2,4}$/',$email)) {
	echo 'Valid email';
}