function rotateView( inAngle )
{
    // Get ID's for the related keys
    var idslct = charIDToTypeID( "slct");
 
    var desc = new ActionDescriptor();
    var idnull = charIDToTypeID("null");
 
    var ref = new ActionReference();
    var idrotateTool = stringIDToTypeID("rotateTool");

    ref.putClass(idrotateTool);
 
    desc.putReference(idnull, ref);

   executeAction(idslct, desc);

 
}

요건 툴 셀렉트 까지만.. 근데 저 inAngle값을 어케 처리한다?


cTID = function(s) { return app.charIDToTypeID(s); }; 
sTID
= function(s) { return app.stringIDToTypeID(s); }; 
 
doMenuItem
= function(item, interactive) { 
   
var ref = new ActionReference(); 
   
ref.putEnumerated(cTID("Mn  "), cTID("MnIt"), item); 
 
   
var desc = new ActionDescriptor(); 
   desc
.putReference(cTID("null"), ref); 
 
   
try { 
     
var mode = (interactive != true ? DialogModes.NO : DialogModes.ALL); 
     executeAction
(sTID("select"), desc, mode); 
   
} catch (e) { 
     
if (!e.message.match("User cancelled")) { 
       
throw e; 
     
} else { 
       
return false; 
     
} 
   
} 
   
return true; 
} 
 
doMenuItem
(cTID('ActP')); // Set Zoom to 100% 
doMenuItem
(cTID('ZmIn')); // Zoom in on time more. (200 %) 


이건 줌 컨트롤 예제. 어라 줌은 찾았고 이제 로테이트를 ;ㅁ;;;;
Creative Commons License
2011/12/01 12:48 2011/12/01 12:48
땡그라미 땡그라미..ㅡㅅ-);

사용자 삽입 이미지


Creative Commons License
2011/10/10 14:30 2011/10/10 14:30

새벽 자전거

from 취미생활/Brompton 2011/09/15 07:05
사용자 삽입 이미지
Creative Commons License
2011/09/15 07:05 2011/09/15 07:05
게임을 구현함에 따라 조금씩 프로그램이 길어졌습니다. 제 4장에서는 기능의 일부를 별개의 메소드로 분할하는 방법으로 프로그램을 읽기 쉽게 할 수 있었습니다. 여기서는 프로그램을 읽기 쉽고 관리하기 쉽게 하기 위해 클래스를 만들어 봅니다.

Dice 클래스를 만들어 보자.

이 장에서는 주사위를 의미하는 클래스를 만들어봅니다. "클래스를 만든다"라고 하면 불안해 할지도 모릅니다만, 어렵지 않으니 도전해봅시다.

우선 클래스에 대해서 복습해 봅시다. 클래스라는 것은 "데이터를 조작하는 명령을 준비해놓은 도구함"과 같은 것으로 필드, 컨스트럭터, 프로퍼티, 메소드, 이벤트라는 멤버를 가지고 있습니다. 클래스를 만들 때에는 어떠한 멤버를 만들것인가를 설계할 필요가 있습니다. 이번에는 다음과 같은 멤버를 가진 클래스를 작성합니다.

(중략)

필드라는 것은 클래스 속의 데이터를 말합니다. 이번은 _number라는 int형 변수를 선언합니다. 클래스 속에서만 액세스 가능하고 클래스 밖에서는 액세스 할 수 없습니다. 변수명에 언더스코어(_)를 붙이고 있는 것은 이 후에 선얼할 프로퍼티명과 중복되지 않도록 하기 위함입니다.

컨스트럭터라는 것은 gcnew()로 클래스를 인스턴스화 할 때 움직이는 메소드입니다. 다시말해 초기화 전용의 메소드입니다. 이번에는 Dice()라는 초기화와 Dice(int형 인수)라는 초기화 2개를 작성합니다. 전자의 방법으로 초기화하면 최초의 주사위 값은 1이 되고, 후자의 방법으로 초기화한 경우 인수의 값이 주사위 값으로 설정됩니다.

프로퍼티는 클래스의 데이터를 의미합니다만, 실제로는 필드의 값을 넣고빼는 역할을 하고 있습니다. 필드에 값을 설정하는 set용 Number프로퍼티와 필드의 값을 취득하는 get용 Number 프로퍼티를 만듭니다.

메소드는 클래스로의 명령으로 이번에는 주사위의 값을 랜덤으로 변화시키는 Shake()라는 명령을 작성합니다.

이벤트는 클래스에서 발생한 변경등의 통지를 하는 장치입니다. 이번에는 구현하지 않습니다.

또 마지막으로 주의할 것이 1개의 클래스를 만들기 위해서는 2개의 파일이 필요하다는 것입니다. 1개는 헤더 파일이고, 하나는 소스 파일입니다.

(후략)

Creative Commons License
2011/09/02 10:27 2011/09/02 10:27
여기서는 클래스를 이용하는 데 기본이 되는 인스턴스란 무엇인가를 알아봅시다.

클래스를 사용해 보자
-------------------
제 1장에서는 오브젝트 지향의 메리트는 "클래스 속의 프로그램을 몰라도 사용방법만 이해하면 그 기능을 이용할 수 있다"고 설명했습니다. 그 예로 "쉐프에게 재료를 넘기고 조리의 방법을 지시하는 것으로 요리를 만들 수 있다"고 설명했습니다. 여기서 다시 쉐프의 예로 클래스를 이용하는 순서에 대해서 설명합니다.

용어--
클래스의 멤버
클래스는 프로퍼티와 메소드만이 아니라 필드, 컨스트럭터, 이벤트등의 조합으로도 구성됩니다. 그리고, 이것들 모두를 모아 클래스 멤버라 부릅니다. 또 필드와 컨스트럭터에 대해서는 5장에서 설명합니다.

클래스를 사용하는데에는 다음 3개의 포인트가 중요합니다.
1) 인스턴스화 2)프로퍼티의 설정과 참조 3)메소드의 실행

우선 클래스를 사용하려면 인스턴스라는 실체를 생성할 필요가 있습니다. 이것을 인스턴스화라 합니다. 클래스는 어디까지나 설계도이므로 인스턴스화에 의해 사용할 수 있게 됩니다. 쉐프라는 직함으로는 요리를 만들 수 없으며 쉐프를 고용하는(인스턴스화) 것으로 요리를 만들 수 있게 됩니다.
또, 클래스의 특징은 인스턴스마다 데이터를 가지고 있다는 것입니다. 클래스가 가진 데이터를 프로퍼티라 부릅니다. 쉐프 클래스를 2명 인스턴스화 하면 2종류의 다른 재료를 프로퍼티로 설정할 수 있습니다.
마지막으로 데이터를 조작하는 클래스의 명령인 메소드를 실행합니다. 쉐프의 예를 들자면 고기를 가진 쉐프에 "구워주세요"라고 명령하고, 채소를 가진 쉐프에게 "스프를 만들어주세요"라고 명령합니다.
이렇게 클래스를 이용하려면 "쉐프를 채용해(인스턴스화) 개별의 재료를 건네고(프로퍼티), 지시를 내리는(메소드)" 순서로 실행합니다. 그러면 실제 게임에서 클래스를 인스턴스화 해보겠습니다.

(중략)

코드 해설

여기서 난수를 발생할 수 있는 Random클래스를 사용합니다. 난수란 말 그대로 제멋대로 수를 내는 것입니다.

1] Random^ randomDice;

Random 클래스를 randomDice란 이름의 변수로 선언합니다. 이렇게 클래스의 변수를 선언할 때, 다음의 구문을 사용합니다.

클래스명^ 변수명;

int형등의 기본형 변수와 다르게 클래스 명 뒤에 "^"이라는 매니지코드의 클래스 인스턴스 영역을 나타내는 기호를 습니다. 이기호는 캐럿 또는 햇기호라 불립니다. 이렇게 인스턴스를 격납하는 변수를 선언할 때 이 기호를 사용합니다.

2] randomDice = gcnew Random();

클래스를 사용하려면 인스턴스화라는 초기화가 필요합니다. gcnew라는 키워드를 사용해 인스턴스화 하는 클래스의 이름을 지정합니다. 클래스에 따라서는 이름 뒤에 인수를 지정할 수 있습니다. 여기서는 Random 클래스를 지정하고 있기 때문에 Random 클래스라는 설게도에 근거해 randomDice가 인스턴스화됩니다.

변수명 = gcnew 클래스명();

3] int diceNumber;
diceNumber = randomDice->Next(1,7);

주사위의 눈을 격납하기위해 int형 diceNumber란 변수를 선언하고 Random 클래스의 Next메소드를 부르고 있습니다. 이 Next메소드에는 1과 1이라는 인수를 부여합니다. 그 결과 1이상 7미만(1~6)의 난수가 발생되어 diceNumber에 격납됩니다. 여기서는 메소드로부터 게산된 결과를 얻고있다는 걸 주목해 주세요. 이것을 메소드의 반환값이라고 합니다. 여기서는 Next메소드가 1~6의 숫자를 반환값으로 생성합니다.

4] Debug....
(중략)


힌트
(중략)
치형과 참조형
------------
.NET Framework의 매니지코드에서는 변수의 형에 치형과 참조형의 2종류가 있습니다. int, bool, float와 같은 기본형과 헬프를 볼 대에 "구조체: value class"라 정의 되어있는 형은 치형입니다. 이것 이외의 클래스 (Random과 String등)의 "클래스:ref class"라 정의 되어있는 형은 참조형입니다. 또, 치형과 참조형에스는 몇개의 다른 점이 있습니다. 치형은 그 변수의 값을 직접 격납하는 것에 반해, 참조형은 실체로의 참조를 격납합니다. 치형은 초기화에 초기값이 설정됩니다만, 참조형은 초기화시에 Null이 설정됩니다. 또, 대입할 때 치형은 그대로 값이 대입됩니다만, 참조형은 값이 아니 참조 정보(어드레스)가 대입됩니다. 참조형의 변수를 사용할 경우에는 이런 것을 이해해둘 필요가 있습니다.





Creative Commons License
2011/09/01 11:05 2011/09/01 11:05
사용자 삽입 이미지
사용자 삽입 이미지

ALIENWARE 해킨 라이온용 배경.. A LIONWARE ㅡㅅ-);;;;

사용자 삽입 이미지
Creative Commons License
2011/08/29 10:49 2011/08/29 10:49
MAC mini에는 eSATA포트가 없다. USB 2.0과 IEEE1394b(Firewire800)포트가 전부.

그렇다고 1394b를 지원하는 케이스를 사자니 적당한 가격에 적당한 제품이 없고, USB3.0/eSATA지원 제품은 저렴하면서도 유용한 제품이 꽤 보였다. 그래서 seagate goFlex 인터페이스를 이용해서 eSATA포트를 만들기로 했다.

