Darkleo’s Blog
Ein Schatz, der seinen Besitzer überallhin begleitet.

.NET User Group Dortmund Treffen - 02.11.2011 ab 18:00 Uhr - PowerShell, eine Waffe unter den Entwicklertools!

October 19th, 2011 by darkleo

Wie an jedem ersten Mi. im Monat treffen wir uns mal wieder in der Umgebung Dortmund.

Sprecher
Ilja Leyberman

Inhalt
PowerShell ist ein mächtiges Werkzeug sowohl für die Entwickler, als auch für die Administratoren, das es erstmal zu beherrschen gilt. Es vereinfach das tägliche Arbeiten und macht dabei sogar richtig Spaß. Deploymen, Systemüberwachung, Datenvisualisierung, Integrationstest, Administration es gibt nichts was PowerShell nicht kann.

Xing Termin
https://www.xing.com/events/net-user-group-dortmund-treffen-02-11-2011-18-00-powershell-waffe-entwicklertools-826834

Weitere Infos zu der .NET User Group Dortmund und weiteren Terminen
www.do-dotnet.de

Ich freu mich.

Posted in .NET, Allgemein, Community, Softwareentwicklung, User Group | No Comments »

Silverlight params aus dem object - Tag

October 6th, 2010 by darkleo

Es gibt in Silverlight einen initParameter für alles, ich würde aber gerne eigene Schlüsselwörter verwenden.<object type="application/x-silverlight" 

        width="100%" height="100%">

  <param name="source"          value="ClientBin/SLInitParams.xap"/>

<!-- startPage key can have values Page1 or Page2 -->

  <param name="initParams"          value="uid=0,token=asdg" />

</object> 

Standard ist in den Parameter initParams, parameterliste zu übergeben ich finde es wäre schöner die paremter zu trennen,

und die Idee ist sowas zu verwenden,

<param name="uid" value="0" />

<param name="token" value="ABFGX00121" />

zu nutzen und hier ist die Lösung, ihr könnt es weiter anpassen, dazu muss das div-tag oder object-tag das id=silverlightControlHost Attribute enthalten. Die Params klasse muss bei OnStartup initialisiert werden und die Parameter stehen global zur Verfügung.

     /// <summary>

    /// App_Sturtup

    ///    Params.Current.OnStartup(e);             

    ///    use: Params.Current.InitParams["uid"];

    /// </summary>

    public sealed class Params

    {

        static readonly Params instance = new Params();

        public IDictionary<string, string>

            InitParams { get; private set; }

        public static Params Current

        {

            get

            {

                return instance;

            }

        }

        public Params()

        {

        }

        /// <summary>

        /// einlesen des InitParams parameters

        /// </summary>

        /// <param name="e"></param>

        public void OnStartup(StartupEventArgs e)

        {

            Params.Current.InitParams = e.InitParams;

            Params.Current.OnParamsFromSilverlightObject("silverlightControlHost");

        }

        public string OnParamsFromHtmlElementAttribute(string elementId, string attribute)

        {

            HtmlElement element = System.Windows.Browser.HtmlPage.Document.GetElementById(elementId);

            if (element != null)

            {

                return element.GetAttribute(attribute);

            }

            return null;

        }

        /// <summary>

        /// Einlesen der Parameter aus param

        /// </summary>

        /// <param name="elementId">parent of object oder object Html-Tag Id</param>

        public void OnParamsFromSilverlightObject(string elementId)

        {

            HtmlElement element = System.Windows.Browser.HtmlPage.Document.GetElementById(elementId);

            if (element != null)

            {

                if (element.TagName.ToLower() == "object")

                {

                    OnHandleHtmlObject(element);

                }

                else

                {

                    foreach (var item in element.Children)

                    {

                        var he = item as HtmlElement;

                        if (he != null && he.TagName.ToLower() == "object")

                        {

                            OnHandleHtmlObject(he);

                        }

                    }

                }

            }

        }

        void OnHandleHtmlObject(HtmlElement element)

        {

            if (element.TagName.ToLower() != "object")

            {

                throw new NullReferenceException("element");

            }

            foreach (var item in element.Children)

            {

                var he=item as HtmlElement;

                if (he == null || (he != null && he.TagName.ToLower() != "param"))

                {

                    continue;

                }                   

                if (!Params.Current.InitParams.ContainsKey(item.GetProperty("name").ToString()))

                {

                    Params.Current.InitParams.Add(item.GetProperty("name").ToString(),

                        item.GetProperty("value").ToString());

                }

            }

        }

    }

