Skip to Content

Blogs

Alfanumerički hash fiksne dužine

Moj trud može nekom zatrebati, stoga evo kratke funkcije koja vraća jedinstveni hash fiksne dužine 10 slova/brojeva:

function tenhash($s) {
  $rlast = dechex((int)substr(sprintf("%09d", $s), -10));
  for (; strlen($rlast) < 10; ) {
    $rlast = chr((($tx = rand(48, 90)) > 57) && $tx < 65 ? $tx+=9 : $tx ).$rlast;
  }
  return $rlast;
}

Jedna napomena, maskimalni broj za kojeg se generiše hash može imati devet cifara.

Podešavanje suEXEC za PHP na Virtualminu GPL

Napomena pre početka, ovako se radi u Debianu, veoma slično je i za ostale GNU/Linux distribucije.

Prvo, napraviti skel za nove hostove, kao root:

cd /etc/skel
mkdir -p etc/php5
cp /etc/php5/apache2/php.ini /etc/skel/etc/php5/php.ini
mkdir fcgi-bin
vi fcgi-bin/php5.fcgi

U fajl php5.fcgi upišite ovo:

#!/bin/bash

export PHPRC=$PWD/../etc/php5
umask 022
export SCRIPT_FILENAME=$PATH_TRANSLATED
exec /usr/bin/php-cgi

Promenite dozvole ovom fajlu:

chmod 744 fcgi-bin/php5.fcgi

Dalje, ulogujte se u Virtualmin, pa idite na System Settings -> Server Templates -> Default Settings -> Apache website i u polje Directives and settings ubacite sledeće:

ServerName ${DOM}
ServerAlias www.${DOM}
DocumentRoot ${HOME}/public_html
ErrorLog /var/log/virtualmin/${DOM}_error_log
CustomLog /var/log/virtualmin/${DOM}_access_log combined
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory ${HOME}/public_html>
Options -Indexes IncludesNOEXEC FollowSymLinks ExecCGI
allow from all
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper ${HOME}/fcgi-bin/php5.fcgi .php
</Directory>

<Directory ${HOME}/cgi-bin>
AddHandler cgi-script cgi
allow from all
</Directory>

Pa kliknite na Save.

I to je to. Sada će se PHP fajlovi izvršavati preko suEXEC što znači da fajlovi koje uplodujete preko PHP skripti unutar nekog CMS-a, recimo, moći biti promenjeni ili obrisani ukoliko se ulogujete preko FTP ili SSH.

Važno je samo zapamtiti da PHP fajlovi i wrapper skripta ne smeju biti world/grou writable. Ukoliko nešto ne bude u redu, pogledati u /var/log/apache2/suexec.log.

Novo: audioblog

S obzirom da često naletim na interesantnu muziku diljem ovog lepog Interneta, napravio sam posebnu sekciju ovde koju sam krstio Audioblog. Odmah da napišem, biće tu dosta muzike.

Audioblog ima i svoj feed! Možete ga koristiti u nekom podcast klijentu jer je podcast kompatibilan.

Ukoliko se pitate šta je s kopirajtom, odmah da napomenem da Audioblog služi samo za promovisanje nove i interesantne muzike i da naglašavam da kupite album ukoliko vam se muzika svidi. Čak štaviše, bolje da ne kupite album, već idite na koncert i kupite nešto od promo materijala jer time još više podržavate bend koji vam se sviđa.

Open Source Day 0.1

Nikola KoturU subotu 13. marta je bio prvi Open Source Day skup predavanja na PMF-u Novom Sadu.

Skup je organizovala eKomuna, više o svemu možete saznati na sajtu eKomune. Jedan od predavača je bila i moja malenkost, a tema o kojoj sam pričao je opšta GNU/Linux priča koju su svi čuli već milion puta, plus specifičnosti što se tiče programiranja.

