13 Simple Rules for Good Coding (from my 15 years of experience) 번역한 글입니다.

나는 15 이상의 경력을 가진 프로그래머이며 많은 여러 언어, 패러다임, 프레임워크를 사용해봤고 많은 삽질을 해봤다. 그리고 나는 좋은 코딩을 작성하기 위한 나만의 규칙들을 여러분에게 공유하고자 한다.

 

1.      최적화 VS 가독성. 최적화보단 가독성

코드는 항상 읽기 쉽고 개발자들이 이해할 수 있게끔 작성하라. 읽기 어려운 코드를 읽는데 소모되는 시간과 비용은 최적화로부터 얻을 수 있는 것보다 더욱 크다. 최적화가 필요하다면, DI (의존성 주입)을 사용해 독립적인 모듈로 만들고, 100%의 테스트 커버리지를 유지하여 최소 1년간은 건들지 않아도 되도록 만들어라.

2.      아키텍처 우선

나는 “우리는 빨리 개발을 해야하기 때문에 아키텍처를 설계할 시간이 없다”라고 말하는 사람을 많이 봐왔다. 그리고 그 중 99%가 이러한 생각 때문에 큰 문제를 겪었다.

아키텍처를 생각하지 않고 코드를 작성하는 것은 목표 달성을위한 계획없이 자신의 욕망을 꿈꾸는 것처럼 쓸모가 없다. 코드를 작성하기 전에 먼저 수행 할 작업, 사용 방법, 모듈화 방법, 서비스가 서로 어떻게 동작하는지, 구조가 무엇인지, 테스트 및 디버깅 방법, 업데이트 방법들을 먼저 생각하고 이해해야한다.

3.      테스트 커버리지

테스트는 좋은 일이지만 항상 비용 효율적인건 아니며 프로젝트에 따라 다르다.

테스트가 필요한 경우:

·         최소 한 달간은 건들지 않아도 될 모듈이나 마이크로서비스를 개발하는 경우

·         오픈소스 코드를 작성하는 경우

·         핵심 코드 또는 금전적인 부분과 맞닿는 코드를 작성하는 경우

·         코드를 업데이트 하는 것과 동시에 테스트를 업데이트 할 수 있는 충분한 비용이 있는 경우

테스트가 필요하지 않는 경우:

·         스타트업인 경우

·         팀이 작고 코드가 빠르게 변하는 경우

·         출력값을 보고 간단하게 수동으로 테스트가 가능한 스크립트를 작성하는 경우

나쁜 테스트 코드와 함께 코드를 짜는 것은 테스트가 없는 코드보다 더 위험할 수 있음을 기억하라.

4.      간단하고 단순하게

복잡한 코드를 작성하지 말라. 간단하게 작성하면 버그가 줄어들고 디버깅 시간도 줄어들 수 있다. 코드는 수많은 추상화 및 기타 객체지향적인 문제 (특히 Java 개발자와 관련이 있음) 없이 딱 필요한 일만을 수행해야하며, 추후에 간단한 방법으로 코드를 업데이트하기 위해 필요한 것의 20%를 수행해야한다.

5.      주석

주석은 나쁜 코드를 보여준다. 좋은 코드는 주석 없이도 이해할 수 있어야한다. 그러면 새로운 개발자를 위해 시간을 절약하기 위해 해야 할 일은 무엇인가? — 메서드의 정의와 사용법을 설명하는 한 줄짜리 간단한 문서를 작성하라. 이는 이해를 위한 많은 시간을 절약해 줄 것이며 — 더 많은 사람들에게 메서드를 더 잘 구현할 수 있는 기회를 제공해준다. 또한 이는 글로벌 코드 문서화를 위한 좋은 시작점이 될 것이다.

6.      강한 결합 VS 느슨한 결합

항상 마이크로서비스 아키텍처를 사용하도록 노력하라. 모놀리틱 소프트웨어는 마이크로서비스 소프트웨어보다 빠르지만, 단일 서버 환경에서만 그렇다. 마이크로서비스는 여러분의 소프트웨어를 여러 서버로의 분산뿐만 아니라 가끔은 하나의 머신에서의 분산처리 (프로세스 분산을 의미한다)도 할 수 있는 가능성을 제공해준다.

7.      코드 리뷰

코드 리뷰는 좋을 수도 있고 나쁠 수도 있다.

여러분의 팀에 코드의 95%를 이해하고 있고 시간 낭비 없이 모든 업데이트 사항을 모니터링 할 수 있는 개발자가 있는 경우에만 코드 리뷰를 도입하도록 하라. 이 외의 경우에는 단지 시간 낭비가 될 수 있으며 모두가 이를 싫어하게 될 것이다. 이 부분은 많은 질문을 가져오기 때문에 이를 좀 더 깊게 살펴보자.

많은 사람들은 코드 리뷰가 새로운 사람이나 코드의 다른 부분을 작업하는 팀원을 가르치는 좋은 방법이라고 생각한다. 그러나 코드 리뷰의 주요 목표는 코드 품질을 유지하는 것이지 가르치는게 아니다. 여러분의 팀이 원자로 또는 우주 로켓 엔진 냉각 시스템을 제어하는 코드를 작성했다고 가정해보자. 그리고 여러분은 아주 어려운 로직에서 큰 실수를 저질렀고, 이를 새로운 사람에게 코드 리뷰를 위해 제공했다고 해보자. 이 경우 여러분은 사고 위험에 대해 어떻게 생각하는가? — 내 대답은 70% 이상이다.

좋은 팀은 각자가 자신의 역할을 가지고 있으며 일의 한 부분에 대해 완전한 책임감을 갖고 있는 팀이다. 만약 누가 코드의 다른 부분을 이해하고 싶으면 해당 부분을 담당하고 있는 사람에게 찾아가 질문을 하면된다. 모든걸 아는건 불가능하며 전체보다는 코드의 작은 부분을 (하지만 적어도 30%) 완전히 이해하는것이 더 낫다.

8.      리팩토링은 작동하지 않는다

나는 일하는 동안 “나중에 리팩토링 할거니까 걱정하지마라”라는 말을 많이 들었다. 그리고 나중에 이는 큰 기술적 부채로 돌아오거나 모든 코드를 다 삭제한 후 처음부터 다시 작성하게 되었다.

따라서 처음부터 여러번 소프트웨어 다시 개발할 수 있는 자금이 있는게 아니라면 부채를 만들지 말라.

9.      피곤하거나 컨디션이 좋지 않을때 코딩하지 말라

개발자들이 피곤할 땐 평소보다 2-5배 더 많은 버그와 실수를 만들어낸다. 따라서 과업은 매우 나쁘다. 그렇기 때문에 하루의 업무시간을 약 6시간으로 고려하는 국가가 점점 더 많아지고 있으며, 일부 국가에서는 이미 실천하고있다. 정신적인 일은 육체적인 일을 다루는 것과 같지 않다.

10.  모든걸 한꺼번에 작성하자 말라 - 반복적으로 개발하라

코드를 작성하기 전에 우선 여러분의 고객과 클라이언트가 정말로 필요로 하는걸 분석하고 예측하고, 짧은 기간동안 개발할 수 있는 MVF(Most Valuable Features)를 추려내라. 품질 업데이트를 배포하기 위해 이러한 반복을 사용하도록 하고 무리한 요구사항과 품질 희생에 시간과 자원을 낭비하지말라.

11.  자동화 VS 수동

자동화는 장기적으로 100% 성공이다. 따라서 지금 당장 무언가를 자동화 할 수 있는것이 있다면 바로 하도록 하라. 5 분 밖에 걸리지 않는데, 왜 자동화 해야해?”라고 생각할 수도 있다. 하지만 한 번 계산해보자. 예를 들어 5명의 개발자로 이루어진 팀의 일상적인 작업을 들어보자. 5 * 5 * 21 * 12개월 = 6,300 = 105시간 = 13.125 ~ 5,250$. 직원이 40,000명일 경우엔 비용이 얼마나 커질까?

12.  나가서 취미를 갖자

일의 차별화는 정신 능력을 향상시키며 새롭고 신선한 아이디어를 제공한다. 따라서 잠시 쉬고 신선한 공기를 마시거나 친구들과 이야기를 하거나 기타를 연주하는등의 취미를 가져라.

13.  여유 시간에 새로운걸 배워라

학습을 중단하면 퇴화하기 시작한다.

 

좋은 코드 작성에 대한 아이디어와 관행에 대한 의견을 공유해준다면 매우 감사하겠다.

 

[출처]

https://mingrammer.com/translation-13-simple-rules-for-good-coding

 


'모과이 > 스크랩' 카테고리의 다른 글

폰갭, 자마린, 네이티브앱 개발 경험담  (0) 2015.11.07
IIS 계정 추가  (0) 2015.10.24
SVN보다 Git가 더 좋을까?  (0) 2015.08.03
소스분석 방법  (0) 2014.12.31
각종 오픈소스 제약사항 관련  (0) 2014.10.12
Posted by 모과이IT
,

저도 웹앱, 하이브리드앱 도구인 PhoneGap으로 실제로 실무에서 사용해 보면 뭔가 이상하다 싶고 결국에는 시스템을 제어하려면 Native쪽을 처리를 해주어야 되고 제약도 많고 레퍼런스도 없어서 개발할때 정말 애 먹었습니다. 아래 글은 너무나 공감이 가서 공유합니다. 

제가 이렇게 공유하는 이유는 하이브리드앱 의도 자체는 정말 좋습니다. 폰갭은 HTML5, JavaScrit, CSS 자마린은 C# 등으로 상위언어(비교적 쉬운언어)로 안드로이드, 아이폰 앱을 동시에 만들어 낸다는 컨셉인데 개인적으로 저의 프로그래밍 경험과 상식으로는 이런게 나올수가 없다고 봅니다. 

