BENVENUTI  ::  CINEMA E TV  ::  INFORMATICA  ::  LETTERATURA  ::  MUSICA  ::  >  ::  PROFILO

Opinabile

è tutto ciò che scrivo, vedi tu se credermi o rendermi infelice...

Visualizzazione post con etichetta INFORMATICA. Mostra tutti i post
Visualizzazione post con etichetta INFORMATICA. Mostra tutti i post

martedì 20 maggio 2014

Installare Qt e Qt Creator su Mac: un'esperienza

Questo post è rivolto a sviluppatori software e tratta del setup di Qt su sitemi Mac.
Qt, in informatica ed in particolare nel campo della programmazione, è una libreria multipiattaforma per lo sviluppo di programmi con interfaccia grafica tramite l'uso di widget (congegni o elementi grafici). Qt, ampiamente utilizzato nell'ambiente desktop KDE, viene sviluppato dall'azienda Qt Software (meglio conosciuta come Trolltech o Quasar Technologies) di proprietà di Digia.
Dalla definizione di Qt su Wikipedia.

Di recente ho acquistato Qt 5 Quanto Basta: La Guida all'Uso della Libreria Grafica Qt 5, in Italiano (Qt QB) di Gianbattista Gualeni.

Metto subito le mani avanti: questo post non è una recensione del libro, tanto più che, per quanto abbia ormai anni di esperienza nello sviluppo software, sono praticamente un neofita del mondo C++. Tuttavia, di libri del settore informatico ne ho letti e visti parecchi e quello che posso dire sicuramente di positivo su questo manuale è che il linguaggio con cui affronta gli argomenti tecnici - spesso, per loro natura, tediosi - è molto amichiveole; anzi, direi molto "amico": già, perché nella lettura sembra proprio di avere accanto un amico con esperienza che ti racconta come si "fanno" le cose - e non un noioso guru evangelista mestierante specializzato nel copia-incolla di help ed esempi che non funzionano neanche a pagare oro.

Incuriosito, quindi, dall'argomento Qt e incentivato dall'approcio del libro acquistato ho voluto provare subito la cosa... su Mac. Su Qt 5 Quanto Basta l'argomento "setup" è affrontanto con cura per il mondo Windows e Linux (Ubuntu), ma non esplicitamente per il mondo Mac: spero con questo post di dare un piccolo contributo al completamento della questione.

Veniamo ora al dunque.

Di seguito sarà esposta l'intera mia esperienza in un formato molto sintetico, ma abbastanza esaustivo: sono gli appunti che ho preso durante la prova.

Buona 7up!

LR.

Installare Qt e Qt Creator su Mac

Domenica, 11 maggio 2014. By LR.


Procedure per installare/rimuovere Qt/QtCreator (e XCode) su Mac OS.
 
Sito di riferimento Qt: https://qt-project.org/

Sommario

  • Premessa
  • Requisiti generali
  • Installazione di Qt (e QtCreator) su Mac
    • A- Installazione XCode
    • B- Installazione Qt (e Qt Creator)
  • Procedure di rimozione
    • Rimozione di Qt (e QtCreator) su Mac
    • Rimozione di XCode su Mac
Premessa

Questo test è effettuato per

  • Qt 5.2.1 con XCode 5
e su computer Apple con seguenti caratteristiche:
  •   Nome modello:    MacBook Pro
  •   Identificatore modello:    MacBookPro9,2
  •   Nome processore:    Intel Core i7
  •   Velocità processore:    2,9 GHz
  •   Numero di processori:    1
  •   Numero totale di Core:    2
  •   Cache L2 (per Core):    256 KB
  •   Cache L3:    4 MB
  •   Memoria:    8 GB 
  •   Versione sistema:    OS X 10.9.2 (13C64)
  •   Versione kernel:    Darwin 13.1.
Le procedure sono descritte in maniera testuale seguendo le voci di pagina web/finestra di dialogo dei setup indicati.

Requisiti generali

  • Connessione ad internet attiva, anche durante le fasi di installazione.
  • Pazienza: alcuni passaggi richiedono parecchio tempo nelle fasi di download.
Installazione di Qt (e QtCreator) su Mac

Installazioni necessarie:

  • A - Installazione XCode
  • B - Installazione Qt
A - Installazione XCode
  1. XCode
    https://developer.apple.com/xcode/downloads/ 
  2. Download XCode 5 for free
    http://itunes.apple.com/us/app/xcode/id497799835?ls=1&mt=12
  3. Avvia applicazione -> App Store
  4. Click su Gratis
  5. Click su Installa App
  6. Inserire utente/id AppleStore
  7. Inizio trasferimento file...
    (l'attesa può essere molto lunga; nella barra delle applicazioni/launchpad si può vedere/mettere in pausa l'avanzamento del traferimento)
  8. Una volta installato lanciare XCode (i.e.: da launchpad)
  9. Accettare la licenza d'uso
  10. Se richiesto dal programma, chiudere le applicazioni elencate
  11. Attendere l'installazione dei componenti
  12. XCode è pronto all'uso (si può uscire)
N.B.: le fasi dalla 8. alla 12. sono necessarie la prima volta per configurare/registrare XCode e le sue componenti; se non si effettuano si avranno problemi nell'eseguire le applicazioni Qt (almeno, con Qt Creator, fase di build...).

B - Installazione Qt (e Qt Creator)

Installazione

  1. Download Qt
    https://qt-project.org/downloads
  2. Qt Online Installer for Mac (9 MB) (Info)
    http://download.qt-project.org/official_releases/online_installers/qt-opensource-mac-x64-1.6.0-online.dmg
  3. Esecuzione dmg
    • Continue
    • Installation Folder (i.e. /Users/utente/Qt)
      N.B.: se non si è installato/registrato XCode, viene mostrato un messaggio di warning circa la necessità di avere XCode
    • Continue
    • Scegliere la Version/Componenti di Qt da installare e i tools (i.e.: tutte le componenti di Qt 5.2.1 e tutti i Tools)
      N.B.: almeno una versione di Qt per clang e il tool QtCreator devono essere installati
    • Accettazione licenze e continue 
    • Install 
    • Attendere il download dei componenti... 
    • Continue 
    • (flag su Launch Qt Creator se si vuole lanciare subito Qt Creator)
      Done
Test

