2010년 3월 30일 화요일
2010년 3월 28일 일요일
Internet Banking, Active X and Mobile
아래 글은.. 2010.03.24 일자 zdnet Korea에 실린 기사이다. 아래 기사를 읽고 동감하는 내용들이 있어서 몇자 적어본다.
인터넷 뱅킹, 멀티 브라우저 지지부진.. 2010/03/24 zdnet, Korea
- Active X로 인한 IE의 종속 심화
이미 몇 해 전부터, PC 인터넷 뱅킹에서도 웹 브라우저에 관한 논란은 계속 되어 왔다. 우리나라의 인터넷 뱅킹 환경은 대부분 MS의 IE(Internet Explorer)에서만 지원하는 Active X를 통한 인증을 지원하고 있으며, 이로 인해 다른 OS를 사용하고 있거나, 다른 웹 브라우저를 사용하고 있는 사용자들은 이에 대한 접근 자체를 제한하고 실정이다. 이는 인터넷 뱅킹 뿐만이 아니라, 정부 민원 서비스, 일반 웹 사이트들 역시 Active X를 사용하면서 IE에 대한 종속이 더욱 심화 되어 왔다.
- 모바일에서의 웹 접근성에 대한 논쟁
우리나라 데스크톱 환경은 전통적(?)으로 MS Windows 계열이 대부분 이었으므로, 다른 OS를 사용하고 있었던 사용자들은 이런 상황에 대해 한 목소리를 내기 어려웠다. 하지만 사파리를 기본 웹 브라우저로 사용하고 있는 아이폰 사용자가 국내에서도 크게 증가하면서 비단 Active X뿐만 아니라, Adobe flash, MS silverlight 등과 연관해서 멀티 브라우징과 웹 접근성에 대한 논쟁이 가열되고 있다.
필자는 리눅스를 주로 사용하고 있고, 웹 브라우저도 Firefox를 주로 사용한다. 인터넷 뱅킹을 하려면 Windows로 다시 재부팅 하거나, 가상화를 이용해서 Windows를 부팅한 뒤에 사용을 해야 했다. 일반 웹 사이트에서도 IE에 종속적인 사이트를 보는 것은 그냥 포기하거나 했는데, 멀티 브라우징에 대한 내용이 최근 크게 대두 되고 있는것에 대해 환영하는 입장이다.
- 향후 전망
이미 MS사에서는 Active X가 갖는 보안취약성 때문에 IE8(Internet Explorer)에서는 Active X를 공식적으로 사용하지 못하도록 했다. 하지만 기존 사용자들의 편의를 위해 '호환성 보기'라는 기능을 추가하기도 했지만... 이와 같은 상황에서 기존의 은행들이나, 보안회사들은 대부분의 사용자가 IE라는 가정, 지금까지의 타성에 젖어 기존 환경을 그대로 고집하는 일은 없기를 바란다.
그래도 이제는 정부에서도 이에 대한 내용들에 대해 통감을 하는 듯 하다. 행정 안전부는 우선적으로 국세청의 연말정산 사이트, 농협에서 여러 웹 브라우저에서 공인인증서를 사용할 수 있도록 하고 있고, 다른 사이트로도 점차 확대해 나갈 것이라고 한다. 하루 빨리 많은 사이트들에서 적용되기를 바란다.
* 첨부 자료
Active X : http://ko.wikipedia.org/wiki/Active_X
* 관련 사이트
http://www.zdnet.co.kr/Contents/2010/03/24/zdnet20100324170547.htm
http://www.zdnet.co.kr/ArticleView.asp?artice_id=20100321174535
http://openweb.or.kr/?page_id=1028
인터넷 뱅킹, 멀티 브라우저 지지부진.. 2010/03/24 zdnet, Korea
- Active X로 인한 IE의 종속 심화
이미 몇 해 전부터, PC 인터넷 뱅킹에서도 웹 브라우저에 관한 논란은 계속 되어 왔다. 우리나라의 인터넷 뱅킹 환경은 대부분 MS의 IE(Internet Explorer)에서만 지원하는 Active X를 통한 인증을 지원하고 있으며, 이로 인해 다른 OS를 사용하고 있거나, 다른 웹 브라우저를 사용하고 있는 사용자들은 이에 대한 접근 자체를 제한하고 실정이다. 이는 인터넷 뱅킹 뿐만이 아니라, 정부 민원 서비스, 일반 웹 사이트들 역시 Active X를 사용하면서 IE에 대한 종속이 더욱 심화 되어 왔다.
- 모바일에서의 웹 접근성에 대한 논쟁
우리나라 데스크톱 환경은 전통적(?)으로 MS Windows 계열이 대부분 이었으므로, 다른 OS를 사용하고 있었던 사용자들은 이런 상황에 대해 한 목소리를 내기 어려웠다. 하지만 사파리를 기본 웹 브라우저로 사용하고 있는 아이폰 사용자가 국내에서도 크게 증가하면서 비단 Active X뿐만 아니라, Adobe flash, MS silverlight 등과 연관해서 멀티 브라우징과 웹 접근성에 대한 논쟁이 가열되고 있다.
필자는 리눅스를 주로 사용하고 있고, 웹 브라우저도 Firefox를 주로 사용한다. 인터넷 뱅킹을 하려면 Windows로 다시 재부팅 하거나, 가상화를 이용해서 Windows를 부팅한 뒤에 사용을 해야 했다. 일반 웹 사이트에서도 IE에 종속적인 사이트를 보는 것은 그냥 포기하거나 했는데, 멀티 브라우징에 대한 내용이 최근 크게 대두 되고 있는것에 대해 환영하는 입장이다.
- 향후 전망
이미 MS사에서는 Active X가 갖는 보안취약성 때문에 IE8(Internet Explorer)에서는 Active X를 공식적으로 사용하지 못하도록 했다. 하지만 기존 사용자들의 편의를 위해 '호환성 보기'라는 기능을 추가하기도 했지만... 이와 같은 상황에서 기존의 은행들이나, 보안회사들은 대부분의 사용자가 IE라는 가정, 지금까지의 타성에 젖어 기존 환경을 그대로 고집하는 일은 없기를 바란다.
그래도 이제는 정부에서도 이에 대한 내용들에 대해 통감을 하는 듯 하다. 행정 안전부는 우선적으로 국세청의 연말정산 사이트, 농협에서 여러 웹 브라우저에서 공인인증서를 사용할 수 있도록 하고 있고, 다른 사이트로도 점차 확대해 나갈 것이라고 한다. 하루 빨리 많은 사이트들에서 적용되기를 바란다.
* 첨부 자료
Active X : http://ko.wikipedia.org/wiki/Active_X
* 관련 사이트
http://www.zdnet.co.kr/Contents/2010/03/24/zdnet20100324170547.htm
http://www.zdnet.co.kr/ArticleView.asp?artice_id=20100321174535
http://openweb.or.kr/?page_id=1028
2010년 3월 24일 수요일
[데비안] lxde로 설치하기
데비안 설치시 lxde로 설치하려면 iso cdrom을 넣고 첫 부팅화면 하단에 옵션을 설정해주어야 한다.
boot : desktop=lxde
Tasksel
* After a while the installer presents you a list of tasks to install software for.
* It is OK to install only standard and install other software you might want later on.
* For a really minimal system you can even omit standard.
*
Lenny D-I RC1 should support task selection as boot option, you can now choose the default desktop task by appending such boot option: desktop=lxde or desktop=xfce.
*
After booting for the first time, if you didn't select a desktop as a boot parameter, or select the dekstop environment (701 users can run out of room on / with this task) then you will need to install xorg and your favourite window manager. For Gnome or KDE you are probably best off selecting the core metapackage. For Gnome, install gnome-core, and for KDE, select kde-core. You will also need to install the following packages for X.org.
출처 : http://wiki.debian.org/DebianEeePC/HowTo/Install
boot : desktop=lxde
Tasksel
* After a while the installer presents you a list of tasks to install software for.
* It is OK to install only standard and install other software you might want later on.
* For a really minimal system you can even omit standard.
*
Lenny D-I RC1 should support task selection as boot option, you can now choose the default desktop task by appending such boot option: desktop=lxde or desktop=xfce.
*
After booting for the first time, if you didn't select a desktop as a boot parameter, or select the dekstop environment (701 users can run out of room on / with this task) then you will need to install xorg and your favourite window manager. For Gnome or KDE you are probably best off selecting the core metapackage. For Gnome, install gnome-core, and for KDE, select kde-core. You will also need to install the following packages for X.org.
출처 : http://wiki.debian.org/DebianEeePC/HowTo/Install
2010년 3월 23일 화요일
LTE vs WIMAX - 이준환
모바일 통신의 4G에서의 대표주자로 손꼽히고 있는 Wimax와 LTE(Long Term Evolution) 누가 4g 통신시장에서 선두주자가 될것인가에 이목이 집중되고 있다.
두 방식 모두 OFDM, MIMO라는 공통적인 방식을 사용하고 있지만, 이들의 기반 및 배경에 대해서는 차이가 있다. LTE와 Wimax에 대해서 알아 보자.
LTE(Long Term Evolution)는 3세대 비동기식 이동통신기술 표준화 기구 3GPP(3rd Generation Partnership Project)가 2008년 12월 확정한 무선 고속 데이터 패킷 접속규격인 Release 8을 기반으로 하고 있으며, 핵심기술인 OFDM과 MIMO를 이용하여 HSDPA보다 12배 이상 빠른 속도로 통신할 수 있다. 3g의 GSM 기반의 유럽진영에서 내세우는 4G기술이다. 노키아, 에릭슨, 지멘스 등의 유럽 기업과 한국에서는 LGT에서 4G 표준으로 LTE를 채택하기도 하였다.
Wimax는 WirelessMAN이라고도 불리는 IEEE 802.16 표준에 기반을 두고 있다. "와이맥스"라는 이름은 표준의 상호 운용성과 순응을 제고시키기 위해 와이맥스 포럼이 2001년 6월에 만든 것이다. 특히 우리나라의 한국전자통신 연구원과 삼성전자가 주도적으로 개발해 이 기술의 원천 기술 대부분을 우리나라에서 보유하고 있기도 하다.
향후 LTE와 Wimax의 전망에 대해서는 많은 이야기가 나오고 있는데, 모토로라에서는 LTE가 4G시장의 80%를 점유하게 될 것이라고 예측하고 있다. 이미 대부분의 시장이 4G의 표준화를 이루게 될 것이라는 전망을 많이 내놓고 있다.
Wimax는 이미 상용화가 일부 국가, 지역을 대상으로 진행이 되어 있는 상태이고, LTE는 에릭슨 등에서 올해(2010년) 상용화를 목표로 진행되고 있다. 상용화 측면에서는 Wimax가 한발 앞섰다고 볼 수 있다. Wimax는 IEEE 802.16을 표준으로 하고 있으므로 상대적으로 LTE보다는 저렴한 비용으로 구축할 수 있다. 하지만 무선통신이 4G로 넘어가도라도 과도기 적인 시점에서 많은 사용자를 보유하고 있는 GSM 방식의 2G, 3G를 포용하기 위해서는 LTE가 더 유리하지 않는냐는 입장도 지배적으로 들리고 있다.
IT 기술의 특성상 표준화를 통해 승자가 모든 것을 독식하는(Winners takes all.) 상황이 벌어 질 수도 있지만, 한 간에서는 Wimax, LTE 복수 표준으로 채택되어 사용될 것이라는 전망도 내놓고 있다. 앞으로 더 지켜 봐야 할 것이다.
참고 사이트 : http://ronnie05.wordpress.com/2009/04/
http://gigaom.com/2008/03/05/a-little-4g-sibling-rivalry/
http://ko.wikipedia.org/wiki/%EC%99%80%EC%9D%B4%EB%B8%8C%EB%A1%9C
http://ko.wikipedia.org/wiki/WiMAX
http://ko.wikipedia.org/wiki/LTE
두 방식 모두 OFDM, MIMO라는 공통적인 방식을 사용하고 있지만, 이들의 기반 및 배경에 대해서는 차이가 있다. LTE와 Wimax에 대해서 알아 보자.
LTE(Long Term Evolution)는 3세대 비동기식 이동통신기술 표준화 기구 3GPP(3rd Generation Partnership Project)가 2008년 12월 확정한 무선 고속 데이터 패킷 접속규격인 Release 8을 기반으로 하고 있으며, 핵심기술인 OFDM과 MIMO를 이용하여 HSDPA보다 12배 이상 빠른 속도로 통신할 수 있다. 3g의 GSM 기반의 유럽진영에서 내세우는 4G기술이다. 노키아, 에릭슨, 지멘스 등의 유럽 기업과 한국에서는 LGT에서 4G 표준으로 LTE를 채택하기도 하였다.
Wimax는 WirelessMAN이라고도 불리는 IEEE 802.16 표준에 기반을 두고 있다. "와이맥스"라는 이름은 표준의 상호 운용성과 순응을 제고시키기 위해 와이맥스 포럼이 2001년 6월에 만든 것이다. 특히 우리나라의 한국전자통신 연구원과 삼성전자가 주도적으로 개발해 이 기술의 원천 기술 대부분을 우리나라에서 보유하고 있기도 하다.
향후 LTE와 Wimax의 전망에 대해서는 많은 이야기가 나오고 있는데, 모토로라에서는 LTE가 4G시장의 80%를 점유하게 될 것이라고 예측하고 있다. 이미 대부분의 시장이 4G의 표준화를 이루게 될 것이라는 전망을 많이 내놓고 있다.
Wimax는 이미 상용화가 일부 국가, 지역을 대상으로 진행이 되어 있는 상태이고, LTE는 에릭슨 등에서 올해(2010년) 상용화를 목표로 진행되고 있다. 상용화 측면에서는 Wimax가 한발 앞섰다고 볼 수 있다. Wimax는 IEEE 802.16을 표준으로 하고 있으므로 상대적으로 LTE보다는 저렴한 비용으로 구축할 수 있다. 하지만 무선통신이 4G로 넘어가도라도 과도기 적인 시점에서 많은 사용자를 보유하고 있는 GSM 방식의 2G, 3G를 포용하기 위해서는 LTE가 더 유리하지 않는냐는 입장도 지배적으로 들리고 있다.
IT 기술의 특성상 표준화를 통해 승자가 모든 것을 독식하는(Winners takes all.) 상황이 벌어 질 수도 있지만, 한 간에서는 Wimax, LTE 복수 표준으로 채택되어 사용될 것이라는 전망도 내놓고 있다. 앞으로 더 지켜 봐야 할 것이다.
참고 사이트 : http://ronnie05.wordpress.com/2009/04/
http://gigaom.com/2008/03/05/a-little-4g-sibling-rivalry/
http://ko.wikipedia.org/wiki/%EC%99%80%EC%9D%B4%EB%B8%8C%EB%A1%9C
http://ko.wikipedia.org/wiki/WiMAX
http://ko.wikipedia.org/wiki/LTE
2010년 3월 22일 월요일
DFD & Structure chart
* DFD (데이터 흐름도)
DFD[디-에프-디]는 시스템 내에서 프로세스들간의 데이터 흐름을 기술하는데 사용되는 도형식 표현법을 말한다. 대부분의 구조적 분석기법에서 중요한 도구로 사용된다. DFD는 다음과 같이 네 가지 요소로 구성된다.
데이터 흐름(data flow) : 데이터 흐름은 데이터들이 이동되는 통로를 의미하는데, 그림에서 화살표시가 이를 의미한다.
처리과정, 또는 프로세스(process) : 처리과정은 출력되는 데이터 흐름을 위하여 입력 데이터에 가해지는 변형과정을 의미한다. 그림에서 원(bubble)으로 표시된 것이 이를 의미한다.
데이터 저장소(data store) : 데이터저장소는 하나의 처리과정에서 다음의 처리과정으로 데이터가 직접 이동되지 않고, 추후 이용될 목적으로 보관되는 경우에 사용된다. 그림에서 두 줄의 짧은 평행선으로 표시된 것이 이를 의미한다.
종단점(terminator) : 대상시스템이 외부에 존재함으로써 분석대상에서 제외되는 부분이며, 이는 데이터를 제공하는 입력부(source)와 데이터를 이용하는 출력부(sink)로 구성된다. 그림에서 직사각형으로 표시된 것들이 이를 의미한다.
출처 : http://www.terms.co.kr/DFD.htm
* Strucure chart (구조도)
This chart is used in structured programming to arrange the program modules in a tree structure. Each module is represented by a box, which contains the module's name. The tree structure visualizes the relationships between the modules.[3]
출처 : http://en.wikipedia.org/wiki/Structure_chart
DFD[디-에프-디]는 시스템 내에서 프로세스들간의 데이터 흐름을 기술하는데 사용되는 도형식 표현법을 말한다. 대부분의 구조적 분석기법에서 중요한 도구로 사용된다. DFD는 다음과 같이 네 가지 요소로 구성된다.
데이터 흐름(data flow) : 데이터 흐름은 데이터들이 이동되는 통로를 의미하는데, 그림에서 화살표시가 이를 의미한다.
처리과정, 또는 프로세스(process) : 처리과정은 출력되는 데이터 흐름을 위하여 입력 데이터에 가해지는 변형과정을 의미한다. 그림에서 원(bubble)으로 표시된 것이 이를 의미한다.
데이터 저장소(data store) : 데이터저장소는 하나의 처리과정에서 다음의 처리과정으로 데이터가 직접 이동되지 않고, 추후 이용될 목적으로 보관되는 경우에 사용된다. 그림에서 두 줄의 짧은 평행선으로 표시된 것이 이를 의미한다.
종단점(terminator) : 대상시스템이 외부에 존재함으로써 분석대상에서 제외되는 부분이며, 이는 데이터를 제공하는 입력부(source)와 데이터를 이용하는 출력부(sink)로 구성된다. 그림에서 직사각형으로 표시된 것들이 이를 의미한다.
출처 : http://www.terms.co.kr/DFD.htm
* Strucure chart (구조도)
This chart is used in structured programming to arrange the program modules in a tree structure. Each module is represented by a box, which contains the module's name. The tree structure visualizes the relationships between the modules.[3]
출처 : http://en.wikipedia.org/wiki/Structure_chart
2010년 3월 18일 목요일
[xen] Booting a guest complains about trying to use an already-mounted block device, but it isn't mounted?!
4.11. Booting a guest complains about trying to use an already-mounted block device, but it isn't mounted?!
This is a bug to do with Xen incorrectly freeing guest resources. Take a look at the last line in /var/log/xen-hotplug.log, something like:
xenstore-read: couldn't read path /local/domain/9/vm
Take a note of that number, and run xenstore-rm backend/vbd/9, replacing 9 with the number you read. The guest machine should then boot happily.
Be careful when doing this that there are no guests effectively using the device in question, damage will probably be incurred in that case!2010년 3월 17일 수요일
[python] 가변인수와 람다함수
잘 쓰지 않아서 그런지 많이 헷갈린다. 하지만 오픈소스들에는 많이 쓰는 표현..
이제 잊어먹지 말자..
#!/usr/bin/env python
# 가변 인수 테스트
def func(a, b, *params):
print a, b
print params
# 가변 인수 키워드 테스트 키워드의 경우 dictionary로 표현되고
# *params가 아니고 **params로 표현된다. 주의!
def func1(a, b, **params):
print a, b
print params
func(1, 2, 3,4)
func1(1, 2, c=100, d=200)
* 결과
func 결과
1 2
(3, 4)
func1 결과
1 2
{'c': 100, 'd': 200}
- 람다함수 -
람다함수는 이름이 없는 한 줄짜리 함수...
구성
lambda 콤마로 구분된 인수들 : 식
ex) lambda x, y : x + y
>>> g = lambda x, y : x + y
>>> g(1,2)
3
이제 잊어먹지 말자..
#!/usr/bin/env python
# 가변 인수 테스트
def func(a, b, *params):
print a, b
print params
# 가변 인수 키워드 테스트 키워드의 경우 dictionary로 표현되고
# *params가 아니고 **params로 표현된다. 주의!
def func1(a, b, **params):
print a, b
print params
func(1, 2, 3,4)
func1(1, 2, c=100, d=200)
* 결과
func 결과
1 2
(3, 4)
func1 결과
1 2
{'c': 100, 'd': 200}
- 람다함수 -
람다함수는 이름이 없는 한 줄짜리 함수...
구성
lambda 콤마로 구분된 인수들 : 식
ex) lambda x, y : x + y
>>> g = lambda x, y : x + y
>>> g(1,2)
3
2010년 3월 16일 화요일
[칼럼] 한국적 공인인증 시스템
리눅스와 firefox 브라우저를 주로 사용하는 사용자로써... 우리나라의 은행, 정부기관들의 activeX 사용은 나에게 쥐약이다. 하루 빨리 없어지길 바라며.. 아래 좋은 글이 있어서 링크를 걸어 둔다
zdnet : 한국적 공인인증 시스템
zdnet : 한국적 공인인증 시스템
2010년 3월 14일 일요일
애자일 프랙티스를 읽고.....
"애자일".. 이전 부터 애자일 개발 방법론에 대해서 간간히 들어왔던 터라 낯선단어는 아니였다. 더 효율적인 프로젝트 개발에 나름 고민하던 중, 애자일이라는 것을 만나게 되었다.
애자일 개발 프로세스란 어느 특정 개발 방법론을 가리키는 말은 아니고 "애자일(Agile=기민한, 좋은것을 빠르고 낭비없게 만드는 것) 개발을 가능하게 해 주는 다양한 방법론 전체를 일컫는 말이다.
전체의 큰 프로젝트 혹은 시스템을 하나의 덩어리로 보는 것이 아니라, 작은 단위로 쪼개서 생각하는 것그리고 이 작은 단위들을 빠른 주기로 실행하는 것이 애자일의 핵심이다.
* 애자일 프로세스 란 : 보기
사례중심의 애자일 관련 책을 찾다가, "애자일 프랙틱스"라는 책을 찾게 되었다.
이 책을 읽고 많이 공감이 가고, 꼭 한 번 생각해봐야 하는 부분에 대해서 정리해 본다.
* 땜질은 늪을 만든다.
* 단위 테스트를 이용해라.
* 코드의 결합도를 낮추어라.
* 코드로 소통하라.
* 다른 사람에게 계속 알리기.
* 짧은 반복을 사용하여, 점진적으로 배포하라.
* 땜질은 늪을 만든다.
버그가 있고, 시간 압박을 받았다. 땜질을 해도 잘 돌아가는 것 같았다. 리스트 마지막에 한 줄을 덧 붙이거나, 무시해도 당장엔 잘 동작을 했다. 그러나 다음의 대처 방법이 좋은 프로그래머와 서투른 프로그래머를 구분하는 방법이다. 서투른 프로그래머는 위와 같은 상황이 있은 후 다른 일로 넘어가 버리고, 좋은 프로그래머는 이 일로 인해 다른 것들이 영향을 받지 않는지 확인을 한다.
우리도 위와 같은 일이 많았다. 나도 그랬다고 생각한다. 나중에 위와 같은 임시 방편적인 땜질을 많이 한 후에, 기능을 추가하거나, 수정하는 일은 머리를 잡아 뜯는 악몽이 되기도 한다.
- 위와 같은 일이 벌어지지 않게 하려면 -
우선 프로세스에 대해 최소한의 이해를 하려고 노력을 해야 한다. 누군가가 나에게 이일을 시켰기 때문에, 나는 이 부분만 하겠다라고 생각하는 것은 잘못된 생각이다. 단위 테스트를 활용하는 것도 큰 도움이 된다.
* 단위 테스트를 이용하라
코드의 특정 부분, 혹은 특정 모듈을 개발하는 경우에는 이를 테스트하기 위해 print문으로 찍거나, 결과 값들을 확인해보는 테스트를 필연적으로 실행하게 된다. 이 부분들을 따로 모아 두어서 나중에 유닛 단위로 테스트하는데 활용을 한다면, 그리고 이 테스트들이 자동적으로 이루어 지도록 하자.
이를 통해 메일로 피드백을 받아보게 한다거나, 자동화를 시키는 것은 품질 관리에 있어서 우리에게 큰 짐을 하나 덜어주는 일이라 할 수 있겠다.
* 코드 결합도를 낮추자.
특정 프로젝트를 진행하다 보면 다른 프로젝트와 필연적으로 공통되는 부분들이 있다. 이렇게 공통되는 부분들을 나중에 사용하려고 해도, 코드내의 특정 부분이 다른 파일 혹은 다른 파일내의 변수와 강하게 결합이 되어있어서, 활용하기 어려운 경우를 종종보기도 한다.
이 내용은 단위 테스트와도 연결 될 수 있다. 단위 테스트(모듈 단위 테스트)가 가능하다는 것은 코드의 유연성이 있다는 이야기와도 연결이 될수 있다. 또 한 코딩 스타일도, 확장성, 유연성을 갖을 수 시작 단계에서 생각을 해보는 것이 좋다.
* 코드로 소통하라.
Enki 프로젝트를 진행하면서, Core에서 UI로 알려주는 API에 대한 문서를 따로 만들어서 관리를 했었다. 헌데, 이런 식의 문서들이 하나 둘 늘어가게 되고 필연적으로 설계 및 API등이 변경되게 되는데, 이들 변경된 부분들을 다시 문서에 적용을 하는 것이 굉장히 번거롭고 귀찮은 작업으로 느껴진다.
문서가 꼭 필요한 것들은 제외를 하고, 코드와 관련된 부분에서는 코드로 위 문서들을 대신하는 것이 현명한 방법이다. 예를들어 python을 이용한다면, pydoc 문서등을 활용해서 코드로 의사 소통을 하자.
또한 코드에서 변수명이나 메소드명에 명확하고 이해하기 쉬운 이름을 붙여주어서 코드로 다른사람을 이해시키자. 이도 어려운 상황이라면.. 부가 적인 설명을 달은 주석을 많이 활용하자.
우리는 주석을 많이 활용하고 있는가?
* 다른 사람에게 계속 알리기
프로젝트를 진행하면서, 제시간에 작업을 끝내는 것이 당연한 일이다. 그러나, 문제에 부딪쳐서 지연되는 일은 늘 있다. 데드라인이 다가오고 있고, 이 나쁜 소식을 전하는데, 데드라인까지 상급자나 고객이 기다린다면, 자신의 사소한 사항까지 관리해 달라고 관리자나 기술 리더에게 요청하는 것이나 다름없다.
위와 같은 문제에 부딪혔을 때, 다른 사람에게 계속 알려서 당황스러운 상황을 없애고, 이로 인해다른 이들은 진행 상황을 알기 때문에 편안해진다. 프로젝트 진행이 지연되고 있다면, 왜 늦어지고 있는지, 문제가 무엇인지를 다른 사람들에게 알리고 의논하자. 다른 사람이 일의 상황을 물을 때까지 기다리지 말자.
* 짧은 반복을 사용하여, 점진적으로 배포하라.
이 책의 핵심이다. 분석, 설계, 구현, 테스트, 피드백 구하기 등을 주기적으로 계속 적으로 반복하는 것이다.
최소한의 유용한 기능 단위로 묶어서 제품을 릴리스하라. 각 추가 기능의 개발에 1~4 주 정도의 반복 주기를 사용하라.
* 지금까지 프로젝트를 진행하면서 느낀점.
지금까지 프로젝트를 진행하면서, 소프트웨어의 특성 자체가 계속 적인 기능의 수정, 추가라고 생각을 한다. 이와 같이 진행되면서 소프트웨어의 수정이 자주 일어나는 것은 당연한 일이고 오히려 처음 계획된데로 100% 진행이 되는 프로젝트가 있다면 프로젝트 자체를 의심해야 하지 않을까? 자주 수정이 된다고 해서 스트레스 받지 말자... 차라리 이런 고민을 하는 시간에 어떻게 하면 더 유연하고 수정된 내용들을 잘 반영할 수 있는지에 대해 고민하는 편이 더 낮다고 생각한다.
애자일 개발 프로세스란 어느 특정 개발 방법론을 가리키는 말은 아니고 "애자일(Agile=기민한, 좋은것을 빠르고 낭비없게 만드는 것) 개발을 가능하게 해 주는 다양한 방법론 전체를 일컫는 말이다.
전체의 큰 프로젝트 혹은 시스템을 하나의 덩어리로 보는 것이 아니라, 작은 단위로 쪼개서 생각하는 것그리고 이 작은 단위들을 빠른 주기로 실행하는 것이 애자일의 핵심이다.
* 애자일 프로세스 란 : 보기
사례중심의 애자일 관련 책을 찾다가, "애자일 프랙틱스"라는 책을 찾게 되었다.
이 책을 읽고 많이 공감이 가고, 꼭 한 번 생각해봐야 하는 부분에 대해서 정리해 본다.
* 땜질은 늪을 만든다.
* 단위 테스트를 이용해라.
* 코드의 결합도를 낮추어라.
* 코드로 소통하라.
* 다른 사람에게 계속 알리기.
* 짧은 반복을 사용하여, 점진적으로 배포하라.
* 땜질은 늪을 만든다.
버그가 있고, 시간 압박을 받았다. 땜질을 해도 잘 돌아가는 것 같았다. 리스트 마지막에 한 줄을 덧 붙이거나, 무시해도 당장엔 잘 동작을 했다. 그러나 다음의 대처 방법이 좋은 프로그래머와 서투른 프로그래머를 구분하는 방법이다. 서투른 프로그래머는 위와 같은 상황이 있은 후 다른 일로 넘어가 버리고, 좋은 프로그래머는 이 일로 인해 다른 것들이 영향을 받지 않는지 확인을 한다.
우리도 위와 같은 일이 많았다. 나도 그랬다고 생각한다. 나중에 위와 같은 임시 방편적인 땜질을 많이 한 후에, 기능을 추가하거나, 수정하는 일은 머리를 잡아 뜯는 악몽이 되기도 한다.
- 위와 같은 일이 벌어지지 않게 하려면 -
우선 프로세스에 대해 최소한의 이해를 하려고 노력을 해야 한다. 누군가가 나에게 이일을 시켰기 때문에, 나는 이 부분만 하겠다라고 생각하는 것은 잘못된 생각이다. 단위 테스트를 활용하는 것도 큰 도움이 된다.
* 단위 테스트를 이용하라
코드의 특정 부분, 혹은 특정 모듈을 개발하는 경우에는 이를 테스트하기 위해 print문으로 찍거나, 결과 값들을 확인해보는 테스트를 필연적으로 실행하게 된다. 이 부분들을 따로 모아 두어서 나중에 유닛 단위로 테스트하는데 활용을 한다면, 그리고 이 테스트들이 자동적으로 이루어 지도록 하자.
이를 통해 메일로 피드백을 받아보게 한다거나, 자동화를 시키는 것은 품질 관리에 있어서 우리에게 큰 짐을 하나 덜어주는 일이라 할 수 있겠다.
* 코드 결합도를 낮추자.
특정 프로젝트를 진행하다 보면 다른 프로젝트와 필연적으로 공통되는 부분들이 있다. 이렇게 공통되는 부분들을 나중에 사용하려고 해도, 코드내의 특정 부분이 다른 파일 혹은 다른 파일내의 변수와 강하게 결합이 되어있어서, 활용하기 어려운 경우를 종종보기도 한다.
이 내용은 단위 테스트와도 연결 될 수 있다. 단위 테스트(모듈 단위 테스트)가 가능하다는 것은 코드의 유연성이 있다는 이야기와도 연결이 될수 있다. 또 한 코딩 스타일도, 확장성, 유연성을 갖을 수 시작 단계에서 생각을 해보는 것이 좋다.
* 코드로 소통하라.
Enki 프로젝트를 진행하면서, Core에서 UI로 알려주는 API에 대한 문서를 따로 만들어서 관리를 했었다. 헌데, 이런 식의 문서들이 하나 둘 늘어가게 되고 필연적으로 설계 및 API등이 변경되게 되는데, 이들 변경된 부분들을 다시 문서에 적용을 하는 것이 굉장히 번거롭고 귀찮은 작업으로 느껴진다.
문서가 꼭 필요한 것들은 제외를 하고, 코드와 관련된 부분에서는 코드로 위 문서들을 대신하는 것이 현명한 방법이다. 예를들어 python을 이용한다면, pydoc 문서등을 활용해서 코드로 의사 소통을 하자.
또한 코드에서 변수명이나 메소드명에 명확하고 이해하기 쉬운 이름을 붙여주어서 코드로 다른사람을 이해시키자. 이도 어려운 상황이라면.. 부가 적인 설명을 달은 주석을 많이 활용하자.
우리는 주석을 많이 활용하고 있는가?
* 다른 사람에게 계속 알리기
프로젝트를 진행하면서, 제시간에 작업을 끝내는 것이 당연한 일이다. 그러나, 문제에 부딪쳐서 지연되는 일은 늘 있다. 데드라인이 다가오고 있고, 이 나쁜 소식을 전하는데, 데드라인까지 상급자나 고객이 기다린다면, 자신의 사소한 사항까지 관리해 달라고 관리자나 기술 리더에게 요청하는 것이나 다름없다.
위와 같은 문제에 부딪혔을 때, 다른 사람에게 계속 알려서 당황스러운 상황을 없애고, 이로 인해다른 이들은 진행 상황을 알기 때문에 편안해진다. 프로젝트 진행이 지연되고 있다면, 왜 늦어지고 있는지, 문제가 무엇인지를 다른 사람들에게 알리고 의논하자. 다른 사람이 일의 상황을 물을 때까지 기다리지 말자.
* 짧은 반복을 사용하여, 점진적으로 배포하라.
이 책의 핵심이다. 분석, 설계, 구현, 테스트, 피드백 구하기 등을 주기적으로 계속 적으로 반복하는 것이다.
최소한의 유용한 기능 단위로 묶어서 제품을 릴리스하라. 각 추가 기능의 개발에 1~4 주 정도의 반복 주기를 사용하라.
* 지금까지 프로젝트를 진행하면서 느낀점.
지금까지 프로젝트를 진행하면서, 소프트웨어의 특성 자체가 계속 적인 기능의 수정, 추가라고 생각을 한다. 이와 같이 진행되면서 소프트웨어의 수정이 자주 일어나는 것은 당연한 일이고 오히려 처음 계획된데로 100% 진행이 되는 프로젝트가 있다면 프로젝트 자체를 의심해야 하지 않을까? 자주 수정이 된다고 해서 스트레스 받지 말자... 차라리 이런 고민을 하는 시간에 어떻게 하면 더 유연하고 수정된 내용들을 잘 반영할 수 있는지에 대해 고민하는 편이 더 낮다고 생각한다.
2010년 3월 13일 토요일
[2010-03-10] 2주차 모바일 컴퓨팅 특강 후기
안녕하세요. 25기 이준환 입니다.
작년 우리나라에 불어 닥친, 아이폰으로 시작된 스마트폰 열풍,
그리고 미국에서의 아이폰, 킨들, 그리고 아이패드 까지..
모바일 열풍으로 올 한해도 시작하는 것 같습니다.
저는 twitter도 얼마전에 쓰기 시작했고, 블로그나 cyworld 같은 SNS는
귀차니즘으로.. ㅡ.ㅡ 잘 쓰지 않았었는데, 이 수업을 계기로 많이 써보려 합니다.
요새 모바일이 너무 강세이다 보니, 모바일과 관련한 수업을
듣게 된 것이 참으로 다행이라고 생각합니다...
개인적으로는 apple의 앱 스토어 쪽도 요새 관심을
갖고 있습니다.
이 수업에서 모바일에 대한 전반적인 사항 및 넓은 시야를 갖게
되었으면 좋겠네요.. 한 한기동안 재미있는 시간이 될 것 같습니다.
트위터 : @nahaeya
블로그 : http://jjunsit.blogspot.com/
작년 우리나라에 불어 닥친, 아이폰으로 시작된 스마트폰 열풍,
그리고 미국에서의 아이폰, 킨들, 그리고 아이패드 까지..
모바일 열풍으로 올 한해도 시작하는 것 같습니다.
저는 twitter도 얼마전에 쓰기 시작했고, 블로그나 cyworld 같은 SNS는
귀차니즘으로.. ㅡ.ㅡ 잘 쓰지 않았었는데, 이 수업을 계기로 많이 써보려 합니다.
요새 모바일이 너무 강세이다 보니, 모바일과 관련한 수업을
듣게 된 것이 참으로 다행이라고 생각합니다...
개인적으로는 apple의 앱 스토어 쪽도 요새 관심을
갖고 있습니다.
이 수업에서 모바일에 대한 전반적인 사항 및 넓은 시야를 갖게
되었으면 좋겠네요.. 한 한기동안 재미있는 시간이 될 것 같습니다.
트위터 : @nahaeya
블로그 : http://jjunsit.blogspot.com/
2010년 3월 12일 금요일
vim 대문자 소문자 변경하기
빔 에디터에서, 알파벳의 대소문자를 바꾸는 명령어입니다. 현재 문서를 편집중이라면, 키보드의 Esc 키를 눌러 명령어 모드로 빠져나옵니다.
대소문자 반전 키
~ (물결 무늬) 키를 누르면 현재 커서가 위치한 글자 1개의 대소문자가 반전됩니다. 대문자는 소문자로, 소문자는 대문자로 변경됩니다.
키보드 가장 왼쪽에 ~ 이렇게 물결 무늬처럼 생긴 "틸데(Tilde)" 키가 있습니다. Shift키를 누르면서 `(백틱)키를 누르면 ~가 찍힙니다.
한 줄을 모두 대문자로 변환하는 명령어
gUU 라는 명령을 주면, 현재 커서가 위치한 줄이 모두 대문자로 변경됩니다.
한 줄을 모두 소문자로 변환하는 명령어
guu 라는 명령을 주면, 현재 커서가 위치한 줄이 모두 소문자로 변경됩니다.
출처 : http://mwultong.blogspot.com/2007/02/vim-vi-gvim-change-case.html
대소문자 반전 키
~ (물결 무늬) 키를 누르면 현재 커서가 위치한 글자 1개의 대소문자가 반전됩니다. 대문자는 소문자로, 소문자는 대문자로 변경됩니다.
키보드 가장 왼쪽에 ~ 이렇게 물결 무늬처럼 생긴 "틸데(Tilde)" 키가 있습니다. Shift키를 누르면서 `(백틱)키를 누르면 ~가 찍힙니다.
한 줄을 모두 대문자로 변환하는 명령어
gUU 라는 명령을 주면, 현재 커서가 위치한 줄이 모두 대문자로 변경됩니다.
한 줄을 모두 소문자로 변환하는 명령어
guu 라는 명령을 주면, 현재 커서가 위치한 줄이 모두 소문자로 변경됩니다.
출처 : http://mwultong.blogspot.com/2007/02/vim-vi-gvim-change-case.html
2010년 3월 10일 수요일
자주쓰는 vim 설정
* 내가 쓰는 vimrc 설정
1 set ts=8 sw=4 sts=4
2 set nu
3 set autoindent
4 set bg=dark
5 syntax on
* tabstop(ts)
한칸이 차지하는 스페이스의 개수. 즉, \t가 화면에 보여지는 크기를 말한다. 실제 탭 키를 눌렀을 때 가는 것과는 다를 수 있다 (이건 soft tab stop 참조)
1. ts=4: \t가 4칸을 차지한다.
2. ts=8: \t가 8칸을 차지한다.
* softtabstop(sts)
탭 키를 눌렀을 때 실제로 가는 칸 수. 진정한 의미의 탭인 \t가 아닐 수도 있다 (이건 tab stop 참조)
1. ts=8 sts=4: 탭 한번에는 빈칸 4번이고, 여기에 한번 더 누르면 8칸이 되면서 \t로 바뀐다 (et 설정에 따라 다를 수 있다)
* shiftwidth(sw)
autoindent할 때마다 들어가는 스페이스 수.
* nu : 앞에 줄 라인 표시
* bg=dark : 배경 화면(back ground) 설정 , default (light)보다 보기 좋다.
1 set ts=8 sw=4 sts=4
2 set nu
3 set autoindent
4 set bg=dark
5 syntax on
* tabstop(ts)
1. ts=4: \t가 4칸을 차지한다.
2. ts=8: \t가 8칸을 차지한다.
* softtabstop(sts)
탭 키를 눌렀을 때 실제로 가는 칸 수. 진정한 의미의 탭인 \t가 아닐 수도 있다 (이건 tab stop 참조)
1. ts=8 sts=4: 탭 한번에는 빈칸 4번이고, 여기에 한번 더 누르면 8칸이 되면서 \t로 바뀐다 (et 설정에 따라 다를 수 있다)
* shiftwidth(sw)
autoindent할 때마다 들어가는 스페이스 수.
* nu : 앞에 줄 라인 표시
* bg=dark : 배경 화면(back ground) 설정 , default (light)보다 보기 좋다.
2010년 3월 9일 화요일
rrdtool 공부(heartbeat & step & 용어정리)
rrdtool에서 step과 heartbeat 이라는 것이 있는데, 아리송 하다가 이제 이해했다.
* rrdtool create 명령 예
rrdtool create target.rrd \
--start 1023654125 \
--step 300 \
DS:mem:GAUGE:600:0:671744 \
RRA:AVERAGE:0.5:12:24 \
RRA:AVERAGE:0.5:288:31
* DS (Data Source) 스키마
DS:variable_name:DST:heartbeat:min:max
step : 데이터를 저장하는 주기 (초)
heartbeat : 위에서 보면 step이 300초이고, heartbeat이 600초로 되어 있다. 데이터를 저장하는 주기는 300초인데, 데이터 입력이 지연이 일어나면 300초를 더 기다리겠다는 뜻. 추가로 기다리는 300초동안에 들어오는 데이터에 대해서는 정상적인 데이터로 처리하고 그렇지 않은 경우에는 Unkown으로 데이터가 입력 된다.
* RRA : (Round Robin Archive) 스키가 -> RRA:CF:xff:step:rows
RRA는 데이터를 나중에 그래프나 다른 방법으로 취합할 때 어떻게 보여줄 것인가에 대한 스키마
- RRD 용어 정리 -
DS:variable_name:DST:heartbeat:min:max
* DS:variable_name:DST:heartbeat:min:max
* DS : Data Source
* PDP : Primary Data Point , step
* DST : Data Source Type(COUNTER, DERIVE, ABSOLUTE, GAUGE)
RRA:CF:xff:step:rows
* RRA : Round Robin Archive
* CF : Cosolidation fuction (AVERAGE, MINIMUM, MAXIMUM, LAST)
참조 사이트
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/SNMP/document/RRD
http://oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html
* rrdtool create 명령 예
rrdtool create target.rrd \
--start 1023654125 \
--step 300 \
DS:mem:GAUGE:600:0:671744 \
RRA:AVERAGE:0.5:12:24 \
RRA:AVERAGE:0.5:288:31
* DS (Data Source) 스키마
DS:variable_name:DST:heartbeat:min:max
step : 데이터를 저장하는 주기 (초)
heartbeat : 위에서 보면 step이 300초이고, heartbeat이 600초로 되어 있다. 데이터를 저장하는 주기는 300초인데, 데이터 입력이 지연이 일어나면 300초를 더 기다리겠다는 뜻. 추가로 기다리는 300초동안에 들어오는 데이터에 대해서는 정상적인 데이터로 처리하고 그렇지 않은 경우에는 Unkown으로 데이터가 입력 된다.
* RRA : (Round Robin Archive) 스키가 -> RRA:CF:xff:step:rows
RRA는 데이터를 나중에 그래프나 다른 방법으로 취합할 때 어떻게 보여줄 것인가에 대한 스키마
- RRD 용어 정리 -
DS:variable_name:DST:heartbeat:min:max
* DS:variable_name:DST:heartbeat:min:max
* DS : Data Source
* PDP : Primary Data Point , step
* DST : Data Source Type(COUNTER, DERIVE, ABSOLUTE, GAUGE)
RRA:CF:xff:step:rows
* RRA : Round Robin Archive
* CF : Cosolidation fuction (AVERAGE, MINIMUM, MAXIMUM, LAST)
참조 사이트
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/SNMP/document/RRD
http://oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html
2010년 3월 8일 월요일
rrd tool 공부 1
오늘 부터 rrdtool을 공부해보려고 한다.
예전부터 rrdtool의 적용 사용 법에 대해 많은 이야기가 있었는데..
이제야 공부를 시작하는군요....
참고 사이트 : http://oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html
예전부터 rrdtool의 적용 사용 법에 대해 많은 이야기가 있었는데..
이제야 공부를 시작하는군요....
참고 사이트 : http://oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html
피드 구독하기:
글 (Atom)