spss (sav) file ↔︎ dta (stata) file

R의 foreign, haven, readstata13 패키지를 써서 sav 와 dta, R 사이를 오가는데, 나는 급하면 STATA를 쓴다. 그런데,, sav 파일의 variable label이 dta에 적용되지 않는 문제를 발견했는데, (국민건강영양조사, 줄여서 국건영) 데이터가 그랬다. 

그냥 multi cursor 를 써서 do file에 일괄 변환 하다가 이런 ReadStat 이라는 아이를 써보니 깔끔하게 잘 된다. 

컴파일 해야함. 

메모차 남김. 


babel을 이용한 자바스크립트 브라우저호환성 해결 cs

오래된 (<10) IE는 브라우저호환성 문제에서 천덕꾸러기다. 

const 나 let 같은거 쓰면 여지없이 망가진다. 오래된 표준을 사용하기 때문이다. MS가 패치를 하지 못하고 엣지나 그다음 아이를 내놔서 문제를 해결하려고 하는 걸 보면 어쩔수가 없는 모양인 것 같은데, 특히 한국은 여전히 오래된 IE를 쓰는 사람이 무시 못할 정도로 많아서 문제다. 

요즘 웹기반의 상호작용기능을 가진 oTree 기반 설문모듈을 만들다 보니 javascript 를 피할 수가 없는데, 보통 호환성 테스트를 하면 다른 곳은 다 괜찮지만 IE에서 막힌다. 이 문제를 해결하려면 요즘의 js 코드를 옛날의 (es2015) js 코드로 변환해줘야 한다. 그게 babel이라는 아이다. 

그리고 지금 쓸 내용은 미래에 또 IE때문에 당황할 나를 위해 현재의 내가 쓰는 편지같은 거다. 사실은 2019년 4월의 내가 2020년 6월의 나에게 아무런 편지도 쓰지 않아 2019년 4월에 했던 삽질을 2020년 6월에 또 했기 때문에 쓰는 글이기도 하다.


1. 불러 써야 할 js 함수나 클래스들을 모두 .js 파일로 한 폴더에 몰아넣는다. 그 폴더를 src 라고 부르자. oTree의 경우 _static 아래에 두면 좋다. 

2. babel 설치. 위치는 src 폴더의 부모 디렉토리가 적당. 설치하면 node_modules 폴더가 생김. 

$npm install --save-dev @babel/core @babel/cli @babel/preset-env

3. src 폴더의 모든 js 파일을 IE호환성에 맞게 굴리려면 이렇게 쓴다. 

$./node_modules/.bin/babel src --out-dir lib

4. lib 아래에 구식방식으로 변환된 js 파일들이 있으니 script 태그 호출할 때 lib 쪽에서 호출하도록 수정한다. 

<script src="{% static 'global/lib/extended_survey_kberi.js' %}"></script>




미래의 나에게: 이걸로 삽질을 덜 하게 되었다면 부디 댓글을 달아다오.

MacOS 커널패닉: userspace watchdog timeout: no successful checkins from.. mac

정말 오랜만에 글 쓴다. 

혹시 요즘 이런 식의 커널패닉을 겪는 맥유저들 계신지 모르겠다. 패닉 리포트의 첫 몇줄은 이런 식으로 시작한다. 검색해보니 공통점은 watchdog timeout 이고 세부 내용은 다들 조금씩 다르다. 

panic(cpu 2 caller 0xffffff7f86d8cad5): userspace watchdog timeout: no successful checkins from com.apple.logd in 120 seconds
service returned not alive with context : unresponsive dispatch queue(s): com.apple.firehose.drain-mem, com.apple.firehose.io-wl
service: com.apple.logd, total successful checkins since load (11770 seconds ago): 1166, last successful checkin: 120 seconds ago
service: com.apple.WindowServer, total successful checkins since load (11740 seconds ago): 1163, last successful checkin: 110 seconds ago

증상은 이렇다. 

1. 프로그램 사용중 (특히 파인더) 응답않는 상태가 발생한다. 
2. 한동안 타 프로그램들은 반응을 해주나 점점 아이들이 상대를 안해준다.
3. 화면멈춤상태에 진입후 얼마 안되어 블랙아웃되고, 맥 특유의 커널패닉 설명이 나온 뒤 리부팅된다. 