Ostala predavanja su držali Dejan Marić, poznatiji kao gosp. Maks, na temu Drupal CMS-a kao razvojnog okruženja, i Dejan Injac, čovek sa previše nadimaka, koji je načeo temu Joomla CMS-a. Tokom predavanja o Joomli moglo se čuti dosta interesantnih paralela između ova dva CMS-a, koji je bolji za koju svrhu, kao i pratkični primeri šta se gde može brže i lakše uraditi. Izvukao se zaključak da je Drupal bolji CMS za programere i za fleksibilno prilagođavanje i modifikaciju, dok Joomla caruje na većini korisničkih scenarija.

Kao što napomenuh gore, ja sam započeo opštom GNU/Linux pričom, pošto je ovo moje prvo predavanje na Open Source Danima zamišljeno kao prvo u seriji sve specifičnijih i interesantnijih predavanja na temu programiranja u GNU/Linux operativnom sistemu.

Prezentacija koja je išla u pozadini nalazi se zakačena za ovaj post, nema šta mnogo da se vidi, ali ipak je u duhu otvorenosti stavljam ovde. Nažalost, nisam snimao sve što sam kucao na računaru, te ne mogu i to da postavim.

Takođe, nekoliko slika sa OS Dana 0.1 možete videti u mojoj galeriji.

Nadam se da neće proći mnogo vremena pre nego što organizujemo verziju 0.2 predavanja pošto već imam nekoliko dobrih ideja za teme koje treba obraditi. I obećavam, sledeći put će biti mnogo više primera, a mnogo manje pričanja.

NotBanking za Erste NetBanking

Erste banka ima prilično dobar online banking softwer. Dozvoljava mi da uradim sve što i drugi sistemi, može da se koristi iz bilo kojeg browsera (zbogom bagoviti Internet Exploreru i disku sa sertifikatom); prilično sam zadovoljan.

Ali, ima jedna osobina koja me prilično nervira: nakon otvaranje e-bankinga dobije se jedno plastificirano parče papira na kome se nalazi 8x4 tabela sa gomilom brojeva. I nakon što se ulogujete, softver od vas traži da unesete broj taj i taj, pa vam tek onda dozvoljava pristup vašem novcu.

Razumem, moralo se nekako zaštiti, ljudi moraju da osećaju pouzdanost u e-bankingu, ali svaki put kada želim nešto da uradim moram da ustanem do jakne, izvadim novčanik, aha! 3. red kolona B, tu smo, tapa-tapa, 43254532, uh. Smaranje.

Ako istu stvar uradim više od tri puta, onda ću sesti i automatizovati je, uvek se isplati na duže ili kraće staze.

I evo, izvolite Greasemonkey skriptu koja će sama da unosi brojke, a vi ćete sasvim srećno i zadovoljno da raspolažete vašim novcima uz što manje kuckanja.

Klik ovde za instaliranje skripte

Samo par napomena:

  • Pre nego što počnete da koristite skriptu, moraćete je editovati i uneti na vrhu skrpte vašu TAN tablicu. Videćete redove tan_red1 do tan_red8 i tu unutar navodnika unesite vaše brojeve. Editujete skriptu tako što uradite desni klk na tog majmuna u status baru, izaberete NotBanking pa kliknete na edit.
  • Biće vam potreban Firefox browser. Uostalom, ukoliko već ne koristite Firefox, ne znate šta propuštate.
  • Korisničko ime i lozinka se neće automatski unositi. Ukoliko želite baš toliku automatizaciju, ukombinujte ovu skriptu sa AutoFormer (ne radi u FF 3.6) ili Autofill Forms ekstenzijom.

VAŽNO:

Uopšte ne preuzimam odgovornost za ovaj softver. Vaš novac je vaša odgovornost i mada ne postoji nikakva šansa da vam skripta nešto loše uradi, ukoliko vam neko ukrade ili kompromituje računar može doći u posed vaše TAN tablice, što može predstavljati problem.

Savetujem potpunu enkripciju hard diska, kao što sam ja uradio na svom laptopu za slučaj da "dobije noge".

