기본 콘텐츠로 건너뛰기

7월, 2017의 게시물 표시

Windows에서 F1이 도움말로 작동하지 않도록 하기

STL container.emplace ...

C++11의 컨테이너에 emplace 시리즈 메소드가 생겼다. 요놈들은 뭐하는 놈들일까? 일단 내가 전혀 뜻을 모르는 영어단어라 사전을 찾아보니, '설치하다'라고 나온다. 이게 뭐여... 형태도 얄딱꾸리하게 생긴 녀석이다. template< class... Args > iterator emplace( const_iterator pos, Args&&... args ); 이렇게 생긴 녀석인데, 하는 일은 insert나 push_back/push_front 랑 비슷하다. 컨테이너에 원소 하나를 추가하는 일을 한다. 다만 기존 insert/push 시리즈는 넣을 객체를 caller에서 예쁘게 만들어서 전달하는데 이 과정에서 의도치 않게 임시객체가 뿅~하고 만들어지고 사라지는 부하가 생길 수 있다. 반면, emplace는 노드에 추가할 때, 주어진 인자(위에서 args)를 이용하여 객체의 생성자를 호출한다. 따라서 임시객체를 만들지 않거나, 임시객체 생성횟수를 줄여준다. 어지간한 경우에 emplace류가 insert/push류보다 빠르다고는 되어 있는데, effective c++이나 modern c++에서 찾아봐야겠다. 뭔가 함정이 있을 것 같은 느낌이 있달까. * Fundamental types(int, char, long ...)에게는 아무런 의미가 없다~

Bash Aliases

현재 개인적으로 사용하고 있는 ~/.bash_aliases 내용. [ $- != *i* ]] && return export TERM='screen-256color' export PATH=${PATH}:~/.local/bin export CXXFLAGS=-std=c++14 powerline-daemon -q POWERLINE_BASH_CONTINUATION=1 POWERLINE_BASH_SELECT=1 . /usr/share/powerline/bindings/bash/powerline.sh export EDITOR=vim alias apt='sudo apt' alias apt_info='apt-cache show' alias apt_qf='dpkg --search' function apt_instlist () { dpkg --list | tail -n +7 | awk '{print $2}' | sort -u } function apt_list () { apt-cache dumpavail | grep '^Package: ' | awk '{print $2}' | sort -u } function apt_r

전등 스위치 교체

한 두 달 전부터 작은 방 벽 스위치를 눌러도 불이 들어오지 않았다. 전세집이고 잘 사용하지 않는 방이라 그냥 두었는데, 갈 수록 심해져서 벽 스위치를 갈기로 했다. 다이소에서 2,000원에 2구 벽 스위치로 교체하기로 했다. 먼저 두꺼비집에서 두꺼비를 잡고 전등 스위치를 내리고, 절연장갑 끼고 땀 뻘뻘 흘리며 벽 스위치를 분해하기 시작했다. 생각과 다르게, 각 등마다 전선 2개 씩 연결하지 않고, 선 하나는 공용으로 쓰더라. 사진에서 빨간선이 공용으로 쓰이는 선이다. 아래 스위치에 파란선과 빨간선이 같이 들어오고, 빨간선에서 위 스위치 한 쪽으로 짧은 검은선으로 점프했다. 사진을 못 찍었지만, 다이소의 스위치는 한 쪽을 미리 내부적으로 점프해놔서, 위 사진처럼 검은 점퍼선이 필요 없다. 여차저차 연결하고, 두꺼비집 스위치 올리고 테스트 하고 잘 되는 것 보고, 다시 조립했다. 2,000원에 스위치 갈고, 전등 잘 켜지는 것 보니 속이 다 시원하네. 쩝.

이 블로그의 인기 게시물

Bash Array, Map 정리

Bash에서 Array, Map에 대한 정리. (매번 찾기 귀찮) 찾아보진 않았지만, Bash에서 Array든 Map이든 동일하게 Map(C++에서 Unordered Map)으로 동작하는 것 같다. 왜냐하면, Array의 Index가 연속하지 않아도 동작한다. 그저 Key가 0 이상의 정수인 Map이랑 비슷하게 동작한다. 예) 1, 2, 3, 9, 10 Array # 생성 declare -a empty_array declare -a ar=(haha hoho baba "long string haha hoho") # 접근 echo "ar[0]=${ar[0]}" echo "all as array=${ar[@]}" # 큰따옴표 안에서 각 원소를 따로따로 전달한다. echo "all as one=${ar[*]}" # 큰따옴표 안에서 각 원소를 문자열 하나로 합쳐 전달한다. echo "indexes=${!ar[@]}" echo "indexes=${!ar[*]}" echo "length=${#ar[@]}" echo "length=${#ar[*]}" echo "last=${ar[-1]}" echo "last=${ar[@]: -1}" # 콜론 뒤에 빈 칸이 꼭 필요하다. 옛 방식 # 현재 상황 declare -p ar #(출력) declare -a ar=([0]="haha" [1]="hoho" [2]="baba" [3]="long string haha hoho") ar[100]=hello # 인덱스를 건너 뛰어도 동작한다. declare -p ar #(출력) declare -a ar=([0]="haha" [1]="hoho" [2]="baba" [3]=&

설치한 패키지에서 RPM 추출하기

오래된 패키지를 관리할 저장소가 없어졌고, 기존 패키지로 다른 서버를 세팅해야할 일이 생겼다면 RPM의 리패키지 기능을 이용해보자. $ rpm -e --repackage [PACKAGE_NAME] 위와 같이 리패키지하면, /var/spool/repackage/ 에 생성한 RPM파일이 있다. :-)