텔레그램(Telegram) CLI를 사용하여, 자동으로 메시지 보내기

와탭은 사내 메신저로 Telegram (https://telegram.org/)을 사용하고 있습니다.

저희는 Telegram의 장점 중 아래와 같은 이유로 사용하고 있습니다.

  • 무료
  • 다양한 OS 및 장비 지원
  • 안정성
  • 자유롭고 빠른 이미지 및 파일 전송

 

20150925_Telegram_00

Telegram 경우, API 및 소스가 공개되어 있습니다. 이를 통하여 개발된, 오픈 소스 중 Telegram messenger CLI ( https://github.com/vysheng/tg ) 를 사용하여, 서버의 MySQL 데이터를 Telegram 연동해서 자동화 하는 예제를 작성해 보고자 합니다.

Telegram 가입

Telegram을사용하려면, 에 먼저 가입을 합니다.Telegram 모바일 앱이나, Windows 또는 Mac 프로그램을 사용하셔도 됩니다. 최초 사용이라면, 핸드폰으로 인증이 필수 입니다. 다음에 Telegram CLI를 설치할 때, Telegram 으로 인증 코드를 받아야 설치 할수 있습니다.

Telegram CLI 설치

Telegram CLI는 명령창 ( Command-Line Interface ) 에서 실행하는, 메신저 입니다. Telegram 을 Mobile 또는 PC 에 설치하듯이, 서버에 설치를 하도록 합니다. 여기서는 편의상 Database Server 에 같이 설치 하도록 하겠습니다. Database Server는 Ubuntu 14.04 를 사용하고 있다고 가정합니다.

소스 받기 :

빌드 툴 설치 :

빌드 :

텔레그램 인증 :

핸드폰 번호를 입력하고, 핸드폰으로 온 인증코드를 입력합니다.

CLI를 통해서 Telegram 에 로그인이 되면, Telegram 의 CLI 상태에 진입합니다.

Telegram CLI 명령 연습하기

CLI 명령어는 아래 문서에서 찾을수 있습니다.

https://github.com/vysheng/tg/wiki/Telegram-CLI-Commands

연락처 보기 명령:

다른 사람에게 메시지 보내기:

  • Tip 1. 이름과 성 사이의 띄워쓰기는 _ ( Underscore ) 를 넣어주시면 됩니다.
  • Tip 2. 수신인을 Group 으로 지정하면, 1번 메시지를 보낸것만으로 다량의 사용자에게 전달할수 있습니다.

CLI 종료

이로서 Telegram에 메시지를 보낼수 있는 준비가 다 되었습니다.

CLI 에 메시지 전달하는 스크립트 만들기

CLI는 매번 명령을 치고 화면을 보고 있으므로, 자동화에는 적합하지 않습니다.

단순한 메시지만 전달하고 종료하는 Bash Script 를 하나 작성해 보도록 하겠습니다.

Bash Script 작성하기 :

작성한 Bash Script 로 메시지 보내기 :

Python 으로 MySQL 데이터 조회하기

Python 개발 환경 설치 :

Python Code 작성 :

Python 으로 DB 정보를 조회하였습니다

조회한 데이터를 Telegram으로 보내도록 코드 수정

주기적으로 메시지 보내기 ( Crontab )

마지막 줄에 위와 같이 적으면, 3시간 마다 20분에 스크립트를 실행합니다.

맺음말

위 예제 코드에서는 3시간 마다, 서버의 DataBase 버전 정보를 Telegram으로 보내는 단순한 코드를 작성해 보았습니다.

20150925_Telegram_01

 

추가로 개발하면 할수 있는 것들

  • 좀 더 상세한 SQL 문 ( 예를 들면, 시간에 따라 변하는 가입자수 ) 을 작성한다면 메시지가 올때마다 데이터가 변화는 모습을 볼수 있을 것입니다.
  • 좀 더 많은 Python 코드를 작성한다면, 이미지 등도 전달 할수 있을 것입니다.

적절하게 수정해서, 주기적으로 서버의 상태를 조회하고 Telegram로 받아보세요.

감사합니다.

윈도우 메모리의 이해

워크스테이션이나 서버에 설치한 패키지에는 해당 응용프로그램들이 요구하는 최소 / 권장 사양이 있습니다. 서버의 원활한 작동을 위해 필요한 메모리 양을 계산하기 위해 요구사항만을 가지고 결정하는 것은 위험한 생각입니다.

반면, 메모리는 크면 좋다는 생각으로 비싼 비용을 지불하는 것도 문제가 될 수 있습니다. 서버 개발자나 관리자는 윈도우 서버의 메모리 사양을 확인하는 것은 물론 실제 필요한 메모리 상양을 체크하는 작업도 진행해야 낭비를 막을 수 있습니다.

우선 서버를 주문하는 시점의 메모리 선택은 들어가는 솔루션의 권장 메모리 사양의 2배 정도를 선정하고 실제 서비스를 돌리면서 최적의 메모리 크기를 만들어 가야 합니다. 이런 면에서 최근 아마존 Cloud 서비스들이 각광받는 이유가 만들어 지기도 합니다.

시스템 메모리가 충분하지 않으면 하드 디스크에 swap 파일로 정보를 swapping하므로 컴퓨터의 속도가 느려집니다. 윈도우에서는 이런 swap file을 “가상 메모리”라고 합니다.

윈도우 서버가 정보를 가상 메모리로 옮기고 다시 가져오는 과정에서 컴퓨터는 대기하게 됩니다. 이것은 하드드라이브의 I/O가 메모리보다 훨씬 느리기 때문입니다. 가상메모리를 사용하는 동안 CPU의 데이터 처리가 중단될 뿐 아니라 필요한 파일과 데이터를 가져오기 위해 디스크에 접근하지도 못하게 됩니다. 물리 메모리가 부족하여 가상 메모리를 사용하게 되면 서버의 성능은 그만큼 떨어집니다.

이런 문제를 찾아내고 해결하기 위해 Windows는 다양한 유틸리티를 제공하고 있으며, 이런 도구들을 사용하면 서비스에 필요한 메모리의 크기를 계산하고 가상메모리의 최적화도 진행할 수 있게 됩니다.

윈도우 버전별 메모리 지원 사양

해당 서비스를 구동하기 위해 필요한 메모리 사양으로 4GB 이상이 필요하다면 32bit 기반의 Windows 2000 Professional을 사용할 수 없습니다. 그렇기 때문에 윈도우 버전 별로 지원되는 메모리 사양을 알면 도움이 됩니다. 예를 들어 “Windows Server 2008 R2 Enterprise/Datacenter”는 메모리를 2TB까지 증설할 수 있습니다.

20150924_windows_memory_00

작업 관리자를 사용한 메모리 모니터링

윈도우는 메모리 사용을 추적할 수 있는 여러 가지 도구들을 제공합니다. 이런 도구들은 메모리를 사용하는 방법과 가상 메모리를 너무 많이 사용하여 병목 현상이 일어나는지 여부를 판단할 때 도움이 됩니다. 메모리 사용을 추적하기 위해 이용할 수 있는 가장 일반적인 도구에는 세가지가 있습니다. 바로 작업 관리자 (Task Manager)와 리소스 모니터(Resource Monitor) 그리고 성능 모니터(Performance Monitor) 입니다.

작업 관리자에서 메모리 사용을 모니터링 하려면 을 누른 다음 [작업관리자(K)]를 클릭합니다. [작업관리자] 대화 상자가 표시되면 [성능(Performance)] 탭을 클릭합니다.

20150924_windows_memory_01

작업 관리자를 통해 메모리 사용을 단기적으로 평가할 수 있습니다. 가상 메모리의 크기와 RAM 크기의 균형이 크게 어긋날 경우 시스템 메모리의 크기를 늘려야 합니다. 성능 모니터를 이용하여 컴퓨터의 메모리 사용을 장기적으로 검사할 수도 있습니다.

각각의 지표들은 다음과 같습니다.

20150924_windows_memory_02

  • 8.0GB DDR3: 제가 가진 노트북에는 4GB의 DDR3 메모리가 2개 꽂혀 있습니다.
  • 7.9GB: 실제 윈도우가 사용할 수 있는 메모리의 양을 보여줍니다. 디바이스가 점유한 공간이 있다면 빼고 표시하게 됩니다. 제 애플 노트북이 내장 그래픽 카드를 사용하기 때문에 내장 그래픽 카드가 점유한 100MB를 뺀 7.9GB를 보여주고 있습니다. 외장 그래픽 카드를 사용한다면 8.0GB로 표시됩니다.
  • 메모리 사용(Memory usage per second): 초당 메모리 사용률을 보여주고 있습니다.

20150924_windows_memory_03

  • 메모리 구성(Memory composition): 이것은 가상 메모리가 아닌 물리적인 메모리를 보여주는 것입니다. 3개의 파트로 이루어져 있으며 왼쪽 첫 번째 구역은 프로세스와 드라이버에 의해 사용되는 메모리를 보여주고 있으며 오른쪽 두 개의 영역은 사용 가능한 메모리를 보여주고 있습니다. 오른쪽 두 개의 영역 중 맨 오른쪽 공간은 Free 메모리 공간을 의미하며 실제로 사용 된 적이 없거나 이미 깨끗이 청소 된 메모리 공간입니다.
  • 사용 중(In Use): 전체 7.9GB의 메모리 공간 중 프로세스, 드라이버 또는 운영체제에서 3.6GB를 사용하고 있다는 것을 알 수 있습니다.
  • 사용 가능(Available): 전체 7.9GB의 메모리 공간 중에서 사용자 프로세스에 의해 비워질 수 있거나 이미 비워져 있는 공간이 4.3GB이라는 것입니다.

20150924_windows_memory_04

  • 커밋됨 (Committed): 가상 메모리와 물리 메모리의 합산입니다. 전체 9.6GB중에서 5.2GB를 사용하고 있습니다.
  • 캐시됨 (Cached): 프로세스, 드라이버 또는 운영체제에서 신속히 접근 가능한 메모리를 의미합니다. 이미 사용된 적이 있지만 필요하면 사용할 수 있는 메모리가 4.1GB라는 것을 알 수 있습니다.
  • Free memory: 사용된 적이 없는 언제든 사용할 수 있는 메모리 공간을 의미합니다.
  • 하드웨어 예약: 8.0GB의 RAM을 설치했지만 하드웨어가 91.7MB를 예약했기 때문에 7.9GB의 물리메모리를 사용할 수 있다는 것을 알 수 있습니다.

20150924_windows_memory_05

시스템이 초기화 될 때, 메모리 관리자는 커널모드 구성 요소들이 시스템 메모리를 할당하기 위해 사용하는 두 가지 종류의 동적으로 크기가 변하는 메모리 풀 공간을 생성합니다.

  • 페이징 풀 (Paged pool): 실제 메모리에서 제거되어 페이징 파일에 기록 될(page out)수도 있고 반대로 페이징 파일에서 실제 메모리로 올라올(Paged in) 수 있는 시스템 공간의 가상 메모리 영역입니다. 페이징 풀 메모리는 윈도우 운영체제와 장치 드라이버가 사용할 수 있도록 따로 비축한 메모리입니다.

어떤 이유로 인해 페이징 풀 메모리가 고갈될 경우 시스템 장치 드라이버 실행이 안 될 수 있으며, 결과적으로 해당 드라이버를 사용하는 프로그램에 여러 가지 문제가 발생할 수 있습니다. 이 오류는 32 비트 운영체제 또는 작은 양의 RAM 또는 권장 페이지 파일보다 낮은 양의 메모리를 사용하는 운영체제에서 자주 발생하는 오류입니다. 더 많은 프로그램, 운영 체제 서비스(안티바이러스, 방화벽 등), 장치(음성, 비디오, 네트워크 등)를 사용할수록, 페이징 풀에 할당된 메모리가 사용됩니다. 만약 할당된 메모리를 모두 사용하게 되면 드라이버 및 윈도우 자체에서 필요한 메모리 할당을 할 수 없게 됩니다. 이로 인해 성능이 저하될 수 있으며, 비디오가 느려지거나, 프로그램 강제 종료, 심각하게는 시스템 종료 및 블루 스크린이 발생할 수 있습니다.

  • 비페이징 풀 (Nonpaged Pool): 언제나 실제 메모리에 상주하여 어느 IRQL 수준에서나 어느 프로세스 컨텍스트에서나 페이지 폴트를 내지 않고 엑세스 할 수 있다고 보장된 시스템 가상 주소 영역입니다.

리소스 모니터의 메모리 탭

리소스 모니터는 Windows 7 및 Windows Server 2008의 새로운 기능으로 나온 프로세스와 서비스에서 시스템 리소스가 사용되는 방법을 이해하기 위한 강력한 도구 입니다.

리소스 모니터를 실행하는 방법은 명령 창에서 “resmon”을 입력하면 됩니다.

20150924_windows_memory_06

또는 작업 관리자 화면에서 리소스 모니터링 열기를 클릭하면 리소스 모니터가 바로 실행됩니다.

20150924_windows_memory_07

리소스 모니터를 사용하면 작업 관리자보다 좀 더 세밀한 지표들을 확인 할 수 있습니다. 프로세스 별 메모리 지표와 현재 메모리 상태를 한눈에 확인 가능한 좋은 도구이며 개발과정에서 작업중인 프로세스의 메모리 정보를 확인 할 수 있기 때문에 많은 도움이 됩니다.

우선 하단에 바 그래프를 보면 작업 관리자에서 설명한 내용과 미세하게 다른 것을 알 수 있습니다. 각각의 지표는 다음과 같습니다.

  • 하드웨어 예약: BIOS와 주변 장치용 일부 드라이버에 사용하도록 예약된 메모리 입니다. (하드웨어 예약 메모리 용량 = 설치된 메모리 용량 – 전체 메모리 용량)
  • 사용 중: 프로세스, 드라이버 또는 운영체제에서 사용중인 메모리입니다.
  • 수정한 날짜: 다른 용도로 사용하기 전에 콘텐트를 디스크에 기록해야 하는 메모리입니다.
  • 대기 모드: 사용 중이지만 그대로 파괴해도 상관 없는 메모리 영역입니다. 요구가 있다면 사용되지만 요구가 없다면 그 대로 파괴되는 대기 상태의 것이며 파일의 읽기 캐시랑 프로그램의 코드 캐시 등에서 이용 됩니다. 파일은 먼저 캐시에 읽혀지지만(대기모드로 된다) 여기서 데이터를 쓰면 ‘수정한 날짜’로 되고 게다가 이 데이터를 외부 디스크 등에 쓰면(flush 하면) 또 대기 모드로 됩니다. ‘여유’ 영역과 함께 ‘이용 가능’한 영역으로 분류 됩니다.
  • 여유: 중용한 데이터를 포함하지 않고 프로세스, 드라이버 및 운영체제에서 추가 메모리가 필요할 때 먼저 사용되는 메모리입니다. 여유 영역이 없다면 ‘대기 모드’를 사용하던가 ‘수정한 날짜’ 영역을 flush 해서 확보합니다. 그래도 부족한 경우라면 ‘사용 중’ 영역을 외부에 스왑 아웃 해서 확보한다.
  • 사용 가능: 프로세스, 드라이버 및 운영체제에서 즉시 사용할 수 있는 메모리 (대기모드 + 여유)
  • 캐시됨: “대기 모드”와 “수정한 날짜”의 합입니다.
  • 전체: RAM이 가진 물리적 용량에서 디바이스에 예약된 크기를 제거한 사용 가능한 메모리 공간을 의미합니다. 제 노트북은 내장 그래픽에 예약된 91.7MB를 빼야 하므로 8100MB가 나옵니다.
  • 설치됨: RAM이 가진 물리적 용량입니다. 제 노트북은 4GB가 2개 설치되어 있으므로 8GB (1024MB x 8 = 8192MB) 입니다.

여기까지 윈도우 기본 모니터링 도구를 사용하여 메모리를 분석하는 데 필요한 기본 지식들을 정리하였습니다. 윈도우는 성능 모니터 또한 제공하고 있지만 성능 모니터에 대한 이야기는 다음에 진행하도록 하겠습니다.

관련 정보

  • https://technet.microsoft.com/library/Dd878107#mainSection(Windows 2000에서의 메모리 사용 이해)
  • https://en.wikipedia.org/wiki/ComparisonofMicrosoftWindowsversions (Comparison of Microsoft Windows versions)
  • http://windows.microsoft.com/ko-kr/windows/what-task-manager-memory-columns-mean#1TC=windows-7 (작업 관리자 메모리 열의 의미)
  • http://sungtg.tistory.com/908 (윈도우 메모리사용에 대해 질문 좀 하겠습니다)
  • http://www.simpleisbest.net/post/2011/05/02/Virtual-Memory-vs-Physical-Memory.aspx (가상 메모리의 기본 개념)
  • http://rickardnobel.se/windows-server-2012-new-task-manager/ (Windows Server 2012: new Task Manager)
  • https://kr.battle.net/support/ko/article/starcraft-ii-paged-pool-memory (스타크래프트 II – 페이징 풀 메모리 문제)
  • http://jacking.tistory.com/776 (컴퓨터의 메모리 이용 상태를 자세히 알고 싶을 때 – 리소스 모니터)

아마존 Directory Service를 이용한 Domain Joined Windows 2012 R2 VM 만들기

Windows 2012환경에서 Application 대량 설치 및 업데이트 방법을 찾아보다 Active Directory로 join 된 테스트 환경을 설치해 보았습니다. 직접 VM을 이용해서 Domain Controller를 설정하지 않고 AWS Active Directory Service 를 통해 간편하게 테스트 환경을 구축 할 수 있었습니다. 몇가지 제약사항이 있지만 테스트 환경 수준에서는 충분히 빠르고 편리하게 작동하고 있습니다. Domain Controller를 생성하고 Windows 2012 R2 VM을 Domain Join상태로 생성하는 방법에 대해 적어보겠습니다.

1. AWS Directory Service란

IT 자원을 사용하는 모든 조직들은 사용자들을 추가 삭제하고 역활을 부여하고 접근을 통제하거나 서버/어플리케이션 등에 접근을 제어하기위해 사용자정보와 통제수단을 통합하여 도구화 하였습니다. Active Directory도 그런 솔루션중 하나로 다양한 IT자원과 변화하는 조직에서 높은 수준의 접근 통제에 들어가는 노력을 대폭 줄여줍니다. 하지만 중소 규모 조직과 IT자원을 보유하고 있다면 Active Directory를 구축하고 유지하는 노력이 부담으로 작용할 수 있습니다. AWS Directory Service는 몇번의 클릭으로 생성 및 설정이 가능해 Active Directory에 대한 지식이 없는 사람도 부담없이 사용할 수 있습니다.

2. AWS Active Directory 를 생성

AWS Directory Service 서비스에 접속하여 디렉토리를 생성합니다.

https://console.aws.amazon.com/directoryservice/home

Setup Directory -> Create Simple AD -> Form 에 아래와 같이 입력 -> Next -> Create Simple AD

VPC : {VPC 선택} Subnets : { 추가할 VM과 동일한 subnet 선택}

생성한 Directory 확인

Directories -> 위에서 생성한 Directory ID를 클릭

20150917_AWS-ActiveDirectory-ActiveDirectoryDetail

3. IAM Role 설정

AWS IAM 서비스에 접속하여 Role을 생성합니다.

https://console.aws.amazon.com/iam/home
1) Roles-> Create New Role -> Set Role Name -> Next
2) 리스트에서 Amazon EC2 Role for Simple Systems Manager 선택
3) AmazonEC2RoleforSSM 앞 체크박스 체크 -> Create Role

