사무실에서 PC가 쫓겨나고 있다. 대신 BC(Business Computer)의 일종인 신클라이언트(thin-client)가 그 자리를 차지하고 있다. PC가 기밀 유출 주범으로 지목되면서 기업들이'신클라이언트' 방식의 BC 시스템에 눈을 돌리고 있는 것이다. 중요한 데이터는 모두 중앙 서버에 저장하고 개별 PC에는 기밀 자료를 담아주지 않기 위해서다. 아이뉴스24는 BC를 구현하기 위한 실제 기술과 현재 기업들의 움직임을 심층 취재해 소개한다. [편집자 주]

부산 동일고무벨트에서 근무하고 있는 김 모 과장. 그는 하루 일과를 시작할 때마다 얇은 카드 한장을 꺼내 책상위에 있는 모니터에 꽂는다. 정해진 인증 절차를 끝내게 되면 전날 작성하다 만 생산 재고 현황표가 컴퓨터 모니터에 펼쳐진다.

김 과장이 사용하는 카드에는 인증 정보 외에는 아무런 데이터가 없다. 김 과장이 중앙 시스템과 접속할 수 있도록 해 주는 역할을 할 뿐이다. 매일 사용하는 컴퓨터 단말기 역시 중앙 서버와 연결을 끊게 되면 빈 깡통이나 마찬가지다.

동일고무벨트가 이용하고 있는 이 시스템은 '신 클라이언트'라 불리는 네트워크 컴퓨터의 일종이다. 직원들이 이용하는 단말기에는 데이터는 커녕 운영체제조차 깔려 있지 않다. 인증카드를 이용해 중앙 시스템에 접속해야만 원하는 작업을 할 수 있다.

이처럼 신클라이언트 방식의 BC 시스템을 도입한 기업은 동일고무벨트 뿐만이 아니다. 첨단 반도체 제조작업을 담당하고 있는 삼성전자 기흥 사업장과 수원 사업장 등을 비롯한 제조산업에선 이미 신클라이언트를 적용하고 있다. 이 뿐 아니다. ▲부산 위생병원, 동인 병원 등의 의료 산업 ▲공공기관 등에서도 컴퓨터 대신 새로운 단말기로 업무를 처리하고 있다.

주요 기업들이나 공공 기관들은 왜 멀쩡하게 잘 사용하던 PC를 사무실에서 추방하고 있는 것일까? 이들은 왜 별도 단말기와 네트워크를 도입해가며 새로운 업무용 컴퓨터(BC)로 바꿔나가고 있는걸까?

◇BC란?

'업무용 컴퓨터(Business Computer)'의 약어인 BC는 ▲신클라이언트 컴퓨팅 ▲웹 기반 터미널 ▲서버 기반 컴퓨팅 등의 네트워크 컴퓨터 개념을 포함하고 있다.

중요한 데이터는 중앙 서버에 담아두고 개인이 사용하는 단말기는 '깡통'처럼 정보만 표출하도록 한다는 것이 BC의 기본 개념이다. 이런 방식을 통해 기업 정보가 무차별 유출되는 것을 막겠다는 것이다.

비단 보안만 강화한 것이 아니다. 개인들이 사용하는 각종 개인용 소프트웨어와 패치, 업데이트 등을 종합 관리할 수 있기 때문에 관리 효율성이 향상되고 운영 비용은 줄일 수 있다.

사용자들이 만약 PC를 사용하다 고장이 난다면 이 PC가 복구될때까지 업무에서 손을 놔야 하지만 BC를 도입하게 된다면 또 다른 단말기에서 개인이 하던 업무를 그대로 연장해 사용할 수 있다. 중앙 시스템에 업무 현황조차 그대로 입력돼 있기 때문이다.
사용자 삽입 이미지



◆애물단지로 전락한 PC

기업들에게 직원들의 PC는 애물단지다. 보안 강화를 위해 매년 막대한 금액을 투자해 보안 신기술을 도입해 보지만 정작 회사내 개개인이 사용하는 'PC'는 속수무책이기 때문이다.

PC 이용자가 나쁜 마음을 먹고 저장된 데이터를 외부로 빼돌리면 철통 보안망도 무용지물로 전락하기 십상인 것이다. 실제로 상당수 기업비밀들은 개인들의 PC를 통해 외부로 유출됐다.

지난 해 굴지의 조선업체 임원이 선박 및 조선 건조 기술을 유출하려다 적발됐다. 이 직원은 재직 시 회사 서버에 접속해 자신의 PC에 기밀 자료를 내려받고, 외장형 저장장치에 자료를 저장해 기술을 빼내갔다. 유출자는 회사에서 전체 공정도, 설계완료보고서 등이 담긴 지식관리시스템 서버에 접근할 수 있는 권한을 가진 3명중 1명이었다.

D그룹 전직 연구원은 회사 기밀을 유출하려다 적발됐는데, 이 과정에서 액정표시장치(LCD) 컬러 필터 관련 기술이 담긴 80여개의 파일을 외부 메일로 전송한 사실이 추가로 발견된 사건도 있었다.

지난 해 10월 법원은 우리나라가 세계 최초로 개발한 휴대인터넷(와이브로) 기술을 해외로 유출한 포스데이터 전직 연구원에게 징역 3년의 실형을 선고했다.

이들 역시 와이브로 원천기술을 외장 하드나 이메일 등을 통해 빼돌린 뒤 미국의 한 통신회사에 관련 기술을 넘기려다 적발됐다.

이밖에 포스코의 전직 직원 2명이 철강 핵심 기술을 중국 철강사에 50억원을 받고 팔아넘기려다 검찰에 적발됐다. 포스코 기술개발실과 기술연구소 연구원이었던 이들은 퇴사 전 핵심 철강재 제조기술이 담긴 1천48개의 파일을 빼돌린 것으로 조사됐다. 이들은 평소 연구자료를 공유해왔으며, 사내 서버에 보관하지 않고 사적으로 보관해왔다.

이같은 PC 악용 기밀 유출 사례에 대해 글로벌 위험관리 컨설팅 업체인 크롤(Kroll)은 지적재산 유출 대응책으로 기업이 가상사설망(VPN), 웹메일, 메신저, 인쇄기록 등의 전자정보를 기록할 것을 제안했다. 전자정보를 보존하면 기밀 정보가 유출됐을 시 사용자 로그 분석 등을 통해 유출자를 쉽게 찾을 수 있기 때문이다.

◆똑똑해진 PC, 맘만 먹으면 기밀도 줄줄

산업자원부 집계에 따르면 2007년 11월 현재 국내 기업에서 사용되고 있는 PC는 1천6만대로 집계됐다. 바야흐로 기업용 PC 1천만 대 시대에 들어선 것이다.

