title: Intercettare richieste dns

text:
Axeman wrote:
> Si ma per "intercettare richieste DNS" non serve mica obbligatoriamente
> un DNS. Ad esempio posso usare un network sniffer o un equivalente, che
> nulla ha a che fare con un DNS, e per modificarle posso anche fare DNS
> poisoning su me stesso... dipende da cosa vuol fare realmente l'OP, e da
> quanto vuole divertirsi... :-)
non capisco la tua "ostilità". Io ho semplicemente dato una risposta
sulla base della domanda. Risposta che è la soluzione a mio
personalissimo avviso al problema per come l'ho capito.
Se poi lui intende diversamente pace e bene.
> Ok, ma se avesse voluto qualcosa di pronto non avrebbe posto la domanda
> in un newsgroup su dotnet, no? :-)
Magari pensava di cavarsela con due righe di codice, cosa non proprio
vera.



title: Intercettare richieste dns

author: Axeman

text:
Raffaele Rialdi [MVP] <
malta@n0spam_vevy.com
> wrote in
news:mn.3cc07db58...@n0spamvevy.com
:
> non capisco la tua "ostilità". Io ho semplicemente dato una risposta
> sulla base della domanda. Risposta che è la soluzione a mio
> personalissimo avviso al problema per come l'ho capito.
Ma anche io ho dato la mia personalissima opinione. Nessuna ostilità
(neanche tra virgolette) figurati... si chiaccherava...


title: Intercettare richieste dns

author: LudovicoVan

text:
On 7 May, 20:11, Axeman <m...@dont.thik.so.invalid> wrote:
> LudovicoVan <
ju...@diegidio.name
> wrote in news:30cfde88-3ea5-4457-82a8-
>
df0613974...@q30g2000vbs.googlegroups.com
:
>
> > [...] ma i requisiti vanno elicitati non indovinati.
>
> Siamo esseri umani, non androidi. Ipotizziamo, speculiamo e - perchè no -
> tiriamo a indovinare... a volte ci si azzecca. :-)
Siamo programmatori, che poi siamo umani e' un punto di vista
discutibile. ;)
Ipotesi e speculazioni ci stanno bene in sede di raccolta requisiti:
si discute, si negozia, si immagina e si progetta. Ma e' il cliente
che ha la parola finale. Per un tecnico indovinare i requisiti e' un
no no: a parte che piu' spesso che altro si sbaglia, con pessime
conseguenze, le soluzioni basate su requisiti incompleti o ambigui
sono sempre over-ingegnerizzate perche' devono necessariamente essere
piu' generali dello stretto necessario, dovendo tenere conto di
casistiche che potrebbero esserci come non esserci, con conseguenze di
nuovo pessime. E qui gia' sento le fanfare del "il problema non e' mai
completamente chiaro" ecc. ecc.  Nonsense, si tratta piuttosto di
raggiungere certi livelli di qualita'.
-LV


title: Intercettare richieste dns

author: Mauro Servienti [MVP]

text:
Ciao LudovicoVan,
You wrote on 07/05/2011 :
> Ipotesi e speculazioni ci stanno bene in sede di raccolta requisiti:
> si discute, si negozia, si immagina e si progetta. Ma e' il cliente
> che ha la parola finale. Per un tecnico indovinare i requisiti e' un
> no no: a parte che piu' spesso che altro si sbaglia, con pessime
> conseguenze, le soluzioni basate su requisiti incompleti o ambigui
> sono sempre over-ingegnerizzate perche' devono necessariamente essere
> piu' generali dello stretto necessario, dovendo tenere conto di
> casistiche che potrebbero esserci come non esserci, con conseguenze di
> nuovo pessime. E qui gia' sento le fanfare del "il problema non e' mai
> completamente chiaro" ecc. ecc.  Nonsense, si tratta piuttosto di
> raggiungere certi livelli di qualita'.
amen :-)



title: Intercettare richieste dns

author: Sander

text:
Il 07/05/2011 21:07, Mauro Servienti [MVP] ha scritto:
> Ciao LudovicoVan,
>
> You wrote on 07/05/2011 :
>> Ipotesi e speculazioni ci stanno bene in sede di raccolta requisiti:
>> si discute, si negozia, si immagina e si progetta. Ma e' il cliente
>> che ha la parola finale. Per un tecnico indovinare i requisiti e' un
>> no no: a parte che piu' spesso che altro si sbaglia, con pessime
>> conseguenze, le soluzioni basate su requisiti incompleti o ambigui
>> sono sempre over-ingegnerizzate perche' devono necessariamente essere
>> piu' generali dello stretto necessario, dovendo tenere conto di
>> casistiche che potrebbero esserci come non esserci, con conseguenze di
>> nuovo pessime. E qui gia' sento le fanfare del "il problema non e' mai
>> completamente chiaro" ecc. ecc. Nonsense, si tratta piuttosto di
>> raggiungere certi livelli di qualita'.
>
> amen :-)
>
> .m
>
Vi ringrazio per le vostre idee, ipotesi e quant'altro. Come al solito
ho imparato cose nuove grazie al forum.
Quello che avevo in mente era una applicazione che si installava, magari
come servizio windows, e annotava gli url puntati dal browser (magari il
passo successivo è autorizzarli o no). Il proxy locale è molto carino
come idea, ma va configurato il browser per utilizzarlo, e non vorrei
toccare tali config ( anche perche facilmente si puo disabilitare). Per
lo stesso motivo non vorrei modificare gli indirizzi DNS.
Grazie
Sandro


title: Intercettare richieste dns

author: Raffaele Rialdi [MVP]

text:
Sander wrote:
> Vi ringrazio per le vostre idee, ipotesi e quant'altro. Come al solito ho
> imparato cose nuove grazie al forum.
> Quello che avevo in mente era una applicazione che si installava, magari come
> servizio windows, e annotava gli url puntati dal browser (magari il passo
> successivo è autorizzarli o no). Il proxy locale è molto carino come idea, ma
> va configurato il browser per utilizzarlo, e non vorrei toccare tali config (
> anche perche facilmente si puo disabilitare). Per lo stesso motivo non vorrei
> modificare gli indirizzi DNS.
> Grazie
> Sandro
Se lo vuoi fare per più utenti sulla rete è meglio installare un
content-filtering centralizzato.
Esistono tante appliance che fanno content-filtering basate su linux.
Svilupparlo bene è meno banale di quello che si pensi. Inoltre quelli
"seri" sono basati su un abbonamento che aggiorna costantemente i siti
su internet classificandoli in base al contenuto e permettendo i
sysadmin di filtrare il contenuto sulla base della categoria. Senza
questo pre-filtraggio non riuscirai a filtare più di tanto anche perché
molti siti fanno morphing o erogano contenuti di altri siti.
Infine devi fare i conti con tools come Tor che sono usati da chi vuole
navigare in modo anonimo.



title: Intercettare richieste dns

text:
"Sander" <
max...@yahoo.it
> wrote in message
news:4dc7b9e6$0$38639$4faf...@reader1.news.tin.it...
> Quello che avevo in mente era una applicazione che si installava, magari
> come servizio windows, e annotava gli url puntati dal browser (magari il
> passo successivo è autorizzarli o no). Il proxy locale è molto carino come
> idea, ma va configurato il browser per utilizzarlo, e non vorrei toccare
> tali config ( anche perche facilmente si puo disabilitare). Per lo stesso
> motivo non vorrei modificare gli indirizzi DNS.
Di metodi ce ne sono parecchi, ma tutti implicano il mettersi da qualche
parte nello stack di rete. Il proxy e' probabilmente la forma piu' diffusa,
soprattuto nei contesti intranet, anche perche' in tali contesti la
configurazione del browser e' comunque bloccata per gli utenti standard. In
ogni caso, quale strada sarebbe preferibile nel tuo caso specifico dipende
dai dettagli del tuo scenario applicativo: per esempio, e' request logging o
content filtering o altro che in effetti vuoi fare? E in quale scenario di
rete (tipologia di utenza) ti devi collocare?
-LV

--- Posted via news://
freenews.netfront.net/
 - Complaints to
ne...@netfront.net
 ---


title: Intercettare richieste dns

text:

grazie anche per il tuo intervento Ludovico, la mia necessità è relativa
ad un solo PC standalone, non devo considerare reti locali o Intranet.
Immagina che, SENZA toccare le configurazioni del browser del PC, devi
loggare gli url che apre (in una seconda fase dovra autorizzarli o no,
ma ora basta questo). Se questo è possibile, ripeto se, dove posso
posizionarmi?
Grazie


title: Intercettare richieste dns

text:
"Sander" <
max...@yahoo.it
> wrote in message
news:4dc8ef23$0$38639$4faf...@reader1.news.tin.it...
> grazie anche per il tuo intervento Ludovico,
Sei il benvenuto.
> la mia necessità è relativa ad un solo PC standalone, non devo considerare
> reti locali o Intranet. Immagina che, SENZA toccare le configurazioni del
> browser del PC, devi loggare gli url che apre (in una seconda fase dovra
> autorizzarli o no, ma ora basta questo). Se questo è possibile, ripeto se,
> dove posso posizionarmi?
Che non puoi toccare la configurazione del browser e' un requisito un po'
strano perche' qualcosa sul PC dell'utente andra' comunque
installato/configurato.  In ogni caso, se cosi' deve essere, penso che ti
occorra implementare un network gateway: la configurazione da toccare e'
quella di rete, in piu' il gateway fa da tramite per tutto il traffico, non
solo le richieste http e non solo le richieste provenienti da un browser.
Non ti so dire molto in proposito perche' non ci ho mai provato e c'e' ben
poco materiale guida in giro per il Web. Pero' ti ho trovato quella che
penso sia la RFC di riferimento, sugli Internet gateways:
http://www.faqs.org/rfcs/rfc1009.html



title: Cambiare posizione a dll com compilate tramite VB.net

author: vbMizio

text:
Buon giorno a tutti,
per una riorganizzazione dell'ufficio, abbiamo cambiato un server e, per
comodita', stiamo andando a compilare tutti i nostri progetti in un percorso
del server.
Purtroppo abbiamo in piedi ancora dei progetti VB6, e quando ci serve di
dover aggiungere funzionalita', quando possibile, scriviamo delle dll
tramite VB.Net (versione 2008, al momento) visibili a COM, da utilizzare
all'interno dei nostri progetti VB6.

Proprio per la riorganizzazione dei file sul server, stiamo spostando la
compilazione delle dll direttamente sul server, mentre prima ognuno
compilava le dll sul proprio pc.

Ho quindi, nei miei progetti vb6, tolto i riferimenti delle dll scritte in
Net
Prima di ricompilare le varie dll, ho deregistrato a mano (usando il regasm)
tutte le dll visibili a COM, usando per la deregistrazione, le dll presenti
in Release, tramite regasm ...\release\miadll.dll -u -tlb

Ho poi ricompilato le dll nel percorso giusto, cioe
\\server\e\dll\miacartella\miadll.dll, quindi su percorso di rete, con path
assoluto.

Ho quindi riaggiunto i riferimenti alle dll, che questa volta puntano
correttamente al percorso di rete, ma provando ad istanziare una dll, al
momento di creare l'oggetto tramite
Set MioOggetto = new miaDll.miaclasse,  viene sollevato un errore di
automazione

Ho poi provato anche a creare un nuovo progetto dll, visibile a COM,  e
compilarlo nuovamente in rete.
Tramite VB6 posso aggiungere  il riferimento alla dll, ma se provo ad
istanziare un oggetto del tipo esposto, ho un errore di RunTime 430, che
segnala che la classe non supporta l'automazione o l'interfaccia prevista.

Come posso risolvere?
E' davvero cosi' complicato compilare le dll esposte a COM in rete?


title: Velocizzare l'inizializzazione ed il caricamento di una winform con controlli dinamici.

author: Romano

text:
Ciao a tutti,
nella mia applicazione ho una winform che carica, dinamicamente N schede
e per ogni scheda m prodotti con relativa immage con descrizione.
Questa fase impiega un botto di tempo circa 1 min. per caricare 10
schede e per ogni scheda circa 30 prodotti per ogni scheda.
Come posso velocizzare il tutto ?
Tenete presente che il caricamento dei dati dal database è velocissimo:
circa 2 sec.
Carico il tutto in una dictionary<Settore, list<Prodotto>>.
Accetto suggerimenti.


title: SilverLight e WCF Self host

author: Sayed Seliman

