반응형

 


작성한 날: 2024년 8월 7일
테스트했던 Pi 모델: Pi 4, Pi 5

 

터미널을 열어서 아래 명령(CLI)를 입력한다.

$ sudo  apt install -y fonts-unfonts-core

 

 

Raspbian Desktop 시작 메뉴에서 [ Raspberry Pi Configuration ] 창을 연다.

메뉴를 찾아가는 순서는 아래와 같다.

  [ 시작 메뉴 ]  ->  [ 기본 설정 ]  ->  [ Raspberry Pi Configuration ]  ->  [ Localisation ]

 

[ Locale ] 설정 항목에서 아래와 같이 설정한다.

 - Language : ko (Korean)

 - Character Set : UTF-8

 

[ Raspberry Pi Configuration ] 창을 닫는다.

 

아래와 같이 명령을 실행하여 한글 패키지를 설치한다.

 

$ sudo apt install -y fcitx fcitx-hangul
... 출력 화면 생략 ...
$ vim /etc/default/im-config
... 중간 생략 ...
IM_CONFIG_DEFAULT_MODE=fcitx # <-- "auto" 값을 "fcitx" 값으로 수정
... 중간 생략 ...
$ reboot

 

 

 

Raspberry Pi를 Reboot하고 나면, [한/영] 전환하는 키 조합을 설정한다. 메뉴를 찾아가는 순서는 아래와 같다.

 [ 시작 메뉴 ]  ->  [ 기본 설정 ]  ->  [ Fcitx 구성 ]  ->  [ 전역 설정 ] 탭 

 

[ 전역 설정 ] 탭에서 [ 트리거 입력기 ]를 설정한다.

나는 [ Shift + Space ] 키 조합과 [ Right Alt ] 키를 설정했다.  (아래아한글 프로그램의 한영 전환 키처럼 설정)

 

 


 

 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)
근무지 위치:
서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 70% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
- 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver
- Linux OS에서 IPC 구현이 가능
예를 들어, MSGQ, SHM, Named PIPE 등 활용하여 Process간 Comm.하는 기능 구현이 가능하면 됨.
- Algorithm(C언어, C++ 언어로 구현 가능해야 함)
예를 들어, Hashtable, B-Tree, Qsort 정도를 C 또는 C++로 구현할 수 있을 정도
- Network 패킷 처리 지식(Layer 2 ~ 4, Layer 7)
예를 들어, DHCP Server/Client의 주요 Feature를 구현할 정도의 능력이 있으면 됨.
- Netfilter, eBPF 등 (IP packet hooking, ethernet packet 처리, UDP/TCP packet 처리)
- IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
# 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
# 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
회사에서 사용하는 프로그래밍 언어:
- 프로그래밍 언어: C, C++, Go
(참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
- 출근: 8~10시 사이에서 자유롭게 선택
- 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
- 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
- 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
- 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
- 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
- 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
- "sejong.jeonjo@gmail.com" # 궁금한 점은 이 연락처로 문의주세요.
- 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
- 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
- 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
- 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
- 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
- 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
- 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
- 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
- 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)

 

반응형

 


 

 

Rook를 이용하여 Ceph 설치한 날짜: 2024년 8월 7일
Rook version: 1.10.10
Ceph version: 17.2.5(quincy) and 15.2.17 (octopus)      ## 이 두 버전 모두 잘 동작했다.

 

지난 2년 동안 NFS server를 이용하여 Kubernetes PV(Persistent Volume)의 Storage로 사용했었는데, 별로 좋지 않음을 경험하고는 Ceph를 사용해야겠다는 결단이 생겼다.

Ceph 설치가 만만치 않은 작업이지 않을까 걱정했는데, 괜한 걱정이었다.

Rook operator official document의 설명을 따라서 설치하니까 30분 만에 Ceph cluster가 뚝딱하고 만들어졌다.

Test용 Example App까지 Rook operator에 포함되어 있어서 Test까지 다 포함해서 1시간이 채 안 걸렸다.

 

일단, 아래 공식 문서인 Rook Ceph document를 읽고 따라하면 일사천리로 설치와 테스트가 모두 끝난다.

 

 

Quickstart - Rook Ceph Documentation

Quickstart Welcome to Rook! We hope you have a great experience installing the Rook cloud-native storage orchestrator platform to enable highly available, durable Ceph storage in your Kubernetes cluster. If you have any questions along the way, please don'

rook.io

 

 


그럼... 설치를 시작해보자 !

 

설명은 위 공식 문서에 있으니까, 설정을 생략하고 명령만 적어 놓겠다. 

그냥 아래 명령어를 따라 수행하면 된다. 

 

Ceph 설치 전에 준비할 내용:
  Kubernetes worker node에 Ceph가 Storage로 사용할 Raw device가 있어야 한다.
  (즉, 한번도 사용하지 않은 깨끗한 SSD, HDD 같은 것이 필요하다. Format이 안 되어 있어서 Filesystem도 없는 상태면 딱 좋다.)
  나는 깡통 qcow2 이미지를 각 worker node의 Virtual disk로 사용했다.
  그리고 Ceph는 3-node cluster로 구성할 것이니까, worker node 3개에 각각 Raw device가 1개씩 있어야 한다.

모든 worker node에 Raw device를 추가 장착했다면, 아래와 같이 `lsblk -f` 명령을 수행하여 깡통 상태의 Storage가 있는지 확인한다.

아래 명령 결과에서 vdb가 아무도 사용하지 않는, 그리고 formatting도 하지 않은 완전한 깡통 상태의 Storage 이다.

$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
vda
└─vda1 LVM2_member >eSO50t-GkUV-YKTH-WsGq-hNJY-eKNf-3i07IB
├─ubuntu--vg-root ext4 c2366f76-6e21-4f10-a8f3-6776212e2fe4 /
└─ubuntu--vg-swap_1 swap 9492a3dc-ad75-47cd-9596-678e8cf17ff9 [SWAP]
vdb ## <- 이 "vdb" 저장 장치와 같이 아무 설정도 없는 상태의 Storage가 있어야 한다.
$

모든 workder node에서 위 명령으로 vdb storage 정보를 확인했다면, 이제 본격적으로 설치 작업을 한다.

 

 

