728x90

메타버스와의 접점도 될 수 있는 영역이 xR 영역입니다. 
VR과 AR이 가장 대표적인 xR 기술들이고 이미 경험해 볼 수 있는 것들이 꽤 많습니다.
애플이 사실상 이 시장으로의 참전을 선언한 상태에서
구글도 오래전 구글 글래스를 떠올리게 하는 뉴스가 있는 것 같습니다. 

 

 

Google is building a new augmented reality device and operating system

Job listings expose plans for a mobile AR platform intended to reach "billions."

arstechnica.com

 

구글은 오래전 구글 글래스라는 기기를 들고 나와 시장에 센세이션을 일으켰습니다. 
기기를 가지고 있는 한국 개발자들도 꽤 있었던 것 같은데 요즘은 아예 소식이 업기도 하죠. 

마이크로소프트는 홀로렌즈 시리즈를 통해 계속 xR에 대한 태핑을 하고 있습니다. 
현재까지는 철저하게 엔터프라이즈 시장에 대한 공략으로 보이지만 
기기의 가격이 내려가고 조금 더 경량화 될 수 있다면 
B2C 시장에도 충분히 진출 가능성을 타진해 볼거라 생각합니다. 

애플은... 이러고 있고...

 

Apple’s first headset will focus on “high-quality” games, reporter claims

Also, an analyst says the headset will support Wi-Fi 6E.

arstechnica.com

 

마이크로소프트는... 이러고 있고...

 

 

HoloLens for 120,000 Army personnel: Microsoft inks $21.9 billion deal

Was originally pegged at $480 million in 2018, follows scrutiny over other DOD deals.

arstechnica.com

 

제일 빠른 축에 들었던 구글이 다시 움직이고 있습니다.
코로나가 생각보다 더 길어지면서 각 기업은 원격 근무, 복합 근무, 가상 근무를
어떻게든 도입하면서도 직원들 사이의 끈끈함을 찾을 방법을 계속 찾고 있습니다. 

xR 은 워크스페이스라는 공간에 대해서도 분명 한 축을 담당할 것 같습니다.
요즘 많은 컨퍼런스나 연말 온라인 송년회에서 게더타운이나 ZEP 등을 쓰는 모습이 보입니다. 
사람들은 점점 이런식의 모임에 익숙해져가고 있지만
여전히 2D 의 평면 모니터 공간속은 뭔가 자연스럽다는 느낌이 들진 않습니다. 

xR 이 새로운 전장이 되면 삼성전자도 다시 한 번 비상을 할거라 기대하며...
다시 또 주식을 줍줍 해봐야겠습니다.
언젠간 가겠지 하는 마음으로다...

728x90
728x90

트위터의 창업주 3인방중 하나였던 잭 도시가 트위터 CEO직을 내려놓았다. 
이로써 먼저 회사를 떠난 에반 윌리엄스, 비즈스톤에 이어 마지막으로 회사를 떠났다.
물론, 스퀘어 Square 라는 걸출한 사업을 하고 있기 때문에 
재벌 걱정, 부자 걱정 할 필요 없는 것과 마찬가지라는 느낌이다.

그런데, 그 직후 바로그 스퀘어가 사명을 블록 Block 으로 바꿨다.
위 이미지에서 보이는 것처럼 블록 = ["스퀘어", "캐시앱", "스파이럴", "타이달", "TBD54566975"] 라고 정의하고 있다. 
스퀘어를 제외한 나머지가 뭔지 좀 찾아봤다.

  • 스퀘어 Square / https://squareup.com/us/en
    • 전자 결제 회사
    • 기기도 만들고 온/오프라인에 걸쳐 사업 영역이 꽤 넓다
    • 상장사
  • 캐시앱 Cash App
    • 아티스트와 팬이 직접 지불(?)할 수 있는 서비스 플랫폼
  • 타이달 Tidal / https://tidal.com/
    • 음원 스트리밍 서비스. 사용자 수? 잘 모르겠음
    • 그 어느 서비스보다 많은 음원 수수료를 아티스트에게 지급한다는 소문
  • 스파이럴 Spiral / https://spiral.xyz/
    • Formerlly called <Square Crypto>
    • 비트코인과 관련한 개발을 하고 있으며 SDK, 툴킷 등을 만들고 있음
  • TBD54566975 / https://twitter.com/TBD54566975
    • 스퀘어에서 차세대 파이낸셜 서비스를 만들고 있던 개발 유닛이었음
    • 이제 막 독립을 시작하여 활발하게 채용도 전개하고 있는 중
    • TBD 는 To be detailed... 인듯 -_-;;