Nota: è consigliabile (ma non obbligatorio) creare una directory specifica per contenere tutti i progetti; per far questo, da Finder, posizionarsi su /Users/
utente (cmd + shift + c) e creare le seguenti cartelle: WORK/QtProjects. Da qui in poi ci si riferirà al folder dei vari progetti come qtprjs (nel caso in cui si scelga il consiglio qui riportato, qtprjs corrisponde a /Users/utente/WORK/QtProjects)
  1. Aprire Qt creator (se non è già aperto)
  2. New Project
  3. Chose a template
    • Scegliere Project: Application; Qt Quick Application
  4. Dare un nome al progetto (i.e name: PRJ001) e scegliere un'ubicazione del progetto (i.e: qtprjs)
  5. Qt Quick component set
    • scegliere Qt Quick Controls 1.1 (*)
    • continue
  6. Kit Selection
    • Scegliere Desktop Qt 5.2.1 clang 64 bit
    • Continue
  7. Project Management
    • Non selezionare alcun subproject e controllo di versione
    • Il riepilogo sarà simile al seguente:

      /Users/
      utente/WORK/QtProjects/PRJ001:
      PRJ001.pro
      deployment.pri
      main.cpp
      main.qml
      qml.qrc
    • Done
  8. Si apre l'editor del codice con il codice main.qml
  9. Run (freccia verde in basso a sx)
    • Fase di build...
      Qui potrebbero avvenire errori di compilazione: in questo esempio non ce ne sono, a meno che non sia installato/registrato correttamente XCode (vedasi A - Installazione XCode)
    • Appare una finestra con scritto "Hello World"
(*) in accordo con il passo 3. dell'installazione
  
Procedure di rimozione


Nel caso in cui si intenda disinstallare XCode e/o Qt dal proprio sistema, eseguire opportunamente una o più procedure di seguito riportate.

Rimozione di Qt (e QtCreator)

Nota: si presuppone di sapere dove è stato installato Qt: qt_home
Per esempio, qt_home potrebbe essere: /Users/
utente/Qt
  1. MaintenanceTool.app
    •    Da Finder (loggati con l'utente di installazione):
      • cmd + shift + c (folder utente)
      • posizionarsi in qt_home
      • click su MaintenanceTool.app
      • inserire la password dell'utente
    •    Oppure
         Da shell bash (loggati con l'utente di installazione)
      • $ sudo open qt_home/MaintenanceTool.app
      • inserire la password dell'utente
  2. Remove all components
  3. Uninstall
Rimozione di XCode su Mac
  1. Da shell bash
    • $ sudo /Developer/Library/uninstall-devtools --mode=all
LR.

domenica 29 aprile 2012

ePub DRM Removal

Scopo
Rimuovere la protezione DRM di Adobe da un file ePub.

Premessa
E' una pratica illegale, ma parto da questo presupposto: ho comprato un ebook in formato ePub e voglio leggerlo con il Kindle (che non supporta il formato ePub).

Circa l'uso del DRM da parte delle lobbies/major librarie e non: chissà come hanno fatto ad "ottenere legalità" per l'uso di queste controverse pratiche di protezione/restrizione del possesso dei beni? Argomento interessante. Dibattito apertissimo. Approfondirò questi aspetti, sia dal punto di vista dei detrattori sia da quello dei sostenitori. Ma non in questo Post.

Procedura
Si parte dal presupposto  di avere un sistema che non ha Adobe Digital Editions, Python 2.6 o 2.7 32 bit ed i programmi ineptkey.py e ineptepub.py installati. In casi contrari leggere lo stesso la procedura ed adeguarla a ciò che si ha già.

Altro presupposto è che il file ePub sia relativo alla propria licenza Adobe Digital Editions: in caso contrario verificare lo stesso tutti i passi della procedura, ma, al punto 7), caricare adeptkey.der relativo alla licenza del file ePub da manipolare. Se, per esempio, l'ePub da "sproteggere" è stato comprato da un amico, bisogna che questi sia disponibile a fare questa procedura sul proprio sistema (almeno fino al passo 6)).

Infine: la procedura è stata provata/testata su un sistema Windows XP 32bit e un sistema Windows 7 64bit. Non saprei come procedere nel mondo Linux, ma penso che i passi siano molto simili (se qualche amico "Linux" sa come farlo, ben vengano segnalazioni!).

Ancora un attimo: il tutto è riferito e garantito alla data di pubblicazione di questo post.

Passi

1) Installare ADE
Che cosa è?
E' l'applicazione di Adobe che permette di leggere ebook con protezione DRM di Adobe.

ADE = Adobe Digital Editions
Per ulteriori informazioni sul DRM di Adobe si rimanda alla pagina ufficiale: How DRM works.
A che cosa serve (per lo scopo di questo post)?
Da questa applicazione ricaveremo l'id necessario per togliere il DRM di Adobe dal file ePub.

Come installare?
  • Verificare che ADE non sia già installato (i.e: in Windows se esiste la cartella C:\Program Files (x86)\Adobe\Adobe Digital Editions ADE è già installato...).
  • Se non è già installato:
    1. Sul sito Adobe, andare alla pagina per il download di ADE (i.e: qui)
    2. La pagina presenta un tasto "Avvia": cliccando si scarica automaticamente il programma d'installazione
    3. Il programma di installazione (scaricatosi) si avvia automaticamente: seguire le istruzioni
  • Primo avvio di ADE
    1. Una volta installato, avviare il programma
    2. Alla richiesta di utente password immettere le proprie credenziali Adobe (se non si hanno, effetture prima la registrazione con il link apposito)
2) Installare Python
Che cosa è?
E' un linguaggio di programmazione. Il sito ufficiale è questo.

A che cosa serve (per lo scopo di questo post)?
I programmi che successivamente recupereremo e che serviranno per rimuovere il DRM di Adobe dall'ePub sono programmi Python.

Quale Python?
La versione che istalleremo sarà la 2.6 o la 2.7 (ma non la 3 o superiore!); e sarà per sistemi a 32 bit (anche se il sistema in uso è a 64 bit!).

Come installare?
  • Dal sito ufficiale sito ufficiale di Python cercare la pagina dei download
  • Selezionare il download dell'ultima versione 2.6 (o dell'ultima versione 2.7)
  • Una volta terminato il download, eseguire il setup seguendo i semplici passi (unica cosa da tenere in considerazione: il setup propone il folder Python26 - o Python27; anche se non obbligatorio, tenere questo come folder di installazione).
Una volta installato Python nel sistema si hanno automaticamente valorizzate opportune variabili d'ambiente che permettono di eseguire file di estensione "py" o "pyw" con Python (cioè i file "py" e "pyw" sono automaticamente associati a Python).

3) Installare Pycrypto
Che cosa è?
E' un "modulo" per Python necessario per calcoli e algoritmi per cifrare/decifrare.

A che cosa serve (per lo scopo di questo post)?
I programmi che successivamente recupereremo, che servono per togliere DRM di Adobe dall'ePub, utilizzano il "modulo" Pycrypto.

