각 직급별 한자,영문 표기

알찬정보 2007/09/18 15:26
*****직급에 필요한 한자/영문표기

회장 會長 Chairman & CEO
부회장 副會長 Vice Chairman & CEO
사장 社長 President & COO
부사장 副社長 Vice President
전무이사,전무 專務理事 Senior Managing Director
상무이사,상무 常務理事 Managing Director
이사,이사대우 理事 Director
감사 監査 Auditor General
고문,자문 顧問 Advisor
부장 部長 General Manager
본부장,부장 本部長 Director
부장대리 部長代理 Deputy general manager
차장 次長 Deputy general manager
실장 室長 general manager
과장 課長 Manager
대리 代理 Assistant Manager
계장 係長 Chief
주임 主任 Assistant Manager
주임기사 主任技士 Staff engineer
기사 技士 Engineer
수석연구원 首席硏究員 Principal Research Engineer
책임연구원 責任硏究員 Senior Research Engineer
선임연구원 先任硏究員 Research Engineer
전임연구원 專任硏究員 Associate Research Engineer
주임연구원 主任硏究員 Associate Research Engineer
상임고문 常任顧問 Executive Advisor
전문위원 專門委員 Research Fellow


*****
직위표기(職位 表記)

사 장 社長 President & Chief Executive Officer
부 사 장 副社長 Senior Executive Vice President
전무이사 專務理事 Executive Vice President
상무이사 常務理事 Senior Vice President
이사/이대 理事/理待 Director
부장/부대 部長/部待 General Manager
차 장 次 長 Deputy General Manager
과 장 課 長 Manager
대 리 代 理 Assistant Manager
사 원 社 員
top

Trackback Address :: http://www.microstrong.pe.kr/tt/trackback/17

  1. 푸힛 2007/10/11 20:10 PERMALINKMODIFY/DELETE REPLY

    송대리님 바보~~~

  2. ㅋㅋ 2007/10/11 20:10 PERMALINKMODIFY/DELETE REPLY

    송대리님 바보

Write a comment


효율적인 일처리기술...(출처 farn501 아이디 쓰시는 모 과장님)

알찬정보 2007/09/03 10:35
top

Trackback Address :: http://www.microstrong.pe.kr/tt/trackback/16

Write a comment


EUC (Extended Unix Coding) 인코딩

분류없음 2007/08/10 11:10

EUC (Extended Unix Coding) 인코딩은 중국과 한국에서 가장 널리 쓰이는 인코딩 형태로,
단순미와 강력함이 장점입니다. ;) (일본과 대만에서도 유닉스 유저들은 널리 쓰고 있습니다.)

EUC 인코딩 8비트 영역을 모두 사용하며, 8비트를 크게 4개로 나눕니다.
* CL(Control-Left): 0x00-0x1f
* GL(Graphic-Left): 0x20-0x7f
* CR(Control-Right): 0x80-0x9f
* GR(Graphic-Right): 0xA0-0xff

그림으로 하면

|||||||| 8 bit 범위 ||
||  CL      ||  GL      ||  CR      ||  GR      ||
|| 0x00 ~ 0x1f || 0x20 ~ 0x7f || 0x80 ~ 0x9f || 0xa0 ~ 0xff ||

GR은 보통 2바이트 시퀀스로 붙여서 [wiki:94x94 94x94] 문자셋을 할당하는 데, EUC-CN과 EUC-KR의
경우에는 그냥 단순히 GL에는 ASCII를 할당하고, GR에는 각각
GB2312와 KS X 1001을 할당하는 것으로 끝납니다. 결국, KS X 1001의 30-21에 배치되어
있는 '가'라는 글자는 EUC-KR 인코딩에서 GR에 배치되면서 MSB가 세팅되어 0xB0A1로 최종적으로
표현됩니다.

그런데, GL, GR을 고정적으로 할당한 CN, KR과는 달리 EUC-TW나 EUC-JP에서는 사용할 수 있는
문자셋이 여러 평면으로 나뉘어져 있기 때문에, 단순히 미리 할당된 것만으로는 사용될 수 없어서,
0x8e와 0x8f의 SS(Single-Shift) 코드들을 사용합니다. EUC-JP의 경우에는
다음과 같이 배치가 되어 있습니다.