아래 명령은 kubernetes bastion node 또는 kubectl 수행이 가능한 PC에서 수행한다.
########################################################################
## GitHub에서 Rook operator를 내려 받는다.
########################################################################
$ git clone --single-branch --branch v1.10.10 https://github.com/rook/rook.git
$ cd rook/deploy/examples
########################################################################
## Rook operator 운영에 필요한 custom resource definition을 생성하고
## Rook operator 리소스를 kubernetes cluster에 배포한다.
########################################################################
$ kubectl create -f crds.yaml -f common.yaml -f operator.yaml
########################################################################
## 참고:
## 내가 테스트할 때, 위 명령으로 ceph operator를 구동하고, 바로 아래의 cluster를
## 구축하려고 하니까 OSD orchestration 단계에서 실패했다.
## 정확한 원인은 모르겠는데, operator 구동 시작 후 20초 정도 기다렸다가 cluster 구축
## 하는 명령을 수행하면 오류없이 잘 cluster가 구축되었다.
########################################################################
########################################################################
## rook-ceph-operator pod가 running 상태인지 확인한다.
########################################################################
$ kubectl -n rook-ceph get pod
########################################################################
## Ceph cluster를 생성한다.
########################################################################
$ kubectl create -f cluster.yaml
########################################################################
## 주의:
## 내가 사용한 CPU는 "Intel(R) Xeon(R) E-2124G CPU @ 3.40GHz" 인데,
## 이 CPU를 사용했을 때 Ceph cluster 구성이 완료되려면 대략 3분 정도 시간이 걸렸다.
## 따라서, 아래와 같이 rook-ceph-operator 로그를 보면서 진행 과정을 보는 것이 좋다.
## 대략 3분 정도 로그가 올라가다가 마지막 부분에 "op-osd: finished .... "
## 이런 문구가 출력되면 작업이 끝난 것이다.
########################################################################
$ kubectl -n rook-ceph logs -l app=rook-ceph-operator -f
... 중간 생략 ...
2023-01-06 07:05:19.680387 I | cephclient: successfully disallowed pre-quincy osds and enabled all new quincy-only functionality
2023-01-06 07:05:19.681868 I | op-osd: finished running OSDs in namespace "rook-ceph"
2023-01-06 07:05:19.682577 I | ceph-cluster-controller: done reconciling ceph cluster in namespace "rook-ceph"
<< 위 문장이 출력되면, 끝난 것이다. Ctrl+C 키를 눌러서 kubectl log 명령을 종료시킨다 >>
########################################################################
## 만약 3분이 지났는데 'done reconciling ceph cluster ..." 로그가 출력되지 않는다면
## cluster, operator, crds를 모두 삭제하고 다시 시작해야 한다.
## (예: kubectl delete -f cluster.yaml -f operator.yaml -f ...)
########################################################################
########################################################################
## Ceph 관련 pod가 running 상태인지 확인한다.
########################################################################
$ kubectl -n rook-ceph get pod
NAME READY STATUS RESTARTS AGE
csi-cephfsplugin-provisioner-d77bb49c6-n5tgs 5/5 Running 0 140s
csi-cephfsplugin-provisioner-d77bb49c6-v9rvn 5/5 Running 0 140s
csi-cephfsplugin-rthrp 3/3 Running 0 140s
csi-rbdplugin-hbsm7 3/3 Running 0 140s
csi-rbdplugin-provisioner-5b5cd64fd-nvk6c 6/6 Running 0 140s
csi-rbdplugin-provisioner-5b5cd64fd-q7bxl 6/6 Running 0 140s
rook-ceph-crashcollector-minikube-5b57b7c5d4-hfldl 1/1 Running 0 105s
rook-ceph-mgr-a-64cd7cdf54-j8b5p 1/1 Running 0 77s
rook-ceph-mon-a-694bb7987d-fp9w7 1/1 Running 0 105s
rook-ceph-mon-b-856fdd5cb9-5h2qk 1/1 Running 0 94s
rook-ceph-mon-c-57545897fc-j576h 1/1 Running 0 85s
rook-ceph-operator-85f5b946bd-s8grz 1/1 Running 0 92m
rook-ceph-osd-0-6bb747b6c5-lnvb6 1/1 Running 0 23s
rook-ceph-osd-1-7f67f9646d-44p7v 1/1 Running 0 24s
rook-ceph-osd-2-6cd4b776ff-v4d68 1/1 Running 0 25s
rook-ceph-osd-prepare-node1-vx2rz 0/2 Completed 0 60s
rook-ceph-osd-prepare-node2-ab3fd 0/2 Completed 0 60s
rook-ceph-osd-prepare-node3-w4xyz 0/2 Completed 0 60s
########################################################################
## Rook toolbox를 이용하여 Ceph cluster 상태 정보를 조회한다.
## toolbox에 대한 자세한 설명은 아래 Web document를 확인
## https://rook.io/docs/rook/v1.10/Troubleshooting/ceph-toolbox/
########################################################################
########################################################################
## Rook toolbox를 설치한다.
########################################################################
$ kubectl create -f deploy/examples/toolbox.yaml
########################################################################
## Rook toolbox pod 내부에서 `ceph status` 명령을 수행하여 ceph cluster 상태를 조회한다.
########################################################################
$ kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
bash-4.4$ ceph status
cluster:
id: 661d89a0-d4c5-432b-97d7-6a4d06beaf52
health: HEALTH_OK
services:
mon: 3 daemons, quorum a,b,d (age 10m)
mgr: b(active, since 11m), standbys: a
osd: 3 osds: 3 up (since 10m), 3 in (since 11m)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 449 KiB
usage: 62 MiB used, 750 GiB / 750 GiB avail
pgs: 1 active+clean
bash-4.4$
bash-4.4$
bash-4.4$
bash-4.4$ ceph df
--- RAW STORAGE ---
CLASS SIZE AVAIL USED RAW USED %RAW USED
hdd 750 GiB 750 GiB 62 MiB 62 MiB 0
TOTAL 750 GiB 750 GiB 62 MiB 62 MiB 0
--- POOLS ---
POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL
.mgr 1 1 449 KiB 2 1.3 MiB 0 237 GiB
bash-4.4$ exit
$

 

 

예제 App을 이용하여 Ceph 동작 유무를 확인한다.

 

 

