삽질기/iPhone Dev2016. 6. 14. 04:23

.12 시간 전, 경건히 시청 준비를....


워치 OS

 - 엔지니어를 갈아 넣.... 쿨럭;

 - 앱 스위칭이!

 - 우와.. 장애자 운동 지원..

 

 iOS 

 - 시리 개발자 지원

 - 퀵 타입

 - 사진


... 적다가 귀찮.. 어차피 저보다 더 훌륭한 분들이 멋지게 정리하실걸 알기에... 그보다 감상평으로! 

 

짧은 감상평 #wwdc 키노트


1.  플랫폼이 젊어지려고 한다....! (운명임)


2.  디자인적인 부분의 통일성이 인상적

 - 특별히 두드러졌던.. 뉴스 & 뮤직.


3. iOS 머테리얼 첫 적용(iOS6)때 이미 다 틀 잡아놓은거, 업데이트 타이밍만 늦춘듯한 느낌.

 - 하얀방의 그분;은 이제 드디어 원하는대로 다 바꾼 듯한 느낌이...


4.  흠... 이쯤되면 다 좋은데 과연 네트워크 없이 얼마나 동작할까..?

 - 개인적으로는 맥 OS 에서의 시리 동작시 네트워크 연동 rate가 제일 궁금.....;;;

 - 다시말해 macOS 에 시리 인식 부분이 어느정도 '로컬'에 탑재돼 나오려나..


5.그나저나 대체 애플 워치팀에서는 엔지니어를 얼마나 갈아넣은 게요;;;; 


마지막으로....

 (소근소근) 잘들어.. 구글이 아니였어, 애플이었어! 빅 브라더가 말이지......


원 모어 띵.

 소프트웨어에 좀 더 많이 집중하는 애플을 보니, 오래간만에 애플답다..라는 느낌이 드는 키노트였다랄까...

 그러니까, 예를들어.. '딥러닝? 우린 이렇게 생각하고 이렇게 적용하고 있지!' 라는 느낌 아닌 느낌!


-코나-

Posted by 코나
삽질기/sails.js2015. 11. 16. 19:19

미디엄(!) 계정 오픈 겸, 오래간만에 글하나 남깁니다. :)

sails.js 를 이용해서 본격적으로 개발을 시작한 지 약 3개월이 지났다.

물론 기술 검토 기간을 고려한다면, 한달 정도를 덧붙여야 하지만, 지금 진행중인 프로젝트의 날짜를 고려해보면 대략 3개월.

아직 프로젝트가 끝나지 않은 상황에서 무엇인가를 논하기에는 부족한 부분이 많지만, 이 글은 현 시점에서의 sails.js 에 대한 내 소감을 담는것을 목표로 한다. ..... (글보기)


Posted by 코나

기술 검토(?) 겸, 이틀간 node.js 를 이용해서 이런 저런 스터디 & api 개발을 했다.

 

이제, 서버에 올려야 하는데......

 

일단 첫번째 장벽 발생.

 

기존 APM 이 동작중인 상태에서, node.js 로 작성된 서버가 '같이 잘 살아야'만 하는 상황이 됨.

 

조금 찾아보니...

 

1. 내부적으로 다른 포트에 node.js 기반의 (다른것도 물론 가능) 서버를 열고,

2. apache 의 VirtualHosts 설정에서 ProxyPass 를 설정해서,

3. 특정 url 로 접근시, 1번으로 '돌려주는' 것.

4. 외부에서 보면, 특별히 변화 없음. 내부적으로만 돌려막기(?) 하는 동작으로 보임. :)

 

자, 이제 설정을 해보자.

 

먼저 준비물 - module - 2개.

 

 mod_proxy, mod_proxy_http

 

1. ubuntu apache 서버는 기본적으로 두 모듈이 '설치'가 되어있음.

 

/etc/apache2/mods-available

 

 - 이 안에, proxy, proxy_http 설치된 상태.

 

 - 실제 설치는, 내부적으로는 ./mods-enabled 에 sort link 해주면 됨.

 - 이경우, 직접 하기 보다, '명령어'를 이용하는게 그냥, 맘이 놓이니...

 

 sudo a2enmod proxy 

 sudo a2enmod proxy_http

 

./mods-enabled 안에서 소프트 링크 확인.

 

 