|| 문자셋  || 코드 || 설명 ||
|| ASCII  || [0x20-0x7f] || 아스키는 항상 GL에 배치됩니다. ||
|| JIS X 0201 || 0x8e [0xa1-0xdf] || JIS X 0201중 반각 카타카나 부분은 앞에 0x8e를 쓴 다음에 씁니다. ||
|| JIS X 0208 || [0xa1-0xfe] [0xa1-0xfe] || JIS X 0208 문자들은 각각 MSB를 세팅해서 그냥 씁니다. ||
|| JIS X 0212 || 0x8f [0xa1-0xfe] [0xa1-0xfe] || JIS X 02012 문자들은 0x8f를 앞에 쓴 다음에 MSB를 세팅해서 씁니다. ||

이렇게 되어서, 결국 EUC-JP는 1/2/3 바이트 가변폭 인코딩이 되고, 화면 출력과 코드 너비가
다른 인코딩이 됩니다. (불편하지만 별 수 없는~)

EUC-TW는 현재 할당된 평면이 17개 (유효평면 10개)나 되기때문에, 더욱 더 복잡한데,

|| 문자셋 || 코드 || 설명 ||
|| ASCII || [0x20-0x7f] || 아스키는 항상 GL에 ||
|| CNS11643-1 || [0xa1-0xfe] [0xa1-0xfe] || Plane 1을 기본 GR에 배치합니다. ||
|| CNS11643-1~16 || 0x8e [0xa1-0xb0] [0xa1-0xfe] [0xa1-0xfe] || Plane 1 <!> 부터 16까지는 0x8e를 앞에 붙이고, 그 다음에는 1번부터 순서대로 0xa1부터 16번은 0xb0까지 쓴 다음에 진짜 두 글자를 MSB 세팅해서 붙입니다. ||

이렇게 되어서, 결국 1/2/4 바이트 가변폭 인코딩이 됩니다.
그런데, Plane 1은 2바이트짜리와 4바이트짜리에 둘 다 할당이 되어있는데, 둘 중 어느 한가지만 옳은 것은
아니고, 표준에서 둘 다 사용할 수 있도록 되어있습니다. (둘은 서로 동등 연속--equivalent sequence--로 처리해야합니다.)


top

Trackback Address :: http://www.microstrong.pe.kr/tt/trackback/15

Write a comment


메일보내기 소스만들기.(idea만)

Unix/Linux 2007/07/24 22:13
지나가던 사람이 한 스님에게 물었다.

How to write c program for sending mail?


스님이 대답하길...

Unless you can find some SMTP cleint libraries, you're hosed. Of course, if you're on UNIX, you can always invoke system commands, like "mail" or "mailx". Or write custom scripts for sending mail and invoke them from C, using system call "system()".

스님 거참....
top

Trackback Address :: http://www.microstrong.pe.kr/tt/trackback/14

Write a comment


Subversion 백업 스크립트.(출처는 KLDP 위키)

Unix/Linux/Shell Script 2007/07/06 11:19

#!/bin/bash

REPOSITORY_PATH="/home/repository"
BACKUP_PATH="/home/svnadmin/repo_backup"
DATECOMMAND="/bin/date"
DATE=$( $DATECOMMAND +%Y%m%d )
PWD="/bin/pwd"
CURRENT_PATH=$( $PWD )

FTP_PROGRAM="/usr/bin/ftp"
OTHER_SERVER="서버 주소"
OTHER_SERVER_ID="계정ID"
OTHER_SERVER_PW="ID 의 패스워드"

echo $DATE
if [ ! -d $REPOSITORY_PATH ]
then
       echo "Repository path is wrong. Please check a this script."
       exit 1
fi

if [ ! -e $BACKUP_PATH ]
then
       mkdir $BACKUP_PATH
fi

if [ ! -d $BACKUP_PATH ]
then
       echo "Backup path is wrong. Please check a this script."
       exit 1
fi

if [ ! -w $BACKUP_PATH ]
then
       echo "Permission denied"
       exit 1
fi

if [ -d $BACKUP_PATH/$DATE ]
then
       echo "Remove a $DATE directory"
       rm -rf $BACKUP_PATH/$DATE
fi

if [ -e $BACKUP_PATH/$DATE.tar.gz ]
then
       echo "Remove a $DATE.tar.gz file."
       rm $BACKUP_PATH/$DATE.tar.gz
fi

echo
echo
echo "**  Starting backup...  **"
echo
echo

mkdir $BACKUP_PATH/$DATE

for i in $( ls $REPOSITORY_PATH ); do
       printf "**  %-30s  ******************\n" $i
       svnadmin dump $REPOSITORY_PATH/$i > $BACKUP_PATH/$DATE/$i.dump
done

cd $BACKUP_PATH
echo
echo "**  Compress a backup directory  *************"
echo

tar cvfz $BACKUP_PATH/$DATE.tar.gz $DATE

