2017-08-14

PowerMockup - 개발 스토리보드 작성 툴

최종 구현물은 언제나 어떠한 형식으로든 개발 된 프로그램으로 나와야 하는 내 입장에서는 기획 단계에서 layout design 등의 작업이 언제나 골칫거리다 .
그동안 Pencil Project도 써보고 Balsamiq Mockup 도 써봤다. 
BM 의 경우, 최근 몇년간 쭉 써왔는데 최근 새롭게 유행하는 디자인컴포넌트의 적용도 미적지근한것 같고 무엇보다 PPTX 로 기획안을 발표할 때 작업 파일을 PNG 로 export 해서 Power point 에 붙여 넣다보니 즉각적인 수정에 한계가 있었다.
 최근 알게 된 PowerMockup 이라는 녀석이 있는데 , 이녀석은 Mockup 제작 시 PPT의 디자인도구에서 필요한 모양을 drag-and-drop 으로 끌어다 쓸 수 있다보니 무척 마음에 든다.


위 그림처럼 PPT 에서 기존 도형들을 가져오듯 mockup을 만들 수 있다. 심지어 bootstrap 이나 font-awesome 같은데서 가져올만한 디자인도 미리 제공해주니 더 고맙고 Desktop 웹 뿐만 아니라 Windows native application 이나 android, ios 의 템플릿도 지원해 준다 !! 

한가지 아쉬운건 OSX를 지원하지 않는다는것... TT 
그리고 추가되었으면 하는 기능으로는 UML 이나 ERD 같은 Diagram 도 지원해주면 더 좋겠다만 ㅋㅋㅋ 

어쨌든 여러모로 이제 조사가 시작 된 새 프로젝트에서는 이녀석으로 한번 해봐야겠다

2009-09-26

영문 101 키보드에서 오른쪽 alt키 한영 전환이 안되는 경우가 있는데 다음과 같은 방법으로 해결이 가능하다.


1. 시작->실행->regedit
2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters로 이동
3. LayerDriver KOR 항목을 kbd101a.dll로 수정
4. OverrideKeyboardIdentifier는 PCAT_101AKEY로 수정
5. OverrideKeyboardSubtype 항목을 3으로 수정

재부팅 하면 오른쪽 alt 키로 한영 전환을 할 수 있다.


출처 : http://leeted.egloos.com/1361567

2009-07-31

구글 애드센스 이제 본격적으로 한국 공략하나보다 ..
http://twitter.com/adsensekorea
를 통한 집중적인 광고의 시작인가....
하긴 네비어 같은곳은 막아두더라도
애드센스를 이용할만한 어카운트를 갖고있는
대부분의 한국 블러거들은 트위터를 같이 갖고있을테니 적절한 타게팅이라고 본다.

2009-02-09

