mercoledì 31 agosto 2011

iisnode: Node.js per Internet Information Server


Il iisnode progetto è un modulo che aggiunge il supporto al nodo Internet Information Server 7.0 e versioni successive. Il ruolo principale di IIS è di agire come un server di applicazioni per il nodo, molto nello stesso modo che lo fa per il classico ASP e ASP.NET. Sviluppatori che hanno familiarità con queste tecnologie troverete la lista delle caratteristiche di essere abbastanza familiare.
Nodo è informalmente conosciuta come node.js. Si tratta di una basata su JavaScript lato server quadro con una forte enfasi sulle tecniche di programmazione asincrona. Nel giugno è stato annunciato che Microsoft sarebbe partnership con Joynet alla porta Nodo alla piattaforma Windows . Mentre una porta ingenuo sarebbe abbastanza banale, al fine di ottenere le prestazioni desiderate questo progetto è l'enfasi sull'uso delle funzioni native come porte I / O di completamento.
Torna al modulo di IIS, in cui la gestione dei processi prende il centro della scena. Proprio come ASP.NET, IIS gestisce l'avvio el'arresto istanze del runtime nodo. Dal momento che il nodo è a thread singolo, IIS anche gestire il monitoraggio e bilanciamento del carico tra più istanze di Node. Non ci sono ancora dettagli, ma si potrebbe supporre che stiamo guardando al rapporto tradizionale di un processo / thread per core logici.
Come ASP.NET, iisnode sosterrà sul posto l'aggiornamento. Bisogna semplicemente far cadere una nuova versione di un file di script e IIS riciclare i processi Nodo come completare il loro richieste attualmente in esecuzione.
Nodo può essere utilizzato come web server standalone, ma che richiede allo sviluppatore di gestire un sacco di cose che in realtà non hanno nulla da fare scherzi con. Per esempio, chi vuole trascorrere settimane la messa a punto la cache e il codice di compressione per i file statici? Invece gli sviluppatori possono sfruttare le funzionalità di IIS per questo e concentrarsi sulle aree in cui brilla Node.
Oltre a caching e compressione, Nodo eredita anche la condivisione delle porte, la sicurezza, la riscrittura degli URL e funzionalità di registrazione di IIS. Alcune di queste caratteristiche richiedono modifiche al codice nodo, ad esempio, bisogna leggere l'indirizzo ei numeri di porta dalla variabile process.env.PORT ambientale.
Dato che stiamo parlando di IIS, ci saranno ovviamente alcuni di configurazione XML da affrontare. Per lo meno bisogna registrare il server-side file JavaScript nel file web.config. In caso contrario, farà sì che i file per essere servito da IIS come se si trattasse di JavaScript lato client.

martedì 30 agosto 2011

Come gestire la configurazione di progetto


Ogni progetto web ha bisogno di qualche ambiente di configurazioni specifiche. Credenziali del database, url radice, impostazioni smtp, solo per citarne alcuni. E 'una domanda ricorrente su StackOverflow, e ho visto un sacco di variazioni sul tema, e qui io descrivere quello che penso sia meglio.
  • mettere tutte queste proprietà in un file. proprietà (per esempio application.properties)
  • che hanno application.properties seduto fuori l'applicazione web. Non è in bundle con la costruzione
  • fornire una riga di comando che indica dove si trova quel file. Per esempio-Dconfig.location = / home / vi / config
  • all'avvio dell'applicazione (in un ServletContextListener solito) caricare il file e metterlo in una mappa. Può essere java.util.Properties o una HashMap
  • per gli utenti di primavera - l'uso contesto <: proprietà segnaposto-configuratore location = "file di config.location ://${} / application.properties". Altri framework avrà probabilmente qualche meccanismo per il caricamento di tali proprietà globali
  • contenere uno schema di file proprietà nel repository SCM. Dovrebbe contenere tutte le proprietà, ma i loro valori sono irrilevanti - cambieranno in ogni ambiente
  • ops è la squadra che potrebbero beneficiare di versioni diverse configurazioni ambiente (produzione, qa, stadio), in modo separato / cartella config / sottoprogetto possono essere create e tutti specifici dell'ambiente proprietà possono essere memorizzate. Quando si aggiunge un promotori immobiliari andiate e aggiornare tutti i file di conseguenza
  • proprietà che non dipendono l'ambiente, ma sono ancora globali per il progetto, possono essere memorizzati all'interno del progetto (src / main / resources per maven), e impegnati a SCM. Essi possono essere unite con le proprietà esterno all'avvio (incorporata nella memoria, che è)
