Laden...

Forenbeiträge von rastalt Ingesamt 234 Beiträge

06.06.2012 - 17:53 Uhr

Ganz interessant in diesem Zusammenhang sind die Artikel Source Multiplayer Networking und Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization aus der Valve Developer Community.

Da geht es auch darum wo wer welche Berechnungen durchführt und wie das ganze in Zusammenhang mit unterschiedlichen Verbindungsgeschwindigkeiten der verschiedenen Spieler synchronisiert wird.

Ist vielleicht etwas viel, aber es werden auch Probleme behandelt an die du jetzt noch gar nicht denkst, die aber auf dich zukommen werden.

Viel Erfolg bei deinem Vorhaben. 🙂

31.01.2011 - 14:20 Uhr

Siehe
>
. Ein Page-Refresh gibt einen neuen Namen.

Was für eine super Seite. "RecursiveLolcatModule" 😁

28.01.2011 - 13:45 Uhr

Wenn es für deinen Chef kein Problem ist ein wenig Geld zu investieren gibt es mit dem GridControl von DevExpress eine mächtige Lösung. Setzen wir selbst auch ein und ich bin wirklich zufrieden damit. Es bedarf etwas Einarbeitungszeit, aber dann kann man echt schnell super Tabellen "zusammenklicken".

26.01.2011 - 10:40 Uhr

Ich habe extra keine Lösung vorgegeben, weil wpb das sicher auch selbst herausgefunden hätte.
Das .ToArray() kannst du dir übrigens sparen, weil .AddRange() ein IEnumerable<T> als Parameter erwartet und sowohl ein string[] als auch eine List<string> dies implementiert.

26.01.2011 - 10:35 Uhr

Das kannst du einfach mit der AddRange-Methode der Liste lösen. Schau dazu am besten mal in die Doku: :rtfm:

26.01.2011 - 10:26 Uhr

Wir setzen bei uns auch keinen Obfuscator ein. Stand aber bisher einfach nicht zur Debatte und hat nichts mit einer konkreten Entscheidung dafür oder dagegen zu tun.

17.01.2011 - 07:56 Uhr

Mit der Google Static Maps API kannst du Kartenbilder direkt über eine URL anfordern und auch Wege einzeichnen, die du dir vorher mit der Google Directions API berechnet hast.

23.12.2010 - 13:09 Uhr

hier mal was schönes zu unterschiedlichen Sichtweisen auf eine Software 😄

ich kenn das etwas anders 🙂

Noch mehr Varianten und die Möglichkeit das ganze zu Bearbeiten gibt es unter http://www.projectcartoon.com/

15.09.2010 - 15:41 Uhr

Da Google pro eingeblendete Werbung Geld kassiert und mit jedem Buchstaben den man tippt sich die Einblendungen aendern, wird sich das fuer Google schon rechnen.

Das ist nicht ganz richtig. Um genau zu sein, kann man sich aussuchen ob man pro Klick oder pro angezeigte Anzeige zahlt.

Choose to pay only for clicks on your ads (with cost-per-click bidding) or only for impressions your ads receive (with cost-per-thousand-impressions bidding).

Quelle: How much does AdWords cost?

Aber im Grunde hast du natürlich Recht. Zumindest für die, die für "impressions" zahlen, wird es jetzt teurer.

03.06.2010 - 15:51 Uhr

Hallo Maaka,

HTML sollte man niemals mit RegEx parsen. Reguläre Ausdrücke sind, wie der Name schon sagt, für reguläre Sprachen gedacht, zu denen HTML nicht zählt. Du wirst ziemlich schnell Probleme kriegen, wenn sich etwas im Aufbau der HTML-Datei verändert. (siehe auch hier 😉)

Ich kann dir das HtmlAgilityPack empfehlen. Die Verwendung ist analog zu den, im Framework vorhanden, XML-Klassen (XMLDocument, XMLNode etc.). Zusätzlich ist es auch noch ziemlich Fehlertolerant.

Edit: Ups, hab deinen Namen falsch geschrieben.

25.03.2010 - 16:20 Uhr

Nemen wir mal an es funktioniert was ich versuche, nehmen wir mal an , dieses Prinzip ließe sich auf Dateien anwenden, nehmen wir mal an wir haben einen Ordner mit 1000 Bildern zu je 1KB.

