2019년 3월 30일 토요일

4K 그리고 HDMI 2.0

기술이 발전하면서, 더 좋은 화질로 동영상을 볼 수 있게 되었다.

당연한 이야기겠지만,
동영상은 이미지 보다 더 많은 용량을 차지하므로,
더 많은 하드 용량, 더 빠른 네트워크, 더 넓은 대여폭 등등이 요구된다.

SD -> HD -> FHD -> UHD
구글링을 해보니, 위 순서대로 동영상 화질이 좋아진거 같다.

SD : 360p
HD : 720p
FHD : 1080p
UHD : 2160p

p는 pixel 을 위미하는 것이고,
360p는 세로 pixel 갯수가 360개로 이루어진 화면을 뜻하는 말이고,
720p는 세로 pixel 갯수가 720개로 이루어진 화면을 뜻하는 말이고,
1080p는 세로 pixel 갯수가 1080개로 이루어진 화면을 뜻하는 말이고,
2160p는 세로 pixel 갯수가 2160개로 이루어진 화면을 뜻하는 말이다.

(pixel : 화면을 구성하는 가장 기본이 되는 단위)

그 중에서 UHD가 사람들이 제일 관심있어 하는 화질이다.
화질이 제일 좋기 때문이다.
pixel 갯수가 많으면 많을수록 화질이 좋아지는건 당연한 것이다.

또한, 기업에서도 UHD를 지원하는 제품을 많이 출시하고, 홍보에 열을 올리고 있다.

잉? 그럼 4K는 뭐지?
4K는 UHD와 같은 의미로 사용되고 있다.

그러므로, 아래 두 문장은 같은 의미라고 보면 된다.
"이 모니터는 4K를 지원합니다."
"이 모니터는 UHD를 지원합니다."

※ 구글링을 해보니, 엄밀히 말하면, 4K는 UHD랑 다른거라고 한다.

위에서 2160p 라고 표시된것은,
화면이 16:9 비율이고 세로가 2160 pixel 이라고 한다.

비율을 사용해서 가로 pixel을 계산해보면 3840 pixel 이 나온다.

4K에서 K는 1000배를 의미한다.
우리가 일상에서 사용하는 단위 km 은 1000m 이다.
그리고 kg 은 1000g 이다.

그러므로 4K 는 4000 을 의미하는거지만,
컴퓨터 세상에서는 1000 은 1024 로 계산하므로,

4K는 4 * 1024 = 4096 pixel 을 의미한다.

결론적으로,
4K는 가로가 4096 pixel 을 의미하는 것이고,
UHD는 가로가 3840 pixel 을 의미하는 것이다.

요즘 그냥 통상적으로 같은 의미로 사용된다고 한다.


4K를 보려면 당연히 UHD(4K)를 지원하는 모니터 혹은 TV를 준비하면 된다.
그리고, 일반적으로 HDMI 케이블을 사용해서 보면 된다.

HDMI 케이블은 1.4 와 2.0 두 가지 버전이 있다.
외부 생김새, 모양은 동일하다.

그런데, 간혹, 쇼핑몰 같은 곳에서,
"UHD(4K)를 보려면 HDMI 2.0 을 구매하셔야 합니다."
하면서 케이블을 판매하는 곳이 있다.

이것은 틀린말이다.
1.4 와 2.0 둘다 UHD(4K)를 볼 수 있다.

다만,
1.4 는 30 프레임까지 볼 수 있고,
2.0 은 60 프레임까지 볼 수 있다.



프레임은 1초에 몇개의 화면이 지나가는지를 의미한다.

"1초에 30장? 엄청 빠르네. 근데 60장? 겁나 빠르네. 사람 눈으로 똑같이 보이지 않을까? 60장 너무 오버 아냐?"

아니다, 차이가 나긴 난다.
움직임이 부르럽다.

아무튼, 핵심은 UHD(4K)를 위해서 굳이 HDMI 케이블을 또 구매할 필요는 없다는 것이다.
집에 있는 HDMI 케이블로도 UHD(4K)를 볼 수 있다.

