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 m.knigge
Thema: Raspberry Pi 2 - aufgepimpter Himbeerkuchen
Am im Forum: Smalltalk

Moin!

Nein, konnte ich ehrlich gesagt nicht. Ich hatte vor etwas mit Heimautomatisierung zu spielen und dafür den Server in C# zu schreiben - daher hatte ich schon mal "den Markt" durstöbert und geschaut ob es da was passendes gibt....

Da ich aber für mein projekt was halbwegs fertiges gefunden hatte, bin ich nicht mehr dazu gekommen selber was zu coden...

Ich pers. würde aber, wenn ich nun was in C# für den Himbeerkuchen programmieren würde, vermutlich dazu tendieren mal die C#-Lösung zu probieren - einfach in der Hoffnung (oder eher der Erwartung), dass dann alles mehr "aus einem Guss" ist....


Bye,
MK

Thema: Raspberry Pi 2 - aufgepimpter Himbeerkuchen
Am im Forum: Smalltalk

Zitat von Ahrimaan
Entschuldigung , selbst ein "embbeded" Windows wird kaum auf die schmalheit eines Linux kommen.
Kann mir keiner Erzählen, dass das Microsoft je geschafft hätte, siehe Windows Core Server

Also ich bin ja nicht wirklich Microsofts größer Fan, aber sooo kann man das nicht stehen lassen:

- Windows CE 5.0 benötigte 350 KB RAM (sagt Wikipedia)
- Windows Embedded POSReady 2009 benötigte nur 64 MB RAM (sagt auch Wikipedia)

Und dass ein Core Server nicht so schmal ist wie ein richtiges embedded (ergo wie ein Windows for Devices) sollte ja wohl irgendwie klar sein ...


Bye,
Michael

Thema: Raspberry Pi 2 - aufgepimpter Himbeerkuchen
Am im Forum: Smalltalk

Zitat von trib
Bisher konnte ich, kommend aus der .Net Welt nie so richtig in die PI-Programmierung reinfuchsen.

Wieso nicht? Auf dem Raspberry läuft Mono.... Selbst die GPIO-Pins kannst Du direkt aus C# ansprechen: https://github.com/raspberry-sharp/raspberry-sharp-io


Bye,
Michael

Thema: dotnet Usergroup Hannover
Am im Forum: Smalltalk

Hi,

guck mal hier bei dem Herrn Andreas Flohr. Dort steht zumindest er wäre der Leiter der neu gegründeten .Net User Group Hannover.

Kannst ihn ja mal kontaktieren und dann mal hier schreiben ob das noch aktuell ist (und ggf. von einem Treffen berichten).


Bye,
Michael

Thema: Cloud-Speicher? Skydrive, Dropbox, Google Drive & Co - Wer nutzt was?
Am im Forum: Smalltalk

Zitat von Tomot
Eventuell ist HiDrive von Strato für meine Zwecke geeignet. Auf den ersten Blick sieht es aber so aus, dass ich die Synchronisation eventuell manuell oder nur einmal täglich, jedoch nicht alle x-Sekunden (nach Feststellung einer Änderung) auslösen kann. Hat hier jemand Erfahrungen mit gemacht?

Grundsätzlich ist HiDrive eher eine Festplatte als ein Online-Storyge-Service ala Dropbox. Man kann die "Festplatte" mit diversen Mitteln ansprechen, z. B. via SMB (also als Windows-Laufwerk), WebDAV, SCP oder (mein pers. Favorit) RSYNC. Und eine eigene API gibt es auch.

Wenn Du Synchronisierung wie bei Dropbox haben möchtest, dann musst Du das bei HiDrive per Hand machen - z. B. mit Microsofts SyncToy - mit dem Tool muss die Synchronisierung allerdings per Hand angestoßen werden.

Automatische Synchronisierung dann vielleicht mit FreeFileSync, DSynchronize, big5Sync oder DirSyncPro.

Bye,
Michael

Thema: Codeformatierung: Position bzw. Nutzung der geschweiften Klammern bei Methoden bzw. bei if
Am im Forum: Rund um die Programmierung

Moin!

Also was nun "besser" ist.... Ich denke, da spielt so einiges zusammen.....

Vor einigen Jahren habe ich mal ein Buch über Code-Konventionen gelesen und darin hat der Autor auch beschrieben, wie eigentlich das Gehirn und der menschliche Sehapparat zusammenarbeiten. Der Autor schrieb, dass das Auge eigentlich nur horizontale und vertikale Balken/Blöcke sieht und das Gehirn daraus dann erst aufwendig ein "Bild" zusammenbasteln muss.

Aus diesem Grund kann man das Gehirn gut unterstützen, in dem man den Code bereits hirngerecht formatiert.

Daher ist


if (bla) {
   machdies();
   machdas();
}

für das Gehirn anstrengener zu interpretieren als beispielsweise ein


if (bla)
{
   machdies();
   machdas();
}

Hier ist der inhalt des if's viel deutlicher von Leerraum umgeben - der "Block" ist für das Gehirn eindeutiger zu identifizieren.

