#define pr(a, b...) printf(a, b) /* (*A) */ #define pr(a, b...) printf(a, ##b) /* (*B) */ pr("Hello\n"); /* (*1) */ pr("Hello %s\n", "World"); /* (*2) */ pr("Hello %s %s\n", "My", "World"); /* (*3) */


GCC(C89)에서 사용할 수 있는 위의 두가지 macro는 언뜻 같아 보이지만 차이가 존재한다.
(*A) (*B) 모두 (*2)와 (*3) 같은 경우에서 정상적으로 잘 동작한다.
그런데, (*1)의 경우를 보면, 1은 macro에서 정의하고 있는 두번째 arguement가 없는 경우다. 즉 macro argument 'b'가 없다.
따라서 preprocessing결과를 생각해보면, (*A) (*B) 모두

printf(a, )

가 되어서 compile error가 나야 할 것 같은데, (*A)와 같이 정의하면, compile error가 발생하고, (*B)와 같이 정의하면 정상동작한다.
GCC spec.을 살펴보지 않았으나, 주의할 필요가 있어서 적어 둔다. (재미있지 않은가?)

Priority : (high) *** <---> * (low)

*** Widget을 만들어서 최신 피드를 보여 줄 수 있게 하고자 한다.

고려사항 :

각 channel/category별 widget을 만들 수 있게 하는건 어떤가? 즉 각 channel/category의 최신 update를 보여주는 widget을 만들 수 있게 하는것..

(여기에는 전체 channel/category의 widget도 만들 수 있게 해야 한다.)

=> 문제 : channel별이냐... category별이냐.... (category별이 더 나아 보이긴 하는데....)


* category <-> appWidgetId map은 DB에 저장하지 말고, local preference에 저장하는게 낫다.

  (DB에 넣게 되면, DB를 export하거나 import할때, 다양한 형태의 문제가 발생할 수 있다.)

  Preference file에 넣고, DB import시 preference의 mapping 내용을 전부 clear하는 방식이 낫다.


* appWidget에서 다양한 기능들을 하기 위해서는 여러가지 새로운 widget들 +service를 사용해야 한다. Android의 다양한 gadget, service API등을 충분히 검토해 보고 구현을 시작하자.

- AbsListView / ListView : setRemoteViewsAdapter

- RemoteViewsService

- RemoteViewsAdapter

- PendingIntent

- Animation on the appWidget

등등 고려해야할 것들이 너무 많다...


기타 확인 및 알아봐야 할 것들.

    <service android:name="WidgetService"
             android:permission="android.permission.BIND_REMOTEVIEWS" />



* category tab의 순서를 바꿀 수 있게 하기.

'Project > FeedHive' 카테고리의 다른 글

유저 가이드  (0) 2012.04.26

공지사항

아이콘/UI를 디자인 해 주실 분을 찾습니다.
현재는 Android 4.0 SDK에 공개된 것 + 
http://www.iconarchive.com/show/farm-fresh-icons-by-fatcow.html 의 icon을 사용하고 있습니다만, 아무래도 부족한 감이 많습니다.
어차피 무료 어플이고, 광고도 없고, 나중에는 소스코드까지 공개할 예정인 소프트웨어이므로, 보수를 드리거나 할 수 있는 건 아니여서, 링크웨어 혹은 공동 개발자로서 contribute해 주시는 쪽을 환영합니다.

소개


화면설명

채널 리스트 뷰

채널리스트 화면 시작시 이전에 문제가 발생한 적이 있고, 버그 레포트가 활성화되어 있다면 버그 레포트를 이메일로 보낼려고 시도한다 
A : 현재 채널들이 저장되어 있는 카테고리 이름, 복수의 카테고리가 있는 경우, 각각 탭의 형태로 보여진다.
B : 채널의 아이콘. 클릭하면, 해당 채널의 업데이트가 시작되면서 아이콘이 깜박이는 애니메이션이 시작된다.

     아이콘이 깜박이는 애니메이션은 현재 해당 채널의 업데이트가 진행중임을 나타낸다. 이때 아이콘을 클릭하면, 해당 업데이트가 취소된다.
     다른 모양의 아이콘이 깜박이는 애니매이션은 현재 채널의 업데이트가 현재 취소 중에 있음을 표시한다 
C : 채널의 타이틀
D : 채널의 업데이트가 마지막으로 성공한 시간. 
E : 채널의 위치를 한칸 위로 이동.
F : 채널의 위치를 한칸 아래로 이동.
G : 이전 업데이트 실행에 오류가 있음을 나타낸다. 아이템을 클릭하면 자세한 오류내용을 보여준다. 
H : 새로 추가된 채널을 업데이트 할때 실패한 경우는 채널의 URL이 채널 타이틀로 보여진다.
     잘못된 채널 URL이 입력되었을 경우 종종 볼 수 있다.
I : 마지막으로 업데이트가 성공한 이후 지나간 시간 (일 : 시간) ex. 1:4 => 하루 4시간 = 28시간
J : 지난 번 업데이트에서 새로운 피드가 있음을 표시.
K : 해당 채널에서 아이콘을 지원하지 않거나, 아이콘 이미지를 디코딩하는데 실패했음을 나타낸다.
     이후, 해당 채널에서 아이콘을 지원하거나, 사용자가 직접 채널 아이콘을 선택하면 정상적인 아이콘으로 바뀌어진다.

a : 현재 카테고리에 새로운 채널을 추가한다.
b : 새로운 카테고리를 추가한다.
c : 현재 카테고리를 삭제한다. 카테고리에 속한 모든 채널들은 기본 카테고리(첫번째 카테고리)로 이동한다.
d : 현재 카테고리의 이름을 변경한다.
e : 다운로드 받은 모든 파일들을(미디어 / 웹페이지)을 삭제한다. 다운로드가 진행중인 아이템이 있다면 메시지를 경고 메시지를 보여주고, 실제 삭제를 진행하지는 않는다.
f : 어플리케이션 설정 메뉴로 들어간다.
g : 미리 저장된 추천 채널리스트를 보고, 추가할 수 있다.
h : 어플리케이션의 정보를 보여준다.

채널 팝업 메뉴

A : 채널이 속할 카테고리를 변경한다. 
B : 채널의 프로파일을 설정한다. 
: 채널에 속한, 다운로드했던 모든 파일들을 전부 삭제한다.
     채널에 속한 아이템 중 다운로드가 진행 중인 것이 있다면 이 메뉴는 활성화 되지 않는다.
D : 채널 아이콘을 선택 (장치에 저장된 이미지 파일들 중 하나를 선택)해서 바꿀 수 있다.
E : 채널을 삭제한다. 채널이 삭제되더라도, 이전에 저장되었던 피드들까지 삭제되지는 않는다.
     채널이 업데이트 중이거나, 채널에 속한 아이템중 다운로드가 진행중인 것이 있다면 이 메뉴는 활성화되지 않는다.

채널 설정



A : 클릭하면 업데이트 시간을 추가할 수 있다. 
B : 채널이 자동 업데이트 되는 시간들을 나타낸다. "매일 *시에 업데이트 한다."는 뜻이다.

C : 현재 업데이트 시간을 삭제한다.
D : 채널이 업데이트 될때, 링크의 내용을 다운로드 하지 않는다.
     채널 업데이트가 빠르지만, 이후 피드의 내용을 읽기 위해서는 연결된 페이지로 이동해서 봐야한다. 
