tisdag 31 mars 2009

DEVTIPS #5 Convert from Html color to System.Drawing.Color

            Color color = ColorTranslator.FromHtml("#ffffff");
            MessageBox.Show(color.ToString());

DEVTIPS #4 Parsing Enums

    public enum ColorRgb
    {
        Red,
        Green,
        Blue
    }

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ColorRgb clr = (ColorRgb)Enum.Parse(typeof(ColorRgb), "Green");
            MessageBox.Show(clr.ToString());
        }
    }


Inspiration

Idag är det en sådan där typisk dag när jag bara känner mig enormt rastlös. Ingenting är inspirerande eller roligt. Jag ger upp för idag vi hörs imorgon. 

DEVTIPS #3 Serialize

Serializering av data:
string str = "Programmering är roligt!";
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms1 = new MemoryStream();
bf.Serialize(ms1, str);
ms1.Position = 0; // Väldigt viktigt att nollställa positionen för streamen.
byte[] serializedString = ms1.ToArray();
ms1.Close();

MemoryStream ms2 = new MemoryStream(serializedString, 0, serializedString.Length);
string s = (string)bf.Deserialize(ms2);
ms2.Close();
MessageBox.Show(s);

Det går utmärkt att serialisera ner egna objekt till en databas för att hålla reda på mer komplexa states t ex. Kom bara ihåg att i klassdefenitionen att lägga till attributen [Serializable] före klassen:

    [Serializable]
    public class MyClass {
    }


DEVTIPS #2 Intellisense

Detta tips gäller kortkommando för att göra en resolve på intellisense.

I det här fallet saknar StringBuilder en referens till System.Text. Det dyker upp en liten röd fyrkant nere till höger av kommandot som man kan klicka på. Tryck istället CTRL+. (Control+punkt) för att få upp intellisense->resolve. Tryck sedan Enter för att lägga till referensen. Detta finns också i menyn Edit->Intellisense->Resolve.



Smidigt och enkelt, snabbar upp programmeringen avsevärt när man vill lägga till saknade referenser.


måndag 30 mars 2009

DEVTIPS #1 Active Directory Sökning

Lägg till en referens till System.DirectoryServices för att kommunicera med Active Directory trädet.

using System.DirectoryServices;

  • Skapa först ett DirectoryEntry object och binda till AD-trädet. Detta entry används sedan som sökrot för DirectorySearcher.
DirectoryEntry de = new DirectoryEntry("LDAP://ad.domain.lan/ou=startorg, dc=domain, dc=lan", "användarnamn", "lösenord");
string filter = "(&(objectClass=OrganizationalUnit)(ou=Namn här*))";
            SearchResultCollection src = null;
            try {
  • använd using här annars kommer directorysearcher att leva kvar väldigt länge och ta upp connections vilket kan leda till stora problem.
                using (DirectorySearcher ds = new DirectorySearcher(de, filter)) {
                    src = ds.FindAll();
                }
            } catch {
  • stäng root entryt om något går snett. Väldigt viktigt! Och disposa searchresult. Samma sak här det blir hängande connections kvar mot trädet.
                de.Close();
                src.Dispose();
            }
            if (src != null) {
                foreach (SearchResult sr in src) {
  • I searchresult ligger sedan alla hittade entries, väldigt smidigt.
                    DirectoryEntry deFound = sr.GetDirectoryEntry();
                    MessageBox.Show(deFound.Guid.ToString());
                }
            }
  • Rensa upp connections mot trädet.
            src.Dispose();
            de.Close();

Hela koden:
DirectoryEntry de = new DirectoryEntry("LDAP://ad.domain.lan/ou=startorg, dc=domain, dc=lan", "användarnamn", "lösenord");
string filter = "(&(objectClass=OrganizationalUnit)(ou=Namn här*))";
SearchResultCollection src = null;
try {
 using (DirectorySearcher ds = new DirectorySearcher(de, filter)) {
               src = ds.FindAll();
      }
} catch {
        de.Close();
        src.Dispose();
}
if (src != null) {
        foreach (SearchResult sr in src) {
                DirectoryEntry deFound = sr.GetDirectoryEntry();
                MessageBox.Show(deFound.Guid.ToString());
        }
}
src.Dispose();
de.Close();

Rastlös

Fyllde 40 år i helgen. Present till mig själv, slutat snusa och tränat hårt i 8 månader. Mår jag bra? Jag mår underbart. Dock är jag mer rastlös än vanligt och det skyller jag på att jag har slutat snusa. Blev rekommenderad av en doktor att inte sluta snusa eftersom jag lider av ADHD, den hyperaktiva sidan. Rastlös dygnet runt och kan nästan aldrig sova. Impulsiv som bara den, det sliter fint på kroppen. Jobbar som programmerare, kanske lägger upp något tips här någon gång. Men antagligen har jag tröttnat på den här bloggen innan solen har gått ner. Kanske inte. Lägger upp ett programmeringstips angående Active Directory.