Obavezno promenite lozinku koju dobijete od Erste banke, moja je bila šuplja kao sir (nešto tipa "nikola123"). Nažalost, korisničko ime ne može da se menja, ali je prilično dobro smišljeno tako da je to u redu.

Pamet u glavu, lovu na račun.

 

Git repozitorije preko SSH protokola

Ukoliko imate Git repozitoriju na kojoj radi više programera, mora se voditi računa o dozvolama fajlova. Najjednostavnije je dodati sve korisnike u posebnu grupu (recimo, developers), zatim otići do repozitorije i podesiti je da bude deljena:

cd code.git

chmod -R g+ws *
chgrp -R developers *

git repo-config core.sharedRepository true

U suprotnom će se javljati sledeća greška prilikom git push:

error: insufficient permission for adding an object to repository database ./objects
fatal: failed to write object

OpenSSL za priručnu enkripciju

Brzo i jednostavno enkriptovanje fajlova (ukoliko pri ruci nije GPG ili nešto slično) se može postići pomoću OpenSSL paketa koji je instaliran podrazumevano na skoro svim mogućim računarima sa GNU/Linuxom.

Enkriptovanje fajla fajl.txt se vrši na sledeći način:

openssl enc -aes-256-cbc -salt -in fajl.txt -out fajl.enc

Fajl kasnije možete vratiti u normalno stanje sledećom komandom:

openssl enc -d -aes-256-cbc -in fajl.enc

U ovim gore primerima smo koristili AES algoritam za enkripciju, ukoliko želite neki drugi pomoću sledeće komande možete videti koje OpenSSL podržava:

openssl -h

I to je to.

Ton prekida veze u Srbiji

Već neko vreme "trpim" problem ovaj problem i tek danas sam ga rešio. Naime, nakon što neko ostavi poruku na telefonskoj sekretarici, Asterisk snima još pola minuta tona prekinute veze, pošto uređaj koji je veza između Asteriska i telefonske linije nije prepoznavao taj ton.

Kopajući po Internetu, nigde nisam uspeo da pronađem kod za ton prekida veze Telekoma Srbije (telefonskog provajdera kojeg smo svi primorani da koristimo), pa sam morao sam da ga pronađem. Ovde ću opisati kako to uraditi pomoću programa za zvuk Audacity.

Prvo, uzeo sam jednu od poruka na telefonskoj sekretarici koja se u potpunosti sastoji od tona prekinute veze. Evo ga na slici ovde:

Očigledno je po slici da se radi o periodičnom tonu i tišinu koji traju koliko? Lako ćemo to saznati unutar programa. Pre svega, kliknuti na padajući menu i u prikazu vremena ispod "Selection Start" (na samom dnu programa) i izabrati da vreme prikazuje u formatu "hh:mm:ss + miliseconds". Zatim selektujemo ton, i iz razlike vidimo koliko dugo traje. Isto ponovimo i za tišinu, što će nam dati istu dužinu od tačno pola sekunde.

Odlično, skoro smo završili. Sada još treba da saznamo frekvenciju ovog tona, što ćemo dobiti tako što ga selektujemo (samo ton) i u meniju izaberemo "Analyze - Plot Spectrum...". Dobijamo sledeći prozor:

Pomerimo pointer miša do najvećeg skoka, i ispod pročitamo o kojoj peak frekvenciji se radi: 426 Hz. Odlično! Sada imamo sve deliće i možemo da podesimo naš SPA3102 da kako treba prepoznaje prekinutu vezu s strane telefonskog provajdera.

To ćemo uraditi tako što se ulogujemo na administracioni panel uređaja kao administrator, prebacimo se na podešavanja za voice (iz nekog razloga Linksys je odlučio da u SPA3102 ubaci i funkcionalnost rutera, meni i većini korisnika potpuno beskorisno), uključimo advanced podešavanja i u tabu PSTN Line potražimo odeljak PSTN Disconnect Detection (negde je pri kraju).