Come installare?
  • Scaricare la versione 2.5 da qui
  • Decomprimere in un folder temporaneo
  • Dal folder temporaneo eseguire setup.py
  • Eliminare i file dal folder temporaneo (non è obbligatorio, ma per pulizia...).
A questo punto si ha nel sistema sia Python 2.6 (o 2.7) a 32 bit, sia il modulo Pycrypto.

4) Preparare la directory Inept
Prima di procurarsi i programmi Python necessario creare un folder apposito dove "alloggiarli".

Nel mio caso (Windows) ho fatto così:

c:\
--- Programmi (x86)
   --- Inept  <-- ho creato questo folder

Poi, è meglio preparare degli script di lancio dei programmi (che fra poco ci procureremo).
Qui riporto i due script batch (Windows); per gli amici "Linux" sarà semplice tradurli in "sh".

ineptkey.cmd

@ECHO OFF
REM PATH DI INSTALLAZIONE PYTHON
SET PYPATH=C:\Python26
REM RICHIAMO SCRIPT INEPTKEY per recupero chiave ADE
CALL %PYPATH%\python.exe ineptkey.py
PAUSE
 
ineptepub.cmd

@ECHO OFF
REM PATH DI INSTALLAZIONE PYTHON
SET PYPATH=C:\Python26
REM RICHIAMO SCRIPT INEPTEPUB per un-DRM ePub
CALL %PYPATH%\pythonw.exe ineptepub.py
PAUSE

Nota: set PYPATH=C:\Python26 <-- mettere il path di installazione di Python

5) Scaricare in programmi Inept 
Che cosa sono?
Sono due programmi scritti in Python (compatibili con le versioni 2.6/2.7 a 32 bit) che permettono di recuperare la chiave (id) Adobe in seguito all'installazione di ADE (per questo motivo è necessario avere installato ADE nel sistema) e per rimuovere il DRM di Adobe da un ePub che ne è provvisto.

  • ineptkey.py
    (per recuperare la chiave ADE)
  • ineptepub.py
    (per rimuovere DRM di Adobe dal file ePub che ne è provvisto)
Come recuperarli?
Il modo più semplice è "Google".
Io li ho trovati qui: ineptkey.py, ineptepub.py.

Nota:
  • Se si trovano i sorgenti
    1. Creare nel folder Inept file con lo stesso nome del programma
    2. Copiare, dentro il nuovo file, il sorgente
    3. Salvare
  • Se si trova il download
    1. Scaricare il file ineptkey.py e ineptepub.py nel folder Inept.
6) Ricavare adeptkey.der
Che cosa è?
adeptkey.der è il file che genera il programma  ineptkey.py: è la "chiave" (id di Adobe) recuperata.

Come ricavarlo?
  • Lanciare lo script ineptkey.cmd
    (oppure direttamente ineptkey.py...)
Se tutto è andato bene, nel folder Inept si avrà il file adeptkey.der.
Non sarà più necessario generare adeptkey.der (a meno di nuova installazione di ADE...), tuttavia lasciare lo stesso il programma ineptkey.py (se lo si rilancia verrà rigenerato un file adeptkey.der presumibilmente identico al precedente).

7) Rimuovere DRM di Adobe dall'ePub
  • Lanciare lo script ineptepub.cmd
    (oppure direttamente ineptepub.py...)
  • Apparirà una finestra di dialogo
    1. Inserire il .der (i.e.: adeptkey.der)
    2. Inserire il file ePub dal quale rimuovere DRM di Adobe
    3. Inserire il nome del file di output che verrà generato (e che sarà l'ePub privo di DRM di Adobe)
    4. Decrypt...
A questo punto si avrà un nuovo file ePub libero da protezione DRM di Adobe.

Se si hanno altri file ePub con protezione DRM di Adobe legati al proprio id, per la rimozione di tale protezione basterà ripetere il passo 6).

Riferimenti
Ho già abbondantemente citato molti link di riferimento, ma non quelli dai quali ho tratto le informazioni per scrivere la procedura. Su Internet ci sono svariati siti/articoli/forum a riguardo. In questo post ho fatto tesoro delle informazioni contenute in alcuni di questi. Ne segnalo qui giusto solo un paio:

LR.


Ti potrebbe interessare anche:
- Kindle, Ebook, libri di carta... appunti frettolosi
- Kindle 4? A colori? Touch? Qualche link...

lunedì 31 ottobre 2011

Il mio Google Translator è...

... morto. Peccato: morto appena nato.

La vita
Qualche mese fa decisi di realizzare una semplicissima applicazione Java il cui scopo è quello di mostrare una GUI che riproduca la "doppia casella" (originale - tradotto) con selezione di lingue (originale e di traduzione) presente sulla pagina Web del Traduttore di Google. Insomma, un Traduttore di Google versione desktop.

Presto fatto: l'unica cosa che mi mancava era come contattare il traduttore e come elaborare la risposta; Google API? Nooooooooooo!!!

Cominciai quindi a fare una semplice pratica LECITA (e ripeto LECITA!!!): guardare il link nella barra degli indirizzi. Tipo "ciao" da italiano a inglese:

http://translate.google.it/?hl=it&tab=wT#it|en|ciao

Ecco il gancio! Inserii, quindi, la costruzione del link nel codice del mio programma, lanciai ed ecco un risultato: una stringa in sintassi JSon.

Ancora un poco e ci dovevo arrivare: scaricata una libreria leggera per gestire JSon in Java, mi fiondai a vedere la sintassi JSon della risposta:

http://code.google.com/intl/it/apis/language/translate/v1/using_rest_translate.html#resultObjects

Conseguenza: con un minimo di logica, il mio programma poteva mostrare anche la risposta della traduzione.

E' stato bello fare il queso programma, direi anche relativamente facile, ma soprattutto godurioso poché ho "bypassato" quelle pallosissime google API, usando pura programmazione Java senza terze parti (o quasi - se avessi avuto voglia di perdere un po' di tempo per scrivermi un mini-parser JSon non ci sarebbe stato bisogno di altro se non Java standard!).

Sì, vabbè, è stata anche una ludica sega mentale. Ma tant'è.

Ma alla fine, a che cosa mi è servito?

Beh, tenendo la finestra ridemensionata a piacere, con il flag "rimani sempre in primo piano" e gli shortcut del popup per i vari copia e incolla, la mia super (:D) applicazione mi è tornata utile in tutti quei casi in cui ho dovuto leggere documentazione in inlgese, per esempio, tramite adobe reader, che non ha la funzionalità di traduzione incorporata.

