SUNNY v2: 뽀모도로 시간관리 방식 지원

HEADER-720x320-Shadow

* For English User: http://andrwj.com/blog/?page_id=1049

 

* Latest Version: v2.9 (Sep. 22 2014)

* Public Link:  https://apps.getpebble.com/applications/540df8c1bdd7344eae0001ab

* Deep Link: pebble://appstore/540df8c1bdd7344eae0001ab

* Pebble Firmware 2.1+ 이상만 지원합니다.

 

v2.9 (2014년 9월 22일)

12-v2.9* 초침 보이기 토글옵션 추가

* 날짜/요일 표시 토글 옵션 추가

* 12/24H 숫자표시 토글옵션 추가

* 한글요일표시 삭제됨 (메모리부족때문)

* 진동 종류 추가 (triple long)

* 알람 마크 변경

* Pomodoro 설정값 저장되지 않던 문제 해결

* Pomodoro count, Short/Long break 표시

* 시간표시위치 보정

* 잠든 상태에서 전원연결되면 충전 상태를 표시하지 않던 문제 해결

 

v2.8  (2014년 9월 19일)

* 완전한 Pomodoro 시간관리 방식 지원

* 24시간 스타일 삭제됨 (Memory Limit of Pebble Application; ~25K)

* 불필요한 메뉴 삭제됨.

* <sing-down-click>으로 진동패턴을 변경할때 메세지 박스가 제대로 표시되지 않던 문제 해결

* 잠든 시간이 24시간을 넘어갈 경우 메세지 표시 변경

* 시계침 회전후 잠든 시간 표시 변경

* <long-up-click>: 색상 변경 ==> Pomodoro Mode

* Pomodoro  Mode에서는 배터리 충전진행 메세지를 표시하지 않도록 변경

* SUNNY v2에서 지원하는 Pomodoro 흐름:

SUNNY-v2-pomodoro-flow

Pomodoro 설정 및 버튼 사용법

Item
Option values
Default/Unit
1 Pomodoro15, 20, 25, 30, 35, 40, 45, 5025/minute
Short Break3, 5, 7, 105/minute
Long Break10, 15, 20, 25, 3015/minute
Long break after pomodoros2, 3, 4, 5, 6, 7, 84/time
Internal Interruption Limit15, 30, 45, 6030/minute
External Interruption Limit30, 45, 60, 90, 12060/minute
A cycle of pomodoros2, 3, 4, 5, 6, 7, 84/time

 

 
Button Click
Previous state
Enter Pomodoro ModeLong-UpNormal Mode
Leave Pomodoro ModeBackBefore starting pomodoro
While Breaking
Start a New PomodoroSelectPomodoro Mode
Internal InterruptionDownin Pomodoro
External InterruptionUpin Pomodoro
Cancel PomodoroLong-Selectin Pomodoro
Skip Break and start new Pomodoro immediatelySelectin Break
Skip Break and Cancel PomodoroBackin Break

v2.5

 

v2에서는 몇가지 모드(mode)가 있고 각각의 모드에서 버튼의 기능이 다르게 설정되어 있다. 프로그램이 기동된뒤 기본적인 상태를 기본모드(Normal mode)라고 하자.

 

sleeping mode 기본모드에서 <long-select-button>을 누르면 잠자기 모드(Sleeping mode)로 전환된다.

v2 에서 가장 재미난 기능중 하나인데,  밤에 잘때 Pebble을 켜두기 싫거나, (그러필요없지만), 배터리 소모를 줄이고 싶을 경우 등에 사용하면 좋을 것이다.  잠자는 상태에서 현재 시간을 알고 싶다면 <single-back-button>을 누르자.   꺠어나진 않고 잠꼬대로 현재 시간으로 화면이 갱신될 것이다 ㅋ

왼쪽 화면에서,  12시 위치에 있는   9   는 오늘 날짜를 표시하며, 6시 위치에는 요일을 표시한다.  한글과 영어 두가지 방식으로 표시할 수 있고 메뉴에서 바꿀 수 있다. (한글폰트패치된 firmware 2.0.2에서는 제대로 출력안됨)

 

 

잠자기 모드에서 빠져나오는 방법은 <single-select-button>을 누른다.  깨어나면 잠들기 직전 시간에서 현재 시간까지 바늘이 돌아갈 것이다.

 

재미삼아 구현해본 것이라 딱히 뭐가 좋다.. 는 내용은 없다 ;-)   이 기능이 유용한 곳에 쓰인다면 내게 알려주면 고맙겠다.  24H 시계스타일에서도 마찬가지로 동작한다.

 

 

 

 

03-12h-visual-mark

