Nginx란? 서버를 배포할 때 Nginx 서버를 두고 ssl을 적용했었다. 오늘은 이 Nginx를 자세하게 공부해볼 것이다. Nginx를 검색해보면 주로 다음과 같은 기능을 한다고 한다. Web Server Reverse Proxy HTTP Cache Load Balancer 이것이 무엇을 뜻하는지 하나씩 도장을 깨며 알아보자. Nginx as Web Server 웹 서버는 클라이언트에게 HTTP형식의 요청을 받고 처리를 해준다. 유저가 "사진 나와라 Get!" 하는 요청을 하면 유저의 브라우저에 사진을 보여주고, "글 나와라 Get!" 하면 글을 보여주는 것이다. Nginx는 이 클라이언트의 요청을 최소한의 하드웨어 리소스로 여러 클라이언트에게 동시에 처리하도록 설계 되어 나온 서버이다. 가장 많이 ..
2021 8월부터 비밀번호 인증을 사용한 원격 Git Push가 막혔다. 대신, Git은 Personal access token 을 사용하는 것을 권장하고있다. 이 토큰을 사용하는 방법은 간단하다. 본인 GitHub의 우측상단 프로필 클릭 Setting으로 이동 Setting 메뉴에서 Developer settings으로 이동 Developer settings 메뉴에서 Personal access tokens Generate new token 을 클릭해서 새로운 토큰을 생성 Note에는 토큰의 역할을 적는다. Select scopes에서 토큰의 적용범위를 정한다. 소스코드푸쉬용으로는 repo만 선택해도된다. 토큰이 생성되면 비밀번호 대신 토큰을 사용하면 된다.
불균형 데이터 다루기 - Resampling Kaggle - Resampling strategies for imbalanced datasets 을 중심으로 정리한 글입니다. Classification에서 불균형 데이터를 다루는 방법을 resampling 에 중점을 두고 under-sampling, over-sampling의 대표적인 것들을 알아보자. 불균형 데이터셋이 뭔데? 불균형 데이터셋은 각 클래스가 가지고 있는 데이터양 차이가 커서 불균형한 데이터셋을 말한다. 대표적인 불균형 데이터셋은 다음과 같다. 금융사기 : 금융사기 데이터셋은 실제 사기 데이터가 1~2%밖에 되지 않는다. 광고 클릭 예측 : 클릭 예측 데이터 세트도 클릭률이 그렇게 높지가 않다. 항공 사고 : 비행기 사고가 발생하는 경우가 별..
로지스틱 회귀와 신경망의 차이 로지스틱 회귀는 히든레이어가 없는 신경망의 특수한 경우라고 볼 수 있다. 로지스틱 회귀는 선형 모델에 주로 사용하는데, 선형모델이 아닌 복잡한 비선형 관계에서는 사용하기 어려울 정도로 퍼포먼스가 나지않는다. 그에 반해 신경망은 히든레이어를 구축하고 점점 더 복잡한 관계를 포착할 수 있기 때문에 퍼포먼스가 더 좋다. 비선형관계에서 Logistic Regression의 decision boundaries. 죽 그어진 선 형태라 위와같이 비선형분포에서 정확도가 떨어질 수 밖에 없다. 비선형관계에서 은닉층을 4개 둔 신경망의 decision boundaries. 참조 Quora: What is the difference between neural network and logisti..
역전파와 경사하강법의 차이점 역전파와 경사하강법은 같은 것인가? 가중치와 편향을 업데이트하기 위해서 사용한다는 것이 비슷해서 헷갈리는 역전파와 경사하강법. 과연 같은 것일까? 찾아보았다. 경사하강법 : 비용함수가 최소가 되도록 가중치와 편향을 찾는 최적화 알고리즘. 역전파 : 신경망의 기울기를 계산하는 알고리즘. 즉, 경사하강법은 비용함수가 최소가 되도록 하는 가중치와 편향을 찾기위해 역전파(신경망 기울기 계산) 를 사용할 수 있는 것이다. 결론 : 역전파와 경사하강법은 똑같지 않으며 경사하강법이 역전파를 이용하는 관계다. 참고 What is the difference between gradient descent and back propagation in deep learning? Are they not..
Clean Code 1. 깨끗한 코드 의도를 분명하게 이름을 지으라. 나쁜 예 int d; 좋은 예 int elapsedTimeDate; int daysSinceCreation; 코드의 맥락이 코드 자체에 명시적으로 드러나게 하여 정보를 충분히 제공해야한다. 그릇된 정보를 피하자 일관성을 유지하여 깔끔한 정보를 주자. 미리 정해진 예약어는 피해서 깔끔한 정보를 주자. l과 1, o와 0과 같이 헷갈릴 수 있는 문자를 피하자. 불용어를 쓰지 말자. class라는 이름을 이미 사용하고 있어서 klass라고 하고싶은가? 하지말자. 불용어는 중복이기도 하다. money와 moneyObject가 있다면 무엇을 뒤져야 하는지 헷갈리지않겠는가! 쓰지말자. 발음하기 쉬운 이름을 사용하자. 프로그래밍은 사회활동이다. a..
Gradle Gradle이란? 그루비(Groovy) 기반의 빌드 자동화 오픈 소스 빌드 스크립트를 xml이 아닌 그루비(Grooby)로 작성한다. 그루비(Groovy)란? 특정 도메인에 특화된 언어인 DSL(Domain Specific Language) JVM 위에서 돌아가며 Java에 파이썬,루비 등의 특징을 얹었기 때문에 Java와 문법이 유사하다. Gradle wrapper를 이용하여 gradle이 설치되어있지 않아도 사용 가능(버전도 신경쓰지않아도 됨) 확장성이 뛰어나다. Gradle vs Maven Gradle의 Groovy 언어를 이용한 스크립트 작성 vs Maven의 xml 작성 Gradle의 주입 방식 vs Maven의 상속 방식 Gradle이 Maven보다 빌드속도가 더 뛰어나다. Gra..
ServletScope 서블릿에서 변수를 지정하고 객체에 담아 포워드 하려면 객체가 어디까지 유지되는지를 반드시 알아야 마음대로 변수를 가지고 놀 수 있을 것 이다... 서블릿 객체의 각 범위들을 공부해보자! Servlet Scope 서블릿의 스코프는 대략 이런 식으로 되어있다. JSP에서만 움직이는 Page Scope에서부터 애플리케이션 전체를 아우르는 Application Scope까지 하나씩 알아보자. Page Scope JSP 내에서 로 선언되는 것은 해당 JSP 안에서만 사용 할 수 있는데 이런 개념이 Page Scope이다. 그래서 JSP의 지역변수처럼 활용이 가능하다. 클라이언트(브라우저)의 요청이 있을경우 PageContext내장객체의 변수는 JSP 안에서만 머물게 된다. 그러므로 포워드 ..
서블릿 초기화 파라미터 (ServletConfig & ServletContext) 자주 변하는 데이터를 서블릿에 넣어야 한다고 생각해보자. 서블릿 하나하나에 하드코딩을 하게 될 것이다. 이것은 유지보수를 생각하면 옳지 않은 방법이다. 그리하여 선대(?) 개발자들은 DD(배포 서술자)에 변화하기 쉬운 데이터를 설정해주고 서블릿에서는 그것을 파라미터로 받게 만들었다. 이제 데이터가 변경될 때는 DD만 수정하면 되는 것이다! 이 방법에 대하여 공부해보자. ServletConfig 초기화 파라미터 컨테이너는 서블릿을 하나 생성하려고 할 때 하나의 ServletConfig 객체를 만든다. 이 ServletConfig 객체를 이용하여 서블릿을 초기화 시켜줄 수 있다. 과정을 한 번 보자. 과정 서블릿이 만들어질 때..