###############################################################################
## `git clone`한 소스 코드에 examples 디렉토리가 있다.
## examples 디렉토리로 이동하여 예제 App을 구동해보자.
## 당연히, 위 Ceph에서 PV를 할당받는 예제이다.
###############################################################################
$ cd /deploy/examples
###############################################################################
## 예제 App이 사용할 StorageClass를 생성한다.
###############################################################################
$ kubectl apply -f csi/rbd/storageclass.yaml
cephblockpool.ceph.rook.io/replicapool created
storageclass.storage.k8s.io/rook-ceph-block created
$ kubectl create -f mysql.yaml
service/wordpress-mysql created
persistentvolumeclaim/mysql-pv-claim created
deployment.apps/wordpress-mysql created
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mysql-pv-claim Bound pvc-6d458ff1-54bf-4f34-b010-a0f4b2a0966e 20Gi RWO rook-ceph-block 94s
$ kubectl create -f wordpress.yaml
service/wordpress created
persistentvolumeclaim/wp-pv-claim created
deployment.apps/wordpress created
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
wordpress-7cf5c5c8b-5cgqk 1/1 Running 0 42s
wordpress-mysql-6f99c59595-9vs7z 1/1 Running 0 4m8s
$ kubectl get svc wordpress
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress LoadBalancer 10.96.232.248 10.1.4.160 80:31494/TCP 27s

 

참고로, wordpress pod가 구동되고 1분 정도 경과된 후에 Web browser로 접속하는 것이 좋다.
(wordpress가 MySQL DB에  초기 설정값을 만드느라 시간을 좀 쓰는 듯...)

 

Web browser를 이용하여 EXTERNAL-IP에 출력된 주소로 접속해보자.

아래처럼 Wordpress 설정 화면이 출력되면, 정상 동작하는 것이다.

 

 

 

Ceph를 설치하고, Storage를 할당 받아서 PV(Persistent Volume)을 사용하는 것까지 완벽하게 동작한다.

 

 


 

Ceph Dashboard

아래의 Web Docs를 보고 따라 설정하면 된다.

 

1) Prometheus를 먼저 설치한다.

 

Prometheus Monitoring - Rook Ceph Documentation

Prometheus Monitoring Each Rook Ceph cluster has some built in metrics collectors/exporters for monitoring with Prometheus. If you do not have Prometheus running, follow the steps below to enable monitoring of Rook. If your cluster already contains a Prome

rook.io

2) Dashboard를 설치한다.

 

Ceph Dashboard - Rook Ceph Documentation

Ceph Dashboard The dashboard is a very helpful tool to give you an overview of the status of your Ceph cluster, including overall health, status of the mon quorum, status of the mgr, osd, and other Ceph daemons, view pools and PG status, show logs for the

rook.io

 

위 설명을 따라하면, 아래와 같이 Web UI, Dashboard를 볼 수 있다.

Ceph Dashboard / Cluster 상태 정보 조회

 

Ceph Dashboard / OSD 정보 조회

 

Ceph Dashboard / Pool list 조회


 

참고: Ceph 관련하여 읽으면 도움이 되는 문서

SKT TACO(Openstack) 개발자가 직접 Ceph를 설치하면서 작성한 블로그. 

 

K8S 클러스터의 영구저장소로 ceph 사용하기

 

devocean.sk.com

 

 

SKT Kubernetes solution(TKS) 개발자 "엄주관" 님이 직접 Rook를 이용하여 Ceph 및 예제 앱을 설치하면서 작성한 블로그.  

 

Kubernetes 스토리지 오퍼레이터 Rook 맛보기

 

devocean.sk.com

 

 


 

 

 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)
근무지 위치:
서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 70% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
- 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver
- Linux OS에서 IPC 구현이 가능
예를 들어, MSGQ, SHM, Named PIPE 등 활용하여 Process간 Comm.하는 기능 구현이 가능하면 됨.
- Algorithm(C언어, C++ 언어로 구현 가능해야 함)
예를 들어, Hashtable, B-Tree, Qsort 정도를 C 또는 C++로 구현할 수 있을 정도
- Network 패킷 처리 지식(Layer 2 ~ 4, Layer 7)
예를 들어, DHCP Server/Client의 주요 Feature를 구현할 정도의 능력이 있으면 됨.
- Netfilter, eBPF 등 (IP packet hooking, ethernet packet 처리, UDP/TCP packet 처리)
- IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
# 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
# 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
회사에서 사용하는 프로그래밍 언어:
- 프로그래밍 언어: C, C++, Go
(참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
- 출근: 8~10시 사이에서 자유롭게 선택
- 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
- 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
- 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
- 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
- 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
- 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
- "sejong.jeonjo@gmail.com" # 궁금한 점은 이 연락처로 문의주세요.
- 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
- 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
- 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
- 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
- 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
- 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
- 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
- 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
- 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)
반응형

 



virsh, virt-install 명령 테스트한 날짜: 2023년 8월 7일

 

KVM을 사용하다보면, Virt-Manager라는 GUI 툴이 조작하기 편해서 계속 Virt-Manager만 사용하게 된다.

그런데 가끔 SSH 터미널만 사용할 수 있는 환경이거나 CLI Command만 이용해서 Script를 작성할 때는 virsh를 꼭 사용해야 한다.

 

Virtual Machine 생성하기 (그리고 VM에 OS 설치하기)

##
## 2023년 1월에 실제 Ubuntu 설치할 때 사용했던 명령.
## 참고: --disk 옵션에 기존에 사용했던 qcow image file을 사용하면 kernel을 못 찾는다는 에러 발생.
## 원인은 아직 모르겠음.
## 참고: 아래 명령을 수행하고 대략 55초 정도 지나야 Console에 text message가 출력된다.
## (내가 사용한 HW Spec: i7-11700, 64GB)
## 따라서 느긋하게 기다려야 제대로 설치가 가능하다.
##
## 참고: size 단위는 GB.
## Case: OS 설치하면서 VM instance 시작하기
## (주의: OS 설치하면서 VM start 할 때는 --osinfo 옵션을 빼야 한다.)
$ virt-install \
--name my-vm \
--ram 4096 \
--vcpus 2 \
--disk /mnt/sda1/virtual_storage/waas.qcow2,size=100 \
--disk /mnt/hdd0/virtual_machine/harbor-2nd-storage.qcow2,size=500 \
--graphics none \
--network network=br-ex \
--console pty,target.type=virtio \
--autoconsole text \
--location /home/iso/ubuntu-22.04.1-live-server-amd64.iso
## Case: 기존 사용했던 VM 이미지를 이용하여 VM instance 기동하기.
$ virt-install \
--import \ ## 기존 VM image 파일을 이용하겠다는 옵션
--osinfo ubuntu22.04 \ ## 이 osinfo 옵션을 꼭 추가해야 한다.
--name my-vm \
--ram 4096 \
--vcpus 2 \
--disk /mnt/sda1/virtual_storage/waas.qcow2,size=100 \
--graphics none \
--network network=br-ex \
--console pty,target.type=virtio \
--autoconsole text
##
## CPU Pinning, Hugepages 설정이 필요해서 사용했던 명령.
##
$ virt-install --import \
--name my-machine \
--vcpus 4 \
## CPU Pinning
--cpuset=2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32 \
--memory=4096 \
## Hugepages
--memorybacking hugepages=on \
--numatune 0 \
--disk /mydir/my-machine.qcow2 \
--network bridge=my-br \
--network bridge=ems-br \
--os-variant rhel7.9 \
--noautoconsole
##
## 주의:
## 아래 --osinfo, --os-variant 옵션을 사용하면 VM instance 생성할 때 오류가 발생한다.
## 꼭 필요한 옵션이 아니니까, 아래 2가지 옵션을 사용하지 않는 것이 좋다. (2023년 1월 현재)
## --osinfo ubuntu22.04
## --os-variant ubuntu22.04
##
##
## 주의:
## VM instance 내부에서 OS 설치가 끝나고, 자동 reboot되어야 하는게 정상이지만
## 가끔 OS termination 단계에서 실패하고 멈춘 경우가 있다.
## reboot 시도 후 30초 후에도 console 화면의 변화가 없다면
## 과감하게 VM instance destroy를 시도한다. (아래 명령을 사용)
##
$
##

 

