Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Corpsegrinder
Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hi,

so, hier die angepasste Lösung (etwas schöner, aber die Methode für die Matrix gefällt mir immernoch nicht, geht sicher schöner, aber das ist ja hier nicht gefragt, sondern die Lösung für das allgemeine Problem ;-) ):


public static void Main (string[] args)
		{
			
			var matrix = new List<List<double>> {
                new List<double> { 1.0, 1.1, 1.2, 1.3 },
                new List<double> { 2.0, 2.1, 2.2, 2.3 },
                new List<double> { 3.0, 3.1, 3.2, 3.3 },
                new List<double> { 4.0, 4.1, 4.2, 4.3 }
            };

            var sentence = "Dies ist ein Beispielsatz";

            var iter = matrix.MachWas((List<List<double>> l ) => {
				IList<double> tmp = new List<double>();
				for(int i = 0; i < l[0].Count; i++) {
					for(int j = 0; j < l.Count; j++) {
						tmp.Add(l[j][i]);
					}
				}
				return tmp;	});
			
			
			
            var iter2 = sentence.MachWas((string s) => { return s.Split(' '); });

            foreach( var item in iter ) {
                Console.WriteLine( item );
            }

            Console.WriteLine("\n");

            foreach( var item in iter2 ) {
                Console.WriteLine( item );
            }
		}
		
		public static TReturn MachWas<TReturn, T>(this T obj, Func<T, TReturn> f) {
			return f(obj);
		}

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hi,

hier mal meine Lösung... es geht sicher schöner, vor allem die matrixFunc, aber ich hab so lange kein C# mehr gemacht, dass ich gerade nur eine funktionierende Lösung haben wollte ;-)


public static void Main (string[] args)
		{
			
			var matrix = new List<List<double>> {
                new List<double> { 1.0, 1.1, 1.2, 1.3 },
                new List<double> { 2.0, 2.1, 2.2, 2.3 },
                new List<double> { 3.0, 3.1, 3.2, 3.3 },
                new List<double> { 4.0, 4.1, 4.2, 4.3 }
            };

            var sentence = "Dies ist ein Beispielsatz";

            var iter = matrix.MachWas(matrixFunc);

            var iter2 = sentence.MachWas(stringFunc);

            foreach( var item in iter ) {
                Console.WriteLine( item );
            }

            Console.WriteLine("\n");

            foreach( var item in iter2 ) {
                Console.WriteLine( item );
            }
		}
		
		public static IList<String> matrixFunc(IEnumerable list) {
			if(!(list is List<List<double>>)) {
				throw new ArgumentException("Expected List<List<double>>.");
			}
			List<List<double>> l = (List<List<double>>)list;
			IList<String> tmp = new List<String>();
			for(int i = 0; i < l[0].Count; i++) {
				for(int j = 0; j < l.Count; j++) {
					tmp.Add(l[j][i].ToString(CultureInfo.CreateSpecificCulture("de-DE")));
				}
			}
			
			return tmp;
		}
		
		public static IList<String> stringFunc(IEnumerable str) {
			if(!(str is String)) {
				throw new ArgumentException("Expected string");
			}	
			return ((String)str).Split(' ');
		}
		
		public static IList<String> MachWas(this IEnumerable obj, Func<IEnumerable, IList<String>> f) {
			return f(obj);
		}

Thema: Pfadfindung in einem Graphen (eigentlich: Baum)
Am im Forum: Rund um die Programmierung

ich wollte auch nicht sagen, dass es die beste ist, sindern eine einfache, in der man keine parent verbindung braucht. außerdem hieß es ähnlich einer treenode weshalb ich mich noch einmal erkundigen wollte.

Thema: Pfadfindung in einem Graphen (eigentlich: Baum)
Am im Forum: Rund um die Programmierung

Hi,

wenn es sich um einen ungerichteten Graphen handelt, dann sollte doch eh jeder Knoten alle seine Kanten kennen, oder? Dann kannst du das doch ganz einfach mit Backtracking lösen. Ich kenne zwar die Struktur deines Graphen nicht, aber in einem ungerichteten Graphen gibt es ja keine Parents und Children, sondern eben nur Knoten und Kanten.

Thema: Fenster laufend neu zeichnen, ohne 100% CPU-Last zu erzeugen
Am im Forum: Grafik und Sound

Zitat von Tsuyo
Okay, es war doch nicht die Lib, wenn ich ein Sleep in die While mache, ist die CPU immer auf 0. Kann mir jemand erklären wieso?

Ja, wenn du nicht wartest, dann wird durchgehend neu gezeichnet. Es reicht bei weitem, wenn du 60 mal pro Sekunde zeichnest. Benutze dafür am besten einen Timer.


Gruß

Dario

Thema: [SOLVED]Server - Client Connection über das Internet
Am im Forum: Netzwerktechnologien

Leite den Port doch mal strikt auf die IP deines Rechners im Netzwerk weiter. Hast du dir das ganze schonmal mit Wireshark angeschaut?

Thema: UDP Broadcast mit mehreren Antworten
Am im Forum: Netzwerktechnologien

Starte einen Thread, der in einer Schleife nur auf Nachrichten wartet.

edit: Oder nutze die Asynchrone Methode BeginReceive

Thema: UdpClient Receive Thread beenden
Am im Forum: Netzwerktechnologien

Gerne ;-)

Thema: UdpClient Receive Thread beenden
Am im Forum: Netzwerktechnologien

Die Close musst du natürlich aus einem anderen Thread aufrufen. Mal angenommen du hast einen Button "Disconnect" und der hat einen zugewiesenen ClickHandler. Dann rufst du in diesem Handler Socket.Close auf. Natürlich musst du dafür eine Referenz auf den Socket, bzw. auf das Objekt, welches den Socket beinhaltet, haben.

Thema: UdpClient Receive Thread beenden
Am im Forum: Netzwerktechnologien

Ruf Socket.Close auf, dann beendet Receive mit einer ObjectDisposedException und danach kannst du den Thread einfach auslaufen lassen.

edit:

Sorry, hatte das WebClient überlesen. Laut MSDN hat WebClient keine Receive Methode und die Transportschicht von HTTP ist außerdem TCP, nicht UDP. Erkläre bitte nochmal genauer, was du da machst. Evtl. auch mit Code.

Thema: In Windows Forms imperativ/sequentiell programmieren?
Am im Forum: GUI: Windows-Forms

Thread.Sleep sollte man generell vermeiden, da der Thread dann komplett brach liegt, wo er doch in der Zeit andere Aufgaben übernehmen könnte (z.B. das Neuzeichnen der GUI ;-) ). Also wie herbivore schon sagte, benutz am besten einen Timer.

Thema: Was wünscht ihr euch für C# 5?
Am im Forum: Rund um die Programmierung

Zitat von FZelle
Als ich damals Knuth getroffen habe, sass er gerade an Minix.
Ich weiss wovon er gesprochen hat.


Sorry für OT, aber was hat Knuth mit Minix zu tun?

Thema: WakeOnLan funktioniert nicht....
Am im Forum: Smalltalk

Hi,

kannst du ihn denn mit dem Tool aus dem Standby holen, oder geht das auch nicht? Ansonsten überprüf doch nochmal, ob die eingetragene MAC-Adresse richtig ist. Und ansonsten frag einfach mal bei dem Hersteller des Boards nach.

Thema: Habt ihr ein iPhone?
Am im Forum: Smalltalk

Zitat von mo#
Zitat
Belkin iPhone/iPod Audio-/Video-Kabel (AV-Kabel)
Multimedia / Fun: Belkin iPhone/iPod Audio-/Video-Kabel (AV-Kabel)
kompatibel mit:

* iPhone
* iPhone 3G
* iPod touch 1G/2G
* iPod nano 3G/4G
* iPod Classic 80 GB/160 GB
* iPod Classic 120 GB

Achtung: Dieses Produkt ist NICHT kompatibel mit iPhone 3GS!
Ja schön, das funktoniert offensichtlich so gut wie die 10€ Dinger aus China...

