Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
31. Aug 2009
Teaser

Apache: Verzeichnis vor Zugriff von außen schützen

Um 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>
30. Aug 2009
Teaser

Ruby on Rails: Datum aus Kalenderwoche, Jahreszahl und Wochentag berechnen

Zunä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
29. Aug 2009
Teaser

Reconnect Script für das Alice Modem WLAN 1121

Um 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]]]
29. Aug 2009
Teaser

Linux: Jobs pausieren & fortsetzen (Beispiel: vi)

Wenn 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
28. Aug 2009
Teaser

cakePHP: Wie überliste ich Cake / Sortierung ohne Paginierung

Sie 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;
27. Aug 2009
Teaser

Zwei DIV Bereiche gleichzeitig (synchron) scrollen

Um 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
23. Aug 2009
Teaser

Ruby on Rails: Datums Formatierung

Viele “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

22. Aug 2009
Teaser

Pure-FTP: 421 Too many connections (3) from this IP

Wenn 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
  • Falls Sie über einen Router mit dem Internet/Netzwerk verbunden sind, lassen Sie dort die Ports ebenfalls an den Server weiterleiten.
22. Aug 2009
Teaser

Pure-FTP: FTP Client trennen (disconnecten)

Um 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]

11. Aug 2009
Teaser

Problem: “Eine ältere Speedmanager plus/Byte Mobile Client Installation wurde gefunden …”

Bei 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:

  1. Starten / öffnen Sie die Registry
    Windowstaste + R
    Geben Sie ein: regedit
    Klicken Sie auf “OK”
  2. Drücken Sie “F3” und suchen Sie nach “ByteMobile”
  3. Jeden Treffer löschen Sie, indem Sie ihn anklicken und auf die “Entf” Taste drücken.
    Die Warnmeldung müssen Sie jeweils bestätigen.
  4. Schließen Sie die Registry einfach durch “Alt + F4”

Nun starten Sie nochmals das Setup für Ihre T-Mobile Software.