기업들이 사용하는 PC는 예전과는 비교도 할 수 없을 정도로 똑똑해졌다. 담아낼 수 있는 데이터 량도 엄청나다. 웬만한 기업들의 정보를 모두 담을 수도 있을 정도가 됐다. 문제는 PC가 똑똑해진 만큼이나 위험도 커졌다는 점. 사운을 좌우하는 기밀들이 개인들의 PC를 통해 술술 새고 있는 것이다.

실제로 대한상공회의소가 2006년 국내 기업 400개를 대상으로 '산업기밀 유출 실태'를 조사한 결과 기업 5곳 중 한 곳이 회사 기밀 유출 피해를 입은 것으로 보고됐다. 기밀 유출 사례의 대부분은 직원들이 사용하는 PC에 저장된 기밀 자료를 밖으로 빼돌린 것으로 분석됐다.

사용자 삽입 이미지
 

중소기업기술정보진흥원의 '중소기업 핵심 기술 유출실태' 조사에서도 비슷한 결과가 나왔다. 기업의 전,현직 직원들이 자료 복사 등의 방법으로 핵심 기밀을 유출한 것이다.

사용자 삽입 이미지
 

앞서 언급됐던 동일고무벨트가 신클라이언트 시스템을 도입한 것 역시 기업비밀 유출에 대한 유려 때문이었다. 직원들이 이용했던 개인용 컴퓨터를 통해 생산 기술과 업무 기밀이 유출될 수 있다는 점에 주목한 것. 결국 이 회사는 고민 끝에 막대한 비용을 들여 개인들이 사용하던 PC를 약 700여대의 씬 클라이언트 시스템으로 전면 교체했다.

◆PC 대신 '비즈니스 컴퓨터' 부상

PC를 통한 기업 정보 유출 문제는 어제 오늘 제기된 것은 아니다. 10여 년 전에도 이미 한 차례 '사무실에서 PC를 추방하자'는 목소리를 높인 적 있다. 직원들이 PC에 남겨둔 데이터들이 기업들에겐 기밀 유출이란 부메랑으로 되돌아 올 것이란 경고가 끊이지 않았던 것.

직원들이 사용하는 PC에는 아무 정보도 남기지 않고 중앙 시스템에 모든 정보를 저장해 둔 후, 직원들은 네트워크를 통해 접속해 업무를 처리하도록 하는 기술들이 기업 기밀 유지를 위한 구원병으로 등장했다.

사용자 삽입 이미지
 

하지만 당시만 해도 중앙 시스템에 접속하기 위한 네트워크 설비와 속도가 열악했다. 게다가 새로운 단말기를 일일이 도입해야 하는 비용 부담도 만만치 않아 한 동안 들끓던 BC에 대한 관심도 급속하게 식어 버렸다.

이런 가운데 최근 들어 직원들의 PC를 통해 기업 비밀이 유출되는 사례가 늘면서 상황이 달라지고 있다. 업무의 편리함을 위해 자료 유출 위험이 큰 PC를 계속 사용해야 하는지에 대해 의심이 본격적으로 제기되기 시작한 것이다. 이에 따라 PC를 대체할 수 있는 새로운 업무 수단, 즉 업무용 컴퓨터(BC)에 대한 관심을 높이고 있는 것이다.

무엇보다 당시 기술 확산의 걸림돌이었던 네트워크 설비가 10년 사이에 크게 개선됐다. 100Mbps 급의 네트워크에서 1Gb까지 빠른 네트워크 속도를 자랑하게 된 것이다.

게다가 기존 PC에 소프트웨어를 설치해 중앙 시스템과 연결하는 소프트웨어 기반 네트워크 컴퓨팅 구현 기술까지 등장하면서 비용 부담도 크게 줄어들게 됐다.

이제 기업들은 높아가는 보안 위기 의식에 더해 확 빨라진 네트워크와 비용 부담까지 줄일 수 있는 새로운 업무용 컴퓨터에 눈을 돌리고 있다.

본기사의 출처 및 저작권은 [아이뉴스24 2008-01-28] 에 있으며,
문제가 있을 경우 관리자에게 연락(getword@gmail.com)을 연락을 주시면
확인절차를 거쳐 삭제하도록 하겠습니다.
Posted by anal
:

“우리는 이런 질문을 던지고 답할 수 있어야 한다.
이 세상에서 가장 강한 사람은 누구인가?
그것은 자신을 이기는 사람이다.
가장 현명한 사람은 누구인가?
누구에게나 배우려는 사람이다.
가장 행복한 사람은 누구인가?
지금 하고 있는 일이 가장 중요한 일이라고 답할 수 있는 사람이다.
당신에게 가장 중요한 순간은 언제인가?
그것은 바로 지금 이 순간이다.
당신에게 가장 소중한 사람은 누구인가?
바로 내 앞에 있는 사람이다.

그렇다. 바로 지금 이 순간에 행복하게 최선을 다하는 사람들은
정신적으로나 사회적으로나 가장 건강한 삶을 살고 있는 것이다.
그래서 하느님의 달력에는 현재만 있고,
마귀의 달력에는 과거와 미래만 있다고 한다.
현재(present)에 충실한 사람이 하나님의 선물(present)이다.”

- 우리들병원  하권익 원장

Posted by anal
:
One day, Tarzan and his monkey friends were going to a lake for a bath.

Just as Tarzan take off his shorts, the monkeys laugh loudly, so loud that they almost cry.

Curious, Tarzan asks them why laugh so hard.

In reply, one of the monkeys asked Tarzan; "How come your tail is in front and not behind like us?"


어느날 타잔은 원숭이 친구들과 함께 멱 감으러 호수로 갔다.

타잔이 막 팬츠를 벗어 내리자 원숭이들은 거의 눈물이 날 정도로 포복절도하며 웃어대는 것이었다.

이상히 여긴 타잔이 뭐가 그렇게나 우스운 거냐고 묻자 원숭이 하나가 대답 대신에 물어왔다.

"어째서 꼬랑지가 우리처럼 뒤에 달리지 않고 앞에 가있는 거야?"

사용자 삽입 이미지
Posted by anal
:
요즘 많은 직장인들이 스트레스를 받고 있다.
그로 인해 병을 얻고 빨리 늙는 사람도 있다고 한다. 그럴 수 있겠다.
어떻게 하면 스트레스를 덜 받거나 스트레스를 잘 풀어 갈 수 있을까?
필자가 20여 년간 직장생활을 하면서 겪은 경험을 정리해 본다.

스트레스를 받는 상황 중에 가장 많은 경우가 인간관계와 시간의 문제였다. 특히, 상사와의 갈등은 쉽지 않는 문제였다.

