Archive for the ‘Tehnologie’ Category

Google + Yahoo!

Friday, September 26th, 2008

Ca să pună capăt speculaţiilor, cei doi giganţi au hotărât să creeze un sit web în care să explice natura colaborării lor (de după refuzarea ofertei Microsoft de către Yahoo!). Numele domeniului începe cu “yahoo” şi redirectează către Google iar platforma pe care este construit situl este cea a lui Google… Interesantă combinaţie.

Tutoriale SEO

Friday, September 12th, 2008

Krumel a lansat un tutorial SEO foarte util. Omul e de mult în breaslă, aşa că îl vom urmări cu atenţie.

Noroc şi spor!

Gândire de “spammer”

Tuesday, September 9th, 2008

Reclamam acum o vreme pe webdesignbox.ro un sit care practica spam. Mesajul primit era următorul:

from Concurs ThinkSmart
to me
date Wed, Jul 9, 2008 at 11:27 AM
subject Participa la concurs!
mailed-by thinksmart.ro
signed-by thinksmart.ro

hide details 11:27 AM (1 hour ago)

Reply

Participa si tu!

Intra pe www.thinksmart.ro si participa la un nou concurs cu premii!

Ia-ti diploma ThinkSmart!

Afla ce cred prietenii despre tine!

Succes!

Daca doriti sa nu mai primiti anunturi de la noi va rog sa dati click aici

Se înscrie băiatul pe forum si lasa următorul comentariu:

Buna ziua,

Din pacate adresa dumneavoastra de email e fost cumparata impreuna cu alte cateva zeci de mii.
ThinkSmart nu are de unde sa stie care din adrese au fost date cu consimtamantul proprietarului pentru a primi anunturi.

Daca ati considerat ca fiind SPAM , ne cerem scuze!

Deoarece ne-am asteptat ca unii sa nu fie incantati de mesajele de la noi am pus si un link pentru drezabonare, pe care cred ca l-ati folosit.

O zi buna!

PS: ThinkSmart.Ro se vrea a fi un site de cultura, nu vindem nimic!

Nu ştiu câtă cultură aveţi (nu prea multă de vreme ce apelaţi la astfel de metode de promovare), dar în mod cert aţi făcut spam. Sperăm să nu se mai repete!

Ps: să nu săriţi şi voi cu ameninţări, precum spammer-ul de Urban. Nu ţine.

Despre confidenţialitate

Wednesday, September 3rd, 2008

Citeam pe blogul lui Krumel şi pe alte forumuri (inclusiv pe download.com) cum că produsele Google “suferă” de probleme de confidenţialitate. Părerea mea e că adevărul e undeva la mijloc. Trăim într-o lume în care companiile de telefonie mobilă sunt obligate să ţină evidenţa tuturor convorbirilor (nu ştiu exact dacă sunt şi înregistrate – nu aş băga mâna în foc că nu ar fi) – pe motive de terorism -, în care Microsoft îţi poate controla, verifica şi ţine evidenţa întregii tale activităţi – online sau offline. Trăim într-o lume în care primim mesaje publicitare pe telefonul mobil, mesaje publicitare în căsuţa de email, mesaje publicitare în cutia poştală… Astea nu sunt încălcări grave ale politicii de confidenţialitae? Şi implicit a intimităţii. Suntem fotografiaţi pe stradă iar fotografiile sunt publicate sub pretextul că “am voie să filmez pe domeniul public, băi”. Băncile ştiu unde ne facem cumpărăturile, la ce oră şi zi din săptămână. Aşadar, suntem urmăriţi. Nu e ceva nou. Singurul lucru nou e paranoia din ce în ce mai crescută. În principiu, dacă nu te faci vinovat de nimic nu are de ce să îţi fie frică…

Google Chrome – un nou produs Google

Tuesday, September 2nd, 2008

