Tipps&Tricks

From Wiki von Axel Benz

Jump to: navigation, search

Hier werden die vielen kleinen Details festgehalten, die man zum Entwickeln braucht und für die man tagelang braucht, um sie herauszufinden...

Contents

wget

Wget ist ein Tool, um Webseiten auf lokale Laufwerke zu spielen.

Ich empfehle aber besser die Verwendung von winHTTrack, da Wget nicht mit Dateinamen mit Umlauten zurecht kommt.

Will man dennoch wget verwenden, ist der Aufruf ziemlich komplex. Folgender Aufruf ist empfehlenswert: (Beispiel)

wget -l4 -r -E -np --page-requisites -e robots=off -k -d --http-user=username --http-passwd=password http://www.axelbenz.de/wiki
Aufruf gehe 4 Stufen tief rekursiv Endung nach .html umschreiben nur Unterverzeichnisse mit allen Stylesheets etc. ignoriere robots.txt Links nach lokal konvertieren Debug Output User Password URL

.bat-Dateien

Sich mit .bat-Dateien auszukennen ist eine große Hilfe beim automatisieren von Aufgaben. Man kann damit viel machen - wenn man weiß, wie

Herausfinden, ob eine Parameter ein Dateiname oder ein Verzeichnisname ist

if exist %1\nul (
rem Verzeichnis
) else (
rem Datei
)

VBA

Eine wunderbare Skriptsprache, um mit kleinem Aufwand große Wirkung zu erzielen.

VBA-Tipps&Tricks

Hier sammle ich die Fragen, die im Rahmen der Vorlesungen von Studenten kommen (und die Antworten natürlich auch).

VBA-FAQ

Excel-VBA

Autostart-Makro

Sub Auto_Open()

Zellen direkt adressieren

Schneller und sicherer als die Verwendung der "active Cell"

Worksheets("tabelle1").Range("A1") = 11

Beziehungeweise unter Angabe der Datei

Workbooks("test.xls").Worksheets("tabelle1").Range("A1") = 11

Besonders geschickt für Laufvariablen:

Worksheets("tabelle1").Cells(3, 4) = 33

Auch mehere Zellen gleichzeitig sind möglich:

Worksheets("tabelle1").Range("F1:I10").Value = 2

Benutzerdefinierte Funktionen

Ein wunderbares Konzept um übersichtlichen und wiederverwendbaren Code zu erhalten.

Benutzerdefinierte Funktionen verwenden

Wenn man eine VBA-Funktion in einem Modul definiert, kann sie direkt in Excel als "Benutzerdefinierte Funktion" aufgerufen und verwendet werden.

Funktionen in Add-Ins aus VBA aufrufen

Man definiert die Benutzerdefinierten Funktionen in einer eigenen Datei und speichert diese als Add-In ab. Dann importiert man das Add-In und hat die Funktionen unter "Benutzerdefiniert" zur Verfügung.

Add-Ins ergeben viel pflegbarerer Funktionen als der import von Modulen. Wie die Funktionen eines Add-Ins aufgerufen werden können, steht hier. Kurz gefasst: Name des "VBAProject" eindeutig machen durch die Eigenschaftenseite, Add-In über Extras-Verweise einbinden, dann können die Funktionen des Add-Ins adressiert werden.

How to get only the numeric part of a cell content

When importing data from the internet, often the numeric data is enriched with textual information, so that in the excel cells we get strings instdead of numbers. To filter out the numeric part of the cells, we need a user-defined function.

In the German Excel-Version:

  • Go to Extras - Makro - Visual Basic Editor.
  • Right-Click on "VBA-Project(name of your excel file)"
  • Choose "Einfügen-Modul"
  • Copy the following function to the new module:
Option Explicit

Function Zahlenwert( _
    zeichenkette As String, _
    Optional dezimalpunkt As String = ",", _ 
    Optional trenner As String = "", _ 
    Optional index As Integer = 1)

Dim i As Integer
Dim result As String
Dim zeichen As String
Dim zeichen_array As Variant

    If trenner <> "" Then
    zeichen_array = Split(zeichenkette, trenner)
    zeichenkette = zeichen_array(index - 1)
    End If

    For i = 1 To Len(zeichenkette)
    zeichen = Mid(zeichenkette, i, 1)
        If IsNumeric(zeichen) Then
        result = result & zeichen
        End If
        If zeichen = dezimalpunkt Then
        result = result & Application.DecimalSeparator
        End If
    Next
    