성질이 급한 사람, 고집이 센 사람, 생색만 내는 사람, 부하의 성과를 자신의 것으로 돌리려는 사람 등 정말 다양한 상사가 있었다. 퇴근 시간만 되면 불러 세워 놓고 일을 시키고 업무 보고를 받으려 하며, 주말에도 나와서 일을 해야 바람직한 직장인이라고 생각하는 상사도 있었다.

윗사람을 바꿔 보려 하고, 가끔 따지기도 하고 대들어 보기도 했지만, 별로 효과가 없었다. 실제로 바쁠 때도 있고, 갑자기 밤 새워 일을 해야 할 경우도 있었다.

그래서 여러 가지 방법을 골고루 활용했다.

어느 때는 주말에 사무실에 나와 미친 척하고 밀린 일을 했다. 말도 되지 않는 지시사항이지만, 잔소리 듣기 싫어서 일단 해 보았다. 처음에는 이치에 어긋나는 일이라 생각하고 시작했는데, 하다 보니 또 다른 걸 배우고 익히는 계기가 되었다.  

부서 회식이 있는 날 저녁에 회식에 참석하지 않고 일을 했다. 윗사람이 회식에 참석하는 게 더 중요하다고 하며 마무리하고 회식에 참석하라고 했지만, “당신이 시킨 일이 더 중요하다”고 객기를 부리며 항의하는 마음으로 일만 열심히 했다. 물론 다음날 아침 또 다른 잔소리를 들었지만, “나도 한 성질 한다.”는 걸 보여 주고 싶었다.

능력이나 실력이 부족한 상사가 불합리하게 일을 시키는 경우도 있었다. 무능하거나 잘 모르는 건 어쩔 수 없지만, 성질까지 마음에 들지 않을 때는 미칠 것 같았다. 그럴수록 더 유식한 체하고 더 잘하는 척도 해 보았지만 별로 효과가 없었다.

이왕 찍힌 거 더 찍혀도 좋다는 태도로 거만한 행동을 하기도 했다.  그 상사 위에 또 다른 상사가 알아 주려니 기대를 했다. 무능한 상사 밑에서 열심히 일하는 부하를 모른 체 할 리가 없겠지 생각했다. 언젠가는, 누군가에게는 인정받으리라 생각하고 기대했지만 반드시 그런 건 아니었다.

시간이 지남에 따라 오히려, 무능하고 실력 없어 스스로 힘들어 하는 상사가 불쌍하다는 생각도 들었다.

그런 과정을 거치면서 시간이 흘러 상사의 입장이 되었다.

아랫사람의 입장일 때는 상사와의 갈등이 스트레스라고 생각했지만, 상사 또한 부하로 인한 스트레스가 적지 않다는 걸 알았다.

게으른 직원, 말 구절을 알아 듣지 못하는 직원, 엉뚱한 일만하면서 비능률적으로 바쁘기만 한 직원, 멋만 내면서 자기 일만 하는 직원, 함께 어울리지 못해 외톨이로 사는 직원, 실력도 능력도 없으면서 학벌을 내세우는 직원, 각종 활동에 참여하지 않으며 매사에 부정적인 견해를 가진 직원 등 정말 다양한 직원들이 눈에 띄었다.

말로 타일러서 해결되는 일이 별로 없었다. 대학을 졸업하고 시집장가를 간 성인들에게는 가르쳐서 배워지지 않는다는 것도 알게 되었다.

달래 보기도 하고, 강한 어조로 심한 말도 하고, 술도 사주고 노래방도 데리고 갔지만 쉽게 변하질 않는 게 사람이었다. 그들로 인해 윗사람에게 또 스트레스를 받고 있는 자신이 정말 싫을 때도 있었다. 아랫사람에게 치이고 윗사람에게 눌리고 하면서 시간이 흘러 갔다. 인내도 배우고 참을성도 늘어 나면서, 차츰 익숙해졌다.

그 동안 마음에 들지 않았고, 함께 어울리고 싶지 않았던 유형의 사람들 중에는 "자기 자신의 모습"도 많았다는 걸 알게 되었다.

시간에 대한 스트레스 또한 적지 않았다.

해야 할 일이 너무 많은데 시간이 부족한 경우이다. 많은 사람들이 한꺼번에 일을 맡겨 부담이 되고, 무엇부터 해야 할 지 분간이 되지 않아 힘들 때가 있었다. 매일매일 누적되는 업무와 새롭게 떨어지는 지시사항으로 인해 회사에 나오기 싫었다. 갑자기 다 때려치우고 도망가고 싶은 생각도 들었다.

그런 상황이 꼭 본인 자신의 책임만은 아니었다. 꾀를 부리고  다른 사람에게 일을 넘기는 직원에겐 많은 일이 부여 되지 않지만, 말을 잘 듣고 온순하며, 고분고분한 사람에게는 특히 일이 많이 떨어지기 마련이다. 시간이 해결해 주지 않은 일도 많았다.

어느 때는 주말마다 출근했다. 아무도 없는 사무실에 조용한 음악 들으며 생각을 정리했다. 무슨 일이 왜 중요하고, 어떤 일은 왜 늦어도 되는지를 따져 보았다. 전화 벨이 울리고 오가는 사람들이 많고, 불러대는 사람이 많은 평일에 비해 업무효과가 높았다. 자주는 아니지만, 두어 달에 한두 번씩은 휴일에 출근하는 것도 효과가 있었다.

때로는 몸에 무리가 갈 정도로 며칠씩 밤을 새우면서 일을 했지만, 누가 알아 주거나 수당이 더 붙는 것도 아니었다. 그냥 일과의 싸움이었다.

그렇게 20년 정도 회사를 다니며 다양한 경험을 했다. 일과 사람과 시간과 좌충우돌하면서, 사람을 다루고 시간을 조절하며, 일의 경중 완급을 따지는 요령이 생겼다.

일이나 사람이나 시간이나, 뭐든지, 경험이 중요하고 노력이 따라야 한다는 걸  20년이 지날 때쯤 알게 되었다. 책을 읽으며 간접경험을 쌓기도 하고 남의 이야기를 들으며 미리 겪어 보기도 했지만, 직접 겪는 것만큼 생생한 효과는 없는 것 같다.

그래서 스트레스 해소 방법 몇 가지를 제안한다.

첫째, "어느 회사나, 어떤 일이나 스트레스는 따른다"는 걸 인정하고, 때로는 그런 스트레스와 긴장이 성장과 발전에 필요할 수도 있음을 인식한다. 월급이나 보수의 반은 스트레스로 인한 보상이라고 생각한다.

