Subcribe via RSS

Eclipse Autocomplete für CodeIgniter

Juli 24th, 2010 | No Comments | Posted in Coding

Ich verwende für so ziemlich alle meine Programmierarbeiten die Eclipse IDE. Leider hatte ich bisher noch keinen Weg gekannt das Autocomplete für CodeIgniter-Projekte zu aktivieren. Die Dokumentation von CodeIgniter ist zwar richtig gut, dennoch kostet das Nachschlagen seltener verwendeter Methoden doch immer recht viel Zeit. Ein Autocomplete ist für die CodeIgniter Methoden ist daher eine echte Erleichterung. Damian Gostomski erklärt in diesem Post wie es geht. Auch wenn man das Projekt cleanen muss und Eclipse neustarten muss – irgendwann funktioniert es. Also am besten einfach mal austesten:

1) In system/codeigniter/Base5.php (bzw. Base4.php) am Ende des Konstruktors den folgenden Code einbinden:


if(false) { // eclipse autocomplete
$agent = new CI_User_agent();
$benchmark = new CI_Benchmark();
$calendar = new CI_Calendar();
$cart = new CI_Cart();
$config = new CI_Config();
$db = new CI_DB_active_record();
$email = new CI_Email();
$encrypt = new CI_Encrypt();
$form_validation = new CI_Form_validation();
$ftp = new CI_FTP();
$image_lib = new CI_Image_lib();
$input = new CI_Input();
$lang = new CI_Language();
$output = new CI_Output();
$pagination = new CI_Pagination();
$parser = new CI_Parser();
$session = new CI_Session();
$table = new CI_Table();
$trackback = new CI_Trackback();
$typography = new CI_Typography();
$unit = new CI_Unit_test();
$upload = new CI_Upload();
$uri = new CI_URI();
$xmlrpc = new CI_Xmlrpc();
$xmlrpcs = new CI_Xmlrpcs();
$zip = new CI_Zip();
}

2) Project -> clean
3) Eclipse neu starten
4) falls das Autocomplete nicht erscheint den Shortcut Strg + Leer testen

Tags: ,

Safe Mode auf der Kommandozeile

März 26th, 2010 | No Comments | Posted in Coding

Ich hatte gerade auf der Konsole (cli) auf einem Server den Fehler “set_time_limit(): Cannot set time limit in safe mode in …”, obwohl ich laut phpinfo() den Safe Mode ausgeschaltet hatte. Nach anfänglicher Verwunderung habe ich festgestellt, dass zwei verschiedene php.inis verwendet werden; eine für den Apache, eine für die Kommandozeile.

Unter Suse 10 findet man diese beispielsweise unter

Apache:
/etc/php5/apache2/php.ini

CMD:
/etc/php5/cli/php.ini

Tags: ,

JavaScript Console Wrapper

Januar 31st, 2010 | No Comments | Posted in JavaScript

Die alert()-function benutzt hoffentlich niemand mehr zum Debuggen von JavaScript. Dafür sind Tools wie Firebug viel zu gut und komfortabel, denn sie besitzen unter anderem eine Konsole, über die Log und Debug-Ausgaben getätigt werden können. Problematisch wird das nur, wenn Testbrowser keine Konsole besitzen, oder die console-Aufrufe vergessen werden. Dann nämlich werden Fehler geworfen und der JavaScript-Code nicht weiter ausgeführt.

Abhilfe schaffen hier sogenannte Console-Wrapper. Diese ersetzen die console-Calls, falls keine Konsole vorhanden ist. Die Console-Wrapper von Paul Irish oder Ben Alman sind hier besonders zu erwähnen, da diese die console-Calls speichern. Hängt man dann etwa Firebug-Lite an die Seite an, werden die gespeicherten Log-Ausgaben darin ausgegeben.

Hier der Link zur minified-Version des Console-Wrappers von Ben Alman, den man grundsätzlich in jedes JS-Projekt einbinden sollte um Fehler mit der Konsole zu vermeiden.

CodeIgniter Validation-Library Probleme mit PHP 4

Oktober 22nd, 2009 | No Comments | Posted in Coding

Die CodeIgniter-Validation-Library zum Überprüfen von Formularen hat mit PHP 4 ein Problem.

Wer die Fehlermeldung

Message: Undefined property: ...

in seiner View erhält kann sich mit

$data['this'] = $this;

im Controller behelfen. So wird das $this in der View erreichbar und somit sind auch die Validation-Values zugreifbar.

Tags: , ,

MySQL Tabelle kopieren / synchronisieren

August 12th, 2009 | No Comments | Posted in Coding