text:
Ciao a tutti,
ho una macchina di sviluppo con VS2010.
Sto sviluppando un'applicazione SL 4 che si deve connettere ad un
servizio WCF con binary XML.
Nello specifico ho già scritto il servizio e testato con console
application...funziona.
Richiamandola da SL mi da invece eccezzione in quanto chiamata cross-
domain.
Ho quindi posto il file "clientaccesspolicy.xml" nella root del
progetto ed ho provato a configurare l'App.config.
Da qui partono i miei problemi, ovvero verificando con Fiddler SL non
riesce a trovare il file "clientaccesspolicy.xml".
Girovagando per internet per ore ed ore ho visto che è possibile
scrivere un contract con relativa implementazione in modo che emuli la
risposta al get sul file e lo ritorni.
Quindi ho creato l'interfaccia "ISicurezza" e la sua implementazione
"Sicurezza" che seguono :
ISicurezza :
 [ServiceContract]
    public interface ISicurezza
    {
        [OperationContract, WebGet(UriTemplate = "/
clientaccesspolicy.xml")]
        Message GetPolicyFile();
    }
Sicurezza :
public class Sicurezza : ISicurezza
    {
        public Message GetPolicyFile()
        {
            using (FileStream stream =
File.Open("clientaccesspolicy.xml", FileMode.Open))
            {
                using (XmlReader xmlReader = XmlReader.Create(stream))
                {
                    Message m =
Message.CreateMessage(MessageVersion.None, "", xmlReader);
                    using (MessageBuffer buffer =
m.CreateBufferedCopy(1000))
                    {
                        return buffer.CreateMessage();
                    }
                }
            }
        }
    }
Ho anche l'interfaccia e la classe relative ad un servizio che mi
interessa esporre, eccole di seguito
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
    public class RacService : IRacService
    {
       public int Foo()
       {}
    }
ed quindi il mio App.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <compilation debug="true" />
    <membership
defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider"
type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider,
System.Web.Extensions, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35" serviceUri="" />
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider"
type="System.Web.ClientServices.Providers.ClientRoleProvider,
System.Web.Extensions, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
      </providers>
    </roleManager>
  </system.web>
  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <bindings>
      <customBinding>
        <binding name="BinaryHttpBinding">
          <binaryMessageEncoding />
          <httpTransport />
        </binding>
      </customBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="ClientAccessPolicyBehavior"
name="Concess.WCF.CrossDomain">
        <host>
          <baseAddresses>
            <add baseAddress="
http://localhost:8732/
" />
          </baseAddresses>
        </host>
        <endpoint address="" binding="webHttpBinding"
behaviorConfiguration="webBehavior" contract="Concess.WCF.ISicurezza">
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
      </service>
      <service name="Concess.WCF.RacService">
        <host>
          <baseAddresses>
            <add baseAddress="
http://localhost:8732/
Design_Time_Addresses/Concess.WCF/RacService/" />
          </baseAddresses>
        </host>
        <endpoint address="" binding="customBinding"
bindingConfiguration="BinaryHttpBinding"
contract="Concess.WCF.IRacService" />
        <endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True" />
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
        <behavior name="ClientAccessPolicyBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="webBehavior">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>
Lanciando il progetto Web che ospita SL parte quindi WcfSvcHost che mi
visualizza i 2 servizi "RacService" e "Sicurezza".
Il primo risulta "Started" mentre il secondo "Stopped" in quanto mi
indica che non gli ho assegnato un endpoint!
Eppure a me sembra chiaro e palese di averlo fatto nell'App.config.
Sapete per favore aiutarmi a capire dove sbaglio?
Sono ore ed ore che ci provo e non riesco a venirne a capo...se
continua così sono costretto a lasciare perdere SL e mi dispiacerebbe
Spero in un vostro aiuto
Grazie mille!


title: DataGridViewComboBoxColumn sto impazzendo

text:
Ho questo codice, dr[i] è una colonna di tipo smallint di una tabella
di un db sql server
                        DataGridViewComboBoxColumn idColumnCombo = new
DataGridViewComboBoxColumn();
                        foreach (DataRow dr in dt_Anagrafica.Rows)
                            idColumnCombo.Items.Add(dr[i]);
                        //idColumnCombo.Items.Add(55);
                        //idColumnCombo.DefaultCellStyle.NullValue =
55;
                        idColumnCombo.Name =
dt_Anagrafica.Columns[i].ColumnName;
                        idColumnCombo.DataPropertyName =
dt_Anagrafica.Columns[i].ColumnName;
                        idColumnCombo.AutoComplete = true;
                        idColumnCombo.DisplayMember =
dt_Anagrafica.Columns[i].ColumnName;
                        idColumnCombo.ValueMember =
dt_Anagrafica.Columns[i].ColumnName;
                        dgw_Anagrafica.Columns.Add(idColumnCombo);
Dopo aver scelto un nuovo valore nel combobox nella colonna, qualunque
cosa faccio mi dà questo errore:
Si è verificata la seguente eccezione in DataGridView:
System.FormatException: Impossibile convertire il valore '' nel tipo
'System.String'.
  in
System.Windows.Forms.DataGridViewComboBoxCell.ParseFormattedValue(Object
formattedValue, DataGridViewCellStyle cellStyle, TypeConverter
formattedValueTypeConverter, TypeConverter valueTypeConverter)
  in
System.Windows.Forms.DataGridView.PushFormattedValue(DataGridViewCell&
dataGridViewCurrentCell, Object formattedValue, Exception& exception)
Per sostituire questa finestra di dialogo predefinita, gestire
l'evento DataError.
Che posso fare? STO IMPAZZENDO DA 5 GIORNI PER STO COMBOBOX
MALEDETTO...GRAZIE


title: EF e i default value nel DB

text:
Ho un DB su sql2008 (che mi viene fornito dal cliente) in cui alcuni
campi stringa sono 'Not Nullable' e sono associati ad una stringa di
default (nel design della tabella del DB). Cioe, se ignorati assumono
valore 'pippo' in fase di creazione del record.

Facendo una insert con EF, in cui io non fornisco alcun valore per quei
campi, ottengo un errore perche EF non è riuscito ad inserirci un valore
NULL.
Sono d'accordo sul fatto che il model edmx non carpisca tali valori di
default e non scriva esso stesso 'pippo' (potrebbero cambiare nel DB e
non sarebbero piu corretti), ma almeno vorrei che tali proprieta
venissero ignorate e rimosse dalla insert che viene generata.

Ho provato ad impostare lo StoreGeneratedPattern a 'Computed' per i
campi in questione, ma non cambia nulla.
Se cancello del tutto i campi dal modello, va in errore perche non vede
un mapping corretto.

Come si esce da questo contesto che mi sembra un tallone d'Achille per
EF, ma magari sono io che mi sono perso un click da qualche parte?

grazie
Sander


title: wcf:errore metadata?

author: giulio

text:
Ciao,
sto continuando a studiare (e sperimentare) di wcf ho incontrato il seguente
errore chiamando il servizio da explorer
Fault xmlns="
http://schemas.microsoft.com/ws/2005/05/envelope/none
">
- <Code>
  <Value>Sender</Value>
- <Subcode>
  <Value
xmlns:a="
http://schemas.microsoft.com/ws/2005/05/addressing/none
">a:ActionNotSupported</Value>
  </Subcode>
  </Code>
- <Reason>
  <Text xml:lang="it-IT">Impossibile elaborare nel destinatario il messaggio
con Action '' a causa di una mancata corrispondenza ContractFilter in
EndpointDispatcher. È possibile una mancata corrispondenza nel contratto
(Action del mittente e del destinatario non corrispondenti) o una mancata
corrispondenza di binding/sicurezza tra il mittente e il destinatario.
Controllare che il mittente e il destinatario abbiano lo stesso contratto e
lo stesso binding (compresi i requisiti di sicurezza, ad esempio messaggio,
trasporto, nessuno).</Text>
  </Reason>
  </Fault>
invece il file .wsdl mi dice che e stato creato il servizio e passa questo
codice per il client
class Test
{
    static void Main()
    {
        HelloClient client = new HelloClient();
        // Utilizzare la variabile 'client' per chiamare le operazioni nel
servizio.
        // Chiudere sempre il client.
        client.Close();
    }
}
[....]
dove sbaglio?
se il client e una applicazione web, il codice come dovrebbe essere?
Grazie 1000000


title: wcf:errore metadata?

text:
giulio wrote:
> dove sbaglio?
Innanzitutto, quando hai un errore, la prima cosa da fare ï¿œ di
configurare il tracing e vedere nel dettaglio che cosa ï¿œ successo:
http://msdn.microsoft.com/en-us/library/ms733025.aspx
http://msdn.microsoft.com/en-us/library/ms732023.aspx
Il consiglio ï¿œ di fare sempre una modifica alla volta e provarla
subito.
Se giochi troppo allegramente con la configurazione puoi facilmente
scivolare in situazioni che violano i protocolli sottostanti ed
ottenere cosï¿œ errori poco comprensibili.
> se il client e una applicazione web, il codice come dovrebbe essere?
ï¿œ tutto identico. Generi il proxy e lo usi a tuo piacimento, con
l'attenzione di eseguire sempre la dispose. Motivo per cui il client
dovresti sempre chiamarlo in questa forma, in modo che la close avvenga
anche in caso di eccezione:
using(HelloClient client = new HelloClient())
{
  client.metodo(...);
}
> Grazie 1000000
Prego
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


title: Intercettare cambio proprietà di una classe bindata a datagrid

text:
Ciao a tutti,
 ci provo... :)

Ho un problema credo banale ma non riesco a trovare una soluzione :
( Anche avendo fatto parecchie ricerche in rete ma magri mi sono perso
io! Più che problema direi mia mancanza su un concetto credo...

Credo sia facile da spiegare quindi elenco i punti salienti della
situazione (siamo in WPF con binding, senza MVVM quindi con il codice
del code behind che funge da ViewModel):
1. [~ViewModel] ho la mia classe windows (nel .xaml.cs) che ha una
ObservableCollection<PersonaggiCartoniAnimati>
ElencoPersonaggiCartoniAnimati
2. [~View] nel .xaml ho una DataGrid bindata a ElencoPersonaggi con
AutogenerateColumn a false. Ho quindi specificiato le colonne col
binding.
[Binding DataGrid --> ItemsSource="{Binding Path=ElencoPersonaggi,
Mode=TwoWay}"
Binding Column --> Binding="{Binding Path=IsDisney, Mode=TwoWay}"]

Fin qui tutto ok avendo gestito "INotifyPropertyChanged". Adesso ho la
necessità di interagire con il "click" della colonna IsDisney per fare
dei controlli sulle altre colonne (diciamo che posso avere solo 1
personaggio Disney...).
Come fare? Se implemento "INotifyPropertyChanged" in
PersonaggiCartoniAnimati intercetto la cosa ma NON nella classe in cui
gestisco la view (in pratica non nel ViewModel)

Se avete domande o non sono stato chiaro fatemi sapere!
Grazie!

Al3x


text:
On 17 Feb, 13:35, Al3xI98O <
bon...@gmail.com
> wrote:

Dimenticavo:
 ambiente WPF 4 con C# (ma poco importa direi...) :)

Al3x


text:
Ciao Al3xI98O,

You wrote on 17/02/2012 :
> Credo sia facile da spiegare quindi elenco i punti salienti della
> situazione (siamo in WPF con binding, senza MVVM quindi con il codice
> del code behind che funge da ViewModel):
> 1. [~ViewModel] ho la mia classe windows (nel .xaml.cs) che ha una
> ObservableCollection<PersonaggiCartoniAnimati>
> ElencoPersonaggiCartoniAnimati
> 2. [~View] nel .xaml ho una DataGrid bindata a ElencoPersonaggi con
> AutogenerateColumn a false. Ho quindi specificiato le colonne col
> binding.
> [Binding DataGrid --> ItemsSource="{Binding Path=ElencoPersonaggi,
> Mode=TwoWay}"
> Binding Column --> Binding="{Binding Path=IsDisney, Mode=TwoWay}"]
>
> Fin qui tutto ok avendo gestito "INotifyPropertyChanged". Adesso ho la
> necessità di interagire con il "click" della colonna IsDisney per fare
> dei controlli sulle altre colonne (diciamo che posso avere solo 1
> personaggio Disney...).
> Come fare? Se implemento "INotifyPropertyChanged" in
> PersonaggiCartoniAnimati intercetto la cosa ma NON nella classe in cui
> gestisco la view (in pratica non nel ViewModel)

a naso direi, non usare nella ObservableCollection un
PersonaggiCartoniAnimati ma crei un PersonaggiCartoniAnimatiViewModel
che wrappa PersonaggiCartoniAnimati

class PersonaggiCartoniAnimatiViewModel
{
   public PersonaggiCartoniAnimatiViewModel( PersonaggiCartoniAnimati
source, IValidator sharedValidator )
   {
       sharedValidator.Register( this );
   }
}

in questo modo puoi passare ad ogni singola "riga" altre cosa come un
validatore che conosce tutte le righe (Register) e quindi è in grado di
fare considerazioni sull'insieme dei dati.

> Al3x

.m

--
blog @ //
milestone.topics.it


text:
On 18 Feb, 10:17, Mauro Servienti [MVP] <mauroservie...@online.nospam>
wrote:

Non mi è chiaro al 100% ma mi pare fili... domani provo :)
Intanto grazie!

al3x


title: Domanda - deploy applicazione da Visual C# express

author: MasterControl

text:
ciao,

sul mio pc (win 7) con due account amministrativi (quello di default +
uno creato da me), se effettuo la pubblicazione di un'applicazione
ottenendo un setup eseguibile, riesco ad installare tale setup solo
dall'account amministrativo di default....

in caso contrario ottengo un errore durante la verifica dei requisiti,
con messaggio "impossibile avviare l'applicazione. Contattare il
fornitore dell'applicazione'.

Quale può essere il prob?

Ho provato anche a reinstallare tutto....con creazione di ulteriore
account, ma il prob resta.