Perl 정규식
출처 Newbie 님의 블러그 (http://medialab.egloos.com)

생물 관련 프로그램의 대부분은 유닉스 기반으로 제작되어 있고, 유닉스 자체가 원래 텍스트 파일을 기본적인 데이터 교환 수단으로 쓰고 있기 때문에 이것은 피할 수 없는 일일 것이다. 오히려 데이터 교환의 측면에서 보면 텍스트 파일?바이너리 형태의 데이터 파일에 비해 유리한 점이 있는 것이 사실이다. 즉, 포맷이 공개되지 않은 텍스트 파일을 읽어들이기 위한 파서를 제작하는 것이 미지의 바이너리 파일을 읽어들이는 것 보다는 훨씬 쉬우니까 말이다. 결국 XML 파일도 본질적으로는 텍스트 파일 아닌가.

이 러한 텍스트 파싱 작업을 위해서는 정규식 (Regular Expression) 을 사용하는 것이 가장 효율적이며, 결국 Perl 에서 정규식을 빼면 앙꼬 없는 찐빵이 되고 만다. 물론 Python, Java, .NET 등에서도 정규식을 지원하긴 하지만 근본적으로 이들이 지원하는 정규식의 모체는 Perl 이며, 외부 모듈 형태로 정규식을 지원하는 이런 언어에 비해서 Perl 에서는 언어의 구성 요소로 정규식이 통합되어 있다는 것이 큰 차이점이다.

참고로 정규 표현식에 대해서 자세히 알고 싶다면 이 책을 추천하는 바이다.

http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200303040023

정 규 표현식에 입문하면서 보기에는 조금 어려울지도 모르겠지만, 어느 정도의 간단한 정규식 정도는 작성가능하다면 이 책은 매우 큰 보탬이 된다. Perl 과 자바, 닷넷 등의 잡다한 언어에서의 정규식 사용법및 고급 활용법까지 두루 다루고 있는 바야흐로 정규식의 바이블이라고 할 수 있을만한 책이다.

파이썬의 경우에는 이 링크를 참조하기 바란다.

1. 정규식이란?

그렇다면 정규식이란 무엇인가? wikipedia 에서는 다음과 같이 정의하고 있다.

A regular expression is a string that describes or matches a set of strings, according to certain syntax rules.

즉, 정규식이란 특정한 문법 규직에 따라서 문자열을 기술하거나 매치시킬 수 있는 문자열을 의미한다.
정의는 그렇다고 치고, 실제 활용예로써 설명하도록 하자.

특정한 DNA Sequence 상에서 BamHI site 의 갯수를 알고 싶다면?

#!/usr/bin/perl -w
# modified from perl scripts in http://stein.cshl.org/genome_informatics/regex/regex1.html
#

use strict;

# 파일을 읽어들이고, 파일이 없으면 사용법을 출력하고 종료
my $filename = shift or die "usage BamHI.perl ";

# $filename 으로 입력받은 파일을 FASTA 라는 이름의 파일 핸들로 연다
open (FASTA , "<$filename") or print "$filename does not exist "; # $sites 에는 찾은 Enzyme site 갯수를 저장한다 my $sites=0; # FASTA 핸들을 이용하여 전체 파일을 한줄씩 읽어서 $line에 저장한다. while (my $line = ) {

# 라인 종료 문자를 지운다
chomp ($line);

# $line에 GGATCC 라는 문자열이 있으면 $site 변수를 1 증가시킨다
if ($line =~ m/GGATCC/){

$sites++;
}
}

# $sites 값이 1 이상이면 (BamHI Site 가 발견되면 메시지 출력
if ($sites){
print "$sites BamHI sites total ";
}
else {
print "there is no BamHI site! ";
}


if ($line =~ m/GGATCC/){


$sites++;
}
이 부분이 제일 중요하다. $line =~ m/정규식/ 이라는 문법은 만약 $line 내에 GGATCC 라는 문자열이 있으면 true 가 된다.

그렇다면 만약 HincII 와 같은 Restriction Enzyme, 즉 GTYRAC 와 같이 Y (C or T), R (A or G) 를 찾고 싶다면?

if ($line =~ m/GT[CT][AG]AC/){


$sites++;
}

이렇게 쓴다. 즉 [CT] 는 C or T, [AG] 는 A or G 의 의미이다.

즉, 정규식은 일정한 규칙을 가지는 문자열을 찾기 위해서 이것을 패턴화하는 하나의 규칙이라고 생각하면 된다.


2, Perl 정규식의 간략한 문법

- 정규식은 두개의 슬래쉬 () 안에 쓴다.

- 패턴에 사용될 수 있는 문자

* 일반적인 문자 (a-z,A-Z, 0-9 및 일부의 문장기호)
* "." 문자는 모든 문자와 매칭된다
* 대괄호를 쓰면 대괄호 안에 있는 글자에 속한 경우만을 매칭된다.

예 : 염기서열 [AaGgCcTNn]
알파벳, 숫자 [A-Z0-9]
A-B 를 제외한 글자 [^A-B] A-Z를 제외한 글자

* 많이 사용되는 조합은 다음과 같이 별도의 메타캐릭터로 지정된다. 메타캐릭터를 사용할 때는 역슬래쉬 (한글 키보드에서는 로 표시되지만) 를 이용한다.