Amazon EC2 Role for Simple Systems Manager Role은 VM 생성시에 Active Directory의 설정을 확인하여 자동으로 VM을 도메인에 JOIN 합니다. 도메인 JOIN 을 별도로 설정할 필요가 없기 때문에 매우 편리합니다. 생성한 Role에 아래와 같은 policy가 붙어있는것을 확인할 수 있습니다.

4. Security Group 설정 및 VM 생성

AWS EC2 에 접속하여 Join된 Instance간 통신이 가능하도록 Security Group을 생성합니다.

https://us-west-2.console.aws.amazon.com/ec2/v2/home

Security Groups -> Create Security Policy -> Form에 아래와 같이 입력 -> Create

Inbound : VPC 내부에서 EC2 인스턴스들이 상호 통신가능하도록 VPC Private IP들에 대해 TCP/UDP 를 추가합니다. RDP를 포함하는 사용하는 적절한 서비스 엔드포인트를 추가합니다.

VM을 생성합니다.

1) Instances -> Launch Instance -> Microsoft Windows Server 2012 R2 Base 선택
2) 원하는 VM Spec을 선택 -> Next
3) 아래와 같이 Form을 입력합니다. -> Next

4) 원하는 스토리지 Spec 을 선택 합니다 -> Next
5) Tag설정을 합니다. -> Next
6) 4번의 앞에서 생성한 Security Group 을 선택합니다. -> Review and Launch
7) 기존 Key를 선택하거나 Key를 새로 생성 합니다. Active Directory Join 상태에서는 1번에서 입력한 Adminitorator password를 사용하기 때문에 양쪽다 차이는 없습니다.