Posted in .NET, C#, User Group | No Comments »

Ein kleiner UND, ODER und NICHT Parser

February 12th, 2010 by darkleo
 
public class Parser
{
 Dictionary<string,> status;
 public Parser(Dictionary<string,> status)
 {
  this.status = new Dictionary<string,>(status.Count * 2);
  foreach (var s in status)
  {
   this.status.Add(s.Key.Trim(), s.Value);
   this.status.Add("!" + s.Key.Trim(), s.Value ? false : true);
  }
}
 
public bool Parse(string input)
{
 String[] or = new String[] { "||" };
 String[] and = new String[] { "&amp;&amp;" };
 string[] ors = input.Split(or, StringSplitOptions.RemoveEmptyEntries);
 for (int io = 0; io &lt; ors.Length; io++)
 {
  string[] ands = ors[io].Split(and, StringSplitOptions.RemoveEmptyEntries);
  for (int ia = 0; ia &lt; ands.Length; ia++)
  {
    if (this.status[ands[ia].Trim()] == false)
      break;
    if (ia == ands.Length-1) //last
      return true;
   }
 }
return false;
}
 
public static void Test()
{
Dictionary<string,> status = new Dictionary<string,>();
status.Add("JA", true);
status.Add("NEIN", false);
status.Add("OK", true);
 
Parser p = new Parser(status);
bool result = p.Parse("JA &amp;&amp; OK &amp;&amp; !NEIN || NEIN");
result = p.Parse("NEIN || JA &amp;&amp; OK &amp;&amp; !NEIN");
result = p.Parse("NEIN");
result = p.Parse("JA");
result = p.Parse("!JA &amp;&amp; NEIN");
}
}
</string,></string,></string,></string,></string,>

Der letzte Baustein einer UND-Verknüpfung ist auch TRUE somit ist der Gesammte Ausdruck der Einfachen Abfrage TRUE. Das ist der ganze Trick, der Quelltext kann vereinfacht werden, wird aber nicht mehr so verständlich.
Viel Spass und ein schönes Wochenende.

Posted in .NET, C# | No Comments »

.NET User Group Dortmund Treffen am 04.11. ab 18:00 Uhr - Redesign von Software

November 3rd, 2009 by darkleo

NET User Group Dortmund Treffen am 04.11. ab 18:00 Uhr - Redesign von SoftwareDie Dodnedder, die .NET-Community der Metropolregion Dortmund, treffen sich erneut. Es gibt natürlich eine Menge kompetenter Fachgespräche. ;-)

[Thema]
Redesign von Software

Neue Technologien wie WPF und Silverlight bieten immense neue Möglichkeiten für die Gestaltung von User-Interfaces.
Diese neuen Möglichkeiten im Sinne der Benutzer und Usability einzusetzen, ruft einen neuen Beteiligten auf den Plan: Den Designer. Daraus resultiert wiederum komplexer Abstimmungs- und Sensibilisierungsbedarf, der durch zum Teil gegensätzliche Positionen von Entwicklern, Designern und Entscheidern erschwert wird.

Daniel Greitens, Geschäftsführer der Kommunikationsagentur maximago und MVP für Expression, macht den Handlungsbedarf deutlich, liefert wissenschaftliche Usability-Grundlagen und zeigt eine auf Praxis und Erfahrung basierende Herangehensweise zum Redesign von Software.

