Hugo 설치하기

Go언어로 만들어진 Static blog system인 Hugo 설치 방법

Read On →

How to debug Golang with Visual Sutio Code

Explain how to debug Golang easily with Visual Sutio Code

Read On →

How I debugged memory leak issue for mediaserver

Recently I had to fix big memory leak issue in “medieaserver”. From the internet I found very nice tool called addr2func for fixing the issue. The tool is written by freepine and I modified for supporting latest version of AOSP bases codes(5.0) and uploaded into Github : addr2func Pre-condition - eng or userdebug build of device and android full source code Download addr2func Give excute permission. $chmod +x addr2func.py Enable memory allocation debug feature for mediaserver. Read On →

Github static website 만들기

Github Page란? PHP나 ASP 같은 서버스크립트 베이스의 웹사이트는 올리지 못하더라도 HTML과 Javscript등으로 이루어진 사이트를 호스팅 할 수 있는 서비스. Github에 repository를 만들고 해당 repository에 index.html을 비롯한 파일들을 올리면 <username>.github.io URL로 접속이 가능하다. 물론 custom domain을 설정해서 사용할 수도 있다. 우선 Automatic Generator를 이용해 페이지 만들어보기(User or Organization Pages sites) Github 가입하기: Github에서 가입하면 된다. Repository 만들기 Github에 로그인 하면 나오는 메인페이지의 우측 상단 +New repository 버튼을 눌러 새로운 repository만든다. repository를 만들때 본인의 <username>.github.io를 repository 이름으로 설정한다. Read On →

Gradle NDK Build Script Example

Example for gradle build script for Android library module with native code with prebuilt .so

Read On →

블로그 플랫폼을 찾아서..

블로그 플랫폼을 찾아서..

Read On →

Node.js debug on Eclipse

1. Google Chrome developer tool 설치Help->Install new software->"http://chromedevtools.googlecode.com/svn/update/dev/" 입력 후 아래와 같이 Google Chrome Developer tool 선택하여 설치 2. Eclipse를 실행해서 Debug perspective로 이동.*벌래모양이 보이지 않는 경우: windows->open perspective->Other->debug 3. Node.js를 debug모드로 실행: $node --debug index.js 4. Run->Debug configuration에서 Standalone V8 VM에 커서 둔 후 new버튼 클릭*Port를 5858로 지정 후 Debug버튼 클릭 5. 원하는 곳에 bp 찍고 debugging 시작!!

DrewGaren.com: Nexus S - ICY+ S version 1.0

기다리던 롬! 이제 플래싱 할시간!! 여러가지 롬들 사용해봤지만 Nexus S용 ICS롬은 DrewGaren ROM이 제일 맘에 든다. 구글 지원들이 Official ICS ROM 사용중이라고 하니 공식 릴리즈 되기 전까지는 큰 문제 없으면 이 롬에 정착 할 듯. <– 플래싱 해보니.. 너무 문제가 많다. 다시 Beta ROM으로 복원 -_-; DrewGaren.com: Nexus S - ICY+ S version 1.0: Nexus S Rom - ICY+ S version 1.0 The first stable release of Android 4.0.1 Ice Cream Sandwich from DrewGaren. Read On →

Android C2DM client 예제

준비물 : c2dm account(파이썬으로 c2dm서버 만들기 포스팅 참조) 만들 예제의 패키지 구조. 우선 Manifest file의 Code. <manifest android:versioncode="1" android:versionname="1.0" package="com.leehack.c2dmtest" xmlns:android="http://schemas.android.com/apk/res/android"> <uses-sdk android:minsdkversion="14"> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> <activity android:label="@string/app_name" android:name=".C2DM_TESTActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"> <category android:name="android.intent.category.LAUNCHER"></category> </action> </intent-filter> </activity> <!-- Only C2DM servers can send messages for the app. If permission is not set - any other app can generate it --> <receiver android:name=".push.C2DMReceiver" android:permission="com.google.android.c2dm.permission.SEND"> <!-- Receive the actual message --> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE"> <category android:name="com.leehack.c2dmtest"></category> </action> </intent-filter> <!-- Receive the registration id --> <intent-filter> <action android:name="com.google.android.c2dm.intent.REGISTRATION"> <category android:name="com.leehack.c2dmtest"> </category> </action> </intent-filter> </receiver> </application> <!-- Only this application can receive the messages and registration result --> <permission android:name="com.leehack.c2dmtest.permission.C2D_MESSAGE" android:protectionlevel="signature"> <uses-permission android:name="com.leehack.c2dmtest.permission.C2D_MESSAGE"></uses-permission> <!-- This app has permission to register and receive message --> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"></uses-permission> </permission> </uses-sdk> </manifest> C2DMReceiver.java: 리시버 작성. Read On →

Python으로 c2dm server 만들기

1. http://code.google.com/intl/ko-KR/android/c2dm/ 에서 c2dm 서비스에 sign-up (gmail account를 새로 만들어서 가입하는 것이 좋다. - 실제로 이 account정보를 클라이언트 및 서버에 모두 넣어야 하고 더구나 서버에는 패스워드정보도 필요하기 때문) 2. 가입하면 E-mail로 가입한 Account로 서비스가 Enable되었다는 내용의 메일이 옮(보통 하루안에 오고 늦어도 몇일 사이에는 오는 듯) 여기까지 준비 완료! 아래는 실제 파이썬 코드 시작!! import urllib, urllib2 class ClientLoginTokenFactory(): _token = None def init(self): self.url = ‘https://www.google.com/accounts/ClientLogin' self.accountType = ‘GOOGLE’ self.email = ‘c2dm에 가입한 메일주소’ self.password = ‘c2dm에 가입한 메일주소의 패스워드’ self.source = ‘replstory-replstory-0’ self.service = ‘ac2dm’ def getToken(self): if self._token is None: # Build payload values = {‘accountType’ : self.accountType, ‘Email’ : self.email, ‘Passwd’ : self.password, ‘source’ : self.source, ‘service’ : self.service} # Build request data = urllib.urlencode(values) request = urllib2.Request(self.url, data) # Post response = urllib2.urlopen(request) responseAsString = response.read() # Format response responseAsList = responseAsString.split(’\n’) self._token = responseAsList[2].split(‘=’)[1] return self._token class C2DM(): def init(self): self.url = ‘https://android.apis.google.com/c2dm/send' self.clientAuth = None self.registrationId = None self.collapseKey = None self.data = {} def sendMessage(self): if self.registrationId == None or self.collapseKey == None: return False clientAuthFactory = ClientLoginTokenFactory() self.clientAuth = clientAuthFactory.getToken() # Build payload values = {‘registration_id’ : self.registrationId, ‘collapse_key’ : self.collapseKey} # Loop over any data we want to send for k, v in self.data.iteritems(): values[‘data.’ + k] = v # Build request headers = {‘Authorization’: ‘GoogleLogin auth=’ + self.clientAuth} data = urllib.urlencode(values) request = urllib2.Request(self.url, data, headers) # Post try: response = urllib2.urlopen(request) responseAsString = response.read() return responseAsString except urllib2.HTTPError, e: print ‘HTTPError ’ + str(e) sender = C2DM() sender.registrationId = ‘Android단말기에서 c2dm서버로 부터 받은 고유번호’ sender.collapseKey = 1 sender.data = {‘msg’:‘test’} response = sender.sendMessage() print response 9,10,79 라인의 정보만 바꾸고 실행하면 c2dm등록된 단말기로 test라는 푸시 메세지가 날아간다. Read On →