Zunächst solltest du versuchen besagten Ordner mit bekannten (und bewährten) Kompressionsverfahren zu komprimieren. Vielleicht schafft es ja ein Algo bereits diesen Ordner auf 3KB zu schrumpfen. Einmal die gängigsten Algos auszuprobieren ist mit Sicherheit weniger Aufwand, als "jede Menge Hinrschmalz" reinzustecken.

13.01.2010 - 11:02 Uhr

Mit den SlickEdit Gadgets for Microsoft Visual Studio (siehe Abschnitt "The Command Spy") werden dir zu Aktionen die du ausführst (z.B. ein neues Projekt erstellen) die Shortcuts angezeigt.

/Edit: Hier noch ein Screenshot für alle, die nicht erst auf den Link klicken wollen:

02.12.2009 - 08:15 Uhr

Die Ursache dafür liegt, so wie ich das verstanden habe, darin, dass ungültige Unicode-Zeichen entstehen und diese dann nicht decryptet werden können.

Ich kenne mich nich so mit den einzelnen Algorithmen aus und weiß nich in welches Fall diese ungültigen Zeichen entstehen, aber man könnte mal versuchen den Plaintext (also noch vor der Verschlüsselung) mit Base64 zu kodieren. Das gäbe zwar etwas Overhead, aber es könnte funktionieren.

19.11.2009 - 12:16 Uhr

Mit Regex:

(test[\d]*.jpg)
17.11.2009 - 16:00 Uhr

Aus Code UML generieren kann z.B. NClass, außerdem ist es noch Open Source und Kostenlos.

09.11.2009 - 16:08 Uhr

Am Anfang unnötige MB reservieren und falls Not am Mann ist, löscht man sie wieder.

Erinnert mich an Dirty Coding Tricks, The Programming Antihero (auf Seite 4).

03.11.2009 - 13:56 Uhr

Wie schon gesagt wurde, verwende lieber DownloadFile statt DownloadFileAsync. Dann kannst du dir nämlich dein Fct sparen, weil DownloadFile solange blockiert, bis der Download abgeschlossen ist.

30.10.2009 - 09:28 Uhr

Habe gerade folgendes bei uns entdeckt:


object oID = (int)this.ID; // this.ID ist object
int id = -1;
if(oID is int) {
	id = (int)oID;
}

// ...

28.10.2009 - 14:39 Uhr

Deine Klasse Comic hat keinen Konstruktor, der einen String und einen int-Wert als Paramter akzeptiert.

Um genau zu sein hat sie gar keinen.

