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

Okay, ich wäre nie auf die Idee gekommen, dass C# currying kann ;-)

Hier mal die Lösung:


 private static void Main(string[] args)
        {
            Func<int, int, int, int, int> Add = (a, b, c, d) => a + b + c + d;
            Console.WriteLine(Add(1,2,3,4));
            var tmp = Add.SomethingNice()(1)(2);
            Console.WriteLine(tmp(3)(4));
        }

        public static Func<T1, Func<T2, Func<T3, Func<T4, T5>>>>
            SomethingNice<T1,T2,T3,T4,T5> (this Func<T1,T2,T3,T4,T5> f)
        {
            return a => b => c => d => f(a, b, c, d);
        }

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

Ich gehe zwar davon aus, dass du eigentlich eine Lösung in F# haben wolltest, da es aber ja auch Scala für die .Net Plattform gibt hab ich es mal in Scala gemacht:


object Main {

  /**
   * @param args the command line arguments
   */
  def main(args: Array[String]): Unit = {
    println(Add(1,2,3,4))
    val add5 = Add.somethingNice(2)(3) _
    println(add5(2)(3))
  }

}

object Add {
  def apply(a: Int, b: Int, c: Int, d: Int) = somethingNice(a)(b)(c)(d)
  def somethingNice(a: Int)(b: Int)(c: Int)(d: Int) = a + b + c + d
}

Thema: Welche PC Hardware habt ihr?
Am im Forum: Smalltalk

Naja... schonmal versucht in dein Notebook mehrere Festplatten einzubauen? Das mit dem Display ist auch nicht wirklich überzeugend. Gibt ja inzwischen schon viele All-in-one Rechner. Natürlich ist Mobilität ein Thema, aber ich kaufe mir ehrlich lieber 2-3 verschiedene Geräte, als auf einen Desktop-Rechner zu verzichten.

Thema: konzeptionelle Frage zur Ergonomie von Primary Keys
Am im Forum: Datentechnologien

Du musst doch nicht unbedingt nach der GUID suchen. Du kannst ja auch einfach nach dem Projektnamen suchen, oder verstehe ich dich jetzt falsch? Mach den Projektnamen einfach auch Unique und dann gibt es keine Probleme.

Thema: Compilerbau Sinn und Unsinn
Am im Forum: Rund um die Programmierung

Also ein aktuelles Thema ist sicherlich Parallelisierung. Vielleicht auch in Verbindung mit einer Cloud. Nur mal so als Gedanke.

Thema: Compilerbau Sinn und Unsinn
Am im Forum: Rund um die Programmierung

Zitat von Tarsius
Die Sprache soll einfach und verstaendlich sein, weil Leute, die nur wenig Programmierkenntnisse besitzen, sie moeglichst schnell verstehen sollen. Ich weiss, ich weiss, Aus unserer Sicht ist C# natuerlich auch einfach und verstaendlich...:D :D

Vorsicht, je einfacher die Sprache sein soll, die du entwickelst, desto schwieriger wird es sie zu entwickeln.

Achja... zu ANTLR... laut meinem Prof. kommt das sehr schnell an seine Grenzen, von daher vielleicht nicht so zu empfehlen. Ich weiss nicht, ob es gute Parser-/Compiler-Generatoren für .Net gibt, aber für Java gibt es JFlex. Den benutzen wir in der FH und ich kann den empfehlen, wenn man mit Java zurechtkommt.^^

Thema: Compilerbau Sinn und Unsinn
Am im Forum: Rund um die Programmierung

Hi,

es wollen natürlich nicht alle ihre Programme/Sprachen auf der .Net Plattform laufen lassen. Alleine das ist schon ein Grund eigene Compiler zu entwerfen. Graphische Oberflächen wird wohl keiner in ASM bauen und auch dein Compiler braucht sich darum nicht zu kümmern. Du bietest ja nur ein Grundkontingent an Befehlen an, die wirklich in Maschinencode übersetzt werden. Der Rest wird auf Basis dieser Befehle direkt in der Sprache geschrieben (als Library). Schau dir am besten mal Flex und Yacc/Bison an (hast du wahrscheinlich schon, wenn du das Drachenbuch liest ;-) ).

Thema: [erledigt] XNA: Content.Load macht Video laggy
Am im Forum: Grafik und Sound

Okay, hab es nun anders gelöst. Ich benutze jetzt XACT Soundbänke. Das funktioniert super und ist performant.

Thema: [erledigt] XNA: Content.Load macht Video laggy
Am im Forum: Grafik und Sound

