나만 읽기 아까운 글이나 문서를 모아두는 공간입니다. 어떤 주제를 공부하거나, 공부의 방향을 잡거나, 그냥 가볍게 읽기 위한 재밌는 글을 원하는 누군가가, 양질의 글에 쉽게 접근할 수 있도록 도와주는 것이 이 저장소의 목적입니다.
대충 나눈 카테고리에, 링크로 이루어진 리스트(ul) 형태로 구성됩니다. 링크 하나마다 커밋 하나씩, commit description으로 해당 링크에 대한 간단한 요약을 적고 있습니다. 조금 길게 공부할만한 것이라면 TIL에도 커밋합니다.
여러분도 북마크에서 몇 개만 공유해 주세요. 레포 주인이 공부하는 분야가 넓지 않아서, 별 거 아닌 것처럼 보이는 기여더라도 큰 도움이 됩니다.
- 함수형 프로그래밍이란?
- Higher-order-function(고차함수) with Kotlin
- Currying
- 함수형 프로그래밍: partial application과 curry
- 람다, 익명 함수, 클로저
- 자바스크립트의 호이스팅(Hoisting)
- 코루틴 소개
- What is a pure function?
- Mocks Aren't Stubs
- Testing Without Mocks: A Pattern Language
- 단위 테스트 케이스와 테스트 더블(Test Double)
- Mock Object란 무엇인가?
- What's the difference between a mock & stub?
- So Singletons are bad, then what?
- Repository Pattern
- Dependency Injection
- What is dependency injection?
- Dependency Injection Demystified
- DI 란?
- Dependency Injection in Python
- Pinject
"Dependency Injection" is a 25-dollar term for a 5-cent concept.
- 10가지 소프트웨어 아키텍처 패턴
- Circuit breaker 패턴을 이용한 장애에 강한 MSA 서비스 구현하기
- Clean architectures in Python: a step-by-step example
- DRY code vs. WET code
- Red-Green-Refactor
- 객체지향 개발 5대 원리: SOLID
- Why is global state so evil?
- 점진적인 레거시 웹 어플리케이션 개선 과정
- What is difference between LRU and LFU?
- WTF is Memoization
- What is the difference between Caching and Memoization?
- 캐시가 동작하는 아주 구체적인 원리
- REST API 제대로 알고 사용하기
- 그런 REST API로 괜찮은가
- REST 의 Uniform Interface에 대하여
- 바쁜 개발자들을 위한 REST 논문 요약
- RESTful API Design. Best Practices in a Nutshell.
- REST API Design: Filtering, Sorting, and Pagination
- Best Practices for Designing a Pragmatic RESTful API
- How to design REST API for export endpoint?
- Is using magic (me/self) resource identifiers going against REST principles?
- RESTfully design /login or /register resources?
- REST API의 이상향, HATEOAS
- Richardson Maturity Model
- API Security Checklist-ko
- API development tools
- HTTP 응답코드 결정 다이어그램
- Web API Pagination with the 'Timestamp_ID' Continuation Token
- JSON:API Standard
- 협정 세계시(UTC)
- 유닉스 시간
- List of tz database time zones
- ISO 8601
- What's the difference between ISO 8601 and RFC 3339 Date Formats?
- Demystifying DNS for web developers
- SOA Record
- NS Record
- A Record
- AAAA Record
- MX Record
- CNAME Record
- Alias Record
- git blame
- How to resolve merge conflict during pull request?
- How do I update a GitHub forked repository?
- What is .gitignore exactly?
- .gitignore is ignored by Git
- git rebase -i 사용하기
- How can one change the timestamp of an old commit in Git?
- How to change the commit author for one specific commit?
- Oh shit, git!
- Pull Request를 이용한 개발 흐름을 적용해 보고 나서
- GitHub의 Pull Request를 로컬로 가져오기
- Reviewing proposed changes in a pull request
- export, echo 명령어
- lsof 사용법
- grep 사용법
- awk 사용법
- htop Explained Visually
- Crontab 사용법
- 리눅스 명령어 sudo, su, su -
- User Acquisition - appsflyer
- User Acquisition - Adjust
- Re-Engagement
- What is a tracking link?
- Single-Touch vs. Multi-Touch Marketing Attribution
- Retargeting
- Reattribution
- 알아두면 좋은 이메일마케팅 지표
- ARPU / ARPPU
- DAU/MAU Reatio
- 소프트웨어 환멸감(Software disenchantment)
- 소프트웨어 개발자 되기는 왜 어려운가?
- Cognitive Biases in Programming
- 잘하려 하면 잘 안 되는 이유
- Microservices with gRPC
- The Complete Guide to the ELK Stack - 2018
- What are the advantages and disadvantages of using a content delivery network(CDN)?
- Time Series Database and Tick Stack
- Already learned DevOps? Great, now it’s time for GitOps
- Failover & Disaster Recovery
- What is failover?
- What is High Availability?
- Disater Recovery Strategies
- 초보를 위한 도커 안내서 - 1. 도커란 무엇인가?
- 초보를 위한 도커 안내서 - 2. 설치하고 컨테이너 실행하기
- 초보를 위한 도커 안내서 - 3. 이미지 만들고 배포하기
- 개발자가 처음 Docker 접할때 오는 멘붕 몇가지
- 도커를 이용한 웹서비스 무중단 배포하기
- 왜 굳이 도커(컨테이너)를 써야 하나요?
- Intro Guide to Dockerfile Best Practices
- Docker images - types. Slim vs slim-stretch vs stretch vs alpine
- Docker 데이터 볼륨 사용하기
- How to mount a single file in a volume
- How to enter in a Docker container already running with a new TTY
- Docker run vs create
- 테라폼(Terraform) 기초 튜토리얼 - AWS와 테라폼으로 구현하는 Infrastructure as Code
- Terraform을 이용한 Infrastructure as Code 실전 구성하기
- Ansible vs Terraform: Fight!
- [야생의 땅: 듀랑고] SPOF 없는 분산 MMORPG 서버
- [야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
- DEVIEW 2016 참가 신청 기능 개발기
- 타다 시스템 아키텍처
- What is the difference between application server and web server?
- Difference between proxy server and reverse proxy server
- What is an ORM and where can I learn more about it?
- DBMS는 어떻게 트랜잭션을 관리할까?
- A Detailed Guide to Database Denormalization with Examples
- How does database indexing work?
- What do Clustered and Non clustered index actually mean?
- Why do you create a View in a database?
- Are soft deletes a good idea?
- What are OLTP and OLAP. What is the difference between them?
- What are Covering Indexes and Covered Queries in SQL Server?
- What is a stored procedure?
- 데이터베이스 분포도(Database Selectivity)
- What are the materialized views?
- Are junction tables a good practice?
- Insert into a MySQL table or update if exists
- SELECT 결과를 INSERT 하기
- Multiple select statements in Single query
- Illegal mix of collations for operation 'like'
- MySQL 쓰면서 하지 말아야 할 것 17가지
- MySQL 중복 키 관리 방법
- Understanding MySQL Storage Engines
- How to declare a variable in MySQL?
- Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='
- Querying - Overview
- Transforming Dimension Values
- Querying - Aggregations
- Querying - Aggregation Granularity
- Query and filter context
- Bool Query
- ElasticSearch bool query combine
- What is the difference between must and filter Query DSL in ElasticSearch?
- ElasticSearch match vs term query
- Source filter
- Terms Aggregation
- Term level query - range query
- Flask 1.0 Quickstart
- Flask 1.0 공식 튜토리얼
- Flask 1.0에서 달라진 점
- Patterns for Flask 1.0
- Pynash: Proxy objects in Flask (and elsewhere)
- What is the purpose of Flask's context stacks?
- Output Fields - Flask-RESTful documentation
- Signals
- 스프링부트로 웹 서비스 출시하기
- Gradle + SpringBoot + Travis CI + Coveralls + 텔레그램 연동하기
- 스프링 부트 2.0 레퍼런스 코딩
- JWT 기반 로그인 구현 예제
- 폼 기반 인증 구현 튜토리얼
- MVC 구조에서 service와 serviceImpl을 왜 만드는가
- Glossary
- 제너레이터와 코루틴
- 파이썬 언더스코어(_)에 대하여
- Python __getitem__과 slice의 이해
- Python equivalent of golang's defer statement
- What is __pycache__?
- Python - Disable output buffering
- Is PYTHONUNBUFFERED=TRUE a good idea?
- 파이썬의 변수
- 시간 복잡도로 살펴보는 파이썬 내장 자료형의 효율적인 활용
- 리얼월드 메타클래스
- Why is Python 3.7 fastest
- Is there a difference between “raise exception()” and “raise exception” without parenthesis?
- Better Python 59 Ways
- The Hitchhiker’s Guide to Python
- Hidden features of Python
- Intermediate Python
- A collection of design patterns/idioms in Python
- wtfpython
- ignoring backslash character in python
- Nicest way to pad zeroes to a string
- pipenv란 무엇인가
- pipenv로 Python 프로젝트 관리하기
- Force pipenv to create a new virtualenv
- How to get pipenv running in docker?
- 비동기 파이썬
- asyncio : 단일 스레드 기반의 Nonblocking 비동기 코루틴 완전 정복
- What does the “yield from” syntax do in asyncio and how is it different from “await”
- datetime
- collections.OrderedDict
- collections.defaultdict
- 얕은 복사(shallow copy) vs 깊은 복사(deep copy)
- enum
- What's the difference between MySQLdb, mysqlclient and MySQL connector/Python?
- mongo-python-driver(pymongo)
- motor
- redis-py
- pymemcache
- SQLAlchemy 시작하기 - Part 1
- SQLAlchemy 시작하기 - Part 2
- Flask-SQLAlchemy docs - Multiple Databases with Binds
- Literal SELECT
- Query 객체로 WHERE절 작성하기(Common filter operators)
- How to pass a not like operator in a sqlalchemy ORM query
- sqlalchemy.orm.query.Query.slice(start, stop)
- How to union two subqueries in SQLAlchemy
- How to execute raw SQL in SQLAlchemy
- 'select as' in SQLAlchemy
- SQLAlchemy simple example of sum, average, min, max
- Get the number of rows in table using SQLAlchemy
- What's the difference between filter and filter_by in SQLAlchemy?
- How to implement a default condition in all SQLAlchemy's queries
- SQLAlchemy Docs - ORM Events - Query Events
- SQLAlchemy: engine, connection and session difference
- Avoiding boilerplate session handling code in SQLAlchemy functions
- Contextual/Thread-local Sessions
- Dealing with duplicate primary keys on insert in SQLAlchemy
- SQLAlchemy Transaction 관리 Practice 공유
- Unbind object from session
- Session Management - Refreshing / Expiring
- How to close sqlalchemy connection in MySQL
- Dynamically defining a database
- How to custom the table name in peewee?
- Performing simple joins
- Joining multiple tables
- When to use a boto3 client and when to use a boto3 resource?
- boto3 - credentials
- Upload-Download File From S3 with Boto3
- How do I get the file/key size in boto S3?
- EC2(Elastic Compute Cloud)
- 인스턴스 수명 주기
- 인스턴스 유형
- 인스턴스 구입 옵션
- Application Load Balancer 서비스 공개
- 배치 그룹(Placement Gorup)
- Android 공식 가이드
- Android의 HTTP 클라이언트 라이브러리
- Using Retrofit 2.x as REST client
- Retrofit 2와 함께하는 정말 쉬운 HTTP
- Firebase를 실제 모바일 백엔드로 사용하면 일어날 수 있는 일들
- Android의 ORM
- Android의 이미지로딩 라이브러리
- Android 앱 메모리 최적화
- 안드로이드 BadTokenException의 원인과 해결방법
- Android와 개발 패턴
- 안드로이드의 MVC, MVP, MVVM 종합 안내서
- AWS codebuild + codecov 로 저렴하게 android CI 구축하기
- 클린 아키텍처와 함께하는 배민앱 (Android)
- epoxy
- Use Android Jetpack to Accelerate Your App Development