반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형

피델리티 인베스트먼트에서 후원을 한 MOFILM 2012 텍사스 비디오 콘테스트 당선작입니다.

요즘 이 회사 관련된 프로젝트를 하고 있어서 모바일 웹 만들다가 Content로 들어와서 보게 된 건데요.


재밌어서 공유합니다.


주제가 일상에서 불편한 점들에 뭔가 더 좋은 방법을 생각해 보자라는 것 같습니다.

한국팀도 Best 5 안에 하나 든 것 같네요.



1. A Better Way to Connect



Director: JR Strickland
Producer: Villian, JR Strickland
Cast: Derek Cox, Cecilee Von Rhea



2. A Better Way to Cut Onions



Director: MChristie



3. A Better Way to Fold



Creative/Producer/Editors: Lawrence Chen and Hagan Wong
Director: Lawrence Chen
Actors: Jesse Hsu and Alex Ellinport



4. A Better Way All Day



Director: Shin Seung Hwan
Producer: Jude Chun
Actor: Jo Dong Hyun



5. A Better Way To Start A Day



Director: MChristie
Actor: Ryan Powers



반응형

Kurogo Tutorial 11 - News Module -

2012. 5. 17. 00:07 | Posted by 솔웅


반응형

이번에는 Kurogo의 News Module 을 살펴봐야겠네요. 관련된 일을 받았거든요.


News Module

뉴스 모듈은 RSS feed 로부터 받은 stories/articles 리스트를 보여 줍니다. 그 feed 가 full textual content를 제공한다면 그 article은 모바일에 맞는 포맷으로 유저에게 보여질 겁니다. 만약 그 feed가 full text를 담고 있지 않다면 그 article로 지정된 URL로부터 content를 fetch 하도록 configure 될 수 있습니다. (아래 FETCH_CONTENT 를 보세요.)

General Options

SITE_DIR/config/news/module.ini  안에 뉴스 모듈의 기본 작동에 관해 configure 할 수 있는 몇개의 옵션이 있습니다.

  • MAX_RESULTS (10) - 뉴스 리스트에 보여질 아이템의 갯수 
  • SHARING_ENABLED (1) - news entries에 sharing link를 걸 수 있는지 없는지 지정. 0으로 하면 지정할 수 없도록 함

Configuring News Feeds

news 모듈을 사용하기 위해 우선 여러분의 data로 연결하는 connection을 setup 해야 합니다. 이를 위해서는 2가지를 반드시 세팅해야 합니다.  이 작업을 하기 위해 Administration Module 를 이용하거나 SITE_DIR/config/news/feeds.ini file 에서 곧바로 값을 수정하시면 됩니다.

이 모듈은 multiple feeds를 지원합니다. 각 feed 는 configuration file안의 section에 의해 지정됩니다. 그 section의 이름은 0-indexed number 이어야 합니다 (i.e. 첫번째 feed는 0 이고 두번째 feed 는 1 ...). 아래의 값들이 필요합니다.

  • TITLE 값은 여러분 feed 의 이름을 가르킵니다. 이 이름은 feed를 선택하기 위해 drop down list 했을 때 보여지게 됩니다.
  • BASE_URL은 여러분의 News feed의 url을 세팅하면 됩니다. static file이 될 수도 있고 Web service 가 될 수도 있습니다.




Optional values

  • RETRIEVER_CLASS - data를 get 하기 위해 alternate data retriever  를 세팅할 수 있도록 합니다. 디폴트는 URLDataRetriever 입니다.
  • PARSER_CLASS - DataParser의 subclass로 세팅합니다. 여러분의 데이터 소스가 RSS/Atom 이나 RDF가 아닌 포맷으로 return 될 때에만 바꾸시면 됩니다. 디폴트는 RSSDataParser 입니다.
  • SHOW_IMAGES - feed의 thumbnail 이미지를 보여줍니다. 이미지가 없으면 placeholder image 가 보일 겁니다. 만약에 모든 feed가 이미지를 가지고 있지 않으면 SHOW_IMAGES=0 으로 세팅하실 수 있습니다.
  • SHOW_PUBDATE - 뉴스 리스트에 publish date를 보여 줌. (published date는 detail page에서는 항상 보여 짐)
  • SHOW_AUTHOR - 뉴스리스트에 저자를 보여 줌 (detail page에서는 항상 저자를 보여 줌) 
  • SHOW_LINK - full article에 대한 link를 보여 줌. feed에 introductory paragraph 만을 포함하고 있을 때 유용함. 