E : 채널이 업데이트 될때, 연결되 링크를 다운로드해서 장치에 저장한다.
     채널 업데이트 시간이 길어지고 밧데리 사용량이 많아지나, 이후에는 네트윀에 연결되어 있지 않더라도 빠르게 저장된 피드의 내용을 읽을 수 있다. 다운로드된 파일들은 이후 필요에 따라 언제든지 삭제할 수 있다.
F : 링크된 웹 페이지를 열때, 내부 브라우져를 사용한다. 따로 프로그램을 실행시키지 않으므로, 빠른 속도로 웹 페이지를 읽을 수 있다.
G : 링크된 웹 페이지를 열때, 외부 브라우져 프로그램(크롬, 파이어폭스 등)을 사용한다. 프로그램을 따로 실행해야하므로, 페이지를 읽는 속도는 좀 느리나, 다양하고 복잡한 기능의 웹 페이지를 열때 적당하다.

어플리케이션 설정

A : 동시에 수행 가능한 백그라운드 타스크 숫자를 결정한다. 장치의 성능이 따라 설정할 수 있다. 장치의 성능을 지나치게 넘어서 설정한 경우, 동시에 많은 업데이트를 수행시 과부하로 인해 업데이트/다운로드가 실패할 가능성이 높아진다.
B : 이메일을 통한 버그 레포트를 활성화/비활성화 시킨다.

피드 리스트 아이템 (미디어)

팟캐스트 같이 미디어가 연결된 채널의 경우 보여지는 아이템의 모습이다.
아이템을 클릭하면, 해당 미디어가 장치에 저장되어 있을 경우 보기/재생 등이 되고, 그렇지 않은 경우는 다운로드가 시작된다.
A : 현재 채널의 타이틀
B : 현재 채널을 업데이트 한다.
B'애니메이션은 현재 채널 업데이트가 진행중임을 나타낸다. 이때 아이콘을 클릭하면, 해당 업데이트가 취소된다.
     아이콘이 깜박이는 애니매이션은 현재 채널 업데이트가 취소중임을 나타낸다.
C : 아이템의 타이틀
D : 아이템이 발행된 시간
E : 미디어 파일의 길이 (재생시간 혹은 파일 크기 등등)
F : 연결된 미디어 데이타가 장치에 저장되어 있음을 나타낸다. 클릭되면 다운받아진 미디어 파일이 재생된다.
G : 애니매이션은 연결된 미디어를 다운로드 중임을 보여주고, 숫자는 다운로드 진행 상황을 보여준다.
     다운로드 받는 파일의 크기를 알 수 없는 경우 '??%'로 표시된다.
      다운로드가 취소중이거나 (아이콘이 깜박이는 애니메이션이 보여진다.) 이전 다운로드 실행에 오류가 있음 (다른 형태의 아이콘으로 바뀐다.)을 나타낸다. 아이템을 클릭하면 자세한 오류내용을 보여준다.

피드 아이템 리스트 뷰 (링크)


뉴스, 블로그 등과 같은 일반적인 피드의 경우 보여지는 모습이다.
리스트 아이템을 클릭하면, 페이지가 현재 장치에 저장되어 있다면, 저장된 페이지를 열어서 보여주고 그렇지 않다면, 링크를 열어서 보여준다.
대부분의 경우 위의 "피드 리스트 아이템 (미디어)"와 동일하다.
A : 페이지가 장치에 저장되어 있음을 나타낸다. 클릭하면 장치에 저장된 페이지를 열어서 보여준다.
B : 페이지가 장치에 저장되어 있지 않음을 나타낸다. 클릭하면 인터넷을 통해 해당 페이지를 열어서 보여준다.

아이템 뷰




: 장치에 저장되어 있지 않은 페이지를 웹을 통해 열었을 경우 보여진다.
: 장치에 페이지가 저장되어 있으나, 웹을 통해서 페이지를 열었을 경우
: 장치에 저장되어 있는 페이지를 열었울 경우.
       (주의 : 실제 내용을 담은 페이지가 아니라, redirect시키는 페이지의 경우, 다운로드 하더라도, offline으로 열 수 없다.)
A : 클릭하면, 해당 페이지를 장치에 다운로드 받기 시작한다.
     애니매이션은 현재 페이지가 다운로드 중임을 나타낸다.
     깜박이는 애니매이션은 페이지 다운도르가 취소 중임을 나타낸다.
     페이지 다운로드에 오류가 있음을 나타낸다.
     클릭하면 자세한 오류 정보를 보여준다.
     (중요) 인증(로그인)이 필요한 웹 페이지의 경우는 다운로드 할 수 없다.(항상 네트웤으로 접속할 수 없다는 에러를 발생시킨다.)
B클릭하면, 페이지의 링크를 연다.

미리 저장된 채널

A : 채널의 분류 를 나타낸다. 
B : 아직 등록되어 있지 않은 채널. 아이템을 클릭하면 해당 채널이 현재의 카테고리에 추가된다.

C : 이미 등록되어 있는 채널

버그레포트 이메일

프로그램에 문제가 발생했었고, 에러 레포트가 활성화 되어 있을 경우 채널 리스트에 들어가기 에러 레포트를 개발자의 이메일로 보낼 수 있다.


'Project > FeedHive' 카테고리의 다른 글

기능 개선 Plan.  (0) 2012.04.26
[M-x replace-string] : unconditional replace
[M-%] : find and replace [space/y (yes) | DEL/n (no)]]


emacs -l .emacs-ede.el tree.c

================= Etc ===============
[M-x replace-string] : unconditional replace
[M-%] : find and replace [space/y (yes) | DEL/n (no)]]

emacs -l .emacs-ede.el tree.c

=================  Hightlight ===============
C-x w r : unhighlight-regexp
C-x w h : highlight-regexp

=================  Diff Mode (M-x diff) ===============
M-n
Move to the next hunk-start (diff-hunk-next).
This command has a side effect: it refines the hunk you move to, highlighting its changes with better granularity. To disable this feature, type M-x diff-auto-refine-mode to toggle off the minor mode Diff Auto-Refine mode. To disable Diff Auto Refine mode by default, add this to your init file (see Hooks):

          (add-hook 'diff-mode-hook
                    (lambda () (diff-auto-refine-mode -1)))

M-p
Move to the previous hunk-start (diff-hunk-prev). Like M-n, this has the side-effect of refining the hunk you move to, unless you disable Diff Auto-Refine mode.

M-}
Move to the next file-start, in a multi-file patch (diff-file-next).

