Programming and Exciting Things

Изпълняване на Python скриптове с apache сървър

Published on 02.11.2010

На тестовата (developer ската) машина си имам инсталиран apache,php,mysql от пакета на Zend - Zend Server. По новият проект по който работя използвам и Python, идеята тук е да "пускам" python скриптовете през apache а не примерно през

 shell_exec('command') 
. Идеята е да се подкара без външни модули. За целта намираме httpd.conf файла (обикновено в "C:\Program Files\Zend\Apache2\conf" директорията), правим му резервно копие за всеки случай, отваряме го с някой текстови редактор пр. notepad. В последния ред на файла добавяме ScriptInterpreterSource Registry. А в < Directory "C:\Program Files\Zend\Apache2/htdocs" > намираме Options Indexes и му добавяме +ExecCGI като трябва да стане Options Indexes +ExecCGI и на нов ред добавяме AddHandler cgi-script .cgi .py при мен директивата изглежда по следния начин
< Directory "C:\Program Files (x86)\Zend\Apache2/htdocs" >
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks +ExecCGI
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All
    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all
	AddHandler cgi-script .cgi .py
< / Directory >

Важно е да спомена че това е един от начините за подкарване на python в уеб под Windows. Тествано е на Windows Server 2003 и Windows 7. Записваме промените по файла и рестартираме Apache сървъра. Ако има проблеми при стартирането четем лога за грешки и действаме :) За тестване дали всичко е ок след рестартирането на Apache може да използвате следния код
#!c:/Python27 python
# -*- coding: UTF-8 -*-

# enable debugging
import cgitb
cgitb.enable()

print &quot;Content-Type: text/plain;charset=utf-8&quot;
print

print &quot;Hello World!&quot;

като реда #!c:/Python27 python указва къде е инсталиран python :)

[PHP] Array to XML class

Published on 31.10.2010

Един набързо написан php class за генериране на xml от php масив.

class xmlGen {

    var $array = array();
    var $xml = '';   
    
    private function strct($array) {
        foreach ($array as $k=&gt;$v) {
        	$tag = $k;
			if(is_int($tag)) $tag = 'a_'.$tag;
            $this-&gt;xml .= &quot;&lt;$tag&gt;&quot;;
            if (is_array($v)) {
                self::strct($v);
            } else {
                $this-&gt;xml .= $v;
            }
            $this-&gt;xml .= &quot;&lt;/$tag&gt;&quot;;
        }
    }
    
    public function gen($array, $root = 'root') {
    	self::strct($array);
        $header = &quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;utf-8\&quot;?&gt;&lt;$root&gt;&quot;;
        $footer = &quot;&lt;/$root&gt;&quot;;       
        echo $header;
        echo $this-&gt;xml;
        echo $footer;
    }
    
}
може да се използва по следния начин
$sample = array(
	'zadacha' =&gt; array(
		'1' =&gt; 'probna',
		'2' =&gt; 'product_compile',
	),
	'test' =&gt; date('d.m.Y'),
);
include ('array2xml.php');
$xml = new xmlGen();
header (&quot;content-type: text/xml&quot;);
echo $xml-&gt;gen($sample);
генерираният файл от примера е
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;root&gt;
    &lt;zadacha&gt;
        &lt;a_1&gt;
            probna
        &lt;/a_1&gt;
        &lt;a_2&gt;
            product_compile
        &lt;/a_2&gt;
    &lt;/zadacha&gt;
    &lt;test&gt;
        31.10.2010
    &lt;/test&gt;
&lt;/root&gt;

MIT - Introduction to Computer Science and Programming

Published on 27.10.2010

Благодарение на Интернет можем да гледаме лекциите от десетки университета които са си направили труда да ги заснемат и качат в някой сайт за обмен на видео съдържание. В случая това са лекциите от курса "Introduction to Computer Science and Programming" (нещото което ни преподаваха в ФМИ - 1ви курс) на MIT Като цяло програмирането в курса е на Python (новичък и мноого готин език, за разлика от C++ който ни преподават в ФМИ :) ) но не е специализиран само за него. Лекциите са за ниво начинаещи но има доста неща които могат да се научат и за самия език. Лекциите могат да се изгледат от тук. Лектори са Prof. Eric Grimson и Prof. John Guttag и са правени през 2008. Достъпни са благодарение на специалната програма на MIT - MIT OpenCourseWare

26.Октомви.2010

Published on 26.10.2010

Днес започвам да работя над едно от идеите си, а именно уеб базирана администрация на MS DNS сървър. Въпреки че BIND дефакто е стандарта за DNS сървър :) Идеята е управлението на сървъра да става чрез python скриптове. Подробности по развитието следващата седмица...най-вероятно.

Инсталиране на Vodafone Mobile Connect под Ubuntu

Published on 19.10.2010

Този пост го пиша във връзка с опитите на един колега да подкара и-нет през 3G модема на mtel (Vodafone) под Убунту (в случая 10.10).  Като цяло идеята е ясна искаме и-нет на лаптопа под Ubuntu, за целта сваляме този архив на удобно място пр. Desktop разархивираме си го, под конзола командата е [shell] tar xvfz Ubuntu.tgz [/shell] от архива инсталираме последователно ozerocdoff_0.4-2_i386.deb , usb-modeswitch_0.9.7_i386.deb , vodafone-mobile-connect_2.20.01-1_all.deb. Убунту ще се погрижи за пакетите от които зависят :) След инсталацията в менюто "Internet " ("Интернет") виждаме иконката на vodafone :) Предварително слагаме 3G устройството в един от usb портовете стартираме приложението и просто следваме стъпките :) Хубаво е да се каже че ако се махне PIN кода от SIM картата под линукс ще бъде къде къде по лесно и по приятно :) PS: Не се изискват username/password при осъществяване на връзка с мтел Happy browsing!