сряда, април 29, 2009

Новините днес

По принцип не чета новинарски сайтове, сега си припомних защо.

Вижте това:
През май по вода
Обикновена новина за времето. Дааа, ама не, КОСТОВ е виновен !
Вижте защо:


Коментари:
1) На английски звучи така "Дъъти мади уйедър" !!!!
2)Ще е хубаво времето супер
3)абитуриентите ще се къпят, няма как. 1-2-3-4-5-6-7-8-9-10-11-12 еееееееееееее
4)Костов е виновен.
5)Кога ще дойде хубавото време? Моля, съжалете се над нас!
6)Ти се побърка с тоя Костов....
7)Тоя Костов ти е само в глават.хахаха,Костов това,Костов онова явно го праиш за кеф,ама май е вече време да спреш щото ставаш банален вече.Сам си прави изводите.
8)Виновен е Станишев, който е накарал Костов да го направи. Това е, защото Станишев е бил изнервен, че любовникът му Джулио Суге е бил убит.
9)K O S T O V N A V L A S T ! ! !
10)DA MU MISLQT ABITURIENTITE... :)

След това невероятно мозъчноубийствено окровение, искам да попитам, сега Костов ли е виновен или Станишев ? И това означава ли, че само абитуриентите ще му мислят ако Костов дойде на власт ?
Политиката е сложно нещо.
За наша радост dnes.bg не се ограничават само с политика, други интересни заглавия са:
Замерят плевенски лисици с ваксини против бяс

Цъ, цъ, цъ вместо да ги лекуват ...
Гошко и Тошко нямаше кой да ги гушка зимата

И мене нямаше кой да ме гушка зимата, ама оплаквам ли се ?
Станишев в Кремъл – от "разпни го" до... "разпни го"

А Костов ?


Това са те - българските online медии. От тях ли затъпяваме или те затъпяват заради нас, не знам ?

Писане на PHP конзолни скриптове


Успях хубаво да си счупя Linux-а, опитвайки се да инсталирам една операционна система, която упорито твърди, че не иска да се инсталира на PC. След някои хора - потоп, след тая ОС(която не искам да споменавам) - reinstall :)
Та, успях да си спася htdocs, но понеже не съм от най-умните забравих да си копирам конфигурационните файлове. В следствие на това като си връщам нещата обратно трябва да си направя наново и всичките виртуални хостове.
За да се добави такъв хост трябва да редактирате 2 файла и да се направи една директория, което си е работа, а и когато трябва да го направиш много пъти, нещата не придобиват никак приятен вид.
И понеже съм си originaly мързелив реших да го направя със скрипче.
btw, винаги съм твърдял, че е по-добре да загубя 20 минути в писане на някаква глупост, отколкото да губя 10 правейки го на ръка и затъпявайки :)
Само да вметна, че пиша уеб шитни и хич не се радвам когато трябва да се правя на Linux администратор и за това ползвам xampp (в случай, че се зачудите за странните пътиша). Един такъв админ ще се хване и ще напише скрипта на bash и той вероятно ще изглежда нещо като това:


#!/bin/bash

#some backup
cp /opt/lampp/etc/extra/httpd-vhosts.conf /opt/lampp/etc/extra/httpd-vhosts.conf.backup
cp /etc/hosts /etc/hosts.backup

# creating some stupid vars :P
while read line
do
file="${file}${line} \n" ;
done < "/etc/hosts";

new_host="127.0.0.1 ${1} \n";
new_vhost="
\n
\t DocumentRoot /opt/lampp/htdocs/${1}/ \n
\t ServerName ${1} \n
\n \n";
new_dir="/opt/lampp/htdocs/${1}/";

#creating new virtual host
mkdir $new_dir;
chmod 755 $new_dir;
echo -e $new_vhost >> /opt/lampp/etc/extra/httpd-vhosts.conf
echo -e $new_host > /etc/hosts;
echo -e $file >> /etc/hosts;

#restarting the server
/opt/lampp/lampp restart

За да добавите нов виртуален хост просто изпълнявате:
./addvhost.sh test

И скрипта ще свърши останалото за да се добави хост с име "test".
Колкото и да е powerfull bash-а, не пиша по цял ден на него и примерно тоя скрипт ми отне около 15 минути, основно защото половината време трябваше да чета документация.
Ако сте като тъп уеб дИвелъпър като мене и php ви е по-удобен, вече (то не е много отскоро ама айде) можете да напишете същото и на php.
Нещо като това:

#!/opt/lampp/bin/php
$param = $_SERVER['argv'][1];

//create backups
copy('/etc/hosts', '/etc.hosts.backup');
copy('/opt/lampp/etc/extra/httpd-vhosts.conf', '/opt/lampp/etc/extra/httpd-vhosts.conf.backup');

// set some vars
$hosts_file = file_get_contents('/etc/hosts');
$vhosts_file = file_get_contents('/opt/lampp/etc/extra/httpd-vhosts.conf');

$new_host = "127.0.0.1 \t $param \n";
$new_vhost = "
\n
\t DocumentRoot /opt/lampp/htdocs/$param/ \n
\t ServerName $param \n
\n \n";
$new_folder = "/opt/lampp/htdocs/$param/";

// creating vhost
mkdir("/opt/lampp/htdocs/$param/", 0755);

$fh = fopen('/etc/hosts', 'w');
fwrite($fh, $new_host);
fwrite($fh, $hosts_file);
fclose($fh);

