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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형

요즘은 고국의 소식을 Podcast 를 통해 많이 접합니다.


가끔 이상호 기자의 발뉴스를 보다 보면 뭔가 큰 권력 앞에서 보복을 두려워하면서도 진실을 지키고자하는 언론인의 모습이 너무 안되 보입니다.


그리고 그렇게 어렵게 수십년간 많은 이들의 희생을 댓가로 민주화 운동을 해서 얻은 자유와 권리가 정권이 바뀌었다고 해서 이렇게 쉽게 이렇게도 금방 무너지는 모습에 너무 마음 아프기도 하구요.


그리고 많은 분들의 희생이 다시 헛되이 사라지지 않도록 하기 위해서라도 그리고 내가 제대로 자유를 누리며 살기 위해서라도 어떤 식으로라도 나도 참여해야겠다는 생각을 합니다.


제가 발벗고 나서지는 못하지만 최소한, 용기를 갖고 앞에 나서는 사람들에게 저도 뜻을 같이하고 있고 같이 옆에 있다는 메세지라도 전하고 싶습니다.



그리고......


오지랖일까요?




아루나찰 프라데시(Arunachal Pradesh)라는 곳이 있습니다.

부탄과 티벳과 중국과 미얀마와 국경을 접하고 있는 히말라야 산속에 있는 고장입니다.

현재 인도의 한 주에 속해 있습니다.


이곳에서도 한국에서와 같은 아니 우리가 이전의 독재시대에나 경험했을 법한 무지막지한 언론과 인권탄압이 일어나고 있습니다.


2012년 7월 15일 백주 대낮에 한 언론인이 등 뒤에서 총을 맞았습니다.



(해석:당신들은 단지 등 뒤에서 여자를 쏜 것만이 아니다 아루나찰인들의 자유와 평화를 죽인것이다.)


그리고 그동안 침묵을 강요당했던 사람들이 목소리를 높였습니다.



저는 이 곳의 정치상황을 자세히는 모릅니다.

단지 예전에 몇년간 인도에 있었을 때 알았던 친구가 페북 친구가 됐고 그 친구가 페북에 올린 몇개의 글을 읽은게 전부 입니다.


어떤 정치적인 이유에서건 백주 대낮에 언론인이 등뒤에서 쏜 총에 저격당하는 이런일은 일어나서는 안 되는 겁니다.

어떤 이유에서 행했던지 그건 비판 받아야 할 일입니다.


그 글을 읽고 한국에서도 불의의 큰 권력에 맞서 싸우는 우리의 언론인들이 생각났습니다.

남의 일 갖지가 않았습니다.


그래서 제가 할 수 있는 최소한의 도움을 주고 싶었습니다.

이 백주대낮의 언론인 테러를 규탄한다는 온라인 서명이 있어서 거기 가서 투표(사인)을 했습니다.



여러 인도인 중에 한명의 한국인이 있지만 이 문제는 인도의 문제, 아루나찰 프라데시만의 문제가 아닌 정의의 문제라고 생각합니다.

저는 일부러 이런 일들을 찾아다니면서 세계의 정의를 위해 뛸 열정도 없고 그럴 의지도 없는 사람입니다.

어떤 인연이 작용해서 저에게 이런 소식이 들렸고 제가 동참할 수 있는 방법이 주어졌기에 그냥 한 겁니다.


그리고 여러분도 마음이 이끌리시면 같이 참여해 주세요.



여기로 가시면 온라인 서명을 받는 곳이 나옵니다.


저기 First Time Here 밑에 이름과 이메일과 나라와 우편번호를 넣으신 후 SIGN 버튼을 누르시면 됩니다.

실력은 안 되지만 저 위에 써 있는 문구를 해석해 봤습니다.


To bring justice to Miss Tongam Rina who was shot by an unidentified person near her office premise in broad day light on 15th July 2012.And to pressurize the Govt. of Arunachal to nab the culprit at earliest and to constitute the SIT(Special Investigation Team) or to Hand over the case to C.B.I for fast and fair investigation. Rina deserve Justice and we deserve to know the truth behind such heinous crime .