많은 사람들이 보고하고 있는 리포트인데, 시원한 해답을 찾지 못했다. 
심각하게는 온라인 수업 녹화중에도 한 번 이 일이 벌어져 시껍했었고 모든 사람의 십오분을 날리는 상황도 초래되었던 터라 이에 대한 해결법을 찾아왔는데, 최근에 하나 매우 신빙성 있는 글을 발견했다

구글 파일스트림과 스폿라이트가 일으키는 충돌이라는 것이다. 위 글대로 구글 파일스트림 루트 폴더를 스폿라이트 설정에서 제외 항목에 두면 이 문제가 사라진다. 최소한 아직까지는 발생하지 않고 있다. 
파인더 계열을 사용할 때 나타났던 적이 많고 내 주 사용 폴더중 하나가 구글 파일스트림쪽인 것을 생각하면 상당히 신빙성 있는 이야기이다. 

(근데 위 답글을 쓴 사람은 위 팁이 문제를 완화시켰을 뿐 해결한 것은 아니며, 결국 파일스트림을 삭제했다고 한다.. 일단 큰 기대는 하지 말고 두고보자)
* 나는 이 팁 적용후 5.25까지 5일동안 한번도 다운을 경험하지 않았다. 만세!


DOT@lofree 블루투스 기계식 키보드 리뷰 놀이동산


국내에 시판되기 전에 클라우드 펀딩하는 시점에서 지인과 함께 구매했다. 
블루투스이지만 유선 연결도 가능하며, 모바일 연결도 고려하고 있다. 

아기자기한 디자인도 괜찮아 보였고 미니배열에 넣기 힘든 화살표 키도 배치해서 괜찮아 보였다. 
아마도 키캡이 동그란 모양이라 속타에 적합하지는 않을 것이라 생각했었는데, 실제 써보니 정작 문제는 다른 곳에 있었다.

위 키배열만 보고는 감이 잘 안올 것이고, 나 역시도 사진으로 키배열을 보았을 때에는 짐작하지 못했던 점이니 통상적인 키보드의 배열을 한번 보도록 하자. 

출처: https://www.computer-hardware-explained.com/computer-keyboard-layout.html

각 손가락이 담당하는 구역의 키들은 살짝 우하향 하는 모양새로 배열되어 있다. 그런데 가만히 보면 Q의 왼쪽 위에 1이 있다. 그런데 이놈은 Q의 왼쪽 위에 1이 아니라 틸드(~)가 있다!!! 그래서 문자판이 있는 세 줄까지는 심한 오타없이 쓸 수 있지만, 숫자열이 있는 가장 윗열 (~1234.. 가 있는 열)에서 무심코 입력하다보면 2를 입력해야 하는데 1을 입력하게 되는 일이 발생한다. 

이건 시타만 해봐도 분명히 알 수 있는 일인데, 왜 시제품 단계에서 이 문제가 불거지지 않았을까?

이 글을 쓰다가 깨달았다. 많은 사람들이 숫자열은 외워서 입력하지 않고 보고 치기 때문이다. 아마도 내가 느낀 이 당혹감은 영타를 주로 쓰는 사람이나 두벌식 사용자들은 잘 못느낄 수도 있을 것 같다. 즉, 숫자열을 입력할 때에만 키보드를 보고 누르는 사람이라면 심각한 결함이 아닐 수 있다. 하지만 가장 윗열까지 외워서 치는 사람이나 세벌식 사용자처럼 숫자열에도 문자가 할당되어 있는 사람들에게는 치명적인 요소다. 

지금 이 글도 DOT 키보드로 작성하고 있는데, 숫자열 쪽을 입력할때마다 오타를 내고 있다. 

블루투스 연결이라던가, 제작사에서 홍보하고 있는 부분들은 모두 꽤 만족스럽다. 클릭 계열 기계식 스위치도 경쾌하고 타자기 같은 느낌도 난다. 문자열만 쓸 때에는 속타도 가능하다. 