대략 정리해보면 컨텐츠 서비스들과 파이낸셜 서비스가 밍글되고 있는 느낌이다.
용처를 이미 찾아놓고 비트코인, 새로운 결제 수단? 시스템?을 만들어 나가려고 진영을 구축하는 것 같기도 하다.

가끔 드는 생각이지만, 오래전에 <소셜 네트워크로 세상을 바꾼 사람들> 책을 썼을때
트위터 편의 중심이 "에반 윌리엄스"였던 것은 다소 좀 실책이었다는 느낌이다. 
이후 비즈 스톤을 정말 좋아했었는데... 근래에는 잭 도시만 존재감이 있다.
세상은 알다가도 모르겠다... 싶다. 

 

 

소셜 네트워크로 세상을 바꾼 사람들 - YES24

실리콘 밸리에서 찾는 대한민국 스타트업의 성공 DNA 트위터, 페이스북, 링크드인, 포스퀘어 등 세계가 열광하는 SNS 스타트업들이 지나온 과거는 단순히 기삿거리로 지나칠 이야기가 아니었다.

www.yes24.com

 

728x90
728x90

JSON을 다루는 것은 개발자에게는 숙명입니다. 그래도 SOAP 보다 편리하고 쉽다는게 어디냐며 위로해 보지만 할 때마다 새롭고 매번 처음 보는 것 같이 헤메는 것이 또한 JSON 다루기의 특징이기도 합니다.

터미널을 위시한 커맨드라인에서 jq를 이용하면 이런 번잡스러운 일을 간단하게 줄일 수 있습니다. 이미 많은 분들이 쓰고 있고 저 역시 쓰고 있지만 JSON을 다루는 만큼 매번 새롭기에... 하나씩 활용 방법을 찾아서 정리해보고자 합니다.


JSON은 단순히 어떤 요청에 대한 결과를 하나의 데이터 셋으로 내려주기도 하지만, 데이터 셋안에 여러개의 반복되는 데이터가 포함되어 있는 경우도 많습니다. 반복되는 JSON에서 원하는 속성의 값만을 뽑아내는 방법을 살펴보겠습니다. 

오늘의 데이터는 주택금융공사의
전세자금대출 고객 금리정보입니다.

 

시작부터 엄청 구미가 당기는 데이터이지 않습니까? 국가 공공데이터포털의 오픈API중에서 가장 먼저 눈에 띈 녀석으로 가져와 봤습니다. 여전히 SOAP만 제공하는 API도 많지만 많이 사용되는 데이터 셋은 JSON을 제공하는 경우가 많아 서비스를 개발하거나 연습할 때 무척 유용합니다. 

 

jq의 시작, jq '.' 사용하기

API의 자세한 스펙도 살펴보면 좋겠지만 우리의 목적은 흥미로운 JSON을 jq로 다뤄보는 연습을 하는 것이니 규격에 대한 설명은 생략하도록 하겠습니다. 요지는 JSON으로 동일한 속성을 가진 여러벌의 JSON 데이터가 나온다는 점입니다. 2021년 7월의 전세자금대출 정보를 쿼리해보니 은행별로 최저, 최대 금리가 나오고 대출 횟수가 같이 나옵니다. 

curl로 기본적인 GET 요청을 던졌고 돌아오는 응답을 파이프로 연결하여 jq '.' 로 넘겨보았습니다. 이렇게 하는 것 만으로 아래와 같이 두가지 극단적인 결과를 볼 수 있습니다. jq를 써보신 분들은 다 아시고, jq를 처음 쓴다면 일단 외워두는 것이 jq '.' 입니다. 

아.. 머리가 아프다...
단지 jq '.' 를 파이프로 연결했을 뿐인데...

 