위 `virt-install` 명령을 실행하면, 바로 아래 화면이 출력되고

이 화면에서 대략 55~60초 정도 기다려야 다음 설치 화면으로 넘어간다.

 

 

위 화면에서 대략 55~60초 정도 기다리면, 드디어 아래와 같이 OS 설치 시작 화면이 나온다.

 

 

비록 Text Terminal 이지만, 조금이라도 예쁜 설치 화면을 원하면 "rich mode"를 선택한다.

이후부터는 일반적인 Ubuntu OS 설치 절차와 같다.

 

 

 

 

 

 

Virtual Machine 목록 보기

$ virsh list --all
Id Name State
-------------------------
1 x-node running
- am0 shut off
- aw0 shut off
- aw1 shut off
$

 

 

Virtual Machine 기동하기

##
## am0 가상 머신을 기동하기
##
$ virsh start am0
Domain am0 started
##
## am0 가상 머신이 기동되었는지 확인하기
##
$ virsh list --all
Id Name State
-------------------------
1 x-node running
2 am0 running
- aw0 shut off
- aw1 shut off
$

 

 

Virtual Machine 종료하기

##
## Graceful Termination of VM instance
## (참고로, 아래 숫자 2는 VM의 ID이다)
##
$ virsh shutdown 2
Domain 2 is being shutdown
$
##
## VM instance 강제 종료
## (참고로, 아래 숫자 2는 VM의 ID이다)
##
$ virsh destroy 2
##
## VM instance 삭제하기
##
$ virsh undefine vm-name

 

 

Virtual Machine의  Console에 접속하기

$ virsh console x-node
Connected to domain x-node
Escape character is ^]
CentOS Linux 8
x-node login: root
Password: ......
[root@x-node ~]# _

 

 

qcow2 image file size 조정 (resize)

##
## 원하는 size로 vm image를 재조정할 수 있다.
## 최초에 작게 만들어진 volume image 용량을 더 크게 늘리기 위해서 사용한다.
##
$ qemu-img resize myvm.qcow2 100G
##
## 아래 명령과 같이 수행하여 기존 VM image에서 빈 공간을 제거하고 size를 줄일 수 있다.
## 보통 qcow2 파일을 다른 장비로 옮길 때, vm image size를 줄이기 위한 용도로 사용된다.
## 참고: 원본 qcow2 이미지 파일은 유지되므로 별도로 백업하지 않아도 된다.
$ qemu-img convert -O qcow2 source_image.qcow2 shrunk_image.qcow2
##
## volume image 정보를 열람한다.
##
$ qemu-img info myvm.qcow2

 

 

qcow2 image 파일 생성하기

##
## 만약 qcow2 type의 virtual volume을 만들고 싶다면 아래와 같이 명령을 수행.
## Volume size는 250GB로 지정했지만, 실제로는 qcow2 파일에 meta data만 생성하기 때문에
## 실제 사이느는 1MB 밖에 안 되고, 시간도 3초 정도 밖에 안 걸린다.
##
$ qemu-img create -f qcow2 my-virtual-volume.qcow2 250G

 

 

VM의 OS Type 전체 목록 열람하기

$ virt-install --osinfo list
...
ubuntu-lts-latest, ubuntu-stable-latest, ubuntu22.04, ubuntujammy
ubuntu21.10, ubuntuimpish
ubuntu21.04, ubuntuhirsute
ubuntu20.10, ubuntugroovy
ubuntu20.04, ubuntufocal
...
$

 

 

기존 VM instance에 disk 추가하기

$ virsh edit my-vm
... 중간 생략 ...
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' discard='unmap'/>
<source file='/var/lib/libvirt/images/my-vm-a.qcow2'/>
<target dev='vda' bus='virtio'/>
<boot order='1'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
</disk>
##
## FIXME: 이 부분을 추가한다.
##
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/opt/virtual_storage/vol_01.qcow2'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
</disk>
... 중간 생략 ...
$ virsh reboot my-vm
## 또는 아래와 같이 hypervisor를 restart한다.
$ systemctl restart libvirt-bin

 

위 방식과 다르게 virt-install 명령으로 disk를 추가하여 VM instance를 재시작한다.

virt-install \
--import \
--name my-vm \
--osinfo ubuntu22.04 \
--ram 2048 \
--vcpus 2 \
--disk /opt/virtual_machine/my-vm.qcow2 \
--disk /opt/virtual_machine/my-new-disk.qcow2 \
--graphics none \
--network network=br-ex \
--console pty,target.type=virtio \
--autoconsole text

 

 

VM의 CPU에 Host의 CPU를 Pinning

## CPU pinning 설정하는 명령어
virsh vcpupin <vm-name> <vcpu-number> <host-core-number>
## CPU pinning 설정하기
## - "VM CPU core id 0"은 "Host CPU core id 12"를 사용하도록 고정
## - "VM CPU core id 1"은 "Host CPU core id 13"를 사용하도록 고정
## 위 내용을 실제로 설정하려면, 아래와 같이 명령을 실행하면 된다.
$ virsh vcpupin myvm 0 12
$ virsh vcpupin myvm 1 13
## CPU pinning 상태 확인하기
$ virsh vcpupin myvm
VCPU CPU Affinity
----------------------
0 12
1 13

 

 

 

 

 


 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)
근무지 위치:
서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 70% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
- 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver
- Linux OS에서 IPC 구현이 가능
예를 들어, MSGQ, SHM, Named PIPE 등 활용하여 Process간 Comm.하는 기능 구현이 가능하면 됨.
- Algorithm(C언어, C++ 언어로 구현 가능해야 함)
예를 들어, Hashtable, B-Tree, Qsort 정도를 C 또는 C++로 구현할 수 있을 정도
- Network 패킷 처리 지식(Layer 2 ~ 4, Layer 7)
예를 들어, DHCP Server/Client의 주요 Feature를 구현할 정도의 능력이 있으면 됨.
- Netfilter, eBPF 등 (IP packet hooking, ethernet packet 처리, UDP/TCP packet 처리)
- IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
# 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
# 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
회사에서 사용하는 프로그래밍 언어:
- 프로그래밍 언어: C, C++, Go
(참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
- 출근: 8~10시 사이에서 자유롭게 선택
- 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
- 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
- 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
- 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
- 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
- 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
- "sejong.jeonjo@gmail.com" # 궁금한 점은 이 연락처로 문의주세요.
- 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
- 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
- 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
- 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
- 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
- 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
- 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
- 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
- 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)
반응형

작성일: 2024년 8월 7일

 

 

HW, SW를 개발해서 고객사에 납품하는 회사라면, BMT, SVT, DVT, CVT, UAT 등과 같은 Test  관련 용어를 자주 사용할 것이다.

그런데 내가 이 용어가 어떤 단어의 축약어인지 몰라서 같이 일하는 동료에게 물어보니..

이 축약된 용어의 Full Name과 정확한 의미를 모르더라... ㅠㅠ

그래서 여기 저기 찾아서 메모를 해본다.

 


 

BMT ( Benchmark Test )

고객이 요구하는 기능과 성능/용량이 제공 가능한지 가늠해보기 위한 벤치마크 테스트

 

 

SVT ( System Validation Test,   Supplier[Self] Validation Test)

일반적으로 SI, IT업계에서는 HW 같은 물리 장비를 고객사 사이트에 설치하고, 기능 및 성능 검증.

(HW, OS, Platform를 고객사 사이트에 납품 및 설치하고 잘 동작하는지 테스트하는 것을 SVT라고 한다.)

그런데, 내가 일하는 네트워크 산업 분야에서는 Supplier[Self] Validation Test로 사용하는 경우가 있다.

즉, 개발/공급하는 회사가 고객사에 시스템 및 Software를 납품하기 전 단계에서 자체적으로 종합 테스트하는 것을 일컫는다.

 

 

DVT ( Developer Validation Test)

내가 일하는 통신 업계에서는 Developer Validation 이라고 하는데, 다른 산업에서는 Design Validation이라고 하는 것 같다.

 

 

CVT ( Customer Validation Test )

고객이 직접 인수할 장비의 기능과 품질을 검증한다. (물론 공급사 담당자를 옆에 앉혀 놓고 하는 것이 일발적인 업무 프로세스이다.)

 

UAT ( 인수자(Underwriter?) Validation Test )

인수자(고객사)가 테스트를 한다는 것은 상용 서비스를 가정하고 테스트하는 것이기 때문에 실제 상용 환경도 100% 동일한 환경에서 기능, 성능, 용량 검증 테스트한다.

 

 

EVT ( Engineering Validation Test )

과부하, 과용량 상태를 만들어서 문제 없이 기능, 서비스(즉, Feature)가 제공되는지 확인한다.

Stress를 팍팍 주면서 Aging Test(에이징, 장시간 테스트)를 하는 것이 일반적이다.

 

 


 

 

 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)
근무지 위치:
서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 70% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
- 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver
- Linux OS에서 IPC 구현이 가능
예를 들어, MSGQ, SHM, Named PIPE 등 활용하여 Process간 Comm.하는 기능 구현이 가능하면 됨.
- Algorithm(C언어, C++ 언어로 구현 가능해야 함)
예를 들어, Hashtable, B-Tree, Qsort 정도를 C 또는 C++로 구현할 수 있을 정도
- Network 패킷 처리 지식(Layer 2 ~ 4, Layer 7)
예를 들어, DHCP Server/Client의 주요 Feature를 구현할 정도의 능력이 있으면 됨.
- Netfilter, eBPF 등 (IP packet hooking, ethernet packet 처리, UDP/TCP packet 처리)
- IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
# 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
# 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
회사에서 사용하는 프로그래밍 언어:
- 프로그래밍 언어: C, C++, Go
(참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
- 출근: 8~10시 사이에서 자유롭게 선택
- 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
- 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
- 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
- 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
- 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
- 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
- "sejong.jeonjo@gmail.com" # 궁금한 점은 이 연락처로 문의주세요.
- 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
- 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
- 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
- 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
- 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
- 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
- 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
- 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
- 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)
반응형

 


 

작성일: 2024년 8월 7일

 

 

Ubuntu 24.04 또는 Ubuntu 22.04에 Samba(SMB) 서버를 설치하고 싶다면 아래 절차를 따라하면 잘 동작한다.

  

 

##
## Samba 서버 프로그램을 설치한다.
##
$ sudo apt-get update
$ sudo apt-get install -y samba
...
##
## Samba 서버가 공유할 폴더(디렉토리) 정보를 설정한다.
##
$ vi /etc/samba/smb.conf
... 중간 생략 ...
;
; 아래 내용을 추가한다.
;
[mybox]
comment = My File Box
path = /home/sejong
guest ok = no
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777
valid users = sejong
... 중간 생략 ...
##
## Linux 계정 'sejong'을 samba 접근 계정으로 추가한다.
## 암호는 Linux 계정 'sejong'의 암호와 달라도 된다.
##
$ sudo smbpasswd -a sejong
##
## Samba 서버 데몬을 재기동한다.
##
$ sudo /etc/init.d/smbd restart
## 또는 위 명령을 아래와 같이 수행해도 된다.
## $ sudo systemctl restart smbd

 

클라이언트 PC에서 아래와 같이 Samba 서버에 접속시도한다. (아래는 Macbook에서 실행한 화면)

 

Macbook에서 Samba 서버에 접속 시도

 

 

 

 

Samba 서버 설정 끝 !!!
Samba 서버 관리 명령을 알고 싶다면, 아래 내용을 더 읽어보아요~~

 

 

 

Samba 계정 정보를 보고 싶다면, 아래와 같이 `pdbedit` 명령으로 조회할 수 있다.

 

$ pdbedit -L -v
---------------
Unix username: sejong
NT username:
Account Flags: [U ]
Home Directory: \\ANDREW-UBUNTU\sejong
HomeDir Drive:
Logon Script:
Profile Path: \\ANDREW-UBUNTU\sejong\profile
Domain: ANDREW-UBUNTU
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Thu, 07 Feb 2036 00:06:39 KST
Kickoff time: Thu, 07 Feb 2036 00:06:39 KST
Password last set: Wed, 07 Dec 2022 16:06:30 KST
Password can change: Wed, 07 Dec 2022 16:06:30 KST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
$

 

 

Samba 서버에 접속한 Client 정보를 보고 싶다면 아래와 같이 `smbstatus` 명령을 사용한다.

$ smbstatus
Samba version 4.15.9-Ubuntu
PID Username Group Machine Protocol Version Encryption Signing
----------------------------------------------------------------------------------------------------------------------------------------
295419 sejong sejong 10.1.3.169 (ipv4:10.1.3.169:63352) SMB3_11 - partial(AES-128-CMAC)
Service pid Machine Connected at Encryption Signing
---------------------------------------------------------------------------------------------
mybox 295419 10.1.3.169 Wed Dec 7 04:23:23 PM 2022 KST - -
Locked files:
Pid User(ID) DenyMode Access R/W Oplock SharePath Name Time
--------------------------------------------------------------------------------------------------
295419 1001 DENY_NONE 0x100081 RDONLY NONE /home/sejong . Wed Dec 7 16:23:22 2022

 

 

계정 정보를 변경하고 싶다면,  `usermod` 명령을 사용한다.

 

$ usermod --help
Usage: usermod [options] LOGIN
Options:
-b, --badnames allow bad names
-c, --comment COMMENT new value of the GECOS field
-d, --home HOME_DIR new home directory for the user account
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP as new primary group
-G, --groups GROUPS new list of supplementary GROUPS
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
the user from other groups
-h, --help display this help message and exit
-l, --login NEW_LOGIN new value of the login name
-L, --lock lock the user account
-m, --move-home move contents of the home directory to the
new location (use only with -d)
-o, --non-unique allow using duplicate (non-unique) UID
-p, --password PASSWORD use encrypted password for the new password
-R, --root CHROOT_DIR directory to chroot into
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s, --shell SHELL new login shell for the user account
-u, --uid UID new UID for the user account
-U, --unlock unlock the user account
-v, --add-subuids FIRST-LAST add range of subordinate uids
-V, --del-subuids FIRST-LAST remove range of subordinate uids
-w, --add-subgids FIRST-LAST add range of subordinate gids
-W, --del-subgids FIRST-LAST remove range of subordinate gids
-Z, --selinux-user SEUSER new SELinux user mapping for the user account

 

 

게시물 작성자: sejong.jeonjo@gmail.com

 

 


 

 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)
근무지 위치:
서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 70% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
- 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver
- Linux OS에서 IPC 구현이 가능
예를 들어, MSGQ, SHM, Named PIPE 등 활용하여 Process간 Comm.하는 기능 구현이 가능하면 됨.
- Algorithm(C언어, C++ 언어로 구현 가능해야 함)
예를 들어, Hashtable, B-Tree, Qsort 정도를 C 또는 C++로 구현할 수 있을 정도
- Network 패킷 처리 지식(Layer 2 ~ 4, Layer 7)
예를 들어, DHCP Server/Client의 주요 Feature를 구현할 정도의 능력이 있으면 됨.
- Netfilter, eBPF 등 (IP packet hooking, ethernet packet 처리, UDP/TCP packet 처리)
- IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
# 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
# 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
회사에서 사용하는 프로그래밍 언어:
- 프로그래밍 언어: C, C++, Go
(참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
- 출근: 8~10시 사이에서 자유롭게 선택
- 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
- 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
- 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
- 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
- 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
- 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
- "sejong.jeonjo@gmail.com" # 궁금한 점은 이 연락처로 문의주세요.
- 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
- 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
- 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
- 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
- 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
- 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
- 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
- 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
- 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)

 

반응형
작성일: 2025년 3월 7일

 

 

Ubuntu 24.04를 설치하기 전, 이모저모 소식 알아보기

Ubuntu 24.04 (Noble Numbat)이 정식 릴리즈되었다.

ubuntu.com 홈페이지에 들어가면 24.04 릴리즈 소식을 볼 수 있다.

 

Ubuntu 24.04 Noble Numbat 릴리즈 소식을 전하는 Canonical 홈페이지 화면

 

지금 Ubuntu 24.04를 사용할 일은 없지만, 새로운 OS이니까 설치해봐야지 ^^

 

i9 CPU가 장착된 Desktop PC에서 KVM을 이용해서 Ubuntu 24.04를 설치해봤다.

ISO 파일을 다운로드한 시간을 제외하면, 실제로 OS 패키지를 설치한 시간은 대략 6분 정도 걸렸다.

 

Ubuntu 24.04를 부팅한 직후에

  • Chromium 브라우저를 설치하고, YouTube에서 4K 영상 재생.
  • SSH 설정해서 외부에서 접속.
  • Remote Desktop도 설정해서 접속.

30분 정도 사용해봤을 때, UX 측면에서 Ubuntu 22.04와 거의 바뀐 것은 없다. 

내가 알아낸 UX 측면의 변화는

  • [ Settings / Sharing ] 화면에서 Remote Desktop 기능이 빠짐
  • [ Settings / System ] 화면에 Remote Desktop 기능이 추가됨

즉, [ Remote Desktop ] 설정 메뉴가 [ Sharing ] 하위 메뉴에서 [ System ] 하위 메뉴로 이동했다.

 

Ubuntu 24.04 Noble Numbat 설치한 모습

 

 


 

.

.

.

 

참고: 한영 전환 키 조합 설정하기

Ubuntu 24.04 에서 한영 전환 설정하는 방법 -->  https://andrewpage.tistory.com/390

.

.

.

 

 


 

Ubuntu 24.04 설치 절차

1)  Ubuntu 24.04 설치 이미지 파일 다운로드

Ubuntu Server 이미지와 Ubuntu Desktop 이미지 중에서 본인이 사용할 목적에 맞게 Ubuntu 이미지 파일을 다운로드한다.

참고:
  Windows GUI 화면이 필요하고, 마우스로 Ubuntu OS를 조작하고 싶다면 Ubuntu Desktop 이미지를 다운로드 해야 한다.
  Ubuntu Server 이미지는 Text 화면 밖에 없고, 마우스를 사용할 수 없다.

 

Ubuntu Desktop 24.04 설치 파일 다운로드 (이 링크를 클릭)

 

 

2)  Ubuntu 24.04 설치를 위한 부팅 USB 만들기