둘째, 스트레스를 피하지 말고 정면으로 도전하고 부딪쳐 보는 거다. 피하려 한다거나 외면한다고 해결되지 않는다. 막상 닥쳐 보면 별것도 아니며, 의외로 쉽게 풀리는 경우도 많다. 먼 훗날에 닥칠 어려움을 생각하면 지금의 스트레스 상황은 아무것도 아닐지 모른다.

셋째, 스트레스 원인이나 요인에 대한 자기의 인식이나 의지에 따라 스트레스가 아닐 수도 있고, 해석 방법이나 마음 먹기에 따라 스트레스는 적극적인 동기부여와 자극의 요인이 되기도 한다. 자신의 능력이나 인식의 부족이 스트레스 원인일 수 있다.

넷째, 생각할 시간을 가져 보고, 아무것도 생각하지 않는 시간을 마련해 본다. 조용한 음악을 듣거나 독서 삼매경에 빠져 본다. 술과 춤과 영화도 좋지만, 자기만의 존재를 확인할 수 있는 고독이 필요하다. 그런 장소와 시간을 마련해 보는 것도 바람직하다. 아무 생각도 하지 않을 수 있는 무념무상(無念無想)의 상태에 빠져 보는 거다.

끝으로, 스트레스를 줄이려면 실력과 능력이 있어야 한다. 모든 일을 해결할 수 있는 역량이 있으면 자신감이 생기고, 자신감이 있으면 용기와 의지가 강해진다. 열심히 일하고 꾸준히 공부하는 것을 무시하지 않으면 스트레스를 이길 수 있다.
 
아직도 사람과 일로 인해 스트레스를 많이 받고 있지만, 그런 스트레스와 긴장이 자신의 존재 가치와 삶의 의미를 깨닫고 느끼게 해 준다.  일과 사람으로 인해 아직도 많이 헤매고 있지만, 아마도 죽을 때까지 스트레스 받으며 배워야 할 것 같다.

"네 몸에 병 없기를 바라지 말라.
몸에 병이 없으면 교만해지나니
병고(病苦)로써 양약을 삼으라"

는 경구가 생각난다.

- 홍석기의 밥값하는 사람들
www.hankyung.com/community/skhongpk
Posted by anal
:
김익환 SW컨설턴트 ik_kim@yahoo.com
2004년 07월 04일

소프트웨어를 개발하다 보면 많으나 적으나 문서 산출물이 나오게 된다. 그 중에서 가장 중요한 문서를 하나 선택하라고 하면 무엇일까.

소프트웨어 개발과 관련된 분야에는 시스템소프트웨어 개발, 응용소프트웨어 개발, 용역개발, ERP 구현, 전산실의 자체 개발, 펌웨어(Firmware) 개발 등을 들 수 있다.

이런 다른 종류의 소프트웨어 개발에 참여해본 사람들은 자기분야에서의 경험에 기준을 두고 소프트웨어를 얘기하게 된다. 산출물도 각각 다를 수 밖에 없다.

필자가 지금까지 경험해 본 소프트웨어 프로젝트를 보면 똑 같은 산출물을 요구하는 프로젝트는 한번도 없었다. 그 만큼 프로젝트가 다양하다는 것을 의미한다. 그래서 여러가지 방법론이 존재하고 새로 생겨나기도 한다.

특정한 방법론에 나오는 프로세스와 산출물을 모든 프로젝트에 획일적으로 사용할 수가 없다. 그래도 모든 프로젝트가 지켜야 하는 핵심 프로세스와 핵심 산출물은 유사하다. 다만 형식이나 이름이 다르게 나타나기 때문에 상이한 것처럼 보이나 소프트웨어개발의 근본원칙에서 보면 핵심이 다를 수는 없다.

기본적으로 대형 프로젝트를 하게 되면 수십개, 수백개나 되는 많은 산출물이 요구되고 그러다 보면 중복된 정보가 여기저기 나타나게 된다. 회사가 커지면 나타나는 피할 수 없는 관료적인 비효율성의 문제와 비슷하다. 작은 프로젝트는 2-3개의 문서만 작성해도 충분할 지 모른다.

산출물 문서중에 'Software Requirement Specification(SRS)'이라는 문서가 있다. 개발방법론이나 회사에 따라 '요구사항명세서', '요구분석서' 등 다른 이름으로 호칭되기도 하나 근본적으로 동일한 목적을 가지고 있다. 개발하려는 것이 무엇인가를 정의하는 것이다. 단순히 기능정의서만으로 생각하면 오산이다. 기능정의는 SRS의 일부분이다. 뒷부분에서 부연 설명을 하겠다.

필자가 미국의 국방산업체인 록히드와 수행한 프로젝트의 예를 들어보자. 첫 회의에서 프로젝트의 개요와 우리가 할 수 있는지를 확인했다. '록히드쪽에서 RFP(제안요청서)를 쓰고 우리가 제안서를 쓰고 진행할 것인지', 아니면 '록히드가 RFP와 함께 SRS를 쓰고 우리가 구현만 할 것인지'를 의논한 결과 SRS를 록히드가 작성하기로 하고 우리는 SRS에 기초해서 제안서를 내기로 했다. 이 제안서에는 SRS에 모든 기능이 명시되어 있기 때문에 기능에 대한 명시는 없이 가격과 개발기간 등 그 외에 제안서에 필요한 정보만 포함되었다. 물론 SRS를 우리가 작성하기로 했다면 가격은 더 비쌌을 것이다.

SRS와 함께 'Acceptance Test Plan(ATP)'도 록히드가 작성했다. 프로젝트의 검수는 주어진 ATP에 있는 테스트케이스만 통과하면 되는 것이었다. 명확하게 우리가 해야 할 일을 프로젝트 시작과 동시에 알고 있는 것이다. 이것보다 프로젝트의 내용이 더 정확히 정의될 수는 없을 것이다. ATP를 통과하는 것 자체가 검수승인을 의미한다. 그 후에 발견되는 결함들은 당연히 유지보수 비용을 받고 수정해 주게 된다. 그러므로 록히드쪽에서도 완벽을 기하려고 한다.

그 대신 우리가 SRS에 약속했던 기능을 구현해 주지 못하면 상당한 불이익을 받는다. 비용을 못 받을 수도 있고 고소를 당할 수도 있다. 소프트웨어 회사 중에 처음에는 잘 나가다가 너무 급격히 성장하면서 고객에게 무리한 약속을 해서 실패한 회사도 많다. 대부분 부실한 SRS 때문이다.

록히드 프로젝트 경우에 구현해야 하는 기능에 대해서 주관적인 판단은 거의 없었다. 커뮤니케이션에 오류가 있을 확률이 매우 낮았다는 것이다. 내가 수행했던 다른 프로젝트들이 이렇게 완벽하게 진행된 것은 아니었지만 적어도 프로젝트가 객관적으로 서로 동의한 기능구현을 목적으로 수행되어야 하는 것은 매우 중요하다.