O veste bună pentru toţi împătimiţii de Internet, sătui de sutele de megaocteţi consumaţi de Firefox, sătui de găurile de securitate din Internet Explorer, sătui de administratorii de situri web care habar nu au ce înseamnă standarde (nu e Opera prost, voi sunteţi!)… Google lansează o aplicaţie open-source numită Chrome care va deveni concurentul lor în lupta pentru supremaţia pe piaţa navigatoarelor web (browsere, iubitorilor de xenisme).

Prezentare produsului este inedită şi poate fi găsită sub forma unor benzi desenate aici. Autorii se laudă cu partajarea resurselor şi izolarea fiecărui sit deschis în parte. Asta înseamnă că, în cazul unei probleme în aplicaţie, un singur “tab” va fi închis, şi nu întreaga aplicaţie (aşa cum suntem obişnuiţi). De asemenea, cei de la Google spun că au implementat şi un motor Javascript mai rapid şi mai performant.

Lansarea produsului în versiune “beta” are loc astăzi. Să le urăm noroc!

Via: www.pcmag.com/article2/0,2817,2329247,00.asp
Via: googleblog.blogspot.com/2008/09/fresh-take-on-browser.html

Completare: se pare ca se va lansa pe seara (conform BBC).

Cine n-are aifon să îşi cumpere

Friday, August 22nd, 2008

Ce ne spune un directoraş Orange despre preţul aifonului în România:

Motivul este acela ca media veniturilor pe utilizator in Romania este mult mai mica decat in tarile vest europene, unde veniturile medii pe utilizator pot fi de trei patru ori mai mari in functie de ce tara vorbim si astfel are sens economic sa subventionezi mai mult acest terminal. Aici unde veniturile sunt mai scazute pretul telefonului este mai mare. Trebuie sa tinem cont de situatia economica de aici din Romania. Suntem o companie comerciala si trebuie sa facem profit. Pretul trebuie sa fie corelat cu venitul mediu pe utilizator pe care il primim inapoi. Totusi daca va veti uita atent pe oferta veti vedea ca aceasta este mai buna decat in alte tari. Ai putea sa spui initial ca pretul este prea mare, dar ceea ce vei plati pe parcurs va fi mai putin decat in alte parti.

Nu am avut niciodată valenţe de comerciant ca să înţeleg astfel de strategii. Stai, adică românul câştigă mai puţin decât un neamţ, dar aifonul e mai scump în România decât în Germania…? Cu alte cuvinte e dedicat doar snobilor? Nu ar trebui să fie aşa, nu? E doar un gadget, nu e încrustat cu cristale nu ştiu de care, nu e tras în foiţă de aur. Şi atunci unde e logica?

Ps: Radule, dragă, nu te mai lamenta că nu ai vrut publicitate. Ai numai grijă să nu ajungi precum specimenul acesta.

Cel mai complet utilitar Windows

Wednesday, November 28th, 2007

Probabil că toată lumea cunoaşte întrebarea aceea cu “Care sunt cele trei lucruri pe care le-ai lua cu tine dacă ar fi să trăieşti pe o insulă pustie?”. Extrapolez şi întreb: Dacă ar trebui să alegi un singur utilitar pentru Windows, care ar fi acela?

În cazul meu răspunsul e foarte simplu: Total Commander. Nu am să argumentez pentru că, din punctul meu de vedere, nu are rost.

Voi ce părere aveţi?

GWT-Ext: O superlibrărie GWT/Javascript

Wednesday, November 28th, 2007

Când vine vorba despre Javascript, mulţi au o reacţie de genul: “Ah, chestia aia care nu funcţionează la fel pe toate navigatoarele şi pe care nu se poate face debugging în mod decent!”. Iată că cei de la Google au reuşit din nou să spargă tiparele introducând Google Web Toolkit. Un framework care produce cod Javascript din cod Java. Dar nu despre asta vreau să vorbesc, ci despre o librărie care s-a remarcat în “universul” GWT, şi anume GWT-Ext Widget Library. Bazată pe o librărie Javascript binecunoscută, şi anume Ext JS, GWT-Ext reprezintă o colecţie de componente de toate felurile cu ajutorul cărora se poate încropi o aplicaţie web ultramodernă (acronimul este RIA – Rich Internet Application).