d : 숫자 [0-9]

예 : 123-3456 혹은 345-2345 와 같은 것을 매칭하려고 할ㅤㄸㅒㅤ
ddd-dddd

w : 알파벳과 숫자[A-Za-z_0-9]

W : 알파벳과 숫자 이외의 기호

s : 공백문자 매칭

S : 공백문자가 아닌 글자


- 앵커 문자는 패턴의 위치를 한정지을 때 사용된다.

^ : 라인의 처음부터 매칭

$ : 라인의 끝을 표시


- 수량자는 지정된 패턴의 반복을 기술한다.

? : 정확히 한번만 매칭
* : 0번 이상 매칭
+ : 1번 이상 매칭되는 경우

예 S+공백 문자가 아닌 1개 이상의 문자를 매칭

{3} : 3번 매칭되는 경우

예 : 위에서 123-3456 과 같은 전화번호를 ddd-dddd 로 매칭한다고 하였지만 이것은 d{3}-d{4} 로 축약하여 쓸 수 있다.

{2,4} : 2번에서 4번 매칭되는 경우

예 : 전화번호 국번이 3자리 혹은 4자리일때는 d{3,4}-d{4] 와 같이 기술한다. 그렇게 하면 123-1234 번과 1234-1234 번과 같은 경우d{3,4}-d{4} 와 같이 쓰면 된다.
{4,} : 최소한 4번 매칭되는 경우


마지막으로. 그렇다면 '^' 내지는 '|' 와 같은 문자를 검색에 사용하려면 어떻게 해야 하는가? 간단하게는 백슬래쉬 () 를 붙이고 쓰면 된다.

일단 간단한 문법은 여기까지 알아보도록 한다.


3. 패턴 추출

사실 정규식을 실제로 쓰는 주 용도 앞에서 말했듯이 텍스트 문자에서 원하는 내용만 추출해 내는 것, 그리고 패턴을 이용하여 치환을 하는 것이다.



>gi|84489096|ref|YP_447328.1| GatB [Methanosphaera stadtmanae DSM 3091]
MMCGLEIHVQLNTNSKLFCSCPTNYQSAPNNTNICPVCLNQPGAKPYPPNQAALDNAIKVALMLGCEISN
EVIYFMRKHYDYPDLSSGYQRTSVPVGIKGELNGVRIHEIHVEEDPGQYKPDRGTVDFNRSGIPLIEIVT
EPDMKSPEEARNFLNELIRVLNYSGSARGEGTMRADVNISIEGGKRAEVKNVNSIRGAYKVLKFELIRQK
NILRRGGEVQQETRAYLESQMITVPMRLKEDADDYRYIPDPDLPPLKIDPAHVEEIRQNMPEPAHLKTER
FVEEYGIDKKDAKVLTSELELADAFEEVCKEVDANVAARLMRDELKRVLHYNKIQYAESKITPSDIVELI
NLIESKQVTPEAAHKLIEQMPGNDKTPTEIGNEMDIIGVVEDDAIVNAINQAIEENPNAVEDYKNGKDNA
VNFLVGQVMRLTRGKANAGETNKMIKEKLDQL

가령 이런 fasta sequence 의 header 부분에서,

>gi|84489096|ref|YP_447328.1| GatB [Methanosphaera stadtmanae DSM 3091]

위의 문장중 색으로 표시된 2 부분만 가지만 간단히 추출하고 싶다면?

$line = ">gi|84489096|ref|YP_447328.1| GatB [Methanosphaera stadtmanae DSM 3091]";

$line 이라는 스칼라 변수에 위의 문자열이 담겨 있는 상태라고 가정하고,

/I(S+)[(.*)]$/

라는 정규식을 쓴다.

'|' 문자는 정규식 내에서 다른 의미로 쓰이기 때문에, 백슬래쉬 () 와 함께 사용해야만 본래의 "|' 자체를 매칭가능하다. (대괄호 문자 '[' ']' 도 마찬가지로 [, ] 로 사용한다)

