Uninteressantes von einem Anwendungsentwickler aus Linse
 

Beiträge mit dem Tag "Programmieren"

 

Die neusten Blog Einträge

 
Seite 1 von 7

Gitolite, Gitweb und private Repositories

Kategorie "Linux" Linux  Verfasst am 26.03.2012 22:29 26.03.2012 22:29  0 Kommentare 0 Kommentare  

Mit Gitolite erweitert man Git um ein Rechtesystem. Man kann so jedem Benutzer auf einzelne Repos oder Branches Lese- oder Schreibrechte geben. Gitolite schreibt automatisch die Datei projects.list, welche Gitweb verwendet um die öffentlichen Repositories aufzulisten.

In Gitoliste wird dies über den "eingebauten Benutzer" gitweb gesteuert.

repo extdbeditor scripts testing
    R = gitweb

Alle anderen Repos werden korrekt ausgeblendet. Allerdings kann man durch einfach Manipulation der URL private Repos anzeigen lassen, sofern man den Namen kennt.

Folgende Option in der gitweb.conf schafft Abhilfe:

$strict_export = true;

Nun wird bei privaten Repos korrekt "Project not found" angezeigt.
Have fun. ;)

 

Schnipseldatenbank zieht nach Git um

Kategorie "Allgemein" Allgemein  Verfasst am 26.03.2012 21:58 26.03.2012 21:58  0 Kommentare 0 Kommentare  

Am Wochenende habe ich mir einen Git Server eingerichtet und werde nun Step-by-Step alle Schnipsel in ein Repository umziehen. Auch die Scripte von meiner Stuff-Seite werden bei Gelegenheit in das Git aufgenommen.

So kann man unkompliziert sehen, was in letzter Zeit dazu gekommen ist und sogar RSS Feeds abonnieren.

URL: http://gitweb.anwendungsentwickler.ws

Das Bild ist übrigens von azizash, gefunden auf deviantart.
Vielen Dank dafür. :)

 

ExtJS Gridpanel - Undokumentierte Features

Kategorie "Programmieren" Programmieren  Verfasst am 11.03.2012 21:51 11.03.2012 21:51  0 Kommentare 0 Kommentare  

Ext GridpanelEinige Features im ExtJS Gridpanel scheinen noch so neu zu sein, das sie nicht einmal dokumentiert sind.

Beispielsweise gibt es für eine Gridpanel Zelle Events um einen Rechtsklick oder einen Doppelklick abzufragen. Die Besonderheit ist hierbei, dass der Rechtsklick in der viewConfig definiert werden muss, der Doppelklick aber nicht.

Für Zeilennummern in einem Gridpanel muss man einfach nur eine Instanz der Klasse RowNumerer in der Spaltendefinition hinzufügen. Zu beachten ist hier, dass die Zeilennummern im Index mitgezählt werden. Die erste "echte" Spalte hat also nicht mehr Index 0, sondern 1.

 
Rechtsklick oder Doppelklick auf eine Zelle

listeners: {
   celldblclick: function(view, cell, cellIndex, record, row, rowIndex, event) {
   }
},
viewConfig: {
   listeners: {
      cellcontextmenu: function(view, cell, cellIndex, record, row, rowIndex, event) {
      }
   }
},

Gridpanel mit Zeilennummern

columns: [
   new Ext.grid.RowNumberer(),
   {
      header:'FooBar',
      dataIndex:'foobar'
   }
]

ExtJS ist eine tolle Erfindung. :)

 

28c3: Die r0ket

Kategorie "Hard- und Software" Hard- und Software  Verfasst am 03.01.2012 03:01 03.01.2012 03:01  2 Kommentare 2 Kommentare  

Die r0ket ist ein kleiner Microcontroller mit LCD Display. Sie wurde auf dem Chaos Communication Camp 2011 und auf dem 28c3 verteilt. Über die mitgelieferte Firmware lassen sich kleine Programme starten, die Spielereien wie Tetris, Doodle Jump, Space Invaders oder Pong erlauben.

Die Mini-C-Programme werden fertig kompiliert auf dem 500KB großen Flash Speicher abgelegt, der ganz einfach als USB Stick an den PC angeschlossen werden kann. Über den Micro USB Port wird auch der Akku auf der Rückseite der r0ket geladen.

Einige meiner C-Programme gibt es in einer Evernote Notiz. Dabei bitte beachten das dies die ersten Feldversuche mit C von mir sind. Somit könnten sich im Quelltext noch einige Patzer verstecken. ;)