Wenn ich C# entwickle dann schreibe ich Code auch so - das habe ich schon zu C Zeiten so getan. Beruflich entwickle ich allerdings in Java und da haben wir im Team eine andere Konvention (nämlich die obere). Ich habe inzwichen mit beidem kein Problem. Viel wichtiger ist in diesem Zusammenhang, dass wir im Team uns alle an die gleichen Konventionen halten, damit man sich auch schnell in "fremdem" Code zurecht findet.

Code, der nicht zu den eigenen Konventionen passt kommt bei uns auch nicht durchs Code-Review. Also Code, wie ihn als Negativbeispiel unconnected gepostet hat, also


if (bla) i++;
// oder
if (bla)

i++;

Würde bei uns nicht einmal ansatzweise durch das Review kommen. ich würde sogar sagen, der Code würe bei uns durch StyleCop schon angemeckert werden und dann spätestens auf dem Integrationsserver Alarm auslösen.

Bleibt das Thema, was macht man bei if's mit nur einem Statement. Nach obiger "Lehre" müsste man dann auch die geschwungenen Klammern schreiben. Bei uns im Java-Umfeld sind die Klammern Pflicht. Bei C# verlangt StyleCop die Klammern glaube ich auch (da bin ich mir jetzt aber nicht sooo sicher - kann man ja auch ggf. ausschalten).

Ich pers. finde die Klammern aber an dieser Stelle überflüssig - wenn ich pures C programmiere dann lasse ich die Klammern auch weg - mache dann aber über und unter das if eine Leerzeile, damit das if nicht in der "Code-Suppe" untergeht. Beispiel:


machdies();
holedas();
if (jaja)
  trallalla();
machjenes();

Das geht so gar nicht! Ich schreibe dann:


machdies();
holedas();

if (jaja)
  trallalla();

machjenes();

Dadurch ist der if definitiv hervorgehoben (als "Block" erkennbar durch die Leerzeile über- und unterhalb) und geht beim Lesen m. E. nicht "verloren".

Was wenn man nun eine Anweisung dem if hinzufügen will? Dann ist der "Aufwand" natürlich größer, weil man dann erst einem "umständlich" (puh) die Klammern nachträglich setzten muss. Ich kenne tatsächlich Leute im Bekanntenkreis, die so denken und aus diesem Grund (und zwar nur aus diesem!) auch bei ifs mit nur einer Anweisung immer die geschweiften Klammern setzen.

Andere argumentieren, es ist mit den Klammern konsequenter....

Ein Argument gibt es ggf. noch für die if's ohne Klammerung - es passt halt mehr Code auf den Schirm:


if (jaja) {
  trallalla();
}

if (noe) {
  schwupps();
}

if (vielleicht) {
  kannstmichmal();
}

braucht halt mehr Platz (wenn man auf die Leerzeilen - so wie ich - nicht verzichten will) als


if (jaja)
  trallalla();

if (noe)
  schwupps();

if (vielleicht)
  kannstmichmal();

Sprich, es passt etwas mehr Code ins Editor-Fenster.


Ich denke, es ist fast egal was Du machst.... ;-) Aber selbst wenn Du nur privat entwickelst würde ich Dir auf jeden Fall anraten StyleCop zu verwenden! Damit kannst Du Dir selbst Deine Code-Konventionen aufdrücken/prüfen und so beknackter Code wie ihn beispielsweise unconnected gepostet hat kommt gar nicht erst ins Programm. StyleCop kann man in Grenzen an eigene Konventionen anpassen und auch prima in den Build-Prozess vom Visual Studio einbauen.



Bye,
Michael

P.S.: Grundsätzlich ist es aber eine gute Idee, sich über Code-Konventionen Gedanken zu machen. Denn Code wird viel öfter gelesen als geschrieben - daher muss der Code auf jeden Fall immer verständlich sein/bleiben und nicht nur in den 5 Minuten in denen man den Code runterhackt! ;-)

Thema: TCP Chat - Kleines Problem
Am im Forum: Netzwerktechnologien

Hallo,

ich glaube Du hast die Grundlagen von TCP/IP nicht so wirklich verstanden und daher kommen auch Deine Verständnisprobleme..... Ich versuche es mal in wenigen Worten....

Also grundsätzlich kannst Du Dir eine TCP-Verbindung vorstellen wie ein Telefonat. Wenn Du jemanden anrufst und zu ihm sprichst (--> TCP-Verbindung zum Server aufbauen und Daten senden), dann kann der Angerufene (--> Server) ja auch mit Dir sprechen - er braucht Dich nicht auf einer anderen Leitung anrufen... Im Fachjagon nennt man das eine "Voll-Duplex-Verbindung". Beide Teilnehmer können reden und hören (--> senden und empfangen) und zwar gleichzeitig über die gleiche Verbindung.


Was nun den Port betrifft - Wenn Du zum Server eine Verbindung aufbauen willst, dann musst Du doch zunächst erst einmal einen Socket erstellen. Ein Socket ist ein Kommunikationsendpunkt und in TCP/IP-Netzwerken nichts weiter als die Kombination (Tupel) von IP-Adresse und Portnummer. Wenn Du beim Erstellen des Sockets keine Portnummer angibst (was man beim Server allerdings auf jeden Fall machen sollte, denn der soll ja eben auf einer fest definierten Portnummer Verbindungen entgegen nehmen), dann sucht das System selbst eine nicht verwendete Portnummer für Dich raus.