폰갭으로 예를 들면 HTML5, JavaScript, CSS 로 UI와 전반적인 앱을 만듭니다. 그리고 시스템 관련 제어를 할려면 Native로 안드로이드, 아이폰의 모듈을 작성해 주어야합니다. 결론적으로 퍼온글 말미에도 언급이 되었지만 결국에는 네이티브쪽의 안드로이드, 아이폰의 개발 경험한 사람이 그 모듈을 만들어 주어야합니다. 그러니 폰갭을 할려면 폰갭의 구조와 네이티브 쪽의 안드로이드, 아이폰도 다 알아야 한다는 것입니다. 폰갭 관련해서 자료도 별로 없었고 샘플 소스 조차도 없어서 굉장히 힘들게 개발을 했던 기억이 나네요. 그때 아예 네이티브로 개발하는게 속편하지 괜히 뭐 하는짓인지란 생각이 들더군요.

이런 실제 속사정을 모르고 자금력이 여유가 없는 스타트업이나 벤처회사들에서는 무조건 하이브리드앱을 맹신하는 결과가 나온것 같습니다. 

개인적인 생각은 이런 하이브리드앱의 개발방식은 벤더사(구글,애플)와의 긴밀한 협조 없이는 상식적으로 불가능하며 너무 많은 개발방식으로 인해서 개발환경에 파편화가 일어나서 실무에 작업하는 개발자들만 힘들게 하는거 같습니다. 애초에 이런 하이브리드앱 개발도구들의 컨셉이 맞는 100% 원소스 크로스플랫폼 개발도구가 나오지 않은 이상은 개발방식의 파편화만 초래 할 것같습니다.이러한 개발 방식은 이제 좀 지양이 되었으면 하는 바램에서 아래 퍼온글을 공유합니다. 만약에 진정한 100% 원소스 크로스플랫폼 개발도구가 나온다면 대환영입니다. 하지만 현재는 그렇지 않고 결국에는 프로젝트 진행 어느정도 진행된 상태에서 필연적으로 네이티브 해야하는 상황인데 이런상황은 체크해 보지 않고 무조건적인 원소스 크로스플랫폼이란 말만 믿고 프로젝트 진행이나 외주 맡기려하는 대표님 임원분들에게 저의 경험담과 아래의 경험담을 공유 하고 싶습니다.



출처 : http://blog.naver.com/synchrog/220196854844

(퍼온글 입니다)


초딩때부터 대학시절까지 내 모든것이 였던 개발자.

 

2002년 월드컵을 기점으로 개발자를 포기하고 모터스포츠로 넘어가 개발에 개자도 쳐다도 안보다가 필요에 의해서 다시 DEV LIFE를 시작했다. 정확히 말하면 2013년 9월 부터다. 

 

난 천재이기 때문에 다 할줄아는게 좋다. 이왕 할꺼 재대로 만능으로 가자 싶어서 데스크톱에서 스마트폰, 웹에 이르기까지 소비자들과 맞닿아 있는 모든 영역을 다 섭렵하고 싶었다. 과욕이 아니라고 생각 했었(?)던 이유는 역시 IT업계엔 대천재들이 상주하고 있거니와 이들은 온갖 종류의 코스트를 극단적으로 줄일 수 있는 통합 솔루션을 양산(?)해 내고 있었다. 

 

모르는 사람들을 위해 약간의 설명을 하자면, 기본적으로 프로그래밍을 하려면 C라는 가장 유명한 언어를 공부한뒤에, 각각 영역에 맞는 언어를 하나 하나 다시 공부해야한다. 집이나 사무실에 있는 데스크톱 컴퓨터에서 돌아가는 프로그램을 만들고 싶을 때, 아이폰용 앱을 만들고 싶을 때, 안드로이드용, 맥용등등 모두 다 다른 언어를 쓴다. 심지어 지금 이 글을 읽고 있는 '웹사이트'를 만드는 언어만도 3가지 이상의 언어로 만들어졌다.(HTML,CSS,JAVASCRIPT등 - 거기에 서버쪽 언어는 또 별도다.)

 

참고로 본좌가 싱크로지닷컴을 만드는데 사용된 언어만 HTML5, CSS, JAVASCRIPT, PHP, mySQL정도이며 여기에 이 언어들을 다루는 툴 사용법은 또 별도.그래서 MS에서 나오는 PPT나 워드, 그리고 adobe에서 나오는 포토샵이니 일러니 하는 '툴'같은건 기본적으로 다 공부해두라고 늘 강조하는것

 

아무튼 요는 학습하는 시간을 줄여보고자 했던게 그간의 가장 큰 이슈였다.언어는 계속 바뀌고 업그레이드되며 새언어가 나오면 또 공부하는게 싫었고(하지만 숙명이다) 뭔가 지금 당장 만들고 싶은게 생겼을때 만들 수 있는 능력을 갖추고 싶었다. 웹은 이제 그게된다. 상상하면 바로 만들 수 있다. 뭐든지. 그런데 스마트폰 앱만큼은 그게 안된다. 온갖 종류의 꼼수를 다 찾아봤고 위에 나열된 웹사이트를 만드는 언어들만으로도 만드는 기술을 찾기까지 했다. 그런 기술이 있다 실제로! 그러나 이제 모든 것을 알아버렸으니 뒷사람을 위해서 정리해준다. -심지어 이 글을 쓰기 6시간전에 나는 아마존에서 전설의 찰스 페졸드가 쓴 자마린 책을 구입해 읽었다!

 

*이제부터 개발을 모르는 사람은 못알아 들을태니 위 결론만으로 더는 읽을 필요 없다.(하지만 내가 글을 워낙 재밌게 쓰니 읽어 보고 싶을껄!)

*아래 정리는 윈스마츠닷컴이라는 해외 블로거가 잘 정리해 준것을 내 경험을 양념쳐서 정리했다.

 

먼저 HTML5

 

1. 웹사이트를 만드는 마크업 언어로써 가장 쉽고 대부분 언어인줄 모르고 많이들 쓴다. 가령 <img src ="쑹님천재.jpg"> 이런거나 유투브나 비메오 링크 딸때 <iframe 어쩌구>하는 그런걸 말한다. 암튼 이것만으로는 스마트폰 앱이라 불리울 수 도 없고 싸파리나 인터넷접속후 웹앱정도로 보는(웹사이트인데 앱처럼 작동되는) 수준밖에 안된다.

 

2. 푸쉬알람기능이 불가능하다. 연출이 네이티브 앱처럼 가능하긴한데 뭔가! 네이티브 같은 느낌은 절대 구현할 수 없다.

 

3. 웹사이트 개발 레벨이기 때문에 한번 만들어 놓으면 어떤 스마트폰에서도 똑같이 보인다.특별한 타겟팅 재개발 따윈 필요치 않다.

 

4. 안드로이드의 경우엔 덜한데 iOS의 경우 업데이트될 때마다 개병신 처럼 보일 수 있다.

 

5. 어쨋든 이건 "앱"이라고 불리울 수 없다. (일반인들에게)

 

다음은 HTML5를 진짜 앱처럼 만들어주는 Phonegap - 처음 나의 시도는 이녀석이였다.

 

1. HTML로 한번만 만들면 진짜 앱으로 토출되긴 하나 애플 앱스토어에 올리려고 하면 빠꾸먹는 일이 비일비재.

 

2. 앱 입장에서 볼 때는 외부 서버와의 통신이 원활하다. 웹사이트와 서버 간의 데이터 송수신만 할줄알면 간단히 끝.

 

3. 문제는 서버사이드쪽 개발이 복잡해진다는거.

 

4. 게다가 웹사이트 개발언어로만 스마트폰 네이티브(틱한)앱을 만들고자 한게 이 방법의 취지임에도 불구하고!!! 결국에는 약간의 네이티브 언어를 추가해야하는 경우가 생긴덴다.

 

5. 네이티브앱에 비해서 무거워지지만 들어가는 시간과 비용대비 비교할 수 없는 장점이지.

 

6. 사후 관리(업데이트등)가 힘들어지고 파이날 퀄리티가 네이티브에 비해 떨어지는 것 역시 부정할 수 없다.

 

Unity3D 유니티... -_-;;

 

1.게임을 만드는 툴이다. 그러나 이걸로 게임만들 생각은 없었으며 앱을만들고자 했다. 그 이유는 이거 하나면 자바스크립트 하나로 모든 환경에서 돌아가는 앱을 만들 수 있다 생각했으니까.

 

2. 하지만 현실적으로 기능에 비해 와이파이 연결설정이 되어 있지 않은 곳에서 다운받을 수 없는 크기의 앱이 토출되는 문제가 발생.(엄청 커진다!)

 

3. 기능에 비해 로딩이 생기고 느려진다.(게임기능이 없는데 해당 라이브러리나 최소 필수 컴포넌트는 들어가기 때문)

 

4. 결국 이러다 게임을 만들겠다 싶어서 잠깐 게임 기획을 했으나 1인 스튜디오로 경제적 승산이 없다 판단. 모터스포츠 보다 많이 벌 확률이 적어서 Drop!

 

그러다 발견하여 요 몇일 매드니스였던 Xamarin

 

1. 비주얼 스튜디오 처럼 잘만들어진 개발환경도 있고 C#하나만 알면 아웃풋도 진짜 네이티브 앱이 나온다.그러나 아직 완벽하다고 볼 수 없는 이유가 실제로 아웃풋을 만나보면 용량도 커지고 실제 네이티브 앱같은 느낌이 나지 않는다. 자원관리나 디바이스에 대한 접근에 대한 문제 역시 제한적이라 좀 더 기다려봐야 할 솔루션.

 

2. iOS를 개발하려면 결국엔 mac을 사야하는건 마찬가지(뭐 나는 세 대나 있으니 문제 없지만)

 