Hi,

ich habe ein Problem. Wir programmieren gerade für ein Projekt im Studium ein XNA Spiel für's Surface und es tritt folgender Fehler auf: Am Anfang wird ein Intro abgespielt. Soweit läuft alles. Wenn jedoch VOR dem abspielen des Videos noch die Sound Dateien für das Menü geladen werden sieht man die ersten 5 Sekunden des Videos nicht, sondern hört nur den Ton. Werden die Dateien jedoch erst danach geladen klappt es. Jetzt ist es natürlich ärgerlich Content außerhalb der LoadContent Methode laden zu müssen. Kennt jemand eine Lösung dafür? Kann man eventuell solange warten, bis der Content wirklich geladen ist? Ich habe es auch schon mit auslagern in eine Thread probiert, was leider auch nichts verändert hat. Wäre nett, wenn mir da jemand helfen könnte.


Gruß

Dario

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

Hi floste,

es sind zwar noch ein paar kleine Schönheitsfehler drin (2.0F * matrix möglich matrix * 2.0F nicht) und wenn eine Matrix keine Inverse besitzt liefert sie eine Matrix mit NaN gefüllt zurück, aber die Inverse war eh nicht gefordert und im groben läuft es ja. Also sehe ich die Aufgabe als erfüllt an.

Dann hau ma die nächste raus.

Thema: [erledigt] Wie funktioniert das Eventsystem von .NET?
Am im Forum: Rund um die Programmierung

Also wie genau es implementiert ist weiss ich natürlich nicht, aber generell ist es folgendermaßen:

Du erstellt ein Delegate mit bestimmten Parametern. Z.B. object und EventArgs um mal ein Beispiel zu nennen. Nun legst du ein Event vom Typen des Delegates an. Wenn ein Event abonniert wird, dann wird quasi nur ein Eintrag zu einer Liste hinzugefügt, was man auch an dem += erkennen kann. Wenn jetzt innerhalb der Klasse ein Aufruf SomeEvent(this, new EventArgs()) getätigt wird passiert prinzipiell folgendes:


void SomeEvent(object sender, EventArgs e) {
  foreach(eventHandler in AnyEvent) {
    eventHandler.call(sender, e);
  }
}

Also ist ein Event eigentlich nur eine Liste und ein Aufruf gibt die Parameter an alle Elemente der Liste weiter.

Thema: Komplexe Formel in C# formulieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von kleines_eichhoernchen
Wenn es sich nicht nur um eine Formel handelt, kannst du die Berechnungen auch in ein F# Projekt auslagern. Dieses bietet im Vergleich zu C# mehr Möglichkeiten, bzw. dort sind diese einfacher und schneller umzusetzen. Einfach mal probieren.

Alerdings wird ihm das auch nichts bringen, wenn der Fehler aufgrund der Rundung auftritt.

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

zu 1: Wie du du die Performance erlangst ist deine Sache. Wenn du eine vernünftige Lösung mit Threads erstellt ist das natürlich super.

zu 2: Ja, das soll die Potenz sein

zu 3: pure bedeutet, dass die Methode keine Seiteneffekte hat, somit das eigentliche Objekt nicht verändert. Außerdem darf die Methode nicht auf irgendwelchen Werten basieren, die sich zur Laufzeit de Programms verändern können. Nur so kann sichergestellt werden, dass z.B. bei


int[] args = {1,2,3,4};
Matrix m = new Matrix(2, args);

m*5
m*5
m*5
m*5

immer das gleiche Ergebnis herauskommt. Siehe auch http://en.wikipedia.org/wiki/Pure_function

zu 4: ja, so zum Beispiel

Achso... der Einfachheit halber: Die Matrix ist quadratisch und fehlende Werte sind mit 0 aufzufüllen. z.B. sähe dann eine Matrix der größe 2, die nur den Wert 1 bekommt so aus:

1 0
0 0

Wie in meinem Beispiel schon zu sehen ist der erste Parameter die Größe der Matrix, der zweite ein Array mit den Werten.

Thema: CString von C++DLL importieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Und da du die C++-lib selber geschrieben hast gebe ich dir hier schonmal den Tipp: benutze keine char*, sondern wchar_t*, dann bekommst du auch keine Probleme mit Unicode.

Thema: Kündigungsschutz Ausbildungsvertrag kurz vor der Prüfung
Am im Forum: Smalltalk