Pebble이 가장 유용할 때는 뭐니해도 알람을 알려줄 때 일 것이다. 나는 Pomodoro 시간관리 기법을 애용하기 때문에 특히나 이 기능이 필요했다. 핸드폰이나 맥으로도 Pomodoro 시간을 측정할 수는 있으나 손목만큼의 접근성은 따라올 수 없지않는가.  그런데 대부분의 Pebble 어플은 시계와 알람기능이 따로 따로 구현되어 있어서 이리저리 왔다갔다 해야했다.   알람 설정과 진동방식을 손쉽게 바꾸도록 기능을 추가해보았다.

 

기본모드에서 <single-select-button>을 누르면 우측 하단에 현재 시간기준으로 앞으로 몇분 뒤에 알람이 울릴 것인가를 설정할 수 있다.  화면에 보이는 초침은 초침 기능으로 사용되는 것이 아니라 다음번 알람이 울릴 위치를 가리키고 있는 것이다.  알람이 울리면 이 위치는 즉시 다음번 알람 위치를 가리킨다.  <UP>, <DOWN> 버튼을 눌러서 앞뒤로 움직일 수 있으나 현재 시간 뒤로는 설정할 수 없다.  또한, 일단 설정되면 반복된다!   이 반복또한 쉽게 조절 할 수 있다.  취소는 <single-back-button> 이며,  변경한 값을 적용하려면 <single-select-button>을 누른다.   알람의  설정은 24시간을 넘지 않게 해두었다.

 

 

00-alarm-notify알람 타입은 모두 4가지 이고 기본모드에서 <single-down-buton>을 누를때마다 변경된다.

  • NONE  (진동알람이 꺼진다)
  • Tick
  • Short
  • Long
  • Double

 

 

00-charging

케이블이 연결되어 충전을 시작하면 잠자기 모드로 변경되면서 충전중 메세지가 깜빡거린다.  Pebble Steel의 경우에는 녹색불이 들어오더라도 100% 상태가 아닐때가 있어 추가한 기능이다.

 

완충되더라도 깜빡임이 꺼지나가 깨어나진 않는다. 케이블 연결이 끊어지면 깨어나서 시계침을 감기 시작할 것이다.  케이블이 연결된 상태에서 프로그램이 시작될 경우,  페블 API의 구조때문에 메세지가 바로 나오진 않는다.  조금 기다리거나 케이블을 떨어뜨렸다 다시 붙여주면 될 것이다.  충전된 상태인경우 메세지는 뜨지 않는다.

 

 

00-winding

두번째 재미난 기능은 베젤감는듯한 와인딩 효과다. 수동시계에 달린 베젤이 그리워서 추가한 기능인데, 특정 시점에서 베젤 돌리듯 해두면 어느정도의 시간이 걸린지 눈으로 바로 확인이 되므로 나름 꽤 유용하다.  기본모드에서 <long-down-button>을 누르면 베젤이 돌아가듯 숫자들이 현재 시침위치로 돌아갈 것이다.  1~12 로 표시되던 숫자는 5~60 으로 바뀌게되고 60이 현재 시침이 가리키는 위치로 온다.  날짜와 요일 표시는 사라진다.   해제하고 싶을 경우 다시 <long-down-button>을 누르면 기존 12시 위치로 베젤 돌아가는 효과를 보이면서 날짜와 요일이 나타날 것이다. 24H 스타일에서는  와인딩이 없으며 와인딩된 상태에서도 알람맞추는 기능은 동작한다.

 

 

00-mask

구현하는데 가장 시간이 많이 걸린 마스킹 기능인데 다이버 시계에 있는 15분 표시와 비슷하다. 와인딩후에 표시되며  알람간격에 따라 크기가 달라진다.  최대 50분, 최소 15분 사이내에는 알람 간격을 따라간다.   알람 간격내에 시간이 얼마나 경과했으며 남았는지 쉽게 알수있다.

 

이 기능을 구현하려고 삽을 든거나 마찬가지라서 애착이 크다 ;;;

 

(별거아니긴한데 Pebble API가 제공하는 환경에선 삽질좀 필요했다 -__-)

 

 

05-24h-inversed

24시간 스타일로 변경하는 방법은 기본모드에서 <single-up-button>을 눌러 바꿀 수 있으며, 누를 때마다 12H <–> 24H 사이를 오갈 것이다.  색상변경은 기본모드에서 <long-up-button>에 할당되어 있다.  시계스타일을 변경해도 색상변경은 유지되며 어플리케이션을 종료한뒤 다시 시작해도 유지된다.

 

99%의 기능이 모두 메뉴에서도 지원된다. 그러나 일부 메뉴에 없는 것도 있다. 메뉴를 열기위해선 기본모드에서 <single-back-button>을 누르자.

 

 

