큐브 깍는 노인

나의 큐브 맞추는 방법은 루빅스 큐브 맞추기 정리로 완전히 완성이 되어 더 이상 추가할 게 없을 것 같은데 계속 큐브를 이리저리 돌리면서 새로운 방법을 찾는 내 모습이 큐브 깍는 노인 같다.

“노인장, 거 다 된 것 같소. 큐브 이리 내 놓으시오.”

“다 된 것 같아도 언제나 새로운 것이 번쩍이며 나타나는 게 세상의 이치요.”

노인은 막무가내였다.

큐브를 깍으면서 새로운 동작을 발견하였다. 이 새로운 동작들을 큐브 깍기 동작이라고 명명한다. 왜냐하면 큐브를 깍는 것 같은 동작이기 때문이다. 이 동작들로부터 기존 동작에서 제자리회전하는 코너조각을 달리할 수 있다. B2 동작이 B 동작과 다른 코너조각을 제자리회전시키는 것처럼.

1 큐브 깍기

큐브 깍기 동작은 윗면, 아랫면, 왼쪽면, 오른쪽면을 인접한 순서로 모두 90도씩 같은 방향으로 돌리는 걸 말한다. 이게 꼭 곶감 깍는 것과 닮았다고 해서 큐브 깍기라고 이름 붙였다고 안드로메다 은하에 전해지고 있다.

여러 큐브 깍기 동작을 일반적

루빅스 큐브 맞추기 정리

1 용어와 기본 동작 정리

먼저 이 글에서 쓰인 용어를 정리한다.

  • 큐브의 코너에 있는 8개의 조각을 코너조각이라고 하며 모서리에 있는 12개의 조각을 모서리조각이라고 한다. 각 면의 중앙에 있는 것을 가운데조각이라고 한다.
  • 큐브는 6개의 면으로 되어 있고 각 면을 가운데조각 색으로부터 흰면, 노란면, 빨간면, 파란면, 주황면, 초록면으로 칭한다.
  • 색과 관계없이 큐브가 놓인 상태로 각 면을 말할 때는 윗면, 아랫면, 왼쪽면, 오른쪽면, 앞면, 뒷면으로 칭하고 뒤 네 면은 옆면이라고 묶어 부른다.
  • 큐브 위아래, 전후, 좌우 모두 세 개의 줄로 이루어져 있다. 위부터 차례대로 윗줄, 가운뎃줄, 아랫줄이라고 부른다. 보통 흰면을 윗면으로 두고 위부터 아래로 순차적으로 맞추므로 큐브를 어떻게 바라본다는 말이 없으면 윗줄은 흰면을 포함하는 줄이다.
  • 한 면에서 모든 모서리조각의 색이 가운데조각의 색과 같을 때 이를 십자라고 부른다.
  • 한 코너조각은 세 개의 모서리조각과 인접해 있고 한 모서리조각은 두 개의 코너조각과 인접
클라우드 저장소 마운트하기

컴퓨터에 로그인하면 구글 드라이브와 MS 원드라이브가 자동으로 마운트되도록 하였는데 어디서 이 방법을 알아냈는지 찾아보려고 하니까 찾을 수가 없다. 작년 3월 즈음 Rclone과 이 방법에 대해서 블로그 글을 쓰다가 귀찮아서 그만 두었는데 아마도 내가 이것저것 찾아보고 조합해 낸 방법인 것 같다.

이 방법이 지원하는 클라우드 저장소는 Rclone에서 지원하는 어떤 것도 될 것이다. 내가 쓰는 것은 Google Drive, MS OneDrive, Dropbox, pCloud, Mega, Box, Google Photos, AWS S3 등이다. Mega에 대해서는 Rclone이 문제가 있고 2단계 인증을 지원하지 않아서 MEGAcmd라는 툴을 써서 WebDAV 로컬 서버를 만들고 우회 접속하는 방법을 쓴다. 이것은 GitHub:rclone#3393의 한 댓글에 설명되어 있다.

먼저 pam_mount가 필요하다. 로그인할 때 자동적으로 마운트해 주는 PAM 모듈이다. 이것의 설정은 /et

루빅스 큐브 맞추기 다른 전략

지금까지 루빅스 큐브를 윗줄부터 차례로 맞추면서 대부분의 고민을 아래줄 맞추는 데 써왔다. 이미 맞춘 윗 두 줄을 흐트러뜨리지 않으면서 조각을 제자리에 가져다 놓고 색깔을 맞추는 전략을 썼다. 이 과정에서 공식을 유도하고 이 공식으로 숙달이 되다 보니 나름의 최선의 방법을 적용할 수 있게 되었다.

그러다가 노란면을 특별하게 취급하지 않고 색깔 중립적인 방법으로 맞추는 방법을 시도해 보았다. 이 새로운 전략에서는 앞서 만든 공식 중 13-14번 공식만 써서 맞출 수 있다. 이 두 공식은 거울대칭이므로 사실상 한 가지 공식만으로 맞출 수 있는 것이다. 또 이 공식은 대칭되는 동작이 많이 상쇄되어 왼쪽-X, 오른쪽-X가 두 번 수행되는 것 중 가장 간단한 동작이다.