Zahlenwert = CDbl(result)
End Function
  • Close the Visual Basic Editor
  • In Excel you can now use the new User-Defined-Funktion "Zahlenwert(zeichenkette)" which filters all the numeric values out of the "zeichenkette". Example: Zahlenwert("13 cm") = 13
  • If you want to change the decimal separater, use "Zahlenwert(zeichenkette, decimal_point"). Example: Zahlenwert("13.5 cm"; ".") = 13,5
  • If you have several numbers in your cell and you want to pick out one of them, use "Zahlenwert(zeichenkette,decimal_point,trenner,index)". The "trenner" is a string which is in between the numbers. The "index" is which of the number you want to use.
    • Example 1: Cell A1 contains "13.5cm (15.7inch)". Zahlenwert(A1; "."; " ("; 1)= 13,5
    • Example 2: Cell A1 contains "13.5cm (15.7inch)". Zahlenwert(A1; "."; " ("; 2)= 15,7
    • Example 3: Cell A1 contains "13.5 cm (15.7 inch)". Zahlenwert(A1; "."; " "; 3)=15,7. Attention: Since the "trenner" is here just " " instead of " (" and there is a space between "13.5" and "cm", the first processed value is "13.5", the second "cm", the third "[15.7", and therefore, the index must be 3 instead of 2.
  • To really use this function excel makros must be activated. When re-opening your file, you will be asked whether to activate or de-activate macros. Choose "activate".

Media Wiki

Media Wiki Tipps&Tricks

.htaccess

Mächtig und nicht gerade anschaulich.

Passwortschutz:

#lokaler Pfad zum Passwortfile:
AuthUserFile /kunden/homepages/21/d142381821/htdocs/test/.htpasswd

#Aufforderung:
AuthName "Bitte Passwort eingeben:„

#Passwort erforderlich:
AuthType Basic

#folgende Benutzer / Gruppen sind erlaubt:
require user axel.benz

#Fehlerdokument:
ErrorDocument 401 /test/fehler401.html 

#Zugriff auf Fehlerdokument muss auch erlaubt sein:
<Files fehler401.html>
Satisfy Any
</Files>

Es ist ernst gemeint: .htpasswd verwendet den lokalen Pfad, ErrorDocument den relativen Pfad, startend an der Dokumentenwurzel und Files nur den Dateinamen.

Wie findet man den lokalen Pfad heraus? Mit php.

$_SERVER["DOCUMENT_ROOT"] 

Wie findet man den Inhalt des Paswortfiles heraus? Mit diesem Generator

Problem: Für einzelne Dateien Paswortschutz aufheben. Lösung:

<FilesMatch se_.*\.ppt>
Satisfy Any
</FilesMatch>

SQL

Mehrere verschiedene Datensätze mit einem Statement updaten

Meist brauchen nicht die SQL-Statements die Zeit, sondern die Übertragung zum Server. Mehrere Datensätze gleichzeitig updaten kann man mit verschachtelten if-Statements:

update rangliste set punkte = if(id=1,11,if (id=2,22,if(id=13,12,punkte)))

Hier handelt es sich um eine Tabelle "Rangliste" mit den Feldern "id" und "punkte".

Netdrive.exe

Netdrive - nicht das von Novell, sondern ein neues aus Korea

Tolles Tool für die Entwicklung von Web-Sites, bindet FTP echt ins Dateisystem ein, was Windows bis jetzt noch nicht kann (sprechen Sie mal die Netzwerkumgebung per Batch-Datei an ?!?). Geht auch mit Windows 7 (was ftpdrive nicht tut). Leider keine Kommandozeilenoptionen.

HTML und CSS

CSS ist eine Offenbarung, verglichen mit der Formatierung über HTML. Doch auch hier gibt es esotherisches Geheimwissen, das einem stundenlanges probieren erspart.

div-Element in einen div-Element

Sollte laut Spezifikation gehen, geht aber keineswegs. Sämtliche Positionierungen sind nur noch undurchschaubar. Was kann man tun, wenn man div-Elemente in einem Kasten haben will, der sich der Größe der Elemente anpasst? Mein Vorschlag: Man nehme eine Tabelle mit einer Zeile und einer Spalte als Kasten. Das funktioniert, und stört werder die Barrierefreiheit noch die Übersicht besonders stark.

div-Elemente nebeneinander positionieren

Dafür gibt es viele Vorschläge. Der konservativste ist:

 <div style=float:left> erstes Element <div>
 <div style=float:left> zweites Element daneben <div>
 <div style=clear:both></div> 

Das dritte Element ist ein Pseudo-Element ohne Inhalt, allerdings unbedingt notwendig, sofern man danach noch weitere Elemente darunter hat. Was macht man,wenn man die Elemente in einem dynamischen Kasten haben will? Siehe hier

PHP

Include-Hölle

PHP hat die Eigenschaft, dass include-Anweisungen (fast) immer relativ zur ERSTEN Datei sind. Relative includes in Dateien, die später selbst included werden, können also schief gehen.

Es ist aber sinnvoll eine Datei, die eine Funktion braucht, diese selbst und direkt im Code includen zu lassen (sozusagen eine "uses Package-Anweisung".) Dies kann man so lösen:

require_once (realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR.relativePathToIncludeDatei)

Mit dem Vorsatz wird eine relative Pfadangabe von überallher richtig ausgewertet.

Reguläre Ausdrücke

Endlich ein gutes Tutorial!

Tele-Vorlesungen

Interaktion in Tele-Vorlesungen mit Wiziq

Personal tools
Create a book