2. 가상 호스트 설정.

 

 ./sites-available 내부의 기존파일 혹은 신규 파일 추가.

 

 다음 내용 추가, 수정 등등 적당히.

 

<VirtualHost *:80>

DocumentRoot /var/www/example.com/public_html

ServerName  www.example.com

 

# Index file and Document Root (where the public files are located)

DirectoryIndex index.html index.php

 

# Log file locations - 아래는 필요하다면.. :)

LogLevel warn

ErrorLog  /var/www/amazeapp.com/log/error.log

CustomLog /var/www/amazeapp.com/log/access.log combined

 

 

# 여기서 부터 본격적 추가.

 

ProxyRequests off

 

<Proxy *>

   Order deny,allow # 이부분의 경우, 콤마(,) 사이에 공백 없어야 함!

   Allow from all

</Proxy>

 

<Location /> # 내부적으로 접속 노드를 늘리고 싶다면 여기에 추가. :)

   ProxyPass http://localhost:3000/

   ProxyPassReverse http://localhost:3000/

</Location>

 

</VirtualHost>

 

 

 - 최종적으로 추가해야 하니, 다음과 같이 사이트를 가능하게 합시다!

 

 sudo a2ensite 파일명 (신규 추가의 경우만.)

 

3. 아파치, 재시작.

 

결론.

 

 잘 됨. 나머지 한가지는 '직접' 연결시 https redirect 설정 부분(얼핏 봤을때 VirtualHost)에 추가로 기억. :)

 

 덧붙여서 https 를 cloud flare 의 flexable ssl 접근시, node.js 쪽 pass direct 설정이 필요하다고 함.

 X-Forwarded-For 를 header 에 포함해주면 서버가 클라이언트의 '진짜' ip 확인 가능 하다고 기억함.

X-Forwarded-For 은 충분히 header 에서 언제든 조작이 가능하기떄문에 진짜 ip 가 아닌 클라이언트의 ip 를 가져올 수 있는 방법

 

 

레퍼런스.

 http://garrows.com/blog/running-node-js-and-apache-together-using-mod_proxy/

 https://github.com/sindresorhus/guides/blob/master/run-node-server-alongside-apache.md

 http://stackoverflow.com/questions/28062159/node-js-https-on-cloudflare

 

 

뱀발.

 node.js 흐으음............ 나중에 좀 정리해서 따로 적어야 할 듯!

Posted by 코나

시작은 그랬다.

VMWare 안에 NAT 로 개발 서버를 놓고, 같은 네트워크 안에서 다른 '장비'가 '고정'된 주소 - ip 말고 ㅠ.ㅜ - 로 접근하고 싶은 것.


1차적인 목표는 VMWare 안의 서버에 DNS - bind9 - 를 올리고, 밖에서 접근하려 하였으나, - UDP, TCP 53 을 열었음 - 실패. (아마도, 안에서 밖으로 나오지 못해서 그런 듯..)


결국, 같은 네트워크에 묶기로 결정, 별도의 DNS 운영으로 결정.


이래저래 잠시 찾다가 재미있는 두가지를 찾아냈다. (일찍 알게 되었다면 전체 서버 설정을 다 이걸로 했을지도)


1. Ubuntu 기반의 '가벼운' 리눅스 서버, JeOS - Juice 라고 읽는다 함. - 를 이용해서 서버 설치

 - 재미있게도 Virtual Machine 용 패키지가 존재. :) 용량도 가벼운 90메가.

 - 가장 매력적인 점은, apt-get 지원! (두둥!)

 - http://www.pqr.com/ubuntu-jeos


2. Bind9 말고, 좀 더 가벼운 DNS 서버 물색, 그리고 찾은 DNSMasq.

 - apt-get 으로 설치 가능

 - 다 필요없고, 설치 후, 그냥 /etc/hosts 에서 원하는거 간단히 설정하면 끝.

 - 나중에 다른 네트워크에서 하드웨어 테스트가 필요한 경우, /etc/hosts 정도 설정만 마져주면 됨. (물론, 디바이스쪽 dns 도 수정해줘야..)


결론


잠시 테스트 해보니 잘된다! 이상하게 요즘 'OSX Server'를 깔기 싫었는데, 결론적으로 '두개'의 VM 을 돌리는 걸로 마무리! :)


