Skip to content

Zend Framework - Automatisches setzen des "Canonical"-Tag

Einfach ein Plugin schreiben und im preDispatch nachfolgende Überprüfung implementieren.

if( ( stripos($request->getHttpHost(), 'www.') === false ) ) //automatically add the "canonical" tag if "www." is missing
{
$viewRenderer = Zend_Controller_Action_HelperBroker::
getStaticHelper('viewRenderer');
if( ( $viewRenderer->view === null ) ) //no view renderer initialized?
{
$viewRenderer->initView();
}
$view = $viewRenderer->view;
$view->headLink()->headLink(array('rel' => 'canonical',
'href' => $request->getScheme().':://www.'.
$request->getHttpHost().$request->getRequestUri()), 'PREPEND');
}
Übersetze nach en fr

drupal 6

Hinweise
_Valide Url des aktuellen Beitrags erhalten (auch wenn url_alias verwendet wird)
echo url($_GET['q'], array('absolute' => true));

_Ungeprüfte Url erhalten
echo request_uri();


Links
API reference
Benutzerhandbuch
Download & Extend
Drupal 6.x - Kleine Anleitung
Drupal Indonesia - Drupal-id.Org
GarfieldTech - tutorials and more
Drupal Modules
Globals
Drupal Tutorial Site<
Simpletest Tutorial (Drupal 6)
Tips for posting to the Drupal forums
einfachDrupal.com
Übersicht vorhandener Hooks
Übersicht vorhandener Themehooks

_block
Print a block in content area

_cck
Content Construction Kit (CCK)
Content Construction Kit Handbook
Working with content types and fields (Drupal 6 and earlier)

_contenttype
Content types
Drupal 6 Custom content type page theme

_database
Database abstraction layer

_doc
Doxygen and comment formatting conventions
Drupal 6: Websites entwickeln und ... - Google Bücher
General concepts

_form
Form API Quickstart Guide
Form generation
forms_api_reference

_module
Erfahrungen mit Drupal
Module developer's guide

_template ||theme
page.tpl.php
template_preprocess_page
Dynamic Theming in Drupal 6
Overview of theme files
Take control of your Drupal theme
Theme Garden | Drupal 6 Themes
view vars - page.tpl.php
Übersetze nach en fr

Netbeans ver-vi'ed

Der Fünfer ist bekanntlich ein wenig faul und nutzt deswegen für größere Projekte gern eine IDE.

Da er auf der anderen Seite vom Konzept des Vim überzeugt ist, tränten seine Augen - symbolisch geschrieben ;-) - als er über das Netbeans Plugin jvi gestolpert ist.

Mit jvi steuert sich Netbeans wie ein VI[m] und man fühlt sich einfach besser. Neben Vimperator somit eins der wichtigsten Anwendungserweiterungen :-D.
Übersetze nach en fr

Notepad++ und das komische Verhalten beim Tab-Dokumentenwechsel und verdeutschte Oberflächen

Mr. Abschnitt5 hatte vor kurzem wieder die Begegnung mit dem wunderbar leichtgewichtigen Windowseditor Notepad++. Gut, der Editor ist kein VI[m], aber er ist besser als nix und weitaus schneller geladen als eine IDE.

Da die letzte Version, mit der der Fünfer bekanntschaft gemacht hat, schon über einem Majorrelease her ist, hat sich unter der Haube vieles geändert. Wie man als Mensch so ist, finden nicht alle Änderungen anklang. Besonders im Bereich der Tab-Steuernug (Strg+Tab / Ctrl+Tab) gibt es eine Entwicklung, die nicht mit der fünferischen Denkweise überein zustimmen scheint.

Immer mehr Anwendungen führen einen "intelligente" Tabwechsel ein (Stichwort "MRU" / "Most Recently Used"), den der Schreiberling als verwirrend empfindet. Es passiert einfach nicht das was die Augen erwarten.

Es geht um folgendes Szenario.

Man hat mehr als zwei Dokumente offen (Beispiel: doc0 | doc1 | doc2). Des Weiteren hat man soeben doc0 geöffnet und hatte zuvor doc1 geöffnet.