Printre cele mai des utilizate componente: un tree inteligent care permite drag&drop, liste configurabile care suportă paginare (atât pe partea de client, cât şi pe cea de server), meniuri care permit adăugarea de subcomponente, tabele (griduri) editabile şi paginabile. etc.
componente gwt-ext

Singurul inconvenient de până acum mi se pare lipsa unei documentaţii foarte bine pusă la punct. Javadoc-ul existent nu permite explorarea tuturor facilităţilor oferite. Autorul (Sanjiv Jivan) promite pentru perioada următoare două lucruri foarte importante: o documentaţie adecvată şi migrarea spre versiunea 2 a librăriei Ext JS (pe care se bazează GWT-Ext).

Aşadar, pentru toţi cunoscătorii limbajului Java şi a modulului de lucru cu Swing există o alternativă demnă de luat în seamă la tradiţionalul cod Javascript care dă destul de multă bătaie de cap.

Linkuri utile:

Listă “autoderulantă” în Javascript

Friday, October 19th, 2007

E mai mult ca posibil ca acest termen (“autoderulant”) să nu existe în limba română. Nu-i nimic. Îl introducem acum. Pentru cei învăţaţi cu xenismele, “autoderulant” desemnează ceva care face în mod automat “scroll”.

Implementarea o aveam de mai mult timp, dar ea a ieşit la iveală în urma unei întrebări pe Webdesignbox.

Iată şi soluţia propusă:

Codul HTML:

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=windows-1250″>
</meta><meta name=”generator” content=”PSPad editor, www.pspad.com”>
<title>Widget – Scroller</title>
<style>
* {
font-family: arial;
font-size: 11px;
}

a {
color: blue;
}
</style>

<script type=”text/javascript” src=”./js/widgets/scroller.js”></script>

<link rel=”stylesheet” type=”text/css” href=”./styles/widgets/scroller.css”/>
</meta></head>
<body>
<div id=”orase” class=”scroller”>
<ul id=”orase_c”>
<li><a href=”#”>Alba</a></li>
<li><a href=”#”>Bistrita-Nasaud</a></li>
<li><a href=”#”>Arad</a></li>
<li><a href=”#”>Arges</a></li>
<li><a href=”#”>Brasov</a></li>
<li><a href=”#”>Arges</a></li>
<li><a href=”#”>Timis</a></li>
<li><a href=”#”>Constanta</a></li>
<li><a href=”#”>Maramures</a></li>
<li><a href=”#”>Mures</a></li>
<li><a href=”#”>Giurgiu</a></li>
<li><a href=”#”>Hunedoara</a></li>
<li><a href=”#”>Caras Severin</a></li>
</ul>

<div class=”navi”>
<div class=”topper” onmouseover=”scrollControlUp(‘orase_c’);” onmouseout=”stopScroll();” onclick=”_scrollTop(‘orase_c’);”></div>
<div class=”bottomer” onmouseover=”scrollControlDown(‘orase_c’);” onmouseout=”stopScroll();” onclick=”_scrollBottom(‘orase_c’);”></div>
</div>
</div>
</body>
</html>

Codul CSS:

.scroller {
border-left: 1px solid #aaa;
border-top: 1px solid #aaa;
border-right: 3px solid #aaa;
border-bottom: 3px solid #aaa;
width: 160px;
height: 100px;
}

.scroller ul {
margin: 0;
padding: 2px;
list-style: none;
line-height: 18px;
overflow: hidden;
float: left;
height: 96px;
width: 132px;
}

.scroller ul li {
display: block;
background: #fff url(‘del.jpg’) no-repeat 2px center;
}

.scroller ul li a {
display: block;
height: 18px;
text-decoration: none;
padding-left: 14px;
border: 0;
}