도메인 조인 확인

1) 목록에서 EC2 Instance State가 running상태로 바뀌면 원하는 instance 를 체크한후 Connect 클릭 -> Download Remote Desktop File -> 1번에서 입력한 Adminitorator password 를 입력
2) Control Panel\System and Security\System 에서 Domain JOIN상태를 확인합니다.

20150917_AWS-ActiveDirectory-VmDomainJoin

3) Server Manager -> All Servers에서 생성한 모든 서버가 보이는것을 확인 할 수 있습니다.

20150917_AWS-ActiveDirectory-AllServers

 

마치면서

AWS에서 자동화된 Directory 설정 기능을 제공하면서 관련 지식이 없어도 15분 이내 Domain join된 VM들을 대량으로 만들 수 있었습니다. 직접 하나 하나 설정하던 것과 비교하면 엄청난 혁신임은 틀림 없습니다. 특히 사용자 등록 롤 설정을 쉽게 할 수 있게 되면서 윈도우서버를 대량으로 운영하는데 생기는 관리 부담을 줄이는 데 도움이 될 것 같습니다. 또 IAM 혹은 Onpremise Active Directory 와 연동되면 기존 사용자 설정을 중복하지 않고 설정할 수 있어 업무부하를 줄이는데 많은 도움이 될것 같습니다.

Dashboard UI Design

안녕하세요! 와탭의 UI 디자이너입니다. 그간 User Interface 디자인을 하면서 갖고있던 팁을 소개하고자 합니다.

대시보드는 하나의 화면에서 여러 정보들을 간단하게 요약하여 보여줍니다. 사용자가 필요한 정보를 빨리 찾을 수 있도록, 많은 정보를 다양한 시각화로 표현하여 이에 대한 의사 결정이나 조치를 취할 수 있도록 도와줍니다.

사용하는 템플릿에 따라 기본 내장되어 있는 대시보드가 있을 테지만 디자이너는 기본 대시보드에 만족해 하지 않고, 새로운 자기만의 그리고 컨셉에 맞는 UI를 구축하여 사용자 관점으로 대시보드를 만들고 싶어합니다.

하지만, 웹 페이지와 달리 대시보드는 어떻게 손을 대야할지 처음부터 망설여지게 됩니다. 아래와 같이 몇가지 팁을 보시고 대시보드 디자인을 한번 해보시길 바랍니다.

1. 웹사이트를 볼때 사용자는 제일먼저 컨텐츠 영역의 왼쪽에서 오른쪽으로 가로 읽기를 시작합니다. 이 행동은 보통 컨텐츠 영역의 제일위쪽에서 시작되며 F자 형태의 위의 가로줄에 해당하는 행동입니다. (Jakob Nielsen은 2006년)

대시보드 또한 이러한 경험을 토대로 디자인하면 좋습니다. 잘 설계된 대시보드는 왼쪽 상단에는 가장 긴급하고 중요한 정보를 배치하고, 낮은 우선 순위와 자주 변화하는 정보들을 하단영역에 배치 합니다.

20150917_001

 

2. 부적절한 시각화로 정보를 잘못된 메시지로 전달하여 사용자에게 혼돈을 줄수 있습니다. 아래 두개의 차트는 동일한 데이터를 보여줍니다.

최근 5개월동안의 판매율을 볼수 있는 차트인데, 원 차트로 표현된 차트는 범주와 차트를 따로 봐야하는 불편함을 초래합니다. 막대그래프를 통하여 한눈에 5개월간의 판매율을 그래프를 통해 한눈에 볼 수 있습니다.

정보를 시각화하기위해서는 적절한 차트를 사용하는게 중요합니다.

20150917_002

 

Source:www.ubiq.co

3. 대시보드는 많은 정보를 시각화 하고, 포장하여 사용자에게 주요정보를 강조하고, 정보의 관계들을 표현해야 합니다. 그러기 위해서는 색상을 통해 사용할 수있는데 사용자는 색상을 통하여 쉽게 정보를 스마트하게 알수 있습니다.

20150917_003

Source:www.ubiq.co

그림과 같이 그래프로 3개로 그룹화가 된것이 있습니다. 맨위에는 전체 판매통계 / 중간에는 제품 판매 통계 / 아래는 지역 판매 통계입니다. 이것을 색상으로 그룹화로 표현하여 정보들을 분류 할 수 있습니다.

4. 탭으로 서브 메뉴를 구성해보자. 웹사이트나 블로그를 돌아다니면 탭으로 구분된 메뉴를 종종 볼 수 있습니다. 탭으로 메뉴를 구성하다보면 가로나 세로로 나열된 정보를 작은 공간에 표시 할 수 있다는 장점이 있습니다. 그리고 사용자가 많은 페이지를 이동하지 않아도 한 화면에서 여러가지 정보를 볼수 있다는 장점이 있습니다.

5. 색상을 통하여 중요 정보를 강조하고 그룹화를 시키는 것은 가장 좋은 방법이지만, 너무 많은 색상을 사용하게 되면 사용자는 시각적으로 복잡함을 느낄수 있어 혼돈을 느낍니다.

20150917_004

20150917_004-1

똑같은 데이터를 가진 차트입니다. 첫번째에서 사용된 차트는 컬러로 새로운 정보를 주지 않습니다. 이런경우에는 사용자는 컬러를 사용하게 된 이유를 찾게되고 혼돈을 갖게됩니다. 우리는 여기서 갖아야 하는 정보는 최근 5개월 동안의 판매율만 알면 됩니다. 그럼 컬러를 단색으로 표현한 두번째 차트가 오히려 사용자에게 신속한 비교를 주어 정보를 쉽게 알게합니다. 차트의 성격을 정확히 파악하고, 색상을 적절하게 사용하는 것이 좋은 대쉬보드 디자인이라 할 수 있습니다.

6. 디자이너는 텍스트로 표현된 정보를 어떤 디자인으로 차트화를 해야하는지 고민도 많습니다. 차트 디자인은 여러가지가 있습니다.

6-1. Line charts는 날짜와 시간이 지남에 따라 보여주는 정보를 표현할때 가장 많이 사용합니다.

20150917_005

 

6-2. Bar and column charts를 사용하는 디자인은 나란히 값 정보를 비교할때 많이 사용합니다.

20150917_006-1

 

6-3. Basic (Layered) Area chart는 라인형 차트를 기반으로 합니다. 축과 라인 사이의 면적이 부피를 나타내는 색상으로 채워지는 차트입니다. 이 차트는 시간에 따라 변화의 크기를 강조하고 합계 정보를 확인하는데 사용할 수 있습니다. 예를 들어 시간에 따른 이익을 볼때 총이익을 강조할때 사용할 수 있습니다.

20150917_007

6-4. Single number card tiles는 대부분 상단에 모두 같은 크기로 가장 중요한 정보를 표현할때 사용합니다. 가장 중요한 숫자를 보여주고 싶을때 이러한 그래프는 가장 효과적입니다.

20150917_008

 

6-5. Combo charts는 라인차트와 막대차트를 결합한 차트입니다. 이 2개의 차트를 결합하면 좀더 빠른 비교를 사용자는 할 수 있습니다. X축 값은 공유하지만, Y축 값은 각기 다른 데이터를 통해 나열해 표현할 수 있는 차트를 말하며 흔히 혼합차트라고 합니다. 즉 하나의 차트 종류가 아닌 두가지의 차트를 표현하고, 캔버스 공간을 절약해주는 장점이 있습니다.

20150917_009

 

6-6. Doughnut charts는 원형 차트와 비슷합니다. 단일 카테고리 있는 값을 비교할때 사용합니다. 각 카테고리의 값을 퍼센트로 보여주게 됩니다.

20150917_010

 

by Goran Milovanovic6-7. Funnel charts는 순차적으로 연결 단계를 가지고 과정을 시각화하는데 도움이 됩니다. 주로 수익 매출 거래등을 계산할때 사용합니다.

20150917_011

20150917_011-1

 

6-8. Gauge charts는 목표를 향해 진행상황을 보여주는 차트입니다. 핵심성과 지표처럼 백분위 측정으로 나타내며, 단일 측정의 상태를 말합니다. 빠르게 이해할 수 있는 정보를 표시합니다.

20150917_012

 

by Justin Roberts

6-9. Maps은 주로 지도를 추상화시켜 보여주고 데이터와 지도와의 상관관계를 색상이나 라벨, 버블/패널등을 이용하고, 툴팁등을 통해 표현하는 것으로, 지도를 통해 데이터를 표현하는 차트입니다. 대표적인 사례로는 기상청의 날씨예보를 손쉽게 생각할 수 있습니다. 공공기간의 위치, 은행지점의 위치, 인구밀도..등등 최근의 데이터시각화 추세와 함꼐 많이 쓰이는 차트입니다.

20150917_013

20150917_013-1

 

6-10. Pie charts는 비율에 따라 분리된 표입니다. 각 부분은 수량을 각도와 면적으로 나타냅니다. 파이차트가 시각적으로 매력적인 것은 중앙각도와 원지름의 길이로 각각의 비율을 나타낸다는 것입니다.

5개이 이상의 항목을 넣지않아야 합니다. 작은 값을 구분하는것은 상당히 어렵습니다. 여러개로 나누어서 표현하게 되면 전달력이 떨어집니다. 필요하다면 수치가 작은것은 기타로 정리하여 표현하는것이 좋습니다. 복수의 파이차트로 비교를 하면 안됩니다. 나누어진 파트는 비교하기 어렵습니다.

또한, 합계가 100%인지 확인하여 사용하시기 바랍니다. 순서에 맞게 분리해야합니다. 그 순서는 2가지 방법이 있는데, 가장 큰 12시 지점에서 왼쪽. 두번째 큰값을 12시 지점의 오른쪽에 위치하여야 합니다. 나머지 값은 반시계방향으로 나열합니다. 나머지 방법은 가장 큰 값부터 12시 지점을 중심으로 시계 방향으로 나열합니다.

20150917_014

 

 

by Eric Atwell

6-11. Scatter charts는 여러개의 데이터 계열에 있는 숫자 값 사이의 관계를 표시하며, 2개의 데이터 관계를 나타내는 차트입니다. 일련의 데이터에 있는 값 사이의 연관성을 보여주는 차트라고 할수 있습니다.

20150917_015

 

by Ricardo Salazar

6-12. bubble charts는 거품의 크기로 데이터 값을 표현하는 차트입니다. 데이터의 비율 또는 양을 표시하여 비교할 수 있습니다.

20150917_016

 

by Gavin

20150917_016-1

by Lane Kinkade

6-13. Waterfall charts는 일련의 양수 및 음수값을 누적 효과를 표시합니다. 대부분 재무데이터와 같이 자금 유출입을 나타낼때 사용합니다.

20150917_017

20150917_017-1

 

제가 몇년간 디자이너로써 경험했던 대시보드 UI 디자인을 글로 써내려 보았습니다. 대시보드는 정확한 정보를 사용자에게 알려주는 또하나의 시각정보입니다. 사용자가 한눈에 알아 볼수있도록 정보들을 시각화 한다는 것은 쉬운일이 아니란것을 현재 디자인하면서도 알고 있습니다..

하지만 위에서 말한 몇가지 유의사항을 검토하여 사용자에게 정보를 쉽게 알려주고 빠른 시간안에 정보를 얻어가는 UI 디자이너가 되셨으면 좋겠습니다.

감사합니다.

Jekyll 윈도우에 설치해서 사용하기

안녕하세요 오늘은 Jekyll(제킬 이하 제킬)을 윈도우에 설치해서 사용해보 도록 하겠습니다.

먼저 제킬이 뭔지 궁굼해 보면 공식사이트에서 들어가 봤습니다.

http://jekyllrb.com/

  • Jekyll은 여러 형태의 텍스트와 소스들로 구성 정적 파일들을 웹사이트로 생성시켜주는 툴이다.
  • GitHub Pages 에서도 이용하고 있다.
  • 그래서 무료 블로그를 만들고 사용 할 수 있다. 뭐 이정도 인것 같습니다.

그러면 어떻게 쓰느냐 Quick-start guide 에 쉽게 나와있습니다.

하지만 뭔가좀 이상하네요 네 그렇습니다. 프롬프트가 윈도우에서 사용하는 것이 아닌 리눅스나 Mac을 사용해 보아야 하나봅니다.

아 좌절 전 윈도우쓰고싶어요….

그래서 준비했습니다. Jekyll 윈도우에 설치해서 사용하기


1. 필요한 것들

  • Ruby(ruby, DevKit)
  • Jekyll
  • Python(Setuptool,pip,Pygments)
  • rouge

Jekyll 은 루비 기반으로 돌아갑니다. 그래서 Ruby 가 설치된 장비가 필요합니다. 그리고 syntax highlighting 을 사용하기 위해서 Pygments가 있어야 합니다. Pygments 는 Python 기반으로 돌아가기 때문에 Python이 설치 되어 있어야 하고요.

그럼 본격적으로 설치를 해보겠습니다.


2. 루비(Ruby) 설치하기

제킬(Jekyll) 은 루비(Ruby)기반으로 돌아갑니다. 그래서 Ruby 와 Development Kit 을 함께 설치해야 합니다.

루비(Ruby) 설치

윈도우에서 루비를 설치하기는 쉽습니다. 루비에서 윈도우 관련 설치파일을 제공하고 있습니다. 파일은 루비 사이트에서 다운로드 받을수 있습니다.

http://rubyinstaller.org/downloads/

본인의 시스템에 맞는 파일을 다운로드 받아 설치 합니다.

20150911_jelky_install_01

 

저의 컴퓨터는 64비트 Windwos 7 을 사용하고 있으니 64bit 버전을 다운로드 받아 설치 하겠습니다.

설치할때 아래 옵션을 체크해서 설치하면 어느 경로에서든 ruby 를 실행할수 있습니다.

20150911_jelky_install_02

Development Kit 설치

이제 Development Kit 을 설치할 차례입니다. 본인의 시스템에 맞는 파일을 다운로드 받아 설치 합니다. 이 파일 역시 루비(Ruby) 사이트에서 다운로드 받을 수 있습니다.

http://rubyinstaller.org/downloads/

저는 편의상 아래 폴더에 파일을 설치해 놓겠습니다.

C:\RubyDevkit

그러면 이제 Devkit을 사용하게 초기화 해야합니다. 윈도우 CMD 창에서 아래 명령으로 초기화와 Ruby 와 Binding 을 해줍니다.

cd C:\RubyDevkit

ruby dk.rb init

ruby dk.rb install

아래와 비슷한 문구들이 나오면 정상설치 된것입니다.


3. 지킬(Jekyll) 설치하기

다음으로 지킬을 설치 하면 됩니다. 설치는 간단합니다. 루비(Ruby)의 gem 패키지 인스톨러를 용해서 설치합니다.

gem install jekyll

만약 UAC 가 켜있는 상태면 권한을 물어보니 설치를 진행하기위해서는 권한을 줘야 합니다.

아래와 같이 Done 이 나오고 명령프롬프트가 나타나면 정상설치 된 것입니다.

code blocks 사용을 위해 rouge 를 설치해줍니다.

gem install rouge

실행 결과는 아래와 같습니다.


4. Python 설치하기

이제 거의 다왔습니다. 지킬(Jekyll)에서 syntax highlighter를 사용하기 위해 Python을 설치 해줍니다. 다운로드는 아래 경로에서 받으시면 됩니다.

https://www.python.org/downloads/

저는 2.7 버전을 사용하겠습니다. (pip 는 따로 설치를 안해줘됩니다. Python 설치할때 자동으로 설치가 됩니다.)

윈도우 환경변수 설정

설치가 완료되었으면 환경변수가 정상적으로 설정되었는지 확인 합니다.

환경변후에 아래 경로를 추가해줍니다.

C:\Python27;C:\Python27\Scripts;

20150911_jelky_install_03

20150911_jelky_install_04

그러면 Python 과 pip 가 정상적으로 실행되는지 확인 해보겠습니다.

Windows CMD 창을 열어서 확인 해보시면 됩니다.

20150911_jelky_install_05

Python & pip 실행

환경 셋팅이 완료되었으면 정상적으로 Python 이 실행됩니다.

python

20150911_jelky_install_06

pip

20150911_jelky_install_07

Pygments 설치

syntax highlighting 을 사용하기 위해서 Pygments를 설치 해보도록 하겠습니다. 설치는 pip 로 설치하면 간단히 설치가 됩니다.

pip install Pygments

pip 실행이 안되는경우

가끔 pip 실행시 실행이 안되는 경우들이 있습니다. 실행이 안될경우 아래의 경우들을 살펴 보시기 바랍니다.

윈도우 계정이 한글로 된경우

20150911_jelky_install_08

pip 명령어 실행불가

만약 pip 가 설치되지 않았을경우는 설치를 다시 진행하시면 정상적으로 설치가 될것입니다. 설치가 완료된것을 확인은 pip.exe 파일이 파이선 설치경로의 Scripts 에 있으면 정상적으로 설치된 것입니다. 저는 Default 로 설치를 진행해서 아래 경로에 파일이 존재합니다.

C:\Python27\Scripts>pip.exe

Windows 계정이 한글로 되어있을 경우

영어로 계정을 새로 생성하고 컴퓨터 이름을 영어로 설정하면 정상적으로 실행이 가능할것입니다.

20150911_jelky_install_09


5. 제킬(jekyll) 실행하기

이제 설치가 마무리 된것 같습니다.

그럼 jekyll 을 실행해보겠습니다.

편의상 아래 경로에서 작업을 진행하도록하겠습니다.

mkdir C:\jekyll

jekyll 을 실행해보면 아래와같은 설명이 나옵니다.

jekyll

20150911_jelky_install_10

설명에 나온데로 jekyll serve 를 실행해보겠습니다.

jekyll serve

20150911_jelky_install_11

wdm 설치

자세한 설명이 나오는군요.뭔가 또 설치해야 한답니다.

네 wdm 을 설치 해야 할것 같습니다.

설치해보도록 하겠습니다.

gem install wdm

20150911_jelky_install_12

설치완료후 다시 jekyll serve 를 실행하면 정상적으로 실행이 될것입니다.

이제 웹브라우져를 열어서 127.0.0.1:4000 에 접속하시면 됩니다.

127.0.0.1:4000

20150911_jelky_install_13

jekyll serve 오류

만약 jekyll serve 실행 할때 아래와 같은 에러메세지를 보여주면

hittimes 를 재설치 하시면 됩니다.

gem 을 이용 hitimes 삭제 및 설치

gem uni hitimes

Remove ALL versions

gem ins hitimes -v 1.2.1 –platform ruby


6. 제킬(jekyll) 사이트 생성하기

이제 드디어 제킬 사이트를 생성해보도록 하겠습니다.

사이트 생성은 new 명령을 통해서 생성가능합니다.

blog 라는 폴더를 만들어서 생성하겠습니다.

jekyll new C:\Jekyll\blog

20150911_jelky_install_14

뭔가가 만들어진거 같습니다.

dir/w

20150911_jelky_install_15

환경설정하기

사이트가 만들어졌으니 환경설정을 해야 합니다.

위에서 설치한 syntax highlighting 기능과 UTF-8 을 사용가능하게하겠습니다. 설정파일은 _config.yml 파일입니다. 사이트가 생성된 Root 에 위치 하고 있습니다.

encoding: utf-8

highlighter: rouge

highlighter: pygments

20150911_jelky_install_16

그럼 다시 jekyll 을 실행하겠습니다. 실행을 하면 환경설정 및 초기 셋팅을 진행합니다.

jekyll serve

20150911_jelky_install_17

설정이 완료 되었으니 사이트에 접속해보겠습니다.

127.0.0.1:4000

20150911_jelky_install_18

아까와는 다른 화면이 나오네요. 뭔가 복잡한듯 하면서도 간단하죠?

지금까지 저희 와탭(Whatap)에서도 사용하고 있는 Jekyll 을 윈도우에서 사용하려면 어떻게 해야 하는지 에 대해서 알아 봤습니다.

기타 자세한 사항들은 공식 사이트 와 한글 사이트에서 확인 해보시기 바랍니다.

http://jekyllrb.com/

http://jekyllrb-ko.github.io/

감사합니다.