Zusätzlich kann die r0ket mit den m0dul Ports um weitere Hardware erweitert werden. Zum Beispiel die r0ket flame. Außerdem können die r0kets untereinander mit einem RF kommunizieren, was Multiplayer Games, Chats, Dateien tauschen, und andere interessante Spielereien ermöglicht. :)

Weitere Informationen über die Hardware gibt es im r0ket Wiki.

r0ket Features

Weitere Links: Erster Einstieg, Eigene Programme schreibenFarbdisplays für die r0ket

 

ADO.NET und Views in MS SQL

Kategorie "Microsoft .NET" Microsoft .NET  Verfasst am 14.12.2011 19:46 14.12.2011 19:46  0 Kommentare 0 Kommentare  

Nach langer Zeit mal wieder ein Kommentar von mir. :)

In meinem neuen Job habe ich mittlerweile viel mit Microsoft Produkten wie SQL Server und Visual C# zu tun. Ich muss sagen, dass es nicht annähernd so schlimm ist, wie die meisten Programmierer die ich so kenne immer sagen. Es macht schon fast Spaß. ;)

Heute stieß ich aber auf ein Problem, welches so richtig zum kotzen war.

Serverseitig setzen wir in einer größeren Server Applikation ADO.Net ein, was eine Abstraktionsebene für den Zugriff auf Datenbanken bereit stellt. Alle Tabellen stehen im Programmcode als Objekt bereit, sodass man auf "echte" SQL Queries in 99% der Fälle verzichten kann.

Über einen Wizard kann man diese Objekte automatisch erzeugen lassen. Man muss hier eigentlich nichts von Hand machen. Problematisch wird es hier, wenn man auf komplizierte Views zugreifen will. Denn ADO.Net verlangt in jeder Tabelle/View einen eindeutigen Primärschlüssel.

In einem komplizierten View mit GROUP BY, DISTINCT oder Subqueries findet ADO.Net keinen Primärschlüssel mehr und verweigert das Erzeugen der Objekte. Tja... Und dann steht man da... *grrr*

Abhilfe schafft hier ein kleiner Hack, der einen Primärschlüssel "ercheatet". Dadurch das man den bei Views sowieso nicht braucht, ist das aber wurscht. ;) Folgendes setzt man als Spalte in das View ein:

ISNULL(CAST(
   CASE ROW_NUMBER() OVER (ORDER BY columnNames)
      WHEN ROW_NUMBER() OVER (ORDER BY columnNames) THEN 
      ROW_NUMBER() OVER (ORDER BY columnNames)  
   ELSE 0  
END AS int), 0) AS ID

Der SQL Schnipsel erzeugt eine Spalte mit einer fortlaufenden Nummer, die ADO.Net lustigerweise als Primary Key annimmt. Wieso das so ist: Keine Ahnung. Ich war einfach froh mit einer laufender Server Applikation im Keller nach Hause fahren zu dürfen. ;)

Die Tage wird es bestimmt noch mehr zu .NET und anderen Microsoft-"Verbrechen" geben.
Seid gespannt. :)

 

Datenbankloses Galerie Script [1. Update]

Kategorie "Projekte" Projekte  Verfasst am 30.10.2011 18:03 30.10.2011 18:03  3 Galeriebilder 3 Galeriebilder  4 Kommentare 4 Kommentare  

Als kleines Tagesprojekt habe ich Gestern basierend auf meinem Mini-MVC-Framework ein simples Galerie Script welches komplett ohne Datenbanken auskommt entwickelt.

Man lädt die Bilder einfach direkt von der Kamera in einen Unterordner. Beim ersten Aufruf der Galerie erzeugt das Script automatisch Thumbnails und Listet die Dateien dann auf.

Zur schöneren Darstellung dient eine Portierung der Lightbox 2 auf JQuery.

Übersicht aller GalerienThumbnailsLightbox

Der Quelltext des Script kann bereits unter http://stuff.fiae.ws/php/galleryscript/ angeschaut werden. Bis es ein Download Paket gibt dauert es aber noch ein wenig. Ich bin mir noch nicht sicher ob das Script fehlerfrei ist. Bitte beachte das alle Bestandteile des Quelltextes die von mir entwickelt wurden unter der selben Lizenz stehen wie auch dieser Blog stehen!