M-{
Move to the previous file-start, in a multi-file patch (diff-file-prev).

M-k
Kill the hunk at point (diff-hunk-kill).

M-K
In a multi-file patch, kill the current file part. (diff-file-kill).

C-c C-a
Apply this hunk to its target file (diff-apply-hunk). With a prefix argument of C-u, revert this hunk.

C-c C-b
Highlight the changes of the hunk at point with a finer granularity (diff-refine-hunk). This allows you to see exactly which parts of each changed line were actually changed.

C-c C-c
Go to the source file and line corresponding to this hunk (diff-goto-source).

C-c C-e
Start an Ediff session with the patch (diff-ediff-patch). See Ediff.

C-c C-n
Restrict the view to the current hunk (diff-restrict-view). See Narrowing. With a prefix argument of C-u, restrict the view to the current file of a multiple-file patch. To widen again, use C-x n w (widen).

C-c C-r
Reverse the direction of comparison for the entire buffer (diff-reverse-direction).

C-c C-s
Split the hunk at point (diff-split-hunk). This is for manually editing patches, and only works with the unified diff format produced by the -u or --unified options to the diff program. If you need to split a hunk in the context diff format produced by the -c or --context options to diff, first convert the buffer to the unified diff format with C-c C-u.

C-c C-d
Convert the entire buffer to the context diff format (diff-unified->context). With a prefix argument, convert only the text within the region.

C-c C-u
Convert the entire buffer to unified diff format (diff-context->unified). With a prefix argument, convert unified format to context format. When the mark is active, convert only the text within the region.

C-c C-w
Refine the current hunk so that it disregards changes in whitespace (diff-refine-hunk).

C-x 4 A
Generate a ChangeLog entry, like C-x 4 a does (see Change Log), for each one of the hunks (diff-add-change-log-entries-other-window). This creates a skeleton of the log of changes that you can later fill with the actual descriptions of the changes. C-x 4 a itself in Diff mode operates on behalf of the current hunk's file, but gets the function name from the patch itself. This is useful for making log entries for functions that are deleted by the patch.

================= ECB ===============
C-c . g 1
C-c . g d
C-c . g s
C-c . g h
C-c . g m

================= Modes ===============
M-x hexl-mode : hex edit mode
M-x calculator :
M-x calendar

================= CC Mode ===============
C-c C-s : To know which syntatic symbols affect the offset calculations for the line.
C-c C-o : To change offset of syntatic symbol interactively.
M-h C-c C-c : comment region
M-h C-u C-c C-c" : uncomment region
M-C-f    : To the end of block - ex parenthesis, bracket, brace
M-C-b    : To the beginning of block
========================================================
EDE :
+ To add files easily : DirEd mode -> Mark files ("m") -> ". a" to add to target
+ use "M-x customize-target RET" while inside some source file in a target to customize things like compiler flags.

C-x r [SPC] [CHR]
C-x r j [CHR]

================= Key code =============
C : control
M : meta (alt)
S : shift
C-S : control + shift
<f8> : F8 key
<left> <right> <down> <up>
\e : escape key (usually same with meta key)
[(control return)] : control + return key.

(global-set-key [f9] 'alexott-compile)

================= Keyboard macro =============
'C-x (' : start defining a keyboard macro
'C-x )' : stop defining the keyboard macro
'C-x e' : execute the keyboard macro
'C-u 37 C-x e' : execute the macro 37 times.
'C-u 0 C-x e' : execute the macro an infinite number of times until the end of file is reached.
'M-x name-last-kbd-macro' : Name the last-defined keyboard macro
'M-x my-macro' : execute macro by name.

================= Search =============
M-s w : If incremental search is active, toggle word search mode (isearch-toggle-word); otherwise, begin an incremental forward word search (isearch-forward-word).
M-s w <RET> words <RET> : Search for words, using a forward nonincremental word search.
M-s w C-r <RET> words <RET> : Search backward for words, using a nonincremental word search.
M-c to toggle search case-sensitivity
(setq case-fold-search t)   ; make searches case insensitive

================== Online-Help ==================
C-h c which command does this keystroke invoke
C-h k which command does this keystroke invoke and what does it do?
C-h l what were my last 100 typed keys
C-h w what key-combo does this command have?
C-h f what does this function do
C-h v what's this variable and what is it's value
C-h b show all keycommands for this buffer
C-h t start the emacs tutorial
C-h i start the info reader
C-h C-k start up info reader and go to a certain key-combo point
C-h F show the emacs FAQ
C-h p show infos about the Elisp package on this machine

================= Basics ===============
C-x 4 f find file in other window
C-x 4 o change to other window
C-x 4 0 kill buffer and window
C-x 5 2 make new frame
C-x 5 f find file in other frame
C-x 5 o change to other frame
C-x 5 0 close this frame

C-x r m : bookmark-set
C-x r b : bookmark-jump
C-x r l : bookmark-menu-list (list all your bookmarks)

M-C-f / M-C-b : find matching brace in forward/backward direction.

C-M-v : (scroll-other-window) scroll other window down
C-M-S-v : scroll other window up.

==================== misc =====================
tabify : change spaces to tab in selected region <-> untabify

================= functions ===================
load-library : load files whose extension is .elc, .el and no-ext(specified name alone)  in the directories.
eval-current-buffer : evaluate all the Lisp expressions in the buffer.


==================== elisp ==============
C-x C-e : eval-last-sexp : evaluate lisp expresstion to the left of the cursor
eval-region : select lisp code and evaluate it.
ielm : turns the buffer into a interactive elisp command line interface.
C-h f : describe-function : finds inline documentation of a function
elisp-index-search : finds the documentation of a function in the official GNU Emacs Lisp Reference Manual.

====================================================
C-x r <SPC> r :    Record the position of point and the current buffer in register r (point-to-register).
C-x r j r :    Jump to the position and buffer saved in register r (jump-to-register).

==================== Semantic =====================
C-x B : semantic-mrub-switch-tag :
C-c , j : semantic-complete-jump-local
C-c , n : senator-next-tag
C-c , p : senator-previous-tag
C-c , u : senator-go-to-up-reference : move cursor to the "parent" tag.

==================== gtags =====================
\e* : gtags-pop-stack
\e. : gtags-find-tag
\C-x4. : gtags-find-tag-other-window


==================== gud gdb ======================
gdb-many-windows : t (M-x gdb-many-windows)

C-x <SPC>    Set a breakpoint on the source line that point is on.
C-c C-l
C-x C-a C-l
    Display in another window the last line referred to in the GUD buffer (that is, the line indicated in the last location message). This runs the command gud-refresh.
C-c C-s
C-x C-a C-s
    Execute a single line of code (gud-step). If the line contains a function call, execution stops after entering the called function.
C-c C-n
C-x C-a C-n
    Execute a single line of code, stepping across entire function calls at full speed (gud-next).
C-c C-i
C-x C-a C-i
    Execute a single machine instruction (gud-stepi).
C-c C-p
C-x C-a C-p
    Evaluate the expression at point (gud-print). If Emacs does not print the exact expression that you want, mark it as a region first.
C-c C-r
C-x C-a C-r
    Continue execution without specifying any stopping point. The program will run until it hits a breakpoint, terminates, or gets a signal that the debugger is checking for (gud-cont).
C-c C-d
C-x C-a C-d
    Delete the breakpoint(s) on the current source line, if any (gud-remove). If you use this command in the GUD interaction buffer, it applies to the line where the program last stopped.
C-c C-t
C-x C-a C-t
    Set a temporary breakpoint on the current source line, if any (gud-tbreak). If you use this command in the GUD interaction buffer, it applies to the line where the program last stopped.
C-c <
C-x C-a <
    Select the next enclosing stack frame (gud-up). This is equivalent to the GDB command ‘up’.
C-c >
C-x C-a >
    Select the next inner stack frame (gud-down). This is equivalent to the GDB command ‘down’.
C-c C-u
C-x C-a C-u
    Continue execution to the current line (gud-until). The program will run until it hits a breakpoint, terminates, gets a signal that the debugger is checking for, or reaches the line on which the cursor currently sits.
C-c C-f
C-x C-a C-f
    Run the program until the selected stack frame returns or stops for some other reason (gud-finish).

If you are using GDB, these additional key bindings are available:

C-x C-a C-j
    Only useful in a source buffer, gud-jump transfers the program's execution point to the current line. In other words, the next line that the program executes will be the one where you gave the command. If the new execution line is in a different function from the previously one, GDB prompts for confirmation since the results may be bizarre. See the GDB manual entry regarding jump for details.
<TAB>
    With GDB, complete a symbol name (gud-gdb-complete-command). This key is available only in the GUD interaction buffer.



==================== Version control ======================
C-x v v     vc-next-action
    perform the next logical control operation on file
(C-x C-q     by default, C-x C-q is no longer bound, so it's better to use the above binding)

C-u C-x v v
    To switch between branches, type and specify the revision ID you want to select

C-x v i     vc-register
    add a new file to version control
 
C-x v I        vc-log-incoming
    Display the changes that will be received with a pull operation.

C-x v O     vc-log-outgoing
    Display the changes that will be sent by the next push operation.

C-x v ~     vc-version-other-window
    Prompt for a revision of the current file, and visit it in a buffer of its own

C-x v =     vc-diff
    Compare the files in the current fileset with the working revision(s) you started from. With a prefix argument, prompt for two revisions of the current fileset and compare them. You can call this command from a Dired buffer (Dired)

C-x v D     vc-root-diff
    Compare the entire tree corresponding to the current fileset with the tree you started from. With a prefix argument, prompt for two revisions and compare their trees.

C-x v g     vc-annotate
    Display an annotated version of the file: for each line, show the latest revision in which it was modified (vc-annotate).    
   
C-x v d     vc-directory
    View VC-Directory-Mode.
   
C-x v s     vc-create-snapshot
    tag all the files with a symbolic name
   
C-x v r     vc-retrieve-snapshot
    undo checkouts and return to a snapshot with a symbolic name

C-x v l     vc-print-log
    show log for current file (not in ChangeLog format)
   
C-x v L     vc-print-root-log
    Display the change history for the current repository
   
C-x v a     vc-update-change-log
    Visit the current directory's change log file and, for registered files in that directory, create new entries for versions checked in since the most recent entry in the change log file. ().
    This command works with RCS or CVS only, not with any of the other back ends.

C-u C-x v a
    As above, but only find entries for the current buffer's file.

M-1 C-x v a
    As above, but find entries for all the currently visited files that are maintained with version control. This works only with RCS, and it puts all entries in the log for the default directory, which may not be appropriate.

C-x v m     vc-merge
    Merge changes into the work file.

C-x v h     vc-insert-headers
    Insert headers in a file for use with your version-control system.

C-x v u     vc-revert-buffer
    Revert the buffer and the file to the working revision from which you started editing the file.
   
C-x v c     vc-rollback
    Remove the last-entered change from the master for the visited file. This undoes your last check-in.

M-x vc-find-conflicted-file

M-x vc-resolve-conflicts
    pop up an ediff-merge session on a file with conflict markers



[ VC Directory Commands ]
-------------------------

Up- and down-arrow keys
    move in the buffer;
   
n and p
    also move vertically as in other list-browsing modes.

<SPC> and <TAB>
    behave like down-arrow

<BackTab>
    behaves like up-arrow.

o    visits that file in another window.

q    dismisses the directory buffer.

f    visit the file on the current line.

C-m    Same with above

x    hides up-to-date files.

m    marks the file or directory on the current line. If the region is active, m marks all the files in the region. There are some restrictions when marking: a file cannot be marked if any of its parent directories are marked, and a directory cannot be marked if any files in it or in its child directories are marked.

M    marks all the files with the same VC state as the current file if the cursor is on a file. If the cursor is on a directory, it marks all child files. With a prefix argument: marks all files and directories.

u    unmarks the file or directory on the current line. If the region is active, it unmarks all the files in the region.

U    marks all the files with the same VC state as the current file if the cursor is on a file. If the cursor is on a directory, it unmarks all child files. With a prefix argument: unmarks all marked files and directories.


* It is possible to do search, search and replace, incremental search, and incremental regexp search on multiple files. These commands will work on all the marked files or the current file if nothing is marked. If a directory is marked, the files in that directory shown in the VC directory buffer will be used.

S    searches the marked files.

Q    does a query replace on the marked files.

M-s a C-s
    does an incremental search on the marked files.

M-s a C-M-s
    does an incremental regular expression search on the marked files.

* Commands are also accessible from the VC-dir menu. Note that some VC backends use the VC-dir menu to make available extra, backend-specific, commands. For example, Git and Bazaar allow you to manipulate stashes and shelves. (These provide a mechanism to temporarily store uncommitted changes somewhere out of the way, and bring them back at a later time.)

* Normal VC commands with the C-x v prefix work in VC directory buffers. Some single-key shortcuts are available as well; =, +, l, i, and v behave as through prefixed with C-x v.

The command C-x v v (vc-next-action) operates on all the marked files.

When C-x v v (vc-next-action) operates on multiple files, all of those files must be either in the same state or in compatible states (added, modified and removed states are considered compatible). Otherwise it signals an error. This differs from the behavior of older versions of VC, which did not have fileset operations and simply did vc-next-action on each file individually.

If any files are in a state that calls for commit, C-x v v reads a single log entry and uses it for the changeset as a whole. If the underling VCS is file- rather than changeset-oriented, the log entry will be replicated into the history of each file.



[ In '*vc-change-log* ]
-----------------------

p    Move to the previous revision-item in the buffer. (Revision entries in the log buffer are usually in reverse-chronological order, so the previous revision-item usually corresponds to a newer revision.) A numeric prefix argument is a repeat count.

n    Move to the next revision-item (which most often corresponds to the previous revision of the file). A numeric prefix argument is a repeat count.

P    Move to the log of the previous file, when the logs of multiple files are in the log buffer (see VC Directory Mode). Otherwise, just move to the beginning of the log. A numeric prefix argument is a repeat count, so C-u 10 P would move backward 10 files.

N    Move to the log of the next file, when the logs of multiple files are in the log buffer (see VC Directory Mode). It also takes a numeric prefix argument as a repeat count.

a    Annotate the revision indicated by the current line.

e    Modify the change comment displayed at point. Note that not all VC systems support modifying change comments.

f    Visit the revision indicated at the current line, like typing C-x v ~ and specifying this revision's ID (see Old Revisions).

d    Display the diff (see Comparing Files) between the revision indicated at the current line and the next earlier revision. This is useful to see what actually changed in the file when the revision indicated on the current line was committed.

D    Display the changeset diff (see Comparing Files) between the revision indicated at the current line and the next earlier revision. This is useful to see all the changes to all files that the revision indicated on the current line did when it was committed.


   
[ VC-Annotate menu ]
--------------------

From the annotate buffer, these and other color scaling options are available from the ‘VC-Annotate’ menu. In this buffer, you can also use the following keys to browse the annotations of past revisions, view diffs, or view log entries:

p    Annotate the previous revision, that is to say, the revision before the one currently annotated. A numeric prefix argument is a repeat count, so C-u 10 p would take you back 10 revisions.

n    Annotate the next revision—the one after the revision currently annotated. A numeric prefix argument is a repeat count.

j    Annotate the revision indicated by the current line.

a    Annotate the revision before the one indicated by the current line. This is useful to see the state the file was in before the change on the current line was made.

f    Show in a buffer the file revision indicated by the current line.

d    Display the diff between the current line's revision and the previous revision. This is useful to see what the current line's revision actually changed in the file.

D    Display the diff between the current line's revision and the previous revision for all files in the changeset (for VC systems that support changesets). This is useful to see what the current line's revision actually changed in the tree.

l    Show the log of the current line's revision. This is useful to see the author's description of the changes in the revision on the current line.

w    Annotate the working revision–the one you are editing. If you used p and n to browse to other revisions, use this key to return to your working revision.

v    Toggle the annotation visibility. This is useful for looking just at the file contents without distraction from the annotations.    


======================================================================


Emacs Commands List

C = Control
M = Meta = Alt|Esc

[Basics]
C-x C-f "find" file i.e. open/create a file in buffer
C-x C-s save the file
C-x C-w write the text to an alternate name
C-x C-v find alternate file
C-x i insert file at cursor position
C-x b create/switch buffers
C-x C-b show buffer list
C-x k kill buffer
C-z suspend emacs
C-X C-c close down emacs

[Basic movement]
C-f forward char
C-b backward char
C-p previous line
C-n next line
M-f forward one word
M-b backward one word
C-a beginning of line
C-e end of line
C-v one page up
M-v scroll down one page
M-< beginning of text
M-> end of text

[Editing]
M-n repeat the following command n times
C-u repeat the following command 4 times
C-u n repeat n times
C-d delete a char
M-d delete word
M-Del delete word backwards
C-k kill line

C-Space Set beginning mark (for region marking for example)
C-W "kill" (delete) the marked region region
M-W copy the marked region
C-y "yank" (paste) the copied/killed region/line
M-y yank earlier text (cycle through kill buffer)
C-x C-x exchange cursor and mark

C-t transpose two chars
M-t transpose two words
C-x C-t transpose lines
M-u make letters uppercase in word from cursor position to end
M-c simply make first letter in word uppercase
M-l opposite to M-u

[Important]
C-g quit the running/entered command
C-x u undo previous action
M-x revert-buffer RETURN (insert like this) undo all changes since last save
M-x recover-file RETURN Recover text from an autosave-file
M-x recover-session RETURN if you edited several files

[Online-Help]
C-h c which command does this keystroke invoke
C-h k which command does this keystroke invoke and what does it do?
C-h l what were my last 100 typed keys
C-h w what key-combo does this command have?
C-h f what does this function do
C-h v what's this variable and what is it's value
C-h b show all keycommands for this buffer
C-h t start the emacs tutorial
C-h i start the info reader
C-h C-k start up info reader and go to a certain key-combo point
C-h F show the emacs FAQ
C-h p show infos about the Elisp package on this machine

[Search/Replace]
C-s Search forward
C-r search backward
C-g return to where search started (if you are still in search mode)
M-% query replace

    Space or y replace this occurence
    Del or n don't replace
    . only replace this and exit (replace)
    , replace and pause (resume with Space or y)
    ! replace all following occurences
    ^ back to previous match
    RETURN or q quit replace


Search/Replace with regular expressions
Characters to use in regular expressions:
^ beginning of line
$ end of line
. single char
.* group or null of chars
\< beginning of a word
\> end of a word
[] every char inside the backets (for example [a-z] means every small letter)

M C-s RETURN search for regular expression forward
M C-r RETURN search for regular expression backward
M C-s incremental search
C-s repeat incremental search
M C-r incremental search backwards
C-r repeat backwards
M-x query-replace-regexp search and replace

[Window-Commands]
C-x 2 split window vertically
C-x o change to other window
C-x 0 delete window
C-x 1 close all windows except the one the cursors in
C-x ^ enlarge window
M-x shrink-window command says it ;-)
M C-v scroll other window
C-x 4 f find file in other window
C-x 4 o change to other window
C-x 4 0 kill buffer and window
C-x 5 2 make new frame
C-x 5 f find file in other frame
C-x 5 o change to other frame
C-x 5 0 close this frame

[Bookmark commands]
C-x r m set a bookmark at current cursor pos
C-x r b jump to bookmark
M-x bookmark-rename says it
M-x bookmark-delete "
M-x bookmark-save "
C-x r l list bookmarks

    d mark bookmark for deletion
    r rename bookmark
    s save all listed bookmarks
    f show bookmark the cursor is over
    m mark bookmarks to be shown in multiple window
    v show marked bookmarks (or the one the cursor is over)
    t toggle listing of the corresponding paths
    w " path to this file
    x delete marked bookmarks
    Del ?
    q quit bookmark list


M-x bookmark-write write all bookmarks in given file
M-x bookmark-load load bookmark from given file

[Shell]
M-x shell starts shell modus
C-c C-c same as C-c under unix (stop running job)
C-d delete char forward
C-c C-d Send EOF
C-c C-z suspend job (C-z under unix)
M-p show previous commands

[DIRectory EDitor (dired)]
C-x d start up dired
C (large C) copy
d mark for erase
D delete right away
e or f open file or directory
g reread directory structure from file
G change group permissions (chgrp)
k delete line from listing on screen (don't actually delete)
m mark with *
n move to next line
o open file in other window and go there
C-o open file in other window but don't change there
P print file
q quit dired
Q do query-replace in marked files
R rename file
u remove mark
v view file content
x delete files marked with D
z compress file
M-Del remove all marks (whatever kind)
~ mark backup files (name~ files) for deletion
# mark auto-save files (#name#) for deletion
*/ mark directory with * (C-u * removes that mark again)
= compare this file with marked file
M-= compare this file with it's backup file
! apply shell command to this file
M-} change to the next file marked with * od D
M-{ " previous "
% d mark files described through regular expression for deletion
% m " (with *)
+ create directory
> changed to next dir
< change to previous dir
s toggle between sorting by name or date

Maybe into this category also fits this command:
M-x speedbar starts up a separate window with a directory view

[Telnet]
M-x telnet starts up telnet-modus
C-d either delete char or send EOF
C-c C-c stop running job (similar to C-c under unix)
C-c C-d send EOF
C-c C-o clear output of last command
C-c C-z suspend execution of command
C-c C-u kill line backwards
M-p recall previous command

[Text]
Works only in text mode
M-s center line
M-S center paragraph
M-x center-region name says

[Macro-commands]
C-x ( start macro definition
C-x ) end of macro definition
C-x e execute last definied macro
M-n C-x e execute last defined macro n times
M-x name-last-kbd-macro give name to macro (for saving)
M-x insert-keyboard-macro save named macro into file
M-x load-file load macro
M-x macroname execute macroname

[Programming]
M C-\ indent region between cursor and mark
M-m move to first (non-space) char in this line
M-^ attach this line to previous
M-; formatize and indent comment

[C, C++ and Java Modes]
M-a beginning of statement
M-e end of statement
M C-a beginning of function
M C-e end of function
C-c RETURN Set cursor to beginning of function and mark at the end
C-c C-q indent the whole function according to indention style
C-c C-a toggle modus in which after electric signs (like {}:';./*) emacs does the indention
C-c C-d toggle auto hungry mode in which emacs deletes groups of spaces with one del-press
C-c C-u go to beginning of this preprocessor statement
C-c C-c comment out marked area

More general (I guess)
M-x outline-minor-mode collapses function definitions in a file to a mere {...}
M-x show-subtree If you are in one of the collapsed functions, this un-collapses it

In order to achive some of the feats coming up now you have to run etags *.c *.h *.cpp (or what ever ending you source files have) in the source directory
M-. (Thats Meta dot) If you are in a function call, this will take you to it's definition
M-x tags-search ENTER Searches through all you etaged
M-, (Meta comma) jumps to the next occurence for tags-search
M-x tags-query-replace yum. This lets you replace some text in all the tagged files

[GDB (Debugger)]
M-x gdb starts up gdm in an extra window

[Version Control]
C-x v d show all registered files in this dir
C-x v = show diff between versions
C-x v u remove all changes since last checkin
C-x v ~ show certain version in different window
C-x v l print log
C-x v i mark file for version control add
C-x v h insert version control header into file
C-x v r check out named snapshot
C-x v s create named snapshot
C-x v a create changelog file in gnu-style


Dependency can be defined more than one place. It's very interesting.

        Syntax : Take you attention that there is NO command in rule.
        <target> : <dep>
       
At abve case, <dep> is ADDED to <target>'s existing dependency (NOT "replace"!!)
But, if there is COMMAND at above rule, old COMMAND is "REPLACED" (NOTE that, dependency is still ADDED).
See below examples to help understanding.
   
    < Makefile >
    all: a
        touch all0
    a
        touch a
    all: b
    b
        touch b
   
    > make
        touch a
        touch b
        touch all0
       
    ----------------------
       
    < Makefile >
    all: a
    a
        touch a
    all: b
        touch all1
    b
        touch b
   
    > make
        touch b
        touch a
        touch all1
       
    ----------------------
       
    < Makefile >
    all: a
        touch all0
    a
        touch a
    all: b
        touch all1
    b
        touch b
   
    > make
        touch b
        touch a
        touch all1
       
    # Same with above
    # That is, older command for target is replaced with newer one.

[ 언론 ]

오마이뉴스 :  http://rss.ohmynews.com/rss/ohmynews.xml
노컷뉴스 :  http://rss.nocutnews.co.kr/nocutnews.xml 
한겨레 :  http://www.hani.co.kr/rss/ 
경향신문 :  http://www.khan.co.kr/rss/rssdata/total_news.xml
매일경제 :  http://file.mk.co.kr/news/rss/rss_30000001.xml
한국일보 :  http://rss.hankooki.com/news/hk_main.xml 
전자신문 :  http://rss.etnews.com/Section901.xml 
스포츠서울 :  http://www.sportsseoul.com/rss/rss.asp?cp_flag=1
아이뉴스 :  http://www.inews24.com/rss/news_inews.xml 
SBS :  http://api.sbs.co.kr/xml/news/rss.jsp?pmDiv=all 
MBC :   http://imnews.imbc.com/rss/news/news_00.xml
블로터 :  http://feeds.feedburner.com/Bloter?format=xml 
민중의소리 :  http://mediablog.vop.co.kr/rss 


CNN Top stories :  http://rss.cnn.com/rss/edition.rss 
CNN Technology :  http://rss.cnn.com/rss/edition_technology.rss 
CNN Asia :  http://rss.cnn.com/rss/edition_asia.rss 
CNN US :  http://rss.cnn.com/rss/edition_us.rss 
AP Top stories :  http://hosted.ap.org/lineups/TOPHEADS-rss_2.0.xml?SITE=MAHYC&SECTION=HOME 

[ 포털 ]
다음 : http://www.daum.net/rss.xml
네이버뉴스 - IT/과학 : http://feeds.feedburner.com/NaverNewsGameESports?format=xml
네이버뉴스 - 경제 : http://feeds.feedburner.com/NaverNewsGlobalBusinessNews?format=xml
네이버뉴스 - 많이 본 뉴스 : http://feeds.feedburner.com/naver_news_popular

[ 팟캐스트 ]
나꼼수 :  http://old.ddanzi.com/appstream/ddradio.xml 
나꼽살 :  http://old.ddanzi.com/appstream/ggobsari.xml 
뉴스타파 :  http://newstapa.com/rss
저공비행 :  http://test.handypia.org/radio/jugong.xml 
나의사 :  http://www.docdocdoc.co.kr/podcast/iam_doctors.xml 
희뉴스 :  http://cast.vop.co.kr/heenews.xml 
애국전선 :  http://cast.vop.co.kr/kfline.xml 
낭만자객 :  http://cast.vop.co.kr/nang.xml 
정혜림 도도한 뒷담화 :  http://nemo.podics.com/131613387490 
김미화 여러분 :  http://cbspodcast.com/podcast/k_everyone/k_everyone.xml 
시사자키 정관용 :  http://cbspodcast.com/podcast/sisa/sisa.xml 
변상욱 기자수첩 :  http://cbspodcast.com/podcast/newsshow_journal/newsshow_journal.xml 
김현정 뉴스쇼 :  http://cbspodcast.com/podcast/newshow/newshow.xml 
허재현의 현장일기 : http://feeds.feedburner.com/iblug/OCnu?format=xml


[ MBC 라디오 표준 FM ]
건강한 아침 황선숙입니다. : http://minicast.imbc.com/PodCast/pod.aspx?code=1002588100000100000
손석희의 시선집중 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000674100000100000
손에 잡히는 경제 이진우입니다. : http://minicast.imbc.com/PodCast/pod.aspx?code=1000671100000100000
여성시대 양희은, 강석우입니다 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000630100000100000
성경섭이 만난 사람 : http://minicast.imbc.com/PodCast/pod.aspx?code=1002424100000100000
배한성, 배칠수의 고전열전 : http://minicast.imbc.com/PodCast/pod.aspx?code=1002488100000100000
지금은 라디오 시대 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000669100000100000
김창옥의 세계는 그리고 우리는 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000681100000100000
최양락의 재미있는 라디오 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000678100000100000
윤하의 별이 빛나는 밤에 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000677100000100000
신동의 심심타파 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000664100000100000
이동진의 꿈꾸는 다락방 : http://minicast.imbc.com/PodCast/pod.aspx?code=1002589100000100000
세상을 바꾸는 생각 : http://minicast.imbc.com/PodCast/pod.aspx?code=1002590100000100000
김나진의 세계도시여행 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000621100000100000
라디오 북클럽 김지은입니다 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000698100000100000
타박타박 세계사 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000628100000100000

[ MBC 라디오 FM4U ]
세상을 여는 아침 허일후입니다 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000575100000100000
오늘아침 심현보입니다 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000576100000100000
정오의 희망곡 스윗소로우입니다 : http://minicast.imbc.com/PodCast/pod.aspx?code=1001919100000100000
두시의 데이트 주영훈입니다 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000586100000100000
간미연의 친한친구 : http://minicast.imbc.com/PodCast/pod.aspx?code=1002413100000100000
FM 음악도시 성시경입니다 : http://minicast.imbc.com/PodCast/pod.aspx?code=1002600100000100000
푸른밤 정엽입니다 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000578100000100000
이주연의 영화음악 : http://minicast.imbc.com/PodCast/pod.aspx?code=1000580100000100000

[ SBS 라디오 PowerFM ]
정선희의 오늘같은밤(오밤) : http://wizard2.sbs.co.kr/w3/podcast/V0000349378A.xml
김형준의 뮤직하이 : http://wizard2.sbs.co.kr/w3/podcast/V0000328480.xml
김영철의 Fun Fun today : http://wizard2.sbs.co.kr/w3/podcast/V0000351036.xml
이숙영의 파워 FM : http://wizard2.sbs.co.kr/w3/podcast/V0000010343.xml
아름다운 이 아침 김창완 : http://wizard2.sbs.co.kr/w3/podcast/V0000010355.xml
공형진의 씨네타운 : http://wizard2.sbs.co.kr/w3/podcast/V0000321755.xml
최화정의 파워타임 : http://wizard2.sbs.co.kr/w3/podcast/V0000010346.xml
두시탈출 컬투쇼 : http://wizard2.sbs.co.kr/w3/podcast/V0000328482.xml
김창렬의 올드스쿨 : http://wizard2.sbs.co.kr/w3/podcast/V0000329545.xml
박소현의 러브게임 : http://wizard2.sbs.co.kr/w3/podcast/V0000336099.xml
붐의 영스트리트 : http://wizard2.sbs.co.kr/w3/podcast/V0000352536.xml
이석훈의 텐텐클럽(텐텐) : http://wizard2.sbs.co.kr/w3/podcast/V0000349380.xml

[SBS 라디오 LoveFM ]
서두원의 시사초점 : http://wizard2.sbs.co.kr/w3/podcast/V0000349385.xml
최영아의 책하고 놀자 : http://wizard2.sbs.co.kr/w3/podcast/V0000328499.xml
SBS 전망대 : http://wizard2.sbs.co.kr/w3/podcast/V0000337960.xml
정석문의 섹션라디오 : http://wizard2.sbs.co.kr/w3/podcast/V0000329544.xml
정철진의 스마트경제 : http://wizard2.sbs.co.kr/w3/podcast/V0000355936.xml
박준형의 시사갈갈 : http://wizard2.sbs.co.kr/w3/podcast/V0000356536.xml
김지선,김일중의 세상을 만나자 : http://wizard2.sbs.co.kr/w3/podcast/V0000337995.xml
라디오오디션 국민DJ를 찾습니다 : http://wizard2.sbs.co.kr/w3/podcast/V0000351237.xml
이성미의 이야기쇼 : http://wizard2.sbs.co.kr/w3/podcast/V0000349373.xml
희망사항 변진섭입니다 : http://wizard2.sbs.co.kr/w3/podcast/V0000349388.xml
안선영의 라디오가 좋다 : http://wizard2.sbs.co.kr/w3/podcast/V0000340869.xml
여러분의 국민DJ 이예랑입니다 : http://wizard2.sbs.co.kr/w3/podcast/V0000362236.xml




[ 기타 ]
이털남 :  http://rss.ohmynews.com/RSS/podcast_etul_main.xml 
이해찬 정석정치 :  http://rss.ohmynews.com/rss/podcast_bbong_main.xml 
오마이tv 저자 대화 :  http://rss.ohmynews.com/rss/podcast_authortalk_main.xml 
라디오 반민특위 :  http://www.615tv.net/podcastbanmin/jkbsbanmin.xml 
아트앤스터디 인문강의 - 수유 너머 :  http://www.artnstudy.com/podcast.xml 
김광수경제연구소 포럼 공부방 :  http://podcast.kseri.net/forum/pod_audio.xml 
그들이 말하지 않는 23가지 - 장하준 :  http://nemo.podics.com/131113737488 
문국현과 새로운 세상 :  http://nemo.podics.com/132607634128 
망치부인 시사수다방 :  http://nemo.podics.com/131192848437 
한국일보 시사난타H :  http://rss.hankooki.com/podcast/ 
고재열의 독설닷컴 :  http://poisontongue.sisain.co.kr/rss <= RSS 소스가..ㅜ.ㅜ

[ 기타2 ]
모바일 컨텐츠 이야기 :  http://mobizen.pe.kr/rss 
이정환 닷컴 :  http://www.leejeonghwan.com/media/atom.xml 
예병일의 경제노트 :  http://www.linxus.co.kr/lib/rssblog.asp?blogid=yehbyungil 
 

 

리더가 팀을 이끌어 과는 과정에서 팀원의 업무 파악은 상당히 중요한 일이다.
업무 파악을 위해서 가장 많이 하는 일은 다음과 같은 것들이 있다.
  - 주간 업무 회의 : 주 1회 정도 정기적인 업무 회의를 통해서 보고 받는다.
  - E-mail 참조 : 업무관련 E-mail 을 주고 받을때, 리더를 CC에 넣도록 한다.
  - 식사/커피 등 함께 하기 : 자연스러운 분위기에서 업무 관련 이야기를 듣고자 한다.

다 좋다. 필수 적이기도 하다.
그렇지만 위의 것들을 모두 잘 하고 있음에도 불구하고, 늘 팀원의 업무 파악이 제대로 되지 않는 것 같다고 느끼는 경우도 있다.
무엇이 문제인가?
내가 생각하기에, 위의 방법들도 좋지만, 가장 중요한 것은 팀원들이 리더에게 도움을 받을 수 있어야 하고, 팀원이 이를 실질적으로 느끼고 있어야 한다는 것이다.

예를 들면, 어떤 문제에 대해서 실무자가 자기 자신의 힘만으로는 해결이 힘들어서 리더에게 보고를 하는 경우를 생각해보자.
이런 문제의 경우 대부분이 내부에서 실무적으로 처리하기는 한계가 있다고 실무자가 판단하는 경우이다.
즉, 외부 혹은 타 부서와의 협력을 통해 문제를 해결할 필요가 있는 문제이다. 

이때, 리더가 취하는 가장 일반적인 자세는, 일단 무엇이 문제인지 문제를 파악하고자 한다. 그래서 실무자에게 관련 문제에 대한 문답이 이루어진다. 여기까지는 자연스러워 보인다.

그런데 이후, 물론 리더에 따라 다르겠지만, 실무적인 가이드를 시작하는 경우가 있다. 그리고 이런 경우는 대부분, 상당한 시간을 소모함에도 불구하고, 리더가 제시한 가이드가 해결에 도움이 되기 보다는, 리더가 문제에 대해 더 잘 이해하는데 도움이 되는 정도로 끝난다.
이 과정이 반복되면, 일단 실무자는 피로를 느끼게 된다.
최악의 경우는, 리더가 실무에 대한 잘못된 가이드를 제시하고, 실무자의 의견에 반하여 그 가이드에 따라 일을 진행시키라고 강요하는 경우다.
이런 리더에게 실무자는 어떠한 도움도 구하고자 하지 않는다.

그리고 이후, 리더는 자신의 실무적인 해결책에 도움이 되지 못하게 됨을 깨닫고, 실무자에게 어떤 도움이 필요한지를 묻게 되고, 실무자는 " xxx가 필요합니다."라는 말을 하게 된다. 이런 도움의 대부분은 타 부서와의 업무 협조, 상위 부서에 보고 등에 대한 문제이다.
실무자가 요구한 사항을 리더가 해결해 주는 것이 정상적이나, 어떤 리더의 경우는 "그래? 그럼 xx씨가 직접 oo한테 연락해서 처리하도록."의 식으로 결국 실무자가 모든 일을 해야 하는 방향으로 결정을 내리기도 한다.

자. 위에서 문제가 된다고 생각하는 과정을 거친 실무자의 입장에서 보면, 본인이 진행하는 업무에 문제가 있어서 리더에게 보고를 했을때, 업무 진행에 도움을 받기 보다는, 시간과 에너지를 소모하고, 결국 자기 자신이 처리해야 하는 방향으로 결론이 난 것이다.
즉, 문제를 보고하는게 하등 도움이 되지 않는 것이다.
실무자가 이렇게 느낀다면, 과연 이후 업무에 대해서 리더에게 보고하려고 할까?
그냥 정기적인 보고 이외 특별히 리더와 업무에 대해 상의하고자 하지 않을 것이다.
어차피 결과적으로는 자기 자신이 모두 처리해야 하니까...

주저리주저리 이야기가 길었다.
간단하게 결론을 정리하면, 리더가, 실무자에게 도움을 줄 수 있고, 또 그렇다고 실무자가 느낀다면, 리더는 자연스럽게 실무자가 가지고 있는 문제를 보고 받게 되고, 팀원들이 업무적으로 가지는 문제가 무엇인지 이해할 수 있게 된다는 말이다.
직설적으로 이야기 하면, 맨날 보고 안한다고 뭐라고 하지 말고, 실무에 도움이 좀 되란 말이다. 그럼 자연스럽게 팀원들이 보고하게 될테니까...
실무적으로 아는게 없다고 해서 팀원들에게 도움을 줄 수 없다는 말은 하지 말자. 외부와의 소통문제, 업무 협조 요청 등등 수많은 일들로 팀원들을 도울 수 있으니... 
근래, 나꼼수의 인기는 상상을 초월한다.
그래서, 나꼼수 자체가 이미 '미래의 권력'이 아니라 '현재의 권력'이라고들 이야기 한다.
그런 나꼼수가 소위 '비키니 시위'건으로 전방위로 타격을 받고 있다.

사람마다 생각이 다르고, 가치관이 다르므로 위 건에 대해 여러 의견들이 표출될 수 있다는 것에는 전적으로 동의한다.
그렇지만, "나는 네 말이 기분나쁘게 들린다. 그러니 사과해라." 라고 이야기 하고, 이 말이 존중되기를 바란다면 "나는 네가 기분나쁘라고 한 말이 아니다. 그냥 웃자고 한 이야기다. 그러니 사과 못하겠다."라는 말도 존중하는 것, 다시 말해, 서로의 차이를 인정하는 것에서부터 논의의 출발이 이루어져야 하지 않을까?
물론, '성희롱'이라는 것 자체가, 상당히 광범위하고 주관적인 법리해석이 가능하므로 논란의 여지가 많을 수 밖에 없다.
그러므로, 단순한 "서로간 생각의 차이"라는 것에 동의할 수 없다면? 결국 "법대로 하는 방법" 밖에는 없겠지... 그러라고 법이라는게 존재하는 것이니까...

여기까지는, 내 개인적으로 나꼼수를 옹호하는 글이였다면, 이 다음은 기성 언론에 대한 비판이다.

지금 수많은 뉴스거리가 터져나오고 있다.
10.26선거에 대한 의혹, 자원외교 + 주가조작, 돈 봉투, FTA, 진보 연대, 한나라당 비대위,  MBC파업 등... 이루 말할 수 없는 많은 사안들이 하루가 멀다 하고 회자되고 있다. 그런데 과연, 소위 '비키니 시위'가 이런 사안들보다 더 중요하고, 또 국민들이 알아야 할 내용일까? 그래서 그 귀중한 "신문의 1면"을 장식해야 했을까? 내가 보기엔, 단순히 "여론을 형성하는 새로운 흐름에 대한 기성언론의 불안감에 대한 발로"로 밖에 보이지 않는다.
즉, "기성언론(진짜 '언론'이 아닌, 언론이라고 불리워지길 원하는 것들도 포함해서...)의 자신의 밥그릇 + 권위에 대한 방어 행위"로 느껴진다는 말이다.

또 한편으로는, 자신들이 수십년간 다져놓은 "언론이란 xxx해야 한다." 패러다임이 무너질 것에 대한 막연한 불안감도 어느 정도 있지 않았나 싶다.그래서, 그 틀에 나꼼수를 짜 맞추어 넣고, 튀어나온 부분은 전부 정으로 쳐 버리려고 하는 것 같기도 하다.
그렇지만, 나꼼수는 단 한번도 자신들을 '언론'이라고 이야기한 적이 없을 뿐더러, 비단 '언론'이라고 칭했다 하더라도, 암묵적으로 형성된 기존의 패러다임을 따라야 한다는 의무는 어디에도 없다. 왜 꼭 그래야 하는데?

마지막으로, 지금 이 시점에서 국민들이 알아야 할 내용이, 과연 소위 말하는 '비키니 논란'인지 아니면, 앞에서 열거한 수많은 현안들에 대한 내용인지 다시 한 번 생각해 보았으면 한다. (신문 지면, 웹 페이지 공간이 아깝지도 않나?)

Kernel build system defines KBUILD_MODNAME automatically from each Makefile.
You can easily find below string from build command of each files of modules.

-D"KBUILD_MODNAME=KBUILD_STR(xxxxx)"
('xxxxx' is given module name)

This name xxxxx comes from Makefile.
Below is simple example.

[ in Makefile ]
xxxxx-y := a.o b.o c.o d.o

In above case, KBUILD_MODNAME of a.cb.cc.c and d.c becomes xxxxx.
This can be easily confirmed by checking command line of each objects - a.ob.oc.o and d.o.

유시민 전 장관께서 예전에, 서울대학교 강연에서 "진정성은 중요치 않다. 제시한 정책이 좋냐, 나쁘냐로 판단해야 한다."라고 하셨던 것이 생각난다.
유 전 장관님의 이야기는 아마도, "초점을 정책 자체에 두라!"라는 의미였을 것이다. "정책은 정책 자체로 평가되어야 하지 외부적인 요소가 개입되면 안되다는 뜻" 이 아닐까? 난 그 말에 전적으로 동의한다.
그렇지만, 여기에 내 개인적인 생각을 약간 첨언하고자 한다.
정책을 판단할때 가장 중요한 요소는 정책 자체이다. 그런데 문제는, 정책이 "좋냐, 나쁘냐"를 판단할 수 있는 경우 만큼이나, 판단할 수 없는 경우도 많다는 것이다.
예를 들어, FTA (굳이 이번 한미 FTA가 아니더라도)에 대해서 생각해보자.
FTA로 인해 명백하게 이익이 되는 혹은 명백하게 손해가 나는 사람들이 분명히 존재한다. 그런 사람들이 FTA를 판단할 때는 정책자체 - FTA는 정책이 아니긴 하지만... 따지지 말자. - 를 놓고 찬성/반대 하면 된다.
그렇지만, 애매한 사람들도 많다. 이게 국민에게 - 라고 말하지만, 사실은 '나'에게 - 이익이 되는지 손해가 되는지 도무지 판단할 수 없는 사람들 말이다. 정부, 또 각종 언론 등에서 이런 저런 예측 수치를 내 놓지만, 그건 단지 예측일 뿐이다. 그것도 적중률이 상당히 떨어지는...

이럴 경우는 무엇을 근거로 정책에 대한 찬성/반대를 해야할 것인가?
이럴 때 '진정성' 이 다시 중요해진다.
확률적으로, 정치인이 '진정'으로 "이것이 국가/국민에게 이익이 된다."라고 믿고 추진하는 정책이, 정치인 개인의 이익에 근거해서 추진되는 것보다는, 국민/나 에게 이익이 될 확률이 높기 때문이다.
물론, '진정성'을 정확히 판단하는 것은, 정책 그 자체를 판단하는 것 만큼이나 어려울 것이다.
그렇지만, 특정 정치인의 삶의 발자취에 근거한 '진정성'에 대한 판단은 신뢰할 만하지 않을까?

그래서, 많은 사람들이 '진정성'에 대해 이야기 하고, 또 고민하는 것이 아닐까?
(물론, 특정 정치인의 삶의 발자취를 '제대로' 분석하는 것이 쉬운일은 아닐테지만... - 그래서 언론의 역할이 중요한데, 이건 뭔...쩝...)

+ Recent posts