Translation class for c#

This post is a part of: http://mestaa.blogspot.com/2011/09/multilanguage-applications-with.html

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Globalization;
using System.Collections;
using System.Resources;
using System.Data;
using ChangeLanguage.Properties;

namespace ChangeLanguage.ViewModel
{
    /*
     * Helper class
     */ 
    class Translations
    {
        private static Settings settings = Settings.Default;

        //connection string
        private static DatabaseResourceManager databaseResourceManager = new DatabaseResourceManager(settings.translationsConnectionString);        

        public static string GetString(string identifier)
        {
            return databaseResourceManager.GetString(identifier, settings.currentCulture);
        }

        public static List GetCultureList()
        {
            return databaseResourceManager.CultureList;
        }
    }

    public class DatabaseResourceManager : ResourceManager
    {
        private string dsn;
        private Hashtable resources;

        public List CultureList { get; private set; }

        public DatabaseResourceManager(string dsn)
        {
            this.dsn = dsn;
            this.resources = new Hashtable();
            this.CultureList = GetLanguageList();
        }

        protected List GetLanguageList()
        {
            List cultureList = new List();

            DataTable dt = new DataTable();
            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = dsn;
            conn.Open();
            OleDbCommand command = new OleDbCommand("Select * From Translations"); // Here there is the reference to table name
            command.Connection = conn;
            OleDbDataAdapter da = new OleDbDataAdapter(command);
            da.Fill(dt);
            conn.Close();

            for (int i = 0; i < dt.Columns.Count; i++)
            {
                try
                {
                    if (dt.Columns[i].ColumnName != "Key")
                        cultureList.Add(new CultureInfo(dt.Columns[i].ColumnName));
                }
                catch (Exception exc)
                {
                    throw new CultureNotFoundException("Wrong culture code detected: " + dt.Columns[i].ColumnName.ToString() + "\n" + exc.Message);
                }
            }
            return cultureList;
        }

        protected override ResourceSet InternalGetResourceSet(CultureInfo culture, bool createIfNotExists, bool tryParents)
        {
            DatabaseResourceSet rs = null;

            if (this.resources.Contains(culture.Name))
            {
                rs = this.resources[culture.Name] as DatabaseResourceSet;
            }
            else
            {
                rs = new DatabaseResourceSet(dsn, culture);
                this.resources.Add(culture.Name, rs);
            }
            return rs;
        }
    }

    public class DatabaseResourceReader : IResourceReader
    {
        private string dsn;
        private string language;

        public DatabaseResourceReader
           (string dsn, CultureInfo culture)
        {
            this.dsn = dsn;
            this.language = culture.Name;
        }

        public IDictionaryEnumerator GetEnumerator()
        {
            Hashtable dict = new Hashtable();

            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = dsn;
            OleDbCommand command = conn.CreateCommand();
            if (language == "")
                language = "Default";

            command.CommandText = "SELECT [key], [" + language + "] " + "FROM Translations"; // Here there is the reference to table name

            try
            {
                conn.Open();

                OleDbDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    if (reader.GetValue(1) != System.DBNull.Value)
                        dict.Add(reader.GetString(0), reader.GetString(1));
                }

                reader.Close();
            }
            catch   // ignore missing columns in the database
            {
            }
            finally
            {
                conn.Close();
            }
            return dict.GetEnumerator();
        }

        public void Close()
        {
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return this.GetEnumerator();
        }

        void IDisposable.Dispose()
        {
        }
    }

    public class DatabaseResourceSet : ResourceSet
    {
        internal DatabaseResourceSet(string dsn, CultureInfo culture)
            : base (new DatabaseResourceReader(dsn, culture))
        {
        }

        public override Type GetDefaultReader()
        {
            return typeof(DatabaseResourceReader);
        } 
    }
}

if you see /cultureinfo at the end of the file, just remove it.

Leggere partizioni linux da windows

http://www.fs-driver.org/
Andare in pannello di controllo, dare un nome alla partizione, aprire con risorse del computer

Emule Aggiornare i server emule e un buon IpFilter per scaricare in modo sicuro senza fake e virus

Preso da http://www.pierpaoloromanelli.com/...i-scaricare.html