Oder mal ganz platt ausgedrückt: Sobald Du einen Socket erstellt und Dich mit dem Server verbunden hast, ja genau dann hast Du auch lokal einen Port aufgemacht. In den TCP-Paketen die zwischen Server und Client gesendet werden sind die Portnummern (die vom Server und Client) festgehalten - aus diesem Grund weiss der Server auch ganz genau, an welchen Port bei Dir er die Daten senden muss. Der Komfort bei der ganzen Sache ist jedoch, dass den Server das aber alles gar nicht interessiert, weil das TCP/IP das alles erledigt. Der Server (damit meine ich die Software, nicht das Stück Hardware!) kennt im Grunde nur die Verbindung zum Client - aber welche IP und/oder Portnummer am Ende steht weiss er nicht (oder genauer: braucht er nicht zu wissen - er kann es aber durchaus ermitteln/rausfinden wenn er das will).


Ist vielleicht jetzt etwas klarer geworden....

Bye,
Michael

Thema: UPnP Stream erkennen
Am im Forum: Netzwerktechnologien

Zitat von exec
Keiner eine Idee?


Klar viele ;-) Aber bei den meisten kommst Du mit C# nicht weiter ;-)


Du könntest eine DLL in besagte Prozesse einschleusen und dann die Funktionen zum Erstellen von Sockets und Senden auf dergleichen auf eigene Funktionen umbiegen. Dann bekommst Du den Verbindungsaufbau mit und kannst Die gesendeten Daten mitlesen. Ist in purem C gar nicht soooo schwierig - könnte nur sein dass eine Anti-Viren Software anschlägt weil das nicht die ganz feine Art ist. Mal ganz abgesehen von dem faden Beigeschmack, dass Du jeweils eine DLL für 32 und eine für 64 Bit Prozesse brauchst....

Dann könntest Du ähnlich wie auch Anti-Viren Software das macht mit einem Treiber den Netzwerktraffic (oder Zumindest Verbindungsauf- und -abbau) mitlesen. Das ist zwar - wie Du so schön sagst - "Holzhammer", aber Du kannst ja den Hammer nur auf ausgewählte Prozesse schlagen lassen ;-) Aber auch hier der fade Beigeschmack bzgl. 32 und 64 Bit.

Und was mir so als einfache Lösung einfällt : Starte doch periodisch "netstat" und analysiere die Ausgabe - da hast Du alle Verbindungen. Und wenn Du anstatt "netstat" mal das TCPView von Microsoft nimmst (resp. die Consolenvariante "tcpvcon"), dann hast Du auch den Prozessnamen in der Ausgabe und kannst schon anhand des Namens separieren.....


Bye,
MK

Thema: C# Truecrypt API für .NET?
Am im Forum: Rund um die Programmierung

Es gibt kein "Dokan-Verhalten", weil Dokan nix mit ZIPs anfangen kann - es sei denn man implementiert es.

Aber ja, Du hast Recht - meine Erinnerung hat mich getrübt. Die Einräge im ZIP werden in der Tat physikalisch entfernt - das geht dann natürlich auf Kosten der Performance, denn die "neue" ZIP-Datei wird (logisch) komplett neu geschrieben....

Im Fall von Dokan könnte man sich natürlich ein "logisch gelöscht" Verhalten überlegen (z. B. in dem man den gelöschten Dateien im ZIP-Directory einen speziellen Namen gibt) - und erst wenn n Dateien (oder n Bytes) als gelöscht makriert sind einen neuen ZIP-Container erstellen (sozusagen, die ZIP-Datei "reorganisieren"). Hier sind dem kreativen Coder keine Grenzen gesetzt ;-)



Bye,
MK

Thema: C# Truecrypt API für .NET?
Am im Forum: Rund um die Programmierung

Zitat von vreden123
Wird das Programm beim nächsten WindowsStart mitgeladen muss nur noch der Container gemountet und die gemounteten Dateien syncronisiert werden.

Mir fehlt momentan noch etwas das Verständnis dafür, warum der Container gemounted werden muss. Wenn es nur darum geht Daten innerhalb eines Containers zu synchronisieren - dafür ist doch kein Mount (--> Laufwerk) erforderlich. Das kann man auch innerhalb eines ZIP-Archives machen ohne dafür extra ein Laufwerk zur Verfügung zu haben....
Zitat von vreden123
Eine andere Möglichkeit wäre das ich einen verschlüsselten .zip Container erstelle und den dann mit Dokan mounte? Geht das? Nur so eine Idee...

Klar. Ich habe ehrlich gesagt das Gefühl, dass Du dich nicht die Bohne mit Dokan auseinandergesetzt hast....

Du musst nur das Interface DokanOperations implementieren und das war es dann. In dem Interface gibt es dann Methoden wie z. B. CreateFile, OpenDirectory, CreateDirectory, CloseFile, ReadFile, WriteFile usw usw usw.

Ist also eigentlich relativ trivial, wenn man dahinter dann einen ZIP-Container hat.