Gli sviluppatori possono facilmente eseguire i loro progetti in questo modo. Ops possibile distribuire facilmente si basa su ambienti diversi. La costruzione rimane ambiente-agnostico.

lunedì 29 agosto 2011

Software di Dustin Cogitations Sviluppo e speculazioni

Questo blog è su mie osservazioni e pensieri legati allo sviluppo del software. Queste osservazioni contengono suggerimenti e trucchi che ho imparato, le soluzioni ai problemi che ho affrontato, e altri concetti che ho trovato interessante e utile. Questo blog è destinato a fornire informazioni per aiutare gli altri sviluppatori di fronte gli stessi problemi, oltre a fornire me un metodo per documentare le cose in un noto luogo di riferimento per il mio stesso futuro.

NetBeans 7 e Qualità Ambiente Software

È facile da configurare NetBeans 7 da utilizzare Qualità Ambiente software(SQE) per integrare i più diffusi strumenti di qualità del software ( FindBugs ,PMD , Checkstyle e dipendenza Finder ) con l'ambiente di sviluppo NetBeans 7. La procedura per fare questo sono oggetto di questo post. Le principaliqualità pagina Software Ambiente fornisce l'URI del Centro di aggiornamento NetBeans da utilizzare per accedere SQE come un plug-in NetBeans . Questo è il processo stesso ha spiegato in dettaglio nel blog post editor XML Schema in NetBeans IDE 7.0.1 e che ho usato nel post correlati NetBeans (7.0.1) ha un editor XML Schema! sarò dimostrazione di questo processo utilizzandoNetBeans 7,0 0,1 . In NetBeans 7, il Gestore Plugin è facilmente accessibile selezionando Strumenti, quindi Plugin come illustrato nello snapshot schermata successiva.




