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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형

테이블 안에서 데이터를 관리하는 것은 주로 jQuery 의 메소드를 사용해서 구현합니다.  jQuery Mobile에 의해 controlgroup () method 가 추가되서 테이블의 다양한 component들에 visual group 을 제공하게 됩니다.


Dynamically create a table

이제 window에 dynamic 하게 table을 생성하려고 합니다. 이 테이블은 두개의 row와 세개의 column을 가지게 될 겁니다. 이것을 구현하기 위해 ui-grid-b class 가 있는 <div> element 를 생성합니다. 그리고 그 <div> 안에 ui-block-a, ui-block-b and ui-block-c CSS classes를 가지고 있는  <div> elements 들을 넣습니다.


Dynamic creation of table (2 rows and 3 columns)


<!DOCTYPE html>

<html> 

<head> 

  <meta name=viewport content="user-scalable=no,width=device-width" />

  <link rel=stylesheet href=jquery.mobile/jquery.mobile.css />

  <script src=jquery.js></script>

  <script src=jquery.mobile/jquery.mobile.js></script>

</head> 


<body> 


<div data-role=page id=home>

  <div data-role=header>

    <h1>Home</h1>

  </div>


  <div data-role=content>

    <p> Window content </p>  

  </div>

</div>


</body>

</html>


<script>


var html = "";

html += "<div class=ui-grid-b>";

html +=   "<div class=ui-block-a>Element 1.1</div>";

html +=   "<div class=ui-block-b>Element 1.2</div>";

html +=   "<div class=ui-block-c>Element 1.3</div>";

html +=   "<div class=ui-block-a>Element 2.1</div>";

html +=   "<div class=ui-block-b>Element 2.2</div>";

html +=   "<div class=ui-block-c>Element 2.3</div>";

html += "</div>";

$("#home div:jqmData(role=content)").append (html);


</script>


tistory440_01.html





반응형


반응형
Posted on . Written by


수요일 다시 FAQ 시간 입니다. 오늘은 Lua 와 관련해서 자주 들어오는 질문을 모아봤습니다. basic Lua language 프로그래밍에서 루아 언어만의 특징도 다뤘습니다.


1. Do I need to end Corona code lines with “;”?


아래와 같은 Corona(Lua) 코드를 보셨을 겁니다.


local myRect = display.newRect( 0, 0, 100, 50 );


또 아래와 같은 코드도 보셨을 겁니다.


local myRect = display.newRect( 0, 0, 100, 50 )


두 코드가 다른 것은 맨 마지막에 semicolon (“;”) character가 있느냐 없느냐죠. 많은 languages(JavaScript, C++, ObjectiveC, etc.) 라인의 끝을 가리키는 표시로 semicolon을 요구합니다. 하지만 Lua 는 굳이 semicolon을 넣지 않아도 스스로 알아서 라인의 끝을 인식합니다. 또한 맨 마지막에 semicolon 을 넣어도 상관은 없습니다. 단지 반드시 넣어야 되는 것은 아닙니다.


가끔 한 줄에 여러 statement를 넣을 때가 있죠.


a = 100; b = 200


Lua 에서는 아래 코드도 틀린 구문이 아닙니다.


a = 100 b = 200


2. Can Lua functions return multiple values?


이 기능은 Lua 만의 기능입니다. 바로 함수에서 여러 return 값을 반환할 수 있다는 거죠.

아래 예제를 보세요.


local function testConnection()
    if not noConnection then
        return false, "Connection Failed!"
    else
        return true
    end
end

local result, reason = testConnection()
print( result, reason )


connection이 fail 되면 false를 return 하고 동시에 string 도 return 할 수 있습니다. connection 이 제대로 작동하면 true 만 return 합니다. (reason 의 값은 nil 이 될 겁니다.)


3. Can you assign multiple values to multiple variables?


또한 Lua 에만 있는 편리한 기능이 한번에 여러 변수에 여러 값들을 대입하는 겁니다.


local red, green, blue = 100, 255, 128


이것은 아래 코드와 같습니다.


red = 100
green = 255
blue = 128


둘 중 어느 방법을 사용할 지는 여러분의 선택에 달렸습니다. 둘 다 맞는 거니까요.


4. Are parentheses needed in “if” statements?


몇 몇 language 들에서는 conditional statement 에 parentheses({}) 를 사용해야 합니다.


-- C code
if ( a > b) {
     ...
}


Lua 에서는 optional 입니다. 단지 then 과 end 를 사용해야합니다.


-- Lua code
if a > b then
    ...
end 


5. How do I add Block Comments to my code?


Block 주석은 코드에 어떤 설명을 넣거나 개발을 할 때 유용하게 사용할 수 있습니다.

아래 예제가 있습니다.


--[[
local function testConnection()
 if not noConnection then
 return false, "Connection Failed!"
 else
 return true
 end
end
--]]


이 주석은 “––[[“로 시작해서 ”––]]”로 끝났습니다. 루아에서는 이 주석을 해제하는 간단한 방법을 제공합니다. 주석 시작부분에 - 를 한번 더 넣으면 주석이 해제 되는 겁니다.