Siehe Verwenden von Konstruktoren (C#-Programmierhandbuch)

28.10.2009 - 10:56 Uhr

Du kannst vorher im Header den richtigen Namen der Datei angeben.


Response.AddHeader("Content-Disposition", "attachment; filename=[hier Dateiname in Anführungszeichen einfügen]")

Ich sende zwar per Response.BinaryWrite(), aber vielleicht hilft dir das ja trotzdem.

28.10.2009 - 09:36 Uhr

Da muss man keine Zahlen-Strings umwandeln.

Achso, jetzt ist klar was du meinst.

Ist mir schon bewusst gewesen. Ich wollte nur die Möglichkeit aufzeigen, falls briquet gerne die hexadezimale Repräsentation der Zahl irgendwo ausgeben möchte. 🙂

28.10.2009 - 09:30 Uhr

in dem Fall sind es aber schon Zahlen!

Verstehe ich jetzt nicht, was du damit sagen möchtest. 🤔

28.10.2009 - 09:15 Uhr

Zum "umwandeln" von Dezimalzahlen in Hexadezimalzahlen hatte Peter Bucher vor einiger Zeit was in seinem Blog stehen: Hex String zu int und umgekehrt

/Edit: Xynratron, "Warten bis Calc geladen ist" ... der ist gut. 😄

28.10.2009 - 08:52 Uhr

Versuchs mal mit:


System.Text.Encoding.GetEncoding ("iso-8859-1").GetBytes ("üb+er");

19.10.2009 - 19:54 Uhr

Tut mir leid, dass ich dich enttäuschen muss, aber es wird richtig gematcht 😉

Da du kein Multiline hast, ja. Dann nehmen wir halt den Zeilenumbruch aus meinem "Script":

<?php
echo "/* ich bin in einem string"; /* blablubb /* */
?>

... schon macht dein RegEx nicht mehr mit.

(Natürlich ist es fraglich ob man solchen Code tatsächlich irgendwo findet, ich will damit nur zeigen, dass ein RegEx nicht unbedingt der sicherste Weg ist um dein Problem zu lösen.)

19.10.2009 - 14:57 Uhr

Gib deinem RegEx mal sowas:

<?php
echo "/* ich bin in einem string";
/* blablubb /* */
?>

Ich habs jetzt nicht ausprobiert, aber es dürfte valides PHP sein und ich denke er beißt sich daran die Zähne aus (bzw. matched zu viel).

Um Spachen zu parsen ist es meistens sinnvoller eine Parser zu schreiben, da kann man sich selten auf RegEx verlassen. Hatten wir auch schon mehrmals das Thema, falls ich mich nicht täusche.

/Edit: Code-Tag hinzugefügt.

03.09.2009 - 16:22 Uhr

Definiere das Objekt nicht in der Methode, sondern in der Klasse. Dann können alle Methoden der Klasse darauf zugreifen.

/Edit: Wie du selbst schon gemerkt hast, ist das eine Anfängerfrage, siehe deshalb auch:
[Hinweis] Wie poste ich richtig? Punkt 1.1.1.

Wo bleibt nur herbivore? 😉

02.09.2009 - 10:44 Uhr

Im Event-Handler, z.B:

private void MyEvent(object sender, EventArgs e) {
	if(InvokeRequired) {
		Invoke(new EventHandler(MyEvent), sender, e);
		return;
	}

	// hier mit GUI-Elementen interagieren
}
02.09.2009 - 10:17 Uhr

Du kannst die verkürzte Schreibweise für Delegates benutzen, dann wird es zumindest übersichtlicher.

db_workflow.events.Event_2 -= load_combo_division;
db_workflow.events.Event_2 += fill_combo_division;
01.09.2009 - 13:39 Uhr

bravo, bravo. wenn alle hier im forum so super tolle und absolut wunderbar in scene gesetzten antworten wie du geben würden, dann kann das forum auch gleich dichtmachen.

Ich denke aequitas wollte dir damit nur sagen, dass du eine Antwort auf deine Frage bestimmt auch selbst gefunden hättest, wenn du erst mal Google bemüht hättest. Das ist eigentlich auch Voraussetzung wenn du hier postest. Siehe [Hinweis] Wie poste ich richtig? Punkt 1.1. Ist also kein Grund beleidigt zu sein. 🙂

01.09.2009 - 12:25 Uhr

Habe gerade beim durchstöbern der Path-Klasse in der FCL entdeckt, dass im Konstruktor zwei inhaltlich identische Arrays erzeugt werden: InvalidPathChars und RealInvalidPathChars. Ersteres sollte ja bekannt sein, da es public ist, letzteres wird allerdings nur von GetInvalidPathChars() verwendet. 😁

12.08.2009 - 12:04 Uhr

Wunderbar, die Diskussion ist ja - nach ein paar Startschwierigkeiten - doch in die richtige Richtung gegangen. 🙂

In Zukunft werde ich dann wohl die Variante mit dem bedingten Operator verwenden. Wenn es dann doch mal ein bisschen komplexer wird werde ich auf M4 zurückgreifen und ggf. auch auf ein Try-Finally-Block.

12.08.2009 - 11:25 Uhr

das ist eine Glaubensfrage, die wir schon mehrfach besprochen haben.

Es geht mir nicht darum, ob mehrere Returns sinnvoll sind oder nicht und ich bin mir auch bewusst, dass das schon mehrmals besprochen wurde. Es geht mir eher darum ob man eher M1 oder M2 oder ganz was anderes benutzen sollte.

Wobei Möglichkeit 2 unsinnig ist, da das letzte Return definitiv nie erreicht würde. Das müsste dir eigentlich sogar der Compiler sagen.

Bei mir kompiliert das einwandfrei und ich sehe da auch logisch keinen Fehler drin.

Daher würde ich die Methode so aussehen lassen:

  
string Foo(bool b) {  
    return (b ? "baz" : "bar");  
}  
  

Da hast du recht, die Möglichkeit habe ich noch nicht in Betracht gezogen. Allerdings kann das auch sehr schnell unübersichtlich werden, wenn man z.B. je nach nach Wert von b das eine oder andere SQL-Statement zurückgeben will. Außerdem kann es ja vorkommen, dass man im Fall von b = true erst noch weitere Operationen ausführen will. In meinem Beispiel wäre deine Lösung zu bevorzugen, aber ich habe ja auch bewusst ein simples gewählt.

12.08.2009 - 10:59 Uhr

Hallo Community,

Es ist nur eine Kleinigkeit, aber trotzdem interessiert mich eure Meinung.

Angenommen in einer Methode gibt es eine Bedingung, welche über den Rückgabewert entscheidet - kommt ja häufiger mal vor. 😉 Nun sehe ich drei Möglichkeiten dies zu lösen und ich frage mich, welche (und warum) am sinnvollsten ist.

Möglichkeit 1:


string Foo(bool b) {
	string str = "bar";

	if(b) {
		str = "baz";
	}

	return str;
}

Möglichkeit 2:

string Foo(bool b) {
	string str = string.Empty;

	if(b) {
		str = "baz";
	}
	else {
		str = "bar";
	}

	return str;
}

Möglichkeit 3:

string Foo(bool b) {
	if(b) {
		return "baz";
	}
	else {
		return "bar";
	}
}

Meine Meinung dazu:
M3 kommt vielleicht noch in Frage wenn die Methode nicht viel komplexer ist, als in diesem Beispiel, sobald aber mehr Code vorhanden ist, wird es echt unübersichtlich. Grundsätzlich bin ich auch gegen mehrere Return-Statements innerhalb von einer Methode.
Nun schwanke ich zwischen M1 und M2. Früher habe ich eigentlich immer M1 verwendet, da sie weniger Zeilen braucht. Jetzt tendiere ich eher zu M2, weil, wie ich finde, dort sofort ersichtlich ist, was passiert.
Klar ist, dass wenn anstelle der simplen Zuweisung str = "bar" in M1 eine teure Operation stattfinden würde, ich natürlich auch M2 verwende.

Wie handhabt ihr das?

Gruß,
rastalt

04.08.2009 - 15:08 Uhr

Ich würde es andersrum machen. \s ist ein Leerzeichen und wenn wir keins wollen nehmen wir einfach ^\s.

04.08.2009 - 15:02 Uhr

Wie wäre es mit etwas selbst geschriebenen?

Ist nicht perfekt (die Mittagspause war zu kurz), aber die Idee sollte deutlich werden.

using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;

namespace AbadonedFiles
{
	class Program
	{
		static void Main(string[] args) {
			if(args.Length == 1) {
				string csproj = args[0];
				string dir = Path.GetDirectoryName(csproj);

				List<string> files = GetFiles(dir);
				List<string> usedFiles = GetFilesFromCsproj(csproj);

				foreach(string file in files) {
					if(!usedFiles.Contains(file)) {
						Console.WriteLine(file);
					}
				}
			}
			else {
				Console.WriteLine("usage: abadonedfiles [csproj file]");
			}
		}

		static List<string> GetFiles(string dir) {
			List<string> files = new List<string>();

			foreach(string f in Directory.GetFiles(dir)) {
				files.Add(f);
			}

			foreach(string d in Directory.GetDirectories(dir)) {
				files.AddRange(GetFiles(d));
			}

			return files;
		}

		static List<string> GetFilesFromCsproj(string csprojFile) {
			List<string> files = new List<string>();

			string dir = Path.GetDirectoryName(csprojFile);

			Regex re = new Regex("(Compile|Content) Include=\"([^\"]+)\"");

			string content = File.ReadAllText(csprojFile);

			Match m = re.Match(content);
			while(m.Success) {
				string file = m.Groups[2].Value;
				files.Add(Path.Combine(dir, file));

				m = m.NextMatch();
			}

			return files;
		}
	}
}

03.08.2009 - 17:07 Uhr

Wir haben das so (oder so ähnlich) gelöst:


bool letUserConfirmClosing = true;

public void Close(bool letUserConfirm) {
	letUserConfirmClosing = letUserConfirmClosing;
	Close();
}

protected override void OnClosing(CancelEventArgs e) {

	if(letUserConfirmClosing) {
		if(MessageBox.Show("Wirklich beenden?") == DialogResult.No) {
			e.Cancel = true;
		}
	}

	base.OnClosing(e);
}

Überall wo die Form bewusst geschlossen wird muss man halt Close(false) aufrufen.

03.08.2009 - 13:47 Uhr

wie kann ich nen ´ machen

Was hast du denn schon ausprobiert?

28.07.2009 - 12:44 Uhr

Das einzige was ich nicht verstehe ist was an ++i schlimm seien soll? solange das wärend einer operation benuzt wird is doch alle okay?

An ++i ist erstmal gar nichts schlimm. Allerdings ist die Kombination i = ++i ziemlich überflüssig, da man statt dessen auch einfach i++ schreiben kann.

26.06.2009 - 09:24 Uhr

Ich sehe schon, dass ich mit Fans zu tun habe. Ich check mich mal aus. Diskussion über diesen Menschen ist es mir nicht wert.

Ich bin definitiv kein Fan von Michael Jackson, aber das ist ja kein Grund Fakten zu verdrehen.

Das seine Musik wohl sehr populär ist kann man nicht abstreiten, aber mir persönlich war/ist er egal und sein Tod mag für viele Leute einen Verlust bedeuten, jedoch nicht für mich. Mal davon abgesehen, dass der Tod einer Person natürlich etwas trauriges ist.

26.06.2009 - 08:58 Uhr

Wundert mich garnicht. Bei den ganzen Operationen, die er über sich ergehen ließ, um von schwarz zu weiß zu werden, da kann ja immer was schief gehen. Jemand, der seine Herkunft nicht akzeptiert und sich dermaßen verändern ließ, verdient nicht meine Achtung.

Wenn du dich ein wenig mit der Materie beschäftigt hättest, hättest du sicherlich herausgefunden, dass Jackson an starkt ausgeprägter Vitiligo litt. Kosmetische Operationen hat er wohl lediglich an Nase und Kinn vornehmen lassen.

Quelle: Michael Jackson: Gesundheit und Operationen

13.05.2009 - 09:01 Uhr

Habe gestern im dot.net magazin in einem Code-Listing folgendes entdeckt:


i = ++i;

Liest da tatsächlich niemand Korrektur oder gibt es eine sinnvolle Erklärung dafür?

Der Horror liegt im Detail. 😉

11.05.2009 - 08:10 Uhr

In Jeffs Blog gibt's einen interessanten Eintrag zu diesem Thema: OpenID: Does The World Really Need Yet Another Username and Password?. Ist zwar beinahe nen Jahr alt, aber immer noch lesenswert denke ich.

10.05.2009 - 17:51 Uhr

Wenn es valides XHTML ist, kannst du auch versuchen es einfach in ein XMLDocument zu laden. Eventuell musst du noch den Doctype anpassen. Das wäre auf jeden Fall die einfachste Lösung.

08.05.2009 - 14:05 Uhr

Was passiert denn, wenn du das Programm manuell mit genau den Parametern wie im Programm aufrufst?

Poste beim nächsten Mal doch bitte auch nur die relevanten Codeteile. Es hat nicht unbedingt jeder Lust, sich durch den ganzen Code durchzuwühlen. Außerdem findet man beim Reduzieren des Programms auf das Wesentliche häufig selbst den/die Fehler.
-> Short but complete programs

07.05.2009 - 21:03 Uhr

Eigentlich ist das ein Fall für einen neuen Thread, aber ich will mal nicht so sein.

Wenn die gesuchte Assembly in den GAC installatiert wird, kannst du z.B. mit diesem Snippet prüfen ob sie sich darin befindet.

/Edit: Irgendwie haben da Wörter gefehlt. 🤔

07.05.2009 - 08:59 Uhr

Da hat's mir gerade ne ordentliche Gänsehaut beschärt:


int i = path.LastIndexOf('\\');
Text = path.Substring(i+1);
if (Text.IndexOf(".") > 0) Text = Text.Substring(0,Text.LastIndexOf("."));

Hm, das muss doch irgendwie einfacher gehen!? 🤔 😉

06.05.2009 - 14:35 Uhr

Wunderbar, da hatte ich ja den selben Einfall. Wäre das auch erledigt. 🙂

06.05.2009 - 14:33 Uhr

Puh, das war ja nen Satz. 😜

Ich nehme an du meinst, dass zwischen der Prüfung auf null und dem Auslösen des Events, jemand das Event deregistrieren könnte und es dann wieder null wäre, oder?

Mir ist jetzt nur nicht klar, wie ich das Problem lösen kann.

/Edit:


EventHandler h = FileClosed;
if(h != null)
    h(this, new EventArgs());

Meinst du so?