Ich pers. würde aber eher zu einem SQLite basierten Backend raten (oder was anderes), da (so meine ich) beim Löschen innerhalb eines ZIP-Archives die bisherige Datei im ZIP-Container eben nicht gelöscht wird - der Eintrag wird im ZIP-Directory einfach entfernt (oder als "gelöscht" markiert - weiss ich gerade nicht). Ähnlich verhält es sich beim Ändern von Dateien. Ich meine, der "alte" Stand bleibt im ZIP-Container bestehen und der "neue" Stand der Datei wird hinten angehängt. Sprich, eine Log-Architektur. Das wird dann auf Dauer etwas voluminös....


Bye,
Knick

Thema: C# Truecrypt API für .NET?
Am im Forum: Rund um die Programmierung

Moin!

Zitat von vreden123
Danke für deine Antwort.
Wenn ich das richtiog verstanden habe, kann ich mit Dokan "nur" Laufwerke/Verzeichnisse similieren.

ja, sozusagen.... ich war der Meinung das ist das was Du sucht - denn Du hast ja in Deinem Ursprungspost geschrieben:
Zitat
Das Ver- und Entschlüssen soll wie in Truecrypt in einem Virtuellen Laufwerk passieren

also demnach in einem virtuellen (--> simulierten) Laufwerk.


Zitat
Gibt es den noch etwas anderes mit dem ich auch verschlüsseln kann?
Mit TC kann ich über die Konsole keine Container erstellen :-(

Also Du später geschrieben hattest
Zitat
Aber dann muss auf jedem PC der das Programm ausführt TC installiert sein?

Hatte ich das so interpretiert, also ob Truecrypt (oder gar eine andere Software) nicht als Voraussetzung in Frage kommt....


Ich muss gestehen dass ich so langsam auch nicht mehr verstehe was Du eigentlich willst...

Willst Du ein emuliertes/simuliertes Laufwerk? Dann nimm Dokan. Dass Du dabei auch ein Dateisystem emulieren musst ist dann halt der saure Apfel in den Du beissen musst.... Ein netter/simpler Einstieg ist ggf. ein auf SQLite basiertes Dateisystem. Es gibt natürlich auch Alternativen zu Dokan, aber ich denke dann muss Du schon auf C / C++ runter und hast keine C# Bindings (kannst ja mal einen Blick in den Source von WinCDEmu werfen um mal zu sehen was da für Klimmzüge gemacht werden müssen...

Willst Du nur einen Container der verschlüsselte Dateien enthält? Dann pack doch die verschlüsselten Dateien in eine ZIP-Datei und gut ist.... Damit kann jedes Windows umgehen....


Bye,
MK

Thema: C# Truecrypt API für .NET?
Am im Forum: Rund um die Programmierung

Moin!

Soooooo einfach ist das nicht.... Wirf doch mal einen Blick auf Dokan - dafür gibt es sogar .Net Bindings.

Ein Beispiel für eine Benutzung von Dokan findest Du z. B. FUSE(file system in userspace) for Microsoft-SQL using C#

Bye, Michael

Thema: Suche Versionsverwaltung für .NET UND VB6
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi,

ich habe noch nie so richtig mit VB6 programmiert - aber wenn ich mich richtig erinnere, dann werden diese binären Dateien vom Resource Compiler erstellt - sprich, es gibt "leserlichen" Code dazu und nur dieser gehört ins SCM.... Dann kannst Du prima mergen und VB merkt nach dem Merge dass es die Resourcen neu bauen muss....


Bye,
MK

Thema: Suche Versionsverwaltung für .NET UND VB6
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

auch ich habe so meine Verständnisschwierigkeiten, warum ein Subversion nicht mit VB6 Sourcen klarkommen soll - dem Subversion ist es nämlich fürchterlich Schnuppe, was man ihm für Dateien an den Kopf wirft. Ob das nun C#, VB, Assembler, Java, COBOL oder sonstwas ist, es behandelt alles gleich.

Wie dem auch sei.... Du hast Dir eigentlich die zwei richtigen Kandidaten rausgesucht (zumindest wenn man kein Geld in die Hand nehmen will/kann/darf).

Subversion ermöglicht eigentlich einen recht zügigen Einstieg und ist meist einfach zu bedienen. Es gibt mit TortoiseSVN eine gute Explorer-Integration und verschiedene Add-Ins für Visual Studio (kostenlos ist dann AnkhSvn). Subversion verfolgt den Ansatz, dass es immer einen zentralen Server gibt (also geben muss) den man für Checkouts, Merges und/oder Commits erreichen können muss.

Git ist zur Zeit "der König" der dezentralisierten SCMs (wie gesagt - zumindest bei den kostenlosen Angeboten). Die Lernkurve ist verhältnismäßig hoch, zumindest im Vergleich zu Subversion o. ä., da es halt vom klassischen Client-Server abrückt und daher erst einmal ein Umdenken notwendig ist. Die Kommandozeile ist da auch nicht jedermanns Sache ;-) Aber auch für Git gibt es inzwischen für Windows nette Tools wie z. B. SourceTree oder auch TortoiseGit. Und natürlich gibt es auch eine Integration für Visual Studio, z. B. den Git Source Control Provider oder eine Integration in den Team Foundation Server (die Visual Studio Tools for Git).



Man muss sich halt entscheiden was man will: Will mann auch ohne Verbindung zum Server seine Änderungen am Code committen können (z. B. im Urlaub oder während einer Bahnfahrt)? Dann ist ein dezentralisiertes System wie Git unverzichtbar......


bye,
Michael

