Laden...
Avatar #avatar-1835.jpg
tomaten myCSharp.de - Member
Informatiker Stolberg (Rhld.) Dabei seit 27.07.2005 402 Beiträge
Benutzerbeschreibung

Forenbeiträge von tomaten Ingesamt 402 Beiträge

10.01.2008 - 12:55 Uhr

Ich habe jetzt einen BB-Code Parser gefunden, der zwar auch RegEx benutzt aber richtig richtig schnell ist:

BB-Code Parser

08.01.2008 - 17:04 Uhr

Hallo. Das macht dieses Forum auch, aber vor dem Formatieren. Evtl. sollte ich das Formatieren mal "umlegen". 😁 Auf diesem Source basieren ja auch der Community Server und seine Ableger.

08.01.2008 - 16:56 Uhr

Ich habe jetzt mal alles unnötige aus der transform.txt rausgeschmissen was die Sache erträglicher macht. Du musst aber immer noch 35 Regex (übriggebliebene Einträge/2) x 25 Beiträge pro angezeigte Threadseite rechnen (875 Regex). Scheint doch noch einiges an CPU zu brauchen.

08.01.2008 - 15:18 Uhr

Also mit Javascript kann ja nicht die Lösung sein.

08.01.2008 - 14:57 Uhr

[EDIT]Abgeteilt von Brauche Hilfe bei einem RegEx![EDIT]

Hallo zusammen.

Mein Problem passt zwar nur indirekt hier her, wollte aber keinen extra Thread öffnen.

Ich habe eine Foren-Software (Mono-Version des AspNetForum) und dort wird z.B. BB-Code mit RegEx ersetzt. Wenn ich die Formatierung des Body rausnehme (also eben genannte Funktion) ist das Forum richtig schnell. Sobald ich die Formatierung reinnehme ist mein Server richtig gut ausgelasstet (100%) und dauert merkliche Zeit und das für simple 25 Posts.

Meine Frage: gibt es schnellere Alternativen zu RegEx oder kann man das irgendwie beschleunigen?

Original Source

Dort die Funktion "PerformUserTransforms".

06.10.2007 - 13:43 Uhr

Kann ich die Anwendung im Unterordner nicht vollkommen von der Hauptanwendung isolieren? Ich brauche für 2 getrennte anwendungen den selben Domain! 🙁

31.08.2007 - 12:39 Uhr

Wie kann ich eine ASP.NET Anwendung isoliert von der Hauptanwendung in einem virtuellen Ordner konfigurieren? Also z.B.

/ - Hauptanwendung
/forum - Forum (Communityserver)

Der Communityserver liegt physisch aussserhalb der Hauptanwendung. Ich habe dafür einen virtuellen Ordner konfiguriert und dem auch eine eigene Anwendung zugewiesen. Trotzdem versucht der auf die web.config der Hauptanwendung zuzugreifen und findet natürlich in seinem bin fehlende Assemblies nicht. Ich möchte das Forum ungern in einen komplett isolierten virtuellen Server laufen lassen, sondern mit dem Pfad "/forum".

Kennt jemand den Schalter an dem man im IIS 6.0 drehen muss?

30.07.2007 - 09:24 Uhr

Also bleibt mir genau die Wahl die ich getroffen habe: die Suche erst nach Eingabe von 3 Zeichen zu starten. Sowas ist mir aber in 20 Jahren auch noch nicht über den Weg gelaufen. Ok, hatte auch sehr selten eine Tabelle mit 6 Millionen Einträgen. Aber das ein Fullscan dann schneller als eine Indexsuche sein soll ... merkwürdig.

Vielen Dank für Deine Antwort.

28.07.2007 - 14:12 Uhr

Soll heissen?

28.07.2007 - 11:06 Uhr

Hallo. Ich möchte mit "LIKE 'A%'" eine indizierte Spalte durchsuchen. Leider benutzt Oracle den Index erst, wenn ich mindest einen 3-stelligen Suchwert vor dem "%" angebe, also "LIKE 'ABC%'". Warum tuen die sowas und kann ich das irgendwie ändern?

27.06.2007 - 13:10 Uhr

Das Problem bei mir ist, daß das Forum nur ein winzig kleiner Teil ist und ich will das Rad nicht neu erfinden. 🙁