Eine Livedemo gibt es unter http://g.anwendungsentwickler.ws/.

Ich würde mich sehr über ein bisschen Kritik freuen.
So kann das Script nur besser werden. ;)

Changelog

Release 1.0 - Diverse Bugfixes (Download)
Die Fehlerausgabe wurde verbessert. Außerdem funktioniert nun auch das Thumbnail Erstellen bei PNG-Dateien. Vielen Dank an Patschi fürs testen. ;)

 

[Netbeans] "Fat" JAR-Archive - Abhängigkeiten mit packen

Kategorie "Programmieren" Programmieren  Verfasst am 25.08.2011 12:41 25.08.2011 12:41  1 Galeriebild 1 Galeriebild  3 Kommentare 3 Kommentare  

Netbeans bietet auf GUI Ebene keine Möglichkeit im Projekt verknüpfte JAR Libarys beim Build des Projektes mit in das JAR Archiv zu packen, sodass man alles was man für das Programm benötigt in einer Datei hat.

Standardmäßig wird im Projektunterordner dist/ immer ein Ordner lib/ angelegt, wo alle benötigten Libarys separat abgelegt werden.  

Um das zu ändern, muss man ein wenig Hand anlegen und die build.xml im Projektverzeichnis bearbeiten. Dazu verwendet man einfach das File-View, welches man unter Window » Files finden kann. Die build.xml kann dann einfach mit Netbeans geöffnet werden.

Nun muss am Ende der build.xml vor dem </project>-Tag folgendes eingefügt werden:

<target name="-unjar-and-copy-lib-jars">
   <unjar dest="${build.classes.dir}">
      <fileset dir="lib">
         <include name="**/*.jar"/>
      </fileset>
      <patternset>
         <exclude name="META-INF/**"/>
         <exclude name="/*"/>
      </patternset>
   </unjar>
</target>

<target depends="init,compile,-pre-pre-jar,-pre-jar,-unjar-and-copy-lib-jars" name="fat-jar">
   <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
   <jar destfile="${dist.jar}">
      <fileset dir="${build.classes.dir}"/>
      <manifest>
         <attribute name="Main-Class" value="${main.class}"/>
      </manifest>
   </jar>
   <echo>To run this application from the command line without Ant, try:</echo>
   <property location="${dist.jar}" name="dist.jar.resolved"/>
   <echo>java -jar "${dist.jar.resolved}"</echo>
</target>

<target depends="clean,fat-jar" name="clean-and-fat-jar"/>

Wie in Zeile 3 des Schnipsels festgelegt, müssen nun alle benötigten Libarys im Unterordner lib/ des Projektes abgelegt werden. Danach noch eventuell die Verknüpfung der Libs innerhalb des Projektes (via GUI, Libaries » Add JAR/Folder...) ändern.

Wenn man nun einen Rechtklick auf die build.xml macht, sollte man unter Run Target » Other Targets den Menüpunkt fat-jar finden. Genau das Run Target muss ausgeführt werden.

Run Target

Wenn man nun das JAR-Archiv, was sich in dist/ befindet, in einen anderen Ordner verschiebt, sollte es trotzdem noch lauffähig sein. :)

Ich find es sehr merkwürdig das Netbeans dieses Feature nicht auf GUI-Ebene mitbringt und finde, dass Oracle da dringend nacharbeiten muss!

via joshuaborn.info

 

PHP5, Debian Squeeze und $_ENV

Kategorie "Programmieren" Programmieren  Verfasst am 15.06.2011 13:32 15.06.2011 13:32  2 Kommentare 2 Kommentare  

Gerade habe ich php5-cgi auf einem frischen Debian Squeeze System installiert. Das Script was ich damit ausführen wollte, benötigt als Parameter eine Environment Variable. Nur wurde die nicht gesetzt. Das komplette $_ENV Array war leer.

Abhilfe schafft die Option variables_order in der entsprechenden php.ini.

/etc/php5/cli/php.ini

variables_order = "EGPCS" # (ENV, GET, POST, COOKIE, SESSION)

Das "E" am Anfang beschreibt, dass auch $_ENV gefüllt werden soll. Startet man nun das PHP Script funktioniert wieder alles. ;)

Beispielaufruf

network_id="iz-smart" php -f child.php

Innerhalb des Script gibt es dann ein Arrayfeld mit dem Namen "network_id" in $_ENV.

 

ASCII Tabelle mit PHP generieren