In emule è importante, anzi fondamentale evitare i Server fake, che mandano tanti file inutili e soprattutto virus.

Iniziamo la procedura

Dobbiamo aprire le opzioni generali di Emule, quindi clicchiamo sull'icona Opzioni di Emule

Ora scegliamo la scheda server e inseriamo 10 nella casella vicino all'opzione "Elimina i server inattivi dopo connessioni fallite"

Clicchiamo il pulsante lista.

Ci si apre il Notepad e inseriamo gli indirizzi migliori dove reperire i server migliori, vale a dire:

http://www.gruk.org/server.met.gz
http://www.peerates.net/servers.php

A questo punto attiviamo la voce "Scarica automaticamente la lista Server all'Avvio".

a questo punto disattiviamo le due voci Aggiorna la lista server quando ti connetti a un Server e Aggiorna la lista Server quando ti connetti a un Client

In questo modo non tiriamo dentro tante schifezze di server, ma li preleviamo soltanto da fonti sicure.

Clicchiamo su Ok a questo punto.

Proseguiamo cliccando sulla icona Server come in figura

Ora con il pulsante destro del mouse clicchiamo nel riquadro dei server e selezioniamo Elimina tutti i Server

Bene tutti i server dovrebbero essere scomparsi. Nessuna paura.

A questo punto incolliamo questo indirizzo http://www.gruk.org/server.met.gz , dentro la casella bianca sotto la voce "Aggiorna server met da URL".

E clicchiamo quindi su Aggiorna.

A questo punto la lista dei server torna, ma sono server finalmente puliti senza schifezze, virus, pubblicità né fake.

A questo punto dobbiamo controllare però i siti evidenziati in rosa, i quali dovranno essere rimossi dalla nostra lista di server.

Controlliamo la lista dei server in rosa in questo indirizzo: http://www.gruk.org/list.php

Quindi torniamo in emule nella scheda Server e leviamo i Server che sono uguali come indirizzo a quelli indicati in rosa.

Creare una lista di server statici a cui autoconnettersi

Andiamo in Opzioni -> Server Opzioni

Facciamo in modo che tutte e 4 le voci siano selezionate. In questo verremo connessi solo a server sicuri.

A questo punto clicchiamo su Ok e vediamo di riempire la lista dei server statici.

Andiamo nella scheda Server di Emule e scegliamo il server da aggiungere alla lista statica.

Scegliamo i server con tanti utenti e soprattutto con tanti files condivisi in modo da accaparrarci i migliori servizi offerti dai server.

Hijackthis e link x l'analisi del log file

download page
http://www.hijackthis.de/it

Windows per eeePC

riferimento a questo sito http://flasheee.blogspot.com/

Guida FlashEEE da USB
In questa piccola guida vedremo come flashare Windows XP da chiavetta USB.

Prima di tutto avrete bisogno di:
- Acronis TrueImage (ce ne sono di free oppure "compratele" sul vostro mulo preferito)
- Chiavetta USB da almeno 1 giga
- 10 minuti di tempo ;)

Prepararsi al flashing:
1. Installare Acronis TrueImage sul vostro computer, dopodichè collegare la chiavetta USB.
2. Aprire Acronis TrueImage e cliccare su "Create Bootable Rescue Media" nel menu a sinistra.
3. Cliccare su "Next", e selezionate Acronis TrueImage (Full version). Cliccate "Next".
4. Scegliete il media da creare: selezionate la vostra chiavetta USB.
5. Cliccate "Next" ed avviate il processo di creazione.
6. Una volta creato il media, accedetevi da Risorse del Computer e copiateci dentro il file "flashEEE.tib" che trovate allegato a questo file di istruzioni.
7. Rimuovere la chiavetta USB.
Flashing sull'SSD:
# Senza accendere l' EEEPC:
1. Disinserite tutte le eventuali periferische USB (inclusa la SDHC) collegate all'EEEPC.
2. Inserite la chiavetta USB preparata con Acronis.

*Nota: se la vostra chiavetta non risulta bootabile anche dopo questa preparazione, utilizzate il tool proposto da DuDu a questo indirizzo.

