프로그래밍
-
Exact Optional Property Types프로그래밍/typescript 2022. 4. 20. 20:52
초기 TypeScript에서 optional property에 undefined 타입이 자동으로 지정이 되었습니다. 이러한 방식은 JavaScript 런타임 시, 값이 objct에 property가 실제로 존재하는지 아닌지 여부에 따라 error가 발생할 수 있습니다. interface Person { name: string; age?: number; } const p: Person = { name: "Daniel", age: undefined, // This is okay by default. }; TypeScript 4.4부터 새로운 플래그인 exactOptionalPropertyTypes 는 optional property type을 쓰여있는 그대로 사용합니다. // With 'exactOption..
-
VSC debugg 셋팅프로그래밍/etc 2022. 4. 14. 15:43
(서론) console.log에서 벗어나고자 미루고 미루던 vsc debugging 셋팅을 이제서야 합니다. Even if you are developing only a small application or have little experience with TypeScript altogether, debugging with VS Code will be inevitable. Not to mention larger projects (본론) 1. launch.json 파일 만들기 Ctrl + Shift + D를 누릅니다. launch.json이 없으면 아래 사진처럼, launch.json을 생성할 수 있습니다. launch.json 설정하기 //launch.json { // Use IntelliSense to..
-
Sentry on premise 적용하기프로그래밍/opensource 2022. 4. 13. 11:22
0. 시작하기 현재 개발하고, 사용중인 앱의 성능을 측정할 수 있는 기능이 필요하였습니다. 여러 솔루션 서비스와 기능들을 검색 중, opensource인 sentry on premis를 적용 해보았습니다. 총 3단계로 나누어서 profile을 합니다. 서버 총응답시간 컨트롤러 처리 시간 DB 쿼리시간 1. ec2 환경 설치하기 ec2환경에서 docker로 sentry를 실행시킵니다. ㄱ. Sentry 설치 시 요구사항 (2022-04-10일 기준) Docker 19.03.6+ Compose 1.28.0+ 4 CPU Cores 8 GB RAM 20 GB Free Disk Space ㄴ. ec2 linux sentry 실행 //yum 업데이트 sudo yum update //도커 설치 sudo yum ins..
-
var, let, const프로그래밍/Js 2022. 3. 23. 14:58
서론) 현재 JS로 진행 중인 ‘우주두잇’ 프로젝트에 여러 명의 개발자가 참여하고 있습니다. 각자의 코드 스타일이 있기 때문에 코드가 난잡해졌습니다. 그 중에서도 const, let을 구분하지 않고 사용하는 경향이 있었습니다. 사실, 저는 var의 사용을 지양하고 let과 const를 적극 사용하고 있었는데, const와 let을 구분 해야 하는 정확한 이유를 몰랐습니다. (단순히 상수 선언에만 const로 선언을 해야한다라고 생각했었음). 그래서 이번 기회에 위 세 키워드의 차이점을 공부하고, 정리하는 시간을 갖습니다. 최종적으로 const와 let 중 언제, 무엇을 사용해야 하는 지를 알 수 있을 것입니다. 본론) var var youCanChangeMe = 'flexible'; if(true) va..
-
Git Flow vs Github Flow프로그래밍/etc 2022. 3. 22. 18:28
회사 내에서 진행 중인 프로젝트는 Git을 통해 소스관리가 이루어 집니다. 특별히 이번에 Git을 통해 프로젝트를 관리하는 방법에 대해 공부를 하는 시간을 가졌습니다. 그 중 Git Flow와 Github Flow에 대해서 알아봅시다. 1. Git Flow Git Flow는 소프트웨어 개발의 각 단계를 쉽게 관리하기 위해 여러가지 브랜치를 갖습니다. ( 만들어진 기능을 쉽게 추적. 릴리즈 단계가 있어 프로덕션 문제를 신속하게 수정하는 데 도움. 빠르게 버그를 고치는 데 도움.) 이 방법은 ‘release’라는 단계가 있는 소프트웨어를 개발할 때 효율적입니다. 만약, 지속적인 배포 환경이라면 맞지 않는 방법입니다. 보통 명확한 버전이 있는 소프트웨어를 구축할 때, 사용되어지는 방법입니다. 주된 브랜치는 다..
-
후위표기식 2 - 백준 (1935)프로그래밍/algorithm 2021. 12. 16. 14:44
문제 후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는 각 피연산자에 대응하는 값이 주어진다. 3번째 줄에는 A에 해당하는 값, 4번째 줄에는 B에 해당하는값 , 5번째 줄에는 C ...이 주어진다, 그리고 피연산자에 대응 하는 값은 100보다 작거나 같은 자연수이다. 후위 표기식을 앞에서부터 계산했을 때, 식의 결과와 중간 결과가 -20억보다 크거나 같고, 20억보다 작거나 같은 입..
-
오등큰수 - 백준(17299)프로그래밍/algorithm 2021. 12. 15. 18:37
문제 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오등큰수 NGF(i)를 구하려고 한다. Ai가 수열 A에서 등장한 횟수를 F(Ai)라고 했을 때, Ai의 오등큰수는 오른쪽에 있으면서 수열 A에서 등장한 횟수가 F(Ai)보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오등큰수는 -1이다. 예를 들어, A = [1, 1, 2, 3, 4, 2, 1]인 경우 F(1) = 3, F(2) = 2, F(3) = 1, F(4) = 1이다. A1의 오른쪽에 있으면서 등장한 횟수가 3보다 큰 수는 없기 때문에, NGF(1) = -1이다. A3의 경우에는 A7이 오른쪽에 있으면서 F(A3=2) < F(A7=1) 이기 때문에, NGF(3) = 1..
-
오큰수 - 백준 (17298)프로그래밍/algorithm 2021. 12. 14. 14:40
문제 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다. 예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,00..