ivanoDEV

Il mio sito web personale, il mio blog e tutti i miei progetti raccolti in un unico contenitore tutto da esplorare.

Informatica e tecnologia

In generale, la mia passione. Non è la cosa più importante, ma di sicuro occupa una posizione privilegiata nella vita di ognuno di noi.

Sviluppo software

Trovare soluzioni ai problemi più disparati rappresenta una nuova sfida ogni giorno e affrontarla giorno per giorno è ciò che mi riesce meglio.

World Wide Web

Il Web rappresenta forse una delle più grandi rivoluzioni del XX secolo. La sua evoluzione offre possibilità illimitate.

Sei in:
 
 

Source code editor component with Ace and ExtJS 4.0

Jan
22
2012

Hello, today a project I am working on led me to the necessity to have a very simple, but powerful at the same time, source code editor for Sencha ExtJS 4.0. Between all the available components over the internet, I finally chose the Ajax.org and Mozilla Ace. So, it is late and I wil present to you my results:

Ext.define('Ext.ace.Panel', {
   
extend : 'Ext.Component',//Extending the TextField

    alias : 'widget.aceeditor',//Defining the xtype

    config : {
        showPrintMargin: false,
        fontSize: '14px'
    },
   
    autoEl: {
        tag: 'div',
        cls: 'ace_editor ace-eclipse',
        style: 'position:relative;'
    },

    constructor : function(cnfg) {
        this.callParent(arguments);//Calling the parent class constructor
        this.initConfig(cnfg);//Initializing the component
        this.on('resize', this.editorResize);//Associating a new defined method with an event
    },
   
    onRender: function () {
        this.callParent(arguments);
       
        this.editorObject = ace.edit(this.el.dom.id);
        this.editorObject.setTheme("ace/theme/eclipse");
        var JavaScriptMode = ace.require("ace/mode/javascript").Mode;
        this.editorObject.getSession().setMode(new JavaScriptMode());
        this.editorObject.setShowPrintMargin(this.showPrintMargin);
        this.editorObject.setFontSize(this.fontSize);
    },

    editorResize: function () {
        this.editorObject.resize();
    },
   
    setFontSize: function (value) {
        this.fontSize = value;
        if (this.editorObject)
            this.editorObject.setFontSize(value);
    },
   
    setShowPrintMargin: function (value) {
        this.showPrintMargin = value;
        if (this.editorObject)
            this.editorObject.setShowPrintMargin(value);
    },
   
    setValue: function (value) {
        this.editorObject.getSession().setValue(value);
    },
   
    getValue: function () {
        return this.editorObject.getSession().getValue();
    }
});

This is my personal implementation of the component which wraps the Ace editor with a ExtJS Component. Then I used the next HTML code to load what is needed:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="/ris/mobdev/extjs/resources/css/ext-all.css">
<link rel="stylesheet" type="text/css" href="/ris/mobdev/css/html5.css">
<link rel="stylesheet" type="text/css" href="/ris/mobdev/css/ext-js-repair.css">
<link rel="stylesheet" type="text/css" href="/ris/mobdev/css/general.css">
<script type="text/javascript" src="/ris/mobdev/extjs/ext-debug.js"></script>
<script charset="utf-8" type="text/javascript" src="ace/ace-noconflict.js"></script>
<script charset="utf-8" type="text/javascript" src="ace/theme-eclipse-noconflict.js"></script>
<script charset="utf-8" type="text/javascript" src="ace/mode-javascript-noconflict.js"></script>
<script type="text/javascript" src="ace/extjs4-component.js"></script>
<script type="text/javascript">
    Ext.onReady(function () {
        new Ext.window.Window({
            title: 'Title',
            width: 600,
            height: 500,
            layout: 'fit',
            items: [{
                id: 'editor',
                xtype: 'aceeditor'
            }]
        }).show();
    });
</script>
</head>
<body>


</body>
</html>

I hope this will help you all.

22/01/2012 02:36 · Ivano Culmine

Lista dei preferiti con Sencha Touch 1.1

Jan
08
2012

Di recente mi sono occupato dello sviluppo di alcune applicazioni mobile, principalmente per piattaforma Android, utilizzando Sencha Touch 1.1 e PhoneGap. In una di queste applicazioni ho avuto la necessità di implementare una lista di preferiti, con una stella cliccabile per aggiungere o rimuovere al volo l'elmento dai preferiti.