Thema: Visual Studio 2010 bzw. C# 2010 noch aktuell?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

zus. zu den bereits erwähnten "Vorteilen" bei VS2010 zu bleiben (anstatt zu 2012 Express zu wechseln) ist: Du kannst Dein "echtes" Visual Studio mit AddIn's erweitern, was Du mit den Express Editions nicht kannst.....

Sprich, Du kannst kein Addin für ein Source Code Management System (z. B. Subversion oder Git) installieren oder kein AddIn das VS um ansatzweise leistungsfähige Refactoring-Möglichkeiten erweitert (kostenlos z. B. Code Rush Xpress oder als kostenpflichtiges Produkt das sehr leistungsfähige ReSharper). Oder auf so nette Kleinigkeiten wie VSCommands, den Visual Studio Spell Checker, die PowerCommands oder den RegEx Tester....

Will sagen: Du hast A) keinen Nachteil durch die 2010er Version und Du hast die Möglichkeit Dein VS 2010 durch weitere Add-Ins zu erweitern und die Entwicklungsumgebung dadurch noch leistungsfähiger zu machen.....


Bye,
Michael

P.S.: Eine Übersicht von Add-Ins findest Du in der Visual Studio Gallery

Thema: System.Diagnostics.Process - Wie erfährt man, dass der Prozess geladen wurde.
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Schildkroete,

Zitat von Schildkroete
irgendwie werde ich nicht fündig. Wie kann man heraus finden, ob der Prozess einen geladenen Zustand erreicht hat.

Wie definierst Du "Zustand geladen"? Ich definiere es so: Das Betriebssystem hat den Andressraum angelegt, den Code geladen und angefangen den Code auszuführen.

Wenn Du das ebenso definierst, dann müsste doch eigentlich die verbrauchte CPU-Zeit im User-Space den Zustand verraten - ist diese > 0, dann ist der Prozess geladen und ist losgelaufen (was nicht zwangsläufig bedeutet, dass die Applikation korrekt gestartet ist - u. U. konnte eine benötigte DLL nicht geladen werden oder eine DLL wirft in der DllMain Funktion einen Fehler, oder oder oder)....

Also wie dem auch sei, Process.UserProcessorTime könnte Dir helfen....


Bye,
Michael

Thema: Kontoauszug abrufen mit .net
Am im Forum: Rund um die Programmierung

Hallo mathis1112,

na, wie wäre es wenn Du oben auf Download klickst und dann den Installer (den EINZIGEN für Windows) runterlädst? Im Installationsverzeichnis gibt es dann das Unterverzeichnis "program\initial\bin" und dort die ausführbare Datei aqbanking-cli.exe.

Selber rumgespielt habe ich damit aber noch nicht....


bye,
Michael

Thema: Kontoauszug abrufen mit .net
Am im Forum: Rund um die Programmierung

Hi,

also wenn Deine Bank HBCI unterstützt (das sollte sie eigentlich) und Du nix dagegen hast aus Deiner C# Anwendung ein Kolsolprogramm zu starten (und die Ausgabe zu verarbeiten), dann schau Dir doch mal

AqBanking an. Das CLI (Command Line Interface) kann Umsätze abholen - das kommt Deiner Anforderung ja schon ganz nahe ;-)

Ansonsten gäbe es da noch eine Java Library (HBCI4Java), die jemand angefangen hat nach C# zu portieren (HBCI4Net - aber da ist noch nix released worden, das Projekt ist wahrscheinlich tot....

Bye,
Michael

Thema: Gesamte Webseite downloaden und speichern
Am im Forum: Web-Technologien

Hi,

noch 3 Links/Tips dazu....

1. Du könntest ja als Start Dir die Web Spider Library mal ansehen.

2. Eine auch im Internet oft vorgeschlagene Lösung ist, mit einem WebControl die Seite aufzumachen und dann die Methode ShowSaveAsDialog aufzurufen (und dann eben per Programm "fernzubedienen"). Mir ist das Verhalten dieser Methode nicht bekannt - aber ggf. ist es ja möglich den "SaveAs" Dialog hidden zu gestalten (oder per Hook abzufangen) damit ihn keiner sieht....

3. Ich bin mir nicht sicher.... Das Tool wget kann auf jeden Fall eine Website "komplett" downloaden. Ich weiss jetzt aber nicht, ob er dann auch die Links entsprechend anpasst. Will damit sagen, ggf. findest Du ja irgendwo ein Kommandozeilenutility dass tut was Du willst - dann wäre es ggf. eine Alternative dieses zu verwenden....


Bye,
Michael

Thema: Welcher Datenbankprovider für sqlite
Am im Forum: Datentechnologien

Zitat von dott
Wird dieser hier noch weiterentwickelt?
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

Na logisch..... Vor allem seit dem das Ding offiziell bei sqlite.org gehostet und gewartet wird....

Bye,
Knick

Thema: beRemote - Projekt: Remote Connection Manager
Am im Forum: Projekte

Zitat von Hunv
Hi,
ja, so groß ist sie nicht, dass ist korrekt. Aber SQLite unterstützt meines Wissens nach keine Stored Procedures. Daher muss z.T. einiges etwas aufwändig "zusammengesucht" werden, was bei MSSQL eine StoredProcedure mit entsprechender Performance machen würde.

