Archiv für den August 2009
« Vorherige BeiträgeApache: Verzeichnis vor Zugriff von außen schützen
Montag, 31.08.2009Um ein Verzeichnis im Apache2 vor dem Zugriff von außerhalb eines bestimmten Netzwerkes zu schützen können Sie folgende Option nutzen:
Allow from 192.168.0.100/16
Im Beispiel in der httpd.conf (oder jeder anderen Konfigurationsdatei) sieht das so aus:
<VirtualHost *:80>
DocumentRoot /var/www/test
<Directory /var/www/test>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from 192.168.0.100/16
</Directory>
</VirtualHost>
Ruby on Rails: Datum aus Kalenderwoche, Jahreszahl und Wochentag berechnen
Sonntag, 30.08.2009Zunächst wird ein Datumsobjekt erstellt, dass auf den 1. Januar des Jahres zeigt.
date = Date.parse("01-01-"+year)
Dann wird an Hand der Tageszahl (Montag == 1) der Offset berechnet.
if date.cwday <= 4
# Donnerstag oder kleiner: Zurueck rechnen auf Montag
x = -8 + (date.cwday+1);
else
# Offset auf Folge-Woche
x = 8 - date.cwday
end
Mit einer kleinen Hilfsfunktion wird der Offset bezüglich des gewünschten Wochentages angepasst.
x += day_number(day_string) - 1
Zu guter letzt wird das Datum berechnet.
date + x + ( 7*(week-1) )
Hier der komplette Code:
# Berechnet das Datum zu einem Wochentag in einer Kalenderwoche in einem Jahr
def week_to_date(week, year, day_string)
# Datums Objekt des ersten Jahrestages
date = Date.parse("01-01-"+year)
# Pruefen des nummerischen Wertes des Wochentages
# 4: Donnerstag - 1. KW ist die Woche mit dem ersten Donnerstag im Jahr
if date.cwday <= 4
# Donnerstag oder kleiner: Zurueck rechnen auf Montag
x = -8 + (date.cwday+1);
else
# Offset auf Folge-Woche
x = 8 - date.cwday
end
# Offset an Wochentag anpassen
x += day_number(day_string) - 1
# Datum berechnen aus 1.1. des Jahres + Offset + Anzahl der Wochen
date + x + ( 7*(week-1) )
end
def day_number(day_string)
days = {
'Mo' => 1,
'Di' => 2,
'Mi' => 3,
'Do' => 4,
'Fr' => 5,
'Sa' => 6,
'So' => 7
}
days[day_string]
end
Reconnect Script für das Alice Modem WLAN 1121
Samstag, 29.08.2009Um bei einigen Programmen einen automatischen Reconnect des Modems / Routers auslösen lassen zu können, benötigen Sie das folgende Script.
Es ist nur für das Alice Moden (Router) WLAN 1121 getestet.
[[[HSRC]]]
[[[STEP]]]
[[[REQUEST]]]
POST /alicelogin HTTP/1.1
Host: %%%routerip%%%
loginUserName=%%%user%%%&loginPassword=%%%pass%%%
[[[/REQUEST]]]
[[[/STEP]]]
[[[STEP]]]
[[[REQUEST]]]
GET /pppctrl.cmd?action=infodisconn&conId=1&vpi=1&vci=32&portId = 0 HTTP/1.1
Host: %%%routerip%%%
[[[/REQUEST]]]
[[[/STEP]]]
[[[STEP]]]
[[[REQUEST]]]
GET /pppctrl.cmd?action=infoconnect&conId=1&vpi=1&vci=32&portId = 0&connectNow=1 HTTP/1.1
Host: %%%routerip%%%
[[[/REQUEST]]]
[[[/STEP]]]
[[[/HSRC]]]
Linux: Jobs pausieren & fortsetzen (Beispiel: vi)
Samstag, 29.08.2009Wenn SIe unter Linux einen Job (Prozess) pausieren möchten und später wieder fortsetzen wollen, dann hilft Ihnen dieser Tipp weiter. Am Beispiel des VI Editors möchte ich die Funktionsweise erklären:
- Sie arbeiten im VI an einer Datei
- Drücken Sie nun Strg+Z (auch Ctrl+Z genannt)
Der Editor wird beendet und Sie finden sich auf der Oberfläche/Kommandozeile wieder - Der aktuelle Stand Ihrer Datei ist nur zwischengespeichert
- Um eine aktuelle Übersicht über “geparkte” Prozesse (Jobs) zu bekommen, nutzen Sie den Befehl
#> jobs - Um den zuletzt geparkten Job wieder zu reaktivieren und fortzusetzen, geben Sie folgenden Befehl ein:
#> fg
cakePHP: Wie überliste ich Cake / Sortierung ohne Paginierung
Freitag, 28.08.2009Sie wollen ihre Daten, geholt über eine eigene Query anstatt über die Cake Paginierung, über die Sortierfunktionalität von Cake in der View sortierbar machen. Hierzu haben Sie bereits das entsprechende Element in der Kopfzeile der Tabelle integriert.
<th><?php echo $paginator->sort('Author', 'Author.name'); ?></th>
Da keine Paginierungsmethode im Controller genutzt wurde muss die Session für den PaginatorHelper entsprechend per Hand erstellt werden:
$options = array(
'order' => array(
$this->params['pass']['sort'] => $this->params['pass']['direction']
)
);
$this->params['paging']['ModelName']['options'] = $options;
$this->params['paging']['ModelName']['defaults'] = $options;
Zwei DIV Bereiche gleichzeitig (synchron) scrollen
Donnerstag, 27.08.2009Um zwei Bereiche (hier: DIV Elemente) gleichzeitig mit nur einem Scrollbalken zu verschieben, nutzen Sie folgenden Code:
<script type="text/javascript">
var Marker = [0,0];
function CS(div1, div2) {
if (!div1 || !div2) return;
var control = null;
if (div1.scrollTop != Marker[0])
control = div1;
else
if (div2.scrollTop != Marker[1])
control = div2;
if (control == null)
return;
else
div1.scrollTop = div2.scrollTop = control.scrollTop;
Marker[0] = div1.scrollTop;
Marker[1] = div2.scrollTop;
}
window.setInterval("CS(document.getElementById('ta1'), document.getElementById('ta2'))", 100);
</script>
<table>
<tr><td><div style="height: 70px; width: 100px; overflow: auto" id="ta1">
Testzeile 1<br>Testzeile 2<br>
Testzeile 3<br>Testzeile 4<br>
Testzeile 5<br>Testzeile 6<br>
Testzeile 7<br>Testzeile 8<br></div></td>
<td><div id="ta2" style="height: 70px; width: 200px; overflow: auto">
Testzeile Rechts 1<br>Testzeile Rechts 2<br>
Testzeile Rechts 3<br>Testzeile Rechts 4<br>
Testzeile Rechts 5<br>Testzeile Rechts 6<br>
Testzeile Rechts 7<br>Testzeile Rechts 8<br></div></td>
</tr>
</table>
Folgendes Beispiel zeigt die Funktionsweise. Innerhalb des angezeigten (leeren) Bereiches ist das o.a. JavaScript für das Beispiel definiert:
|
Testzeile 1
Testzeile 2 Testzeile 3 Testzeile 4 Testzeile 5 Testzeile 6 Testzeile 7 Testzeile 8 |
Testzeile 1
Testzeile 2 Testzeile 3 Testzeile 4 Testzeile 5 Testzeile 6 Testzeile 7 Testzeile 8 |
Ruby on Rails: Datums Formatierung
Sonntag, 23.08.2009Viele “Gerüchte” kursieren im Netz umher, wie man ein Datum aus der Datenbank am besten in der View formatiert. Der einfachste Weg ist aber wohl folgender…
Wir haben unser News ausgelesen und in der Variablen @news in unsere View. Das Datum liegt im Feld created_at. Dann können wir über die Funktion strftime(format) das Datum formatieren.
<% @news.each do |news| %>
<div class="news_date">
<%=h news.created_at.strftime('%d.%m.%y - %H:%M')+"h" %>
</div>
<% end %>
Die Ausgabe wäre etwas wie => 31.01.2009 - 16:45 h
Zum weiterlesen:
Formatierungsoptionen: Date Format Options
Ruby Class: Date Class
Pure-FTP: 421 Too many connections (3) from this IP
Samstag, 22.08.2009Wenn Sie als Pure-FTP als FTP Server betreiben und an Ihrem FTP Client folgende Fehlermeldung erhalten:
421 Too many connections (3) from this IP
… dann ist wahrscheinlich der Passive-Mode nicht richtig eingerichtet.
Natürlich können Sie aber auch von einer IP aus (z.Bsp. durch einen Proxy) die Anzahl der eingestellten, maximalen Anmeldungen erreicht haben.
Um kurzfristig Abhilfe zu schaffen, können Sie einen FTP Benutzer (verbundenen Client) trennen.
Die Kurzanleitung finden Sie in unserem Artikel “Pure-FTP: FTP Client trennen (disconnecten)“.
Probieren Sie folgende Schritte (als Beispiel), um den passiven Modus zu erlauben:
- Öffnen Sie die Pure-FTP Konfiguration:
server:/etc/pure-ftpd # vi pure-ftpd.conf - Tragen Sie dort (meist am Ende) die Ports für die passive Übertragung ein:
PassivePortRange 30000:30100 - Speichern und Schließen Sie die Datei wieder
- Fügen Sie diesen Port-Bereich in Ihrer Linux-Firewall hinzu:
- Öffnen Sie yast
yast2 - Unter “Security and Users” > “Firewall” gehen Sie auf “Allowed Services”
- Dort wählen Sie “Advanced …” aus
- Fügen Sie in das Feld “TCP Ports” den o.a. Bereich hinzu:
30000:30100 - Speichern Sie die Daten und die Firewall
- Öffnen Sie yast
- Falls Sie über einen Router mit dem Internet/Netzwerk verbunden sind, lassen Sie dort die Ports ebenfalls an den Server weiterleiten.
Pure-FTP: FTP Client trennen (disconnecten)
Samstag, 22.08.2009Um einen FTP Client sofort von Ihrem Pure-FTP Server zu trennen, nutzen Sie folgende Befehle:
1. Finden Sie die aktuelle PID des Benutzers (FTP Clients) heraus
Die PID ist die Linux-Prozess-ID und verweist direkt auf den laufenden Prozess Ihres Systems, der mit diesen FTP Client kommuniziert.
pure-ftpwho
Ihnen wird die aktuelle Liste der FTP Clients angezeigt:
+------+---------+-------+------+-------------------------------------------+ | PID | Login |For/Spd| What | File/IP | +------+---------+-------+------+-------------------------------------------+ | 6206 | malte | 00:05 | IDLE | | | '' | '' | '' | '' | -> 22.222.22.22 | +------+---------+-------+------+-------------------------------------------+ | 6168 | peter | 00:10 | IDLE | | | '' | '' | '' | '' | -> 22.222.22.22 | +------+---------+-------+------+-------------------------------------------+ | 6169 | karen | 00:09 | IDLE | | | '' | '' | '' | '' | -> 22.222.22.22 | +------+---------+-------+------+-------------------------------------------+
Wenn Sie nun den Benutzer “peter” zwangsweise trennen möchten, dann nutzen Sie einfach folgenden Befehl:
kill 6168
Dadurch wird der entsprechende Prozess sofort beendet.
Syntax: kill [PID]
Problem: “Eine ältere Speedmanager plus/Byte Mobile Client Installation wurde gefunden …”
Dienstag, 11.08.2009Bei der Installation der T-Mobile Software “web’n'walk” kommt teilweise die folgende (teils nur ähnliche) Fehlermeldung:
Eine ältere Speedmanager plus/Byte Mobile Client Installation (SDK) wurde gefunden. Die Software muß deinstalliert und der Rechner neu gestartet werden.
oder
Eine ältere Speedmanager plus/Byte Mobile Client Installation wurde gefunden. Die Software muß deinstalliert und der Rechner neu gestartet werden.
Nicht immer findet sich das gesuchte Programm in der Softwareverwaltung.
Hier hilft nur die Löschung direkt aus der Registry:
- Starten / öffnen Sie die Registry
Windowstaste + R
Geben Sie ein: regedit
Klicken Sie auf “OK” - Drücken Sie “F3″ und suchen Sie nach “ByteMobile”
- Jeden Treffer löschen Sie, indem Sie ihn anklicken und auf die “Entf” Taste drücken.
Die Warnmeldung müssen Sie jeweils bestätigen. - Schließen Sie die Registry einfach durch “Alt + F4″
Nun starten Sie nochmals das Setup für Ihre T-Mobile Software.
« Vorheriger Beitrag