Kategorie "Job" Job  Verfasst am 11.02.2011 14:01 11.02.2011 14:01  0 Kommentare 0 Kommentare  

Letzte Woche habe ich für meinen Dockstar Keylistener eine Klasse gebaut, die eine ASCII Tabelle generiert. In der Tabelle wird dann eine Übersicht aller Befehle angezeigt.

+---+----+----+----+----+----+
|   | a  | b  | c  | d  | e  |
+---+----+----+----+----+----+
| 1 | 1a | 1b | 1c | 1d | 1e |
| 2 | 2a | 2b | 2c | 2d | 2e |
| 3 | 3a | 3b | 3c | 3d | 3e |
| 4 | 4a | 4b | 4c | 4d | 4e |
| 5 | 5a | 5b | 5c | 5d | 5e |
+---+----+----+----+----+----+

Das Script kann in meiner Schnipseldatenbank geladen werden.

Weitere ASCII Klassen
ASCII Tabelle: http://snippets.sim4000.de/show/40/
ASCII Progressbar:  http://snippets.sim4000.de/show/32/
ASCII Text Generator: http://snippets.sim4000.de/show/31/

Seite 1 von 7

Tag Cloud

28c3   3D   ASCII   Akismet   Allgemein   Animation   Apache   Arbeit   Arch Linux   Archos 5   Asterix & Obelix   Audio   Auto   BOINC   Bash   Bitlbee   Blog v2.0   Bluetooth   Bodenwerder   Bouncer (BNC)   Bundestagswahl 09   Bücher   CCC   Chromium   Comics   Computerspiele   Content Managment System   Creative Commons   CyanogenMod   Cybton   DAU Alarm   DLRG   Datenbanken   Datenschutz   Debian   Deutsches Rotes Kreuz   Domains   Drucken   EZFlash Vi   Eclipse   Eingabegeräte   Ekelhaft   Email   Essen   Ethernet   Evernote   ExtJS   Facebook   Fail2Ban   Fanartikel   Feiertage   Fernsehn   Firefox   Flash   Flattr   Fotografie   Fritz!Box   Fun   Fußball   GEZ   GPS   Gameboy Advance   Games   Git   Gnome   Google   Google Android   Google Android Hacking   Google+   Grafiken   Grand Theft Auto IV   HTC   HTC Desire Z   HTML   Handhelds   Handy   Handy Apps   Hardware   Hardware Hacking   Homebrew   ICQ   IRC   ImapFilter   Internet   Internet Explorer   Internet Relay Chat (IRC)   Internetzensur   Java   JavaScript   JeeGeek   Justiz   Kino   Konzert   Kultur   Kumpels   Legend of Zelda   Linux   Linux Mint   MS SQL Server   Marilyn Manson   Microsoft .NET   Minecraft   Mobile   Mozilla   Music Player Daemon (MPD)   Musik   MySQL   NPD   Natur   Netbeans   Netbooks   Netzwerk   Nintendo   Nintendo DS   Nintendo DSi   Nintendo Wii   Notebook   OpenOffice   OpenOffice Impress   OpenWRT   PC Hardware   PHP   Pandora   Papierkorb   Patentrecht   Pidgin   Piratenpartei   Piwik   Politik   Privat   Programmieren   Projekte   PulseAudio   QR-Code   RSS   Rammstein   Root   SD-Karte   SOGo Scalable OpenGroupware   SSH   SVN   Schlüsselband   Schule   Seagate Freeagent Dockstar   Server   Serversicherheit   Sesamstraße   Shellscripting   Shopping   Shortlinker   Skype   Social Networks   Software   Spam   Spenden   Spongebob   Straßenverkehr   Support   TV   Tablets   Technik   Textverarbeitung   Thunderbird   Truecrypt   Twitter   Typo3   UMTS   USA   USB   Ubuntu   Underground Shopping   Urheberrecht   Urlaub   VMWare   VNC   Vereine   Verkaufen   Verstärker   Videorecorder   Viren und andere Schädlinge   Virtual Box   Vorratsdatenspeicherung   WLAN   Wahlen   Webspace   Wehrdienst   Weserbergland   Willkommen   Windows   Windows 7   X11   XFCE   XML   XStylus   Zeitschriften   Zensur   bind9   ffmpeg   netcup   openSSL   r0ket   sim4000.de   vim   Überwachung   Überwachungsstaat   üäx.de   1337