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 TheBrainiac
Thema: Ideen für Produktname
Am im Forum: Smalltalk

Hallo alle.

Habe mich lange nicht mehr im Forum beteiligt, aber nun brauche ich eure Ideen für einen Produktnamen.

Ich habe eine Web-Platform erstellt, die ein TicketSystem (eine Art Forum) und eine Zeiterfassung und -abrechnung beinhaltet. Die Platform ist außerdem so ausgelegt, dass ich in Zukunft leicht weitere Module (geplant ist z.B. ein Mitarbeiter-Lob-Management) hinzufügen kann.

Der "Code-Name" der Platform ist z.Zt. "Indigo", ich hatte auch hier schon einmal eine ähnliche Frage gestellt.

Natürlich sind alle Domains, die in diese Richtung gehen und halbwegs sinnvoll sind belegt.

Nun meine Frage: Habt ihr eine Idee für einen Namen? Mir geht es dabei ausdrücklich nicht um rechtliches oder Patente oder Richtlinien, sondern ausschließlich um eine Art "Brainstorming" zur Namensfindung, da ich absolut keine Idee habe, die noch "verfügbar" ist.

Gruß, Christian.

Thema: Programm scheint beim Debuggen weitere Schritte im Hintergrund auszuführen
Am im Forum: Rund um die Programmierung

So wie das in deinem Code-Beispiel aussieht, rufst du einen Indexer X[0] auf. Diese werden (wie Properties auch) beim Debuggen automatisch übersprungen, wenn das entsprechend Konfiguriert wurde. Das kannst du in den Debugger-Einstellungen irgendwo ausstellen.

LG,
Christian.

Thema: Benutzername auf Windows-Share nach Client-Reboot unzulässig obwohl er vorher funktionierte
Am im Forum: Netzwerktechnologien

Zitat von vbprogger
Du bist hier in Entwicklerforum (und stackoverflow ist auch so'n) daher ist deine Frage absolut OT.

Weis ich. Deswegen auch meine Frage, wo ich meine Frage besser stellen könnte, da ich wie schon gesagt kein gutes Netzwerk-Forum kenne...

Ich habe sowohl "Reconnect at Logon" und "Connect using different Credentials" angehakt.

LG, Christian.

Thema: Benutzername auf Windows-Share nach Client-Reboot unzulässig obwohl er vorher funktionierte
Am im Forum: Netzwerktechnologien

Hallo

@t0ms3n
Deswegen habe ich auch gefragt, wo ich mir ansonste Hilfe holen könnte. Kenne kein entsprechendes Forum o.ä.

@Coffeebean
Danke, dass man Fehlermeldungen extra hervorheben kann war mir neu


@vbprogger
Habe die Share "ganz normal" über die UI im Explorer eingebunden. Und Persistent kommt leider nicht in Frage, da (leider) verschiedene Benutzer am gleichen Client-Konto arbeiten, aber unterschiedliche Berechtigungen für die Share haben sollen. Dementsprechend wäre es legitim, wenn die Share nach jedem Boot nach den Credentials fragt. Aber so wie es aktuell ist muss ich leider die Share jedes mal trennen und neu verbinden.

Thema: Benutzername auf Windows-Share nach Client-Reboot unzulässig obwohl er vorher funktionierte
Am im Forum: Netzwerktechnologien

Hi @ All.

Habe ein Problem mit einer Windows Share auf einem Windows Server 2012 R2.

Habe den Server als DomainController eingerichtet, der auch mehrere Shares hostet. Wenn ich auf die einzelnen Shares verbinde, funktoniert alles korrekt (Authentifizierung mit DomainCredentials, Berechtigungen, etc). Starte ich allerdings den Client neu, bekomme ich folgende Fehlermeldung:

Fehler
Fehler bei der erneuten Verbindungsherstellung von Z: mit \\MyServer\MyShare
Microsoft Windows Network: Der angegebene Benutzername ist unzulässig.

Die Verbindung wurde nicht wiederhergestellt.

Das Problem ist: Der Benutzername IST KORREKT (hat ja vorher funktioniert). Auch wenn ich die Share manuell trenne und neu hinzufüge, funktioniert alles wie es soll. So lange bis der Client neu startet.

Ich habe die gleiche Frage auch schon hier gepostet, da wurde sie allerdings als OffTopic markiert (warum auch immer)...

Hat jemand eine Idee woran das liegen könnte? Oder wo ich fragen könnte?

LG, Christian.

Thema: Namen für kommerzielle Produkte
Am im Forum: Smalltalk

Also mir geht es eher um letzteres. Ein Patent werde ich mit dieser Anwendung sicherlich nicht erfinden...

Danke schon mal für den Tipp :)