27.06.2007 - 12:56 Uhr

Was soll denn hier für V3 eingesetzt werden? Da besteht doch eigentlich das selbe Problem mit dem Zusammenführen mehrerer Anwendungen. Das ist ja das geniale an den Membership Providern.

27.06.2007 - 12:54 Uhr

Also beim programmieren ist Musik für mich keine Option. Da würd ich ständig im Büro rumtanzen. Deshalb hab ich im Testserver auf dem dritten Monitor immer die Fernsehkarte laufen. Das kann dann so vor sich hinblubbern.

23.06.2007 - 16:34 Uhr

Hallo.

Den Community Server hab ich mir auch schon angesehen, aber die scheinen das auch noch nicht vollständig portiert zu haben. 🙁

20.06.2007 - 14:34 Uhr

Kennt jemand wirklich brauchbare Forensoftware die mit den ASP.NET 2.0 Membership Providern arbeitet, damit man dieses Forum in eine andere Anwendung einbinden kann. Welche soll denn für myCSharp 3.0 verwendet werden? Die Jungens von YAF kommen irgendwie nicht aus dem Keller mit den ASP.NET 2.0 Membership Providern.

24.03.2007 - 03:45 Uhr

Hallo. Gibt es mit ADO.NET 2.0 eine Möglichkeit für einen Bulk-Insert in eine Oracle Datenbank?

16.02.2007 - 19:07 Uhr

Ah, hab das Problem gefunden. Habe einen Standard Installer gewählt. Irgendwie bietet mir mein VS bei "New Item" keinen ServiceInstaller. 8o Habe aber nun den richtigen Bereich im MSDN gefunden.

16.02.2007 - 19:03 Uhr

Tja leider nicht. Die Installer Demo zeigt mir merkwürdige Events aber leider nicht wo ich meine o.a. Angaben Pflege. Manchmal sind die Demos im MSDN merkwürdigst. 😉

Unter Delphi (wirklich sorry für den Vergleich) gab es eine Service Klasse die die entsprechenden Einstellungen als Eigenschaft lieferte. Die Klasse beinhaltet den Service und den Installer. Ich möchte wirklich nicht über den Sinn der Trennung diskutieren, nur wissen wie ich die zusammenführe.

16.02.2007 - 18:34 Uhr

Hallo, hat einer eine kleine Demo für einen System-Dienst incl. Installer und programmierbare Standardkonfiguration für Dienstname, angezeigter Name, Startart, Desktopzugriff und evtl. Beschreibung?

Irgendwie war das unter Win32 (Delphi) unkomplizierter. Aber ich gehe davon aus, dass das nur der erste Eindruck ist.

28.12.2006 - 00:04 Uhr

Original von talla
Jetzt weiß ich erst was du willst.
Fertig fällt mir da nichts ein, aber caste doch einfach Zeichen für Zeichen in nen Integer und bau dir daraus dann dein &#...; zusammen. Das ... ist ja nichts anderes als der numerische Wert des Charakters. Wobei ich immer noch net weiß wozu du es brauchst. Du hast ja ne Win32 Anwendung erwähnt, ich geh also von unmanaged Code einfach mal aus. Dann ist die Chance das der mit Unicode überhaupt nichts anfangen kann gar net mal so gering, besonders wenn die älter ist und aus dem englischsprachigen Raum kommt, wo man so gut wie keine Sonderzeichen brauch. Und wenn du ne Anwendung hast, die nur mit ASCII umgehen kann, dann kannst du soviel mit Zeichensätzen und Encodings rumhantieren wie du willst. Sie wird dich nicht verstehen 😉

Ja genau das war das Problem. Ich habe es jetzt einfach so gemacht:


private static string ConvertToASCII(string Input)
{
    string Result = Input;

    // Zeichen über 127 wandeln
    for (int i = 128; i < 256; i++)
        Result = Result.Replace(((char)i).ToString(), "&#" + i.ToString() + ";");

    return Result;
}

Diese Version geht schneller, weil ich "nur" 128 Durchläufe haben, denn die zu konvertierenden Strings sind definitiv länger. 😉

Nicht am String "Result" stören lassen. Das ist nur ein Zeichen, daß ich jahrelang Delphi gemacht habe und wilde "return"'s vermeide. 🙂