grazie


title: Startup di una applicazione Asp.Net

author: Giulio Petrucci

text:
Ciao a tutti,
nel Global.asax.cs di una applicazione web sto configurando il
caontainer IOC.
Ora, senza dilungarmi troppo, ci sono alcuni oggetti che hanno ciclo di
vita coincidente con la HttpRequest (es: la sessione di NHibernate).
Dove posso poi "salvare" questi oggetti? Non in
 >>> Session["MiaChiave"] = MioOggetto
perché - se non ho capito male - più richieste possono condividere la
stessa sessione, giusto?
Ciao e grazie in anticipo,
Giulio
--


title: Startup di una applicazione Asp.Net

author: Antonio Di Motta

text:

Ciao, di solito la sessione di NHibernate in una app web si conserva
nell'HttpContext
(che incapsula tutte le informazioni specifiche di HTTP relative a una
singola richiesta HTTP)
Potresti usare qualcosa del tipo:
public class NHibernateHelper
{
        private const string CurrentSessionKey =
"nhibernate.current_session";
        private static readonly ISessionFactory sessionFactory;
        static NHibernateHelper()
        {
            var configuration = new Configuration().Configure();
            sessionFactory = configuration.BuildSessionFactory();
        }
        public static ISession GetCurrentSession()
        {
            HttpContext context = HttpContext.Current;
            ISession currentSession = context.Items[CurrentSessionKey]
as ISession;
            if( currentSession == null )
            {
                currentSession = sessionFactory.OpenSession();
                context.Items[CurrentSessionKey] = currentSession;
            }
            return currentSession;
         }
}
Ciao
Antonio


title: Startup di una applicazione Asp.Net

author: AleTV

text:
"Giulio Petrucci" ha scritto nel messaggio
news:4d0a00ad$0$1357$4faf...@reader2.news.tin.it...
> perché - se non ho capito male - più richieste possono condividere la
> stessa sessione, giusto?
>
Se non ho capito male io quel po' di
asp.net
 che conosco, direi di no... :-)
Una volta che una session è tirata su, su una request da parte del browser,
quella rimane fino a scadenza.
Altri utenti, altri processi che tirano su altre istanze del browser, hanno
sessione diverse.


title: Startup di una applicazione Asp.Net

text:
On 16 Dic, 13:55, "AleTV" <
sti...@libbero.it
> wrote:
> "Giulio Petrucci" ha scritto nel messaggionews:4d0a00ad$0$1357$4faf...@reader2.news.tin.it...

Si, il ciclo di vita della sessione NHibernate dovrebbe coincidere con
quello della richiesta.
Ciao
Antonio


title: problema con orderby

author: Giulio Preite

text:
Ciao a tutti,
ho la seguente query linq:
Query = from Offerta in Offertas.Include("Destinazione") orderby
Offerta.DataScadenza ascending****ho provato anche con descending*****)
select Offerta;
il problema e che non mi ordina i risultati per data di scadenza, continua a
darmeli cosi come sono nel db.
per maggiore completezza posto l' intero metodo:
public IList<Offerta> GetAll(int id)
        {
            List<Offerta> CollOffertas = new List<Offerta>();
            using (SolarisAgestourDBEntities1 context = new
SolarisAgestourDBEntities1())
            {
                ObjectQuery<Offerta> Offertas = context.OffertaSet;
                IQueryable<Offerta> Query;
                if (id == 1)
                {
                    Query = from Offerta in Offertas.Include("Destinazione")
orderby Offerta.DataScadenza ascending select Offerta;
                    foreach (Offerta p in Query)
                    {
                        if (p.Foto == "logo.gif" && p.DataInserimento >=
DateTime.Now.AddDays(-5))
                        {
                            p.Foto = "New.png";
                        }
                        CollOffertas.Add(p);
                    }
                    if (CollOffertas.Count == 0)
                        CollOffertas = Query.ToList();
                }
                else
                {
                    Query =
                        (from Offerta in Offertas.Include("Destinazione")
                         where Offerta.Destinazione.DestinazioneId == id
orderby Offerta.DataScadenza ascending   select Offerta);
                    foreach (Offerta p in Query)
                    {
                        if (p.Foto == "logo.gif" && p.DataInserimento >=
DateTime.Now.AddDays(-5))
                        {
                            p.Foto = "New.png";
                        }
                        CollOffertas.Add(p);
                    }
                    if (CollOffertas.Count == 0)
                        CollOffertas = Query.ToList();
                }
            } return CollOffertas;
        }
Grazie mille in anticipo.
Giulio


title: problema con orderby

text:
Ciao a tutti,
volendo trovare una strada alternativa a quant' ho fatto, come posso
ottenere questo risultato:
query che mi restituisce una lista <offerta> ordinata per data di scadenza.
nel momento in cui l' offerta( la propriet� datainserimento) rientra in un
intervallo di date, il valore della propriet� foto di default"Logo.gif")
viene sostituita da un altra("New.png")
Grazie 10000 in anticipo
"Giulio Preite"  ha scritto nel messaggio
news:iaq2fo$b9k$1...@news.eternal-september.org...



title: consiglio su controllo

text:
Ciao a tutti, posto anche qui un messaggio postato anche su un altro ng, mi
scuso con chi dovesse trovarsi due volte lo stesso messaggio.
Avrei bisogno di un consiglio su cosa usare come controllo.
Attualmente utilizzo una listview in modalita' Details per visualizzare dei
dati.
Mi si e' posta la questione di visualizzare gli stessi dati in maniera piu'
carina, anche su piu' righe e con delle icone ad inizio "riga". Per fare
cio' sto provando ad utilizzare il DataRepeater con all'interno delle
groupbox contenenti delle label, e delle picturebox. Il tutto mi sta dando
piu' o meno il risultato voluto, peccato pero' che non ho modo di fare il
multiselect sulle item, cosa che invece mi servirebbe.
Avete qualche controllo o qualche soluzione da suggerirmi?
Grazie a tutti.... Maurizio


title: consiglio su controllo

text:
On Feb 7, 9:49 am, "vbMizio" <
vbmi...@io.it
> wrote:
> Attualmente utilizzo una listview in modalita' Details per visualizzare
> dei dati.
> Mi si e' posta la questione di visualizzare gli stessi dati in maniera piu'
> carina, anche su piu' righe e con delle icone ad inizio "riga". Per fare
> cio' sto provando ad utilizzare il DataRepeater con all'interno delle
> groupbox contenenti delle label, e delle picturebox. Il tutto mi sta dando
> piu' o meno il risultato voluto, peccato pero' che non ho modo di fare il
> multiselect sulle item, cosa che invece mi servirebbe.
> Avete qualche controllo o qualche soluzione da suggerirmi?
> Grazie a tutti.... Maurizio
Parliamo di Asp.Net, giusto?
Temo che se usi un repeater, la logica del multi-select la devi
programmare tu client-side in JavaScript, per esempio con il checkbox
check-/uncheck-all, e quant'altro. Lato server, o cicli su tutti gli
item (ed i checkbox che contengono) per vedere quali sono selezionati,
oppure di nuovo lato client in JS impacchetti la lista di ID o quel
che sia (che aggiorni ad ogni click di checkbox) in un unico campo
hidden (per esempio comma-delimited), e poi lato server spacchetti dal
campo hidden. -- Ci potrebbero essere molte altre varianti, in ogni
caso occorre un po' di logica custom.
Con la ListView hai comunque il LayoutTemplate che ti dovrebbe
consentire piu' o meno lo stesso livello di customizzazione, ma anche
cosi' penso che sia richiesta un po' di logica custom, per lo meno
client-side.
-LV


title: consiglio su controllo

text:
Ciao Ludovico e grazie per la risposta,
....
>Parliamo di Asp.Net, giusto?
...
Ops, colpa mia, non ho specificato tutto, in ogni caso WinForm, con VB2008.
Pero' una idea me la hai data, anche se c'e' un bel po' da fare.
Al click con il tasto Shift (vabbe', Maiusc) o con il tasto Ctrl premuto
potrei.... quasi quasi una idea mi e' venuta.
In ogni caso, per chi vuole aggiungere qualche cosa, il thread e' aperto :-)
Grazie ancora... Maurizio


title: Sospendere un thread

text:
Ciao a tutti,
mi ponevo questa domanda: sono in un thread e devo sospendere
l'esecuzione per 500ms. Che differenza c'è tra usare una
Thread.Sleep(500) e una cosa tipo new
ManualResetEvent(false).WaitOne(500, false)?
Grazie,
Giulio
--


title: Sospendere un thread

text:
On Mar 7, 4:18 pm, Giulio Petrucci <sis...@nonono.boh> wrote:
> mi ponevo questa domanda: sono in un thread e devo sospendere
> l'esecuzione per 500ms. Che differenza c'è tra usare una
> Thread.Sleep(500) e una cosa tipo new
> ManualResetEvent(false).WaitOne(500, false)?
Per sospendere l'esecuzione di un thread va usato Thread.Sleep.
ManualResetEvent fornisce uno dei modi di sincronizzare diversi thread
fra di loro attraverso il sistema di signaling al livello di sistema
operativo: la tua chiamata ottiene un effetto equivalente allo sleep
semplicemente sulla base del fatto che il timeout scade, ma con un
dispendio di risorse incomparabilmente maggiore -- a parte ovviamente
le questioni di leggibilita' del codice. (Gli aspetti tecnici
rilevanti sono ovviamente spiegati in dettaglio su MSDN.)
HTH,
-LV


title: Sospendere un thread

text:
Ciao LV,
On 3/7/2011 7:38 PM, LudovicoVan wrote:
> Per sospendere l'esecuzione di un thread va usato Thread.Sleep.
[cut]
Grazie,
Giulio
--


title: Integrazione di Blend con progetti già esistenti

author: marcosabba

text:
Ciao a tutti!
Premessa:
Per affrontare un progetto abbastanza ampio (poi l'"ampiezza" di un
progetto è un concetto abbastanza relativo, diciamo solo che non si
tratta di un semplice tool per uso interno all'azienda per cui lavoro ma
scomoda ui composition, moduli e plugin) penso di aver fatto un errore
considerando l'utilizzo di Blend come un "di più" di cui potevo fare a
meno accontentandomi di esempi trovati in rete e del designer di visual
studio (express).
Ora mi trovo in un punto in cui probabilmente il tempo perso (o
impiegato, a seconda dei punti di vista) sui dettagli della UI è
diventato percentualmente insostenibile, per cui si prevede in un futuro
più o meno prossimo l'intervento di terzi, nel mio caso una persona
attualmente impegnata come web designer, per rivedere l'interfaccia del
programma (si tratta di un'applicazione desktop).
La domanda:
se come prevedo questa persona dovrà usare Blend, sarà possibile
integrare lo xaml esistente senza modifiche o sono necessari interventi,
più o meno pesanti? Mi riferisco soprattutto all'uso di template, a
bindings e converters sparsi per il mondo che io ho gestito a mano senza
neanche grande esperienza pregressa...
Insomma, se qualcuno di voi ha avuto un'esperienza simile di
integrazione "a posteriori", quanto è fattibile la cosa e a che prezzo?


author: Corrado Cavalli [MVP]

text:
marcosabba wrote :

"Teoricamente" la cosa dovrebbe essere indolore, per esperienza
personale Blend è un po' più "schizzinoso" per quanto riagurda
l'organizzazione dello xaml quindi aspettati qualche operazione di
refactoring, normalmente poca roba ma dipende da progetto a progetto...


title: drag & drop  tra WinForm e controllo WPF

text:
Ciao a tutti,
ho provato a postare questa domanda anche su un altro ng, quindi mi scuso
con chi dovesse leggere due volte la stessa domanda.
Tempo fa per risolvere un mio problemino con un controllo, mi e' stato
suggerito di hostare un controllo WPF in una form WinForm.
Dopo un po' di tempo che "cincischiavo", mi sono deciso ed ho iniziato a
fare quanto suggerito, con qualche leggera modifica; non sto utilizzando una
ListView, ma una ListBox con associato un template, e fin qui i primissimi
test si stanno rivelando positivi.
La domanda che vorrei fare, prima di cominciare a diventar matto e' se e'
possibile fare un Drag & Drop tra un controllo WinForm (ad esempio una
ListView) ed il mio controllo personalizzato WPF che contiene la ListBox.
Grazie e ciao.. Maurizio


text:
Ciao vbMizio,

hai provato uno spike?
A naso non ci dovrebbero essere problemi.
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com/profile/mauro
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


text:
Ciao Mauro,
...
>hai provato uno spike?
...
E' passato un po' di tempo dall'ultima volta che ho usato uno spike, visto
che e' un bel po' che non vado piu' a pesca.
Non vedo pero' cosa c'entri un piombo ancorato per contrastare il mare
grosso, con un controllo Wpf.
O forse intendevi un altro tipo di spike? :)
Boh, adesso cerco qualche cosa e vedo di capire cosa intendi.
P.s. Ogni indizio e' ben venuto :)
Ciao e grazie... Maurizio