패키지를 개발하든지 SI 업체로서 프로젝트를 수주하든지 기능을 원하는 측과 기능을 구현하는 측이 얼마나 빨리 서로 일치하느냐가 성공의 관건이다. 서로 일치하는지를 확인하는 가장 좋은 방법이 문서이다. 제안서나 제품기획서는 소프트웨어 개발의 첫 단계인 기획 단계에서의 커뮤니케이션의 핵심이다.

제품기획이 완성되면 개발팀으로 넘어와 소프트웨어적인 측면에서 SRS를 작성하게 된다. 여기에서 모든 기능이 확정되고 모든 부서가 동시에 일을 추진하게 된다. 그래서 SRS는 개발팀, 마케팅, 기술문서, 테스트팀, PM 등 모든 팀과의 커뮤니케이션의 중심이 된다.

소프트웨어 개발에 있어 가장 중요한 하나의 문서를 꼽으라면 단연코 SRS이다. SRS에는 가능설명이외에도 성능요구사항, 인터페이스요구사항, 국제화, 하드웨어와 소프트웨어의 환경 등, 이 소프트웨어가 무엇을 하는지를 알 수 있는 모든 항목이 들어 있다.

프로젝트 매니저(PM)가 개발계획을 정확히 수립할 수 있도록 기능도 세세히 분리해야 한다. 각 기능항목을 2시간~ 2일 사이로 시간 측정 가능하도록 나누어야 한다고 주장하는 사람도 있으나 필자는 1일~2일 정도의 단위가 적당하다고 본다. 전체 소프트웨어 결함중에 56%가 요구사항분석 단계, 27%가 설계단계, 7%가 코딩에서 생긴다는 통계가 있다. 요구사항 분석단계에서 대충 SRS를 작성하기 때문에 생기는 결과이다.

개발방법론을 한번이라도 접해본 사람들은 다 들어본 적이 있는 '1:10:100 법칙'이라는 것이 있다. 요구사항 단계에서 잘못된 것을 발견해서 수정하는 것과 설계단계에서 수정하는 것과는 10배의 시간과 비용이 들고 코딩단계에서 발견하면 100배의 시간이 더 든다는 것이다. 책과 머리로는 이해하나 이것을 진실로 이해해서 제대로 실천하는 사람은 보기 드물다. 요구사항을 정확히 정의해야 하는 중요성은 전 개발과정중의 핵심중의 핵심이라고 아무리 강조해도 지나치지 않다.

이런 중요한 문서를 대충 적고 넘어가는 이유는 많다. 기능을 구현해 보지 않고는 할 수 있는지가 확실하지 않다는 이유가 그 중의 하나이다. 이런 경우의 판단은 두 가지 방법에 의존할 수 밖에 없는데 최단기간 내에 프로토타입을 만들어 보던가 아니면 경험자의 판단을 믿든가이다. 프로토타입을 만드는데 사용한 코드는 버리고 다시 개발하는 것이 좋기 때문에 당연히 경험자의 판단으로서 하는 것이 시간적으로 효율적인 것은 두말할 나위도 없다.

작은 프로젝트에서 발생하는 극단적인 케이스는 개발 종료후 보고서 제출용으로 SRS를 작성하려는 경우도 심심치 않게 본다.

잘 작성된 SRS는 결국 소프트웨어의 개발기간을 단축시켜 준다. SRS를 안 적거나 대충 적는 이유의 대부분이 시간이 없다고 한다. 잘 씌여진 SRS는 시간을 절약하게 해준다. '시간이 없어서' SRS를 정확하게 작성하지 않았다면 다음 개발단계를 빨리 시작할 수는 있으나 최종개발이 끝나는 시점은 더 늦어지게 된다. 그 외에도 부실한 SRS는 미래에 많은 문제를 파생시키게 된다.

정확한 SRS의 중요성은 강조했으나 이를 성취하기 위해서는 프로젝트의 종류에 따라 다르지만 소위 '갑' 이라고 하는 발주업체나 제품기획자의 능동적인 협조가 필요하다. '나중에 생각나면 추가하자'는 생각은 실패의 지름길이다. 한번 시작하면 변경하지 못한다는 생각으로 임해야 한다.

반대로 개발자의 입장에서도 무엇을 할 수 있는지, 자기의 능력도 확실히 알아야 한다. 할 수 없는 것을 할 수 있다고 해서 나중에 난감한 상황에 빠진 경험을 한번쯤은 가지고 있을 것이다. 좋은 소프트웨어가 나오기 위해서는 '갑'과 '을', 혹은 제품기획자와 개발자의 협력과 많은 시간투자가 초기단계에서 필요하다.
Posted by anal
:

에잇! 창업해야지. 창업하면 성공할 수 있을까?

“아- 직장은 이제 포기하고 장사나 해야겠어!”
“직장급료로는 어떻게 살아가기 힘들어 개인 사업을 해야겠어.”
등등 여러가지 이유로 직장을 포기하고 직접 사업을 할려는 사람들의 이야기이다.

그러나, 창업전문가는 물론이고 장사하는 사람조차 그런 생각과 태도로 시작했다가는 망하기
딱 좋다고 할 것이다. 장사꾼 기질을 찾아 개발하여야 한다.

내가 과연 장사를 할수 있을까. 하면 성공할 수 있을까.

창업에는 확고한 철학이 있어야 한다. 그리고
성공하려는 아주 강한 이유 (motive). 즉 동기가 있어야 한다.
그외 여러가지 창업자로서 갖추어야 할 무기가 필요하지만
사업의 성공은 결코 중도에서 포기하지 않는다는 강한 성공에로의 신념과 인내를 요구한다.

또한, 사업을 계획이나 시작하기전 사업가로서 자신의 적성이나 자질을 검토해 보아야 한다.
또 가능한 한 자신에게 가장 적합한 종목과 행태를 선택하여야 하며 자신이 싫증없이 좋아하는
품목과 형태를 선택하는 것이 최선이라 할수 있어며 그것은 성공할수있는 확율을 높힌다.

우선, 나의 장사꾼에 대한 기질을 테스트해 보자
아래는 일반적인 항목에 캐나다에서의 제반 상황들을 정리 첨가하였다.
테스트에 대한 평가방법은, 스스로 가장 냉정하게 각 항목에 1에서 5까지 점수를 기재한 후
합산하여 그 다음의 평가와 비교하도록 하였다.

01) 개인사업을 하면 성공에 대한 확신 ----------------------------------------- ( )
02) 평소 독립심과 자기 사업에 대한 갈망은 ------------------------------------ ( )
03) 새로운 것에 대한 호기심과 도전심은 --------------------------------------- ( )
04) 가능성에 대한 집념과 끈기에 대하여 스스로 평가는 ------------------------- ( )
05) 가족에 대한 어떤 문제가 발생시 인내와 결단력은 --------------------------- ( )
06) 관계된 새로운 정보에 대한 분류, 보관 및 활용능력은 ----------------------- ( )
07) 성격은 외향적이고 능동적 인가 에 대하여 ---------------------------------- ( )
08) 기업가로서 경제관과 금전관은 건전한가 ------------------------------------ ( )
09) 기본체력및 건강상태는 ---------------------------------------------------- ( )
10) 가족의 체력 및 건강상태는 ------------------------------------------------ ( )
11) 사업으로 선정할 품목에 대한 지식과 경험은 -------------------------------- ( )
12) 주변에 긍정적 사고를 가진 지인은 ----------------------------------------- ( )
13) 주변에 인간적 방해 내지는 저해 요인은 ------------------------------------ ( )
14) 인격적 금전적 신용상태는 ------------------------------------------------- ( )
15) 본인은 발생한 문제에 대하여 화부터 내는 성격은 아니다 -------------------- ( )
16) 발생 문제에 대하여 체계적이고 논리적으로 해결한다 ------------------------ ( )
17) 사업이란 살아 움직여서 이익을 계속 창출하여야 하며 존재하여야 한다 ------- ( )
18) 가족들의 신뢰나 창업에 대한 동의는 --------------------------------------- ( )
19) 창업에 관한 확실한 조력자는 ---------------------------------------------- ( )
20) 현재의 경영관리 및 통제 능력에 대하여는 ---------------------------------- ( )
21) 써비스, 기술개발, 경영개발등에 대한 능력과 관심은 ------------------------ ( )
22) 경쟁업체에 대한 경쟁우위를 확보하고 유지하는 것에 대한 노력과 관심은 ----- ( )
23) 사업성공과 유지 및 발전에 영어가 기여하는 정도는 ------------------------- ( )
24) 경영자로서 아무리 바빠도 영어에 대한 증진 노력은 계속해야 한다 ----------- ( )
25) 컴퓨터를 업무 및 경영전반에 활용하여야 한다 는 것에 대한 생각은 ---------- ( )
26) 경영분석 및 판단과 결정 그리고 추진능력은 -------------------------------- ( )
27) 매일 매일 경영 diary는 일기처럼 적고 반성, 평가하고 수정하여야 한다 ------ ( )
28) 본인의 위기 관리능력은 --------------------------------------------------- ( )
29) 어떤 경우이든 정해진 법안에서 사업 성공을 도모하여야 한다 ---------------- ( )
30) 가정과 사업 둘 다 성공하여야 한다 ---------------------------------------- ( )

위의 항목 중 105점 이상이면 사업가로서의 성공하기위한 기본적 적합성은 갖추었다고 할수있다. 물론 이외의 항목을 더 정리하여 체크하여야 할것이다.
이민와서 하는 사업은 두번 창업의 기회는 곤란하기 때문이다. 그 다음은 아래의 check list를 채워 평가하기를 바란다.

01) 예상 사업자금의 150% 확보를 확보하고 있는가 ------------------------------ ( )
02) 창업 또는 사업시작 할 품목 과 업종이 선정되었는가 ------------------------ ( )
03) 가족의 동의를 얻었는가 --------------------------------------------------- ( )
04) 해당 전문서적이나 관계강좌등을 공부했는가 -------------------------------- ( )
05) 사업 계획서가 적어도 4번이상 수정하여 작성되었는가 ----------------------- ( )
06) 사업 예정지가 정 해 졌는가 ----------------------------------------------- ( )
07) 전문가에게 사업 타당성을 문의 했는가 ------------------------------------- ( )
08) 사업 실패시 대책은 ------------------------------------------------------- ( )
09) 가정의 경제적 자립도는 --------------------------------------------------- ( )
10) 사업 준비기간이 스스로 충분하다 생각하는가 ------------------------------- ( )
11) 현재 한인들이 운영하고있는 비즈니스의 종류에 대하여 어느 정도 아는가 ----- ( )
12) 적어도 한 업종에 대하여 한번 이상 실패담을 들어봤는가 -------------------- ( )
13) 본인 판단으로 사업을 경영할 정도의 영어는 되는가 ------------------------- ( )
14) 사업 성공에 직접 관계되는 협조처와 협조자는 구성되어 있는가 -------------- ( )
15) 사업에 장애가 되는 요소를 정리하여 두고 대책을 세워두었는가 -------------- ( )
16) 위치선정에 대한 검토, 매상 쳌크 등 시작에 대한 준비가 되었는가 ----------- ( )
17) 신뢰하고 의논활수있는 회계사는 선정 가능한가 ----------------------------- ( )
이상의 항목에서 12개 이상이 긍정적이라면 사업시작 준비에 들어섰다고 할수 있겠다.

이 외에도 많은 노력이 필요하겠지만 우선 이 정도 이상은 갖추어 다음 단계로 넘어가야 할 것이라 생각되어서 창업을 계획하시는 님들에게 참고자료로 올립니다.

Posted by anal
:

1.개미네집 주소는? 허리도 가늘군 만지면 부러지리.

2.타이타닉의 구명보트에는 몇 명이 탈수 있을까? 9명(구명보트)

3.서울시민 모두가 동시에 외치면 무슨 말이 될까?
천만의 말씀(서울시민 천만명)

4.금은 금인데 도둑 고양이에게 가장어울리는 금은? 야금야금

5.고기 먹을때마다 따라오는 개는? 이쑤시개

6.별중에 가장 슬픈 별은? 이별

7.진짜 새의 이름은 무엇일까요? 참새

8.붉은길에 동전 하나가 떨어져 있다. 그 동전의 이름은? 홍길동전

9.사람의 몸무게가 가장 많이 나갈 때는? 철들 때

10.A젖소와 B젖소가 싸움을 했는데 싸움에서 B 젖소가 이겼다.왜 그랬을까? A젖소는 "에이 졌소"이고 B젖소는 "삐 졌소?"

11.이혼이란? 이제 자유로운 혼자

12.고인돌이란? 고릴라가 인간을 돌맹이 취급하던 시대

13.엉성하다란? 엉덩이가 풍성하다

14.절세미녀란? 절에 세들어 사는 미친 여자

15.눈치코치란? 눈 때리고 코 때리고

16.오리지날이란? 오리도 지날하면 날수 있다

17.요조숙녀란? 요강에 조용히 앉아있는 숙녀

18.세상에서 가장 뜨거운 바다는 어디일까요? 열바다

19.세상에서 가장 추운 바다는 어디일까요? 썰렁해!

