안녕하세요. IT 엘도라도 에 오신 것을 환영합니다.
글을 쓰는 것은 귀찮지만 다시 찾아보는 것은 더 귀찮습니다.
완전한 나만의 것으로 만들기 위해 지식을 차곡차곡 저장해 보아요.   포스팅 둘러보기 ▼

전체 글 (168)

[Web] 쿠키와 세션 (Cookie and Session)

세션과 쿠키는 둘 다 사용자가 특정 서버의 웹사이트에 방문했던 정보를 기억하고 해당 서버가 이를 재사용하기 위한 수단이다. 각각의 특성을 한 번 간단하게 알아보고 넘어가자. 1. HTTP 프로토콜의 특성 전 세계의 사람들은 인터넷이 연결된 환경 하에서 웹이라는 통로로 서로 통신한다. 이때 서로 다른 특성을 가진 기기들이 통신을 할 수 있도록 미리 합의하여 정해놓은 통신 규약을 프로토콜이라 부르며, HTTP는 웹에서 사용하는 프로토콜이다. 쿠키와 세션을 알아보기에 앞서, HTTP 프로토콜의 다음 두 가지의 특성을 짚고 넘어가자. 특성 설명 Connectionless 클라이언트가 요청을 보내고 서버가 응답하면 그 즉시 해당 연결은 종료된다. Stateless 연결이 끊어지면 그 전의 상태 정보는 유지되지 않..

[Git] Troubleshooting 3 - 테스트 서버 충돌

실서버 브랜치가 아닌 테스트 서버에서 충돌이 발생하는 경우에 대한 이슈. 1. 문제 상황 내가 브랜치 A에서, 다른 사람이 브랜치 B에서 작업하는데 둘 다 같은 부분인 X를 건드렸다고 해보자. 이 상황에서 브랜치 B가 먼저 테스트 서버 브랜치에 병합이 되었다면, 나중에 브랜치 A를 테스트 서버에 병합하려 할 때 충돌이 발생한다. 왜 그럴까? 브랜치 A와 테스트 서버 브랜치를 병합하는 것이므로 그 두 개의 브랜치만 놓고 생각해 보자. 브랜치 A와 테스트 서버 브랜치는 둘 다 X를 건드렸기 때문에 충돌이 발생하는 것이다. 테스트 서버 브랜치는 X를 건드리지 않고 가만히 있지 않았느냐고 물을 수 있다. 하지만 테스트 서버 브랜치에는 브랜치 B가 병합되어 있는 상태고, 이는 마치 테스트 서버 브랜치에서 누군가 ..

깃 (Git) 2020.01.08

[Git] Troubleshooting 2 - 원격 서버 revert

실수로 실서버에 적용한 내용을 되돌리기 위해 Revert 작업을 수행하던 과정에서 겪었던 혼란. 1. 문제 상황 실서버 브랜치에서 갈라져 나온 A 브랜치에서 작업을 했다고 가정하자. 이때 A 브랜치에서 작업이 완료되었는데 실수로 테스트 서버 브랜치가 아닌 실서버 브랜치로 병합을 시켰다고 해보자. 그러면 우선 실서버 브랜치에서 Revert 브랜치를 만들어서 실서버 브랜치로 그걸 다시 병합시켜야 한다. 그래야 실서버에 적용된 A 브랜치의 작업 내역이 그대로 원상 복구될 것이다. 하지만 이렇게 한다고 해서 끝이 아니다. 이후 QA(Quality Assurance) 등의 과정을 통해 추가 개발 요구 사항을 전달받을 수도 있는데, 기존의 A 브랜치에서 추가 작업을 하고 실서버 브랜치에 병합을 시키면 충돌이 발생하..

깃 (Git) 2020.01.08

[Git] Troubleshooting 1 - 장고 migration 파일

장고 마이그레이션에 대한 개념이 아직 확립되지 않았던 입사 초창기에 범했던 실수. 1. 문제 상황 개발하던 도중 마이그레이션 파일이 약간 꼬이는 일이 생겨서 무서운 마음에 원격 실서버 브랜치에 있는 모든 마이그레이션 파일들을 복붙 하여 로컬로 가져왔었다. 그러나 실서버 코드를 pull 해오지는 않았다. 즉 실서버에 반영된 마이그레이션 파일은 가져왔지만 로컬의 models.py는 그대로인 것이다. 이 상태에서 실수로 makemigrations 명령을 수행했는데, 그 결과 최신 마이그레이션 파일에 의해 추가하려던 어떤 한 필드(A라고 하자)가 models.py에 정의되어 있지 않았기 때문에 필드 A를 역으로 지워버리는 마이그레이션 파일이 만들어진 것이다. 상황은 여기서 더 심각해진다. 저 상태에서 내 로컬 ..