Opcija Detect Disconnect Tone treba da je postavljena na Yes, a pod Disconnect Tone treba da stavimo ovo što smo upravo saznali. Pre toga formula za ton je sledeća:

frekvencija1@dBm,frekvencija2@dbm,...;broj_ponavljanja(sekundi_uključeno/sekundi_isključeno/tonovi_koji_se_koriste)

Dakle, konačno, Disconnect Tone postaviti na:

426@-30,426@-30;10(.5/.5/1)

Earcandy - jer imamo i uši

Ovo je jedan od onih programa koje morate da probate da biste se uverili koliko je koristan. Na prvo čitanje, možda ne zvuči da je u pitanju nešto revolucionarno, Earcandy prati koje aplikacije puštaju zvuk na vašem računaru, i odlučuje kojoj će da da prioritet u glasnoći.

Ali, instalirajte ovaj program i koristite ga nekoliko dana, shvatićete da je pun pogodak i nikada ga nećete propustiti kroz apt-get remove :)

Da vidimo o čemu se radi... Slušate muziku, i u Firefoxu otvorite on-line video da pogledate, Earcandy to odmah primeti i muziku utiša sve dok se video ne završi, i odmah nakon toga je ponovo pojača. Aha... Ili, dok gledate film, zazvoni vam VoIP telefon! Nema potrebe za pauziranjem, traženjem dugmeta za utišavanje jerbo Earcandy odmah utiša sve pošto ste postavili VoIP kao najprioritetniju aplikaciju. Ukratko, ukoliko ste vizuelan tip, pogledajte video fajl snimka Earcandy u akciji.

Sve ovo je moguće zato što se Earcandy oslanja na zvučni sistem pod imenom Pulse Audio (o kome pisah prošle godine). A ja jedva čekam da vidim šta će nam još pokloniti mogućnost kontrole koju PA pruža.

Okej, sada kada vam zvuči primamljivo, evo copy-paste uputstva kako da ga instlirate u vaš Ubuntu GNU/Linux sistem.

Prvo ćemo da dodamo javni ključ Launchpad PPA repozitorije:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6E73CA45

Onda, na kraj fajla /etc/apt/sources.list dodati gde se paketići nalaze:

deb http://ppa.launchpad.net/flimm/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/flimm/ppa/ubuntu jaunty main

Earcandy je dostupan i za starije verzije Ubuntu-a. I sada, na kraju, instalirajte program:

sudo apt-get update
sudo apt-get install earcandy

To je to. Pritisnite Alt i F2, pokrenite ear_candy i neka čarolija uradi svoje...

Instaliranje PHP-GTK na Ubuntu 9.04

PHP-GTK je ekstenzija za PHP programski jezik koja implementira GTK toolkit. Ukratko, služi da u PHP-u pravimo samostalne grafičke aplikacije.

Ovde je opisana instalacije PHP-GTK 2.0.1 na Ubuntu 9.04 operativni sistem. Paket se ne nalazi u repozitoriji koja bi omogućila brzo i jednostavno instaliranje, već se mora kompajlirati iz izvornog koda.

Prvo instalirajte sve pakete potrebne za kompajliranje:

sudo apt-get install m4 gawk build-essential

PHP-GTK se može skinuti ovde, zatim raspakujte skinutu arhivu:

tar xzf php-gtk-2.0.1.tar.gz

PHP paket trenutno ima bag, te se pre kompajliranja mora napraviti ovaj trik:

cd /usr/share/aclocal
cp libtool.m4 libtool-orig.m4
cat lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 >> libtool.m4

Dalje ste spremni za kompajliranje po uputstvu sa PHP-GTK sajta. Ukratko:

./buildconf
./configure
make
sudo make install

I ne zaboravite da dodate sledeću liniju u /etc/php5/cli/php.ini:

extension=php_gtk2.so

To je to.

Syndicate content