Lo scopo è stato raggiunto estendendo la List e modificando opportunamente il template utilizzato per gli elementi. La gestione degli elementi da visualizzare e di quelli "preferiti" è realizzata utilizzando due store identici: il primo, definito con l'attributo "store" della lista, conterrà gli elementi da visualizzare; il secondo, definito con l'attributo "favStore", conterrà gli elementi preferiti. Tali elementi dovranno avere un attributo "id" affinché la lista potrà fare il match tra i due store. Per il resto questa lista è utilizzata come le normali liste di Sencha Touch.

Per fare un esempio pratico, la lista può essere utilizzata in questo modo:

    items: [{
            xtype: 'favoriteslist',
            id: 'lista',
            store: storeElementi,
            favStore: storePreferiti,
            itemTpl: '<div>{denominazione}</div>',
            onItemTap: function (item, index) {
                showItem(this.getStore().getAt(index));
            }
    }]

Oppure è possibile mostrare la lista dei preferiti utilizzando lo stesso store per gli elementi e per i preferiti come mostrato di seguito:

    items: [{
            xtype: 'favoriteslist',
            id: 'lista',
            store: storePreferiti,
            favStore: storePreferiti,
            itemTpl: '<div>{denominazione}</div>',
            onItemTap: function (item, index) {
                showItem(this.getStore().getAt(index));
            }
    }]

Questa implementazione presenta ancora qualche bug in alcuni casi non ben identificati, che pregiudicano la corretta gestione dei preferiti. Al più presto renderò disponibile il codice sorgente della versione corretta, ma sentitevi pure liberi di contattarmi nel caso in cui foste interessati.

08/01/2012 17:22 · Ivano Culmine

Buon 2012!

Dec
31
2011

Il messaggio è semplice, in fondo anche un po' scontato, ma porta con sè un carico di speranza sulla quale tutti contiamo. Proprio in ragione di quella speranza che riponiamo nel futuro non troppo lontano, che l'anno che sta per iniziare si riveli migliore di quello che sta per finire, con questa simpatica cartolina auguro a tutti voi un felicissimo anno nuovo!

31/12/2011 18:09 · Ivano Culmine

Ultima dal Giappone: trasmettere un bacio diventa possibile

May
06
2011

Da qualche giorno sta spopolando sulla rete la notizia dell'invenzione di un dispositivo molto particolare: si tratta di un dispositivo che ha lo scopo di trasmettere la sensazione di baciare. I giapponesi vogliono rivoluzionare il cyber sex? Probabilmente si, ma sicuramente questa innovazione può fungere da base per un'infinità di possibili applicazioni realmente utili. Il video sotto dimostra comunque molto bene il funzionamento di questo dispositivo.

 Il dispositivo è stato sviluppato dal Kajimoto Laboratory alla University of Electro-Communications che sta conducendo una ricerca sulle comunicazioni tattili, con lo scopo di creare un dispositivo che sia realmente in grado di trasmettere le sensazioni di un bacio.

Come è possibile vedere dal video, il funzionamento di questo dispositivo è piuttosto elementare: si fa ruotare l'asticella con la lingua e questo movimento viene trasmesso ad un altro dispositivo (o più?) che ruoterà la propria asticella nello stesso modo. In poche parole, qualunque rotazione prodotta su un dispositivo viene replicata tale e quale sull'altro dispositivo.

Fin qui però il meccanismo sembrerebbe realmente inutile. In realtà entrambi i dispositivi in gioco inviano il segnale sulla propria rotazione, in modo da mantenere le posizioni allineate. I segnali poi sono gestiti tramite un PC, ma ovviamente nulla vieta di implementare un sistema di gestione via rete, consentendo l'effettiva realizzazione di un sistema in grado di trasmettere il bacio.

Detto ciò, inutile sottolineare che quando c'entrano i computer le possibilità non hanno limiti: i ricercatori ipotizzano anche la possibilità di registrare i dati di posizione ottenuti dai dispositivi tramite un personal computer (possibilità ovviamente realistica) per essere poi riprodotte successivamente. Addirittura ipotizzano la possibilità di "offrire il proprio bacio ai propri fan".