Tja, wenn man einfach irgendwelche Texte von Händlerseiten kopiert, die nichts mit dem Hersteller zu tun haben... Offensichtlich handelt es sich bei dem angebotenen Kabel um eine alte oder andere Version. Lies hier mal den obersten Kommentar: http://www.amazon.de/dp/B001IL7P62/ref=asc_df_B001IL7P62692240?smid=A3JWKAKR8XB7XF&tag=billigerde-21&linkCode=asn&creative=7994&creativeASIN=B001IL7P62


;-)


@ JAck30lena:

Die Bild App wurde wegen pornografischer Inhalte abgelehnt, welche von Apple offiziell verboten sind. Das wusste die Bild und hat es ignoriert. Klar werden auch manchmal Apps abgelehnt, die prinzipiell okay sind, aber die Leute, die die Apps kontrollieren sind auch nur Menschen und machen Fehler. Schon häufig genug wurden entsprechende Apps nachträglich zugelassen.

Thema: Habt ihr ein iPhone?
Am im Forum: Smalltalk

Zitat von mo#
Nein das ist kein Quatsch. TV-Out mit dem IPhone/IPad/IPod etc. geht nur mit dem originalen Apple AV Kabel. Sämtliche Zubehörkabel funktionieren nicht. Apple hat da so ne Art DRM-Chip drin.

http://www.belkin.com/IWCatProductPage.process?Product_Id=489777

Da haste eins.

Thema: MultiThreading - Änderung einer Variable wird im Thread nicht erkannt
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

@herbivore

Naja... mal angenommen wir haben eine Queue und die Queue hat eine Maximale Größe und mal angenommen wir haben einen Wert, der auf true gesetzt wird, wenn die Queue voll ist. In diesem Fall würde es hier schief gehen, weil der Thread 1 die Queue voll macht, aber bevor er die Variable setzen kann fragt Thread 2, ob die Queue voll ist und bekommt ein false. Oder meinetwegen bekommen die Threads Indizes. Genau das Gleiche. Vielleicht sind Konsolenausgaben nicht der richtige Weg um das zu zeigen, aber diese Threadwechsel sind doch das Problem.

Thema: MultiThreading - Änderung einer Variable wird im Thread nicht erkannt
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo herbivore,

das stimmt natürlich. Das Ganze ändert sich aber, wenn man mit Properties arbeitet. Ich muss wohl beim ersten Durchlesen übersehen haben, dass der Threadersteller bereits erwähnte, dass es sich um Felder handelt. Jedoch finde ich es wichtig zu erwähnen, das auch bei primitiven Typen eben in manchen Fällen auch ein volatile nicht reicht. Hierzu noch ein Beispielcode:


namespace ConsoleApplication1 {
  using System;
  using System.Threading;

  internal class Program {
    private static void Main(string[] args) {
      var test = new TestFoo();
      var rnd = new Random(DateTime.Now.Millisecond);
      var t1 = new Thread(() => {
                            while (true) {
                              test.Foo = Convert.ToBoolean(rnd.Next(2));
                              Console.WriteLine("Thread 1: {0}", test.Foo);
                            }
                          });
      var t2 = new Thread(() => {
                            while (true) {
                              test.Foo = Convert.ToBoolean(rnd.Next(2));
                              Console.WriteLine("Thread 2: {0}", test.Foo);
                            }
                          });
      t1.Start();
      t2.Start();
      t1.Join();
      t2.Join();
    }

    #region Nested type: TestFoo

    private class TestFoo {
      private volatile bool foo;

      public bool Foo {
        get { return foo; }
        set {
          Console.WriteLine("Setting foo to {0}.", value);
          foo = value;
        }
      }
    }

    #endregion
  }
}

Früher oder später wird hier folgende Zeile erscheinen:

Setting foo to true.
Thread 1: true
Thread 2: false

Thema: MultiThreading - Änderung einer Variable wird im Thread nicht erkannt
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Locks sollten aber beim Zugriff von mehreren Threads auf mutable Felder immer gesetzt werden, da es sonst zu Race-Conditions kommt.

Thema: Habt ihr ein iPhone?
Am im Forum: Smalltalk

Zitat von t-master
Nein, ich mein die AV-Kabel, das hat weder mit den Kopfhörer noch mit den Ladekabeln zu tun.
;-)

