티스토리 툴바


블로그 이미지
카라크라스

Leon.Kim의 공부하는 블로그입니다. mail - kalaklas@gmail.com twitter - @kalaklas

Rss feed Tistory
Web/Javascript 2011/11/05 21:57

html5 data-attribute javascript로 사용하기

Using data- attributes with JavaScript
Now that we understand what custom data- attributes are and when we can use them, we should probably take a look at how we can interact with them using JavaScript.

If we wanted to retrieve or update these attributes using existing, native JavaScript, then we can do so using the getAttribute and setAttribute methods as shown below:

저작자 표시 비영리 변경 금지
MobileApp 2011/10/25 00:58

iOS HostName(URL)을 기반으로 현재 디바이스의 네트워크 상태를 얻기위한 메소드


iOS HostName을 기반으로 현재 디바이스의 네트워크 상태를 얻기위한 메소드다.

HostName은 http:// <<= 당연히 생략해야한다.

SystemConfiguration.h 을 import하고.. 


- (BOOL)networkReachable {
    Reachability *r = [Reachability reachabilityWithHostName:@"121.137.211.103"];
    NetworkStatus internetStatus = [r currentReachabilityStatus];
    if(internetStatus == NotReachable) {
        return NO;
    }
    return YES;
}




wifi 또는 wwan의 구분 또한 가능하다.
NetworkStatus enum은 아래와 같다. 
typedef enum {
	NotReachable = 0,
	ReachableViaWWAN, // this value has been swapped with ReachableViaWiFi for PhoneGap backwards compat. reasons
	ReachableViaWiFi  // this value has been swapped with ReachableViaWWAN for PhoneGap backwards compat. reasons
} NetworkStatus;

따라서 
internetStatus != ReachableViaWWAN
internetStatus != ReachableViaWiFi

처럼 현재 디바이스의 네트워크 상태를 보다 상세히 파알할 수도 있다.

저작자 표시 비영리 변경 금지
분류없음 2011/10/24 17:53

phonegap plugin ChildBrowser가 iOS5에서 정상 동작하지 않을때.

phonegap plugin ChildBrowser가 iOS5에서 정상 동작하지 않을때.

Done 버튼이 iOS5에서 정상동작하지 않아 childBrowser를 한번 열면 닫을수 없는 문제가 있다.



ChildBrowserViewController 클래스의 closeBrowser() 메소드를 아래와 같이 변경하여야 4.3, 5.0 모두에서 정상 동작한다.

-(void)closeBrowser
{
    if(delegate != NULL)
    {
        [self.delegate onClose];
        
    }
    if ([[super parentViewController] respondsToSelector:@selector(dismissModalViewControllerAnimated:)]) {
        [[super parentViewController] dismissModalViewControllerAnimated:YES];
    } else {
        [[super presentingViewController] dismissViewControllerAnimated:YES completion:nil];
    }
    
}

저작자 표시 비영리 변경 금지
Web/Javascript 2011/07/26 14:15

CommonJS - not just for browsers any more!

CommonJS - not just for browsers any more!



정말 신선하고, 충격적이며 멋있는 주제가 아닐수 없다 +_+a
미루고 미루다가 드디어 한번 구경해 보게 되었다
http://www.commonjs.org/

그동안 javascript는 브라우저에서만 수행되는 인터프리터 언어로서 취급 되어져 왔다.
나도 그리 생각했었다.
하지만 javascript의 영역이 계속 넓혀지고 있다.

The official JavaScript specification defines APIs for some objects that are useful for building browser

javascript는 이제 브라우저를 뛰쳐 나가고 싶어졌고, 많은 개발자들이 이 꿈을 지원해주고있다.
향후 아래와 같은 환경에서도 이제 js는 큰 역할을 짊어 질수 있을것 같다.
• Server-side JavaScript applications 
• Command line tools 
• Desktop GUI-based applications 
• Hybrid applications 