.scroller ul li a:hover {
background: #eee url(‘del.jpg’) no-repeat 2px center;
}

.topper, .bottomer {
font-family: arial;
font-size: 10px;
cursor: pointer;
height: 18px;
padding-top: 1px;
}

.navi {
background-color: #fcfcfc;
height: 100px;
margin-left: 134px;
border-left: 1px solid #ccc;
}

.topper {
border-bottom: 1px solid #ccc;
background: #fff url(‘up.jpg’) no-repeat center center;
text-align: left;
height: 22px;
}

.bottomer {
border-top: 1px solid #ccc;
background: #fff url(‘down.jpg’) no-repeat center center;
margin-top: 56px;
}

Şi, în fine, codul Javascript:

var _scroller_time;
var _scroler_controlName;
var _scroler_up;

function stopScroll() {
if (_scroller_time)
clearTimeout(_scroller_time);
}

function scrollControlUp(name) {
_scroler_up = true;
_scroler_controlName = name;

scrollControl();
}

function scrollControlDown(name) {
_scroler_up = false;
_scroler_controlName = name;

scrollControl();
}

function scrollControl() {
var BY_PX = 6;
if (!_scroler_up) {
document.getElementById(_scroler_controlName).scrollTop = document.getElementById(_scroler_controlName).scrollTop + BY_PX;
}
else {
document.getElementById(_scroler_controlName).scrollTop = document.getElementById(_scroler_controlName).scrollTop – BY_PX;
}

_scroller_time = setTimeout(’scrollControl()’, 100);
}

function _scrollTop(name) {
stopScroll();
document.getElementById(name).scrollTop = 0;
}

function _scrollBottom(name) {
stopScroll();
document.getElementById(name).scrollTop = 10000;
}

Implementarea completă o puteti vedea aici: http://
www.publionline.ro/jurnal/examples/scroller/scroller.html

Ca şi explicaţie suplimentară, spun doar că “sufletul” acestui mini-cod sunt metodele setTimeout() şi clearTimeout(). După cum spun şi definiţiile:

Metoda setTimeout() este folosită pentru a chema o funcţie sau pentru a evalua o expresie după trecerea unui interval de timp definit în milisecunde.
Metoda clearTimeout() opreşte execuţia codului definit în metoda setTimeout().

Generare coduri de culori în funcţie de numele utilizatorului

Wednesday, August 29th, 2007

M-am lovit zilele trecute de o problemă ciudată: trebuia să generez un cod de culoare unic pentru fiecare nume de utilizator al unui sistem oarecare.

Soluţia la care am apelat este la fel de ciudată:

select
  conv(round((
    conv(substr(md5(name), 1, 6), 16, 10)
    conv(substr(md5(name), 7, 6), 16, 10)
    conv(substr(md5(name), 13, 6), 16, 10)
    conv(substr(md5(name), 19, 6), 16, 10)
    conv(substr(md5(name), 25, 6), 16, 10)
  ) / 5), 10, 16) as color
from tabela

Aşadar, am selectat numele de utilizator peste care am aplicat metoda md5() din MySQL. Rezultatul funcţiei este un şir unic de 32 de caractere hexazecimale. Am spart apoi acest şir în 5 grupe de câte 6 caractere, am convertit rezultatul din baza 16 în baza 10 şi am făcut o medie aritmetică între cele 5 valori obţinute. Rezultatul l-am convertit apoi în baza 16 şi am obţinut codul de culoare dorit.

Probabil că soluţia nu este cea mai rapidă, dar funcţionează, ba mai mult, aduce rezultatul dintr-un singur apel MySQL, fără altă procesare pe server.

Algoritmul poate fi îmbunătăţit prin valorificarea ultimelor două cifre hexazecimale rămase (am folosit primele 5 grupe de câte 6 cifre). Eventual, numărul format din ele poate fi adăugat la rezultatul obţinut, având grijă ca acesta să nu depăşească maximul FFFFFF.

Posibilităţile sunt multiple.