Shuffle Algorithm - Fisher-Yates

대표적인 Shuffle(썩기) 알고리즘인 Fisher-Yates 알고리즘에 대해서 알아보자.

Python의 random 모듈에 구현되어 있기 때문에 굳이 별도의 함수로 구현할 필요없아 가져다 쓰기만 하면된다.

from random import shuffle

a = [x for x in range(100)]
b = shuffle(a)
print(b)

CPython에 구현된 shuffle() 함수가 현대적인 Fisher-Yates 알고리즘의 구현이다.

라즈베리파이(RPi, Raspberry Pi) 기본계정 pi 변경하기

How to change default account username for RPi(Raspberry Pi)

Raspberry Pi 공식 이미지의 username 과 password는 다음과 같다.

username: pi
password : raspberry

쓸때마다 느끼는 거지만 pi 와 raspberry는 정말 손에 익지 않는다. 키보드로 칠때마다 오타가 나서 한번에 로그인 할때가 거의 없다. pi 계정을 계속 쓰면 보안 문제도 생길 수 있으니 자신만의 손에 익은 username과 password로 변경 해 보자.

다른 리눅스 시스템에도 적용할 수 있다.

먼저 root 계정으로 로그인 해야 한다. 먼저 root 로 로그인 하기 위하여 root 계정의 Password를 설정한다.

sudo passwd root

History 파일에서 특정 엔트리 삭제하기

Remove specific history entries from history file

History 파일에서 특정 엔트리 삭제하기

History 파일에서 특정 엔트리 삭제하기

  작업을 하다 보면 민감한 정보가 History에 남아 있는 경우가 있다. 다음과 같이 명령 앞에 white space를 추가 하여 해당 명령을 history 파일에 남기지 않는 방법이 있다.

mysql -u root -ppassword -h localhost 

Synergy - Software KVM

Synergy - Software KVM

작업을 하다 보면 한 책상위에서 여러대의 PC로 작업을 해야 하는 경우가 생긴다. 나의 경의 예전에 개발은 Linux 머신에서 문서 작업 및 기타 업무는 Windows PC에서 진행을 하고는 했었는데 키보드와 마우스가 항상 문제였다. 모니터야 source를 변경 하면 (귀찮기는 하지만) 쉽게 되지만 Keyboard와 마우스를 공유 하려면 별도의 KVM을 구입 하야야 한다. KVM 없이 공유 할 수 있는 솔루션을 찾다가 Synergy라는 S/W KVM을 찾았다. 키보드와 마우스만을 공유 할 수 있으니 엄밀히 말하면 KVM이 아니라 KM 이다. Synergy를 사용한지는 Open source 일때 부터이니 10년도 더 지났다. 그때 이 소프트웨어가 너무 마음에 들어 기부하고 받은 1.8 버젼용 Pro License를 아직 사용가능 하다. 몇년전 Symless라는 회사를 만들고 본격적으로 판매를 하고 있더니만 작년에 Synergy 2가 나왔고 2017년 말에 2를 12달러에 판매하는 프로모션이 있어 잽싸게 구매를 하였다. 현재 Basic, Pro 버전이 있으며 각각 29, 39 달러에 판매 되고 있다.

Symless

개발자와 시스템 관리자의 친구 tmux, GNU screen Alternative - 01

Usages of tmux, GNU screen Alternative

개발자와 시스템 관리자의 친구 tmux, GNU screen Alternative - 01

개발자와 시스템 관리자의 친구, tmux 에 대하여 알아보자

tmux는 GNU screen을 대체 할 수 있는 가장 매력적인 대안이다. Terminal Multiplex 로 매뉴얼은 다음에서 볼 수 있다.

tmux man page

tmux의 주요 기능에 대하여 알아본다. 먼저 세션 유지 기능과 화면 공유 기능에 대하여 알아보자.

왜 디렉터리 Hard link를 만들 수 없나요?

왜 디렉터리 Hard link를 만들 수 없나요?

디렉터리 Hard Link를 만들고 싶지만 만들어 지지 않는다.

예전에는 root 권한으로 -d 옵셥을 주면 디렉터리에 대한 Hard Link를 만들 수 있었던것 같은데 지금  Ubuntu 에서 테스트 해보니 root 권한으로도 디렉터리 Hard Link가 만들어 지지 않는다.

mkdir a
ln a b
ln: a: hard link not allowed for directory

왜 디렉터리에 대한 Hard Link를 만들수 없는지 알아보자.

Insync - Linux에서 Google Drive Desktop Client 사용하기

이 글에서는 몇 없는 Google Drive의 리눅스 동기화 어플리케이션인 Insync 에 대하여 알아본다.

Insync: Google Drive Syncing Application for Linux

Insync: 리눅스를 위한 Google Drive 동기화 어플리케이션

Linux를 메인 OS로 사용한지도 벌써 10년 가까이 되어 간다 넘었다.. 처음 메인 OS를 Linux로 변경하고 불편했던 인터넷 뱅킹등의 문제는 스마트폰에서 은행 업무를 볼 수 있게 되면서 해결되었다. 그외 민원업무등 반드시 Windows가 필요한 일은 VirtualBox를 통해 해결한다.

그외 어플리케이션들은 Google Docs같은 웹 기반 어플리케이션으로 대체 가능하다.  하지만 데이터 백업 및 파일 관리용으로 사용하는 Google Drive는 신뢰할 수 있는 Alternate가 없어 고민 했하던 차에 2015년 즈음에 insync라는 Thrid-Party Application을 알게 되었다 유료지만 요즘 트렌트인 정기 결제(구독)가 아닌 One Time 결제로 사용 가능하고 각 배포판용 Repository도 별도로 제공 하기때문에 설치 역시 간편하다.headless application도 지원(3.x 버젼에 잠시 지원이 중단 되었다가 다시 지원하기 시작함) 하기 때문에 UI 없이 콘솔 상에서 실행도 가능하다. https://www.insynchq.com   다른 Agent들과 비교한 자료를 원하면 아래 사이트를 참조 하기 바란다.

use google drive linux

RSYNC+SSH 를 이용한 증분 백업 설정 및 Cron을 이용한 자동화

RSYNC+SSH 를 이용한 증분 백업 및 Cron을 이용한 자동화

관리 하는 서버가 많아지고 서버에 저장되는 데이터의 양이 늘어 날 수록 백업을 어떻게 하여야 하는지 고민이 생긴다.

이 포스트에서는 RSYNC와 SSH를 이용하여 여러 서버의 데이터를 백업하고 이를 자동화 하는 방법에 대하여 기술 한다. 테스트를 위한 서버 구성은 다음과 같다.  

아래 예제 에서는 apple, banana, coconut/home 디렉터리를 backupbot으로 백업 하고자 한다.

Backup Environment

Change NodePort range local kubernetes

Change NodePort range local kubernetes

Add following line to add following line to /etc/kubernetes/manifests/kube-apiserver.yaml

- --service-node-port-range=80-32767

Examples

sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml