태블로 대시보드 화면 전환 상황판을 위한 크롬 익스텐션

들어가며

대시보드 여러 장을 돌려가면서 사용할 일이 있습니다. 예를 들어 대한민국 일자리 상황판이나 제조 현황판, 코로나 상황판 이런 것들이 될텐데요, 한 번에 여러개의 KPI를 한 곳에 모아놓은 종합 대시보드를 만들어서 그것을 볼 수도 있겠지만 여러개의 KPI별로 만들어진 대시보드 여러장을 돌려가면서 살펴볼 수 도 있습니다.

대시보드의 데이터 갱신을 위해 지금까지 사용해온 방식은 몇 가지 있고 그 중 하나는 크롬의 익스텐션을 이용하는 것입니다. 처음 들어보시는 분도 있겠지만 크롬 브라우저의 기능을 강화해주는 브라우저에 설치하는 보조 프로그램이 익스텐션이라 할 수 있습니다.

이번에는 데이터 갱신 뿐만 아니라 몇 개의 화면을 로테이팅 할 필요가 있어서 그런 익스텐션을 찾아보았습니다.

탭-로테이트 크롬 익스텐션

탭-로테이트라는 익스텐션을 소개합니다. 몇 가지 익스텐션을 테스트해 보면서 가장 필요한 특징은 다음 세 가지 정도였는데요 아래에서 설치하면서 확인해보겠습니다.

  • Full Screen이 지원되어야 한다
  • 사전 로딩이 지원되어야 한다.
  • 화면 및 동작 정의가 편리해야 한다.

먼저 설치는 통상의 크롬 익스텐션 설치 방법을 따르면 됩니다. 혹시라도 망분리 등으로 오프라인 설치 방법이 필요하신 분은 [여기]를 클릭해서 내용을 참고하시기 바랍니다.

https://chrome.google.com/webstore/detail/tab-rotate/pjgjpabbgnnoohijnillgbckikfkbjed

설치는 [Chrome에 설치] 버튼을 눌러서 하게 됩니다. 확인을 해서 설치해 주게 되고요.

필요한 탭을 열어 놓은 상태에서 실행 버튼인 [▶]을 눌러주게 됩니다. 기부를 권유하는 창이 뜨는데 관심 있는 분은 기부도 좋지 않을까 생각합니다.

플레이/pause버튼을 우 클릭하여 [옵션]을 열면 텍스트 에디터가 나옵니다. 코드라고 무턱대고 겁먹지 마시고요 내용을 살펴보겠습니다.

  • URL목록이 보이고
  • duration은 유지 시간입니다.
  • tabReloadIntervalSeconds 는 해당 탭을 리로드 하는 타이밍입니다. 데이터가 가끔씩 한 번 바뀌는 경우에는 인터벌을 크게 놔도 좋을 듯 합니다.
  • 최상단에도 옵션이 있는데 fullscreen, autoStart는 단어만으로 의미를 아실 듯 합니다.
  • lazyLoadTabs은 탭이 열리기 전에 미리 url을 로딩한다는 의미로서 화면 로딩시간이 느린 페이지의 경우 다른 페이지가 사용자에게 보여지는 동안에 미리 url을 로딩하기 때문에 모래시계가 보여지는 시간을 최소화 해줍니다. 가장 중요한 기능 같습니다.

옵션 설정해주기

한편 태블로 화면의 경우에는 서버 url을 그대로 사용하셔도 되고요, 혹은 url의 끝부분에 .pdf, .png를 붙여주게 되면 pdf나 이미지로 로딩되게 됩니다. 위의 lazyLoadTabs 기능으로 인해서 직접 로딩을 해도 되는지 판단이 필요할 듯 합니다.

샘플을 아래에 붙입니다.

{
“settingsReloadIntervalMinutes”: 1,
“fullscreen”: true,
“autoStart”: true,
“lazyLoadTabs”: true,
“websites”: [
{
“url”: “http://lgpoc.planit.ai/#/views/1/1?:iid=3”,
“duration”: 10,
“tabReloadIntervalSeconds”: 15
},
{
“url”: “http://lgpoc.planit.ai/#/views/1/2?:iid=3”,
“duration”: 10,
“tabReloadIntervalSeconds”: 15
},
{
“url”: “http://lgpoc.planit.ai/#/views/1/3?:iid=3”,
“duration”: 10,
“tabReloadIntervalSeconds”: 300
},
{
“url”: “http://lgpoc.planit.ai/#/views/1/1_1?:iid=3”,
“duration”: 10,
“tabReloadIntervalSeconds”: 15
}
]
}

태블로는 뷰의 url을 로딩하면 인터렉티브한 태블로 화면이 나타나게 되고요, url뒤에 pdf나 png를 붙이면 pdf나 png가 로딩되게 됩니다.

제가 테스트를 해보니 일반 인터렉티브 화면의 경우 아래 그림과 같이 테두리를 자동으로 없애기가 어려웠습니다. [전체 화면] 버튼을 눌러도 리로딩할 때 자꾸 원상태로 돌아가더라고요.

이미지를 로딩하게 되는 경우에는 아래와 같고, 이미지의 사이즈도 지정하실 수 있습니다.

?:size=3000인 파라미터를 붙이게 되면 아래 그림처럼 폭이 3000인 이미지가 로딩됩니다. 이 로테이션을 운용할 장비의 해상도를 확인해서 원하는 사이즈로 이미지를 다운로드 받으시면 되겠습니다.

응용

이미지 사이즈가 다르거나 혹은 제목 등을 넣고 싶다면 위 url을 html페이지를 만들어 내장시키면 됩니다. 위 url 대신 로컬 html을 로테이션 시키는 것입니다.

https://help.tableau.com/current/pro/desktop/ko-kr/embed_ex_img.htm

예를 들어 NOTEPAD혹은 에티터를 열어 page1.html을 만든 다음 아래와 같은 코드를 내장시킵니다. 이와 같은 페이지를 page1, page2, page3로 만들어 로테이션을 시키게 됩니다.

이 경우 이미지가 스크린 사이즈랑 딱 맞지 않는 경우 height혹은 width 중 하나만을 100%로 놓아야 이미지 비율 왜곡이 생기지 않게 됩니다. html 샘플은 [여기]를 클릭해서 다운로드하세요.

마무리

전반적으로 원하는 기능은 전부 있었습니다만, 사람이 어느정도 기능이 지원되면 또 욕심이 생기는지라 하면 전환간에 부드러운 전환은 안되는가 하는 욕심도 슬며시 생겼습니다. 1) smooth하게 탭을 전환해주는 익스텐션이 있을까 하는 생각과 함께 2) 오픈 소스이니 소스를 고치는 것도 방법이 아닐까 했습니다. (물론 folk를 내는 순간 업데이트는 포기해야 하겟지요)

이번에는 이 정도로 일단 마무리하려고 하는데요, 간이하게 대시보드로 상황판이 필요한 분들에게 도움이 되시기 바랍니다.

추가팁 – 잘되는 익스텐션 복사하기

혹시 잘 운용되고 있는 크롬의 익스텐션을 복사할 수 있을지 확인해봤는데 그것도 가능합니다.

먼저 사용자 계정별로 익스텐션을 설치하게 되므로 그 디렉토리를 찾습니다. 요령은 아래의 커맨드를 주소창에 붙여 나온 결과값을 보고 폴더의 위치를 확인합니다.

chrome://version

이것을 누르게 되면 이런 이미지를 볼 수 있습니다. 여기서 프로필 경로가 가장 중요합니다. 드래그하여 복사를 해주세요.

(윈도우+E 버튼을 눌러) 탐색기를 켜준 주소창에 위 주소를 붙여넣어 다음 해당 폴더로 이동하여 Extension폴더로 들어갑니다. 프로파일은 크롬의 사용자 추가시마다 일련번호를 붙여서 숫자가 늘어나는 듯 했습니다. 위의 프로필 경로가 가장 확실한 방법입니다.

익스텐션 폴더에 들어가면 여러 익스텐션이 있는데 이게 또 암호입니다.


어떤 폴더를 복제할지는 확장 프로그램 관리로 가봐야 합니다. 여기에 개발자 모드를 켜서 프로그램 아이디를 확인하시거나 혹은 해당 익스텐션의 [세부정보]를 눌러 들어가면 주소창에 프로그램 아이디가 보입니다.