2012년 7월 15일 백주 대낮에 사무실 근처에서 신원불명의 사람에게 저격을 당한 Tongal Rina 에 대한 정의를 가져오기 위해. 그리고 아루나찰 주정부에게 특별수사본부를 구성하고 범인을 하루속히 잡도록 촉구하기 위해. 아니면 빨리 C.B.I 에게 이 사건을 인계해서 공정한 수사가 이루어지도록 하기위해 이 서명을 합니다. 우리는 이러한 극악무도한 범행 뒤에 있는 진실을 알 권리가 있습니다.


우리가 지난 4년간 경험했듯이 암만 민주주의를 얻었어도 이를 지켜보고 있지 않으면 잠시 한눈을 팔면 누군가가 이 민주주의를 이렇게 쉽게 짓밟게 됩니다.


그리고 이 민주주의는 그리고 정의는 거게에 속한 사람들만의 문제가 아닙니다.

우리가 관심을 가져주지 않으면 옆에 있는 정의는 죽을 것입니다.

그러면 우리에게도 그 정의는 오지 않을겁니다.


제 친구의 페북에 있는 글을 하나 전해 드릴께요.


Why this is important


For the past few years the Media House in Arunachal Pradesh has been under attack from miscreants. Every time the State Govt. used to give an assurance to nab the culprit and book under the law but still nothing concrete has been done by Govt. in this regards, this lack side attitude of Govt. encourage the unknown miscreant to shot Miss Tongam Rina an associate editor with local media house "Arunachal Times" on fateful day of 15th July 2012 near her office premise in broad day light. The reason behind attack is unknown and the truth will resurface only when the culprit gets arrest. The moot question is When Govt. fails to ensure the security of media persons and media house in spite of several attacks and threat calls from miscreants. It's make us wonder are we really safe in such environment? shall we raise our voice now or shall we wait for another blood shed to happen.Enough is Enough!! I cant remain silent anymore, are you going to remain silent? Today its Tongam Rina tomorrow it might be you. In past we were silent it doesn't mean we are dumb.let's make our voice to heard,lets make Govt. feel our sentiment, lets act today for better tomorrow. Justice to Rina is justice to us!!!!!!!!!!!!!!

왜 이것이 중요할까요

지난 수년간 아루나찰 프라데시에 있는 미디어 하우스는 나쁜놈들한테 공격당해 왔습니다. 주정부는 매번 범인을 붙잡겠다고 하지만 실제로 아무 일도 하지 않고 있습니다. 주정부가 이렇게 방치하는 바람에 이 범인은 Arunachal Times 라는 지역 언론사의 부주필인 Tongam Rina 를 2012년 7월 15일 백주대낮에 그녀의 사무실 근처에서 등 뒤에서 저격하는데에까지 이르렀습니다. 등 뒤에서 왜 공격했는지는 아직 알려지지 않았습니다. 진실은 그 범인을 잡은 이후에나 알 수 있을 겁니다. 주정부에 묻고 싶은것은 범인이 수차례 협박 전화를 걸었고 여러번 이 언론사와 그 안의 언론인들을 공격했음에도 불구하고 어떻게 이 언론인과 언론사에 대한 보안을 유지하지 못했느냐는 겁니다. 우리는 진정 안전한 곳에 사는지에 대해 의문을 가질 수 밖에 없습니다. 우리는 지금 목소리를 높여야 할까요 아니면 다른 희생이 나오도록 침묵을 지켜야 할까요. 이제 충분합니다. 이제 저는 더 이상 침묵을 지킬 수가 없습니다. 여러분은 침묵의 편에 서시겠습니까? 오늘은 Tongam Rina 이지만 내일은 바로 당신 일 수 있습니다. 지금까지 우리는 침묵을 지켜왔지만 벙어리는 아닙니다. 저들에게 들리도록 우리의 목소리를 냅시다. 주정부에게 우리의 주장을 확실히 알립니다. 좀 더 나은 내일을 위하여 오늘 행동에 나섭시다. Rina에 대한 정의는 곧 우리에게 올 정의 입니다. !!!!!!!!!