준비물은 SATA단자 2개. 보통 하드디스크나 마더보드쪽에 붙는 녀석을 준비한다.
그걸 1:1로 붙여주고, goFlex의 SATA단자에 물려준 뒤 eSATA포트를 다시 연결해서 물려준다.

사용자 삽입 이미지



이제 여기에 eSATA외장하드를 물려서 테스트..

사용자 삽입 이미지


직결했을 땐 70MB이상도 나왔지만, 이정도만해도 USB2.0로 물렸을 때를 훨 뛰어넘는 수치다.

나름 만족중.



문제점 : 휴대형 인터페이스에서는 RAID0, 5에서 제대로 용량을 인식 못하고 있다. RAID1일 때는 제대로 동작.








Creative Commons License
2011/07/28 21:24 2011/07/28 21:24
사용자 삽입 이미지

터미널 열고 killall Dock

문제 해결.
Creative Commons License
2011/07/03 19:15 2011/07/03 19:15

이 안에 다있음 ㅡㅅ-);

game_bt01.addEventListener(MouseEvent.CLICK,ox_01);
game_bt02.addEventListener(MouseEvent.CLICK,ox_02);
game_bt03.addEventListener(MouseEvent.CLICK,ox_03);
game_bt04.addEventListener(MouseEvent.CLICK,ox_04);

function ox_01(event:MouseEvent) :void {
 game_bt01.alpha = 1;
 stop();
 setTimeout(function() { gotoAndPlay(26); }, 600);

}

function ox_02(event:MouseEvent) :void {
 game_bt02.alpha = 1;
}
function ox_03(event:MouseEvent) :void {
 game_bt03.alpha = 1;
}
function ox_04(event:MouseEvent) :void {
 game_bt04.alpha = 1;
}




Creative Commons License
2011/06/14 11:02 2011/06/14 11:02
사용자 삽입 이미지

휴대 편하고 감도도 좋은 편이나, 물리적인 휠을 100%대체하긴 힘들 것 같다.

휠의 회전 수를 섬세하게 조절해야하는 편집 작업 등에서는 좀 무리인듯.
Creative Commons License
2011/06/10 22:45 2011/06/10 22:45
http://www.insanelymac.com/forum/index.php?showtopic=232183&mode=threaded&pid=1577947


샌디브리지 i7을 사용하는 가상머신에서 MAC OS X 업데이트 후

The CPU has been disabled by the guest operating system. You will need to power off or reset the virtual machine at this point.

에러가 나면 vmx에 다음 줄을 추가해준다.

cpuid.1.eax = "0000:0000:0000:0001:0000:0110:1010:0101"
Creative Commons License
2011/06/01 03:43 2011/06/01 03:43
메뉴버튼 누르고
왼쪽 화살표와 취소키를 동시에 누르고 있는다


다시 메뉴 들어가면 숨겨진 서비스 메뉴 나온다.
Creative Commons License
2011/05/31 12:17 2011/05/31 12:17

(gdb) help

List of classes of commands:


aliases -- Aliases of other commands

breakpoints -- Making program stop at certain points

data -- Examining data

files -- Specifying and examining files

internals -- Maintenance commands

obscure -- Obscure features

running -- Running the program

stack -- Examining the stack

status -- Status inquiries

support -- Support facilities

tracepoints -- Tracing of program execution without stopping the program

user-defined -- User-defined commands


Type "help" followed by a class name for a list of commands in that class.

Type "help" followed by command name for full documentation.

Command name abbreviations are allowed if unambiguous.




===========



(gdb) help all

ni -- Step one instruction

si -- Step one instruction exactly

stepping -- Specify single-stepping behavior at a tracepoint

tp -- Set a tracepoint at a specified line or function or address

tty -- Set terminal for future runs of program being debugged

where -- Print backtrace of all stack frames

ws -- Specify single-stepping behavior at a tracepoint

append binary -- Append target code/data to a raw binary file

append memory -- Append contents of memory to a raw binary file

append value -- Append the value of an expression to a raw binary file

awatch -- Set a watchpoint for an expression

break -- Set breakpoint at specified line or function

catch -- Set catchpoints to catch events

clear -- Clear breakpoint at specified line or function

commands -- Set commands to be executed when a breakpoint is hit

condition -- Specify breakpoint number N to break only if COND is true

delete -- Delete some breakpoints or auto-display expressions

disable -- Disable some breakpoints

enable -- Enable some breakpoints

future-break -- Set breakpoint at expression

hbreak -- Set a hardware assisted  breakpoint

ignore -- Set ignore-count of breakpoint number N to COUNT

rbreak -- Set a breakpoint for all functions matching REGEXP

rwatch -- Set a read watchpoint for an expression

save-breakpoints -- Save current breakpoint definitions as a script

tbreak -- Set a temporary breakpoint

tcatch -- Set temporary catchpoints to catch events

thbreak -- Set a temporary hardware assisted breakpoint

watch -- Set a watchpoint for an expression

append -- Append target code/data to a local file

call -- Call a function in the program

disassemble -- Disassemble a specified section of memory

display -- Print value of expression EXP each time the program stops

dump -- Dump target code/data to a local file

inspect -- Same as "print" command

invoke-block -- Invoke the function associated with the block passed in as the first

mem -- Define attributes for memory region

output -- Like "print" but don't put in value history and don't print newline

print -- Print value of expression EXP

print-object -- Ask an Objective-C object to print itself

printf -- Printf "printf format string"

ptype -- Print definition of type TYPE

restore -- Restore the contents of FILE to target memory

set -- Evaluate expression EXP and assign result to variable VAR

undisplay -- Cancel some expressions to be displayed when program stops

whatis -- Print data type of expression EXP

x -- Examine memory: x/FMT ADDRESS

delete breakpoints -- Delete some breakpoints or auto-display expressions

delete checkpoints -- Delete specified checkpoints

delete display -- Cancel some expressions to be displayed when program stops

delete mem -- Delete memory region

delete tracepoints -- Delete specified tracepoints

disable breakpoints -- Disable some breakpoints

disable display -- Disable some expressions to be displayed when program stops

disable mem -- Disable memory region

disable tracepoints -- Disable specified tracepoints

dump binary -- Write target code/data to a raw binary file

dump ihex -- Write target code/data to an intel hex file

dump memory -- Write contents of memory to a raw binary file

dump srec -- Write target code/data to an srec file

dump tekhex -- Write target code/data to a tekhex file

dump value -- Write the value of an expression to a raw binary file

enable delete -- Enable breakpoints and delete when hit

enable display -- Enable some expressions to be displayed when program stops

enable mem -- Enable memory region

enable once -- Enable breakpoints for one hit

enable tracepoints -- Enable specified tracepoints

add-dsym -- Usage: add-dsym DSYM_FILE

add-kext -- Usage: add-kext KEXTBUNDLE

add-shared-symbol-files -- Load the symbols from shared objects in the dynamic linker's link map

