npm, yarn을 설치했다면, bootstrap theme 변경을 위한 초간단 테스트를 할 수가 있다.

#!/bin/bash  
mkdir bootstrap-customizing  
cd bootstrap-customizing  
yarn init -y  
yarn add bootstrap node-sass  
mkdir -p public/css  
yarn node-sass --recursive --output public/css \  
  --source-map true --source-map-contents true \  
  node_modules/bootstrap/scss

bootstrap은 scss로 관리되고 있으므로 yarn(npm)으로 받아다가 바로 컴파일 해 볼 수가 있다. 위의 예는 directory 만들고, 빠르게 node package 를 초기화한 다음, bootstrap과 node-sass 컴파일러를 받은 후 directory to directory로 scss 파일을 css로 바꾸는 방법이다.

unzip 을 구현해 볼까?

하는 마음이 들었다. 다 뻘짓이 되긴 할텐데, 동기는 이렇다. 윈도우에서 한글로 된 파일을 압축하면 맥에서 잘 풀리지가 않는다.

7z으로 풀어 볼까?

7z도 안되는군.

7z 옵션중에 charset을 지정하는게 있더라.

CP949를 넣어보니 안된다.

아, 이게 머라고, 2020년에도 고통을 받아야하나.

huffman coding 이런거 봐야하나. 그 테이블 튜닝을 하면 성능이 더 좋아지려나? 실리콘밸리의 파이드파이퍼는 대체 뭘 쓴 거지?

아 놔..

  1. self 2020.03.08 23:37

    혹시 unarchiver를 시도해보셨나요?
    https://macpaw.com/the-unarchiver

    • Coolen 2020.03.12 22:25 신고

      https://apps.apple.com/us/app/the-unarchiver/id425424353?mt=12

      이건가요?

  2. self 2020.03.20 00:06

    답이 늦었네요. 이미 해보셨을 것 같은데, 예. 맞습니다.

PostScript 를 공부할 일이 있다. 프린터에 사용되는 스크립트 언어인데, 좀 보다 보니 재밌는 스택 기반 언어로 되어 있다. (Forth가 그런 스타일의 언어였구나) 화장실 비치해 두고 조금씩 보는 책 중에 비트코인 프로그래밍 책이 있다. 여기에도 컨트랙이 스크립트로 되어 있는데, 스택기반언어란다.

어쩌다 동시에, 두 종류의 새 언어를 보는데 비슷한 형식이다. 이런 우연이?

비슷한 스타일의 언어를 동시에 보는 것은 재밌는 일이지. 그냥 그렇다고.

 

가끔, man page 보다가 끝내면 화면이 사라져서 내용을 계속 보고 싶은 경우 짜증날 때가 있잖수? man 이 내부적으로 less를 사용하는데….

export LESS_IS_MORE=1

해두면 아주 옛날 방식으로 less가 돌아가므로 man 종료시 마지막 페이지가 유지됨.

Javascript에서 하나의 배열에서 다른 배열로 원소들을 옮기는 것은 내장 명령어로 구현되어 있지 않다. 따라서 구현을 직접해야하는데, 다음과 같이 한다. src 배열에서 dest 배열에 원소를 추가하면서 옮긴다고 하면,



Array.prototype.splice.bind(dest,dest.length,0).apply(dest, src.splice(0));


splice 함수는 배열의 내용을 자르는 것 뿐 아니라 새로운 원소들로 대치하는 것도 가능하다.


splice(start-index, [length, [insert element1, [insert element2 ...]]])


와 같은 방식으로 사용한다. length가 생략되면 배열 끝까지를 나타내므로


src.splice(0)


으로 모든 원소를 잘라낸 뒤, 


dest.splice( dest.length, 0, element1, element2, element3, ...)


로 element1, element2, element3... 을 추가하는 방법을 이용한다.


원소의 길이가 정해지지 않았으므로 apply를 사용해서 임의의 길이를 넘기는 방법을 이용한다. (apply는 첫번째 인자로 this 객체를 받고 두번째 인자로 arguments 를 받는다.)


bind 명령은 this 와 argument를 미리 고정하는 함수를 되돌리므로 apply에 넘기기 전에 dest, length, 0을 bind하여 맨 마지막에 뭔가를 추가하는 함수로 만들어준다.


자세한 설명은 여기까지.