08-menu0 09-menu110-menu2메뉴의 대부분은 토글방식이다.  프로그램을 종료하려면 메뉴의 첫번째 <QUIT>를 선태하면 되겠다.

 

 

[Emscripten] 2014 1월 ~ 8월 변경사항 요약

* 2014년 1월 부터 8월 7일까지의 변경사항중 추가되거나 구현된 것만 추렸다 1

* Emscirpten Document Site 2http://kripken.github.io/emscripten-site/

* Firefox Nightly 버전 7에서 asm.js 프로파일링 지원 3

* Emscripten WebGL vs. Native OpenGL 벤치마크 4  (사파리에서는 간헐적으로 끊김, 파폭과 크롬은 큰 차이 없음)

현재 버전: v1.22.1:  2014년 8월 7일

  1. Added support for prefixing functions with ‘$’ in JS libraries, in order to cause them not be prefixed with ‘_’ when compiling.
  2. Added support for WebIDL binder to work with Closure (#2620)
  3. Added no-op SDL IMG_Quit() and TTF_Quit() symbols.
  4. Implemented emscripten_wget in ASYNCIFY mode.
  5. Implemented new HTML5 API for direct WebGL context creation, emscripten_webgl_*().
  6. Added new link option -s EMCC_ONLY_FORCED_STDLIBS which can be used to restrict to only linking to the chosen set of Emscripten-provided libraries. (See also -s EMCC_FORCE_STDLIBS)
  7. Added first implementation for the ASYNCIFY option, which splits up synchronous blocking loops to asynchronous execution. For more information on this approach, see https://github.com/kripken/emscripten/wiki/Asyncify
  8. Implemented a new function emscripten_force_exit() which immediately shuts down the C runtime.
  9. Implemented the getsockopt() function.
  10. Added new event callback functions emscripten_set_socket_xx_callback() that allow listening to WebSocket events in an asynchronous manner.
  11. Added new compiler defines __EMSCRIPTEN_major__, __EMSCRIPTEN_minor__ and __EMSCRIPTEN_tiny__ which communicate the compiler version major.minor.tiny to compiled applications (#2343)
  12. Implemented strsignal() function (#2532)
  13. Added implementations for SDL function SDL_AudioQuit and SDL_VideoQuit.
  14. Use multithreaded compilation to build libc.
  15. The memory initializer file (.mem.js) is now emitted by default when compiling with at least -O2 optimization level.
  16. Added support for the ffs libc function.
  17. Enable memory init files (.mem) by default in optimized builds (-O2+), as if –memory-init-file 1 is specified. This makes the default behavior on optimized builds emit smaller and faster-to-load code, but does require that you ship both a .js and a .mem file (if you prefer not to, can use –memory-init-file 1 ).
  18. Implemented new SDL 1.2 functions SDL_GetRGB, SDL_GetRGBA and SDL_putenv.
  19. Added support for /dev/random, /dev/urandom and C++11 std::random_device, which will use cryptographically secure random api if available. (#2447)
  20. Added support for std::unique_ptr in embind.
  21. Added support for C++11 std::thread::hardware_concurrency which backs to navigator.hardwareConcurrency. See http://wiki.whatwg.org/wiki/Navigator_HW_Concurrency (#2456)
  22. Added new linker flag -s NO_DYNAMIC_EXECUTION=1 which removes the use of eval() and new Function() in the generated output. For more information, see “Eval and related functions are disabled” in https://developer.chrome.com/extensions/contentSecurityPolicy .
  23. Added new support for SDL_Mix backend to use WebAudio to play back audio clips.
  24. Added a new HTML5 api function emscripten_is_webgl_context_lost() which allows polling for context loss in addition to receiving events.
  25. Added new typeof() function to emscripten::val.
  26. Enable support for low-level C<->JS interop to marshall 64 bit integers from C to JS.
  27. Added support for registering callbacks hook to VFS file open, write, move, close and delete.
  28. By default, the C runtime will no longer exit after returning from main() when safeSetTimeout() or safeSetInterval() is used.
  29. Added an initial implementation of a new tool ‘ffdb’ which can be used to operate a Firefox OS phone from the command line.
  30. Added a new ABI to Clang that targets Emscripten specifically. Stop aligning member functions to save some space in the function table array.
  31. Added support for SDL2 touch api.
  32. Added support for C++11 atomic constructs (#2273)
  33. Added new command line utility ‘emcmake‘, which can be used to call emconfigure for cmake.
  34. Added a new emcc command line parameter ‘–valid-abspath’, which allows selectively suppressing warning messages that occur when using absolute path names in include and link directories.
  35. Enabled support for emscripten_get_callstack on IE10+.
  36. Added a new function emscripten_async_wget2_data() that allows reading from an XMLHTTPRequest directly into memory while supporting advanced features.
  37. Added new emscripten_debugger() intrinsic function, which calls into JS “debugger;” statement to break into a JS debugger.
  38. Added support for -Os (optimize for size) and -Oz (aggressively optimize for size) arguments to emcc.
  39. Added new browser fullscreen resize logic that always retains aspect ratio and adds support for IE11.
  40. TURNED ON FASTCOMP BY DEFAULT. This means that you will need to migrate to fastcomp-clang build. Either use an Emscripten SDK distribution, or to build manually, see https://github.com/kripken/emscripten/wiki/LLVM-Backend for info.
  41. Migrate to requiring Clang 3.3 instead of Clang 3.2. The fastcomp-clang repository by Emscripten is based on Clang 3.3.
  42. asm.js will now be always enabled, even in -O0 builds in fastcomp.
  43. Added a new api function emscripten_set_main_loop_arg, which allows passing a userData pointer that will be carried via the function call, useful for object-oriented encapsulation purposes (#2114).
  44. Added new linker option -s NO_EXIT_RUNTIME=1, which can be used to set a default value for the Module["noExitRuntime"] parameter at compile-time.
  45. Added basic FS unmount support.
  46. Add support for simultaneously using setjmp and C++ exceptions in fastcomp.
  47. Add support for Ninja and Eclipse+Ninja builds with Emscripten+CMake.
  48. Added support for #if !X in .js library preprocessor.
  49. Implemented a new emscripten/html5.h interface that exposes common HTML5 APIs directly to C code without having to handwrite JS wrappers.
  50. add fputwc, which enables wprintf.
  51. Added support to numpad keycodes in glut support library.
  52. Added support for the libuuid library, see http://linux.die.net/man/3/libuuid.
  53. Added support to Return and Backspace keys to glut
  54. Added support for WebGL hardware instancing extension.
  55. Added support for #include filename.js to JS libraries.
  1. https://github.com/kripken/emscripten/blob/incoming/ChangeLog  
  2. http://kripken.github.io/emscripten-site/  
  3. https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler  
  4. http://minko.io/wp-content/uploads/2014/08/minko-example-cube.html  

self-made band for pebble steel (final version)

pebble-band-3rd-640x800세번째이자 마지막 버전인 Pebble Steel 시계줄을 완성했다.

크라프트 원단에 마스킹 테이프를 바깥쪽에만 입혔고 시계줄과 나사로 조여지는 부분에 X-Tream Tape를 감고 1mm 캡을 씌웠다. 덕분에 접합부분이 아주 튼튼하면서도 유연하게 구부러진다.   게다가 X-Tream Tape가 시계줄사이에서 버텨주기 때문에 종이원단같지 않은 단단한 질감을 느낄 수 있다.

 

크라프트 원단은 땀을 흡수하지만 가죽과 달리 물에 넣고 세탁을 해도 괜찮기 때문에 냄새걱정이 없고 플라스틱 시계줄같이 손목과 시계줄 사이에 땀에 고이질 않아 좋다.  내 마음대로 형태를 디자인 할 수 있고 가공하는데 힘이 거의 들지 않는다.

재미붙으니 뭐든 이 원단으로 만들려고 하는 부작용?이 생기는게 흠이라면 흠 ㅋ

 

 

 

 

 

버클 부분은 냄새나고 오래된 가죽 시계줄에서 가져온 것이다.  강력 자석으로 대체할까도 생각해보았으나 시계줄이란 것이 가진 정서를 차고싶어 종전대로 만들었다.  사진에는 구멍이 하나뿐이지만 착용후 약간 헐렁해서 하나더 뚫어줬더니 하나밖에 없는 딱맞는 자작 시계줄이 완성되었다.

pebble-band-3rd-2
Pebble Steel이 Classic 버전에 비해 진동이 약해서 실망스러웠으나 크라프트원단으로 만든 시계줄이 상대적으로 가벼워서 인지 대략 30%정도 진동이 강해진 느낌이다.

패키지에 포함된 Steel Band를 착용했을때는 진동이 너무 약해 종종 놓치는 메세지가 있었지만 첫번째 자작 시계줄을 사용할때부터 놓치는 메세지가 거의 없다. (시간 투자한 보람을 겨우 찾을 수 있을듯 .. ㅋ)

 

Steel Connect v1을 가지고 있지만 시계본체와 연결부위가 떠서 쳐박힌 신세가 되고말았다.  (필요할 것 같다고 다 지르지 말자 -__-)

 

얼마나 오래 착용할 수 있을지 .. 겨울이오면 털갈이 버전으로 한번 더 만들어볼까싶다;;