$fh = fopen('/opt/lampp/etc/extra/httpd-vhosts.conf', 'w');
fwrite($fh, $vhosts_file);
fwrite($fh, $new_vhost);
fclose($fh);

// restart the server
$output = shell_exec('/opt/lampp/lampp restart');
echo $output;
?>

За да си свърши работа скрипта иска да му кажете нещо от типа:
./addvhost.php test

Както виждате нищо страшно. Върши абсолютно същата работа и не съм засичал, но ми се струва, че ми отне половината от времето на bash-a.

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

За добро или лошо php се мъчи да излезе от сървърната среда и да се превърне в пълноправен език за административни скриптове и дори desktop приложения(phpgtk).
Наскоро гледах някъде в нета сравнение на езиците за програмиране и корабите. Примерно java беше описана като огромен транспортен кораб, който върши много неща, но не е много приятен за каране.
Там php беше сравнен с малък риболовен кораб - малък, бърз и върши точно това, за което е направен.
За мен лично така и трябва да си останат нещата, но нищо не пречи на php да се пробва при десктоп приложенията.

edit: За времето за което написах тези скриптове и този пост, можеше да си свърша работата, но нямаше и да е наполовина по-забавно :)

неделя, април 26, 2009

Brainstorm за външния вид на GIMP


В момента тече процес по редизайн на GIMP с цел по-лесна работа с програмата.
Можете да предлагате различни нововъведения на адрес - http://gimp-brainstorm.blogspot.com

А тук можете да видите моето предложение.
Опитах се възможно най-добре да обясня какво имам впредвид.

Интересно ми е да чуя мнението ви по въпроса?
Какво ще кажете за моете предложение ?
Харесахте ли си някое друго ?
Какво ви харесва или не ви харесва във външния вид на GIMP ?

събота, април 04, 2009

Урок за GIMP: Как да сменим цвета на кола

Ето още един кратък урок за GIMP, в който се опитвам да покажа някои трикове при работа с графичния редактор. В случая сменяме цвета на кола (минибус), но принципа може да се приложи на други места. Основния проблем е да сменим цвета запазвайте светлосенките, което се оказа не особено трудна задача.

Историята: Наскоро ме помолиха една бърза услуга, трябваше да сменя цвета на една кола. И аз като пишман дизайнер (ей, какви хубави български думички използвам) реших да помогна и сега ще ви кажа как направих нещата.
За пример съм намерил от google една хубава снимчица, да се надяваме, че автора й няма да има нищо против :)

Започваме процедурата с дублиране на същия слой, махаме видимостта от първия и започваме да работим с другия. Върху втория слой започваме да трием всичко, на което няма да му сменяме цвета.
Целта е след като сменим цвета на нащия хипарски бус, да запазим фона, какъвто и да е той.
Същия ефект може да се постигне чрез уреда за пътеки, като се изберете необходимата част от изображението и го копирате в нов слой.
Все пак на мен варианта с гумата ми се струва по-лесен и по-удачен в случая.
Важно е това, което изтриваме да остане прозрачно.
Тук има един малък трик, ако използвате jpg то след триене ще остава бял цвят. За промените това, селектирайте малка част от бялото, изберете от менютата Цветове / Цвят към прозрачност и изберете бял цвят. След това спокойно можете да триете.
Тази част е най-бавната и най-неприятната, но трябва да се направи :) Трийте докато не получите нещо такова:

Както виждате аз не съм се старал много, но в случая целта е просто да покажа идейно как става, а не да показвам нещо перфектно.
Следващата стъпка е отидете на слоеве и да изберете превръщане на прозрачността в селекция. От тук нататък е важно каквото и да правите да не премахвате селекцията, ще разберете защо.
Връщате се на изображението и с уреда за избиране на цвят избирате най-тъмното червено (в този случай, иначе може да е друг). След това отивате на кутията с инструменти, избирате цвета, с който рисувате и копирате html нотацията конкретния цвят.
След това избирате Цветове / Цвят към прозрачност и поставяте като цвят html кода, който сте копирали. Незнайно защо този tool не се съобразява с цвета за рисуване и се налага ръчна намеса.

Премахвате цвета. Само да напомня, не бутайте селекцията. Както забелязвате някои нюанси на червеното още са останали. От тук нататък можем да продължим да ги премахваме по същата процедура, но така се губи голяма част от сенките, отблясъците и т.н. За това, малко по-грубия, но пък по-лесен вариант е да превърнем слоя в черно бял - Цветове / Изваждане на цветове / Осветеност (или което е удачно във вашия случай).
Сега създаваме нов слой, който е прозрачен. Избираме го него, избираме си цвета който искаме да направим нашето хипи возило и "ливваме" с кофата. Преместваме новия слой под този, който сме обработвали до сега. Не сте махнали селекцията, нали ?
В този невероятен момент (работейки върху цветния слой) накликваме Избиране / Обръщане и изтриваме селекцията. Така премахваме ненужния цвят и оставяме място за фона. Връщаме видимостта на долния слой и ... това е. Всичко е готово.
Може да се наложи да дооправите някои допълнителни нещица, но като цяло това е идеята.

Използвайте свободен софтуер, борете се за свободата си и не забравяйте, че този урок е под Creative Commons Attribution-Noncommercial 2.5 лиценза, така че правете с него каквото си искате стига да спазвате условията на лиценза.
От тук можете да изтеглите .xcf файла.

Надявам се да съм бил полезен.

Забележка: Използван е gimp 2.6.21 на български, тоест ако ползвате по-стара версия някои менюта може да са по-различни, но все пак идеята е същата.
Още един повод да поздравя преводачите :)