Wer seine XML Xliff Dateien gegen die dtd validiert hat oft das Problem, dass die einzelnen trans-unit Nodes keine oder eine bereits existierende id aufweisen. Um dieses Problem zu lösen hab ich mir ein kleines Skript gebaut.
fix_id.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <?php
$doc = new DOMDocument();
$doc->load($argv[1]);
$xpath = new DOMXPath($doc);
$query = '//trans-unit';
$entries = $xpath->query($query);
foreach ($entries as $i => $entry) {
$entry->setAttribute('id', $i+1);
}
$doc->save($argv[1]); |
Im symfony1 Hauptverzeichnis nun folgenden Befehl absetzen
for FILE in `find apps/*/i18n -name *\.xml`; do php fix_id.php $FILE; done;
Um deinen Code von Doctrine auf Doctrine_Core umzustellen kannst du folgenden Befehl verwenden
1
| for fl in `find apps/ config/ lib/ test/ -name *.php`; do mv $fl $fl.old; sed 's/Doctrine::/Doctrine_Core::/g' $fl.old > $fl; rm -f $fl.old; done |
Wenn du ein Plugin hast benutze folgenden Befehl
1
| for fl in `find . -name *.php`; do mv $fl $fl.old; sed 's/Doctrine::/Doctrine_Core::/g' $fl.old > $fl; rm -f $fl.old; done |
Dieses im Projekt root Verzeichnis aufrufen.
for DIR in `find lib -name base -type d`; do svn propset svn:ignore base $DIR/..;svn rm $DIR; done;
Problem
Ich brauche mehr als einen Memcached Server.
Lösung
Virtuellemaschinen
Ich kann für jeden memcached server eine Virtuellemaschine erstellen.
Probleme
- mehr speicher (system+memcached)
- eine ip addresse pro Instanz
- mehr Aufwand
Multiple Instanzen mithilfe von Ports
Dafür müssen die Skripte init.d und start-memcached gepatched werden um Multiple Instanzen zum laufen zubekommen.
Nach dem patch sucht es nach Konfigurationsdateien die folgendem Muster entsprechen /etc/memcached_*.conf. Wenn es keine Dateien findet benutzt es die /etc/memcached.conf Konfigurationsdatei. Es ist also rückwärtskompatibel.
Wenn du nun 2 memached Instanzen erstellen möchtest kopiere die Konfigurationsdatei und ändere den Port, Speicher …
cp /etc/memcached.conf /etc/memcached_myserver_1.conf
cp /etc/memcached.conf /etc/memcached_myserver_2.conf
Befehle
startet alle Server
/etc/init.d/memcached start
startet nur einen bestimmten Server
/etc/init.d/memcached start myserver_1
stopt alle Server
/etc/init.d/memcached stop
stopt nur einen bestimmten Server
/etc/init.d/memcached stop myserver_1
Die Änderungen
/usr/share/memcached/scripts/start-memcached
26,30d25
> if (scalar(@ARGV) == 2) {
> $etcfile = shift(@ARGV);
> $pidfile = shift(@ARGV);
> }
>
/etc/init.d/memcached
16a17
> DAEMONNAME=memcached
18d18
< NAME=memcached
20d19
< PIDFILE=/var/run/$NAME.pid
26a26,63
> FILES=(/etc/memcached_*.conf);
> # check for alternative config schema
> if [ -r "${FILES[0]}" ]; then
> CONFIGS=();
> for FILE in "${FILES[@]}";
> do
> # remove prefix
> NAME=${FILE#/etc/};
> # remove suffix
> NAME=${NAME%.conf};
>
> # check optional second param
> if [ $# -ne 2 ];
> then
> # add to config array
> CONFIGS+=($NAME);
> elif [ "memcached_$2" == "$NAME" ];
> then
> # use only one memcached
> CONFIGS=($NAME);
> break;
> fi;
> done;
>
> if [ ${#CONFIGS[@]} == 0 ];
> then
> echo "Config not exist for: $2" >&2;
> exit 1;
> fi;
> else
> CONFIGS=(memcached);
> fi;
>
> CONFIG_NUM=${#CONFIGS[@]};
> for ((i=0; i < $CONFIG_NUM; i++)); do
> NAME=${CONFIGS[${i}]};
> PIDFILE="/var/run/${NAME}.pid";
>
30c67
< start-stop-daemon --start --quiet --exec $DAEMONBOOTSTRAP
---
> start-stop-daemon --start --quiet --exec "$DAEMONBOOTSTRAP" -- /etc/${NAME}.conf $PIDFILE
50c87
< start-stop-daemon --start --quiet --exec $DAEMONBOOTSTRAP
---
> start-stop-daemon --start --quiet --exec "$DAEMONBOOTSTRAP" -- /etc/${NAME}.conf $PIDFILE
54c91
< N=/etc/init.d/$NAME
---
> N=/etc/init.d/$DAEMONNAME
59a97
> done;
Ein paar Fragen und ein paar Antworten. Für jedes Kommando kannst du weitere Optionen auflisten mit folgendem Befehl
Wie kann ich Unterschiede zwischen zwei Dateien oder Verzeichnissen anzeigen?
benutze einfach diff
- -r Rekursive
- -w –ignore-all-space alle nicht sichbaren Zeichen ignorieren
- -y –side-by-side beide Dateien neben einander anzeigen
Wie kann ich kopieren mit dazugehörigen Rechte-, Gruppen- und Benutzereinstellungen?
mit der Option -a
Wie kann ich mir alle Metazeichen wie z.B. Leerzeichen anzeigen?
benutze cat
Wie bekomme ich eine einzelne Datei aus einer SVN Quelle?
svn export http://framework.zend.com/svn/framework/standard/tags/release-1.7.6/library/Zend/Acl.php
Wie kann ich alle .svn Verzeichnisse von einem Verzeichnis und seinen Unterverzeichnissen entfernen?
for DIR in `find . -name .svn -type d`; do rm $DIR -Rf; done;
Wie kann ich ein Verzeichnisse als Baum anzeigen?
einfach mit tree
Letzte Kommentare