본문 바로가기

All posts123

[Real MySQL] 02_설치와 설정 백엔드 지식 중 부족하다고 여겨지는 DB 를 더 학습하기 위해 Real MySQL 서적을 읽기 시작했다. 앞으로 여러 차례에 걸쳐 책의 내용을 정리해 나가고자 한다. 이번 글에서는 MySQL 설치 이후 서버를 시작하는 단계에서 알아두어야 하는 몇 가지 명령어와 개념을 요약해본다. ✨ 서버 연결 방법 MySQL 서버에 접속하는 방법은 터미널에 mysql 명령어를 실행하는 것인데, 이 때 명령어의 세부 내용이 세 가지로 나뉘게 된다. 첫 번째 방법은 MySQL 소켓 파일을 이용해 접속하는 것이다. mysql -u root -p --host=localhost --socket=/tmp/mysql.sock 💡 소켓이란, 하나 이상의 단말에 위치한 두 개의 다른 프로세스가 통신할 수 있도록 하는 일종의 종착점이다... 2021. 10. 13.
[프로그래머스] 2021 Dev-Matching 웹 백엔드 개발자(상반기) : 다단계 칫솔 판매 📍 문제 설명 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, 조직을 운영하던 민호는 조직 내 누가 얼마만큼의 이득을 가져갔는지가 궁금해졌습니다. 예를 들어, 민호가 운영하고 있는 다단계 칫솔 판매 조직이 아래 그림과 같다고 합시다. 민호는 center이며, 파란색 네모는 여덟 명의 판매원을 표시한 것입니다. 각각은 자신을 조직에 참여시킨 추천인에 연결되어 피라미드 식의 구조를 이루고 있습니다. 조직의 이익 분배 규칙은 간단합니다. 모든 판매원은 칫솔의 판매에 의하여 발생하는 이익에서 10% 를 계산하여 자신을 조직에 참여시킨 추천인에게 배분하고 나머지는 자신이 가집니다... 2021. 10. 12.
[수료 + 35] 10월 2일 ~ 10월 8일의 기록 무엇을 했나?! ✅ 백엔드 스터디 (네트워크 & 알고리즘) - 다섯, 여섯번째 스터디 진행 (여섯번째 스터디 때는 발표) - 교재 Chapter 5 (Router & Routing) ✅ 1:1 JS 스터디 - JS deep dive Chapter 23, 24 (실행 컨텍스트, 클로저) ✅ 알고리즘 연습 - 2단계 3문제 ✅ 기술 블로그 운영 - 네트워크 글 1개 포스팅 - JS 글 1개 포스팅 (+ 1개 내용 보충) - 알고리즘 글 2개 포스팅 ✅ DEVzine 프로젝트 follow-up - 이메일 로그 세팅 수정 - 관리자기능 개선 (개별선택 -> 전체선택) ✅ (신규) pair review web 프로젝트 - FastAPI 세팅 & 리서치 - README 작성 ✅ 신입 백엔드 포지션 지원 - 스타트업.. 2021. 10. 10.
[프로그래머스] 2020 KAKAO BLIND RECRUITMENT : 문자열 압축 📍 문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로.. 2021. 10. 9.
[Javascript] 클로저(Closure) 클로저 (Closure) 는 함수형 프로그래밍 언어에서 사용되는 중요한 특성으로, JS 뿐만 아니라 하스켈이나 스칼라 등의 언어에도 등장한다. MDN 이 정의하는 클로저는 다음과 같다. 클로저는 함수와 함수가 선언된 어휘적(렉시컬) 환경(Lexical environment)의 조합이다. 렉시컬 환경에 대한 논의는 이전 글에서 간략히 했으나, 클로저에 대한 이해를 돕기 위해서 깊이 알아야 하는 개념이므로 렉시컬 환경의 개념부터 알아보자. ✨ 렉시컬 환경과 [[Environment]] 📌 렉시컬 환경 렉시컬 환경은 렉시컬 스코프를 가지고 있다. 렉시컬 스코프는 함수의 스코프와 함수가 정의된 위치에 따라 결정되는 상위 스코프이다. JS 는 렉시컬 환경을 따르기 때문에, 함수의 호출 위치가 아닌 정의한 위치에 .. 2021. 10. 6.
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT : 프렌즈4블록 📍 문제 설명 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙어있을 경우 사라지면서 점수를 얻는 게임이다. 만약 판이 위와 같이 주어질 경우, 라이언이 2×2로 배치된 7개 블록과 콘이 2×2로 배치된 4개 블록이 지워진다. 같은 블록은 여러 2×2에 포함될 수 있으며, 지워지는 조건에 만족하는 2×2 모양이 여러 개 있다면 한꺼번에 지워진다. 블록이 지워진 후에 위에 있는 블록이 아래로 떨어져 빈 공간을 채우게 된다. 만약 빈 공간을 채운 후에 다시 2×2 형태로 같은 모양의 블록이 모이면 다시 지워지고 떨어지고를 반복하게 된다. 위 초기 배치를 문자로 표시하면 아래와.. 2021. 10. 6.
[Network] 라우터 (Router) 의 동작 방식 라우터는 와이파이를 설치하거나 신호를 잡을 때 등, 일상에서도 흔히 사용되는 용어라 낯설지 않은 감이 있다. 하지만 라우터가 무엇인지, 어떤 역할을 하는지 구체적으로 알아보려면 네트워크의 개념과 원리를 잘 알아두어야 한다. ✨ 라우터 라우터는 OSI 7 계층의 3계층 (Network Layer) 에서 동작하는 장비이다. 주요 역할은 패킷의 목적지 IP 주소를 확인하고, 해당 주소의 경로를 지정해주는 것이다. 라우터마다 여러 경로 정보를 가지고 있는데, 들어오는 패킷이 어떻게 하면 최적의 경로로 목적지까지 도달할지 파악하여 포워딩한다. 이를 위해 라우터는 다양한 경로 정보를 수집하며, 라우팅 테이블에 저장한다. 예를 들어 호스트 A 에서 호스트 B 까지 인터넷을 통해 데이터를 전달한다고 하면, A 와 B .. 2021. 10. 4.
[수료 + 28] 9월 25일 ~ 10월 1일의 기록 무엇을 했나?! ✅ 백엔드 스터디 (네트워크 & 알고리즘) - 네 번째 스터디 진행 - 교재 Chapter 4 (Switch & VLAN, STP) ✅ 알고리즘 연습 - 1단계 6문제 - 2단계 1문제 ✅ 기술 블로그 운영 - 네트워크 글 1개 포스팅 - JS 글 1개 포스팅 - 알고리즘 글 1개 포스팅 ✅ 프로젝트 follow-up - 주요 백엔드 기능 1개 디버깅 세팅 (메일 로그) - 서버 도메인 검색엔진 노출 관련 리서치 ✅ 신입 백엔드 포지션 지원 - 스타트업 a / 2차 기술과제 : 과제 100% 완성 & 제출 완료 - 스타트업 b / 1차 면접 (대표 1:1) - 스타트업 c / 1차 면접 (임원 & 대표 3:1) ✅ 기타 - pair review web 프로젝트 회의, repository .. 2021. 10. 2.
[Javascript] 실행 컨텍스트 (Execution Context) 와 소스코드 이전에 Javascript 에서의 this 를 다뤘던 글에서 잠깐 "실행 컨텍스트"를 언급했었다. Javascript 에는 (그리고 아마 대부분의 프로그래밍 언어에는) 실행 컨텍스트라는 개념이 존재하는데, 이를 잘 이해하기 위해서는 우선 "소스코드" 의 개념부터 이해해야 한다. ✨ 소스코드 ECMAScript 는 소스코드를 4가지 타입으로 구분한다. 소스코드는 타입마다 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르며, 이를 간략히 요양한 내용은 다음과 같다. 📍 전역 코드 (Global code) : 전역에 존재하는 코드 (함수, 클래스의 내부 코드 미포함) 1. 전역 스코프 (최상위 스코프) 생성 2. 전역 객체와 연결 3. var 키워드로 선언된 전역 변수 + 선언된 전역 함수를 전역 객체의 프로.. 2021. 9. 28.