Programming and Exciting Things

Инсталиране на Memcache под Windows за PHP

Published on 01.05.2011

Инсталирането на memcached под Windows не е чак толкова сложно въпреки че memcached е писан с идеята да работи само под линукс :) Като цяло memcached е daemon който работи също като mysql на машината.
За да го инсталираме правим следното:
1. отиваме в http://code.jellycan.com/memcached/ и сваляме win32 binary пакета, към днешна дата версията е 1.2.6 и линка е тук.
2. разархивираме някъде на диска, примерно c:\memcached\ (в архива трябва да има 1 файл с име memcached.exe)
3. отвяряме Command Prompt от Start -> Run -> cmd
4. изписваме

 c:\memcached\memcached.exe -d install  
като
 c:\memcached\ 
е директорията в която сме разархивирали. Идеята е да го инсталираме като service.
5. в Command Prompt изписваме и
 net start "memcached Server" 
като така стартираме инсталирания преди малко service

Ако всичко е наред вече трябва да имеме напълно работещ memcache сървър :) А в документацията на php има всичко останало и нужно за да се използват заедно :)
а клиентската част на библиотеката за работа на memcached с Python може да се намери тук

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-и за него и не е нужно винаги да се открива топлата вода отново и отново :)