echo
echo
echo "**  Backup Complete!  **"
echo
echo "**  Transmit to other server. **"
echo

$FTP_PROGRAM -nvp $OTHER_SERVER << EOF
user "$OTHER_SERVER_ID" "$OTHER_SERVER_PW"
hash
prompt
bin
mput $DATE.tar.gz
EOF

echo
echo "**  Transmission Complete! **"
echo

cd $CURRENT_PATH


#############################################
날짜 디렉토리 만들고 svnadmin dump 로 백업하고 채로 묶어서 날짜 디렉토리 까지 백업해서
ftp 로 날리뿌는 그런식.....

top

Trackback Address :: http://www.microstrong.pe.kr/tt/trackback/13

Write a comment


유용한 정보 전화번호 와 GPS 좌표가 연계된 위치추적 시스템... 뚜둥...

Just Fun... 2007/05/11 14:27

http://www.sat-gps-locate.com/english/index.html

일단 한번 보시랏...

지역번호,전화번호를 넣고 찾기 앗싸라비야~~~
top

Trackback Address :: http://www.microstrong.pe.kr/tt/trackback/12

  1. Jay 2007/05/16 20:14 PERMALINKMODIFY/DELETE REPLY

    속았다....!!!!

  2. 낭만상민 2007/07/26 15:35 PERMALINKMODIFY/DELETE REPLY

    어디다?

Write a comment


XFERLOG MANUAL

transelate 2007/04/28 15:22

XFERLOG


NAME

xferlog - ProFTPD server logfile

DESCRIPTION

The xferlog file contains logging information from the FTP server daemon, proftpd(8).

//xferlog file 은 FTP 서버 데몬 인 proftpd 의 로깅 정보를 담고 있다.

This file usually is found in /var/log, but can be located anywhere by using a proftpd(8) configuration directive. Each server entry is composed of a single line of the following form, with all fields being separated by spaces.

//이 파일의 위치는 /var/log 이지만 proftpd 의 설정에 따라 어디든 위치할수 있다.
//서버의 접속은 아래와 같이 한줄로 표시 되며 모든 필드는 공백 으로 구분된다.

current-time   transfer-time   remote-host   file-size   filename   transfer-type   special-action-flag   direction   access-mode   username   service-name   authentication-method   authenticated-user-id  completion-status

current-time
is the current local time in the form "DDD MMM dd hh:mm:ss YYYY". Where DDD is the day of the week, MMM is the month, dd is the day of the month, hh is the hour, mm is the minutes, ss is the seconds, and YYYY is the year.
"DDD MMM dd hh:mm:ss YYYY" 의 형태로 현재 시간(기록당시시간) 을 나타내는데
MMM 은 월 , dd 는 일 hh는 시간 min은 분 ss는 초 YYYY 는 년 이다(DDD 는 요일이더라...)

transfer-time
is the total time in seconds for the transfer.

// ftp 로 전송하는 데 걸린 시간을 나타 낸다.

remote-host
is the remote host name.

//접속한 호스트의 이름 이 나온다.

file-size
is the size of the transferred file in bytes.

//전송한 파일의 크기

filename
is the name of the transferred file.

//전송한 파일 이름.

transfer-type
is a single character indicating the type of transfer. Can be one of:
a
for an ascii transfer
b
for a binary transfer

// 문자 전송 type a: ascii  b:빠이너리..


special-action-flag

is one or more single character flags indicating any special action taken. Can be one or more of:
C
file was compressed
U
file was uncompressed
T
file was tar'ed
_
no action was taken

C:압축 파일인가 U:안압축 T:tar 파일 - :이도 저도 아님
direction

is the direction of the transfer. Can be one of:
o
outgoing
i
incoming
d
deleted
// o 업로드 했나 i:다운로드 했나 d: delete 했나?
access-mode
is the method by which the user is logged in. Can be one of:
a
(anonymous) is for an anonymous guest user.
g
(guest) is for an passworded guest user (see the guestgroup command in ftpaccess(5)).
r
(real) is for a local authenticated user.
//접속한 유저의 mode
            a : anonymous 사용자 g: 패스워드가 있는 gusst 유저 (guestgroup 으로 확인할수 있음) r: 인증된 사용자
username
is the local username, or if guest, the ID string given.


service-name
is the name of the service being invoked, usually FTP.
authentication-method
is the method of authentication used. Can be one of:
0
none
1
RFC931 Authentication
authenticated-user-id
is the user id returned by the authentication method. A * is used if an authenticated user id is not available.
completion-status
is a single character indicating the status of the transfer. Can be one of:
c
complete transfer
i
incomplete transfer