add-symbol-file -- Usage: add-symbol-file FILE ADDR [-s <SECT> <SECT_ADDR> -s <SECT> <SECT_ADDR>

cd -- Set working directory to DIR for debugger and program being debugged

core-file -- Use FILE as core dump for examining memory and registers

directory -- Add directory DIR to beginning of search path for source files

edit -- Edit specified file or function

exec-file -- Use FILE as program for getting contents of pure memory

file -- Use FILE as program to be debugged

fix -- Bring in a fixed objfile

forward-search -- Search for regular expression (see regex(3)) from last line listed

list -- List specified function or line

load -- Dynamically load FILE into the running program

nosharedlibrary -- Unload all shared object library symbols

path -- Add directory DIR(s) to beginning of search path for object files

pwd -- Print working directory

remove-symbol-file -- Usage: remove-symbol-file FILE

reread-symbols -- Usage: reread-symbols

reverse-search -- Search backward for regular expression (see regex(3)) from last line listed

search -- Search for regular expression (see regex(3)) from last line listed

section -- Change the base address of section SECTION of the exec file to ADDR

symbol-file -- Load symbol table from executable file FILE

info address -- Describe where symbol SYM is stored

info all-registers -- List of all registers and their contents

info args -- Argument variables of current stack frame

info auxv -- Display the inferior's auxiliary vector

info breakpoints -- Status of user-settable breakpoints

info catch -- Exceptions that can be caught in the current stack frame

info checkpoints -- Help

info classes -- All Objective-C classes

info common -- Print out the values contained in a Fortran COMMON block

info copying -- Conditions for redistributing copies of GDB

info dcache -- Print information on the dcache performance

info display -- Expressions to display when program stops

info extensions -- All filename extensions associated with a source language

info files -- Names of targets and files being debugged

info float -- Print the status of the floating point unit

info fork -- Help

info frame -- All about selected stack frame

info functions -- All function names

info gc-references -- List the garbage collectors references for a given address

info gc-roots -- List the garbage collector's shortest unique roots to a given address

info handle -- What debugger does when program gets various signals

info interpreters -- List the interpreters currently available in gdb

info line -- Core addresses of the code for a source line

info locals -- Local variables of current stack frame

info mach-port -- Get info on a specific port

info mach-ports -- Get list of ports in a task

info mach-region -- Get information on mach region at given address

info mach-regions -- Get information on all mach region for the current inferior

info mach-task -- Get info on a specific task

info mach-tasks -- Get list of tasks in system

info mach-thread -- Get info on a specific thread

info mach-threads -- Get list of threads in a task

info macro -- Show the definition of MACRO

info malloc-history -- List the stack(s) where malloc or free occurred for the address

info mem -- Memory region attributes

info pid -- Process ID of the program

info plugins -- Show current plug-ins state

info program -- Execution status of the program

info registers -- List of integer registers and their contents

info scope -- List the variables local to a scope

info selectors -- All Objective-C selectors

info set -- Show all GDB settings

info sharedlibrary -- Generic command for shlib information

info signals -- What debugger does when program gets various signals

info source -- Information about the current source file

info sources -- Source files in the program

info stack -- Backtrace of the stack

info symbol -- Describe what symbol is at location ADDR

info target -- Names of targets and files being debugged

info task -- Get information on task

info terminal -- Print inferior's saved terminal status

info thread -- Get information on thread

info threads -- IDs of currently known threads

info tracepoints -- Status of tracepoints

info trampoline -- Resolve function for DYLD trampoline stub and/or Objective-C call

info types -- All type names

info variables -- All global and static variable names

info vector -- Print the status of the vector unit

info warranty -- Various kinds of warranty you do not have

info watchpoints -- Synonym for ``info breakpoints''

flushregs -- Force gdb to flush its register cache (maintainer command)

flushstack -- Force gdb to flush its stack-frame cache (maintainer command)

maintenance -- Commands for use by GDB maintainers

macro define -- Define a new C/C++ preprocessor macro

macro expand -- Fully expand any C/C++ preprocessor macro invocations in EXPRESSION

macro expand-once -- Expand C/C++ preprocessor macro invocations appearing directly in EXPRESSION

macro list -- List all the macros defined using the `macro define' command

macro undef -- Remove the definition of the C/C++ preprocessor macro with the given name

maintenance agent -- Translate an expression into remote agent bytecode

maintenance check-symtabs -- Check consistency of psymtabs and symtabs

maintenance cplus -- C++ maintenance commands

maintenance demangle -- Demangle a C++/ObjC mangled name

maintenance deprecate -- Deprecate a command

maintenance dump-me -- Get fatal error; make debugger dump its core

maintenance dump-packets -- Print the packet log buffer

maintenance i386-prologue-parser -- Run the i386 prologue analyzer on a function

maintenance info -- Commands for showing internal info about the program being debugged

maintenance internal-error -- Give GDB an internal error

maintenance internal-warning -- Give GDB an internal warning

maintenance interval -- Set the report of low-level interval timers

maintenance list-kexts -- List kexts loaded by the kernel (when kernel debugging)

maintenance packet -- Send an arbitrary packet to a remote target

maintenance print -- Maintenance command for printing GDB internal state

maintenance report-interval -- Report the summary values for all the low-level interval timers

maintenance set -- Set GDB internal variables used by the GDB maintainer

maintenance sharedlibrary -- Commands for internal sharedlibrary manipulation

maintenance show -- Show GDB internal variables used by the GDB maintainer

maintenance show-debug-regs -- Set whether to show variables that mirror the x86 debug registers

maintenance space -- Set the display of space usage

maintenance time -- Set the display of time usage

maintenance translate-address -- Translate a section name and address to a symbol

maintenance undeprecate -- Undeprecate a command

compare-sections -- Compare section data on target to the exec file

complete -- List the completions for the rest of the line as a command

create-checkpoint -- Create a checkpoint

load-plugin -- Usage: load-plugin <plugin>

monitor -- Send a command to the remote monitor (remote targets only)

now -- Go to latest original execution line

redo -- Forward to next checkpoint

remote -- Send a command to the remote monitor

rollback -- Roll back to a checkpoint

stop -- There is no `stop' command

undo -- Back to last checkpoint

update -- Re-read current state information from inferior

overlay auto -- Enable automatic overlay debugging

overlay list-overlays -- List mappings of overlay sections

overlay load-target -- Read the overlay mapping state from the target

overlay manual -- Enable overlay debugging

overlay map-overlay -- Assert that an overlay section is mapped

overlay off -- Disable overlay debugging

overlay unmap-overlay -- Assert that an overlay section is unmapped

advance -- Continue the program up to the given location (same form as args for break command)

attach -- Attach to a process or file outside of GDB

continue -- Continue program being debugged

detach -- Detach a process or file previously attached

disconnect -- Disconnect from a target

finish -- Execute until selected stack frame returns

handle -- Specify how to handle a signal

interrupt -- Interrupt the execution of the debugged program

jump -- Continue program being debugged at specified line or address

kdp-detach -- Reset a (possibly disconnected) remote Mac OS X kernel

kdp-kernelversion -- Print the version of a remote Mac OS X kernel

kdp-reattach -- Re-attach to a (possibly connected) remote Mac OS X kernel

kdp-reboot -- Reboot a connected remote Mac OS X kernel

kill -- Kill execution of program being debugged

next -- Step program

nexti -- Step one instruction

run -- Start debugged program

sharedlibrary -- Commands for shared library manipulation

signal -- Continue program giving it signal specified by the argument

start -- Run the debugged program until the beginning of the main procedure

step -- Step program until it reaches a different source line

stepi -- Step one instruction exactly

sym-dump -- Print the contents of the specified SYM-format symbol file

target -- Connect to a target machine or process

thread -- Use this command to switch between threads

until -- Execute until the program reaches a source line greater than the current

set annotate -- Set annotation_level

set architecture -- Set architecture of target

set args -- Set argument list to give program being debugged when it is started

set auto-raise-load-levels -- Set if GDB should raise the symbol loading level on all frames found in backtraces

set auto-solib-add -- Set autoloading of shared library symbols

set backtrace -- Set backtrace specific variables

set breakpoint -- Breakpoint specific settings

set call-po-at-unsafe-times -- Set whether to override the check for potentially unsafe situations before calling print-object

set can-use-hw-watchpoints -- Set debugger's willingness to use watchpoint hardware

set case-sensitive -- Set case sensitivity in name search

set charset -- Set the host and target character sets

set check -- Set the status of the type/range checker

set checkpointing -- Set automatic creation of checkpoints

set coerce-float-to-double -- Set coercion of floats to doubles when calling functions

set complaints -- Set max number of complaints about incorrect symbols

set confirm -- Set whether to confirm potentially dangerous operations

set cp-abi -- Set the ABI used for inspecting C++ objects

set darwin_kernel-debug-level -- Set level of verbosity for Darwin Kernel debugging information

set dcache-linesize-power -- Set the power for the cache line size

set debug -- Generic command for setting gdb debugging flags

set debug-file-directory -- Set the directory where separate debug symbols are searched for

set debugvarobj -- Set varobj debugging

set demangle-style -- Set the current C++ demangling style

set disable-aslr -- Set if GDB should disable shared library address randomization

set disable-inferior-function-calls -- Set disabling of gdb from running calls in the debugee's context

set disassembly-flavor -- Set the disassembly flavor

set disassembly-name-length -- Set the maximum length of characters to print in the symbol name in disassembly output

set download-write-size -- Set the write size used when downloading a program

set editing -- Set editing of command lines as they are typed

set endian -- Set endianness of target

set environment -- Set environment variable value to give the program

set exception-catch-type-regexp -- Set exception regexp

set exception-throw-type-regexp -- Set throw regexp

set exec-argv0 -- Set the value of argv[0] to be passed to the target executable

set exec-done-display -- Set notification of completion for asynchronous execution commands

set exec-pathname -- Set the pathname to be used to start the target executable

set extension-language -- Set mapping between filename extension and source language

set follow-fork-mode -- Set debugger response to a program call of fork or vfork

set forking-checkpoints -- Set forking to create checkpoints

set function-end-absolute -- Set if N_FUN end-of-function symbols use absolute addresses on non-GCC files

set gnutarget -- (Set the current BFD target

set height -- Set number of lines gdb thinks are in a page

set history -- Generic command for setting command history parameters

set host-charset -- Set the host character set

set inferior-auto-start-cfm -- Set if GDB should enable debugging of CFM shared libraries

set inferior-auto-start-dyld -- Set if GDB should enable debugging of dyld shared libraries

set inferior-bind-exception-port -- Set if GDB should bind the task exception port

set inferior-ptrace -- Set if GDB should attach to the subprocess using ptrace ()

set inferior-ptrace-on-attach -- Set if GDB should attach to the subprocess using ptrace ()

set inferior-tty -- Set terminal for future runs of program being debugged

set inform-optimized -- Set gdb informing you when you are debugging optimized code

set inlined-stepping -- Set the ability to maneuver through inlined function calls as if they were normal calls

set input-radix -- Set default input radix for entering numbers

set interpreter -- Set the interpreter for gdb

set kdp-debug-level -- Set level of verbosity for KDP debugging information

set kdp-default-host-type -- Set CPU type to be used for hosts providing incorrect information (powerpc/ia32)

set kdp-default-port -- Set default UDP port on which to attempt to contact KDP

set kdp-exception-sequence-number -- Set current sequence number for KDP exception transactions

set kdp-retries -- Set number of UDP retries for (non-exception) KDP transactions

set kdp-sequence-number -- Set current sequence number for KDP transactions

set kdp-timeout -- Set UDP timeout in milliseconds for (non-exception) KDP transactions

set kext-symbol-file-path -- Set the directory where kextutil-generated sym files are searched for

set language -- Set the current source language

set let-po-run-all-threads -- Set whether po should run all threads if it can't  safely run only the current thread

set listsize -- Set number of source lines gdb will list by default

set locate-dsym -- Set locate dSYM files using the DebugSymbols framework

set logging -- Set logging options

set lookup-objc-class -- Set whether we should attempt to lookup Obj-C classes when we resolve symbols

set mach-o-process-exports -- Set if GDB should process indirect function stub symbols from object files

set max-checkpoints -- Set the maximum number of checkpoints allowed (-1 == unlimited)

set max-user-call-depth -- Set the max call depth for user-defined commands

set mi-show-protections -- Set whether to show "public"

set mi-timings-enabled -- Set whether timing information is displayed for mi commands

set minimal-signal-handling -- Set whether we run with a minimal signal handling set

set mmap-string-tables -- Set if GDB should use mmap() to read STABS info

set mmap-symbol-files -- Set if GDB should use mmap() to read from external symbol files

set objc-class-method-limit -- Set the maximum number of class methods we scan before deciding we are looking at an uninitialized object

set objc-exceptions-interrupt-hand-call-fns -- Set whether hitting an ObjC exception throw interrupts a function called by hand from the debugger

set objc-non-blocking-mode -- Set whether all inferior function calls should use the objc non-blocking mode

set objc-version -- Set the current Objc runtime version

set opaque-type-resolution -- Set resolution of opaque struct/class/union types (if set before loading symbols)

set os -- Set operating system

set osabi -- Set OS ABI of target

set output-radix -- Set default output radix for printing of values

set overload-resolution -- Set overload resolution in evaluating C++ functions

set pagination -- Set state of pagination

set pathname-substitutions -- Set string substitutions to be used when searching for source files

set print -- Generic command for setting how things print

set prompt -- Set gdb's prompt

set radix -- Set default input and output number radices

set read-type-psyms -- Set if we should create partial symbols for types

set remote -- Remote protocol specific variables

set remoteaddresssize -- Set the maximum size of the address (in bits) in a memory packet

set remotebaud -- Set baud rate for remote serial I/O

set remotebreak -- Set whether to send break if interrupted

set remotecache -- Set cache use for remote targets

set remotedevice -- Set device for remote serial I/O

set remotelogbase -- Set numerical base for remote session logging

set remotelogfile -- Set filename for remote session recording

set remotetimeout -- Set timeout limit to wait for target to respond

set remotewritesize -- Set the maximum number of bytes per memory write packet (deprecated)

set restore -- Set restore specific command settings

set scheduler-locking -- Set mode for locking scheduler during execution

set serial -- Set default serial/parallel port configuration

set sharedlibrary -- Generic command for setting shlib settings

set shlib-path-substitutions -- Set path substitutions to be used when loading shared libraries

set show_breakpoint_hit_counts -- Set if GDB should show breakpoint hit counts

set solib-absolute-prefix -- Set prefix for loading absolute shared library symbol files

set solib-search-path -- Set the search path for loading non-absolute shared library symbol files

set start-with-shell -- Set if GDB should use shell to invoke inferior (performs argument expansion in shell)

set step-mode -- Set mode of the step operation

set stop-on-solib-events -- Set stopping for shared library events

set struct-convention -- Set the convention for returning small structs

set subsystem-checkpointing -- Set checkpointing of subsystems

set symbol-reloading -- Set dynamic symbol table reloading multiple times in one run

set target-charset -- Set the target character set

set target-function-call-timeout -- Set a timeout for gdb issued function calls in the target program

set trust-readonly-sections -- Set mode for reading from readonly sections

set unwindonsignal -- Set unwinding of stack if a signal is received while in a call dummy

set use-array-stride -- Set if GDB should honor the 'stride' parameter of array types

set use-eh-frame-info -- Set if GDB should use the EH frame/DWARF CFI information to backtrace

set variable -- Evaluate expression EXP and assign result to variable VAR

set varobj-print-object -- Set varobj to construct children using the most specific class type

set varobj-runs-all-threads -- Set to run all threads when evaluating varobjs

set verbose -- Set verbosity

set watchdog -- Set watchdog timer

set width -- Set number of characters gdb thinks are in a line

set write -- Set writing into executable and core files

sharedlibrary add-symbol-file -- Add a symbol file

sharedlibrary apply-load-rules -- Apply the current load-rules to the existing shared library state

sharedlibrary cache-symfile -- Generate persistent caches of symbol files for a specified executable

sharedlibrary cache-symfiles -- Generate persistent caches of symbol files for the current executable state

sharedlibrary remove-symbol-file -- Remove a symbol file

sharedlibrary section-info -- Get the section info for a library (given by the index from "info sharedlibrary")

sharedlibrary set-load-state -- Set the load level of a library (given by the index from "info sharedlibrary")

sharedlibrary update -- Process all pending DYLD events

show annotate -- Show annotation_level

show architecture -- Show architecture of target

show args -- Show argument list to give program being debugged when it is started

show auto-raise-load-levels -- Show if GDB should raise the symbol loading level on all frames found in backtraces

show auto-solib-add -- Show autoloading of shared library symbols

show backtrace -- Show backtrace specific variables

show breakpoint -- Breakpoint specific settings

show call-po-at-unsafe-times -- Show whether to override the check for potentially unsafe situations before calling print-object

show can-use-hw-watchpoints -- Show debugger's willingness to use watchpoint hardware

show case-sensitive -- Show case sensitivity in name search

show charset -- Show the host and target character sets

show check -- Show the status of the type/range checker

show checkpointing -- Show automatic creation of checkpoints

show coerce-float-to-double -- Show coercion of floats to doubles when calling functions

show commands -- Show the history of commands you typed

show complaints -- Show max number of complaints about incorrect symbols

show confirm -- Show whether to confirm potentially dangerous operations

show convenience -- Debugger convenience ("$foo") variables

show copying -- Conditions for redistributing copies of GDB

show cp-abi -- Show the ABI used for inspecting C++ objects

show darwin_kernel-debug-level -- Show level of verbosity for Darwin Kernel debugging information

show dcache-linesize-power -- Show the power for the cache line size

show debug -- Generic command for showing gdb debugging flags

show debug-file-directory -- Show the directory where separate debug symbols are searched for

show debugvarobj -- Show varobj debugging

show demangle-style -- Show the current C++ demangling style

show directories -- Current search path for finding source files

show disable-aslr -- Show if GDB should disable shared library address randomization

show disable-inferior-function-calls -- Show disabling of gdb from running calls in the debugee's context

show disassembly-flavor -- Show the disassembly flavor

show disassembly-name-length -- Show the maximum length of characters to print in the symbol name in disassembly output

show download-write-size -- Show the write size used when downloading a program

show editing -- Show editing of command lines as they are typed

show endian -- Show endianness of target

show environment -- The environment to give the program

show exception-catch-type-regexp -- Show exception regexp

show exception-throw-type-regexp -- Show throw regexp

show exec-argv0 -- X

show exec-done-display -- Show notification of completion for asynchronous execution commands

show exec-pathname -- Show the pathname to be used to start the target executable

show extension-language -- Show mapping between filename extension and source language

show follow-fork-mode -- Show debugger response to a program call of fork or vfork

show forking-checkpoints -- Show forking to create checkpoints

show function-end-absolute -- Show if N_FUN end-of-function symbols use absolute addresses on non-GCC files

show gnutarget -- Show the current BFD target

show height -- Show number of lines gdb thinks are in a page

show history -- Generic command for showing command history parameters

show host-charset -- Show the host character set

show inferior-auto-start-cfm -- Show if GDB should enable debugging of CFM shared libraries

show inferior-auto-start-dyld -- Show if GDB should enable debugging of dyld shared libraries

show inferior-bind-exception-port -- Show if GDB should bind the task exception port

show inferior-ptrace -- Show if GDB should attach to the subprocess using ptrace ()

show inferior-ptrace-on-attach -- Show if GDB should attach to the subprocess using ptrace ()

show inferior-tty -- Show terminal for future runs of program being debugged

show inform-optimized -- Show gdb informing you when you are debugging optimized code

show inlined-stepping -- Show the ability to maneuver through inlined function calls as if they were normal calls

show input-radix -- Show default input radix for entering numbers

show interpreter -- Show the interpreter for gdb

show kdp-debug-level -- Show level of verbosity for KDP debugging information

show kdp-default-host-type -- Show CPU type to be used for hosts providing incorrect information (powerpc/ia32)

show kdp-default-port -- Show default UDP port on which to attempt to contact KDP

show kdp-exception-sequence-number -- Show current sequence number for KDP exception transactions

show kdp-retries -- Show number of UDP retries for (non-exception) KDP transactions

show kdp-sequence-number -- Show current sequence number for KDP transactions

show kdp-timeout -- Show UDP timeout in milliseconds for (non-exception) KDP transactions

show kext-symbol-file-path -- Show the directory where kextutil-generated sym files are searched for

show language -- Show the current source language

show let-po-run-all-threads -- Show whether po should run all threads if it can't  safely run only the current thread

show listsize -- Show number of source lines gdb will list by default

show locate-dsym -- Show locate dSYM files using the DebugSymbols framework

show logging -- Show logging options

show lookup-objc-class -- Show whether we should attempt to lookup Obj-C classes when we resolve symbols

show mach-o-process-exports -- Show if GDB should process indirect function stub symbols from object files

show max-checkpoints -- Show the maximum number of checkpoints allowed (-1 == unlimited)

show max-user-call-depth -- Show the max call depth for user-defined commands

show mi-show-protections -- Show whether to show "public"

show mi-timings-enabled -- Show whether timing information is displayed for mi commands

show minimal-signal-handling -- Show whether we run with a minimal signal handling set

show mmap-string-tables -- Show if GDB should use mmap() to read STABS info

show mmap-symbol-files -- Show if GDB should use mmap() to read from external symbol files

show objc-class-method-limit -- Show the maximum number of class methods we scan before deciding we are looking at an uninitialized object

show objc-exceptions-interrupt-hand-call-fns -- Show whether hitting an ObjC exception throw interrupts a function called by hand from the debugger

show objc-non-blocking-mode -- Show whether all inferior function calls should use the objc non-blocking mode

show objc-version -- Show the current Objc runtime version

show opaque-type-resolution -- Show resolution of opaque struct/class/union types (if set before loading symbols)

show os -- Show operating system

show osabi -- Show OS ABI of target

show output-radix -- Show default output radix for printing of values

show overload-resolution -- Show overload resolution in evaluating C++ functions

show pagination -- Show state of pagination

show pathname-substitutions -- Show string substitutions to be used when searching for source files

show paths -- Current search path for finding object files

show print -- Generic command for showing print settings

show prompt -- Show gdb's prompt

show radix -- Show the default input and output number radices

show read-type-psyms -- Show if we should create partial symbols for types

show remote -- Remote protocol specific variables

show remoteaddresssize -- Show the maximum size of the address (in bits) in a memory packet

show remotebaud -- Show baud rate for remote serial I/O

show remotebreak -- Show whether to send break if interrupted

show remotecache -- Show cache use for remote targets

show remotedevice -- Show device for remote serial I/O

show remotelogbase -- Show numerical base for remote session logging

show remotelogfile -- Show filename for remote session recording

show remotetimeout -- Show timeout limit to wait for target to respond

show remotewritesize -- Show the maximum number of bytes per memory write packet (deprecated)

show restore -- Show current restore specific command settings

show scheduler-locking -- Show mode for locking scheduler during execution

show serial -- Show default serial/parallel port configuration

show sharedlibrary -- Generic command for showing shlib settings

show shlib-path-substitutions -- Show path substitutions to be used when loading shared libraries

show show_breakpoint_hit_counts -- Set if GDB should show breakpoint hit counts

show solib-absolute-prefix -- Show prefix for loading absolute shared library symbol files

show solib-search-path -- Show the search path for loading non-absolute shared library symbol files

show start-with-shell -- Show if GDB should use shell to invoke inferior (performs argument expansion in shell)

show step-mode -- Show mode of the step operation

show stop-on-solib-events -- Show stopping for shared library events

show struct-convention -- Show the convention for returning small structs

show subsystem-checkpointing -- Show checkpointing of subsystems

show symbol-reloading -- Show dynamic symbol table reloading multiple times in one run

show target-charset -- Show the target character set

show target-function-call-timeout -- Show the timeout for gdb issued function calls in the target program

show trust-readonly-sections -- Show mode for reading from readonly sections

show unwindonsignal -- Show unwinding of stack if a signal is received while in a call dummy

show use-array-stride -- Show if GDB should honor the 'stride' parameter of array types

show use-eh-frame-info -- Show if GDB should use the EH frame/DWARF CFI information to backtrace

show user -- Show definitions of user defined commands

show values -- Elements of value history around item number IDX (or last ten)

show varobj-print-object -- Abc

show varobj-runs-all-threads -- Set to run all threads when evaluating varobjs

show verbose -- Show verbosity

show version -- Show what version of GDB this is

show warranty -- Various kinds of warranty you do not have

show watchdog -- Show watchdog timer

show width -- Show number of characters gdb thinks are in a line

show write -- Show writing into executable and core files

backtrace -- Print backtrace of all stack frames

bt -- Print backtrace of all stack frames

down -- Select and print stack frame called by this one

frame -- Select and print a stack frame

return -- Make selected stack frame return to its caller

select-frame -- Select a stack frame without printing anything

up -- Select and print stack frame that called this one

info -- Generic command for showing things about the program being debugged

macro -- Prefix for commands dealing with C preprocessor macros

show -- Generic command for showing things about the debugger

apropos -- Search for commands matching a REGEXP

define -- Define a new command name

document -- Document a user-defined command

dont-repeat -- Don't repeat this command

down-silently -- Same as the `down' command

echo -- Print a constant string

help -- Print list of commands

if -- Execute nested commands once IF the conditional expression is non zero

interpreter-exec -- Execute a command in an interpreter

make -- Run the ``make'' program using the rest of the line as arguments

open -- Open the named source file in an application determined by LaunchServices

overlay -- Commands for debugging overlays

quit -- Exit gdb

shell -- Execute the rest of the line as a shell command

source -- Read commands from a file named FILE

up-silently -- Same as the `up' command

while -- Execute nested commands WHILE the conditional expression is non zero

target async -- Use a remote computer via a serial line

target child -- Unix child process (started by the "run" command)

target core-macho -- Use a core file as a target

target darwin-kernel -- Debug a running Darwin kernel; use 'attach' to begin

target exec -- Use an executable file as a target

target extended-async -- Use a remote computer via a serial line

target extended-remote -- Use a remote computer via a serial line

target macos-child -- Mac OS X child process (started by the "run" command)

target macos-exec -- Mac OS X executable

target remote -- Use a remote computer via a serial line

target remote-kdp -- Remotely debug a Mac OS X system using KDP

target remote-macosx -- Connect to a remote macosx device with shared library support using remote target

target remote-mobile -- Connect to a remote mobile device

tfind end -- Synonym for 'none'

tfind line -- Select a trace frame by source line

tfind none -- De-select any trace frame and resume 'live' debugging

tfind outside -- Select a trace frame whose PC is outside the given range

tfind pc -- Select a trace frame by PC

tfind range -- Select a trace frame whose PC is in the given range

tfind start -- Select the first trace frame in the trace buffer

tfind tracepoint -- Select a trace frame by tracepoint number

thread apply -- Apply a command to a list of threads

thread dont-suspend-while-stepping -- Usage: on|off <THREAD ID>|-port <EXPR>Toggle whether to not suspend this thread while single stepping the target on or off

thread resume -- Decrement the suspend count of a thread

thread suspend -- Increment the suspend count of a thread

actions -- Specify the actions to be taken at a tracepoint

collect -- Specify one or more data items to be collected at a tracepoint

end -- Ends a list of commands or actions

passcount -- Set the passcount for a tracepoint

save-tracepoints -- Save current tracepoint definitions as a script

tdump -- Print everything collected at the current tracepoint

tfind -- Select a trace frame;

trace -- Set a tracepoint at a specified line or function or address

tstart -- Start trace data collection

tstatus -- Display the status of the current trace data collection

tstop -- Stop trace data collection

while-stepping -- Specify single-stepping behavior at a tracepoint

unset environment -- Cancel environment variable VAR for the program

(gdb)

Creative Commons License
2011/05/15 08:28 2011/05/15 08:28
MAC OS X에서 스팟라이트가 먹통이 되었을 때 쓸만한 팁.

터미널에서 mdutil 이라고 입력해보면 자세한 설명이 나온다.


Usage: mdutil -pEsa -i (on|off) volume ...
Utility to manage Spotlight indexes.
-p Publish metadata.
-i (on|off) Turn indexing on or off.
-E Erase and rebuild index.
-s Print indexing status.
-a Apply command to all volumes.
-v Display verbose information.
NOTE: Run as owner for network homes, otherwise run as root.


검색해보면

sudo mduitl -E /

로 하라고 나오는데, 살짝 맛간 경우는 상관없지만 아예 꺼져있는 경우는 안 먹는다.

 

그때는 다음과 같이 써준다.

sudo mdutil -i on /

이렇게 하면  /(시스템 루트)의 인덱싱을 on한다.
위와 합치면

sudo mdutil -E -i on /


이렇게 하면 온하면서 리빌드해줄 것이다.

/대신 다른 이름을 써주면 그 곳을 인덱싱한다. (ex: /Volumes/EXT_HDD)


Creative Commons License
2011/05/09 04:27 2011/05/09 04:27
브레이크포인트 잡고 무식하게 걍 다 로그 찍어보는 거지 뭐.. ㅡㅅ-);;

인생 별 거 있나. 하다 보면 익숙해지겠지..ㅡㅅ-);;;

