Beiträge gettagt mit Code-Snippets

[Qt] QThreads

Threads sind im Allgemeinen sehr nützlich, da man sehr schön zeitintensive Aufgaben auslagern kann. Leider sind sie aber genauso tückisch wie praktisch.

Einige Punkte die sich nach und nach herausgestellt sind und zu mindestens bei mir zum Erfolg geführt haben, sind diese :

  • Mutexe für kritische Funktionen verwenden
  • den Thread bei der Initialisierung starten und von “Außen” steuern

Qt Logo

Alles andere führte bei mir entwder zu einer blockierten GUI oder zu einem abnormalem Programmverhalten.

[Linux] Uptime umrechnen

Eigentlich sehr trivial, wenn man auf die Idee kommt. Da die vorgestellte Möglichkeit die Linux-uptime auszugeben nur die Sekunden seit dem Booten ausgibt müsste man diese natürlich noch umrechnen.Die meiner Meinung nach einfachste und eleganteste Variante ist einfach den Rest der Division zu ermitteln.Dabei wird der alte Modulo-Operator genutzt und jeweils der Quotient zur nächsten Einheit gebildet.

Kryptisch zusammen gebacken sieht das Ganze so aus :

uptime = getTickCount();
sprintf(sequence, "%ldh %ldm %lds", (uptime / 60 / 60 ) % 60,  (uptime / 60) % 60  , uptime % 60  );

Ein wenig länger, dafür aber übersichtlicher wäre dann wohl diese Variante :

uptime = getTickCount();
long hours = (uptime / 60 / 60 ) % 60;
long minutes = (uptime / 60 ) % 60;
long seconds = (uptime % 60);
sprintf(sequence, "%ldh %ldm %lds", hours , minutes  , seconds);

Letzteres ist sicherlich nicht am effektivsten was die Ressourcen angeht, unsigned short oder ähnliche Typen für die Variablen hätten es auch getan, aber so bleibt es übersichtlicher. Mir gefällt die erste Variante eh besser.

[Linux] Uptime mit C auslesen

Brauch man ja ab und an um sich ein Bild über die aktuelle Laufzeit des jeweiligen Systems zu machen oder um sich einzugestehen, dass man einfach zu lange vor der Kiste sitzt.

#include <stdio.h>
#include <sys/sysinfo.h>

long getTickCount() // Zeit seit dem Booten in Sekunden
{
 struct sysinfo si;
 if(sysinfo(&si) == 0) return si.uptime;
 else return -1L;
}

int main()
{
    printf("Uptime : %2.0f min",(getTickCount()/60.0));
    return 0;
}

Web-Interface für Torrent WebUI

Eigentlich ist es ja eher sinnlos, ein Webinterface für ein Webinterface zu schreiben, aber ab und an gibt es dann doch einen triftigen Grund dazu.

Zum Einen läuft Web-UI zwar auf einem beliebigen Port, jedoch ist der bei Uni-Netzwerken oder ähnlichen oft geblockt und man findet schwer bis gar nicht einen Port um darauf zuzugreifen.

Ein anderer Grund ist, dass auch wenn man die Seite erreicht, sie nicht gerade für mobile Geräte dimensioniert wurde. WebUI enthält sehr viele Grafiken und viel  Javascript.

Das sind 2 Faktoren, die für PDAs und Co sehr entscheidend sein können.

Naja und der mehr oder weniger triviale Grund, war dieses sogenannte uPSP, das in manchen PSP-Foren/-Blogs angepriesen wurde. Eigentlich keine schlechte Idee, aber auch nciht wirklich schwer und dazu auch noch relativ unsicher, denn wer weiss schon, was noch hinter dem Web-Interface von NameTaken33 so werkelt.

Mehr >

Sonderzeichen mit PHP ersetzen

Für Menschen die sich wahrlich Mühe geben Ihre Seite und deren Inhalt so valide wie möglich zu halten, gehört es ja bekanntlich zum guten Ton das als Charset UTF-8 benutzt wird.

Leider hat dieser Zeichensatz den Nachteil, dass Umlaut und Sonderzeichen mit sogenannten “named entities” dargestellt werden sollte, was scheinbar nicht jeden erreicht hat.

Da sowas auch mal gerne in News-Feeds der Fall ist, dem sei preg_replace wärmestens ermpfohlen. Darüber hinaus habe ich noch eine kleine aber feine Funktion für euch, mit der man die grundlegensten Umlaute sowie Sonderzeichen aus dem zu verarbeitenen Text fischen kann.

<?php
function convertUmlaute($text){
//DIE UMLAUTE WERDEN KONVERTIERT
$pattern1="/ä/";
$replace1="&#228;";
$text=preg_replace($pattern1,$replace1, $text);
$pattern2="/ö/";
$replace2="&#246;";
$text=preg_replace($pattern2,$replace2, $text);
$pattern3="/ü/";
$replace3="&#252;";
$text=preg_replace($pattern3,$replace3, $text);
$pattern1a="/Ä/";
$replace1a="&#196;";
$text=preg_replace($pattern1a,$replace1a, $text);
$pattern2a="/Ö/";
$replace2a="&#214;";
$text=preg_replace($pattern2a,$replace2a, $text)
$pattern3a="/Ü/";
$replace3a="&#220;";
$text=preg_replace($pattern3a,$replace3a, $text);
$pattern4="/ß/";
$replace4="&#xDF;";
$text=preg_replace($pattern4,$replace4, $text);
$pattern4="/&/";\r\n
$replace4="&#38;";\r\n
$text=preg_replace($pattern4,$replace4, $text);
return $text;
}
?>

