$ sudo tlmgr repository remove main
$ sudo tlmgr repository remove ktug
$ sudo tlmgr repository add https://ftp.kaist.ac.kr/tex-archive/systems/texlive/tlnet main
$ sudo tlmgr repository add http://mirror.ischo.org/KTUG/texlive/tlnet ktug
$ sudo tlmgr pinning add ktug "*"
$ cd ~/tmp
$ curl -O https://mirror.ischo.org/KTUG/texlive/tlnet/ktugrepo.pub.txt
$ sudo tlmgr key add ./ktugrepo.pub.txt
$ sudo tlmgr repository list
List of repositories (with tags if set):
https://ftp.kaist.ac.kr/tex-archive/systems/texlive/tlnet (main)
http://mirror.ischo.org/KTUG/texlive/tlnet (ktug)
[카테고리:] 계산
sed
'$ 띄어쓰기 조사'를 '$조사'로 수정하는 sed
sed -i ".bak" -e "s/$ \([은는을를이가으로에의보고와과]\)/$\1/g" *.tex
UTM에서 Windows 11 Arm 버전 설치하기
UTM에 Windows 11 Arm 버전을 설치하려고 할 때 설치 화면에서 네트워크를 잡을 수가 없어서 그 다음 과정으로 진행되지 않은 문제가 발생한다.
이 문제는 다음과 같이 해결할 수 있다.
-
UTM 설치 후 windows 11 arm 버전 이미지로 설치 진행. UTM과 윈도우 11 ARM 버전 다운로드는 다음 링크를 이용
UTM 다운로드 링크
윈도우 11 ARM 베타 버전 다운로드 링크 -
UTM 부팅을 하면 ESC 키를 눌러서 bios로 진입 후 해상도를 1024x768로 변경
-
UTM이 재부팅을 해서 국가 선택하는 창이 나오는데, 이 때 Shift-F10 키를 눌러서 cmd 창을 띄운 후에 다음 명령어를 입력
oobe\bypassnro
이렇게 하면 UTM이 자동 재부팅 되면서 설치가 잘 된다(설치 중에 네트워크 설정이 나오면 'I don't have internet'을 선택 후 설치를 계속하면 된다).
spice-guest-tools.exe 파일을 다운로드 받아서 USB 드라이브 등에 담아둔 후에,
윈도우가 다 설치되면 spice-guest-tools.exe를 실행해서 UTM에서 윈도우 사용을 원활하게 만들어준다.
spice-guest-tools는 parallels tools 같이 UTM을 원활하게 돌아가게 만드는 툴.
다운로드 링크는 아래
spice guest tools 다운로드 링크
USB 버전별 정리
맨날 헷갈리는 USB 버전을 정리해 놓는다.
단자의 모양
USB-A, USB-B, micro, USB-C 등은 연결 단자의 모양이다.
- USB-A는 흔히 우리가 쓰는 맨날 위아래 헷갈리는 직사각형 모양의 단자
- USB-B는 프린터나 스캐너에 연결할 때 사용하는 정사각형에 가까운 단자
- micro는 맨날 망가져버리는 조그만 단자
- USB-C는 납작한 타원형 단자
이 외에도 몇개가 있기는 하지만 별로 쓰이지 않으니 잊어버리자.
전송속도 및 전원공급 규격
버전별로 데이터 전송속도도 다른데, 매우 이름을 헷갈리게 만들어놓았다.
버전 | 데이터 전송속도 | 전원 공급 규격 | PD 지원 | 표기 | 비고 |
---|---|---|---|---|---|
1.0 | 12 Mbps | 0.5 W | x | ||
2.0 | 480 Mbps (60MB/s) | 2.5 W | x | ||
3.0 = USB 3.1 Gen1 = USB 3.2 Gen1 | 5 Gbps (625MB/s) | 4.5 W | x | SS5 (파랑) | |
3.1 = USB 3.1 Gen2 = USB 3.2 Gen2 | 10 Gbps (1.25GB/s) | 4.5 W | o | SS10 | c to c만 가능 |
3.2 = USB 3.2 gen2x2 | 20 Gbps (2.5GB/s) | 4.5 W | o | SS20 | c to c만 가능 |
4.0 | 40 Gbps (5.0 GB/s) | 240 W | o | c to c만 가능, PD 필수 |
BC (Battery Charging)과 PD (Power Delivery)
BC나 PD 기능이 있으면, 또 버전마다 최대 전력량이 다르다.
- USB BC 1.2는 7.5 W
- USB Type-C 1.2는 15 W
- PD 3.0은 100 W
- PD 3.1은 240 W
이래저래 복잡해진 세상이다.
다음에는 썬더볼트 규격을 정리해 놓아야겠다.
R package build
nonparaeff 패키지를 처음 작성했던 게 아마 포닥을 하고 있을 때였던 것 같다.
혼자 쓰다가 CRAN에 업로드를 하고자 매뉴얼도 작성해서 Kurt에게 메일로 submission을 하면 Kurt가 CRAN으로 업로드를 하는 시스템이었는데, 이제는 자동 submission 시스템으로 바뀌어서 무척 편해졌다.
DEA 책을 쓰면서 자잘한 함수들을 몇개 더 만들고, 버그도 수정해 가면서 2013년에 0.5.8 버전을 만들고 그 이후는 귀찮아서 업데이트를 하지 않았다.
그 동안에 Kurt가 패키지 업데이트가 필요하다는 메일을 자꾸 보내왔다.
NAMESPACE를 작성해서 패키지를 수정하라는 것이었는데, NAMESPACE가 뭔지를 모르니 무시를 하곤 했다.
내가 패키지를 만들던 시절에는 매뉴얼에 NAMESPACE에 대한 내용이 없었거나 내가 귀찮아서 안 읽었거나, 둘 중의 하나인데.. 아무튼 NAMESPACE에 대해서 시간을 내서 공부하기가 싫었다.
저번주에는 Kurt에게서 최후 통첩이 날아왔다. Compind 패키지와 의존성 문제가 생기는 문제를 해결하지 않고 NAMESPACE를 작성하지 않으면 패키지를 CRAN에서 내리겠다는 내용이었다. 내 nonparaeff에 의존하는 패키지가 있다는게 살짝 기쁘기도 했지만, 어쨋든 매뉴얼을 새로 읽고 뭔가를 고쳐야 한다는 압박감과 귀찮음이 동시에 밀려오기도 했다.
할 수 없이 저번주부터 다시 R Packages라는 책을 띄엄띄엄 읽어가면서 고칠 부분을 조금씩 손을 봤다. Writing R Extensions 매뉴얼보다 더 친절하게 쓰여 있어서 읽기가 무척 수월하기도 했고, 무엇보다 이런 유용한 정보를 Wikibooks로 뿌려서 저자에게 고마운 마음이 들었다.
R 버전이 올라가면서 DESCRIPTION 파일의 i) Depends 항목을 될 수 있으면 쓰지 말아야 하며 Imports와 Suggests 항목이 그 역할을 대신하고, ii) NAMESPACE 파일에서 다른 패키지에서 꼭 필요한 함수들만 불러오는 방식으로 정책이 바뀌었다는 것을 드디어 알아냈다.
DESCRIPTION 파일에서 Authors@R 항목이 신설되었고 Author와 Maintainer 항목은 쓰지 않을 것을 권고하고 있으나, 실상 Author와 Maintainer 항목을 쓰지 않으면 에러가 발생했다.
Authors@R 항목으로 쓰려고 했지만 어쩔 수 없이 Author와 Maintainer 항목을 구분해서 작성했다.
예전에는 Author에 한명만 기록을 할 수 있었던 것 같은데, 이제는 여러명을 comma로 구분해서 쉽게 넣을 수 있게 되었다.
중간에 한글로 커멘트를 달아놓은 ar.dual.dea()함수는 뭔가 더 작업을 해야 할 것 같은데, 그 작업을 하기 귀찮아서 아예 패키지에서 삭제해버렸다.
CRAN에 submission을 하면 NOTE들을 해결하라고 몇번 빠꾸를 먹다가, 어제는 제대로 submission을 한 것 같아서 Francesco Vidoli에게 제대로 submission을 했다는 메일을 보내고 퇴근을 했다.
그러나 운전 중에 reverse dependency 문제가 발생했다는 메일을 받았다.
이런 것까지 내가 신경을 써야 할 필요가 있을까 짜증이 밀려왔지만, reverse dependency 문제를 보고하는 시스템이 있어야 패키지 작성자들이 제대로 패키지를 작성하게 된다는 결론에 이르러서 얼른 문제를 해결하겠다고 마음을 또 먹었다.
Compind 패키지의 NAMESPACE 파일을 살펴보니, ar.dual.dea() 함수를 사용하고 있어서 reverse dependency 문제가 발생한 것이었다. "소스코드를 다 뜯어볼 필요없이 NAMESPACE 파일만 보면 여러 문제가 해결되네. 이래서 NAMESPACE 파일이 필요한 거구나"라고 혼잣말을 하면서 R 개발자들에게 찬사를 보냈다. "역시 똑똑한 사람들은 설계를 잘 해"
집에서는 컴퓨터를 켜기가 싫어서 Vidoli에게 '내일 출근을 해서 롤백하겠다'고 메일을 보냈지만, 이 아저씨는 냉큼 ar.dual.dea()함수를 사용하지 않게끔 Compind 패키지를 재작성해서 submission을 한 것 같다.
오늘 출근을 하고 ar.dual.dea() 함수를 다시 집어넣고, DESCRIPTION 파일과 NAMESPACE 파일들을 손보고 다시 submission을 했다.
이번에는 에러가 발생하지 말기를 바라면서 이 글을 작성하고 있다.