Zitat von M.L.
Zur Sicherheit wendet man sich trotzdem an einen Fachwanwalt für Arbeitsrecht. Selbst wenn das Ausb.v. regulär zu Ende gehen sollte, ist dennoch mit Ärger zu rechnen. Z.B. einer Kündigung mit entsprechend schlechtem Arbeitszeugnis im Hintergrund...

Da sollte man aber erstmal abwarten, ob es soweit kommt und es sich nicht schon vorher komplett mit der Firma verscherzen.

Thema: Windows Phone 7 Series "schlimmer" als das iPhone OS?
Am im Forum: Smalltalk

Also man kann einen Großteil der Anwendung in C/++ schreiben. Dann hast du schonmal einiges an Arbeit gespart. Außerdem kann man je nach Anwendung auch einiges in die Cloud verlagern. Es gibt viele Möglichkeiten Programme einfach auf mehrere Systeme zu portieren ;-)


edit: Achja.. auch MonoTouch würde daran nichts ändern, da man auch da nur auf die Klassen des SDK zugreift. Auch da heißen die Klassen NSWhatever und UIWhatever... also kein Vorteil für das Portieren.

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

Zitat von herbivore
Und der Programmierstil ist insgesamt gar nicht übel. Egal wie gut man etwas macht, es geht fast immer noch ein bisschen besser. :-)

Danke ;-), muss auch sagen, dass ich aus C# voll raus bin, da ich momentan fast nur noch mit Scala oder Objective-C arbeite. Und Concurrency unter C# habe ich auch noch nicht gemacht. Naja.. nun mal zu meiner nächsten Aufgabe:


Es soll eine möglichst performante Matrix-Klasse erstellt werden. Es sollen die normalen Matrix-Operationen (+, -, * und ^) implementiert werden. Wichtig ist, dass die Matrix absolut Threadsafe und alle Methoden pure sind (d.h. egal wie oft man sie aufruft, es kommt immer das gleiche Ergebnis heraus). Achso... eine schicke ToString() ist natürlich auch gerne gesehen ;-)

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

So, hier nun die von herbivore abgesegnete Lösung ;-)



using System;
using System.Collections.Generic;
using System.Threading;
using System.Diagnostics;

namespace SyncQueueTest
{

	//*****************************************************************************
	public class SyncQueue <T>
	{
		   //--------------------------------------------------------------------------
		private Queue <T> _q   = new Queue <T> ();
		private volatile int _maxSize;
		public int MaxSize { 
			get { 
				return _maxSize; 
			} 
			set {
				lock(this) {
					if(value < 0) value = 0;
					int oldSize = _maxSize;
					_maxSize = value;
					if(_maxSize > oldSize || _maxSize == 0)
						Monitor.PulseAll(this);
				}
			} 
		}
		
		public SyncQueue (int maxSize)
		{
			MaxSize = maxSize;
		}
	
		//==========================================================================
		// <summary>
		// Trägt einen Eintrag und wartet dabei nötigenfalls
	  // solange bis wieder Platz vorhanden ist.
		// </summary>
		public void Enqueue (T tItem)
		{
			lock (this) {
				while (_q.Count ≥ MaxSize && MaxSize != 0) {
					Debug.WriteLine (Thread.CurrentThread.Name + " Wait");
					Monitor.Wait (this);
				}
				_q.Enqueue (tItem);
				Monitor.PulseAll(this);
				Debug.WriteLine (Thread.CurrentThread.Name + " Enqueue ==> " + _q.Count);
			}
		}
	
	   //==========================================================================
	   // <summary>
	   //    Holt einen Eintrag aus der Queue heraus und wartet dabei nötigenfalls
	   //    solange bis wieder ein Eintrag vorhanden ist.
	   // </summary>
	   public T Dequeue ()
	   {
	      lock (this) {
	         while (_q.Count == 0) {
	            Debug.WriteLine (Thread.CurrentThread.Name + " Wait");
	            Monitor.Wait (this);
	         }
			 Monitor.PulseAll(this);
	         Debug.WriteLine (Thread.CurrentThread.Name + " Dequeue ==> " + (_q.Count - 1));
	         return _q.Dequeue ();
	      }
	   }
	}
}

Thema: Gibt es ein staatlich Anerkennung für C# ?
Am im Forum: Smalltalk

Hi,

es gibt ja mehrere Stufen dieser Zertifikate von Microsoft und die sind auch für Arbeitgeber aussagekräftig, da sie wiederspiegeln, was diese Person kann. Nach meinem Wissen sind diese Zertifikate je nach Stufe auch recht anspruchsvoll.

Thema: Windows Phone 7 Series "schlimmer" als das iPhone OS?
Am im Forum: Smalltalk

Es gibt auch gute Gründe FÜR das aussperren fragwürdiger Software. Z.B. gab es im Android Store mal eine App, die Kontodaten der Anwender ausgespäht hat. Und sowas kann dort immer wieder passieren. Was ist außerdem mit jugendgefährdenden Inhalten? Ich finde es gut, dass Apple und Microsoft etwas acht darauf geben, was in die Stores kommt. Außerdem ist es ein Smartphone, kein PC, da brauch ich nicht unbedingt die gleichen Features. Und wer damit Probleme hat kann sich entweder sein Telefon jailbreaken, oder sich z.B. ein Android Phone kaufen.

Thema: Gibt es ein staatlich Anerkennung für C# ?
Am im Forum: Smalltalk

Es gibt direkt von Microsoft Zertifikate für Entwickler. Hier kannst du dich schlau machen.

Thema: Windows Phone 7 Series "schlimmer" als das iPhone OS?
Am im Forum: Smalltalk

Zitat von winSharp93
Apple verbietet MonoTouch auf dem iPhone (lässt aber Opera-Mobile zu), und dann auch noch so was.

Was hat denn Opera mit MonoTouch zu tun? Das sind zwei grundverschiedene Sachen. MonoTouch bzw. Cross-Compiler wurden ausgeschlossen, weil Apple fürchtet, dass durch die hinterherhinkende Entwicklung dieser Tools neue Features des iPhones nicht so häufig genutzt werden.

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

Hi herbivore,

ich habe mal eine Lösung erstellt. Ich hoffe sie entspricht deinen Anforderungen.



using System;
using System.Collections.Generic;
using System.Threading;
using System.Diagnostics;

namespace SyncQueueTest
{

	//*****************************************************************************
	public class SyncQueue <T>
	{
		   //--------------------------------------------------------------------------
		private Queue <T> _q   = new Queue <T> ();
		public int MaxSize { get; set; }
		public SyncQueue (int maxSize)
		{
			MaxSize = maxSize;
		}
	
		//==========================================================================
		// <summary>
		// Trägt einen Eintrag und wartet dabei nötigenfalls
	  // solange bis wieder Platz vorhanden ist.
		// </summary>
		public void Enqueue (T tItem)
		{
			lock (this) {
				while (_q.Count ≥ MaxSize && MaxSize != 0) {
					Debug.WriteLine (Thread.CurrentThread.Name + " Wait");
					Monitor.Wait (this);
				}
				_q.Enqueue (tItem);
				Monitor.Pulse (this);
				Debug.WriteLine (Thread.CurrentThread.Name + " Enqueue ==> " + _q.Count);
			}
		}
	
	   //==========================================================================
	   // <summary>
	   //    Holt einen Eintrag aus der Queue heraus und wartet dabei nötigenfalls
	   //    solange bis wieder ein Eintrag vorhanden ist.
	   // </summary>
	   public T Dequeue ()
	   {
	      lock (this) {
	         while (_q.Count == 0) {
	            Debug.WriteLine (Thread.CurrentThread.Name + " Wait");
	            Monitor.Wait (this);
	         }
			 Monitor.Pulse(this);
	         Debug.WriteLine (Thread.CurrentThread.Name + " Dequeue ==> " + (_q.Count - 1));
	         return _q.Dequeue ();
	      }
	   }
	}
}


Habe das ganze getestet, indem ich vorab die Liste gefüllt habe, danach die MaxSize drastisch verringert habe und dann einfach deinen ursprünglichen Test habe laufen lassen. Lief bei mir ohne Probleme durch.


Gruß

Dario

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

Hi herbivore,

keine Einwände.


Gruß

Dario

Thema: Notebook für Studium
Am im Forum: Smalltalk

Zitat von der-schlingel
fährst du das Macbook mit Mac OS oder Windows?

Ich habe auf meinem MacBook Pro Mac OS X 10.6.3 laufen, aber hatte auch schon Windows drauf. Die Treiber liefert Apple direkt mit. Das ganze lässt sich super einfach über BootCamp installieren. Nicht, dass jetzt wer denkt, dass wäre ne VM... das läuft alles direkt auf der Hardware ;-). Zur Akkulaufzeit unter Windows kann ich leider nichts sagen, da er bei mir unter Windows nur die 9600M GT erkannt hat, die natürlich wesentlich mehr Strom zieht. Sollte aber mit der 9400M kein Problem sein. Ansonsten geh einfach mal zu Media Markt oder Saturn... die haben im Normalfall ne Apple Ecke, wo ein richtiger Apple Genius (die heissen so) arbeitet und frag den... oder Google ;-)

