Continued Fraction Calculator

Continued Fraction Calculator Screenshot

To calculate the continued fraction from a specified value and to compare two different continued fractions I have implemented the continued fraction calculator library can command line application fractionscli. The application is available under the GPLv3 license free of charge.

The calculator can either be installed using the setup program or the Jar file can be started directly.

Update March 16, 2014

  • Release version 2.3

Downloads

Start

To start the application there are scripts installed in the bin/ directory. For Linux it is the bin/linux/run.sh script, for Windows it is the bin/windows/run.bat script. The script can be run from anywhere, i.e.:

Debug

A version for debug purpose is in the same directory as the start script and is run in the same matter, i.e.:

Manual

fractionscli – calculates and prints the continued fractions from the specified value.

Synopsis

Description

Prints the calculated continued fractions from the specified value or prints the calculated value from the specified denominators. Different calculation algorithms can be chosen to calculate the continued fraction. If two continued fractions are specified then those are compared for inequality.

Options

-service service

Sets the calculation algorithm specified by the service name. Defaults to the “IntegerFraction” algorithm.

  • "IntegerFraction": standard algorithm, z=1.0; n0..ni ∈ ℕ
  • "IntegerNoMinusOneFraction"
  • "Mod3Fraction"

-max maximum

Sets the maximum count of denominators for the value. Defaults to ten (10) denominators.

-value-format|-f format

Sets the value format to parse the denominators and to format the calculated value of the continued fraction. Defaults to the NumberFormat#getInstance() formatter. See DecimalFormat

-denominators|-d denominators

If the denominators are specified then the value of the continued fraction with the specified denominators is printed.

-fraction-a|-a denominators -fraction-b|-b denominators

Sets the denominators for the first and second continued fraction to be compared for inequality and prints the inequality:

  • -1 if a
  • 0 if a=b
  • 1 if a>b

value

If the value is specified then the continued fraction is calculated from this value and the denominators are printed. Either denominators or value can be specified at the same time.

Examples

calculates and prints out the continued fraction of the value with a maximum depth of ten denominators;

calculates and prints out the continued fraction of the value with a maximum depth of six denominators;

calculates and prints out the value of the continued fraction from the specified denominators;

compares and prints out the inequality the first and second continued fraction from the specified denominators;

Gitit Installation

logo of Gitit wiki

Gitit Installation

Gitit ist eine Wiki-Software in dem Stil von Mediawiki die z.B. von Wikipedia benutzt wird. Das besondere an Gitit ist dass es viele verschiedene Formatte für das erstellen der Artikel und viele Exportformate unterstützt. Ebenso besonders ist es, dass Gitit keine Datenbank benutzt, sondern die Artikel im Dateisystem ablegt und die Git Versionsverwaltung nutzt.

Installation

Ich stelle hier vor wie man Gitit auf einem Ubuntu 12.04 Server installiert. Gitit ist in Haskell implementiert, und man kann die Cabal-Install Tool benutzen um Haskell Programme zu installieren. Zusätzlich benutze ich das hsenv Paket um Gitit in einer Art Sandbox zu installieren1, dies ist nützlich um die Abhänigkeiten auf eine Bestimmte Applikation zu limitieren.

~ home directory; # root bash prompt; [hsenv] hsenv environment active;

Nun sollte Gitit installiert sein und eine Wiki-Seite unter der Adresse http://localhost:5001 zur Verfügung stellen. Der nächste Abschnitt beschreibt wie man Gitit als ein Service konfiguriert, der automatisch gestartet wird.

1 Practical Haskell: shell scripting with error handling and privilege separation

Gitit Service

Ubuntu 12.04 benutzt Upstart als den Init-Service for Services, es ist aber noch mögliche klassische SysVinit Init-Scripte zu benutzen. Das Init-Script für Gitit habe ich von dem Init-Script für Deluge erstellt.

Es besteht aus zwei Dateien:

  • /etc/default/gititd
  • /etc/init.d/gititd

Gitit User

Da man ein Service wenn möglich nicht als root laufen lassen sollte, sollte man einen eigenen User für Gitit erstellen.

/etc/default/gititd

Die Datei stellt Standardvariables in einem zentralen Platz zur Verfügung, die von dem Init-Script benutzt werden.

/etc/init.d/gititd

Dies ist das Init-Script.

Automatischer Start

Der Service kann jetzt per Befehl /etc/init.d/gititd start gestartet werden. Damit der Service automatisch gestartet werden soll muss er in das Init-System eingetragen werden. Dies kann ermöglicht werden mit dem update-rc.d Befehl. Danach wird der _Gitit_-Service als Daemon beim Systemstart gestartet.

Unterstützte Exportformate

  • LaTeX
  • ConTeXt
  • Texinfo
  • reST
  • Markdown
  • Plain text
  • MediaWiki
  • Org-mode
  • Textile
  • AsciiDoc
  • Man page
  • DocBook
  • DZSlides
  • Slidy
  • S5
  • EPUB
  • ODT
  • Docx
  • RTF
  • PDF (mit pdflatex)

Robo Bee Introduktion


Services

