My Universe Logo

My Universe Blog » Entries Tagged as C

First alpha of libsynctory released

Posted by Jesco Freund at Jan. 5, 2011 5:02 p.m.

Some minutes ago, I released the first alpha (ever!) of libsynctory. It is a replacement for librsync, but makes use of different algorithms. Therefore, processing might be slower and fingerprint chunks are definitely larger than the ones produced by librsync. However, libsynctory's fingerprints are much more collision safe, so it is more adequate for environments, where high reliability is estimated more than performance or network load (like e. g. backup applications).

Currently, I consider libsynctory to be “feature-complete”, meaning it offers all the functionality required to serve its intended purpose. It can create a fingerprint of a given file. Using this fingerprint only (and without resorting to the original file), it can calculate the difference between the original file and another file. Using this difference and the original file, the other file can be restored.

However, libsynctory does neither offer any documentation yet (shame on me), nor does it provide a decent interface for error handling (or even backtracing). Furthermore, it has not yet been reviewed for thread safety, so use it with care (if you intend to do so). If you would like to test libsynctory, just grab the source archive from the project page and do the following:

tar -xjvf libsynctory-0.1.0-a1-Source.tar.bz2
cd libsynctory-0.1.0-a1-Source
cmake .
make
sudo make install

This will install the header files into /usr/local/include and the library itself into /usr/local/lib. Within the build directory, you will find some test binaries (in src/test). You can use them for very simple single file operations, just to see how libsynctory works.

No comments | Defined tags for this entry: backtory, C, development, synctory

MVC ohne Java, Python, Ruby & Co

Posted by Jesco Freund at Sept. 15, 2010 10:23 p.m.

MVC kann man auch jenseits der klassischen objektorientierten Programmiersprachen umsetzen. Derzeit bastle ich an einer Implementierung in C – teils als Proof of Concept, teils für einen bestimmten Einsatzzweck – auf jeden Fall aber aus Spaß an der Freude.

Die Idee hinter Stormrose (so habe ich das Projekt getauft) ist relativ einfach: Ein kleiner, schlanker HTTPd nimmt Requests entgegen, ermittelt (ähnlich wie bei Django) anhand der URI den zuständigen Controller, übergibt diesem den Request und lässt vom Controller dann eine Antwort generieren, die zurück an den anfragenden Client übertragen wird.

Controller sind dabei einfache C-Funktionen, die einem bestimmten Schema entsprechen. Zu Demonstrationszwecken habe ich einen „Hello World“ Controller schon mal eingebaut, der – wie nicht anders zu erwarten – nur ein einfaches „Hello, World“ an den Client sendet. Ein Controller für statische Inhalte soll noch hinzukommen, so dass Stormrose theoretisch auch als „normaler“ Webserver einsetzbar wäre. Weitere Controller werden dann im Zuge der Entwicklung einer Stormrose-Applikation erstellt.

Auf Seiten der Views habe ich noch keine Aktiv-Posten zu verbuchen – hier muss ich mir noch etwas sinnvolles ausdenken. Einen (schwergewichtigen) XML-Parser möchte ich aber tunlichst vermeiden – sonst kann man ja gleich JSPs verwenden…

Für das Model gilt im Prinzip ähnliches – hier möchte ich allerdings dem Anwendungsentwickler wirklich komplett freie Hand lassen. Einen ORM-Mechanismus wird es nicht geben – Frameworks mit diesem Dreiklang (ORM, Templates, Glue) gibt es schon zu Hauf. Stormrose ist eher für Applikationen gedacht, die eben nicht hauptsächlich Datensätze aus einem RDBMS bearbeiten.

