블로그 이미지
kalstein

여러가지 프로그래밍 관련이나...신변잡기적인 글들을 남기는 블로그입니다. 지식은 나누는만큼 강력해집니다 ^^

Rss feed Tistory
잡동사니 2010. 10. 5. 23:26

야근이 많다는 것은...누군가가 무능력하다는 것이다.

우리나라 기업은 대체적으로 야근이 많다.
죽어라 일하는 야근도 있으며...눈치형야근도 있을것이고, 대기형 야근도 있을것이다...
어찌됐던 간에. 야근이 많다는건 무능력하다는거다...

첫째로, 일을 잘 했는데도 야근이 많을 수 있다.
이는 프로젝트 관리가 제대로 되지않았다는거다. 인력의 배정 및 기간, risk 관리...
뭔가 하나가 삐끗 (그래...하나만 삐끗하면 행복한거다 -_-) 했다는 소리...
상급자가 무능력하다는 거다.

둘째로, 일을 못하는 사람이라서 야근이 많을 수 있다.
똑같은 문제를 푸는데 일반적으로 1주일 걸릴게 그사람이 하면 2주일 걸리면,
야근이 되는거다... 회사에선 어차피 1주일 밖에 안주거든 -_-;;



문제는... 저런 문제를 해결할 생각이 회사측에서 있느냐 없느냐가 문제.
사실, 첫번째 문제는 알아내기어렵다. 상급자가 회사측의 꽤 고위급 임원인 경우는 어쩔건가?
자신이 행한 잘못을 시인하고 물러날건가? 그런일 없다 -_-;;
그리고 기간을 정하는 것도 널럴히 정할까? 그럴일 없다 ;;;;;;;;;;;;;;;;;;;;;

두번쨰 문제도 역시 어렵다. 일 잘하는 사람에게 더 많은 일을 줘야 전체 야근을 줄일수있다.
똑같은 평가 및 연봉의 위치에 있는 사람인데 일을 더 많이 할당하는것도 쉬운게 아니다.
해결하려면 애당초 인사 단계에서 적절한 사람을 배치했어야한다.



그런데...4여년을 현 직장에서 일해오면서,
대부분의 이유는, 첫번째가 좀 더 많은듯 하다. (뭐, 80:20 정도?)
대외적으로는 스마트하게 불필요한 야근을 줄이자...고는 하고 있다만...글쎄 ^^;

,
잡동사니 2010. 9. 16. 14:56

회사가 smart하게 생각처럼 안굴러가는 이유...

뭐 딱히 회사라기보다는 모든게 그럴지도. (정치라던가...기타등등)

조금 밑에 사람들이 실질적인걸 더 잘 알고...
점점 위로 갈수록 정확한 정보가 살짝 멀어지며...
일에 대한 결정은 위에사람들이 하고...
그런거에 지친 잘 아는 밑에 사람들은 딴길로 새고... (옮기거나 기타등등)
잘 모르는 밑에 사람들은 어떻게든 살아남아 위로 올라가고...

자 다시 처음부터 루프를 돌아봅시다... ㅋㅋㅋㅋ



자신이 잘 모르는걸 잘 모른다고 말하는게 그리 어려운 일인가 보다...
,
잡동사니 2010. 9. 13. 13:26

iOS4가 Multitasking이 안된다고?

어제 인터넷서핑중에...저렇게 주장하는 사람들이 제법 있음을 알았다.
아이폰유저이긴하지만 애플빠도 아니고,(애플빠였으면...아이맥 등도 구매했겠지) 그렇다고 안드로이드 진영을 까지도 않지만, (안드로이드 자체를 깐적은 단 한번도 없다. 단지 안드로이드 진영의 한계점만 언급할뿐) 무작정 어설픈 지식으로, iOS자체를 까는건 뭐랄까. 컴퓨터 공학을 전공한 자로써 잘못된 지식이 전파 되는것 같아서 한 글 남겨본다... (그래. 나 발끈했다 -_-)


일단 까는 사람들 내용은 이랬다.
1. iOS의 멀티태스킹은 언론플레이다. 실질적으로는 제대로 지원도 못한다.
2. 어플이 멀티태스킹에 대비해서 프로그래밍을 해야된다는게 말이나 되나.
3. 그나마 멀티태스킹이라고 하는 수준은 DOS 수준밖에 안된다.

