Entwicklung

Samstag, 18. Dezember 2010

Search & Destroy

So heißt eine Engine, die ich zwischen Tür unf Angel geschrieben habe.

(Generell, wer die Projekte mal sehen, testen, benutzen will von euch treuen Lesern, sollte sich mit mir in Verbindung setzen)

Also es ging im wesentlichen darum, dass in einem Datenbank Projekt einige Fehler entstanden sind.
Daher mussten doppelte Einträge aus mehreren Tabellen gelöscht werden. Die SQL Syntax bietet da zwar über Results wohl die Möglichkeit, aber das war mir far to complicated.
Es entstand eine Engine, die einen ConnectionString und eine Tabelle, sowie den Spaltennamen des PK übergeben bekommt. Das wars.
In einer eigenen Klasse, mit eigenem Thread geht die Engine dann die Tabelle durch und killt alle Einträge, die in den restlichen Spalten gleich sind durch und löscht alles doppelte.

Warum nicht einfach Einträge komplett miteinander vergleichen?
Nun, ganz einfach. Sie unterscheiden sich im PK.

Nachdem die Engine nun diese besagte Tabelle durchgegangen war fiel mir auf, dass in den Einträgen selber noch Fehler gemacht wurden sind. Als Beispiel mal Tippfehler.

Daher wurde die Engine noch mit einem SQL-Replace ausgestattet.
Es werden zwei Listen übergeben, die in der richtigen Reihenfolge den FIND- und den REPLACE- Wert enthalten müssen.
Es wird wieder ein Thread gebildet und die Tabelle wird gefixt.

Die Rückgabe liefert ein Array aus der Anzahl der Änderungen und den geänderten Spalten. Das sieht dann so aus:

[0] 12
[1] 34
[2] Name
[3] Adresse
[..] $Spaltenname

Wobei der erste Integer angibt wieviele Spalten gelöscht wurden, der zweite wieviele Einträge geändert wurden und dann folgen die geänderten Spalten.

Wie gesagt. Bei Interesse Kontaktieren.
Es gibt auch noch ein paar mehr Tools in meinem Core :) - Einfach fragen.

current song: Sophie B. Hawinks - As I Lay Me Down

Sonntag, 28. November 2010

Plattformunabhängigkeit

Die Frage, die sich ein Entwickler doch immer stellt ist auf welchem Device die Software denn laufen soll.
Nach dieser Frage kommt dann eine andere, nämlich wie man mit Versionskonflikten fertig werden soll.

Ein Beispiel. Ich entwickle eine Homepage und öffne sie mit dem IE oder dem Firefox. Es ergibt 2 gänzlich unterschiedliche Seiten.
Komplett andere Formatierung.

Nun. Das lässt sich recht einfach lösen. Ein Browser übergibt seine ID. Daher weiß man mit welchem Browser der User surft und kann dem entsprechend dynamisch das Design anpassen.

Also gibt es nur eine Antwort auf die erste Frage: Auf allen Geräten!

Da wären wir da schonmal klar. Alles sieht gut aus.
Das lässt für eine plattformunabhängige Anwendung noch nur einen Schluss zu.
Man schreibt keine App. Keine App für ein Smartphone. Keine App für den PC, nicht für den Mac.

Die einzige Lösung, die einem bleibt ist es web-embedded zu schreiben.

Das ist was ich mit iWeLL tue. Der Server läuft zwar noch immer auf einem PC. Unter Windows Server Umgebung, aber der Client ist online.

Bleibt nur das reagieren auf den Client.
Der rest läuft.
Dann hängt es nur noch an Sicherheitseinstellungen vom Browser. Aber die kann der User anpassen. Sein Betriebssystem nicht.
Auf diese Weise ist es egal welches Gerät genutzt wird. Es ist auch egal welche Art von Verbindung zum Server genutzt wird. Dies entscheidet der Browser für mich.

Und genau in diesem Moment kann ich sagen ich bin Plattformunabhängig. Ob das IPad oder der Blackberry, das Alte SimPad oder ein PC oder Mac. Linux oder Windows. Völlig egal.
Das handling bleibt das gleiche.

Freitag, 12. November 2010

Alles anders

Moin!

Nicht viel passiert hier in der letzten Woche. Hat auch alles einen Grund.

Es ist geschafft. Ich habe nun endlich alle Projekte von VB.Net auf Csharp umgestellt.
Lange habe ich mich etwas davor versteckt genau dieses zu tun. Aber im Sinne von professioneller Softwareentwicklung geht einfach nichts daran vorbei meiner Ansicht nach.