사용자 삽입 이미지


어찌되었건, 로그 찍어서 살펴본 덕에 돌아가는 거 파악 끝. ㅡㅅ-);


Creative Commons License
2011/05/08 22:51 2011/05/08 22:51
드라이크님 주최 촬영회에서

사용자 삽입 이미지
Creative Commons License
2011/04/16 21:59 2011/04/16 21:59
차에 AUX 단자를 추가하긴했지만, 입력은 1개.

내비게이션과 iPHONE의 블루투스단말 입력 두개를 받으려면 2개의 입력을 하나로 보내주는 게 필요했다. 그렇다고 믹서를 사서 붙이기는 배보다 배꼽이 더 큰 상황.

간단히 1K옴 짜리 저항 4개와 스테레오 잭을 이용해서 두개의 입력을 하나로 묶어주는 걸 만들었다.
각각의 오른쪽/왼쪽 선에 저항을 하나씩 붙여주고 그걸 묶어서 하나로 보내주면 된다.



사용자 삽입 이미지


만능기판에 대충 조립해준 뒤 잘 잘라내 수축 케이블로 잘 싸줬다.

이제 차에서 iPHONE의 블루투스 입력과 내비 소리를 모두 잘 들을 수 있게 됐다.



Creative Commons License
2011/04/06 20:22 2011/04/06 20:22
사용자 삽입 이미지