Ubuntu 공식 홈페이지에 각 OS별 부팅 USB 만드는 방법이 잘 설명되어 있다.

 

 

 

3)  USB로 부팅하여 Ubuntu 설치

앞에서 만든 USB로 Ubuntu를 부팅하면, 몇 초 후에 아래와 같은 GRUB 부팅 옵션 화면이 나온다.

Ubuntu를 설치할거라면, [Try or Install Ubuntu]를 선택하고 [Enter Key]를 누른다.

GRUB 부팅 옵션 화면

 

 

10초 정도 지나면, 아래와 같이 [Welcome to Ubuntu], "Preparing Ubuntu..." 메시지가 출력되는 설치 화면이 나온다.

 

Ubuntu 24.04 설치 진행 중 화면

 

 

또 2초 정도 지나면, 아래와 같이 Ubuntu 설치 중에 사용할 언어를 선택하라는 창이 나온다.

English를 선택하고 [Next] 버튼을 누른다.

Ubuntu 24.04 설치 화면 / OS 설치 중 사용할 언어 선택

 

 

 

아래 화면에서 설정 변경 없이 [Next] 버튼을 클릭한다.

Ubuntu 24.04 설치 화면

 

 

아래 설치 화면에서 키보드 레이아웃을 선택한다. [특별한 키보드가 아니라면, English(US)를 선택]

Ubuntu 24.04 설치 화면 / 키보드 레이아웃 선택하기

 

 

 

Ubuntu 24.04를 설치하는 중에 사용할 인터넷 연결 방식을 선택한다.

Ubuntu 24.04 설치 화면 / 인터넷 연결 방식 선택하기

 

 

 

 

아래 화면에서 Ubuntu 24.04를 설치할 것인지, Ubuntu 24.04를 설치하지 않고 맛보기로 잠깐 부팅해서 사용하고 버릴지 선택한다.

Ubuntu 24.04 설치 화면 / 설치를 할 것인지, 설치 없이 임시로 맛보기만 할지 선택하기

 

 

대화형으로 설치할지, 자동으로 일괄 설치할지 정한다.

Ubuntu 24.04 설치 화면 / 대화형으로 설치할지, 자동 설치할지 선택

 

 

기본 앱만 설치할지, 오피스 도구 같은 추가 앱을 설치할지 정한다.

(Ubuntu 24.04를 설치하고 나중에 추가 설치가 가능하니까, 기본 앱만 설치해도 된다)

Ubuntu 24.04 설치 화면 / 추가로 설치할 프로그램 선택하기

 

Third-party 소프트웨어, 동영상 플레이어 같은 앱을 추가 설치할지 결정한다.

(Ubuntu 24.04를 설치하고 나중에 추가 설치가 가능하니까, 체크 박스를 체크하지 않아도 된다)

Ubuntu 24.04 설치 화면 / 추가로 설치할 Software 선택하기

 

 

설치할 디스크를 삭제하고, Ubuntu 24.04를 설치하도록 한다.

Ubuntu 24.04 설치 화면 / Disk 삭제 후 Ubuntu 설치하기

 

 

Ubuntu OS에 계정을 생성한다.

Ubuntu 24.04 설치 화면 / 계정 생성하기

 

 

시간대를 설정한다. (Asia/Seoul을 선택)

Ubuntu 24.04 설치 화면 / 시간대(timezone) 선택하기

 

지금까지 선택한 옵션을 확인하고 [Install] 버튼을 클릭한다.

Ubuntu 24.04 설치 화면 / 설치 옵션 확인 후 설치 시작

 

 

 

아래와 같은 화면이 나올 것이고, 대략 10분 정도 기다리면 Ubuntu 24.04 설치가 완료될 것이다.

Ubuntu 24.04 설치 시작 화면

 

 

 

Ubuntu 24.04 설치 화면

 

 

 

Ubuntu 24.04 설치 화면

 

 

 

 

Ubuntu 24.04 Noble Numbat 설치한 모습

 

 

2024년 4월 26일에 Ubuntu 24.04 관련하여 발견한 이슈.

내 PC에서는 문제가 없었는데, 회사의 동료들은 Ubuntu GUI Desktop 환경에 문제가 있다고 한다.

"Terminal" 앱을 제외하고 모든 GUI 창 모서리가 "깜빡~깜빡~"하면서 창 모양이 사라졌다 다시 보였다 하는 현상이 있다.

(1초에 10번 정도 깜빡이는 것처럼 보임)

그래서 동료들은 Ubuntu GUI Desktop 없이 Ubuntu Server 패키지만 설치해서 SSH 접속해서 사용하고 있다.

참고로, 이렇게 GUI 화면이 깜빡이는 동료들의 PC 운영 환경은 아래와 같다.

  • Baremetal --> 설치 단계부터 GUI가 안 보임
  • VirtualBox --> GUI Desktop 화면이 깜빡이는 현상 발생

정상적으로 잘 동작하는 경우는 아래와 같다.

  • KVM / Qemu 환경에 VM으로 Ubuntu 24.04를 설치한 경우 --> 정상 동작

 


 

 

 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)
근무지 위치:
서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 50% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
- 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver
- Algorithm(C언어, C++ 언어로 구현 가능해야 함)
예를 들어, Hashtable, Linked list 자료 구조 정도를 C 또는 C++로 구현할 수 있으면 Good!
- Network 패킷 처리 지식(Network layer 2 ~ 4)
예를 들어, DHCP Server/Client 기능(Discover, Offer 등) 구현할 정도의 능력이 있으면 됨.
- 우리 연구소에서는 Netfilter(iptables)를 잘 사용하면 업무를 수행함에 있어서 편함. (Netfilter를 모르면 동료가 잘 알려줄 것임)
- IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
# 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
# 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
# 위 내용을 잘 모르지만, 이 분야에 대해 공부하면서 일하고 싶다면 저에게 문의 메일을 주세요~
# 학습 잠재력이 높은 것이 보인다면, 협업할 동료로써 환영합니다 ^^
회사에서 사용하는 프로그래밍 언어:
- 프로그래밍 언어: C, C++, Go, Rust
(참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
- 출근: 8~10시 사이에서 자유롭게 선택
- 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
- 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
- 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
- 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
- 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
- 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
- "sejong.jeonjo@gmail.com" # 궁금한 점은 이 연락처로 문의주세요.
- 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
- 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
- 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
- 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
- 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
- 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
- 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
- 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
- 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)
반응형

 

작성일: 2025년 3월 7일

 

 

 