FILES

/var/log/xferlog

AUTHORS

ProFTPD is written and maintained by a number of people, full credits can be found on http://www.proftpd.org/credits.html

SEE ALSO

proftpd(8)

Full documentation on ProFTPD, including configuration and FAQs is available at http://www.proftpd.org/

Report bugs at http://bugs.proftpd.org/
For help/support, try the ProFTPD mailing lists, detailed on http://www.proftpd.org/lists.html

top

Trackback Address :: http://www.microstrong.pe.kr/tt/trackback/11

  1. 낭만상민 2007/07/26 15:35 PERMALINKMODIFY/DELETE REPLY

    고맙다 상민

Write a comment


rm 기능의 함수.

Unix/Linux/Unix command 2007/04/19 16:41

rm(파일 디렉토리 지움) 기능을 쓰기 위해 괜찮은 소스를 찾아 헤메이다 짜증나서 내가 짯다.

생각보단 쉽군...

아직 * , *.txt 같은 아스타 기능은 지원 안하지만
리컬시브 호출을 통해서 디렉토리 안에 딜렉토리 안의 디렉토리 안의 디렉토리를 가지고 있어도
리커르시브 하게 잘 지운다.

이런 함수는 누가 만들어놓으면 편하겠구만... 더러버서 만든다.


아스타도 인식할수 있도록 주말에 놀면서 해봐야지...

사용법은 컴파일 후 (실행파일 이름은 micro_rm 으로 추천)
microrm <파일명> or <dir> 하면 된다.
root 계정의 경우 묻지 않고 사정없이 지우므로 조심할것.
----------------------------------------------------------------------------
#include <stdio.h>
#include <errno.h>
#include <sys/stat.h>
#include <dirent.h>

void micro_rm(char *rm_filename)
{
  struct stat stbuf;

  //DATA FILE LIST
  DIR     *dirp; 
  struct  dirent *dp;

  char tmp_filename[256];

  int file_desc;

  if(file_desc = open(rm_filename,0) < 0)
  {
       fprintf(stderr, "rm: cannot open %s\n", rm_filename);
       return ;
  }


  /************************/
  /*rm target is directory*/
  /************************/
  if (stat(rm_filename, &stbuf) >=0 && (stbuf.st_mode&S_IFMT) == S_IFDIR)
  {

       //REMOVE DIR OPEN
       if((dirp = opendir(rm_filename)) != NULL)
       {      

           //FILE LIST PROCESSING
           while((dp = readdir(dirp)) != NULL)
           {      

               //EXCEPT '.','..' IN DATAFILE LIST
               if(!strcmp(dp->d_name,".") || !strcmp(dp->d_name,".."))
                   continue;

               memset(tmp_filename,0x00,sizeof(tmp_filename));

               sprintf(tmp_filename,"%s/%s",rm_filename,dp->d_name);

               if(stat(tmp_filename,&stbuf) >= 0 && (stbuf.st_mode&S_IFMT) == S_IFDIR)
               {      
                   //recursive call
                  micro_rm(tmp_filename);
               }      
               else   
               {      
                   rm_file(tmp_filename);
               }      
           }      

           rm_file(rm_filename);

       }      
  }
  /***********************/
  /*  rm target is file  */
  /***********************/
  else
  {
       rm_file(rm_filename);

  }
}

int main()
{
  char rm_filename[256];

  memset(rm_filename,0x00,sizeof(rm_filename));

  sprintf(rm_filename,"../microstrong");

  micro_rm(rm_filename);

  return 1;
}

int rm_file(char *rm_filename)
{

  if(remove(rm_filename))
  {
       switch(errno)
       {
           case EACCES:
               fprintf(stderr, "Access is denied: %s\n",rm_filename);
               break;
           case ENOENT:
               fprintf(stderr, "Could not find: %s\n",rm_filename);
               break;
           default:
               fprintf(stderr, "Unknown error.\n");
               break;
       }

  }

  else
  {
       printf("DELETED: %s\n",rm_filename);
  }

  return 1;
}

top

Trackback Address :: http://www.microstrong.pe.kr/tt/trackback/10

  1. 일퍼센트 2007/10/09 14:32 PERMALINKMODIFY/DELETE REPLY

    앗~~ 소스 사용법대로 아닌 듯 하네요..메인에서 인수로 받지 않고
    sprintf(rm_filename,"../microstrong"); <=== microstrong만 지워만 지우기
    수정안하고 그냥 올린 듯.....ㅋㅋ

Write a comment


cp 명령 소스...

