Also technisch gibt es gar kein Problem. Ich weiß nur nicht ob es bereits eine Implementierung für meine Idee gibt. Ich hab schon Spaß am Programmieren, aber auch an meiner Freizeit ;)
Ich stehe hier vor einem Problem für das ich einen Namen brauche. Ich möchte gerne wissen ob es schonmal gelöst wurde (nicht das Rad zweimal erfinden). Ich hoffe ihr könnt meinen Ausführungen folgen ;).
Die Ausgangslage
Ich habe eine Reihe von Merkmalen die 1 oder 0 ausgeprägt sein können. Nennen wir die Merkmale mal M1 bis M4. Es könnte z.B. gelten:
Für die Merkmale soll jetzt eine Bewertungsmatrix angesetzt werden. Je nachdem welche Kombination eintritt gilt eine andere Gewichtung. Der Einfachheit nehme ich mal zwei Bewertungen vor.
Die Summe errechnet sich durch B1 * M1 + B1 * M2 ... = S1 und B2 * M1 ... = S2. Für das Beispiel würde sich S1 = 1.1 und S2 = 1.0 ergeben.
Die Regeln
Das Ziel der Konstruktion ist es eine Wahrscheinlichkeit festzustellen ob ein bestimmter Fall eintritt. Dafür legt man Fest, dass der Fall (nennen wir ihn mal F) true ist, wenn S1 < 1.5 und S2 < 1.0. Spiegelbildlich wird F = false.
Das Problem ist aber, dass F durch einen booleschen Ausdruck definiert werden soll, der nur die eingangs erwähnten Merkmale enthält.
D.h. in diesem Fall:
Bedingung 1 (S1 < 1.5): (M1 AND M2 AND M3 AND NOT M4) OR (M1 AND M2 AND NOT M3 AND M4) ...
Bedinung 2 (S2 < 1.0): (M1 AND M1 AND NOT M3 ...
Die beiden Ausdrücke werden dann per AND konjugiert. Letztendlich müsste der Ausdruck dann wieder vereinfacht werden. (zumindest hier habe ich Algorithmen/Ansätze gefunden)
Die Frage
In welchem Themenbereich bin ich hier?
Wie kann ich Softwarekomponenten finden, die sich mit der Problemstellung beschäftigen?
Muss ich doch auf "dem weißen Blatt" anfangen?
Also wenn ich raten dürfte, würde ich sagen, dass man DDL (CREATE TABLE, TRIGGER, etc. ) nicht "planen" also auch nicht "preparen" kann. Es macht zumindest auch nicht besonders viel Sinn. Das Preparestatement ist für parametrisierte Statements (SELECT, UPDATE, INSERT, DELETE) gedacht.
Ich nehme daher an, dass der Wrapper nicht bis stepAsync wartete sondern direkt reinhaut.
Wenn IntelliSense nicht funktioniert würde ich mal die entsprechende HPageBreak Interface Dokumentation versuchen. Die Methode Delete sieht recht vielversprechend aus.
Die Infos sind ein bisschen sperrlich. Wie greifst du auf das Excel-Dokument zu? Wenn du z.B. ADO.NET verwendest kannst du doch nach X Zeilen einfach eine neues Sheet beginnen.
Ich hab mitlerweile einen Weg gefunden mein Problem zu lösen. Ich hab zwei Varianten gefunden die recht vielversprechend sind.
SQLite3-WinRT
Das ist eine Komponente die den Zugriff auf SQLite-Funktionalität ermöglicht. Im Prinzip genau das, was ich bereits im vorhergegangenen Posting angedacht habe.
Lawnchair
Das ist eine JS-Library die als Wrapper für DOM, IndexDB, WebSQL etc. funktioniert. Wenn ich ein neues Projekt beginnen würde, würde ich evtl. diese Lib nehmen, weil man damit schnell die Persistenztechnik umschalten kann.
ich habe eine relativ umfangreiche PhoneGap-App die per WebSQL Daten speichert und ließt, die ich gerne nach Windows RT portieren möchte. WebSQL wird allerdings in JavaScript-Apps nicht unterstützt . Der Grund ist, dass die Apps in der IE 10 Engine laufen und da gibt es kein WebSQL. PhoneGap-Api-Doku.
Ich habe jetzt schon folgende Optionen überlegt:
LocalStorage/IndexedDB
In den sauren Apfel beißen und alles auf LocalStorage umbauen. Wie gesagt, die Anwendung ist recht umfangreich und darauf habe ich eigentlich am wenigesten Lust.
SQLite-Wrapper
Man kann offenbar Komponenten in C#/VB basteln um Funktionalitäten z.B. auch SQLLite verfügbar zu machen. Das finde ich eigentlich sehr elegant und man könnte daraus gleich ein PhoneGap-Plugin bauen. Der Aufwand ist allerdings auch nicht ohne.
Kennt jemand das Problem und kann vielleicht was dazu sagen?
Ich entwickel mit Visual Studio mobile Anwendungen auf Basis von JQM, Backbone JS und TypeScript. Ich will dafür eben KEINE Webforms benutzen, die sind doch völlig ungeeignet dafür ;). Meine Oberflächen sind HTML-Dateien und um dort schneller voran zu kommen möchte ich mir ein Set aus JQM-Controls zusammenstellen.
Meine Frage daher: kann man Custom Controls auch für Nicht-Webforms erstellen.
in Visual Studio kann man ja recht einfach eigene Web Controls erstellen. Ich dachte mir, dass mir das z.B. bei der Verwendung von JQuery Mobile weiterhelfen kann. Um die verschiedenen Controls einzusetzen könnte man sich so einfach eine Palette von Controls in der Toolbox anlegen.
Ich möchte diese Controls allerdings nicht in *.aspx-Seiten verwenden sondern in *.html-Dateien. Dieses "kleine" Problem schreint größer zu sein, als ich gedacht haben. Ich habe herausgefunden, dass z.B. der HTML-Button den es in der Toolbox gibt vom HTMLGenericControl erbt. Allerdings bringt das direkte vererben und aufnehmen in die Toolbox nichts. Hat jemand ein Beispiel wie es klappen kann? Man kann natürlich auch direkt die Snippets reinziehen, aber die JQM-Strukturen sind teilweise recht komplex und die Kontrolle über Default-Werte o.ä. wäre hilfreich.
Den kenn ich aber. Das Problem ist, dass ich immer zwischen der Site und VS wechseln und kopieren muss. Das ist nicht was ich mir vorstelle. Das ist schon jammern auf hohen Niveau, ich weiß ;)
ich nutze Visual Studio (2012) zum Erstellen von JQuery Mobile Apps. Das funktioniert sehr gut, allerdings schiele ich immer ganz neudisch z.B. in die Sencha-Ecke, die schöne grafische Editoren zum Erstellen der Oberflächen haben. Ich muss den HTML-Code "zu Fuß" zusammenbauen. Es gibt zwar einen grafischen Editor in VS, der scheint aber mit JQuery Mobile nicht zurecht zu kommen (Controls werden nicht korrekt gerendert).
Kann man dem VS-Designer "beibringen" JQM korrekt zu rendern?
Kann man die Komponenten wie Buttons, Textboxen etc. in die Tools aufnehmen, damit man per Drag&Drop die Oberfläche zusammensetzen kann?
Gibt es alternativ ein Plugin dafür?
ich habe ich recht grundlegendes Problem bei dem ich nicht so recht weiterkomme. Ich möchte gerne einen Algorithmus entwerfen, der auf einer vordefinierten Flächen eine Route berechnet um möglichst 100% der Fläche "abzuschreiten". Am Besten kann man sich das wie einen Rasenmäher vorstellen, der möglichst nicht über bereits gemähten Flächen fahren soll, weil durch mehrfaches Fahren der Rasen kaputt geht und eine gewisse Spannbreite hat. Außerhalb des Bereichs sollte er sich aber auch nicht bewegen.
Mich erinnert das ganze an das Problem, wo der Springer auf jedes Feld des Schachbretts springen soll aber kein Feld doppelt besuchen sollte. Deshalb ist mein erster Ansatz auch mein Polygon in Quadrate und Polygone zu zerteilen und durch Ziehen und Backtracking die richtige Route zu finden.
D.h. ich setzen ein Quadrat vor das Nächste und wenn das Quadrat weniger als 50% des Quadrats belegt, dann muss nach rechts oder links gewendet werden.
Hat jemand sowas schonmal entworfen? Gibt es da einen besseren/schlaueren Weg?
Ich verstehe nich so ganz, warum du eine spaltenorientierte Darstellung in einer TextBox abfackeln möchtest. Klassicherweise würde man dafür eine DataGridView nehmen.
Es sei denn du willst Fließtext praktisch spaltenorientiert (wie in einer Zeitung) ausgeben (?)
Ich glaube du meinst, dass der Windows-Explorer(?) quasi "Zurück" auslösen soll, sobald der User in einen bestimmten Ordner wechselt, right? Ich frag mich allerdings wozu das gut sein soll :)
Zusatzfrage: Geht das auch mit dem LIKE Operator? Wenn ich einen exakten Wert suche bekomme ich das gewünschte Ergebnis aber leider nicht wenn ich mit LIKE arbeite
Ich bin nicht sicher auf was du hinaus willst. Wenn du keine feste List von Areas hast (SELECT DISTINCT Area ...) dann kannst du nicht mehr so vorgehen. Dann würde die Vergleichsmenge unendlich groß werden.
EDIT:
Vielleicht eine Richtung in die es doch gehen könnte. Du könntest deine Eintrage natürlich irgendwie normalisieren. D.h. wenn du Area auswählst nimmst du nicht direkt die Spalte sondern eine Fallunterschiedung.
... SELECT DISTINCT ...
... CASE ( WHEN Area LIKE "Comp%" THEN "Company" ELSE Area ...
SELECT DISTINCT CustomerID
FROM Tabelle
MINUS
SELECT CustomerID
FROM
(SELECT t1.CustomerID AS CustomerID, t2.Area AS Area
FROM Tabelle t1, (SELECT DISTINCT Area FROM Tabelle) AS t2
MINUS
SELECT t1.CustomerID, t1.Area
FROM Tabelle t1)
Erklärung:
1. Alle eindeutigen Kunden-IDs ermitteln
2. Alle Permutationen aus Kunden-ID und Area (alle möglichen Kombinationen)
3. Davon die Abziehen die tatsächlich vorkommen und das Ergebnis wiederum von der Gesamtanzahl-Kunden-IDs abzeihen
EDIT: Evtl. unterstützt MSSQL kein MINUS, dann gibt es evtl. EXCEPT
Wirst Du auch nicht so einfach drum herum kommen, ansonsten wären Sicherheitsrelevante Spoofings viel zu einfach umsetzbar.
Ja, da ist schon was dran. Ich bin hin und her gerissen. Auf der einen Seite finde ich es elegant, dass man keinen neuen Port definieren muss sondern die Eindeutigkeit über diese Registrierung vornehmen kann (...:80/meineapp) andererseits ist die Sache mit den Adminrechten unbequem. Wenn ich eine externe Library wie die hier nutze brauche ich keine Registrierung. Aber ist in einem sauber konfigurierten System das Öffnen eines Firewall-Ports nicht auch für den normalen User unterbunden?
Hm, das macht mir keinen Spaß. Kann man programmatisch irgendwie abfragen, ob der Endpunkt bereits registriert wurde? Dann muss man den Anwender nur beim ersten mal fragen. Allerdings bleibt das Problem, dass er (zumindest einmal) Admin-Rechte braucht.
ich hab das mal ein eher stragegisches Problem. Ich brauche in einem kleinen Tool eine Komponente die Web-Request entgegennimmt d.h. einen embedded Webserver. Die erste Anlaufstelle für mich war der HttpListener weil im Framework bereits enthalten. Allerdings finde ich es unglücklich, dass der Endpoint immer erst im Betriebssystem als Admin registriert werden muss. Ich würde das Tool gerne so portabel wie möglich machen.
Ich habe mich bereits nach anderen Komponenten umgeschaut und eine ganze Reihe von Beispielen gefunden.
Ich habe jetzt auch das Problem hinsichtlich der Navigationproperties lösen können. Es ist tatsächlich so, dass das EF mit mehreren Bezügen auf die selbe Entität nicht gut zurecht kommt. In dem Fall kann man die Eigenschaft InverseProperty mit angeben.
[InverseProperty("User")]
public virtual ICollection<Buddy> Buddies { get; set; }
[InverseProperty("ToUser")]
public virtual ICollection<Buddy> ToBuddies { get; set; }
Was die EDMX angeht, behalte ich das jetzt erstmal so bei.
Um was für Information handelt es sich denn? Ich habe bei meinen ersten MVC-Gehversuchen den Fehler gemacht die Authentifizierungsinformationen immer mit in das Repository mitzunehmen. Später habe ich dann aber entdeckt, dass dies mit einem ActionFilter eleganter geht.
Vielleicht erklärst Du nochmal Dein genaues Vorgehen.
OK, das mach ich.
Zitat von Abt
Was machst Du mit dem EDMX dass er Dir Deinen Code generiert?
In dem EDMX erstelle ich meine Entitäten und Assoziationen. Vorher habe ich das manuell in den einzelnen Klassen/Modellen gemacht. Meine Idee war, dass dies mit dem Designer schneller und eleganter geht. Ich ignoriere hier aber vollständig die Mappings. Vom EDMX schreibe ich keine Datenstrukturen in die Datenbank. Es sollen wirklich nur (Code-)Modelle generiert werden.
Zitat von Abt
Welchen Code Generator verwendest Du (ja, gibt verschiedene, da EDMX normalerweise keine echten POCOs erstellt!).
Ich nutze den EF 5.x-DBContext-Generator.
Zitat von Abt
Wie sieht Dein Connection-String und die Connection-Klasse aus und wer erstellt diese? Du oder der Generator?
Dass Du Code First nutzt seh ich an der Tatsache des DbMigration.
Deine Klasse via autogenerated spricht aber für den EDMX-Weg.
Ja, da liegt wohl des Pudels Kern. Ich hatte gedacht, dass ich den Model-Designer des EDMX nutzen kann um meine Entitäten modellieren.
Die Probleme mit den chaotischen FKs scheinen aber aus dem DbMigration zu stammen. Ich verwende ja gar keine Informationen des CSDL. Wahrscheinlich liegt es tatsächlich an den Namenskonventionen. Bei FKs die tatsächlich so heißen wie die Hauptentität (+ID) habe ich ja auch gar keine Schwierigkeiten.
Zitat von Abt
Wenn Du eine Modellierung willst, die nachher als Dokumentation dienst, wieso nutzt Du nicht einfach ein UML-Diagramm? Daraus kannst Du Dir ebenfalls C# Code generieren lassen.
Hm, ja mag sein. Vielleicht wäre das der bessere Weg ... VS bringt UML aber leider erst ab der Ultimate (oder?).
Gruß
Levi
EDIT:
P.S.:
Zitat von Abt
Edit: Ich meine mich gerade dran zu erinnern, dass dies nur möglich ist, wenn der FK wie die Entity+ID-Feld heißt.
In diesem Fall "UsersUserId" (PS: Klassennamen immer im Singular!).
Das hat mir MS eingebrockt. Die Users-Tabelle im MVC-Template war Plural ;)
Damit konnte ich schonmal aushandeln, dass er die richtigen Spalten nimmt. Allerdings wurden immernoch 4 FKs angelegt. Also habe ich die Navigation-Properties bei dem Model Users entfernt und voilà:
namespace BusinessSelection.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class Buddy15 : DbMigration
{
public override void Up()
{
AddForeignKey("dbo.Buddy", "UserID", "dbo.Users", "UserId");
AddForeignKey("dbo.Buddy", "ToUserID", "dbo.Users", "UserId");
CreateIndex("dbo.Buddy", "UserID");
CreateIndex("dbo.Buddy", "ToUserID");
}
public override void Down()
{
DropIndex("dbo.Buddy", new[] { "ToUserID" });
DropIndex("dbo.Buddy", new[] { "UserID" });
DropForeignKey("dbo.Buddy", "ToUserID", "dbo.Users");
DropForeignKey("dbo.Buddy", "UserID", "dbo.Users");
}
}
}
So sollte es sein.
Die Frage ist dann nur: Wie kann ich an meinem Users-Model zwei Navigation-Properties BuddyToUser und BuddyUserschaffen die auf die richtigen FKs gehen?