[Kosten]
Es wird Wert auf ein unkompliziertes Miteinander gelegt, deshalb gibt es keine formale Mitgliedschaft, die Teilnahme an Treffen ist kostenlos.

Wir freuen uns.
Team Do.NET

Xing Anmeldung: https://www.xing.com/events/net-user-group-dortmund-treffen-04-11-09-redesign-software-daniel-greitens-420044
Weitere Infos:
Fragen zu diesem und anderen Arbeitskreisen nimmt Herr Paul Mizel gerne entgegen.
Webseite: https://www.do-dotnet.de
Xing Gruppe mit Forum: https://www.xing.com/net/do-dotnet

oder sonst formlose Anmeldung per E-Mail an pmizel@do-dotnet.de
oder Handy: 01799609422

Posted in .NET, C#, User Group | No Comments »

string.Format(”{0,X}”,X)

August 6th, 2009 by darkleo

Ich habe ziemlich viel Zeit damit verbracht, einen String mit Leerzeichen zu belegen,

string.Format("{0:D5}",223);  // 000223

doch ich wollte [ ][ ][ ]223 abbilden, die Lösung ist ziemlich Einfach, wenn man es kennt.

string.Format("{0,5}",223);  // [ ][ ][ ]223

was auch funktioniert

string.Format("{0,-5}",223);  // 223[ ][ ][ ]

Weitere Formatierungen: http://alexonasp.net/samples/stringformatting/

Posted in .NET, C# | No Comments »

01.04 ab 18:00 ASP.NET MVC bei der .NET User Group Dortmund

March 18th, 2009 by darkleo

.NET User Goup Dortmund (Do.NET)Die Dodnedder, die .NET-Community der Metropolregion Dortmund, treffen sich erneut.
Es geht um das Thema ASP.NET MVC Framework, es gibt einige Demos zu sehen. Und natürlich eine Menge kompetenter Fachgespräche. ;-)

Wann:
Am 01.04.2009 18:00-20:00

WO:
Brockhaus AG
Pierbusch 17
44356 Lünen

GOOGLE: http://linkpin.de/7du6n1

Wie:
Anmeldung XING-Terminlink

Kosten:
Es wird Wert auf ein unkompliziertes Miteinander gelegt, deshalb gibt es keine formale Mitgliedschaft, die Teilnahme an Treffen ist kostenlos.

Wir freuen uns.
--------------------------------------------------------
Weitere Infos: http://www.do-dotnet.de
Wegbeschreibung: http://www.do-dotnet.de/front_content.php?idcat=4&idart=54

Posted in .NET, ASP.NET, C#, Community, User Group | No Comments »

Generic Config Collection Section

February 3rd, 2009 by darkleo

Alle Collection Items müssen einen Schlüssel beinhalten und dazu erstellen wir ein Interface
public interface IKeyElement
{object Key { get;}}

Dieses Interface wird in der Generischen Klasse verwendet.

public class GenericElementCollection<T> : ConfigurationElementCollection where T : ConfigurationElement, IKeyElement, new()
{
public GenericElementCollection(){ }
protected override ConfigurationElement CreateNewElement()
{
return new T();}public T this[int index]
{
get{return (T)BaseGet(index);}
set
{
    if (BaseGet(index) != null)
     {BaseRemoveAt(index);
}
   BaseAdd(index,
value);
}
}

new public T this[string Name]
{
get{return (T)BaseGet(Name);}}
public int IndexOf(T element)
{
return BaseIndexOf(element);}
public void Add(T element)
{BaseAdd(element);}
protected override void BaseAdd(ConfigurationElement element)
{BaseAdd(element,
false);}
public void Remove(T element)
{
if (BaseIndexOf(element) >= 0){BaseRemove((element as IKeyElement).Key);}}
public void RemoveAt(int index)
{BaseRemoveAt(index);}
public void Remove(string key)
{BaseRemove(key);}
public void Clear()
{BaseClear();}

public
override ConfigurationElementCollectionType CollectionType
{
get{return ConfigurationElementCollectionType.AddRemoveClearMapAlternate;}}

protected
override object GetElementKey(ConfigurationElement element)
{return (element as IKeyElement).Key;}

}