Der einfachste Weg eine Datenbank anhand einer anderen zu synchronisieren ist, sie einfach zu kopieren. Das kann man über den Umweg eines Dumps machen, oder direkt über eine Pipe. Zwar handelt es sich dabei nicht um eine echte Synchronisation, da alle Daten gelöscht und neu erstellt werden, aber dieses Vorgehen funktioniert schnell und unkompliziert.


mysqldump -al --user=[username1] --password=[pw1] -h [host1] --add-drop-table [db_name1] [table] | mysql -h [host2] --user=[username2] --password=[pw2] [db_name2]

Alles mit [*] muss natürlich entsprechend ersetzt werden (auch die Klammern entfernen!).

Tags: , , ,

JQuery CSS Reset Plugin

Juli 22nd, 2009 | No Comments | Posted in Coding
  • summary: plugin resets css styles of given element
  • version: 0.1
  • date: 09.07.22

If you’re coding a widget which is not included in the page via an iframe you have to cope with a lot of different styles that are given by the css of the page. Using a lot of inline styles for your elements is most of the time not an option, because you need some easy injectable html-code for the users. So styling your widget with JavaScript is the best option. And therefore you will maybe like to reset the css for your elements. And that’s exactly what the beResetCSS-JQuery-Plugin does.

Download

download beResetCSS


Download BeResetCSS v0.1 as zip

Usage

$(document).ready(function(){
	$("YourElement").beResetCSS();
});

The reset-CSS is based on the suggestion from meyerweb.

Tags: , ,

Mischen von Query-Strings und URL-Segmenten

Juli 21st, 2009 | No Comments | Posted in Coding

CodeIgniter ist auf saubere URLs ausgelegt. Das heißt, dass Daten entweder per post durch Formulare oder per URL-Segment übergeben werden. Ein Zugriff auf das $_GET-Array ist in der Standardkonfiguration nicht vorgesehen. Dennoch kann es nötig sein eben dieses $_GET-Array zu nutzen. Eine Suchfunktion kann zum Beispiel ein Grund dafür sein. Zwar könnte der Suchstring auch mit post aus dem Formular übergeben werden, jedoch gäbe es keine Ergebnis-URLs, die z.B. vom Benutzer kopiert werden könnten. Entweder man kodiert den Suchstring mit base64 und nutzt diesen dann als URL Segment, so dass eindeutige URLs entstehen für alle Suchanfragen, allerdings ist diese URL dann natürlich nicht mehr lesbar. Will man lesbare URLs, muss man zwangsläufig auf die Get-Methode zurückgreifen.

Dazu setzt man in system/application/config/config.php den Wert von uri_protocol von AUTO auf PATH_INFO.

$config['uri_protocol']	= "PATH_INFO";

In den Controllern, in denen nun das $_GET-Array genutzt werden soll muss folgende Zeile in den Konstruktor:

parse_str($_SERVER['QUERY_STRING'],$_GET);

Damit kann dann in diesen Controllern ganz normal auf $_GET zugegriffen werden. Dennoch bleiben auch die URL-Segmente aktiviert und können weiter genutzt werden.

Tags: , ,

CodeIgniter error reporting / logging

Juli 20th, 2009 | No Comments | Posted in Coding

CodeIgniter wurde so entwickelt, dass es auf möglichst vielen Servern ohne Probleme läuft. Daher wird die Serverumgebung als unbekannt vorausgesetzt. Einstellungen wie display_error werden daher nicht beachtet. Vielmehr wird bei jedem Seitenaufruf die PHP-Funktion error_reporting aufgerufen. Wer die Einstellungen von error_reporting aber in der config.php sucht, wird vergeblich suchen. Eingestellt wird das error_reporting in der index.php im root-Verzeichnis.

Für den Test- und Entwicklungsbetrieb eignet sich

error_reporting(E_ALL);

Für den Produktivbetrieb, sollte diese Einstellung aber auf jeden Fall in

error_reporting(0);

geändert werden. Generell sollten zwar so wenig Fehler wie möglich auftreten, leider gibt es aber doch immer wieder Unvorhersehbarkeiten, die durch das Error Reporting sensible Daten aufdecken könnten.

Allerdings ist es allein mit dem Error Reporting noch nicht getan, denn Datenbankfehler werden dennoch angezeigt. Um auch diese im Produktivbetrieb auszuschalten muss in system/application/database.php

$db['default']['db_debug'] = TRUE;

in

$db['default']['db_debug'] = FALSE;

geändert werden.

