Archive for the ‘Programmierung’ Category.

Powershell: Lange Dateipfade ermitteln

Folgendes Skript gibt alle Dateien in eine Datei aus, deren Pfad länger als 240 Zeichen ist.

cd c:\
clear-host
$Host.UI.RawUI.BufferSize = New-Object Management.Automation.Host.Size (600, 25)
gci -Recurse | ? { $_.fullname.length -gt 240} | Select-Object FullName | Out-File "c:\longfilenames-20110614.txt" -Width 350

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Folien vom Arduino Workshop in Troisdorf

Hier die Folien zum Arduino-Workshop bei der Trolug in Troisdorf.

Arduino-Slides (PDF)

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Kumulative Summe mit T-SQL

Hier ein kurzes Beispiel, wie man mit T-SQL eine kumulative Summe ausrechnet.

CREATE TABLE #test(datum DATE, VALUE INT)
 
INSERT INTO #test VALUES('2010-01-01',10)
INSERT INTO #test VALUES('2010-01-02',20)
INSERT INTO #test VALUES('2010-01-02',30)
 
SELECT t1.*, (SELECT SUM(VALUE) FROM #test t2 WHERE t2.datum<=t1.datum) [cumulative amount]
FROM #test t1
ORDER BY t1.datum
DROP TABLE #test

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

T-SQL: Median und Ausreißer berechnen

Unter http://www.insidesql.org/blogs/frankkalis/2004/07/13/median-berechnen und http://quantmeditate.blogspot.com/2005/03/computing-interquartile-range.html habe ich Informationen zur Berechnung von Median und Quartilen in T-SQL gefunden.

DROP TABLE #data
CREATE TABLE #data(NUMBER FLOAT)
 
INSERT INTO #data VALUES(1.0);INSERT INTO #data VALUES(2.0);
INSERT INTO #data VALUES(3.0);INSERT INTO #data VALUES(4.0);
INSERT INTO #data VALUES(5.0);INSERT INTO #data VALUES(6.0);
INSERT INTO #data VALUES(7.0);INSERT INTO #data VALUES(8.0);
INSERT INTO #data VALUES(9.0);INSERT INTO #data VALUES(10.0);
INSERT INTO #data VALUES(11.0);INSERT INTO #data VALUES(12.0);
INSERT INTO #data VALUES(13.0);INSERT INTO #data VALUES(14.0);
INSERT INTO #data VALUES(15.0);INSERT INTO #data VALUES(16.0);
INSERT INTO #data VALUES(17.0);INSERT INTO #data VALUES(18.0);
INSERT INTO #data VALUES(19.0);INSERT INTO #data VALUES(20.0);
INSERT INTO #data VALUES(21.0);INSERT INTO #data VALUES(22.0);
INSERT INTO #data VALUES(23.0);INSERT INTO #data VALUES(24.0);
INSERT INTO #data VALUES(25.0);INSERT INTO #data VALUES(26.0);
INSERT INTO #data VALUES(27.0);INSERT INTO #data VALUES(28.0);
INSERT INTO #data VALUES(29.0);INSERT INTO #data VALUES(30.0);
INSERT INTO #data VALUES(31.0);INSERT INTO #data VALUES(32.0);
INSERT INTO #data VALUES(33.0);INSERT INTO #data VALUES(34.0);
INSERT INTO #data VALUES(35.0);INSERT INTO #data VALUES(36.0);
INSERT INTO #data VALUES(37.0);INSERT INTO #data VALUES(38.0);
INSERT INTO #data VALUES(39.0);INSERT INTO #data VALUES(40.0);
INSERT INTO #data VALUES(-100.0);INSERT INTO #data VALUES(100.0);
 
DECLARE @median FLOAT
DECLARE @perc25 FLOAT
DECLARE @perc75 FLOAT
DECLARE @iqr FLOAT
 
SET @median = (SELECT   MAX(NUMBER) AS Median FROM (SELECT TOP 50 PERCENT NUMBER FROM #data ORDER BY NUMBER) a)
SET @perc25 = (SELECT   MAX(NUMBER) AS Median FROM (SELECT TOP 25 PERCENT NUMBER FROM #data ORDER BY    NUMBER) a)
SET @perc75 = (SELECT   MAX(NUMBER) AS Median FROM (SELECT TOP 75 PERCENT NUMBER FROM #data ORDER BY    NUMBER) a)
 
print @median
print @perc25
print @perc75
 
SET @iqr = @perc75-@perc25
print 'IQR'
print @iqr
 
SELECT * FROM #data WHERE NUMBER <  (@median + 1.5* @iqr) AND 
NUMBER >  (@median - 1.5* @iqr)
 
print 'number of outliers'
SELECT COUNT(*) FROM #data WHERE NUMBER <  (@median - 1.5* @iqr)
OR NUMBER >  (@median + 1.5* @iqr)

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Powershell Skript für gci mit begrenzter Rekursionstiefe

Das folgende Skript sucht rekursiv alle Ordner bis zum zweiten Unterverzeichnis und gibt den kompletten Pfad aus.

&{gci * | ?{$_.psiscontainer}; gci *\* | ?{$_.psiscontainer}; gci *\*\*| ?{$_.psiscontainer}} | Select-Object FullName | sort

Da die Pfade jedoch recht lang werden können und oft mehr als die 80 Zeichen hatten, muss man die Ausgabebreite anpassen: http://stackoverflow.com/questions/978777/powershell-output-column-width hatte den entsprechenden Hinweis:

clear-host
$Host.UI.RawUI.BufferSize = New-Object Management.Automation.Host.Size (500, 25)
&{gci *\* | ?{$_.psiscontainer};} | Select-Object FullName | sort | Out-File "c:\folders.txt" -Append -Width 250

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Powershell TechNet bei Microsoft

Unter http://technet.microsoft.com/en-us/library/ee692944.aspx findet sich die TechNet Seite von Microsoft zum Thema Powershell. Jede Menge Referenz, Beispiele und Vorlagen.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Excel: Zahl von bestimmten Zeichen in einer Zelle

Auf http://www.herber.de/forum/archiv/616to620/t617816.htm habe ich heute eine einfache Möglichkeit gefunden, die Fundstellen für ein bestimmtes Zeichen in einer Zelle zu zählen.

=LÄNGE(A1)-LÄNGE(WECHSELN(A1;".";""))

Die Funktion ermittelt die Länge des Strings ohne Vorkommen von ‚.‘ und zieht diese von der Länge mit ‚.‘ ab. Was übrig bleibt ist die Anzahl der ‚.‘ in Zelle A1.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Adressen generieren mit Java

Vor einiger Zeit habe ich einen einfachen Generator für Adressen geschrieben, mit dem man unter anderem Test-Datenbanken befüllen kann. Anbei der Java-Quellcode, der sich auch leicht für andere Sprachen adaptieren lässt.

/**
 *
 * @author Uwe Ziegenhagen, www.uweziegenhagen.de
 * Releaseversion vom 13.12.2008
 */
 
import java.util.*;
 
public class Addressmaker {
 
    // Zahlenformat, um PLZ der Form 0xxxx darzustellen
    static java.text.DecimalFormat format =  new java.text.DecimalFormat("00000");
    // Vornamen-Array
    static String[] vornamen = new String[]{"Uwe","Andreas","Max","Moritz","Susi",
    "Steffi","Janine","Tim","Tom","Marko","Hans","Thomas","Maria","Bernd","Mandy",
    "Ben","Thorsten","Sabine","Ines","Isabell","Maria","Nicole","Sabrina","Jenny",
    "Klaus","Heinz","Sabrina", "Tatjana","Felix","Patricia-Elisabeth","Maria Theresia"};
    // Nachnamen-Array
    static String[] nachnamen = new String[]{"Meier","Meyer","Mayer","Müller","Schulze","Lehmann",
    "Köster","Schmidt","Schuster","Wagner","Schmied","Küster","Möller","Berger","Grünwald","Meier-Lehmann",
    "Schulze-Müller","von Fallersleben-Burghausen"};
 
    // ein paar Initiale, könnte man auch aus den Namen entnehmen
    static String[] initial = new String[]{" "," "," "," "," A. "," B. "," C. "," D. "," E. "," "," "};
    // Für Adressen der Form 10a oder b
    static String[] adressinitial = new String[]{"","a","b","c","d","","","","","",""};
    // Adresszusätze
    static String[] adresszusatz = new String[]{"bei Schmidt","c/o Schmidt","p.Adr. Max Mustermann"};
    // Ortsnamen sind zusammengesetzt aus Präfix und Suffix
    static String[] ortsprefix = new String[]{"Wald","Wiesen","Groß","Klein","Mittel","Ober","Ham","Nieder","Alt","Alten",
    "Königs","Langen","Moos","Mühl","Morgen","Schön","Tannen","Vogel","Wolfen","Kirch","Bären","Heide","Hohen","Breiten","Ehren","Eber",
    "Fichten","Grün","Roten", "Ehr"};
    static String[] ortssuffix = new String[]{"heim","dorf","hausen","burg","ow","au","furt","stein","aue","finow","tal","thal"};
 
    // Straßen setzen sich ebenso zusammen aus Suffix und Präfix
    static String[] strassenprefix = new String[]{"Wald","Wiesen","Amsel","Drossel","Finken","Wasser","Sonnen","Schiller","Goethe","Nachtigall","Spatzen"};
    static String[] strassensuffix = new String[]{"straße","weg","gasse","allee","platz"};
 
    // Domains für die Email-Adresse
    static String[] domains = new String[]{".info",".de",".com",".info",".ac.uk",".ru",".ac.jp"};
 
    // um später ein paar Ersetzungen zu machen
    static String vname = "";
    static String nname = "";
 
 
    public static void main(String[] args) {
        // initialisiere den Zufallszahlengenerator
        Random generator = new Random(new Date().getTime());
        // wieviele Adressen sollen generiert werden
        int wieoft = 10;
        // Email-Adressen erstellen ja oder nein
        boolean email = true;
 
        for (int i=0;i<wieoft;i++){
            // Generiere Vor- und Nachnamen
            vname = vornamen[generator.nextInt(vornamen.length)];
            nname = nachnamen[generator.nextInt(nachnamen.length)];
 
            // Gib Vor- und Nachnamen mit eventuellem Initial aus
            System.out.print(vname + initial[generator.nextInt(initial.length)] +
                nname + "\n");
 
            // wenn nächste Random-Zahl < 3 dann generiere Adresszusatz
            if (generator.nextInt(100)<3){
                System.out.println(adresszusatz[generator.nextInt(adresszusatz.length)]);
            }
 
            // Generiere Strassennamen
            System.out.print(strassenprefix[generator.nextInt(strassenprefix.length)] +
                strassensuffix[generator.nextInt(strassensuffix.length)]+ " " + generator.nextInt(99) + adressinitial[generator.nextInt(adressinitial.length)] +  "\n");
 
            // Generiere PLZ und Ortsnamen
            System.out.print(format.format(generator.nextInt(99999)) + " " +
                ortsprefix[generator.nextInt(ortsprefix.length)] +
                ortssuffix[generator.nextInt(ortssuffix.length)]+"\n");
 
            // Wenn Email-Adressen generiert werden sollen, dann
            // ersetze Umlaute und generiere die Adresse
            if (email==true){
                vname = vname.replaceAll("ö", "oe");
                vname = vname.replaceAll("ä", "ae");
                vname = vname.replaceAll("ü", "ue");
                nname = nname.replaceAll("ö", "oe");
                nname = nname.replaceAll("ä", "ae");
                nname = nname.replaceAll("ü", "ue");
                nname = nname.replaceAll(" ", ".");
                System.out.println(vname.toLowerCase() + "." + nname.toLowerCase() + "@" +
                        ortssuffix[generator.nextInt(ortssuffix.length)] +
                        domains[generator.nextInt(domains.length)]);
        }
        // abschließendes \n
        System.out.print("\n");
        }
    }
}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Levenshtein mit R und der RecordLinkage Bibliothek

Mit RecordLinkagegibt es eine R Bibliothek, die den Levenshtein Algorithmus per DLL/SO bereitstellt. Hier ein Beispiel:

library("RecordLinkage")

# the absolute value of the Levenshtein distance
levenshteinDist("Uwe", "uwe")
# a similarity measure
# based on 1 - d(str1,str2) / max(A,B)
# with d as L. distance
# and A, B as lengths of strings
levenshteinSim("Uwe", "uwe")

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Minards Karte des Napoleonischen Russland-Feldzugs

Charles Joseph Minard war ein französischer Bauingenieur, dessen Karte der napoleonischen Verluste während des Russland-Feldzugs auch heute noch als eine der besten Visualisierungen gilt. Auf der folgenden Webseite findet man mehr Informationen dazu http://www.math.yorku.ca/SCS/Gallery/re-minard.html.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website