듀얼 이상의 모니터에서 각각의 모니터에 작업표시줄을 붙이고 싶을 때, UltraMon이란 프로그램을 많이 쓴다.
Free한, 아예 commercial free한 프로그램으로 ZBar를 사용하기도 하는 것 같다.
듀얼 이상의 모니터에서 각각의 모니터에 작업표시줄을 붙이고 싶을 때, UltraMon이란 프로그램을 많이 쓴다.
Free한, 아예 commercial free한 프로그램으로 ZBar를 사용하기도 하는 것 같다.
복사하기/붙여넣기를 하다보면 이전에 복사했던 걸 다시 붙여넣고 싶을 때가 있다.
Ditto(https://ditto-cp.sourceforge.io/)를 사용하면 된다. Ctrl + ‘ 을 누르면 이전에 복사했던 목록이 나온다.
라즈베리파이의 OS, Raspbian에서는 패키지를 제공하므로 매우 간단하다.
sudo apt-get install mediawiki
설치하면 apache2의 available configuration에 mediawiki라는 새로운 configuration(/etc/apache2/conf-available/mediawiki.conf)이 생긴다.
아래의 Alias를 풀어서 /mediawiki 로 접근해도 된다.
#Alias /mediawiki /var/lib/mediawiki
난 VirtualHost를 이용한다.
/etc/apache2/sites-available/wiki.dasomoli.org.conf
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName wiki.dasomoli.org
ServerAdmin dasomoli@gmail.com
DocumentRoot /var/lib/mediawiki
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/wiki_error.log
CustomLog ${APACHE_LOG_DIR}/wiki.access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
Include conf-available/serve-cgi-bin.conf
</VirtualHost>
이제 mediawiki configuration을 enable 하자
sudo a2enconf mediawiki
wiki.dasomoli.org site도 enable하자
sudo a2ensite wiki.dasomoli.org.conf
apache2도 reload하자
sudo service apache2 reload
이제 wiki.dasomoli.org에 접속해서 mediawiki 설치를 시작한다.
설치가 끝나면 LocalSettings.php 파일을 저장할 수 있는데, 이 파일을 /etc/mediawiki/LocalSettings.php 로 저장한다.
다시 wiki.dasomoli.org로 접속해보면. 설치된 위키를 볼 수 있다!
검색모드를 “정규 표현식(E)”로 두고,
찾을 내용에 “([0-9A-Fa-f]{2})”
바꿀 내용에 “0x\1, ”
MacOS에서는 TextWrangler,
Linux에서는 Kate를..
웹브라우저를 쓴다던가, Eclipse 같은 툴을 쓰면 이전 위치로 돌아가고자 할 때, Alt + ‘<-‘ 를 사용해서 돌아가곤 한다. 그러나 마이크로소프트 워드 문서를 볼 때는 이게 안먹어서 뭐려나 하고 찾아보니 다음과 같다.
Shift + F5: 이전 편집 위치(Editing position)
Ctrl + Alt + ‘Z’: 이전 커서 위치
긴 문서를 볼 때는 이 기능이 꼭 필요하다.
참고: https://superuser.com/questions/938328/is-there-a-keyboard-shortcut-to-return-to-previous-position
생활코딩에 Atom editor 사용법(https://opentutorials.org/module/1579)이 있길래, 보면서 몇가지 적는다. 적다보니, 내가 뭘 또 이런 것까지 적고 있나 싶긴 한데… ^^;;
<div>
<ul>
<li></li>
</ul>
</div>
<div></div> <p></p> <blockquote></blockquote>
<nav>
<ul>
<li></li>
</ul>
</nav>
<a href=""></a>
<a href=""></a> <a href=""></a> <a href=""></a> <a href=""></a> <a href=""></a> <a href=""></a> <a href=""></a> <a href=""></a> <a href=""></a> <a href=""></a>
<nav>
<ul>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ul>
</nav>
<nav id="navigation"></nav>
<li class="list"></li>
<a href="" target="_blank" title="asdf"></a>
<li><a href="">table</a></li>
<ul class="li item1"></ul> <ul class="li item2"></ul> <ul class="li item3"></ul> <ul class="li item4"></ul> <ul class="li item5"></ul>
Proxy를 쓴다던가 해서 인증서 오류 등으로 CERTIFICATE_VERIFY_FAILED 에러가 났을 때-중간에서 내용물을 MITM등으로 본다던가 하려고 하는 거겠지…-, 아래처럼 –trusted-host 옵션을 사용한다.
pip install pycurl –proxy PROXY_ADDRESS:PORT –trusted-host pypi.python.org
pip install selenium --proxy IP:PORT --trusted-host pypi.org --trusted-host files.pythonhosted.org
이걸 아예 계속 쓰려면 Windows 기준으로는 $HOME/pip/pip.ini 파일을 만든 후 다음과 같이 써준다.
[global]
proxy = http://12.26.226.2:8080
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
3초 뒤에 활성화된 윈도우를 캡쳐하는 방법.
$ scrot -d 3 -u ~/Pictures/filename.png
Raspbian에는 기본으로 설치되어 있으므로, 별도 설치가 필요없다.
참고: http://javacan.tistory.com/entry/raspberry-capture-program-scrot
https://github.com/mingrammer/git-tips/blob/master/README.md
.gitignore에 명시된 파일들 삭제하기라즈베리 파이로 DLNA 뷰어를 통해 동영상을 보려니 코덱 문제로 음성이 안나오는 것들이 있어서 minidlna-transcode로 트랜스코딩을 시도해 보았다. 결론만 말하면 실패. 컴퓨팅 파워 문제인지 툭툭 끊긴다.
원리는 설정된 특정 코덱을 사용하는 동영상은 보내기 전에 설정한 스크립트에서 ffmpeg를 통해 인코딩을 해서 쏘는 것으로 보인다. 설치하다보니 Debian에서 ffmpeg가 avconv로 이름이 바뀌었다는 것도 알게 됐다.
minidlna는 라즈베리안의 경우 현재 1.1.2버전을 apt-get으로 그냥 설치할 수 있다. 트랜스코딩없이 쓴다면 그냥 패키지 설치하는게 맘 편할 수 있겠다. 내가 시도한 방법은 소스 컴파일 설치이다.
먼저 git으로 clone해온다.
$ git clone -b transcode https://bitbucket.org/stativ/readymedia-transcode.git
컴파일에 필요한 패키지를 설치한다.
$ sudo apt-get install libexif-dev libjpeg-dev libid3tag0-dev libflac-dev libvorbis-dev libsqlite3-dev libavformat-dev libavutil-dev libavcodec-dev libmagickwand-dev autoconf autopoint gettext libav-tools libav-dev mpv
아래 패키지는 이름이 그럴듯해서 그냥 설치해봤는데 확실치 않다. mpv의 경우, mencoder가 또 저걸로 바뀌었대서 깔았는데, mencoder를 이용하진 않아서 잘 모르겠다.
$ sudo apt-get install libavcodec-extra libavcodec-extra-56 mpv
컴파일한다.
$ ./autogen.sh $ ./configure $ make
그럼 다음과 같은 컴파일 에러가 난다.
minidlnad-upnphttp.o: In function `SendResp_dlnafile': /home/pi/src/readymedia-transcode/upnphttp.c:2041: warning: the use of `tmpnam' is dangerous, better use `mkstemp'
tmpnam()이 위험하니까 mkstemp()를 이용하라는 거니까 찾아서 바꿔준다.
$ vi upnphttp.c
char tmp[L_tmpnam]; mkdtemp(tmp);
다시 컴파일하면 잘 된다. 설치를 sudo make install로 해줘도 되는데(사실 이렇게 한 후에 checkinstall을 사용했다-_-), 패키지를 만들어 설치하면 나중에 제거가 편하다. checkinstall이 없으면 설치(sudo apt-get install checkinstall)한 후에 아래 명령을 준다.
$ sudo checkinstall
아래와 같은 게 나오면 ‘Y’

아래와 같은게 나오면 난 MiniDLNA Version 2015-06-18 Compiled June 18, 2017 라고 입력했다.

그럼 아래와 같은게 나오는데, 여기서 3번, 버전만 숫자로 시작해야해서 아래처럼 2015-06-18 로 입력했다.

3 - Version: [ transcode ]
3 - Version: [ 2015-06-18 ]
2. 설정
이제 소스 내에 있는 설정 파일을 /etc/ 아래로 복사해서 설정을 시작하자.
$ sudo cp minidlna.conf /etc/minidlna.conf
sudo를 매번 입력하기 귀찮으니 sudo -i 를 입력해서 root shell로 작업하자.
# vi /etc/minidlna.conf
설정 파일에서 아래 “media_dir”, “friendly_name”을 각자 환경에 맞게 적자. “media_dir”은 예상하듯이, 미디어가 있는 경로, “friendly_name”은 DLNA 기기에서 나타나는 이름이다.
media_dir=V,/mnt/NAS/Videos friendly_name=DasomOLI DLNA
“audio_codecs”나 “video_codecs” 에 적혀있는 코덱에 해당하는 미디어 파일이 재생되면, 그 아래의 “transcode_audio_transcoder”혹은 “transcode_video_transcoder” 에 적혀 있는 스크립트를 실행한다. 원하는 코덱을 transcoding하고 싶다면 해당 코덱을 적어주자. 어떤 것을 적어야 하는지는 avconv -formats 라고 입력하면 찾아볼 수 있다.
transcode_audio_codecs=flac/vorbis/dts transcode_audio_transcoder=/usr/local/share/minidlna/transcodescripts/transcode_audio transcode_video_transcoder=/usr/local/share/minidlna/transcodescripts/transcode_video
transcoding 스크립트는 /usr/local/share/minidlna/transcodescripts/ 아래에 있다. 옵션을 변경하고 싶다면 해당 스크립트를 수정한다. 옵션을 변경하지 않더라도 수정을 해주어야 하는데 ffmpeg 대신 avconv를 사용해야 하기 때문이다.
# vi /usr/local/share/minidlna/transcodescripts/transcode_audio
#!/bin/sh SOURCE=$1 STARTPOSITION=$2 DURATION=$3 #ffmpeg -ss $STARTPOSITION -t $DURATION -i "$SOURCE" -loglevel quiet -acodec pcm_s16le -f s16le -ar 44100 pipe:1 avconv -ss $STARTPOSITION -t $DURATION -i "$SOURCE" -loglevel quiet -acodec libmp3lame -f mp3 -ar 44100 -ab 224k pipe:1
# vi transcodescripts/transcode_video
#!/bin/sh SOURCE=$1 STARTPOSITION=$2 DURATION=$3 avconv -ss $STARTPOSITION -t $DURATION -i "$SOURCE" -loglevel quiet -threads auto -async 2 -target pal-dvd pipe:1
# vi transcodescripts/transcode_video-hq
#!/bin/sh SOURCE=$1 STARTPOSITION=$2 DURATION=$3 avconv -ss $STARTPOSITION -t $DURATION -i "$SOURCE" -loglevel quiet -threads auto -async 2 -vcodec mpeg2video -b:v 20000k -f mpegts pipe:1
위와 같이 ffmpeg가 적힌 곳에 avconv를 써주면 된다.
이제 실행하려면 다음과 같이 한다. -R 옵션은 DB update를 해주는 거니까 매번 하진 말자.
/usr/local/sbin/minidlnad -R -f /etc/minidlna.conf
3. 자동 실행
매번 위처럼 실행하긴 귀찮으니까, 부팅될 때마다 자동 실행 되도록 하자. /etc/init.d/안에 minidlna 파일을 새로 생성해서 아래와 같이 내용을 채운다. Process가 2개 되는 경우가 보여서 참고로 보았던 글에 있는 스크립트를 좀 수정했다. 잘안되면, 뭐 또 수정해야지..
# vi /etc/init.d/minidlna
#!/bin/bash
# Mini DLNA
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
case "$1" in
'start')
/usr/local/sbin/minidlnad -f /etc/minidlna.conf
echo Started
;;
'stop')
PIDS=`/bin/pidof minidlnad`
if [ "${PIDS}" != "" ];
then
for PID in ${PIDS};
do
kill -SIGTERM ${PID}
done
else
echo Already Stopped
fi
;;
'restart')
PIDS=`/bin/pidof minidlnad`
if [ "${PIDS}" != "" ];
then
for PID in ${PIDS};
do
kill -SIGTERM ${PID}
done
fi
/usr/local/sbin/minidlnad -f /etc/minidlna.conf
echo Restarted
;;
'status')
PID=`/bin/pidof minidlnad`
if [ "${PID}" != "" ];
then
echo Running. Process ${PID}
else
echo Stopped
fi
;;
'rescan')
PIDS=`/bin/pidof minidlnad`
if [ "${PIDS}" != "" ];
then
for PID in ${PIDS};
do
kill -SIGTERM ${PID}
done
fi
/usr/local/sbin/minidlnad -R -f /etc/minidlna.conf
echo Rescanning
;;
*)
echo "Usage: $0 { start | stop | restart | status | rescan }"
;;
esac
exit 0
위 파일에 실행 권한을 주자.
# chmod a+x /etc/init.d/minidlna
실행되도록 rc.d를 업데이트 하자.
# sudo update-rc.d minidlna defaults
참고:
https://www.htpcbeginner.com/install-minidlna-on-ubuntu-ultimate-guide/