물티슈통에 물을 담고, 잘 찢어지지 않는 성질의 물티슈를 심지로 물을 빨아들이게 2-3장 끼워주고, USB전력으로 팬을 조용히 돌아가게 연결해주면 끝.

방이 너무 건조해서 하나 만들어봤음.
Creative Commons License
2011/04/02 18:08 2011/04/02 18:08
LD트레이가 잘 나오지 않고, 판이 튈 때가 있던 LDP.

날잡아 한번 청소해야지 했다가도 못했던 걸 밤새 뜯어 청소했군요.
구동부 기어를 하나하나 다 뽑고 그리스 닦고, 새로 그리스칠해주고 재조립했습니다.

렌즈도 알콜로 살짝 닦아줬고요.

일단 LD트레이 문제는 사라졌는데... LD튀는 문제는 어떨지 계속 테스트해봐야겠네요.

사용자 삽입 이미지

Creative Commons License
2011/03/26 04:25 2011/03/26 04:25

방송사가 쏘아 보낸 전파를 잘 수신해서 깨끗하게 보여주던 TV의 시대에서 시청자가 능동적으로 컨트롤 할 수 있는 TV의 시대로 바뀌고 있다. 기존 가전 업체들 중심에서 인터넷 업체를 중심으로 중심축이 옮겨가는 것을 놓고 줄다리기를 하는 모습이나 서로의 장점을 살려 상생하기 위한 전 세계적 연합군의 형성을 보며 어떻게 새롭게 열린 시장이 개편될지 흥미롭기도 하다. 그에 발맞춰 동영상 파일을 잘 재생해주는 것이 최우선 과제였던 동영상 플레이어 시대 역시 가고
, 사용자의 다양한 요구에 능동적으로 대응하는 스마트 TV 플레이어 시대가 왔다.
 

사람들은 편한 것을 원한다

과거에 비디오를 보려면 미리 준비해야 할 게 별로 없었다. VHS냐 β냐를 고르는 정도? 그나마 VHS 연합군이 승리한 덕분에 거의 세계적으로 표준은 VHS로 잡혔다. 그냥 빌리거나 사서 보면 됐다. LD VHD가 경쟁하던(그나마 VHD는 바로 사라졌다) 비디오디스크 시장도 있었지만, 국내엔 그다지 영향력을 행사하지 못했던 시장이었다. , 컴퓨터로 동영상을 볼 수 있는 시도도 있었으나, 당시 MS Video for Windows Apple QuickTime은 그저 재생되는데 의의를 두는 정도였다. 고작 128*96~320*240 픽셀 정도의 해상도 파일을 돌리는 정도로 사람들은 즐거워했다. 

아날로그에서 디지털까지, 각종 비디오 데크, 비디오 디스크 플레이어들. 이젠 돌려볼 일이 거의 없다.


90년대 초 중반 그랬던 것이 불과 20년 사이 엄청난 변화가 있었다. 아날로그 기록 미디어에서 디지털 미디어로, 방송도 아날로그에서 디지털로. SD급 영상에서 HD 영상의 시대로. VHS, β, LD 등으로 대표되던 아날로그 미디어 시대에서 DVD로 통일되고, 그것이 블루레이와 HD-DVD의 싸움을 거쳐 블루레이로 통일된다.

사용자 삽입 이미지

커버 아트 콜렉션도 하나의 즐거움이었던 LaserDisc.


새로운 변수도 생겼다. 방송, 기록 미디어의 발전과 함께 이 데이터를 다루는 기술도 고도로 발전해 큰 데이터를 압축하는 방법을 개인도 쉽게 사용할 수 있게 되었고, 그 정도의 데이터라면 눈 깜작할 사이 전송시킬 수 있는 인프라가 갖춰진 것이다.

사용자 삽입 이미지

누구나 집에서 간단하게 DVD, BluRay 디스크를 만들 수 있게 되었다. 소장중인 테이프의 화질 열화를 대비해 개인 제작한 DVD.


사람들은 편한 것을 원한다. 한 장의 용량이 큰 이미지는 JPEG등의 압축 방법을 이용해서 될 수 있는 대로 원본의 느낌을 해치지 않으면서 작게 만들어 휴대, 전송이 편하도록 했다. 정지 화상 다음에는 소리(음성/음악 등) 정보의 압축이 발전했고, 그다음에는 동영상이 그렇게 됐다. 물론 한 기관에서 한 게 아니라 동시에 여러 기관, 여러 연구자가 동시 다발적으로 발전시켰지만, 실질적으로 소비자들이 접한 순서는 정지 화상→소리정보→동영상의 순이다. 그래서 정지 화상, 소리 정보의 발전을 살펴보면 동영상의 발전 방향이 보인다.