The CommonJS API will fill that gap by defining APIs that handle many common application needs, ultimately providing a standard library as rich as those of Python, Ruby and Java.

CommonJS에서 제안하고 있는 표준스팩들은 아래와 같다.
http://www.commonjs.org/specs/
•Modules
•Binary strings and buffers
•Charset encodings
•Binary, buffered, and textual input and output (io) streams
•System process arguments, environment, and streams
•File system interface
•Socket streams
•Unit test assertions, running, and reporting
•Web server gateway interface, JSGI
•Local and remote packages and package management

위 제안들을 모두 구현한 구현체가 0.x대 버전을 넘어 1.x대로 진화하는 이후 부터 어떤 일들이 벌어질지 정말 기대된다.
이미 CommonJS에서 제안한 표준에 따라 구현된 구현체들이 상당하다.
아래 주소에서 확인 가능하다.
http://www.commonjs.org/impl/

Node.js 역시 CommonJS의 제안한 표준을 따라 CommonJS에서 정의한 모듈들을 일부 구현하였다.
현재 Node.js는 아래와 같은 상태로서 
v0.4.10 (stable) 
v0.5.2 (unstable) 
http://nodejs.org/#download
0.4 ~0.5 대 버전임에도 불구하고, 벌써부터 Node.js등을 열심히 지지고 볶고 있는 사람들이 많아진것을 구글링을 통해 쉽게 알수 있다.

간단하게 CommonJS에서 제안하고 있는 JS모듈을 Node.js에서 어떻게 사용하는지 모양을 살펴보자.
흔히 FF에 console에서 로그를 찍어보기 위해 console.log(), console.dir() 메소드를 사용하는데, 
http://wiki.commonjs.org/wiki/Console에 해당 모듈도 논의의 대상으로서 리스트에 올라 있다.
현재 Console의 논의 상태와 제안 내용을 살펴 볼수 있다.
11년 7월 현재 아직 PROPOSED, DISCUSSED, SOME IMPLEMENTATIONS 상태임을 알수 있다.

Node.js에서는 이미 이 제안을 참고하여 구현되어있고, 해당 모듈의 사용이 가능하다.
Node.js에서 100%는 아니지만 몇몇 기능을 구현하였고 아래와 같은 형태로 사용이 가능하다.
var maLog = require("console");
maLog.log("Hello world~!!");
-출력결과 당연히 Hello world~!! 라는 주어진 문자열을 출력
>Hello world~!!

maLog.dir(maLog);
-출력결과 당연히 maLog 객체에 assign된 console 모듈 내용을 출력한다. 
- 현재 Node.js에서는 Console스펙의 16가지 기능중 9가지 기능을 구현 제공하고 있음을 알수 있다.
>
{ log: [Function],  
   info: [Function],  
   warn: [Function],  
   error: [Function],  
   dir: [Function],  
   time: [Function],  
   timeEnd: [Function],  
   trace: [Function],  
   assert: [Function] 
}
슬슬 Node.js를 열심히 만져 보아야겠다.
저작자 표시 비영리 변경 금지
Ma 2011/06/16 11:26

요즘..



스스로의 심장소리에 솔직하게 반응하며 살아간다는것.
그게 참 좋다는것.

알면 알수록
알아가면 알아갈수록 ..

기분 좋은 나날이다.

'Ma' 카테고리의 다른 글

요즘..  (0) 2011/06/16
App Store for Mac  (0) 2011/01/07
One time bestseller  (0) 2010/12/14
미래를 바꿀 "식스 센스", 웨어러블 장비를 시연 . .  (0) 2010/11/15
event  (0) 2010/09/30
새 라인업  (0) 2010/08/27
MobileApp 2011/06/11 23:55

Phonegap에서 Geolocation 관련 API를 사용할때 . .

Phonegap에서 Geolocation 관련 API를 사용할때 . .


최근에 phonegap0.9.5.1로 프레임웍을 업데이트 하였더니...

iOS에서는  Geolocation 인터페이스를 이용하여 현재 location 정보를 얻어오는
아래코드가 아무 이상없이 잘 동작하였으나, 안드로이드에서는 갑작스레 동작이 원활이 되지
않았음. 혹시나 API 변경 사항이 있나 문서를 살펴 보았는데도 변동 사항이 없었다.

var self = this;

navigator.geolocation.getCurrentPosition( function(position) {

self._lat = position.coords.latitude;

self._lng = position.coords.longitude;

self.getPositionSuccess(type, destinationAddress);

}); 


직접 안드로이드 phonegap.0.9.5.1.js를 살펴 보니 아래와 같은 코드가 추가 되어 있었다.
동일한 코드로 다양한 플랫폼을 지원한다는 phonegap의 컨셉이 흐릿해진 순간이었다 . .

/**

 * Force the PhoneGap geolocation to be used instead of built-in.

 */

Geolocation.usingPhoneGap = false;

Geolocation.usePhoneGap = function() {

    if (Geolocation.usingPhoneGap) {

        return;

    }

    Geolocation.usingPhoneGap = true;


    // Set built-in geolocation methods to our own implementations

    // (Cannot replace entire geolocation, but can replace individual methods)

    navigator.geolocation.setLocation = navigator._geo.setLocation;

    navigator.geolocation.getCurrentPosition = navigator._geo.getCurrentPosition;

    navigator.geolocation.watchPosition = navigator._geo.watchPosition;

    navigator.geolocation.clearWatch = navigator._geo.clearWatch;

    navigator.geolocation.start = navigator._geo.start;

    navigator.geolocation.stop = navigator._geo.stop;

}; 


위 메소드는 iOS를 위한 phonegap.0.9.5.1.js 에는 존재하지 않는다.
때문에 iOS에서 usePhoneGap() 메소드를 수행하면, 오류가 당연히 발생한다.
결국 아래와 같이 플랫폼별 분기를 시켜줘야 한다 


if(jquery.csob.isAndroid == false){

//Android일때는 ChildBrowser 메소드를 수행할 필요가 없다.

ChildBrowser.install(); 

}else{

/*

Android일때 Geolocation 기능을 사횽하고자 할때 아래 메소드를 수행해줘야 한다.

*/

Geolocation.usePhoneGap();

}



 
분류없음 2011/05/25 17:40

할리스커피 광고 +_+


할리스커피 새 광고 +_+



점심먹고 항상 들르는 할리스커피

텔레비전에서 광고하는거 첨으로 목격했다. +_+a

이쁘장한 여자들이 시간 가는줄 모르고 수다 떠는 오후의 즐거운 브런치  . . +_+a

브런치라는게 원래 아침겸 점심인데 . . . 오후의 브런치(pm3:59)라는게 좀 쌩뚱맞은

느낌이었지만 . . . 곰곰히 생각해 보니 브런치라는게 꼭 시간에 연연해서만 즐겨야 하는

녀석이라는 관념을 깨보려는 시도로 보여 좀 신선했다 +_+ㅋ

Anytime Brunch!

여자들만 브런치 즐기라는법있나?ㅋㅋㅋ

나도 브런치 좀 즐겨 보아야겠다 ㅎㅎ




MobileApp 2011/04/07 20:39

iScroll을 이용하여, 특정 영역만 스크롤이 가능하게 해보자.

iScroll을 이용하여, 특정 영역만 스크롤이 가능하게 해보자.


참고 : http://cubiq.org/iscroll

예를 들어 아래와 같은 jquery mobile을 이용하여, 만든 webapp을 구현했다고 치자.

.
.

<div data-role="page" id="page_default" data-theme="e">
.
.
 

<div data-role="content">

<div id="collapser" data-role="collapsible" data-collapsed="true">

<h3>검색어 입력</h3>

<input  id="enteredItemField" type="search" value="" placeholder="검색어를 입력하세요."</input>

<div data-role="controlgroup" data-type="horizontal" align="center">

<a id="enteredItemSaveButton"href="#" data-icon="star" data-role="button">검색어 저장</a>

<a id="directSearchButton"href="#" data-icon="search" data-role="button">바로 검색</a>

</div>

</div>

<ul id="ItemList" data-role="listview">

<!-- 여기에 동적으로 li가 붙는다. -->

</ul>

</div>

<!-- CONTENT END -->

</div>
.
.



1. 특정 영역만을 scroll가능도록 하기 위해서 일단 이 페이지 (#page_default) 의 스크롤링을 prevent하자.

$("#page_default").live('touchmove', function (e) { e.preventDefault(); }, false); 

 

2. iscroll.js를 페이지에 import하자.
<script src="./lib/iscroll.js"></script>





3. scrolling되었으면 하는 영역을 래핑하자.
 

<div id="wrapper">
    <div id="scroller">
        <ul id="itemList" data-role="listview">
            <li>...</li>
        </ul>
    </div>
</div>




4. wrapper를 위한 css를 내 어플에 맞게 customize하자.
#wrapper {
    position:relative;
    z-index:1;
    width:100%;
    height:350px;
    overflow:auto;
}
 
5. iscroll 객체를 listview dom id와 함께 인스턴싱하자.
myScvar roll = new iScroll('scroller'); 


결과 >> 리스트 부분만 스크롤링 된다. 




이 모든 내용은 
http://cubiq.org/iscroll 에 돔 더 자세히 잘 나와 있으니, 참고도록 하자.






 

분류없음 2011/03/16 01:21

KTH에서 Hybrid App 플레임웍을 공개했다 !

KTH에서 Hybrid App 플레임웍을 공개 했다.


지난번 webapps conn 2011 세미나때 Appspresso로 만들었다는  

"푸딩 얼굴 인식 "을 보고 호기심 돋았었는데 . . . .

http://www.appspresso.com/appdev/appMain.do 에서 확인 가능하다.

이클립스에 Appspresso 개발툴을 미리 플러그인해둔 형태로 개발 툴을 제공한다.


1. 간단하게 프로젝트를 만들고




2. 좀 더 익숙한 js UI Framework을 선택하면,




3. 멀티플랫폼을 지원하는 Web기반 App 개발 환경이 완벽히 마련된다.



4. 샘플을 실행해보자.



5. jQuery Mobile 기반의 간단한 웹앱이다.
Header, Content(에는 간단한 listView가), Footer(nav메뉴) 구조를 지닌 간단한 App이다.
시뮬레이터 뿐만아니라, 폰에서도 미려하게 잘돌아간다.






iTunes의 응용프로그램에 app이 추가되서 . . . 폰과 직접 동기화를 해야한다... 흠 ; ; 
이점은 좀 불편 . . .
XCode에서 javascript 코딩하기 사실 정말 힘들다 . . 
때문에 xCode + eclipse로 작업을 하는 바보같은 습관을 갖게 되어 버렷다.
그치만 . . . 이제  XCode를 딱히 실행 시키지 않아도되겠다.




 

 











 

 
MobileApp 2011/03/11 11:38

Phonegap을 이용하여, Webapp 개발시 . .


Phonegap을 이용하여, Webapp 개발시 . .


deviceready 이벤트가 발생하지 않아, 헤매는 이들을 몇몇 보았다.

이는

" This is an event that fires when PhoneGap is fully loaded. "
(ref : http://docs.phonegap.com/phonegap_events_events.md.html

 말 그대로 deviceready 이벤트는 phonegap 이 모두 로드 완료되었을대 fire되는 이벤트 . .

결국 phonegap 로드가 실패했으니 deviceready 이벤트가 발생하지 않은것.

대부분 phonegap.js의 경로가 잘못되어 발생하는 문제다.

phonegap.js의 import 구문의 경로와 실제 phonegap.js의 위치가 일치하는지를 다시 한번 살펴보도록 하자.

1 2 3 4 5 ... 11
TOTAL 16,063 TODAY 51