20.세상에서 제일 더러운 집은? 똥~집!

21.세상에서 제일 맛있는 집은? 닭똥집

22.보내기 싫으면? 가위나 바위를 낸다.

23.땅투기군과 인신매매자를 7자로 줄이면? 땅팔자 사람팔자.

24.도둑이 도둑질하러 가는 걸음걸이를 4자로 줄이면? 털레털레

25.식인종이 밥투정 할때 하는 말은? 에이, 살맛 안나~

26.임꺽정이 타고 다니는 차가 무엇일까? 으라차차차!

27.양초각에 양초가 꽉 차있을때 세자로 줄이면? 초 만원

28.씨름 선수들이 죽 늘어서 있다'를 세자로 줄이면? 장사진

29.서로 진짜라고 우기는 신은? 옥신 각신

30.여자가 가장 좋아하는 집은? 시집

31.남자가 가장 좋아하는 집은? 계집

32.재밌는 곳은 어딜까? 냉장고에 잼 있다.

33.개가 사람을 가르친다’를 4자로 줄이면? 개인지도

34.소가 웃는 소리'를 세글자로 하면? 우하하!

35.이심전심이란? 이순자가 심심하면 전두환도 심심하다.

36.황당무계이란? 노란 당근이 무게가 더 나간다.

37.천고마비이란? 하늘에 고약한 짓을 하면 온 몸이 마비된다.

38.착한자식이란? 한국에서 살고 있는 성실한 사람.

39.호로자식이란? 러시아를 좋아하는 사람.

40.미친자식이란? 미국과 친하려는 사람.

41.중학생과 고등학생이 타는 차는? 중고차

42.왕이 넘어지면 뭐가될까? 킹콩

43.초등학생이 가장 좋아하는 동네는? 방학동

44.스타들이 싸우는 모습을 뭐라구 할까? 스타워즈

45.라면은 라면인데 달콤한 라면은? 그대와 함께라면

46.겨울에 많이 쓰는 끈은? 따끈따끈

47.토끼들이 젤 잘하는것은 무엇일까? 토끼기(도망치기)

48.길가에서 죽은 사람을 무엇이라 하는가? 도사

49.진짜 문제 투성이인 것은? 시험지

50.세 사람만 탈 수 있는 차는? 인삼차

Posted by anal
:

  질/문/과/답/변
● Delphi에서 한글관련 작업의 사용방법

시작:=ConvEngToHan(tlwkr);

const

   ChoSungTbl  : String = 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ';
   JungSungTbl : String = 'ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ';
   JongSungTbl : String = '  ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ';

   EngChosung  : String = 'r R s e E f a q Q t T d w W c z x v g ';
   EngJungsung : String = 'k o i O j p u P h hkhohly n njnpnlb m mll ';
   EngJongsung : String = '  r R rts swsge f frfafqftfxfvfga q qtt T d w c z x v g ';

   UniCodeHangeulBase = $AC00;
   UniCodeHangeulLast = $D79F;


   //한글관련
   function  ConvEngToHan(src:String):String;
   function  CutFirstHangul(src:String):String;
   function  DecodingEngToHan(src:String):String;
   function  DivChoJungJong(src:String):String;
   function  CharKeyCheck(c : char):boolean;
   function  MoumCheck(c : char):boolean;
   function  HanDiv(const Han: PChar; Han3: PChar): Boolean;
   function  HanDivPas(const Src: String;Check:integer): String;
   Function  GetHanType(const Src: string): Boolean;


////////////////////////////////////////////////////////////////////////////////
function MoumCheck(c : char):boolean;
Begin
    Result := c in ['k','o','i','O','j','p','u','P','h','y','n','b','m','l'];
end;

function MarkCheck(c : char):boolean;
Begin
    Result := c in ['@','#','$','%','^','&','*','(',')','_','-',' ','+','=','{','}','[',']','|','\','<','>','.',',','/','?',':',';','"',,'''];
end;

function CharKeyCheck(c : char):boolean;
Begin
    Result := c in ['A'..'Z','a'..'z'];
end;

function DivChoJungJong(src:String):String;
var  i, j, l : integer;
    Tmp, Res  : String;
Begin
    l := Length(src);
    If (l < 2) or (not CharKeyCheck(src[1])) Then Begin
       Result := Src[1];
       Exit;
    end;
    Tmp := src + '     ';
    {초성}
    i := Pos(Copy(Tmp,1,1),EngChosung);
    If i > 0 Then Begin
       res := Copy(tmp,1,1) + ' ';
       j := 2;
    End Else Begin
       Result := Tmp[1];
       Exit;
    End;
    {중성}
    If (not CharKeyCheck(tmp[j])) or (not MoumCheck(tmp[j]))Then Begin
       Result := Res;
       Exit;
    End Else Begin
       i := pos(Copy(tmp,j,2),EngJungsung);
       If i > 0 Then Begin
          res := res + Copy(tmp,j,2);
          j := j + 2;
       End Else Begin
          res := res + tmp[j] + ' ';
          j := j + 1;
       End;
    End;
    {종성}
    If (not (tmp[j] in [' ','A'..'Z','a'..'z'])) or (MoumCheck(tmp[j]))Then Begin
       Result := res + '  ';
       exit;
    End Else Begin
       i := pos(Copy(tmp,j,2),EngJongsung);
       If i > 0 Then Begin res := res + Copy(tmp,j,2);
       End Else Begin      res := res + tmp[j] + ' ' ;
       End;
    End;
    Result := res;
end;

function DecodingEngToHan(src:String):String;
var  UniCode                             : Integer;
    ChoSung   , JungSung   , JongSung   : Integer;
    ChoSungPos, JungSungPos, JongSungPos: Integer;
    Tmp  : String;
    Tmp2 : Array[0..2] of Char;
Begin
    Result := '';
    Tmp    := DivChoJungJong(Src);
    If Length(tmp) = 1 Then Begin
       ChoSungPos  := Pos(Tmp+' ', EngChoSung );
       JungSungPos := Pos(Tmp+' ', EngJungSung);
       JongSungPos := Pos(Tmp+' ', EngJongSung);
       If       ChoSungPos > 0 Then Result := Copy(ChoSungTbl ,ChoSungPos ,2)
       Else If JungSungPos > 0 Then Result := Copy(JungSungTbl,JungSungPos,2)
       Else If JongSungPos > 0 Then Result := Copy(JongSungTbl,JongSungPos,2)
       Else Result := Tmp;
       Exit;
    End Else If Length(Tmp) <> 6 Then Begin
       Result := Tmp;
       Exit;
    End;
    ChoSungPos  := Pos(Copy(tmp, 1, 2), EngChoSung );
    JungSungPos := Pos(Copy(tmp, 3, 2), EngJungSung);
    JongSungPos := Pos(Copy(tmp, 5, 2), EngJongSung);
    //
    If (ChoSungPos And JungSungPos And JongSungPos) = 0 Then Exit;
    ChoSung  := (ChoSungPos  - 1) Div 2;
    JungSung := (JungSungPos - 1) Div 2;
    JongSung := (JongSungPos - 1) Div 2;
    UniCode  := UniCodeHangeulBase +(ChoSung * 21 + JungSung) * 28 + JongSung;
    WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, @UniCode, 1, @tmp2, 2, nil, nil);
    Result   := tmp2[0]+tmp2[1];
end;

function CutFirstHangul(src:String):String;
var l : integer;
Begin
    l := Length(src);
    If l < 2 Then Result := src
    Else If (Length(DivChoJungJong(src)) <> 6 ) Then
            Result := src[1]
    Else If (l < 3)  Then Result := src
    Else If (Length(DivChoJungJong(Copy(src,1,2))) = 6 ) And (not CharKeyCheck(src[3])) Then
            Result := Copy(src,1,2)
    Else If (l < 4)  Then Result := src
    Else If (Length(DivChoJungJong(Copy(src,1,2))) = 6 ) And ((not CharKeyCheck(src[3])) or (Length(DivChoJungJong(Copy(src,3,2))) = 6)) Then
            Result := Copy(src,1,2)
    Else If (l < 5)  Then Result := src
    Else If (Length(DivChoJungJong(Copy(src,1,3))) = 6 ) And ((not CharKeyCheck(src[4])) or (Length(DivChoJungJong(Copy(src,4,2))) = 6)) Then
            Result := Copy(src,1,3)
    Else If (l < 6)  Then Result := src
    Else If (Length(DivChoJungJong(Copy(src,1,4))) = 6 ) And ((not CharKeyCheck(src[5])) Or (Length(DivChoJungJong(Copy(src,5,2))) = 6)) Then
            Result := Copy(src,1,4)
    Else    Result := Copy(src,1,5);
end;

function ConvEngToHan(src:String):String;
var  s,r,t : String;
Begin
    s := Src;
    r := '';
    If Trim(Src)<>'' Then Begin
       Repeat
          t :=     CutFirstHangul(s)  ;
          r := r + DecodingEngToHan(t);
          Delete(s,1,Length(t));
       Until s = '';
    End;
    Result := r;
end;

function HanDiv(const Han: PChar; Han3: PChar): Boolean;
var  UniCode: Word;
    ChoSung, JungSung, JongSung: Integer;
begin
    Result := False;
    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, Han, 2, @UniCode, 1);
    if (UniCode < UniCodeHangeulBase) or
       (UniCode > UniCodeHangeulLast) then Exit;
    UniCode  := UniCode - UniCodeHangeulBase;
    ChoSung  := UniCode div (21 * 28);
    UniCode  := UniCode mod (21 * 28);
    JungSung := UniCode div 28;
    UniCode  := UniCode mod 28;
    JongSung := UniCode;
    StrLCopy(Han3,     Pchar(ChoSungTbl )  + ChoSung  * 2, 2);
    StrLCopy(Han3 + 2, Pchar(JungSungTbl)  + JungSung * 2, 2);
    StrLCopy(Han3 + 4, Pchar(JongSungTbl)  + JongSung * 2, 2);
    Result := True;
end;

function HanDivPas(const Src: String;Check:integer): String;
var  Buff: array[0..6] of Char;
    B,C:String ;
    i  :Integer;
begin
    B:='';
    C:='';
    For i:=1 To Length(Src) Do Begin
        B:=Copy(Src,((i-1)*2)+1,2);
        if Length(Trim(B))=2 then begin
           if HanDiv(PChar(B), Buff) then begin
              Buff[6]:=#0;
                   If Check=1 Then C :=C + Copy(String(Buff),1,2)
              Else If Check=2 Then C :=C + Copy(String(Buff),3,2)
              Else If Check=3 Then C :=C + Copy(String(Buff),5,2);
           end;
        end;
    End;
    HanDivPas:=C;
end;

Function GetHanType(const Src: string): Boolean;
var  Len, Hi, Lo: Integer;
begin
    Result := False;
    if Length(Src) < 2 then Exit;
    Len := Length(Src);
    Hi  := Ord(Src[Len - 1]);
    Lo  := Ord(Src[Len]);
    //if ($A1 > Lo) or ($FE < Lo) then Exit;
         if ($B0 <= Hi)  and ($C8 >= Hi) then Result := True   //한글
    Else if ($CA <= Hi)  and ($FD >= Hi) then Result := False  //한자
    Else                                      Result := False; //기타
end;





김채연 wrote:
> 나비스 wrote:
> > 한글은
> > 자음 + 모음
> > 자음 + 모음 + 자음
> > 자음 + 모음 + 자음 + 자음 + 모음
> > ...
> >
> > 등의 단어를 이루는 패턴이 있습니다.
> > 영문자의 키보드 자판에서의 자모로 대입해서
> > 패턴이 한글에서 나올만한 패턴이 된다면
> > 자모분해된 한글로 판단하고 영문자를 각 키보드 자판의 한글자모로 변환한후
> > 다시 분해된 자모를 합치면 한글단어가 될듯 합니다.
> >
> > 이런 방식으로 구현을 해 보시면 어떨지..
> >
> > 김채연 wrote:
> > >
> > >
> > > 간단할것 같은데..여러가지 생각도 해보고
> > > 이곳에서 검색을 해도 답이 없는 듯합니다.
> > > 오타로 잘못친 영문자를 한글로 바꾸는 방법좀 알려주시면 감사하겠습니다.
> >
>

           

--------------------------------------------------------------------------------

Posted by anal
:

BLOG main image
데이터베이스의 품질과 분석에 대한 정보를 공유 by anal

카테고리

분류 전체보기 (121)
Daily Report (7)
MCMs (0)
01.사업기회발굴 (0)
02.사업기회선정 (0)
03.예비사업평가 (0)
04.사업화 (0)
A0. Information for Open Mi.. (0)
A1. Data Standardization (23)
A2. Modeling (1)
A3. Data Quality (0)
A4. DataBase (5)
A5. DataWare House (0)
A6. Data Mart (0)
A7. Data Analysis (0)
A8. OLAP (4)
A9. ETL (0)
B1. Enterprise Portal (0)
B2. Methodology (0)
B3. Customer Relationship M.. (1)
C1. SAP (3)
C2. BSC (0)
C3. SOA (0)
C4. Big Data (3)
C5. R (1)
P0. Projects (3)
V0.신사업관련 (2)
Y0. IELTS (3)
Z0. Et Cetera (58)
[Book] BI 2.5 Guide (3)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :