- 빅데이터/인공지능
- This Code Does Not Exist(GPT-2 or Human)
- 오픈소스 시각화 라이브러리 d3.js 개발 10년동안 배운 것 (observablehq.com)
- 마이크로소프트, ‘워드’에 텍스트 예측 기능 추가한다
- GPT-3가 아이디어도 낸다고?
- The Thousand Brains Theory of Intelligence
- This AI can explain how it solves Rubik’s Cube—and that’s a big deal
- Data Engineering Technology Tree
- MS, 애저 기반 '문서 번역' 미리보기 출시 "원본 서식 및 포맷 유지"
- 어렵지만 도전할 가치 있는 '강화학습 알고리즘' 직접 실험하기
- Getting Started with Distributed Machine Learning with PyTorch and Ray
- Semiconductors Enabling Artificial Intelligence
- adversarial.io – Fighting mass image recognition
- Tech companies shroud their algorithms in secrecy. It’s time to pry open the black box
- Has Amazon Ruined the Name Alexa?
- ‘살아 있는’ AI를 성공적으로 설계하는 방법
- The Future of Data Engineering
- Google Open-Sources Trillion-Parameter AI Language Model Switch Transformer
- [김국현 IT 사회학] ‘이루다’ 논란에서 배워야 할 것들
- Are The New M1 Macbooks Any Good for Deep Learning? Let’s Find Out
- openpilot is open source software built to improve upon the existing driver assistance in most new cars on the road today.
- 푸리에 변환을 반응형으로 소개합니다
- Basic Intro to Elliptic Curve Cryptography
- Paper Backing Microsoft’s Quantum Technology to be Retracted, Quantum Hardware Field Narrows
- Implementing the Elo Rating System
- Natural Language YouTube Search
- 읽을거리
- VC가 알려주는 스타트업 투자 유치 전략 [197p PDF]
- The Art of Reading More Effectively and Efficiently
- The U.S. Air Force Just Admitted The F-35 Stealth Fighter Has Failed
- How I heat my home by mining crypto currencies
- 게임스톱 때도, 비트코인 때도 ‘이 남자'를 찾았다
- How to Remedy “Better-than-Average” Effects
- The Evolution of Precomputation Technology and its Role in Data Analytics
- Nvidia Limits RTX 3060 Hash Rate, Unveils New 'Cryptocurrency Mining Processor' Line of GPUs
- This is what happens when bitcoin miners take over your town
- Nvidia: RTX 3060 vBIOS Prevents Removal of Hash Rate Limiter
- How NASA Designed a Helicopter That Could Fly Autonomously on Mars
- The Feynman Learning Technique
- Declassified spacecrafts and orbital weapons of the USSR – Russia
- Pixar in a Box: the art of storytelling
- 개브리엘 해밀턴 <프룬을 닫으며>
- Filecoin Aims to Use Blockchain to Make Decentralized Storage Resilient and Hard to Censor
- How Poverty Makes Workers Less Productive
토요일, 2월 27, 2021
[B급 프로그래머] 2월 4주 소식(빅데이터/인공지능, 읽을거리 부문)
화요일, 2월 23, 2021
[이벤트] 구독자 1,000명 돌파 기념 도서 증정(블록체인 기업으로 가는 길)
구독자 1,000명 돌파를 기념해서 이벤트를 준비했다. 유튜브 애청자 다섯 분을 추첨해 신간을 증정하는 이번 이벤트에 많은 참여 부탁드린다.
여느 때와 마찬가지로 이벤트 응모 방법은 정말 간단하다. 채널 박재호 유튜브 채널을 구독하고 나서 다음 영상에 응원의 댓글을 달면 끝!
- 이벤트 선물: 블록체인 기업으로 가는 길
- 이벤트 기간: 2021년 3월 1일(월) 오후 11시까지
- 단계 1. 채널 박재호를 구독한다(이미 구독하셨다면 단계 2로…)
- 단계 2. 이 방송에 ‘좋아요’를 누르고 응원의 댓글을 단다
- 이벤트 당첨자(총 다섯 분) 발표는 3월 2일(수) 밤에 유튜브 생방송으로 공개할 예정이다.
월요일, 2월 22, 2021
[개발자 이야기] (2월 20일) '패배자같은 개발 직무' 탈출법
2021년 2월 20일자 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.
2021년 2월 20일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 오늘 방송 주요 내용 소개
- 06:18 델파이 26년!
- 09:14 ‘노 코드’는 거짓말이다
- 12:48 '패배자같은 개발 직무' 탈출법
- 19:24 프로그래밍 관련 자료 집대성한 URL
- 22:43 현대적인 자바스크립트로 내 사이트를 얼마나 빠르게 만들 수 있을까?
- 24:26 초급 개발자라면 리액트 역량이 중요하다
- 28:51 윈도우 캡쳐 도구 ShareX
- 30:35 개발자들은 코드를 얼마나 자주 되돌릴까?
토요일, 2월 20, 2021
[B급 프로그래머] 2월 3주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)
- 개발/관리도구
- Software Systems Need Skin in the Game
- git merge conflict을 어떻게 방지할까
- Cockpit - The easy-to-use, integrated, glanceable, and open web-based interface for your servers
- Checked C by Microsoft
- sysPass - Intuitive, secure and multiuser password manager
- 12 requests per second - A realistic look at Python web frameworks
- 지메일의 골칫거리, 오래된 이메일을 간단히 정리하는 방법
- How Using Modern JavaScript May Improve Performance
- Why is it so hard to see code from 5 minutes ago?
- Dapr helps developers build event-driven, resilient distributed applications.
- Ruby Garbage Collection Deep Dive: Tri-Color Mark and Sweep
- Why did I leave Google or, why did I stay so long?
- 9xbuddy - 모든 비디오 다운로더 (9xbuddy.in)
- How NASA Designed a Helicopter That Could Fly Autonomously on Mars
- Learn Makefiles - With the tastiest examples
- 잘 나가는 IT기업들이 급구하는 ‘찐’ 개발자 덕목 세 가지
- Working with Embed in Go 1.16 Version
- ray.so - Create beautiful images of your code
- Announcing .NET 6 Preview 1
- "파악하고, 예방하고, 수정하자" 구글, 오픈소스 취약점 해결 위한 프레임워크 제안
- 다른 개발자들은 요즘 잘 나간다는데... '패배자같은 개발 직무' 탈출법
- “첫 일자리 찾는 신입 개발자라면 ‘리액트’ 배워라”
- ‘알아 두면 좋을’ 안드로이드의 숨은 기능 10가지
- '해커와 화가' 책 제목의 유래 (폴 그램 YC 창시자 이야기)
- wavve 뽀로로 사태를 점검합니다
- VT-69 portable data terminal.
- Service Mesh Ultimate Guide: Managing Service-to-Service Communications in the Era of Microservices
- How to Avoid Cascading Failures in Distributed Systems
- How to really learn Go
- Why is esbuild fast?
- Evergreen v5 - React UI 프레임워크 (evergreen.segment.com)
- Analyzing Clubhouse for fun and profit(한국어)
- FastAPI Boilerplate
- iptables: How Kubernetes Services Direct Traffic to Pods
- What security does a default OpenBSD installation offer?
- An Improved Thread with C++20
- Migrating Monoliths to Microservices with Decomposition and Incremental Changes
- Python strings are immutable, but only sometimes
- Faster JavaScript calls
- OWASP Cheat Sheet Series
- How to measure interrupt CPU overhead when IRQ time accounting is disabled?
- Rustlings - 버그 수정하며 Rust 언어 배우기
- ShareX - 윈도우용 무료 캡쳐 도구 (getsharex.com)
- 코딩 플레이그라운드 만들며 맛보는 요즘 FE 개발 환경 Part 1
- Kafka for Engineers
- No code is a lie
- A python script to download courses from Khan Academy using youtube-dl and beautifulsoup4.
- wasmer-go - A complete and mature WebAssembly runtime for Go based on Wasmer.
- 프로그래밍 관련 자료 모음(한국어, 분량이 엄청남!)
- Tutorial - Write a Shell in C
- Understanding Big O
- Timezone Bullshit
- The worst of the two worlds: Excel meets Outlook
- How to use Docker Security Scan Locally
- Alternative Shells
- SVG: The Good, the Bad and the Ugly
- What is some existing documentation on Linux memory management?
- svgrepo - Browse 300.000+ SVG Vectors and Icons
- Short Fat Engineers Are Undervalued
- 클라우드 스토리지 NextCloud 설치 방법
- Explore binaries using this full-featured Linux tool
- Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks.
- "M1은 느리고 호환성도 문제" 인텔의 '애플 디스'는 사실일까
- Computer Networks: A Systems Approach (Book)
- 접속 환경별로 SSH 배경색상 변경하기 (stevenwadejr.com)
- Welcome to the website for the Pod Manager tool (podman).
- New EC2 T4g Instances – Burstable Performance Powered by AWS Graviton2 – Try Them for Free
- Kubernetes Failure Stories
- Cookin' with Rust
- What the f*ck Python! 😱
- Beej's Guide to Network Programming
- Improving how we deploy GitHub
- Deployment reliability at GitHub
- Free Spring Boot Projects with Source Code
- The Great Suspender에 멀웨어가 숨어있었군요.
- Patterns of Distributed Systems
- Researcher Breaches Systems of Over 35 Companies, Including Apple, Microsoft, and PayPal
- Web Scraping 101 with Python
- hello (also known as helloSystem) is a desktop system for creators with a focus on simplicity, elegance, and usability (for FreeBSD).
- CS193p - Developing Apps for iOS(Standford)
- The InfoQ eMag: Re-Examining Microservices after the First Decade
- Performance Analysis for Arm vs x86 CPUs in the Cloud
- POSIX Threads Programming
- Nasdaq Decodes : 테크 트렌드 2021 [6p PDF]
- IntelliJ IDEA 2021.1 EAP 1 Supports Java 16
- Block Profiling in Go
- Browser fuzzing at Mozilla
- A look at GSM (security)
- Glances is a cross-platform monitoring tool which aims to present a large amount of monitoring information through a curses or Web based interface.
- Remotion - React로 programmatically하게 동영상 만들기
- This web page contains a free electronic version of my self-published textbook Algorithms
- Turning an old Amazon Kindle into a eink development platform
- 네트워크는 왜 이렇게 생긴걸까?
- What is Complexity Science?
- Blog with Markdown + Git, and degrade gracefully through time
- Buildpacks vs Dockerfiles
- Why you should migrate everything from Linux to BSD
- MVP와 PoC, Prototype, Pilot 차이
- Change your MAC address with a shell script
- tusk - Short-lived anonymous feedback_
- What is the difference between LL and LR parsing?
- Faux86: A portable, open-source 8086 PC emulator for bare metal Raspberry Pi
- Soldat is a unique 2D (side-view) multiplayer action game.
- Performance impact of ad blockers
- Async/Await
- A visual guide to SSH tunnels
- Operating Systems: Three Easy Pieces
- What is The Mediocre Programmer?
- Supercookie uses favicons to assign a unique identifier to website visitors.
- Dependency가 많은 프로젝트의 스케줄 관리 방법
- Seeking the Productive Life: Some Details of My Personal Infrastructure
- iamlive - Generate a basic IAM policy from AWS client-side monitoring (CSM)
- V8 release v8.9
- The “Programming for Cats” aptitude test
- Agora - Clubhouse Is Just One Of The Possibilities
- awesome-selfhosted - Self-hosting is the practice of locally hosting and managing applications instead of renting from SaaSS providers.
- EPUB 변환기
- Don't use functions as callbacks unless they're designed for it
- AWS Cheat Sheets
- What CSS Developers Do and Why You Need One
- JavaScript for impatient programmers (ES2021 edition)
- Application Level Encryption for Software Architects
- These are your favorite GitLab engineering stories
- Spyder – a free and open source scientific environment written in Python
- 고성능 서버/데이터베이스
- Migrating to SQLAlchemy 2.0
- SQLite에서는 작은 쿼리 수백개도 효율적 (sqlite.org)
- 구글 고(Go) 언어, 그래프 기반 ORM 제공
- Role of Foreign Data Wrappers in Migrations to PostgreSQL
- Change Data Capture in Postgres With Debezium
- GraalVM inside Oracle Database
- '대체물에서 그린필드로'··· 변화하는 포스트그레SQL 시장
- 미래형 데이터센터에 필요한 일자리와 스킬, 지금까지와는 다르다?
- An SQL solution for Jupyter
- Why I Built Litestream (for SQLite3)
- Why is SQL so successful?
- A First Glance at Amazon Aurora Serverless RDS
- AWS Announces Amazon Aurora Supports PostgreSQL 12
- 클라우드 빅3, 데이터센터 투자 재개…삼성·SK하이닉스도 웃는다
- Petabyte tape cartridges are coming down the line
화요일, 2월 16, 2021
[유튜브 방송] (즐겁게 배우는 SQL #50) 윈도우 함수 - 윈도우 함수(2)
[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 50편을 공개해드리겠다. 50편은 몇 가지 윈도우 함수를 소개한다.
2021년 2월 16일자 [즐겁게 배우는 SQL #50] 윈도우 함수 - 윈도우 함수(2) 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 윈도우 함수 개괄
- 01:02 (값) LAST VALUE(정해진 윈도우 프레임 내에서 마지막 행의 값을 반환)
- 04:55 (값) LEAD(직후에 물리적으로 떨어진 오프셋 값을 가져오기)
- 08:20 (값) NTH_VALUE(정해진 윈도우 프레임 내에서 N번째 행의 값을 반환)
- 11:34 (순위) NTILE(순서가 있는 결과 집합을 정해진 버킷에 나눠서 넣기)
- 14:51 (순위) PERCENT_RANK(순위를 퍼센트로 보여줌)
- 17:13 (순위) RANK(순위를 보여줌, 중복 가능, 빈 순서 있음)
- 20:51 (순위) ROW_NUMBER(연속적인 정수를 부여, 중복 불가능)
온라인 실습 사이트는 SQL Online IDE에서 진행하면 되고, 원본 학습자료는 SQLite Window Functions를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:
- 단계 1: 윈도우 함수 개괄
- 윈도우 함수는 현재 행을 기준으로 일련의 행 집합에 대해 연산을 수행한다
- 집계 함수는 계산 결과를 한 행으로 합치는 특성이 있는 반면에 윈도우 함수는 원래 행을 그대로 유지하는 특성이 있다
- 값과 순위를 매기는 함수가 대표적이다.
- 단계 2: (값) LAST VALUE(정해진 윈도우 프레임 내에서 마지막 행의 값을 반환)
- SQL> SELECT Name, printf ( '%.f minutes', Milliseconds / 1000 / 60 ) AS Length, LAST_VALUE ( Name ) OVER ( ORDER BY Milliseconds RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS LongestTrack FROM tracks WHERE AlbumId = 4;
- SQL> SELECT AlbumId, Name, printf ( '%.f minutes', Milliseconds / 1000 / 60 ) AS Length, LAST_VALUE ( Name ) OVER ( PARTITION BY AlbumId ORDER BY Milliseconds DESC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS ShortestTrack FROM tracks;
- 단계 3: LEAD(직후에 물리적으로 떨어진 오프셋 값을 가져오기)
- SQL> CREATE VIEW CustomerInvoices AS SELECT CustomerId, strftime('%Y',InvoiceDate) Year, SUM( total ) Total FROM invoices GROUP BY CustomerId, strftime('%Y',InvoiceDate);
- SQL> SELECT * FROM CustomerInvoices ORDER BY CustomerId, Year, Total;
- SQL> SELECT CustomerId, Year, Total, LEAD ( Total,1,0 ) OVER ( ORDER BY Year ) NextYearTotal FROM CustomerInvoices WHERE CustomerId = 1;
- SQL> SELECT CustomerId, Year, Total, LEAD ( Total,1,0 ) OVER ( PARTITION BY CustomerId ORDER BY Year ) NextYearTotal FROM CustomerInvoices;
- 단계 4: (값) NTH_VALUE(정해진 윈도우 프레임 내에서 N번째 행의 값을 반환)
- SQL> SELECT Name, Milliseconds Length, NTH_VALUE ( name,2 ) OVER ( ORDER BY Milliseconds DESC ) SecondLongestTrack FROM tracks;
- SQL> SELECT AlbumId, Name, Milliseconds Length, NTH_VALUE ( Name,2 ) OVER ( PARTITION BY AlbumId ORDER BY Milliseconds DESC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) AS SecondLongestTrack FROM tracks;
- 단계 5: (순위) NTILE(순서가 있는 결과 집합을 정해진 버킷에 나눠서 넣기)
- SQL> SELECT Name, Milliseconds, NTILE ( 4 ) OVER ( ORDER BY Milliseconds ) LengthBucket FROM tracks WHERE AlbumId = 1;
- SQL> SELECT AlbumId, Name, Milliseconds, NTILE ( 3 ) OVER ( PARTITION BY AlbumId ORDER BY Bytes ) SizeBucket FROM tracks;
- 단계 6: (순위) PERCENT_RANK(순위를 퍼센트로 보여줌)
- SQL> SELECT Name, Milliseconds, PERCENT_RANK() OVER( ORDER BY Milliseconds ) LengthPercentRank FROM tracks WHERE AlbumId = 1;
- SQL> SELECT Name, Milliseconds, printf('%.2f',PERCENT_RANK() OVER( ORDER BY Milliseconds )) LengthPercentRank FROM tracks WHERE AlbumId = 1;
- SQL> SELECT AlbumId, Name, Bytes, printf('%.2f',PERCENT_RANK() OVER( PARTITION BY AlbumId ORDER BY Bytes )) SizePercentRank FROM tracks;
- 단계 7: (순위) RANK(순위를 보여줌, 중복 가능, 빈 순서 있음)
- SQL> CREATE TABLE RankDemo ( Val TEXT );
- SQL> INSERT INTO RankDemo(Val) VALUES('A'),('B'),('C'),('C'),('D'),('D'),('E');
- SQL> SELECT * FROM RankDemo;
- SQL> SELECT Val, RANK () OVER ( ORDER BY Val ) ValRank FROM RankDemo;
- SQL> SELECT Name, Milliseconds, RANK () OVER ( ORDER BY Milliseconds DESC ) LengthRank FROM tracks;
- SQL> SELECT Name, Milliseconds, AlbumId, RANK () OVER ( PARTITION BY AlbumId ORDER BY Milliseconds DESC ) LengthRank FROM tracks;
- SQL> SELECT * FROM ( SELECT Name, Milliseconds, AlbumId, RANK () OVER ( PARTITION BY AlbumId ORDER BY Milliseconds DESC ) LengthRank FROM tracks ) WHERE LengthRank = 2;
- SQL>
- 단계 8: (순위) ROW_NUMBER(연속적인 정수를 부여, 중복 불가능)
- SQL> SELECT ROW_NUMBER () OVER ( ORDER BY Country ) RowNum, FirstName, LastName, country FROM customers;
- SQL> SELECT ROW_NUMBER () OVER ( PARTITION BY Country ORDER BY FirstName ) RowNum, FirstName, LastName, country FROM customers;
- SQL> SELECT * FROM ( SELECT ROW_NUMBER () OVER ( ORDER BY FirstName ) RowNum, FirstName, LastName, Country FROM customers ) WHERE RowNum > 20 AND RowNum <= 30
- SQL> CREATE VIEW Sales AS SELECT CustomerId, FirstName, LastName, Country, SUM( total ) Amount FROM invoices INNER JOIN customers USING (CustomerId) GROUP BY CustomerId;
- SQL> SELECT Country, FirstName, LastName, Amount FROM ( SELECT Country, FirstName, LastName, Amount, ROW_NUMBER() OVER ( PARTITION BY country ORDER BY Amount DESC ) RowNum FROM Sales ) WHERE RowNum = 1;
월요일, 2월 15, 2021
[유튜브 방송] (즐겁게 배우는 SQL #49) 윈도우 함수 - 윈도우 함수(1)
[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 49편을 공개해드리겠다. 49편은 윈도우 함수를 개괄하고 몇 가지 윈도우 함수를 소개한다.
2021년 2월 15일자 [즐겁게 배우는 SQL #49] 윈도우 함수 - 윈도우 함수(1) 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 윈도우 함수 개괄
- 06:40 (순위) CUME_DIST(누적 분포)
- 11:41 (순위) DENSE_RANK(순서있는 행들의 집합에서 행의 순위 계산, 빈 순서 없음)
- 17:00 (값) FIRST_VALUE(정해진 윈도우 프레임 내에서 첫 행의 값을 반환)
- 22:12 (값) LAG(직전에 물리적으로 떨어진 오프셋 값을 가져오기)
온라인 실습 사이트는 SQL Online IDE에서 진행하면 되고, 원본 학습자료는 SQLite Window Functions를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:
- 단계 1: 윈도우 함수 개괄
- 윈도우 함수는 현재 행을 기준으로 일련의 행 집합에 대해 연산을 수행한다
- 집계 함수는 계산 결과를 한 행으로 합치는 특성이 있는 반면에 윈도우 함수는 원래 행을 그대로 유지하는 특성이 있다
- 값과 순위를 매기는 함수가 대표적이다.
- 단계 2: (순위) CUME_DIST(누적 분포)
- SQL> CREATE TABLE CumeDistDemo( Id INTEGER PRIMARY KEY, value INT );
- SQL> INSERT INTO CumeDistDemo(value) VALUES(1000),(1200),(1200),(1400),(2000);
- SQL> SELECT Id, Value FROM CumeDistDemo;
- SQL> SELECT Value, CUME_DIST() OVER ( ORDER BY value ) CumulativeDistribution FROM CumeDistDemo;
- 단계 3: (순위) DENSE_RANK(순서있는 행들의 집합에서 행의 순위 계산, 빈 순서 없음)
- SQL> CREATE TABLE DenseRankDemo ( Val TEXT );
- SQL> INSERT INTO DenseRankDemo(Val) VALUES('A'),('B'),('C'),('C'),('D'),('D'),('E');
- SQL> SELECT Val, DENSE_RANK () OVER ( ORDER BY Val ) ValRank FROM DenseRankDemo;
- SQL> SELECT AlbumId, Name, Milliseconds, DENSE_RANK () OVER ( PARTITION BY AlbumId ORDER BY Milliseconds ) LengthRank FROM tracks;
- 단계 4: (값) FIRST_VALUE(정해진 윈도우 프레임 내에서 첫 행의 값을 반환)
- SQL> SELECT Name, printf('%,d',Bytes) Size, FIRST_VALUE(Name) OVER ( ORDER BY Bytes ) AS SmallestTrack FROM tracks WHERE AlbumId = 1;
- SQL> SELECT AlbumId, Name, printf('%,d',Bytes) Size, FIRST_VALUE(Name) OVER ( PARTITION BY AlbumId ORDER BY Bytes DESC ) AS LargestTrack FROM tracks;
- 단계 5: (값) LAG(직전에 물리적으로 떨어진 오프셋 값을 가져오기)
- SQL> SELECT * FROM CustomerInvoices ORDER BY CustomerId, Year, Total;
- SQL> SELECT CustomerId, Year, Total, LAG ( Total,1,0 ) OVER ( ORDER BY Year ) PreviousYearTotal FROM CustomerInvoices WHERE CustomerId = 4;
- SQL> SELECT CustomerId, Year, Total, LAG ( Total,1,0 ) OVER ( PARTITION BY CustomerId ORDER BY Year ) PreviousYearTotal FROM CustomerInvoices;
[개발자 이야기] (2월 13일) 라인개발자들이 직접 뽑은 인생 책은?
2021년 2월 13일자 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.
2021년 2월 13일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 오늘 방송 주요 내용 소개
- 04:18 AWS 새로운 T4g 인스턴스 무료 사용하기
- 07:21 MVP vs PoC
- 10:10 라인개발자들이 직접 뽑은 인생 책은?
- 11:55 코드로 배우는 스프링부트 프로젝트
- 13:08 Dependency가 많은 프로젝트의 스케줄 관리 방법
- 15:20 DGS: GraphQL for SpringBoot by 넷플릭스
- 17:21 크롬에서 안 쓰는 탭을 쉬게 만들려면?
- 18:49 sqlite를 상용 환경에서 사용하면 안 된다고?
토요일, 2월 13, 2021
[B급 프로그래머] 2월 2주 소식(빅데이터/인공지능, 읽을거리 부문)
- 빅데이터/인공지능
- Seven Legal Questions for Data Scientists
- Meet the Man Bridging Data Science & Big Data Systems
- Getting there: Structured data, semantics, robotics, and the future of AI
- Kaggle Publishes 2020 State of Machine Learning and Data Science Report
- Machine learning made easy with Python
- uizard - The design tool for creators
- What is Complexity Science?
- Extracting Training Data from Large Language Models
- Gradient Descent Models Are Kernel Machines (Deep Learning)
- "머신러닝 번역, 원문보다 어휘 다양성 떨어져"
- Science fiction hasn’t prepared us to imagine machine learning.
- 핏비트 이용한 수면단계 평가
- What data on myself I collect and why?
- libretranslate - Open Source Machine Translation
- [Mint] 이 할아버지, 테슬라를 분해했습니다
- 9 Distance Measures in Data Science
- 2021년 5가지 데이터 트렌드
- 200+ Machine Learning Projects Solved and Explained
- Big Ideas 2021
- 추천(Recommendation) 시스템 - 알고리즘 Trend 정리
- Dark Patterns at Scale: Findings from a Crawl of 11K Shopping Websites
- LabML Neural Networks - This is a collection of simple PyTorch implementations of neural networks and related algorithms.
- 추천시스템 분석 입문하기 by TAcademy
- 읽을거리
- 5M 이내 공간 샅샅이··· 애플 라이다(LiDAR)란? 역할은? 잠재력은?
- Mastercard to open up network to select cryptocurrencies
- Cloudflare Announces Fourth Quarter and Fiscal Year 2020 Financial Results
- 마작 이것만 알면 치는 흉내는 낼 수 있다 1
- Cambridge Bitcoin Electricity Consumption Index
- 진짜 고용대란
- Samsung Foundry: New $17 Billion Fab in the USA by Late 2023
- 미국 3대 주가지수 - 다우지수, S&P500, 나스닥 비교
- 한은, CBDC 보고서 "가상자산 아닌 법화와 같아"
- 재무제표로 스타벅스 코리아 째려보기
- How to Kill a Unicorn
- '경력직' 우대하는 사회
- 리튬이온전지의 원리와 탄생, 그리고 노벨상
- MVP와 PoC, Prototype, Pilot 차이
- Stop Swiss Cheesing your calendar
- 천재만을 원했던 한 바둑 기사가 바둑계에 끼친 영향
- 한국, GDP 대비 연구개발(R&D) 비중 세계 최고
- The Stranger Who Changed My Life: My Enemy, My Friend
- [시선]위기를 기회 삼으라는 기만
- 일 잘하는 사람은 누구? 인재는 직선으로 크지 않아요
- Should We Stop Telling Kids They're Smart?
- IBM 블록체인 사업부 사실상 와해 "개발자 10%만 남아"
- How to lose money 💸
- NASA 2020 MISSION - PERSEVERANCE ROVER
- Tiger 미국나스닥100 vs QQQ 심층 비교로 고민 해결!
- Chart: Why Battery Electric Vehicles Beat Hydrogen Electric Vehicles Without Breaking A Sweat
- Car ride game
- It Feels Like the Game is Rigged
- How long do people need to work at minimum wage to buy one Big Mac?
- Visa May Add Cryptocurrencies to Its Payments Network, Says CEO
- Design of the 60's and 70's for Nerds
- When a Colleague Is Grieving
- 미술감독 이목원 "미술감독은 솔루션을 만들어요"
- 한국이 짜게 먹는다는 조사의 진실?
수요일, 2월 10, 2021
[유튜브 방송] (즐겁게 배우는 SQL #48) 트리거 - INSTEAD OF 트리거
[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 48편을 공개해드리겠다. 48편은 INSTEAD OF 트리거를 소개한다.
2021년 2월 10일자 [즐겁게 배우는 SQL #48] 트리거 - INSTEAD OF 트리거 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 INSTEAD OF 트리거 기본 형식
- 01:03 INSTEAD OF 트리거 예제
원본 학습자료는 SQLite INSTEAD OF Triggers를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:
- 단계 1: INSTEAD OF 트리거 기본 형식
CREATE TRIGGER [IF NOT EXISTS] schema_ame.trigger_name INSTEAD OF [DELETE | INSERT | UPDATE OF column_name] ON table_name BEGIN -- insert code here END;
- 단계 2: INSTEAD OF 트리거 예제
- SQL> CREATE VIEW AlbumArtists( AlbumTitle, ArtistName ) AS SELECT Title, Name FROM Albums INNER JOIN Artists USING (ArtistId);
- SQL> SELECT * FROM AlbumArtists;
- SQL> INSERT INTO AlbumArtists(AlbumTitle,ArtistName) VALUES('Who Do You Trust?','Papa Roach');
- SQL> CREATE TRIGGER insert_artist_album_trg INSTEAD OF INSERT ON AlbumArtists BEGIN INSERT INTO Artists(Name) VALUES(NEW.ArtistName); INSERT INTO Albums(Title, ArtistId) VALUES(NEW.AlbumTitle, last_insert_rowid()); END;
- SQL> INSERT INTO AlbumArtists(AlbumTitle,ArtistName) VALUES('Who Do You Trust?','Papa Roach');
- SQL> SELECT * FROM Artists ORDER BY ArtistId DESC;
- SQL> SELECT * FROM Albums ORDER BY AlbumId DESC;
화요일, 2월 09, 2021
[유튜브 방송] (즐겁게 배우는 SQL #47) 트리거 - 트리거
[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 47편을 공개해드리겠다. 47편은 트리거를 소개한다.
2021년 2월 9일자 [즐겁게 배우는 SQL #47] 트리거 - 트리거 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 트리거 기본 형식
- 07:13 BEFORE INSERT 트리거 예제
- 13:03 AFTER UPDATE 트리거 예제
- 17:47 트리거 제거 예제
원본 학습자료는 SQLite Trigger를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:
- 단계 1: 트리거 기본 형식
CREATE TRIGGER [IF NOT EXISTS] trigger_name [BEFORE|AFTER|INSTEAD OF] [INSERT|UPDATE|DELETE] ON table_name [WHEN condition] BEGIN statements; END;
- 단계 2: BEFORE INSERT 트리거 예제
- SQL> CREATE TABLE leads ( id integer PRIMARY KEY, first_name text NOT NULL, last_name text NOT NULL, phone text NOT NULL, email text NOT NULL, source text NOT NULL );
- SQL> CREATE TRIGGER validate_email_before_insert_leads BEFORE INSERT ON leads BEGIN SELECT CASE WHEN NEW.email NOT LIKE '%_@__%.__%' THEN RAISE (ABORT,'Invalid email address') END; END;
- SQL> INSERT INTO leads (first_name,last_name,email,phone) VALUES('John','Doe','jjj','4089009334');
- SQL> INSERT INTO leads (first_name, last_name, email, phone) VALUES ('John', 'Doe', 'john.doe@sqlitetutorial.net', '4089009334');
- SQL> INSERT INTO leads (first_name, last_name, email, phone, source) VALUES ('John', 'Doe', 'john.doe@sqlitetutorial.net', '4089009334', 'company');
- SQL> SELECT * FROM leads;
- 단계 3: AFTER UPDATE 트리거 예제
- SQL> CREATE TABLE lead_logs ( id INTEGER PRIMARY KEY, old_id int, new_id int, old_phone text, new_phone text, old_email text, new_email text, user_action text, created_at text );
- SQL> CREATE TRIGGER log_contact_after_update AFTER UPDATE ON leads WHEN old.phone <> new.phone OR old.email <> new.email BEGIN INSERT INTO lead_logs ( old_id, new_id, old_phone, new_phone, old_email, new_email, user_action, created_at ) VALUES ( old.id, new.id, old.phone, new.phone, old.email, new.email, 'UPDATE', DATETIME('NOW') ); END;
- SQL> UPDATE leads SET last_name = 'Smith' WHERE id = 1;
- SQL> UPDATE leads SET phone = '4089998888', email = 'john.smith@sqlitetutorial.net' WHERE id = 1;
- SQL> SELECT old_phone, new_phone, old_email, new_email, user_action FROM lead_logs;
- 단계 4: 트리거 제거 예제
- SQL> DROP TRIGGER validate_email_before_insert_leads;
월요일, 2월 08, 2021
[유튜브 방송] (즐겁게 배우는 SQL #46) 색인 - 표현식 기반의 색인
[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 46편을 공개해드리겠다. 46편은 표현식 기반의 색인을 소개한다.
2021년 2월 8일자 [즐겁게 배우는 SQL #46] 색인 - 표현식 기반의 색인 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 표현식 기반의 색인 예제
- 03:21 표현식 기반의 색인 동작 원리
- 05:29 표현식 기반의 색인 제약
원본 학습자료는 SQLite Expression-based Index를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:
- 단계 1: 표현식 기반의 색인 예제
- SQL> SELECT customerid, company FROM customers WHERE length(company) > 10 ORDER BY length(company) DESC;
- SQL> EXPLAIN QUERY PLAN SELECT customerid, company FROM customers WHERE length(company) > 10 ORDER BY length(company) DESC;
- SQL> CREATE INDEX customers_length_company ON customers(LENGTH(company));
- SQL> EXPLAIN QUERY PLAN SELECT customerid, company FROM customers WHERE length(company) > 10 ORDER BY length(company) DESC;
- 단계 2: 표현식 기반의 색인 동작 원리
- SQL> CREATE INDEX invoice_line_amount ON invoice_items(unitprice*quantity);
- SQL> EXPLAIN QUERY PLAN SELECT invoicelineid, invoiceid, unitprice*quantity FROM invoice_items WHERE quantity*unitprice > 10;
- SQL> EXPLAIN QUERY PLAN SELECT invoicelineid, invoiceid, unitprice*quantity FROM invoice_items WHERE unitprice*quantity > 10;
[개발자 이야기] (2월 6일) 7년 차 SI 개발자가 솔루션 회사 이직 후 2년 간 배운 것
2021년 2월 6일자 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.
2021년 2월 6일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 오늘 방송 주요 내용 소개
- 06:06 리눅스 아재력 or 할배력 셀프 테스트
- 10:55 구글 검색 없이 기초적인 웹 앱을 만들 수 있을까?
- 14:24 크롬 89 베타에서 개선된 사항
- 16:47 2021년도에 눈여겨볼 Top 10 VSCode 확장
- 20:03 IT 업계 ‘아무말 대잔치’··· 오남용 심한 유행어 10선
- 24:09 7년 차 SI 개발자가 솔루션 회사 이직 후 2년 간 배운 것
- 32:47 2021년 미국 최고 직업은 자바 개발자
- 34:55 내 서버를 어디에 둬야 가장 빠를까?
토요일, 2월 06, 2021
[B급 프로그래머] 2월 1주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)
- 개발/관리도구
- Reloadr - Python hot code reloading tool.
- Open Sourcing the Netflix Domain Graph Service Framework: GraphQL for Spring Boot
- AWS Application Load Balancer algorithms
- 🍪 프론트에서 안전하게 로그인 처리하기 (ft. React)
- Make your games beautiful! - Godot Shaders is a community-driven shader library for the Godot game engine.
- How to hire senior developers: Give them more autonomy
- datatype99 is a header-only library that augments C99 with sum types.
- @PCBASICBot - The bot accepts programs in GW-BASIC by default (whose code is 100% compatible with BASICA).
- Computer Graphics from Scratch
- FE개발자의 성장 스토리 06 : 2021년 Chrome의 새로운 변화 – Schemeful same-site을 대응하자
- asdf - Manage multiple runtime versions with a single CLI tool
- Rust in Production: 1Password
- Getting better at Linux with 10 mini-projects
- Top Acronyms and Abbreviations Dictionary
- WSL2 기반 docker 사용시 vmmem 프로세스 메모리 소모량 줄이기
- The documentation system - tutorials, how-to guides, technical reference and explanation.
- Think twice before abandoning Xorg. Wayland breaks everything!
- Sinofsky speaks! Former Microsoft exec to publish memoirs online
- 크롬북 화면보호기의 숨은 의미··· ‘포스트 OS’ 시대가 온다
- IT 업계 ‘아무말 대잔치’··· 오남용 심한 유행어 10선
- 클라이언트 서버리스라는 '새 바람'을 환영하며
- Almalinux - An open-source RHEL fork built by the team at CloudLinux, inspired by the community.
- VideoLAN is 20 years old today!
- In Cab Ride you can drive thousands of different train routes
- FastAPI framework, high performance, easy to learn, fast to code, ready for production
- Learn Algorithms Together - Create a room, invite your friends, and race to finish the problems.
- Opstrace deploys secure, horizontally-scalable open source observability in your own cloud account, combining open APIs with the simple user experience of a large service provider.
- 2021년 미국 최고 직업은 자바 개발자
- Towards an understanding of technical debt
- Product Management for Engineers
- webmoji.xyz - 웹 이모지 입력기
- AI No Silver Bullet for Cloud Security, but Here’s How It Can Help
- S-MQTTT, or: secure-MQTT-over-Traefik
- 개발자를 위한 인프라 기초 총정리
- AWS 자격증 온라인 시험 후기
- traefik - 클라우드 네이티브 어플리케이션 프록시
- Terminalizer - 터미널을 녹화해서 GIF로 만들기
- NES.css - NES-style CSS Framework.
- mattermost - High trust collaboration for your enterprise
- 이미지 포맷 비교 JPEG, JPEG2000, WebP, HEIC, AVIF
- The MIT License, Line by Line
- Docker Engine 20.10 Released: Supports cgroups v2 and Dual Logging
- Chrome 89 Beta: Advanced Hardware Interactions, Web Sharing on Desktop, and More
- GraalVM 21.0 Introduces a JVM Written in Java
- crun - A fast and low-memory footprint OCI Container Runtime fully written in C.
- piku - 초경량 PaaS
- Build your own X, a collection of tutorials (Search engine, Neural Net, etc.)
- 리눅스 아재력 or 할배력 셀프 테스트
- When a Colleague Is Grieving
- 윈도우10 로그인 잠금화면의 멋진 배경이미지를 배경화면으로 저장해 보자.
- The Best Python Tools For Test Automation (Includes A Ready-To-Use Python Environment)
- Top 5 Cybersecurity Tools For A Work-From-Home World
- Dark Patterns at Scale: Findings from a Crawl of 11K Shopping Websites
- Cyclic dependencies are evil
- Toast UI Chart 4.0 출시
- Can you make a basic web app without googling?
- iHateRegex - Now you have two problems.
- 2021 카카오 신입공채 1차 온라인 코딩 테스트 for Tech developers 문제해설
- Top 10 VS Code extensions for 2021
- Microservices test architecture. Can you sleep well without end-to-end tests?
- ~/posts/creating-my-awesome-windows-10-dev-setup
- FastAPI 톺아보기 - 부제: python 백엔드 봄은 온다
- 입문자를 위한 리눅스/맥 커맨드라인 셸 사용법
- 5 questions with Portland-based wiki inventor Ward Cunningham
- Why I'm losing faith in UX
- Open MCT is a next-generation mission operations data visualization framework. Web-based, for desktop and mobile.
- 맥에서 보낸 파일명이 윈도우에서 깨질때 - 파일명 자모 분리 현상
- Become shell literate
- How To Find And Replace Multiple Text Strings Within A Text String
- Protocols, Not Platforms: A Technological Approach to Free Speech
- opensyllabus.org - Mapping the college curriculum across 6,059,459 syllabi.
- Aigo Chinese encrypted HDD − Part 1: taking it apart
- Drop your ebook file here to read it inside the browser!
- 매일 바뀌는 멋진 PC 배경화면, 빙 월페이퍼 앱
- '윈도우 보안의 시작' MS 디펜더의 숨겨진 설정 분석
- 파이썬이 기업을 지배하게 될 8가지 이유와 그렇지 않을 8가지 이유
- 험난한 주니어개발자로의 길
- Publish, ship, and install modern JavaScript for faster applications
- The unreasonable effectiveness of simple HTML
- Low-power Kindle dashboard
- 쿠버네티스가 답이 아닐 때
- Data Fetching on the Web Still Sucks
- WebRTC is now a W3C and IETF standard
- You Don't Really Need Another MOOC
- Vue Native is a framework to build cross platform native mobile apps using JavaScript
- Beyond the Brokers: A Tour of the Kafka Ecosystem
- The Best of Apache Kafka Architecture
- The Pros and Cons of DRY Code
- Best of 2020: When To Use – and Not To Use – Microservices
- With software as currency, containers and serverless are go-to
- A Life in Games
- The Google Cloud Developer's Cheat Sheet
- DNS마스크에 취약점··· 수백만 리눅스 기기, 위험에 노출
- 2021년 SW 개발자 채용 시장 전망… "원격 채용 늘고 클라우드 상한가"
- Explaining the Differences Between UI and UX
- Java on Truffle — Going Fully Metacircular
- The killing of CentOS Linux: 'The CentOS board doesn't get to decide what Red Hat engineering teams do'
- nq: queue utilities
- 여러분의 CS 교육에서 누락된 학기
- Firefox 85 Cracks Down on Supercookies
- kime - Korean IME
- ugrep - Search for anything in everything... ultra fast
- Introducing Twitter Text Editor
- [Windows 컨테이너] 1: Windows 컨테이너에 대한 이해
- Visualize Go process metrics in real-time
- WebRTC는 어떻게 실시간으로 데이터를 교환할 수 있을까?
- Maintaining Psychological Safety under Pressure
- Fun with conversion-operator name lookup
- iconduck - 109,669 free open source icons & illustrations
- aws ec2 nvme disk 의 device 위치 변경을 고정 시키기
- 베이그런트(Vagrant) 튜토리얼
- 30살 비개발자가 3개월만에 풀스택 개발을 하기까지..
- CodeCopy - 코드 복사 버튼을 넣어주는 크롬/FF 확장
- Timeflake - 128bit, 어느정도 정렬된, URL에도 안전한 UUID
- Blind Date: The Reality of Software Engineers Hiring Process
- Powerful data grid component built with StencilJS.
- Seven Hard-Earned Lessons Learned Migrating a Monolith to Microservices
- The Neuroscience of Trust
- Kimchi is an HTML5 based management tool for KVM.
- Site.js - Small Web construction set.
- Firecracker: start a VM in less than a second
- Filmulator - A simple raw photo editor based on the process of developing film
- 7년 차 SI 개발자가 솔루션 회사 이직 후 2년 간 배운 것
- Microsoft Small Basic
- siuba - scrappy data analysis, with seamless support for pandas and SQL
- 고성능 서버/데이터베이스
- Talking to Postgres Through Java 16 Unix-Domain Socket Channels
- Where's the fastest place to put my server? How much does it matter?
- “인터넷이 지구 반대편을 연결하는 방법” BGP의 개념과 동작 원리
- Slack fingers AWS auto-scaling failure in January outage postmortem
- Zoom이 오라클 클라우드를 선택한 이유 [2020]
- Google’s cloud business lost more than $5.5 billion last year, but it’s growing fast
- The shifting market for PostgreSQL
- The MySQL Clone Wars: Plugin vs. Percona XtraBackup
- Null Characters: Workarounds Aren’t Good Enough
- A network analysis on cloud gaming: Stadia, GeForce Now and PSNow
- Litestream is a standalone streaming replication tool for SQLite.
- 쿠버네티스를 7500노드로 확장하기
- We Built The World's Largest Real time High-Frequency, Low Latency Streaming System on Golang
- POSTGRES SCALING ADVICE FOR 2021
- Performance Analysis for Arm vs x86 CPUs in the Cloud
- Reasons why SELECT * is bad for SQL performance
- But how, exactly, databases use mmap?
금요일, 2월 05, 2021
[유튜브 방송] (즐겁게 배우는 SQL #45) 색인 - 색인
[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 45편을 공개해드리겠다. 45편은 색인을 거는 방법을 소개한다.
2021년 2월 5일자 [즐겁게 배우는 SQL #45] 색인 - 색인 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 색인 개념과 색인 생성 기본 형식
- 04:13 단일 컬럼 색인 생성
- 10:04 다중 컬럼 색인 생성
- 14:05 색인 확인
- 15:59 색인 제거
원본 학습자료는 SQLite Index를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:
- 단계 1: 색인 개념과 색인 생성 기본 형식
CREATE [UNIQUE] INDEX index_name ON table_name(column_list);
- 단계 2: 단일 컬럼 색인 생성
- SQL> CREATE TABLE contacts ( first_name text NOT NULL, last_name text NOT NULL, email text NOT NULL );
- SQL> CREATE UNIQUE INDEX idx_contacts_email ON contacts (email);
- SQL> INSERT INTO contacts (first_name, last_name, email) VALUES('John','Doe','john.doe@sqlitetutorial.net');
- SQL> INSERT INTO contacts (first_name, last_name, email) VALUES('Johny','Doe','john.doe@sqlitetutorial.net');
- SQL> INSERT INTO contacts (first_name, last_name, email) VALUES('David','Brown','david.brown@sqlitetutorial.net'), ('Lisa','Smith','lisa.smith@sqlitetutorial.net');
- SQL> SELECT first_name, last_name, email FROM contacts WHERE email = 'lisa.smith@sqlitetutorial.net';
- SQL> EXPLAIN QUERY PLAN SELECT first_name, last_name, email FROM contacts WHERE email = 'lisa.smith@sqlitetutorial.net';
- 단계 3: 다중 컬럼 색인 생성
- SQL> CREATE INDEX idx_contacts_name ON contacts (first_name, last_name);
- SQL> EXPLAIN QUERY PLAN SELECT first_name, last_name, email FROM contacts WHERE first_name = 'John';
- SQL> EXPLAIN QUERY PLAN SELECT first_name, last_name, email FROM contacts WHERE first_name = 'John' AND last_name = 'Doe';
- SQL> EXPLAIN QUERY PLAN SELECT first_name, last_name, email FROM contacts WHERE last_name = 'Doe';
- SQL> EXPLAIN QUERY PLAN SELECT first_name, last_name, email FROM contacts last_name = 'Doe' OR first_name = 'John';
- SQL>
- 단계 4: 색인 확인
- SQL> PRAGMA index_list('contacts');
- SQL> PRAGMA index_info('idx_contacts_name');
- SQL> SELECT type, name, tbl_name, sql FROM sqlite_master WHERE type= 'index';
- 단계 5: 색인 제거
- SQL> DROP INDEX idx_contacts_name;
- SQL> PRAGMA index_list('contacts');
- SQL> PRAGMA index_info('idx_contacts_name');
- SQL> DROP INDEX idx_contacts_email;
- SQL> PRAGMA index_list('contacts');
- SQL> PRAGMA index_info('idx_contacts_email');
목요일, 2월 04, 2021
[유튜브 방송] (즐겁게 배우는 SQL #44) 뷰 - 뷰 제거
[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 44편을 공개해드리겠다. 44편은 뷰 제거 방법을 소개한다.
2021년 2월 4일자 [즐겁게 배우는 SQL #44] 뷰 - 뷰 제거 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 뷰 제거 기본 형식
- 01:19 뷰 제거 예제
원본 학습자료는 SQLite DROP VIEW를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:
- 단계 1: 뷰 제거 기본 형식
DROP VIEW [IF EXISTS] [schema_name.]view_name;
- 단계 2: 뷰 제거 예제
- SQL> CREATE VIEW v_billings ( invoiceid, invoicedate, total ) AS SELECT invoiceid, invoicedate, sum(unitprice * quantity) FROM invoices INNER JOIN invoice_items USING ( invoiceid );
- SQL> SELECT * FROM v_billings;
- SQL> DROP VIEW v_billings;
화요일, 2월 02, 2021
[유튜브 방송] (즐겁게 배우는 SQL #43) 뷰 - 뷰 생성
[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 43편을 공개해드리겠다. 43편은 뷰 생성 방법을 소개한다.
2021년 2월 2일자 [즐겁게 배우는 SQL #43] 뷰 - 뷰 생성 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 뷰 생성 기본 형식
- 05:52 복잡한 질의를 단순화하기 위한 뷰 생성
- 09:38 전용 컬럼 이름을 제공하기 위한 뷰 생성
원본 학습자료는 SQLite Create View를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:
- 단계 1:뷰 생성 기본 형식
CREATE [TEMP] VIEW [IF NOT EXISTS] view_name[(column-name-list)] AS select-statement;
- 단계 2: 복잡한 질의를 단순화하기 위한 뷰 생성
- SQL> SELECT trackid, tracks.name, albums.Title AS album, media_types.Name AS media, genres.Name AS genres FROM tracks INNER JOIN albums ON Albums.AlbumId = tracks.AlbumId INNER JOIN media_types ON media_types.MediaTypeId = tracks.MediaTypeId INNER JOIN genres ON genres.GenreId = tracks.GenreId;
- SQL> CREATE VIEW v_tracks AS SELECT trackid, tracks.name, albums.Title AS album, media_types.Name AS media, genres.Name AS genres FROM tracks INNER JOIN albums ON Albums.AlbumId = tracks.AlbumId INNER JOIN media_types ON media_types.MediaTypeId = tracks.MediaTypeId INNER JOIN genres ON genres.GenreId = tracks.GenreId;
- SQL> SELECT * FROM v_tracks;
- 단계 3: 전용 컬럼 이름을 제공하기 위한 뷰 생성
- SQL> CREATE VIEW v_albums ( AlbumTitle, Minutes ) AS SELECT albums.title, SUM(milliseconds) / 60000 FROM tracks INNER JOIN albums USING ( AlbumId ) GROUP BY albums.title;
- SQL> SELECT * FROM v_albums;
월요일, 2월 01, 2021
[개발자 이야기] (1월 30일) 정말로 당신에게 다른 동영상 강의가 필요할까?
2021년 1월 30일자 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.
2021년 1월 30일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 오늘 방송 주요 내용 소개
- 06:59 timeflake - 어느 정도 정렬된 UUID
- 10:07 정말로 당신에게 다른 동영상 강의가 필요할까?
- 17:51 마이크로서비스를 써야할 때, 쓰지 말아야 할 때
- 24:09 소프트웨어를 구매하기 위해 사용 가능한 네 가지 통화
- 29:52 AWS 람다는 왜 그렇게 빠르게 구동될까?
- 33:13 30살 비개발자가 3개월만에 풀스택 개발을 하기까지..
- 35:49 맥에서 윈도우로 가져온 파일명이 자모 분리된 경우 해법