// 머리아픈 JSON보기
curl -v "http://apis.data.go.kr/B551408/rent-loan-rate-multi-dimensional-info/dimensional-list?serviceKey=##공공데이터포털에서_키를받아_넣으세요!##&loanYm=202105&cbGrd=1&debt=11&numOfRows=5&pageNo=1&dataType=json"

// 속시원한 JSON보기
curl -v "http://apis.data.go.kr/B551408/rent-loan-rate-multi-dimensional-info/dimensional-list?serviceKey=##공공데이터포털에서_키를받아_넣으세요!##&loanYm=202105&cbGrd=1&debt=11&numOfRows=5&pageNo=1&dataType=json" | jq '.'

 

특정 아이템만 뽑아내보자

jq '.'를 사용해서 사람이 읽기 좋은 포맷을 쉽게 만들어 보았습니다. 하지만 데이터가 많다면 이 데이터를 한 번 더 필터링 해서 원하는 정보만 발라내서 보고 싶어지기 마련입니다. 

JSON의 구조를 잘 보니 최상위 속성으로 "header"와 "body"가 눈에 띕니다. "header"는 API 호출에 대한 처리 결과를 담고 있으니 우리에겐 중요하지 않습니다. 우리는 두번째 속성인 "body"의 내용에 관심이 있습니다. "body"의 하위 JSON만 뽑아내려면 어떻게 해야 할까요?

jq '.body'

// jq '.body' 로 파이프를 거세요!
curl -v "http://apis.data.go.kr/B551408/rent-loan-rate-multi-dimensional-info/dimensional-list?serviceKey=##공공데이터포털에서_키를받아_넣으세요!##&loanYm=202105&cbGrd=1&debt=11&numOfRows=5&pageNo=1&dataType=json" | jq '.body'

앞서 사용했던 jq 명령을 조금 더 진화시켜서 jq '.body'를 했더니 특정한 속성 하위의 JSON만 출력할 수 있었습니다. 참 쉽죠? 이쯤되면 조금 더 욕심이 나실겁니다. 잘 보니 "items"라는 배열 하위에 찐 정보들이 가득합니다. 과감하게 jq '.body.items'를 하면 원하는 값이 나오겠죠?

jq '.body.items'

 

반복되는 JSON에서 특정 속성만 뽑아내기

자 그런데 여전히 뭔가 번잡해 보입니다. 금융 서비스나 핀테크 서비스를 만든다면 사용자들에게 특정 은행의 전세자금대출 상품 소개를 하면서 최저금리를 안내해서 클릭을 유도하고 싶을 수 있습니다. 그렇다면 최소 금리를 나타내는 항목인 "minLoanRat"만 뽑아서 보면 좋을 것 같다는 생각이 듭니다. jq '.body.items.minLoanRat'을 하면 될 것 같죠?

jq '.body.items.minLoanRa' 은 에러입니다!!

하지만 결과는 제대로 나오지 않고 만나고 싶지 않았던 에러 메세지를 맞딱드렸습니다. 뭐가 문제일까요? 그것은 바로 앞선 jq '.body.items'의 결과가 배열이기 때문입니다. 배열은 인덱스라는 순서가 존재합니다. 이를 나타내기 위해서는 []를 써야 합니다. jq '.body.items[].minLoanRat'으로 명령을 바꿔서 시도해보겠습니다!

jq '.body.items[].minLoanRat'

결과가 잘 나왔습니다! 하지만 뭔가 아쉽습니다. 도대체 어느 은행에서 이 금액으로 대출을 해준건지 도통 알수가 없는 상태이기 때문이죠. 은행의 이름도 분명 원래의 JSON 데이터에 있었는데... 이걸 jq 로 함께 뽑아서 < "은행": #최소대출금리# >의 형태로 볼 수 있다면 얼마나 좋을까요?

 

반복되는 JSON을 조작하여 새로운 JSON 만들어내기

jq는 여러분을 위해 이미 그렇게 할 수 있는 방법을 준비해 두었습니다. jq는 curl과 같은 다른 명령으로부터 JSON 데이터를 파이프(|)로 전달 받을 수 있는 것은 물론이고, 자신이 스스로 데이터를 몇 번씩 가공하여 파이프로 연결해서 가공할 수 있습니다. 우리가 원하는 결과를 만들기 위해서는 아래와 같은 jq 연산을 해볼 수 있습니다.