Ovviamente il bacio è qualcosa di ben più complesso rispetto alla semplice rotazione di un'asticella e i ricercatori ne sono pienamente consapevoli. Le possibilità sono però tante e le strade percorribili sono infinite, quindi credo di poter lasciare alla vostra immaginazione i meravigliosi sviluppi che quest'innovazione potrebbe avere.

[Fonte: DigInfo TV]

06/05/2011 01:40 · Ivano Culmine

Usare un normale telefono PSTN con Skype

Oct
30
2010

Nel precedente articolo, ho accennato ad un esperimento volto ad utilizzare un normale telefono cordless per effettuare chiamate con skype via internet o con altri programmi come MSN, ecc. Sono arrivato ad una prima versione funzionante ed utilizzabile del progetto: è possibile utilizzare il telefono per comunicare (anzichè casse o auricolari e microfono) e il semplicissimo software che ho scritto (ancora alla prima versione) permette di rilevare il numero composto e interfacciandosi con skype avvia la chiamata.

Come detto, il software è ancora alla prima versione, quindi inutile dire che andrebbe ulteriormente migliorato magari per supportare il rilevamento "dell'apertura e della chiusura della cornetta".

Il circuito

In ogni caso, è stato necessario realizzare un circuito per dividere il segnale sul doppino telefonico (solo due cavi) su altri due cavi: uno per l'ingresso del microfono e uno per l'uscita audio della scheda audio. Lo schema realizzato è il seguente (preso da www.vital.pri.ee/PSTN/ dove potrete trovare maggiori informazioni):

A questo schema sono stato però costretto ad apportare delle modifiche: eliminare la resistenza R3 (altrimenti il segnale del microfono risultava eccessivamente debole) e aggiungere un'alimentazione di 4.5 V in continua tra R1 ed il connettore RJ11, per fornire una alimentazione al cordless (altrimenti non funzionava). Ovviamente questo circuito andrebbe adattato al caso specifico secondo necessità.

Il software

A questo punto entra in gioco il mio software (sembra che quello indicato nella pagina del progetto non sia più disponibile o utilizzabile, ma in ogni caso è per Windows): attualmente è disponibile la versione per Linux e utilizza ALSA per ricevere il segnale del microfono, ma stavo ponderando di passare a PortAudio, che sembra permettere un porting molto più semplice; FFTW per l'analisi in frequenza del segnale (per riconoscere i toni DTMF).

Potete leggere e scaricare il sorgente main.c (versione espansa del codice esposto nel post precedente sulla rilevazione dei toni DTMF). Potete compilarlo eseguendo da riga di comando:

gcc `pkg-config --cflags --libs gtk+-2.0` `pkg-config --cflags --libs glib-2.0` `pkg-config --cflags --libs dbus-glib-1` `pkg-config --cflags --libs alsa` -lnotify -lfftw3 main.c -o Listener

Il programma necessita anche di un file di nome rubrica (del quale viene fornito un esempio) che contiene l'associazione tra i numeri composti sul telefono e il contatto Skype relativo nel semplicissimo formato comprensibile guardando il file di esempio.

Attualmente il software funziona in questo modo:

  1. Rileva il numero composto
  2. Cerca una corrispondenza nella rubrica del numero composto
  3. Se lo trova in rubrica, chiama tramite Skype il contatto indicato
  4. Se non lo trova e il numero inizia con un "*" (asterisco) chiama tramite Skype quel numero sostituendo il "+" al "*".

Conclusione

Come già detto, il software è molto semplice e può notevolmente essere migliorato anche aggiungendo più funzioni. Per qualunque problema inerente il circuito potete fare riferimento al sito web del progetto indicato in precedenza, mentre se avete problemi col software o siete interessati a modificarlo e migliorarlo, sentitevi liberi di contattarmi.

Infine vi ringrazio per l'interesse e, augurandomi di essere stato piuttosto chiaro, vi auguro una buona navigazione.

30/10/2010 22:08 · Ivano Culmine
Pagine: 1 | 2 | 3
L'informatica è...

Mentre in fisica devi capire come è fatto il mondo, in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala.

Linus Torvalds, Rivoluzionario per caso, 2001

Consigli
Powered by LetoCMS