text:
Ciao vbMizio,
You wrote on 19/05/2011 :
> E' passato un po' di tempo dall'ultima volta che ho usato uno spike, visto
> che e' un bel po' che non vado piu' a pesca.
> Non vedo pero' cosa c'entri un piombo ancorato per contrastare il mare
> grosso, con un controllo Wpf.
> O forse intendevi un altro tipo di spike? :)
> Boh, adesso cerco qualche cosa e vedo di capire cosa intendi.
> P.s. Ogni indizio e' ben venuto :)
significa semplicemente se hai provato ad isolare il problema, quindi
una micro soluzione con un controllo hostato provando a vedere se D&D
funziona, tutto li niente pesci :-)



text:
Ciao Mauro,
...
> tutto li niente pesci :-)
...
Peccato, forse con le canne *da pesca* sarei andato meglio :-)


text:
Ciao, anche se dopo un po' di tempo :-)
...
>A naso non ci dovrebbero essere problemi.
...
In realta' qualche problema lo sto avendo nel momento in cui cerco di
estrarre l'oggetto che ho voluto "dragare".
Mi spiego meglio...
In un controllo WinForm, all'evento MouseDown, inizio alla solita maniera il
DragDrop, cioe':
MioControllo.DoDragDrop (MioOggetto, DragDropEffect.Copy)
MioOggetto e' una istanza di una classe contenuta in una libreria a cui
faccio riferimento sia nel progetto WinForm, sia nel progetto WpfControl.
Nella ListBox Wpf, contenuta nel progetto WpfControl, nel gestore
dell'evento ListBox1.DragEnter vado a verificare, tramite il metodo
GetDataPresent della proprieta' Data dell'argomento e (di tipo
System.Windows.DragEventArgs) se l'oggetto presente e' del tipo
MiaLibreria.MiaClasse; nel caso di verifica positiva, imposto la proprieta'
Effects di e = Copy.
Quando rilascio il tasto del mouse, viene scatenato l'evento Drop sulla
ListBox1, in questo caso tento l'estrazione dell'oggetto trasportato, in
questo modo:
If e.Data.GetDataPresent(GetType(MiaLibreria.MiaClasse)) Then
           Dim obj As Object
           Try
               obj = e.Data.GetData("MiaLibreria.MiaClasse") ' oppure
e.Data.GetData(GetType(MiaLibreria.MiaClasse))
           Catch ex As Exception
           End Try
    [.....]
End if
a questo punto, quando tento di assegnare alla variabile obj, di tipo
object, il risultato di e.Data.GetData("MiaLibreria.MiaClasse") , viene
sollevata un'eccezione:
System.Runtime.InteropServices.COMException (0x80004005): Errore HRESULT
E_FAIL restituito da una chiamata a un componente COM.
Capisco che il problema e' l'estrazione del dato... ma perche'?


text:
Eccomi,
...
>In realta' qualche problema lo sto avendo nel momento in cui cerco di
estrarre l'oggetto che ho voluto "dragare".
...
La classe che definisce l'oggetto  deve essere marcata come serializzabile.
Sembra funzionare


text:
...
>La classe che definisce l'oggetto  deve essere marcata come serializzabile.
>Sembra funzionare
...
Boh, qui succedono cose strane!
Questo D&D tra controlli WinForm e Wpf deve funzionare con tre diversi
controlli sorgente WinForm, e quindi tre diversi tipi di oggetto.
Questi tre controlli hanno al proprio interno una listview che visualizza
una serie di oggetti, e ogni ListViewItem ha impostato, come proprieta' Tag,
il riferimento all'oggetto che sta visualizzando.
Per recuperare l'oggetto, quindi, faccio un cast tra la proprieta' Tag della
ListViewItem e il tipo dell'oggetto stesso.
Quando inizio il D&D, prendo questo oggetto e lo passo come argomento al
metodo DoDragDrop dell'oggetto Listview, quindi,
Me.ListView1.DoDragDrop(obj, DragDropEffects.Copy)
In due dei tre casi possibili, questa cosa funziona benissimo, chiaramente
dopo aver impostata come serializzabile la classe che definisce l'oggetto
stesso.
Nel terzo caso, invece, quando tento di recuperare il riferimento
all'oggetto, mi viene sollevata un'eccezione in quanto l'oggetto sovrastante
non e' marcato come serializzabile. Capisco di non essere stato molto
chiaro, quindi provo a fare un piccolo esempio.
Diciamo che ho un primo oggetto di tipo Camion, che contiene una serie di
oggetti Scatola ( List (of Scatola) ), e ognuna di queste scatole contiene
una serie di oggetti di tipo Penna (List (of Penna) ).
Il mio controllo, che contiene la ListView, e' progettato in modo di
ricevere un oggetto di tipo Scatola, quindi mostrare, tramite la ListView,
tutte le penne contenute nella scatola.
Quando inizio il D&D, l'oggetto Penna viene recuperato dalla ListView, e
viene passato come argomento all'evento DoDragDrop.
Nel controllo Wpf, all'evento Drop, tento di recuperare l'oggetto di
partenza
obj = e.Data.GetData(GetType(....Penna))
Mi viene sollevata l'eccezione di cui sopra, mi viene detto che l'oggetto
Scatola non e' marcato come serializzabile.
Che cosa interessa al codice che la scatola non e' serializzabile? Io ho
chiesto l'oggetto Penna.
Vabbe', facciamo una prova, marchiamo come serializzabile anche la scatola.
Mi viene alzata la stessa eccezione, pero' questa volta a non essere
serializzabile e' addirittura l'oggetto MioControllo, quello cioe' che
contiene la Listview.
Boh!!
Nei due casi che stanno funzionando correttamente, la situazione e' la
stessa, cioe' un controllo che contiene una ListView, la quale visualizza
una serie di oggetti di tipo Matita, serializzabile.
Qualche idea?
Grazie e ciao... Maurizio


text:
vbMizio wrote:
> Mi viene sollevata l'eccezione di cui sopra, mi viene detto che l'oggetto
> Scatola non e' marcato come serializzabile.
> Che cosa interessa al codice che la scatola non e' serializzabile? Io ho
> chiesto l'oggetto Penna.
È fondamentale che sia serializzabile visto che il Clipboard è valido
per tutto il desktop (*) corrente e quindi trasportabile da un processo
all'altro mentre il tuo codice gira dentro un appdomain che ha dei
confini persino più stretti rispetto ad un processo.
Occhio che questi sono concetti di base in Windows e vanno ben compresi
per non perdere settimane di tempo.
(*) il desktop è un oggetto kernel di windows che, in modo improprio,
associamo alla schermata di Windows quando le applicazioni sono tutte
iconizzate.
--
Raffaele Rialdi
http://www.iamraf.net
Weblog:
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET -
http://www.ugidotnet.org/


text:
Ciao vbMizio,
You wrote on 26/05/2011 :
> Nei due casi che stanno funzionando correttamente, la situazione e' la
> stessa, cioe' un controllo che contiene una ListView, la quale visualizza una
> serie di oggetti di tipo Matita, serializzabile.
> Qualche idea?
è giusto così, non è questione di D&D ma di serializzazione, quando un
serializer serializza un oggetto necessariamente serializzerà tutto il
grafo delle reference che quell'oggetto ha, quindi se quell'oggetto ha
un riferimento ad un altro oggetto che non è serializzabile il processo
scoppia.
Quello che dovresti fare è piazzare nel "DataObject" del D&D un
surrogato del tuo oggetto originale, un DTO insomma, che trasporti le
informazioni minime necessarie a ricostruire la situazione dall'altra
parte.



text:
Ciao Raffaele e ciao Mauro (Mauro, non ti offendi se rispondo anche a te qui
sotto il post di Raffaele, vero? :-) )
...
> È fondamentale che sia serializzabile visto che il Clipboard è valido
per tutto il desktop (*) corrente e quindi trasportabile da un processo
all'altro mentre il tuo codice gira dentro un appdomain che ha dei
confini persino più stretti rispetto ad un processo.
...
C'e' qualche cosa che non capisco....
Riprendendo l'esempio di prima, camion, scatole e penne, capirei se dovessi
serializzare l'oggetto Scatola che ha una lista di Penne, allora
naturalmente dovrei poter serializzare Scatola ma anche Penna.
Nel processo inverso, Penna e' un oggetto a se stante, scollegato dalla
Scatola sovrastante... voglio dire.... Per recuperare una Penna, non devo
sapere come e' fatta una Scatola.
Cmq, per prova ho aggiunto l'attributo <Serializable> anche alla classe
Scatola, a questo punto mi viene alzata l'eccezione che il mio controllo
MioControllo (quello che contiene la ListView) non e' seriaizzabile.
Proviamo quindi ad aggiungere l'attributo <Serializable> anche al mio
controllo (???), viene alzata l'eccezione che la classe che definisce le
Form non e' contrassegnata come serializzabile (!!!)
Ora, da quanto ne so io, per essere serializzabile una classe, se eredita da
una classe base, anche la classe base deve essere serializzabile; se
contiene riferimenti ad altri oggetti, le rispettive classi devono essere
serializzabili. Non mi sembra pero' che la cosa si propaghi anche ai livelli
superiori.. in effetti, a naso, non avrebbe senso.
Sbaglio molto?


text:
vbMizio wrote:
> C'e' qualche cosa che non capisco....
> Riprendendo l'esempio di prima, camion, scatole e penne, capirei se dovessi
> serializzare l'oggetto Scatola che ha una lista di Penne, allora naturalmente
> dovrei poter serializzare Scatola ma anche Penna.
sei tu a sceglierlo, le serializzazioni ti danno modo di stabilire
quanto profondo vuoi sia il grafo.
> Nel processo inverso, Penna e' un oggetto a se stante, scollegato dalla
> Scatola sovrastante... voglio dire.... Per recuperare una Penna, non devo
> sapere come e' fatta una Scatola.
Forse non ti è chiaro il discorso del grafo.
Un grafo viene identificato grazie ai reference che collegano gli
oggetti tra loro.
Se tu istanzi una penna e basta, il grafo è costituito dal solo oggetto
penna.
Se istanzi una scatola e *referenzi* due penne (per esempio
aggiungendole ad una List<penna> che sta dentro la scatola) il grafo
sarà composto da 3 oggetti.
Se usi l'attributo [NoSerialize] sopra la proprietà List<penna> il
grafo sarà di un solo oggetto. Cioè sei tu a decidere quali reference
attivi siano serializzati e quali no.
> Cmq, per prova ho aggiunto l'attributo <Serializable> anche alla classe
> Scatola, a questo punto mi viene alzata l'eccezione che il mio controllo
> MioControllo (quello che contiene la ListView) non e' seriaizzabile. Proviamo
> quindi ad aggiungere l'attributo <Serializable> anche al mio controllo (???),
> viene alzata l'eccezione che la classe che definisce le Form non e'
> contrassegnata come serializzabile (!!!)
Hai dei riferimenti attivi dalla scatola al controllo? Questo puzza di
errore di progettazione.
>
> Ora, da quanto ne so io, per essere serializzabile una classe, se eredita da
> una classe base, anche la classe base deve essere serializzabile; se contiene
> riferimenti ad altri oggetti, le rispettive classi devono essere
> serializzabili. Non mi sembra pero' che la cosa si propaghi anche ai livelli
> superiori.. in effetti, a naso, non avrebbe senso.
> Sbaglio molto?
Sei sempre tu a decidere cosa serializzare e cosa no grazie a
NoSerialize e altri strumenti quali:
- gli eventi di Serialize e Deserialize che ti permettono di
"attaccare" e "staccare"  i reference in modo da evitare che quella
parte del grafo sia serializzata
- implementare ISerializable al posto del meccanismo di default per
controllare in modo capillare (via codice) cosa serializzare e cosa no
Il serializzatore non fa differenza tra una tua classe e una del
framework da serializzare, ed è giusto che sia così.



text:
...
>Un grafo viene identificato grazie ai reference che collegano gli
oggetti tra loro.
Se tu istanzi una penna e basta, il grafo è costituito dal solo oggetto
penna.
Se istanzi una scatola e *referenzi* due penne (per esempio
aggiungendole ad una List<penna> che sta dentro la scatola) il grafo
sarà composto da 3 oggetti.
...
Uhm, ok
La cosa strana pero' e' che anche nel caso dell'altro controllo (quello che
non mi sta dando problemi), ho una serie di oggetti che al loro interno
hanno una List (of )... cioe', mi spiego meglio...
controllo MioSecondoControllo, questo contiene nel suo interno due ListView,
una mostra una serie di oggetti di tipo Blister. Ogni Blister ha una List
(of Chiodo).
Quando nella ListViewBlister seleziono un oggetto di tipo Blister, in una
seconda ListView mostro tutti gli oggetti Chiodo contenuti nella List (of
Chiodo) dell'oggetto Blister selezionato.
A questo punto faccio un D&D da questa seconda ListView al mio controllo
Wpf, passando come argomento Data del metodo SecondaListView.DoDragDrop
l'oggetto Chiodo appartenente alla List (of Chiodo) dell'oggetto Blister.
Da quanto detto nel tuo post, mi aspetterei lo stesso comportamento anche
qui, cioe' di non riuscire a fare il D&D a meno che la classe Blister non
sia anche lei serializzabile.
Beh, ho provato, e invece funziona tutto. Boh!
...
>Hai dei riferimenti attivi dalla scatola al controllo? Questo puzza di
errore di progettazione.
...
Si, e' una cosa che in realta' faccio spesso.
Se devo mostrare un qualunque oggetto, spesso lo passo al controllo
visualizzatore, che sara' in grado quindi di visualizzare l'oggetto stesso.
Non mi sembra una cosa cosi' brutta da fare.. o no?!?!
Grazie ancora... Maurizio


text:
Errata corrige (no, e' proprio un errore di logica... ricordavo male)
...
>La cosa strana pero' e' che anche nel caso dell'altro controllo (quello che
non mi sta dando problemi), ho una serie di oggetti che al loro interno
hanno una List (of ) ...
...
controllato meglio il codice. In effetti in questo caso non vado a prendere
degli oggetti contenuti nella List (of Chiodo), ma faccio delle richieste
diverse e quindi i miei chiodi sono oggetti a se stanti, non vincolati a
nessuno.
Dovrei quindi riuscire a sganciare il mio oggetto Penna rispetto all'oggetto
Scatola.
Faccio un po' di prove!


text:
vbMizio wrote:
[...]
> Beh, ho provato, e invece funziona tutto. Boh!
Questo sembra superato dal tuo altro post ...
> ...
>>Hai dei riferimenti attivi dalla scatola al controllo? Questo puzza di
> errore di progettazione.
> ...
> Si, e' una cosa che in realta' faccio spesso.
> Se devo mostrare un qualunque oggetto, spesso lo passo al controllo
> visualizzatore, che sara' in grado quindi di visualizzare l'oggetto stesso.
> Non mi sembra una cosa cosi' brutta da fare.. o no?!?!
Io parlo di riferimenti dal modello verso un controllo visuale ...
[Serializable]
class ClassA
{
 public ClassB B {get;set;}
 public int X {get;set;}
}
[Serializable]
class ClassB
{
 public int Y {get;set;}
}
main()
{
 var a = new ClassA() { B = new ClassB(); }
}
Se serializzi A, ti porti dietro anche B.
Se serializzi B, non ti porti dietro A in quanto non hai reference
attivi verso A
Da quello che scrivi le classi che serializzano tengono un reference
(diretto o indiretto) verso un controllo UI e questo è una cosa da
evitare sempre.
>
> Grazie ancora... Maurizio
Prego



text:
Ciao,
comincio a non capirci piu' niente (non che prima avessi le idee troppo
chiare) :-)
Il mio controllo ha una proprieta', objScatola as Scatola
lo scrivo in VB 2008
Private m_objScatola as Scatola
Public WriteOnly Property objScatola as Scatola
   Set (byval value as Scatola)
      m_objScatola = value
   End Set
End Property
In base a quello che ci siamo detti, il grafo *deve* tenere conto anche del
mio controllo, dato che e' vivo un riferimento... o sbaglio?
Questa tecnica che ho appena mostrato, mi serve per un paio di motivi
importanti...
Come prima cosa posso intercettare gli eventi dell'oggetto Scatola
(naturalmente aggiungendo un Handler), e posso andare ad agire sull'oggetto
Scatola direttamente dal mio controllo UI.
E' cosi' brutto questo approccio?


text:
Ciao vbMizio,

no, non è brutto, ma appena agganci un hadler ad un evento di scatola
ecco che hai un riferimento che il serilizer cerca di navigare e
serializzare :-)
ecco perchè dicevo nel mio post di non passare in giro direttamente il
tuo grafo ma degli oggetti più semplici fatti ad hoc per il drag &
drop.



text:
Eccomi,
...
>no, non è brutto, ma appena agganci un hadler ad un evento di scatola
ecco che hai un riferimento che il serilizer cerca di navigare e
serializzare :-)
...
Cccci sua (si capisce di che zona sono? :-) )
L'handler rompe le scatole, quindi (beh, in questo caso)
...
>ecco perchè dicevo nel mio post di non passare in giro direttamente il
tuo grafo ma degli oggetti più semplici fatti ad hoc per il drag &
drop.
...
In realta' sto provando a passare un clone dell'oggetto Penna, che
chiaramente non ha riferimenti da nessuna parte, e cosi' funziona.
Devo pero' rivedere tutta la logica che c'e' dietro alle operazioni da fare
quando ho recuperato l'oggetto clone.
Scrivero'!


title: e' giunta l'ora di WPF anche per me

text:
Ciao a tutti,
come scritto nell'oggetto, sta arrivando anche per me il momento di passare
(almeno parzialmente, per ora) a wpf.
Sto provando a fare delle ricerche con san google, ma i risultati per ora
sono un po' confusi.
Avete da suggerirmi siti, guide, ebook e quanto altro per iniziare a fare
qualche cosa in wpf?
Possibilmente in italiano, non ho grandi problemi a capire l'inglese, ma se
oltre ai concetti di wpf devo anche sforzarmi a capire cosa leggo, i tempi
si dilatano un po', considerando anche che, da quanto leggo, la curva di
apprendimento di questa tecnologia e' abbastanza ripida... non vorrei
trovarmi in troppa difficolta' :-)
Grazie a tutti... Maurizio


title: e' giunta l'ora di WPF anche per me

text:

In italiano troverai davvero poco, quasi quasi ti conviene prendere
qualche libro, ma anche qui, in italiano non so consigliarti.
Questo video forse puň servire da introduzione:
http://www.dotnetmarche.org/files/folders/13_-_wpf__mvvm_29012010/entry5870.aspx
io ho girato per la rete senza seguire un percorso strutturato e
"pensato" e, sě, ti confermo che per me la curva di apprendimento č
stata parecchio ripida... certo, non avendo paragoni da fare (č stata la
mia prima esperienza con tecnologie "desktop", arrivando dall'embedded)
non so quanto valga la mia valutazione, perň credo di aver perso tanto
ma tanto tempo leggendo cose giuste nei momenti sbagliati.
Se posso permettermi (visto che nel newsgroup c'č piů di una persona che
ti puň dare suggerimenti piů mirati) ti consiglio il blog di Bea
Stollnitz, la mia preferita ;) pieno zeppo di "buon wpf":
http://bea.stollnitz.com/blog/
ciao e auguri!


title: e' giunta l'ora di WPF anche per me

text:
marcosabba submitted this idea :
> Il 11/05/2011 15:59, vbMizio ha scritto:
>> Ciao a tutti,
>> come scritto nell'oggetto, sta arrivando anche per me il momento di
>> passare (almeno parzialmente, per ora) a wpf.
>> Sto provando a fare delle ricerche con san google, ma i risultati per
>> ora sono un po' confusi.
>> Avete da suggerirmi siti, guide, ebook e quanto altro per iniziare a
>> fare qualche cosa in wpf?
>> Possibilmente in italiano, non ho grandi problemi a capire l'inglese, ma
>> se oltre ai concetti di wpf devo anche sforzarmi a capire cosa leggo, i
>> tempi si dilatano un po', considerando anche che, da quanto leggo, la
>> curva di apprendimento di questa tecnologia e' abbastanza ripida... non
>> vorrei trovarmi in troppa difficolta' :-)
>> Grazie a tutti... Maurizio
>
> In italiano troverai davvero poco, quasi quasi ti conviene prendere qualche
> libro, ma anche qui, in italiano non so consigliarti.
> Questo video forse può servire da introduzione:
>
>
http://www.dotnetmarche.org/files/folders/13_-_wpf__mvvm_29012010/entry5870.aspx
>
> io ho girato per la rete senza seguire un percorso strutturato e "pensato" e,
> sì, ti confermo che per me la curva di apprendimento è stata parecchio
> ripida... certo, non avendo paragoni da fare (è stata la mia prima esperienza
> con tecnologie "desktop", arrivando dall'embedded) non so quanto valga la mia
> valutazione, però credo di aver perso tanto ma tanto tempo leggendo cose
> giuste nei momenti sbagliati.
> Se posso permettermi (visto che nel newsgroup c'è più di una persona che ti
> può dare suggerimenti più mirati) ti consiglio il blog di Bea Stollnitz, la
> mia preferita ;) pieno zeppo di "buon wpf":
>
http://bea.stollnitz.com/blog/
> ciao e auguri!
Vedi se questi ti possono essere d'aiuto
http://www.microsoft.com/italy/beit/Msdn.aspx?author=Corrado%20Cavalli


title: e' giunta l'ora di WPF anche per me

text:
Ciao Corrado,
...
>Vedi se questi ti possono essere d'aiuto
>
http://www.microsoft.com/italy/beit/Msdn.aspx?author=Corrado%20Cavalli
...
Si si, li ho gia' scaricati tutti, grazie :-)


title: e' giunta l'ora di WPF anche per me

text:
Ciao Marco,
....
>In italiano troverai davvero poco, quasi quasi ti conviene prendere
qualche libro, ma anche qui, in italiano non so consigliarti.
....
Si si, sicuramente ne prendero' qualcuno (anzi, lo faro' prendere
all'azienda :-) :-) ), ma intanto era per iniziare a sperimentare un po'.
Grazie anche delle altre indicazioni che mi hai dato.


title: Buon manuale net in italiano

author: Daniele

text:
Buon pomeriggio a tutti
Vorrei iniziare a studiare un po di .net e mi chiedevo se qualcuno poteva
suggerirmi qualche buon manuale da cercare in libreria. Grazie

Ciao - Daniele

--
The best Italian leather bags and belts at
www.leatherstuscany.com


title: Buon manuale net in italiano

author: pino de pinis

text:
"Daniele" <
guy.ba...@gmail.com
> ha scritto nel messaggio
news:4ff30456$0$1599$5fc...@news.tiscali.it...
> Buon pomeriggio a tutti
> Vorrei iniziare a studiare un po di .net e mi chiedevo se qualcuno poteva
> suggerirmi qualche buon manuale da cercare in libreria. Grazie
>
> Ciao - Daniele
>
Se ti interessa per trasloco  cedo
Libro 'Programmare visual
basic.net
 versione 2003'

edizioni mondadori informatica

francesco balena

pag.1310   + cd  allegato

30 Euro


title: Efficienza operatore & su stringhe vs. List (Of String)

text:
Rieccomi a tediare :-)
Secondo voi (esperti di NET), nel caso di generazione di
"logs" testuali in memoria, che attualmente sto producendo
nella maniera più ingenua possibile,
cioè :
usando una stringa a cui accodo con & i vari pezzi (e si
parla di testi di alcuni KB spannometrici, max forse una
ventina di KB, ottenuti accodando da varie decine ad alcune
centinaia di piccole stringhette inline (literal) o generate
da funzioni),
sarebbe più o meno efficiente passare una List (Of String)
ed, invece di accodare, inserire ogni token come pezzo
indipendente ?
Per stringhe piccole e/o poco numerose (ma non so stimare la
soglia né dall'uno né dall'altro punto di vista) sicuramente
la Lista ha un overhead maggiore.
Però mi sto chiedendo se la necessità di continuamente
riallocare (che magari è solo ipotetica se venissero
allocati chunck di memoria largamente sovradimensionati, di
cui non so nulla cmq) e magari spostare i risultati, e avere
tanti temporanei, possa a un certo punto essere penalizzante
rispetto alla capacità intrinseca della lista di conservare
pezzi sparsi.
L'overtime di convertire la lista a log si avrebbe solo una
tantum (al salvataggio).
Che ne pensate ?
O diversamente, esiste qualche altro oggetto intrinseco
"semplice" di memoria per una funzione del genere ? (no
stream o files).
grazie
Soviet


author: Andrea Saltarello

text:
Il 22/03/2011 02:07, Soviet_Mario ha scritto:
> O diversamente, esiste qualche altro oggetto intrinseco "semplice" di
> memoria per una funzione del genere ? (no stream o files).
La classe System.Text.StringBuilder fa esattamente questo: tu Append()i
i blocchi e lui li "infila" in una lista (eventualmente avvantaggiandosi
anche delle funzioni di "interning" del CLR); quando invochi ToString()
produce la stringa "definitiva"
--
.A
GUISA -
http://www.guisa.org
UGIdotNET -
http://www.ugidotnet.org
Read my blog at:
http://blogs.ugidotnet.org/pape


text:
On 3/22/2011 8:19 AM, Andrea Saltarello wrote:
> Il 22/03/2011 02:07, Soviet_Mario ha scritto:
>> O diversamente, esiste qualche altro oggetto intrinseco "semplice" di
>> memoria per una funzione del genere ? (no stream o files).
>
> La classe System.Text.StringBuilder fa esattamente questo: tu Append()i
> i blocchi e lui li "infila" in una lista (eventualmente avvantaggiandosi
> anche delle funzioni di "interning" del CLR); quando invochi ToString()
> produce la stringa "definitiva"
+1.
Aggiungo che sul sito di .NET Marche (LUNGA VITA!!!) ci sono degli
interessanti screencast che trattano problemi di performance in
sistuazioni analoghe.
Ciao,
Giulio
--


text:

grazie a entrambi ! Mi studierò StringBuilder ... Purtroppo
non è pigrizia, io frugo molto nell'help, ma certe cose le
trovi solo se sai già i nomi da cercare purtroppo :)
Perfect
ciao
Soviet
> Ciao,
> Giulio
>
> --
>
>


title: Protezione del codice: offuscamento, attivazione, firma degli assembly, etc.