Additional Configuration for RSS Feeds

특정 RSS feeds에 대한 옵션들이 있습니다. RSSDataParser 가 디폴트 parser 이면 이것은 대부분의 feed들에 적용이 될 겁니다.

  • CHANNEL_CLASS   RSS channel 에 대해 다른 클래스 이름을 세팅할 수 있도록 해 줌. 여러분은 custom subclass를 생성해서 unique하게 RSS 아이템을 핸들링 할 수 있습니다. 흔히 사용되지는 않습니다.
  • ITEM_CLASS  feed 안에서 각 아이템에 대해 다른 클래스 이름을 세팅할 수 있도록 함. custom matter 안에 custom fields 나 parse fields를 가지고 있는 feed 를 핸들링 할 수 있도록 해 줍니다.
  • ENCLOSURE_CLASS enclosures에 다른 클래스 이름을 세팅할 수 있도록 해 줍니다. enclosures에 대해 custom behavior를 핸들링 할 수 있도록 해 줍니다. 
  • IMAGE_ENCLOSURE_CLASS  image enclosures에 대해 다른 클래스 이름을 세팅할 수 있도록 해 줍니다. 이미지에 대해 custom behavior를 핸들링 할 수 있도록 해 줍니다.
  • REMOVE_DUPLICATES - feed에서 duplicate entry 들을 remove 합니다. (i.e. 같은 GUID를 가지고 있는 아이템).
  • HTML_ESCAPED_CDATA - 1로 세팅하면 content와 description field 에 있는 HTML을 decode 할 겁니다. CDATA block에 wrapping 하기 위해 HTML data를 encode 하면서 feed가 HTML data를 encode 하는데 문제가 생길 경우 on으로 설정할 필요가 있습니다.
  • USE_DESCRIPTION_FOR_CONTENT - 1로 세팅 돼 있으면 description field는 full content로서 사용될 겁니다.
  • FETCH_CONTENT - 1로 세팅되면 Kurogo는 아이템에서 명시된 URL에서 content를 fetch 하는 것을 시도할 겁니다. 그리고 그 content를 extract 할 겁니다.



반응형


반응형

회사에서 해야할 Kurogo 관련 일을 이제 거의 끝마쳤습니다.

JQuery Mobile 쪽을 너무 오래 다루지 않은 것 같아서 지난번 글에 이어서 계속 Tutorial을 정리하겠습니다.


Prefetching pages

여러분 앱의 페이지들을 하나의 큰 템플릿에 보관하는 것 보다 조그만 여러개의 페이지 템플릿(single-page templates)으로 나눠서 보관하는게 더 좋은 생각입니다. 그렇게 하면 페이지의 DOM size를 줄일 수 있습니다.

single-page templates를 사용할 때 DOM에 대해 prefetch pages를 사용하실 수 있습니다. 그러면 유저기 그 페이지를 방문할 때 즉시 서비스를 할 수 있습니다. 페이지를 prefetch 하기 위해서는 link에 data-prefetch 속성을 추가하면 됩니다. JQuery Mobile은 그러면 primary page가 로드된 다음에  target 페이지를 background에서 로드합니다. 그리고 pagecreate event가 trigger 됩니다. 아래 예제가 있습니다.

<a href="prefetchThisPage.html" data-prefetch> ... </a>