Thema: Button.Text aktualisiert im GUI nicht
Am im Forum: GUI: Windows-Forms

Hast du den Button korrekt zu irgendeinem Control hinzugefügt? d.h. siehst du den button?

Thema: Namen für kommerzielle Produkte
Am im Forum: Smalltalk

Hi @ All.

Ich stehe kurz davor, eine kommerzielles Produkt zu veröffentlichen. Es handelt sich um eine modularisierte IntraNet-Lösung für Pflegedienste (TicketSystem, Zeiterfassung, später Fuhrpark, Dienstplanung, DMS, etc.).

Ich stehe jetzt vor dem Problem der Namensgebung. Bislang hat das Produkt einen Entwicklungs-Namen. "Indigo"... sehr kreativ.

Wie geht ihr bei sowas vor? Gibt es da Richtlinien? An was muss ich mich da halten?

LG, Christian.

Thema: MySQL Query mit "komischem" GROUP
Am im Forum: Datentechnologien

SELECT b.`account`, SUM(b.`test`)
FROM `bookings` AS b
INNER JOIN (SELECT `account`, `month`, MAX(`date`) AS `date`
	FROM `bookings`
	GROUP BY `account`, `month`) AS t
	ON t.`account` = b.`account`
    AND t.`month` = b.`month`
    AND t.`date` = b.`date`
GROUP BY b.`account`


Danke!

Thema: MySQL Query mit "komischem" GROUP
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: MySQL

Hi @ All.

Ich habe folgende Tabellenstruktur für Buchungen:

| account | date       | month   | test | ...
| 1       | 2015-01-01 | 2015-01 | 1    | ...
| 1       | 2015-01-02 | 2015-01 | 1    | ...
| 1       | 2015-03-03 | 2015-01 | 1    | ...
| 1       | 2015-02-01 | 2015-02 | 2    | ...
| 1       | 2015-03-01 | 2015-03 | 4    | ...
| 1       | 2015-03-02 | 2015-03 | 4    | ...
| 2       | ...        | ...     | ...  | ...

Ich brauche ein Query, das so gruppiert, dass ich pro account eine Zeile habe mit Summen der übrigen Spalten. Allerdings darf pro month nur die Zeile mit dem höchsten date mit in die Summe einbezogen werden. Das entsprechende date muss nicht zwingend im jeweiligen month liegen.

So soll zum Beispiel hier folgendes raus kommen:
| account | test | ...
| 1       | 7    | ...
| 2       | ...  | ...

Was ich bräuchte wäre so etwas wie folgendes. Nur bin ich mir nicht sicher, wie ich die HAVING-Klausel Formulieren muss, bzw. ob das mit HAVING überhaupt realisierbar ist.
SELECT SUM(test)
FROM bookings
GROUP BY account, month
HAVING date = MAX(date)

LG, Christian.