Nicht, dass ich Basic vollends den Rücken kehren will, aber dennoch wird alles neue auf jeden Fall in C# entstehen.

So heißt es ja schon.. Basic 's not the answer, write in C#

Dann wollen wir das mal auch weiterhin so machen.
Dazu habe ich noch alle Projekte von Visual Studio 8 auf Version 9 hochgezogen. Was mit der Upgradefunktion komischer Weise astrein problemlos funktioniert hat.

So far.

Freitag, 29. Oktober 2010

C#

C# ist bekanntlich eine wirklich handliche Sprache und wirklich sehr verbreitet.

Es gibt zu Hauf Interpreter für C# und es wird gerne auch als Entwicklungssprache für andere Anwendungen, zum Beispiel als Script Sprache für Visualisierungen verwendet.

Wodurch zeichnet sich ein guter Interpreter aus?
- Er sollte Debuggen können
- Er sollte ein ganzes Projekt als Projekt und nicht nur die einzelnen Funktionen und Header betrachten
- Er sollte Schlüsselwörter kennzeichnen und Typen farblich voneinander absetzen
- Er sollte das Suchen von Querverweisen erlauben
- Er sollte gegebenen Falls auch noch Überwachungen möglich machen

Die Hersteller von Entwicklungsumgebungen sehen das scheinbar etwas anders.
Eigentlich war ich der Meinung, dass man sich bei Software insgeheim auf gewisse Funktionalitäten geeinigt hat. Vor allem was Editoren angeht.

Wohl nicht!
SIEMENS ist da sehr eigen. Sie geben einem ein C# mit an die Hand und sagen "Guck mal! Wir haben C#! Das kann jeder, da braucht man nicht noch eine neue Sprache lernen!"

Grundsätzlich wirklich eine erstklassige Idee. Allerdings ist die Umsetzung mehr als bescheuert.
Man kann weder einem Funktionsaufruf folgen, noch dessen Verwendung suchen.
Gibt es eine Variable schon meckert er nicht. Nichteinmal beim kompilieren, nein, nicht einmal in der Runtime!
Es funktioniert einfach nicht. Sau stark!
Man muss zugeben, dass es sich wirklich um basis C# handelt.

Davon abgesehen ist der Interpreter / Editor wirklich ein Graus.
Man kann immer nur eine Funktion durchsuchen.
Das erschwert es bei ca. 500 Funktionen wirklich sehr Verwendungen zu finden. Wo wird eine Variable das erste mal geschrieben? Keine Ahnung.

Nun. Trick 17 mit anfassen war ja meine Idee. Vielleicht sind die Dateien ja nicht kompiliert gespeichert sondern als Volltext und ich kann dann mit nem klugen Texteditor das ganze Verzeichnis durchsuchen! Super Idee! - Nein. Geht nicht.

Was bleibt mir noch. Achja, ich kann ja den Code aus dem original Editor kopieren und dann in Notepad einfügen, als .txt speichern und dann das Verzeichnis durchsuchen!
Wirklich super Idee. Funktioniert auch! ....

Wie? Kein aber? DOCH VERFLUCHT NOCH EINS!

Der schnieke Editor hat KEINE Funtkion um "Alles zu markrieren"... der Text steht da und man muss die Zeilen von Hand markieren. Nichts mit STRG + A. Von wegen.
Gibt es schlichtweg nicht.
Das gestaltet sich also so:

Funktion öffnen.
Text markieren.
Kopieren. (Ja, STRG+ / SHIFT+ Einfg geht!)
In nen Ordner wechseln.
Textdabei anlegen.
Umbenennen.
Öffnen.
Text einfügen.
Speichern.

Und wieder von vorne.
Es sind ja nur 500 Funktionen zu machen.
Für das eine Projekt.
Schön, dass es insgesamt 4 sind.
Also round about 2000 mal dieses gehexe NUR um zu sehen wo, in dem Fall, ein Datenbankaufruf verwendet wird, weil der angepasst werden muss.

Danke SIEMENS! Wirklich vielen Dank dafür es dem Entwickler so einfach wie möglich zu machen.

"Integrated Automation"
Am Arsch die Räuber!

Das ist ne Arbeit für Leute, die Mama und Pappa nicht nur erschlagen, sondern auch noch zerstückelt und im Wald zusammen mit dem Nachbarshund vergraben haben!