Möchte man nun zum Dokument doc2 navigieren, benutzt man gewohnheitsgemäß (und hoffentlich auch streng der optischen Logik folgend) Strg+Shift+Tab. Mit diesem Steuerkommando möchte man einen Tab zurück springen. Da es sich bei der Tab-Anordnung um ein geschloßenes Band handelt folgt nach doc0 doc2 (der Vorgänger vom ersten Dokument ist das letzte Dokument). Dank MRU wird nun doc1 geöffnet, da es das zuletzt geöffnete Dokument ist. Schon das niederschreiben ist verwirrend, weswegen die Leser dem Schreiber hoffentlich sofort zustimmen, dass dies komisch ist *g*.

Alles im allen eine Geschmackssache (was empfindet ihr eigentlich als schöner?) und wenn man weiß wo man es ändern kann, ist dies auch nicht weiter tragisch. Nur deutet sich im vorherigen Satz bereits das Problem an, der Fünfer konnte im verdeutschten Programm einfach die Einstellung nicht finden.

Also hat er sich die Onlinehilfe geschnappt und ist ein wenig durch die Dokumentation gesurft. Zum Glück klappt die Suche im Englischen weitaus einfacher und so kam er von Switching between Documents, über MRU zum Document Switching und letztendlich zum Einstellungsort dieser ganzen Mechanik - Settings - Misc.

Dort angekommen, konnte der fünfige Schnitter die englischen Wörter schnell in die bewunderte Muttersprache umsetzen.

Mit einem Klick auf "Einstellungen->Optionen->Diverses" war er sich sicher, dass er an der richtigen Stelle angekommen ist. Nun startet die Suche und nach langen kreisenden Augenbewegungen wurde man letztendlich fündig (und hat sich hinterher gefragt warum man so lange dafür gebraucht hat ;-)). Bei "Dokumentenumschalter" gibt es den Punkt "Aktiviere MRU-Verhalten" - da der Fünfer eher ein "Tab-Wechsel" erwartet hat, haben es seine Augen wohl permanent gekonnt übersehen ;-).

Nachdem ihr euch durch diese lange Textpassage durchgewunden habt, kommen wir zu versprochenen Frage.

Nutzt ihr den Tabwechsel in verschiedenen Anwendungen? Wenn ja, was findet ihr logischer?
Übersetze nach en fr

Mysql - Datentypen


[Type] - [Use for] - [Size]
TINYINT - A very small integer - The signed range is –128 to 127. The unsigned range is 0 to 255.

SMALLINT - A small integer - The signed range is –32768 to 32767. The unsigned range is 0 to 65535

MEDIUMINT - A medium-size integer - The signed range is –8388608 to 8388607. The unsigned range is 0 to 16777215

INT or INTEGER - A normal-size integer - The signed range is –2147483648 to 2147483647. The unsigned range is 0 to 4294967295

BIGINT - A large integer - The signed range is –9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615

FLOAT - A small (single-precision) floating-point number. Cannot be unsigned - Ranges are –3.402823466E+38 to –1.175494351E-38, 0 and 1.175494351E-38 to 3.402823466E+38. If the number of Decimals is not set or <= 24 it is a single-precision floating point number

DOUBLE, DOUBLE PRECISION, REAL - A normal-size (double-precision) floating-point number. Cannot be unsigned - Ranges are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0 and 2.2250738585072014E-308 to 1.7976931348623157E+308. If the number of Decimals is not set or 25 <= Decimals <= 53 stands for a double-precision floating point number

DECIMAL, NUMERIC - An unpacked floating-point number. Cannot be unsigned - Behaves like a CHAR column: “unpacked” means the number is stored as a string, using one character for each digit of the value. The decimal point, and, for negative numbers, the ‘-‘ sign is not counted in Length. If Decimals is 0, values will have no decimal point or fractional part. The maximum range of DECIMAL values is the same as for DOUBLE, but the actual range for a given DECIMAL column may be constrained by the choice of Length and Decimals. If Decimals is left out it’s set to 0. If Length is left out it’s set to 10. Note that in MySQL 3.22 the Length includes the sign and the decimal point

DATE - A date - The supported range is ‘1000-01-01’ to ‘9999-12-31’. MySQL displays DATE values in ‘YYYY-MM-DD’ format

DATETIME - A date and time combination - The supported range is ‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’. MySQL displays DATETIME values in ‘YYYY-MM-DD HH:MM:SS’ format

TIMESTAMP - A timestamp - The range is ‘1970-01-01 00:00:00’ to sometime in the year 2037. MySQL displays TIMESTAMP values in YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD or YYMMDD format, depending on whether M is 14 (or missing), 12, 8 or 6, but allows you to assign values to TIMESTAMP columns using either strings or numbers. A TIMESTAMP column is useful for recording the date and time of an INSERT or UPDATE operation because it is automatically set to the date and time of the most recent operation if you don’t give it a value yourself