# Accendete l' EEEPC e premete ESC per poter visualizzare il menu di Boot.
1. Selezionare la vostra chiavetta USB e premete INVIO.
2. Una volta caricato il menu dell'Acronis fate partire TrueImage.
3. Cliccare su "Recovery", poi "Next".
4. Ora selezionate la vostra chiavetta USB (dovrebbe essere chiamata Removable Drive (A:) o (B:) ) ed indicate il file FlashEEE.tib, dopodichè cliccate su "Next".
5. Di nuovo "Next" su "Restore disks or partitions".
6. Selezionate il primo disco "NTFS (C:) ed il secondo "MBR and Track 0", poi "Next". (Fate attenzione perchè se avete un altro sistema operativo non funzionerà più un eventuale dual boot).
7. Di nuovo "Next" su "No, I do not want to resize partitions"
nota: se è la prima volta che modificate le partizioni (per esempio se avete ancora Xandros) avrete bisogno di cancellarle tutte con questo procedimento:
7-1. Anzichè selezionare "No, I do not want to resize partitions" lasciate il check su "Yes, I want to resize partitions" e cliccate "Next".
7-2. Selezionate il disco rigido interno (SSD) e cliccate su "Next".
7-3. Di nuovo "Next" su "Active".
7-4. Ora trascinate la linea della partizione fino alla fine, prendendo tutto lo spazio disponibile.
Ora saltate direttamente al punto 11.

8. Selezionate il disco rigido interno (SSD) e cliccate su "Next".
9. Di nuovo "Next" su "Active".
10. Di nuovo "Next".
11. Di nuovo "Next" su "No, I do not".
12. Di nuovo "Next".
13. Ora cliccate su "Proceed" ed attendete circa 7 minuti.
14. Al termine, scollegate la chiavetta USB e cliccate su "Ok" e chiudete l'Acronis: il computer si riavviera'.

A questo punto abbiamo terminato: non resta che godersi Xp sul piccolo gioiellino.

Installare linux su hd esterno USB

Istruzioni per installare in maniera permanente Ubuntu (o Ubuntu Eee) in una pendrive USB (o in una scheda di memoria SD).

Come unità di memoria ho usato per Ubuntu8.04 sia una pendrive Dane-Elec 8GB che una scheda Sandisk SDHC da 8GB mentre per Ubuntu Eee una scheda Sandisk SDHC da 4GB.

Nel PC su cui volete usare la pendrive deve essere possibile il boot da periferiche USB, controllate nel BIOS ed eventualmente posizionate la priorità di boot su USB.

Vi servono 2 pendrive, oppure 1 pendrive ed 1 scheda SD dipende da dove volete installare il S.O.;
questo è necessario perchè NON FUNZIONA se masterizzate la ISO e create un live CD, usando quest'ultimo per installare la distro sulla pendrive/SD.



Procuratevi la ISO della distribuzione che volete installare.

Sulla prima pendrive dovete metterci la live e renderla avviabile, tutto questo lo fa il programma Unetbootin ve lo potete scaricare da:

http://unetbootin.sourceforge.net/

Unetbootin ha varie versioni per le distro Linux e anche per Win, scegliete quella che fa al vostro caso, io ho dovuto usare Unetbootin-windows-282 dato che sul mio notebook c'è XP mentre l'Asus Eee PC 701 ha Xandros che non è compatibile.

Lanciate Unetbootin e scegliete l'opzione “Diskimage ISO” e selezionate la ISO della distro che volete installare, quindi scegliete alla voce “Tipo: Disco USB” la lettera corrispondente alla vostra pendrive, date l'ok e aspettate che finisca.