Test-Umgebung:
CREATE TABLE `bookings` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `account` int(11) DEFAULT NULL,
  `date` datetime DEFAULT NULL,
  `month` date DEFAULT NULL,
  `test` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`)
);
INSERT INTO `bookings` (`ID`, `account`, `date`, `month`, `test`) VALUES (1,1,'2015-01-01 00:00:00','2015-01-01',1);
INSERT INTO `bookings` (`ID`, `account`, `date`, `month`, `test`) VALUES (2,1,'2015-03-02 00:00:00','2015-03-01',4);
INSERT INTO `bookings` (`ID`, `account`, `date`, `month`, `test`) VALUES (3,1,'2015-01-02 00:00:00','2015-01-01',1);
INSERT INTO `bookings` (`ID`, `account`, `date`, `month`, `test`) VALUES (4,1,'2015-03-01 00:00:00','2015-01-01',1);
INSERT INTO `bookings` (`ID`, `account`, `date`, `month`, `test`) VALUES (5,1,'2015-02-01 00:00:00','2015-02-01',2);
INSERT INTO `bookings` (`ID`, `account`, `date`, `month`, `test`) VALUES (6,1,'2015-03-01 00:00:00','2015-03-01',4);

Thema: Win-Forms : Mehrere Forms in ein zusammen packen.
Am im Forum: GUI: Windows-Forms

https://github.com/dockpanelsuite/dockpanelsuite

Thema: Teilenehmer in Projekte einteilen - Algorithmus
Am im Forum: Rund um die Programmierung

Hi @ All.

Habe mal eine Klasse geschrieben, die genau dieses Problem mit Hilfe des GNU Linear Programming Kit löst.

using System;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;
using System.Text.RegularExpressions;
using System.Collections.Generic;

namespace WPUProWo.Logic
{
	public class GLPKSolver
	{
		private ICourse[] m_Courses = null;
		private IStudent[] m_Students = null;
		private Dictionary <string, ICourse> m_CoursesDict = new Dictionary<string, ICourse> ();
		private Dictionary <uint, IStudent> m_StudentsDict = new Dictionary<uint, IStudent> ();

		public GLPKSolver (ICourse[] courses, IStudent[] students)
		{
			m_Courses = courses;
			m_Students = students;

			foreach (var course in courses) {
				m_CoursesDict.Add (TextHelpers.ValidLettersOnly (course.ID).ToUpper (), course);
			}

			foreach (var student in students) {
				m_StudentsDict.Add (student.ID, student);
			}
		}

		public ISolution Solve ()
		{
			var lpFileName = Path.Combine (Application.StartupPath, "min.lp");

			if (File.Exists (lpFileName)) {
				File.Delete (lpFileName);
			}
			
			var lp = GenerateLP ();
			File.WriteAllText (lpFileName, lp, Encoding.ASCII);

			var psi = new ProcessStartInfo {
				FileName = "glpsol",
				Arguments = "--lp min.lp -o min.sol",
				WorkingDirectory = Path.GetDirectoryName(lpFileName)
			};

			var p = Process.Start (psi);

			while (!p.HasExited) {
				Thread.Sleep (10);
			}

			if (p.ExitCode != 0) {
				return null;
			}

			var sol = File.ReadAllText (Path.Combine (Path.GetDirectoryName (lpFileName), "min.sol"), Encoding.ASCII);

			return ParseSolution (sol);
		}

		private string GenerateLP ()
		{
			var sb = new StringBuilder ();

			GenerateMinimizePart (sb);

			sb.AppendLine ();
			sb.AppendLine ();

			GenerateSubjectToPart (sb);

			sb.AppendLine ();
			sb.AppendLine ();

			GenerateGeneralPart (sb);

			sb.AppendLine ();
			sb.AppendLine ();

			GenerateBinariesPart (sb);

			sb.AppendLine ();
			sb.AppendLine ();

			sb.AppendLine ("END");

			return sb.ToString ();
		}

		private void GenerateMinimizePart (StringBuilder sb)
		{
			sb.AppendLine ("Minimize");
			sb.AppendLine ("\t\\Sum of each student's penalty value");

			sb.Append ("\t");

			foreach (var student in m_Students) {
				sb.AppendFormat ("P_{0} + ", student.ID.ToString ().PadLeft (3, '0'));	
			}

			sb.Remove (sb.Length - 3, 3);
		}

		private void GenerateSubjectToPart (StringBuilder sb)
		{
			sb.AppendLine ("Subject To");
			sb.AppendLine ("\t\\Each student is assigned to exactly one course");

			foreach (var student in m_Students) {
				sb.Append ("\t");

				foreach (var course in m_Courses) {
					sb.AppendFormat ("{0}_{1} + ", TextHelpers.ValidLettersOnly (course.ID).ToLower (), student.ID.ToString ().PadLeft (3, '0'));
				}

				sb.Remove (sb.Length - 3, 3);

				sb.AppendLine (" = 1");
			}

			sb.AppendLine ();
			sb.AppendLine ("\t\\ Define the number of students in each course");

			foreach (var course in m_Courses) {
				sb.Append ("\t");

				foreach (var student in m_Students) {
					sb.AppendFormat ("{0}_{1} + ", TextHelpers.ValidLettersOnly (course.ID).ToLower (), student.ID.ToString ().PadLeft (3, '0'));
				}

				sb.Remove (sb.Length - 3, 3);

				sb.AppendFormat (" - {0}", TextHelpers.ValidLettersOnly (course.ID).ToUpper ());
				sb.AppendLine (" = 0");
			}

			sb.AppendLine ();
			sb.AppendLine ("\t\\ Limit the number of students in each course (min, max)");

			foreach (var course in m_Courses) {
				sb.AppendFormat ("\t{0} ≥ {1}", TextHelpers.ValidLettersOnly (course.ID).ToUpper (), course.MinAttendants);
				sb.AppendLine ();
				sb.AppendFormat ("\t{0} ≤ {1}", TextHelpers.ValidLettersOnly (course.ID).ToUpper (), course.MaxAttendants);
				sb.AppendLine ();
			}

			sb.AppendLine ();
			sb.AppendLine ("\t\\Define the penalty of each student based in his wished");

			foreach (var student in m_Students) {
				sb.Append ("\t");

				foreach (var course in m_Courses) {
					var penalty = 1000;

					if (course.ID == student.ThirdChoice) {
						penalty = 100;
					} else if (course.ID == student.SecondChoice) {
						penalty = 10;
					} else if (course.ID == student.FirstChoice) {
						penalty = 1;
					}

					sb.AppendFormat ("{2} {0}_{1} + ", TextHelpers.ValidLettersOnly (course.ID).ToLower (), student.ID.ToString ().PadLeft (3, '0'), penalty);
				}

				sb.Remove (sb.Length - 3, 3);

				sb.AppendFormat (" - P_{0}", student.ID.ToString ().PadLeft (3, '0'));

				sb.AppendLine (" = 0");
			}
		}

		private void GenerateGeneralPart (StringBuilder sb)
		{
			sb.AppendLine ("General");

			foreach (var student in m_Students) {
				sb.AppendFormat ("\tP_{0}", student.ID.ToString ().PadLeft (3, '0'));
				sb.AppendLine ();
			}

			foreach (var course in m_Courses) {
				sb.AppendFormat ("\t{0}", TextHelpers.ValidLettersOnly (course.ID).ToUpper ());
				sb.AppendLine ();
			}
		}

		private void GenerateBinariesPart (StringBuilder sb)
		{
			sb.AppendLine ("Binaries");

			foreach (var course in m_Courses) {
				foreach (var student in m_Students) {
					sb.AppendFormat ("\t{0}_{1}", TextHelpers.ValidLettersOnly (course.ID).ToLower (), student.ID.ToString ().PadLeft (3, '0'));
					sb.AppendLine ();
				}
			}
		}

		private ISolution ParseSolution (string text)
		{
			var lines = GetLines (text);
			var penalties = new Dictionary<uint, Line> ();
			var choices = new Dictionary<uint, List<Line>> ();
			var courses = new Dictionary<string, Line> ();
			var penaltyRegex = new Regex (@"^P_(?<ID>\d+)$", RegexOptions.Compiled);
			var choiceRegex = new Regex (@"^\w+_(?<ID>\d+)$", RegexOptions.Compiled);
			var courseRegex = new Regex (@"^\w+$", RegexOptions.Compiled);

			foreach (var line in lines) {
				var penaltyMatch = penaltyRegex.Match (line.RowName);
				var choiceMatch = choiceRegex.Match (line.RowName);

				if (penaltyMatch.Success) {
					var studentID = Convert.ToUInt32(penaltyMatch.Groups ["ID"].Value);

					penalties.Add (studentID, line);
				} else if (choiceMatch.Success) {
					var studentID = Convert.ToUInt32(choiceMatch.Groups ["ID"].Value);					

					if (!choices.ContainsKey (studentID)) {
						choices.Add(studentID, new List<Line>());
					}

					choices[studentID].Add (line);
				} else if (courseRegex.IsMatch (line.RowName)) {
					courses.Add (line.RowName, line);
				}
			}

			foreach (var pair in penalties) {
				m_StudentsDict [pair.Key].Penalty = pair.Value.Activity;
			}

			foreach (var pair in choices) {
				var course = "";

				foreach (var line in pair.Value) {
					if (line.Activity == 1) {
						course = line.RowName;

						break;
					}
				}

				course = course.Substring (0, course.IndexOf ("_")).ToUpper();

				m_StudentsDict [pair.Key].Assigned = m_CoursesDict [course].ID;
			}

			foreach (var pair in courses) {
				m_CoursesDict [pair.Key.ToUpper()].RealAttendants = pair.Value.Activity;
			}

			return new Solution {
				Courses = m_Courses,
				Students = m_Students
			};
		}

		private Line[] GetLines (string text)
		{
			var lines = text.Replace ("\r\n", "\n").Replace ("\r", "\n").Split ('\n');
			var list = new List<Line> ();			
			var headersFound = 0;
			var headersRegex = new Regex (@"^(-|\s)+$", RegexOptions.Compiled);

			foreach (var line in lines) {
				if (headersRegex.IsMatch (line)) {
					headersFound++;

					continue;
				}

				if (headersFound == 2 && line.Trim () != "") {
					var parsed = ParseLine(line);

					if (parsed != null) {
						list.Add(parsed);
					}
				} else if (headersFound == 2 && line.Trim () == "") {
					headersFound++;
				}
			}

			return list.ToArray ();
		}

		private Line ParseLine (string text)
		{
			var lineRegex = new Regex (@"^\s*(?<Number>\d+)\s*(?<RowName>\w+(_\d+)?)\s*\*\s*(?<Activity>\d+)\s*(?<LowerBound>\d+)\s*(?<UpperBound>\d*).*?$", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline);
			var match = lineRegex.Match (text);

			if (match.Success) {
				return new Line {
					Number = Convert.ToInt32(match.Groups ["Number"].Value),
					RowName = match.Groups ["RowName"].Value,
					Activity = Convert.ToInt32(match.Groups ["Activity"].Value)
				};
			}

			return null;
		}

		private class Line
		{
			public int Number { get; set; }
			public string RowName { get; set; }
			public int Activity { get; set; }
		}

		private class Solution : ISolution
		{
			public IStudent[] Students { get; set; }

			public ICourse[] Courses { get; set; }
		}
	}

	public interface IStudent {
		uint ID { get; }

		string FirstChoice { get; }
		string SecondChoice { get; }
		string ThirdChoice { get; }

		string Assigned { set; }
		int Penalty { set; }
	}

	public interface ISolution {
		IStudent[] Students { get; }
		ICourse[] Courses { get; }
	}

	public interface ICourse {
		string ID { get; }
		int MinAttendants { get; }
		int MaxAttendants { get; }
		int RealAttendants { set; }
	}

	public static class TextHelpers
	{
		public static string ValidLettersOnly(string text) {
			var normalized = text.Normalize(NormalizationForm.FormKD);
			var sb = new StringBuilder();

			foreach (var chr in normalized) {
				var info = CharUnicodeInfo.GetUnicodeCategory (chr);

				if (info == UnicodeCategory.LowercaseLetter || info == UnicodeCategory.UppercaseLetter) {
					sb.Append(chr);
				}
			}

			return sb.ToString();
		}
	}
}

@zommi:

Nochmal VIELEN DANK! Ich hätte das alleine nie hinbekommen bzw. wäre nie auf die Idee gekommen, GLPK zu verwenden...

Gruß,
Christian.

Thema: Teilenehmer in Projekte einteilen - Algorithmus
Am im Forum: Rund um die Programmierung

Hi, Zommi.

Erstmal: WOW...

Habe das ganze jetzt nur überflogen, da ich schon von der Arbeit zuhause bin, aber ich werde mich morgen dann mal da rein fuchsen.

Schon mal im voraus TAUSEND DANK für dein Bemühen!

Liebe Grüße,
Christian.

Thema: Teilenehmer in Projekte einteilen - Algorithmus
Am im Forum: Rund um die Programmierung

Hi @ All.

Nachdem ich lange nicht mehr im Forum aktiv war, habe ich mal wieder eine Frage an die Community.

Folgende Problemstellung:

Ich habe eine Liste von Kursen mit Bedingungen (Maximale / Minimale Anzahl an Teilnehmern) und eine Liste von Teilnehmern, die jeweils eine Erstwahl, Zweitwahl und eine Drittwahl angeben können.

Jetzt möchte ich jeden der Teilnehmer in genau einen Kurs einteilen, bestenfalls natürlich in seine Erstwahl. Ebenso sollen bestenfalls alle Kurse stattfinden (d.h. jeder Kurs soll mindestens seine Minimale Anzahl an Teilnehmern haben).

Meine Vorgehensweise bisher:

Ich weise zunächst jedem Teilnehmer seine Erstwahl zu und schaue dann, was ich ändern muss. Hierbei suche ich mir Kurse, die mit der Erstwahl überbelegt sind und werfe (zufällig) Personen raus, bis der Kurs eine gültige Teilnehmerzahl hat. Die rausgeworfenen Personen bekommen nun ihre Zweitwahl zugeteilt und der Spaß beginnt von vorne. Problem hierbei: Die Zweitwahl kann wieder dafür sorgen, dass (andere) Kurse zu voll sind. Dafür gibt es zum Glück die Drittwahl. Was mache ich aber, wenn die Kursbelegung auch nach der Drittwahl immer noch nicht stimmt?

Meine Frage: Gibt es für solche Probleme schon bestehende Schemata / Algorithmen (bestimmt), wenn ja, nach was muss ich suchen?

Wenn nein, kann mir jemand einen Tipp geben, wie ich das besser handhaben kann?

Mit freundlichen Grüßen,
Christian.

Thema: .NET Regex wie kommt man an die Ergebnisse
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Parser für Kommandozeilenparameter (CommandLineArguments)

Thema: In sich geteilter Bildschirm
Am im Forum: Smalltalk

Grafiktreiber?
Stecker (DVI/HDMI) kaputt?
Grafikkarte kaputt?

Thema: Mein Ausscheiden aus dem myCSharp.de-Team
Am im Forum: Ankündigungen

Hallo, herbivore.

Auch von mir ein herzliches Dankeschön für dein Engagement. Ich bin inzwischen seit fast 9 Jahren Mitglied in diesem Forum (und zwar inzwischen berufsbedingt nur noch sehr selten hier unterwegs) und habe deine konstruktiven Beiträge schon von Anfang an immer sehr wertgeschätzt.

Ich glaube auch, dass mit den vier neuen Administratoren eine gute Wahl getroffen wurde. Ihr packt das!

Liebe Grüße,
Christian.

Thema: Gepackten Datumswert (binär) in DateTime umwandeln
Am im Forum: Rund um die Programmierung

Genauere Infos:

Die Ursprüngliche Anwendung für das Gerät liefert folgenden Output:

Device (1) - Connect tcpip    [192.168.178.123]    [5005]
    success

Device (1) - Lock
    success

Device (1) - Download Data
    2014-08-01 to 2014-09-23
    get to memory (1)
    User ID(1)    Date Time(2014-09-19 12:57:11)    Direction(in)    (no record)    (database)
    User ID(1)    Date Time(2014-09-19 12:57:17)    Direction(in)    (no record)    (database)
    User ID(1)    Date Time(2014-09-19 12:57:22)    Direction(out)    (no record)    (database)
    User ID(1)    Date Time(2014-09-19 12:57:28)    Direction(out)    (no record)    (database)
    User ID(1)    Date Time(2014-09-19 13:46:44)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-22 12:38:58)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-22 12:39:01)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-22 12:39:02)    Direction(in)    (no record)    (database)
    User ID(4)    Date Time(2014-09-22 12:39:04)    Direction(in)    (no record)    (database)
    User ID(4)    Date Time(2014-09-22 12:39:06)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-22 12:39:09)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-22 12:39:11)    Direction(in)    (no record)    (database)
    User ID(4)    Date Time(2014-09-22 12:39:14)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-22 12:39:16)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-23 13:31:27)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-23 13:31:31)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-23 13:47:30)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-23 13:47:31)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-23 13:47:32)    Direction(in)    (no record)    (database)
    User ID(3)    Date Time(2014-09-23 13:47:33)    Direction(in)    (no record)    (database)
    done (0)

Device (1) - Set Time
    2014-09-23 13:48:03

Der TCP/IP-Data-Traffic sieht wie folgt aus (Jeweils Request und Response):
55aa0180000000000000ffff00000100
aa550101000000000000

55aa0113000000000000000030000200
aa55010100000000000055aa0201300035092804ee0400000201010201010101b80b0000b80b0000b80b0000e8030000a086010002010201020000000121

55aa0181000000000000ffff00000300
aa550101000000000000

55aa01b4080000000000ffff00000400
aa550101140000000000

55aa01a40000000014000000f0000500
aa55010100000000000055aa0221000b01000000de9793e502a1001101000000de9793e50261001601000000de9793e502e1001c01000000de9793e50121002c01000000de97b3b90121003a03000000de9796990121000103000000de97969d0121000203000000de97969d0121000404000000de97969d0121000604000000de97969d0121000903000000de97969d0121000b03000000de97969d0121000e04000000de97969d0121001003000000de97969d0121001b03000000de97b77d0121001f03000000de97b77d0121001e03000000de97b7bd0121001f03000000de97b7bd0121002003000000de97b7bd0121002103000000de97b7bd0000

55aa01b300000000000000000800060055aade070917020d30030000
aa550101000000000000

55aa0181010000000000ffff00000700
aa550101000000000000

Meine Daten oben stammen aus der 5. Response (abzüglich der Konstante [aa55010100000000000055aa0221]am Anfang).

Thema: Gepackten Datumswert (binär) in DateTime umwandeln
Am im Forum: Rund um die Programmierung

Hi @ All :)

Habe ein kleines Problem:

Ich lese von einer TCP/IP-Verbindung (FixedWidth-)Daten aus einem Gerät aus.

Die Datensätze sehen wie folgt aus:

 ?  |uid | ?  | date    | ?  
000B 0100 0000 DE97 93E5 02A1
0011 0100 0000 DE97 93E5 0261
0016 0100 0000 DE97 93E5 02E1
001C 0100 0000 DE97 93E5 0121
002C 0100 0000 DE97 B3B9 0121

003A 0300 0000 DE97 9699 0121
0001 0300 0000 DE97 969D 0121
0002 0300 0000 DE97 969D 0121
0004 0400 0000 DE97 969D 0121
0006 0400 0000 DE97 969D 0121
0009 0300 0000 DE97 969D 0121
000B 0300 0000 DE97 969D 0121
000E 0400 0000 DE97 969D 0121
0010 0300 0000 DE97 969D 0121

001B 0300 0000 DE97 B77D 0121
001F 0300 0000 DE97 B77D 0121
001E 0300 0000 DE97 B7BD 0121
001F 0300 0000 DE97 B7BD 0121
0020 0300 0000 DE97 B7BD 0121
0021 0300 0000 DE97 B7BD 0000

Darin stecken folgende Informationen (die UserID's stimmen auch in den jeweiligen Zeilen überein und zwischen entsprechenden Zeilen mit Sprung im Datum gibt es auch im Hex-Code einen entsprechenden Sprung):
uid | date              | dir
1    2014-09-19 12:57:11 in   
1    2014-09-19 12:57:17 in   
1    2014-09-19 12:57:22 out  
1    2014-09-19 12:57:28 out  
1    2014-09-19 13:46:44 in   

3    2014-09-22 12:38:58 in   
3    2014-09-22 12:39:01 in   
3    2014-09-22 12:39:02 in   
4    2014-09-22 12:39:04 in   
4    2014-09-22 12:39:06 in   
3    2014-09-22 12:39:09 in   
3    2014-09-22 12:39:11 in   
4    2014-09-22 12:39:14 in   
3    2014-09-22 12:39:16 in   

3    2014-09-23 13:31:27 in   
3    2014-09-23 13:31:31 in   
3    2014-09-23 13:47:30 in   
3    2014-09-23 13:47:31 in   
3    2014-09-23 13:47:32 in   
3    2014-09-23 13:47:33 in   

Allerdings finde ich keine Möglichkeit, das Datum zu parsen. Ich vermute, dass es irgendwie in den ersten beiden der letzten drei 4-Tupel eines jeden Datensatzes steckt, allerdings kriege ich es nicht geparst.

Ich habe auch leider keine Spezifikation des Geräts, das auf das verwendete Datumsformat schließen lässt. Habe schon einiges (wie Unix-TimeStamps etc.) probiert.

Hat von euch jemand einen Tipp / eine Anregung?

Gruß, Christian.

Thema: Shortcut Manager mit Shortcuts wie Visual Studio
Am im Forum: .NET-Komponenten und C#-Snippets

Hallo. Habe das Problem beseitigt.

Du musst an deine TextBox zwei EventHandler mit folgendem Code anhängen:

private void textBox1_Enter(object sender, EventArgs e)
{
	m_Shortcuts.SuppressKeyPress = false;
	m_Shortcuts.SetHandled = false;
}

private void textBox1_Leave(object sender, EventArgs e)
{
	m_Shortcuts.SuppressKeyPress = true;
	m_Shortcuts.SetHandled = true;
}

Download im ersten Post angepasst.

Gruß, Christian.

Thema: Welche (Marken-)Tastatur für Office- und Entwicklertätigkeiten könnt ihr empfehlen?
Am im Forum: Smalltalk

Zitat von Abt
absolut empfehlenswert.

Habe die Tastatur jetzt auch schon über 3 Jahre im Einsatz, bin nach wie vor sehr begeistert von ihr.

Thema: Sowas wie ROWNUMBER OVER (UNIQUE ColumnName)
Am im Forum: Datentechnologien

Ahhhhh,

PARTITION BY war das Stichwort...

Danke!

Thema: SQLITE Datenbank lässt sich nicht über UNC Pfad aufrufen
Am im Forum: Datentechnologien

Was du machen könntest, wäre den Ordner in dem die DB liegt, fest in einen lokalen Ordner zu mounten.

Thema: SQLITE Datenbank lässt sich nicht über UNC Pfad aufrufen
Am im Forum: Datentechnologien

.Net-Anwendungen haben nicht immer die Berechtigungen, auf Netzlaufwerke zuzugreifen. Kann also ein generelles Berechtigungsproblem sein und nix mit SQLite zu tun haben.

Thema: Sowas wie ROWNUMBER OVER (UNIQUE ColumnName)
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: TSQL

Hi @ All.

Kleines Problem. Habe eine Abfrage, die schematisch etwa Folgendes liefert:

ID	Value
1	a
1	b
2	c
3	d
3	e

Nun brauche ich aber Folgendes:
ID	Value	Number
1	a	1
1	b	2
2	c	1
3	d	1
3	e	2

Wie kann ich die letzte Spalte bewerkstelligen? Ich brauche praktisch irgendwas, dass die Zeilen mit der gleichen ID hochzählt...

Gruß, Christian.

Thema: RegEx: Wie sage ich das in einem Ausdruck eines von 6 Elementen vorhanden sein muss (für ISO 8601)
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Das entsprechende RegEx sollte so aussehen:

^
P
(
(?<Years>\d+Y(?<N>))?           # If matched, Push To "N"-Stack
(?<Months>\d+M(?<N>))?          # If matched, Push To "N"-Stack
(?<Days>\d+D(?<N>))?            # If matched, Push To "N"-Stack
)
(
T
(?<Hours>\d+H(?<N>))?           # If matched, Push To "N"-Stack
(?<Minutes>\d+M(?<N>))?         # If matched, Push To "N"-Stack
(?<Seconds>\d*.?\d+S(?<N>))?    # If matched, Push To "N"-Stack    
)
$
(?<-N>){1}                      # Decrement "N"-Stack by one (Cause Match to fail if not at least once pushed to)

Gruß, Christian.

Thema: DNN Module
Am im Forum: Web-Technologien

Das kommt darauf an, wie du das Modul ausgeliefert bekommst. Meistens sind es nur ganz normale Assemblies und die entsprechenden ASPX-Dateien. Diese kannst du einfach so öffnen. Für die Assemblies musst du dann schon einen (geringfügig) größeren Aufwand auf dich nehmen und diese mit Reflector oder ähnlichem dekompilieren. Allerdings kannst du von den meisten DNN-Modulen auch die SourceCode-Variante herunterladen oder für einen Aufpreis erwerben.

Gruß, Christian.

Thema: Wie handhabt man reine Datencontainer, wenn es keine "friend" Klassen gibt?
Am im Forum: Rund um die Programmierung

Wie wäre es mit sowas (sehr verkürzte Form):

public interface IProject {
    string Path { get; }
    string Active { get; }
}

private class ConcreteProject : IProject {
    public string Path { get; set; }
    public string Active { get; set; }
}

public class Logic {
    public IProject CreateProject(string path) {
        return new ConcreteProject { Path = path; Active = false; };
    }
    public void SetProjectActiveStatus(IProject p, bool a) {
        ((ConcreteProject)p).Active = a;
    }
}

Gruß, Christian.

Thema: Wahrscheinlichkeiten für nicht disjunkte Personengruppen berechnen
Am im Forum: Rund um die Programmierung

Hi @ All :)

Ich hänge gerade an folgender Aufgabe:

Bei einer Testgruppe stellte man fest, dass 42% der Personen noch nie Ski gelaufen sind, dass 58% der Personen noch nie geflogen sind und dass 29% der Personen schon geflogen und Ski gelaufen sind.

Welche Wahrscheinlichkeit ist höher?

  1. Jemanden zu treffen, der Ski gelaufen ist aus der Gruppe der noch nie geflogenen
  2. Jemanden zu treffen, der geflogen ist aus der Gruppe der noch nie Ski gelaufenen
  3. Meine bisherigen Überlegungen:
    
    S := Die Leute, die Ski gelaufen sind (in %)
    G := Die Leute, die geflogen sind (in %)
    
    !S      = 42%
    !G      = 58%
     S ^  G = 29%
    !S v !G = 100% - S ^ G = 71%
    
    Gesucht:
    
    a :=  S ^ !G = ?
    b := !S ^  G = ?
    

    Irgendwie komme ich jetzt nicht weiter...

    Hat vllt jemand von euch einen Tipp für mich?

    Gruß, Christian.

Thema: [gelöst] Visual Studio 2012: Korrektes einrichten mehrere Projekte - Framework-versionen beachten!
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Mach mal Rechtsklick auf die Solution, dann "Clean Solution", dann "Rebuild Solution".

Wenn das nicht funktioniert, lösche mal die Referenz von "Core" in server_app und füge sie neu hinzu.

Wenn das nicht funktioniert... Vllt sind die Framework-Versionen der beiden Projekte inkompatibel (Core ist .Net 4, server_app .Net 2) oder sowas?

Im Error-Fenster werden noch 4 Warnungen angezeigt, die aber ausgeblendet sind. Was besagen die?

Gruß, Christian.