bionote.net


[Python] random access to text lines


linecache 모듈은 텍스트파일에 대한 랜덤 액세스를 라인 단위로 제공한다. 대용량의 데이터를 메모리에 로딩하지 않고 파일에 직접 접근해서 사용할 수 있다.
Example
>>> import linecache
>>> linecache.getline('/etc/passwd', 4)
'sys:x:3:3:sys:/dev:/bin/sh\n'

Reference
http://www.python.org/doc/2.4.2/lib/module-linecache.html
2005/10/17 16:28 2005/10/17 16:28
top

 

[Server] php에서 파일업로드 용량제한


php.ini에서 post_max_size 와 upload_max_filesize 항목의 용량제한을 적당히 조절해준다.
2005/10/05 17:11 2005/10/05 17:11
top

 

[Linux] 변수의 뒷쪽 3자리만 얻어내기


예제코드
#!/bin/sh
p="1234567890"
echo "p = $p"
echo "last-three = ${p:${#p}-3}"

실행화면
p = 1234567890
last-three = 890

${#parm} : parm의 길이를 참조한다.
${parm:n:l} : parm의 n번째 위치부터 l개의 문자를 참조한다.
2005/10/05 13:58 2005/10/05 13:58
top

 

[Linux] cut 명령어


cut은 텍스트파일로부터 특정한 컬럼만 보고싶을 때 사용할 수 있는 명령어다.
사용법은 다음과 같다.
]$ cut option [files]

주요옵션은 다음과 같다.
-d c, --delimiter c
문자 c를 구분자로 사용한다. 디폴트 값은 tab 문자이다.
-f list, --fields list
필요한 컬럼을 선택한다.

예제
/etc/passwd로부터 username과 realname 필드를 뽑는다.
]$ cut -d: -f1,5 /etc/passwd
로그인한 유저들의 목록에서 로그인명만 출력한다.
]$ who | cut -f" " -f1
2005/08/17 19:24 2005/08/17 19:24
top

 

[Linux] su 명령어에 대한 접근권한 설정하기


이 방법을 사용해서 특정한 사용자들만 su명령어를 이용할 수 있도록 설정할 수 있다.

현재 su permission 확인하기
]# ls -alt /bin/su
-r-sr-xr-x 1 root root 23416 May 18 15:33 /bin/su*

지정된 사용자만 실행을 허가
1) /etc/group에 suuser 그룹을 추가한다.
suuser::100:user1,user2
2) /etc/passwd에서 지정된 사용자의 gid를 변경한다.
user1:x:1005:100::/home/user1:/bin/ksh
user2:x:1007:100::/home/user2:/bin/ksh
3) /bin/su의 permission을 변경한다.
]#cd /bin
]#chgrp suuser su
]#chmod 4550 su
]#ls -alt |grep su
-r-sr-x--- 1 root suuser 23416 May 18 15:33 /bin/su*
2005/08/16 17:08 2005/08/16 17:08
top

 

[Python] 역순으로 loop문을 수행하는 몇가지 방법들


1) 리스트의 reverse() 메소드를 사용한다.
rev = list[:]
rev.reverse()
for x in rev:
< do something with x >

2) range() 함수로 역순의 리스트를 만든다.
이 방법은 general하게 적용이 가능하지만 조금 느리고 가독성이 떨어진다.
for i in range(len(sequence)-1, -1, -1):
x = sequence[i]
< do something with x >

3) python 2.3부터 사용가능한 방법으로, 리스트의 slice syntax를 이용한다.
for x in sequence[::-1]:
< do something with x >
2005/07/27 00:31 2005/07/27 00:31
top

 

[Linux] split 명령어


split은 파일을 같은 크기로 나누는 명령어이다.
Usage: split [OPTION] [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default PREFIX is `x'.
Options:
-a, --suffix-length=N
use suffixes of length N (default 2)
-d, --numeric-suffixes
use numeric suffixes instead of alphabetic
-l, --lines=NUMBER
put NUMBER lines per output file
-b, --bytes=LIST
output only these bytes.
each LIST is made up of one range, or many ranges separated by commas.

병렬로 작업을 처리할 때 유용하게 쓰이는 명령어가 될 것같다.
사용예제:
scop 파일을 1000행씩 나눠서 subscop01, subscopt02 subscop03, ...으로 저장한다.
]$ split -l 1000 -d scop subscop
2005/07/21 23:55 2005/07/21 23:55
top

 

[Python] list에서 원하는 원소만 뽑아내기


>>> a=["abc","abd","bbb"]
>>> a
['abc', 'abd', 'bbb']
>>> [x for x in a if x[0:2]=="ab"]
['abc', 'abd']
2005/07/14 21:32 2005/07/14 21:32
top

 

[Python] list내의 데이터를 복사하기


python에서 list를 다른 변수에 할당하게 되면, 레퍼런스 형태로 전달되기 때문에 실제로 같은 물리공간에 위치한 데이터를 가리키게 된다.
>>> a=[[1,2]]
>>> b=a
>>> print a,b
[[1, 2]] [[1, 2]]
>>> b[0][0]=-1
>>> print a,b
[[-1, 2]] [[-1, 2]]

레퍼런스가 아니라 실제 값을 할당하고 싶다면 copy 모듈을 사용해야한다. copy 모듈은 copy와 deepcopy함수를 제공한다. 두 함수의 차이는 전자는 상위 리스트에 대해서만 값을 할당하는 반면, 후자는 하부 리스트에 대해서도 값을 할당해준다. 예를 들면 2차리스트의 경우 다음과 같다.
>>> import copy
>>> a=[[1,2]]
>>> a1=copy.copy(a)
>>> a2=copy.deepcopy(a)
>>> print a,a1,a2
[[1, 2]] [[1, 2]] [[1, 2]]
>>> a1[0][0]=-1
>>> print a,a1,a2
[[-1, 2]] [[-1, 2]] [[1, 2]]
2005/06/10 16:12 2005/06/10 16:12
top

 

The 100 Best Products of 2005 from PCWorld.com


내가 사용하고 있는 것은
Mozilla Firefox
Google Gmail
Google
Ubuntu linux
Mozilla Thunderbird
Wikipedia
이정도네...
우리나라 제품은 모두 HW만 있는 것 같아서 아쉽다.

http://www.pcworld.com/reviews/article/0,aid,120763,pg,12,00.asp
2005/06/09 23:08 2005/06/09 23:08
top