하지만 나는 위와 같은 이유로 못쓸 물건이라는 결론에 도달했다. 

결론: 숫자열 보고 치는 지인에게 선물해야겠다;;

맥에 외장하드로 부팅되는 윈도우즈10 설치하기 (macOS Sierra) mac

새 맥의 SSD가 500G로 다소 부족한 가운데, 부트캠프를 쓸 필요가 생겼다. (라고 쓰고 게임을 깔고 싶다고 읽는다)

마침 사망하신 맥미니의 1T SSD가 놀고 있는 가운데, 딱히 썬더볼트와 USB3 외장하드의 퍼포먼스가 거의 차이 없다는 것을 알게 되었다. 그러면 1만원대에 문제를 해결할 수 있다. 


일단, 검색하면 나오는 많은 팁이 어떤 식으로든 윈도우즈 머신을 필요로 하는 경우가 대다수인데, 내가 찾은 팁은 그런 문제를 우회할 수 있었다. 

이거로 이틀을 삽질한 터라, 내가 어떤 팁을 사용하여 성공했는지라도 적어두어 조금이라도 누군가가 나처럼 삽질을 피했으면 하는 마음에 적어보는 것이다. 


** 이 팁은 Windows 8.1 도 적용 가능하다. 부트캠프를 쓰지 않고 win8을 설치하고자 할 때에는 media creation tool (미디어 생성 도구)를 사용해서 usb 플래시 드라이브에 설치해야 한다. (이게 은근히 검색이 안된다) ← 단, 이때는 윈도우즈가 필요하다. 

** 중간 과정에서 설치디스크에 installer.wim 대신 installer.esd 가 있는 경우가 있는데, 그 경우는 그냥 wim 대신 esd를 쓰면 된다. 



준비물

준비1. 설치 매개용 5G 이상의 USB 플래시 드라이브 혹은 외장하드 - 하드A 라고 부르자
준비2. 설치를 당할 외장하드 (USB3 - SSD 조합을 추천) - 하드B 라고 부르자.

맨 처음 참조했던 것은 이 글이다. 설치과정의 3단계까지 함께 한다. 




절차

1. macOS에서 부트캠프 어시스턴트로 왼도우즈 이미지를 하드A에 담는다. 윈도우즈 이미지는 ms 홈페이지에서 구할 수 있다. 

어차피 인증은 설치 후에 하므로 MS가 마음 편하게 이미지를 배포하는 것이다. 체크사항들은 할 수 있는 것들은 모두 체크하라. 

2. 끄고 부팅할 때 [option] 키를 누른다. 그러면 Windows 와 EFI 가 선택되는데, EFI를 선택한다. 

3. 잠시후 설정 화면에 들어오는데 여기에서 [shift]+[f10] 을 눌러 커맨드창을 연다. 

4단계 이후로부터는 원 글에서 해결하고자 했던 usb 하드로 인식해버려 설치 안되는 문제가 해결되지 않는다. 
오류 메시지는 이런 내용이다: 
"Windows cannot be installed to this disk. Setup does not support configuration of or installation to disks connected through a USB or IEEE 1394 port"
"이 디스크에 윈도우를 설치할 수 없습니다. 설치 프로그램에서 usb 또는 ieee 1394포트를 통한 연결된 디스크의 구성이나 설치를 지원하지 않습니다."

여기부터는 아래 링크의 팁으로 해결할 수 있었다. 적어도 내 경우에는 완벽하게 해결되었다. 


4. 우선, 전단계에서 열었던 커맨드 창에서 아래 명령어들을 실행한다. (위 링크의 것을 복사했다. 빨간색 부분에 자신의 SSD 용량을 적으면 되겠다. 작지만 4개의 파티션을 생성하니 그것을 제외한 사이즈로.)

커맨드라인에서 diskpart를 실행하고, 

list disk

select disk x (where x your disk number 0,1,2,3,... and so on)

clean (This will format the whole disk)

convert gpt

create partition primary size=350

format quick fs=ntfs label="Windows RE Tools"

assign letter="T"

set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"

gpt attributes=0x8000000000000001

create partition efi size=100
** NOTE: For Advanced Format 4Kn drives, change this value to size = 260 **

