전체 글

개발은 좋은데 뭘로 개발할까
개인 프로젝트/[2022] 유튜브 뮤직 클론코딩

[유튜브 뮤직 클론코딩] 2. nginx에 서브도메인 등록하기

별도 포스팅으로 남기지는 않겠지만, 그동안 유튜브 뮤직에서 사용하는 모달을 만들었다. 모달에 애니메이션도 넣어보면서 css 의 animation 도 사용해보았다. 다른 사람의 코드를 볼 때는 엄청 어렵고 복잡해 보였었는데 애니메이션을 공부하고 보니 각 애니메이션을 단계별로 자세하게 적어서 복잡해보인 것일 뿐 각 단계를 뜯어보면 그렇게까지 복잡하지 않다는 것을 알 수 있었다. 이렇게 만들어졌다. 실제 유튜브 뮤직이랑 비교하면 아이콘도 조금 다르고, 모달에 메뉴도 더 넣어야되지만 일단 UI 넣는건 이정도까지만 해보기로 했다. 이제는 API 서버를 만들어서 프론트에서 백엔드로 HTTP 요청을 날려서 데이터를 얻어온 뒤, 얻어온 데이터를 잘 처리해서 UI에 뿌려주도록 분리된 백엔드를 만들어보려고 한다. 이를 위..

알고리즘 (PS)/BOJ

[백준] 12850 - 본대 산책 2 (G1)

https://www.acmicpc.net/problem/12850 12850번: 본대 산책2 가능한 경로의 수를 1,000,000,007로 나눈 나머지를 출력한다. www.acmicpc.net 처음엔 그림만 보고 그래프 문제를 예상했는데, 문제를 읽어보니 경우의 수를 세라길래 DP로 예상해서 DP 점화식을 세웠다. 근데 dp테이블을 일일히 채우고 있다가는 저 10억이라는 입력데이터를 감당하지 못하겠다는 생각이 들었다. 그래서 결국 알고리즘 분류를 봤다.. 그런데 띠용.. '분할정복을 이용한 거듭제곱' 문제라고 소개가 되어있었다. 다행히 이걸 보고 전에 풀었던 피보나치 문제가 스쳐지나갔다. 행렬 거듭제곱을 이용해서 피보나치 수열을 빠르게 구하는 문제였다. 그런데 부끄럽게도 그 문제를 풀 당시에는 피보나치..

Infra/Network

도메인, CNAME, TTL

프론트엔드와 벡엔드를 어떻게 분리해야하는지 공부하다가 API 서버와 REST API가 나와서 이걸 공부하다보니 api 서버의 주소를 api.example.com 과 같이 쓰기도 한다는 점에서 저 도메인도 별도로 등록을 해야하나? 그건 좀 귀찮겠는데? 싶어서 도메인을 공부해봤다. - 도메인 (Domain) 내가 알고 있는 도메인은 IP 주소를 매번 기억할 수 없으니 이름을 붙여준 것으로 알고 있었다. '대한민국 국민중 주민번호가 000509-3...... 인 사람' 은 너무 길고 복잡해서 알 수 없으니 '홍길동' 라는 이름을 붙여준 것과 같다고 이해했다. 차이가 있다면 이름은 겹칠 수 있지만, 도메인은 겹칠 수 없다는 것 정도? 193.122.xxx.xxx 라는 내 서버에 아이피주소를 다른 사람에게 외우도..

독서/Inside Javascript

[Inside Javascript] 5. 배열

-배열 자바스크립트의 배열은 C의 배열과는 조금 다르다. 오히려 파이썬의 리스트에 더까운데, 그렇다고 파이썬의 리스트와 완전히 같은 것도 아니다. 배열의 생성은 배열 리터럴이나 생성자 함수를 이용한다. 배열 리터럴은 [] 를 이용하여 표기한다. 파이썬과 똑같다. var a = ['apple', 10, true]; 위와 같이 데이터 형이 통일 되지 않아도 된다. 배열 요소에 접근하여 읽고 쓸 때도, 배열 내 위치 인덱스 값을 이용해 [] 로 접근한다. a[0] = 'orange'; console.log(a[0]); // orange 여기까지는 파이썬의 리스트와 다를 게 없어보인다. 그러나 자바스크립트 배열의 특이한 점은 배열에 동적으로 값을 넣을 때, 인덱스를 신경쓰지 않고 넣을 수 있다는 점이다. var..

개인 프로젝트/[2022] 유튜브 뮤직 클론코딩

[유튜브 뮤직 클론코딩] 1. html 코드를 동적으로 생성하도록 수정하기

드디어 한미연합훈련이 끝났다. (만세.....) 인터넷 검색하면 나오는 그 훈련입니다. 보안문제 없어요! 훈련이 끝나고 기존에 웹개발 공부로 하고 있던 유튜브 뮤직 클론코딩을 이어서 진행하기 시작했다. 지금까지는 열심히 구글링하면서 찾아낸 자료로 다음과 같은 화면 구성까지 만들었다. 만들다가 나중에 알게된 건데, PC 유튜브 뮤직과 모바일 유튜브 뮤직 디자인이나 UI구성이 조금 다르다 ㅋㅋㅋ (당연한건가..?) 일단 모바일 버전을 보면서 따라 만들기 시작했으니까 계속 모바일 버전을 참고해서 만들기로 했다. 다크모드는 아직 따로 만들지 않았지만, 나중에 다크모드로 바꿀 예정이다. 내 친구는 저 노란색을 보면서 색이 이상하다고 좀 바꾸라고 했었는데, 저건 Element 영역을 확인하려고 임시로 칠해놓은 색이..