Naja, wenn die DB im Cache ist, dann sind auch die SQLs entsprechend schnell. Und da SQLite eine embedded DB ist, sprich sie läuft im gleichen Adressraum wie Deine Anwendung, sind die von Dir abgesetzten SQLs im Grunde "Stored Procedures" (ok, nicht 100%ig, aber ich glaube es kommt rüber was ich meine).

Zitat von Hunv
Das mit den Netzlaufwerken KANN zu Problemen führen, muss es aber nicht - steht auch so in deinem ersten Link.

Richtig - ist halt eine Sache des Timings. Wenn zwei "kritische" Zugriffe mehrere Sekunden auseinander liegen, dann ist das halt kein Problem. Liegen diese aber im ≤ msek-Bereich beieinander, dann u. U. schon....

Zitat von Hunv
Für größere Umgebungen wird es später ohnehin die größeren Datenbanken geben, wo das dann kein Problem mehr dastellt.

Ich kann und will Dir/Euch ja nicht vorschreiben wie ihr beRemote zu entwerfen habt, aber ich kann es mir trotzdem nicht verkneifen ;-) mal darauf hinzuweisen, dass Du/Ihr Euch damit u. U. mehr Probleme einhandelt als eigentlich notwendig....

Du sprichst von "größeren Umgebungen"... Aus meiner beruflichen Erfahrung kann ich Dir nur sagen, dass eine Applikation (bzw. der Benutzer, der per ODBC oder was auch immer auf die DB zugreift) i. d. R. nicht die Berechtigungen bekommt Tabellen zu erstellen, zu löschen, zu modifizieren usw.... D. h., Du (bzw. der Anwender) ist immer auf einen DBA (DB Admin) angewiesen, der die Änderungen am DB-Schema vornimmt. Soll heissen, sobald beRemote mit SQL-Server Anbindung irgendwo in Produktion gehen soll, ist der Aufwand auf Kundenseite "enorm", da erst einmal ein DBA involviert ist.

Gleiches Spiel bei einem Upgrade/Update, wenn sich in einer neuen Version von beRemote das DB-Schema geändert hat - nix mit mal eben neues beRemote deployen... neeee, erst einmal den DBA konsultieren und dann DB-Change mit Deployment koordinieren...

Ganz ehrlich.... Ich untertselle mal, aus DB-Sicht ist das was Du/Ihr da macht "Pillepalle" (nicht abwertend gemeint - ich meine damit die Komplexität der DB und der durchgeführten Zugriffe) und ich pers. würde daher eher dazu tendieren, einen "beRemote Server" zu entwickeln, der die Zugriffe auf die gemeinsame DB durchführt. Und dann würde ich mir auch mal überlegen, ob nicht eine NOSQL-DB die bessere Alternative ist. So aus dem Bauch könnte ich mir vorstellen, dass das dann ein beRemote Server relativ einfach zu implementieren ist...

Als Idee: Kommunikation via HTTP und als Datenformat JSON (z. B. mit Json.NET). Und als DB dann im Hintergrund eine NoSQL DB wie MongoDB, Redis, DBreeze, DensoDB oder sowas - letztere kann man angeblich auch von Haus aus als Windows Dienst installieren und dann per REST befragen - beRemote Server geschenkt ;-). Vielleicht auch was leichtgewichtiges (aber hochperformantes) wie RaptorDB oder RaptorDB V2...

Und damit man nicht Zweigleisig fährt nimmt man die gleichen Klassen/Methoden auch für eine Einzelplatzversion, nur dass man dann die Kommunikation via HTTP rauslässt.... Dann spart man sich auch solch blöde Unterscheidungen zur Laufzeit "DB=SQLite" (ohne Stored Procedures) oder "DB=SQL-Server" (mit Stored Procedures - also zwei DBs mit unterschiedlichen Strategien um an die benötigten Daten zu gelangen)....

Stelle ich mir relativ spannend, aber nicht zu komplex vor...


Bye,
Michael

Thema: beRemote - Projekt: Remote Connection Manager
Am im Forum: Projekte

Zitat von Hunv
Für die Zukunft ist ohnehin zusätzlich zu der SQLite-Datebank noch die Möglichkeit der Nutzung einer MSSQL bzw. MySQL-Datenbank angedacht. Dies wird auch einige Performanceverbesserungen mit sich bringen.

Na, dass Du Dich da mal nicht täuschst ;-) Ich vermute/unterstelle mal, soooo riesig wird die DB von beRemote nicht sein - die passt doch wahrschenlick locker komplett in den Cache vom SQLite. Dann hast Du keinen ("zeitintensiven") Traffic mehr übers Netz..... SQLite ist eh schon ziemlich flott unterwegs, es sei denn man arbeitet ohne Transaktionen (dann ist es - architekturbedingt - grottenlahm) oder nutzt keine Indices. Allerdings sind dann auch auch DB-Server lahm ;-)
Zitat von Hunv
Ja, er hat auch Recht. Das bestreite ich nicht. Ich habe aber auch geschrieben, dass die DB durchaus in Netzlaufwerken liegen kann/darf

Ui ui ui ui.... neee neee, das lass mal schön sein - schon gar nicht bei Zugriffen von unterschiedlichen Rechnern - da schwächelt jede embedded Datenbank...

