일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- BOJ
- 앙상블
- loop
- condition
- vuetify
- Clone
- dotenv
- leetcode
- machine learning
- C#
- webpack
- C++
- scss
- docker
- JavaScript
- var
- type
- TypeScript
- bash
- Python
- 보안
- vue.js
- AI
- property
- nginx
- git
- VUE
- npm
- generic
- security
- Today
- Total
목록분류 전체보기 (162)
ice rabbit programming
타입스크립트에서는 타입의 정적 체크와 더불어, OOP의 인터페이스와 클래스도 지원한다. 용법은 C#이나 자바에서의 용법과 비슷하다. 인터페이스 자체에 관한 이야기는 다른 OOP 언어에서 다루었을 것이므로, 간단하게만 짚고 넘어가겠다. 인터페이스를 사용함으로 겹치는 규격을 정하여 규격(형태)이 같은 클래스 간에 재사용성을 높이고, 클래스 간의 결합도를 줄일 수 있다. (자세한 내용은 추상 클래스 혹은 인터페이스를 찾아보자) interface Person { name: string; age: number; } const person: Person = { name: 'KDH', age: 35 } 만약 자바스크립트처럼 interface를 쓰지 않고 사용하려하면 아래처럼 항상 정의해주어야한다. const pers..
타입스크립트란 자바스크립트가 가진 다른 C계열 언어들과의 차이는 크게 두 가지라고 개인적으로 생각한다. 첫 번째로는 비동기, 두 번째는 타입이다. 이 중에 동적 타입은, 자바스크립트만의 특징은 아니다. 파이썬과 같이 런타임에 정해지는 스크립트 언어도 존재한다. 어쨌거나 그런 이유로, 컴파일 언어와는 다르게 정적 타입으로 사전에 체크할 수가 없었고, 이를 해결하고 실행 전 단계에서 에러를 최대한 거르고자 여러가지 방법이 나왔다. 그 중 하나가 바로 타입스크립트이다. 타입스크립트는 자바스크립트의 상위호환(SuperSet)으로, 단순하게 생각하면 타입을 가진 자바스크립트의 느낌이다. 거기에 class, interface 등을 추가해서 자바나 C#과 같은 OOP 프로그래밍을 할 수 있다. 인터프리터 언어인 자바..
자바스크립트를 사용하면 var, let, const로 변수를 선언하게 된다. 순수 자바스크립트는 컴파일 타임에 타입을 알 수 없기 때문에, 타입 추론을 통해 런타임에 타입을 정하게 된다. var, let, const 각각의 차이에 대해 간단하게 정리해보았다. var : ES5 이전까지 쓰이던 변수 키워드. 함수 스코프에서 유효하다. 재선언이 가능하고, 호이스팅도 가능하다. let(값 변경 가능), const(값 변경 불가) : ES6부터 쓰이는 변수 키워드. 블록({}) 스코프에서 유효하다. 재선언 및 호이스팅이 불가능하다. 즉 간단하게 말하면 var는 예전에 쓰던 것, let과 const는 요즘 쓰는 것인데 스코프(범위)나 재선언은 들으면 바로 감이 올 텐데 호이스팅이라는 개념은 잘 와닿지 않는 분들도..
최근 Vue.js를 사용하며 WebPack을 사용했는데, local에서 proxy table의 사용을 환경 변수에 따라 다르게 설정하고 싶었다. (webpack이 아닌 vue-cli를 활용한다면 이 글을 참고) dotenv 패키지 적용 그러던 중에 dotenv 패키지를 찾아서 적용하였다. npm install dotenv dotenv 패키지는 여러 프레임워크에 존재하는데, .env 파일을 통해 환경 변수를 설정해주는 패키지이다. const dotenv = require('dotenv'); dotenv.config(); 이렇게 간단하게 사용할 수가 있는데, dotenv.config 내에 아무 것도 명시해주지 않으면 루트에 있는 .env 파일을 찾아 적용하게 된다. 경로를 지정해주고 싶으면 아래와 같이 적으..
webapp과 webapi를 분리하여 개발하다보면, webapi 호출이 CORS 이슈로 인해 제대로 불리지 않는 경우가 많다. CORS는 Cross Origin Resource Sharing로, 도메인 또는 포트가 다를 경우에 호출을 허용하지 않는 정책을 말한다. 보안을 위해 고안된 정책으로, SPA를 기반으로 호출할 때에는 번거로운 것이 사실이다. 물론 개발 서버나 운영 서버에 올리고 나면 백엔드에 render를 붙이든, 따로 구성했지만 nginx를 통해 내부 호출을 구성하든간에 CORS 이슈를 위반하지는 않게 되어 운영상에 문제되지는 않는다. 다만 local에서 개발할 때 API 호출을 통해 테스트가 되어야 코드를 올리고, 빌드를 하고 배포가 될 것이다. CORS를 해결하기 위해 크게 두 가지 방법이..
아마 build.gradle 파일은 안드로이드 쪽에서 많이 봤을 것이다. 본인이 안드로이드를 했던 시점은 2017~2018년 쯤이라 지금은 달라졌을 수도 있지만, 자바 관련된 빌드를 할 때 build.gradle을 이용한다. 이 파일은 Groovy라는 언어로 작성되는데, Groovy는 자바를 베이스로 파이썬, 루비 등의 특징을 더한 동적 OOP 언어이다. 자바를 베이스로 만들었기 때문에 자바의 라이브러리 등을 가져다 쓸 수 있으며, 자바 개발자들은 시간을 많이 들이지 않고 사용할 정도로 익힐 수 있다. 다만 본인은 자바를 학부 수업 한 개와 안드로이드 조금 외에는 다루어본 적이 없기에... 좌우간 빌드를 할 때 이걸 사용하는데, 자바가 아닌 C# 클라이언트 프로그램임에도 bat 파일들과의 조화를 통해 b..
npm은 node.js에서 사용하는 패키지 관리자인데, 많은 편리한 플러그인들이 있어 유용하게 사용할 수 있다. python의 pip와 유사하다. 그런데 npm도 버전이 다양한데, apt-get 등으로 설치할 경우에 버전이 제각각으로 설치되어, 나중에 꼬이게 되는 문제가 발생한다. 로컬에서 npm 버전을 업그레이드하거나, CI 서버에서 빌드를 할 때 등... 보통 그럴 때는 npm의 cache를 지워서 해결한다. npm cache는 일반적으로 npm-cache/_cache 폴더에 저장된다. 이 디렉토리는 모든 HTTP 요청 데이터와 패키지 관련 데이터를 저장하는 캐시이다. npm cache clean --force 첫 번째 방법은 npm cache clean --force 명령어이다. npm 버전 5 이..
leetcode.com/problems/find-all-numbers-disappeared-in-an-array/ Find All Numbers Disappeared in an Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com PS를 C++로 풀다가 C#으로 풀고, 이제는 Python으로 풀고 있다. Python이 확실히 내장 함수도 많고 숏코딩에 적합해서 훨씬 편하긴 한 것 같다. 물론 로직 고민은 똑같지만.. 이 문제는 1~배열길이 숫자들이 1번 ..