여러분이 원하시면 원하시는 대로 linked page에 prefetch를 설정할 수 있습니다. 단지 링크에 data-prefetch 만 추가하시면 됩니다.


또한 $.mobile.loadPage():를 사용해서 프로그램적으로 페이지를 prefetch 하실 수 있습니다.

$.mobile.loadPage( pageUrl, { showLoadMsg: false } );

페이지를 prefetching 하는데에는 또다른 잇점이 있습니다. 유저가 이 prefetch된 페이지를 방문할 때는 Ajax 로딩 메세지를 안 보게 될 겁니다 Ajax 로딩 메세지는 prefetching이 끝나지 않았을 때만 나타날 겁니다.

Prefetching 페이지는 자연스럽게  추가적인 HTTP request를 생성하고 bandwidth를 사용합니다. 그러니까 페이지를 prefetching 하는 것은 자주 방문되는 페이지에 한해 사용하시는 것이 좋습니다. 일반적으로 previous, next 가 많이 사용되는 Photo Gallery 같은데 사용해서 유저가 사진을 보는데 좀 더 빠르게 화면에 표시하도록 만들 필요가 있을 때 사용할 수 있을 겁니다.





DOM size management

animated 된 화면전환을 위해서 화면전환이 일어나는 두 페이지가 모두 DOM 안에 있을 필요가 있습니다. 어쨌든 DOM 에 있는 이전 페이지를 계속 가지고 있으면 브라우저의 메모리를 차지하게 될 것이고 어떤 모바일 브라우저에서는 속도가 저하되거나 crash가 일어날 수도 있을 겁니다.

jQuery Mobile은 DOM에 작게 보관할 수 있는 간단한 메카니즘을 가지고 있습니다. Ajax를 통해서 페이지를 load 할 때마다 jQuery Mobile는 그 페이지를 flag 하고 나중에 그 페이지를 떠 날 때 DOM에서 remove 할 수 있도록 합니다. (기술적으로 말하자면 pagehide event 시 이 일이 일어 납니다.) 만약 유저가 remove 된 페이지를 다시 방문하면 캐쉬에서 그 페이지의 HTML 파일을 retrieve 할 겁니다. 만약 그렇지 않으면 서버에서 refetch 하겠죠. (nested list views 인 경우에는 jQuery Mobile은 필요에 따라 더 이상 관련 없는 nested page를 remove 하게 됩니다.)

multi-page template 안에 있는 페이지들은 이 기능에 영향을 받지 않습니다. - jQuery Mobile은 Ajax 를 통해 로드된 페이지들만 remove 합니다.


Caching pages in the DOM

If you prefer, you can tell jQuery Mobile to keep previously-visited pages in the DOM instead of removing them. This lets you cache pages so that they're available instantly if the user returns to them.


원하시면 이전에 방문했던 페이지를 remove 하지 않고 DOM 에 보관하라고 jQuery Mobile에 지시할 수 있습니다. 그러면 유저가 다시 그 페이지를 방문할 때 빨리 보여줄 수 있겠죠.

To keep all previously-visited pages in the DOM, set the domCache option on the page plugin to true, like this:


방문했던 모든 페이지를 DOM에 보관하려면 domChache 옵션을 true로 세팅하면 됩니다.


$.mobile.page.prototype.options.domCache = true;

특정 페이지만 cache 하시려면 그 페이지의 콘테이너에 data-dom-cache="true" 속성을 추가하시면 됩니다.


<div data-role="page" id="cacheMe" data-dom-cache="true">

programmatically 페이지를 cache 할 수도 있습니다.

pageContainerElement.page({ domCache: true });

DOM caching의 drawback하면 DOM이 아주 크게 될 수 있습니다. 그러면 속도가 느려지거나 어떤 디바이스에서는 저장용량 문제가 발생할 수 있습니다. DOM caching 을 할 때는 이런 부분을 잘 관리하셔야 합니다. 그리고 여러 디바이스에서 충분히 테스트 해 보셔야 합니다.


반응형