MP3, MP3P로 대표되는 디지털 음원과 그 플레이어가 음원 시장에서 큰 자리를 차지하는 것처럼, 동영상과 동영상 플레이어도 분명히 그쪽을 따라가게 될 것이다. 휴대형 음악 재생 기기가 발전하고 그 음원 시장이 발전할 수 있었던 것은 그것이 편해서였고, 사람들이 그것을 추구했기 때문이다. 비디오라고 다를 이유가 없다. 비디오 한 편을 보려고 비디오 대여점을 찾거나, 방송할 때까지 기다리는 건 불편하다. 개선책으로 IP-TV가 있긴 하지만, 그것도 서비스 회사에서 준비된 컨텐츠를 벗어날 수 없다. 잠깐 TV를 떠나 컴퓨터 쪽을 살펴보면 웹하드 서비스 업체의 제휴 컨텐츠나 포탈에서 합법적인 동영상 데이터를 얻을 방법이 존재한다.


그렇게 가능은 하지만 이리저리 흩어진 것을 TV 앞으로 모아줄 무언가가 필요한 시점이다. 이런 소비자의 요구와 새로운 스마트 TV가 선보이는 시기, 그 모두를 만족하게 하기 위한 노력의 산물을 오늘 만나게 되었다.


 

제품사양

사용자 삽입 이미지



외관

개인적으로 깔끔한 제품을 좋아한다. 의미 없이 꾸며진 선들, 이리저리 시선을 분산시키는 디스플레이, LED들은 오히려 감점 요소라고 생각한다.

그래서인지, tbob.tv는 매우 맘에 들었다.

처음 tbob.tv와 만난 느낌은 직선과 곡선을 절제해 사용해,  깔끔하면서도 고광택 재질의 특징을 잘 살렸다는 것이었다. 개인적으로 TV가 반짝이는 건 그리 취향은 아니지만 최근 TV의 고광택 재질과도 잘 어울린다.

가격 절감 차원이었을진 모르지만, 전원을 넣었을 때 들어오는 파란색 LED가 외부로 드러나는 신호의 전부다. 어차피 모든 대화는 TV 화면을 통해서 하니 쓸모도 없는 장식을 붙여봐야 오히려 아름다움을 해친다. 불을 끄고 화면에 집중할 때 주변의 밝은 빛은 오히려 방해 요소다. 그런 이유로 많은 AV 기기들이 전면부 디스플레이 라이트 디밍 기능을 지원하지 않는가.

사용자 삽입 이미지
 윗면에는 커다란 배기구가 4개 보인다. 배기구를 잡고 tbob.tv라고 쓰여있는 뚜껑을 들어 올리면 하드디스크 장착 공간이 나온다. 이곳에 2.5인치 SATA II방식의 하드디스크를 장착해주면 주 저장장치로 사용할 수 있다.

사용자 삽입 이미지

물론, 주 저장장치로 내장 하드디스크를 쓰지 않아도 된다. 왼편에 붙어 있는 2개의 USB 단자에 외장 하드디스크를 장착하면 그것을 주 저장장치로 인식한다.  전류량은 USB단자당 500mA로 표시되어 있었다. 전기를 많이 잡아먹어서인지 1개의 단자만 연결하면 일부 PC에서 동작이 불안정했던 구형 외장 하드디스크도 USB 단자 1개 연결로 잘 동작했다. 일반적인 외장하드를 돌리기에는 충분한 전류가 나오는 것으로 보인다. 만약 전류량이 부족하다면 2개를 연결해서 해결할 수 있을 것이다.

사용자 삽입 이미지

하드뿐 아니라, USB 메모리카드, 메모리 카드 리더기도 잘 동작했다. 플라모델 키트를 고쳐서 SD카드 리더기로 쓰고 있는데, 꽤 어울렸다.

사용자 삽입 이미지

뒷면에는 왼쪽에서부터 순서대로 STEREO RCA, 컴포지트 비디오 RCA,  HDMI단자, 광출력 단자, 이더넷 단자, 전원 입력 단자가 있다.  

사용자 삽입 이미지

SMP8655에는 컴포넌트나 S-VIDEO출력도 준비되어 있으나, 제품에는 단가 문제인지 HDMI와 컴포지트 비디오 출력만 지원하는 것은 아쉬운 점이었다. 통합 단자 등을 마련해서 확장할 수 있도록 했으면 좀 더 다양한 TV나 모니터에서 사용할 수 있었을 텐데 하는 아쉬움이 드는 점이었다. 하지만, HDMI-DVI 변환 케이블도 있고, 요즘 TV라면 HDMI 단자는 기본으로 달려나오니 일반적인 상황에서는 별다른 문제가 될 것으로 보이진 않는다.

tbob.tv
에는 전원 스위치조차 없으므로, tbob.tv를 제어하기 위해서는 리모콘이 필수다. 스마트TV 플레이어 답게 리모콘은 다양한 기능을 제공한다.
 

사용자 삽입 이미지
 
아무래도 터치 인터페이스를 염두에 두고 개발된 플랫폼이다보니 커서를 움직이는 데는 마우스가 편하다. 그래서 왼쪽 위에는 마우스 포인트 조작용 버튼이 있다. 이것을 이용해서 상하좌우 자유롭게 커서를 움직일 수 있으나 버튼 조작의 한계로 그다지 편하진 않은 느낌이다. (실제 마우스를 USB 단자에 연결해서 쓸 수도 있다.) 오른쪽 위에는 방향키가 있는데, 거의 모든 조작은 이쪽을 통해서 할 수 있으므로 빠른 제어가 가능하다.  

그리고 검색 등을 위해 아래쪽에는 쿼티 키보드가 달려있다.

 

안드로이드?

최근 IT뉴스를 보면 가장 빈번히 등장하는 단어 중의 하나가 안드로이드일 것이다. 안드로이드는 휴대전화나 휴대기기를 움직이게 하고 사용자가 편하게 쓰도록 여러 프로그램을 모아놓은 통합 환경이라고 생각하면 편하다. 아무래도 대표적으로 스마트폰에서 쓰이고 있으므로 스마트폰용 OS로 발전한 것은 사실이다. 경쟁이 치열하고 아직도 발전형인 환경이다 보니 계속 판 올림을 해오고 있다. 재밌게도 완성된 버전별로 알파벳 첫 문자를 딴 후식 이름을 붙여두고 있는데, 주로 쓰이는 것은 2.1 이클레어(eclair:초콜렛 케이크) 2.2프로요(froyo:냉동 요구르트). 이후 진저브레드(Gingerbread:생강쿠키)가 소개될 예정이다.

사용자 삽입 이미지

안드로이드를 채용했다는 것은, 단순히 동영상만 재생할 수 있는 기계가 아니라 좀 더 똑똑한 녀석이 된다는 의미다. 이미 만들어 업체에서 제공하는 유용한 앱을 이용할 수도 있고, 개발자가 직접 tbob.tv를 제어할 앱을 만들어 올릴 수도 있다. 기본으로 제공하는 앱에서 부족한 건 자기가 스스로 만들어 추가할 수도 있다는 얘기다.

또 다중작업도 지원한다. 제작자에게는 골치 아픈 일일지 모르지만, 그런 것을 알 바 없는 최종 소비자에게는 아주 유용한 기능이다. 동영상을 보는 동안 노는 자원을 이용해서 다운로드 받는 것도 가능하다. 여러 가지 앱을 번갈아가며 사용하는 것도 가능하다.

개략적인 소개는 이것으로 끝내고 실제로 tbob.tv를 사용해 보자.


tbob.tv 스위치 온!

위에서도 언급했듯 tbob.tv 본체에는 전원을 켤 수 있는 스위치가 없다. 리모콘의 전원 스위치를 눌러 tbob.tv를 켰다. 검은 화면이 나타날 뿐, 아무런 반응이 없었다. 약 15초 후, 안드로이드 로고가 나타났다.

사용자 삽입 이미지

전원을 넣고 처음 15초 동안 아무런 반응이 없는 것은 조금 불안한 감이 있었다. 심플한 외관에 파란 동작 등. 하지만 볼만 들어오고 다른 표시가 없으니 이게 제대로 동작하는지, 뽑기가 잘못된 것인지, 고장 난 것은 아닌지 만감이 교차했다. 이 시간을 줄일 수 있다면 줄이거나 다른 표시가 나올 수 있도록 하는 게 좋을 것으로 보이나, 하드웨어적인 특성이라 쉽게 고쳐질 수 있을는지 걱정이다.
테스트용 샘플 제품과 달리 양산품은 초기 전원을 넣으면, 파란 동작 등이 점멸하는 것으로 동작 중임을 알리도록 바뀌었다고 한다.

잠시 뒤 메인 화면이 나타났다.

사용자 삽입 이미지



동영상 재생 기능

홈에서 비디오-모든 파일을 선택하거나 파일을 선택해서 주 저장장치나 USB 장치에 연결된 외장 하드디스크의 데이터를 선택하면 바로 재생해 볼 수 있다.

사용자 삽입 이미지

물론, 네트워크 공유를 이용해서도 재생할 수 있다. 간단하게 Windows에서 폴더를 공유하고 앱스-네트워크 폴더를 선택한 다음, 자신의 컴퓨터를 찾아 공유한 폴더를 등록하면 이후로는 쉽게 홈의 비디오 쪽에서 공유한 폴더를 찾을 수 있다.
 
사용자 삽입 이미지

이제 동영상을 재생해보자. 샘플로 가진 애니메이션 파일을 돌려보기로 했다. 사용한 것은 바케모노가타리(化物語). 블루레이 타이틀로 가지고 있으나 블루레이 플레이어로 보기 번거로워서 추출해 재압축한 파일이다.  

사용자 삽입 이미지

별다른 문제 없이 잘 재생되었다.

사용자 삽입 이미지

아니, 동영상 재생을 목적으로 산 제품에서 재생이 안 된다면 그것은 말도 안 되는 문제일 테니 재생이 잘 되는 것은 당연하였다. 빨리 넘기기, 뒤로 넘기기 기능은 가속 기능이 있어 익숙해지는데 조금 시간이 걸렸다.

동영상을 묶을 때 1개의 영상 트랙과 2개의 음성트랙을 넣었는데,
메뉴-플레이어 설정-오디오 설정-오디오 트랙 번호를 통해 모두 재생해 볼 수 있었다.

사용자 삽입 이미지

다음은 자막 테스트. 메뉴-플레이어 설정-자막 설정을 통해서 표시 여부, 크기 및 위치, 투명도 설정을 할 수 있었다. 작게는 점부터 한 자가 화면 전체를 차지하도록 크게도 할 수 있었고, 위치도 상하 마음대로 조절할 수 있었다.