27.12.2006 - 22:51 Uhr

Original von talla
Also du musst auch schon sagen was du willst. Von HTML encodierten Strings kommt jetzt im 6. Beitrag zum ersten mal was und das hat auch noch nicht mal was direkt mit Zeichensätzen zu tun.

Wie dem auch sei, schau dir mal HttpUtility.HtmlEncode an.

Nein das hab ich auch im ersten Post gesagt, nur hat die Forensoftware meine Beispiele gleich in die entsprechenden Zeichen umgesetzt. 😉 Und HtmlEncode codiert nur für HTML "unsichere" Zeichen, aber keine Zeichen oberhalb 7bit.

27.12.2006 - 20:18 Uhr

Super, jetzt hab ich wieder überall "?" drin, das hatte ich vorher auch. Die ganze Encoderei funktioniert im Zusammenspiel mit Win32 nicht. 🙁 Es muss doch irgendjemand die Funktion kennen die Zeichen ab 128 HtmlEncoded o.ä. also "& #128 ;" (ohne Leerzeichen, sonst macht die Forensoftware wieder einen Euro draus.) ! Ich habe bisher schon die Umlaute in z.B. "& auml ;" umgewandelt aber das muss doch auch (wie ASP.NET es tut) einfach mit allen Zeichen funktionieren, die es betrifft?

27.12.2006 - 19:50 Uhr

Original von kiar
moin thomas,

hier sogar ein Bsp. dabei


>

raik

Aha, danke. Dieses Beispiel werd ich mir mal zu gemüte führen. Bei dem Beispiel das ich bisher gefunden hatte störte mich dieser Kommentar:

// Decode bytes back to a string.
// Notice missing the Pi and Sigma characters.

🙁

27.12.2006 - 18:42 Uhr

Also da musst Du etwas präziser werden, die hab ich mir auch schon reingezogen, aber irgendwie nichts gefunden. 🙁

27.12.2006 - 16:48 Uhr

Hallo, ich muss grössere Strings mit einer Win32 Anwendung austauschen. Das funktioniert auch soweit ganz gut, solange die Zeichen in ASCII 7 bit passen. Alles darüber ist danach weg. 🙁 Ich habe mich nun lange durch die Klassen aus dem Namespace System.Text gewühlt, aber keine Funktion gefunden, die mir schnell die Zeichen oberhalb in evtl. z.B. € wandelt und wieder zurück. Eine ASP.NET Anwendung macht das auch irgendwie automatisch, wenn man in der Web.config ISO-8859-1 als Kodierung angibt. Aber mit welcher Funktion zum Geier machen die das?

05.12.2006 - 06:34 Uhr

Original von Ifoko
Ich stimme meinen Vorredner zu. Nimm DotNetNuke
>

Ist (fast)alles dabei was man so braucht und relativ "problemlos".

😁 Nur "MyCSharp" benutzt weiterhin PHP-basierte CMS. 😁 Wenn das mal nicht echte Ironie ist.

04.12.2006 - 17:32 Uhr

Ok, es sei Dir unbenommen noch ein CMS zu erstellen. Dazu solltest Du Dir einfach das von Microsoft frei vefügbare "Portal Starter Kit" vornehmen, das quasi schon die Basis für ein minimales CMS darstellt. Darauf basierend gibt es auch schon komplette CMS wie z.B. DotNetNuke.

27.10.2006 - 19:27 Uhr

Danke an beide. Irgendwie war das zumindest klar, nur war die Frage gehört es zum .NET Framework wie einige Funktionen aus der System.Math Klasse oder zur Sprache. Die Kombination kann einen manchmal echt schaffen. 😉 Nun weiss ich, dass es zur Sprache gehört. Man sollte also doch manchmal dort nachlesen. 🙂

27.10.2006 - 18:21 Uhr

Also das Equivalent diese Delphi-Zeile:


if Table.RecordCount mod 1000 = 0 then
    ...

30.08.2006 - 12:55 Uhr

Original von Rainbird
Das hier dürfte Dir weiterhelfen:


>