[(.*)]$

= [ 와 ] 사이에 있는 아무 문자 (.*) 를 추출한다. 추출되는 영역은 (, ) 로 지정한다.

그 앞에 있는 | (S+)는 "| GatB" 부분에서 I 및 공백문자 다음에 나오는 문자를 캡춰한다는 의미이다.

if ($line =~ m/I(S+)[(.*)]$/) {

$gene = $1;

$organism = $2;

}

$1 과 $2 변수의 경우 첫번째 그룹 (S+) 및 두번ㅤㅉㅒㅤ 그룹 (.*) 이 담겨져 있는 변수이므로 이 변수를 억세스하여 괄호 안의 패턴을 추출해 낼 수 있다.

if ($line =~ m/(.{50})TATTAT(.{25})/) {

$upstream = $1;

$downstream = $2;

}

위의 예는 'TATTAT' 서열의 상위 50글자를 캡춰하여 $upstream 에, 하위 25 글자를 캡춰하여 $downstream 에 넣는 예이다.

예는 많이 들면 들수록 좋으니 몇 가지 더.

Library_Plate-Well좌표-F.ab1 과 같은 파일명에서 Library 이름과 Plate 이름, Well 좌표를 추출해 내는 방법

가 령 Library 이름이 SEQUENCE이고, 이것의 96 Plate 가 01부터 99 까지 존재, 그리고 Well 좌표는 A01 부터 H12라고 하고 (96 Plate), Primer는 F 또는 R이다. 이런 경우를 정규식 하나로 각각을 추출해 내려면,

$filename = "SEQUENCING_01-A01-F.ab1";

if ($filename =~ m/(w+)_(d{1,3})-([A-H][0-1][0-9])-([FR]).ab1/) {

$library = $1;

$plate = $2;

$wellposition = $3;

$primer = $4;

}

print $library," ", $plate," ",$wellposition," ", $primer, " ";

위의 결과에서는 당연히 sequencing, 01, A01, F 로 각각의 정보가 추출되어 나올 것이다.

각각의 색은 캡춰되는 Region에 따라서 별도로 지정하였다.

4. 치환

정규식의 부분 캡춰 기능 이외에 유용한 활용법은 문자열의 치환이다. 즉, 정규식으로 검색한 패턴에 대해서 미리 지정된 치환을 수행할 수 있다.

치환의 문법은

$variable =~ s/정규식/치환할 문자열/

디폴트 상태로는 검색된 패턴 중 제일 먼저 나오는 패턴에 대해서만 치환이 일어나지만, 만약 문자열 전체에서 나오는 모든 패턴에 대해서 치환을 수행하고 싶다면,

$variable =~ s/정규식/치환할 문자열/g

'g' 스위치를 이용하면 된다.

예 :

$base = "ACGTGCGTGATTTTTTTAGG";

$base =~ s/TTTTTTT/AAAAAAA/;

'TTTTTTT' 를 검색하여 AAAAAA로 치환한다.

$base = "ACGTGCGTGATTTTTTTAGG";

$base =~ s/GT/CA/g;

GT를 검색하여 CA로 치환한다. 위의 서열에는 GT 가 여러번 등장하는데, g 스위치를 이용하여 모든 'GT' 라는 패턴을 CA로 치환할 수 있다.

# g switch 를 지정하지 않았을 때. 맨 처음에 나오는 GT Pattern 1개에 대해서만 CA 치환이 이루어진다.
$base = "ACCAGCGTGATTTTTTTAGG";

# g switch 를 지정하지 않았을 때. 맨 처음에 나오는 GT Pattern 1개에 대해서만 CA 치환이 이루어진다.
$base = "ACCAGCCAGATTTTTTTAGG";


치환 기능을 응용하여 문자열 중의 특정부분만을 삭제하는 것을 매우 쉽게 구현 가능하다.

$base = "ACCCCC*CGTGATT*TTTTTAGG";