Can multiple applications or multiple instances of the same application access a single database file at the same time?

How To Corrupt An SQLite Database File --> Chapter 2.1


Bye,
Michael

Thema: TIFF Images mit CompressionType 2 mit C# lesen (und in welche mit Type 4 konvertieren)
Am im Forum: Grafik und Sound

Suche doch mal in google nach "C# create Process" und huuuuiiiiii, der erste Treffer ist es....

Thema: beRemote - Projekt: Remote Connection Manager
Am im Forum: Projekte

Klar ist das i. O. .....

Bye,
Michael

P.S.: Freue mich aufs erste Release....

Thema: TIFF Images mit CompressionType 2 mit C# lesen (und in welche mit Type 4 konvertieren)
Am im Forum: Grafik und Sound

Zitat von martin0815
Meine Frage zielte nun darauf, dass ich eine Bibliothek benötige mit der ich diesen Typ nicht nur erkennen kann. Mein Programm soll die Datei ja in das unterstütze Fax Group 4 encoding konvertieren.

Und was stört Dich dann am von mir vorgeschlagenen Kommandozeilentool "tiffcp"? Bequemer gehts es ja nun wirklich nicht:
tiffcp -c g4 eingabe.tif ausgabe.tif

und fertig. Evtl. noch mit der Option "-r" spielen (z. B. "-r -1"). Aber das sollte es dann schon gewesen sein.


bye,
Michael

Thema: TIFF Images mit CompressionType 2 mit C# lesen (und in welche mit Type 4 konvertieren)
Am im Forum: Grafik und Sound

Hi,

"4" bedeutet Kompression nach CCITT Gruppe 4 (Fax G4 Standard). Die sollte eigentlich jeder TIFF-Dekompressor, der etwas auf sich hält, unterstützen. Es ist aber durchaus gut möglich, dass das .NET Framework nicht kann.

Ob die TIFFs korrupt sind oder nicht würde ich aber trotzdem vorher mal prüfen - einfach mal im GIMP, IrfanView, XnView oder sowas aufmachen...

Ansonsten 2 Tips: Du kannst auch eine 3rd Party TIFF-Library benutzen, wie z. B. LibTiff.Net - die kann auf jeden Fall G4-Kompression bzw Dekompression.

Und wenn Du sonst nix mit C# machst - wenn es auch native Code sein darf, dann nimm doch die LibTIFF - die hat ein kleines Tool namens "tiffcp" dabei, mit denen Du TIFFs konvertieren kannst - z. B. halt auch von einem Kompressionsverfahren in ein anderes....

Hope it helps,
Michael

Thema: Freie VNC-Library für .Net/C#?
Am im Forum: Rund um die Programmierung

Zitat
Gutes beispiel wie es nicht sein sollte.
Das Geschäftsmodell von MySQL wollte ich jetzt nicht beleuchten ;-)
Zitat
MySql hat eine Dual Lizenz, für Open Source Benutzung ist die Kostenlos, für alles andere hat man Geld zu bezahlen.
Das müsste in deinem Fall allerdings der Kunde tun, denn er kann nicht erwarten das du das machst.
Das ist so nicht korrekt. Wir hatten mal eine kommerzielle Lizenz von MySQL (genauer, dem MySQL Connector) und haben diese an unsere Kunden weiterlizenziert. Und uns wurde seinerzeit von MySQL auch genau das bestätigt, was hier von Mike Wiesner ebenfall geäussert wurde:
Zitat
According to him, MySQL AB, the company behind MySQL, argues that its okay to use MySQL, including the MySQL-JDBC-Driver, in a non-GPL application, as long as the application doesn’t use anything specific to MySQL...

Das deckt sich sinngemäß mit meinen Äusserungen: Dynamisch laden, nix spezifisches - also "nur" eine allgemeine API benutzen, damit kein "abgeleitetes Werk" entsteht....
Zitat
Aber bei GPL und Co immer an den Geist denken in dem die SW darunter gestellt wurde.

;-) Der Geist stand bei meinen Aussagen nicht zur Debatte sondern nur was nach meinem Verständnis (und mit diesem stehe ich nicht alleine da) laut GPL zulässig ist.

Abschliessend sei noch bemerkt, dass es in der GPL einen speziellen Zusatz zum Thema dynamisches Linken gibt.
Zitat
Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.

Dieser Zusatz ist optional - fehlt dieser in der zum Produkt gehördenden GPL Lizenz, sollten meine Aussagen nach meinem Verständnis korrekt sein... Einem Einsatz in einem Closed Source Produkt (wie in einem meiner vorherigen Postings beschrieben) sollte daher nix im Wege stehen.


Und um nun nicht ganz off-topic zu werden und am Ende des Postings noch haarscharf die Kurve zum Thema VNC-Library zu kriegen: In der GPL vom VncSharp fehlt dieser Passus übrigens auch.

Bye,
Michael

Thema: beRemote - Projekt: Remote Connection Manager
Am im Forum: Projekte

Zitat von Hunv
Ja... das mit dem Englisch... naja, man versteht was wir meinen - hoffe ich ;)
Schon... macht halt nur einen etwas schlechten Eindruck - wo hingegen doch die Screenshots einen sehr professionellen Eindruck hinterlassen....