Sì, vabbè, anche questa è una sega mentale. Ma tant'è.

La morte
Proprio quando il mio programma stava diventando famoso (lo conoscevamo io e il gatto di mia mamma :)) Google annuncia la sua vendetta verso noi truffatori (io truffatore? non ho fatto altro che usare quello che Google mi ha lasciato usare!!!):
chiude le API v1.

Important: With the exception of the Translate v2 API, which is now available as a paid service, the APIs included in this family have all been deprecated. See the documentation for each API for details.

Io non le uso, uso le mia API!!! Eppure le mie API fanno il lavoro delle API V1 e quando tento di tradurre con il mio "sporco e illecito" programma, ogni tanto mi appare un bel

ERROR - Details:
{"responseData":null,"responseDetails":"Suspected Terms of Service Abuse. Please see http:\/\/code.google.com\/apis\/errors","responseStatus":"403"}

e cioè sto abusando, bla bla bla, e mi deprecano le API v1 bla bla bla e le chiudono dal 1° dicembre anno corrente bla bla bla.

Insomma, il mio programma sta morendo! sigh!

Rinascita
Vabbè, mi studierò i libri di John Peter Sloan così, almeno per l'inglese, portrò fare a meno del traduttore di Google!!! :)

Bye bye traduttore delle lobby di Mountain View!!! (almeno per ora ;)).

LR.

lunedì 5 settembre 2011

Kindle 4? A colori? Touch? Qualche link...

Qualche parola e qualche link per capire un po' meglio... forse!

Da una (mia) sessione di skype...


[14:08:34] jsuniml: Kindle 4
<<<[12:22] D.Z.: http://gizmodo.com/5837061/this-is-amazons-kindle-tablethttp://www.amazon.com/forum/kindle?_encoding=UTF8&cdForum=Fx1D7SY3BVSESG&cdPage=1&cdThread=TxI9MLE97X0ZJJ

http://www.kindleitalia.com/kindle-4-ipotesi-e-rumors-1780/

...
Colore: il Kindle 4 sarà a colori, pochi dubbi. Dopo aver raggiunto un livello di eccellenza con gli schermi in bianco e nero del Kindle 3, il passo successivo non può che essere questo. Già con il Kindle 3 si ipotizzava del suo utilizzo del colore; la cosa non è stata possibile per l’arretratezza della tecnologia. Adesso la tecnologia E Ink a colori esiste: il Triton. Tuttavia è anche possibile che Amazon si diriga verso altre tecnologie di schermi a colori, come quella Mirasol.
...
Touch screen: Amazon non ha inserito questa tecnologia nel Kindle 3 perché il posizionamento di una pellicola touch aumentava i riflessi dello schermo. Il problema è stato risolto dalla Sony, utilizzando una tecnologia a raggi infrarossi invece della normale pellicola. Ricordo, inoltre, che nel gennaio 2010 Amazon ha acquistato la Touchco, una società specializzata nella creazione di schermi touch. Pertanto, possiamo dare per scontato che il Kindle 4 sarà touch screen: la navigazione su Internet ne gioverà enormemente.
...

[14:11:37] D.M.: (y)


E ancora:

anche se c'ha l'illuminazione di un pc?

[14:37:43] jsuniml:
<<< "Colore: il Kindle 4 sarà a colori, pochi dubbi. Dopo aver raggiunto un livello di eccellenza con gli schermi in bianco e nero del Kindle 3, il passo successivo non può che essere questo. Già con il Kindle 3 si ipotizzava del suo utilizzo del colore; la cosa non è stata possibile per l’arretratezza della tecnologia. Adesso la tecnologia E Ink a colori esiste: il Triton. Tuttavia è anche possibile che Amazon si diriga verso altre tecnologie di schermi a colori, come quella Mirasol."

Se Mirasol o E Ink a colori non mi interessa: l'importante che siano con buon contrasto, risoluzione e, soprattutto, "effetto" carta come E Ink "monocromatico"

[14:38:13] D.Z. 1 (ok)

[14:38:21] A.C.: Io preferirei l'iPad 2

[14:38:30] D.Z.: quindi non è retroilluminato, mi sembrava di aver capito che lo era.

[14:40:05] jsuniml: "Io preferirei l'iPad 2" Bah: se è multitasking e se è come dice davvero, il Kindle 4 batterebbe su tutti i fronti qualsiasi iPad o simili, almeno per quanto riguarderebbe un tablet orientanto veramente alla lettura.

Dimensioni...

[14:49:20] D.Z.: dimensioni?

[14:52:02] D.Z.: 7 pollici. molto ma molto più piccolo di un ipad. o sbaglio? quindi molto molto più fruibile.
l'ipad è davvero ingombrantissimo.

[14:53:52] jsuniml: "libricamente" parlando, dal punto di vista delle dimensioni, l'iPad ha una dimensione ibrida che non è né grande (Kindle DX) né comoda (Kindle 3): va bene per giocare a "picchia il gatto"

[14:55:17] D.Z.: io ho sta impressione che l'ipad non serva a un tubo di niente. e non lo dico da anti-apple: a me l'iphone piace. ma l'ipad... a che cavolo serve??

Vabbè, chiudo qui: stiamo entrando in un altro campo, quello delle "scuole" di pensiero...

Invece, giusto per speculare un po'...

http://kindle-reader.orbs.com/Color+Kindle+4+Touch!

http://www.handheld-ebook-reader.com/kindle-4.html

Quindi?
Ovviamente per mi limito solo al ruolo di spettatore interessato alla "vicenda". Tuttavia mi sbilancio con una speranza: se sarà e sarà veramente come lo stanno anticipando/pubblicizzando e, soprattutto, se non costerà uno sproposito, Kindle 4 mi alletta molto molto molto... anche se la mia povera "querty" hard-touch mi mancherebbe parecchio!

mmm... monitorerò...
mmm... approfondirò...

LR.


Ti potrebbe interessare anche:
- Kindle, Ebook, libri di carta... appunti frettolosi
ePub DRM Removal

lunedì 23 maggio 2011

Eclipse: Helios e Proxy

In riferimento al post "Eclipse: Galileo e Proxy"...

Non so perchè, ma ho dovuto fare la stessa cosa anche per Eclispe - Helios...


-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient
-Dhttp.proxyPort=8080
-Dhttp.proxyHost=myproxy
-Dhttp.proxyUser=mydomain\myusername
-Dhttp.proxyPassword=mypassword
-Dhttp.nonProxyHosts=localhost|127.0.0.1

