Travestimenti?
28 10 2006Mattinata passata da un cliente (la redazione di un giornale) per installare una nuova release di un software da me sviluppato, mettere un po’ di ordine nel Db del suddetto e discutere di ulteriori aggiornamenti da eseguire.
L’occhio cade casualmente sui case dei PC presenti nell’ufficio, degli accrocchi del genere:
A me ricordano qualcosa di già visto, a voi no???
Commenti : Lascia un commento »
Categorie : Generici
Firefox 2.0 Ottimizzato per Mac G4, G5 e Intel
27 10 2006Che belle cose si trovano su Digg!
Ad esempio si puo’ scoprire con piacere che Neil Lee, ad ogni major release di Mozilla Firefox, si preoccupa di compilare una versione ottimizzata per Mac (G4,G5 e Intel) e di pubblicarla sul suo blog.
For those of you who want to know what’s optimized: without getting into the nitty gritty too much, these builds were basically created using compiler flags that optimizes the Firefox source code for the specific CPU. Mozilla builds Firefox with more general settings to work across as many platforms (cpus) as possible.
Puntuale come un orologio elvetico, non ha tardato a ricompilare anche la versione 2.0!
La sto testando, forse sarà solo suggestione ma mi sembra un po’ più ‘arzilla’ della versione ufficiale…vedremo…:-)
Commenti : 1 Commento »
Categorie : Mac
Protezione e certificazione della posta elettronica con Mail.App
17 10 2006Un interessante articolo nel quale Kirk McElhearn spiega come certificare e criptare i messaggi utilizzando il client di posta di Mac Os X.
Commenti : 1 Commento »
Categorie : Mac
Installazione e Configurazione di Asterisk con VoipStunt su OpenWRT
13 10 2006OpenWRT e’ senza dubbio un bel giocattolino: su un ’semplice’ linksys WRT54GL abbiamo la possibilita’ di installare parecchi software utili come server Web, server DNS e anche applicazioni piu’ corpose come il PBX asterisk.
Prendiamo in esame una semplice configurazione con 2 interni e la possibilita’ di effettuare chiamate in uscita tramite VoipStunt.
Una volta installato e configurato openwrt per le proprie esigenze (lan, wifi, provider adsl…..) questi sono i primi passi da fare:
1) entrare tramite interfaccia web alla pagina di configurazione di openwrt (indirizzo di default http://192.168.1.1)
2) andare nel menu Sistema-programmi installati
3) aggiornare per prima cosa la lista dei programmi tramite il link “aggiorna la lista dei pacchetti”
3) installare asterisk
A questo punto accedere al router tramite SSH e configurare asterisk.
1) entrare nella cartella di asterisk cd /etc/asterisk
2) editare il file sip.conf (usare vi sip.conf; una volta terminato usare !wq per salvare e uscire)
[general]
context=default
port=5060
bindaddr=0.0.0.0
srvlookup=yes
[100]
context=telefono1
type=friend
host=dynamic
username=100[101]
context=telefono2
type=friend
host=dynamic
username=101
[voipstunt]
type=friend
host=connectionserver.voipstunt.com
disallow=all
allow=ulaw
allow=alaw
allow=g729
username=userid
fromuser=userid
secret=password
qualify=1000
canreinvite=no
3) editare il file extensions.conf (come sopra)
[general]
static=yes
writeprotect=no
[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=Zap/g2
TRUNKMSD=1
[iaxtel700]
exten => _91700XXXXXXX,1,Dial(IAX2/${IAXINFO}@iaxtel.com/${EXTEN:1}@iaxtel)
[iaxprovider]
[pstn]
exten => _01.,1,Dial(CAPI/contr1/b${EXTEN:2})
exten => _02.,1,Dial(TAPI/g1/${EXTEN:2})
[trunkint]
exten => _9011.,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _9011.,2,Congestion
[trunkld]
exten => _91NXXNXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91NXXNXXXXXX,2,Congestion
[trunklocal]
exten => _9NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _9NXXXXXX,2,Congestion
[trunktollfree]
exten => _91800NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91800NXXXXXX,2,Congestion
exten => _91888NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91888NXXXXXX,2,Congestion
exten => _91877NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91877NXXXXXX,2,Congestion
exten => _91866NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91866NXXXXXX,2,Congestion
[international]
ignorepat => 9
include => longdistance
include => trunkint
[longdistance]
ignorepat => 9
include => local
include => trunkld
[local]
ignorepat => 9
include => parkedcalls
include => trunklocal
include => iaxtel700
include => trunktollfree
include => iaxprovider
[macro-stdexten];
exten => s,1,Dial(${ARG2},20)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u${ARG1})
exten => s-NOANSWER,2,Goto(default,s,1)
exten => s-BUSY,1,Voicemail(b${ARG1})
exten => s-BUSY,2,Goto(default,s,1)
exten => _s-.,1,Goto(s-NOANSWER,1)
exten => a,1,VoicemailMain(${ARG1})
[demo]
exten => s,1,Wait,1
exten => s,2,Answer
exten => s,3,DigitTimeout,5
exten => s,4,ResponseTimeout,10
exten => s,5,BackGround(demo-congrats)
exten => s,6,BackGround(demo-instruct)
exten => 2,1,BackGround(demo-moreinfo)
exten => 2,2,Goto(s,6)
exten => 3,1,SetLanguage(fr)
exten => 3,2,Goto(s,5)
exten => 1000,1,Goto(default,s,1)
exten => 1234,1,Playback(transfer,skip)
exten => 1234,2,Macro(stdexten,1234,${CONSOLE})
exten => 1235,1,Voicemail(u1234)
exten => 1236,1,Dial(Console/dsp)
exten => 1236,2,Voicemail(u1234)
include => internal
exten => #,1,Playback(demo-thanks)
exten => #,2,Hangup
exten => t,1,Goto(#,1)
exten => i,1,Playback(invalid)
exten => 500,1,Playback(demo-abouttotry)
exten => 500,2,Dial(IAX2/guest@misery.digium.com/s@default)
exten => 500,3,Playback(demo-nogo)
exten => 500,4,Goto(s,6)
exten => 600,1,Playback(demo-echotest)
exten => 600,2,Echo
exten => 600,3,Playback(demo-echodone)
exten => 600,4,Goto(s,6)
exten => 8500,1,VoicemailMain
exten => 8500,2,Goto(s,6)
[internal]
exten => 3000,1,Dial(SIP/3000,30,Ttm)
exten => 3000,2,Playback(invalid)
exten => 3000,3,Hangup
exten => 3000,102,Voicemail(u3000)
exten => 3000,103,Hangup
exten => 3001,1,Dial(SIP/3001,30,Ttm)
exten => 3001,2,Playback(invalid)
exten => 3001,3,Hangup
exten => 3001,102,Voicemail(u3001)
exten => 3001,103,Hangup
exten => 3002,1,Dial(IAX2/3002,30,Ttm)
exten => 3002,2,Playback(invalid)
exten => 3002,3,Hangup
exten => 3002,102,Voicemail(u3002)
exten => 3002,103,Hangup
exten => 3003,1,Dial(IAX2/3003,30,Ttm)
exten => 3003,2,Playback(invalid)
exten => 3003,3,Hangup
exten => 3003,102,Voicemail(u3003)
exten => 3003,103,Hangup
[default]
include => demo
include => parkedcalls
include => pstn
include => internal
exten => 99990,1,Answer
exten => 99990,2,AGI(agi-test.agi)
exten => 99990,3,Hangup
exten => 99991,1,Answer
exten => 99991,2,EAGI(eagi-test)
exten => 99991,3,Hangup
exten => 99992,1,Answer
exten => 99992,2,Wait(1)
exten => 99992,3,SayUnixTime()
exten => 99992,4,Hangup
exten => 99999,1,Answer
exten => 99999,2,Wait(1)
exten => 99999,3,MusicOnHold
[incoming]
exten => s,1,Dial(SIP/100,30,tr)
[telefono1]
include => demo
include => outcoming
[telefono2]
include => demo
include => outcoming[outcoming]
exten => _X.,1,Dial(SIP/${EXTEN:0}@voipstunt,30,tr)
4) editare il file asterisk nella cartella /etc/default modificare il parametro ENABLE_ASTERISK=”no” in ENABLE_ASTERISK=”yes” per far partire asterisk in automatico all’avvio del router.
A questo punto e’ possibile configurare 2 softphone/telefoni VoIP, assegnando gli interni 100 e 101: i due telefoni possono dialogare ed effettuare chiamate esterne appoggiandosi su VoipStunt.
Se poi avete a disposizione un numero geografico registrato con servizi come Skypho , seguendo queste istruzioni sara’ possibile configurare il PBX per accettare telefonate in ingresso e inoltrarle agli interni precedentemente configurati.
Commenti : 4 Commenti »
Categorie : Vo-IP
.NET Style and Naming Guidelines
9 10 2006Recentemente mi sono trovato a lavorare con dei colleghi con lo scopo di redigere delle linee guida comuni per lo sviluppo in .NET.
Naturalmente come documentazione di partenza è stata usata quella presente su MSDN e sui blog di sviluppatori .NET.
Ecco un breve riassunto di quanto è uscito da questo ‘Brain Storming’
Style Guidelines
Le Style Guidelines puntano a regolamentare lo stile di scrittura del codice, in modo da rendere i listati il piu’ possibile leggibili.
Indentazione e tabulazioni
Non credo sia necessario ribadire l’importanza dell’indentazione nella redazione di codice leggibile.
L’indentazione standard e’ di 4 spazi.
Parecchi testi a riguardo sconsigliano l’utilizzo del tasto di tabulazione (0×09), in quanto il carattere non viene identificato allo stesso modo da tutti gli editor: nel nostro caso ci viene incontro il sistema di editing di Visual Studio che si occupa di convertire la pressione del tasto TAB in 4 spazi.
Parentesi
Nel caso di linguaggi che utilizzano le parentesi graffe {} per racchiudere blocchi di codice le parentesi di apertura devono trovarsi all’inizio della linea successiva al frammento di codice che apre il blocco; il codice contenuto nelle parentesi deve essere indentato di 4 spazi.
Es.
{
FaiQualcosa();
}
else
{
FaiQualcosaltro();
}
Commenti
I commenti dovrebbero essere usati per descrivere il maggior numero di informazioni utili alla comprensione da parte di terzi del codice che si va a realizzare.
Non ci sono linee guida riguardanti i commenti nella documentazione del .NET Framework, tuttavia sappiamo che e’ commentando seguendo lo standard XML possiamo rendere il nostro codice ‘parlante’:
/// Scriviamo una descrizione per la classe Class1
///
/// Un parametro!
/// Informazioni ad uso interno
public class Class1
{
public Class1()
{
//
// TODO: Add constructor logic here
//
}
A questo punto la classe Class1 e’ diventata ‘parlante’:
Questo standard dovrebbe essere rispettato per tutte le classi e i membri presenti in un progetto, allo scopo di rendere chiaro e fruibile il codice ad altri partecipanti allo sviluppo nella maniera piu’ rapida possibile.
Uso degli spazi
E’ possibile rendere il codice piu’ leggibile diminuendone la densita’ utilizzando i caratteri di spazio:
- Usare uno spazio dopo una virgola usata per separare gli argomenti di una funzione
Es.
Console.In.Read(myChar, 0, 1); - NON usare spazi prima della parentesi di chiusura
Es.
Console.In.Read(myChar, 0, 1 ); - NON usare spazi tra il nome della funzione e le parentesi
Es.
Console.In.Read (myChar, 0, 1); - Usare spazi prima dei controlli di flusso
Es.
while (x == y)
if (x == y)
Naming Guidelines
La Coding Guidelines specifica le regole che devono essere applicate per scrivere il codice rispettando determinati criteri di sintassi e di forma.
La Naming Guidelines rappresenta quindi un sottoinsieme della Coding Guidelines e si focalizza nel descrivere le linee guida sulla nomenclatura dei membri(classi, interfacce, …)
La necessità di avere delle regole comuni sulle modalità di scrittura del codice non è una novità introdotta con i nuovi linguaggi del Framework .Net: ad esempio la Notazione Ungherese è stata ed è ancora oggi una delle pratiche più conosciute dalle comunità di sviluppatori.
Con l’introduzione del Framework .Net, Microsoft ha introdotto una nuova modalità di nomenclatura del codice, più adatta ai nuovi linguaggi(completamente object-oriented) e più adatta ai nuovi tools di sviluppo.
Naming Guidelines per librerie pubbliche
Si applicano :
- per qualsiasi membro pubblicamente esposto
- in generale per tutte quelle parti di codice che sono documentate
L’obiettivo è quello di fornire agli sviluppatori partecipanti un unica modalità di pubblicazione delle parti pubbliche di componenti e librerie in modo da garantirne la consistenza con il resto del progetto e del Framework .NET.
Naming Convention
Tre brevi concetti prima di iniziare con l’argomento:
- Si definiscono Pascal Cased i nomi che hanno tutte le iniziali maiuscole.
Es. RecuperaDatiCliente
- Sono Camel Cased quelli che hanno l’iniziale della prima parola minuscola e le iniziali delle rimanenti parole maiuscole
Es. getElementById
- Nella notazione ungherese, un nome di variabile inizia con un prefisso costituito da una o più lettere minuscole in modo da formare un codice mnemonico per il tipo o lo scopo di questa variabile. Il prefisso è seguito dal nome scelto dal programmatore; quest’ultima parte è spesso indicata come il “nome assegnato”.
Il primo carattere del nome assegnato è in maiuscolo per separarlo visivamente dal prefisso (quindi in Camel Case)
Es.
- nSize: numero intero
- dwLightYears: double word
- bBusy: boolean
Le linee guida da applicare sono :
- Tutti i tipi e membri pubblici devono essere Pascal Cased (i membri “protected” fanno parte dei membri pubblici)
Es.
class MyClass {
public string ClassName { … } protected string GetClassName() { … }
}
- I parametri devono essere Camel Cased
Es.
public void LoadData(int objectId) { … }
- Gli acronimi sono gestiti All Cased se di 2 caratteri, Pascal Cased altrimenti
Es.
public int ID;
public string Html;
- Non è permesso l’utilizzo della Notazione Ungherese
Es.
int iObjectId;
string strText;
Nella definizione dei nomi di metodi, eventi e proprietà con modificatori di accesso public, protected o internal :
- Non usare gli underscores (_)
- Non usare parole tutte maiuscole o tutte minuscole
- Non usare la Notazione Ungherese
Usare i nomi al plurale per metodi e proprietà che ritornano collections o array
Es.
public MemberCollection GetMembers();
public Member GetMember()
Utilizzare il prefisso “Is”, “Has” o “Can” nel caso di metodi che restituiscono un boolean
Es.
public boolean IsMemberOfTeam();
public boolean HasRows();
public boolean CanWrite();
Identificatori dei controlli visuali
Su questo argomento è avvenuto il cosiddetto ’scisma degli sviluppatori’: sono saltate fuori 2 soluzioni, una basata sulla notazione ungherese e una orientata a sfruttare appieno le funzionalità di autocompletamento del codice presenti in Visual Studio 2005.
Come già detto, la prima scelta suggerisce l’utilizzo della ungherese, con i primi 3 (o 4) caratteri in minuscolo ad identificare il tipo di controllo.
Ecco un breve lista dei possibili prefissi da utilizzare:
| Controllo | Prefisso |
| Button | btn |
| ComboBox | cmb |
| CompareValidator | cmv |
| CustomValidator | ctv |
| DataGrid | dgr |
| DateTimePicker | dtp |
| DropDownList | ddl |
| Form | frm |
| Label | lbl |
| LinkLabel | lnk |
| Panel | pnl |
| RequiredFieldValidator | rfv |
| RegularExpressionValidator | rxv |
| TextBox | txt |
| GroupBox | grp |
| Ecc… | Ecc… |
L’altra possibilità suggerisce la possibilità di usare un codice piu’ complesso per identificare i controlli visuali:
- un prefisso di 2/3 lettere ad identificare il gruppo di controlli instanziati dall’utente (in questo caso ‘ux’)
- il nome scelto per la variabile, in Pascal Case
- Il nome del tipo di controllo creato, in Pascal Case
Esempio:
uxIndirizzoTextBox
In questo modo, in fase di scrittura del codice, basta digitare ‘ux’ e attivare l’autocompletamento per avere l’elenco dei controlli visuali presenti nel progetto; da li, aggiungendo le prime lettere del controllo possiamo completare la stringa con minori battute sulla tastiera.
Dopo lunghe disquisizioni, la scelta è caduta sulla seconda ipotesi.
Class, Structs and Interfaces
Nella definizione di classi e interfacce :
- Non usare prefissi per i nomi delle classi
Es.
// errato
public class CPersona {…}
// corretto
public class Persona {…}
- Usare il prefisso “I” per i nomi delle interfacce
Es.
public interface IPersona {…}
- Utilizzare un nome composto per le classi derivate, aggiungendo come suffisso il nome, o parte del nome, della classe base
Es.
public class PersoneCollection : CollectionBase {…}
public class CustomEventArgs : EventArgs {…}
public class CustomException : Exception {…}
Le classi non hanno bisogno di essere identificate da un prefisso in quanto rappresentano la struttura di default di ogni applicazione realizzata con il .Net Framework.
Per le interfacce è invece necessario utilizzare il prefisso “I” in modo da distinguerle dalle classi.
Denominazione degli Alias di namespace
Le Naming Guidelines documentate nel .NET Framework non suggeriscono se usare il Pascal Case o il Camel case con gli alias di namespace.
Nel C# tuttavia una delle funzioni dell’operatore :: è quella distinguere l’ambiguità che si può creare quando si definisce un Alias omonimo di un tipo, ad esempio:
using Sql = System.Data.Sql;
Class Sql {}
…
Sql::DataRow riga = null;
Questo suggerisce quindi che per evitare problemi inutili (collisioni tra nomi degli alias e dei tipi) è preferibile utilizzare il Camel case.
Naming Issues
E’ molto importante definire con accortezza anche i nomi che si vogliono assegnare ai membri pubblici di una classe che sarà esposta ed utilizzata da altri sviluppatori :
- Usare nomi che abbiano un significato, che siano “parlanti”
- Scegliere una lingua per identificatori e commenti
- Evitare le abbreviazioni
- Guardare se esistono nomi già utilizzati e conosciuti per quello che vogliamo descrivere
Es.
MyCollection.Count vs MyCollection.NumberOfElements (la proprietà Count è usata in framework diversi ed
è facilmente riconoscibile dallo sviluppatore, non
occore un nome nuovo,in questo esempio NumberOfElements
per specificare il concetto)
Fonte: Blog di Brad Abrams e sezione “Designing .Net Class Libraries” di MSDN.
Commenti : Lascia un commento »
Categorie : ASP.NET, C#, VB.NET
Lavoro troppo?
8 10 2006Giornata in ufficio parecchio movimentata e ’scoppiettante’, rientro a casa con i capelli dritti (e ne ho parecchi!).
Durante la notte la mia dolce metà nota che ho un sonno parecchio disturbato; mi scuote, cercando di svegliarmi:
"Andy, cos’hai? Tutto ok?"
e io:
"Roonf…no…no…tutto ok…c’è un problema col server…RoooOOoOonf!"
"Tu sei malato!" è il suo commento la mattina dopo…..come darle torto!
Commenti : 2 Commenti »
Categorie : Personali
Media-Convert.com: convertitore per file multimediali OnLine
6 10 2006Media-Convert.com e’ un nuovo servizio online che permette la conversione di file multimediali.
Il numero di formati supportati e’ notevole, la stabilita’ e la velocita’ di conversione un po’ meno…:-)
Ho fatto alcuni test: la conversione dei principali formati audio viene effettuata senza intoppi, qualche problema saltuario invece con i video.
Interessante la possibilita’ di effettuare conversioni anche di documenti.
Ecco una lista dei formati supportati:
Documenti:
- Testo, HTML, XHTML, Microsoft Word, RTF, PDF, PS, Open Office, Star Writer, Pocket Word, Word Perfect
- CSV, dBase, Microsoft Excel, Pocket Excel, Lotus 123, Quattro Pro, Star Calc, Open Office spreadsheet
- MathML, Star Math, Open Office math
- Microsoft Powerpoint, Star Impress, Open Office presentation
Archivi:
- 7Z BZ2 BZA CAB GZ LHA LZH RAR TAR TGZ YZ1 ZIP
Video:
- 3GP (in/out) AMV (out) ASF (in) AVI (in/out) DV (in) FLI (in) FLV (in) MKV (in) MOV (in/out) MP4 (in/out) MPG (in/out) OGM (in) SWF (out) VOB (in) WMV (in)
Immagini:
- AVS BMP CIN DCX DIB DPX FITS GIF ICO JFIF JIF JPE JPEG JPG MIFF OTB P7 PALM PAM PBM
- PCD PCDS PCL PCX PGM PICT PNG PNM PPM PSD RAS SGI SUN TGA TIF TIFF WMF XBM XPM YUV
Musica:
- WAV => MP3, OGG, AAC, AMR, FLAC, MPC, MMF, AU, AIFF, QCP.
- MP3 => WAV, OGG, AAC, AMR, FLAC, MPC, MMF, AU, AIFF, QCP.
- WMA => WAV, OGG, AAC, AMR, FLAC, MP3, MPC, MMF, AU, AIFF, QCP.
- OGG => WAV, MP3, AAC, AMR, FLAC, MPC, MMF, AU, AIFF, QCP.
- AAC => WAV, MP3, OGG, AMR, FLAC, MPC, MMF, AU, AIFF, QCP.
- MP4 (AAC) => WAV, MP3, OGG, AMR, FLAC, MPC, MMF, AU, AIFF, QCP.
- FLAC => WAV, MP3, OGG, AMR, AAC, MPC, MMF, AU, AIFF, QCP.
- VQF (Yamaha TwinVQ) => WAV, MP3, OGG, AMR, AAC, FLAC, MMF, AU, AIFF, QCP.
- MPC (Musepack) => WAV, MP3, OGG, AMR, AAC, FLAC, MMF, AU, AIFF, QCP.
- REAL AUDIO => WAV, MP3, OGG, AMR, AAC, FLAC, MPC, MMF, AU, AIFF, QCP.
- AMR => WAV, MP3, OGG, AAC, FLAC, MPC, MMF, AU, AIFF, QCP.
- MMF (pcm) => WAV, MP3, OGG, AAC, FLAC, MPC, AMR, AU, AIFF, QCP.
- AU => WAV, MP3, OGG, AAC, FLAC, MPC, AMR, MMF, AIFF, QCP.
- AIFF => WAV, MP3, OGG, AAC, FLAC, MPC, AMR, AU, MMF, QCP.
- QCP => WAV, MP3, OGG, AAC, FLAC, MPC, AMR, AU, AIFF, MMF.
- 3GP => WAV, MP3, OGG, AAC, FLAC, MPC, AMR, AU, AIFF, MMF.
- Amiga files (8SVF, MAUD), Psion files (PRC, WVE), SNDT, SF, SoundBlaster VOC, AVR, TXW, Soundtracker files (MOD, XM FastTracker, IT ImpulseTracker, S3M ScreamTracker)
Anche se ancora poco maturo e con un ampio margine di miglioramento, il servizio e’ ben fatto: utile tra l’altro per convertire i video scaricati con VideoRonk e KeepVid!
Commenti : 5 Commenti »
Categorie : Multimedia
WriteToMyBlog
5 10 2006Volevo provare a scrivere questo post utilizzando il tool gratuito WriteToMyBlog: in pratica un’editor online sviluppato con TinyMCE (full optional!) che permette di editare il proprio articolo, inserire immagini e postare su piu’ blog e piattaforme contemporaneamente. Comodo per chi non ha voglia/tempo di installare e configurare TinyMCE sulla propria installazione di WordPress o chi (come me) si e’ affidato a servizi di blogging preconfezionati che non permettono di personalizzare l’editor.
Dico ‘volevo’ perche’ la cosa si e’ dimostrata un po’ piu’ ardua del previsto: il tool e’ ancora poco maturo, e sovente saltano fuori problemi.
I piu’ evidenti, a mio avviso, sono l’impossibilita’ di inserire tabelle (il pulsante e’ presente su TinyMCE ma se premuto non sortisce alcun effetto) e il non funzionamento dell’inserimento dei link (su Firefox viene restituito un errore js, come in figura).
Dal canto mio, preferisco postare sul blog utilizzando Qumana, un tool estremamente semplice, funzionale e multipiattaforma.
Commenti : Lascia un commento »
Categorie : Generici, Internet
ASP.NET AJAX
2 10 2006E’ passato qualche mese da quando scrissi il primo post riguardante ATLAS, il framework sviluppato da Microsoft per aggiungere funzionalità asincrone ad ASP.NET.
Il progetto è progredito, ha perso il codename ATLAS per trasformarsi semplicemente in ASP.NET AJAX.
Nella HomePage del progetto è possibile visionare alcuni ‘videocorsi’ di sviluppo con asp.net ajax: nel primo viene messa in luce la semplicità di conversione di una normale applicazione asp.net a una basata su ajax.
Una volta creato il progetto utilizzando l’apposito template, si può sviluppare l’applicazione seguendo le direttive classiche di asp.net, salvo poi ‘racchiudere’ le parti che dovranno essere aggiornate in maniera asincrona all’interno di appositi tag.
Gli altri video riguardano problematiche e dimostrazioni piu’ specifiche: utile e interessannte la serie "How Do I".
Commenti : Lascia un commento »
Categorie : AJAX, ASP.NET
Scaricare video da GoogleVideo, YouTube e simili con VideoRonk e VideoDownloader
1 10 2006Ho notato che un mio precedente post sull’argomento ha iniziato a portarmi un notevole numero di accessi: ne deduco che parecchi visitatori della blogsfera siano interessati ai metodi per rivedere ‘off-line’ i video pubblicati su YouTube, Google Video e servizi similari.
Si rende quindi necessario un ‘refresh’ sull’argomento e non posso quindi non citare VideoRonk, servizio simile a KeepVid.Com ma con un supporto a un minor numero di siti (YouTube, GoogleVideo, MetaCafe, DailyMotion e MySpace).
Funzionalita’ nuova e’ la possibilita’ di effettuare la ricerca nei servizi sopracitati e di scaricare con un click il file FLV del video scelto.
Il file cosi’ scaricato potra’ essere poi visualizzato con VideoLan o FLV Player oppure convertito in altri formati con Cinemaforge.
Doveroso da parte mia segnalare anche PiccolaMetal, che nei commenti mi faceva notare la presenza di una apposita extension per Mozilla Firefox, VideoDownloader che aggiunge all’amato browser una apposita icona per il download del file FLV nel caso in cui si stia visitando una pagina appartenente ai seguenti siti:
Youtube, Google Video, iFilm, Metacafe, Dailymotion, Myspace, Angry Alien, AnimeEpisodes.Net, Badjojo, Blastro, Blennus, Blip.tv, Bofunk, Bolt, Break.com, Castpost, CollegeHumor, Current TV, Dachix, Danerd, DailySixer.com, DevilDucky, Double Agent, eVideoShare, EVTV1, FindVideos, Free Video Blog, Grinvi, Grouper, Hiphopdeal, Kontraband, Lulu TV, Midis.biz, Music.com, MusicVideoCodes.info, MySpace Video Code, Newgrounds, NothingToxic, PcPlanets, Pixparty, PlsThx, Putfile, Revver, Sharkle, SmitHappens, StreetFire, That Video Site, TotallyCrap, VideoCodes4U, VideoCodesWorld, VideoCodeZone, vidiLife, Vimeo, vSocial, Yikers, ZippyVideos… and any other webpage with embedded objects.
Commenti : 9 Commenti »
Categorie : IPTV, Internet













