Proudly debugging the system since 1981

Categoria: programmazione (Pagina 4 di 6)

Cose che ti tocca di vedere

ministero salute

La sorgente di una JSP del ministero della salute, trovata tramite downloadblog, con tanto di bellissima query generata con un parametro GET  non sanitizzato.

E poi a me bucano wordpress.

Non è giusto perche WP è fatto molto meglio di questa cosa anni 90. Non è giusto perchè fa danni a chi non ha migliaia di ore da investire in sicurezza, neanche volendo. Ma … alla fine … il software custom e con sorgenti private (non closed source, ma rilasciate all’unico cliente finale) anche se di qualità non eccelsa è difficile da attaccare.  La sicurezza attraverso la non conoscenza non dà certezze assolute, ma sembra che statisticamente renda di più della sicurezza tramite validazione della wisdom of the crowd.

Pessimismo ? forse solo realismo. Gli attacchi a wordpress e phpBB sono reali e documentati. Ed entrambi sono software scritti bene. Non perfetti (altrimenti non avrebbero vulnerabilità) ma neanche di una bruttezza proporzionale al numero di attacchi che ricevono che invece vanno di pari passo con la diffusione del software in questione.

Per farsi 2 risata sulla SQL injection ricordo : E-di-cognome-cosa-fai

Anti IF Campaign

Prima di tutto il link

ANTI IF CAMPAIGN

Poi discutiamo del fatto che l’if, come molti costrutti della programmazione imperativa, si presta all’abuso. Il software deve essere pensato per essere mantenibile e non una collezione ingestibile di pezze. Questo, come molte altre cose in informatica, si raggiunge col buon senso. Non è che sostengo, come la persona nel link qua sopra, che gli IF non vadano mai usati. Ma quando ce n’è uno lungo 780 caratteri, vuol dire che la progettazione di quel pezzo di software ha fallito. O non c’è mai stata.

L’ If è una delle strutture base, insieme al ciclo senza contatore e al GOTO ( si il dannato GOTO ). La programmazione alla fine si basa su questo. O se vogliamo ricondurla al’assembler JE o JNE … chi ha usato un disassemblatore X86 sà a cosa mi riferisco. Non si dimenticano i salti condizionati. Ma non si può esprimere concetti complessi in modo immediatamente comprensibile tramite di essi. Se ci metti 2 – 3 condizioni va bene. E’ chiaro e leggibile. Se ne metti 30 immischiate in un casino di parentesi e OR / AND  ci metto 3 ore a campire cosa significano e 5 minuti a fargli-fare-cio-che devo fare. E generalmente quest’ultimo scenario deriva da pezze attaccante di volta in volta da programmatori che per voglia o per obbligo hanno applicato la filosofia del minimo-sforzo (e risultato appena sufficiente)

HTML 5

… ovvero ci toglieremo gli oggetti embedded di torno ?

Speriamo. Intanto per farsi una rapida idea delle novità, tra le tante cose scritte (e che non intendo riscrivere pure io) consiglierei questo : HTML 5 and CSS 3

Tra l’altro mi ha fatto scoprire un nuovo verbo inglese: To Zebra-stripe (something).

Italianizzato è ancora più bello. “Che te la zebrastrippo quella tabella o te la lascio piatta?”

Google App Engine for Java!

Mi hanno appena abilitato l’account per il suddetto application server. Magari provo a far qualcosa.

Considerazione numero 1 : Molti hoster di livello medio alto avranno qualche grattacapo. Difficile offrire una scalabilità migliore.

Considerazione numero 2 : Un linguaggio in cui l’indentatura è parte della sintassi non ha il mio rispetto. E’ come confondere la bellezza con la praticità. Ne uscirà comunque una porcata.

Form dinamiche ed elementi indicizzati

Uno dei problemi più noiosi da gestire nello sviluppo di una web-application è il caso in cui non si conosce a priori il numero di elementi che saranno postati attraverso una form. Questo capita quando c’è di mezzo una tabella con dati provenienti da database e bisogna eseguire su questi piu operazioni con un solo submit della form stessa.
Un esempio classico è il carrello. Un carrello contiene da 1 a infiniti elementi e per ognuno di essi è definita una quantità. Questo viene mostrato all’utente sottoforma di una tabella e l’utente può modificare più quantità contemporaneamente ed eseguire, quando tutto è a posto, un singolo “aggiorna totali” o “check-out”.
Continua a leggere

0.6 Linee di codice all'ora. In media…

No, non io. Ma qualcuno si.

All’università qualcuno sosteneva che 11 righe di codice all’ora sono la media. Considerando analisi, sviluppo, incontri, test, tempi morti … tutto insomma.

Dalla mia esperienza sò che si possono superare tranquillamente le 100 righe all’ora usando gli strumenti giusti e avendo le richieste ben chiare. Voi su che media vi attestate ? Siete delle code monkeys o dei maniaci dell’analisi e dell’ottimizzazione ?

Hibernate e la generazione di query…

SELECT * FROM (SELECT THIS_.CC120_PG AS T1_1_5_,
THIS_.CC120_PG_OWN AS T2_1_5_, THIS_.CC120_UNI_AMM AS T3_1_5_,
THIS_.ID1 AS T4_1_5_, THIS_.CC120_TP_GES AS T5_1_5_,
THIS_.CC120_DESC AS T6_1_5_, THIS_.CC120_QTA AS T7_1_5_,
THIS_.CC120_NUM AS T8_1_5_, THIS_.CC120_VAL AS T9_1_5_,
THIS_.CC120_ASS AS TT110_1_5_, THIS_.CC120_NOTE AS T11_1_5_,
THIS_.CC120_VAL_EURO AS CC120_1_5_, THIS_.CC120_ASS_EURO AS T13_1_5_,
T1_.TT110_PG AS T1_6_0_, T1_.MOVI AS T2_6_0_,
T1_.TCAT AS T3_6_0_, T1_.CDC AS T4_6_0_,
T1_.TT110_BEN AS T5_6_0_, T1_.TT110_FLG_PRO AS T6_6_0_,
T1_.TT110_UNI_AMM AS T7_6_0_, T1_.ANNO AS T8_6_0_,
T1_.TT110_CDC AS T9_6_0_, T1_.TT110_NUM AS TT110_6_0_,
T1_.DATA AS T11_6_0_, T1_.TT110_IMP AS CC120_6_0_,
T1_.ANNO_IMP AS T13_6_0_, T1_.TCAT_CAP AS T14_6_0_,
T1_.TT110_FONDO AS T15_6_0_, T1_.TT110_NUMERO AS T16_6_0_,
T1_.ANN AS T17_6_0_, T1_.TT110_NOTE AS T18_6_0_,

Continua a leggere

Cosa cambiare se finisce l'heap space di Tomcat?

Capita, specie se si fa reload di webapp ogni 5 minuti, che tomcat mandi un errore riferito al PerGen Space.

Ora, premesso che non è bene reloadare a nastro, se proprio è necessario farlo per ragioni di test, si può risolvere aumentando la dimensione massima del permanent generation heap. La configurazione si trova in genere nel file di profile dell’utente che esegue tomcat e si chiama -Xmx . La configurazione di default è 64mb, ma se avete ampie disponibilità di memoria ci si puo azzardare anche in un -Xmx1024m equivalente quindi a 1 gigabyte. L’importante è NON settare un valore superiore a quello della memoria fisica a disposizione, pena continue swappate.

« Articoli meno recenti Articoli più recenti »

© 2025 b0sh.net

Tema di Anders NorenSu ↑