Also das ist ja echt Quatsch. Es gibt von 1000 Anbietern Billigkabel für Appleprodukte. Von Ladekabeln über Displayadapter bis hin zu Akkus... Btw. Mini Displayport ist ein offener Standard und somit für jeden Verfügbar ;-)

Thema: Habt ihr ein iPhone?
Am im Forum: Smalltalk

Zitat von der-schlingel
[offtopic]
Zitat
Btw. werden 95% der Apps die abgelehnt werden auf Grund mangelnder oder ganz fehlender Lauffähigkeit abgelehnt.
Was du aus der transparenten und offenen App-Bewertung weist? ;)[/offtopic]

[offtopic]
Ja, falls du es nicht weisst wird inzwischen jedem Entwickler der Grund für die Nichtveröffentlichung genannt.
[/offtopic]

Thema: Habt ihr ein iPhone?
Am im Forum: Smalltalk

Hi,

iOS 4 kann auch Multitasking und das ganze sogar OHNE die Akkulaufzeit einzuschränken. Ich habe selber ein iPhone 3GS und werde mit demnächst auch ein iPhone 4 kaufen. Das Entwickeln für's iPhone ist einfach super. Das SDK in Verbindung mit Objective-C ist traumhaft und da die Apps nativ auf dem Gerät laufen zeigt es eine deutlich höhere Leistung als Android, wo die Apps auf einer angepassten JVM laufen, die auch noch dem Stand der Technik absolut hinterher ist.

Beispiel: Eine in Java geschriebene Android App wird zur Compilezeit einem Typechecking unterzogen. Soweit alles gut. Die VM führt aber zur Laufzeit nochmal ein Typechecking durch. Macht prinzipiell keinen Sinn, verhindert das Ausführen dynamisch typisierter Sprachen auf der VM und verlangsamt die Ausführung nochmals.

Eine in Objective-C geschriebene App kann zur Compilezeit einem strikten Typechecking unterzogen werden, wo es jedoch sinnvoll ist, kann auch dynamische Typisierung angewandt werden, da Objective-C duck-typing verwendet und Nachrichten verschickt, statt Methoden aufzurufen. So hat man die Vorteile von beidem in einer zu Maschinencode kompilierten Sprache.


Meine Erfahrung zeigt auch, dass der Akku länger hält, als der der meisten Android Phones. Ich komme immer 2 Tage mit meinem Akku hin, obwohl ich wirklich viel mit dem Telefon mache (vor allem mobil surfen). Wenn ich wenig mache sind es auch mal 4 Tage. Außerdem ist das Display wesentlich besser als die der Konkurrenten. Nicht zwingend von der Auflösung(das kommt mit dem iPhone 4 ;-) ) sondern einfach von der Darstellung und vor allem vom Touch. Das iPhone ist sehr responsive und der Touchscreen ist wirklich genau. Die Einschränkungen stören mich nicht. Habe bisher keine App, die ich haben wollte, im Store vermisst. Und viele der wirklich guten Apps sind kostenlos oder sehr günstig. Btw. werden 95% der Apps die abgelehnt werden auf Grund mangelnder oder ganz fehlender Lauffähigkeit abgelehnt.

Thema: Notebook mit Studentenrabatt
Am im Forum: Smalltalk

Hi,

ich kann Dir nur http://www.mactrade.de/ empfehlen. Da sind die MacBook Pros nochmal billiger mit EDU Rabatt, als bei Apple und du bekommst ziemlich günstig Apple Care dazu, was ich Dir auch empfehlen würde.


Gruß

Dario

Thema: Welchen Clean Code Developer Grad habt ihr?
Am im Forum: Smalltalk

Ich habe bisher nicht bewusst nach den CCD-Regeln entwickelt, aber schon immer auf die Qualität des Codes Wert gelegt. Ich würde mich aktuell auf dem Roten Grad sehen, werde aber jetzt mal anfangen, das genau zu verfolgen.

Thema: Wie habt ihr so Programmieren gelernt?
Am im Forum: Smalltalk