깃 (Git) 2020.01.08

[이현우] 모르면 호구 되는 경제상식 (쉬운 것부터 차근차근)

0. 책 정보 1. 제목 : 모르면 호구 되는 경제상식 (쉬운 것부터 차근차근) 2. 저자 : 이현우 3. 출판사 : 한스미디어 4. 출간일 : 2019년 09월 18일 5. 쪽수 : 428 페이지 6. 정가 : 15,800원 1. 읽게 된 계기 나에게는 커다란 지적 갈망이 있다. 지적 갈망이 크다는 것을 거꾸로 얘기하면 지적 결핍이 크다는 것이다. 중고등학교 시절 누구보다 열심히 공부해서 부끄럽지 않은 대학에 진학하였다. 하지만 중고등학교 시절 내신과 수능을 위해서 하던 공부는 내가 바라던 공부가 아니었다. 이해력과 기억력이 많이 부족했던 탓에 하나를 완전히 습득하기 위해서는 남들보다 많은 시간이 필요했다. 그러나 시험은 정해진 시간 내에 정해진 범위의 개념들을 공부하고 그것과 관련된 문제들을 빠르게 ..

[Git] 내부 동작 원리에 대한 이해

0. 참고 도식 ▲ Commit 파일, Tree 파일, Blob 파일, Index 파일, Working Directory 파일의 관계 도식 (※ 퍼가실 땐 출처 밝혀주세요!) 1. GIT 내부 동작 원리 이해를 위한 용어 정리 1-1. 로컬 vs 인덱스 vs 저장소 이름 실제 위치 설명 로컬 (Local) = Working Directory = Working Copy 프로젝트 폴더 현재 프로젝트 폴더에 존재하는 파일들 그 자체를 의미한다. 인덱스 (Index) = Staging Area = Cache 프로젝트 폴더 하위 .git/index 파일 개념적으로는 커밋이 이뤄질 준비가 된 파일의 내용들이 위치하는 영역을 의미하며, 실제로는 하나의 파일(.git/index)로서 존재한다. 로컬에 변동 사항이 생겼..

깃 (Git) 2020.01.07

[SQL] 서브쿼리 (Subquery)

1. 서브쿼리 (Subquery) SQL 쿼리문의 하부 절에 또 다른 SQL 쿼리문을 중첩하여 사용하는 기법을 말한다. 주의할 점은, 서브쿼리는 항상 연산자의 우측에 존재해야 하며 반드시 괄호로 묶어줘야 한다는 것이다. 서브쿼리는 다음과 같이 간단히 분류해볼 수 있다. 대분류 소분류 위치에 따른 분류 SELECT 문에 존재하는 서브쿼리 FROM 절에 존재하는 서브쿼리 WHERE 절에 존재하는 서브쿼리 반환 값에 따른 분류 단일 행 서브쿼리 (단일 행 + 단일 열) 다중 행 서브쿼리 (다중 행 + 단일 열) 다중 열 서브쿼리 (다중 행 + 다중 열) 2. 서브쿼리의 분류 2-1. 단일 행 서브쿼리 (Single Row Subquery) 단일 행 비교 연산자인 =, , = 등을 사용할 수 있다. EX) 이름..

[CSS] Flex (Flexible Box)

CSS의 Flex(Flexible Box)는 개별 요소들의 수직/수평 레이아웃 구성을 용이하게 해주는 편리한 기능이다. 많은 경우 display: block 혹은 display: inline-block으로 수직/수평 레아이웃 구성을 시도하지만, Flex를 이용하면 보다 직관적인 방법으로 레이아웃 구성이 가능하며 block과 inline-block을 사용할 때 발생할 수 있는 문제도 막을 수 있다. Flex는 각각의 개별 요소를 나타내는 Flex Item(이하 Item), 그리고 그것들을 담고 있는 Flex Container(이하 Container)로 이루어져 있다. 여기서는 Container와 Item에서 사용되는 주요 속성 값들을 정리하였다. * Flex 연습해보기 : http://flexboxfrog..