Monday, March 5, 2007

[IT] Italia - Finalmente i conti tornano - Atto Secondo

Ancora sul portale del turismo?
Assolutamente no, semplicemente una ulteriore riflessione sulle competenze generali in ambito informatico e nello specifico Web di questo bel paese.

Solo oggi scopro la notizia delle Olimpiadi Informatiche e per la prima volta mi ritrovo nel sito dell'evento.

Mentre tutto il mondo parla di Web 2.0 in Italia la situazione è da Web 0.0.1 Alpha.

Se le potenzialità tecniche e teoriche dei cervelli italiani sono riconosciute a livello internazionale come di altissimo livello quelle inerenti la progettazione Web farebbero rabbrividire anche i paesi che si sono affacciati alla New Economy solo da un paio di giorni.


  • nessuna dichiarazione del tipo di documento, non sappiamo nemmeno cosa sia il DocType

  • utilizzo preistorico di più frame per un sito graficamente discutibile

  • utilizzo di applicativi degni di un webmaster al primo giorno di studi (sito realizzato con Microsoft FrontPage 5.0)

  • tabelle ed orrori tipici di questi software da principiante amatoriale del Web



Gli italiani verranno quindi rappresentati alle olimpiadi internazionali dell'informatica con un sito simbolo della nostra assoluta incompetenza.

Metaforicamente parlando è come se alle olimpiadi della matematica si presentasse un team di studenti rappresentati da un sito con scritto in testata una castroneria del tipo:
1 + 2 = 7.914

Questo lo sviluppo tecnologico, questa la realtà dei fatti.
Studenti capaci di disimparare ancora prima di apprendere le basi come vada strutturato un semplice sito, come vada utilizzato un linguaggio di markup, come vadano distribuite o enfatizzate le informazioni, come si possano rendere accessibili dei contenuti, come vada dichiarato un documento, come vadano evitati i frameset, come vada assolutamente "cestinato" un programma discutibile quanto base e mal riuscito come è Front Page per un sito degno di tale nome.

L'italia delle riforme scolastiche e dell'evoluzione Informatica viene rappresentata da quello che è oggettivamente uno dei più discutibili programmi di generazione automatizzata di contenuti che ci siano sul mercato.

Quale novità? Nessuna, dato che gli sviluppatori del portale del turismo pare abbiano scopiazzato funzioni client prese in rete, eliminandone perfino i copyright, come ulteriore conferma del basso livello di preparazione tecnica, questo il team selezionato per il più ambizioso progetto Web mai finanziato in Italia, non smetterò mai di congratularmi con i governi per l'insieme di assurdità racchiuse in un solo progetto.

Non a caso qualche giorno fa ho scritto un post sul nuovo portale oneweb2.0 rigurado la necessità evidente di riconoscere quella dello scripter una vera e propria professione, probabilmente mi sono sbagliato poichè abbiamo bisogno di molte professioni ufficialmente riconosciute e tecnicamente valide nel settore Web a partire dalla formazione degli stessi docenti della scuola dell'obbligo.

Concludo lasciandovi ammirare il favoloso sito delle Olimpiadi, firmato dal Ministero della Pubblica Istruzione, complimenti ministero!

Saturday, March 3, 2007

DOM Google Translator

Hi guys :-)
I've just uploaded my last function on devpro that's compatible with most common browser.
It's based on DOM and creates automatically translation request url to view a selected text or an entire page inside wonderful Google Translator free service page.

Its usage is really simple:

onload = function(){
document.body.appendChild(
GoogleTranslator()
);
};

With these example You'll append at the end of document.body a select with LANG - TRANSLATION values and a link.

Returned div has exactly these two elements and You could customize them using your own CSS.

Here You can view another example

<style type="text/css">
#mytranslator {
font-size: 8pt;
font-family: Verdana, Helvetica, sans-serif;
border: 1px solid silver;
padding: 4px;
background-color: #F5F5F5;
color: #000;
width: 160px;
}
#mytranslator select {
font-size: 8pt;
}
#mytranslator a {
display: block;
color: #00F;
text-decoration: none;
border-bottom: 1px dotted black;
}
</style>
<script type="text/javascript">
onload = function(){
var translator = GoogleTranslator(
"Translate",
"es",
"ENG - ESP"
);
document.getElementById("mytranslator").appendChild(translator);
};
</script>

In this way You'll create a translator shortcut with default English to Espanol translation.

You can view an example, using English to Italian as default, on the right content of this page, do You like it? :-)

Friday, March 2, 2007

function, (function) or var function?

Few days ago Dustin Diaz wrote about function declaration ambiguity.

In my opinion the best way to declare a function (class) is the classic way

function MyClass(){
// constructor
};

The reason is simple: a class could be a very big function and some version of Explorer could generate an error if big function is declared using

var MyClass = function (){
// constructor
};

However this post talks about other function "strange things", expecially about usage of brackets after function declaration.


function MyTest(){alert(arguments.length)}();

This will produce an error, exactly a Syntax error.
The "strange thing" is that You could do something inside brackets then function will not be called and syntax error will disappear.

function MyTest(){alert(arguments.length)}
(alert(MyTest));

This is a strange "feature" and it's different from this one:

(function MyTest(){alert(arguments.length)})
(alert(MyTest));

This code will produce a reference error because MyTest, declared inside brackets, has not a global scope then MyTest is correctly undefined.
This is one of the best way to create a lambda function inline too.

var len = (function(){return arguments.length})(1,2,3);

As You know len variable will not be a function but a Number with value equal to 3.
The strange thing is that "var" keyword doesn't produce the same result of regular function.

var MyTest = function(){alert(arguments.length)}();

This example will not produce any error and function is called correctly even without arguments.
Next example shows that function works correctly but it's not the value of MyTest variable.

var MyTest = function(){
alert([arguments.length, arguments[0]])
}(MyTest);
alert(MyTest); // undefined

That's why We need to return called function.

var MyTest = function(){
alert([arguments.length, arguments[0]]);
return arguments.callee
}(MyTest);
MyTest(MyTest);

Finally You could use these informations to create a real-time interval.

onload = function(){

var interval = function(){
document.body.appendChild(document.createTextNode("\n".concat(Math.random() * 1234567)));
return interval ? 0 : setInterval(arguments.callee, arguments[0]);
}(2000);

setTimeout(function(){
clearInterval(interval);
}, 20000);
};

This code will call 10 times the function (20/2 seconds) and not 9.
Do You think this is interesting?