Beispiel:
public class MySection : ConfigurationSection
{
 [
ConfigurationProperty("gruppen")]
 [
ConfigurationCollection(typeof(GenericElementCollection<GruppenElement>), AddItemName = "gruppe")]
 public GenericElementCollection<GruppenElement> GruppenCollection
 {
  get { return this["gruppen"] as GenericElementCollection<GruppenElement>; }
 }
}Ein Klassen Element:public class GruppenElement : ConfigurationElement, IKeyElement
{
[ConfigurationProperty("name", DefaultValue = "", IsRequired = true)]
public String Name
{
get{return (String)this["name"];}}
[ConfigurationProperty("startUrl", DefaultValue = "", IsRequired = false)]
public String StartUrl
{
get{ return (String)this["startUrl"]; }
public object Key
{
get { return Name; }}

}

Configuration
<section name="SectionNameAusDerSectionDefinition" type="Configuration.MySection"
allowLocation="true" allowDefinition="Everywhere" />
<SectionNameAusDerSectionDefinition>
<gruppen>
 <gruppe name="name1" startUrl=www.darkleo.com>
 <gruppe name="name2" startUrl=www.darkleo.com/blog>
<gruppen>
</SectionNameAusDerSectionDefinition>

Posted in .NET, ASP.NET, C#, Generics, Klasse | No Comments »

Speed für die Anwendung durch das vorladen der Assemblys

December 14th, 2008 by darkleo

Hab da was Interessantes gefunden, wird die Anwendung mal zu langsam Aufgerufen, hilft folgender Codeausschnitt.

Thread jitter = new Thread(() =>
{
  foreach (var type in Assembly.Load("MyHavyAssembly, Version=1.8.2008.8," +
           " Culture=neutral, PublicKeyToken=8744b20f8da049e3").GetTypes())
  {
    foreach (var method in type.GetMethods(BindingFlags.DeclaredOnly |
                        BindingFlags.NonPublic |
                        BindingFlags.Public | BindingFlags.Instance |
                        BindingFlags.Static))
    {
      System.Runtime.CompilerServices.RuntimeHelpers.PrepareMethod(method.MethodHandle);
    }
  }
});
jitter.Priority = ThreadPriority.Lowest;
jitter.Start();

http://www.codeproject.com/KB/dotnet/pre_JIT.aspx

Posted in .NET, C# | No Comments »

Auf den GAC zugreifen ohne Exporer/Windows Einschränkungen

October 31st, 2008 by darkleo

http://darkleo.com/darkleo/download/dir2drive.htm

Laufwerks Buchstaben auswählen: z.b. A (Assembly): Floppy hat fast keiner mehr :-) 
"c:\windows\assembly" als Pfad eintragen, und Updaten.

Nutzlich, wenn jemand mal die Assemblys und Versionen davon haben möchte ;-)

Damit habt Ihr Zugriff auf den GAC und könnt euch auch die Einzelenen Versionen einer Assembyl ansehehen.
Änderungen des GACs auf eigene Gefahr.

Posted in .NET, Tools | No Comments »

NRW08 in Wuppertal am Fr. 12.09.2008

July 15th, 2008 by darkleo

Wieder findet die NRW0x Reihe statt, das größte regionale Community-Event für Software-Entwickler und IT-Professionals veranstaltet von der JustCommunity e.V..

NRW08 in "die boerse" Wuppertal am Fr. 12.09.2008
Auf 4 Tracks verteilt werden 24 interessante Themen vorgestellt.
Wir lernen immer wieder was Neues und das ist auch gut so, vielleicht trifft man sich dort ;-)

Weitere Infos:  http://www.nrw08.de/

Posted in .NET, Allgemein, Community, Fun | No Comments »

« Previous Entries