Hallo und Danke. Der Tipp war erstmal gut, aber anscheinend kann man von jedem blöden Benutzer die SID herausfinden, aber den entsprechenden Namen zu ermitteln scheint unmöglich! 🤔

Nachtrag:

Nach vielen Nerven hab ich es nun doch gefunden:


SecurityIdentifier everyoneSid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
NTAccount Account = (NTAccount)everyoneSid.Translate(typeof(NTAccount));
MessageBox.Show(Account.Value);

30.08.2006 - 00:30 Uhr

Jetzt hab ich noch ein anderes Problem. Da die Kommunikation von einer ASP.NET Anwendung zur einer Anwendung stattfindet die unter einem anderen Benutzer läuft, muss ich noch Security Informationen an der ServerChannel übergeben:


Dictionary<string, string> props = new Dictionary<string, string>();
props.Add("authorizedGroup", "Jeder"); // hier ist das Problem
props.Add("portName", strUniquePortName);
ChannelServices.RegisterChannel(new IpcChannel(props, null, null), false);

Dabei habe ich ein Problem mit der Gruppe "Jeder" die ja bekannterweise in englischen Windowsversionen "Everyone" heisst. Kann man den Namen auf dem aktuellen OS irgendwie elegant ermitteln? Ich kann ja das Programm nicht für jedes OS neu kompilieren! 😉 🙁

29.08.2006 - 10:10 Uhr

Original von Programmierhans
cdr hat doch da auch mal was tolles gebaut


>

Ja das ist gut, ich muss doch glatt mal testen ob es nicht reicht, wenn ich anstelle eines neuen Prozess einen Thread für mein Objekt verwende, dass nur einmal pro Prozess/Thread(?) erzeugt werden kann. Ich hatte mich bisher immer nur gefragt, wie ich mit dem Thread kommuniziere, aber auch das Problem hat sich dank der IPC-Hilfe hier damit geklärt. 🙂 Das Ganze ist der Fortsetzungskrimi dieses Thread:

Horror-Scenario

29.08.2006 - 09:36 Uhr

Ich habe mir gleich die Version mit IcpChannel rausgepickt. 😉

29.08.2006 - 02:01 Uhr

Dank Deines Beispiel bin ich fast fertig. Habe nur eine Änderung gemacht, da ich verschieden Remoteobjekte gleichen Types aber unterschiedlicher Url habe/brauche:


...
        else
        {
            //-----------------------------------------------------------------------
            // Als weitere Instanz erzeugen wir den Client-Part
            //-----------------------------------------------------------------------
            /*RemotingConfiguration.RegisterWellKnownClientType(
               typeof(ArgsReceiver),
               strURLClient
            );*/

            //-----------------------------------------------------------------------
            // Und senden die Argumente an den Server/Service-Part
            //-----------------------------------------------------------------------
            ArgsReceiver argrecv = (ArgsReceiver)Activator.GetObject(typeof(ArgsReceiver), strURLClient);
            argrecv.SetNewArgs(astrArg);
        }
...

29.08.2006 - 01:59 Uhr

Ich habe z.B. eine Klasse die so viel Funktionalität und Properties enthält, dass ich sie auf 3 Dateien (Public's, Private's und Initialisierung) zerlegt habe.

28.08.2006 - 22:09 Uhr

Original von herbivore
Hallo tomaten,

ich würde denken, dass die Remote-Methoden auch einen Rückgabewert haben dürfen.

herbivore

Ist mir auch direkt nach dem schreiben des Post aufgefallen. 😉 Aber wer denkt schon so einfach, wenn er sich das erste mal mit .NET Remoting befasst. 🙂

28.08.2006 - 21:53 Uhr

Das macht doch schon mal einen schlanken Eindruck. Jetzt muss man das nur doch Synchron hinbekommen oder gibt es ein Beispiel wie ich beim Senden gleich eine Antwort bekomme?

28.08.2006 - 21:04 Uhr

@herbivore

Habe mir das mal angesehen, aber das ist ja wie mit Atomraketen auf Spatzen geschossen. Gibt es denn nirgends einfachstes .NET Beispiel von 2 Mini Exen wo die eine "Hallo Du da" schickt und die andere synchron "Selber Du" o.ä. antwortet. Das kann doch nicht mit 200 Zeilen Code pro Seite verbunden sein? Da hab ich ja schneller nen HTTP-Server eingebaut und die Kommunikation gemacht. 🙁 Nur gehen mir da so viele Ports verloren.