Naturalmente i parametri vanno personalizzati a seconda delle proprie impostazioni. Nel mio caso, per esempio, ponendo di avere un proxy chiamato proxy2 con autenticazione uid=pippo e pwd=pluto, aggiungerò in fondo al file le righe seguenti:

-- !!!! Helios Proxy Workaround !!!!
-- http://wiki.eclipse.org/ECF_Filetransfer_Support_for_NTLMv2_Proxies
-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient
-Dhttp.proxyPort=8080
-Dhttp.proxyHost=proxy2
-Dhttp.proxyUser=pippo
-Dhttp.proxyPassword=pluto
-Dhttp.nonProxyHosts=localhost|127.0.0.1


LR.

lunedì 16 maggio 2011

Eclipse: Galileo e Proxy

Intro
Lungi da essere un post che riporti a storie ed aneddoti antichi, qui appunto per me (e per il disperato lettore informatico) una soluzione di natura prettamente tecnica, riguardante lo sviluppo software.

A chi è rivolto questo post?
Rivolto a programmatori (quella razza di cani che una volta faceva soldi a palate e che oggi è trattata alla stregua di un girabulloni), ed in paricolare a programmatori Java che usano l'ambiente di sviluppo (IDE) Eclipse, versione Galileo, il tip che riporto risparmia numerose imprecazioni ed è frutto di una semplice ricerca su Internet.

Di cosa si tratta?
Se con Eclipse - Galileo si ha bisogno di utilizzare un collegamento Web via proxy può capitare che, nonostante si abbiano impostate correttamente le opzioni di Network, l'ambiente non sia in grado di effettuare una connessione corretta.

Io mi sono accorto di questa anomalia mentre cercavo di installare nuovi aggiornamenti (Avviable Updates...).

Di chi è la colpa?
Il baco non è "nostro", ma di Eclipse - Galileo:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=281472#c7

Questo link ci porta ad un ulteriore pagina, dove è spiegato come risolvere la questione:

http://wiki.eclipse.org/ECF_Filetransfer_Support_for_NTLMv2_Proxies
(ECF Filetransfer Support for NTLMv2 Proxies).

Ripariamo Galileo
Nella pratica si deve agire come segue:

1) chiudere Eclipse;
2) aprire il file di configurazione eclipse.ini (sotto la directory di installazione di Eclipse - Galileo);
3) inserire righe simili alle seguenti:

-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient
-Dhttp.proxyPort=8080
-Dhttp.proxyHost=myproxy
-Dhttp.proxyUser=mydomain\myusername
-Dhttp.proxyPassword=mypassword
-Dhttp.nonProxyHosts=localhost|127.0.0.1

Naturalmente i parametri vanno personalizzati a seconda delle proprie impostazioni. Nel mio caso, per esempio, ponendo di avere un proxy chiamato proxy2 con autenticazione uid=pippo e pwd=pluto, aggiungerò in fondo al file le righe seguenti:

-- !!!! Galileo Proxy Workaround !!!!
-- http://wiki.eclipse.org/ECF_Filetransfer_Support_for_NTLMv2_Proxies
-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient
-Dhttp.proxyPort=8080
-Dhttp.proxyHost=proxy2
-Dhttp.proxyUser=pippo
-Dhttp.proxyPassword=pluto
-Dhttp.nonProxyHosts=localhost|127.0.0.1

4) riavviare Eclipse - Galileo

A questo punto il collegamento Web via proxy dovrebbe funzionare correttamente.
(Nel mio caso funziona!).

Conclusione
Probabilmente mentre scrivo il baco è già risolto in altre maniere. Per ora a me sta bene questa. Su Internet (Google) ci sono altri post simili a questo, ma sostanzialmente tutti diciamo la stessa cosa.
Infine, con proxy funzionante, è consigliato vivamente la riceca di nuovi aggiornamenti.
Buona fortuna.

LR.

Post simili: "Eclipse: Helios e Proxy"

sabato 27 marzo 2010

FindMeByIP : Chi sono? Da dove vengo? Dove vado?

Illuminazione
Lungi da me sia lo scomodare il Santo Benedetto ed iniziare una profonda discussione filosofico-teologica. Con questo post voglio solamente annotarmi una cosa molto più becera e terrena, una cosa "tecnica" e che vale il tempo che trova.

FindMeByIP enables you to easily find out information about your clients' web browser and operating environment.

Questo è quello che promette questo tool on-line e completamente gratuito: FindMeByIP permette di trovare facilmente le informazioni sul browser e sull'ambiente in uso.

Che cosa è?
E' un tool rivolto principalmente agli sviluppatori in ambito Web o a tutti quegli operatori che, in qualche modo, devono sapere o poter fornire informazioni tecniche a riguardo delle caratteristiche supportate dal proprio browser.

Per esempio: qual'è il mio indirizzo IP? In base al browser con cui "ora" sono connesso, posso sapere che cosa supporta (livello CSS, livello HTML, etc.).

Me lo spieghi?
"Bando alle ciance" (basta parlare inutilmente). Se volete leggere articoli a riguardo, cercate su Google! è pieno di pappagalli che ripetono le stesse cose. Qui, ora, vi invito semplicemente a "vedere" direttamente che cosa mi sto appuntando sul mio diario.

Il miglior modo per capire l'utilità di FindMeByIP è provarlo di persona:


Ecco fatto: basta sapere un minimo di inglese (altrimenti usare Google translator) e FindMeByIP si spiega e recensisce da solo.

Altro?
Interessante notare il report della vista Web Design Check List, dove viene riportata la compatibilità CSS3 e HTML 5 tra i vari browser.

Il cliente ha sempre ragione?
Altra funzione utile è la registrazione (gratuita e con i soliti nome, mail, password, etc. da fornire con immediata mail di conferma) per il servizio di reportistica tramite un proprio link.

Che cosa vuol dire?

In pratica è possibile ottenere un link del tipo:

http://www.findmebyip.com/mio-nome

(dove mio-nome è una qualsiasi stringa, senza spazi, etc., a piacere e non ancora registrata)

da distribuire a chiunque dal quale si voglia sapere informazioni FindMeByIP.

E cioè?

In pratica se io e l'amico Pippo ci stiamo collegando ad uno stesso sito, io col mio pc e lui col suo, e lui non vede le stesse cose che sto vedendo io potrebbe darsi che il mio browser supporti qualche funzionalità che il suo non ha; quindi gli mando il link http://www.findmebyip.com/mio-nome; Pippo si collega e vede le sue informazioni FindMeByIp;  io so che Pippo non ci capisce molto di queste cose, ma non mi preoccupo: io comprendo tutto! Quindi mi collego a http://www.findmebyip.com, mi loggo col mio account e guardo i risultati recenti; aaargh! Pippo c'ha ancora IE 5.0!!! Invio una mail a Pippo e gli dico subito di aggiornarsi!!!

