Kategorier
Boktips

Javascript: The Good Parts

Javascript: The Good Parts är en bok skriven av Douglas Crockford. Boken handlar om de bra delarna av Javascript. Han är även uppfinnaren av Json.

Javascript: The Good Parts

Kategorier
Länktips Okategoriserade

JSHint.com

JSHint.com är en lite nyare sajt än JSLint.com för kolla kvaliteten på din JavaScript kod.

Kategorier
Länktips

JSLint

JSlint.com är en jätte bra sajt för kolla kvaliteten på din JavaScript kod.

Kategorier
Okategoriserade

Hello World!

JSguru.net

(function(){
    alert("Hello world jsguru.net is born");
})();
Kategorier
Java Programmering

Java concurrency in practice inlägg 2

Nu har det blivit lite förändringar i koden för mitt Memory spel igen. Jag har gått från en flerdimensionell array till Collections.synchronizedList(new ArrayList()); och sett att mina tester går igenom.

Kategorier
Java Programmering

Java concurrency in practice

Köpte en ny bok för inte så länge sedan om Java concurrency som verkar riktigt bra. Jag har börjat titta lite på vad jag kan göra med mina nyvunna kunskaper på mitt Memory spel. Memory spelet är hur som helst uppdaterat med små förbättringar i koden.

Kategorier
Javascript Programmering

localStorage test

Idag testade jag localStorage på en av mina sajter och jag måste säga att det är väldigt coolt 🙂

Jag valde att spara alla inmatning i localStorage tills man valt skicka väg formuläret. namnet på formulär fältet används som nyckel i localStorage men det det bör inte vara något större problem att kombinera formulärets id eller action attribut.

ls = {
set : function(name, value){
if(window.localStorage){
localStorage.removeItem(name);
localStorage.setItem(name, value);
}
},
get : function(name){
if(window.localStorage){
return localStorage.getItem(name);
}
},
clear : function() {
if(window.localStorage){
return localStorage.clear();
}
}
};

$(document).ready(function(){

$(":input").each(function(){
if($(this).val() == "" && ls.get($(this).attr("name")) != ""){
$(this).val(ls.get($(this).attr("name")));
}
});

$(":input").change(function(){
if($(this).val() != ""){
ls.set($(this).attr("name"), $(this).val());
}
});

$("form").submit(function(){
form = this;
$(form).find(":input").each(function(){
ls.set($(this).attr("name"), "");
});
});
});
Kategorier
Okategoriserade Programmering

Denna dag

Kategorier
Programmering Python

min loopia dns sync python modul

Laddade precis upp min python modul jag använder för synka några av mina domäner till http://pypi.python.org/pypi.

http://pypi.python.org/pypi/loopiadnssync/1.0.0/
https://github.com/plwebse/loopiadnssync

from loopiadnssync import LoopiaDnsSync

loopiadnsSync = LoopiaDnsSync("loopiaUserName", "loopiaPassword")

loopiadnsSync.addDomain("www.test.com");
loopiadnsSync.addDomain("test.com");
loopiadnsSync.syncDomains()

Och om kör koden ovanför så ser resultat ut ungefär så här:

python loopiadns.py
loopiadnssync: Sat, 16 Apr 2011 19:12:12
www.test.com, 127.0.0.1, nochg
test.com, 127.0.0.1, nochg
Kategorier
Programmering

Ta bort en nummerserie av filer

#!/usr/bin/env python

import sys, glob, re, os, getopt

def main (argv):

startMatch=""
fromIndex=-1
toIndex=-1
endMatch=""

options, reminder = getopt.getopt(argv, 's:f:t:e:', ['startmatch=', 'fromindex=', 'toindex=', 'endmatch='])

for opt, arg in options:
if opt in ('-s', '--startmatch'):
startMatch = arg
elif opt in ('-f', '--fromindex'):
fromIndex = int(arg)
elif opt in ('-t', '--toindex'):
toIndex = int(arg)
elif opt in ('-e', '--endmatch'):
endMatch = arg

if len(startMatch) > 0 and len(endMatch) > 0 and fromIndex > -1 and toIndex > 0 and fromIndex < toIndex:
files = glob.glob("*");
files.sort();

filesInRange = findFilesInRange(files, startMatch, fromIndex, toIndex, endMatch)
anwser = raw_input("Do you which to delete these files: " + str(filesInRange) +"?\n\n(y)es or (n)o:")
if anwser == "y":
for file in filesInRange:
os.remove(file)
else:
print """
rms.y usage

mandatory parameters --startmatch=, --fromindex=, --toindex=, --endmatch=

example: ~$ rms.py --startmatch='picture', --fromindex=3, --toindex=24, --endmatch='.jpg'
"""
sys.exit()

def isFileInRange (file, fileStartMatch, fromIndex, toIndex, fileEndMatch):
match = re.search('('+fileStartMatch+')([0-9]{1,100})('+fileEndMatch+')', file)
if (match and match.group(2) is not None):
fileIndex = int(match.group(2))
if(fileIndex >= fromIndex and fileIndex <= toIndex):
return file

def findFilesInRange(files, fileStartMatch, fromIndex, toIndex, fileEndMatch):
filesInRange=[]
for file in files:
outputFile=isFileInRange(file, fileStartMatch, fromIndex, toIndex, fileEndMatch)
if(outputFile is not None):
filesInRange.append(outputFile)
return filesInRange

if __name__ == '__main__':
main(sys.argv[1:])

Exempel på användning
Används på egen risk!


peter@E5410:~/bashtest$ ls
bild0.jpg    bild17.jpg  bild24.jpg  bild31.jpg  bild38.jpg  bild45.jpg  bild52.jpg  bild59.jpg  bild66.jpg  bild73.jpg  bild80.jpg  bild87.jpg  bild94.jpg
bild100.jpg  bild18.jpg  bild25.jpg  bild32.jpg  bild39.jpg  bild46.jpg  bild53.jpg  bild60.jpg  bild67.jpg  bild74.jpg  bild81.jpg  bild88.jpg  bild95.jpg
bild12.jpg   bild19.jpg  bild26.jpg  bild33.jpg  bild40.jpg  bild47.jpg  bild54.jpg  bild61.jpg  bild68.jpg  bild75.jpg  bild82.jpg  bild89.jpg  bild96.jpg
bild13.jpg   bild20.jpg  bild27.jpg  bild34.jpg  bild41.jpg  bild48.jpg  bild55.jpg  bild62.jpg  bild69.jpg  bild76.jpg  bild83.jpg  bild90.jpg  bild97.jpg
bild14.jpg   bild21.jpg  bild28.jpg  bild35.jpg  bild42.jpg  bild49.jpg  bild56.jpg  bild63.jpg  bild70.jpg  bild77.jpg  bild84.jpg  bild91.jpg  bild98.jpg
bild15.jpg   bild22.jpg  bild29.jpg  bild36.jpg  bild43.jpg  bild50.jpg  bild57.jpg  bild64.jpg  bild71.jpg  bild78.jpg  bild85.jpg  bild92.jpg  bild99.jpg
bild16.jpg   bild23.jpg  bild30.jpg  bild37.jpg  bild44.jpg  bild51.jpg  bild58.jpg  bild65.jpg  bild72.jpg  bild79.jpg  bild86.jpg  bild93.jpg  makefiles.sh
peter@E5410:~/bashtest$ rms -s'bild' -f0 -t19 -e'.jpg'
Do you which to delete these files: ['bild0.jpg', 'bild12.jpg', 'bild13.jpg', 'bild14.jpg', 'bild15.jpg', 'bild16.jpg', 'bild17.jpg', 'bild18.jpg', 'bild19.jpg']?

(y)es or (n)o: