„Spamming” pe motoarele de căutare

February 8th, 2009 Alex

Foarte mulţi oameni au idea preconcepută că pentru a avea succes trebuie să apari în primele rezultate din căutările Google şi nu poţi apare decât prin intermediul tehnicilor SEO.

Tehnicile SEO se împart în două categori: „white hat” şi „black hat”. Eu întotdeauna am preferat optimizările ce reies dintr-un design bun şi un conţinut de calitate. De exemplu oricâte trucuri ai face, cu greu poţi bate Wikipedia.

Nu este şi cazul unor publicaţii online de la noi. În „Publicitatea online pe înţelesul tuturor” Dragoş face o analiză a topului siteurilor de ştiri din România, şi surpriză, surpriză, realitatea.net face spam.

Fenomenul este foarte nasol, deoarece nu se concurează corect prin calitatea conţinutului, şi deşi motorul de indexare de la Google este suficient de inteligent pentru a se prinde de astfel de trucuri, se întâmplă două lucruri:

  • site-urile .ro sunt situate pe un index separat şi mai prost întreţinut, google.ro nefiind o prioritate
  • în contextul unui motor de căutare e mai nasol să obţi un „fals pozitiv”, decât un „fals negativ” … dacă eşti banat de pe Google, este ca şi când n-ai exista, şi instanţele în care site-uri perfect valide sunt banate trebuie eliminate cu riscul de a valida site-uri ce n-ar avea dreptul

Aşa că-mi veni o idee: site-urile ce încalcă regulamentul Google pot fi detectate, şi există şi un formular de raport a link-urilor cu astfel de probleme. Desigur, este costisitor ca timp să stăm şi să vânăm manual astfel site-uri, dar un serviciu ce caută astfel de site-uri şi trimite în mod automat un top lunar la Google pentru analiză … se poate construi. Plus că dacă Google nu face nimic în legătură cu astfel de site-uri, există întotdeauna fenomenul social de arătare cu degetul.

Şi eu mă bag. Din păcate sunt ocupat cu serviciul şi cu un alt proiect personal, iar timpul liber îmi este momentan ocupat. Dar serviciul ar contribui la un index românesc mai curat, şi la o concurenţă mai loială. Dacă aveţi idei, sau vreţi să contribuiţi (ar putea fi un proiect al comunităţii), contactaţi-mă …

<alex la sinapticode.ro>

Posted in projects | 2 Comments »

Rezoluţie pentru anul nou

December 30th, 2008 Alex

S-a mai încheiat un an, cu evenimente fericite şi triste deopotrivă. Este un pic trist că timpul trece atât de repede, şi nu reuşesc să realizez tot ce mi-am propus.

Lucrez de două luni la Sinapticode, un startup mic şi dinamic, şi sunt mulţumit de alegere. Muncesc deja la proiecte foarte incitante şi chiar am cu ce mă distra.

Din păcate una dintre ideile mele am lăsat-o pe locul 2 şi practic nu m-am mai preocupat deloc. Proiectul îl fac doar pentru distracţie, deşi poate iese ceva util. Şi intenţionez să lansez ceva până în Martie. Din păcate am nevoie şi de un designer, iar un profesionist este greu de găsit care să vrea să lucreze „just for fun”.

Dar ceva, ceva tot sper să iasă.

Am şi domeniu cumpărat: gathern.com. Poţi ghici idea proiectului? :)

Posted in projects | 2 Comments »

Înlăturare comentarii din cod sursă

November 7th, 2007 Alex

Am ajuns să lucrez cu un proces de build extern al unui proiect destul de complicat. Proces care la fiecare deployment execută un script ce înlătură comentariile din fișierele sursă javascript. Nu știu cum a fost făcut scriptul respectiv, și din păcate n-am avut acces la el, doar presupun ce s-a întâmplat: scriptul elimina toate șirurile de caractere ce încep cu “//” și se termină cu sfârșit de linie.

Însă în funcție de context șirul de caractere “//” poate apare în cod fără să fie început de comentariu (și aceași situație avem și pentru comentariile multi-line “/* … */”).

Astfel avem următoarele situații (identificate de mine):

  1. Caracterul slash “/” poate apărea în cadrul șirurilor de caractere, fără backslash în spate
  2. Slash poate apărea în expresii regulate cu backslash în spate, iar expresiile regulate sunt delimitate de backslash-uri, astfel putem avea următoarea situație (a se observa “//”): \W+\//

Pentru eliminarea corectă a comentariilor javascript avem nevoie de construirea unui automat finit cu următoarele stări:

  1. in-code (starea inițială)
  2. comentariu simplu
  3. comentariu multi-line
  4. șir de caractere (ar fi nevoie de 2 stări în funcție de caracterul de delimitare, i.e. ghilimele simple/duble , dar n-avem nevoie în acest caz)
  5. expresie regulată
  6. escaped-character

Se poate pune următoarea întrebare: chiar avem nevoie să știm când suntem într-o expresie regulată?

Mai ales că în cadrul unei expresii regulate slash-urile au backslash în spate. Raspunsul este cu siguranță DA: deoarece tot într-o expresie regulată pot apare ghilimele simple/duble și parserul poate presupune că a început un șir de caractere ceea ce ar fi eronat.

Mi-a fost lene să desenez schema automatului finit (nedeterminat în cazul nostru), dar avem următoarele reguli:

  1. Toate stările se duc înainte și-napoi către starea inițială (in-code), toate cu excepția stării escaped-character.
  2. Stările șir de caractere și expresie regulată se duc înainte și înapoi către escaped-char.
  3. Starea escaped-char este unică, dar trebuie să reținem din ce stare am venit pentru a ne reîntoarce (astfel automatul devine neregulat :) )

Destul de ușor, dar puțini se încumetă, iar cei care o fac folosesc expresii regulate, ceea ce este destul de nașpa.
Am pus pe web și codul și cine știe, poate că în timp micul proiect va ajunge să suporte mai multe limbaje.
Codul este în Python, dar este foarte simplu de înțeles (poate aveți curiozitatea).

http://code.google.com/p/stripcomments/

Enjoy ~

Posted in projects | No Comments »