쩝... 이게 참 말이나 되는건지. ㅋㅋㅋ
일단 용어 정리부터 해보자. 멀티태스킹이란 뭘까.
간단히 우리가 PC사용할 때 보면, 음악, 메신져를 켜두고, 웹페이지도 열어놓고, 게임도하고. 이런거다.
그리고 전문용어 하나 정리하자면 "context switching"
뭐 정확하게 하자면, task가 전환될때 CPU내의 register를 각 stack에 백업을하고 어쩌고저쩌고...지만,
그냥 간략히 말하자면, 인터넷 쓰다가 창을 최소화 시켰다가, 나중에 복원해도 똑같은 페이지가 보이는것.
그정도로 하자.

하나더. 스마트폰 사용중에, 멀티태스킹이란 어떤걸까.
음악(ipod던, 소리바다던 벅스던 기타등등)을 켜두고, 웹페이지를 볼수 있고,
그 와중에 메신져에서 친구가 메세지 보내주면 그에 대해 답해주고.
대부분의 경우가 이거다 그치? (딴 시나리오 얼마든지 추가하시라~)

자, 1,2,3 을 반박해보도록 하자.



1. iOS의 멀티태스킹은 언론플레이다. 실질적으로는 제대로 지원도 못한다.

솔직히 iOS3의 멀티태스킹은 좀 거시기하긴하다. 무조건 어플을 껐다가 키면 초기상태로 빠진다.
위에서 언급했던 "context switching"이 제대로 안된달까?
반면 iOS4 부터는 좀 다르다. 어플을 껐다 켜면 아까 껐던 상태 그대로 켜진다.
위에서 말했던 스마트폰 사용중 멀티태스킹 상황을 지원못하는가?
당연히 지원한다. 일단 크게 광고했던 멀티태스킹 기능은 스트리밍 음악 서비스와, GPS 기능이다.
이를 통해, 네비게이션, 음악 듣기 등이 멀티로 가능하다.


2. 어플이 멀티태스킹에 대비해서 프로그래밍을 해야된다는게 말이나 되나.

스마트 폰인데도 불구하고, PC 상황과 동일하게 동작하는걸 원한다.
즉, 음악파일을 플레이하면 플레이하는거지 왜 백그라운드에서 동작하는 다른 API가 있냐는거다.
안드로이드는 다 잘 되는데 왜 iOS만 그렇냐는거다.

스마트폰은 PC환경과 조금은 다르다. 어차피 유저는 화면에 띄워져있는 것에 집중하고있고,
백그라운드로 CPU를 왕창쓰는 어플이 돌아가야 할 이유도 없다.
(Seti@Home 을 스마트폰에서 띄우고 쓰실 분 계신가? MP3 Encoding을 하실건가?)
멀티태스킹은, GPS나 음악 스트리밍 서비스 정도만 해도 충분하다.
더 필요한게 있으면 다음 버젼 iOS SDK 에 추가가 되겠지.
어플 개발자가 멀티태스킹으로 돌아야된다고 판단되면 해당 API를 쓰라는거다.
이게 뭔가 논리 배반적인가?

보다 기술적인 얘기로 들어가자면, 보통 OS의 task는 3가지 상태를 가진다.
Ready, Suspend, Running.
Running은 말 그대로 지금 돌아가고 있는 녀석.
Ready는 Running 할 준비가 된 녀석.
Suspend는 지금 돌 필요가 없는 녀석.

iOS에서는 지금 유저가 사용중인 단 하나의 어플만 Running으로 보면 된다.
다른 어플로 전환하거나, 홈버튼으로 어플을 나가버리면 원래 있던 어플을 Suspend로 바꾼다.
단, 멀티태스킹 API를 사용 하는 녀석들은 계속 Ready <-> Running 상태를 유지할것이다.
그래서 실제로 백그라운드 음악틀기,GPS잡기가 될꺼니까.
Suspend로 가는 녀석들은 아예 신경을 안써도 되는 구조이다.