TIME - A time - The range is ‘-838:59:59’ to ‘838:59:59’. MySQL displays TIME values in ‘HH:MM:SS’ format, but allows you to assign values to TIME columns using either strings or numbers

YEAR - A year in 2- or 4- digit formats (default is 4-digit) - The allowable values are 1901 to 2155, and 0000 in the 4 year format and 1970-2069 if you use the 2 digit format (70-69). MySQL displays YEAR values in YYYY format, but allows you to assign values to YEAR columns using either strings or numbers. (The YEAR type is new in MySQL 3.22.)

CHAR - A fixed-length string that is always right-padded with spaces to the specified length when stored - The range of Length is 1 to 255 characters. Trailing spaces are removed when the value is retrieved. CHAR values are sorted and compared in case-insensitive fashion according to the default character set unless the BINARY keyword is given

VARCHAR - A variable-length string. Note: Trailing spaces are removed when the value is stored (this differs from the ANSI SQL specification) - The range of Length is 1 to 255 characters. VARCHAR values are sorted and compared in case-insensitive fashion unless the BINARY keyword is given

TINYBLOB, TINYTEXT - A BLOB or TEXT column with a maximum length of 255 (2^8 - 1) characters

BLOB, TEXT - A BLOB or TEXT column with a maximum length of 65535 (2^16 - 1) characters

MEDIUMBLOB, MEDIUMTEXT - A BLOB or TEXT column with a maximum length of 16777215 (2^24 - 1) characters

LONGBLOB, LONGTEXT - A BLOB or TEXT column with a maximum length of 4294967295 (2^32 - 1) characters

ENUM - An enumeration - A string object that can have only one value, chosen from the list of values ‘value1’, ‘value2’, ..., or NULL. An ENUM can have a maximum of 65535 distinct values.

SET - A set - A string object that can have zero or more values, each of which must be chosen from the list of values ‘value1’, ‘value2’, ... A SET can have a maximum of 64 members


Quelle
Übersetze nach en fr

Netbeans 7 ist raus

What's New in 7.0

NetBeans IDE 7.0 features the following changes:

Introduction of JDK 7 support including editor enhancements (syntax, hints)
Revamped support for WebLogic Application Server and GlassFish 3.1
Oracle Database improvements
HTML5 editing support
Maven 3 is supported and bundled with the IDE
Improved support for CDI, REST services, Java Persistence, and Bean Validation
PHP Rename Refactoring
Line wrapping
Improved detection of external changes (native file system listening)
Updates to the C/C++ support (remote file system browsing, library projects running/debugging, enhanced templates/specializations)
Support for Git 1.7.х
Additional enhancements are listed at the NetBeans IDE 7.0 New and Noteworthy page

For more about this release, see the NetBeans IDE 7.0 Release Information page.


Download Linux All
Download Windows All
Übersetze nach en fr

Constraints

Constraints ("Randbedinungen") können genutzt werden, um Daten beim Einfügen, Ändern oder Löschen auf gewissen Bedienungen hin zu prüfen.

Besonders in Verbindung mit Transaktionen führt dies zu einem recht sicherem Datenbestand.

Da de.wikipedia.org dies bereits hinreichend gut zum Einstieg erklärt, folgt hier ein Zitat.

Constraints in Datenbanksystemen

In Datenbanksystemen funktionieren Constraints prinzipiell gleich. Constraints definieren Bedingungen die beim Einfügen, Ändern und Löschen von Datensätzen in der Datenbank erfüllt werden müssen.

Viele Datenbanksysteme kennen zusätzlich zu den Constraints noch Transaktionen. Die Kombination dieser beiden Konzepte ist sehr mächtig, da spätestens am Ende einer Transaktion alle Constraints überprüft werden. Wenn dabei ein Constraint fehlschlägt, werden sämtliche Änderungen an den Daten, die in dieser Transaktion durchgeführt wurden, zurückgenommen, als seien sie nie durchgeführt worden.

Constraints werden in Datenbanksystemem durch Integritätsbedingungen definiert.

Auflistung möglicher Constraints in Datenbanksystemen:

