Name: David Leimbach
Member since: 2000-07-18 18:44:24
Last Login: N/A
Notes: Working on stuff I don't care to talk about until it's released... if it gets released.
Been spending time studying things like Plan 9 and understanding the strengths of its design on some issues such as namespaces and thinking about how best to do it in Linux. Al Viro did a private namespaces in Linux hooking into the "clone" system call with additional flags. On FreeBSD this could be done in rfork() and on Mac OS X we don't have either of those so we'd have to find an appropriate mach_task setting or implement rfork to do something similar.
Private namespaces are very cool and can do away with such things as symbolic links and jails/chroots if implemented properly. DragonFlyBSD has an implementation of something called "variant symlinks" in which a special environemnt variable can complete a portion of a path for a symbolic link. /usr/lib/libqt.VAR.so could point to many different versions of qt based on an environment variable. Pretty neat stuff.
Not sure how far I'll get trying to implement stuff like that in xnu [darwin/Mac OS X kernel] but it's just for fun right now anyway.
I'm going to repartition my Firewire drive and get a bootable Panther installation on there for playing around.
Also documenting xar and trying to help it grow into a suitable archive format for a packaging system.
Still learning Scheme/Haskell/Lisp and doing the work stuff.
Moved from Mississippi to the Seatlle WA area back in June too. Lots of life changes... all good IMO.
26 May 2004 (updated 26 May 2004 at 06:20 UTC) »
For the hell of it I decided to write that "content_index" calculator in scsh.
With a lot of help from Riastradh on #scsh I've now got the following:
(let ((read-ls-output (field-reader (infix-splitter (rx (+ " ")) -8))))
(format #t "~A kilobytes"
(/
(fold + 0
(map string->number
(run/strings
(| (find "." -name "content_index" -print0)
(xargs "-0" ls -l)
(begin
(read-line)
(awk
(read-ls-output)
(record fields) ()
(#t (format #t "~A~%" (list-ref fields 4))))))))) 1024))(newline))
Which works but is incredibly ugly.
It performs the find as you would expect. Then I use the scsh "awk"-like functionality to filter out the 4th field [size]. run/strings builds a list of strings which I convert to numbers using map with string->number.
To sum the items I call fold with + and 0 [is the identity of addition]. I divide it by 1024 and use the result in a format statement [works like printf for scheme]. The let statement binds me an expression holding the result of field-reader which produces a function. The -8 means that I expect at least 8 records and the rest are seen as the final record. This is for
ls -lwhen you have files/directories with spaces.
Nasty eh?
There are better ways...
And here it is:
(begin (format #t "~A kilobytes" (/ (fold + 0 (map file-info:size (map file-info (run/strings (find "." -name "content_index"))))) 1024)) (newline))
Again... thanks fo Riastradh for teaching me about the REPL.
L8er...
http://ranchero.com/bigcat/
I was able to use this Finder plugin thingy to write a bash script that allows the tarring of many directories from finder with a few clicks.
here is the script:
#!/bin/sh# Tar directories.
while [ "$*" != "" ] do if [ -d "$1" ] then echo "tar cvfz $1.tgz -C `dirname $1` `basename $1`" tar cvfz $1.tgz -C `dirname $1` `basename $1` fi shift done
chmod u+x and stick it in ~/Library/Application\ Support/Big\ Cat\ Scripts/Files. Now select a bunch of directories and ctrl-click [right click] and find the scripts context menu and select whatever you named the above script.
It will echo what it's doing to the console log. If you don't want this behavior remove the echo line.
Saves me a bunch of time...
Dave
Other than that my work-work has picked up more again. This is good of course. I hate being idle.
Leimy certified others as follows:
Others have certified Leimy as follows:
[ Certification disabled because you're not logged in. ]
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!