UHD(4K) 60프레임으로 보기위해서는, HDMI 2.0 케이블을 구매해야 한다.





https://www.trustedreviews.com/opinion/hdmi-2-0-vs-1-4-2913356
https://brunch.co.kr/@matt/153

2019년 3월 29일 금요일

협업 툴 Collaboration Tool

회사는 혼자서 일을 하는 조직이 아니다.
여러 사람들과 같이 협업을 하면서 조직이 굴러가는 곳이다.

그러려면, 회의도 해야 하고, 문서도 주고 받아야 하고, 스케줄도 체크해야 하고,
등등.... 구성원들과 서로 정보 교환해야 할게 너무 많다.

위와 같은 문제를 도와주는 프로그램을 "협업 툴"이라고 한다.

대표적인 협업 툴은 Atlassian 이라는 회사에서 만든
Jira,Confluence 가 있다.

그러나, 조금만 구글링을 해보면,
무수히 많은 협업 툴들이 존재한다는걸 알게 된다.

나열해 보자.
유료도 있고, 무료도 있다.

www.trello.com
www.meistertask.com
www.asana.com
www.freedcamp.com
www.slack.com
www.jandi.com
www.quip.com
www.realtimeboard.com
www.basecamp.com
www.blossom.co
www.instagantt.com
www.redmine.org
www.wrike.com
www.bitrix24.com
www.gantter.com
www.instagantt.com
www.kanbantool.com
www.weebly.com
www.realtimeboard.com
www.teamgantt.com
www.podio.com
www.redbooth.com
www.stackfield.com
www.mantisbt.org
.......
더 있다. 많다. 진짜 많다.

아마도 구글에서 위 협업 툴들을 검색하다보면,
고구마 줄기처럼 새로운 협업 툴들이 계속 나타날 것이다.

하나씩 사용해 보고, 자신에게 맞는거를 고르면 된다.
그런데.... 생각해보니 정말 무책임한 말같다.

하지만 어쩌겠는가,
뭐.....업무도 다르고, 사람마다 취향도 다르니..... 어쩔수없지 뭐.

만약, 프로그램 개발이나,
소스 코드를 관리하는 업무를 하는 경우라면,

gitlab 혹은 bitbucket 를 꼭 사용해 보기를 바란다.

source 관리도 해주고,
bug tracking 관리도 해주고,
암튼 좋다.

2019년 3월 19일 화요일

PostgreSQL src-backend-postmaster-autovacuum.c

click

PostgreSQL function-call-graph

click

PostgreSQL src-backend-main-main.c

click

Jenkins 젠킨스 Git 깃 연동 (2)

예제를 통해 실습을 해보자.

실습에 사용할 샘플 프로그램은 "youtube downloader" 이다.

이름 그대로 youtube 의 URL 을 통해 영상을 다운로드 하는 프로그램이다.

이곳에 가면, 소스와 설명을 살펴 볼 수 있다.
https://github.com/rg3/youtube-dl

"Clone or download" 을 클릭하면 git 주소를 얻을 수 있다.


사전에 먼저 필요한 패키지를 설치하자.
youtube-dl 을 컴파일하는데 필요한 패키지들이다.
% sudo apt-get install zip python pandoc

Jenkins 젠킨스에서 새로운 Item을 생성한 후, 아래처럼 설정한다.



설정을 완료되었으면, Build Now 를 클릭한다.


#1 은 작업 번호를 나타낸다.
#1 작업의 시작 시간을 클릭하면 세부 항목을 볼 수 있다.


Build 의 실제 진행 상황을 볼 수 있다.


Build 완료 후, 실행해 보자.


정상적으로 잘 수행되는걸 확인할 수 있다.
youtube-dl 사용법은 구글링해서 참고하면 된다.





출처
https://jenkins.io
http://jibak.tistory.com/11
http://jibak.tistory.com/12
http://ict-nroo.tistory.com/35
http://yookeun.github.io/tools/2014/09/18/jenkins-github
http://jojoldu.tistory.com/291

Jenkins 젠킨스 Git 깃 연동 (1)