여기서는 pjgjpabbgnnoohijnillgbckikfkbjed 이므로 이 이름으 가진 폴더를 찾으면 됩니다.

이 폴더를 압축하여 zip파일을 만들어 필요한 사람에게 전송하면 되겠습니다.

 1,865 total views,  1 views today

태블로 화면 오토 리프레시 총정리

디노입니다. 화면의 자동 갱신 (데이터 갱신도 마찬가지)을 물어보시는 분들이 많습니다. 며칠전 질문에 답변을 한 김에 정리해보았습니다.

1. html 메타 태그

html혹은 웹페이지에 임베딩한 경우에 유용한 방법입니다. 방법은 웹에서 쉽게 구글링 가능한데 html페이지에 아래 검정색 부분의 meta태그를 추가하는 방법입니다. (링크) 이해가 간단하고 조작이 쉽죠. 임베딩한 경우에만 유효하다는 단점이 있습니다.

<meta http-equiv=”refresh” content=”5″ />

2. 페이지 자체를 리프레시하는 크롬 익스텐션

요즘 많이 사용하고 있는 크롬 브라우저는 익스텐션이 있습니다. 여러가지 브라우저의 활용을 극대화하는 추가 기능일텐데요, 많은 개발자들이 재미있는 기능들을 익스텐션으로 개발하여 공유하고 있습니다. 크롬 전용이라는 제한은 있지만 현실적으로 동작합니다. 이와 유사한 개념은 파폭이나 ie에도 있을 듯 합니다. 개인적으로는 복잡할 것 없고 소스의 수정 또한 없으며 또 자동 리프레시를 원하는 경우가 대부분의 경우 전시용도가 많을 것이므로 누가 건드릴 일이 없는 화면일 것이라 이 방법을 추천드립니다.

https://chrome.google.com/webstore/search/auto%20refresh

유사한 응용 방법으로 전시회 등에서 특정 몇 개의 태블로 화면을 몇 초 간격으로 계속 돌려서 전시해야 하는 경우에도 무척 우용합니다.

3.  태블로 리프레시 크롬 익스텐션

Refresh Tableau Extension
검색을 이런 딱 맞춤으로 태블로 용으로 개발된 크롬의 익스텐션으로 나온 제품도 있네요. 다만 다운로드는 40건에 불과하고 평가가 없고, 안써봐서 모르겟음. 물론 대세는 아래의 익스텐션입니다.

4. 태블로 익스텐션

오픈 소스 좀 있습니다. 1) uiNamespace 리프레시 모듈소스 좀 점검하여 수정한 zip 파일 첨부합니다. 

폐쇠망이라면 내부에 웹서버 돌리시고, trex파일의 url맞춰주시면 데스크탑에서 문제 없이 돌아갑니다. configureation을 하러 들어가게 되면 데이터 소스 목록이 나타나고 리프레시할 데이터 소스를 선택하면 됩니다. 완성도도 있고 잘 동작하네요

테스트가 끝나면 서버에도 등록을 하셔야 합니다. ui는 심심합니다. 설치에 큰 어려움은 없습니다. 망분리 상황이라면 외부 참조를 하고 있는 js라이브러리들은 다운받아서 망 안으로 전부 이동시켜야 합니다. 잘 돌아갑니다.  

사용법 매뉴얼은 다음과 같습니다. https://onlinehelp.tableau.com/current/pro/desktop/ko-kr/dashboard_extensions.htm

2) 아래 링크는 다른 익스텐션인데 좀 예전 방식의 javascript api를 사용한 refresh 방법인데 예전 방식이므로 적절치 않은데 디자인 UI 컨셉은 좋습니다.

 https://databoss.starschema.net/auto-refresh-tableau-dashboard-without-embedding/

5. 태블로 익스텐션 개발

내부에 능숙한 개발자가 있다면 태블로 extension api를 사용해서 개발을 하는 것도 방법입니다. 만일 개발을 하게 된다면refresh는 위 4와 같은 UI로가고 config설정창은 uiNamespace 이것을 좀 수정하면 어떨까 생각해보았습니다. 여력이 되면 완성하여 공개하는 것도 고려하고 있습니다만, 좀처럼 짬이 잘 나지는 않는군요.

https://tableau.github.io/extensions-api/

맺으며

지금까지 태블로 서버 화면의 오토리프레시 방안에 대해 살펴보았습니다. 도움이 되셨기 바랍니다.

 1,470 total views

음성 녹음을 자동으로 받아적기 (STT)

폰에는 음성 녹음앱있지요. 통화 녹음이나 혹은 간단한 메모를 하는 용도로만 알고 있었는데 얼마전 음성인식 기능이 있는 것을 알고 보다 상세히 알아본 내용을 공유합니다.

제 폰은 갤럭시노트 10모델인데요. 폰 마다 녹음앱 정도는 기본으로 설치되어 있을텐데 노트10에는 [삼성 음성 녹음]이라는 앱이 기본으로 설치되어 있네요.

삼성 음성 녹음 앱과 STT

이런 UI를 가지고 있습니다.

지인들과 음성 녹음한 결과를 받아쓰기하는 방법에 대해서 이야기를 나누다보니 음성 녹음을 그대로 텍스트로 인식해주는 앱이 있다는 겁니다. 혹시나 해서 찾아보니 우측 상단에 [텍스트 변환]이라는 버튼이 있어서 이것인가 싶어서 기능을 실행해봅니다. [더보기]를 눌러보니 역시 그런 기능이 있습니다. STT 기능 (Speech to Text) 이라고 하는 것인가봅니다.

실제 텍스트 변환 테스트

거두절미하고 한 번 문장을 읽어 보았습니다. 텍스트를 보시면 알겠지만 음성을 녹음하면서 오타 없이 정확하게 텍스트로 인식까지 하고 있는 것을 볼 수 있습니다.

텍스트를 눌러 녹음 부분 찾아 듣기

더욱 대단한 것은 인식이 된 상태에서 일정 텍스트를 누르게 되면 그 부분부터 플레이가 된다는 점이었습니다. 음성인식이 정확하지 않다던가 혹은 오리지널 녹음 내용을 확인할 필요가 있을때 해당 부분으로 바로 가게 해주는 기능이죠.

아이들을 관찰하고 그 내용을 논문으로 풀어쓰는 일을 많이 하는 제 아내가 엄청나게 감탄하고 좋아할 만한 기능이 기본앱의 기본 기능으로 구현되어 있네요.

아이들의 움직임을 관찰하는 경우 또박 또박 읽는 다던가 혹은 성인의 대화와는 다르게 음성인식율이 많이 떨어질 것을 걱정할 수 있을텐데요 확인해보니 떨어진다고 하더라도 초벌 텍스트라도 있는 것이 없는 것보다는 백배 효율적이라고 하고요, 또 위의 기능으로 텍스트를 눌러서 음성 녹음의 해당 위치로 곧바로 이동해서 확인할 수 있기 때문에 무척이나 유용해보인다고 합니다.

오늘은 갤럭시에 기본 탑재된 음성인식 앱과 텍스트로 받아쓰기 기능인 STT기능에 대해서 알아보고 그 응용에 대해서 살펴보았습니다.

녹음 파일의 자동 백업

이 녹음된 음성 파일은 삼성 클라우드에 백업을 하고 자동 백업을 걸어두시면 휴대폰 분실을 걱정하지 않고 안전하게 보존할 수 있습니다. 이 내용은 별도로 간단히 포스팅하려고 합니다.

 956 total views,  1 views today

태블로 질문시 쉽게 답변 받는 4가지 요령

디노입니다. 태블로를 가지고 이것 저것 작업을 하다보면 기술적인 질문거리 많으실겁니다. 몇시간이고 끙끙 헤매도 해결이 안되는데 아는 사람이 보면 이삼분만에 답변을 해드릴 수 있는 경우 많이 있지요.