Unix/Linux/Unix command 2007/04/13 14:15
아직 손볼 부분이 많지만 매우 흡족함. 주말동안 분석해서 내가 원하는 모습으로 변형시키고 말겠다.

/*
* cp oldfile newfile
*/

#define BSIZE 512
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
struct stat stbuf1, stbuf2;
char iobuf[BSIZE];

main(argc, argv)
char *argv[];
{
register i, r;

if (argc < 3)
goto usage;
if (argc > 3) {
if (stat(argv[argc-1], &stbuf2) < 0)
goto usage;
if ((stbuf2.st_mode&S_IFMT) != S_IFDIR)
goto usage;
}
r = 0;
for(i=1; i<argc-1;i++)
r |= copy(argv[i], argv[argc-1]);
exit(r);
usage:
fprintf(stderr, "Usage: cp: f1 f2; or cp f1 ... fn d2\n");
exit(1);
}

copy(from, to)
char *from, *to;
{
int fold, fnew, n;
register char *p1, *p2, *bp;
int mode;
if ((fold = open(from, 0)) < 0) {
fprintf(stderr, "cp: cannot open %s\n", from);
return(1);
}
fstat(fold, &stbuf1);
mode = stbuf1.st_mode;
/* is target a directory? */
if (stat(to, &stbuf2) >=0 &&
  (stbuf2.st_mode&S_IFMT) == S_IFDIR) {
p1 = from;
p2 = to;
bp = iobuf;
while(*bp++ = *p2++)
;
bp[-1] = '/';
p2 = bp;
while(*bp = *p1++)
if (*bp++ == '/')
bp = p2;
to = iobuf;
}
if (stat(to, &stbuf2) >= 0) {
if (stbuf1.st_dev == stbuf2.st_dev &&
  stbuf1.st_ino == stbuf2.st_ino) {
fprintf(stderr, "cp: cannot copy file to itself.\n");
return(1);
}
}
if ((fnew = creat(to, mode)) < 0) {
fprintf(stderr, "cp: cannot create %s\n", to);
close(fold);
return(1);
}
while(n = read(fold,  iobuf,  BSIZE)) {
if (n < 0) {
fprintf(stderr, "cp: read error\n");
close(fold);
close(fnew);
return(1);
} else
if (write(fnew, iobuf, n) != n) {
fprintf(stderr, "cp: write error.\n");
close(fold);
close(fnew);
return(1);
}
}
close(fold);
close(fnew);
return(0);
}


http://minnie.tuhs.org/UnixTree/V7/usr/src/cmd/cp.c.html 참조

Very Thanks to minnie ...
top

Trackback Address :: http://www.microstrong.pe.kr/tt/trackback/9

Write a comment


SSH 를 사용하려는데 나오는 뭔지모를 불길한 메시지...

Unix/Linux 2007/03/21 13:43

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
31:e0:9e:ac:46:0e:45:21:02:da:69:cb:ec:2f:0a:f0.
Please contact your system administrator.
Add correct host key in /tofaz/tofazsrv/.ssh/known_hosts to get rid of this message.
Offending key in /tofaz/tofazsrv/.ssh/known_hosts:1
RSA host key for 10.1.2.53 has changed and you have requested strict checking.
Host key verification failed.

이런메시지가 나왔다 . 별대수롭지 않게 생각하려다 읽어 보니 꽤나  심각해 보이는 메시지(본문 둘째줄...)

이 메시지가 나오는 원인은 SSH 의 경우 접속하는 호스트에 대한 정보가~/.ssh/known_hosts 에 저장 된다고 한다.
저장했다가 혹시 접속하는 호스트의 정보가 달라질 경우 뭔지 모를 해킹 스런 일이 일어났음으로 간주 하고 위의 메시지를 토해 낸다고 한다.

아마 며칠전 서버 위치를 모두 옴긴것과 관계가 있을듯...

특별히 알수 없는 이유로 위의 메시지가 나왔다면 해킹을 의심해봐야 하지만 그렇지 않다면
~/.ssh/known_hosts 파일을 열어 해당 호스트 정보 라인을 지우면 된다.
열어 보면 아시겠지만 '호스트명 RSA키' 이런 식으로 되어 있다. 그냥 부담가지지 말고 지우고 다시 접속하면 된다.

man-in-the-middle attack 이 무엇인지 아시는분 있으시면 제보 바라며
RSA 키의 생성은 어떻게 생성 되는지 아시는 분도 제보 부탁 드린다.(후사함...)

top

Trackback Address :: http://www.microstrong.pe.kr/tt/trackback/8

Write a comment