나만 읽기 아까운 글이나 문서를 모아두는 공간입니다. 대충 나눈 카테고리에 링크로 이루어진 unordered list 형태로 구성됩니다. 여러분도 북마크에서 몇 개만 공유해 주세요. 레포 주인이 공부하는 분야가 넓지 않아서, 별 거 아닌 것처럼 보이는 기여라도 큰 도움이 됩니다. Repo에 대한 breaking change도 환영합니다.
- 함수형 프로그래밍이란?
- Higher-order-function(고차함수) with Kotlin
- Currying
- 함수형 프로그래밍: partial application과 curry
- 람다, 익명 함수, 클로저
- 자바스크립트의 호이스팅(Hoisting)
- 코루틴 소개
- What is a pure function?
- 유닛테스트에 대한 생각
- 테스트 주도 개발이란
- 코드 커버리지 80% 넘긴 썰 - 테스팅을 잘 하기 위한 8퍼센트 개발팀의 삽질기
- Realizing quality improvement through test driven development: results and experiences of four industrial teams
- 단위 테스트 케이스와 테스트 더블(Test Double)
- Mock Object란 무엇인가?
- Testing Without Mocks: A Pattern Language
- What's the difference between a mock & stub?
- Mocks Aren't Stubs
- 디자인 패턴 종류
- So Singletons are bad, then what?
- Refactoring guru : design patterns
- Repository Pattern
- Dependency Injection
- What is difference between LRU and LFU?
- WTF is Memoization
- What is the difference between Caching and Memoization?
- 캐시가 동작하는 아주 구체적인 원리
- Caching 전략 소개 및 사용 예제
- Exression verses Statement
- Static/Dynamic vs Strong/Weak
- Runtime vs Compile time
- A Python Tutorial To Understanding Scopes and Closures.
- Difference between Definition and Declaration
- What is the difference between statically typed and dynamically typed languages?
- What is Short Circuiting?
- 자바스크립트 개발자를 위한 AST
- The super tiny compiler
- How I wrote a self-hosting C compiler in 40 days
- 개발자에게 유용한 법칙, 이론, 원칙, 그리고 패턴들 #hackerlaws
- The Little Manual of API Design
- Red-Green-Refactor
- Why is global state so evil?
- 점진적인 레거시 웹 어플리케이션 개선 과정
- Clean Code: 5 Essential Takeaways
- Why Premature Optimization Is the Root of All Evil
- 정규표현식의 개념과 기초 문법
- regexr - 정규표현식을 연습할 수 있는 playground
- 불규칙 속에서 규칙을 찾아내는 정규 표현식
- HTML을 정규 표현식만으로 파싱할 수 있을까?
- ignore case sensitivity
- WebSocket과 Socket.io
- Websockets vs Long Polling
- 웹 기술로 구현하는 Adaptive HTTP Streaming
- What are the advantages and disadvantages of using a content delivery network(CDN)?
- GET이냐 POST냐 그것이 문제로다
- API Security Checklist-ko
- API development tools
- HTTP 응답코드 결정 다이어그램
- Web API Pagination with the 'Timestamp_ID' Continuation Token
- JSON:API Standard
- REST API 제대로 알고 사용하기
- 그런 REST API로 괜찮은가
- REST 의 Uniform Interface에 대하여
- Architectural Styles and the Design of Network-based Software Architectures - Roy Fielding
- 바쁜 개발자들을 위한 REST 논문 요약
- REST API의 이상향, HATEOAS
- Richardson Maturity Model
- REST API Design
- REST API Design Tips
- JSONSchema
- object - pattern properties
- object - Schema dependencies
- JSON Schema: verifying object's values, without keys
- 협정 세계시(UTC)
- 유닉스 시간
- List of tz database time zones
- ISO 8601
- What's the difference between ISO 8601 and RFC 3339 Date Formats?
- DateTimeFormat(Joda-Time)
- Deep Dive into DateTime
- 검색엔진최적화(SEO) 쉬운 가이드
- Zero-Click Search 논란, 65%의 검색이 클릭없이 끝난다?
- Black Hat - White Hat SEO
- ‘쉽게 설명한’ 구글의 페이지 랭크 알고리즘
- Oh shit, git!
- How to resolve merge conflict during pull request?
- How do I update a GitHub forked repository?
- .gitignore is ignored by Git
- How can one change the timestamp of an old commit in Git?
- How to change the commit author for one specific commit?
- 좋은 git commit 메시지를 위한 영어 사전
- Pull Request를 이용한 개발 흐름을 적용해 보고 나서
- GitHub의 Pull Request를 로컬로 가져오기
- Reviewing proposed changes in a pull request
- export, echo 명령어
- lsof 사용법
- grep 사용법
- awk 사용법
- htop Explained Visually
- Crontab 사용법
- 리눅스 명령어 sudo, su, su -
- 리눅스 서버의 TCP 네트워크 성능을 결정짓는 커널 파라미터 이야기
- 루프 불변성
- 시간 복잡도 빠르게 이해하기
- 점근 표기법
- 분할정복
- 힙 정렬
- 동적 계획법
- 파이썬으로 정리하는 Quick-Sort
- Dijkstra’s Shortest Path Algorithm in Python
- Levenshtein Distance
- The Algorithms
- Markov Chains - The University of Auckland
- From “What is a Markov Model” to “Here is how Markov Models Work”
- 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
- 고객(Customer)이 아닌 관객(Audience)을 모으는 것이 진짜 마케팅
- 몰락 이후의 퍼포먼스 마케팅
- Manager's Playbook
- '팀의 건강'을 진단하는 방법의 진화
- Delegation 101: Figuring out what to delegate
- Engineering Ladders
- 팀장이 된 후에 알게 된 것들
- 미팅 가득한 팀장의 하루
- The Scoop: Inside Fast’s Rapid Collapse
- 스타트업에서 성장한다는 주니어의 착각
- B2B SaaS에서 세일즈보다 고객서비스가 더 중요한 이유
- 직접 만들지 그랬어
- 소프트웨어 환멸감(Software disenchantment)
- 소프트웨어 개발자 되기는 왜 어려운가?
- [번역] 개발 배우기가 정말 어려운 이유
- Cognitive Biases in Programming
- 당신의 개발자들은 결코 느리지 않다.
- 나는 어떻게 더 나은 프로그래머가 되었는가
- Avoiding burnout as an ambitious developer
- The Forty-Year Programmer
- Microservices with gRPC
- The Complete Guide to the ELK Stack - 2018
- How To Install The ELK Stack - 2021
- Time Series Database and Tick Stack
- 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 참가 신청 기능 개발기
- 타다 시스템 아키텍처
- 전 세계 팬들이 모일 수 있는 플랫폼 만들기
- The Architecture Behind A One-Person Tech Startup
- Announcing Snowflake by Twitter
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초 정리
- Circuit breaker 패턴을 이용한 장애에 강한 MSA 서비스 구현하기
- Are junction tables a good practice?
- The Slotted Counter Pattern
- 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?
- Lock으로 이해하는 Transaction의 Isolation Level
- CAP and PACELC : the basic theorem of distributed database system
- Next-Level Database Techniques For Developers
- DB 파티셔닝(Partitioning)이란
- Insert into a MySQL table or update if exists
- SELECT 결과를 INSERT 하기
- Multiple select statements in Single query
- MySQL Orderby a number, Nulls last
- How to check for Is not Null And Is not Empty string in SQL server?
- MySQL UNIQUE key not working
- 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 '='
- How to show the last queries executed on MySQL?
- MySQL cannot create foreign key constraint
- When to use SELECT … FOR UPDATE?
- 갭락(Gap Lock)과 넥스트 키 락(Next-Key Lock)
- varchar Fields - Is a Power of Two More Efficient?
- MySQL 5.7 FullText Search 이용하기 with ngram
- How can I stop a running MySQL query?
- MySQL 성능최적화
- MySQL8 skip locked / nowait 활용하기
- MySQL Integers: INT, BIGINT, and more
- MySQL data types: VARCHAR and CHAR
- Indexing JSON in MySQL
- Understanding Generated Columns
- Querying - Overview
- Transforming Dimension Values
- Querying - Aggregations
- Querying - Aggregation Granularity
- Query and filter context
- 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
- Exclude empty-string, null and non-existant
- Best way to check if a field exist in an Elasticsearch document
- flask-base
- fbone
- cookiecutter-flask
- flask-foundation
- flask-rest-template
- flask-appbuilder
- flask-realworld-example-app
- flask-large-application-example
- 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?
- Signals
- 스프링부트로 웹 서비스 출시하기
- Gradle + SpringBoot + Travis CI + Coveralls + 텔레그램 연동하기
- 스프링 부트 2.0 레퍼런스 코딩
- JWT 기반 로그인 구현 예제
- 폼 기반 인증 구현 튜토리얼
- MVC 구조에서 service와 serviceImpl을 왜 만드는가
- Glossary
- 제너레이터와 코루틴
- 파이썬 언더스코어(_)에 대하여
- Python __getitem__과 slice의 이해
- 파이썬의 변수
- 시간 복잡도로 살펴보는 파이썬 내장 자료형의 효율적인 활용
- 리얼월드 메타클래스
- Why is Python 3.7 fastest
- Better Python 59 Ways
- The Hitchhiker’s Guide to Python
- Hidden features of Python
- Intermediate Python
- A collection of design patterns/idioms in Python
- Strings in Python
- Is there a difference between “raise exception()” and “raise exception” without parenthesis?
- What is the difference between range and xrange functions in Python 2.X?
- Difference between <type 'generator'> and <type 'xrange'>
memo : you should understand that an iterator and an generator are not the same thing. - List comprehension vs map
- Is PYTHONUNBUFFERED=TRUE a good idea?
- Python equivalent of golang's defer statement
- Python - Disable output buffering
- ignoring backslash character in python
- Nicest way to pad zeroes to a string
- How to re-raise an exception in nested try/except blocks?
- Sort a list by multiple attributes?
- How can the built-in range function take a single argument or three?
- Why True/False is capitalized in Python?
- Why is bool a subclass of int?
- In python, why use logging instead of print?
- Why is the order in dictionaries and sets arbitrary?
- wtfpython
- Python 3.x rounding behavior
- How to round float 0.5 up to 1.0, while still rounding 0.45 to 0.0, as the usual school rounding?
- Behaviour of increment and decrement operators in Python
- Python GIL
- Python GC가 작동하는 원리
- __slots__ magic
- Exponentials in python x ** y vs math.pow(x, y)
- How did Python implement the built-in function pow()?
- Dismissing Python Garbage Collection at Instagram
- Memory Management in Python - Part 3: Object Lifetimes and Garbage Collection
- pipenv란 무엇인가
- pipenv로 Python 프로젝트 관리하기
- Force pipenv to create a new virtualenv
- How to get pipenv running in docker?
- 코드 테스트하기 - The Hitchhiker's Guide to Python
- 테스트에 걸리는 시간을 92% 줄이기
- Advanced Python testing techniques
- How should I verify a log message when testing Python code under nose?
- Assert that logging has been called with specific string
- 비동기 파이썬
- asyncio : 단일 스레드 기반의 Nonblocking 비동기 코루틴 완전 정복
- What does the “yield from” syntax do in asyncio and how is it different from “await”
- Blocking-NonBlocking-Synchronous-Asynchronous
- 비동기 프로그래밍 동작 원리 (asyncio)
- 비동기적으로 Python 다루기
- 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
- SQLAlchemy에서 모든 테이블의 모든 자료 지우기
memo : truncate하는 raw query는 FK 문제로 인해 잘 안 될 수 있으므로 SQLAlchemy를 통해 극복하는 내용 - SQLAlchemy에서 쿼리할 때 조인을 직접 명시해야 하는 경우는 별로 없다
- 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?
- 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