author: slamballx

text:
Ciao a tutti
mi servirebbe un'opinione sulle best practices per proteggere la
proprietà intellettuale del codice.

La mia situazione è un po' estrema in quanto dovremo installare un
nostro applicativo (ovviamente .net) su un server "partner" al quale
però non avremo accesso.
Manutenzione, gestione e tutto il resto verranno eseguite dal
"partner".
Uso partner tra virgolette non a caso: purtroppo è uno di quei partner
dai quali si deve stare bene in guardia.
In pratica il codice deve andare dritto nella tana del leone.

Abbiamo già provveduto a gestire offuscamento e chiave di attivazione.
Sull'offuscamento vi chiedo solamente se secondo voi "basta" qualcosa
di free tipo Dotfuscator Community Edition o se è (quasi)obbligatorio
usare le versioni a pagamento, e in tal caso quale sia la migliore.

Sulla chiave di attivazione non ho particolari richieste ma qualsiasi
suggerimento è ben accetto.

Pensavo inoltre di aggiungere la firma di tutti gli assembly in modo
da non permetterne l'utilizzo da parte di programmi esterni.

Ci sono altri accorgimenti da prendere in considerazione?

Grazie mille,
Simone


author: Mauro Servienti [MVP]

text:
Ciao slamballx,

You wrote on 25/10/2011 :
> Abbiamo già provveduto a gestire offuscamento e chiave di attivazione.
> Sull'offuscamento vi chiedo solamente se secondo voi "basta" qualcosa
> di free tipo Dotfuscator Community Edition o se è (quasi)obbligatorio
> usare le versioni a pagamento, e in tal caso quale sia la migliore.

neanche dipinto sui muri, Goliath.Net (punto), *tutti* gli altri
l'autore di Goliath (Marcello Cantelmo) li ha bellamente craccati.

> Pensavo inoltre di aggiungere la firma di tutti gli assembly in modo
> da non permetterne l'utilizzo da parte di programmi esterni.

non serve a quello e quindi non funzionerebbe.

.m

--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com/profile/mauro

blog @
http://milestone.topics.it

whynot [ at ] topics [ dot ] it


text:
On Oct 25, 6:43 pm, Mauro Servienti [MVP]

> blog @
http://milestone.topics.it

> whynot [ at ] topics [ dot ] it

grazie Mauro per la dritta su Goliath!

firmare assembly: utilizzo != modifica.
firmando un assembly, tra le altre cose, si nega la possibilità di
modificare l'assembly ma non di utilizzarlo, corretto?
se capisco bene non esiste un modo per negare l'utilizzo di terzi ma
solo tecniche che rendono più difficile riuscirci

cosa ne pensi di Goliath + ILMerge?
magari modificando tutti i public in internal, può essere un giusto
compromesso?


author: Marcello Cantelmo

text:
ciao Mauro,

...qui c'è gente che si fida poco! fai presente che non ci conosciamo
di persona e che non hai mai ricevuto nulla in cambio...per tutta la
pubblicità occulta che mi hai sempre fatto: giudichi solo un prodotto.

grazie mille

> neanche dipinto sui muri, Goliath.Net (punto), *tutti* gli altri
> l'autore di Goliath (Marcello Cantelmo) li ha bellamente craccati.

oops! ma così mi fai passare per un h4ck3r che non sono. inoltre, non
ho craccato un bel niente!

fa piacere, comunque, constatare la libertà di opinioni: pur essendo
un MVP MS...che sponsorizza Dotfuscator...non ti lasci condizionare!
complimenti

come ricercatore/sviluppatore (di protezioni) più di qualche volta ho
segnalato alla comunità le varie vulnerabilità: far passare il
"renaming dei simboli" (leggi DF) come protezione efficace nel
combattere il reverse-enginnering delle applicazioni .NET offende la
mia intelligenza...ed ho cercato negli anni di trovare una qualche
soluzione al problema.

l'ultimo periodo è davvero un pò particolare:

come ho scritto ieri sera su facebook: "i produttori di obfuscators"
hanno fatto inca**are qualcuno di brutto (penso di aver capito di chi
si tratta ma non abbastanza sicuro per divulgare la notizia)...ed ora
questo qualcuno sta "affondando" gli obfuscators uno-alla-volta:

https://github.com/0xd4d/de4dot/downloads
 ...(N.B.: ci sono, comunque,
anche altri tools)

la versione in questione elimina automaticamente la protezione dei
seguenti obfuscators:

- CliSecure;
- CryptoObfuscator;
- Dotfuscator;
- Eazfuscator;
- SmartAssembly;
- generici obfuscator

chi privo di "nuove idee di protezione" ha copiato le "vecchie" idee
di un competitors...farà la giusta fine che merita!

...che tu sappia Microsoft ha mai rilasciato specifiche tecniche sulla
struttura interna dei file xaml/baml?

> > Pensavo inoltre di aggiungere la firma di tutti gli assembly in modo
> > da non permetterne l'utilizzo da parte di programmi esterni.
>
> non serve a quello e quindi non funzionerebbe.

+1

la firma dev'essere usata con altre cose (encryption, ect.) per
rendere inseparabile il legame con l'applicazione

> .m

ciao,
Marcello Cantelmo
www.cantelmosoftware.com


text:
ciao,

> cosa ne pensi di Goliath + ILMerge?

Goliath .NET Obfuscator dispone all'interno di un parametro di
protezione /merge che serve proprio per fondere due o più assembly

la tecnica utilizzata non usa ilmerge per possibili problemi di
utilizzo/licenza (di prodotti Microsoft)

se mi posso permettere: consiglio di *non* utilizzare questa
tecnica!!! l'aggressore in questo modo si ritrova a dover analizzare
un solo assembly! ;-)

usa tranquillamente un main assembly e le eventuali dll referenziate.
addirittura in goliath puoi usare: exe+dll (referenziate)+altro exe
che referenzia le stesse dll :-ooo e processare tutto in un'unica
passata

chi cerca di spacchettare il tuo codice DEVE, necessariamente,
lavorare in contemporanea come Goliath .NET Obfuscator

grazie per l'attenzione
Marcello Cantelmo
www.cantelmosoftware.com


text:

Ottime info, grazie.
Mi guarderò la documentazione di Goliath con piacere.

Non è stato elencato Babel, anche quello è tra i "craccati"?


text:
> Ottime info, grazie.
> Mi guarderò la documentazione di Goliath con piacere.

goliath /? (...semplice no?) ...anche se il parametro "/merge" è
attivo solo nella versione commerciale

> Non è stato elencato Babel, anche quello è tra i "craccati"?

...lo stai già usando?

il "clone" inizia a fare beneficenza (regalando versioni
free) ...sulle "idee" (tecniche di protezione) degli altri (periodo di
riferimento 2006-2008):

http://www.cantelmosoftware.com/download/obfuscator_clone.pdf

...per poi diventare, successivamente, a pagamento. questo "clone",
attualmente, fa parte degli obfuscator generici.

grazie per l'attenzione,

Marcello Cantelmo
www.cantelmosoftware.com


text:

Si, Babel l'ho usato ma non per il progetto in questione.
Ho usato la versione free 3.5.0, adesso ho visto che è cambiato molto.


text:
Ciao Marcello,

You wrote on 26/10/2011 :
> ciao Mauro,
>
> ...qui c'è gente che si fida poco! fai presente che non ci conosciamo
> di persona e che non hai mai ricevuto nulla in cambio...per tutta la
> pubblicità occulta che mi hai sempre fatto: giudichi solo un prodotto.

non ci siamo neanche mia visti in faccia :-)

> oops! ma così mi fai passare per un h4ck3r che non sono. inoltre, non
> ho craccato un bel niente!
>
> fa piacere, comunque, constatare la libertà di opinioni: pur essendo
> un MVP MS...che sponsorizza Dotfuscator...non ti lasci condizionare!
> complimenti

Dotfuscator? vade retro :-)

> ...che tu sappia Microsoft ha mai rilasciato specifiche tecniche sulla
> struttura interna dei file xaml/baml?

non credo, dovresti chiedere a Raff, una volta abbiamo parlato del
parser/compilatore baml ma non ricordo i dettagli.



title: [VB.NET] notifica stile callback ad un istanza di oggetto-classe dell'avvenuta o in corso distruzione

text:
Salve ... sicuramente è roba trita e ritrita, ma sono duro
alla logica del GC.

In una classe ho un contatore univoco "ID" di istanza,
generato ad ogni NEW in modo banale (incrementando di uno
una variabile statica, o SHARED per dirla alla VB).
Esiste anche una factory shared, che attinge allo stesso
contatore shared, per cui di fatto è garantito che ogni
oggetto, temporaneo o meno, abbia il suo ID univoco.

Ora io voglio redistrare in un dizionario quel benedetto
"ID" univoco e usarlo come chiave per recuperare le istanze
in modo ultra fast senza navigare o frugare (dimenticavo, la
struttura è un grafo molti-a-molti, percorribile sia in
discesa che in salita).

Il problema che mi sto ponendo è : se ogni tanto si generano
dei temporanei, o se cmq deliberatamente dei nodi si
cancellano, dovrei localizzare un punto del codice dove
poter intercettare l'azione prima che venga fatta qualsiasi
manovra, per valutare se 1) riallacciare i puntatori
scavalcando il nodo rimosso e 2) togliere il suo ID dal
dizionario per non rischiare di ottenere una reference ad
istanza diventata inesistente.

Insomma, mi farebbe comodo quel che per i vecchi form erano
form_unload, o qualche routine tipo "on_dispose", che però
venga chiamata piuttosto presto, quando i puntatori sono
ancora consistenti.

Avrei bisogno di qualche dritta su come capire quando viene
chiamato e quando il garbage collector si accinge a
cancellare dei dati.
Anzi ... a dirla tutta a me non interessa capire quando
FISICAMENTE lui evada la pratica, ma semplicemente quando
firma la condanna da eseguire poi magari dopo con calma.
Io vorrei che prima di firmare mi facesse un fischio, in
modo da poter gestire le pratiche in sospeso.

grazie in anticipo
Soviet


author: LudovicoVan

text:
"Soviet_Mario"  wrote in message
news:4ee4efef$0$1385$4faf...@reader2.news.tin.it...

> Io vorrei che prima di firmare mi facesse un fischio, in modo da poter
> gestire le pratiche in sospeso.

Potresti implementare IDisposable sui tuoi "nodi".  Implementato da manuale
(vedi documentazione), hai garanzia che il Dispose venga invocato prima del
rilascio dell'oggetto, e da li' puoi fare piu' o meno quello che vuoi...

-LV


text:

provo a studiare ancora ... al momento mi manca una base
sufficiente da capire il tuo suggerimento.

Cmq io non ho solo bisogno di sapere che in qualche parte
venga invocato Dispose : dovrei proprio intercettarlo e
scrivere del codice mio nel corpo della funzione in cui si
intercetta la chiamata ... perdona il linguaggio nebuloso,
tipico di quando non si conosce l'argomento
ciao
Soviet

>
> -LV
>


text:
"Soviet_Mario" <Soviet...@CCCP.MIR> wrote in message
news:4ee65572$0$1388$4faf...@reader1.news.tin.it...
> Il 12/12/2011 19:35, LudovicoVan ha scritto:
>> "Soviet_Mario"  wrote in message
>> news:4ee4efef$0$1385$4faf...@reader2.news.tin.it...
>>
>>> Io vorrei che prima di firmare mi facesse un fischio, in modo da poter
>>> gestire le pratiche in sospeso.
>>
>> Potresti implementare IDisposable sui tuoi "nodi". Implementato da
>> manuale (vedi documentazione), hai garanzia che il Dispose venga
>> invocato prima del rilascio dell'oggetto, e da li' puoi fare piu' o meno
>> quello che vuoi...
>
> provo a studiare ancora ... al momento mi manca una base sufficiente da
> capire il tuo suggerimento.

Ahime', iIl mio suggerimento non era troppo corretto.  Provo a ripartire da
capo:

In C# (come in VB) esistono i finalizer (distruttori).  Se un classe
implementa il distruttore, una sua istanza che e' marcata per il GC viene
accodata nella lista di finalizzazione e il finalizer prima  poi viene
invocato (cioe' non deterministicamente).  Il limite e' che dal finalizer si
possono solo rilasciare le risorse unmanaged, le risorse managed (via
qualunque reference type) non sono accessibili perche' potrebbero nel
frattempo essere state finalizzate...

Per ovviare a questo limite, in .Net esiste l'interfaccia IDisposable e
relativa linea guida.  Dal metodo Dispose l'oggetto ha la possibilita' di
fare un clean-up ordinato, in particolare puo' accedere alle sue reference
managed e puo' rilasciarle, come puo' anche, per esempio, invocare un
delegate o sollevare un evento, che magari rassomiglia di piu' al tuo caso.
Ma anche IDisposable ha un limite, ovvero che il Dispose deve essere
invocato dal codice utente, o implicitamente usando uno using statement,
oppure con una chiamata esplicita appunto al metodo Dispose dell'oggetto
(spesso comunque in un try-finally).

> Cmq io non ho solo bisogno di sapere che in qualche parte venga invocato
> Dispose : dovrei proprio intercettarlo e scrivere del codice mio nel corpo
> della funzione in cui si intercetta la chiamata ... perdona il linguaggio
> nebuloso, tipico di quando non si conosce l'argomento

E' nel metodo Dispose (in particolare nel Dispose(Boolean), come da link
riportati sotto) che implementi la logica che ti serve: magari invochi un
delegate, oppure sollevi un evento.  Il secondo esempio nel primo link
mostra un accesso diretto ad una List<T>, ma ovviamente ci puoi costruire
sopra.  Il secondo link contiene un approfondimento.  Per le informazioni di
base ti consiglio un giro su MSDN partendo da IDisposable Interface.