Ein Linuxserver hat mehrere sogenannte Services, die jeweils eine Aufgabe auf dem Server erledigen. Die Services kann man in Kategorien einordnen, wie z.B. Netzwerk, Firewall, DNS, Mail, Web, usw. Mehrere Implementierungen können diese Services zur Verfügung stellen. BIND ist der wohl am meisten bekannter DNS Server, aber als Alternative steht auch MaraDNS zur Verfügung. Ebenso der wohl am meisten bekannter Mail Server Postfix aber auch hier gibt es Alternativen, wie z.B. Qmail Normalweise wird nur eine Implementierung benutzt die den Service auf einem Server zur Verfügung stellt. Die Implementierungen können frei ausgetauscht werden sofern sie den jeweiligen Standard folgen die in den jeweiligen RFC definiert ist.

Das Problem dass Robo Bee zu lösen versucht ist es dass diese Implementierungen alle eine unterschiedliche Konfiguration benötigen. Robo Bee verallgemeinert die Konfiguration so dass man für die verschiedene Implementierungen die gleiche Konfiguration verwenden kann und so die Freiheit erlangt eine Implementierung für eine andere auszutauschen. In diesem Artikel stelle ich eine kurze Einführung in die Konfiguration von Robo Bee vor.

Robo Bee selbst ist in Java implementiert, wobei ich die Programmiersprache Groovy für die Konfiguration gewählt habe. Für jeden der einzelnen Services wird eine Groovy Script Datei erstellt.

Übersicht über einige der RFCs

Service RFC Seite
DNS 1035 http://www.ietf.org/rfc/rfc1035.txt
SMTP 5321 http://tools.ietf.org/html/rfc5321
IMAP 3501 http://tools.ietf.org/html/rfc3501

Hostname und Hosts

Setzt den Hostnamen und die Liste der Hosts für den Server.

Dhclient

Der DHCP Client ermöglicht die Zuweisung der Netzwerkkonfiguration an Clients durch einen Server. Der Client wird benutzt um z.B. ein DNS-Server zuzuweisen.

Die kurze Konfiguration wird die DNS-Server Anfrage aus der Liste der Anfragen entfernen und den DNS-Server “127.0.0.1″ voranstellen.

Datenbank

Ein Datenbank Service stellt Daten in einer Datenbank zur Verfügung. Bekannte Beispiele für Datenbank Server sind -MySQL -PostgreSQL -HSQLDB Eine Datenbank besteht aus verschiedenen Datenbanken zu denen verschiedene Benutzer Zugriff haben.

Das Konfigurationsscript erstellt die gelisteten Datenbanken und die Benutzer und gibt den Benutzern Zugriff auf die Datenbanken. Man braucht nur noch zu konfigurieren welche der Datenbankserver Robo Bee konfigurieren soll.

Web Server

Als weiteres Beispiel eine Konfiguration die einen Apache Web Server konfiguriert und eine WordPress Installation konfiguriert. WordPress wird von der offizielle Seite heruntergeladen, zusammen mit den gelisteten Plugins und Themes. Es werden die alternativen Ports 8080, 8090 und 8092 benutzt, weil der Apache Web Server zusammen mit einem Nginx Proxy benutzt wird.

Weitere Services

Weitere Services die Konfiguriert werden können sind:

  • DNS
  • Firewall
  • Web Proxy
  • Mail
  • Remote Access
  • Security

Kommentare sind willkommen falls die Neugier geweckt ist. Ich werde später eine eigene Seite für Robo Bee erstellen um das Projekt zu Dokumentieren und unter der AGPL veröffentlichen.

Neue Blog Site


Willkommen zu meiner neuen Blog Webseite basierend auf WordPress 3.8. Die Webseite wird euch präsentiert von einem Ubuntu 12.04 LTS Linuxserver. Ich benutze den freien Webserver Apache 2.2 um WordPress 3.8 zu präsentieren, der hinter einem Nginx 1.4 Proxy sitzt. Der Proxy wird benutzt um statische Inhalte und Seiten zu zwischenzuspeichern und so schneller dem Besucher präsentieren zu können. Die neue Seite hat ein aktualisierten Lebenslauf, meine Auszeichnungen und meine Reisen als OpenStreetMap Karte.

Um einen Linuxserver zu konfigurieren habe ich meine eigenes Konfigurationsmanagementsoftware geschrieben: Robo Bee. Die Software ist ähnlich des Puppet Projektes, allerdings mit anderen Zielen und Philosophie. Die Zielen und Philosophie von meinem Projekt Robo Bee ist es einen vollständigen Linuxserver zu konfigurieren für einen Benutzer, der nur sehr wenig Wissen und Erfahrungen mitbringen. Die Methode von Robo Bee ist es dass der Benutzer sagt was er möchte und nicht beschreiben muss wie man die Services konfigurieren muss. Als Beispiel ist diese Webseite; ich sage ich will a) eine Webseite die WordPress präsentieren soll mit einem b) Cache-Proxy und einem c) E-Mail Server um E-Mails versenden zu können. Robo Bee installiert alle Services und konfiguriert wie gewünscht, das Ergebnis kann man an dieser Seite sehen. Neugierig auf Robo Bee? Ich werde mein Projekt zu einem späteren Zeitpunkt präsentieren.