jq '.body.items[] | { bankNm, avgLoanRat }'

jq '.body.items[] { bankNm, avgLoanRat }'

드디어 완성이 된 것 같습니다. 하지만 약간 더 손을 보면 다른 어플리케이션에서 데이터를 다루기 더 쉬워질 수 있습니다. 위 그림에서의 JSON은 JSON의 규격 위반으로 다른 프로그램에서 JSON으로 파싱할때 에러가 발생합니다. 각 항목이 콤마로 연결되어야 하고 배열이기 때문에 []로 묶일 필요가 있습니다. 

jq '[ .body.items[] | { bankNm, avgLoanRat } ]'

전체를 []로 묶어주니 자동으로 각 항목과 항목 사이를 콤마로 연결해 주어 완성된 JSON의 형태를 만들어 주었습니다. 이렇게 만들어진 JSON이 정말 문제 없는지 jsonlint.com 에서 검증을 해보았습니다. 네, 역시 문제 없네요!

 


이번 포스팅에서는 jq 를 이용하여 간단하게 데이터를 조작하는 방법을 살펴보았습니다. 다음 포스팅에서는 조건문을 활용하여 jq 를 보다 어렵게(?) 사용하는 방법을 살펴보도록 하겠습니다.

728x90
728x90

Sublime Text 에디터는 패키지(Package)를 이용하여 기능을 지속적으로 확장, 보완할 수 있습니다.

워낙 다양한 패키지들이 공개되어 있어 어떤 것을 사용하는게 좋다는 이야기를 드리기 조심스럽지만

자주 행하게 되는 반복 작업에 지친 분들이 있을까봐 좋은 패키지 하나를 소개합니다.


업무 특성상 HTML, CSS, Javascript 그리고 JSON 파일을 많이 다루고 있습니다.

여느 웹 개발자나 서버단의 개발자 분들 역시 그런 경우가 많을 것 같습니다.

그동안은 웹 기반으로 만들어져 있는 들여쓰기 정렬툴, 소위 Pretty Print 도구를 사용했습니다만

오프라인 환경에서 작업할 때는 인터넷 엑세스가 제한되어 불편함이 있었습니다.



오늘 발견한 HTMLPrettyfy 패키치는 node.js 가 설치되어 있는 환경에서 사용 가능한 패키지로

서브라임 텍스트2와 3에서 모두 활용할 수 있는 코드 포맷터입니다.

node.js 가 설치되어 있지 않다면 당연히 사용이 어렵다는 정도가 제약사항이라 하겠습니다.


소스코드가 깃헙에 공개되어 있기 때문에 필요에 따라 SQL 이나 다른 구조화된 포맷이 필요한 텍스트에 대해서

기능을 개발하고 제안하여 참여 가능하다는 것도 기억해 두시기 바랍니다. (누가 SQL 좀... 굽신...)




설치를 위해서는 먼저 서브라임 텍스트의 패키지 매니저를 실행해야 합니다.

맥 환경인 경우 Command + Shift + P 를 누르면 되고 윈도인 경우 Ctrl + Shift + P 를 누르면 됩니다.

까만 에디터 위로 조그만 팝업이 뜨면 "Package Control Install Package"를 입력하여 패키지 설치를 시작하겠습니다.



팝업 창이 리프레시되면 위 이미지처럼 "HTML-CSS-JS Prettify"를 검색하시어 선택합니다.

이미 설치되어 있는 경우 결과창이 나오지 않습니다만 설치가 되어 있지 않은 경우

검색 결과 화면이 나오고 엔터를 누르면 서브라임 텍스트 에디터 하단에 설치 진행 현황이 업데이트 됩니다. 


BeforeAfter



이제 정렬하고자 하는 문서가 활성화된 상태에서 Command + Shift + H (윈도에서는 Ctrl + Shift + H) 를 누르면

예쁘게 들여쓰기와 줄바꿈이 된 문서로 탈바꿈 하게 됩니다. 





728x90

+ Recent posts