1번의 서버는 기본 설정이 256 메가 메모리로 잡혀서 돌아가는 중. 하드 용량은 1기가 max 로 잡힌 상태, 대략 절반 남은 듯. :) - 용량이 커진 이유는 사실, apt-get update, apt-get upgrade.. 때문일지도.. ㅎㅎ :)


Posted by 코나

얼마만의 포스트, 그것도 좌충우돌 서버관리 인지 모르겠습니다. :)


Knowledge base 인 관계로, '반말'로 기록합니다. :)


업데이트의 편의성-.-을 위해서 ftp 서버를 설치 완료. - 물론, apt-get 으로.


vsftpd 의 경우, /etc/vsftpd.conf 에서 관리되는데, 목표는 재부팅등의 경우 자동 실행에서 ftp 데몬을 제거하기.


이래저래 고민중, 선택한 방법은 config 파일 내부에서 listen=ON 항목을 OFF 함으로써 원천적으로 막기.


반대로 필요한 경우, config 수정 후 다시 서비스 스타트 하기.


필요할때만 쓸 수 있으니 만족스럽다. :)

Posted by 코나
삽질기/iPhone Dev2012. 12. 12. 21:07

안녕하세요 모코나입니다.


오늘이군요. 2012년 12월 12일 오후 1시~5시까지 건국대학교에서 진행된 세미나의 제 꼭지였던, Auto Layout 관련 실습 샘플 & 발표자료를 공유합니다.


12월, 열정 듬뿍 담은 코딩과 다양한 컨텐츠로, 2013년을 불태우겠습니다! 아자! :)


-코나-

AutoLayoutSample.zip

01 Autolayout.pdf


Posted by 코나
삽질기/Cappuccino & Obj-J2012. 10. 15. 15:10

구성을 분리해야 하겠다는 생각이 들어, 짧게 끝날줄 알고 기존 프로젝트를 복사, 간단한 구조 변경을 시도.


잘 돌아가는 것을 확인함.


배포 과정을 위해서, jake 를 이용, debug, release, deploy 를 수행.


deployment 를 서버에 올렸는데 문제 발생. - 내부 코어 그래픽스 쪽 함수가 정의 안되었다고 함. -.-;;;


기존 소스를 복사해 온 녀석이라 멘붕이 더 심함. -.-;;


반나절 끊어서 테스트 후, 자포자기 한 심정으로 release 판을 쓰려고 하는 찰나, - deploy 만 오류남, release, debug 는 또 잘 됨 -.-;; - 혹시나 하는 마음에 다시한번 이번에는 '직접' 구글링을 시도, 올 3월 irc 로그에서 해결책 발견. -.-;;


...전략...


<Sergii> Hello everyone! 

17:54 <Sergii> I've got a question about CPPopover. It works great. But once I build my project with jake deploy I get in FF: [23:51:21.406] CGGradientCreateWithColorComponents is not defined @ .../Build/Deployment/mifi/Frameworks/Objective-J/Objective-J.js:3182 

17:54 <Sergii> in Safari ReferenceError: Can't find variable: CGGradientCreateWithColorComponents 

17:56 timeimp joined 

17:57 <Sergii> actually there is a difference in rendering too. Children like buttons are not drawn in Safari, but ok in FF. No background in both browsers. Release (jake release) is working as expected 

17:59 timeimp joined 

18:04 matthusby joined 

18:04 <cacaodev> Sergii: Add @import <AppKit/CGGradient.j> and jake deploy. It's definitely a bug. 

18:07 timeimp joined 

18:18 timeimp joined 

18:28 Sergii joined 

18:28 <Sergii> cocoadev: Thanks a lot! works now! =) 


... (후략) ... 출처 : http://irclogger.com/.cappuccino/2012-03-19


끄응.. 카프치노 버그;였고 해결책은 직접 임폴트. 결론은 된다. -.-;;


문제점을 못찾았던 이유 : 기존 원본 소스에서는 deploy 이후에도 잘 되던 부분이었음. 문제는 구조를 단순화한 뒤에 발생한거라..

두번째 이유는 시작부터 구글 그룹안에서만 검색을 했건 것. 어흑. ㅠ.ㅜ


-코나-




Posted by 코나



0.95 기준입니다. :)


