Thursday, July 24, 2008

MyEtymology

Striving to be a universal etymological dictionary, myetymology.com provides an etymology for hundreds of thousands of words in dozens of languages, tracing their etymology to Latin, Greek or reconstructed Proto-Germanic and Indo-European roots.

Friday, May 16, 2008

Wednesday, January 16, 2008

PageRank

Page rank-ul este o valoare numerica ce reprezinta importanta unei pagini pe web. Faptul ca o pagina contine un link catre alta pagina, acest lucru e ca un vot acordat
paginii referite prin link de catre pagina ce contine linkul. Cu cat o pagina strange mai multe voturi/e referita de mai multe ori, cu atat mai importanta devine pagina. Concomitent, daca o pagina are un pange rank mare/este importanta, atunci creste si importanta voturilor pe care ea le acorda.
PangeRanku-ul este o notiune semnificativa pentru Google, pentru ca prin intermediul ei, si nu numai, Google decide importanta paginilor.
NU toate linkurile sunt luate in considerare de google, in special cele de pe link farms-urile stiute de Google, iar faptul ca un link al unui site se afla pe una din aceste siteuri tip link farm, poate duce la penalizarea siteului de catre Google.

Cum se calculeaza PageRank-ul?
Pentru calcularea PR-ului unui site, se iau in considerare toate linkurile care fac referire la situl in cauza.

Ecuatia care calculeaza PR-ul este:
PR(A) = (1-d) + d(PR(t1)/C(t1) + ... + PR(tn)/C(tn)),
in care t1 ... tn sunt paginile care au link catre pagina A, C este numarul de linkuri pe care pagina le are in continutul ei, iar d este o constanta -damping factor- de obicei cu valoarea 0.85 .

Tuesday, January 15, 2008

Un program Google in Java

Exista un API pentru programarea cu Google in java, care se numeste googleapi.jar si care permite trimiterea de query-uri catre google si primirea/interpretare rezultatelor. Pentru toata aceasta operatiune este nevoie doar de downloadarea jar-ului
si de obtinerea unui google API developer key, ce trebuie inclus/folosit in aplicatie.
Aceasta cheie se obtine de la selectand tipul "installed applications" si este nevoie doar de un cont pe Google pentru toata aceasta operatiune.
In continuare dau un exemplu de folosire a acestui API, reprezentat printr-o clasa
ce trimite un query primit din linia de comanda catre google si afiseaza apoi rezultatele primite:

import com.google.soap.search.GoogleSearch;
import com.google.soap.search.GoogleSearchFault;
import com.google.soap.search.GoogleSearchResult;
import com.google.soap.search.GoogleSearchResultElement;

public class GoogleQueryExample {

// google api developer key
private static String googleKey =
"ABQIAAAAS...................................................................................";


public static void main(String[] args) {
// e necesat un query de cautat dat in linia de comanda
if (args.length != 1) {
System.err.println("query");
System.exit(1);
}

// obiect GoogleSearch
GoogleSearch s = new GoogleSearch();
try {
s.setKey(googleKey);
s.setQueryString(args[0]); /* Google query din linia de comanda */
s.setMaxResults(10);

// query la google
GoogleSearchResult r = s.doSearch();

// preia rezultatele
GoogleSearchResultElement[] re = r.getResultElements();

// afisare rezultate
for (int i = 0; i < re.length; i++) {

String title = re[i].getTitle();
String URL = re[i].getURL();
String snippet = re[i].getSnippet();

// inlatura tagurile html
title = title.replaceAll("<[^>]+>", "");
snippet = snippet.replaceAll("<[^>]+>", "");

// afisare propriuziza
System.out.println(title);
System.out.println(URL);
System.out.println(snippet + "\\n");
}
} catch (GoogleSearchFault f) {
System.out.println("Exceptie GoogleSearchFault: " + f.toString());
}
}
}

Wednesday, December 5, 2007

Doua elemente Web 2.0 , instrumente de social networking

Podcast-ul este un fisier in format multimedia care se descarca de pe Internet prin intermediul feed-urilor RSS, in calculatoare sau playere MP3, echipamente care sa accepte formatul respectiv. Exista site-urile de podcasting care permit download-area sau streaming-ul fisierelor.

Bookmarking : Site-urile web pot fi marcate ca favorite sau marcate cu bookmark in browser, dar exista un sistem , social bookmarking site, care foloseste o pagina web in loc browser. Pentru inceput trebuie accesat un astfel de site (del.icio.us ) si creat un cont gratuit. Dupa inscriere, va fi adaugat in browser butonul Tag - utilizat cand se doreste adaugarea de noi bookmark-uri ; aici apar optiunile de a adauga keywords sau tag-uri care descriu site-ul marcat. Paginile salvate sunt pastrate intr-o lista personala si pot fi sortate si organizate in functie de optiunile facute. Deoarece social bookmarking site este public, toti pot vedea insemnarile facute de ceilalti si pot utiliza tagurile salvate in acelasi mod.

Cookies


Un website foloseste cookies pentru a trimite catre browser-ul utilizatorului un set de date ce sunt retinute pe calculatorul acestuia pentru identificare, in fisere temporare. Browserul returneaza serverului cookie-ul, iar prin aceasta se pot oferi vizitatorului, la acesarile ulterioare pagini personalizate, in care au fost pastrate obtiunile alese anterior, preferintele sale; de asemenea ajuta la obtinerea unor statistici, ce determina anumite site-uri sa-si restructureze informatiile in functie de cererile utilizatorilor.

Mecanismul de cookies poate fi dezactivat complet sau temporar, inaintea vizitarii unui anumit site. Un cookie nu este periculos pentru computer, este doar un fragment de text , nu poate executa nicio operatie, nu poate fi folosit drept virus si nu poate accesa harddisk-ul.

Deoarece sesiunile http sunt vizibile tuturor calculatoarelor din retea, o solutie pentru a pastra confidentialitatea pachetelor, in cazul in care sunt cerute parole sau nume de utilzator, o reprezinta protocolul HTTPS, ce cripteaza datele transmise.

Clientul primeste un cookie ce contine urmatoarele campuri: o pereche nume = valoare ( ce va fi returnata serverului), data expiratii (cand va fi sters de pe disk), domeniul ( numele simbolic al serverului ), path-ul ( folosit pentru a specifica un subset de URL-uri din domeniul respectiv ) si secure (in cazul in care se foloseste protocolul HTTPS).

Cookie-urile pot fi create si accesate cu ajutorul Javascript, PHPsau ASP.

Exemplu in Javascript:

function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0)
return c.substring(nameEQ.length,c.length); }
return null; }

function eraseCookie(name) {
createCookie(name,"",-1);
}
}

XML-RPC

XML-RPC
Prin XML-RPC java capata niste functionalitati pe care nu le are prin RMI. XML-RPC e mult mai light decat RMI-ul din java, pasandu-se mai degraba parametri decat obiecte spre server.
Daca RMI necesita compilarea interfetelor pentru a se cunoaste metodele premise spre apelare, XML-RPC permite clientului sa specifice ce metode vrea sa foloseasca si se cauta handleri pentru aceste metode. Referinta la obiectele de pe server se fac prin nume si nu exista stub ca la RMI.

Exemplu de client-server care foloseste jarurile xmlrpc 3.1 de la
http://mirror.nyi.net/apache/ws/xmlrpc/binaries/ (Apache)

Clientul:

import java.net.URL;
import java.util.*;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

public class Client {
public static void main (String [] args) {
try {
XmlRpcClient server = new XmlRpcClient();
XmlRpcClientConfigImpl cnf = new XmlRpcClientConfigImpl();
cnf.setServerURL(new URL("http://localhost/RPC2"));
server.setConfig(cnf);

Vector params = new Vector();
params.addElement(new Integer(17));
params.addElement(new Integer(13));

Object result = server.execute("sample.sum", params);

int sum = ((Integer) result).intValue();
System.out.println("The sum is: "+ sum);
} catch (Exception exception) {
System.err.println("JavaClient: " + exception);
}
}
}


Serverul:

import org.apache.xmlrpc.server.PropertyHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcServer;
import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.WebServer;

public class Server {

public Integer sum(int x, int y) {
return new Integer(x+y);
}

public static void main (String [] args) {
try {

System.out.println("starting XML-RPC Server...");
WebServer server = new WebServer(80);

PropertyHandlerMapping map = new PropertyHandlerMapping();
map.addHandler("sample", Server.class);


XmlRpcServerConfigImpl cnf = new XmlRpcServerConfigImpl();
XmlRpcServer srv = server.getXmlRpcServer();
srv.setConfig(cnf);
srv.setHandlerMapping(map);

server.start();

System.out.println("Started successfully.");
} catch (Exception exception) {
System.err.println("JavaServer: " + exception);
}
}
}