3. 자마린의 가장 큰 문제라고 지적 당하는게, 자마린 내에서는 코드의 재사용성이 훌륭하지만 자마린 안에서만 통용되는 말이라고 한다. 즉, 그 코드가 외부 솔루션에는 아예 쓸모 없은 코드가 되어버림.(기본적으로 C#이다. 자바도 아니고)

 

4. 그 결과, 구글등에 소스가 별로 없다. 사실 이게 내가 자마린을 버린 가장 큰 이유. 개발자는 자고로 구글에서 모든 정보를 얻고 개발 테크닉을 배우게되는데 구글에서 뭐하나 찾는데 시간이 걸린다면 그것만큼 해비 코스트가 없다. 이것은 스스로 책보고 공부한다고 해결될 문제가 아닌 문제다. 

 

5. 또한가지 자마린이 망작느낌이 나는 이유는 이 마져도 결국엔 안드로이드 개발언어인 JAVA와 아이폰 개발 언어인 오브젝트C를 알아야한다는 것이다. (-_-....)

 

6. 추가적인 단점은 이 솔루션은 월단위 돈이 나가며 비싸다.

 

 

자 이제 마지막으로 네이티브 앱.

 

1. 개발비용은 애플은 라이센스 비용만 1년에 12만원 정도, 안드로이드는 돈이 안들고 마이크로소프트는 (개발할 일이 있을까 싶지만) 정식으로 돈 다주고 사면 뼛속까지 빨아먹는 구조라고 한다.

 

2. 각자의 언어들에 최고의 지원을 하는 편. 아이폰 개발하고자 하는 사람들에게 주어지는 툴과 그 언어에 대한 지원, 마이크로소프트도 마찬가지로 비주얼 스튜디오와 개발지원등. 즉, 상식적으로 아는 그 앱을 만들 수 있다. 단, "그 플랫폼 안에서만 구동되는"이란 조건 하에.

 

3. 상호간 언어적 호환성이 거의 없기 때문에 똑같은 앱을 만들어도 아이폰,안드로이드는 완전히 다시 만드는 수준이 될 수 밖에 없다.호환이 되는건 객체지향언어라는 개념뿐.

 

4. 각각 지역구에는 구글등에 엄청나게 많은 셈플과 자료들이 존재하고 다만들어진 앱의 완성도는 그야말로 "네이티브"이기 때문에 두말할 여지가 없다.

 

 

 

결론이 뭐냐면.

 

결국 모두 다 공부해야한다. 꼼수 부리지마라.

 

...

 

..

 

.

 

라고 결론 내긴 좀 아쉬우니까 평을 좀 하자면...안드 VS iOS 판세를 보면 향후 5년 이내에 둘 중 하나가 무너질 가능성은 제로다. 더욱이 이 둘을 통합할 가능성은 더더욱 없으며 특히 (내 생각에) 애플쪽이 더 외딴 섬으로 노를 저을 가능성이 높다. 심지어 자기네 개발언어였던 오브젝트C까지 집어 치우고 이번에 새로운 언어를 또 출시했을 정도니까. 보안적인 문제나 앞으로 스마트폰이 항상 이모양대로 갈 가능성도 크지 않기 때문에 결국 한 가지 접근법으로 서로 다른 모양의 디바이스를 제어한다는것은 솔직히 쉽지 않은 시도라고 본다. (물론 나는 그것을 이세상의 IT 대천재들께서 해결해주실꺼라 믿었다 씨팔놈들아 배신자들) 최소한 자바스크립트 하나로 지구정복이 가능할꺼라 믿는 나의 신념은 조금 약해졌을 뿐이다........(....) 앱 개발비가 나름 그래도 안드 아이폰 각각 수천만원 단위인게 이해가 간다. 

 

또는 좀 덜 완벽한 앱을 만드는건 어떤가 싶기도한데, 뭔가 대단하지 않아서 싫다. 이 세상에 없는걸 만드는데 버그는 인정해도 대단한 느낌이 없는건 별로야. 지구를 정복한 윈도우도 블루스크린이 뜨는것을 막을 순 없지 않았던가. 어쨋든 단일 언어로 모든 것을 개발할 수 있다는 것이 헛된 꿈이라는것을 알기 까지 1년이 걸렸다.







'모과이 > 스크랩' 카테고리의 다른 글

[번역] 좋은 코딩을 위한 13 가지 간단한 규칙  (0) 2017.04.03
IIS 계정 추가  (0) 2015.10.24
SVN보다 Git가 더 좋을까?  (0) 2015.08.03
소스분석 방법  (0) 2014.12.31
각종 오픈소스 제약사항 관련  (0) 2014.10.12
Posted by 모과이IT
,

http://studyforus.tistory.com/63

Posted by 모과이IT
,

출처 : http://www.allofsoftware.net/2011/10/svn-git.html


요즘 SVN을 써야하나 Git를 써야하나? 또는 Mercurial을 써야하는 사람들이 많이 눈에 띈다.
또 누구는 아직도 ClearCase를 선호하고 Perforce가 좋다는 사람도 있고 혼란스럽기 그지 없다.
마치 골프를 치는데 골프채 뭐가 좋다고 서로 주장하는 것과도 같다. 아무리 좋은 골프채도 몸에 맞지 않으면 무용지물이다.

그럼 이런 애매한 것들을 깨끗하게 정의해 주겠다. ^^ 애정남 처럼

결론부터 말하면 다음과 같다.
  1. 분산된 환경에서 일을 하는 경우가 잦다면 Git를 써라.
  2. Github를 써야 한다면 Git를 써라.
  3. 그외에는 모두 SVN을 써라.
기타 의견)
혼자 개발한다면 내키는 것을 써라.
회사에서 강제를 한다면 시키는대로 해라.
다른 툴에 완전히 익어서 바꾸기 싫으면 마음대로 해라.

기존에 VSS를 쓰던 사람들은 CVS를 써보면 신천지 였다. 
CVS를 쓰던 사람들에게 SVN은 놀라움 그 자체였다.

그럼 Git는 어떨까? 
일단 소스코드관리시스템에 대해서 좀 알 필요가 있다.

소스코드관리시스템은 크게 3종류로 나눌 수 있다.
  • Folder공유 타입 - RCS, SCCS
  • Client/Server 타입 - Subversion(SVN), CVS, Perforce, ClearCase, TFS
  • 분산 저장소 타입 - Git, Mercurial, Bitkeeper, SVK, Darcs
폴더공유타입은 써보신 분이 있을지 모르겠지만 그래도 옛날에는 훌륭했다.C/S타입과 분산타입의 가장 큰 차이는 Repository가 중앙에 하나가 있나, 분산되어 여러개가 있나이다.

SVN과 Git는 1:1로 비교하기는 어렵다. 형태가 다르고 장단점이 있을 뿐이다.

물론 SVN을 가지고 하던 것은 Git로 거의 다 된다.
또한 SVN에서 안되던 것도 Git에서 되는 것도 많다.

그러면 Git가 SVN보다 좋은 것인가?

SVN에서 제공하지 않지만 Git에서 제공하는 기능이 꼭 필요한 경우라면 Git를 쓰는 것이 유리할 수 있다.
  • Offline에서 자주 개발을 해야 할 때
  • Git 기반의 Open source를 이용한 개발을 해야 할 때
  • Git 기반의 Open source 프로젝트에 참여할 때
  • Github을 써야 할 때
이런 경우가 아니라면 SVN을 쓰는 것도 좋다. SVN가지고 안되는 것이 있다거나 불편하다고 생각하는 사람들은 SVN의 막강한 기능을 극히 일부만 쓰고 있어서 그럴 수 있다.

Git는 기본적으로 SVN보다 복잡하다. Git는 명령어가 SVN보다 몇배 많다. 컨셉을 배우기도 복잡하다.
SVN을 쓰는 회사에서도 대부분의 개발자들은 SVN의 기능도 극히 일부만 쓰고 있다. 그런 상황에서 Git는 배우기 훨씬 어렵다. 따라서 Git 특유의 기능이 필요하지도 않는 상황이면 SVN이 더 낫다.

Git를 잘 모르고 쓰면 혼란이 가중될 수 있다. 소스코드 Conflict가 자주 일어날 수 있다.
공부도 훨씬 많이 해야 하며 전략을 잘 짜야 한다. 

물론 혼자서 또는 두세명이 개발을 하고 있다면 뭘 써도 별로 혼란스러울 것이 없지만, 수십명 또는 수백명의 개발자가 동시에 일하는 환경이라면 Git는 좀더 정교해야 한다.

Git는 브랜치 머지가 더 손쉽고 Local에서 일하는 것에 대한 자유도가 훨씬 높다. 하지만 이러한 장점들이 Git를 쉽게 쓸 수 있게 해주지는 않는다.
SVN과 Git는 누가 더 좋은 것이라고 비교하기 어려운 것이니 엄마가 좋아? 아빠가 좋아? 고민은 하지 말자. 

하지만 이 블로그를 읽은 정도의 개발자라면 개인적으로 SVN뿐만 아니라 Git에 대해서도 빠삭하게 알고 남들이 물어볼때 조언을 해 줄 정도는 되어야 할 것 같다. ^^

[Git 관련 참고자료]


'모과이 > 스크랩' 카테고리의 다른 글

폰갭, 자마린, 네이티브앱 개발 경험담  (0) 2015.11.07
IIS 계정 추가  (0) 2015.10.24
소스분석 방법  (0) 2014.12.31
각종 오픈소스 제약사항 관련  (0) 2014.10.12
폰갭강좌  (0) 2014.06.02
Posted by 모과이IT
,

써니의 오픈소스 분석 가이드 (참고만 하세요~)

한동안 접고 살던 Spring framework오픈 소스를 다시 꺼내 분석한다면 나는 어떻게 할까? 일단 생각해보고 정리를 하자니... 장강의 뒷물의 앞물을 밀어낸다고 - 이게 아닌가? 아무튼 생각이 유실될 우려가 있어 그냥 냅다 적어보기로 한다.

남의 소스를 분석한다는 것은 남의 생각 속을 여행하는 것에 비유할 수 있다. "여행"을 하려면 무엇이 필요한가? 아니, 길을 잃지 않기 위해서는 무엇이 필요한지 생각해보자. "GPS"과 "지도"가 필요할 것이다. 그리고, 내가 가야할 길은 아직 가보지 않은 길이기 때문에 욕심 부리지 않는 '자세'를 준비하자. (무심결에 나침판이라고 적고 보니... 21세기인데.. 라는 생각이 들어 고쳤다.)

항해(navigation)를 시작하기 전에 준비물이 잘 갖추어 있는지 확인해 보자.

1. GPS (Global Positioning System)
프로그래머에게 필요한 GPS는 당연히 실제 물리적인 장치가 아니다. 소스를 분석할 때, 내가 어떤 소스를 분석하고 있으며, 다음으로 어느 소스를 분석해야 하는지를 판단하는데 필요한 도구이다.

내가 생각하는 소스 분석에 필요한 GPS 도구들은 다음과 같다. 프로그래밍 언어론에 대한 기초 지식 혹은 프로그래밍 언어 문법에 대한 정확한 지식이다. 언어를 모르는 사람이 소스를 분석하겠는가 라고 반문하겠지만, 남의 소스를 분석하다 보면 평소에 모르던 키워드나 연산자 혹은 문법을 마주치는 법이 생기게 마련이다. 막다른 골목에 다다르는 것과 같은 현상이 벌어진다. 즉, 머리속이 하얗게 지워진다. 이전까지 분석한 게 다 머리 속에서 지워지고 만다. goto 명령어는 자바에도 있다. 안쓸거라고 생각지 마라. 다중 루프에서 고속으로 탈출하기 위해 사용되는 경우도 간혹 있다. final 이 클래스에 붙어 있을 때 그 의미를 파악하지 못하거나, public 수식어가 없는 클래스의 의미를 모르면 오픈 소스 설계자의 진의를 절대 파악할 수 없다. 문법 공부할 때 뒷장은 건너뛴 사람은 분석하다가 오도가도 못하는 신세에 빠지는 경우가 많다. 언어의 문법을 일부만 알고 오픈 소스를 분석하는 것은 단어 몇개만 배우고, 사전도 없이 뉴욕 한복판에서 엠파이어 스테이트 빌딩을 찾는 것과 같다.

다음으로 상속과 합성에 대한 개념이다. 상속과 합성은 이정표에 해당한다. 객체지향이건 절차지향이건 간에 소프트웨어는 항상 '부품'들이 조립되는 방식으로 구축된다. 그런데, 상속과 합성의 개념을 제대로 모르면 위아래로 이동해야 하는지, 좌우로 움직이야 하는지 모르게 된다. 그리고 코드를 따라가다가 어떻게 되돌아 가야 하는지 모르게 된다. 미로에 빠지고 말 것이다. 그냥 상속만 익히면 된다고 생각지 말라. 인터페이스와 구현체 간의 관계 등을 모르면 지나쳐도 되는 코드와 코드들의 집합인 모듈 단위를 전혀 알아 볼 수 없게 된다. 코드는 단순히 작은 메소드들의 무수한 나열이 아니다. 작은 단위들이 모여 큰 단위를 이루고 작고 큰 구조를 표현하기 위해 인터페이스 상속과 패키지 개념들이 있는 것이다. 모르고 보면 아무리 보고 또 봐도 까만 건 코드, 하얀 건 배경일 뿐이다.

리팩토링은 몰라도 된다. TDD도 필요 없다. 다만, 디자인 패턴은 알아야 한다. 패턴을 이해하는 것은 운전 면허 시험을 배울 때, 교차로와 순환로 등 다양한 도로 형태를 배우는 것과 동일하다. 사람은 익숙한 지형이나 형태를 보면 깊이 생각할 필요도 없이 반사적으로 움직일 수 있다. 소스 분석도 이와 같다. 패턴을 모르면 그만큼 분석하는데 드는 시간이 기하급수적으로 늘어난다.

이클립스 혹은 IntelliJ 같은 IDE 사용 방법에도 능숙해야 한다. 탐색기를 이용해서 소스를 하나씩 열어보거나, notepad++ 로 수많은 소스를 열어 본다면? 노가다로 시간 낭비하지 말자. 상위 클래스, 하위 클래스, 참조 위치 등등 단축키만 알면 아무리 멀고 먼 위치도 워프(warp) 할 수 있는 순간이동 능력을 갖출 수 있게 된다. 다만, 앞서 말한 상속과 합성 개념이 머리에 박혀있지 않으면 금새 지나온 길을 잃어 버리게 된다.

API와 라이브러리에 대한 경험... 코드를 따라가다 보면 자칫 너무 깊이 파서 땅속으로 파고 들 수 있다. 궁금하다고 클릭하다 보면 어느새 JDK 소스를 보고 있다는 사실 조차 모르게 된다. 그럴리 없다고 생각지 말라. JDK를 설치하면 소스도 따라온다. IDE에 decompiler를 설치해두면 클릭 한 번에 지하세계로 떨어진다. 라이브러리도 마찬가지인데, 자칫 내가 프레임워크를 분석하고 있는 건지 라이브러리 코드를 분석하고 있는 건지 혼란에 빠지게 된다. 더 심하면, 프레임워크가 의존하고 있는 라이브러리와 프레임워크를 구분하지 못하는 일체의 경지에 빠지게 된다.

2. 지도 (map)
무턱대고 서울 간다고 지도도 없이 나서면, 어느 산골 구석이나 경찰서 유치장에서 발견될 수도 있다. 오픈소스를 막무가내로 이해하려는 개발자라면, 소프트웨어에 대한 환멸을 느끼고 IT 업계를 영영 떠날 수도 있다.

가급적 분석하고자 하는 오픈소스에 대한 설계에 대해 많은 정보를 제공하는 책을 구해야 한다. 오픈소스를 창작자가 서술한 책이면, 창시자의 철학을 옅볼 수 있기 때문에 가장 좋고, 없다면 가장 두꺼운 책을 사야 한다. 두꺼울수록 다루는 부분이 많기 때문에 분석하면서 낯선 코드를 만나는 경험이 줄어든다. 책을 통해 큰 흐름과 전체 얼개를 파악하면 많은 시간을 절약할 수 있다. 책을 사기 싫다면 해당 오픈 소스의 홈페이지의 introduction, user's guide, 그리고 각종 reference 문서를 최대한 많이 읽어두면 좋다. 책도 안사고, 홈페이지에도 안 가 봤다면 분석을 포기해라. 당신이 수재 이상의 머리를 가지고 있지 않다면... 샹 폴리옹인가? 그럼, 구글 가라.

영어가 싫다면 해당 오픈 소스에 대해 언급된 국내 블로거들의 글을 최대한 검색해서 많이 읽어라. 그 어떤 책이나 블로그 글도 오픈 소스 전체를 설명할 수는 없지만, 부분에 대한 이해만 해도 길을 찾는데 큰 도움이 될 것이다. 그리고, 사전에 해당 오픈 소스에서 많이 쓰이는 클래스/ 메소드 명칭에 익숙해지면 좀 더 소스가 자연스럽게 읽힌다. 인간의 두뇌는 익숙한 것일수록 해석 속도가 매우 빨라지기 때문이다.

마지막으로 종이와 연필을 준비해라. 소스를 분석하면서 눈에 띄는 소스 파일 명칭과 메소드 명칭들을 적고, 클래스 다이어그램과 시퀀스 다이어그램을 그려본다. 직접 지도를 만들라는 것이다. 종이에 적으라는 이유는 우선 컴퓨터 화면에는 소스만 띄워놓아야 집중이 잘되고 덜 산만하다는 것이고, 사람 머리는 손으로 무언갈 쓰거나 할 때 논리회로가 잘 돌아간다. 참고로 Robert C Martin 선생님이 말씀하시길 UML을 그리는데 있어서 가장 좋은 도구는 종이와 연필이라고 했다.

내가 선호하는 오픈 소스 분석 방법은 디버거(debugger) 혹은 로그 분석을 해보는 것이다.어플리케이션을 디버그 모드로 실행하면서 stack trace을 추적해보거나, 분석하고자 하는 위치에 break point를 걸어둔 후에 정지 시키고 나서 해당 위치가 실행되기 이전과 이후를 분석한다. 때로는 일부러 예외를 발생시킨후에 로그를 분석하기도 한다. 대다수의 오픈 소스는 debug, trace 로그 출력을 제어할 수 있기 때문에 상당히 긴 로그를 분석할 각오가 되어 있다면, 로그 출력 수준을 높이고 (TRACE 레벨) 프로그램을 실행시켜 보는 것도 한 방법이다. 당연히 log4j 혹은 logback 환경 설정을 선행하는 것은 필수 작업이다.

출처 : https://www.facebook.com/sunny.kwak.90/posts/372869479504711


'모과이 > 스크랩' 카테고리의 다른 글

IIS 계정 추가  (0) 2015.10.24
SVN보다 Git가 더 좋을까?  (0) 2015.08.03
각종 오픈소스 제약사항 관련  (0) 2014.10.12
폰갭강좌  (0) 2014.06.02
Windows Event Log 서비스 시작안될때  (0) 2014.04.21
Posted by 모과이IT
,


GPL&middot;AGPL&middot;MPL&hellip;한눈에 보는 오픈소스SW 라이선스.pdf


'모과이 > 스크랩' 카테고리의 다른 글

SVN보다 Git가 더 좋을까?  (0) 2015.08.03
소스분석 방법  (0) 2014.12.31
폰갭강좌  (0) 2014.06.02
Windows Event Log 서비스 시작안될때  (0) 2014.04.21
포팅(porting)이란?  (0) 2014.04.12
Posted by 모과이IT
,

폰갭강좌

모과이/스크랩 2014. 6. 2. 11:57

강좌 : 폰갭 앱 개발 PhoneGAP App Development

작성자 : 송재호

저작권 : 없음. 본 문서는 누구든지 마음데로 활용하실 수 있습니다.

요약

참고 자료

필고

폰갭

Node.js

폰갭의 이해

지원 OS

PhoneGap 과 Cordova 개발 주체

Apache Cordova

개발 전략

설치하기전

설치 요약

JDK 설치

ADT ( 안드로이드 Development Tool ) 설치

ANT 설치

NODE.JS 설치

폰갭 3.0 설치

Cordova 설치

업데이트

Cordova 로 앱 생성

create 명령 에러시 해결

플랫폼 추가

Phonegap 명령으로 앱 생성

명령행에서 모두 실행

명령행에서 실행이 잘 안되면 이클립스에서 실행하면된다.

이클립스에서 오픈

수정

Eclipse 에서 빌드 및 테스트

RUN

Eclipse ini 설정

Eclipse 편집기

Eclipse 텍스트 편집기 환경 설정

폰트 체

스펠링 Spelling

Web Developer Tools

단축키

총체적인 평가

Cordova 개발 문서

플러그인 추가

plugin 제거

plugin 버젼 별 추가

iOS 개발 ( 개발 환경 준비 )

최신 버젼 설치

폰갭 설치

nodejs 설치

Cordova 설치

폰갭 앱 생성 및 실행

앱 배포

오프라인에서 잘 보이게

Ajax 대신 웹 소켓으로

필고 API 를 통한 필리핀 정보 제공 앱 개발

필고 api

개발 팁

폰갭 online / offline event

jQueryMobile 을 사용 할 수 없는 이유

공유 소스

구글 맵

개발 툴

문제 해결 : 에러 처리

App has stopped

APK 설치가 안되는 경우,

빌드 에러

2014  년 1월 16일 윈도우즈8 설치

SE JDK Development Kit 설치

NodeJs 설치

Cordova 설치

Ant 설치

ADT 설치

Target 설치

TEST APP실행

Eclipse 를 통한 실행

요약

본 문서는 필리핀 최대의 정보 사이트 필고 http://www.philgo.com 커뮤니티 활성화와 필리핀에 계시는 교민들 중 IT 에 관심있는 분들께 도움을 드리고자 작성한 강좌입니다.

화상 회의, 원격 지원 등 온라인으로 주로 강좌가 진행되며 오프라인 스터디도 진행 할 계획에 있습니다.

2013년 7월 19일, 폰갭 3.0 이 세상에 드러났습니다.

폰갭 2.0과 3.0에는 차이가 많다고 하니, 본 문서는 3.0 을 기준으로 설명을 하겠습니다. 다만 2.0을 기준으로 작성된 내용은 별도로 표시를 하겠습니다.

이후 문서에서는 존칭을 생략하겠습니다.

참고 자료

필고

본 강좌에서는 필고와 연동하는 앱을 작성하는 예를 보일 것이다.

본 (강좌) 문서의 원본는 “구글 드라이브 폰갭 앱 개발” 에 있다. 여러분들이 본 문서의 최신 버젼을 얻고 싶다면 이 링크를 참고하시면 됩니다.

폰갭

phonegap.com

Node.js

nodejs.org

노드는 참 신기하며 그리고 새로운 프로그래밍 패러다임을 이끌 고 있다. 기회가 된다면 별도의 강좌로 여러분들께 꼭 가르쳐드리고 싶다. 하지만 이 문서에서는 노드에 대해서 설명을 하지 않는다.

요즘 대세는 자바스크립트인 것 같다. 자바스크립트를 잘 하는 개발자가 진정한 개발자로 취급을 받는 듯하다.

폰갭의 이해

대부분의 모바일 플랫폼은 WebView 를 가지고 있다.

이 부분에 착안하여 기본적인 기능은 HTML, CSS, Javascript 로 만들고 WebView 에서 동작하기 위해 필요한 Device(Native Code) 부분은 PhoneGap Framework 가 보완하도록 하여 앱을 개발 할 수 있도록 해 주는 것이 폰갭의 역활이다.

좀 더 쉽게 말하면 폰갭이 HTML,CSS,JAVASCRIPT 로 모바일 안에서 앱으로 실행될 수 있도록  Wrapper 역활을 한다고 보면 된다.

더 쉽게 말하면, 간단한 홈페이지를 들면 폰갭이 앱으로 실행되도록 해 준다고 생각을 하면 된다.

지원 OS

iOS, Android, BlackBerry, WebOS, Symbian, Bada, Windows8 등 등

PhoneGap 과 Cordova 개발 주체

PhoneGap 을 Adobe 에서 인수해서 Apache 재단에 기부하였다.

따라서 PhoneGap 은 Apache Software Foundation(아파치 소프트웨어 재단)의 것이며 Open Source 이다.

폰갭은 Adobe 에 의해서 계속 유지되고 있으나 Cordova 에 몇 가지 기능을 추가한 것이다.

 

Apache Cordova

PhoneGap 1.5 부터 정식 소프트웨어 명칭은 Apache Cordova 이다.

본 문서를 처음 작성 할 때에는 PhoneGap 을 위주로 설명 하였으나 2014년 부터는 PhoneGap 을 사용하지 않고 Cordova 를 사용한다.

개발 전략

Cordova 앱 개발 전략 문서 참고

https://docs.google.com/document/d/1ttlI8gCTb1VjmPJk1BDMYBwYitWx_kIKFZTY8uzSSaw/edit#heading=h.1sw416ytmdx2

Adobe PhoneGap Build 에서 한번의 컴파일로 여러 OS 에서 사용 할 수 있도록 해 주고 있는데 이것은 단지 테스트 용일 뿐 실제로는 각 OS 에서 테스트를 해야 한다.

설치하기전

본 문서에서는 여러분이 컴퓨터에 대해서 어느 정도 알고 있다고 생각을 하고 진행한다. 적어도 환경 변수가 무엇을 하는지 어떻게 관리하는지 정도는 잘 알고 있어야 한다.

참고로 환경 변수 등록은 윈도우즈7 기준으로 “시스템고급설정”에서 환경변수 등록 버튼을 찾을 수 있다.

윈도우즈 7에서 이클립스를 통한 안드로이드 앱 개발 환경을 만드는 것으로 목표로 하겠다. iOS 는 차 후에 설명을 할 수 있도록 한다.

작업 폴더를 “C:\Development” 로 하도록 한다. 그리고 앱 작업 폴더는 “C:\Development\workspace” 로 한다.

윈도우즈XP 나 비스타 등에서도 크게 다르지 않다고 생각하므로 적절하게 응용을 하면 될 것이다.

Node, ADT, ANT 의 설치는 순서와 상관 없이 진행하면 된다. 동시에 같이 진행을 해도 된다.

설치 요약

설치가 약간은 복잡하는 것 같다. 아마 처음 하시는 분들에게는 쉽지 않은 것이라 생각을 한다. 그래서 최대한 쉽게 작성을 하려고 노력을 해 보지만 여러분들이 어떻게 받아 들일지는 의문이다.

  1. JDK, ANT, NODE 을 설치를 해야 한다. 이 3 가지는 순서에 상관없이 따로 설치를 해도 된다.
    JDK 과 ANT 는 특별한 설치 과정이 없이 압축만 풀면 되는데, 중요한 것은 환경 변수에 올바로 등록을 하는 것이다.
  2. 그리고 나서 ADT 를 설치해야 한다.
  3. 그 다음은 PhoneGap 을 설치하는 것이다.
  4. 그리고 앱 생성을 하는데, 이때에 또 추가적인 (플러그인 등의) 설치 작업이 필요 할 수 있다.

아래의 사진은 자바와 ADT 를 동시에 설치를 하는 모습이다. 설치의 순서가 중요한 것이 아니라 정확하게 무엇이 설치되고 어떻게 연동이 되는지 그리고 어떻게 관리를 할 것인지를 이해 할 수 있어야 한다. ( 그렇다고 처음 부터 너무 깊이 빠져들 필요는 없다. 서서히 시간을 들이면서 내공을 쌓아야 하는 것이다. 여러분들은 본 문서에 나오는 순서데로 차근 차근 설치를 해 보기 바란다.)

(사진 : Java 와 ADT 설치 )

JDK 설치

java.com 에 들어가보니 그냥 다운로드하도록 되어져 있는데, 2013년 9월 현재 Java SE Runtime Environment 7 이 다운로드 된다.

반드시 JDK 를 설치해야 한다. (JRE 를 설치해도 된다고 하는데, 본인의 경험으로는 JDK 를 설치해야지 제대로 빌드가 되었다.)

아래의 링크에서 JDK 를 설치한다.

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

설치가 끝나면 대부분은 “C:\Program Files” 또는 “C:\Program Files(x86)” 에 등록이 될 것이다.

(설치 옵션 에 따라서 다른 위치 일 수도 있다.)

(사진 : JDK 가 설치된 위치 )

설치를 하였으면 환경 변수를 등록해야한다.

우선 커맨드 라인 창을 연다. 윈도우즈 시작 버튼에서 CMD 명령으로 열 수 있다.

그리고 아래와 같이 환경 변수 정보를 살펴본다.

보시다시피 자바에 대한 정보가 환경 변수로 등록이 되어져 있지 않다.

아래와 같이 JAVA_HOME 환경 변수를 추가하고 그 위치 값은 자바 설치 폴더 경로를 입력한다.

중요: JDK bin 폴더가 아닌 JDK 설치 폴더를 지정해야 한다.

그리고 javac.exe 가 있는 폴더를 PATH 에 추가해 준다. javac.exe 는 jdk 폴더 아래의 bin 폴더에 있을 것이다.

현재 사진을 찍으면서 설치하는 컴퓨터에는 PATH 환경 변수가 등록되어져 있지 않았다. 따라서 추가를 해 주었다.

그리고 기존의 커맨드 라인 창을 닫고 다시 열어서 아래와 같이 잘 나오는지 확인을 한다.

( 참고 : JAVA_HOME 에 JDK 경로가 지정되지 않으면 codova ploatfrom add 에서 cordova.x.x.x.jar 가 생성이 되지 않는다. 특히 JRE 로 하면 생성되지 않는다. )

ADT ( 안드로이드 Development Tool ) 설치

http://developer.android.com/sdk/index.html  에서 다운로드 하여 설치 할 수 있다.