Dopo aver finito il tutto riavviate il PC dalla live. (Si può anche togliere la pendrive live e usarla su un secondo PC per eseguire l'installazione, nel mio caso ho creato la live dal notebook e poi i passaggi per l'installazione li ho fatti dall'Eee PC701).

Per chi fa partire la live dall'Asus Eee PC basta premere ESC all'inizio del caricamento e scegliere dalla lista che compare la pendrive live che Unetbootin ha reso avviabile.

Dopo aver avviato la sessione live collegate al PC la seconda pendrive o la scheda SD.

Selezionate “install” che dovrebbe essere sul desktop, fate i vari passaggi:
scelta della lingua, fuso orario, disposizione della tastiera,
arrivati al passo 4 di 7 andate a selezionare l'opzione:
“Guidato – usa l'intero disco” e andate a selezionare:
SCSI* (0,0,*) (sd*) - “capacità in GB” “vostra pendrive o SD” (la seconda che avete collegato)

ad esempio nel mio caso la pendrive era identificata da:
SCSI3 (0,0,0) (sdb) – 8.3 GB USB DISK Pro.

Continuate i passi seguenti e inserite nome password etc, importare documenti e impostazioni.

Arrivate quindi al passo 7 di 7 dove deve essere selezionata (dovrebbe esserlo di default) la casella con l'opzione “installa boot loader”, e qui dovete selezionare “Avanzato” e con la freccia che si trova a destra di “Device per l'installazione del boot loader” andate a selezionare la vostra pendrive o SD dove state effettuando l'installazione:

/dev/sd* vostra SD o Pendrive (*.* GB)

sempre per esempio nel mio caso era:
/dev/sdb USB DISK Pro (7.7 GB)

Fatto questo date l'ok e fate partire l'installazione.

Dopo che l'installazione è finita, e può volerci anche mezz'ora, riavviate il pc e fate in modo che parta dalla periferica su cui avete installato il S.O., vi uscirà la scritta grub loading stage 1.5 e poco dopo vi appare il menù di scelta che nel mio caso con Ubuntu Eee e sull'Eeepc è:
Ubuntu 8.04.1. Kernel 2.6.24-21-eeepc
Ubuntu 8.04.1. Kernel 2.6.24-21-eeepc (recovery mode)
Ubuntu 8.04.1. memtest86+
Other operating systems:
Normal Boot (on /dev/sda1)
Perform Disk Scan (on /dev/sda1)
Restore Factory Settings (on /dev/sda1)

le ultime 3 righe qui sopra nel mio caso si riferiscono a Xandros dell'Eee -
se avete qualche altro S.O. sul PC sul quale avete operato questo sarà elencato lì.

A questo punto se selezionate una qualsiasi voce NON funziona ma segnala un errore di Grub.

Bisogna quindi andare sulla prima riga, nel caso qui sopra “Ubuntu 8.04.1. Kernel 2.6.24-21-eeepc” e premere la lettera “e” per editare, quindi nella maschera che si apre sulla prima riga “root (hd*,0)” premere di nuovo “e” cambiando il numero che trovate al posto dell'asterisco con lo 0 si avrà quindi root (hd0,0), quindi premete invio e poi la lettera “b” per fare il boot. A questo punto esce la scritta starting up e si avvia Ubuntu chiedendovi il nome utente e la password che avete inserito prima in fase di installazione.
Per rendere definitiva la variazione poiché da lì non viene memorizzata, dopo aver fatto partire Ubuntu aprite un terminale e andate ad editare - "sudo gedit /boot/grub/menu.lst" scorrete l'elenco e dopo i vari esempi troverete la scritta “end default options”, qui cambiate, (come avete fatto prima) dopo “root” da (hd*,0) a (hd0,0) in tutte le voci root che trovate quindi salvate rendendo definitiva la variazione.

Inoltre solo per chi ha l'Eee, e ha lo ha usato per l'installazione, dopo END DEBIAN AUTOMATIC KERNELS LIST fate la stessa cosa in Normal Boot, Perform Disk Scan e Restore Factory Settings,da (hd*,0) a (hd1,0) così vi funzionano le opzioni di Xandros anche da lì. Questa operazione: da (hd*,0) a (hd1,0) dovrebbe valere anche se avete eventuali altri sistemi operativi presenti invece di Xandros, ma non avendolo mai provato non ne ho la certezza.

A questo punto avete finito, al prossimo riavvio scegliendo la pendrive o la SD questa farà partire Ubuntu.

La stessa funzionerà anche su altri PC tenendo in memoria le vostre impostazioni, programmi etc. come se fosse installata sull'hard disk, ricordatevi però che ogni volta che cambiate il PC su cui inserite la pendrive o la SD queste rilevano la configurazione hardware del PC dove sono in esecuzione e questo dopo un po' può rallentare la velocità di esecuzione del S.O.

si ringrazia stevekh3 di eeeuser.com