Ricevo da Patrick questa offerta di lavoro:
William Hill Contractor position in Gibraltar:
salario competitivo + relocation + accomodation, Java Senior Developer almeno 5 anni di esperienza lavorativa richiesta,patrick.diloreto@williamhill.com
Ricevo da Patrick questa offerta di lavoro:
William Hill Contractor position in Gibraltar:
salario competitivo + relocation + accomodation, Java Senior Developer almeno 5 anni di esperienza lavorativa richiesta,patrick.diloreto@williamhill.com
Una delle soluzioni architetturali che ho imparato ad apprezzare ed utilizzare nel corso degli anni è quella che prevede:
- uno strato Model, contenente una o più entità POCO referenziate tra loro;
- uno strato Repository per l’accesso ai dati;
- uno strato Service;
- uno strato Presentation, che contiene le nostre pagine html/aspx (o le view se sviluppate in asp.net mvc).
Una pratica che vi consiglio caldamente di seguire è di non utilizzare gli oggetti POCO per la loro rappresentazione grafica, ma di affidarvi a dei DTO di appoggio.
In tal senso, oggi ho scoperto un utilissimo metodo fornito da AutoMapper, in sede di creazione della Map tra un oggetto POCO ed un DTO.
1 2 | cfg.CreateMap<User, ViewModel.User.dtoUser>() .ForMember(dest => dest.Property, opt => opt.NullSubstitute("N/A")) |
L’utilizzo del metodo NullSubstitute vi consente di associare automaticamente un valore string di default nel caso in cui la proprietà risulti essere NULL. (nel mio caso voglio visualizzare N/A nel caso in cui Property sia NULL).
Finalmente i ragazzi di Aruba hanno ripristinato il servizio – sospeso a causa di un incendio ai loro datacenter.
Se utilizzate AnkhSVN quale tool per poter gestire il vostro repository SVN direttamente da Visual Studio 2010, potrebbe capitarvi, in fase di aggiornamento a Visual Studio 2010 SP1, di veder scomparire AnkhSVN tra i controlli sorgenti disponibili.
Difatti, l’aggiornamento ad SP1, re-imposta automaticamente TFS quale source control di default.
Per risolvere il problema, è sufficiente che andiate nel menu Tools/Options, voce Source Control, da dove potrete ripristinare AnkhSVN quale plugin-in per il controllo dei sorgenti
Leggo ora su agicoscommesse.it che l’FBI ha chiuso le 3 poker room più famose [e frequentate al mondo]: Pokerstars, FullTilt ed AbsolutePoker.
Se lo stato italiano non fosse quello che è, e se non esistesse l’AAMS (o comuque l’AAMS non avesse richieste così folli), sarebbe un ottimo momento per investire!
SottoTitolo: (PayPal Shipping costs not added to total)
Negli ultimi tempi sto concentrando i miei sforzi, in raccordo con Emanuele, sullo sviluppo di una piattaforma e-commerce che abbiamo creato da zero (completamente customizzata – che, spero, andrà online molto presto).
Ho da poco riscontrato un problema nella gestione delle spese di spedizione da parte di PayPal.
Una premessa è dovuta: in sede di raccolta delle specifiche abbiamo deciso di ricorrere a PayPal WebSite Payments Standard (WPS) per il semplice motivo che, nonostante non fornisca tutta una serie di strumenti utili, consente al cliente di effettuare il pagamento anche nel caso in cui non possieda un account PayPal.
Il problema risiede nella gestione che PayPal fa dei costi di spedizione.
La variabile interessata è “shipping”. Leggendo il manuale fornito, alla voce “HTML Variables for Website Payments Standard” si legge che:
shipping – Optional – The cost of shipping this item. If you specify shipping and shipping2 is not defined, this flat amount is charged regardless of the quantity of items purchased.
This use of the shipping variable is valid only for Buy Now and Add to Cart buttons.
Default – If profile-based shipping rates are configured, buyers are charged an amount according to the shipping methods they choose.
Purtroppo, dopo vari test, mi sono reso conto che ciò non corrisponde al vero. Difatti, nonostante io abbia configurato l’account PayPal, alla sezione costi di spedizione, dicendo espressamente di volerli customizzare, il motore non leggeva in alcun modo il valore della variabile che gli passavo.
Dopo un bel pò di tempo passato a leggere il forum (peraltro colgo l’occasione per fare un complimento alla piattaforma x.com), ho trovato questo link: Shipping not being passed to paypal, dove molti sviluppatori lamentavano il fatto che la variabile che in realtà deve essere usata sia “handling_cart”. Sempre dallo stesso manuale si legge che:
handling_cart – Optional – Single handling fee to be charged cart-wide. If handling_cart is used in multiple Add to Cart buttons, the handling_cart value of the first item is used.
Leggendo il forum, mi trovo daccordo con gli sviluppatori. Piuttosto che modificare la documentazione, peraltro non ancora sistemata dopo ben 2 anni, sarebbe il caso che PayPal provvedesse a sistemare il proprio motore interno in modo che la variabile shipping assolva correttamente il suo compito.
Spero di essere stato d’aiuto a qualcuno.
Ho appena installato una nuova applicazione per android, sviluppata da miyowa, e che porta sui nostri smartphone windows live messengere.
A breve ulteriori impressioni
E’ da parecchio tempo che osanno il portale della rai.
Credo sia, senza ombra di dubbio, uno dei migliori “siti” realizzati in questo deleritto paese (complimenti alla società che lo ha sviluppato.
Non sto qui ad elencare tutti i motivi per cui lo ritenga davvero ben fatto – non è l’obiettivo di questo post.
Ieri notte volevo vedere la puntata di Montalbano dal mio htc desire z e, purtroppo, non mi è stato possibile.
Difatti, tutti i contenuti multimediali sono fruiti tramite Silverlight che, per quanto ne sappia, non è supportato su Android.
Se qualcuno mi dicesse il contrario cadrebbe tutto questo castello.
Se invece tutto ciò venisse confermato, sarebbe un grave limite (soprattutto progettuale) che minerebbe quanto di buono penso del portale della rai.
Sviluppare in asp.net webform e jquery è sicuramente un’attività che consente di realizzare un prodotto con un codice molto pulito e ben strutturato, delegando correttamente le diverse azioni ad ogni modulo.
Tuttavia, al contrario di quanto non avvenga in asp.net mvc, bisogna fare molta attenzione a ciò che succede dietro le scene.
Oggi per esempio mi sono imbattuto in un comportamento che non avevo notato prima.
La situazione è quella in cui, al click di un pulsante, si apra una finestra popup, realizzata tramite jQuery UI dialog. La finestra conterrà una serie di campi e due pulsanti (annulla, salva): l’obiettivo è consentire l’inserimento su DB di una generica entità (ie: un utente).
In aggiunta, ho inserito una serie di regole di validazione ricorrendo a jQuery validation.
Tuttavia, sul change del campo di testo, la console javascript restituisce questo errore:
this[0] is undefined
Questo avviene perchè il dialog viene creato al di fuori del form presente nella master page (come riportato nella figura sottostante).
Per ovviare a questo problema, si deve intervenire sull’evento open del dialog, in modo che il codice del dialog venga inserito all’interno del form.
Di seguito uno snippet del codice necessario:
1 2 3 4 5 6 7 8 9 10 11 | $("#popup").dialog({ title: 'titolo', autoOpen: false, close: function () { $(this).remove(); }, open: function () { $(this).parent().appendTo($('#aspnetForm')); }, modal: true, width: 600, height: 300, ... |
Sembra pazzesco, ma fino ad oggi non esisteva un’app android ufficiale di Linkedin.
Personalmente usavo (e credo continuerò ad usare) droidin, che è realizzata bene e con criterio.
Fatto sta, per chi non lo sapesse, da oggi potete scaricare l’app di Linkedin dall’Android Market.
ps: grazie a Marco per la segnalazione (se e quando ti farai un sito web, un blog o quant’altro, ti linkerò)
titolo in italiano:
Oggi ho avuto la necessità di ordinare un array multidimensionale in PHP; un array di array in questo formato:
1 2 3 4 5 6 7 8 9 | //an array of some songs I like $songs = array( '1' => array('artist'=>'The Smashing Pumpkins', 'songname'=>'Soma'), '2' => array('artist'=>'The Decemberists', 'songname'=>'The Island'), '3' => array('artist'=>'Fleetwood Mac', 'songname' =>'Second-hand News') ); |
Sempre per il principio di non re-inventare la ruota, googlando un pò è saltata fuori questa funzione su firsttube:
Tuttavia a me serviva qualcosa di un pò più evoluto, che mi consentisse non solo di scegliere la chiave dell’array sulla quale ordinare, ma anche il verso dell’ordinamento.
1 2 3 4 5 6 7 8 9 10 11 12 13 | function subval_sort($a,$subkey) { foreach($a as $k=>$v) { $b[$k] = strtolower($v[$subkey]); } asort($b); foreach($b as $key=>$val) { $c[] = $a[$key]; } return $c; } |
Di seguito la mia estensione:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function subval_sort($a,$subkey,$sortOrder) { foreach($a as $k=>$v) { $b[$k] = strtolower($v[$subkey]); } if($sortOrder == "asc") asort($b); else if($sortOrder == "desc") arsort($b); foreach($b as $key=>$val) { $c[] = $a[$key]; } return $c; } |
Ed infine e’ iniziata la “guerra” del like.
Google ha dato vita al primo esperimento di social search, dando la possibilita’ agli utenti di votare il link, risultato dalla ricerca sul famoso motore di ricerca, cliccando sul nuovo pulsante +1.
Aggiornamento: la notizia e’ ripresa dal blog di dario salvelli.
Aggiornamento: per attivare questa nuova funzionalita’, dovete attivare il primo esperimento su google experimental
Negli ultimi giorni sono stato parecchio impegnato nello sviluppo della primissima versione del mio portfolio.
Lo potete trovare a questo indirizzo: www.francescobiacca.it
Al contrario di molti altri, credo che ognuno ha abbia la sua professionalità. Non sono un web designer (colui che tanti chiamano volgarmente “grafico”), per cui attualmente è tutto ancora in lavorazione.
Si accettano commenti.
Nei prossimi giorni sicuramente apporterò cambiamenti strutturali (sperando di averne tempo)
Con Emanuele stiamo sviluppando un prodotto con una deadline parecchio vicina.
Per questo motivo, dovendo sviluppare un wizard per finalizzare il pagamento su un prodotto Ecommerce, ho scelto di far uso del controllo fornito dal framework .NET ASP:Wizard.
Come tutti i controlli forniti da .net, è molto semplice da utilizzare e, sebbene mi piaccia poco ricorrere al loro utilizzo a causa del basso di livello di customizzazione che possiedono, ho dovuto comunque farne ricorso.
Nel tentativo di fare un qualcosa di fatto bene, ho scelto di accoppiare un UpdatePanel al controllo Wizard.
Ovviamente è crashato tutto, o meglio, il controllo Wizard non consentiva più di navigare tra i vari step a causa del non corretto refresh dell’UpdatePanel.
Dopo un’oretta di tentativi, devo ringraziare Jean Paul per aver fornito la soluzione su stackoverflow.
In vista di un progetto che mi impegnerà nei prossimi mesi, oggi ho installato Magento 1.5.0.1 sulla mia macchina di sviluppo: Windows 7 x64, Php 5.3.5 e Mysql 5.
Durante la fase di installazione ho avuto a che fare con 4 problemi bloccanti:
1. errore durante la validazione di Base URL.
Durante la fase di installazione, magento chiede l’url presso quale installare il prodotto. Essendo in ambiente di sviluppo, avevo necessità di inserire qualcosa come:
1 | http://localhost/magento |
Purtroppo l’applicativo continuava a fornire errore. Per bypassare il problema, si deve editare il file: \app\design\install\default\default\template\install\config.phtml.
Cercate il pezzo codice seguente:
1 2 3 4 5 6 7 8 9 10 | <label for="base_url"> <?php echo $this->__('Base URL') ?> <span class="required"> * </span></label> <br /> <input type="text" name="config[unsecure_base_url]" id="base_url" value="<?php echo $this->getFormData()->getUnsecureBaseUrl() ?>" title="<?php echo $this->__('Base URL') ?>" class="required-entry validate-url input-text" /> </li> |
Per risolvere il problema, bisogna eliminare l’attributo “validate-url” dal campo class di input text.
2. Il secondo problema con cui ho avuto a che fare è stato in fase di creazione delle tabelle su db mysql. Il sistema restituiva sempre il seguente errore:
1 2 | Fatal error: Maximum execution time of 60 seconds exceeded in C:\path\to\magento\lib\Varien\Db\Adapter\Pdo\Mysql.php on line 276 |
Per risolvere, è sufficiente aumentare il tempo di timeout configurabile dal driver mysql dentro php.ini.
3. Il terzo problema è pazzesco. L’ultimo step del wizard di installazione di magento, richiede la creazione di un account di amministrazione dello store.
Succede che non funzioni correttamente la validazione della password, per risolvere è stato sufficiente refreshare la pagina con f5 e reinserire la [stessa] password.
4. Una volta installato Magento, mi è capitato il problema più disarmante: non poter accedere al pannello di amministrazione, pur avendo inserito correttamente username e password (create al punto 3 precedente).
Per bypassare questo problema si deve modificare il file
\app\code\core\Mage\Core\Model\Session\Abstract\Varien.php.
Alla linea 75, il codice deve essere così scritto:
1 2 3 4 5 6 7 | session_set_cookie_params( $this->getCookie()->getLifetime(), $this->getCookie()->getPath() /* $this->getCookie()->getDomain(), $this->getCookie()->isSecure(), $this->getCookie()->getHttponly() */ ); |
Ne approfitto per un paio di impressioni.
L’installazione e l’utilizzo di OsCommerce resta, a mio parere, nettamente più semplice ed usabile di quanto non sia Magento. Tuttavia, anche a colpo d’occhio, semplicemente osservando il backend, si capisce quanto sia complesso e potente il controllo offerto da Magento sul proprio store.
Ho da poco aggiornato il mio htc desire z alla versione HTC Sense 1.82.405.1.
L’aggiornamento pesa circa 17MB e non esiste ancora un changelog ufficiale.
A parte generici miglioramenti alle performance (ma è ancora troppo presto perchè io ne possa parlare), si parla di bugfix al sistema della fotocamera, alla gallery delle immagini.
Quello che ho potuto notare è che hanno sostituito il contatore di sms e messaggi con una nuova icona, sfondo nero bordo colorato che sicuramente ha un effetto molto gradevole (almeno per il mio occhio).
Devo approfondire soprattutto se siano riusciti a risolvere due noiosi e gravi bug che affliggono l’applicativo di gestione degli sms (uno dei due lo trovate spiegato qui, l’altro credo sia questo)
Il primo step verso Impresa Semplice è stato effettuato.
Ovviamente non è andato tutto liscio.
Nonostante io abbia segnalato almeno due volte al 187 che necessitavo di un model adsl, il tecnico si è presentato senza tale richiesta nell’ordine. Per questo motivo mi son dovuto attrezzare di conseguenza – poco male, un modem adsl può sempre tornare utile.
Questo ha però fatto sì che io non sapessi come configurare il modem, o meglio non conoscessi username e password per poter accedere alla rete, perchè non comunicatemi da nessuno.
Diciamo che in generale ho notato, anche con Telecom, una professionalità mediocre.
Tuttavia la connessione è più stabile e, almeno ad occhio, mi pare più veloce di Fastweb (anche se è pur sempre una adsl 7mbit) – chissà come mai eh
Questa foto sta girando sul web.
E’ la cena alla quale erano presenti il presidente degli Stati Uniti Barack Obama ed alcuni rappresentanti delle più grandi aziende operanti nella Silicon Valley. Nel caso in cui non conosciate i soggetti seduti al tavolo, vi faccio notare:
- Mark Zuckenberg (mr. Facebook) seduto alla destra di Obama;
- Steve Jobs (mr. Apple) seduto alla sinistra di Obama;
- Erich Schimdt (uno dei mr. Google), seduto a capotavola vicino la tizia bionda;
- Carol Bartz (mrs. Yahoo) e Dick Costolo (credo, mr. Twitter) seduti all’altro capotavola.
Bene, mi colpisce che Obama sia seduto a tavola con certi personaggi, mentre il nostro presidente del consiglio (Silvio Berlusconi) goda del suo tempo libero organizzando feste nella sua villa di arcore o a palazzo grazioli, alle quali invita uno stuolo di veline e ragazze ben disposte a certi favori.
E’ proprio vero, ognuno può fare quello che gli pare nel suo tempo libero!
E’ comparsa ieri la notizia che il sistema dei certificati medici online, fornito da INPS, è andato in tilt (anche se le spiegazioni di Adele Sarno sono molto maccheroniche).
La questione è molto ma molto più semplice di ciò che sembra – e parlo sulla base dell’esperienza lavorativa su progetti, anche di grandissima rilevanza lì dentro.
Il fine ultimo delle società di consulenza che vincono gli appalti per la fornitura dei servizi ad INPS, non è formare, nè tantomeno realizzare un buon prodotto, bensì fare più profitti possibili. Per questa ragione, si sceglie di posizionare gente inesperta, poco professionale ed in generale senza studi adeguati*, il cui unico compito è dire “si” al dirigente INPS di turno, senza fornire una vera e propria consulenza.
Si parte così alla rinfusa, progettando (quando lo si fa), sistemi anche complessi, magari con servizi web sviluppati senza pensare nè ragionare alle conseguenza dell’interazione con altri sistemi, per giungere infine al collasso dei server, allo scarica barile tra società, sviluppatori, coordinati, capi area, commerciali, ecc. ecc.
Quello che succederà in conseguenza dell’articolo che ho linkato prima, è che a breve usciranno tutta una serie di statistiche, su base regionale, a dimostrazione che comunque il sistema funziona, che i dati sono stati inviati, ecc. ecc.
stay tuned
*: questa non vuole essere assolutamente una critica verso coloro i quali non possiedono una laurea. Anzi, conosco tantissimi bravi sviluppatori non laureati che fanno benissimo il loro lavoro. Mi riferivo piuttosto al fatto che, tendenzialmente, su 10 progetti, 9 di questi vengono coordinati da gente non laureata (e ci sarà pure un motivo, se la maggior parte dei progetti poi finiscono male).
Uno degli aspetti che ancora mi manca di Bologna è sicuramente l’avere usufruito dei servizi su fibra ottica di fastweb.
Qualche mese fa, in corrispondenza del trasloco, ebbi la brillante idea di lasciare il monopolista per eccellenza e darmi alla concorrenza (e fa anche rima
).
Non l’avessi mai fatto: limiti ridicoli sul numero di pc (3) da poter collegare contemporaneamente, continue disconnessioni e, soprattutto la sera e nel weekend (quindi nei picchi di utilizzo nella zona in cui abito) la qualità della linea fastweb è pessima (zona Roma Tiburtina).
Decido quindi di far ritorno da chi possiede tutto, e quindi di chiedere il passaggio verso Telecom. Visto che ci sono, decido di passare ad ImpresaSemplice, in modo da poter scaricare il costo di Internet che, comunque, utilizzo per il mio lavoro di libero professionista.
Una volta completata la procedura sul sito internet, il sistema visualizza un errore nel quale, tra le altre opzioni, mi viene proposto di contattare telefonicamente il 191. A malincuore, sapendo a ciò a cui andavo incontro, “alzo” il telefono e contatto il 191 come da prassi.
E qui arriva l’assurdità.
Il call center mi comunica che usufruendo di un servizio adsl fastweb su linea residenziale, devo fare ciò che loro chiamano “surclassazione“, cioè prima devo fare richiesta di passaggio della mia linea da fastweb a telecom (187) e solo successivamente richiedere il passaggio verso la linea business (191 – ImpresaSemplice).
Qualcuno potrà mai spiegarmi questa assurdità burocratica?
Ne dubito fortemente.
A me consumatore, utilizzatore (per lavoro) di Internet, poco importa della tipologia della linea di cui usufruisco. Molto banalmente, richiedo un servizio e pago per quel servizio.
Non mi capacito di quale sia la motivazione per cui 187 o 191, che sono sicuramente espressione della stessa società madre, debbano incorrere in tutte queste lungaggini per accaparrarsi un nuovo cliente.
Ultima nota (più o meno positiva): Telecom è nettamente all’avanguardia rispetto agli altri operatori , almeno nell’utilizzo dei mezzi di comunicazione. E’ di poche settimane fa la nascita del blog di Eraclito (gestito da Mantellini); inoltre ImpresaSemplice possiede un proprio profilo su Facebook.
Devo dire che, al massimo dopo 10 minuti dall’aver scritto sulla loro bacheca, sono stato contattato privatamente da un certo Lorenzo che si prodigava per aiutarmi. Purtroppo senza venirne a capo, considerato che mi è stata confermata la stessa burocratica trafila spiegatami per telefono dal 191.
Oggi nascono due nuove interessanti realtà: Linkiesta ed AgendaDigitale.
Del primo ne ha già parlato Vittorio Pasteris sul suo blog, per cui vorrei spendere due parole su Agenda Digitale.
Si tratta di una sorta di sottoscrizione per chiedere, entro 100 giorni, la redazione di proposte organiche per un’Agenda Digitale.
Visto il momento, è sicuramente una sfida interessante – vediamo se la si riesce a vincere
Leggo ora sul blog di Tony Siino, BlogItalia blog, che la piattaforma blogo.it è stata acquisita da Populis, tramite l’acquisto di E-Box srl. Populis è il famoso network dei cosiddetti “media brands” e l’affare si è concluso per 6 milioni di euro
Forse a molti di voi blogo.it dirà nulla, però sicuramente conoscerete i vari 06blog, calcioblog, ecc. ecc.
Mi sono appena collegato per controllare la posta sul mio account Gmail e sono stato avvisato dell’ultima novità di Google: la posta prioritaria di Gmail.
In sostanza, è possibile selezionare come “Posta prioritaria” alcune tipologie di messaggi di modo da poterli visualizzare in una sezione speciale, posta in alto della sezione contenente tutte le mail.
Ultimamente Domenico mi aveva segnalato dei problemi con il feed di questo blog. Ne ho approfittato per aggiornare alla nuova versione di WordPress (la 3.x) e dare una bella ripulita ai plugin qui in uso.
Il team di sviluppo ha introdotto un bel pò di novità sulle quali sarà il caso di documentarsi.
Il sito rai.tv su android: problemi con silverlight
RFOPortal online!
Superenalotto: e se fosse truccato?
Sony: pessima gestione ecommerce