일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vuetify
- webpack
- generic
- vue.js
- bash
- C#
- scss
- 보안
- VUE
- var
- Clone
- C++
- TypeScript
- docker
- machine learning
- condition
- AI
- npm
- security
- property
- type
- git
- Python
- loop
- leetcode
- BOJ
- dotenv
- JavaScript
- 앙상블
- nginx
- Today
- Total
목록분류 전체보기 (162)
ice rabbit programming
OOP(Object Oriented Programming), 객체지향 패러다임은 문제를 해결하기 위한 계산을 객체(object)를 기본으로 수행하는 방법이다. 아마 학부 수업을 듣다 보면 real world의 개념을 가져오는 설명을 많이 들었을 것이다. 객체지향 이전에 많이 쓰이던 절차지향 프로그램은, 무엇을 수행한다는 것에 초점을 맞추고 진행하기 때문에, main 함수에서 실행 트랜잭션, 그리고 각 기능들로 이어지는 flow가 이어진다. 반면에 객체지향은 클래스 간의 상속 및 관계, 클래스 내의 멤버변수/멤버함수를 통해 프로그램 구조가 이루어진다. 객체는 클래스의 인스턴스이고, 하나의 개체라고 보면 된다. 가장 많이 예를 드는 것이 붕어빵 틀이 클래스이고, 그 틀로 찍어낸 붕어빵이 객체이다. 조금 더 ..
오늘 포스팅은 간단한 기능 팁에 관련한 글이다. 최근에 아이콘 이미지를 서버에 보내거나, groovy 빌드 시 로그를 남길 때 base64로 인코딩/디코딩 처리가 필요한 적이 있었다. base64는 문자 그대로 8비트 이진 데이터를 64진법으로 변환하는 인코딩 기법이다. 문자 코드에 구애받지 않는 ASCII 코드를 활용하여 데이터의 변조 없이 송수신함이 보장하는 인코딩이기에, 미디어나 전자 메일을 통한 데이터의 송수신 등에 많이 쓰인다. 대부분의 언어에서 내장 패키지로 base 64 인코딩/디코딩을 지원한다. 본인이 최근에 자바스크립트(와 bash도 처리하긴 했지만)로 변환을 처리했기 때문에 javascript의 메소드를 간단히 소개하겠다. const example = '{"myExample":"hi"}..
아마 CI/CD나 여타 자동화 등을 위해서 bash 스크립트나 파워쉘 스크립트를 많이 이용할 것이다. 본인도 실행하는 서버가 윈도우냐 리눅스냐에 따라서 파워쉘과 bash를 번갈아서 사용하는데, 이번 포스팅에서는 bash quote(따옴표) 내에서 변수를 사용하는 것에 대해 포스팅하고자 한다. bash shell에서 quote는 꽤나 중요한 개념인데, 우선 따옴표는 숫자/문자의 구분을 위한 용도가 아니다. 12345, '12345', "12345"는 모두 같은 스트링 문자열이다. 공백으로 나누어진 문자를 합치거나, 공백을 유지하거나, 특수 문자 등을 스트링으로 사용하고 싶을 때와 같은 경우에 사용하는데, '문자'로서 좀더 명확히 묶는다고 생각하면 좋을 것 같다. 참고로 따옴표로 묶었을 경우에 shell에서..
이전 글에서 SVM과 나이브 베이즈 분류에 대해서 다루었다. 이번 글에서는 KNN 기법을 정리하고 회귀 때와 마찬가지로 평가 기법에 대해서 작성하려고 한다. KNN KNN(K-Nearest Neighbor)는 기존 데이터 중에 가장 가까운 K개 이웃의 정보로 새로운 데이터를 예측하는 분류 기법이다. KNN은 한 가지 가정을 두고 분류하는데, 유사 특성 데이터는 유사 범주에 속하는 경향이 있다는 것을 전제로 한다. 예를 들자면 기존 데이터의 분류를 마치고, 새 데이터를 이전에 분류했던 기준에 따라 분류하는 경우라고 볼 수 있겠다. KNN을 아래와 같은 특징을 가진다. 직관적이고 복잡하지 않다. 해석도 꽤 쉬운 편에 속한다. K 값에 따라 성능이 크게 좌우된다. 딱히 학습이랄 것이 없는 Lazy Model이..
파일을 HTTP로 주고받을 때에는 multipart/form-data의 폼으로 전송하게 되는데, request의 바디는 여러 파트로 나누어져 파라미터와 파일의 내용을 전달하게 된다. 아무래도 업로드가 파일이 서버에 저장되는 것이니 더 주의할 부분이 많다. 정보를 유출하거나 공격하는 파일을 만들어 외부에서 실행하는 것이 파일 업로드 시의 대표적인 공격이다. 파일 업로드 시 주의할 점 사이즈(개수/크기) 제한을 두어야 한다. -> 사이즈 제한을 두지 않으면 대용량의 파일을 올려 DoS 공격을 취할 수 있다. 타입 체크를 실시하여야 한다. 이에 더해 파일의 실행 권한을 부여하지 않는다. -> 웹쉘을 올려 외부에서 실행하여 공격할 수 있다. 외부에서 실행 뿐만 아니라 아예 접근이 불가능하도록, 외부에서 접근이 ..
virtual env(가상 환경) python을 좀 다루었다면, env를 많이 이용할 것이다. 해당 프로그램만을 위한 환경을 위해 env를 따로 만들어서 python을 실행하는 것이다. 그렇기 때문에 가상 환경을 켜고 패키지를 설치하면, 같은 디렉토리라도 가상 환경을 껐을 경우 제대로 실행이 되지 않는다. 위 말이 좀 추상적이라고 생각한다면, 서로 요구한 패키지의 버전 등이 다른 프로젝트끼리 충돌이 일어나지 않게 하기 위해 각각의 환경을 구축하는 것이다. ex) A 프로젝트에서 0.1버전 요구, B 프로젝트에서 0.2버전 요구. 환경이 나누어져있지 않다면 충돌 발생 패키지 매니저 node.js를 사용해보았다면 package.json이 친숙할 것이다. npm은 node.js의 패키지를 관리해주는데(yarn..
이전의 두 글에서 회귀에 대해서 다루었었다. 이번에는 지도학습의 다른 종류인 분류(Classification)에 대해서 다룰 것이다. 분류는 X에 따라 Y를 분류하는 것으로, 주어진 입력 값이 어떤 클래스에 속할지에 대한 결과 값을 도출하는 것이다. 즉, 어떠한 기준에 따라 0 또는 1의 값을 보내는 모델이다. 여기서 어떠한 기준을 결정 경계(Decision Boundary)라고 부르는데, 데이터를 분류하는 기준 값으로 0인지 1인지를 결정하는 기준 값이다. 보통은 확률 0.5를 기준으로 나눈다. 회귀의 분류에의 적용 이전에 다루었던 회귀를 분류에 적용할 수 있는 방법이 있는데, Logistic Regression이다. 회귀는 이론적으로 무한대의 값을 가질 수가 있으므로(선은 무한하니까), 분류에 사용하..
지난 글에서 회귀 분석의 모델에 대해서 간단하게 다루었고, 과적합에 대해서 얘기하며 포스팅을 마무리했었다. 이번 포스팅에서는 과적합 방지 기법부터 시작하여, 회귀 알고리즘을 평가하는 것에 대해 다루도록 하겠다. 과적합 방지 우선 과적합(Overfitting)을 방지하는 방법부터 시작할 것이다. 과적합은 지난 글에도 언급했듯이 모델이 훈련 데이터에 과도하게 맞추어져 있어, 일반성이 떨어지는 경우이다. 일반성을 증가시키기 위해 모델의 복잡성을 줄이거나 랜덤성을 높이는 것이 목적인데, 크게 두 가지를 꼽을 수 있다. 첫 번째로는 교차 검증(Cross Validation)이다. 훈련용 데이터와 별개의 테스트 데이터, 검증 데이터로 나누어 성능을 평가하는 방식이다. 일반적으로는 k-fold 교차 검증을 많이 사용..