某储备粮的“学习笔记” - 2011年6月
http://blog.gregwym.info/2011/06/
by 咳嗽di小鱼
-
Java现学现卖之Layout Managers
http://blog.gregwym.info/java-xian-xue-xian-mai-zhi-layout-managers.html
2011-06-24T12:29:35+08:00
Java里一共提供了8种Layout Manager
BorderLayout
BoxLayout
CardLayout
FlowLayout
GridBagLayout
GridLayout
GroupLayout
SpringLayout
这其中最后两种是专门为GUI Builder设计的, 并不是很适合手动写, 我就没花时间研究, 但应该是这几种Layout Manager中, 灵活性最大的两种.网上有人说GridBagLayout是手写UI时`功能最强大的Layout...可一般强大就是复杂的代名词, 我也把它跳过了= =`(好吧, 我确实比较懒, 但更主要是时间不够)先说说基础,给一个container设置Layout使用 .setLayout(LayoutManager) 这个方法.针对不同的Layout, 添加component时候, .add()有时可能需要额外的参数然后来说说我玩明白了的几种LayoutBorderLayout这是所有content pane的默认Layout. 它将整个界面划分为PAGE_START, PAGE_END, CENTER, LINE_START, LINE_END 五个部分. 可以分别理解为一个页面的header, footer, content, left-sidebar, right-sidebar..add() 的时候需要在后边增加一个额外的参数, 标识这个component该被添加到哪个区域.例: pane.add(button, BorderLayout.PAGE_END);BoxLayout这个Layout适用于单纯的将components纵向或横向直线排列. 在Constructor中, 用X_AXIS或者Y_AXIS标识排列方向.BoxLayout本身无视components的 preferredSize, 但如果设置了maximumSize那就另当别论了. 这点在设置自适应宽度或高度的components时候, 很有用处.BoxLayout还有两个很有用的排版小工具, 通过 .add这几个小东西, 可以很轻松的调整Layout中的空间
Box.createHorizontalGlue(); 水平的自动填充空间
Box.createRigidArea(new Dimension(width, height)); 创建一个占据多大空间的空白
Trick: RigidArea的width或者height可以为0, 而且可以添加到任意其他Layout中FlowLayout这是JPanel的默认Layout. 和Box类似, 也是把components直线排列. 区别在于, 它更智能(当然有时候太聪明不是好事儿). 可以很方便的设置
.setAlignment() 左/右对齐
.setComponentOrientation() 从左到右/从右到左
.setHgap() .setVgap() components之间的水平/垂直间距
GridLayout这个Layout就是画格子. 把一个矩形空间分成n * m的格子, 可以自适应大小, 同Flow可以设置间距.其实还是很好用的, 但在排版中比较awkward...因为很多时候并不需要像表格一样的空间.创建方法很简单, new GridLayout(col, row);CardLayout 啊哈哈哈...这个我的最爱啊`!这个Layout其实就像一摞卡片, 每次你只能看到最上边的一张卡. 你可以按顺序前后切换, 也可以要求显示特定的一张, 在这次做翻页的时候非常给力!.add() 的时候, 需要增加一个额外的String参数, 标识这个card的name, 在.show(c, name)的时候会用到切换Card可以用.first(c) .last(c) .previous(c) .next(c)参考资料: enter link description here
-
这辈子写的第一个给人用的程序...
http://blog.gregwym.info/zhe-bei-zi-xie-de-di-yi-ge-gei-ren-yong-de-cheng-xu.html
2011-06-24T05:29:17+08:00
埋头写了3整天的code`...不用Interface Builder写GUI真是自虐啊`不过结果还是不错的`啊哈哈哈写的是个Twitter-like Web Service的客户端, 网页端在这里https://hci-courses.cs.uwaterloo.ca/channelw/不是开放注册, 但可以邀请...有人想玩玩看的话, 可以留言回复哈`Post上来得瑟一下Java运行文件下载:mikrocalendar.jar截图如下:
-
Linux的用户(user)和用户组(group)管理
http://blog.gregwym.info/linux-de-yong-hu--user--he-yong-hu-zu--group--guan-li.html
2011-06-04T15:10:35+08:00
Linux的多用户权限管理还是很强大的...熟悉了各种命令之后, 对每一个用户的权利可以说是操控自如.用户(user)和用户组(group)相关的配置文件、命令或目录
/etc/passwd 用户配置文件
/etc/shadow 用户密码影子文件
/etc/group 用户组配置文件
/etc/gshadow 用户组配置影子文件
配置文件的格式
/etc/passwd 的每一行采用以下格式:name:password:uid:gid:comment:home:shell
name 用户名
password 密码
uid 用户的UserID
gid 用户所对应默认用户组的GroupID
comment 备注
home 用户的主目录绝对路径
shell 用户登录的shell/任意命令的绝对路径
/etc/group 的每一行采用以下格式:group_name:passwd:GID:user_list
group_name 用户组名
passwd 用户组密码
GID 用户组GroupID
user_list 该组的所有用户
管理用户(user)和用户组(group)的相关命令useradd 添加用户
passwd 为用户设置密码
usermod 修改用户命令,可以通过usermod来修改登录名、用户的家目录等等;
pwcov 同步用户从/etc/passwd到/etc/shadow
pwck pwck是校验用户配置文件/etc/passwd和/etc/shadow文件内容是否合法或完整;
pwunconv 是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 查看用户信息工具
id 查看用户的UID、GID及所归属的用户组
chfn 更改用户信息工具
su 用户切换工具
sudo 通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
groupadd 添加用户组;
groupdel 删除用户组;
groupmod 修改用户组信息
groups 显示用户所属的用户组
gpasswd 将用户从用户组中添加/移除
grpck 校验用户组配置文件/etc/group和/etc/gshadow文件内容是否合法或完整;
grpconv 通过/etc/group和/etc/gshadow的文件内容来同步或创建/etc/gshadow,如果/etc/gshadow 不存在则创建;
grpunconv 通过/etc/group 和/etc/gshadow文件内容来同步或创建/etc/group,然后删除gshadow文件;
用户管理实例useradd visitor # 添加一个叫visitor的新用户(主用户组默认为同名)
passwd visitor # 给visitor添加密码
groupadd theme-park # 添加一个叫theme-park的用户组
groupadd city-park # 添加一个叫city-park的用户组
usermod -g theme-park visitor # 将visitor的主用户组修改为park
gpasswd -a visitor city-park # 将visitor添加到city-park用户组
参考资料:Linux 用户(user)和用户组(group)管理概述Linux 介绍和基本操作