2010年12月6日星期一

TEMPFILEの作り直す

TEMP領域が一度使われたら、v$sort_segment内の数字は減らすことができません。
それをリセットする方法を紹介します。

1.TEMPDATAを削除
  alter database tempfile '/path/to/temp/file' drop;
2.TMEPDATAを追加しなおす
  alter tablespace temp add tempfile '/path/to/temp/file';

※TEMP領域名は temp とする場合

2010年11月26日星期五

ORACLE里面的统计行数

ORACLE里面有很多统计用的函数,比如COUNT, SUM, MAX, LAST_VALUE, FIRST_VALUE。
乍一看可能觉得很好理解,没什么复杂的。
但是如果一个窗口的概念不弄明白的话,你会觉得很复杂,很难用,然后怀疑这些个函数都不好用了。

比方说你想一张薪水的历史记录表,
salary_history
emp_id,
salary,
update_date

你想找出每个人最新的薪水的值
select last_value(salary) over (partition by emp_id order by update_date rows between unbounded preceding and unbounded following) from salary_history;

其中 rows between unbounded preceding and unbounded following 就是指定了窗口:所有的数据。
如果不指定的话,默认的窗口是 range between unbounded preceding and current row,也就是当前记录为止的所有记录。

这个默认窗口只是对有order by的数据才有效, 而max, count函数如果不指定order by, 那么他的对象就是所有的数据。这点在ORACLE的文档里并没有提及的。

2010年11月9日星期二

通过表移动来提高Oracle表的空间利用率

表经过多次的插入,更新,删除之后,会存在断片化的问题。表空间的使用率降低,而且影响性能。
可以用以下的方法来改善。

alter table tab1 move;
alter index tab1_ind1 rebuild;
alter index tab1_ind2 rebuild;

表的移动,内部动作是把表数据拷贝到临时表空间,复制处理结束后,切换掉旧的表空间,所以需要有空余的表空间才能支持这个操作。
索引重建是因为旧的ROWID发生变化,导致无效

2010年11月8日星期一

oracle v$session v$process

v$session 里面有关于进程process的信息,那个客户端的信息, 而v$process里面的spid是oracle服务进程的ID,不要搞混了。

v$session里面的process列里面有的时候显示 196:1148, 2段信息是客户端自己的序列号

这两个视图由以下相连接

v$session.paddr = v$process.addr

2010年11月4日星期四

/proc/cpuinfoの見方

# cat /proc/cpuinfo |egrep 'physical id|core' |sort

1个物理CPU,4个Core,单线程

core id         : 0
core id         : 1
core id         : 2
core id         : 3
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0


2个物理CPU,2core,2线程

core id         : 0
core id         : 0
core id         : 1
core id         : 1
core id         : 2
core id         : 2
core id         : 3
core id         : 3
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
cpu cores       : 4
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1

2010年10月8日星期五

小技巧:如何把竖着排列的数据转换成横着排列

最开始想到的是用 xargs 命令,这样就可以把数据显示出来了。

cat filename  | xargs

但是xargs是专为执行命令开发的,所以当数据头尾有双引号或者单引号是会被删掉的。
之后想到的是用替换命令把行尾的回车替换成空格

cat filename | sed -e 's/\n/ /'
可惜sed对回车的正规表达式支持不够。

最后我改用perl,perl的正规表达式很强,该有的都有,不该有的也有:)命令如下
cat filename | perl -pe 's/\n/ /'

perl对处理文字方面的确很强。可以与其他命令串联组合使用,很实用。

2010年9月23日星期四

在Linux下安装无线网卡

LInux有一个名为NdisWrapper的工具转换Windows的无线驱动。

1.下载NdisWrapper程序
  从Google上搜索NdisWrapper,并下载。 我的为 ndiswrapper-1.56.tar.gz
2. 复制到 /usr/local/src
3. 解压
  tar zxvf ndiswrapper-1.56.tar.gz
4. 编译并安装
  cd ndiswrapper-1.56
  make
  make install
如果没有安装开发环境,要先安装
我的环境是CentOS,用以下命令
  yun groupinstall 'Development Tools'
5. 下载无线网卡的驱动
  我用的是buffalo的WLI-U2-KAMG54
6. 解压
  下载文件为wdrv-1052.exe,是用lha压缩的 (type wdrv-1052.exe 可查看到)
  下载Linux下的lha包
  rpm -ivh lha-xxxx.rpm 安装lha
  lha e  wdrv-1052.exe
7. 安装驱动
  cd到相应的驱动的目录下,下面还有win98, win200, vista三个版本,我使用了win2000
 下面有好几个文件,使用以 .inf  结尾的文件 netkamg.inf, netkamgl.inf
  ndiswrapper -i netkamg.inf
  ndiswrapper -i netkamgl.inf
8. 启动无线卡
  ndiswrapper -m # 建立一个名为wlan0的假名
  ifconfig wlan0 up  # 启用wlan0
  ifconfig  # 确认启动
  iwlist wlan0 s  # 搜索无线网络
9. 之后你就可以用iwconfig设置无线参数使用他了

2010年9月17日星期五

和老外在网上聊,必知的缩写(ZT)

