일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nginx
- generic
- machine learning
- git
- AI
- docker
- security
- VUE
- type
- Python
- leetcode
- 보안
- vue.js
- webpack
- bash
- condition
- loop
- npm
- Clone
- var
- BOJ
- vuetify
- dotenv
- C#
- TypeScript
- JavaScript
- scss
- property
- 앙상블
- C++
- Today
- Total
목록분류 전체보기 (163)
ice rabbit programming
typescript 강의를 들으면서 정리한 마지막 글에서 Type Guard를 다루었다. 이후에 또 다른 기초 강좌를 수강할 기회가 있었고, 이미 들었던 내용이 대부분이었지만 좀 더 익숙해지고자 수강했는데, 다른 부분은 이전에 정리한 내용과 비슷했지만 Type Assertion과 Type Compatibility 관련 내용은 이전에 정리한 내용에 없어서, 추가로 포스팅하게 되었다. Type Assertion Type Assertion은 명시적 타입 캐스팅과 비슷하게 사용할 수 있다. 다만, 실제로 타입이 변경되는 것은 아니고 이런 타입이 들어올 것이라는 것을 프로그래머가 명시해주는 것이다. 다음처럼 사용할 수 있다. let a; let b = a as string; // 강제로 들어오는 type 지정 /..
이전 글에서 nginx의 proxy_pass에 대해서 포스팅했었다. 이번 포스팅에서는 reverse proxy할 때, 인증을 거칠 수 있는 auth_request에 관해 포스팅하려 한다. 대개의 웹 서비스는 인증/권한 관리 시스템을 갖추고 있고, 허용된 요청에 한해서만 정상적인 response를 반환한다. 예를 들어 로그인이 되어 있지 않은 사용자는, 로그인이 필요한 페이지에 접근 시에 로그인 페이지로 redirect 하는 경우가 있다. API 레벨이나 프론트엔드에서도 각각 처리가 필요하지만, 기본적으로 nginx에서 일차적으로 걸러주는 것이 필요하다. 이럴 때 auth_request를 사용할 수 있다. auth_request는 말 그대로 인증이 유효한지를 보내는 것인데, token을 사용한다면 이 to..
nginx는 아파치와 더불어 굉장히 널리 쓰이는 웹 서버이다. 2021년 기준으로 아파치가 약 41.48%로 1위, nginx가 약 26.41%로 2위의 점유율을 보이고 있다. 2000년대~2010년대 초반까지만 해도 아파치가 거의 60%에 육박하거나 상회하는 수준이었다는 것을 생각하면 nginx의 성장세가 무섭다고 할 수 있다. 어쨌거나 웹 서버는 HTTP 서버라고도 할 수 있는데, 클라이언트의 요청에 따라 서버 쪽에서 처리하여 정보를 제공하는 소프트웨어라고 할 수 있다. nginx가 제공하는 기능이 여러가지 있는데, 그 중에 이번 포스팅에서는 reverse proxy를 간단하게 다루려고 한다. reverse proxy Flask나 Express.js 등 자체적으로 serving을 지원하는 프레임워크를..
차원 축소(Dimensionality Reduction)는 변수가 매우 많을 때 데이터를 압축하는 컨셉이다. 즉, 데이터를 압축하고 학습 속도를 개선하기 위함이다. 차원이 높을 때 발생하는 현상 중 하나로는 차원의 저주가 있다. 차원이 높을수록 학습에 요구되는 데이터의 개수가 증가되는데, 만일 고차원일 때 적은 개수의 데이터로 표현하게 되면 과적합(Overfitting)이 발생할 수 있다. 이러한 차원의 저주 발생을 방지하고, 학습 속도 및 성능 향상을 위해 차원 축소가 사용된다. 아래 두 가지 방법이 있다. 주성분 분석(Principle Component Analysis) PCA는 고차원 데이터를 가장 잘 설명할 수 있는 주성분을 찾는 방식이다. 즉, 차원을 축소하면서도 원본 데이터의 특징을 가지고 있..
이전에 Python에서 linter를 적용하는 포스팅을 했었다. 이번 포스팅은 Vue.js에서 eslint를 적용해보겠다. python만큼은 아니라고 생각하지만, vue도 스타일 가이드(공식 스타일 가이드)가 꽤나 깐깐하다. 문법적으로 틀린 것이 아니라도, 강제로 ESLint를 끄지 않는 이상 필수적인 스타일 가이드를 위반하면 실행 단계에서 오류가 발생한다. 공식 가이드를 보면, 필수적인 것과 추천해주는 것 등이 있다. 어떻게 정할지는 개인 혹은 팀마다 자유이나, 최대한 일관적으로 유지하면 좋고 또 자동으로 수정해주는 부분이 많기 때문에 본인은 recommended를 사용하였다. prettier를 부가적으로 설치해서 사용할 수도 있지만, VS Code에서는 ESLint가 자동으로 formmating까지 ..
이전 글들에서 회귀, 분류 등 지도 학습을 다루었었다. 이번 포스팅부터는 정답이 없는 데이터가 주어지고, 숨겨진 구조를 파악하는 비지도 학습(Unsupervised Learning)에 대해서 다룰 것이다. 이번 글은 군집, 클러스터링에 대해 다룰 것이다. 클러스터링은 크게 두 가지로 나눌 수 있다. 하드 클러스터링 : 특정 개체가 집단에 포함되는지 여부(포함or미포함) ex) K-means Clustering 소프트 클러스터링 : 특정 개체가 얼마나 포함되는지 속하는 정도로 표현 ex) GMM 클러스터링의 목표는 군집 간 유사성 최소화, 군집 내 유사성 최대화라고 할 수 있다. 즉, 다른 군집 간 데이터끼니를 최대한 서로 비슷하지 않게 하고 같은 군집 내의 데이터끼리는 서로 비슷하게 하는 것이 목적이다...
현재 개발 중인 팀에서는 Git의 Pull Request를 활용한 코드 리뷰가 활성화 되어 있고, 리팩토링 요청/진행 또한 심심치 않게 일어난다. 아직 처음 속해본 개발 조직이기 때문에 다른 팀의 케이스를 직접 경험해본 적은 없으나, 개발자들 간에 코드 리뷰가 이루어지지 않거나, 일정에 쫓긴 나머지 리팩토링이 진행되지 않는 경우도 몇 번 들었다. 본인은 만 1년 간의 서비스 개발 경험과 그간 읽어본 책들로 리팩토링의 효과가 꽤 크다고 생각을 하는데, 주니어의 관점으로 이를 적어볼까 한다. 좋은 코드 좋은 코드란 무엇일까? 사람마다 정의도 많을 것이고, 중요하게 보는 것에 따라서 우선 순위도 다를 것이다. 본인도 여러 가지가 많다고 생각하지만 한 마디로 표현하자면 '기능의 개선/변경/추가/제거가 쉽게 이루..
최근 Jenkins에서 bash 파일을 실행하고, 그 결과 값을 이용할 필요가 있었다. 값 반환하기(기본) 값 반환(return value)은 특이하게도 echo, printf 등 stdout 출력으로 할 수 있었다(참고 : echo와 printf는 거의 동일하나, echo는 끝에 개행문자(\n)가 자동으로 붙고, printf가 좀 더 다양한 표현을 쓸 수 있다). RESULT=$(curl -X GET https://my_url) # curl 결과를 RESULT에 담음 echo "${RESULT}" # RESULT stdout에 담아 반환 모든 echo가 반환되는 이슈 문제는 보통 스크립트 파일을 작성할 때에는, 진행 과정 및 정보를 알고자 로그를 출력으로 남기는 일이 잦다는 것이다(return valu..