리눅스는 주로 까만 화면의 터미널로 사용하지만, 가끔은 X Window 응용프로그램을 사용해야할 때가 있다. (xcalc 랄지...) 난 리눅스를 데스크탑으로 사용하지 않으므로, X System 전체를 설치하지 않는다. 이런 상황을 해결하기 위해서 맥북에 X Window를 설치하고 ssh X portforwarding을 하면 되는데, 다음과 같은 방법으로 한다.

Linux 에서

1. sshd의 X11 포트포워딩을 허용한다.

$ sudo vim /etc/ssh/sshd_config

확인!


X11Forwarding yes

설정 파일 내용중 X11Forwarding yes 가 아니라면 고쳐주고 sshd를 재시작한다. 요즘 systemctl로 관리하므로,

systemctl restart sshd

MacOSX에서

1. X Window를 설치한다.

$ brew cask install xquartz

2. XQuartz의 tcp 접속을 허용한다.

$ defaults write org.macosforge.xquartz.X11 nolisten_tcp 0

3. DISPLAY 환경 변수를 설정하여 맥 터미널에서도 쉽게 접속할 수 있도록 한다.

export DISPLAY=:0

4. 접속!

$ ssh -X targethost




Promise 기반의 fetch 라이브러리의 최대 단점은, json으로 예상하고 parsing했는데, 오류가 생겨서 원문 text를 구해야하는 상황에서, 한 번 사용된 body라 다시 쓸 수 없다고한다.


그렇다.

리눅스의 실행프로세스의 환경변수는 /proc 파일시스템을 통해서 알 수 있다. 예를 들어 pid 1000번의 환경변수는 


cat /proc/1000/environ


로 확인 할 수 있다. 하지만, 이 결과는 변수간 구분이 잘 확인이 안된다. 변수간 구분을 '\0'으로 분리시켜 놓았기 때문이다. 실제 프로세스 메모리에서도 '\0'으로 구분되어 있고 이를 그대로 화면에 출력하는 것이다. 다음을 보자.


cat /proc/1000/environ | xargs -0 -n 1 echo


xargs 는 표준 입력을 명령의 argument로 전달해 실행해주는 함수인데, 이때 기본값은 공백을 사용하여 표준입력을 분리한다. 하지만 위와 같이 '-0' (zero) 옵션을 주면 구분자를 '\0'으로 하라는 뜻이며, '-n 1' 을 주어 하나의 인자마다 하나의 명령을 실행(여기서는 echo)하라는 의미가 된다.


사족으로 xargs의 -0 옵션은 find 의 -print0 옵션과 같이 사용하여 출력결과를 실행시에 적절하게 처리하는데 사용한다.

vimscript로 실행 파일을 만든다면, python이 흔히 그러하든 #!을 맨 앞에 두어


#!/usr/bin/env vimscript


echo 10 + 20


이런 식이 될 수 있다. 그럼 vimscript는 기존의 vim을 이용하도록 만들 수 있는데, 몇가지 옵션을 줘야한다.


  • Swap file (.sw*) 파일을 만들지 말 것 (-n)
  • 고전의 vi 모드로 동작하지 말 것 (-N)
  • Visual mode가 아닌 ex 모드로 시작할 것 (-E)
  • 시작시 조금 조용하게 시작할 것 (-s)
  • .viminfo 파일을 읽지 말 것 (-i NONE)
  • vim option 중 verbose 는 1로 두어 출력을 완전 끄지 말 것 (-c 'let &verbose = 1')
  • 본문을 source 하여 실행 할 것 (-c 'source %')
  • 맨 마지막에 개행을 두고 종료할 것 (-c 'echo ""', -c 'qa!')

#!/bin/bash


exec /usr/bin/env vim -n -N -E -e -s -i NONE -c 'let &verbose=1' -c 'source %' -c 'echo ""' -c 'qa!' -- $@


위와 같이 두 줄짜리 ~/bin/vimscript 파일을 만들어 실행 속성을 주면 되겠다.

iOS Simulator를 통해서 로그메시지를 보다가 다음과 같은 것을 만나면, Spam 성 로그 유발자로 지목되어 더이상 로그메시지를 화면에 표시 안해준다는 뜻이다.


LOG MESSAGE QUOTA EXCEEDED - SOME MESSAGES FROM THIS PROCESS HAVE BEEN DISCARDED


간단히 Simulator를 재시작하자.


  1. 소액결제 2017.12.04 06:37

    감사합니다 ~

+ Recent posts