개발 완료된 카푸치노를 배포하기 위해서 그냥 통째로 올리기에는 어쩐지 모르게 부담스럽습니다. 부끄러운(?) 소스 노출도 걱정 되고, 용량 문제도 존재하죠..


오늘은 컴파일?에 대해서 이야기해볼까 합니다.


웹은 잘 모르지만, 자바스크립트를 가볍게만들어주고, 필요없는 요소들을 빼주는 훌륭~한 컴파일러중에 jake 라는 녀석이 있고, 카푸치노는 jake 를 쉽게 쓸 수 있게 기본 탑재(?)를 시켜주고 있습니다. 물론 백엔드는 따로 rhino 혹은 jsc를 쓰고 있는 듯 싶습니다.


암튼, 결과(?)만 나열하면..


1. 프로젝트 디렉토리에서 jake debug 혹은 jake 를 실행, 디버그용 빌드를 합니다.


2. 디버그용 빌드 후, jake release 를 이용, 릴리즈용 빌드를 합니다.


3. 마지막으로, 더 용량을 줄여보기(?)위해서 jake deploy 옵션을 이용, deployment 빌드를 합니다.

 - 요녀석이 최종 용량이 제일 적네요.. 흠...


문제는.. 외부에서 라이브러리 하나라도 끌어오면.. 컴파일 끝나도 13메가-.-;;;라는 거네요.. 덜덜;;;;


그래도 일단. 고.

최근 진행중인 프로젝트의 컴파일 결과입니다. 왼쪽부터 디버그-릴리즈-디블로이먼트.

700키로 벌었다 아싸~ -.-;;

Posted by 코나

안녕하세요 코나입니다!!

정말 정말 오래간만에 글을 올립니다. ^^

요즘 카프치노를 기반으로 웹 앱을 만들고 있는 중인데, 막히거나 팁이 있을때 블로그 포스팅을 하려 합니다.

제 라이브러리도 되고, 현실적으로 아직 좀 마이너리티한 이 프레임워크가 주목을 받을 수 있겠지요?


오늘은 그 첫번째로, xcodecapp 에서 컨버팅에 실패했을 때 입니다.


컨버팅 실패시, growl 을 통해서 넘어오는 메시지는 그닥 친절하지 않습니다. 이때의 구체적 접근 방법과 제가 찾은 해결책들을 적어봅니다.


문제점 : 인터페이스 빌더에서 Obj-J 클래스를 클래스 아이덴티티로 연동 후, outlet 이 제대로 뜨지 않을 때.

해결책 및 확인 사항 :

1. 최신 빌드 (2012.09.07 현재, 0.95, 단 공식 홈이 아닌 github header clone 필요함) 에서 xcode 런칭시에 확인 해볼 것.

 - Shadows Group 안에 파일들이 정상적으로 존재 하는가 (없으면 red 로 표시됨.)

1-a. 정상 존재하지 않는다면, 오리지널 파일의 경로를 확인해 보아야 함.

 : 프로그램은 Obj-J 소스를 Obj-C 로 임시 변환 시킴 - 저장 위치 : ~/.XcodeSupport  - 문제는 파일명으로 프로젝트 경로를 이용하는데, 이때 프로젝트 경로에 _ (underbar) 가 있을 경우 변환을 하기는 하지만 XCode 4.4 에서 인식을 제대로 못함. 따라서 이 경우에는 프로젝트 경로 안에서 _ 가 없는게 제일 좋음 ㅠ.ㅜ


문제점 : nib 파일을 cib 파일로 컨버팅을 실패한다면?

해결책 :

1. 정확한 확인을 위해서 위 1 항의 소스안의 Tool 안의 XCodeCapp 앱의 프로젝트를 XCode 를 통해서 오픈, 콘솔로그 확인시 Could not convert to xml plist for file 가 발생함을 확인.


1-a. 이경우는 컨버팅 과정에서 xcode-select 커멘드 명령어로 현재 사용하는 xcode 경로를 확인해보아야 함. 특히  iOS 혹은 Mac OS 를 위해서 베타판을 설치할 경우, xcode-select 명령어가 최신에 설치된 xcode 를 경로로 잡도록 하는 듯 함. 따라서 xcode --select 으로 정상 버전(?) 링크를 연결해야 함.