L'istantanea schermata successiva mostra selezionando la scheda "Impostazioni" del Plugin popup. L'immagine mostra anche i risultati di cliccare sul pulsante "Aggiungi" in questa finestra "Plugins", che è la nuova finestra popup con il titolo "Update Center Customizer". L'immagine mostra l'URL fornito dalla pagina SQE e citata incollato nel "URL:" il campo. Ho fornito un nome per esso pure ("NetBeans SQE"). Come nota a margine, il customizer che ho aggiunto per strumenti XML (XSD editore) si dimostra ancora da registrare (ma ora l'ho rinominato in "NetBeans XML Strumenti").


Con l'SQE Update Center ha aggiunto, il passo successivo è quello di selezionare "Available Plugins" linguetta sulla stessa finestra "Plugins".L'immagine seguente mostra i risultati di farlo e cliccando su "Categoria" filtro per ottenere il plugin ordinati per ordine alfabetico delle categorie.I quattro plugin relativi alla SQE sono una categoria di "Qualità" e queste quattro vengono controllati in immagine, perché sono loro aggiungendo alla mia installazione NetBeans.


Quando clicco sul pulsante "Install" per installare i quattro "Qualità" plugins, il popup che si apre mostra la versione di ogni plugin viene installato. Questo è mostrato nella schermata successiva l'istantanea.


Dopo aver cliccato sul pulsante "Avanti", licenze deve essere letto e accettato e poi il fatto che i plugin non sono firmati devono essere riconosciuti. Una finestra come quella mostrata nello snapshot schermata successiva indica quando il processo è stato completato con successo. L'installazione di questi plugin SQE non richiede il riavvio NetBeans.


Non è difficile iniziare a vedere il SQE fornito plugin di lavoro. Per esempio, l'istantanea schermata successiva mostra diversi problemi segnalati risultante dalla semplice creazione di un nuovo progetto di applicazione Java, con una classe "principale" creato automaticamente come parte della creazione del progetto.


Questo è un sacco di giallo avviso per un semplice classe nuova! Queste funzionano in modo simile a suggerimenti NetBeans il nucleo e gli avvertimenti. Le prossime tre fotografie istantanee dello schermo mostra i dati forniti quando mi passa il mouse sopra le rispettive aree evidenziata in giallo.




Alcuni degli avvisi sono veramente utili. Per esempio, è auspicabile avere sempre un pacchetto chiamato per una classe Java e l'avviso PMD avvisi me che non ho uno in questo caso (ho dimenticato di specificare il pacchetto durante la creazione della classe nella procedura guidata nuovo progetto). Ho usato capacità di refactoring NetBeans 7 di "Move" ad un nuovo pacchetto chiamato "dustin.examples." Molti di noi che hanno utilizzato strumenti di qualità del codice sapere che non tutti gli avvertimenti sono stati creati uguali. Per esempio, io non sono troppo sconvolto l'avvertimento che il mio file sorgente Java codice non si esaurisce con un ritorno a capo, perché, di fatto, lo fa davvero. L'istantanea schermata successiva mostra le avvertenze sopra affrontati e un semplice "Ciao Mondo" applicazione costruita da quel punto di partenza.






In questo caso, l'avvertimento FindBugs " null pointer dereference di System.out "non mi riguarda, ma è bello vedere avvertimento PMD" stampa System.out è usato "perché non può essere intenzionale. Sono un grande fan di importare staticamente java.lang.System.out quando ho volutamente sto usando quella funzionalità senza intenzione di passare ad un meccanismo di uscita logger o altro. L'unico svantaggio di fare questo, quando il solo scopo di essere utilizzati temporaneamente è che poi l'avviso PMD circa l'uso di System.out.println non viene attivato.SQE Il plugin per NetBeans offre una grafica di difetti del codice sorgente rilevato così come altri forme di produzione che riassume i difetti riscontrati. L'istantanea schermata successiva tentativi di catturare tutte queste in una sola immagine. Si noti che c'è una nuova finestra sul lato sinistro che può essere selezionata in cui "Progetti", "File" e "Servizi" tradizionalmente risiedono. Questa, chiamata "Qualità", è dove si può cliccare sull'icona in alto a sinistra per eseguire tutti gli strumenti di qualità per avere la grafica e le varie output prodotto.




Finora, il più grande inconveniente di utilizzare il plugin SQE qualità del codice è stata l'apparente perdita di alcune funzionalità di reporting di NetBeans suggerimenti , avvisi ed errori. L'esempio nello snapshot schermata successiva mostra che, sebbene la finestra Progetti "sa" che ho un errore di compilazione (usato intero piuttosto che Integer), l'editor di codice sorgente non è così. Ci sono avvertimenti PMD contro l'uso di nomi brevi variabile e per l'uso esplicito scoping, ma non c'è la linea rossa ondulata sotto il tipo di dati cattivi di "intero". A questo proposito, non c'è linea rossa sul margine lungo verticale lungo il lato destro dell'IDE per indicare un errore neanche.


Io allo stesso modo non vedo gli avvisi NetBeans core e suggerimenti, anche se sono meno preoccupati per la perdita di queste, perché molti sono coperti dalla avvertenze fornite dagli strumenti di qualità. Conclusione Il vasto ecosistema Java include molti strumenti potenti.Sebbene questi strumenti possono essere eseguiti in modo indipendente e come parti degli sforzi di integrazione continua, è molto conveniente avere questi problemi segnalati durante il lavoro nel codice, perché molti di loro possono essere facilmente e rapidamente rimedio al primo avvistamento. Il modo migliore per correggere i bug è quello di introdurre e mai li questo tipo di strumenti integrati con l'IDE permette di fare proprio questo, nei casi più di quanto si possa normalmente. L'integrazione di NetBeans con l'ambiente della qualità del software fornisce questo vantaggio. Ulteriori riferimenti Altri riferimenti utili potenzialmente legati all'uso di NetBeans con l'ambiente software di qualità sonoFindbugs, PMD, Checkstyle e dipendenza Finder di Netbeans , Come integrare e utilizzare Qualità Ambiente Software (SQE) plug-in per NetBeans IDE 6.0 , e NetBeans SQE .




venerdì 26 agosto 2011

Heroku ora supporta Java


Heroku hanno appena annunciato una beta pubblica di supporto per Java. Fino ad oggi Heroku ha fornito il supporto per Node.js e Clojure, così come Ruby, è lingua iniziale. Da uno sguardo alGetting Started guida, sembra molto semplice per andare avanti.Tutto quello che dovete fare è registrarsi per un account gratuito Heroku, Maven utilizzare come sistema di generazione del progetto, e il gioco è fatto. Come sottolineato nel blog di sviluppo, Heroku fornisce un modo sorprendentemente semplice per creare applicazioni Java per il cloud: 
Se avete lavorato con Java, il contenuto del ciao-mondo applicazione di esempio qui sopra indicate possono avervi sorpreso. Non c'è un "contenitore di applicazione", nel senso J2EE, l'applicazione utilizzaJetty come un server web incorporato ....
Le funzionalità promesse da contenitori di applicazioni J2EE per la gestione applicazione includono la distribuzione, riavviare, la registrazione, servizio di rilegatura (config), e di clustering (scala orizzontale). In esecuzione la vostra applicazione Java sul Heroku, a raggiungere questi obiettivi attraverso la piattaforma, invece.
Ma a differenza di J2EE, Heroku è una piattaforma di poliglotta . Tecniche per la distribuzione, la registrazione e scaling sono applicabili a tutte le distribuzioni applicazione, indipendentemente dalla lingua. Una infrastruttura di distribuzione comune riduce la scelta della lingua per solo una questione di sintassi e biblioteche. Accoppiamento ridotto tra un'applicazione e l'infrastruttura consente di scegliere la lingua giusta per ogni lavoro.
Heroku è stata acquistata da Salesforce.com scorso dicembre e da allora è stata costantemente aggiungendo lingue.L'aggiunta di Java si apre Heroku fino a una comunità di sviluppatori enorme. Questo significa anche che le lingue sono supportate in JVM Heroku ora, che piacerà a coloro che sono stati chiedono sostegno JRuby. Sviluppatori Java che vogliono entrare in PaaS ora hanno una scelta fantastica. 


giovedì 25 agosto 2011

Aggiungi il tuo javascript proprio su un componente Wicket Ajax Inserito da Aurelien Broszn



Wicket è grande per trasformare un componente in un componente Ajax-enabled. 
Ma cosa succede se si desidera aggiungere il vostro javascript proprio su quella componente Ajax? Perché Wicket decoreranno il javascript per aggiungere il supporto Ajax, qualunque cosa tu metterai in html saranno ignorati. 
La soluzione è semplice quando si utilizza un IBehavior al componente.
Diciamo che si utilizza un WebMarkupContainer come obiettivo ajax. Tutto ciò che è Ajax-aggiornato è messo in esso.
. 01WebMarkupContainer wc = nuovo WebMarkupContainer ( "Ajax" );
. 02wc.setOutputMarkupId ( vero );
03.wc.add ( nuovo AbstractBehavior () {
04.@ Override
05.pubblici vuoto renderHead (IHeaderResponse risposta) {
06.String js = "alert ('ciao');" ;
07.response.renderOnDomReadyJavascript (js);
08.eccellente . renderHead (risposta);
09.}
10.});
11.wc.add (... la componente che verrà aggiornata con Ajax ...)
12.add (wc);