Se uno ci pensa è un servizio utile se si ha a che fare con quei clienti che sostengono sempre di aver ragione e di avere il proprio sistema sempre in ordine come da specifica della vostra applicazione, ma, tuttavia, la vostra applicazione Web a loro non funziona: mandategli il vostro http://www.findmebyip.com/mio-nome, e si troverà presto un colpevole. Comunque sia è utile, in generale.

Trucchetto
Si può passare al cliente (a Pippo!) il link http://www.findmebyip.com/mio-nome/Pippo...
Comodo per avere una dettagliata statistica per ogni cliente e relativa sessione di browser aperta.

Concludi!
Ok basta, basta sul serio!
Provatelo, anzi: proviamolo.
E adesso... si naviga!

LR.

mercoledì 6 gennaio 2010

Appunto sui pericoli dei social network

Questo post è un piccolo appunto: tre riferimenti che ho trovato nella Rete e che (tra verità ed allarmismo) mettono a fuoco delle problematiche da tenere in considerazione quando si frequenta (attivamente o "passivamente") reti sociali in Internet (blog, forum, Facebook, Twitter, aNobii, etc.).

Naturalmente in Internet ce ne sono altri di riferimenti, ma, per ora, scelgo solo questi, giusto per non confondermi le idee e non intasarmi di notizie ridondati.

8 maggio 2009
programmazione.it
Smascherare gli utenti dei social network

15 gennaio 2009
la Repubblica
Scopre la sua vita sul giornale che ne ha raccolto le tracce sul web

24 Settembre 2009
ComputerWorld
Social network, identità in pericolo

In ultimo due mie deliranti (s)considerazioni dentro e fuori luogo e... non si cerchi di capirle!

Divagazione #1
In vero penso che anche Internet, come tutta la realtà sociale in cui oggi si è, soffra della sindrome del Grande Fratello; e questo lo accetto nella misura in cui, vivendo in questo mondo, faccio anch'io parte del gioco: non ho altra scelta che farmi guidare da occhi indiscreti (ne sono proprio così sicuro?). Tuttavia quando questi esagerano e me ne accorgo e scopro in maniera "vivida" di essere "manipolato" più  di quello che mi possa aspettare o più di quello che avevo messo in conto, allora incomincio a pensare... e pensare fa bene... lo dovrei fare fin da subito? credo di sì...

Divagazione #2
... e fa bene pensare!

Vabbè, ho sforato, sarà la stanchezza, data anche l'ora...

LR.

martedì 17 novembre 2009

Il brevetto del mouse e la madre di tutte le demo

Solo ora, dopo ben 17 ore e 45 minuti dall'inizio di questa giornata, mi accorgo che sto usando, come ogni giorno, una periferica ormai fondamentale nei computer moderni: il mouse. Talmente fondamentale che sembra così ovvia da non farci più caso.

Eppure poco fa mi sono chiesto (probabilmente molto "paranoicamente"), quanti click ho fatto oggi? Chi lo sa, chi può dirlo. E chissà poi quanti click sono avvenuti dal momento della nascita di questo dispositivo? La paranoia continua, si va oltre l'impossibile.

Il mouse, il topo con la pallina, ora con il raggio ottico, è un dispositivo di puntamento che fa muovere il cursore sullo schermo la cui idea risale agli anni sessanta come frutto delle ricerche dell'inventore americano Douglas Engelbart e dell'ingeniere Bill English.


Douglas Engelbart da Wikipedia

Engelbart gode di molta fama per aver partecipato, tra l'altro, allo sviluppo degli ipertesti e delle reti di computer e precorrendo i tempi con le sue idee che oggi si trovano nelle attuali GUI dei programmi applicativi su computer con sistemi operativi basati su interfaccia utente a finestra.

Il 17 novembre del 1970, oggi 39 anni fa, brevettò il mouse.


First mouse da Wikipedia

Ma erano due anni prima, il 9 dicembre 1968 per la precisione, quando, in poco più di un'ora, Engelbart rivoluzionò l'informatica dettando il futuro degli oltre vent'anni successivi presentando con una una demo (successivamente ribattezzata "la madre di tutte le demo") mouse, ippertesto e tanto altro.

Proverò a guardarla, così come era...cliccando sul video sottostante!



LR.

venerdì 13 novembre 2009

Google Docs come editor per post (su Blogger)

Heder: test


Abstract
Questo Post è un test per verificare se e come sia possibile sfruttare  Google Docs per scrivere un post su Blogger.

Test
Il post è stato generato con il Word Processer di Google Docs , buttando a caso nel documento testi, immagini, tabelle, disegni, note, header e footer. Poi ho pubblicato questi come pagina Web, scegliendo l'opzione di inviarlo come post al mio Blog... ed ecco il risultato: questo Post stesso.