http://msdn.microsoft.com/en-us/library/b1yfkh5e.aspx

http://www.bluebytesoftware.com/blog/2005/04/08/DGUpdateDisposeFinalizationAndResourceManagement.aspx

Tutto cio' detto, e' difficile darti indicazioni piu' precise, lo scenario
che hai delineato e' alquanto generico/astratto e conoscendo piu'
strettamente i tuoi requisiti magari si puo' fare di meglio: ti ho suggerito
il pattern IDisposable solo perche' e' quello che nel framework piu' si
avvicina ad una idea di clean-up.

-LV


text:
Il 13/12/2011 01:43, LudovicoVan ha scritto:
> "Soviet_Mario" <Soviet...@CCCP.MIR> wrote in message
> news:4ee65572$0$1388$4faf...@reader1.news.tin.it...
>> Il 12/12/2011 19:35, LudovicoVan ha scritto:
>>> "Soviet_Mario" wrote in message
>>> news:4ee4efef$0$1385$4faf...@reader2.news.tin.it...

CUT
>
> In C# (come in VB) esistono i finalizer (distruttori). Se un classe
> implementa il distruttore, una sua istanza che e' marcata per il GC
> viene accodata nella lista di finalizzazione e il finalizer prima poi
> viene invocato (cioe' non deterministicamente). Il limite e' che dal
> finalizer si possono solo rilasciare le risorse unmanaged, le risorse
> managed (via qualunque reference type) non sono accessibili perche'
> potrebbero nel frattempo essere state finalizzate...

okay ... e questo quindi non è il mio punto di intervento
(uso solo codice VB pulito senza memoria unmanaged)

>
> Per ovviare a questo limite, in .Net esiste l'interfaccia IDisposable e
> relativa linea guida. Dal metodo Dispose l'oggetto ha la possibilita' di
> fare un clean-up ordinato, in particolare puo' accedere alle sue
> reference managed e puo' rilasciarle, come puo' anche, per esempio,
> invocare un delegate o sollevare un evento, che magari rassomiglia di
> piu' al tuo caso.

devo solo "scollegare" dei puntatori incrociati all'istanza
moribonda e ricollegarli tra loro, e disinserire il
puntatore (reference) all'istanza inserito in un dizionario

> Ma anche IDisposable ha un limite, ovvero che il
> Dispose deve essere invocato dal codice utente, o implicitamente usando
> uno using statement, oppure con una chiamata esplicita appunto al metodo
> Dispose dell'oggetto (spesso comunque in un try-finally).

uhm ... mumble. Devo ancora capire quale di questi casi sia
il mio.
O meglio devo capire quale degli eventi che dici sia
scatenato da azioni tipo :
eseguire il metodo CLEAR su una List(Of ClassNodo)
oppure
porre uguale a nothing una reference a un oggetto ClassNodo
che viene cancellato (in senso logico).

Per ora non ho implementato nessun distruttore, né
l'interfaccia IDisposable (sono del tutto nuovo a questo, ho
sempre usato oggetti generici built in, ma per un grafo
molti-a-molti percorribile in due sensi non ho trovato
nessun oggetto prefabbricato ... se no avrei usato lui)

>
>> Cmq io non ho solo bisogno di sapere che in qualche parte venga
>> invocato Dispose : dovrei proprio intercettarlo e scrivere del codice
>> mio nel corpo della funzione in cui si intercetta la chiamata ...
>> perdona il linguaggio nebuloso, tipico di quando non si conosce
>> l'argomento
>
> E' nel metodo Dispose (in particolare nel Dispose(Boolean), come da link
> riportati sotto) che implementi la logica che ti serve: magari invochi
> un delegate, oppure sollevi un evento.

studierò i links. Non ho reale necessità di invocare
callback esterne. Tutta la logica di coerenza dello stato
del grafo è interna alla classe stessa.

> Il secondo esempio nel primo link
> mostra un accesso diretto ad una List<T>, ma ovviamente ci puoi
> costruire sopra.

non ho ancora guardato, ma potrebbe essere molto prossimo a
quel che faccio, perché anche io ho una lista di "nodi"

> Il secondo link contiene un approfondimento. Per le
> informazioni di base ti consiglio un giro su MSDN partendo da
> IDisposable Interface.
>
>
http://msdn.microsoft.com/en-us/library/b1yfkh5e.aspx

>
http://www.bluebytesoftware.com/blog/2005/04/08/DGUpdateDisposeFinalizationAndResourceManagement.aspx

>
>
> Tutto cio' detto, e' difficile darti indicazioni piu' precise, lo
> scenario che hai delineato e' alquanto generico/astratto e conoscendo

si hai ragione. Anche in questo post, non ho chiarito granché.
Ora non avrei problemi a postare l'intera classe, solo che
costringere i volenterosi utenti a spulciare del codice
quasi incommentato è abbastanza sadico.

> piu' strettamente i tuoi requisiti magari si puo' fare di meglio: ti ho
> suggerito il pattern IDisposable solo perche' e' quello che nel
> framework piu' si avvicina ad una idea di clean-up.

Mi guardo tutti i link appena posso.

Cmq mi sono anche spiegato abbastanza male.
In realtà non devo manualmente "rilasciare risorse". Ho solo
necessità di mantenere coerenza nello stato interno di una
serie di oggetti (nodi) in un grafo dove ci sono molti
puntatori incrociati, ed un dizionario esterno che punta a
ciascun nodo distinto via un ID numerico.

Tra l'altro seguendo un consiglio dei post precedenti, ho
scoperto che il GC non viene nemmeno invocato quando almeno
una reference (anche PERSA) ad un oggetto rimane in vita.
Quel dannato dizionario, se non scollego manualmente il
riferimento al nodo che viene cancellato, avrebbe l'effetto
collaterale mortifero di 1) tenermi in vita perpetuamente
l'oggetto (anche se ormai scollegato dal grafo) e poi 2)
consentirmi di accedere con la scorciatoia a nodi scollegati
che non fanno più parte del grafo.

Vabbè ... ora poi studio i link, ne riparliamo solo dopo :)
ciao e grazie
Soviet

>
> -LV
>
>


text:
"Soviet_Mario"  wrote in message
news:4ee73176$0$1389$4faf...@reader1.news.tin.it...
> Il 13/12/2011 01:43, LudovicoVan ha scritto:

> > Il limite e' che dal
> > finalizer si possono solo rilasciare le risorse unmanaged, le risorse
> > managed (via qualunque reference type) non sono accessibili perche'
> > potrebbero nel frattempo essere state finalizzate...
>
> okay ... e questo quindi non è il mio punto di intervento (uso solo codice
> VB pulito senza memoria unmanaged)

Quello non e' il tuo punto di intervento perche' non puoi accedere a risorse
managed dal finalizer, non per altro.

> > Dal metodo Dispose l'oggetto ha la possibilita' di
> > fare un clean-up ordinato, in particolare puo' accedere alle sue
> > reference managed e puo' rilasciarle, come puo' anche, per esempio,
> > invocare un delegate o sollevare un evento, che magari rassomiglia di
> > piu' al tuo caso.
>
> devo solo "scollegare" dei puntatori incrociati all'istanza
> moribonda e ricollegarli tra loro, e disinserire il
> puntatore (reference) all'istanza inserito in un dizionario

Whatever: dal Dispose (al contrario del finalizer) puoi fare cio' che vuoi,
*incluso* scollegare i puntatori.  Qui il mio suggerimento era piuttosto che
invece di agire direttamente sul tuo dictionary e quant'altro, mi limiterei
ad invocare un delegate dal "nodo" e ad avere tutta la logica del grafo
magari nella factory o comunque incapsulata in una classe apposita (dove
sara' incapsulato appunto anche il dictionary).

> > Ma anche IDisposable ha un limite, ovvero che il
> > Dispose deve essere invocato dal codice utente, o implicitamente usando
> > uno using statement, oppure con una chiamata esplicita appunto al metodo
> > Dispose dell'oggetto (spesso comunque in un try-finally).
>
> uhm ... mumble. Devo ancora capire quale di questi casi sia il mio.

Non ci sono casi qui: o il codice utente invoca il Dispose sul tuo oggetto
"nodo" (esplicitamente o implicitamente con Using), oppure la logica di
"scollegamento" semplicemente non viene invocata.

> O meglio devo capire quale degli eventi che dici sia scatenato da azioni
> tipo :
> eseguire il metodo CLEAR su una List(Of ClassNodo)
> oppure [...]

No way!  Devi ciclare la lista e invocare il Dispose su ogni nodo perche' il
cleanup avvenga, *dopodiche'* puoi anche fare il Clear.  Di nuovo: se il
Dispose non viene invocato, non avviene lo "scollegamento".

> ma per un grafo molti-a-molti percorribile in due sensi non ho trovato
> nessun oggetto prefabbricato ... se no avrei usato lui)

Di solito tutta questa complicazione semplicemente non e' necessaria (a
proposito, lo sai che fra le varie collections hai anche LinkedList<T>?).
Nel tuo caso il "bagno di sangue" e' solo necessario per la gestione del
dictionary di lookup.  Fra l'altro ripeto che conoscendo meglio i tuoi
requisiti magari si puo' fare qualcosa di po' piu' semplice.

> Non ho reale necessità di invocare callback esterne. Tutta la logica di
> coerenza dello stato del grafo è interna alla classe stessa.

A tua scelta, anche se personalmente preferirei il dictionary di lookup e la
logica di costruzione come responsabilita' della factory appunto.

> > Il secondo esempio nel primo link
> > mostra un accesso diretto ad una List<T>, ma ovviamente ci puoi
> > costruire sopra.
>
> non ho ancora guardato, ma potrebbe essere molto prossimo a quel che
> faccio, perché anche io ho una lista di "nodi"

Si', magari se prima o poi te li guardi i link e' meglio, altrimenti a
Natale 2020 stiamo ancora a discutere di cos'e' IDisposable! :P

> In realtà non devo manualmente "rilasciare risorse".

Di nuovo: non importa che tu non hai risorse da rilasciare, qui si trattava
di trovare un valido hook da cui implementare la tua logica, e il pattern
IDisposable te lo fornisce, punto.

> Tra l'altro seguendo un consiglio dei post precedenti, ho scoperto che il
> GC non viene nemmeno invocato quando almeno una reference (anche PERSA) ad
> un oggetto rimane in vita.

Si', ma non e' un problema qui perche' stiamo parlando di implementare
IDisposable, che e' deterministica (ovvero avviene esattamente quando il
codice client la invoca), non stiamo parlando di implementare un finalizer.

Comunque, primo gentilmente guardati i link e la documentazione, altrimenti
non vale la pena continuare a discutere.  Secondo, a meno che non ci dici
quali sono i tuoi requisiti un po' piu' strettamente, temo che non ci sia
gran che da aggiungere.

-LV


title: Estendibilità di un visitor pattern

text:
Ciao a tutti,
ecco la mia gerarchia di classi:
interface IVisitor<T>
{
	T Visit(Foo item);
	T Visit(Bar item);
}
interface IVisitable
{
	T Accept<T>(IVisitor<T> visitor);
}
class Foo : IVisitable { ... }
class Bar : IVisitable { ... }
ora, in un altro assembly ho la necessità di definire una nuova classe
che implementa IVisitable e *due* implementazioni di IVisitor<T>
class AVisitor : IVisitor<int>
{
	int Visit(Foo foo) { ... }
	int Visit(Bar bar) { ... }
	int Visit(Widget w) { ... } //aggiunto
}
class AVisitor : IVisitor<string> : IVisitor<string> { ... } //come sopra
class Widget : IVisitable { ... }
Come faccio a estendere l'interfaccia di IVisitor<T>?
Grazie,
Giulio
--


title: Estendibilità di un visitor pattern

text:
Ciao a tutti,
On 2/8/2011 12:14 PM, Giulio Petrucci wrote:
[cut]
> Come faccio a estendere l'interfaccia di IVisitor<T>?
Un metodo potrebbe essere:
public static class Extensions
{
	public static int Visit(this AVisitor v, Widget w) { ... }
         public static string Visit(this BVisitor v, Widget g) { ... }
         public static T Visit<T>(this IVisitor<T> me, Gadget g)
         {
             if (me is AVisitor)
             {
                 int a = ((AVisitor)me).Visit(g);
                 return (T)(object)a;
             }
             if (me is BVisitor)
             {
                 string b = ((BVisitor)me).Visit(g);
                 return (T)(object)b;
             }
             throw new ArgumentException();
         }
}
Il problema è quel dannatissimo type-checking sul visitor con
conseguente numero infinito di cast. :-( Tuttavia, considerando che
l'alternativa è fare type-checking sulle mie entità (che implementano
IVisitable) e che le entità sono meno dei visitor, forse è meglio che mi
accontento di questi quattro guai. :-) Qualche consiglio?
Ciao,
Giulio
--