Damit wird es sicherlich eher ein Nieschendasein führen – wer es sich trotzdem mal ansehen möchte, kann sich den Code jederzeit per Subversion auschecken (https://svn.my-universe.com/stormrose/trunk). Derzeit ist der Code aber noch sehr unreif und befindet sich in ständiger Entwicklung. Momentan taugt er also bloß zum Experimentieren. Sobald die Controller-API stabil ist, werde ich dann auch ein kleines How-To zur Entwicklung einer kleinen Stormrose-Applikation veröffentlichen.

No comments | Defined tags for this entry: C, code, development, programming, Stormrose

Backtory is moving forward

Posted by Jesco Freund at July 27, 2010 7:35 p.m.

The going is tough, but at least there is any going – I think this describes best my progress with Backtory. During the last two weeks, we've been on holiday in Denmark. I used some of the rather rainy days to code on Backtory, and here's what I got done so far:

  • Libsynctory is in a working state now, meaning it does what is expected of it. However, it's not yet nice – no proper documentation, no thread safety, no error tracing.
  • Libyar got a bit further. The container file layout is finalized and properly documented. An awful lot of macros and some init voodoo for thread saftey are ready, but the lib itself is of no use yet.
  • The Backtory application itself hasn't been touched by me for some weeks now – I concentrated efforts on the two above-mentionned libs. However, I have made up my mind about the application (again ;-)). There will be a “cheap” CLI application, most probably implemented in Python. The more complex thing (daemon, configuration via network and stuff) will become eBacktory, of which I'll take care later.

So first priority for me is to get libyar ready to use, and to finish libsynctory into a state that could be called “release-ready”. When both libs are done, I'll first finalize a CLI for YAR files before taking care of the Backtory implementation itself. As I see tough times ahead concerning my professional life, I dare not give any forecast when I'll be able to spare the hours so urgently needed to finish any of the mentionned tasks. But as I already statet – the going is tough, but at least there is any going…

No comments | Defined tags for this entry: backtory, C, development, synctory, yar

Go: First Contact

Posted by Jesco Freund at May 8, 2010 12:38 a.m.

Und wieder ist die Welt um eine Programmiersprache reicher geworden – die Rede ist von Go, einer unter Schirmherrschaft von Google entwickelten Sprache, zu deren Vätern auch Vertreter der Unix-Prominenz (wie etwa Ken Thompson) gehören. Auch wenn einige „Fach“-Journalisten (mal wieder) die Sensation wittern und bereits die Totenglocken für C, C++ und Java läuten hören, habe ich mal (entgegen meiner Gewohnheit, bei journaille-generierten Hypes aktiv wegzusehen) ein bisschen mit Go herumgespielt, um mir ein eigenes Urteil erlauben zu können.

Auf den ersten Blick wirkt die Sprache ein bisschen wie „OK, wir nehmen C, fügen Objektorientierung hinzu, ohne die Komplexität von C++ ertragen zu müssen, und packen noch ein bisschen Nebenläufigkeit dazu“. Auf den zweiten Blick offenbart sich, dass die Sprache offenbar einer Hippie-Kommune entsprungen ist – jedenfalls lässt sich nicht mehr so genau sagen, wer die eigentlichen Eltern sind ;-). C und C++ haben auf jeden Fall Pate gestanden (bei Ken & Co. auch nicht anders zu erwarten), aber auch Elemente von Java, Python und sogar Pascal sind mit eingeflossen.

continue reading Go: First Contact

2 comments | Defined tags for this entry: C, Go, google, programming, python

Altes Eisen

Posted by Jesco Freund at July 31, 2009 9:54 p.m.

/assets/user/jfreund/img/png/sprachen.png

Laut Statistik von GitHub ist Ruby die derzeit am meisten verwendete Programmiersprache. „Meine“ Sprachen, also C, und Python („Shell“ ist doch keine Programmiersprache… *scnr* 8-)) kommen noch nicht mal zusammengenommen auf den „Marktanteil“ von Ruby. Scheint so, als wären Webanwendungen schwer angesagt – vielleicht nutzen aber auch die meisten konventionellen Projekte einfach nur andere Hosting-Plattformen… Trotzdem fühlt es sich komisch an, bei C gerade mal schlappe 6% zu lesen.

1 comment | Defined tags for this entry: C, code, programming

Bilanz eines Wochenendes

Posted by Jesco Freund at Nov. 9, 2008 10:35 p.m.

Nachdem meine Freundin dieses Wochenende mit ihrer Taiko-Gruppe auf Achse war, habe ich kurzerhand mein Equipment (Notebook, Schlafsack, Senseo-Kaffeemaschine) eingepackt und bin bei André eingefallen. Anstelle von 48 Stunden Dauer-C&C Generals Zero Hour waren wir dieses Wochenende sogar richtig produktiv: über 40 Commits für unser jüngstes Software-Projekt RPG haben wir zustande gebracht (auch wenn die meisten davon Korrekturen von Irrtümern unsererseits jeglicher Art waren – oder Tribut an die angestrebte Plattform-Unabhängigkeit :-O)

Zum Ausklang gibt's jetzt standesgemäß Pizza (allerdings vom Lieferdienst, nicht aus dem Eisfach) und nebenher ein paar fällige Updates auf den Servern. Erholen kann ich mich ja morgen im Büro… 8-)

1 comment | Defined tags for this entry: C, programming, python, RPG

Page 1 of 1