Thema: Notebook für Studium
Am im Forum: Smalltalk

Zitat von der-schlingel
Vor kurzem ist meine Akku-Laufzeit von echten 5h, ja so lang hielt er am Anfang, auf ca. 70 Minuten abgestürzt, doch die Garantie ist auf nur ein Jahr beschränkt. Deshalb bekomme ich keinen Neuen. :-\

Da der Akku ein Verschleissteil ist würdest du eh nur bei einem Produktionsfehler einen neuen bekommen, auch bei bestehender Garantie.

@padi89

Wie wäre es denn mit einem MacBook White? Kostet beiNotebooksbilliger.de 839,-,

Core 2 Duo 2,26 GHz
2GB DDR3 RAM
250GB Platte
GeForece 9400M mit 256 MB

und einer Akkulaufzeit von 7 Stunden (in der Praxis meistens sogar mehr, mit Displayhelligkeit unten).

Einziger Punkt, der für dich nicht passt ist das Glare Display, kann aber aus eigener Erfahung sagen, dass das kein Problem ist. Habe selber ein MacBook Pro und bin sehr zufrieden. Das Glare Display hat mich nie gestört.

Thema: MD5: Salted Hash like PHP
Am im Forum: Rund um die Programmierung

Zitat von DNAofDeath
ich will GENAU die methode von PHP in C# nachahmen...

Ruhig bleiben... Du solltest erstmal rausfinden, welchen Hashing-Algo dein Server benutzt. Wie du der Doku von crypt() entnehmen kannst entscheidet der sich selber, welchen er nimmt. Je nachdem, welche auf dem System zur Verfügung stehen und welche PHP Version du hast nimmt er entweder DES, MD5, SHA-256 oder SHA-512. Schreib dir doch einfach ein einfaches PHP-Script, welches einen String mit crypt() verschlüsselt und das gleiche dann für alle Hashing-Algos. Dann solltest du sehen, welche Methode er benutzt.

Thema: MD5: Salted Hash like PHP
Am im Forum: Rund um die Programmierung

Zitat von Wikipedia
Salt (engl. „Salz“) bezeichnet in der Kryptographie eine zufällig gewählte Bitfolge, die an einen gegebenen Klartext vor der Verwendung als Eingabe einer Hashfunktion angehängt wird, um die Entropie der Eingabe zu erhöhen.

Was gibt es daran nicht zu verstehen? Anhängen heisst im Normalfall dahinter. Allerdings ist es vollkommen irrelevant, ob man den Salt vorne, oder hinten, oder nach den ersten 3 Buchstaben einfügt. Er erfüllt immer seinen Zweck. Das sollte man dem Artikel auch entnehmen können.

Thema: MD5: Salted Hash like PHP
Am im Forum: Rund um die Programmierung

Hi,

http://de.wikipedia.org/wiki/Salt_(Kryptologie)


Gruß

Dario

Thema: Programmiersprache der Zukunft
Am im Forum: Rund um die Programmierung

Zitat von Marsti
Meiner Meinung nach könnten sich Frameworks wie Java/.NET durchsetzen; jedoch nicht mit Runtime, sondern eher so eine Mischung aus C++/C#/.NET. Mit einer C#-vergleichbaren Syntax, fest in jedes System integriert (also ohne, dass zusätzliche Prozesse laufen bzw. installiert werden müssen; plattformübergreifend, aber dennoch nativ), ohne die "Kompliziertheiten" / Ecken und Kanten von C++, dafür mit den Vorteilen von .NET wie GC, mit einer mit der von .NET vergleichbaren Standardbibliothek, ...

Es gibt schon Sprachen, die zu Maschinencode kompiliert werden und trotzdem einen GC haben (siehe Objective-C und D) und zumindest bei Objective-C ist auch mit Cocoa ein schönes Framework vorhanden. Leider haben beide Sprachen Nachteile, denn Objective-C ist zwar für Windows/Linux/Unix/Mac verfügbar, jedoch nur unter Mac komfortabel verwendbar. Und D hat afaik leider noch nicht so eine umfassende Library. Aber das ist auch alles kein Problem, da die Prozessoren eh immer leistungsfähiger werden und somit nur noch für Systemprogrammierung Sprachen wie ASM und C benutzt werden müssen.