월별 글 목록: 2011년 7월월

Eclipse에서 XML의 attribute를 한줄로 표시하기..

안드로이드 프로그래밍을 하다보니..
XML로 UI를 설정하는데, 속성이 너무많아서 보기 쉽지 않네요.. ^^;;

보통 Source -> Format으로 코드의 indent를 맞췄는데..
XML은 바로 아래 Source -> Format Active Elements 가 있네요..

하지만, Source -> Format Active Elements 하면 아래와 같이 바뀌네요..

<TextView android:layout_width=”fill_parent”
    android:layout_height=”wrap_content” android:text=”텍스트 수정 ” />

그래서, 한줄로 맞춰보는걸 찾아보니…

Preference -> XML-> XML Files -> Editor -> Formatting 에서..
Split multiple attributes each on a new line 을 선택하면 되네요.. ^^

다시, Source -> Format Active Elements 하면 아래와 같이 바뀌네요..
만족스럽습니다.. ^^

<TextView
    android:layout_width=”fill_parent”
    android:layout_height=”wrap_content”
    android:text=”텍스트 수정 ” />

우분투(Ubuntu)에 LibreOffice 설치하기

10.04 이후부터 PPA를 이용한 LibreOffice 설치하기..

1. openoffice 삭제

sudo apt-get purge openoffice*.*

2. 리파지토리 추가 및 설치

sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get install libreoffice

3. 윈도별 추가 설치

- gnome : sudo apt-get install libreoffice-gnome
- kde : sudo apt-get install libreoffice-kde

4. Applications–>Office에서 확인

* Reference

http://www.ubuntugeek.com/install-libreoffice-in-ubuntu-11-0410-1010-04-using-ppa.html

안드로이드 퍼미션 리스트

아래는 안드로이드 퍼미션 목록이다.


ACCESS_CHECKIN_PROPERTIES      체크인데이터베이스의_속성테이블로_액세스
ACCESS_COARSE_LOCATION         코스_로케이션_액세스_(Cell-ID/WiFi)
ACCESS_FINE_LOCATION           파인로케이션_액세스(GPS)         
ACCESS_LOCATION_EXTRA_COMMANDS 로케이션_옵션_커맨드_액세스      
ACCESS_MOCK_LOCATION           목_로케이션_프로바이더_생성_(테스트용)
ACCESS_NETWORK_STATE           네트워크_상태_접근               
ACCESS_SURFACE_FLINGER         서피스_플링거_접근               
ACCESS_WIFI_STATE              WiFi상태_접근                    
ADD_SYSTEM_SERVICE             시스템서비스_추가                
BATTERY_STATS                  배터리_상태                      
BLUETOOTH                      블루투스                         
BLUETOOTH_ADMIN                블루투스_어드민                  
BRICK                          디바이스_실효성_지정             
BROADCAST_PACKAGE_REMOVED      제거된_패키지에_대한_notification_브로드캐스트
BROADCAST_SMS                  SMS에_대한_브로드캐스트          
BROADCAST_STICKY               인텐트_브로드캐스트              
CALL_PHONE                     통화                             
CALL_PRIVILEGED                통화(긴급전화_포함)              
CAMERA                         카메라                           
CHANGE_COMPONENT_ENABLED_STATE 컴포넌트의_실효성_변경           
CHANGE_CONFIGURATION           컨피그_변경                      
CHANGE_NETWORK_STATE           통신상태_변경                    
CHANGE_WIFI_STATE              WiFi상태_변경                    
CLEAR_APP_CACHE                어플리케이션_캐시_클리어         
CLEAR_APP_USER_DATA            어플리케이션의_유저데이터_클리어 
CONTROL_LOCATION_UPDATES       위치정보_갱신                    
DELETE_CACHE_FILES             캐시파일_제거                    
DELETE_PACKAGES                패키지_제거                      
DEVICE_POWER                   전원상태에_대한_로우레벨_접근    
DIAGNOSTIC                     진단리소스_읽고쓰기              
DISABLE_KEYGUARD               키_가드_끄기_DUMP_덤?           
EXPAND_STATUS_BAR              상태표시줄_확장                  
FACTORY_TEST                   팩토리_테스트                    
FLASHLIGHT                     플래시라이트                     
FORCE_BACK                     포스백                           
GET_ACCOUNTS                   어카운트_획득                    
GET_PACKAGE_SIZE               패키지_획득                      
GET_TASKS                      태스크_획득                      
HARDWARE_TEST                  하드웨어테스트                   
INJECT_EVENTS                  유저이벤트_키/트랙볼             
INSTALL_PACKAGES               패키지_인스톨                    
INTERNAL_SYSTEM_WINDOW         내부_시스템윈도_활용             
INTERNET                       인터넷                           
MANAGE_APP_TOKENS              어플리케이션_토큰관리            
MASTER_CLEAR                   마스터_클리어                    
MODIFY_AUDIO_SETTINGS          오디오설정_편집                  
MODIFY_PHONE_STATE             전화상태_편집                    
MOUNT_UNMOUNT_FILESYSTEMS      파일시스템_편집                  
PERSISTENT_ACTIVITY            액티비티_지속                    
PROCESS_OUTGOING_CALLS         전화_발신처리_접근               
READ_CALENDAR                  캘린더_읽어오기                  
READ_CONTACTS                  주소록_읽어오기                  
READ_FRAME_BUFFER              프레임버퍼_읽어오기              
READ_INPUT_STATE               입력상태_읽어오기                
READ_LOGS                      로그_읽어오기                    
READ_OWNER_DATA                owner_data읽어오기               
READ_PHONE_STATE               통화상태_읽어오기_READ_SMS_SMS읽어오기
READ_SYNC_SETTINGS             동기설정_읽어오기                
READ_SYNC_STATS                동기상태_읽어오기                
REBOOT                         reboot                           
RECEIVE_BOOT_COMPLETED         boot완료                         
RECEIVE_MMS                    MMS수신                          
RECEIVE_SMS                    SMS수신                          
RECEIVE_WAP_PUSH               WAP수신                          
RECORD_AUDIO                   오디오_수신                      
REORDER_TASKS                  태스크_Z오더                     
RESTART_PACKAGES               패키지_리스타트                  
SEND_SMS                       SMS송신                          
SET_ACTIVITY_WATCHER           액티비티_왓쳐지정                
SET_ALWAYS_FINISH              액티비티_전체_종료               
SET_ANIMATION_SCALE            스케일_애니메이션_지정           
SET_DEBUG_APP                  디버그어플리케이션_지정          
SET_ORIENTATION                스크린_로테이션지정              
SET_PREFERRED_APPLICATIONS     자주_사용하는_어플리케이션_지정  
SET_PROCESS_FOREGROUND         포어그라운드_처리지정            
SET_PROCESS_LIMIT              제한처리_지정                    
SET_TIME_ZONE                  타임존_지정                      
SET_WALLPAPER                  배경화면_지정                    
SET_WALLPAPER_HINTS            배경화면_힌트_지정               
SIGNAL_PERSISTENT_PROCESSES    지속처리_시그널_지정             
STATUS_BAR                     상태표시줄_지정                  
SUBSCRIBED_FEEDS_READ          서브스트립드_피즈_읽어오기       
SUBSCRIBED_FEEDS_WRITE         서브스트립드_피즈_쓰기           
SYSTEM_ALERT_WINDOW            알림_윈도우                      
VIBRATE                        진동                             
WAKE_LOCK                      알람                             
WRITE_APN_SETTINGS             APN설정_쓰기                     
WRITE_CALENDAR                 캘린더_쓰기                      
WRITE_CONTACTS                 주소록_쓰기                      
WRITE_GSERVICES                G서비스_쓰기                     
WRITE_OWNER_DATA               owner_data쓰기                   
WRITE_SETTINGS                 설정_쓰기
WRITE_SMS                      SMS쓰기
WRITE_SYNC_SETTINGS            동기설정_쓰기

* Reference
http://javaexpert.tistory.com/329

전 직장(M사)에 대한 포스트 모텀

전 회사(M사)를 퇴사하면서 생각했었던 내용을 끄적여 보는 포스트 모텀이다. 앞으로 M사라 칭함.
M사는 스타트업 회사로 재직 기간은 대략 10개월 정도로 경력에서 제일 짧은 회사생활을 했다. 짧게 근무를 해서 그런지 M사에서는 긴 프로젝트 했다는 느낌이다.

요즘 아이폰이나 안드로이드 앱의 개발주기가 2개월로 싸이클이 도는 지금의 상황을 보면, 스타트업에서 10개월은 긴 시간이라고 생각한다. 10개월의 시간 동안 일은 끊임없이 계속되었으며, 그 와중에 개인적으로는 싸이클을 짧게 끊어서 작업을 진행했었다.

이 프로젝트에 대한 성공 vs 실패의 관점에서 질문한다면, 개인적으로 45 vs 55의 점수를 주겠다. 이 점수는 주관적인 점수로 퇴사를 했고, 9년 동안 주로 서비스를 개발했던 경험상 서비스의 승패는 기술력이나 아이템보다 다른 요소로도 서비스가 성공할 수도 있다고 생각하기 때문이다.

다른 요소가 무엇이냐고 물어보면.. 모르겠다. 경험에서 오는 막연한 기대감일 수도 있고.. ^^;; 
퇴사하기 2달 전 개발팀을 맡게 되었지만, 미국 일정으로 제대로 생각한 바를 이끌어보지 못하고 나오게 되었다. 나오기 전에 조직과 업무와 일하는 스타일에 대해서 전체적인 개편을 통한 나이스한 형태로, 짧은 기간의 마일스톤으로 프로젝트의 사이클을 원했다. 그러기 위해서는 대표의 마인드와 기존에 없어 보이지만 나름 기득권을 쥐고 있는 사람들의 희생이 필요했지만, 기득권을 쥐고 있던 사람들은 희생을 싫어하는 것 같았다. 서비스를 핑계로..

다음으로, 개발팀 구성과 CTO의 역할에 대한 내용을 적어볼까 한다. 네가 어쭙지 않게 CTO의 역할에 대해서 끄적일 수 있느냐에 대한 질문에는, M사에서의 바로 위가 CTO였고, 개발팀은 1개였고, 팀장을 했으니 적어볼 만하다고 생각한다. 추가로, 퇴사하고 다른 스타트업에서 CTO 제의도 받아 봤으니 적어봐도 되지 않을까 한다.

초기 개발팀 구성이 완전히 실패했다. 개발을 잘 모르는 대표님과 CTO님의 선구안은 여지없이 볼에 방망이를 휘두른 격이라고 생각한다. 중간에 매우 좋은 타자와 투수를 영입도 했었다. 하지만, 선수 관리를 못해서 이런 분들 다 나가버렸다. 나도 내 업무를 쉽게 쉽게 맡아 가시던 그 좋은 타자분이 나가실 때 나가려고 생각을 했었다. 흠.. 하지만, 초창기 개발팀 멤버로, 책임(?)감 같은 것에 메여서 못 나갔다.

3-Tier와 Scalable한 시스템을 기본으로 설계와 개발을 하였지만, 현실적인 문제로 2-Tier의 형태를 취하게 되었고, 웹 서버 뒷단의 백엔드만 Scalable한 시스템으로 개발해서 서비스가 돌아가게 되었다. 10개월 동안 개발해서 서비스 하는 게 지금의 서비스 정도라면 문제가 있었을 것이라고 웬만한 개발자들은 감을 잡을 것이다. 굉장히 큰 문제가 있었다. 바로 서비스의 중심인 웹을 개발하시는 분들이 초보시다. 그런데 경력들이 많다. 경력들이 많다는 것은 나이가 많다는 거라서 회사의 자원 투입대비 산출물들이 영 마음에 들지 않았다. ^^;; 지금이야 괜찮다라고 생각을 하고 계실지 모르겠지만, 내가 보기에는 아직도 멀었다. 국내 N모사들의 웹 개발의 반도 따라가지 못하는 느낌인데.. 반도 못 따라간다는 것은 HTML + CSS로 맨 바깥의 UI가 만들어지고, 만들어진 UI에 대한 고민이 기술적으로 없다는 것이다. 하다못해 javascript나 css를 왜 합쳐야 되는지도 잘 모르는 느낌.

그래서, 퇴사하면서 느낀 개발자로 스타트업으로 이직하는 데 필요한 내용(돈은 모르겠다)을 적어보면, 대략 아래와 같다.

– CTO가 정말 능력 있는 사람인지 보자.
– 몇명 안되기 때문에, 개발자들의 레퍼런스를 확인하고 들어가자.
– 면접을 볼 때, 당하지만 말고 면접을 봐 보자.
– 기 제품이 있으면, 제품을 보고 쓰지 않을 것 같으면 들어가질 말자.

개인적으로 참 아쉬운 10개월을 보낸 것 같다. 정말 세상 물정 모르고 있었다는 딱 그 느낌이랄까? 이제는 이런 시행착오 없고, 훌륭한 개발자들과 일을 할 예정이다. 현재 일에 대한 기대와 우려는 다시 한번 긴장감으로 일을 마주하게 하는 원동력인거 같다. 어떻게 하다 보니, 전 회사에 대한 안 좋은 점만 부각한 것 같은데, 포스트 모텀의 주된 목표가 안 좋은 점을 개선하자기 때문에, 개선방향은 여기서는 적지 않겠다. 이미 퇴사하기 전에 10번 정도 회의하면서 얘기했으니 말이다.

이상, M사의 퇴사에 대한 포스트 모텀을 적어봤다. 앞으로 진행되는 프로젝트는 이런 식으로 포스트 모텀을 하는게 아니라 동료와 맥주 한잔 마시면서 자유롭게 회사의 시스템으로 녹여봤으면 좋겠다.

카산드라(Cassandra)를 사용하기 전에 보면 도움이 되는 파일들..

카산드라(Cassandra)를 사용하거나 사용을 고려하는 분이라면 읽어보면 좋을 2개의 파일이 있는데, 아래의 파일들은 카산드라의 압축을 풀면 최상단에 위치하는 파일들이다. 하나는 README.txt 이고, 다른 하나는 NEWS.txt 이다.

– README.txt는 카산드라에 대한 개략적인 내용과 설치에 대한 내용이 있다.
– NEWS.txt는 카산드라가 버전업이 되면서, 바뀌는 내용을 개략적으로 기술한 파일이다.

좀 더 자세히 살펴보실 분은 NOTICE.txtCHANGES.txt 를 읽어보길 권한다.

– NOTICE.txt 파일에는 카산드라가 사용하고 있는 Dependency Library에 대한 내용을 포함하고 있다.
– CHANGES.txt 파일에는 카산드라 버전이 업데이트 되면서, 새롭게 추가되거나 수정된 내용을 이슈트래킹 번호와 같이 알려주고 있다. 따라서, 자세한 내용은 CHANGES.txt 파일의 이슈트래킹 번호를 따라 들어가게 되면, 버전 업에 따른 좀 더 세부적인 내용을 살펴볼 수 있다.