독서/Inside Javascript

[Inside Javascript] 4. 프로토타입 개념

-프로토타입 모든 객체는 각자 부모 역할을 하는 객체를 갖고 있는데, 이 객체를 프로토타입이라고 한다. 객체지향 프로그래밍의 '상속'과 유사하다. 간단하게 객체를 만들어서 출력해보았다. 책이 옛날 책이라 그런지, 책 내용과는 달리 크롬에서도 __proto__ 가 아니라 [[Prototype]] 프로퍼티가 보인다. ECMAScript 명세서에 의하면, 모든 자바스크립트 객체는 자신의 프로토타입 객체를 가리키는 [[Prototype]] 프로퍼티를 가진다. 이 프로토타입 객체의 종류는 여러가지가 있는데, 어떤 종류의 객체를 프로토타입으로 가질지는 사바스크립트 룰에 따라 객체를 생성할 때 결정된다. 예시와 같이 객체 리터럴로 생성한 객체는 Object.prototype 객체를 프로토타입 객체로 가진다. 근데 한..

자기계발/생각 정리

내 도메인이 날아갔다...

작년 이맘때부터 만들고 있던 개인사이트가 있다. code-server 설치 테스트 하다가 서버가 맛이 가서 초기화하고 지금은 새로 만들었지만..^^ 한 일주일 전에 깃허브에 레포를 만들어서 형상관리도 시작했다. (왜 진작 깃에 안올렸지..?) 오라클 클라우드에 LEMP 구성을 까는 방법을 설명해둔 블로그 글을 따라 만들면서 freenom.com 사이트를 이용해 무료 도메인도 연결시켜두었었다. 깃허브 레포지토리 이름이기도 한 everdu.tk 이다. 평소처럼 termius 앱으로 서버에 가서 웹사이트랑 유튜브 뮤직 클론코딩을 하고 있었는데, 결과물을 확인하려고 everdu.tk 로 갔는데, 갑자기 DNS 관련 오류가 뜨면서 도메인을 찾을 수 없다고 떴다. 파이어폭스로도 가봤는데 똑같았다. 그래서 1년만에,..

자기계발/코딩테스트, 대회

Show Me The Code (원티드 주관 코딩테스트 대회) 22년 1회차 후기

내 블로그에 언제나 응원의 댓글을 달아주시는 코딩워리어 선배님의 정보를 통해 알게된 대회이다. 한번 찍먹으로 참가해봤는데, 생각보다 어렵다고 생각했던 문제가 "엥 이게 된다고?" 하는 느낌으로 풀렸다. A번 N종류의 물약을 모두 사야 하는데, 특정 물약을 먼저사면, 일부 물약을 할인해준다. (할인으로 인한 최소가격은 1) 이 상황에서 물약을 사는 최소 비용을 구하는 문제이다. 당연히 그리디부터 떠올려서 고민해봤는데,,, 물약 종류가 겨우 10개밖에 되지 않았다. 시간제한도 무려 3초로 넉넉했다. 이건 그냥 다해보란 소리겠구나 싶어서 permutation 으로 10종류 물약의 구매 순서를 모두 다 시도해보면서 최소 물약 구매비용을 구했다. 파이썬은 pypy3 제출밖에 안됐는데, 언어별 시간 보너스를 받아 ..

알고리즘 (PS)/BOJ

[백준] 19591 - 독특한 계산기 (G3)

https://www.acmicpc.net/problem/19591 19591번: 독특한 계산기 숫자, '+', '*', '-', '/'로만 이루어진 길이가 106 이하인 수식이 주어진다. 계산 과정 중의 모든 수는 −263 이상 263 미만이며, 0으로 나누는 경우는 없다. 숫자 앞에 불필요한 0이 있을 수 있다. www.acmicpc.net 자료구조를 이용한 깡 구현 문제이다. 구현문제아니랄까 한글자 오타난 걸 디버깅하느라 애를 먹었다. (무수한 assert 문 제출 시도..) 맨 앞의 연산자 / 맨 뒤의 연산자 둘중 하나를 골라서 스택처럼 처리해야하므로 덱을 이용했다. 파이썬으로 풀 때 음수 나눗셈에 주의하고, 음수 하나만 입력으로 들어오는 코너케이스를 주의하면 어렵지 않게 풀 수 있다. from ..

독서/Inside Javascript

[Inside Javascript] 3. 자바스크립트의 객체

- 객체의 생성 방법 1. Object() 생성자 이용 : var foo = new Object(); 2. 객체 리터럴 방식 이용 : var foo = { "property": value } 3. 생성자 함수 이용 : 객체를 생성하는 생성자 함수를 이용한 개체 생성 - 객체의 프로퍼티 읽고 쓰기 1. [ ] 를 이용한 접근 => 프로퍼티명을 '문자열' 형태로 대괄호에 담아 접근. 프로퍼티명을 그대로 입력하면 그 이름의 변수 값을 toString() 으로 바꾸어 접근하려고 시도하므로 문제가 발생할 수 있다. 프로퍼티명에 변수명으로 쓸 수 없는 특수문자가 있는 경우,대괄호를 이용한 접근만 가능하다. ('-' 등, 책에서는 프로퍼티명이 '표현식' 이거나 '예약어' 일 경우라고 설명하고 있다.) 또 변수의 값을..

에버듀
Blog. 에버듀