사용자 삽입 이미지

 다음은 순서대로 자막 비 표시 - 자막 표시 - 작게 만든 예 - 크게 만든 예 - 자막 투명이다. 크기와 위치는 방향키를 이용해서 자유롭게 조정 가능하다.
 

사용자 삽입 이미지

이번에는 같은 파일을 위에서 설명한 것처럼 공유 폴더 상에서 재생해 보았다. 역시 문제없이 재생되었다. 이번에는 블루레이 디스크를 재생시켜보기로 맘먹었다. 블루레이 디스크를 그대로 tbob.tv에 물릴 순 없으므로 Windows의 블루레이 디스크 드라이브를 이용하기로 한다. Windows에서 블루레이 디스크 드라이버를 공유(g드라이브)시키고, 이것을 tbob.tv에 등록하였다.

블루레이 디스크나 이미지를 바로 재생할 수 있으면 좋겠지만 불가능했으므로, 디스크 내 STREAM 폴더의 m2ts파일을 불러 보기로 했다.
 

사용자 삽입 이미지

화면은 보이나 탁탁 끊어지며 재생되었다. 파일의 비트레이트는 약 34MWindows머신은 기가비트 랜, 공유기도 기가비트 랜을 지원하는 모델이며 tbob.tv역시 10/100지원 제품이었으로 이론상 아무 문제 없이 재생되어야 했으나, 파일 전송속도가 나오질 않는 것으로 보인다. 압축한 파일은 네트워크상에서 문제없이 재생되었으므로, 네트워크를 이용해서 재생할 때에는 파일 관리가 필요할 것으로 보인다. NFS를 이용한 공유는 훨씬 속도가 빠르다고 하는데, 일단 이 정도로 테스트를 마치기로 했다. (조만간 테스트 후 추가하겠다)

물론 같은 m2ts파일을 하드디스크에 복사하고 재생하면 문제없이 재생한다.

사용자 삽입 이미지

이번에는 HDTV 저장 파일을 재생해보기로 했다. tp파일도 문제없이 재생되었다.

위정자에게 거슬리는 말이라도 자유롭게 할 수 있는 나라. 그런 자유가 있는 대한민국을 지지한다.

마지막으로 여러 샘플 파일로 테스트를 해 보았는데, 이제는 안 쓰이나 과거에 사용되던 저해상도 저효율 압축 포맷들은 지원이 안 되는 경우가 제법 있었다. 표준을 지키지 않았던 문제도 있고, SMP8655의 스펙 상 지원하지 않는 부분이므로 아쉽지만 어쩔 수 없었다. 그러나 최신 .H264파일이나 HDTV녹화 파일, 블루레이 파일은 제대로 재생시켜주고 있었다.

그 외에 아직은 개발 버전이라서 그런지, 일반적으로 많이 애용되는 동영상 포맷 외의 m2ts, tp파일은 앞으로 넘기기, 뒤로 넘기기가 불가능하였다. 정식 버전에서는 이와 함께 넘기기 기능도 개선되리라 생각한다.

 



tbob.tv로 컨텐츠의 바다를!

tbob.tv의 앱 중에는 피디팝 앱이 있다. 국내 유명 웹하드인 피디팝과의 제휴로, 번거롭게 컴퓨터를 켜고 파일을 다운 받아 옮기거나, 공유를 위해 켜놓거나 할 필요없이  피디팝의 수많은 컨텐츠를 자유롭게 검색, 다운로드 할 수 있다.

-앱스-앱 다운로드에서 피디팝 앱을 다운로드 받으면 사용할 수 있다. 만약 앱 목록에 나오지 않는다면, 설정-응용프로그램-업데이트서버:대한민국으로 세팅되어 있는지 확인해야 한다.

사용자 삽입 이미지

다운로드가 끝났으면 실행시키고, 로그인한다. 새로운 계정은 현재 tbob.tv에서 지원하지 않으므로 일단 홈-인터넷이나,  컴 등에서 가입한다. 신규가입 시 제품과 함께 제공한 20GB 무료 다운로드 상품권을 이용하여 별다른 준비 없이 바로 피디팝을 이용할 수 있다.
 

사용자 삽입 이미지


카테고리는 크게 영화, 방송, 애니, 성인으로 되어 있으며 각각 세부 분류로 파일을 선택할 수 있다. 또 맨 위의 검색창을 이용하면 빠르게 파일을 찾을 수도 있다.

사용자 삽입 이미지

성인 컨텐츠의 경우 메뉴를 눌러 나오는 성인컨텐츠 설정 창에서 암호를 설정하여 미성년자의 이용을 막을 수도 있다.


사용자 삽입 이미지


필요한 파일을 찾기 위해 검색창에 트레일이라고 검색어를 넣었다. 동경 게임쇼에서 공개한 파이널판타지 트레일러가 있어 내용을 살펴보고, 다운로드를 받았다.

사용자 삽입 이미지

다 다운로드 받은 파일은 주 저장 디스크에 저장된다. 여러 개의 파일을 다운로드 걸어놨더라도 보고 싶은 파일의 다운로드가 끝났다면 중간에 피디팝 앱을 종료하고 동영상을 재생할 수 있다. 물론, 나머지 파일들은 백그라운드로 다운로드 받게 된다.
 

사용자 삽입 이미지


아직 베타버전이라 정리가 되어 있지 않으나, 정식 버전에서는 [제휴 컨텐츠]등의 전문 검색을 통해 유용한 최신 자료를 빠르고 손쉽게 합리적인 가격으로 다운로드 받아 볼 수 있다고 한다. 더욱 쉽게 굿 다운로더가 되어 보자.

 



전 세계 모든 동영상을 살펴본다

누구나 잘 알고 있기에 설명하기조차 민망한 전 세계 최대, 최다의 동영상 공유 사이트 YouTube. tbob.tv YouTube 을 통해 쉽게 YouTube를 즐길 수 있다. 추천 메뉴 외에도 검색을 통해 원하는 동영상을 쉽게 찾을 수 있다.

앱스-앱 다운로드에서 YouTube 을 다운로드 받는다.

사용자 삽입 이미지


다운로드가 끝나면 실행시켜 보자. 방향키를 좌우로 움직이면 여러 추천 메뉴들이 나타난다. 마음대로 골라 보면 된다.

사용자 삽입 이미지

 
이제 오른쪽 방향키를 눌러 설정화면으로 가자. 검색기간이나 지역 등의 자신에게 필요한 설정을 마치면 더욱 사용자의 의도에 맞는 결과물을 보기 쉽다.


사용자 삽입 이미지

필요한 동영상이 있다면, 검색 기능을 이용한다.

사용자 삽입 이미지

HD, 1080를 검색어로 함께 넣으면 HD동영상이 나오는 비율이 높아진다.

검색으로 얻은 결과물은 RSS등록을 하면 언제나 비디오-피드를 통해서 25개까지 정리된 것을 볼 수 있다.

사용자 삽입 이미지


피드에서 갱신주기, 일정기간 후 삭제여부 등을 설정할 수 있다.

사용자 삽입 이미지

테스트로 피드에서 파일을 선택하고 다운로드를 눌러 봤다. 일부 파일은 제한이 걸려있어 다운로드가 불가능했지만, 아래와 같이 다운로드가 가능한 파일도 있었다.

사용자 삽입 이미지

1986년경 국내에도 바다의 소녀 엘피란 제목으로 방송되었던 푸른 바다의 엘피(青い海のエルフィ). 그 주제곡 Mermaid in blue.  무척 맘에 드는 노래인지라 YouTube를 링크해놓고 자주 듣곤 했는데, 더 쉽게 들을 수 있게 되었다.

사용자 삽입 이미지



전세계 멀티미디어 지식의 보고

비디오-인터넷 비디오를 통해 팟캐스트를 볼 수도 있다. 간단하게 설명하자면, 인터넷상에 다양한 주제로 공개한 비디오 파일을 특정 카테고리로 정리하고 쉽게 구독해볼 수 있도록 해놓은 것이다. tbob.tv을 대한민국 서버로 세팅하면 인터넷 비디오에 한국 팟캐스트가 추가된다. 
 

사용자 삽입 이미지

예술, 비즈니스, 교육, 음악, 뉴스와 정치, 지역과 종교, 자동차, 스포츠와 오락, 트레이닝, TV와 필름이라는 분류로 가벼운 소재에서 무거운 소재까지, 다양한 동영상이 존재한다.

사용자 삽입 이미지

YouTube때도 다뤘지만, 맘에 드는 것은 일일이 메뉴를 찾아볼 필요 없이 RSS구독을 하면 된다. 개인적으로는 한국 팟캐스트 외의 VIDEO PODCAST-GAMES AND HOBBIES-Automotive Car Tech(HD)도 맘에 들기 때문에 구독 채널로 등록해 놓았다. 이렇게 자신만의 취향에 맞춰 정리해두면 언제나 최신 정보를 쉽게 구독할 수 있어서 편하다.
 
사용자 삽입 이미지

 



다양한 멀티미디어 기능

OS로 안드로이드를 사용하고 있기 때문에, 동영상 플레이어로서의 기능 외에도 다양한 멀티미디어 기기로 사용할 수 있다. 웹 브라우저는 기본이며 갤러리 앱을 이용하여 TV를 액자로 쓸 수도 있다.

사용자 삽입 이미지


슬라이드쇼 등의 기능도 지원하니 그동안 찍은 사진들을 정리해서 큰 화면으로 볼 수 있어 좋았다.

간단한 앱은 기본 제공하나 보다 많은 기능을 원할 땐 TV앱스토어에서 여러 가지 앱을 다운로드 받을 수 있다.

간단히 몇가지 살펴보기로 하자.
구글 지도 앱을 다운 받아 약속 장소의 지도를 살펴볼 수도 있다. 검색창에 주소나 유명한 지명을 입력하면 바로 찾아주며, 주변의 상권, 교통 안내도 볼 수 있다.
 

사용자 삽입 이미지


또, Web Music
으로 원하는 곡을 들을 수도 있다. 인터넷에 떠도는 각종 음악 파일을 검색해주는 앱이다. 추억의 TV외화 주제곡이나 영화명을 쳐봤더니 바로 바로 검색되어 나왔다. 좋아하는 곡은 ♥로 등록해두면, 따로 검색하지 않고 바로 들을 수 있어서 편하다.

사용자 삽입 이미지

imdb 앱을 이용하면 최신 영화정보도 알 수 있고 sudoku앱을 다운 받으면 시간 보내기 좋은 게임을 즐길 수도 있다. 아직은 개발 중이라 이스타미디어에서 제공하는 앱 위주로 구성되어 있으나, 기기에 맞춘 사용자 앱을 등록할 수 있게 할 예정이라고 들었다.