그런데 구체적인 기술적 질문을 전화나 간단한 글로만 하는 분이 있습니다. 궁금할 때 전화를 들거나 간단한 글로 바로 해결하려고 하는 욕구는 이해가 되고 당연히 그렇게 해결할 문제의 종류도 있습니다만, 다소 난이도가 있는, 특히나 기술적인 질문인 경우 빨리 답변을 해드릴 때와 답변을 미루다가 하게 될 때의 이유를 곰곰히 생각해보니 아래와 같은 사정이 있었네요.

  1. 당장 답해드릴 수 없는 상황이 많습니다.
  2. 다른 사람에게 당장 토스하여 처리를 부탁할 수도 있습니다.
  3. 답변을 위해 테스트 환경을 만드는게 하세월입니다.
  4. 글을 쓰면서 본인의 생각을 정리하게 되십니다.

이 정도가 아닐까 싶은데요, 세부적으로 살펴보겠습니다.

당장 답해드릴 수 없는 상황이 많습니다.

저도 평소에는 일상적인 생활 및 업무를 하고 있기 때문에 바로 답해드릴 문제가 아닌 생각과 점검이 필요한 문제는 전화 후 여유로울 때 다시 검토를 해야 합니다. 주로 저녁시간이나 새벽 시간이 될텐데 이 시간이 되면 어떤 질문을 받았는지 세부적으로 정확하게 기억이 나지 않는 경우가 허다합니다. 이런 경우 전화로 질문 후에라도 문자던 메일이던 요약해서 리마인드 주시면 답변을 할 때 매우 유용하게 답변을 만들어 전달할 수 있습니다.

다른 사람에게 당장 토스하여 처리를 할 수도 있습니다.

제 주변에 유능한 도우미 선수들이 많이 있습니다. 메일로 주면 그 선수들에게 바로 전달하면서 설명해주거나 답을 구하면서 답변을 해드리도록 부탁할 수 있지만, 전화로 주시면 제가 그 내용을 전화로 다시 설명을 해주던지 혹은 저 또한 메일이나 문자를 써서 부탁을 해야 할텐데 그러기가 쉽지 않습니다. 메일로 주시면 간단히 커맨트 달아서 [전달]버튼만 눌러도 해결이 어느정도 가능하겠지요?

답변을 위해 테스트 환경을 만드는게 하세월입니다.

굉장히 중요한 팁인데, 글로 전달하건 이미지를 전달하건 태블로 질문에 대한 답변을 만들기 위해서는 답변자가 샘플 데이터와 태블로 파일을 직접 만져보는 것이 가장 답변하기에 간단합니다. 파일을 살피면서 원인을 찾아내고, 이 부분이 부족하구나 해서 쓸만한 교육 자료와 링크를 첨부하는 일들을 할 수 있습니다.

혹시 공개가 어려운 내부 데이터라면 이미지 캡쳐본이라도 주시면 상황을 이해하는데 좋기는 합니다만, 원인을 찾기 위해서는 유사한 상황의 샘플 데이터를 구해서 태블로로 만들고 유사한 상황을 재현해야 하는 경우가 많습니다. 또 질문자에게 설명을 위해서도 먼가 만들어서 전달해 드리는 것이 훨신 편하고 이해가 빠르실거구요.. 이 단계에서 너무나 많은 시간품이 들어가므로 딱 필요한 정답을 전달하지 못하고 이렇게 저렇게 해보세요 라고 말로 핵심을 겉도는 답변 (장황하고 친철은 하지만 알맹이가 없고 즉시 해결에 도움이 크게 되지는 않는)을 하게 됩니다.

글을 쓰면서 본인의 생각을 정리하게 됩니다.

글을 쓰면서 질문의 요지를 잘 전달하기 위해서 여러가지 군더더기 상황을 정리하면서 구글링을 하고 샘플 파일을 만들고 하다보면 스스로 해결책을 찾아내는 경우도 많이 있습니다. 최소한 뭐가 이슈인것 같고 어디쯤에서 문제가 생기는 것 같으니 실마리를 찾는다는 정도로는 정리해서 질문하는 것도 좋은 답변을 받는 데 도움이 될 것 같습니다.

마치며

몇 줄이면 되겠지 했던 글이 생각보다는 길어졌는데 필요한 도움을 효율적으로 드리기 위한 생각과 아이디어이니 여러가지가 궁금한 분들에게 참고가 되셨으면 좋겠습니다.

 543 total views