jquery.newsticker.js

2009 blev det här scriptet till.

/*
	Made By Peter Lindblom 2009
	http://www.plweb.se
	ver 1.000
*/

(function ($) {
	
	$.fn.startNewsTicker = function (settings) {

		var config = {
			startPosition: -20, 
			stopPosition: 100,
			pausPosition: 50,
			units: "px",
			waitToStartForMS:0,
			waitOnPausPositionForMS:1000,
			animationDelayMS:25
		};
		
		return this.each(function () {
			
			this.newsTicker = function (currentHtmlObj) {
				var childElements = [],
				currentElement = 0,
				lastChildElement = 0,
				startTimer = null,
				timer = null, 
				localConfig = $.extend({}, config, settings),
				delay = localConfig.animationDelayMS,
				
				startNewsTicker = function () {
					childElements = $(currentHtmlObj).children();
					lastChildElement = (childElements.length -1);
					
					$.each($(currentHtmlObj).children(), function () {
						$(this).css("top",localConfig.startPosition + localConfig.units);
						$(this).css("position","absolute");
						$(this).hide();
					});
					
					startTimer = setTimeout(tick, localConfig.waitToStartForMS);
				},
				
				tick = function () {
											
					if( (currentElement <= lastChildElement) && ( parseInt(currentJQueryObj(currentElement).css("top"),10) !== localConfig.stopPosition ) ){
						delay = localConfig.animationDelayMS;
						currentJQueryObj(currentElement).show();
						if (localConfig.startPosition < localConfig.stopPosition) {
							currentJQueryObj(currentElement).css("top", ( parseInt(currentJQueryObj(currentElement).css("top"), 10) + 1 ) + localConfig.units  );
						}else if (localConfig.startPosition > localConfig.stopPosition) {
							currentJQueryObj(currentElement).css("top", ( parseInt(currentJQueryObj(currentElement).css("top"), 10) - 1 ) + localConfig.units  );
						}
						
						if( parseInt(currentJQueryObj(currentElement).css("top"), 10) === localConfig.stopPosition ){
							currentJQueryObj(currentElement).hide();
							currentJQueryObj(currentElement).css("top",localConfig.startPosition + localConfig.units);
							currentElement = currentElement + 1; 
							if (currentElement > lastChildElement ){
								currentElement = 0;
							}
						}
					}
					
					if( (currentElement <= lastChildElement) && ( parseInt(currentJQueryObj(currentElement).css("top"), 10) === localConfig.pausPosition ) ){						
						delay = localConfig.waitOnPausPositionForMS;						
					}
					
					timer = setTimeout(tick, delay);
					
				},
				currentJQueryObj = function (pos) {
					return $(childElements[currentElement]);
				};
				
				startNewsTicker();
			};
			
			this.newsTicker(this);
			
		});
	};
	
		
	
}(jQuery));


Hitta bilder som inte har ändrats på ett tag och radera dem

Om du vill ta bort JPEG-bilder som inte har blivit modifierade på ett tag kan det här vara något för dig. Med find så kommandot i linux kan man söka efter filer per namn och senast ändrat tid och efter filtyp mm.

Här under använder jag find för att hitta alla filer som inte har ändrats på mer än sju dagar och slutar på *.jpg. Filerna som hittade skickas senare vidare till rm kommandot som tar bort filerna. Obs används på egen risk

find /home/peter/bashtest/ -mtime +7 -type f -name '*.jpg' -print0 | xargs -0 rm

Jag har kört detta bashscript innan för att testa kommandona ovan för att jag gillar tdd 🙂 Scriptet nedan skapar tomma filera med två olika ändringsdatum.

#!/bin/bash 

i=0
max=10
while [ "$i" -lt "$max" ]
do
	touch -am -t '201110090800'  "bild$i.jpg"
	touch -am -t '201110140800'  "bild$i$i.jpg"
  	i=`expr $i + 1`
done

http://www.computerhope.com/unix/utouch.htm
http://content.hccfl.edu/pollock/Unix/FindCmd.htm
http://linux.about.com/od/commands/a/blcmdl1_findx.htm

Från Perl till Python

Jag har roat mig med att skriva om ett Perl skript jag skrev för att ta backup på alla mina subversion repos till Python. Så här ser det ut nu. Det är inte riktigt färdigt än men nu känns mycket bättre helt plötsligt 🙂

#!/usr/bin/perl -w
use strict;

my $repoParentPath = "/var/svn/repos/";
my $copyToPath = "/home/backup/";

sub isRepo {
	my $dirPath = $_[0];
	my $pathToFormatFileInRepo = appendFileNameToPath($_[0],"format") ;
	my $cmd = "file -b ".$pathToFormatFileInRepo." 2>/dev/null";
	my $statResult = `$cmd`;
	chop($statResult);

	if($statResult eq "ASCII text"){
		return 1;
	}
	return 0;
}

sub doSvnDump {
	my $pathToRepo = $_[0];
	my $pathToDumpFile = $_[1];
	print "svnadmin dump ".$pathToRepo." > ".$pathToDumpFile."\n";

	my $statResult = system("svnadmin dump ".$pathToRepo." > ".$pathToDumpFile);
}

sub appendFileNameToPath {
	my $path = $_[0];
	my $fileName = $_[1];

	if(length($path) > 0){
		$path = substr($path, 0, (length($path) -1) );
		$path = $path.$fileName."\"";
	}
	return $path;
}

sub isDir {
	my $dirPath = $_[0];	
	my $cmd = "file -b ".$dirPath." 2>/dev/null";
	my $statResult = `$cmd`;
	chop($statResult);

	if($statResult eq "directory"){
		return 1;
	}
	return 0;
}

sub readDir {
	my $repoParentPath = $_[0];
	my @repos=();
	my $dirSeparator="/";

	opendir(my $DIR, $repoParentPath) or die ("Kunde inte öppna mappen");
	@repos =  readdir($DIR) or die ("Kunde inte läsa mappen");
	closedir($DIR);

	foreach my $repo(@repos) {
		if(-d $repoParentPath.$repo and $repo ne ".." and $repo ne "." ){
			my $currentRepo = "\"".$repoParentPath.$repo.$dirSeparator."\"";					
			if(isRepo($currentRepo) == 1){
				my $fileNameToDumpTo = appendFileNameToPath("\"".$copyToPath."\"",$repo.".dump");
				doSvnDump($currentRepo,$fileNameToDumpTo);
			}
		}
	}
}

sub main {
	my $repoParentPath = $_[0];
	if(isDir($repoParentPath) == 1 and isDir($copyToPath) == 1){
		readDir($repoParentPath);
	}else{
		die("Fel på sökvägar");
	}
}
main($repoParentPath);
'''
Created on 2010-08-14
@author: Peter Lindblom 
@contact: http://plweb.se
'''

import os, subprocess

class SubversionBackup:
    
    __fromDirPath = ""
    __toDirPath = ""
    __repos = [] 
      
    

    def doSvnDump(self):
        """ execute svn dump command on found repos """
        for repo in self.__repos:
            cmd = "svnadmin dump ""%s"" > ""%s""" % repo
            print cmd
            p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
            for line in p.stdout.readlines():
                print line,
            p.wait()

    def findReposInPath(self):
        """ find svn repos in fromDirPath """
        if(os.path.isdir(self.__fromDirPath)):
            files = os.listdir(self.__fromDirPath)
            for file in files:
                if(self.__isRepo(os.path.join(self.__fromDirPath, file))):                    
                    self.__repos.append( ( os.path.join(self.__fromDirPath, file), self.__makeToFilePath(file)))
    
    def setFromDirPath(self, fromDirPath):
        """ sets the directory from where look for svn repos """
        self.__fromDirPath = fromDirPath    

    def setToDirPath(self, toDirPath):
        """ sets the directory to where svn dumps while be created """
        self.__toDirPath = toDirPath    

    def resetRepos(self):
        """ sets repos to an empty list """      
        self.__repos = []    
    
    def reset(self):
        """ sets fromDirPath and toDirPath to an empty string and sets repos to an empty list  """
        self.__fromDirPath = ""
        self.__toDirPath = ""
        self.__repos = []
                                    
    def __isRepo(self, dirPath):
        """ check to see if the path is folder and the folder contains a format file """ 
        formatFilePath = os.path.join(dirPath, "format") 
        if (os.path.isdir(dirPath) and os.path.isfile(formatFilePath)): 
            return True
        return False

    def __makeToFilePath(self, file):
        """ ads .dump to file """
        file = file + ".dump"
        return os.path.join(self.__toDirPath, file)                
                                      
    def __init__(self, fromDirPath, toDirPath):
        """ make as an instance of SubversionBackup take """
        self.__fromDirPath = fromDirPath
        self.__toDirPath = toDirPath

    def __str__(self):
        return  "fromDir:"+ self.__fromDirPath + "\ntoDir:" + self.__toDirPath +"\nfoundRepos:" + self.__repos.__str__()