아직은 설익은, 그러나 무한한 가능성을 지닌 스마트 TV 플레이어

간단하게 동영상 재생, 웹하드 연동, 인터넷 동영상 재생 위주로 tbob.tv의 기본기를 체크해 보았다. 파일을 재생하고 보여주는 데는 일단 합격점을 줄 수 있었다. 많은 기기가 추가 기능은 펌웨어에 공간이 남으면 서비스로 넣어주는데 그치는 것에 반해 안드로이드를 이용 본격적인 기능 확장을 노린 점도 후한 점수를 줄 수 있다. 실제 그것으로 웹하드와의 연동, 유튜브와의 연동도 쉽게 이뤄졌고 그 외의 앱으로 TV를 보다 스마트하게 바꿔놓았다.

과거 리눅스를 커스터마이즈해 사용했던 동영상 플레이어를 사용자들이 스스로 뜯어 고쳐서 다양한 기능을 추가하여 사용하는 것을 본 적이 있다. 하지만, 이번 제품은 안드로이드를 사용 사용자가 스스로 발전시켜나갈 가능성을 남겨두었다. 또 현재는 2.1 이클레어가 탑재되어 있으나, 조만간 2.2 프로요로 업데이트 되면 더욱 안정화되고 최적화된 성능을 선보일 것이다.

물론, 장점만 있는 것은 아니다. 아직은 개발단계인지라 UX를 반영한 UI의 일관성, 편의성에 대한 개선 필요성이 눈에 띈다. 이번 리뷰를 하면서 사용에 불편했던 점, 일관적, 직관적으로 개선할 필요가 있는 부분에 대해서는 따로 리스트를 만들어 정리 중이며 이것을 제작사에 전달하기로 했다. 제작사 측에서는 적극적으로 반영하기로 약속했다.

단지 수동적으로 날아오는 컨텐츠를 소비하던 TV에서 사용자 주도로 컨텐츠를 마음대로 조리하고 나눌 수 있는 스마트 TV의 시대. 많은 메이커가 스마트TV를 주장하며 신제품을 쏟아내고 있지만, 집에 적어도 한 대씩은 가진 모든 TV를 스마트 TV로 바꿔줄 수 있는 범용 결전 인형 병기 범용성을 지닌 장치인 tbob.tv는 스마트TV시대에 큰 역할을 할 것으로 기대한다.

 

장점

동영상 공유 사이트, 웹 하드 등과의 연계로 풍부한 컨텐츠로의 접근성이 좋다.
STM8655를 사용, 고화질 동영상 재생 가능하다.
안드로이드를 채용하여 다기능, 앞으로의 발전성이 기대된다.
홈시어터 PC를 대체할 미디어 센터로 부족함이 없다.

단점

리모콘 조작이 불편하다.
안드로이드 버전(2.1)과 기기 스펙의 제한으로 모든 앱을 쓸 수 있진 않다.
(2.2는 업데이트 예정)
아직은 완성도 면에서 넓이는 넓으나 깊이가 부족하다.



* 개발 중의 제품으로 리뷰를 작성하였으므로, 정식 출시 후에는 변경 점이 있을 수 있습니다.



2011.03.20.(작성)
2011.03.21.(수정)
2011.03.25.(추가)
 http://asteris.pe.kr

 

 

Creative Commons License
2011/03/20 22:42 2011/03/20 22:42
사용자 삽입 이미지
Creative Commons License
2011/03/19 18:48 2011/03/19 18:48

콘솔용 명령으로 메모리 할당 테스트


dt--;NSLog(@"dt:-1:%d",dt);

// NSLog(@"dt:%d", [imgView retainCount]);  <- 정확하게는 요쪽.

사용자 삽입 이미지
그렇구만.

아, 선언할 때 잡아준 것도 해제해줘야하는구나.

Creative Commons License
2011/02/25 10:35 2011/02/25 10:35
파일을 백업 디스크에 복사하는 중 오류가 발생하였기 때문에 백업을 수행할 수 없습니다.
일시적인 문제가 있습니다. 나중에 다시 백업을 시도하십시오. 문제가 계속 발생하면 디스크 유틸리티를 사용하여 백업 디스크를 복구하십시오.
사용자 삽입 이미지

아무런 문제도 없는 백업디스크. 혹시나해서 몇 번이나 Disk Utility로 체크해봤지만 문제 없다. 그리고 설정을 바꿔서 다른 외장 하드디스크에 백업하도록 해도 결과는 마찬가지.

이유는 새로 추가한 앱의 퍼미션 문제였다. 다른 것과 다른 퍼미션이 세팅되어있었기에 타임머신에서 액세스하지 못한 모양이다. 마지막 백업 시점 이후 추가한 앱 등을 살펴보고 퍼미션이 이상하다면 변경해주거나, 삭제하고 다시 테스트해보면 문제가 해결 될 가능성이 있다.


Creative Commons License
2011/02/24 12:33 2011/02/24 12:33
KURZWEIL PC-3시리즈를 위한 2.0 대응 큐베이스 패치 파일입니다.
테스트는 안 했습니다만, ㅡㅅ-);;;;; 문제 없이 동작할 것으로 예상됩니다 ㅡㅅ-);;;;;;;;;;;;
http://asteris.pe.kr/blog/962    <- 여기가 패치 파일을 관리하는 페이지 이므로 종종 찾아주시길, 불시 업데이트가 이뤄질 수도 있습니다.


파일 다운 받기(Download / ダウンロード) : kurzweil_PC3X_v2000.zip
대응 OS 버전(PC3x OS Ver. / 対応OSバージョン) : 2.00
스크립트 버전(Script Ver. / スクリプト・バージョン) : 2.00.1

Creative Commons License
2011/01/13 01:27 2011/01/13 01:27
디노아저씨가 새차를 뽑은 기념으로 만든 스티커

이번에는 다색작업. 우선 일러스트레이터에서 기본 디자인을 하고...

사용자 삽입 이미지


끝나면 각각 출력해줍니다.
색별로 나누어 원하는 부분을 합하고..

사용자 삽입 이미지

투명 시트지를 붙여 주면 완성

사용자 삽입 이미지


실차 부착 사진은 나중에. ㅇㅂㅇ)/

실차 사진 추가----------

사용자 삽입 이미지

사진제공 디노님
Creative Commons License
2011/01/08 18:00 2011/01/08 18:00
그동안 쓰던 개조 라이트가 조금 어두운듯하여 새로 라이트를 들였다.


사용자 삽입 이미지


사실 안바꾸고 있던 이유 중 하나는 맘에 드는 디자인이 없다는 것이 가장 큰 이유였는데, 우연히 중국쪽에서 나름 깔끔한 녀석을 하나 발견해서 바로 샀다. 국내에서 팔리는 비슷한 급 제품의 1/2-1/3가격 정도.

전원 상태는 본체 뒤의 스위치 색이 녹색->파란색->주황색 등으로 표시되기도 하고, 배터리에 나와있는 전압계로도 확인이 가능하다.


사용자 삽입 이미지


사용자 삽입 이미지
Creative Commons License
2010/11/13 13:44 2010/11/13 13:44
매번 검색할 때마다 VHS만 나와서 포기하고 있었는데, 어느샌가 DVD로 출시됐다.

바로 주문. 오늘 받아봤다.

사용자 삽입 이미지
Creative Commons License
2010/11/11 23:17 2010/11/11 23:17
GNUstep의 Shell(MinGW)조차 메모리 문제로 안뜬다. ㅡㅅ-);

사용자 삽입 이미지

편법(?)을 동원해서 겨우 띄웠다.
Creative Commons License
2010/11/09 13:25 2010/11/09 13:25

이제부터 시작.
사용자 삽입 이미지
Creative Commons License
2010/11/01 00:30 2010/11/01 00:30
애플 스토어에서 구입한다면야 언제나 신품이 오겠지만, 한 푼이라도 아끼고자 옥션등의 쇼핑몰에서 구입하면 미리 받아둔 제품을 발송해준다. 뭐, 하드웨어야 계속 신제품이 들어오므로 큰 문제가 없지만 애플캐어의 경우 한참 지난 재고가 오는 경우가 있다.

만약 구형 애플캐어 (안의 등록 코드가 모두 숫자로 된 것)를 받았다면 등록시 구매 증명을 요구하는 경우가 있다.

이때 다음의 자료를 준비하자.

1. 영수증 : 아래와 같은 오픈 마켓 영수증은 구매 증명이 안 된다. 애플에서 원하는 건 "공식지정 판매처"의 영수증이다. 옥션이나 쥐마켓 같은 곳은 "공식 판매처"가 아니므로 그 안에서 실제로 판 업체에게 "등록용 영수증"을 발급해달라고 한다.

다음과 같은 오픈마켓의 영수증은 인정되질 않는다.
사용자 삽입 이미지


즉 아래와 같은 영수증이 필요하다.
여기에는 구매일, 공식 판매처명, 구매 품목, 총 구매가격이 모두 나와있다.

사용자 삽입 이미지


2. 애플 캐어 시리얼 넘버 : 박스 밑을 살펴보면 바코드와 함께 등록코드 말고 시리얼 넘버가 있다. 이것을  스캔 받거나 디카로 찍어 준비해둔다.

사용자 삽입 이미지



3. 이 둘을 등록 시 첨부한다. 외국에서 대처하기 때문에 영수증의 정보를 잘못 파악해 만약 옥션등으로 앞쪽에 나와있다고 거절하는 경우가 있는데 이때는 그냥 무조건 애플 코리아 고객 지원센터에 전화를 한다. 거절 시 온 메일에 보면 Case ID : 라고 되어있는 숫자가 있는데, 이걸 불러주면 알아서 검색하고 답을 찾아준다. 만약 추가로 팩스를 보냈는데도 엉뚱한 답이 온다면 다시 전화를 걸어 영수증을 그쪽(애플 코리아)으로 보내줄테니 대신 처리해달라고 요청한다. 그러면 그쪽에서 처리해줄 것이다.

애플 코리아가 국내에서 모든 고객지원을 담당한다면 발생하지 않는 일이겠지만, 외국에서 관리하고 한국에선 서포트 정도 하는 모양으로 뭔가 원활한 소통이 안 될 경우가 있다.  그래서인지 그런 면에 대해서는 미안해하고, 매우 친절하게 대응해준다. 사실 그런 불편함이 없는 게 최고겠지만 일단 문제가 발생했다면 애플 코리아의 지원을 최대한 요청해 이용하도록 한다.



Creative Commons License
2010/10/31 01:39 2010/10/31 01:39