28.08.2006 - 19:06 Uhr

Original von herbivore
Hallo tomaten,

Remoting/NamedPipe/WindowMessages (und dde geht natürlich weiterhin).

herbivore

Hallo. Schonmal danke. Das gute alte DDE war ja schon unter Win32 nur noch eine Notlösung und WindowsMessages sind doch zu einfach 😉 . Dann will ich mir mal die beiden anderen Teile ansehen. Ist schon wieder ein Chaos - Prozess starten "System.Diagnostics" - Prozess steuern "System.Remoting". 🙂

28.08.2006 - 18:47 Uhr

Hallo. Ich suche Möglichkeiten um mit einem Prozess den ich aus einer Anwendung herraus gestartet habe, zu kommunizieren. Dabei soll die bidirektionale Kommunikation sehr einfach gehalten sein, ähnlich wie das früher mit DDE funktionierte. Hat jemand eine Anfang für mich, einen Namespace oder eine Klasse in der ich dann weitermache? Am besten wäre natülich wenn ich Funktionen in dem anderen Prozess steuern könnte, aber das wäre nur das Sahnehäubchen. 😉

24.08.2006 - 17:55 Uhr

Wenn Du diese Meldung meinst

ORA-01436: CONNECT BY loop in user data

und Du Oracle 10 benutzt, dann sollte Dir hier geholfen werden:

New CONNECT BY Features

24.08.2006 - 16:27 Uhr

Original von cadi
Und ein Web-Server, der eine Falsches-Passwort-Meldung wegklickt ist schon ein WTF!

Naja, bevor der nicht dem verantwortlichen Admin jedes mal den dicken Finger zeigt bin ich nicht zufrieden! 😉 Das dann nach der Probestellung. 😁

24.08.2006 - 15:41 Uhr

Original von cadi
Ich denke dein Projekt gehört nach
>
...

Warum? Das ist ganz normal. Je größer der Laden und je spezialisierter die Admins desto schlimmer wird das. Fachabteilung will und braucht eine Software - IT fühlt sich übergangen - Lieferant muss es ausbaden. Also das ist nun wirklich nichts Besonderes.

24.08.2006 - 11:54 Uhr

Original von cadi
Daher ja das Angebot meinen c++ win32 krams als basis zu nehmen 😉
Ist win32 nativ mit windows hook...

Das einzige was noch fehlt ist den button dann zu klicken 😉

Na das habsch doch ooch als Win32 Code! Gegen den Hook spricht, dass wir definitiv in der Produktionsumgebung keine eigene Maschine bekommen (werden eine von vielen IIS Anwendung sein). Wenn ich da in der Callback-Funktion schlampe kann ich das ganze System runterziehen, mit EnumWindows kann da nix passieren!

24.08.2006 - 11:28 Uhr

Original von cadi
Du kannst über einen Windows-Hook auch direkt auf das erstellen (oder das ändern des titels) eines fensters reagieren... damit gibt es keine Zeitverzögerung...

Das ist richtig, nur ob das auch in einer ASP.NET Anwendung funktioniert muss ich erst schauen. Und Hooks in .NET sind noch witziger. Habe aber schon eine Beschreibung gefunden, wie ich den Callback für EnumWindows in C# implementiere. Hooks dürften da schwerer in ASP.NET zu implementieren sein, dazu müsste ich mir wahrscheinlich wieder eine Win32 DLL bauen. 🙁 Den Intervall kann ich ja anpassen. EnumWindows belastet das System nicht wirklich. Ich werde heute Abend mal in mich gehen und beide Versionen genauer betrachten. Echtzeit ist natürlich schöner aber der Aufwand muss auch passen. Wir hatten ja früher auch Keyboard- und Mousehooks zum Schutz vor Fakern implemetiert. Muss mal wieder in den Code schauen.

24.08.2006 - 10:55 Uhr

Original von svenson
Ein andere Option wäre es, das Control in einem extra Prozess einzubetten und den Win32-MessagBox-Aufruf abzufangen.


>