---[[
local function testConnection()
 if not noConnection then
 return false, "Connection Failed!"
 else
 return true
 end
end
--]]


위의 코드는 실행 될 겁니다. 왜냐하면 “–––[[“ (three dashes instead of two)를 사용했기 때문이죠.


여기까지가 오늘의 FAQ 였습니다.


감사합니다.


반응형


반응형
Posted on . Written by


Improved Android audio


우리 엔지니어들한테 물어보면 디바이스의 오디오 관련해서 아무런 문제 없이 다루는 것이 어렵다고 말합니다. 애플조차도 그렇게 하지는 못합니다. 다만 다른 것들 보다 문제가 덜 생기도록 만들죠.

daily build 942에서부터 우리의 오디오 backend로 Android 2.3+ 디바이스에 있는 OpenSL-ES 를 사용하기 시작했습니다. 이 back-end 는 뭐하는 걸까요?







처음 듣는 분들을 위해 말씀 드리자면 오디오가 작동되지 않는 디바이스(e.g. the Vizio, one of the Samsung SII models, etc)의 고질적인 문제 점들을 수정했다는 얘기입니다. 또한 아주 미묘한 performance 개선 사항들이 있습니다. 예를 들어 동시에 여러 sound를 play 할 경우 hisses and pops 같은 것들이 찌그러지는 경우가 있는데 이런 부분들이 살짝 개선됐습니다.


만약 안드로이드의 ‘EggBreaker’ sample 을 play 하면 객체가 튕기는 시점에 튕기는 소리가 나지 않는 것을 느끼실 수 있을 겁니다. 이것은 longstanding latency 문제 때문인데요. 안드로이드 초창기부터 있어 왔던 겁니다. 즉 안드로이드 OS와 관련한 이슈중 하나죠. 최근 이 부분이 아주 살짝 개선되기는 했습니다. 이번 개선사항 중 가장 중요한 것은 안드로이드의 Core OS change 로 부터 온 것 입니다. Android 4.1 인 JellyBean 부터 적용됐습니다.



New Widgets!


저희들은 widget framework 을 좀 더 개선하고 cleaning up 하기 위해 많은 노력을 기울였습니다. initial framework을 생성했을 때 오리지널 코드를 상하기 쉽도록 하는 많은 것들(brittle, fragile, and just unmaintainable)을 접합니다.

widget framework 에 대해 개선하고 싶은 부분들이 아주 많이 있지만 간단하지 않은 부분들 또한 많이 있습니다. 저희들이 하기로 한 부분은 각 widget들의 어떻게 해야 제대로 작동하는 것인지에 대해 rethink 해 보기로 했습니다.





기존 widget에 rewrite 하는 부분은 위험도가 있습니다. 저희들은 새로운 widget을 먼저 만들고 이 부분이 확실하게 동작하면 이 새로운 widget들을 이전의 widget들과 바꿀 겁니다.


Daily build 942 에는 새로운 몇개의 widget들이 선보입니다.


  • On/Off Switch. 3가지 형태로 나옵니다.: an actual on/off switch, a checkbox, and a single radio button.
  • Spinner. The canonical use-case is lots of photos being download asynchronously. Note if you make a blocking API call (e.g. a luasocket call), this will not animate. For that case, you should use native.setActivityIndicator().
  • Stepper. You tap ‘+’ or ‘-’ and the values go up and down within a predefined range.
  • Progress view. A bar that goes from 0% to 100% filled.


좀 더 많은 정보들은 API docs 의 daily build 942 snapshot 부분에서 보실 수 있게 될 겁니다. 또한 이번 빌드에서 업데이트된 WidgetDemo sample app 을 제공해 드릴 겁니다. 


다음에 저희들이 작업할 widget들은 segmented controls 와 search fields 입니다.


A Teaser


Finally, I’m going to talk about something that I’m not really going to talk about — yet. What I mean is, this topic deserves a post of its own, so we’re saving that for next week. What am I talking about?

마지막으로 지금 얘기할 것은 이번 글에서 다루지는 않을 겁니다. 무슨 얘기냐 하면 이 이슈는 따로 글로 작성해서 보여드릴 거라는 겁니다. 다음주에 이와 관련해서 말씀 드리겠습니다. 


단지 daily build 942 에서 이와 관련된 기능을 살짝 맛 보실 수 있습니다.


Android: Added local/scheduled notification support.


이와 관련해서 아주 많은 부분들의 작업이 있었습니다. 코로나 같은 cross-platform development framework을 사용하는 잇점을 제대로 느끼실 수 있을 겁니다.



notification은 platform 마다 완전히 다릅니다. 코로나는 이 완전히 다른 사용법을 한가지 방법만 취하면 구현 가능하도록 간단하게 여러분께 길을 제공해 드릴 겁니다.


저희들은 여러분들이 해야할 일들을 줄이기 위해서 여러 복잡하고 어려운 부분을 줄이는 여러 큰 일들을 꾸준히 진행하고 있습니다.


감사합니다.






반응형