asl是Age, sex and location 的所写,年龄,性别和地址(国籍) lol是laugh out loud的缩写,意思是大声笑,笑的很开心的样子
ppl=people
bbs=be back soon=很快回来
thx=thanks % i3 D! }5 U, o. L2 W2 q
ur=your - n+ i! \1 u+ e$ s+ W/ W, h2 B
asap=as soon as possible
g2g = got to go + g. h% i7 }: S( i
ttyl = talk to you later
brb = be right back 6 K+ |0 p7 L3 O% \$ ^6 Y) t+ b- {) v
bbl = be back later
bio brb=上个厕所就回( N; H! X! Z2 f! s/ ?; J  m% o9 P
afk = away from keyboard (away) ; [5 K+ N( Y; s# F2 X, b
u = you
plz = please 4 P1 L: e. c' Q( M9 u8 ]
y = why * N0 [5 d" o- K0 Z1 @( b
w8 = wait
l8er = later & a" ?! X/ t+ M. _, V
cya = see ya (later)
nvm = nevermind
nm = not much
gl = good luck
gf = girlfriend , A! {; q' `/ g; P! b
bf = boyfriend
luv=love
RUOK=are you ok?3 b1 X9 x: d0 s6 f" h: a
sp=support
cu=see u( U( [4 e+ w& m+ n; A% j8 d& W- s* [
cul8er= see you later
ft=faint
ic=i see
soho=small office home officer- k- u8 S( y4 ^( w# C7 }% {
btw=by the way
gn=gn8=gnight=good night=晚安) U, A) j6 [- V8 Q. ~) {
nn=nite=晚安
说明:一般第一个人常说gnight/gn8,然后第二个人用nite,后面的用nn什么的都可以了。不要问我为什么,约定俗成而已。1 P7 }" k) l* N2 [! E3 E
hiho=hola=yo=hi=hey=hellow=ello你好,大家好
wuz up=sup=what's up=(原意:怎么样你?/有什么事儿嘛?)也可作为问好用(当然是比较熟的两个人之间的问候),回答时有事说事,没事用"nothing/nothin much/not much/nm等回答就可以。" t2 x- E# e' G. E0 h2 `: J
OMG=oh my god=我的天;我靠!
OMFG=oh my fucking god=我的老天;我靠靠;
wtf=what the fuck=怎么会事!?;我日!;
OMGWTFBBQSOURCE !!!表震惊到了极致. / q# N* W5 o/ T
n1=nice 1=nice one=漂亮
pwnz=ownz=牛比!(例句:pwnz demo!;lefuzee ownz all the others!). R  ^  u8 m1 D
rullz=强!(例句:lefuzee rullz!;you guyz rull!!!)% y' L, p/ X: j+ M
you rock!=你牛比!
lmao=laughing my ass off=笑的屁股尿流/ P) d) n, d1 a" b, W  f9 S
rofl=roll on floor laughing=笑翻天了
roflmao=rofl+lmao=笑到爆了!! p, k1 h1 x0 v
语气强度排序:hehe

---其他简写---
1,FU=f uck you=*你;滚
2,STFU=Shut the f uck up!=他妈的给我闭嘴!# R- T7 P( v- p4 i/ L2 u4 G  U
3,k=ok=okay=okie=好的,恩. X1 M" t2 M; W
4,sux=suck的第3人称单数形势(例句:that sux)=sb;滥/ E# w: D: }: v. f' |% c- C  m9 E2 \
5,gimme=give me=给我
6,xfer=transfer=传输4 y$ V. z2 |- c  W- V8 Z- A8 d
7,em=them=他们的宾格
8,thx=thanks=谢谢$ p4 _: ^8 ^( c% Y; o
9,happy bday=happy b-day=happy birthday!=生日快乐( _& e( E# G4 j- q
10,dunno=dont know=不知道
11,kinda=a little bit=有点(例句:The game is kinda hard for me.i kinda think i should get it done as soon as possible.)
12,tho=though=虽然尽管(例句:That demo was very nice,kinda old tho.那个demo很不错,虽然有点老)
13,plz=please=请: k, P/ q6 P9 m
14,cmon=c'mon=come on
15,suka=s ucker suck(吮吸),er(表“人”),吮吸的人...没天真到无邪的人都能明白了。
16,enuff=enough=足够& Y0 q/ J( [" Y* U6 M
17,hax=hack=cheat=作弊,说谎(很地道时尚的词,老外用的比较多); G7 \5 h" S& z: v
18,ty=thank you 原本用的不多,不过现在又开始兴起来了2 l* J8 z3 p: S1 Q* N
19,conn=connection=线路,网络,网络类型 (例句:what conn do you have? / cable )
20,asap=as soon as possible 尽快
21,imo=in my opinion 我认为
22,smh=shake my head (摇头叹气)
23,dayum=damn=dang3 x  E; K' T% A5 e
24,ttyl=talk to you later$ ^  h' I# v# m2 ^* l
25,b/c=because" e9 C) B7 R4 e! I% k! W/ R
26,j/j=j/k=j/p=just joking, kidding, playing (开玩笑)
27,w/=with! h: l4 Q2 }5 J5 |/ \3 y
28,w/o=without% B6 }2 T9 \& b* \* E
29,holla=来和我讲话,also, holla at yo boy, holla at yo girl etc.8 L3 A, o1 |; J/ @, @( b: Q2 c- n
30,atcha=at you
31,gotcha?=got you?
) b) x" B8 t6 n5 G( u" J8 |( k
4 U5 o# e: u3 P' ~2 p
---特殊用语---
1,w00t=woot=what=虾米?!主要表示what和yeah的意思,例如惊叹和兴奋。, T, `, Z& m- ?  Y( _9 O
2,1337=l337=l33t=leet=elite=很强,超强的西西(例句:l33t demo;lefuzee is l337!!!!)
3,lame=滥;衰 (例句:dude,thats the lamest thing ive ever heard.哥们,这是我听过的最sb的事情。)% C) ~* z2 v) x; ]) J! D
4,dude=d00d=(原意:花花公子)哥们,朋友* p% @1 a7 @$ R
5,pffffff=whatever=随便;爱咋咋地; ("f"的多少和"pffffffff"的长短代表你的感情激烈程度)$ Z/ J0 A+ K% X
6,n00b=newbie=新人,新手;小嫩手
7,sry=不好意思;
---表情符---
:  )7 P+ W! O+ l6 Z+ U8 b
; D
; o* @3 Y* j- h. i( Y! `  X
; o: m% t+ |. c0 ]7 L+ W
: > --- (gay smile)
\o/ --- (欢庆)
\\o --- (欢庆)
o// --- (欢庆)# t2 \( `( w: x5 o* N! \; ]8 O
D: --- (吃惊)
Oo=O_o=虾米!(挣大眼睛表示惊叹)* d. U9 c9 r, ]6 J9 T* m9 N
<3=心,表示喜爱  X+ a: g5 H8 S* l4 W0 l4 {
2=to
4=for( u9 ?, B/ N. Y0 u: H1 }0 W  `
B=be7 X$ c$ _1 t/ W) K9 z" n
U=you4 b! o! G8 W+ {4 X& e! B) I# n; L  |/ o
R=are* H& b% M6 r" q: s8 V2 u
C=see
AFK=away from keyboard
ASAP=as soon as possible1 z0 J$ j  D- M
BTW=by the way
BBIAM=be back in a minute7 V, v9 A" Q+ Z
CU=see you
CUL=see you later7 p2 q3 ^  q0 A5 w2 Y, c
CWYL=char with you later
FE=for example  C$ B1 M) U& Z0 c2 l
F2F=face to face
FYI=for your information(供参考)
FYR=for your reference7 |) ?9 K. [5 t: V1 f8 U7 e
FU=...这个不用说了吧 0_0
GL=good luck
GTG=got to go: _  d( p: `$ j
GTH=go to hell
HTH=hit the hay(睡觉去了,hay:床)
IAC=in any case
ILY=i love you  a& a4 S5 y0 T1 |! \2 `, `# m
IMO=in my opinion! E  z  N% {! a% {) Q
KIT=keep in touch+ W1 h' m+ }9 r( o& k: L3 K8 W
NRN=no reply necessary(不必回信): y: y* h$ _; ~# @$ X
NP=no problem" l. c8 o* h6 {( a8 |
OMG=oh my god
OIC=oh i see# ~, |/ K+ X* q! g2 K# q4 R, E, ^
OTOH=on the other hand
ORLY=oh really?* j) l- ]5 S. |, Q! T$ p2 _  R
PEM=privacy enhanced mail(保密邮件)
RSN=real soon now(马上)
TM=trust me" U1 G5 U& W$ `$ O& I
WB=welcome back( @& b7 X9 q- g8 M( M$ j5 A+ `6 b2 |
WTG=way to go
WYP=what's your problem?


FROM: http://www.xiaochuncnjp.com/thread-1203466-1-1.html

2010年8月16日星期一

Ruby语言里面block, Proc, lambda的区别

简而言之Proc就是可变的block,是可插入代码段。
而lambda是可变函数。

Proc与lambda有以下区别
1.lambda检查参数个数
2.Proc的返回值为函数返回值。return之后的代码不执行。

http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/

2010年8月12日星期四

百度小说阅读背景文字变换

把下面的链接拖动到浏览器工具栏里,点击即可改变背景颜色,文字颜色与大小。

Change font and color

2010年8月3日星期二

PCのWIFIを通してIPHONEからインターネットアクセス方法

http://d.hatena.ne.jp/adonishi/20080912/1221232426


Windows-XPとiPhoneでのWifiルーター化
iPhone | 00:13

さてはて、先日(ちと遅い)夏休みとして、青春18きっぷで奈良へ行ってきました。もちろん鈍行乗り継ぎなので、片道9時間ぐらいかかります。半分ぐらい寝てましたが、後の半分はiPhoneに大量に入れていった、DVDなどから変換したビデオを見てました。おかげでぜんぜん飽きずに9時間(x2)が終わって楽勝でしたよ。

その時、一緒に持っていったラップトップ(Windows-XP SP3)で、iPhoneをWifiルーターとして上手く使う方法を確立したので、まとめて見ます。(今まで何度か試していたのだけれど、いまいち上手く行っていなかったのでした。結構めんどうくさいです。)

基本的な方針
WindowsからJailbreakしたiPhoneへWifi接続(adhoc)をした後に、PuttyのSOCKSフォーワーディング機能を使って、windowsからの接続をiPhone経由で3Gネット側へ確立できるようにする。

(しかし、そう簡単には行かないんだよなぁ、これが、、、)

必要なプログラム等
Putty - http://www.chiark.greenend.org.uk/~sgtatham/putty/
FreeCap - http://www.freecap.ru/eng/
そしてもちろんJailbreakしたiPhone
設定
Wifi接続の設定
まずWindowsとiPhoneをWifiで接続しますが、一対一での接続でいいのでadhoc接続をします。

ここでは、iPhoneのIPアドレスを10.0.0.1、Windows側を10.0.0.2とします。

まず「ネットワーク接続」開いて(「スタート」->「接続」->「すべての接続を表示」)、ワイヤレス・ネットワークの接続を探します。
そのプロパティを表示し「ワイヤレス ネットワーク」のタブを選びます。
一番下の「詳細設定」を押して、「アクセスするネットワーク」の中から「コンピューター相互(ad hoc)のネットワークのみ」を選びます。(後で戻しておくと良いでしょう。)
「詳細設定」を閉じて「プロパティ」に戻り、「優先ネットワーク」の「追加...」を選びます。
「SSID」を適当なものに(ここでは「adhoc」)設定、「キーは自動的に提供される」のチェックをはずす。
「ネットワークキー」とその入力確認が入れられるようになるので、適当なパスワードを(5文字、もしくは13文字)を両方へ入力
「OK」を押して「プロパティ」に戻り、また「全般」のタブに戻る。
「インターネット プロトコル(TCP/IP)」を選択し、「プロパティ」を押す
「次のIPアドレスを使う」を選択し、「IPアドレス」に「10.0.0.2」、「サブネットマスク」に「255.0.0.0」、「デフォールト ゲートウエイ」に「10.0.0.1」を入力
「OK」で「プロパティ」へ戻り、また「OK」で「プロパティ」を閉じる
これで設定は終了。接続してiPhone側の設定をします。

iPhone側で「設定」->「Wi-Fi」に「adhoc」が出ていたらそれに接続、無かったら「その他…」を開き、名前:「adhoc」、セキュリティ:「WEP」、パスワード:(さっきWindowsで設定したパスワード)を入力し「Join」します。
Windows側で、「ネットワーク接続」にある、ワイヤレス・ネットワークの接続をダブルクリックして「ワイヤレス・ネットワークの選択」を表示します。
登録した「adhoc」が見えるので、それを選択して「接続」を押します。
接続できたらiPhone側上で、この「adhoc」接続の設定を開き、IPアドレスの設定を「DHCP」から「静的」にします。
「IPアドレス」を「10.0.0.1」に、「サブネットマスク」を「255.0.0.0」にします。


これで、設定できました。

メモ:通常Windows同士でad hoc接続をする時には、IPアドレスはWindowsが擬似DHCPサーバーになってくれるので、お互いに相手先からIPアドレスが取れます。しかし、iPhoneはこれをしてくれないので、今回の場合iPhone側はIPアドレスが取れますが、Windows側はIPアドレスが取れません。なので、静的にIPアドレスを設定してやる必要があります。
こうすると、他のWiFiアクセスポイントに接続する場合などに、非常に不便なので、「ヴァルヘルIPコンフィグ」 - http://www.valsoft.jp/delphi/vipconfighp.html 等の設定スイッチ・ユーティリティを使用することをお勧めします。
SOCKSトンネルの作成
次にPuttyでiPhoneにアクセスしてSOCKSトンネルを作ります。

あまり知られていないのかもしれませんが、Putty(もしくはOpenSSH)には、SSHアクセスの他に、特定のポートのフォーワーディングや、SOCKSによるダイナミックなフォーワーディング(トンネリング)を作ることができます。今回はこの機能を使って、Windows上にSOCKSポート(localhost:1080)を作って、iPhone上までトンネルを作ります。

まずPuttyを立ち上げて、iPhone Wifiルーター用の設定を作ります。
「ホスト名(または IPアドレス)」に「10.0.0.1」を入れます。
「カテゴリ」から「接続」を選び、「keep aliveの間隔(秒、0でオフ)」を2秒程度に設定します。
「カテゴリ」から「接続」->「SSH」->「トンネル」を選びます。
「源ポート」に「1080」を、「送り先」に「localhost」、その下のラジオボタンを「ダイナミック」にします。
そこで「追加」ボタンを押します。(すると上のリストに「AD1080」と表示される)
また、最初の所へ戻るために、「カテゴリ」から「セッション」を選ぶ。
「保存されたセッション」の所へ適当な名前を付けて保存を押す。(「iPhoneAdhoc」など)
これでトンネル設定、終了です。

iPhoneにWifi接続後、Puttyでこの設定を読み込んで「開く」をすれば、SSH接続のウインドウが表示され、それと同時にSOCKSトンネルが確立されます。(閉じる時には、SSHのウインドウに「exit」と入れれば閉じます。)

メモ:この設定の途中で「keep aliveの間隔」を数秒に設定していますが、これをしないとWiFi接続がすぐに切れてしまいました。それの対策として設定しています。(ここがまた、はまった所だったのでした、、、)
SOCKS用のユーティリティFreeCap を設定する。
この状態でSOCKSトンネルが動いているので、一応、SOCKS対応のIEやFirefoxの設定でこれを指定してあげれば、接続できるのですが、DNSがSOCKSに対応していないため名前が引けないのと、毎回SOCKSの設定するのが面倒なので、ここは登録したアプリケーションのすべてのアクセスを強制的にSOCKS経由にするFreeCapと言うユーティリティを使うことにします。( http://www.freecap.ru/eng/ )

FreeCapを立ち上げて「File」メニューから「Settings」を選びます。
「Default Proxy」の「Server」に「localhost」を、「Port」に「1080」を入れて「OK」を押します。
「File」メニューから「New Application」を選びます。
アプリケーションの設定画面が出るので「Browse...」を押してSOCKS上で使うアプリケーションを選びます。
すると、必要な情報が入るので問題なさそうなら「Ok」を押します。
メイン画面に設定したアプリケーションが現れるので、それをダブルクリックするとSOCKS対応状態でアプリケーションが開きます。

ふう、大変長い設定でしたが、これで、iPhoneをWifiルーターとして使えるようになります。

2010年7月14日星期三

Oracle查询里面用正规表达式

Oracle10g开始支持正规表达式的查询了。

例子

SELECT statistic#, name, class
FROM v$statname
WHERE REGEXP_LIKE (name, '(pga|uga)');

2010年7月9日星期五

Linux画面解像度設定

我的显示器经常不能识别出来,很多时候都是800x600的解析度。
下面是1024x768时的设定,供参考

在Centos里面无需手写,用system-config-display来设置。

cat /etc/X11/xorg.conf
# Xorg configuration created by system-config-display

Section "ServerLayout"
Identifier "single head configuration"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp"
EndSection

Section "Monitor"

### Comment all HorizSync and VertSync values to use DDC:
Identifier "Monitor0"
ModelName "LCD Panel 1024x768"
### Comment all HorizSync and VertSync values to use DDC:
HorizSync 31.5 - 48.0
VertRefresh 56.0 - 65.0
Option "dpms"
EndSection

Section "Device"
Identifier "Videocard0"
Driver "savage"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection


另外用

gtf 1024 768 60

# 1024x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 64.11 MHz
Modeline "1024x768_60.00" 64.11 1024 1080 1184 1344 768 769 772 795 -HSync +Vsync

可以得到modeline的值,有需要可把这行粘帖到Monitor区里面

2010年6月9日星期三

VIM comment out map

" lhs comments
vmap ,# :s/^/#/:nohlsearch
vmap ,/ :s/^/\/\//:nohlsearch
vmap ,> :s/^/> /:nohlsearch
vmap ," :s/^/\"/:nohlsearch
vmap ,% :s/^/%/:nohlsearch
vmap ,! :s/^/!/:nohlsearch
vmap ,; :s/^/;/:nohlsearch
vmap ,- :s/^/--/:nohlsearch
vmap ,c :s/^\/\/\\|^--\\|^> \\|^[#"%!;]//:nohlsearch

" wrapping comments
vmap ,* :s/^\(.*\)$/\/\* \1 \*\//:nohlsearch
vmap ,( :s/^\(.*\)$/\(\* \1 \*\)/:nohlsearch
vmap ,< :s/^\(.*\)$//:nohlsearch
vmap ,d :s/^\([/(]\*\\|\)$/\2/:nohlsearch

" block comments
vmap ,b v`k0i/*`>j0i*/
vmap ,h v`k0i


ref http://nanasi.jp/articles/vim/commentout_source.html

2010年6月7日星期一

Oracle管理常用SQL文

查看管理者权限
SELECT grantee FROM dba_role_privs WHERE granted_role = 'DBA';

查看SYSDBA权限
SELECT * FROM v$pwfile_users;

表空间追加数据文件
ALTER TABLESPACE 表空间名 ADD DATAFILE 'データファイル' SIZE 大小KM;

改变数据文件大小
ALTER DATABASE 数据库名 DATAFILE '文件名' RESIZE SIZE 大小KM;

表领域情报
DBA_TABLESPACES
V$TABLESPACE

数据文件
DBA_DATA_FILES
V$DATAFILE

查看数据库运行模式
ARCHIVE LOG LIST

临时文件
SELECT * FROM v$tempfile;

数据文件
SELECT * FROM v$dbfile;

查看恢复文件
SELECT file#, online_status, error FROM v$recover_file;

查看控制文件
SELECT status, name FROM v$controlfile;

查看Oracle错误代码详细信息
-- ORA-00205
SQL>!oerr ora 205

查看死锁
SELECT sid, s.username, l.type, l.id1, l.lmode, l.block, l.request, l.ctime
FROM v$lock l JOIN v$session s USING (sid)
WHERE s.type = 'USER';

中止会话
ALTER SYSTEM KILL SESSION 'SID列値, SERIAL#列値;

2010年6月6日星期日

在Ubuntu下安装Oracle10 XE

原本想试试在Ubuntu下面安装Oracle11g。
看了文档才知道Oracle企业版还不支持Debian分支。目前还只支持Redhat Enterprise Linux环境。
所以熟悉RedHat环境还是很重要。

因为Oracle11g至少需要1G的内存,我的旧电脑没法满足这个条件,所以也就没有换成Redhat系统。

Oracle有一个称为XE的免费版支持Debian分支。除了连接数限制,Web管理界面不同之外,学习用途也足够了。
所以下面我就贴出来OracleXe的安装步骤

1.在/etc/apt/sources.list加入下面一行
deb http://oss.oracle.com/debian unstable main non-free
2.导入GPG密钥
wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
3.更新apt数据
sudo apt-get update
4.安装OracleXe
sudo apt-get install oracle-xe-universal
5.配置Oracle数据库
sudo /etc/init.d/oracle-xe configure
6.设置环境
在 ~/.profile 文件中加入
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID=XE
export PATH
执行
source ~/.profile
7.允许外部访问管理页面
sqlplus sys as sysdba
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
8.访问管理页面
http://[serverip]:8080/apex

2010年6月2日星期三

Linux環境で日本語文字化け対応

たまにシステム内にShiftJISのロケールがなかったりします。
その時はmanマニュアルを参照すると文字化けします。

対処としては下記のように

function manj() { LANG=ja_JP.UTF-8 man $* | iconv -f utf8 -t sjis | less; }

それでmanの代わりにmanjを使えば日本語正しく表示されます。

Character set in Oracle

show database's character set used in datafile.

SELECT * FROM v$nls_parameters
WHERE parameter = 'NLS_CHARACTERSET';

or

SELECt * FROM nls_database_pramaters
WHERE parameter = 'NLS_CHARACTERSET';

set client character set
#以下の例は日本語のShiftJISを使用する
NLS_LANG=Japanese_Japan.JA16SJIS

2010年5月27日星期四

Makefile的例子

Makefile的例子

#CC=cc
PROC=${ORACLE_HOME}/bin/proc

PROC_INCLUDES=\
      include=$(ORACLE_HOME)/precomp/public \
      include=$(ORACLE_HOME)/rdbms/public \
      include=$(ORACLE_HOME)/plsql/public \
      include=$(ORACLE_HOME)/network/public

PROCFLAGS=code=ansi_c \
          lines=yes \
          parse=full \
          char_map=string \
          dbms=V8 \
          unsafe_null=yes \
          $(PROC_INCLUDES)

CFLAGS=-O4 -trigraphs -g -Wall -D DEBUG\
      -I$(ORACLE_HOME)/precomp/public \
      -I$(ORACLE_HOME)/rdbms/public \
      -I$(ORACLE_HOME)/plsql/public \
      -I$(ORACLE_HOME)/network/public

LDFLAGS=-L${ORACLE_HOME}/lib -lclntsh

TARGET=yumlog
OBJECTS=main.o insert.o

.SUFFIXES: .pc .c .o

all: ${OBJECTS}
 ${CC} ${CFLAGS} ${LDFLAGS} ${OBJECTS} -o ${TARGET}

.c.o:
 ${CC} ${CFLAGS} -c $<

.pc.c:
 ${PROC} ${PROCFLAGS} $<

clean:
 rm -rf main.o insert.o insert.c yumlog tp* insert.lis

2010年5月21日星期五

Set utf8 for all MySQL encoding

[mysqld]
#
# * Using utf8 for all encoding
#
default-character-set=utf8
skip-character-set-client-handshake
# end add by yz_wang

ubuntu字体包

#requirement
ttf-dejavu
ttf-dejavu-core
ttf-dejavu-extra
ttf-liberation
ttf-mscorefonts-installer
ttf-opensymbol
ming-fonts-opensymbol
ttf-sazanami-gothic
ttf-sazanami-mincho
ttf-wqy-zenhei

#optional
ttf-arphic-bkai00mp
ttf-arphic-bsmi00lp
ttf-arphic-gbsn00lp
ttf-arphic-gkai00mp
ttf-arphic-ukai
ttf-arphic-uming
ttf-kochi-gothic
ttf-kochi-mincho
ttf-sawarabi-gothic

Ubuntu系统启动程序管理

系统启动程序管理

添加
sudo update-rc.d mysql default

删除
sudo update-rc.d mysql remove

2010年5月19日星期三

Install ndiswrapper on Ubuntu

很多的无线网卡没有Linux下的驱动,如果想在Linux下面使用无线网卡的,可以使用ndiswrapper来安装Windows下的
驱动到Linux下。

这边我用的是 Buffalo出的 WLI-U2-KG54L USB型无线上网卡

Ubuntu: 9.10

1. 禁用Linux自带的zd1211rw驱动程序
在/etc/modprobe.d/blacklist.conf 的最后加上下的话
blacklist zd1211rw

2. 安装ndiswrapper程序
2.1 从网络下载
sudo apt-get install ndiswrapper

2.2 从别的机器下载,usb盘copy过来
如果无法上网,可以在这里下载。下载最新的,适用程序即可
http://jp.archive.ubuntu.com/ubuntu/pool/main/n/ndiswrapper/

ndiswrapper-common_1.54-2ubuntu1_all.deb
ndiswrapper-utils-1.9_1.54-2ubuntu1_i386.deb

sudo dpkg -i ndiswrapper-common_1.54-2ubuntu1_all.deb
sudo dpkg -i ndiswrapper-utils-1.9_1.54-2ubuntu1_i386.deb

3. 下载buffalo的驱动程序,安装
sudo ndiswrapper -i netu2kgl.inf

4. 重启电脑
sudo reboot

5. 加载ndiswrapper
sudo modprobe ndiswrapper

6. 无线网卡应该就可以识别出来了,可以在图形界面的网络配置里对无线网卡进行配置。我在命令行界面怎么试都没出来,知道的请告诉我

sudo iwlist wlan0 scan # 扫描可用无线网络
sudo iwconfig wlan0 essid essidname # 设置essid名称
sudo iwconfig wlan0 key s:keyphrase # 设置密码
sudo iwconfig wlan0 mode managed # 手动模式
sudo dhclient wlan0 # 启动dhcp链接网络


7. 重启后自动加载ndiswrapper。 (还未曾试过)
sudo ndiswrapper -m

2010年5月13日星期四

有关Rails程序的SEO

整理一下有关SEO的链接,有必要慢慢学习

Google的SEO指导
http://googlewebmastercentral.blogspot.com/2008/11/googles-seo-starter-guide.html

Google的SEO中文指导
http://www.google.cn/ggblog/googlewebmaster-cn/2008/12/google-seo.html
http://docs.google.com/fileview?id=0B5Utlw5ap2R8MGMyM2I3MjktMGE5Yy00OTMxLTkwZDktZmNkNWFhMjJlZGNj&hl=en&pli=1

中文网站管理员博客
http://googlewebmaster-cn.blogspot.com/


SEO on Rails专门网站
http://www.seoonrails.com/

Rails SEO开始手册
http://web.elctech.com/2008/11/19/rails-seo-starter-guide/

2010年5月12日星期三

关于Rails程序安全性

问题

默热情况下ActiveRecord允许访问者更新所有字段,以及子表字段。
这就让系统中的敏感字段暴露在外。

ActiveRecord里面提供了一下两个函数来声明可以改变的字段。
attr_accessible attr_protected

但是在实际使用中,极为不便,因为
ActiveRecord.new
ActiveRecord.update_attributes
的方法将无法正常使用

当然你可以为每个属性赋值,但这个不是聪明的做法。

问题所在不是出现在ActiveRecord上面。
而是应该在ActiveController上屏蔽一些敏感Parameter

寻找良久,以下这个Plugin应该是一个最为完善的解决方案吧。
据说这个是从Merb里面研究出来的,我想Rails3可能会有直接支持吧。

http://github.com/cjbottaro/param_protected


参看以下链接
http://railspikes.com/2008/9/22/is-your-rails-application-safe-from-mass-assignment

安全检查工具
http://thinkrelevance.com/blog/2008/02/26/tarantula-vs-your-rails-app.html

如何用curl来发送一个非GET请求

# The request
$ curl -X PUT -d "order[price_in_cents]=0" example.com/orders/225

2010年5月10日星期一

vim using easy mode ( modeless )

对于新手来说vi里面有一大堆的命令,很难使用。
但同时他的语法加亮功能却很出色。
为了两者兼得,可以使用vi的简单模式。


vim -y file


vim就会使用简单模式为你文件。
简单模式就是如同一般的文本编辑器,例如Windows里面的notepad小程序。
vi默认使用插入模式,所以你不用再为了切换模式频繁使用Esc按键了。


需要说明的是,如果你在终端下使用简单模式的话,vim没有菜单供你选择退出vim程序。
正确的做法是:

Ctrl + L



来切换到命令模式,输入 :q 来退出去。
对于新手来讲,只要记住这个退出方法就OK了。
是不是很简单。

2010年4月14日星期三

Windowsで使用するVIMの常用設定

フォルダのアドレスに %userprofile% を入れて、個人フォルダを表示されます。
そこに _vimrc というVIM設定ファイルを新規する。
以下の設定をコピーペーストして使ってください。


"新しい行のインデントを現在行と同じにする
set autoindent
"バックアップファイルを作るディレクトリ
set backupdir=$HOME/vimbackup
"ファイル保存ダイアログの初期ディレクトリをバッファファイル位置に設定
set browsedir=buffer
"クリップボードをWindowsと連携
set clipboard=unnamed
"Vi互換をオフ
set nocompatible
"スワップファイル用のディレクトリ
set directory=$HOME/vimbackup
"タブの代わりに空白文字を挿入する
set expandtab
"変更中のファイルでも、保存しないで他のファイルを表示
set hidden
"インクリメンタルサーチを行う
set incsearch
"タブ文字、行末など不可視文字を表示する
set list
"listで表示される文字のフォーマットを指定する
set listchars=eol:$,tab:>\ ,extends:<
"行番号を表示する
set number
"シフト移動幅
set shiftwidth=4
"閉じ括弧が入力されたとき、対応する括弧を表示する
set showmatch
"検索時に大文字を含んでいたら大/小を区別
set smartcase
"新しい行を作ったときに高度な自動インデントを行う
set smartindent
"行頭の余白内で Tab を打ち込むと、'shiftwidth' の数だけインデントする。
set smarttab
"ファイル内の  が対応する空白の数
set tabstop=4
"カーソルを行頭、行末で止まらないようにする
set whichwrap=b,s,h,l,<,>,[,]
"検索をファイルの先頭へループしない
set nowrapscan

" 新しいファイルの文字コードをUTF-8を使用
set fenc=utf-8
" 文字コードを識別する設定  cp936は中国文字コード簡体,cp950は中国文字コード繁体
set fileencodings=utf-8,sjis,cp932,euc-jp,ucs-bom,iso-2022-jp-3,iso-2022-jp,eucjp-ms,cp936,euc-cn,cp950,euc-tw
" カラースキーマを設定(darkblue, desert)
colo darkblue
" ハイライト
syntax on

"----------------------------------------------------------
"アートコマンド設定
"----------------------------------------------------------
"ウィンドウを最大化して起動
au GUIEnter * simalt ~x

"入力モード時、ステータスラインのカラーを変更
augroup InsertHook
autocmd!
autocmd InsertEnter * highlight StatusLine guifg=#ccdc90 guibg=#2E4340
autocmd InsertLeave * highlight StatusLine guifg=#2E4340 guibg=#ccdc90
augroup END

"日本語入力をリセット
au BufNewFile,BufRead * set iminsert=0
"タブ幅をリセット
au BufNewFile,BufRead * set tabstop=4 shiftwidth=4

".txtファイルで自動的に日本語入力ON
au BufNewFile,BufRead *.txt set iminsert=2
".rhtmlと.rbでタブ幅を変更
au BufNewFile,BufRead *.rhtml   set nowrap tabstop=2 shiftwidth=2
au BufNewFile,BufRead *.rb  set nowrap tabstop=2 shiftwidth=2

"全角スペースを視覚化
highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=#666666
au BufNewFile,BufRead * match ZenkakuSpace / /

"ステータスバーにファイル情報の表示
"常に表示
set laststatus=2
"ファイルパス 修正フラグ 読み取り専用フラグ ヘルプフラグ プリビュー窓フラグ 
set statusline=%F%m%r%h%w\ [TYPE=%Y]\ [FORMAT=%{&ff}]\ [ENC=%{&enc}]\ [FENC=%{&fenc}]\ [LOW=%l/%L]


参照サイト
http://sourceforge.jp/magazine/07/11/06/0151231

2010年4月5日星期一

release tool - capistrano

Capistrano 是一个基于Rails开发部署工具。原本是主要为Rails应用使用。现在已经比较通用,不光在Rails应用中可以用。

cd app_dir
capify .

vi config/deploy.rb
set :application, "demo"
set :deploy_to, "/path/to/your/app/dir"
set :scm, :subversion
set :user, "user_for_deploy"

# cap deploy  #  This calls both `update' and `restart'
# cap deploy:update  # This calls both `update_code' or `symlink'
# cap deploy:update_code # get source from repository, and call finalize_update
# cap finalize_update # This create 3 symbol links [ public, tmp, log ]
# cap deploy:restart # This works by calling the script/process/reaper

# 如果不是Rails应用,需要覆盖下面2个方法

namespace :deploy do
  task :finalize_udpate do

  end

  task :restart do
  end
end

2010年3月25日星期四

CentOS 5.1 でRails環境構築 エラー(uninitialized constant MysqlCompat::MysqlRes)

CentOS5.1

Yumでインストール
  ruby 1.8.5

gem list


*** LOCAL GEMS ***

actionmailer (2.3.5)
actionpack (2.3.5)
activerecord (2.3.5)
activeresource (2.3.5)
activesupport (2.3.5)
capistrano (2.5.18, 2.5.14)
fastthread (1.0.7)
highline (1.5.2)
mysql (2.8.1)
net-scp (1.0.2)
net-sftp (2.0.4)
net-ssh (2.0.21, 2.0.19)
net-ssh-gateway (1.0.1)
passenger (2.2.11, 2.2.9)
rack (1.1.0, 1.0.1)
rails (2.3.5)
rake (0.8.7)
rubygems-update (1.3.6, 1.3.5)




下記のエラーででる


  Status: 500 Internal Server Error
  uninitialized constant MysqlCompat::MysqlRes


原因は良く分かりませんが、たぶんCentOSのmysql.develと不整合だと思う。
2.7バージョンでmysqlをインストールすることで解決できる。

sudo gem install mysql --version '= 2.7' -- --with-mysql-lib=/usr/lib/mysql

2010年2月22日星期一

Railsエラーメッセージ日本語化(参考)

(省略)
    errors:
      messages:
        inclusion: "は一覧にありません。"
        exclusion: "は予約されています。"
        invalid: "が不正な値です。"
        confirmation: "が一致しません。"
        accepted: "を承諾してください。"
        empty: "が記入されていません。"
        blank: "が記入されていません。"
        too_long: "は{{count}}文字以内で記入してください。"
        too_short: "は{{count}}文字以上で記入してください。"
        wrong_length: "は{{count}}文字で記入してください。"
        taken: "はすでに使用されています。"
        not_a_number: "は数値で入力してください。"
        greater_than: "は{{count}}より大きい値を指定してください。"
        greater_than_or_equal_to: "は{{count}}以上の値を指定してください。"
        equal_to: "は{{count}}を指定してください。"
        less_than: "は{{count}}より小さい値を指定してください。"
        less_than_or_equal_to: "は{{count}}以下の値を指定してください。"
        odd: "は奇数を指定してください。"
        even: "は偶数を指定してください。"
        # Append your own errors here or at the model/attributes scope.

      models:
        # Overrides default messages

      attributes:
        # Overrides model and default messages.