완전함을 위해서 13번 공식을 말로 풀어 보면 다음과 같다. 아래면을 정면으로 보면서

  1. 윗줄을 시계반대방향으로 90도 돌린다.
  2. 앞줄을 시계반대방향으로 90도 돌린다.
  3. 윗줄을 시계방향으로 90도 돌린다.
  4. 앞줄을 시계반대방향으로
Emacs 한글 글꼴 설정

1 Fontconfig 이용

Emacs를 쓰면서 한글 글꼴 폭이 영문 글꼴 폭의 두 배가 되게 해서 쓰고 있다. 옛 버전에서는 Emacs 소스 코드에 CJK 글꼴에 패딩을 주는 패치를 하고 직접 빌드해서 썼는데 소스 코드가 바뀌면서 패치를 새로 만들어 주어야 하는 것이 귀찮고 잘못 나오는 부분도 있고 해서 다른 방법을 찾아 보다가 fontconfig에서 matrix로 글꼴을 변형하는 방법이 있어 이 방법으로 한글 폭을 늘려서 사용했다. 아래는 ~/.config/fontconfig/fonts.conf 파일 내용 중 일부이다. 이렇게 하면 폭이 1.2배 커진다. 이것이 적용된 D2Coding 글꼴을 유니코드 한글 영역에 대해서 사용하도록 Emacs를 설정하면 된다. (내가 TeX 사용자 그룹에 썼던 댓글 참조)

  <match target="pattern">
    <test qual="any" name="family">
      <string>D2Coding</string>
    </test>
    <edi 
Docker 이미지

블로그를 정적 웹으로 서비스하는 것이 유행인가 보다. 몰랐는데 가끔 보던, 사이트 소스를 GitHub 같은 곳에 올려둔 것이 그런 것이었던 것 같다. 앞 글에서 AWS 따라하기 했던 블로그가 그런 사이트이다. 코드 저장소에 hakyll을 이용하여 웹페이지를 만들어 내는 소스를 올려두고 AWS 서비스로 코드를 빌드해서 스태틱웹을 만든 다음에 그걸 AWS S3에 올리는 것이다. 코드를 빌드할 때는 자동으로 빌드하게 하는데 이런 것을 CI라고 하는가 보다. 가끔 광고에서나 글에서 보던 CI가 그거였던 것이다. 여기서 도커 이미지가 사용된다.

그 블로그를 따라서 hakyll 도커 이미지를 만들어 보았다. 그런데 몇 번 실패하다 보니 루트파일시스템 공간이 부족해져 버렸다. 보니까 /var/lib/docker/btrfs/subvolumes에 엄청난 공간이 쓰이고 있었다. 중간에 이미지를 막 중복해서 만들어 내고 실패 때문에 지우지 않아서 남겨진 것일까? docker image list로 이미지

Purifier니까 Purely Functional하게

직수형 정수기를 설치하려고 아마존에서 직구하고 연결 부품은 국내 쇼핑몰에서 구입하는데 주문하는 상품 번호와 이름과 개수를 적고 총 가격을 적으란다. 그래서 이맥스 편집기를 열어서 번호와 이름을 적고 있었는데 왜인지 이렇게 하고 싶었다.