(본인의 컴퓨터가 32 bit 인지 64 bit 인지에 따라 다운로드 하는 파일이 틀리다.)

이 다운로드 압축 파일에는 아래와 같은 것들이 있다. Eclipse 가 기본적으로 포함되어져 있는 것을 확인 할 수 있다.

Eclipse + ADT plugin

Android SDK Tools

Android Platform-tools

The latest Android platform

The latest Android system image for the emulator

설치는 간단하다. 압축을 풀면 설치가 끝난다. 다만 환경 변수 PATH 에 설치된 경로를 지정해야한다.

본인의 컴퓨터에는 C:\Development\adt 와 같이 저장을 했다. PATH 에는 아래와 같이 추가를 했다. platform-tools 가 먼저 지정되어야 한다.

C:\Development\adt\sdk\platform-tools;C:\Development\adt\sdk\tools;

C:\Development\adt\eclipse\eclipse.exe 프로그램이 이클립스이다.

이클립스를 더블클릭해서 실행하면 workspace 를 물어보는데, 본인은 C:\Development\workspace 와 같이 했다. 그리고 종료한다.

커맨드라인에서 android 를 실행해서 API Target 17, 18 전체를 설치한다. 여기서 설치를 하지 않으면 나중에 다시 설치하라고 얘기 할 것이다.

설치후 추가적(종속적)으로 설치하라는 플러그인을 다 설치한다.

API 타겟이란, 앱을 제작 할 때, 어떤 API 에 맞출 것인가를 선택하는 것이다. 너무 최신 버젼의 API 맞추면 옛날 버젼의 안드로이드에서는 동작을 하지 않을 수 있다.

또는 빌드를 할 때, API Target 번호를 찾을 수 없다면 적절한 다른 API Target 을 설치 하면 된다.

(사진 : adt 와 ant 를 설치한 모습. 별거 없다. 그냥 압축 풀고 적절한 이름을 변경하면 된다. 그리고 환경 변수에 등록하면 끝.)

ANT 설치

ANT 다운로드 : http://ant.apache.org/bindownload.cgi

Apache ANT 는 자바 패키지를 관리하는 툴이다.

만약 ant 가 설치되어져 있으면 설치 할 필요는 없다. 본인의 컴퓨터에는 없어서 별도로 설치를 한 것이다.

다운로드해서 압축을 해제하는 것으로 설치가 끝난다. 본인은 C:\Development\ant 에 저장을 했다.

ANT 의 경우 환경 변수 PATH 에 ANT/bin 폴더를 지정하고 ANT_HOME 변수에 ANT 폴더 경로를 지정해야한다. 즉, 2 개의 환경 변수에 등록해야 하는 것이다.

%PATH% 에 “C:\Development\ant\bin” 추가

ANT_HOME 환경 변수에도 등록을 하는데, bin 경로가 아닌 설치 폴더를 지정한다.

ANT_HOME = c:\Development\ant

NODE.JS 설치

        http://nodejs.org 에서 다운받아서 설치하면 된다.

폰갭 3.0 설치

노드를 설치 했으면 이제 폰갭을 설치 할 차례이다.

폰갭으로 하지 않고 cordova 로 한다.

Cordova 설치

C:\Development\workspace> npm install -g cordova

업데이트

참고로 3.2 버젼으로 업데이트( npm -g update cordover )를 하려는 데 에러가 나서 아래와 같이 삭제를 하고 재 설치를 했다.

; 삭제

npm remove -g cordova

npm remove -g phonegap

; 설치

npm install -g phonegap

; 위 처럼 설치하니 phonegap@3.3.0-0.17.1 와 같이 업데이트 된 것을 볼 수 있다.

Cordova 로 앱 생성

create 명령 에러시 해결

cordova create 시 www/index.html 등의 기본 파일이 생성되지 않는 문제.

해법 1 : cordova version 3.3 앱 생성하는데 create 명령어로 app-name/www 폴더에 기본 파일이 제대로 생성되지 않아서 cordova version 3.2 로 다운 그레이드 해서 하니 된다.

cordova create 시 www/index.html 등의 기본 파일이 생성되지 않는 문제.

해법 2 : 원칙적으로 lazy loading 관련이 있는데, c:\users\user_name\.cordova 에서 해당 버젼의 www 를 삭제하고 다시 생성하면 된다.

앱 생성을 하는 방법은 여러가지가 있다.

아래와 같은 명령으로 한다.

> cordova create hello com.example.hello HelloWorld

(참고: 만약 cordova 명령을 내렸는데, 실행 파일을 찾지 못한다면 글로벌 옵션 -g 로 설치가 되지 않았을 수 있으니 다시 설치하고 그래도 안되면 명령을 내리는 위치에 설치를 해 본다.)

hello 는 디렉토리 이름이다. hello 라는 폴더를 생성하는데, 이 폴더에는 www 폴더와 그리고 그 하위에 css, js, img 등이 생성된다.

config.xml 에는 앱을 생성하고 배포하는데에 필요한 메타데이터가 기록된다.

두번째 파라메타로 “com.example.hello” 가 있는데, 도메인 이름을 거꾸로 지정하는 것이 원칙인데, 앱의 고유한 도메인 주소이다. ( 이 값은 고유 값이로 지정을 하면 된다. )

세번째 파라메타 “HelloWorld” 는 프로젝트 (앱) 이름이다.

아래와 같이 옵션을 기호를 지정해서 앱을 생성 할 수도 있다.

> cordova create hello -n HelloWorld -i com.example.hello

> cordova create hello --name HelloWorld --id com.example.hello

여기서 앱을 생성했다는 것은 그냥 단순히 앱을 만들기 위한 기초 소스를 생성했다는 것이다.

본 예제에서 생성된 소스는 hello 폴더에 있는데 그 아래에 www 폴더가 있고 그 아래에 index.html 파일이 있는데 이 HTML 을 수정하면 되는 것이다.

플랫폼 추가

앱을 위와 같이 생성했으면 앱을 어느 플랫폼(iOS, Android, BlackBerry 등)에서 쓸 것인지 결정을 해야한다.

안드로이드에서 개발을 한다면, 아래와 같이 안드로이드 플랫폼을 추가하면 된다.

앱 생성 후 항상 앱 폴더로 들어가서 명령을 내려야 한다.

( 주의 : 프로젝트 이름에 특수문자 사용 불가 )

C:\Development\workspace>cordova create hello org.local.hello "hello"

C:\Development\workspace>cd hello

C:\Development\workspace\hello>cordova platform add android

만약 플랫폼을 추가하는 과정에서 “Please install Android API target 17...” 와 같은 에러가 발생한다면, 아래와 같이 android 를 실행해서 API target 17 부터 그 이후의 것을 모두 설치한다.

        C:\Development\workspace\hello> android

와 같이 하면 Android SDK Manager 툴이 뜬다. API target 을 선택하고 설치한다. API target 버젼을 설치하고 나면 추가로 설치해야 할 플러그인들이 표시되는데 마저 다 설치하도록 한다.

중요 : 플랫폼을 추가한 후 dir platforms\android\libs 와 해서 cordova.x.x.x.jar 파일이 생성되어 있는지 확인을 한다.

왜 그런지는 모르겠지만 때로는 cordova.x.x.x.jar 가 생성이 안되는 경우가 있다. 반복적으로 테스트를 해 본 결과 프로젝트 이름에 특수문자가 들어가면 안되는 것 같기도 하다.

이 부분은 본인도 아직 더 공부를 해 보아야 할 것 같지만 프로젝트 이름에는 공백이나 느낌표, 물음표, 하이픈 등을 넣지 않도록 한다.

Phonegap 명령으로 앱 생성

명령행에서 모두 실행

http://phonegap.com/install/ 에 나와 있는 데로 설치를 하는 방법이다.

phonegap 3.3.0 최신 버젼으로 하니 Android Target 19 를 설치하라고 한다.

명령형에서 그냥 android 라고 입력해서 설치하면 된다.

phonegap create my12 --name PhilCompany --id com.philgo.comapny

cd my-app

phonegap run android

주의 : 만약 config cannot be resolved 와 같은 에러가 나면 --id 는 생략하고 생성을 해 본다. 그래도 에러가 나면 옵션을 다 빼고 해 본다.

--name 은 프로그램 이름이며, --id 는 도메인 형식의 ID 이다.

my12 는 폴더명이다.

phonegap run android 를 실행해야지 android 플랫폼이 추가 된다.

명령행에서 실행이 잘 안되면 이클립스에서 실행하면된다.

이클립스에서 오픈

위와 같이 실행하고,

File -> New -> Project -> Android Project from Existing code -> 해당 프로젝트 선택

수정

안드로이드의 HTML 파일 경로는 아래와 같다.

\philcompany\platforms\android\assets\www

Eclipse 에서 빌드 및 테스트

Eclipse 를 실행하고 File -> New > Project -> Android Project from existing code -> 앱폴더 선택

RUN

RUN -> Run Configuration -> Android Application (더블클릭) -> Project (개발 중인 프로젝트 선택)

Target 탭에서 “Alway prompt to pick device” 선택

Run 버튼 클릭

연결된 디바이스 선택 ( 이 때 디바이스는 USB 디버깅 모드로 선택되어져 있어야 한다. )

만약 연결된 디바이스가 없으면 Android Virtual Device Manager 를 통해서 새로운 가상 디바이스를 생성하고 테스트를 하면 된다.

(사진 : 생성한 앱을 Eclipse 에 추가하는 모습)

(사진 : Eclipse 에서 HTML 파일 수정하는 모습 )

(  사진 : 실제로 빌드하고 샐행한 간단한 앱 )

Eclipse ini 설정

Cordova emulator 속도가 상당히 느리다. 뿐만아니라 cli 에서 cordova run 도 속도가 느린편이며 prepare 과정에서 소스를 덮어 쓰기 때문에 작업이 용의한 편이 아니다.

Eclipse 로 개발이 불편하여 notepadd++ 로 작업을 하는데, 실행은 Eclipse 로 해야한다. 이때, project clean 을 항상 실행해 주어야하는데, 불편하다.