Zwei einfache Handgriffe, die in jedem Fall zur Sicherheit der Applikation und des Servers beitragen und niemals vergessen werden sollten. Am besten aktiviert man, wenn man schon dabei ist in system/application/config.php das Fehler Logging. Dazu wird

$config['log_threshold'] = 0;

auf

$config['log_threshold'] = 1;

gesetzt. So werden alle aufgetretenen PHP-Fehler in system/logs/ geloggt.

Tags: , , ,

BeZoom Lighweight JQuery Zoom Plugin

Juli 20th, 2009 | 9 Comments | Posted in Coding

BeZoom is a simple and lightweight zoom plugin for the wonderful JQuery framework.

Update / Changelog

09.07.29 v0.11

  • fixed overlow:hidden bug in IE6 & 7 when container has position:absolute;
  • changed method to calculate relative mouse position to work in IE
  • chaining of mouseenter, mouseleave and mousemove didn’t work in IE
  • Plugin now works in Opera >= 9, Firefox >= 2, IE >= 7 & Chrome

Demo

To view this script in action simply hover of the following image:

Download

download BeZoom

Download BeZoom v0.11 as zip

Usage

$(document).ready(function(){
	$(".zoom").bezoom();
});

HTML

The plugins works best with images with the same proportions.


<a href="img_big.jpg" class="zoom" title="Your Title">
    <img src="img_small.jpg">
</a>

Options

It’s not neccessary to link directly to the big image. You can also you the rel-Attribute for the preview-image or any other attribute.

$(document).ready(function(){
	var options = {imgSource = 'rel'};
	$(".zoom").bezoom();
});

<a href="some_page.html" rel="img_big.jpg" class="zoom" title="Your Title">
    <img src="img_small.jpg">
</a>

Options Overview

  • Option
    Default Value
    Description
  • marginLeft
    10
    left side margin
  • identifier
    bezoom
    id that is used internally for the bezoom plugin; should not need to be changed as long as you don’t use an “bezoom”-id on your own page
  • height
    200
    height of preview-container; height of title-container doesn’t count
  • width
    200
    width of preview-container
  • titleSource
    title
    Attribute that contains the title
  • imgSource
    href
    Attribute that contains the url of the preview-image
  • bgColor
    #5398EE
    background-color of title
  • color
    #ffffff
    font-color of title
  • size
    0.8em
    font-size of title; you can also use px instead of em

Alternatives

With jqzoom there is a well known alternative to BeZoom, I used some time. But jqzoom in my opinion is much to complicated and confusing. Changing something in this 1000 liner isn’t fun at all. After all jqzoom seems to be a mashup of prototip and lightview.

So I created BeZoom to suit my personal needs. It’s light and it’s easy to use.

If you are using BeZoom let me know it and I’m going to develop some more features for it. If you find any bugs I’d appreciate a short comment so I can fix it.

Tags: , ,

Codeigniter imagettftext() Problem – Could not read font

Juni 23rd, 2009 | No Comments | Posted in Coding

Wer mit Codeigniter (1.7.1) und der PHP-Funktion imagettftext() versucht Text in ein Bild zu schreiben wird – zumindest wenn er eine XAMPP Umgebung unter Windows nutzt – auf seltsame Probleme stoßen.

Trotz korrektem Pfad zur integrierten Schrift, der texb.ttf, tritt nämlich die Fehlermeldung imagettftext: Could not read font auf. Da hilft kein experimentieren oder ändern des Pfades, es hilft nur eine neue Schriftart, denn offensichtlich ist diese Schriftart defekt oder funktioniert unter Windows nicht korrekt (unter Linux habe ich es noch nicht getestet). Massig coole Schriftarten gibt’s übrigens bei dafont. Die neue Schriftart sollte dann im dafür vorgesehenen Ordner system/fonts/ gespeichert werden.

Und hier nochmal ein kleines Snippet, das zeigt wie man dann mit der neuen Schriftart Texte in Bilder schreibt:

// Bild erzeugen, Farbe allokieren
$width = 400;
$height = 100;
$im = imagecreate($width, $height);
$background_color = ImageColorAllocate ($im, 255, 255, 255);
$text_color = ImageColorAllocate ($im, 0,0,0);
 
// schreiben
$text = 'TEXT';
$font_size=60;
$angle=0;
$x=30;
$y=80;
$font_path     = './system/fonts/neue_schriftart.ttf';
imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_path, $text);
 
// Bild ausgeben
header("Content-type: image/png");
ImagePNG ($im);
ImageDestroy($im);

Ich habe in diesem Fall ein png erstellt. Den Code umzubauen, so dass ein gif oder jpeg erzeugt wird, sollte aber kein Problem sein.

Tags: , , , ,