Das ist gemein. Nur weiss man dann nicht, was das Control daraus macht. Die Idee von Borg gefällt mir am besten. Da das aber mehrere Fenster sein können, werde ich das mit EnumWindows machen da FindWindow da zu unzuverlässig ist (findet ja nur das erste). Das Login ist nun wirklich nicht zeitkritisch 😉 da können die User auch mal 10 Sekunden warten (so als Intervall) und das Control ist sowieso nicht das schnellste. 😉

Nachtrag: Ausserdem kann ich mit einer Erweiterung dieser Suche auch andere evtl. noch auftretende dümmliche Meldungen der API killen! 😉

24.08.2006 - 10:47 Uhr

Original von cadi
Ich habe mal (im rahmen eines anderen... noch schlimmeren) projektes einen WindowWatcher schreiben dürfen.

Der wartet auf ein bestimmtest fenster und kann dann ein kommando auführen (oder auf eine bestimmte URL im IE).

Allerdings ist halt (noch) nichts zum klicken von buttons drinnen... (das hat eineTCL-Script Sprache auufgerufen um dann mit den Fenstern was anzustellen)

aber als Basis könnte das reichen (aber bitte nicht weitergeben....)
Zur not einfach hardcoden, das wenn ein fenster gefunden wird ein WM_COMMAND an das fenster geschickt wird.

🙂 Danke, aber Code dafür habe ich noch vom allerfeinsten, wie ich ja schon Borg geantwortet haben (Danke FairAd AG, R.I.P.). Den hab ich mir gestern schon aus meinen Sicherungen runtergezogen. Ich schmeisse niemals Code weg! 😁

24.08.2006 - 10:39 Uhr

Original von cadi
Könnt ihr mit C++ was anfangen?

??? Warum wieso?

24.08.2006 - 09:52 Uhr

Original von cadi
Evlt. wäre es ja möglich, das du oder dein Kunde bei dem Hersteller der API mal was Druck macht?

Ach das wäre schön, wenn der Verantwortliche beim Kunden nicht ein Querulant wär der eigentlich den Auftrag einem "Freund" geben wollte (der jetzt aber beim API-Hersteller ist und auf unserer Seite steht) und den ganzen Schlamassel mit der API (die es nur vom Originalhersteller gibt) veranlasst hätte! Unser Produkt läuft nämlich auch ohne die. So sind unsere Grosskonzerne und ihre ITler. Projekte über Jahre verschleppen, Unmengen Knete verbraten, dann doch wieder zu uns kommen und jeden Stein in den Weg legen, den man finden kann! Und wir fragen uns, wieso es unserer Wirtschaft so beschissen geht!?

Naja, jetzt stehen wir unter Zeitdruck dieses sinnlose Konstrukt bis zur Demostellung zu implementieren. Aber den meisten hier dürfte dieses Szenario bekannt sein! Und man kann mit 1000%iger Sicherheit annehmen, dass die API dafür nicht angepasst wird. Scheiss Politik!

23.08.2006 - 21:22 Uhr

Original von Borg
Wie wäre es damit:

Du nutzt ganz normal das Control. Wenn du dann feststellst, dass es nicht mehr reagiert (also wahrscheinlich das Dialogfenster geöffnet hat), suchst du das Fenster anhand seines Titels und sendest ihm die Nachricht für Fenster schliessen.

Alles was du dafür brauchst, ist die Fenster-Klasse und der Titel.
Dies kannst du alles mit Spy++ herausfinden.
(Wenn das ActiveX-Fenster offen ist Spy++ starten, dann im Menü Spy / Find Window..., das Zielkreuz auf die Titelleiste des ActiveX-Fensters ziehen und loslassen, bei Class steht dann die Fensterklasse, bei Caption der Name)

...

Damit sollte das Fenster dann zu sein. Wenn das nicht funktioniert, kannst du auch noch einen Mausklick auf den Button simulieren.

Ja diese Idee ist durchaus machbar. Damit habe ich schon unter Win32 gute Erfahrungen. Musste da öfter Fenster und andere Anwendung prüfen (Nein keine Spyware sondern Fakerschutz, ich sags nur, weil hier offensichtlich viele Verfolgungswahn haben. Nicht böse sein aber selbst in diesem jungen Thread kommt es schon wieder zu Unterstellungen.)