다시 한번 링크를 걸겠습니다. 동참하고 싶으시면 여기로 가셔서 온라인 서명을 해 주시면 됩니다. (밑에 페북 트위터 count도 올려 주세요.)

반응형

JQuery Mobile - Toolbar types

2012. 7. 21. 01:58 | Posted by 솔웅


반응형


이제 jQuery Mobile Tutorial 의 Component 부분 Page & dialog 를 끝마치고 두번째 주제인 Toolbars 로 들어갑니다.


생각보다 시간이 많이 걸리네요. 어쨌든 조금씩 조금씩 공부해 나가다 보면 조만근 끝까지 돌파 하겠죠?

오늘은 Toolbars 의 첫 시간입니다.



Toolbar types


jQuery Mobile에는 두가지 표준 툴바 종류가 있습니다. : Headers and Footers.

  • Header bar는 페이지 title로 사용됩니다. 대부분의 경우 각 mobile page내의 첫번째 엘리먼트가 되죠. 특히 페이지 title이 포함되고 또 두 개의 버튼까지 포함할 수 있습니다.
  • Footer bar는 대개 각 모바일 페이지의 마지막 element 입니다. 그리고 그 내용과 기능면에서 header 보다 더 자유로운 경향이 있죠. 여기에는 text와 버튼들의 조합이 들어가게 됩니다.


header나 footer 안에는 대개 horizontal navigation이나 tab bar 가 들어가는 것이 일반적입니다. jQuery Mobile에는 이런 경우 hirizontal button bar 안에 들어가는 링크들의 리스트 보여줄 수 있는 navbar widget 를 제공하고 있습니다.

이 툴바들에 추가 할 수 있는 attribute들을 모두 보려면 data- attribute reference를 참조하세요.



Toolbar positioning options


header와 footer들은 여러 방법으로 페이지에 위치 지워질 수 있습니다. 디폴트로 툴바들은 inline 포지셔닝 모드를 사용합니다. 이 모드에서는 헤더와 푸터들이 일반적인 문서 flow(default HTML behavior)에 맞게 자리 잡습니다. 이 경우는 JavaScript와 CSS 포지셔닝 지원 여부에 관계 없이 모든 device들에서 작동을 합니다. (visible)


"fixed" positioning mode 는 툴바들을 CSS fixed positioning 을 지원하는 브라우저의 viewport 안에 있는 top 이나 bottom에 툴바들을 위치시킵니다. CSS fixed positioning은 대부분의 데스크탑 브라우저와 iOS5+, 안드로이드 2.2+, 블랙베리 6 등에서 지원합니다. 이 기능을 지원하지 않는 브라우저들에서는 이 툴바들은 페이지내의 inline position으로 지정이 될 겁니다.


tap-togglingl이 가능하면 스크린을 tapping 하면 fixed toolbar의 visibility가 toggle 될 겁니다. 툴바가 보이지 않을 때 페이지를 tap하면 보이게 될 겁니다. 다시한번 tap 하면 사라지구요. 이 기능은 유저에게 필요하기 전에는 툴바를 보이지 않음으로서 컨텐츠가 좀 더 넓은 화면에서 표시될 수 있게 해 줍니다. 기억해 두셔야 될 것은 fixed toolbar는 실제로는 hide 된게 아니라는 겁니다. fixed와 static positioning 사이에서 왔다 갔다 하는 겁니다. 이 의미는 만약 여러분이 페이지 top 에 있다면 그 헤더 툴바를 안 보이도록 tap-toggle 할 수 없다는겁니다. 문서의 아주 밑으로 scroll 됐을 경우 fixed footer에도 이러한 경우는 마찬가지로 적용됩니다.


이 기능을 헤더와 풋터에 세팅하려면 data-position="fixed" attribute를 헤더나 풋터 element에 추가하세요.