Vielleicht nicht so elegant, wies sein könnte, aber es funktioniert und ist für morgens um halb 3 nicht ganz übel ;)

Mobil-Geräte mit PHP erkennen

Da ich momentan verstärkt mit Skriptsprachen rumhantiere (eigenes Web-Interface für µTorrent, Spielerreien mit GoogleMaps) und die ein oder andere Hilfsfunktion dabei benötige, fallen ab und an auch recht brauchbare Funktionen an.

Zwar habe ich bei manchen auch nur Google bemüht, aber wem ich die Suche ersparen kann, dem sei hier mit geholfen.

Diese Funktion diente im eigentlichen Sinn nur dazu mein PSP zu erkennen und das jeweilige Layout für Mobilgeräte wie PDAs und Palms zu laden.

<?php
function check_mobile() {
  $agents = array(
    'Windows CE', 'Pocket', 'Mobile',
    'Portable', 'Smartphone', 'SDA',
    'PDA', 'Handheld', 'Symbian',
    'WAP', 'Palm', 'Avantgo',
    'cHTML', 'BlackBerry', 'Opera Mini',
    'Nokia', 'PSP'
  );

  // Prüfen der Browserkennung
  for ($i=0; $i<count($agents); $i++) {
    if(isset($_SERVER["HTTP_USER_AGENT"]) && strpos($_SERVER["HTTP_USER_AGENT"], $agents[$i]) !== false)
      return true;
  }

  return false;
}
?>

Aufgerufen wird die Funktion natürlich folgendermaßen und kann auch gleich zur Entscheidung herangezogen werden :

<?php
if (check_mobile())
{
    echo "Mobil-Gerät";
}
else
{
    echo "Kein Mobil-Gerät";
}
?>

Joomla und phpBB Last Posts

Wer Joomla im Einsatz hat und nicht gerade auf JoomlaForum setzt und lieber phpBB einsetzen möchte, der wird schon oft nach einer Möglichkeit gesucht haben sicher die letzten Themen/Topics anzeigen zu lassen oder diese sogar als Menü-Element, oder joomlatypisch als "Module" einzubinden.

 

Natürlich gibt es da schon eine Komponente, jedoch (das ist meine aktuelle Kenntniss) muss phpBB im gleichen Root wie Joomla liegen und wird leider auch nur sporadisch weiterentwickelt.

 

Da ich Joomla leider nicht mehr einsetze und mittlerweile schon über ein Jahr auf Wordpress setze, kann ich das Module leider nicht testen. Wer es trotzdem wagen will, dem biete ich das Module als Download an.

Download Joomla Letzte Themen Version 0.2

Neues Madwifi Installationsskript Ubuntu 7.10

Um unter Linux ein Wlandevice mit einem Atheroschipsatz nutzen zu können stehen mittlerweile mehrere Möglichkeiten wie propietäre Treiber, aktuelles Treiber-Release von MadWifi oder das Subversion Repo von MadWifi zur Auswahl.

Propietäre Treiber allen flach, da man den Source nicht patchen kann und ein Betrieb im berüchtigten “Monitor-Mode” fallen dadurch aus. Das ist natürlich schade, denn gerade der interessiert ja am Meisten. ;) Seit Ubuntu 7.10 besteht allerdings die Problematik, dass die Treiber durch HAL nicht entladen werden können und nur “halbherzig” installiert werden.

Download : Madwifi Installations SkriptMadwifi Installations Skript

Mehr >

Windows Registry

Jeder der ab und an Programme schreibt und diese eventuell weitergeben möchte, der wird irgendwann vor einer Frage stehen.

“Wie speichere ich meine Daten, so das der Benutzer sie beim nächsten Start des Programms aufrufen kann!?”

Prinzipiell gibt es zwei Lösungswege, die auch in der Praxis eingesetzt werden.

Der erste Weg, wäre das Erstellen von Konfigurationsdateien, meist mit der Endung ini, die alle wichtigen Einstellungen enthalten. Dieser Weg hat natürlich den Vorteil, dass die Einstellungen schneller gesichert oder im Notfall auch von Hand durch einen Editor verändert werden können.

Mehr >

ATOM 0.3 parsen

Wie versprochen stelle ich nun den verwendeten Code zum Parsen vom ATOM 0.3 online. Genauso wie das Beispiel mit dem RSS-Feed, baut auch dieser Code auf das TinyXML-Projekt und ist dafür notwendig.

Der gepostete Quellcode sollte, entsprechende Kenntnisse vorrausgestzt, unter Windows und Linux laufen und die dem Archiv begefügte “feed.xml” parsen.
Mehr >

Get Adobe Flash playerPlugin by wpburn.com wordpress themes