title: Estendibilità di un visitor pattern

text:
Ciao Giulio,
You wrote on 08/02/2011 :
> Come faccio a estendere l'interfaccia di IVisitor<T>?
perchè non un IVisitor<T, K>?
interface IVisitor<T, K>
{
    T Visit(K item);
}
interface IVisitable
{
    T Accept<T>(IVisitor<T, K> visitor);
}
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


title: Estendibilità di un visitor pattern

text:
Ciao Mauro,
innanzitutto grazie della risposta
On 2/9/2011 6:27 AM, Mauro Servienti [MVP] wrote:
> perchè non un IVisitor<T, K>?
Ci provo! :-)
> interface IVisitor<T, K>
> {
> T Visit(K item);
> }
>
> interface IVisitable
> {
> T Accept<T>(IVisitor<T, K> visitor);
> }
Uhm... due osservazioni a seguito del Cut&Paste -> Compila -> scrivi un
paio di classi -> F5.
1. nella dichiarazione del metodo Accept di IVisitable manca un tipo
generico K, evidentemente ti è sfuggita.
2. onestamente non riesco proprio a figurarmi *nessun* esempio di
utilizzo. Potresti darmi qualche indicazione in più?
Grazie,
Giulio
--


title: Estendibilità di un visitor pattern

text:
Ciao Giulio,
You wrote on 09/02/2011 :
> onestamente non riesco proprio a figurarmi *nessun* esempio di utilizzo.
neanche io, era solo un'elucubrazione fatta in treno.



title: Estendibilità di un visitor pattern

text:

Sempre se sto capendo, un'idea per il secondo assembly sarebbe
estendere le interfacce e lavorare con un pattern esteso a tutti gli
effetti:
-------------
interface IVisitor2<T> : IVisitor<T>
{
        T Visit(Widget item);
}
interface IVisitable2 : IVisitable
{
        T Accept<T>(IVisitor2<T> visitor);
}
class AVisitor : IVisitor2<int>
{
        int Visit(Foo item) { ... }
        int Visit(Bar item) { ... }
        int Visit(Widget item) { ... }
}
class BVisitor : IVisitor2<string> { ... }
class Widget : IVisitable2 { ... }
-------------
Scritto dal divano... :)
-LV


title: Estendibilità di un visitor pattern

text:

Fors IVisitable2 non deve estendere IVisitable, ma a questo punto
avrei bisogno di aprire VS...
-LV



title: come si fa a scrivere su una form?

author: Giuseppe

text:
Una volta c'era il metodo print ...
e adesso?
saluti
Giuseppe


title: come si fa a scrivere su una form?

text:
"Giuseppe" <
gcondoLevami...@tiscali.it
> wrote in message
news:it5ck8$am4$1...@news.albasani.net...
> Una volta c'era il metodo print ...
> e adesso?
Win forms o  web forms?  E che intendi per "scrivere su una form"?
Il "metodo print" mi fa pensare a JavaScript, ma JS esiste ancora...  Forse
intendevi in BASIC?  ;)
-LV

--- Posted via news://
freenews.netfront.net/
 - Complaints to
ne...@netfront.net
 ---


title: come si fa a scrivere su una form?

text:
Il 13/06/2011 20.38, LudovicoVan ha scritto:
> "Giuseppe" <
gcondoLevami...@tiscali.it
> wrote in message
> news:it5ck8$am4$1...@news.albasani.net...
>
>> Una volta c'era il metodo print ...
>> e adesso?
>
> Win forms o web forms? E che intendi per "scrivere su una form"?
>
> Il "metodo print" mi fa pensare a JavaScript, ma JS esiste ancora...
> Forse intendevi in BASIC? ;)
>
Scusa,
originariamente avevo mandato ad un ng che si occupava solo di VB .NET e
lė era scontato. Ma ora lo hanno chiuso...
Sė, si tratta di Visual Basic .NET.
Applicazione Windows Form.
Ai tempi del visual basic 5 o 6 per scrivere da programma qualsiasi cosa
su una form bastava usare appunto il metodo print.
In VB .NET ho visto non esiste pių questa possibilitā.
saluti
Giuseppe


title: come si fa a scrivere su una form?

text:
"Giuseppe" <
gcondoLevami...@tiscali.it
> wrote in message
news:it7m27$j30$1...@news.albasani.net...
> S�, si tratta di Visual Basic .NET.
> Applicazione Windows Form.
> Ai tempi del visual basic 5 o 6 per scrivere da programma qualsiasi cosa
> su una form bastava usare appunto il metodo print.
Ti premetto che ho poca familiarita' con win forms e ancora meno con VB6/7
(in particolare, non immagino quale potesse essere la logica del metodo
print...).  Comunque, in .Net win forms hai i controlli, accessibili dal
toolbox: magari una semplice Label e' quello che ti serve?  Guarda MSDN per
documentazione ed esempi.



title: come si fa a scrivere su una form?

author: Luca Menegotto

text:
On Tue, 14 Jun 2011 15:00:56 +0200, Giuseppe wrote:
> Ai tempi del visual basic 5 o 6 per scrivere da programma qualsiasi cosa
> su una form bastava usare appunto il metodo print.
>
> In VB .NET ho visto non esiste più questa possibilità.
Per fortuna, aggiungo.
Se tu vuoi disegnare sul form, devi farlo nell'evento Paint impiegando il
graphic context che ti viene passato come parametro.
Ciao!
Luca


title: come si fa a scrivere su una form?

text:
Il 14/06/2011 21.17, LudovicoVan ha scritto:
> "Giuseppe" <
gcondoLevami...@tiscali.it
> wrote in message
> news:it7m27$j30$1...@news.albasani.net...
>
>> S�, si tratta di Visual Basic .NET.
>> Applicazione Windows Form.
>> Ai tempi del visual basic 5 o 6 per scrivere da programma qualsiasi
>> cosa su una form bastava usare appunto il metodo print.
>
> Ti premetto che ho poca familiarita' con win forms e ancora meno con
> VB6/7 (in particolare, non immagino quale potesse essere la logica del
> metodo print...). Comunque, in .Net win forms hai i controlli,
> accessibili dal toolbox: magari una semplice Label e' quello che ti
> serve? Guarda MSDN per documentazione ed esempi.
>
Negativo.
La label � molto limitativa.
Il metodo print delle vecchie versioni consentiva di trattare una form
alla stessa stregua dello schermo, come se si trattasse di una
applicazione console.


title: come si fa a scrivere su una form?

text:
"Giuseppe" <
gcondoLevami...@tiscali.it
> wrote in message
news:itaf75$roa$1...@news.albasani.net...

Non dicevo di usare necessariamente una Label, ti segnalavo piuttosto di
guardare fra in controlli.  Comunque, come detto da Luca Menegotto, puoi
disegnare (e scrivere testo) sulla form anche in .Net e, se non ricordo
troppo male, con quella tecnica puoi anche disegnare sulla superficie di
certi controlli (windowed controls?) tipo il Panel o il PictureBox.  Non ti
garantisco i dettagli, ma guarda la documentazione e la miriade di esempi
che di sicuro trovi in rete.



title: come si fa a scrivere su una form?

author: Mei

text:

Scusa, ma molto banalmente utilizzare un controllo RichTextBox?
Saluti
	GC


title: 'Err.Number'  in C#

text:
Il corrispondente 'Err.Number' (vb), come si traduce in C#?
Grazie
nero23
Select Case Err.Number
Case -12345 Debug.Print("Non hai selezionato il punto iniziale del
rettangolo.")
Case -12346 Debug.Print("Non hai selezionato il punto finale del
rettangolo.")
End Select


title: 'Err.Number'  in C#

text:

Temo che On Error e relativi siano specifici del linguaggio VB. Per
passare a C# ti occorre qualcosa che e' piu' idiomatico del .Net in
generale: gestione delle eccezioni, ma, dall'esempio che riporti,
azzardo che qui forse si risolve con qualcosa di piu' sempice, del
tipo di qualche Int32.TryParse e qualche if... o cose simili...
(Risposta breve: va riscritta.)
-LV


title: 'Err.Number'  in C#

text:
Il 03/04/2011 02:30, LudovicoVan ha scritto:
> Temo che On Error e relativi siano specifici del linguaggio VB.
confermo: AFAIK tutto ciņ che concerne la keyword "Err" č "compiler
magic" ad opera del compilatore VB (BTW, tempo diedi una occhiata con
Reflector al codice IL emesso, e dava tanto l'idea di "pastrocchio")
> (Risposta breve: va riscritta.)
+1
--
.A
GUISA -
http://www.guisa.org
UGIdotNET -
http://www.ugidotnet.org
Read my blog at:
http://blogs.ugidotnet.org/pape


title: 'Err.Number'  in C#

text:
Ho risoloto in questo modo.
Grazie
Ciao
try
{
.....
.....
}
catch (Exception ex)
{
 switch (ex.Message)
{
  case -12345:
   Debug.Print("Non hai selezionato il punto iniziale del rettangolo.");
   break;
  case -12346:
   Debug.Print("Non hai selezionato il punto finale del rettangolo.");
   break;
 }
}


title: 'Err.Number'  in C#

text:

E' un pattern strano: Message e' una stringa e tu fai lo switch su due
interi fissi... Ma non ci fai vedere il corpo del try e gestisci una
Exception generica, quindi impossibile sapere come e perche' funziona,
e tanto meno e' possibile suggerirti come scrivere qualcosa di meno ad-
hoc e meno error-prone...
-LV


title: 'Err.Number'  in C#

text:
"LudovicoVan" <
ju...@diegidio.name
> ha scritto nel messaggio
news:0ecdd701-0216-43b6...@dr5g2000vbb.googlegroups.com...


>-LV
Riassumendo il corpo di try, non fa altro che disegnare un rettangolo dopo
aver fatto due click sul file Microstation (Microstation è un programma
simile ad Autocad).
Se non faccio il primo click sul file (precedentemente aperto con
Microstation),  Microstation genera un codice  di errore (-12345) e
ex.Message mi da esattamente la stringa -12345.
Idem se non do il secondo click sul file (in questo caso, genera -12346)...
ex.Message


title: 'Err.Number'  in C#

text:
Ciao NERO23,
You wrote on 03/04/2011 :
> ex.Message mi da esattamente la stringa -12345.
ti da esattamente la stringa "-12345", ma credo proprio che ti dia
anche una exception specifica.
.m
--
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @
http://milestone.topics.it
whynot [ at ] topics [ dot ] it


title: 'Err.Number'  in C#

text:
> ti da esattamente la stringa "-12345", ma credo proprio che ti dia
> anche una exception specifica.
da esattamente e solo la stringa "-12345"
ciao


title: 'Err.Number'  in C#

text:
Ciao NERO23,

appunto quindi non un numero, ergo il switch/case non è buono fatto
così. Inoltre metti un breakpoint nel catch e verifica che exception
effettivamente lancia.
> ciao



title: Data context multipli.

text:
Buondi a tutti.
Allora, studiando il mio bravo manuale vedo che, come mi aspettavo,
una volta impostato un data context poi ho accesso al meraviglioso
mondo di Linq To SQL.
Mi capita però abbastanza spesso di avere necessità di accesso
contemporaneo a due basi dati. In questo preciso momento, infatti, sto
realizzando un bridge tra PostgreSQL e SQL Server, e in ottica di
trasferimento dati ho ovvia necessità di avere due data context
lavorare simultaneamente. Con
ADO.NET
 e' semplice, due Connection da
assegnare in modo opportuno e la paura passa. Non mi è chiaro come
funziona la cosa con Linq; il manuale non mi aiuta, in quanto copre -
gustamente - gli aspetti più teorici, concentrandosi di esempio in
esempip in un singolo data contex; però sono convinto che gli amici di
Microsoft abbiano previsto anche questa eventualita'.
Mi date per cortesia un'idea di come la cosa funzioni?
Grazie in anticipo.
--
Ciao!
Luca Menegotto.


title: Data context multipli.

text:
Ciao Luca,
On 11/11/2010 11:43 AM, Luca Menegotto wrote:
> Mi capita però abbastanza spesso di avere necessità di accesso
> contemporaneo a due basi dati. In questo preciso momento, infatti, sto
> realizzando un bridge tra PostgreSQL e SQL Server, e in ottica di
> trasferimento dati ho ovvia necessità di avere due data context
> lavorare simultaneamente.
dato che sto affrontando un problema simile, ti faccio qualche domanda
per capire quanto i nostri scenari siano effettivamente simili.
1. usi un O/RM? EntityFramework presumo, giusto?
2. devi solo fare una migrazione di dati da RDBMS1 a RDBMS2 oppure la
tua applicazione deve gestire *contemporaneamente* dati provenienti da
entrambi i db? Nella seconda eventualità: hai anche il caso "estremo" in
cui le property di *una* singola entità provengano da due db diversi?
(esempio: un impiegato ha nome e cognome sul dbA mentre i numeri di
telefono sul dbB)
Fammi sapere,
Giulio
--