Dienstag, 26. Oktober 2010

Das ging...

Schnell...

Schneller als ich dachte - zugegeben.

Und wie das so ist kann ich es auch nicht lassen was neu zur Verfügung steht auch gleich aus zu probieren...

Also mal ein Anfang vom neuen Design der Homepage based on ASP.NET... und das neue Logo gleich mit :)

enjoy

Transcom-solutions.de

Gute Nacht!

traffic

Nein, kein Straßenverkehr. Eher Datenverkehr.

Bei der Idee zu i.weLL war mir von Anfang an klar, dass der Traffic, der entstehen würde immense Ausmaße annehmen kann.
Kann ist dabei das Stichwort.

Nun, die Frage ist was man erreichen will und wie man das schlussendlich erreicht.
Baut man jetzt ein UI mit vielen Grafiken Farben, Schatten, vollends 2.0, dann ist klar, dass der Traffic hoch ist. Demnach habe ich mich bei dem Design für alle mobilen Geräte auf, nahezu fast nur standart HTML Elementen beschränkt. Außnahmen bilden die Anteile von ASP Elementen.
Aber. Die Datenübertragung von kleinsten Datenmengen dauert immernoch zu lange.

Ein Beispiel.
Nehmen wir eine standart SQL Abfrage auf eine recht kleine Tabelle. Sagen wir <10.000 Einträge.
Wir suchen eine Referenzspalte unter sagen wir 10 Spalten.
Weiter sagen wir wir hätten 10 Integer, also 32x10Bit sind 320Bit was wohl 40byte entspricht.
Die Abfrage dauert nun in der Zusammenstellung bis zum Client.
also Generierung der Abfrage im Client, wobei die Software auf dem Server läuft, bis zur Abfrage in einem lokalen Netz und das Callback zum Client mit samt eben dieser 40byte ne saftige Sekunde.

Je nach Vorstellung des Ganzen habe ich nun ein Timingproblem.
Das Problem liegt definitiv im Netz.
Ein Test mit ner anderen Leitung und nem Server, bei nem Hoster selbst liegt (In den nächsten Tagen habe ich dann auch endlich nen eigenen, der ASP kann wirklich Up and Public beim Hoster) ergaben ähnliche Zeiten.

Nun. Brauche ich nun Geschwindigkeit? Nein, eigentlich nicht.
Nach reiflicher Überlegung geht es um nichts zeitkritisches und ich glaube jeder, der ein mobiles Gerät zum Steuern benutzt wird einsehen, dass das länger dauert als über nen Bus, der direkt an der Steuerung hängt.

That's the point. Und das mindert das vermeintliche Problem auf ein Minimum und ist das was ich am Anfang meinte - Die Frage was man erreichen will.

Genug geheule. Lieber ein kleines Update. The Story so far:

- der Server läuft mit Anbindung zum PLC und sammelt fleißig Daten.
- das Clientscript Ist soweit fertig und geht dann die Tage live auf nem richtigen Server.
(Dann kann man auch mal etwas rumspielen, den link schmeiß ich selbstredend hier rein.)
- Die Clientsoftware an sich habe ich auch angefangen, allerdings ergibt sich auch hier ein kleines Problem.

Je nachdem wie man sein Windows Mobile konfiguriert hat ist es nicht möglich Events zu schmeißen auf dem Gerät musste ich feststellen. Man kann für jede Anwendung an sich sperren ob sie Meldungen aufpoppen darf. Mit unterschiedlichen Versionen verschärft sich das sogar soweit, dass man explizit erlauben muss, dass Anwendungen das dürfen.
Es ist allerdings wahrscheinlich möglich dieses beim Setup auf dem Gerät gleich für den Client so einzustellen. Das bleibt zu hoffen und testen.

Weiterhin kann ich vermelden: It runs on the IPhone.
Zumindest die Webschnittstelle. Ich war überrascht, dass der Iphone Browser ASP so ohne weiteres zulässt. Umso besser.

Alles in allem steht das Gerüst. Es müssen noch viele Schnittstellen gebaut werden. Zu verschiendensten Bussystemen mit verschiedensten Protokollen.

Aber ich habe schon die nächste davon auf dem Tisch. Ich erstand leihweise eine DPSlavekarte der Firma Hilscher, die ich astrein einbinden kann. Somit habe ich auch bald den Profibus Abgehakt.

