Why don't current file systems implement garbage collection so that deleting a directory takes constant time (regardless of how many descendants it has)?
Google has done that See section 4.4 (page 8) of http://209.85.163.132/papers/gfs-sosp2003.pdf
My thoughts as an enterprise Java developer.
Friday, September 28, 2007
Subversion: Setting svn:keywords property
If you converted from cvs and need to set the svn:keywords property you can use the following script (doesn't handle spaces). I wrote this before I realized that cvs2svn already set the property and I therefore didn't need it.
#!/bin/bash
echo Seaching...
# Put Keywords up one directory so the 2nd-last greps don't search it.
grep -R -H "\$Date:" * | grep "\$Date:" > ../Keywords.txt
grep -R -H "\$Revision:" * | grep "\$Revision:" >> ../Keywords.txt
grep -R -H "\$Author:" * | grep "\$Author:" >> ../Keywords.txt
grep -R -H "\$Id:" * | grep "\$Id:" >> ../Keywords.txt
echo Setting Properties...
cat ../Keywords.txt | sed "s/:.*$//" | sed "s/^/\"/" | sed "s/$/\"/" | xargs -L 1 svn propset svn:keywords "Date Revision Author Id"
echo Results:
svn status
Tuesday, September 25, 2007
Remove empty Subversion directories
I couldn't find any scripts that would prune empty Subversion controlled directories so I wrote the following. Enjoy!
Update:
The script above doesn't handle spaces in the filename so use the following two scripts if you have spaces in any filename:
#!/usr/bin/bash
for i in `find . -type d -print -name ".svn" | grep -v "/\.svn"`
do
if [ -z "`ls -A $i | grep -v '\.svn' `" ]
then
echo Removing $i
ls -A $i
svn remove $i
fi
done
echo Results:
svn status
Update:
The script above doesn't handle spaces in the filename so use the following two scripts if you have spaces in any filename:
svnPrune.sh
#!/bin/bash
echo Searching...
find . -type d ! -path "*\.svn*" ! -name "\." ! -name "tags" ! -name "branches" -exec /svn/svnPruneDirectory.sh {} \;
echo Results:
svn status
svnPruneDirectory.sh
#!/bin/bash
directory="$*"
#echo Processing $directory ------------------------------------------------------
files=`ls -A "$directory" | grep -v '\.svn'`
#echo files=$files
childrenCount=`ls -A "$directory" | grep -v '\.svn' | wc -l`
#echo $directory: $childrenCount
if [ "$childrenCount" -eq "0" ]
then
echo Removing $directory
# echo $files
svn remove "$directory"
fi
Monday, September 24, 2007
Terminal window with 3 frames
I think it would be useful to have a terminal window with 3 frames.
What do you think? Does something like this exist?
- Output frame (At the top): Shows all program ouput and input/commands that the have been processed.
- Input frame (in the middle): Allows the user to enter standard input. Only show when a program is waiting for standard input.
- Command frame (at the bottom): Allows the user to enter commands.
- It would be obvious when I wrote a command that is waiting for user input.
- It could allow you to provide standard input via a command after running another command.
What do you think? Does something like this exist?
Friday, September 07, 2007
Java applet to check Java version
Out product only requires Java 1.4 (or higher) but we want to require Java 1.5. About 10% of applet requests used Java 1.4 so we want a way to notify the users who use Java 1.4 that they should upgrade. Searching with Google I couldn't find any such applet so here is my version.
JavaVersionCheck.class:
HTML:
JavaVersionCheck.class:
import javax.swing.*;
/**
* Prints the <code>message</code> if the java version doesn't match
* <code>javaVersionPattern</code>.
* @author James Stauffer
*/
public class JavaVersionCheck extends JApplet {
public void init() {
try {
String javaVersionPattern = getParameter("javaVersionPattern");
String message = getParameter("message");
if(VersionMatches(javaVersionPattern)) {
add(new JLabel(message));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static boolean VersionMatches(String javaVersionPattern) {
String javaVersion = System.getProperty("java.version");
return javaVersion.matches(javaVersionPattern);
}
public static void main(String args[]) {
if(args.length > 0) {
String javaVersionPattern = args[0];
if(VersionMatches(javaVersionPattern)) {
if(args.length > 1) {
System.out.println(args[1]);
} else {
System.out.println("Matches " + javaVersionPattern);
}
}
}
}
}
HTML:
<applet height="30" width="300" code="JavaVersionCheck.class">
<param name="javaVersionPattern" value="^1\.4.*">
<param name="message" value="Java 1.4 is not supported. Please upgrade to 1.5.">
</applet>
Subscribe to:
Posts (Atom)