Intel CPU를 사용하는 Macbook을 사용했을 때는 아래와 같이 CPU 온도를 확인했었다.

$ sudo powermetrics -n 1 --samplers smc

 

그런데 m1 CPU를 사용하는 Macbook을 구입한 뒤로는 위 명령이 쓸모없게 되었다. 

왜냐하면 아래처럼 에러가 발생하기 때문이다.

$ powermetrics -n 1 --samplers smc
powermetrics: unrecognized sampler: smc
$

 

 

M1, M2 CPU를 장착한 Mac에서 CPU 온도 확인하는 방법.

 

 

그렇다면, m1 CPU를 장착한 Macbook에서는 어떻게 CPU 온도를 확인할까?

아래처럼 Hot 이라는 앱을 설치하면 된다.

 

$ brew install --cask hot
참고로 자세한 설명은 아래 공식 홈페이지를 읽어볼 것 !
  https://formulae.brew.sh/cask/hot

 

brew 명령으로 hot 앱이 설치되었다면, hot 앱을 구동한다. 아래 화면과 같이 m1 cpu 온도가 짠~하고 보여질 것이다.

 

macOS m1 CPU 온도 정보 확인 (Hot 앱)

 

macOS m1 CPU 온도 확인을 위한 Hot 앱

 

Parallels로 Windows 11 구동하고, 이것저것 업무에 필요한 앱을 많이 구동했는데 섭씨 31도 밖에 안 되네.

M1 CPU를 좋아할 수 밖에 없는 이유가 바로 이런 것 때문 ^^

 


 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)
근무지 위치:
서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 70% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
- 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver
- Linux OS에서 IPC 구현이 가능
예를 들어, MSGQ, SHM, Named PIPE 등 활용하여 Process간 Comm.하는 기능 구현이 가능하면 됨.
- Algorithm(C언어, C++ 언어로 구현 가능해야 함)
예를 들어, Hashtable, B-Tree, Qsort 정도를 C 또는 C++로 구현할 수 있을 정도
- Network 패킷 처리 지식(Layer 2 ~ 4, Layer 7)
예를 들어, DHCP Server/Client의 주요 Feature를 구현할 정도의 능력이 있으면 됨.
- Netfilter, eBPF 등 (IP packet hooking, ethernet packet 처리, UDP/TCP packet 처리)
- IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
# 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
# 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
회사에서 사용하는 프로그래밍 언어:
- 프로그래밍 언어: C, C++, Go
(참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
- 출근: 8~10시 사이에서 자유롭게 선택
- 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
- 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
- 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
- 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
- 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
- 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
- "sejong.jeonjo@gmail.com" # 궁금한 점은 이 연락처로 문의주세요.
- 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
- 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
- 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
- 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
- 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
- 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
- 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
- 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
- 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)
반응형
작성일: 2025년 2월 22일

 

잔잔하게 음악 들으면서 글을 읽어보세요 ^^

https://youtu.be/UKzWrVBaZ4M?si=DypTskDwy6VuByCY

 


 

 

종이 사용 설명서를 항상 책상 위에 올려 놓고 보면, 책상이 깔끔하지 않아서 종이 사용 설명서를 치우고 공식 홈피 문서를 보려고 했다.
그런데 이 Rainy75 키보드의 공식 홈피인 wobkey.com 에는 사용 설명서(Use Manual)을 제공하지 않는 것 같다. ㅠㅠ
(어쩌면 내가 못 찾는 것일 수도... ㅠㅠ)
그래서 가끔 키보드 설정이 필요할 때, 블로그에서 보려고 사진으로 박재했다.

 

 

Rainy75 User Manual (English)

RAINY75 User Manual (Windows / MACOS 전환)

 

 

 

 

RAINY75 User Manual / Multimedia combination shortcuts

 

 

 

 

RAINY75 User Manual / Lighting effect control / 키보드 백라이트 제어

 

 

 

RAINY75 User Manual / Check Battery Level (배터리 확인)

 

 

 

 

 


 

 

 

 

레이니75 키보드 한글 사용 설명서

아래 한글로 작성된 매뉴얼은 [ KypeKBD 카페 ]에서 제작한 것이다.

원문(PDF 파일)은 TypeKBD 카페 에서 열람할 수 있다.

 

 

레이니75 키보드 매뉴얼 (한글) / 윈도우 & macOS 간 전환

위 이미지 출처: KypeKBD 카페 

 

 

 

레이니75 키보드 매뉴얼 (한글) / 멀티미디어 조합 단축키

 

위 이미지 출처: KypeKBD 카페 

 

 

레이니75 키보드 매뉴얼 (한글) / 조명 효과 제어

 

위 이미지 출처: KypeKBD 카페 

 

 

레이니75 키보드 매뉴얼 (한글) / RGB 라이트 설정

 

위 이미지 출처: KypeKBD 카페 

 

 

 

레이니75 키보드 매뉴얼 (한글) / 배터리 상태 확인 및 무선 연결 & 블루투스 연결 & 유선 연결 설정 방법

위 이미지 출처: KypeKBD 카페 

 

 

레이니75 키보드 매뉴얼 (한글) / Q&A

위 이미지 출처: KypeKBD 카페 

 

 

 

 

 

 

 

 


 

 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)
근무지 위치:
서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 50% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
- 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver
- Algorithm(C언어, C++ 언어로 구현 가능해야 함)
예를 들어, Hashtable, Linked list 자료 구조 정도를 C 또는 C++로 구현할 수 있으면 Good!
- Network 패킷 처리 지식(Network layer 2 ~ 4)
예를 들어, DHCP Server/Client 기능(Discover, Offer 등) 구현할 정도의 능력이 있으면 됨.
- 우리 연구소에서는 Netfilter(iptables)를 잘 사용하면 업무를 수행함에 있어서 편함. (Netfilter를 모르면 동료가 잘 알려줄 것임)
- IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
# 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
# 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
# 위 내용을 잘 모르지만, 이 분야에 대해 공부하면서 일하고 싶다면 저에게 문의 메일을 주세요~
# 학습 잠재력이 높은 것이 보인다면, 협업할 동료로써 환영합니다 ^^
회사에서 사용하는 프로그래밍 언어:
- 프로그래밍 언어: C, C++, Go, Rust
(참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
- 출근: 8~10시 사이에서 자유롭게 선택
- 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
- 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
- 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
- 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
- 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
- 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
- "sejong.jeonjo@gmail.com" # 궁금한 점은 이 연락처로 문의주세요.
- 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
- 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
- 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
- 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
- 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
- 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
- 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
- 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
- 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)

 

 

 

+ Recent posts