Thursday, July 24, 2008
MyEtymology
Friday, May 16, 2008
Wednesday, January 16, 2008
PageRank
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
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
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
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);
}
}
}