화요일, 12월 01, 2020

[유튜브 방송] (즐겁게 배우는 SQL #6) 데이터를 필터링하자 - between

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 6편을 공개해드리겠다. 6편은 WHERE에서 필터링 조건을 지정하는 방법 중에 BETWEEN과 NOT BETWEEN을 소개한다.

2020년 12월 1일자 [즐겁게 배우는 SQL #6] 데이터를 필터링하자 - between 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 데이터를 필터링하자 - between 소개
  • 03:35 숫자 값 예제
  • 07:22 날짜 값 예제

원본 학습자료는 SQLite Between를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    test_expression BETWEEN low_expression AND high_expression
    test_expression >= low_expression AND test_expression <= high_expression
    
    test_expression NOT BETWEEN low_expression AND high_expression
    test_expression < low_expression OR test_expression > high_expression
    
  • 단계 2: 숫자 값 예제
    1. SQL> SELECT InvoiceId, BillingAddress, Total FROM invoices WHERE Total BETWEEN 14.91 and 18.86 ORDER BY Total;
    2. SQL> SELECT InvoiceId, BillingAddress, Total FROM invoices WHERE Total NOT BETWEEN 1 and 20 ORDER BY Total;
  • 단계 3: 날짜 값 예제
    1. 참고: SQLite3는 ISO8601 방식으로 날짜를 표기한다. "YYYY-MM-DD HH:MM:SS.SSS"
    2. SQL> SELECT InvoiceId, BillingAddress, InvoiceDate, Total FROM invoices WHERE InvoiceDate BETWEEN '2010-01-01' AND '2010-01-31' ORDER BY InvoiceDate;
    3. SQL> SELECT InvoiceId, BillingAddress, date(InvoiceDate) InvoiceDate, Total FROM invoices WHERE InvoiceDate NOT BETWEEN '2009-01-03' AND '2013-12-01' ORDER BY InvoiceDate;
EOB

월요일, 11월 30, 2020

[유튜브 방송] (즐겁게 배우는 SQL #5) 데이터를 필터링하자 - limit

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 5편을 공개해드리겠다. 5편은 WHERE에서 필터링 조건으로 LIMIT와 OFFSET을 사용해 질의 결과량을 제한하는 방법을 소개한다.

2020년 11월 30일자 [즐겁게 배우는 SQL #5] 데이터를 필터링하자 - limit 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

참고: 설명에 오류가 있어 바로 잡는다: LIMIT 1 OFFSET 1은 가장 높은/낮은 순위가 아니고 차 순위입니다. LIMIT 1 OFFSET 0이 가장 높은/낮은 순위가 됩니다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 데이터를 필터링하자 - limit 소개
  • 01:33 가장 처음부터 적용
  • 02:16 OFFSET으로 특정 위치부터 적용
  • 04:49 LIMIT와 ORDER BY 적용
  • 07:08 가장 높은 값과 가장 낮은 값 얻기

원본 학습자료는 SQLite Limit를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 데이터 질의 방법 소개
    SELECT
    	column_list
    FROM
    	table
    LIMIT row_count;
    
  • 단계 2: 가장 처음부터 적용
    1. SQL> SELECT trackId, name FROM tracks LIMIT 10;
  • 단계 3: OFFSET으로 특정 위치부터 적용
    1. 주의: OFFSET은 0부터 시작(즉, 시작할 행 - 1로 지정)
    2. SQL> SELECT trackId, name FROM tracks LIMIT 10 OFFSET 10;
  • 단계 4: LIMIT와 ORDER BY 적용
    1. SQL> SELECT trackid, name, bytes FROM tracks ORDER BY bytes DESC LIMIT 10;
    2. SQL> SELECT trackid, name, milliseconds FROM tracks ORDER BY milliseconds ASC LIMIT 5;
  • 단계 5: 가장 높은 값과 가장 낮은 값 얻기
    1. SQL> SELECT trackid, name, milliseconds FROM tracks ORDER BY milliseconds DESC LIMIT 1 OFFSET 1;
    2. SQL> SELECT trackid, name, bytes FROM tracks ORDER BY bytes LIMIT 1 OFFSET 2;
EOB

[개발자 이야기] (11월 28일) 소프트웨어 개발이 어려운 일곱 가지 이유

2020년 11월 28일자 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.

2020년 11월 28일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 금주 새로운 소식 개괄
  • 04:24 (신간) "구글 빅쿼리 완벽 가이드" 증정 이벤트
  • 09:02 아파치 오픈미팅즈
  • 10:11 postgREST - PostgreSQL을 RESTful API로 접근
  • 13:05 소프트웨어 개발이 어려운 일곱 가지 이유
  • 18:39 C가 어려운 이유
  • 21:38 ZeroSSL – Let’s Encrypt의 대안
  • 22:24 1인 SaaS를 위한 기술 스택
  • 24:02 벌써 자바 16이 나온다고?
  • 25:09 노드 다이어트
EOB

토요일, 11월 28, 2020

[끝없는 뽐뿌질] 갤럭시 워치 3 일주일 사용기

어쩌다보니 갤럭시 워치 3를 선물받게 되어 일주일 내내 충전할 때 빼고 차고 다니고 있다. 원래 몸에 뭔가를 장착(응?)하고 다니기 싫어해서 스마트 워치 구입은 전혀 생각지도 않았는데, 역시 물건은 직접 써봐야 가치를 알게 된다는 사실을 다시 한 번 깨닫게 되었다.

갤럭시 계열의 스마트폰이 아닌 아이폰 계열의 스마트폰을 사용하는 관계상 갤럭시 워치 3의 모든 기능을 100% 사용하지 못하고(예: 문자/메신저 답장 불가, 아이폰에서 워치로 음악 전송 불가, 혈중 산소포화도(된다고 하지만, 워치 펌워에 업그레이드를 위한 다운로드가 계속 거부됨), 혈압과 ECG 기능 사용 불가(흑흑...), (당연한 이야기지만) 애플 건강 앱과 연동 불가) 아이폰과 궁합이 안 맞는지 종종 블루투스 연결이 무한 루프에 빠지는 문제가 있긴 하지만(초기 증상으로 멀쩡히 잘 오던 알람이 오지 않다가 어느 순간 연결이 불통되는 경우도 몇 차례 목격했고, 이럴 때는 아이폰을 리부팅할 수는 없으니... 워치 리부팅으로 해소하면 해결되었다.) 몇 가지 핵심 기능만으로도 충분한 가치가 있다는 생각이다.

갤럭시 워치에서 가장 많이 사용하는 기능은 바로 건강 기능이다. iOS의 건강 앱과 연동되지 않아서 살짝 불편하긴 하지만, 삼성 Health 앱 완성도가 좋기 때문에 사용 과정에서 특별한 어려움을 느끼지는 못했다. 아무래도 나이가 들면서 건강에 대한 관심이 높아지기 때문에 여러 가지 정량적인 수치를 보면서 반성을 하고 있다.

  • 수면 시간: 기존에 아이폰의 애플 건강 앱을 사용할 때는 당연한 이야기지만 총 수면 시간만 알 수 있었는데, 일주일 내내 밤에 시계를 차고 자니까 여러 가지 사실을 알게 되었다. 깊은 수면, REM 수면, 뒤척임을 시간대별로 표시해주며 수면의 질이 점수로 나오니까 완전히 느낌이 달랐다. 어떤 조건에서 수면의 질이 불량하게 되는지 파악하는 과정에 좋은 기초 자료가 될 것 같다.
  • 하루 운동량: 이 부분은 원래 애플 건강 앱을 사용해 하루 몇 걸음 걸었는지 계속해서 점검을 하고 있었는데, 워치를 차고 있으니까 매 시간마다 일어나라, 열심히 운동(이라고 쓰고 걷기라고 읽는다) 잘하고 있다 등을 알람으로 알려주며, 현재까지 몇 시간 잤고, 몇 분동안 몇 걸음 걸었고 몇 칼로리 소비했다 이런 통계 정보가 일목 요연하게 정리되어 운동을 해야 하는 동기를 부여해준다.
  • 심박 수와 스트레스: 주기적으로 심박수를 측정해서 최대/최소/평균을 알려주며, 스트레스 측정도 가능하다. 스트레스 받은 상태에서 측정하면 바로 표가 나고 호흡하라는 제안이...
  • 아쉬운점: 어떻게든 혈압과 ECG 기능을 활성화(?)하는 방법을 연구해봐야겠다. 물론 혈압은 주기적으로 진짜 혈압계로 측정한 정보를 입력해 보정해야 하는 번거로움이 있긴 하지만...

워치 덕분에 숫자로 정리된 정량적인 통계치를 매일 반강제적으로 보게 되니까 건강에 대해 관심이 안 생길래야 안 생길 수 없게 되었다. 상시 측정이 가능하게 집 문앞에 체중계를 비치해놓고 돼지 파티를 즐긴 다음에 올라가서 눈금을 보면서 매번 죄의식을 느끼곤 했는데, 이제는 더 강력한 감시자가 생긴 셈이다(뉴뉴).

건강 기능 다음으로 많이 사용하는 기능이 빅스비인데... 아이폰의 시리와 비교해서 어느 정도 정해진 작업은 훨씬 더 잘 알아들어서 적절히 잘 대답한다(즉, 오버피팅을 엄청나게 많이 했다)는 느낌이다. 하지만 이렇게 하다보니 빅스비에 최적화된 패턴대로 말을 해야 하는 부작용이 있는데, 갤럭시 워치 앱의 빅스비 항목에 나와 있는 캡슐(기본적으로는 빅스비의 앱과 1:1로 대응하고 있으며, 마켓플레이스에 있는 녀석들은 다를지도...)별로 예제(응?)를 보면서 어느 정도 패턴을 암기한 다음에 응용을 해야 내 말을 잘 알아 듣는다. 알람과 타이머 맞추고, 세계 시간 묻고, 날씨 묻고, 지하철 역으로 지금 들어오는 출발 시각 확인하고, 설정으로 바로 가고, 하루 일정 확인하는 등의 작업은 거의 대부분 빅스비로 하고 있다. 물론... 때때로 빅스비가 서버 연결 장애로 대답을 못하는 경우가 생기기 때문에 어쩔 수 없이 수작업으로 작업을 해야 하는 경우가 있어서 이 점은 살짝 아쉽다.

원형 베젤을 돌려서 여러 가지 작업을 수행하기 때문에 애플 워치보다는 물리적인 조작성이 조금 더 좋아 보인다. 몇 가지 아이콘을 이해하지 못해 조금 어려움을 겪긴 했지만(예: 12시 방향 상단에 그려지는 시계 모양의 아이콘), 사용자 인터페이스는 조금만 써보면 이해가 갈 수 있게 비교적 직관적으로 다가왔다(아이폰용 삼성 Health 앱의 꼼꼼함의 예를 들자면... 자다가 깨서 힘들어 하다 다시 잠들면 잠든 구간이 두 부분으로 나뉘어져 따로 통계가 잡힌다) . 그리고 발표를 많이 하시는 분이라면, 파워포인트 제어 앱이 있어서 블루투스로 노트북과 연결한 다음에 발표 과정에서 유용하게 사용할 수 있다(앞으로 가기가 주 기능이지만 뒤로 가거나 시계 터치 스크린을 활용한 마우스 움직임도 가능하다!).

결론: 몇 가지 사소한 문제점이 있긴 하지만 최근 손에 넣은 전자기기 중에서 상당히 만족스러웠다(갤럭시 워치가 아니라 아이폰 워치였어도 비슷한 느낌이 들었을 것 같다). 거추장스러워서 손목 시계를 싫어하시는 분들께서도 한 번 시도해보시면 새로운 가능성을 발견할지도...

EOB

[B급 프로그래머] 11월 4주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)

(오늘의 짤방: 딱 ER diagram이나 class diagram. 한국인에겐 관계를 표현한 화살표 방향이 반대 아닌가 싶은 경우가 있는데 영어 문장으로 생각하면 딱딱 맞아떨어짐을 알 수 있다. via @ryudaewan)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
(보너스: ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 2020 정보처리 산업기사 1회차 문제인데 와.... 악랄하다 악랄해 ㅋㅋㅋㅋㅋㅋ via @hanalen_)
EOB