NOT NULL → der Skalar kann nicht NULL sein
PRIMARY KEY → der Skalar muss einzigartig sein und kann nicht NULL sein
FOREIGN KEY → der Skalar muss auf Referentielle Integrität geprüft werden
UNIQUE → der Skalar muss innerhalb des Attributes einzigartig sein
CHECK() → explizite Überprüfungsanweisung an das DBMS; auf was geprüft werden muss, wird als Option dieser Anweisung definiert

Des Weiteren gibt es verschiedene Typen von Constraints:

Attribut Constraints, beziehen sich auf eine einzelne Spalte
Relationen Constraints, beziehen sich auf mehrere Attribute (Spalten)
Benannte Constraints, können anhand des Namens manipuliert werden
* Unbenannte Constraints, erhalten einen vom System generierten Namen

Beispiel: Attribut Constraint

Im nachfolgenden Beispiel handelt es sich bei PRIMARY KEY um einen unbenannten Constraint und bei CONSTRAINT persons_fp um einen benannten Constraint.

CREATE TABLE person(
id PRIMARY KEY,
fingerprint BYTEA CONSTRAINT persons_fp UNIQUE
);

Beispiel: Relationen Constraint

Im nachfolgenden Beispiel handelt es sich bei CONSTRAINT person_prime um einen benannten Constraint und bei UNIQUE() um einen unbenannten Constraint.

CREATE TABLE person(
id SERIAL,
name VARCHAR,
dob DATE,
born_in VARCHAR,
CONSTRAINT person_prime PRIMARY KEY(id),
UNIQUE(name, dob, born_in)
);


Quelle
Übersetze nach en fr

HowTo

_Grundlagen

__Struktur eines Projektes im SVN

./trunk || Verzeichnis des Hauptentwicklungszweig
./tags || Definierte Releases
./branches || Kurzlebige Verzweigungen des Projektes

_Befehle

__Allgemeiner Ueberblick

svn checkout --revision $Revisionsnummer || Auschecken der gewuenschten Revision
svn commit || Aktualisiert das Repository mit Daten aus der Arbeitskopie
svn update || Aktualisiert die Arbeitskopie mit Daten aus dem Repository
svn revert || Aenderungen in der Arbeitskopie rueckgaengig machen
svn resolved || Konflikt behandeln und afuloesen
svn status || Zeigt aktuellen Status der Dateien des Projektverzeichnisses
svn status --show-updates || Prueft gegenueber dem SVN-Server, welche Elemente sich veraendert haben

__Details

___svn update - Ausgabe
A || Die Datei wurde in der Arbeitskopie neu hinzugefuegt (added) und existiert noch nicht im Repository
D || Die Datei wurde in der Arbeitskopie geloescht (deleted)
U || Die Datei wurde in der Arbeitskopie auf die Version aus dem Repository aktualisiert 8updated)
C || Die Datei im Repository hat eine konkurrierende Aenderung (conflict), die nicht automatisch gemischt werden kann
G || Die Datei in der Arbeitskopie wurde mit den Aenderungenaus dem Repository vermischt (merged)

___svn status - Ausgabe
A || Das Element wurder zur Arbeitskopie hinzugefuegt (add)
C || Die Datei ist im Konfliktzustand (conflict). Der Konfilkt muss manuell aufgeloest werden
D || Das Element wurde in der Arbeitskopie geloescht (delete)
M || Das Element wurde in der Arbeitskopie veraendert (modified)
R || Das Element wurde in der Arbeitskopie geloescht und dann ein Element gleichen Namens innerhalb einer Revision wieder hinzugefuegt (replaced)
? || Das Element ist (noch) nicht unter Versionskontrolle (neue Datei, lokal angelegt)
! || Das Element ist unter Versionskontrolle, aber es fehlt oder ist unvollstaendig

_Aufgaben

__Tag erstellen

svn copy --revision 240205 http://svn.meinserver.foo/myProject/trunk/myProjekt/ http://svn.meinserver.foo/myProject/tags/myProjekt_release_1 --message "Revision 240205 - Datum 2011_01_17"


__Getaggede Version auschecken

cd $APPLIATION_PATH
svn checkout http://svn.meinserver.foo/myProject/tags/myProjekt_release_1



__Vorhandene Version mit getaggeder Version aktualisieren

cd $APPLIKATION_PATH
svn up http://svn.meinserver.foo/myProject/tags/myProjekt_release_1



_Tools

__GUI-Tools

Rapidsvn (Linux)
TortoiseSVN (Windows)

_Tutorials
yolinux.com
Übersetze nach en fr