유저가 수많은 어플을 껐다가 켰다가 할것인데,
그 모든 어플들을 계속 Ready <-> Running 상태를 유지하는게 옳은가, Suspend로 치부해서 신경끄는게 옳은가?
휴대폰 배터리가 무한이 아닌 다음에는 당연히 후자가 낫다.
뭐...아무것도 안하는 어플이 배터리를 소모하는게 맞다면;;; 할말은 없다 ㅡ.ㅡ;;;


3. 그나마 멀티태스킹이라고 하는 수준은 DOS 수준밖에 안된다.

DOS상에서의 램 상주 프로그램이 가능했던 점에 비추어서, 저런 말을 하는 사람도 있었다.

위키에서 램 상주 프로그램에 대한 설명.
============================================================
램 상주 프로그램(TSR, Terminate and Stay Resident)은 도스 운영 체제 상에서 제한된 멀티태스킹을 가능하게 하는 하나의 방법이었다. 수많은 하드웨어 드라이버 프로그램들은 TSR의 형태를 취했으며, 여러 유틸리티와 바이러스들이 이러한 형태를 취하기도 했다.

MS-DOS에서는 한 번에 오직 하나의 프로그램만 실행될 수 있으며, 종료될 때는 보통 시스템 호출 INT 21h/4Ch를 호출하여 기본 셸 프로그램인 COMMAND.COM에게 제어권을 돌려 주었다. 이렇게 종료할 경우 프로그램이 사용하고 있던 메모리와 자원들은 모두 초기화되지만, INT 21h/31h를 호출하여 종료할 경우 프로그램의 일부가 램에 계속 남기 때문에 이를 통해 램 상주 프로그램이 구현되었다.
============================================================

DOS는 멀티태스킹 자체를 고려하지않은 OS이다.
그래서 어쩔수없이 2개의 프로그램을 굴리기 위해 저런식으로 썼는데,
그것과 iOS의 멀티태스킹이 비슷하다는 거다. -_-;;
뭐 사용자가 얼핏 봤을때 비슷할 수도 있다.
그런데 중요한 점은 DOS 상황에서 해당 어플이 무한루프가 빠지거나, 잘못된 연산으로 죽는경우,
OS 자체가 죽어버린다. 재부팅 말고는 해결책이 없다.

iPhone을 쓰다가 간혹 어플이 지혼자 죽어버리는 경험 해보셨을것이다.
어플의 버그로 어플이 비정상종료된 상태이다.
이때 스마트폰 자체가 죽던가? 아니면 어플만 종료되던가?
이게 DOS 정도의 OS인가??
(선점형 Kernel이냐 비선점형 Kernel이냐를 따지시는 분들은 저리로 훠이훠이~
지금은 단순히 user space만을 논하고 있다.)


이상 반론 끝.
참 뻘글을 남겼을 수도 있지만, 저런 이상한 말을 듣고는 바로 질문 하는 사람들 있었다.
'iPhone 멀티태스킹 안되나봐요? 그럼 음악 들으면서 웹서핑 안되겠네요...'
이런게 문제다. -_-

정확히 알지 못하고 정확히 표현하지 못할꺼면 말을 하지말던가...
,
Programming 2010. 9. 10. 10:19

DSP에서의 Memory Access (1) - Architecture

Freescale MSC8156 이라는 DSP를 사용중이다.
memory access time이 매우 중요한 이슈라서...Reference Manual을 읽고 좀 정리해본다~

구조는 DCache, M2/L2 memory, M3, DDR 으로 구성되어있다.
(아래 그림 참고)

M3 부터는 DSP Subsystem 을 벗어나, 다른 코어 및 periperal 들과 함께 사용하는 bus에 접근하게 된다. 그러므로, 실제 access time이 매우 오래 걸릴 수 있다.
,
잡동사니 2010. 7. 28. 17:16

정서상 이상한 여자인지 알아보는법...?

1. 중국인구가 몇명?
-> 어이없는 대답일 경우 (10만이라거나) 뭔가 문제가...

2. 컴퓨터에서 파일 복사할줄 아세요?
-> 기본적인거를 이상하게 말한다거나?

3. 버스정류장 2~30정도의 거리를 몇km정도 될까요? 라고 묻기
-> 시간과 거리개념이 있나? 보통 여자들은 시간을 얘기한단다...
    '버스로 30분정도 걸리는데...그름 몇km지?'
    4, 10 같은 숫자가 들어가거나 지나치게 빠른 무성의한 대답은 이상.
,
잡동사니 2010. 7. 28. 08:50

Linux 각 directory별 사이즈 보기.

du -sm *

하면 알아서~~ ㅎㅎ
,
Programming 2010. 6. 29. 23:08

C Structure에서의 this pointer 찾기.

C언어에서 this라니 묘하긴하지만.

struct A
{
   int a, b;
};
가 되어있을때, A 구조체의 b 포인터에서 A 구조체의 포인터를 거슬러 올라가서 구하는? 뭐 그런것.

#define container_of(ptr, type, member) ({   \
const typeof( ((type *)0->member ) * __mptr = (ptr);   \
(type *)( (char *) __mptr - offsetof(type, member) ); } )

길기도 하지 -_-;;;
A structure로 예를 들어보자면, 코드는 다음과 같이 활용될수있다.

void foo (int * b)
{
struct A * p;
p = container_of(b, struct A, b);
}

좀 복잡하긴함...^^;;
,
잡동사니 2010. 5. 14. 16:47

Linux에서 find -> rm 하기.


find ./ -name "어쩌구저쩌구" -exec rm -f {} \;

하면 해당 파일들 지워진다.
폴더일경우 rm -rf 로 해야 지워짐...
,
Programming 2010. 1. 28. 14:28

Memory Marking 하기

사람이 읽기 편하게 마킹하는게....몇가지 있는데

0xDEADBEEF,
0xBADDCAFE,

등등?
,
잡동사니 2010. 1. 19. 19:36

iPhone과 Unix와 비슷한 구석이 있다?

요즘 iPhone을 열심히 사용중이다. 유료어플도 두어개 있고...무료어플은 압도적으로 많다 ㅎㅎ
근데 자꾸쓰다보니 Unix와 비슷하지않나? 싶다.

Unix에서 자주쓰이는 말중 하나가 'Simple is Beautiful' 이 있다.
이게 뭔의미냐면...뭔가 하나의 작업을 하는데 있어서는 하나의 실행파일이면 된다는것 이랄까.
예를 들어 A,B 각각의 어플리케이션이 있다면, 흔히들 쓰이는 윈도 유저라면 A,B를 동시에 쓸때 어떨까?

'아놔... 이거 어케 결함안되나? A랑 B랑 연동시켜서 쓰고 싶은데'

반면 unix는 대부분의 어플들이 CMD이다.
즉, Standard Input/Output을 통해서 얼마든지 어플들 간의 연동이 가능하다.
(물론...나도 그리 익숙치않아서 잘 쓰진못한다 ^^;;)
그래서 'Simple is Beautiful' 말이 생겨났다.


자, 왜 아이폰을 유닉스랑 비교해보자.
아이폰에서 각각의 어플들도 보면 간단하고 단순한 것이 많다.
물론 그렇기에 유료어플들도 저렴한것이 많고.
내가 일상에서 가장 많이 쓰고있는 시나리오를 말해보자면

'아...여길 가봐야되는데 어케가지?'

컴퓨터라면 어떨까?
일단 부팅부터해야된다. 그리고, 인터넷 어플을 열고 (IE가 됐던 FF가 됐던),
지도 서비스를 제공하는 웹페이지에 접속. 검색. 아...버스를 타고 지하철을 타고가야겠네.
버스 웹페이지를 연다. 몇분남았는지 체크하고 출발.

솔직히 아이폰은 위에 언급한것과 정확히 동일하다.
다만, 부팅시간이 없고, 각 어플들에게 접근하는 시간이 매우 짧다.
컴퓨터의 웹브라우저는 만능어플이 되어야하지만, 아이폰의 어플은 단 하나의 기능만 하면 되기때문이다.
대부분의 어플은 작고 빠르다. (게다가 멋진 어플들도 많다!!!)
물론 어플들간의 연동은 머릿속에 잠시 저장해두긴하지만 ^^;;;

한달여간을 아이폰을 쓰면서 각종 어플들을 사용해보니,
일상 생활과 밀접한것은 컴퓨터보다는 오히려 스마트폰이 아닌가 싶다.
컴퓨터에 비해 손과 매우 가까운 탓일까. ^^
,
TOTAL TODAY