Zitat von Hunv
Das Login ist erforderlich, da es auch zur Verschlüsselung von hinterlegten Credentials genutzt wird.

Hmmm.... nunja.... Ihr werden schon wissen was ihr tut ;-)

Ich hatte da einen ganz bestimmten Anwendungsfall für die Software....

Zum Hintergrund: Ich bin ein leidenschaftiler Anwender von Launchy, einen "Schnellstarter". Dieser bietet ein Plugin für PuTTY was mich jeden Tag entzückt. Auf meinem Systtem aktiviere ich Launchy durch einen Hotkey, tippe dann "ssh" gefolgt von dem Hostnamen (der dem PuTTY bekannt sein muss), drücke einmal beherzt auf ENTER und schwupps öffnet sich PuTTY mit der Connection zum angegebenen Host. Was mich daran so entzückt ist, dass man A) ohne die Maus auskommt und B) schnell "am Ziel" ist.

Ich hatte mit ähnliches für beRemote erhofft. Hotkey drücken, beRemote starten (mit Kommandozeilenparameter für die Angabe des Hosts + Protokoll) und schwupps ist man auf dem Rechner. Wenn da noch so ein blödes Login dazwischen funkt ist das mehr als lästig. Zumal ich pers. eh "unnötige Logins" hasse wie die Pest...


Bye,
Michael

Thema: Freie VNC-Library für .Net/C#?
Am im Forum: Rund um die Programmierung

Hi,

Du hörst einfach nach dem Lesen des ersten Absatzes auf. Der zweite Absatz bezieht sich explizit auf dynamische Libraries / DLLs. Schreibt man also ein Plugin als DLL / Shared Library, dann ist der erste Absatz komplett zu ignorieren und nur der zweite Absatz hat Beachtung zu finden. Und dort gibt es zwei Bedingungen die erfüllt sein müssen, damit die Virulenz GPL zieht (they make function calls to each other and share data structures). Ich finde das ebenfalls sehr eindeutig.

Man sollte/muss nur folgendes beachten: Die Applikation muss auch ohne das Plugin lauffähig sein. Sprich, wenn man die DLL vom Plugin löscht darf die Applikation davon nicht beeinträchtigt werden (abgeshen davon, dass die Funktionalität, die das Plugin bereitstellt eben nicht mehr zur Verfügung steht). Das Plugin muss also wirklich dynamisch geladen werden. Denn ansonsten bilden Applikation und Plugin eben doch eine Einheit ("... form a single program").

Weiterhin ist man gut damit beraten, das Plugin nicht direkt mit der Applikation auszuliefern sondern als separaten Download anzubieten (oder zur Laufzeit der Applikation "on demand" herunterzuladen und zu installieren). Wenn man es doch mit der Applikation ausliefert, dann müssen natürlich auch Lizenzbestimmungen bzgl. der Distribution von GPL-Software beachtet werden (der Source muss ebenfalls ausgeliefert werden). Siehe FAQ


Bye,
Michael

P.S.: Als gutes Beispiel fällt mir gerade der MySQL ODBC-Treiber ein. Man nehme eine kommerzielle Closed Source Software, die mit beliebigen via ODBC erreichbaren Datenbanken arbeiten kann. Selbstverständlich darf diese Software mit dem GPL MySQL ODBC-Treiber verwendet werden - der Hersteller der Applikation darf diesen nur nicht mit der Applikation ausliefern.... Der Kunde muss sich den Treiber selber auf der MySQL Seiter herunterladen und diesen installieren....

Thema: Freie VNC-Library für .Net/C#?
Am im Forum: Rund um die Programmierung

Fröhliche Weihnachten herbivore,

Zitat von herbivore
ich denke, Frequently Asked Questions about the GNU Licenses: Can I apply the GPL when writing a plug-in for a non-free program? ist da eindeutig und widerlegt deine Überlegungen.

na na na.... nun mal ganz langsam.... Dort steht doch geschrieben
Zitat
and they make function calls to each other and share data structures

jetzt nehmen wir mal mein Beispiel mit dem Grafikprogramm, dass mit einem Plug-In um ein zus. Grafikformat erweitert wird. Das Grafikprogramm ruft die z. B. Methode "SaveImage" aus dem Plugin auf und übergibt einen Stream mit Bitdaten und einen Dateinamen. Da gibt es kein "call each other" und auch kein "share data structures". In diesem Fall kann man m. E. eindeutig GPL Code verwenden!

Wenn die Entwickler vom beRemote es hinbekommen, dass das VNC Plugin beispielsweise über eine Methode aktiviert wird und diese dann keine weiteren Aufrufe zum beRemorte Kern tätigt, dann kann m. E. ebenfalls eine GPL-Library verwendet werden. Beispielsweise durch eine Methode "DoWork", der IP-Adresse, Portnummer und ein Window-Handle übergeben wird (in das übergebene Window wird dann halt "gezeichnet"). Ich würde mich jetzt so weit aus dem Fenster lehnen und behaupten, ein Window Handle ist keine "data structure" (zumindest nicht innerhalb von beRemote - innerhalb des Windows Kernel schon - das ist klar). Also ich denke auch in diesem Fall kann man eine GPL-Library verwenden (gut... das VNC-Plugin muss dann halt auch GPL sein)....

Bye,
Michael