Jenkins(젠킨스)와 Git(깃)을 연동해 보자.

새로운 Item 을 클릭한다.


새로운 Item 을 만드는 화면이 나온다.


Enter an item name 을 자유롭게 입력한 후,
Freestyle project 를 클릭한다.


"소스 코드 관리" -> "Git" 클릭한다.
"Repository URL" 에 소스코드가 들어 있는 git 주소를 입력한다.

주소는 ssh 로 시작하는 주소를 넣으면 된다.
왜냐하면 ssh 로 시작하는 주소는 authorized_keys 를 등록해 놓으면,
소스를 가져올 때 암호를 물어보지 않기 때문이다.


Git 주소를 입력하면, jenkins(젠킨스)는 접속 테스트를 시도한다.
authorized_keys 가 등록되어 있지 않다면, 에러가 발생한다.

Git 주소가 public 이면 상관없지만,
public 이 아닐 경우는 authorized_keys 를 등록해야 한다.


Git 주소 입력 후, Add 버튼을 클릭한다.


Credentials 를 추가하자.
Username, Description 은 적당히 넣으면 된다.
Password, ID 는 Git 에서 사용하는 계정을 넣으면 된다.


"Build" -> "Add build step" -> "Execute shell" 클릭한다.


이곳에서 빌드를 수행할 명령어를 입력 하면 된다.
일반적으로 ./configure; make; make install; 를 넣으면 된다.
./configure
make
make install

테스트를 위해 mk.sh 라는 쉘을 만들고 수행이 되는지 확인해 봤다.
./mk.sh

"저장" 을 클릭한다.

"Project Item 1" 화면으로 전환된다.
"Item 1" 은 위에서 설정한 이름이므로, 설정에 따라 다르게 나타날 것이다.


"Build Now" 를 클릭하면, Build 가 진행되고 있다는 내용이 표시된다.


#1 은 작업 번호를 나타낸다.
#1 작업의 시작 시간을 클릭하면 세부 항목을 볼 수 있다.


혹은, #1 작업 번호에 마우스를 갖다대면, 팝업 메뉴가 나타난다.


"Console Output" 을 클릭한다.


Build 의 실제 진행 상황을 볼 수 있다.


Git 서버로 부터 소스를 받아와서, mk.sh 를 수행하는 모습을 볼 수 있다.
위에서 mk.sh 대신에 ./configure; make; make install; 를 입력했다면,
소스 컴파일이 수행 되었을 것이다.

Git 서버에서 받아온 소스 파일 및 컴파일 파일들은
"/root/.jenkins/workspace/Item 1" 에 저장된다.

당연한 것이겠지만,
"/root" 는 jenkins 를 수행한 계정에 따라 달라지고,
"Item 1" 은 설정한 이름에 따라 달라지게 된다.





출처
https://jenkins.io
http://jibak.tistory.com/11
http://jibak.tistory.com/12
http://ict-nroo.tistory.com/35

Jenkins(젠킨스) 설치

Jenkins(젠킨스)는 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴이다.
CI(Continuous Integration) 툴 이라고 표현한다.

이게 무엇인고 하고 구글링을 해보니,
다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해주는 것이라 한다.

이건 또 무슨말인가.... 하고 구글링을 더 해보니,
옛날옛날에는 개발자들이 당일 작성한 소스들의 커밋이 모두 끝난 심야 시간대에,
build(빌드)를 실행하는 방식이 일반적이었다.

Jenkins(젠킨스)와 같은 CI(Continuous Integration) 툴이 등장하면서,
GIT, SVN 같은 버전관리 툴과 연동하여 소스의 커밋을 감지하면,
자동적으로 빌드가 작동되도록 하는 방식이다.

원래 허드슨 프로젝트로 개발되었고, 지금은 Jenkins(젠킨스) 이름으로 변경되었다고 한다.
이러쿵 저러쿵 내용이 많아서 여기까지 하고, 직접 사용해 보자.

Jenkins(젠킨스) 설치 전에 먼저 Java, Tomcat 이 설치되어 있어야 한다.

Java 설치는 여기를 참고하자.
Jenkins(젠킨스)를 다운로드 하자.
https://jenkins.io/download


지원하는 플랫폼이 많다.
Azure
Docker
FreeBSD
Mac
OpenBSD
openSUSE
Red Hat/Fedora/CentOS
Ubuntu/Debian
Windows
Generic Java package (.war)

플랫폼은 패키지 형태로 설치하는거고,
deb rpm msi pkg(mac) 형태로 제공하는거고,
docker 는 docker pull 명령어를 사용하는거고,
war 은 그냥 실행하는거다.

war 을 사용해서 실행하는 방식을 사용해 보자.
war 을 다운로드 한다.
다운받은 war 을 실행해 보자.

8090 포트번호로 서비스를 시작해 보자.
포트번호는 마음대로 할 수 있다.
% java -jar jenkins.war --httpPort=8090


뭐짓?
허가 거부..... 권한이 없다는 뜻인가 보다.
root 권한으로 실행해 보자.
% sudo java -jar jenkins.war --httpPort=8090

뭔가 메세지가 주루룩 뜨면서 마지막에 잘 되었다고 나온다.
Jenkins is fully up and running

(나중에 알게 된 사실인데, 특정 port 번호 이하는 root 권한이 있어야 한다.)
(8090 말고 10000 으로 하면 일반 계정으로도 실행할 수 있다.)

접속해 보자.
http://127.0.0.1:8090
아래처럼 나온다면 접속이 된것이다.


계속 진행하기 위해서는 password 를 입력해야 한다.
password 는 /root/.jenkins/secrets/initialAdminPassword 이곳에 있다.

파일에 들어있는 password 를 입력하자.
% cat /root/.jenkins/secrets/initialAdminPassword


plugin 을 수동으로 내가 선택해서 설치할 것인지,
많이들 사용하는 추천 plugin 을 자동으로 설치할 것인지 물어보고 있다.

suggested plugins 가 있으면 편리할거 같으니, 이걸 선택하도록 하자.


커피 한잔 하면서 기다리자.


관리자 계정을 생성하자.


안내문구를 잘 살펴보자.
만약 현재 URL 이 아닌 다른 URL 으로 변경하게 되면,
BUILD_URL 을 설정해야 한다는게 주요 내용이다.


start 하자


메인 페이지가 잘 뜬다.


마지막으로,
터미널에서 java 를 fore-ground 로 실행한 것을 back-ground 로 변경하자.
ctrl + z 를 누르면 java 가 suspend 된다.

back-ground 로 변경하자.
% bg


처음부터 & 를 사용해도 된다.
% sudo java -jar jenkins.war --httpPort=8090 &





출처
https://jenkins.io
http://www.moreagile.net/2014/01/jenkins-cicontinuous-integration-2.html

Ubuntu 16.04 에 Tomcat 톰캣 8 설치

Ubuntu 16.04 에 Tomcat 톰캣 8 을 설치해 보자.

% sudo apt-get install tomcat8


설치가 잘 되었는지 확인해 보자.
Tomcat 톰캣은 8080 포트를 사용한다.
http://127.0.0.1:8080


위 페이지가 나오는 root directory 위치이다.
/var/lib/tomcat8/webapps/ROOT/index.html




출처
http://nahosung.tistory.com/97
http://coding-factory.tistory.com/58
http://kurts.tistory.com/6

Ubuntu 16.04 에 Java 자바 8 Open JDK 설치

JAVA를 사용하기 위해 JDK를 설치해 보자.

JAVA는 OPEN JDK, ORACLE JDK 2가지가 존재한다.
ORACLE JDK는 유료이므로, OPEN JDK를 설치해 보자.

apt 명령어를 사용해서 간단하게 설치 가능하다.
% sudo apt-get install default-jdk


JRE만 설치할 수도 있다.
% sudo apt-get install default-jre


설치 완료 후, 버전을 확인해 보자.
% java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)

% javac -version
javac 1.8.0_171


java를 원활하게 사용하기 위해서는, JAVA_HOME 을 설정해야 한다
java 가 어딨는지 검색해 보자.

% which java
/usr/bin/java

심볼릭 링크로(symbolic link) 되어 있을테니, 원본을 살펴보자.
% ls -l /usr/bin/java
/usr/bin/java -> /etc/alternatives/java

다시 한번 확인해 보자
% ls -l /etc/alternatives/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

이번에는 심볼릭 링크가(symbolic link) 아니라 진짜 파일이다.

java 관련 환경 설정을 하자.
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASS_PATH=$CLASS_PATH:$JAVA_HOME/lib




출처
https://www.hostinger.com/tutorials/install-java-ubuntu
http://all-record.tistory.com/181

Oracle JDK , Open JDK 차이

http://jsonobject.tistory.com/395

https://www.baeldung.com/oracle-jdk-vs-openjdk

https://offbyone.tistory.com/288

https://www.lpcinc.co.kr/blog/java-유료-논쟁-oracle-jdk와-openjdk의-차이-정리

2019년 3월 18일 월요일

Firefox Send 출시 - 2019.03.12

2019.03.12 에 Firefox 브라우저를 관리하는 Mozilla 재단에서,
파일 전송 서비스를 만들었다.

서비스 이름은,
Firefox Send

파일을 웹브라우저를 통해서 업로드 하고,
링크를 생성하고,
다른 사람이 그 링크를 통해 다운로드 하는 방식이다.

네이버, 다음, 센드애니웨어 등등
대부분의 서비스들이 사용하고 있는 방식이다.

Firefox Send 에서 비회원은,
파일 크기가 1GB 까지만 전송 가능하고,
회원가입을 하면 2.5GB 까지 전송 가능하다.
더군다나, 무료!!!

아래 링크에 들어가면,
아주 자세한 내용을 볼 수 있으니 참고하면 된다. (영어로)

https://blog.mozilla.org/blog/2019/03/12/introducing-firefox-send-providing-free-file-transfers-while-keeping-your-personal-information-private

https://blog.mozilla.org/firefox/use-firefox-send-to-safely-share-files-for-free

무료니까 직접 사용해 봤다.


https://send.firefox.com 접속한다.


회원가입 or 로그인을 해본다.


메일함에 들어가서, 가입 확인 체크 링크를 클릭한다.


가입이 성공적으로 되었다.


구글 크롬 브라우저를 사용해서 접속하면,
상단에 "Firefox 브라우저 사용해보세요~" 라고 광고가 뜬다.


Firefox 브라우저를 사용해서 접속해 보면,
광고 메세지 표시가 나오지 않는다.


파일을 하나 선택해 본다.


여러개의 파일을 선택해서 upload 할 수 있다.


다운로드 횟수를 정할 수 있다.


다운로드 기간을 정할 수 있다.


실제로 업로드 속도가 얼마나 나오나 궁금해서 테스트 해봤다.


약 1MB/s 정도 속도가 나온다.


업로드가 완료되면, 다운로드 할 수 있는 링크가 생성된다.
이 링크를 다른 사람에게 전달하면, 해당 파일을 다운로드 할 수 있다.


링크를 클릭했을 때, 이런식으로 화면이 나타난다.


2.5GB 보다 큰 파일은 업로드 할 수 없다.



모바일에서도 작동한다.
별도의 프로그램 설치없이,
https://send.firefox.com 에 접속해서 사용 가능하다.
신기하다.


이제, 다른 사람에게 대용량 파일을 보낼 때, 고민이 사라졌다.



출처
https://send.firefox.com
https://blog.mozilla.org/blog/2019/03/12/introducing-firefox-send-providing-free-file-transfers-while-keeping-your-personal-information-private
https://blog.mozilla.org/firefox/use-firefox-send-to-safely-share-files-for-free

WinSCP 기부

나는 리눅스(Linux)를 많이 사용하는 편이다. 회사에서도 사용하고, 개인적으로도 사용하고 있다. 그러다 보니 자연스럽게, SFTP를 많이 사용하게 된다. 리눅스에서는 SFTP에 대해 기본적으로 이렇게 저렇게 잘 지원을 해주는 편인데, 윈도...