Archive for October 18th, 2006

tree,linux(Unix)下按层级显示目录结构的脚本

因为想生成Grails创建的目录结构,就尝试ls命令,发现不能满足我的要求(能力不够),网上找到这么一个脚本Tree.sh,感觉不错,这里贡献下,顺便说下安装过程中碰到的一个小问题。
我在Ubuntu下直接下载tree.sh并按要求安装,然后运行tree,得到如下错误:

/bin/sh^M: bad interpreter: No such file or directory

一时没有了主意,还是google吧,结果很少,但不是零,打开页面一看,不知哪国语言,但稀里糊涂地感觉是文本文件的类型问题,想了想,还是自己创建个tree文件,然后把tree.sh里的内容copy过来好了,这招的确有效,不然还要找工具来转换,因为我还不知道什么工具能做这样的转换呢(Linux刚刚入门不到一个星期)。

#!/bin/sh

#######################################################
# UNIX TREE #
# File: ~/apps/tree/tree.sh #
# Version: 2.1 #
# Displays Structure of Directory Hierarchy #
# —————————————– #
# This tiny script uses “ls”, “grep”, and “sed” #
# in a single command to show the nesting of #
# sub-directories. #
# #
# Setup: #
# % cd ~/apps/tree #
# % chmod u+x tree.sh #
# % ln -s ~/apps/tree/tree.sh ~/bin/tree #
# #
# Usage: #
# % tree [directory] #
# #
# Examples: #
# % tree #
# % tree /etc/opt #
# % tree .. #
# #
# Public Domain Software — Free to Use as You Like #
# http://www.centerkey.com/tree #
#######################################################

echo
if [ "$1" != "" ] #if parameter exists, use as base folder
then cd $1
fi
pwd
ls -R | grep “:$” | \
sed -e ’s/:$//’ -e ’s/[^-][^\/]*\//–/g’ -e ’s/^/ /’ -e ’s/-/|/’
# 1st sed: remove colons
# 2nd sed: replace higher level folder names with dashes
# 3rd sed: indent graph three spaces
# 4th sed: replace first dash with a vertical bar
if [ `ls -F -1 | grep "/" | wc -l` = 0 ] # check if no folders
then echo ” -> no sub-directories”
fi
echo
exit

Share and Enjoy:
  • Digg
  • del.icio.us
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists
  • BlinkList
  • blogmarks
  • blogtercimlap
  • connotea
  • DotNetKicks
  • Fark
  • Fleck
  • Gwar
  • Haohao
  • IndianPad
  • Internetmedia
  • LinkaGoGo
  • MyShare
  • Netscape
  • NewsVine
  • Rec6
  • Reddit
  • Scoopeo
  • Slashdot
  • StumbleUpon
  • Technorati
  • Webride

Grails快速入门(Quick Start)

安装好Grails后,通过下面几步工作就可以创建一个简单的Grails项目,从中来体验下Grails多带来的便捷。
创建一个Grails项目:
grails create-app
提示输入程序名的时候输入你希望的名字(本例用的是project)
create-app:
[input] Enter application name:
project
生成的项目结构如下

/opt/grails/project
.
|-grails-app —>(对应ruby on rails的app目录)
|—conf —>放置配置文件,例如数据源的配置文件(对应ror的config目录)
|—controllers —>放置controller文件
|—domain —>放置domain class文件(对应ror的model目录)
|—i18n
|—services
|—taglib
|—views —>放置views文件(对应ruby on rails的views目录)
|—–layouts —>放置layouts文件(对应ruby on rails的layouts目录)
|-grails-tests —>和grails-app对应的,这个是测试文件的目录(对应ror的test)
|-hibernate —>hibernate配置信息目录(可选)
|-lib
|-spring —>spring配置信息目录(可选)
|-src
|—groovy
|—java
|-web-app
|—css
|—–tree
|——-check
|——-default
|——-folders
|——-menu
|—images
|—–tree
|——-check
|——-default
|——-folders
|——-menu
|—js
|—–prototype
|—–yahoo
|——-assets
|—META-INF
|—WEB-INF
|—–classes
|—–tld

配置数据源:(这步在我们的快速入门里可以暂时忽略)
Grails在grails-app/conf下创建了三个数据源配置文件,DevelopmentDataSource, TestDataSource, and ProductionDataSource分别对应了三种标准的环境
Grails默认帮我们设置了HSQLDB数据库(使用内存模式),这个有利于测试,但对实际部署没有多少意义。可以方便替换成想要的数据源,只要做相应的修改,并把所需的数据库驱动类库放入lib目录就可以了。
创建Domain Class:
cd project
grails create-domain-class