문제점 : Obj-J 에서 상속을 해서 차일드클래스를 생성했는데 수퍼 클래스의 아웃렛을 인식하지 못함.

해결책 :

1. 아직 XCodecapp 이 제대로 상속 관계에서 outlet 을 처리하지 못하는 걸로 판단됨.


1-a. 이경우에는 꼼수를 좀 부렸음. 나같은 경우에는 

 가. 어차피 클래스 이름만 안바뀐 채 연결하면 되므로 수퍼 클래스 명을 CPViewController 등으로 하고, super 에 있는 아웃렛을 임시로 가져와서 연결 후 치우면 됨.. -.-;;

 나. 그게 아니면 잽싸게(?) shadows 그룹에서 변경된 Obj C 파일의 클래스 헤더에 IBOutlet 을 임시로 넣어서 연결함. 개인적으로는 가. 안이 말을 더 잘 들었던(?) 걸로 기억함.

 다. 좀 심한 말로 일단 클래스 명 안 바뀐채 연결된다면.. 문제 없음. -.-;;;


앞으로 개발 하면서 팁들은 계속 추가 됩니다.

Posted by 코나
우연히 클리앙에서 알게된 NoSQL 로 시작된 일이, 실제 프로젝트에 적용하기 위한 설치 단계까지 와버렸다. 후덜덜;;

결론은 대세(?)를 따라서 몽고디비로 결정.

우분투에 깔기 전, 버철에 이런 저런 설치 = root 계정 살리고, apm 설치, public_html이 ~(틸드)와 놀 수 있도록 설정해주고, php 무시하지 않도록 설정해주었음. (링크 없음 ㅠ.ㅜ 다음번에 다시 구글링 하거나 해야 함..)
 마지막으로 samba 로 마무리. 

몽고 디비를 깔기 위해 다음과 같은 단순 작업을 진행함.

 **. 우분투에 몽고 디비 깔기.
 - 이번에는 걍 바이너리 상태로 하기로 함. -> 아직 10gen apt 패키지에 최신 버전 2.0 이 적용 안되었음.
 1. 바이너리 다운로드 (http://www.mongodb.org/downloads) - 리눅스 64비트로 하자.
 2. 서버로 복사 & 적당한 위치에 놓는다.
 3. 루트에 /data/db 디렉토리 생성 (안하면 안됨)
 4. 2번의 적당한 위치의 디렉토리 안 bin/mongod 실행. -> 백그라운드로 돌리면 금상첨화겠지?
 
***. php 와 몽고디비 연결하기
 1. pecl 이 필요함
  - apt-get install php-pear
 2. sudo pecl install mongo
 3. php.ini 파일 수정이 필요함.
  extension=mongo.so 를 추가
 4. 테스트로 찍어보면 됨. 끝. 
 
 관련글 :: http://www.mongodb.org/display/DOCS/PHP+Language+Center

쭉 하다보니, 프로세스 관리가 잘 안되어서 기초중의 기초를 찾아서 헤멤. 오래간만에 하려니.. ^^;;;;

*1. 프로세스 관리.

 앱을 백그라운드로 띄우는 방법.
  1. 명령어 뒤에 한칸 띄고 &
  혹은
  1. 포그라운드로 띄운 뒤, 서스펜드(ctrl+z),
  2. bg %프로세스아이디
  
  백그라운드 상태에서 포그라운드로 가져오기
  1. jobs -> 프로세스 번호 확인 -> fg %프로세스아이디
  
  로그아웃 후 다시 로그인 후 (터미널에 묶이지 않은) 프로세스 죽이는 방법
  kill 프로세스아이디 -> (top, 혹은 ps -rf | grep mongo 등으로 확인) -> 이게 정상 종료의 교과서임. 아니면 강제로 죽여야 함.
  
  관련 글 :: http://uzoogom.tistory.com/tag/top
 
이제 남은 건, 운영 서버에도 몽고 디비 설치하는 일. 그리고, 브릿지 완성하기.

그나저나, 간만의 포스팅이 너무 딱딱하죠? ^^;;

조만간 앱이 나온답니다, 그때! 컴백할께요~~ =3=3=3 

-코나- 

덧: 그나저나 왜자꾸 몽고디비가 아니라, 몬도디비;;라고 치는걸까. 난..ㅠ.ㅜ 
Posted by 코나