Nota: come accedere a Google Docs
La via più semplice per usufruire di Google Docs è quella di iscriversi ad iGoogle (è una "normale" iscrizione come quelle che avvengono per YouTubeo altre communities Web); a questo punto, accedendo con il proprio account, si può usufruire di una propria Home Page personale e personalizzabile (una volta avvenuto l'accesso, se non si è già su di essa si deve cliccare sul link "iGoogle" visibile in alto a dx...); nella Home Page personale è possibile inserire una serie di gadget già pronti: con la voce in alto a sinistra del banner della Home Page si deve aggiungere l'elemento "Google Docs" di Google (per far prima inserire "Google Docs" nella casella di ricerca dei gadget...).

Conclusioni
Come si può vedere dai risultati di questa pagina non è molto conveniente usare Google Docs in alternativa al proprio editor di post incluso in Blogger. Vi sono molti problemi di visulizzazione delle immagini (la formula - che probabilmente non si visualizza - e il disegno - che dovrebbe essere un triangolo - per esempio) e su altre cose (probabilmente la nota non funziona correttamente e la tabella non è formattata correttamente).
Le altre formattazioni di testo sembrano funzionare correttamente.
Nota: Google Docs Word Processor attualmente supporta i formati pagina principali (A4, Letter, etc.), ma non "personalizzabili" (importante considerazione per un blog a "colonna stretta", per esempio, come il mio...)

Da alcuni test ho evinto che:
  • Se il documento esiste sul proprio Google Docs.
    - "Io", in quanto proprietario - loggato a iGoogle, ovviamente - vedo tutto correttamente.
    - "Il pubblico" vede correttamente solo se il documento è stato condiviso pubblicamente.
  • Se il documento non esiste più (l'ho cancellato, per esempio)
    - Sia "Io" che "Il pubblico" abbiamo i problemi di cui sopra.
Ovviamente sarei contentissimo di ricevere ulteriori spigazioni/esperienze etc. del gernere che confermino, smentiscano, aggiungano altro, etc. a quanto sperimentato...;)

Altre parti "salienti" del post/documento...

Titolo (H1)


Formula:
\Gamma * 7 - \sqrt{x} \Leftrightarrow \Phi

Immagine:


Disegno:


Tabella:
TD 0.0
TD 0.1
TD 1.0
TD 1.1

Testo evidenziato e non
In evidenza bla bla bla!
bla bla bla
ble ble ble
bli bli bli
blo blo blo
blu blu blu
Sotto-titolo: yyyyy
Sopra-titolo: yyyyy
Commento (con nota):capsium -L R 11/13/09 11:43 AM1
Note:
1 Questa è una nota

domenica 8 novembre 2009

The Big Bing - Da Wired.it

Sul numero di Wired di novembre 2009, ho trovato interessante l'articolo "Il Big Bing!", su  Lorenzo Thione, il "creatore" di Bing, il motore di ricerca per casa Microsoft che dovrebbe "battere" Google.


da Wired

L'annuncio "bomba" su  Bing, palesato nell'articolo (che è anche l'argomento di punta del numero della rivista, visto che Thione campeggia sulla copertina insieme alla scritta "FARE BING!") con il solito stile Wired, mi ha decisamente attratto. Ma ancora più avvincenti, a mio avviso, sono state le reazioni dei lettori in merito (disponibili sempre qui). Wired , sul suo blog, ovviamente risponde al fedele e critico pubblico con ulteriori delucidazioni (qui).

Il dibattito tra pubblico e articolista è sulla potenza dei due motori di ricerca nel "capire" al meglio le frasi "umane" immesse nella casella di ricerca, per dare risultati il più attendibili a ciò che si vuole trovare.
Prendendo degli esempi dai commenti stessi: come reagiscono i due motori di fronte ad una richiesta come "in una calda giornata di inverno chi ha ucciso kennedy?" (per l'italiano) o come "In a beautiful hot day who killed Kennedy?"? L'articolista nel blog si affretta subito a ribadire che attualmente Bing nella versione americana è l'unica che supporta la tecnologia Powerset sviluppata da Lorenzo Thione e compagni. Insomma, un buon intrattenimento informativo.

Google o Bing? E' ancora presto per decidere; fatto sta che per ora il primo sia un colosso inattaccabile... anche se Microsoft ...


LR.

The Big Bing


Posted using ShareThis

sabato 7 novembre 2009

Blogging: consigli interessanti dalla Rete

In questo pomeriggio piovoso decido di dedicare un po' di tempo alla mia neo-attività di "blogger". Quindi sfrutto google, chiavi di ricerca del tipo "come fare", etc. per poi imbattermi in questo articolo, su TechNotizieNews:

Strategie per principianti – Come attirare più visitatori nel vostro blog!
By Valerio Villari

E' del 5 novembre del 2008 (quasi un anno fa) e contiene consigli utili, direttamente dall'esperienza dell'autore, su come affrontare l'attività di blogger, sia professionalmente sia amatorialmente. Dalla mia esperienza di "navigatore", credo che i contenuti dell'articolo siano ancora abbastanza attuali. E' scritto bene: è chiaro.

I consigli sono elargiti in maniera trasparente e toccano argomenti quali: Il fattore tempo, Il contenuto come principio, L’importanza dei links verso altri blog, Commentare in altri blog è determinante, Risposte alle domande, Importante mantenere il blog attualizzato, Promuovere gli RSS Feeds, Indicizzare il Blog, Ottimizzazione SEO, Comunicare in modo differente, Promozione Off-the-Line e Il virus della propagazione.

E non è tutto. Scopro che dal medesimo sito è possibile scaricare  questo eBook di 67 pagine (licenza  cc - creative commons):









Blogging per principianti
By Valerio Villari



Pur non essendo un "principiante" (lavoro da parecchi anni nel campo dello sviluppo, sia c/s sia Web) decido di scaricarlo e leggerlo come se fosse la prima volta che sento l'argomento: bisogna (cercare di)  fare così per (tentare di) essere obiettivi. Lo trovo scorrevole: mi piace l'approccio semplice ed a domande e risposte. Non ti insegna come fare un Blog, ma raccoglie in maniera organica una serie di "consigli" per inquadrare l'approccio al proprio diario Web e le relative strategie di audience e monetizzazione. Gli argomenti sono quelli dell'articolo sopra citato (che ne è una sorta di sunto) più altri (interessante l'orientamento alle piattaforme di blogging... tra le quali WordPress e Blogger).

Insomma un'oretta di lettura spesa bene. Funzioneranno questi tips anche per il mio Blog? Non lo so, col tempo vedrò... per il momento mi sembra già abbastanza bello attingere dall'esperienza condivisa di una persona che blogga da tempo... per di più in maniera "legalmente gratuita"!

LR.

mercoledì 4 novembre 2009

Crystal Report 2008: aggiunta a runtime di campi per l'ordinamento.

Abstract
Questo mostra come sopperire ad una mancanza delle API di Crystal Reports 2008, ovvero come fare quando si vuole "comodamente" aggiungere dinamicamente dei campi di ordinamento in un report rpt.

Requisiti
Si assume che si abbiano minime basi di Crystal Reports e .NET.
Il codice riportato negli esempi è in VB.NET.
Il codice dei link di riferimento è in C#.

Esigenza
L'esigenza mi è nata quando ho dovuto fare una migrazione da un programma VB6, scritto per l'engine di Crystal Reports 8.5, ad una versione in VB.NET, per Crystal Reports 2008.

Problema
Sono profondamente cambiate molte cose nell'object model di Crystal Reports 2008 rispetto a quello di versione 8.5, ma non ne parlerò in questa sede: è un discorso troppo vasto; inoltre siti più mirati di questo possono essere più utili (tra gli italiani consiglio un giro su .net hell.it ). Qui mi basterà soltanto accennare al fatto che il modello di Crystal Reports 2008 oltre ad avere un comportamento diverso dal precedente 8.5 (i wrapper in .Net sui "vecchi" oggetti COM "ragionano" in modo differente dall'approcio 8.5) ha anche strane limitazioni: può darsi che sia la nuova filosofia del modello .NET nella reportistica; resta il fatto, comunque, che queste stranezze provochino impedimenti non banali nelle fasi di porting da un progetto per report Crystal pre-.NET ad uno per report Crystal e .NET.

Uno frai tanti casi può essere la non più supportata possibilità di aggiungere campi di ordinamento via programma (a runtime).

Con un minimo di ricerche e scopro che:
  • Prima del supporto .NET il report manipolato dal programma poteva avere o meno i campi d'ordinamento. Con una banale istruzione delle API di Crystal Reports 8.5 ActiveX runtime si scrive (VB6):

    report.RecordSortFields.Add(nome_campo, flag)

    cioè: tramite l'istanza report (l'oggetto "wrapper" del mio rpt) recupero l'insieme dei campi di ordinamento (quelli per l'order by, per intendersi) e aggiungo ad essi la colonna che voglio (naturalmente deve esistere nelle tabelle dell'rpt, pena errore runtime), indicando il tipo di ordinamento (ASC o DESC). Per esempio:

    report.RecordSortFields.Add("clienti.ragione_sociale", crAscendingOrder)

  • Con la libreria per .NET e Crytal Reports 2008 (CrystalDecision.CrystalReports...) non posso fare la stessa cosa.

    Dal Namespace CrystalDecisions.CrystalReports.Engine si ha la classe ReportDocumet, l'oggetto "wrapper" per l'rpt. L'object model prevede che ReportDocumet abbia in sè la definizione dati del report accessibile tramite l'oggetto DataDefinition. Un passo ancora ed è fatta: dalla definizione dei dati è possibile recuperare i campi di ordinamento tramite la collezione di SortField, SortFields appunto. Esempio di accesso alla collezione SortFields:

    reportdoc.DataDefinition.SortFields

    I SortField sono i campi di ordinamento che il progettista rpt ha introdotto nel report via designer: se il questi non ne ha messi, la collezione SortFields che ci ritroveremo a runtime sarà vuota. Quindi, un ciclo di for come il seguente, per esempio, non eseguirebbe nemmeno una istruzione all'interno del suo blocco:

    For Each sf As SortField In reportdoc.DataDefinition.SortFields
        ' istruzioni
    Next

    Questo perché la collezione SortFields è in sola lettura.
    Perché? Non lo so, mi mancano elementi per rispondere a questo quesito.
    Su Internet ho trovato questa nota che forse può aiutare se non altro ad accettare tale realtà.

    Come ovviare senza perdersi nei meandri di fix, articoli e varie? Con la Reflection.
Soluzione
La via più "breve" è quella di fare ciò che il vecchio metodo Add faceva: se il designer 2008 lo fa (di aggiungere i campi di order by) lo posso fare anch'io; ma serve la Reflection (quel meccanismo che permette di recuperare metodi, attributi etc. da un'istanza, a prescindere dalla visibilità, etc.).

Questo articolo (dal sito DECOMPILER-VB .net) mi è stato di fondamentale aiuto. E' scritto da uno che sa "smanettare" ben bene.  Nella spiegazione (in inglese) viene descritto e riportato a passo a passo il codice C#. Manca un passaggio (solo descritto, ma senza relativo codice): l'aggiunta del nostro campo; ma in sostanza è completo.

Quindi ho riscritto del codice VB.NET per crearmi il metodo che mi serviva.
Nel mio progetto ho implementato in un modulo la seguente funzione:

Public Function AddSortFiled(ByRef reportdoc As ReportDocument, ByRef fd As FieldDefinition) As Boolean
    Dim result As Boolean
    Dim sfs As SortFields
    Dim rassort As Object
    Dim rassorts As Object
    Dim rasfield As Object
    Dim getrassorts As MethodInfo
    Dim addsort As MethodInfo
    Dim setsortfield As MethodInfo
    Dim getrasfield As MethodInfo
    Dim cirassort As ConstructorInfo
    Dim rasassembly As Assembly
    result = False
    If Not reportdoc Is Nothing OrElse Not fd Is Nothing Then
        sfs = reportdoc.DataDefinition.SortFields
        getrassorts = sfs.GetType().GetMethod("get_RasSorts", BindingFlags.NonPublic Or BindingFlags.Instance)
        rassorts = getrassorts.Invoke(sfs, System.Type.EmptyTypes)
        addsort = rassorts.GetType().GetMethod("Add")
        rasassembly = getrassorts.ReturnType.Assembly
        cirassort = rasassembly.GetType("CrystalDecisions.ReportAppServer.DataDefModel.SortClass").GetConstructor(BindingFlags.Public Or BindingFlags.Instance, Nothing, System.Type.EmptyTypes, Nothing)
        rassort = cirassort.Invoke(System.Type.EmptyTypes)
        setsortfield = rassort.GetType().GetMethod("set_SortField", BindingFlags.Public Or BindingFlags.Instance)
        getrasfield = fd.GetType().GetMethod("get_RasField", BindingFlags.NonPublic Or BindingFlags.Instance)
        rasfield = getrasfield.Invoke(fd, System.Type.EmptyTypes)              
        setsortfield.Invoke(rassort, New Object() {rasfield})
        addsort.Invoke(rassorts, New Object() {rassort})
        result = True
    End If
    Return result
End Function

In pratica nei parametri passo il campo del report (presente nel report!) che voglio indicare come campo di ordinamento e lo aggiungo alla lista dei campi di ordinamento (SortFields) "wrappandolo" in un un'istanza di SortField (sarà questa ad essere effettivamente aggiunta alla collezione).

Conclusione
Missione compiuta. Ora nel mio programma posso scrivere qualche cosa come:

...
Dim lastindex As Integer
Dim t As String
Dim c As String
Dim f As DatabaseFieldDefinition
Dim sf As SortField
...
' Campo da inserire nell'ordinamento
t = "tabella"
c = "campo"
' Recupero campo dalla tabella
f = reportdoc.Database.Tables.Item(t).Fields.Item(c)
' Tentativo di inserimento nella lista dei campi di ordinamento
If AddSortFiled(reportdoc, f) Then
    ' istruzioni per il setting del nuovo campo:
    ' ora lo posso fare perché è presente in SortFields
    ' (è l'ultimo inserito)
    lastindex = reportdoc.DataDefinition.SortFields.Count - 1
    sf = reportdoc.DataDefinition.SortFields.Item(lastindex)
    ' Per esmpio in ASC
    sf.SortDirection = CrystalDecisions.Shared.SortDirection.AscendingOrder
    sf.Field = f
Else
    ' istruzioni insuccesso
End If
...
For Each sf In reportdoc.DataDefinition.SortFields
    ' istruzioni
Next
...

LR.



ポストの決勝戦!


 

Lettori fissi...
se non funziona fai refresh (baco di Blogger!) altrimenti "segui" in alto a sx!

Seguo anche...

Piccolo spot per un amico...