Ethernet läuft ja an der S7, bzw dessen VIPA Clone schon. Wobei auch hier noch etwas zu machen ist.
Bisher habe ich Steuerung über die libnodave API gekoppelt. Das läuft aber nicht mit allen Siemenssteuerungen. Deswegen habe ich einen relativ überschaubaren Telegrammbaustein für die S7 geschrieben. Dieser müsste allerdings im PLC eingespielt werden und da steht das ganze schon vor dem Scheitern, da Änderungen an den Kundensteuerungen nicht unbedingt erwünscht respektive möglich sein werden.

Nundenn.
Morgen ist auch noch eine Nacht.
I have memories of sleep, but they are fading...

Montag, 18. Oktober 2010

new new new

Alles neu. Alles schöner. Alles komfortabler. So gestaltet sich eines meiner neuen Projekte.

i.WeLL

Kurz zur Erklärung. i.WeLL steht für intelligent Windows-embedded Language Library.

Eigentlich ein Framework für Win32, das von mir ins Rollen gebracht wurde. Daraus entwickelt sich allerdings gerade rasend schnell etwas ganz ganz anderes.
Neben einem Framework für industrielle Anwendungen mit nützlichen Funktionen und Schnittstellen entsteht im Moment ein Anwendungskonzept auf Basis von Windows Mobile Clients mit Anbindung an industrielle und kommerzielle Serversysteme.

Das Konzept besteht darin, zu überwachen und zu steuern und vor allem anderen Informationen gezielt und gefiltert an den jeweiligen Empfänger zu bringen. Schnell, zuverlässig und Sicher. Unabhängig vom Standort.
Die Clients, zb ein Smartphone, suchen sich ihre Anbindung an das Internet / den lokalen Server und bilden relevante Daten Eventgesteuert ab.
Es entstehen viele Daten in Firmen. Nicht alle Daten sind interessant. Um genau zu sein ist nur ein geringer Teil wirklich von Bedeutung. Da liegt der Ansatz. Daten aus Produktion / Logistik oder auch einfachen Datenbanksystemen über mobile Clients zu Verfügung zu stellen. Die Filterung übernimmt hier zu gunsten des Traffics allerdings der Server und nicht der Client. Wodurch die Performance erheblich gestiegen ist. Zumindest bei den Tests.

Das Problem ist momentan eher das Design als die technische Umsetzung.
So suche ich nun schon seit Tagen nach einer Inspiration für das Logo von i.WeLL und darüber hinaus für die Erweiterungen i.WeLL.Applications und i.WeLL.Server.

Die Serverarchitektur steht. Die Clients laufen momentan im Test und alles sieht soweit ganz gut aus. Es ist zwar alles noch Alpha. Aber es läuft bisher stabil. Ich hatte noch keinen wirklichen Traffic auf dem System, da die Erstellung von Testdaten doch viel Zeit in Anspruch nimmt, aber ich bin sicher, dass das nicht das Problem sein wird. Die Daten liegen eigentlich zentral im Netz und nicht alle auf dem Client. Der Client bildet nur das Front-End. Und da werden nur relevante Daten in komprimierter Form übertragen. Und Bandbreite ist ja zum Glück heute kein knappes Gut.
Es gibt (noch) keine Kundenanwendung. Aber auch das ist in Arbeit.
Dazu muss nur die Aufmachung stimmen.

Vorschläge? - Ich bin offen für alles.

User Status

Du bist nicht angemeldet.

Aktuelle Beiträge

Windows und Flash 10.1
Seit einiger Zeit hatte ich das Problem auf meinem...
Heckschleuder - 1. Jan, 13:03
Search & Destroy
So heißt eine Engine, die ich zwischen Tür unf Angel...
Heckschleuder - 18. Dez, 11:27
Plattformunabhängigkeit
Die Frage, die sich ein Entwickler doch immer stellt...
Heckschleuder - 28. Nov, 16:52
Küken
Was ich mit Küken am Hut habe? Ganz einfach. Ich habe...
Heckschleuder - 21. Nov, 11:32
Alles anders
Moin! Nicht viel passiert hier in der letzten Woche....
Heckschleuder - 12. Nov, 08:22

Suche

 

Status

Online seit 4954 Tagen
Zuletzt aktualisiert: 1. Jan, 13:03

Credits


Allgemeines
computing
Entwicklung
Musik
private
Profil
Abmelden
Weblog abonnieren