format quick fs=fat32 label="System"

assign letter="S"

create partition msr size=128

create partition primary size=256000
** NOTE: I've given 250GB Disk space to the drive where windows will be installed, change this value according to your disk size **

format quick fs=ntfs label="Windows"

assign letter="W"

create partition primary size=4096

format quick fs=ntfs label="Recovery Image"

assign letter="R"

set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"

gpt attributes=0x8000000000000001

**NOTE: I've a 500GB External hard disk and partitioned it accordingly. After this I get an unallocated disk space roughly say 245 GB which I can create a partition here using "create partition primary" or later after Windows installation using Disk Management. **

list volume

exit

5. 이렇게 파티션이 마련되었으면, 하드A에 있는 설치 정보들을 하드B의 적절한 파티션에 옮긴다. 이 역시 위 링크에서 복사한 것이다. 문자 assign이 정확히 되었다면 아래 명령어가 그대로 맞을 것이다. 단, C 같은 경우 연결된 하드들에 따라 D나 다른 문자에 할당되었을 가능성이 있으니 체크하도록 하자. 

md R:\RecoveryImage

copy C:\sources\install.wim R:\RecoveryImage\install.wim

cd X:\Windows\System32

dism /Apply-Image /ImageFile:R:\RecoveryImage\install.wim /Index:1 /ApplyDir:W:\

md T:\Recovery\WindowsRE

copy W:\Windows\System32\Recovery\winre.wim T:\Recovery\WindowsRE\winre.wim

bcdboot W:\Windows /s S: /f UEFI

W:\Windows\System32\reagentc /setosimage /path R:\RecoveryImage /target W:\Windows /index 1

W:\Windows\System32\reagentc /setreimage /path T:\Recovery\WindowsRE /target W:\Windows

6. 컴을 끄고 하드A를 떼어낸 뒤, [option]키를 누르고 하드B로 부팅하니 (Windows 만 보인다) 아무것도 묻지 않고 쭉 설치한다. 설치중에 몇 번 리부팅하는데, 난 별거 안눌러도 윈도우즈로 바로 넘어갔다. 혹시 macOS로 넘어가는 경우라면 [option] 키를 눌러 하드로 부팅하게 해줘야 한다. 

7. 다 설치하고 나면 장치 드라이버를 못잡는게 많은데, 이 상태에서 하드A를 연결하고 탐색기를 보면 Bootcamp라는 폴더가 있다. 거기에 있는 setup 을 실행하면 애플 드라이버를 설치한다. (부트캠프 어시스턴트 설치시 드라이버 옵션 체크하면 붙여주는 폴더다) 그 이후는 통상의 부트캠프와 같다. 정품인증하고 쓰면 된다. 


기타

사용OS: macOS Sierra (10.12.1) - Windows 10 pro edition
사용기계: MBP 2014mid

MBA2012mid 는 이 방법으로 설치단계까지는 무사히 갈 수 있으나, 비디오 드라이버가 최신 HD 4000 용으로 자동 업데이트 되는 순간 블랙아웃되어버리는 문제가 있다. 안전모드로 부팅시 멀쩡히 보이는 것을 확인했으므로 비디오 드라이버 문제임이 거의 확실한 듯하다. win10 부터는 자동 업데이트 옵션을 끄기가 어려운게 문제. 자동 업데이트 되기 전까지 네트워크를 끄고 다른 시도들을 해봐야 할 것으로 보임. 


** 추가

- 지금(Catalina 10.15.5, 2020.6.)도 이렇게 설치한 아이를 잘 쓰고 있다
- 다만, 업데이트가 어떤 부분부터 실패하고 있어 현재는 사실상 윈도우 업데이트가 정지된 상황. 1709였던가.. 
- 이것은 레지스트리를 변경해서 해결했었는데, 검색해서 알아냈던 것으로 기억한다. 에너지가 있다면 이것도 찾아보겠으나.. 혹시라도 이 문제 때문에 고생하시는 분이 있다면 댓글남겨주세요, 그러면 힘을 내보겠습니다. 

1 2 3 4 5 6 7 8 9 10 다음



twitter

Twitter

MathJax