RUN 을 할 때, project clean 을 먼저 해주는 방법은

eclipse 를 설치한 경로에서 eclipse.ini 파일을 열어서 맨 위에 --clean 를 추가해 주면 된다.

Eclipse 편집기

HTML 파일은 HTML Editor 로 열고,

Javascript 는 Javascript Editor 로 열어서 사용한다.

CSS 는 CSS 에디터로 열어서 사용하면 된다.

Eclipse 텍스트 편집기 환경 설정

폰트 체

Window -> Preference -> General -> Appearance -> Colors and Fonts 에서 굴림체 10pt 로 바꾸고 적당하게 수정하면 된다.

Gulim 으로 하지 말고 GulimChe 로 할 것.

스펠링 Spelling

글자 밑에 빨간색 줄이 나온다. 스펠링 옵션을 제거하면 된다.

동일한 단어가 5 번 이상 연속으로 나오면 에러가 아닌 것으로 표시를 한다.

Web Developer Tools

웹 작업을 하는데 편리한 Web Developer Tools 를 설치한다.

(사실 왜 이것을 설치해야하는지 모르겠음. 이것을 설치 후에 HTML, Javascript, CSS 가 활성화가 되는지 모르겠음)

단축키

Window -> Preferences -> General  -> Keys 에서 기존에 F4 로 바인드되어 있는 것을 지우고 Run 을 F4 로 바인드한다.

총체적인 평가

Eclipse 편집기는 사용이 불편하다.

특히 개발 작업과 테스트 작업이 모두 Notepad++ 와 크롬 브라우저로 이루어지고 마지막 에러 점검만 모바일 장치에서 하게된다.

그리고 Eclipse 로 모바일 장치에서 실행되는 앱을 직접적으로 디버깅을 할 수가 없다.

즉, Eclipse 편집기의 활용 가치가 상당히 떨어진다.

그냥 Notepad++ 로 작업하고 크롬으로 테스트 할 것. 그리고 마지막 과정에 Eclipse 로 모바일 장치에 앱을 설치하고 디버깅 메세지 정도를 테스트한다.

Eclipse.ini 에 --clean 추가하고 F4 로 RUN 커맨드를 바인드해서 사용한다.

Cordova 개발 문서

폰갭을 피한다.

개발 주체가 Apache 이고 Cordova 로 서비스 된다. PhoneGap 은 Cordova 에 작은 기능을 추가 한 것 뿐이며 유료/무료 서비스가 있다.

http://cordova.apache.org/docs/en/3.3.0/

플러그인 추가

폰갭 3.0 부터는 필요한 기능을 플러그인으로 설치해야 한다.

참고 : http://docs.phonegap.com/en/3.2.0/guide_cli_index.md.html#The%20Command-Line%20Interface

phonegap local plugin list

현재 프로젝트에 설치된 플러그인 목록을 한다.

우선 Git 부터 먼저 설치를 한다. GIT 을 설치할 때, 윈도우즈 Command Prompt 에서 사용 하도록 옵션 체크를 해야한다.

설치하는 예제는 아래와 같다. 잘 설치 안되는 경우가 많아서 혼났다.

요점은

  • plugin add 를 했으면,
  • 다시 phonegap run android 로 재 설치하고 컴파일 해야 한다.

이 때, android platform 의 코드를 다시 복사하므로 소스코드가 모두 초기화되는 것 같다. 따라서 CVS 작업을 먼저 커밋해야 한다.

CMD> phonegap create test8 --name test11

CMD> cd test11

CMD> phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git

CMD> phonegap run android

CVS> app-src 체크 아웃하고, index.android.html 을 상위로 복사 한 후,

Eclipse> Project -> Clean 후 실행

plugin 제거

phonegap local plugin remove org.apache.cordova.core.console

제거 할 때도 마찬가지로 플랫폼 소스를 초기화 하므로 작업 중인 소스를 커밋해야 한다.

plugin 버젼 별 추가

최신 버젼의 device plugin 에 문제가 있어서 그 이전버젼으로 설치한 경험이 있다.

아래와 같은 형식으로 추가하면 된다.

cordova plugin add [PLUGIN ID]@[VERSION]

cordova -d plugin add org.apache.cordova.device@0.2.5

iOS 개발 ( 개발 환경 준비 )

PhoneGap 으로 iOS 앱 개발을 위한 준비 과정을 설명합니다.

본 글에서는 여러분이 Mac OS 에 대해서 잘 알고 있다고 가정을 하고 설명을 합니다.

사실 저는 Mac 을 잘 사용하지 못합니다. 이번이 딱 두번째 쓰는 것입니다. 프로그램을 다운받고 설치하는 방법도 몰라서 엄청헤멨네요.

과거 버전의 PhoneGap 으로 iOS 앱 개발에 대한 문서는 아래 링크를 참고하십시오.

https://docs.google.com/a/withcenter.com/document/d/1nP6MIdYE_aTG4d7phy9eGAnnTrB_PR8n8_UKLkk7QTw/edit#heading=h.th1yl31zlf

최신 버젼 설치

2013년 12월 22일 현재 제 맥북에는 OS X Version 10.9.1 이 깔려져 있습니다. Mavericks 라고 하네요.

Xcode 는 5.0.2 버젼입니다.

( 맥북을 사용 할 줄도 모르는데, 어제 업데이트 하느라고 고생을 좀 했죠. 인터넷 카드가 안잡혀서.. ㅡㅡ; Xcode 사용 법도 다 잊어 버렸네요 ㅡㅡ; )

폰갭 최신 버젼은 3.3 입니다.

자 그럼 설치해 볼까요?

폰갭 설치

http://phonegap.com/install/ 에 있는 문서 대로 하지 말구요,

http://docs.phonegap.com/en/3.3.0/guide_cli_index.md.html#The%20Command-Line%20Interface 에 나오는 대로 하면 됩니다.

phonegap 과 cordova 의 명령어가 약간 틀리는데 주로 cordova 를 많이 사용하는 것 같습니다.

그리고 http://docs.phonegap.com/en/3.3.0/guide_platforms_ios_index.md.html#iOS%20Platform%20Guide 문서를 보시면 됩니다.

그런데 저 문서를 언제 다 읽겠습니까...

무식하면 용감하다고. 그냥 무대뽀 정신으로 갑니다.

nodejs 설치

nodejs.org 에서 설치합니다. 따로 설명이 필요하나요? 그렇다면 필고 개발자 그룹의 노드 강좌를 참고해 주세요.

http://dev.philgo.com/?1269552300

nodejs 설치하는 과정이 신기하네요. 윈도우즈 프로그램 설치 처럼 몇 번 클릭으로 됩니다. ( OS X 프로그램 설치가 어려워서 잔뜩 긴장하고 있었는데요 ... )

아래 처럼 하니 node 버젼이 v0.10.24 라고 나오네요.

node -v

Cordova 설치

아래와 같이 하면 됩니다.

$ su -

# npm install -g cordova

폰갭 앱 생성 및 실행

$ cordova create app1 com.example.app1 HelloApp1

$ cd app1

$ cordova platform add ios

$ cordova build

cordova build 대신 cordova build ios 라고 입력해도 되며 build 대신 prepare 를 사용해도 된다.

Xcode 에서 HelloApp1.xcodeproj 파일을 더블클릭하여 해당 프로젝트를 연다.

그리고 왼쪽 상단에 Emaulator 를 선택하고 실행하면 된다.

앱 배포

앱 배포는 다른 사람들이 사용 할 수 있도록 앱마켓(앱스토어 등)에 올리는 것이다. 이렇게 하면 다른 사람들이 앱을 검색해서 설치 및 사용을 할 수 있다.

구글 플레이스토어 같은 경우 심사 과정도 없고 별도의 비용도 들지 않아 비교적 앱 등록이 간편하다.

하지만 애플 앱 스토어의 경우 멤버쉽에 가입해야 하고 장시간의 심사 과정을 거쳐야 한다. 뿐만아니라 심사 단계에서 거절되기 십상이어서 비교적 등록이 어렵다.

이 부분에 대해서 차후에 설명을 하겠다.

오프라인에서 잘 보이게

특히 iOS 에서는 오프라인에서 잘 나오지 않으면, 앱 등록에서 거절 당할 수 있다. 본인이 iOS 앱 스토어에 앱을 처음 등록할 때, 약 7번 정도는 거절 당한것 같다.

오프라인에서도 잘 보이게 하는 것을 다른 말로 하면 “성의 있게” 앱을 만들라는 것이다.

Ajax 대신 웹 소켓으로

기존에는 Ajax 에서 Cross Domain 호출을 하기 위해서 JSONP 호출을 했는데, 서버 스크립트와 동작을 맞추어야 해서 여간 불편한 것이 아니었다.

지금은 소켓접속으로 크로스 도메인 상태의 데이터를 쉽게 가져 올 수 있다.

필고 API 를 통한 필리핀 정보 제공 앱 개발

게시판 및 각종 필리핀 정보, 통계 등을 활용 할 수 있다.

필고 api

<script>

var io = io.connect('127.0.0.1:8080');

console.log('io connected!');

io.emit('api', {'post_id': 'freetalk'});

io.on('api-forum-list', callback_forum_list);

function callback_forum_list(data)

{

        console.log('io on forum-api-list');

        console.log(data.list);

        posts = JSON.parse(data.list);

        for ( i=0; i < posts.length; i++ ) {

                $('body').append("<div>subject: "+posts[i].subject+"</div>");

        }

}

</script>

개발 팁

폰갭 online / offline event

앱이 실행 될 때, online, offline 이벤트가 한번 이상 발생한다.

따라서 온라인이면 어떤 작업을 하려 한다면, device ready 이벤트 보다는 online 이벤트에서 하는 것이 좋다.

jQueryMobile 을 사용 할 수 없는 이유

동적으로 HTML 을 추하가고 rendering 을 잘 할 수 없음.

공유 소스

현재 app-src 와 app-proxy CVS 프로젝트로 개발 중이다.

공유 할 수 있는 최대한의 소스 코드를 CVS 에 넣고,

최대의 호환성을 유지한다.

예를 들면 BODY 태그에는 아무값도 없이 빈 값이다.

자바스크립트로 처리를 하면 된다.

app-src/css/company.css 처럼 모든 media query 를 처리한다.

app-proxy 에서 호출하는 api 는 아래와 같이 리턴을 해야 한다.

<div class=title>

        <div class=subtitle>

                <div class=line>

                        <a ...>

                                <span class=’...’>...</span>

                        </a>

        </div>

</div>

이미지가 있는 경우에는 .line 부분을 아래와 같이 출력해야 한다.

<div class="line image" idx="1269621687">

                                                <a href="javascript:void(0);">

                                                        <span class="icon"><img src="http://philgo.com/etc/image_resize.php?&amp;adaptive=1&amp;w=64&amp;h=64&amp;path=../data/upload/0/820230" border="0"></span>

                                                        English4foreign Online School  / (+632) 352-1381

                                                </a>

                                        </div>

구글 맵

http://www.icenium.com/blog/icenium-team-blog/2013/12/12/mobile-friendly-mapping-options-for-phonegap-cordova-apps

개발 툴

크롬 Canary 는 기본 크롬 버젼 보다 훨씬 앞선 버젼으로 개발자나 디자이너를 위한 것이다.

https://developers.google.com/chrome-developer-tools/docs/mobile-emulation#enable-emulation-panel

문제 해결 : 에러 처리

App has stopped

여러가지 원인이 있을 수 있다.

직접 경험한 예를 들면,

앱 생성을 하고 “cordova run android” 로 실행하고 종료를 하면 “app has stopped” 라는 에러가 발생하는 것이다.

여러 플러그인 추가를 하는데, 다른 플러그인을 추가하면 문제가 없는데

org.apache.cordova.device 플러그인만 추가하면 “HelloCordova” has stopped 와 같은 에러가 발생하였다.

처음에는 문제의 원인을 찾지 못하여 cordova 를 업데이트하고 dos cli 에서 android (각종 SDK, 라이브러리) 를 업데이트 하였다.

그래도 에러는 계속 되어서 plugin 을 하나씩 추가하면서 테스트를 해 보았는데 device 플러그인을 추가하면 “app has stopped” 라는 에러가 발생하는 것이다.

검색을 통해서 오랜 시간 동안 해결책을 찾으로 노력했지만 해결을 하지 못했다.

그래서 다음과 같이 우회를 했다.

2014년 1월 2일 : Cordova Plugins 가 업데이트 됨.

2014년 1월 2일 이후로 device plugin 을 추가하면 app has stopped 에러가 발생.

업데이트된 버젼은 device@0.2.6 인데, 이것을 빼고 device@0.2.5 버젼으로 하니 문제가 없다.

APK 설치가 안되는 경우,

아래와 같은 에러가 나는 경우가 있다.

이것의 주요 원인은 동일한 APK 키(CETIFICATES, 또는 앱 id)가 이미 설치하려면 장치(mobile device 등)에 설치가 되어져 있는 경우이다.

예를 들면, 집에 있는 컴퓨터로 빌드하고 이미 장치에 설치했는데,

사무실에 있는 컴퓨터로 다시 빌드하고 (다른 컴퓨터로) 똑같은 장치에 설치하려는 경우 에러가 발생한다.

이 같은 경우 모바일에서 해당 앱을 완전히 삭제하고 다시 빌드를 하면 된다.

ERROR: Failed to launch application on device: ERROR: Failed to install apk to device:  pkg: /data/local/tmp/Angeles-debug-unaligned.apk

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

"Application not installed. An existing package by the same name with a conflicting signature is already installed."

또는 그냥 다른 앱 id 를 만들어서 빌드하는 것이 좋다.

빌드 에러

아래와 같이 에러 메세지가 발생하는 경우,

The container 'Android Dependencies' references non existing library ...

Cordova 3.0 부터는 Eclipse 에서 하나의 앱을 만드는데, 2개의 프로젝트가 생긴다.

따라서 Clean 을 할 때,

위 빨간색 네모 처럼 전체를 다 Clean 하고

아래 빨간색 네모 처럼 일부분만 빌드한다면

이와 같은 에러가 발생할 수 있다.

2014  년 1월 16일 윈도우즈8 설치

English version of installation guide

https://docs.google.com/a/withcenter.com/document/d/1NEnhnCTalvP0iqHouWOaLbTXPi6g6X0TiSJsPQ-EAGs/edit#heading=h.z5x32n9x2n8j

SE JDK Development Kit 설치

다운로드 사이트

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

jdk-7u51-windows-x64.exe 파일을 다운로드 하여 설치한다.

JDK 환경 변수 추가

환경 변수 JAVA_HOME 에 JDK 설치 폴더를 지정한다.

중요: JDK bin 폴더가 아닌 JDK 설치 폴더를 지정해야 한다.

NodeJs 설치

nodejs.org 에서 설치를 한다.

환경 변수에 설정을 해 주어야 한다.

예) 아래의 값을 경로 변수에 추가한다.

;C:\Program Files\nodejs

Cordova 설치

npm install -g cordova

Ant 설치

ant 를 설치하지 않으니, cordova platform add 를 할 때 에러가 발생한다.

ant 설치를 하고 환경 변수를 추가한다.

ADT 설치

adt 를 설치 하지 않으면 platform add 를 할 때, target 이 지정 되지 않았다고 한다.

adt 를 설치하고 환경 변수를 추가한다.

Target 설치

어떤 장치(또는 안드로이드 API)까지 지원할 것인지 관련 라이브러리(SDK 등)를 설치한다.

CLI 에서 android 라고 입력하고 필요한 것 설치한다.

target 을 설치하니 “cordova platform add android” 명령을 실행할 수 있다.

TEST APP실행

cordova run android 명령을 하니 JAVA_HOME 환경 변수가 등록되어 있지 않다고 한다.

환경 변수에 등록하고 나니 문제 없이 실행되었다.

Eclipse 를 통한 실행

별 문제 없이 실행되었다.

'모과이 > 스크랩' 카테고리의 다른 글

소스분석 방법  (0) 2014.12.31
각종 오픈소스 제약사항 관련  (0) 2014.10.12
Windows Event Log 서비스 시작안될때  (0) 2014.04.21
포팅(porting)이란?  (0) 2014.04.12
석박사과정에 대한 스크랩  (0) 2013.12.28
Posted by 모과이IT
,
출처 : http://ysoftman.blogspot.kr/2013/04/windows-event-log.html

이벤트뷰어(eventvwr 로 실행)가 작동되지 않는다면 Windows Event Log 서비스가 실행되지 못해서이다.

services.msc -> Windows Event Log 를 실행하도록 한다.

"오류 2: 지정된 파일을 찾을 수 없습니다." 에러 발생시
regedit -> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Parameters 폴더를 삭제하면 된다.

"오류 4201: WMI 데이터 공급자가 전달된 인스턴스 이름을 올바른 이름으로 인식하지 않습니다." 에러 발생시




cd C:\Windows\System32\LogFiles\WMI
takeown /f RtBackup
icacls RtBackup /grant MoGuWai:f /t
(** MoGuWai는 제 계정 이름입니다. 자신의 계정이름을 쓰세요)
탐색기 -> RtBackup 속성 -> 보안 -> 편집 -> Administrators 과 SYSTEM  -> 모든권한 체크 적용
윈도우 재시작


'모과이 > 스크랩' 카테고리의 다른 글

각종 오픈소스 제약사항 관련  (0) 2014.10.12
폰갭강좌  (0) 2014.06.02
포팅(porting)이란?  (0) 2014.04.12
석박사과정에 대한 스크랩  (0) 2013.12.28
컴퓨터 조립부터 윈도우 설치까지  (0) 2013.12.01
Posted by 모과이IT
,

출처 : http://wlsdnjssla1.blog.me/10090185817


프로그래머가 프로그램을 하면 어떠한 언어로 어떠한 플랫폼에 맞게 언어를 짜게 된다.

 

예를 들면 프로그래머가 윈도우용 플레이어를 만들때 C++로 윈도우 플랫폼에 맞게 프로그램을 짜게 되는데 이때 포팅을 한다는 말은  이 윈도우 플랫폼을 다른 것을로 바꾼다는 이야기이다.

 

윈도우에서 돌아가는 플래이어를 리눅스나, 다른 기타운영체제에 돌릴려면 기존의 프로그램을 변경해야 하는데 이것을 포팅이라고 한다.

 

포팅하는 방법은 여러가지가 있으며 제일 쉬운 방법을 선택해 플랫폼을 바꾼다고 생각하면 되는데, 포팅이란 개념이 좀 넓고 광범위 합니다.

 

웹 쪽이나 DB 그리고 임베디드 에서 포팅이 많이 발생하고 있다.

 

컨버팅이라는 용어도 있는데 이는 C++로 개발된 언어를 JAVA로 언어 자체만 바꿔서 똑같은 플랫폼에서 돌아가게 하는것이다

[출처] 포팅이란?|작성자 SpecialET



===============================================================================================


정리 하자면...


같은 플랫폼상에서 개발언어가 다른 경우 => 컨버팅

(예 : 윈도우 환경에서 C++로 만든것 => JAVA로 변경)


다른 플랫폼으로 맞게 만들어지는 경우 => 포팅

(예 : iOS 버전을 => Android 버전, 윈도우버전 => 리눅스 버전)



'모과이 > 스크랩' 카테고리의 다른 글

폰갭강좌  (0) 2014.06.02
Windows Event Log 서비스 시작안될때  (0) 2014.04.21
석박사과정에 대한 스크랩  (0) 2013.12.28
컴퓨터 조립부터 윈도우 설치까지  (0) 2013.12.01
SW 개발자의 미래  (0) 2013.05.21
Posted by 모과이IT
,

http://blog.daum.net/byeongdu/2037317

Posted by 모과이IT
,