Also die Frage ist immer, was man unter "Programmieren lernen" versteht. Die Syntax liest man sich in ein paar Tagen an und fidnet vieles durch ausprobieren raus. Die Library lernt man im täglichen Gebrauch kennen. Aber die Techniken, Patterns etc. die muss man sich scho gezielt selber beibringen. Sei es nun durch Bücher, Internet oder Studium. Natürlich verwendet man einige Patterns instinktiv, ohen zu wissen, dass man es tut, aber man sollte sich imho schon mit dem Thema auseinandersetzen. Und ganz wichtig ist es, sich mit Softwareengineering und Algorithmen und Datenstrukturen vertraut zu machen. Es nützt einem nichts, wenn man eine Sprache/Library/Framework in und auswendig kennt, aber das Programm am Ende entweder grottenlangsam, oder nicht wartbar ist. Also wie man sieht ist "Programmieren lernen" nicht einfach zu definieren.

Thema: Zwei Variablen sollen immer auf den selben String verweisen
Am im Forum: Rund um die Programmierung

Hi,

wieso nicht einfach einen StringBuilder nehmen? Der kann ja immer gelöscht und neu gesetzt werden. Könnte z.B. folgendermaßen aussehen:


var sb = new StringBuilder();
sb.Append("Ein String");
var sb2 = sb;
Console.WriteLine(sb2); // => Ein String
sb.Remove(0, sb.Length);
sb.Append("Ein anderer String.");
Console.WriteLine(sb2); // => Ein anderer String

Ist denke ich einfacher, als sich irgendwas hinzufrickeln ;-)

Thema: Werden in der Praxis (wirklich) UML-Diagramme erstellt und textuell beschrieben?
Am im Forum: Rund um die Programmierung

Hi, klar werden in der Praxis auch UML-Diagramme erstellt und Spezifikationen geschrieben. Große Projekte wären ohne so etwas kaum möglich und zum scheitern verurteilt. In diesem Zusammenhang seien auch noch ADTs erwähnt. http://de.wikipedia.org/wiki/Abstrakter_Datentyp

Sowas sollte man auf jedenfall können. Die Vorgehensweise, die du hier beschrieben hast kenne ich zwar nicht, aber ich denke herbivore hat da schon einen guten Begriff genannt.

Thema: Vorteile von F# für mathematische Probleme
Am im Forum: Rund um die Programmierung

Die Frage ist natürlich immer, was man machen will. Mit funktionaler Programmierung lassen sich Multicore-Systeme wesentlich effizienter nutzen, da das ewige Locken von Variablen und die damit verbundene Synchronisation vollkommen wegfallen, da es nur immutable Datenstrukturen gibt. Wenn man aber nicht ganz auf Objektorientierung verzichten möchte gibt es auch Hybriden wie z.B. Scala (die .Net Implementation soll leider nicht sehr gut sein), welche sowohl funktionale, als auch objektorienterte Konzepte bieten. Aktuell finde ich auch Clojure (ein LISP Dialekt) sehr interessant. Aber wie auch immer. Wer in Zukunft Applikationen schreiben will, die alles aus dem Rechner holen, der muss sich früher oder später mit funktionaler Programmierung auseinandersetzen.

Thema: Suche "günstigen" virtuellen Server
Am im Forum: Smalltalk

Host Europe hat aber extrem gute Bandbreiten. Up weiss ich gerade nicht aus dem Kopf, aber down liegt bei ca. 300 MBits/s. Wenn man allerdings Windows Server 2008 braucht muss man sich wohl woanders umsehen.

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Alles klar herbivore, funktioniert super. Dann stell mal die nächste Aufgabe ;-)

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Okay, da wir hier gerade so schön bei funktionaler Programmierung sind ist meine Aufgabe auch in diesem Bereich angesiedelt.

Es soll eine Erweiterung für die Klasse List<T> geschrieben werden, welche eine Methode FoldLeft bereitstellt. FoldLeft bekommt einen Anfangswert vom Typen T und eine Funktion übergeben. Die übergebene Funktion wird für jedes Element der Liste mit dem Ergebnis des vorherigen Aufrufs und dem aktuellen Element aufgerufen. Der erste Aufruf geschieht mit dem Anfangswert und dem Element, da dort ja noch kein Ergebnis vorhanden ist ;-)