이 와 같이 '*' 로 gap 이 표시되어 있는 sequence 에서 * 만을 삭제하고자 한다면? 만약 치환 기능을 사용하지 않는다면 * 위치를 찾고, * 를 제외한 부분 문자열을 구하고, 이것을 이어 붙이는 귀찮은 일을 해야 하겠지만, 치환 기능을 이용하면,

$base =~ s/*//g;

이 한줄로 해결된다. 즉, '문자열 중의 * 를 모두 찾아서 공백으로 치환한다 (=삭제한다)' 라는 의미이다. (* 문자는 Perl 내에서 별도의 의미를 가지고 있으므로 * 글자 자체를 검색하려면 백슬래시 를 앞에 붙여주고, 모든 * 를 검색하여 치환을 해 주어야 하므로 g 스위치를 켜게 된다)

이전에 든 예제에서 SEQUENCING_01-A01 부분만 얻고 싶다면? 물론 앞에서 설명한 캡춰 기능을 이용하여 사용할 수도 있겠지만, 이렇게 해도 된다.

$filename = "SEQUENCING_01-A01-F.ab1";

$filename =~ s/-[FR].ab1$//;


2009-01-12

JDBC 설정

MySQL과 JSP의 연동을 위해서 mysql jdbc를 설정해 보자. 현재 많은 사용자층을 확보하고 있는 MySQL은 쉽고 강력한 성능으로 많은 유저들의 사랑을 받고 있다. 설치에 앞서 먼저 mysql jdbc드라이버를 다운 받는다. 현재 안정버전은 3.0 버전이다. 아래의 다운로드에서 드라이버를 받는다.

MySQL JDBC Download

다운로드 받았으면 리눅스에서 사용 가능 하도록 환경 설정을 해줘야 된다. 환경설정이라고 어렵게 생각할것 없다. 경로만 인식시켜 주면 된다.

[root@localhost]#

[root@localhost]# tar xvfz mysql-connector-java-3.0.8-stable.tar.gz
[root@localhost]# cp mysql-connector-java-3.0.8-stable /usr/local/mysql-jdbc
[root@localhost]# cd /usr/local/mysql-jdbc
[root@localhost]# ls -al

폴더 안에 mysql-connector-java-3.0.8-stable-bin.jar이라는 화일이 보일 것이다. 실제로 사용될 드라이버 화일이다. 이제 mysql jdbc드라이버를 사용하기 위해서 profile에 환경 설정을 해주자.

[root@localhost]#

[root@localhost]# vi /etc/proflie
# MySQLjdbc Config
export CLASSPATH="$CLASSPATH:/usr/local/mysql-jdbc/mysql-connector-java-3.0.8-stable
-bin.jar"(한줄로 정확히 입력해야 된다)

CLASSPATH를 설정해줄때 $CLASSPATH부분을 꼭 써줘야 된다. 안그러면 기존에 설정 되어 있는 CLASSPATH는 설정이 안된다. 이제 변경시킨 profile를 적용을 시키고 테스트를 해보자.

[root@localhost]#

[root@localhost]# source /etc/profile
[root@localhost]# set | grep CLASSPATH
CLASSPATH=.:/usr/local/tomcat/common/lib/servlet.jar:/oracle/product/8.1.7/jdbc/lib/
classes111.jar:/usr/local/mysql-jdbc/mysql-connector-java.jar

위의 설정은 필자의 CLASSPATH설정이다. 기존에 추가 되어있는 부분 마지막에 mysql jdbc드라이버가 설정이 되어있다.

+MySQL JDBC 테스트 #1

이제 MySQL JDBC드라이버가 제대로 설정이 되었는지 접속 테스트를 해보자. 먼저 아래와 같이 입력하면 드라이버가 로딩이 되는지 알 수 있다.

[root@localhost]#

[root@localhost]# javap org.gjt.mm.mysql.Driver
public class org.gjt.mm.mysql.Driver extends com.mysql.jdbc.Driver {
public org.gjt.mm.mysql.Driver() throws java.sql.SQLException;
}

위와 같이 나왔다면 이상이 없는것이다. 만약 설정이 잘못되어 있다면 아래와 같이 에러메시지가 나올 것이다.

[root@localhost]#

[root@localhost]# javap org.gjt.mm.mysql.Driver
Class 'org.gjt.mm.mysql.Driver' not found

에러 메시지가 나오면 CLASSPATH설정을 확인해 보기 바란다.

이제 실제로 테스트를 해보자 jdbc드라이버를 이용한 javamysql의 연동이다.

[root@localhost]#

[root@localhost]# vi jdbc.java
import java.sql.*;
class jdbc {
public static void main(String argv[]) {
try {
Class.forName("org.gjt.mm.mysql.Driver");
System.out.println("jdbc 드라이버 로딩 성공");
} catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
}
try {
String url = "jdbc:mysql://localhost:3306/mysql";
Connection con = DriverManager.getConnection(url,"root","");
System.out.println("mysql 접속 성공");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select user from user where user=
'root'");
System.out.println("Got result:");
while(rs.next()) {
String no= rs.getString(1);
String tblname = rs.getString(1);
System.out.println(" no = " + no);
System.out.println(" tblname= "+ tblname);
}
stmt.close();
con.close();
} catch(java.lang.Exception ex) {
ex.printStackTrace();
}
}
}

위의 소스는 mysql jdbc드라이버를 테스트 해볼수 있는 소스이다. 입력후 컴파일 하자.

[root@localhost]#

[root@localhost]# javac jdbc.java
[root@localhost]# java jdbc
드라이버 로딩 성공
접속 성공
Got result:
no = root
tblname= root
no = root
tblname= root

위와 같이 나오면 정상적으로 연동이 되는것이다.

+MySQL JDBC 테스트 #2

이제 jsp와 연동을 테스트 해보자. 아래와 같이 테스트용 jsp화일을 생성한다.

[root@localhost]#

[root@localhost]# vi mysql.jsp
<%@ page import="java.sql.*"
contentType="text/html;charset=euc-kr"%>
<%
String DB_URL = "jdbc:mysql://localhost:3306/mysql";
String DB_USER = "root";
String DB_PASSWORD= "";
Connection conn;
Statement stmt;
try {
Class.forName("org.gjt.mm.mysql.Driver");
conn = DriverManager.getConnection(DB_URL, DB_USER,
DB_PASSWORD);
stmt = conn.createStatement();
conn.close();
out.println("MySQL 연결 성공");
} catch(Exception e)
{out.println(e);}
%>

위와 같이 입력을 하고 웹에서 확인해 보자. 확인을 위해서는 물론 tomcatresin같은 프로그램이 Apache와 연동이 되어있어야 한다.

웹상에서 확인을 해보면 "Mysql 연결 성공"이라는 글자가 보일 것이다.

+MySQL JDBC 트러블 슈팅

정상적으로 연결에 성공하면 좋지만 tomcat 4버전부터 연동하는데 조금 어려움이 있다. 정상적으로 CLASSPATH도 잡혀있고 java와의 연동도 되지만 jsp와의 연동이 잘 안될때가 많았다. 이럴때는 다음과 같이 링크를 걸어주기 바란다.

[root@localhost]#

[root@localhost]# cd /usr/local/tomcat/common/lib
[root@localhost]# ln -s /usr/local/mysql-jdbc/mysql-connector-java-3.0.8-stable-
bin.jar /usr/local/tomcat/common/lib/mysql-connector-java-3.0.8-stable-bin.jar

이렇게 링크를 걸어주면 tomcat환경에서 jdbc의 연동이 가능할것이다.


2009-01-09

Fedora에서 java jdk 업데이트

우선 bin 으로 java 다운받아서~ (jdk 파일의 이름을 여기선 편의상 jdk로 함)
# chmod 755 jdk.bin
# ./jdk
# mv jdk /usr/local/


패스잡아주고~
# vi
/etc/profile
JAVA_HOME=/usr/java/jdk
CLASSPATH=/usr/java/jdk
CLASSPATH=$CLASSPATH:$JAVA_HOME/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$HOME/bin:$JAVA_HOME:
export PATH JAVA_HOME CLASSPATH
# source /etc/profile

기존의 icedTea등의 gij 버젼에서 새로 깐걸로 교체 ㄱㄱㄱㄱ
# alternatives --install /usr/bin/java java /usr/java/jdk/bin/java 2
# alternatives --config java
*화면이 나오면 원하는 버젼 선택

2008-12-12

간지남 16 - 김수환




人生德目
. ()
말을 많이 하면 필요 없는 말이 나온다.
양 귀로 많이 들으며, 입은 세 번 생각하고 열라.
. (讀書)
수입의 1%를 책을 사는데 투자하라.
옷이 헤어지면 입을 수 없어 버리지만...
책은 시간이 지나도 위대한 진가를 품고 있다.
.노점상 (露店商)
노점상에서 물건을 살 때 깎지말라.
그냥 돈을 주면 나태함을 키우지만....
부르는대로 주고 사면 희망과 건강을 선물하는 것이다.
.웃음 ()
웃는 연습을 생활화 하라.
웃음은 만병의 예방약이며...치료약이며...
노인을 젊게하고...젊은이를 동자(童子)로 만든다.
.TV (바보상자)
텔레비전과 많은 시간 동거하지 말라.
술에 취하면 정신을 잃고...마약에 취하면 이성을 잃지만 
텔레비전에 취하면 모든게 마비 된 바보가 된다.
.성냄 ()
화내는 사람이 언제나 손해를 본다.
화내는 사람은 자기를 죽이고 남을 죽이며 
아무도 가깝게 오지 않아서 늘 외롭고 쓸쓸하다.
.기도 (祈禱)
기도는 녹슨 쇳덩이도 녹이며 
천 년 암흑 동굴의 어둠을 없애는 한줄기 빛이다. 
주먹을 불끈 쥐기보다 두 손을 모으고 기도하는 자가 더 강하다.
기도는 자성을 찾게하며 만생을 요익하게 하는 묘약이다.
.이웃 ()
이웃과 절대로 등지지 말라.
이웃은 나의 모습을 비추어 보는 큰거울이다.
이웃이 나를 마주할 때..
외면하거나 미소를 보내지 않으면...
목욕하고 바르게 앉아 자신을 곰곰히 되돌아 봐야 한다.
.사랑 (慈愛)
머리와 입으로 하는 사랑에는 향기가 없다..
진정한 사랑은 이해. 관용. 포용. 동화. 자기낮춤이 선행된다 
"사랑이 머리에서 가슴으로 내려온는데 칠 십년 걸렸다."
 (김수환 추기경 말씀)

2008-12-01

http://gmod.org/wiki/GBrowse

꽤 괜찮은 프로젝트다 지원 포멧도 다양하고
조만간 심심할때마다 성능 향상본을 제작할 예정 ㄱㄱㄱ

2008-11-05

TIME's Best Inventions of 2008

Invention of the Year

1. The Retail DNA Test

Article Tools

Before meeting with Anne Wojcicki, co-founder of a consumer gene-testing service called 23andMe, I know just three things about her: she's pregnant, she's married to Google's Sergey Brin, and she went to Yale. But after an hour chatting with her in the small office she shares with co-founder Linda Avey at 23andMe's headquarters in Mountain View, Calif., I know some things no Internet search could reveal: coffee makes her giddy, she has a fondness for sequined shoes and fresh-baked bread, and her unborn son has a 50% chance of inheriting a high risk for Parkinson's disease.

Learning and sharing your genetic secrets are at the heart of 23andMe's controversial new service — a $399 saliva test that estimates your predisposition for more than 90 traits and conditions ranging from baldness to blindness. Although 23andMe isn't the only company selling DNA tests to the public, it does the best job of making them accessible and affordable. The 600,000 genetic markers that 23andMe identifies and interprets for each customer are "the digital manifestation of you," says Wojcicki (pronounced Wo-jis-key), 35, who majored in biology and was previously a health-care investor. "It's all this information beyond what you can see in the mirror."

We are at the beginning of a personal-genomics revolution that will transform not only how we take care of ourselves but also what we mean by personal information. In the past, only élite researchers had access to their genetic fingerprints, but now personal genotyping is available to anyone who orders the service online and mails in a spit sample. Not everything about how this information will be used is clear yet — 23andMe has stirred up debate about issues ranging from how meaningful the results are to how to prevent genetic discrimination — but the curtain has been pulled back, and it can never be closed again. And so for pioneering retail genomics, 23andMe's DNA-testing service is Time's 2008 Invention of the Year.

The 1997 film Gattaca depicted it as a futuristic nightmare, but human-genotyping has emerged instead as both a real business and a status symbol. Movie mogul Harvey Weinstein says he is backing 23andMe not for its cinematic possibilities but because "I think it is a good investment. This is strictly medical and business-like." Google has chipped in almost half the $8.9 million in funding raised by the firm, which counts Warren Buffett, Rupert Murdoch and Ivanka Trump among its clients.

Weinstein isn't saying what his test told him, but Wojcicki and her famous husband are perfectly willing to discuss their own genetic flaws. Most worrisome is a rare mutation that gives Brin an estimated 20% to 80% chance of getting Parkinson's disease. There's a 50% chance that the couple's child, due later this year, will inherit that same gene. "I don't find this embarrassing in any way," says Brin, who blogged about it in September. "I felt it was a lot of work and impractical to keep it secret, and I think in 10 years it will be commonplace to learn about your genome."

And yet while Wojcicki and Brin aren't worried about genetic privacy, others are. In May, President George W. Bush signed a bill that makes it illegal for employers and insurers to discriminate on the basis of genetic information. California and New York tried to block the tests on the grounds that they were not properly licensed, but have so far been unsuccessful. Others worry about how sharing one's genetic data might affect close relatives who would prefer not to let a family history of schizophrenia or Lou Gehrig's disease become public. And what if a potential mate demands to see your genome before getting serious? Such hypotheticals are endless. And some researchers argue that the tests are flawed. "The uncertainty is too great," says Dr. Muin Khoury, director of the National Office of Public Health Genomics at the Centers for Disease Control and Prevention, who argues that it is wrong to charge people for access to such preliminary and incomplete data. Many diseases stem from several different genes and are triggered by environmental factors. Since less than a tenth of our 20,000 genes have been correlated with any condition, it's impossible to nail down exactly what component is genetic. "A little knowledge is a dangerous thing," says Dr. Alan Guttmacher of the National Institutes of Health.

23andMe is unfazed by its detractors. "It's somewhat paternalistic to say people shouldn't get these tests because 'we don't want people to misunderstand or get upset,'" says board member Esther Dyson. There can be a psychological upside too: some people decide to lead healthier lifestyles. Brin is currently funding Parkinson's research. And not all customers' results are as troubling as his. Nate Guy, 19, of Warrenton, Va., was relieved that though his uncle had died of prostate cancer, his own risk for the disease was about average. He even posted a video about it on YouTube. And unflattering findings can have a silver lining. "Now I have an excuse for not remembering things, because my memory is probably genetically flawed," Guy says.

Wojcicki and Avey see themselves not just as businesswomen but also as social entrepreneurs. With their customers' consent, they plan to amass everyone's genetic footprint in a giant database that can be mined for clues to which mutations make us susceptible to specific diseases and which drugs people are more likely to respond to. "You're donating your genetic information," says Wojcicki. "We could make great discoveries if we just had more information. We all carry this information, and if we bring it together and democratize it, we could really change health care."

2008-10-28

시마 코사쿠가 결국 사장에 올랐다
이제 시마씨의 나이도 60이구만...

사진은 주간아사히에서 기획한 가상 [스페셜 대담(--;;)]
시마코사쿠 vs 아소다로



사장시마코사쿠 취임 회견