Ab und an sitzt man schonmal in einem Netz das nur HTTP Verbindungen erlaubt, wo man also nur im Web surfen kann. Bei mir ist das heute der Fall.
Es gibt verschiedene Webseiten auf die man sich (per HTTP) verbindet und die sich dann für dich auf den SSH Server weiter verbinden. Natürlich kann diese Schnittstelle alle Daten die anfallen mitlesen. Deshalb sollte man sich genau überlegen ob man einen solchen Dienst nutzen möchte und welchem Anbieter man vertraut.
Es gibt beispielsweise:
serFish, bietet auch noch ein paar andere Weiterleitungsdienste wie zum Beispiel für Mailverkehr an.
Wer keinem Anbieter vertrauen schenken will kann sich auf seinem Server auch selbst eine Schnittstelle installieren.
WebShell verwendet server-seitig AJAX und Python und client-seitig JavaScript(+ CSS). Wer sicherheit ganz groß schreibt kann dann noch den ganzen Quellcode druchgehen da das Projekt Open Source ist.
Hier sieht man wie das ganze client-seitig auf dem IPhone aussieht. Man kanns ich schließlich mit jedem Browser (der JavaScript und CSS unterstützt) verbinden.
News, Infos, Texte, Anleitungen und Gedanken rund um die Welt der Pinguine. Linux, UNIX, C, Coding, Programming, Papers
Mittwoch, 21. Dezember 2011
Sonntag, 20. November 2011
Crunchbang root
Bei crunchbang Linux kann man mit Hilfe von su standardmäßig nicht root werden. Das liegt daran das kein root Passwort vergeben ist.
Nun könnte man vor jeden Befehl den mal mit root-Rechten ausführen möchte ein sudo schreiben. Was aber total nervt wenn man längere Konfigurationen durchführt.
Hier die Lösung:
Ihr könnt mit sudo su root werden.
Oder ihr könnt ein richtiges root Passwort mithilfe von
sudo passwd root <password> setzen.
Nun könnte man vor jeden Befehl den mal mit root-Rechten ausführen möchte ein sudo schreiben. Was aber total nervt wenn man längere Konfigurationen durchführt.
Hier die Lösung:
Ihr könnt mit sudo su root werden.
Oder ihr könnt ein richtiges root Passwort mithilfe von
sudo passwd root <password> setzen.
Mittwoch, 16. November 2011
Raspberry Pi
Seit Monaten warte ich schon auf das erscheinen eines kleinen MiniPCs mit dem Namen Raspberry Pi. Es ist ein sehr kleiner Rechner der nur 25$ kosten soll. Und im Dezember soll er endlich erscheinen!
Entwickelt wurde er vor allem für Kinder. Die sollen damit günstig die Möglichkeit haben spielend Erfahrungen mit Technik zu machen. Anschliessen lässt sich das kleine Gerät an einen Fernseh und er kann sogar über Batterien betrieben werden.
Als Betriebssystem kommt wahlweise Arch Linux, Debian oder Fedora zum Einsatz. Es freut mich natürlich noch mehr das meine Lieblingsdistributionen Arch und Debian dabei sind :)
Entwickelt wurde er vor allem für Kinder. Die sollen damit günstig die Möglichkeit haben spielend Erfahrungen mit Technik zu machen. Anschliessen lässt sich das kleine Gerät an einen Fernseh und er kann sogar über Batterien betrieben werden.
Als Betriebssystem kommt wahlweise Arch Linux, Debian oder Fedora zum Einsatz. Es freut mich natürlich noch mehr das meine Lieblingsdistributionen Arch und Debian dabei sind :)
Dienstag, 8. November 2011
Embarcadero
Wir stellen gerade einige Projekte vom alten Borland C++ Builder 6 auf Embarcadero C++ Builder XE um.
Borland entwickelte anfangs den C++ Builder, anschließend übernahm das CodeGear und nun Embarcadero. Die neue Entwicklungsumgebung unterstützt nun Unicode.
Es gibt zwar die Möglichkeit bestehende Projekte(Endung .bpr) zu konvertieren, bis jetzt habe ich aber die Erfahrung gemacht, dass es gerade bei kleineren Programmen einfach er ist das Projekt neu zu erstellen.
In den Projekteinstellungen kann festgelegt werden ob für C-Strings der Datentyp char oder wchar_t gilt. Allerdings muss beachtet werden dass alle VCL Komponenten für die Speicherung von Text die Klasse UnicodeString verwenden.
Das konvertieren eines Projektes ist mit dem lösen aller Warnings noch lange nicht fertig. Manche Fehler fallen erst spät auf, wie ich heute feststellte.
In einem Programm tat ich etwas ähnliches wies das:
Allerdings an einer heikleren Stelle. Natürlich kam keine Fehlermeldung oder Warnung, erst zur Lauftzeit (nach 2 Tagen in Produktion) wurde bekannt dass das Programm nicht korrekt funkionierte.
Bis ich auf die entsprechende Stelle stieß dauerte ein bisschen. Da form1 vom Typ TForm ist, also eine VCL Komponente, wird die Eigenschaft Caption als UnicodeString gespeichert. Die Methode sprintf() vom Typ AnsiString kann damit nicht umgeben, deshalb sollte man die Eigenschaft zuerst casten.
Warum ich AnsiString überhaupt benutze? Nun ja, in diesem Projekt werden oft Ansi C Funktionen aufgerufen die noch mit dem Datentyp char arbeiten. Und ansiStringObjekt.c_str() gibt mir einen char array zurück.
Bis jetzt ist das upgrade auf C++ Buider XE mit mehr Arbeit als nutzen verbunden. Aber das wird hoffentlich nur so lange der Fall sein, bis alle Projekte umgestellt sind.
Borland entwickelte anfangs den C++ Builder, anschließend übernahm das CodeGear und nun Embarcadero. Die neue Entwicklungsumgebung unterstützt nun Unicode.
Es gibt zwar die Möglichkeit bestehende Projekte(Endung .bpr) zu konvertieren, bis jetzt habe ich aber die Erfahrung gemacht, dass es gerade bei kleineren Programmen einfach er ist das Projekt neu zu erstellen.
In den Projekteinstellungen kann festgelegt werden ob für C-Strings der Datentyp char oder wchar_t gilt. Allerdings muss beachtet werden dass alle VCL Komponenten für die Speicherung von Text die Klasse UnicodeString verwenden.
Das konvertieren eines Projektes ist mit dem lösen aller Warnings noch lange nicht fertig. Manche Fehler fallen erst spät auf, wie ich heute feststellte.
In einem Programm tat ich etwas ähnliches wies das:
AnsiString s;s.printf("Caption: %s", form1->Caption );
Allerdings an einer heikleren Stelle. Natürlich kam keine Fehlermeldung oder Warnung, erst zur Lauftzeit (nach 2 Tagen in Produktion) wurde bekannt dass das Programm nicht korrekt funkionierte.
Bis ich auf die entsprechende Stelle stieß dauerte ein bisschen. Da form1 vom Typ TForm ist, also eine VCL Komponente, wird die Eigenschaft Caption als UnicodeString gespeichert. Die Methode sprintf() vom Typ AnsiString kann damit nicht umgeben, deshalb sollte man die Eigenschaft zuerst casten.
s.printf("Caption: %s", (AnsiString)form1->Caption );
Warum ich AnsiString überhaupt benutze? Nun ja, in diesem Projekt werden oft Ansi C Funktionen aufgerufen die noch mit dem Datentyp char arbeiten. Und ansiStringObjekt.c_str() gibt mir einen char array zurück.
Bis jetzt ist das upgrade auf C++ Buider XE mit mehr Arbeit als nutzen verbunden. Aber das wird hoffentlich nur so lange der Fall sein, bis alle Projekte umgestellt sind.
Montag, 7. November 2011
QDomDocument
Ich mache gerade meine ersten Schritte mit Qt. Stundenlang, so kommt es mir vor, habe ich jetzt versucht eine Anwenung zu programmieren welche aus einer XML Datei Daten ausliest.
Es scheiterte schon beim Include:
Es scheiterte schon beim Include:
#include <QDomDocument>
Es kam immer wieder die Meldung das diese Datei nicht vorhanden ist. Nach einigem herumgesuche fand ich dann heraus das in der Projektdatei (projektname.pro) welches Qt Creator für mich anlegt folgendes stehen muss:QT+=xml
Warum das gemacht werden muss ist mir nicht ganz klar. Wenn ich etwas herausfinde lass ich es euch wissen.
Donnerstag, 7. Juli 2011
C-Strings duplizieren
Wenn ich einen C-String umkopieren wollte von dem ich zur Entwicklungszeit noch nicht wusste wie groß er ist, habe ich das bisher immer anscheinend ziemlich umständlich gemacht. Hier ein kleines Beispiel Programm:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char origin[]={"Hallo"};
char *copy;
// Inhalt von origin nach copy kopieren
copy = (char*)malloc( strlen(origin)+1 );
strcpy( copy, origin );
// ...
free( copy );
return 0;
}
Durch meinen Ausbilder wurde ich jetzt auf die Funktion strdup() aufmerksam. Sier erleichtert die Arbeit ein wenig und scheint sogar schneller zu sein als meine Variante.
um den Geschwindigkeitsunterschied zu messen, habe mit der Windows Funktion GetTickCount() die Millisekunden seit dem Start des Systems erfragt. Dann habe ich das Programm, die Kopierfunktion in beiden Varianten 99999-mal ausführen lassen. Und am Ende wieder die Zeit gemessen. So konnte ich feststellen wie viel Zeit in Millisekunden vergangen war. 4 von 5 Durchläufen war die strdup() Funktion schneller.
In der optimierten Variante ersetzt man die Zeilen 10 und 11 einfach durch
copy=strdup( origin );
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char origin[]={"Hallo"};
char *copy;
// Inhalt von origin nach copy kopieren
copy = (char*)malloc( strlen(origin)+1 );
strcpy( copy, origin );
// ...
free( copy );
return 0;
}
Durch meinen Ausbilder wurde ich jetzt auf die Funktion strdup() aufmerksam. Sier erleichtert die Arbeit ein wenig und scheint sogar schneller zu sein als meine Variante.
um den Geschwindigkeitsunterschied zu messen, habe mit der Windows Funktion GetTickCount() die Millisekunden seit dem Start des Systems erfragt. Dann habe ich das Programm, die Kopierfunktion in beiden Varianten 99999-mal ausführen lassen. Und am Ende wieder die Zeit gemessen. So konnte ich feststellen wie viel Zeit in Millisekunden vergangen war. 4 von 5 Durchläufen war die strdup() Funktion schneller.
In der optimierten Variante ersetzt man die Zeilen 10 und 11 einfach durch
copy=strdup( origin );
Samstag, 7. Mai 2011
Montag, 14. Februar 2011
Anonymous bricht in Securityfirma ein und findet interessantes
Lest euch unbedingt diesen Artikel bei heise durch! Anonymous ist angeblich in das System einer Firma eingebrochen, die Rootkits für die Regierung herstellen wollte. Außerdem wollen sie Journalisten davon abhalten Wikileaks zu unterstützen, was die Freiheit an sich einschränkt.
Montag, 7. Februar 2011
Wie man sich ohne Browser zum Facebook Chat verbindet
Ich denke die meisten wissen schon dass der Facebook Chat auf dem XMPP Protokoll basiert. Und genau das ist auch der Grund dafür warum man sich zum Facebook Chat mit jedem XMPP/Jabber Client verbinden kann. Ich benutzte auf meinem Laptop bis vor kurzem Empathy, da dieser der Standard Messenger unter GNOME ist, und ich noch nicht dazu kam etwas besseres zu installieren. Heute hatte ich dann doch Zeit mich endlich von Empathy zu trennen. Wieso bei GNOME von Pidgin auf Empathy umgestellt wurde verstehe ich übrigens immernoch nicht..
Also um mit eurem Lieblings Client zu Facebook verbinden zu können solltet ihr einen Facebook Benutzernamen haben, den könnt ihr hier setzen beziehungsweise nachschauen.
Wenn ihr Miranda, Pidgin oder einen anderen Multiprotokoll Client benutzt dann wählt XMPP als Protokollart, bei einem reinen Jabber Client wie Psi oder Gajim dürfte das wegfallen ;)
Server ist: chat.facebook.com
Username: Euer Facebook Benutzername
Port: 5222
Jetzt solltet ihr noch darauf achten das ihr SSL ausgeschaltet habt, sonst funktioniert das ganze nicht.
Das war's dann eigentlich schon. Jetzt könnt ihr schön bequem mit euren Freunden schreiben ohne dauernd in den Browser wechseln zu müssen.
Und empfehlenswert ist auch euren Chat jetzt mittels Off-the-Record zu verschlüsseln, wer will schon das jeder alles mitliest was man so schreibt ;)
Plugins für die OTR Verschlüsselung gibts unter anderem für Pidgin, Miranda und Trillian, aber soweit ich weiss nicht für Empathy..ein hoch auf Empathy!
Welche Sprache jetzt?
Eigentlich kenne ich mich nur in C einigermaßen aus. Das bisschen Java das ich in der Schule lerne möchte ich gar nicht aufzählen. Und mein Basic und Pascal ist schon ganz schön eingestaubt. Deshalb wollte ich mich jetzt mal mit einer zweiten Sprache beschäftigen. Dabei wollte mich mit einer Sprache befassen die auch neuere Ansätze unterstützt.
Auf der Suche nach einer Sprache die mir Spaß machen könnte habe ich mir eine Liste der Programmiersprachen auf Wikipedia angeschaut.
Go ist eine Sprache die von Google Mitarbeitern entwickelt wurde und sehr C ähnlich aussieht. Es ist plattformunabhängig und frei. Allerdings gibt es noch nicht viele Bindings für diese Sprache.
Außerdem kam noch Python in Frage, auch wenn es eigentlich eine Scriptsprache ist. Es wäre auch praktisch um ein paar administrative Aufgaben zu erledigen. Es scheint relativ vielseitig einsetzbar zu sein und ist (wie die meisten Scriptsprachen) auch platformunabhängig.
Schließlich hab ich mich für Vala entschieden. Es ist auch sehr C und C# ähnlich. Vala Code wird zuerst in C Code umgesetzt und dann kompiliert, somit ist das Programm nativ und wird nicht in Bytecode oder ähnliches wie bei Java übersetzt, was der Geschwindigkeit zugute kommt. Aufgrund der Übersetzung in C können auch C Module eingebunden werden. Somit stehen viele Bibliotheken zur Verfügung. Der Vorteil zu C ist, das es neuere Techniken unterstützt und somit vielleicht etwas einfacher zu handhaben ist.
Vala benutzt das GObject Objekt System, welches von GTK+ genutzt wird beziehungsweise dafür entwickelt wurde, sowie den Rest der GLib.
Einige der neueren GNOME Programme wie zum Beispiel die Fotoverwaltung Shotwell und das Backup Programm Déjà Dup.
Entschieden habe ich mich für Vala wegen der Ähnlichkeit zu C, der neueren Ansätze und der Benutzung der GLib, die ich mir schon länger mal anschauen wollte. Ich werde mir Vala jetzt nach und nach anschauen und hier sicher einige Posts darüber veröffentlichen, ja vielleicht sogar meinen ganzen Weg zu Vala beschreiben.
Auf der Suche nach einer Sprache die mir Spaß machen könnte habe ich mir eine Liste der Programmiersprachen auf Wikipedia angeschaut.
Go ist eine Sprache die von Google Mitarbeitern entwickelt wurde und sehr C ähnlich aussieht. Es ist plattformunabhängig und frei. Allerdings gibt es noch nicht viele Bindings für diese Sprache.
Außerdem kam noch Python in Frage, auch wenn es eigentlich eine Scriptsprache ist. Es wäre auch praktisch um ein paar administrative Aufgaben zu erledigen. Es scheint relativ vielseitig einsetzbar zu sein und ist (wie die meisten Scriptsprachen) auch platformunabhängig.
Schließlich hab ich mich für Vala entschieden. Es ist auch sehr C und C# ähnlich. Vala Code wird zuerst in C Code umgesetzt und dann kompiliert, somit ist das Programm nativ und wird nicht in Bytecode oder ähnliches wie bei Java übersetzt, was der Geschwindigkeit zugute kommt. Aufgrund der Übersetzung in C können auch C Module eingebunden werden. Somit stehen viele Bibliotheken zur Verfügung. Der Vorteil zu C ist, das es neuere Techniken unterstützt und somit vielleicht etwas einfacher zu handhaben ist.
Vala benutzt das GObject Objekt System, welches von GTK+ genutzt wird beziehungsweise dafür entwickelt wurde, sowie den Rest der GLib.
Einige der neueren GNOME Programme wie zum Beispiel die Fotoverwaltung Shotwell und das Backup Programm Déjà Dup.
Entschieden habe ich mich für Vala wegen der Ähnlichkeit zu C, der neueren Ansätze und der Benutzung der GLib, die ich mir schon länger mal anschauen wollte. Ich werde mir Vala jetzt nach und nach anschauen und hier sicher einige Posts darüber veröffentlichen, ja vielleicht sogar meinen ganzen Weg zu Vala beschreiben.
Donnerstag, 3. Februar 2011
Android Market im Web
Den Android Market gibts jetzt endlich auch im Web unter market.android.com. Die Seite sieht recht übersichtlich aus. Neben allgemeinen Informationen und Bildern werden auch die Berechtigungen die eine App verlangt angezeigt. Es gibt Bewertungen von Nutzern und Verweise auf ähnliche Apps. Man kann sich mit einem Google Konto beim Market anmelden und Apps kaufen. Außerdem gibt es die Möglichkeit aus Apps heraus, weitere Apps bzw. Zusatzfunktionen zu kaufen. Diese Funktion ist bis jetzt noch nicht verfügbar, soll aber bald folgen.
C Kurs
Ich habe mich entschieden hier eine kleine Einführung in die Programmiersprache C zu geben.
C wurde schon 1972 veröffentlicht, ist also schon älter. Nichts desto trotz wird C immernoch häufig eingesetzet.
Es eignet sich unter anderem besonders gut für Hardware nahes programmieren. Ich bin der Meinung das man durch C einiges über die Funktionsweise eines Computers lernen kann.
Aufgrund der Hardwarenähe sind C Programme (wenn gut geschrieben) besonders schnell. Allerdings gibt es in C keine Klassen, in der Sprache C++ allerdings schon. C++ ist in etwa der Nachfolger von C.
Was jedoch nicht bedeutet das C nicht mehr zum Einsatz kommt. Es kommt ganz drauf an was man programmieren möchte. In C++ gibt es einige Sprachelemente die es in C nicht gibt. Dies sollte uns am Anfang jedoch nicht kümmern.
Und auch später greift man oft doch lieber auf C zurück. Es gibt auch einige Personen die C++ für umständlicher als C halten. Nun genug davon. Schließlich wollen wir hier programmieren lernen, rightig?
Programmieren ist nichts anderes als dem Computer, auf einem ihm verständliche Weise, zu sagen was er zu tun hat. Dann tun wir das doch einfach mal:
#include <stdio.h>
int main()
{
return 0;
}
Dies ist unser erster Quellcode. Nur, was machen wir jetzt damit?
Wir übersetzen ihn! Damit unser Programmcode dem Computer verständlich wird müssen wir ihn in Maschinencode übersetzen. Dies übernimmt ein Compiler für uns.
Bevor wir also anfangen können zu programmieren, müssen wir erst ein paar Hilfsmittel installieren.
Zum schreiben des Quellcodes reicht im Grunde ein normaler Editor. Einige Editoren unterstützen Syntax Hightlighting, das heißt sie formatieren den Quellcode auf eine bestimmte Weise um ihn leserlicher zu machen. Schhlüsselwörter können so zum Beispiel Fett oder in einer bestimmten Farbe dargestellt werden.
Zum übersetzen des Codes in Maschinencode wird wie gesagt ein Compiler benötigt. Unter Linux beispielsweise, ist wohl gcc der meistverbreiteste Compiler.
Wenn ihr das Programm abgetippt habt und es gespeichert habt, dann wechselt mit dem Terminal in das Verzeichnis.
cd /path/to/source/
Wenn ihr im Verzeichnis seit dann könnt ihr die Datei kompilieren und ausführen:
gcc -o test main.c
./test
Hierbei sollte main.c durch den Dateinamen ersetzt werden. Und? Was bekommt ihr nach dem ausführen ( ./test ) zu sehen? Nichts? Na dann habt ihr alles richtig gemacht :-)
Bis zum nächsten mal!
Dienstag, 1. Februar 2011
GNOME 3 live CD
Heute wurde von Frederic Crozat eine LiveCD der Linux Distribution openSUSE veröffentlicht die die GNOME 3 Shell beinhaltet. Ziel ist es möglichst viele Nutzer für Tests zu gewinnen, damit die Entwicklung von GNOME 3 voranschreiten kann. Runterladen kann man sich das Image hier, weite Infos finden sich im Blog von Frederic. Frohes testen!
Mittwoch, 26. Januar 2011
Android-Maus
Mit der Android App PRemoteDroid lässt sich ein Android Handy zum fernsteuern des PCs benutzen. Der Client lässt sich sehr einfach installieren, man findet ihn im Market. Der Server, der auf dem PC gestartet werden muss findet man hier.Das Paket einfach entpacken und unter Windows die Datei PRemoteDroid-Server.exe starten bzw. unter Linux im Terminal in den gerade entpackten Ordner wechseln und das Programm mit java -jar PRemoteDroid-Server.jar starten.
In der Taskleiste erscheint nun ein neues Symbol. Per Rechtsklick kann man den Server nun kofigurieren. Die Verbindung kann über WLAN oder Bluetooth hergestellt werden, außerdem kann ein Port sowie ein Passwort eingestellt werden.
Nun geht man zurück zum Anfangsbildschirm, nun kann man auf der schwarzen Fläche herumfahren und siehe da: die Maus bewegt sich. Über die Menü Taste kann auch eine Tastatur angezeigt werden und über den Knopf File Explorer kann man die Dateien des Host PCs durchstöbern.
Mit dieser tollen App lässt sich der PC wie mit einer Fernbedienung steuern. Sehr angenehm um beispielsweise Videos zu schauen. Außerdem hilfreich falls die Funkmaus/-tastatur mal wieder den Dienst versagt.
Zerhacktes
Gestern bin ich wiedereinmal über den Begriff Hash gestolpert. Mir war einigermaßen klar was er Bedeutet, jedoch wusste ich nicht viel darüber. Ich wusste das man Passwörter hashen kann und dann die Hashwerte vergleicht, damit man das Passwort nicht im Klartext verschicken bzw. speichern muss.
Ich beschloss, mich ein bisschen damit zu beschäftigen und hier darüber zu schreiben.
Angenommen wir möchten eine Datenbank erstellen in der wir Zitate speichern. Jedes Zitat soll natürlich nur einmal vorkommen. Da an unserem Projekt viele Autoren mitarbeiten verliert man jedoch schnell den Überblick darüber welches Zitat schon vorhanden ist und welches nicht. Deshalb müssen wir bevor wir ein Zitat eintragen, erst überprüfen ob es schon vorhanden ist.
Unser Programm vergleicht deshalb jedes Zeichen aus dem vermeindlich neuem Text mit jedem Zeichen aus den schon vorhandenen Texten. Wenn es einen Text findet der mit dem neuen Text übereinstimmt, wird es gemeldet, andernfalls wird der Text in die Datenbank übernommen.
Wir möchten nun das Zitat: Auch die Kunst ist revolutionäres Tun - Renato Guttuso eintragen. Zuerst vergleichen wir diesen Text mit dem ersten Zitat aus unserer Datenbank, der lautet: Auch die beste Medizin hat nur aufschiebende Wirkung - Gerhard Kocher.
Nach dem zehnten Zeichen wird uns auffallen das der Text unterschiedlicht ist, und wir können ihn in die Datenbank aufnehmen. Es kann jedoch vorkommen das die ersten 100 Zeichen gleich sind, danch der Text aber unterschiedlich ist. Wir benötigten also mehr Zeit. Handelt es sich um andere Daten die noch größer und sind, so kann es einiges an Zeit kosten.
Würden wir jeden Text mit seinem Hash abspeichern so müssten wir nur die beiden Hashes miteinander vergleichen, dies würde sich natürlich nur lohnen wenn die Hashwerte kürzer sind als der Eingangstext. Deshalb ist dies auch ein wichtiges Kriterium, die Länge.
Hier nun der MD5 Hash des ersten Zitates:
Ich beschloss, mich ein bisschen damit zu beschäftigen und hier darüber zu schreiben.
Angenommen wir möchten eine Datenbank erstellen in der wir Zitate speichern. Jedes Zitat soll natürlich nur einmal vorkommen. Da an unserem Projekt viele Autoren mitarbeiten verliert man jedoch schnell den Überblick darüber welches Zitat schon vorhanden ist und welches nicht. Deshalb müssen wir bevor wir ein Zitat eintragen, erst überprüfen ob es schon vorhanden ist.
Unser Programm vergleicht deshalb jedes Zeichen aus dem vermeindlich neuem Text mit jedem Zeichen aus den schon vorhandenen Texten. Wenn es einen Text findet der mit dem neuen Text übereinstimmt, wird es gemeldet, andernfalls wird der Text in die Datenbank übernommen.
Wir möchten nun das Zitat: Auch die Kunst ist revolutionäres Tun - Renato Guttuso eintragen. Zuerst vergleichen wir diesen Text mit dem ersten Zitat aus unserer Datenbank, der lautet: Auch die beste Medizin hat nur aufschiebende Wirkung - Gerhard Kocher.
Nach dem zehnten Zeichen wird uns auffallen das der Text unterschiedlicht ist, und wir können ihn in die Datenbank aufnehmen. Es kann jedoch vorkommen das die ersten 100 Zeichen gleich sind, danch der Text aber unterschiedlich ist. Wir benötigten also mehr Zeit. Handelt es sich um andere Daten die noch größer und sind, so kann es einiges an Zeit kosten.
Würden wir jeden Text mit seinem Hash abspeichern so müssten wir nur die beiden Hashes miteinander vergleichen, dies würde sich natürlich nur lohnen wenn die Hashwerte kürzer sind als der Eingangstext. Deshalb ist dies auch ein wichtiges Kriterium, die Länge.
Hier nun der MD5 Hash des ersten Zitates:
013043df31ed800fc149ee52396cfaef
Und hier der des zweiten:83c8e17721595f83d962331e982079c5
Sonntag, 23. Januar 2011
GNOME 3
Vor einigen Tagen habe ich gesehen, dass die Desktop Umgebung GNOME 3 alpha-released wurde. Erste screenshots findet man auf der Projektseite.
Was man dort zu sehen bekommt und erfährt gefällt mir eigentlich ganz gut.
Ich war vom MeMenu, in welchem die Kommunikation in GNOME 2.x zusammengefasst wird schon begeistert. Deshalb freue ich mich über die Ankündigung dass der Kommunikation noch mehr Beachtung gewidmet wird.
Leider muss man sich aber noch bis April gedulden, dann erst soll GNOME 3 fertig sein. Wer es solange nicht mehr aushält kann es auch schonmal antesten. Als Tool kommt hier JHBuild zum Einsatz, welches das bauen aus den Quellpaketen erleichtern soll. Ein JHBuild Modulsatz enthält Informationen zu Abhängigkeiten und kann die Module aus verschiedenen Quellen wie zum Beispiel GIT und Mercurial erstellen. Hierzu gibt es eine Anleitung.
Selbstverständlich kann man kein 100%-ig Stabiles System erwarten. Wer Fehler findet kann diese natürlich auch gleich melden. Und somit bei der Entwicklung helfen. Wer weniger technisch versiert ist, und das GNOME Projekt trotzdem unterstützen möchte, kann auch Geld spenden.
Zum Schluss noch ein Link zu mehr Links ;)
Was man dort zu sehen bekommt und erfährt gefällt mir eigentlich ganz gut.
Ich war vom MeMenu, in welchem die Kommunikation in GNOME 2.x zusammengefasst wird schon begeistert. Deshalb freue ich mich über die Ankündigung dass der Kommunikation noch mehr Beachtung gewidmet wird.
Leider muss man sich aber noch bis April gedulden, dann erst soll GNOME 3 fertig sein. Wer es solange nicht mehr aushält kann es auch schonmal antesten. Als Tool kommt hier JHBuild zum Einsatz, welches das bauen aus den Quellpaketen erleichtern soll. Ein JHBuild Modulsatz enthält Informationen zu Abhängigkeiten und kann die Module aus verschiedenen Quellen wie zum Beispiel GIT und Mercurial erstellen. Hierzu gibt es eine Anleitung.
Selbstverständlich kann man kein 100%-ig Stabiles System erwarten. Wer Fehler findet kann diese natürlich auch gleich melden. Und somit bei der Entwicklung helfen. Wer weniger technisch versiert ist, und das GNOME Projekt trotzdem unterstützen möchte, kann auch Geld spenden.
Zum Schluss noch ein Link zu mehr Links ;)
Mittwoch, 19. Januar 2011
Hello World!
So, nun ist es endlich so weit. Dies ist mein erster Blogeintrag für Linux for penguins. Um was es hier gehen soll? Ich möchte hier Tipps und Tricks zum Umgang mit Linux, Programmempfehlungen, programmiertechnisches, technologisches, interessantes, langweiliges, neues und altes posten.
Einen richtigen Plan habe ich noch nicht, nur viele kleine Ideen. Mal sehen wo uns das hinbringt..
Einen richtigen Plan habe ich noch nicht, nur viele kleine Ideen. Mal sehen wo uns das hinbringt..
Abonnieren
Kommentare (Atom)