(let ((order
       '(((6 "1/4안전클립" 1000) . 1)
         ((10 "1/4체크밸브" 3000) . 1)
         ((16 "컷팅피팅분리기(고급형)" 4000) . 1)
         ((37 "1/4:3/8픽스엘보" 1000) . 2)
         ((50 "1/4호스(길이3m)" 1000) . 1)
         ((55 "호스고정부품(10세트)" 1000) . 1)
         ((57 "소형고급아답터(6mm호스용)" 5000) . 1)
         ((76 "홀커터" 3500) . 1)
         ((79 "듀얼세척솔" 3000) . 1))))
  (seq-reduce
   ( 
KDE connect와 GSConnect
PC에서 Mobile settings 열면 나오는 창.

최근에 GSConnect라는 그놈셸 확장을 깔아 봤다. 매우 잘 작동하고 유용하다. https://extensions.gnome.org에서도 인기가 좋은 것 같다. 잠깐 사이에 인기 순위가 껑충 뛰었다.

GSConnect는 KDE connect의 구현이라고 한다. KDE에서 스마트폰과 동기화하는 프로그램인데 그걸 그놈셸에서 이용할 수 있게 구현했다고 한다. 스마트폰에서는 여전히 KDE connect라는 앱을 이용하면 된다.

브라우저 확장기능으로 GSConnect라는 것이 있는데 현재 보고 있는 웹페이지를 스마트폰에서 열게 하거나 SMS로 보낼 때 쓸 수 있다.

GSConnect를 설치하면 패널 오른쪽 드롭다운 메뉴에서 Mobile Devices 메뉴가 생긴다. 거기서 Mobile Settings에 들어가면 같은 네트워크 상의 KDE connect 기기를 찾는다. 당연히 스마트폰에 KDE connect 앱을 깔아야 보인다. 그리고 페어링을 하고 PC와 스마트폰에서 서로에 대해 권한을

동행복권은 리눅스 PC를 모바일로 인식

동행복권 사이트는 복권 파는 사이트이다. 인터넷으로 복권을 사고 파니까 많은 사람들이 스마트폰을 이용해서 사이트를 이용했나 보다. 그래서 모바일에서는 로또 6/45는 못 사도록 막으라고 누군가가 압박을 하니까 법인지 규정인지를 만들었나 보다. 명목상은 도박 중독을 막기 위해서라고 하겠지.

그런데 서버에서 접속 단말을 PC인지 모바일인지 어떻게 판단할까? 동행복권 사이트는 아래와 같이 했다.

if (navigator.platform && /win16|win32|win64|mac/ig.test(navigator.platform) == false) {
	if ('https://m.dhlottery.co.kr'.indexOf(location.hostname) == -1 || 'https://m.dhlottery.co.kr'.indexOf(location.hostname) == -1 ) {
	  	location.href = 'https://m.dhlottery.co.kr';
	}
}

그렇다

AWS, NixOS, Haskell web app

1 인스턴스 만들기

AWS(Amazon Web Services)에 가입하니 1년 동안 무료로 EC2에 t2.micro 인스턴스를 돌릴 수 있다고 하여 해스켈 웹앱을 어떻게 돌릴지 알아 보았다. 먼저 해스켈로 돌린 다는 생각에 해스켈 패키지가 잘 지원된다는 NixOS를 OS로 선택했다. 가상머신을 돌리는 서비스인 EC2에 커뮤니티 AMI(가상머신 이미지) 중 NixOS 것을 골라서 돌려 보았다. Deploying NixOS to Amazon EC2 동영상을 보고 따라했는데 어렵지 않게 할 수 있었다.

흥미로운 점은 인스턴스 만들 때 user-data를 넣어 주어 호스트 이름을 설정한다든지, 키 쌍을 새로 만들지 않고 기존의 공개키를 사용자에 대해서 설정해 주어 SSH 접속을 할 수 있게 한다든지 하는 것이었다. NixOS AMI는 user-data로 configuration.nix를 넣어 주는데 부팅할 때 이를 바탕으로 OS를 초기화하는 것 같다. 다른 OS AMI는 아마도 bash 스크립트를 user-

GIF로 그놈 배경 만들기

PC의 배경화면도 안드로이드의 라이브 배경 화면처럼 멋지게 나오면 좋은데 아직 그런 것을 지원하지 않는다. 대신 그놈 데스크탑에는 timed background라고 하는, 배경이 시각에 따라 바뀌게 하는 기능이 있다. 그놈에 이런 배경화면으로 adwaita-timed라고 하는 것이 기본으로 들어 있는데 /usr/share/backgrounds/gnome/adwaita-timed.xml 파일에 정의되어 있다. 이 파일을 본따 나만의 배경을 만들어 본다.

인터넷에서 쉽게 얻을 수 있는 GIF 파일을 풀어서 각 프레임을 이미지 파일로 만들자. Imagemagick의 convert란 툴을 이용하면 GIF를 PNG로 변환할 수 있는데 그냥 하면 제대로 된 결과를 얻을 수 없다. 용량을 줄이기 위해선지 각 프레임이 이전 프레임에서 바뀐 정보만을 담고 있기 때문이다. 그래서 convert-coalesce 옵션을 주어야 한다. GIF 파일을 이름이 test.gif라고 하면 다음과 같은 명령을

루빅스 큐브 공식 없이 맞추기
Rubik’s cube

어릴 적에 집에 루빅스 큐브가 있었다. 공식이 있는 줄도 모르고 한 면만 맞추고 더이상 맞출 줄 몰라서 뜯어서 물리적으로 맞추기만 했다. 이젠 공식을 쉽게 얻을 수 있지만 공식 없이 풀고 싶어서 공식을 외우지 않았다. 루빅스 큐브도 없고. 그러다가 얼마 전에 조카의 루빅스 큐브를 보고 루빅스 큐브를 구매하여 공식 없이 풀어 보자 했다. 생각보다 쉽게 맞춰져 버렸다. 이미 다들 공식 없이 루빅스 큐브를 이해하고 그 이해로부터 공식을 만들어서 큐브를 맞추고 있을지도 모른다. 이 글은 그냥 내가 맞췄던 전략을 이야기한다. 이것도 공식이라고 할 수 있을지 모르겠다.

1 위 줄 맞추기

3×3×3 큐브의 맨 위 줄부터 아래로 맞추어 간다. 맨 위 줄은 누구나 좀 생각하면 다 맞출 수 있을 것이다. 물론 위 면을 다 맞추었을 때 위 줄 옆 면의 색깔이 옆면 중앙 조각의 색깔과 같아야 한다. 위 줄만 신경쓰면 되기 때문에 좀 편리한 자리에 조각이 있지 않다면 먼저 흐트러뜨려서 그 조각을 다른 곳으