提示的时候输入你希望的domain class名(以book为例),Grails会在grails-app/domain目录下创建Book.groovy,此时Book.groovy的内容为:
class Book {
}

下面给book添加属性,
vi grails-app/domain/Book.groovy
class Book {
Long id
Long version

String title
String author
}

book对应的是数据库中的book表,Book中的属性对应的是book表中列,book表以及列会通过GORM自动生成
下面有必要创建些测试数据:
vi grails-app/conf/ApplicationBootStrap.groovy
class ApplicationBootStrap {

def init = { servletContext ->
// Create some test data
new Book(author:"Stephen King",title:"The Shining").save()
new Book(author:"James Patterson",title:"Along Came a Spider").save()
}
def destroy = {
}
}

创建Controller:
grails generate-all
生成grails-app/controllers/BookController.groovy
运行Grails:
grails run-app
Grails默认的测试环境是Jetty,默认端口是8080(这也许会和你的tomcat冲突),你可以自己指定端口,比如:
grails -Dserver.port=9090 run-app
下面在浏览器里看下你的成果http://localhost:8080/project/book/list 或者http://localhost:8080/project/book/(list是BookController的默认动作)。

此处截图就省略了。
感觉是比Ruby on Rails快。

Share and Enjoy:
  • Digg
  • del.icio.us
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists
  • BlinkList
  • blogmarks
  • blogtercimlap
  • connotea
  • DotNetKicks
  • Fark
  • Fleck
  • Gwar
  • Haohao
  • IndianPad
  • Internetmedia
  • LinkaGoGo
  • MyShare
  • Netscape
  • NewsVine
  • Rec6
  • Reddit
  • Scoopeo
  • Slashdot
  • StumbleUpon
  • Technorati
  • Webride

安装Grails

Grails是构建在开源技术如:Spring,HibernateSiteMesh之上的Web框架。它提供一个类似于Rails的平台可以无缝与Java平台相集成使得开发者能利用当前在Java和JDK方面的投入。Grails提供一个完整的开发平台包括内置Jetty web服务器并提供了一些强大的功能比如简单的对象关系映射(ORM),自动重新加载应用程序,为CRUD(新增,查询,修改,删除)操作提供代码自动生成支架(scaffolding)。此外Grails还提供了一些在Java中惯用的语法包括:运用AOP思想的拦截器,动态标签库,JSP和GSP (Groovy Servers Pages)支持。

Grails是Groovy on Rails的缩写,也就是Ruby on Rails(ROR)在java的一种实现,另外一种实现是JRuby on Rails(JROR)。
这里结合我在Ubuntu(在VMware workstation虚拟机上安装的Ubuntu的6.06 LTS Server)上的安装过程做个简要的笔记。
准备工作:
安装Java SDK 1.4或者更高版本,并设置好JAVA_HOME
安装步骤:
下载Grails最新版本,我下载的是Grails 0.3 development snapshot(tar/gz版本竟然连接错误,晕)
选择个目录解压缩Grails(我选择的是/opt/grails)
设置GRAILS_HOME环境变量
把Grails的bin目录添加到环境变量PATH中
命令行下测试下grails,如何看到帮助就说明你安装成功了。
以上步骤相关代码:

#get grails
wget http://build.canoo.com/grails/artifacts/grails-bin-0.3-SNAPSHOT.zip
#unzip grails and move to the directory you want.
unzip grails-bin-0.3-SNAPSHOT.zip
mv grails-bin-0.3-SNAPSHOT /opt/grails
#let shells has permission to execute
chmod 774 /opt/grails/bin/*
chmod 744 /opt/grails/ant/bin/*
#set environment variable
echo export GRAILS_HOME=/opt/grails>>/etc/bash.bashrc
echo export PATH=$PATH:$GRAILS_HOME/bin>>/etc/bash.bashrc
source /etc/bash.bashrc
#test
grails

Share and Enjoy:
  • Digg
  • del.icio.us
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists
  • BlinkList
  • blogmarks
  • blogtercimlap
  • connotea
  • DotNetKicks
  • Fark
  • Fleck
  • Gwar
  • Haohao
  • IndianPad
  • Internetmedia
  • LinkaGoGo
  • MyShare
  • Netscape
  • NewsVine
  • Rec6
  • Reddit
  • Scoopeo
  • Slashdot
  • StumbleUpon
  • Technorati
  • Webride