"fullscreen" position mode는  fixed mode가 아닐 때 문서의 한 지점을 점유툴바가 페이지 콘텐츠를 덮는것을 제외하고는 fixed mode와 같습니다. 이 기능은 컨텐츠가 전체 스크린을 차지하고 툴바는 숨고 스크린을 탭 했을 때만 나타나도록 하는 포토나 비디오 뷰어 같은 immersive app일 경우에 아주 유용할 겁니다. 이 경우의 툴바들은 페이지 콘텐츠의 위에 자리잡을 것입니다. 그러니까 특정 상황에서 유용하게 사용될 수 있고 어떤 상황에서는 그렇지 않을 수도 있습니다.



반응형

'jQuery Mobile > JQM Tutorial' 카테고리의 다른 글

JQuery Mobile - Fixed toolbar options  (0) 2012.07.29
Fixed toolbars  (0) 2012.07.28
JQuery Mobile - Navbar  (2) 2012.07.25
JQuery Mobile - Footers  (0) 2012.07.24
JQuery Mobile - Header structure  (0) 2012.07.23
JQuery Mobile - Theming Page  (0) 2012.07.12
JQuery Mobile - touchOverflow 기능  (0) 2012.07.09
JQuery Mobile - PhoneGap apps  (1) 2012.07.09
JQuery Mobile - Scripting pages  (1) 2012.07.05
JQuery Mobile - Dynamically Injecting Pages  (0) 2012.06.28


반응형
Posted on . Written by


요즘 점점 관심을 모으고 있는 것 중에 "놓고 간 곳에서 pick up" 하는 기능이나 멈추고 다시 시작하는 과정에서 매끄럽게 동작이 이뤄지는 것이 있습니다. 점점 앱이 이전에 stop 했던 곳에서 다시 시작하는 기능이 많아 졌습니다.

유저가 마지막에 있었던 곳에서 다시 앱을 시작하도록 하는것은 state saving 로 불리기도 하고 이 주제가 오늘 제가 다룰 주제입니다. 이곳에 포스트된 튜토리얼들은 여러분이 앱을 개발하면서 필요로 하는 부분에 대해 어떻게 해야 하는지를 알려주는 튜토리얼이 되도록 구성하고 있습니다.





Resuming Suspended Apps


디폴트로 앱이 suspended 됐을 때 (예를 들어 유저가 폰의 홈버튼을 눌렀을 때 등) 여러분 앱은 실제로 중지된것이 아닙니다. 그 앱은 suspended state로 됩니다. 그리고 유저가 간 곳에서 떠날 때 (left off) 그 앱은 다시 실행됩니다. 이렇게 suspended 상태에서 앱이 끝나는 경우는 너무 많은 앱을 띄워서 메모리가 부족할 때 device의 operating system이 suspended 상태의 앱을 quit 시킬 때 입니다.

이런 default로 설정된 상황을 바꾸려면 iOS 앱의 경우는 build.settings에서 UIApplicationExitsOnSuspend 를 true로 놓으면 됩니다. 디폴트는 fault 인데요. 그 의미는 이 앱이 left off 상황일 때 자동적으로 재시작 되도록 한다는 의미입니다. (OS가 이 앱을 quit 하는 경우는 해당이 안 되겠죠.)


iphone = {
  plist = {
    UIApplicationExitsOnSuspend = true
  }
}


대부분 유저는 본인의 의지로 앱을 떠납니다. 하지만 가끔 그렇지 않을 때도 있습니다. (전화가 걸려 온다던지 하는 경우) 그래서 그런 경우 user's experience를 깨지 않도록 재시작(resume) 상황에서 뭔가를 작동하도록 만드는 것은 개발자의 판단에 달려있습니다. 이 상황에 딱 맞는 예는 게임하는 상황입니다.
예를 들어 두들 점프 (Doodle Jump)를 하고 있는 중간에 앱을 닫았고 나중에 다시 돌아올 때 이 게임을 pause screen으로 할 수 있습니다. 만약 전화통화가 끝났는데 바로 character가 점프 해 있는 상황이 된다면 그 판은 여러분의 high score를 깨기 힘든 상황이 될 겁니다. pause screen으로 재시작하는 것은 user-experience 관점에서 훨씬 좋은 흐름일 것입니다.

다행히도 코로나 (Corona)는 여러분의 앱이 suspend 됐거나 resume 될 때 system events를 사용할 수 있도록 합니다. 아래에 앱이 suspend 됐을 때 어떻게 게임을 pause 시키는지를 보여주는 예제가 있습니다.


local function onSystemEvent( event )
    if (event.type == "applicationSuspend") then
        pause_game()
    end
end
Runtime:addEventListener( "system", onSystemEvent )


pause_game() 함수가 무슨일을 하는지는 여러분이 구현하기 나름이지만 대략 어떤 일을 해야 될지는 알겠죠? 일단 global Runtime객체에 리스너를 추가했습니다. 그리고 이 이벤트가 call 됐을 때 실행 될 특정 함수를 지정했습니다.

그 함수안에서는 event.type 이 "applicationSuspend" 인 것을 체크해서 그럴 경우 실행할 함수를 명시했습니다.


Resuming from a “cold” start


지금 다룰 시나리오는 조금 어렵습니다. 여러분 앱이 cold로 시작 됐을 때 (예를 들어 suspended가 아니라 closed나 quit 상태에서 시작됐을 때) 디폴트 behavior는 처음 (main.lua) 부터 새로 시작하는 것일 겁니다.

첫번째로 하셔야 될 일은 현재 상태를 save 하셔야 되는 겁니다. 어떤 방법으로 저장할지는 여러분 마음이지만 table 형태로 데이터를 저장하고 이것을 JSON 스트링으로 converting 하고 file로 저장한 다음에 나중에 로드하시기를 권고 드립니다. (이런 경우 코로나에서 file 읽고 쓰기 부분을 참조하세요.)

다음으로 파일을 파일을 로드하고 앱에게 시작됐을 때 이 데이터를 근거로 어떤 일을 하라고 알려 주어야 합니다. 이럴 경우 suspended 상태이건 cold 상태이건 앱이 새로 시작할 때 이전 상황과 이어지는 상황에서 앱을 다시 시작할 수 있을 겁니다.

데이터를 저장하는 시기는 조금 전에 셋업한 시스템 이벤트 리스너에서 event.type이 applicationExit 일 경우를 체크해서 수행하시면 도비니다. 그리고 나서 event.type이 applicationOpen일 경우 저장해 뒀던 데이터를 로드하고 그것을 근거로 어떤 일들을 수행하면 됩니다.


local function onSystemEvent( event )
    if (event.type == "applicationExit") then

        save_state()    

    elseif (event.type == "applicationOpen") then

        load_saved_state()

    elseif (event.type == "applicationSuspend") then

        pause_game()

    end
end
Runtime:addEventListener( "system", onSystemEvent )


예제를 보니 그렇게 복잡해 보이지 않죠?

save_state()나 load_saved_state() 함수와 관련해서는 더이상 자세한 내용을 언급하지는 않겠ㅅ브니다. 왜냐하면 이것은 앱마다 다 다를 테니까요. 적어도 특히 게임에서는 객체들이 화면상에 있는 정보인 프로퍼티들과 위치들 같은 데이터들을 저장해야 할 겁니다. (그래야지 load_saved_state() 함수에서 그 객체들을 이전에 있던 위치에 display 할 수 있으니까요.)

유저들은 마음대로 그 앱을 열었다 닫았다 할 겁니다. 그리고 그러한 상황에서 유저들에게 자연스러운 앱의 진행상황을 제공하려면 여러분은 그 앱이 suspended나 cold state에서 다시 재시작할 때 유저들이 아무런 끊김없는 혹은 뭔가 당황스러운 상황이 없는 화면 전개를 보여주는데 신경을 쓰셔야 될겁니다.

반응형