Java SE 8이 2014년 3월에 출시되고 3년 반이 흘러 Java SE 9이 2017년 9월에 출시되었습니다. 그리고 2018년 3월에 Java SE 10이 6개월만에 출시되었습니다. Java 10이 6개월만에 출시된 이유는 오라클이 클라우드 주도 개발자(cloud-driven developer)들을 지원하기 위해 앞으로 자바의 릴리즈 주기를 6개월로 변경하였기 때문입니다. 이는 Java 9부터 적용되며 매년 3월, 9월에 새로운 릴리즈가 출시됩니다. 또한 3년 단위로 엔터프라이즈 환경을 위해 안정성에 초점을 맞춘 Long-Term Support (LTS) 버전이 출시될 예정입니다. Java 11이 차세대 LTS 버전으로 2021년 9월에 출시될 예정입니다. Java Platform Group, O..
프로그래밍을 하다보면 비슷한 동작이지만 구현 방법(알고리즘)이 다른 경우를 많이 겪습니다. 예를 들어 외부 메일 가져오기 기능을 구현하려고 합니다. 네이버 메일, 다음 메일, 구글 메일 등을 가져온다고 가정하면 메일을 가져온다에서는 동일한 액션이지만 내부 구현을 살펴보면 호출 API 정보, 필요 파라미터 명 등이 조금씩 다를 수 있습니다. 처음에 네이버 메일와 구글 메일 가져오기만 지원한다면 if문 분기를 통해 다르게 처리할 수 도 있겠지만, 나중에 다음 메일과 네이트 메일 등도 추가적으로 지원한다고 하면 분기가 계속 증가할 것 입니다. 이러면 SOLID 설계 원칙의 개방-폐쇄 원칙(OCP)에 위반하는 코드가 생성될 확률이 커집니다. Strategy(전략) 패턴을 사용하면 이와 같이 같은 문제를 다른 방..
자바스크립트는 기존 C++이나 자바 같은 객체지향 프로그래밍 언어와는 다른 프로토타입 기반의 객체지향 프로그래밍을 지원한다. 자바스크립트에서 객체는 자기 자신의 프로퍼티뿐만 아니라, 자신의 부모 역할을 하는 프로토타입 객체의 프로퍼티 또한 마치 자신의 것처럼 접근하는게 가능하다. 이것을 가능케 하는 게 바로 프로토타입 체이닝 이다. 이전 글에 정리한 함수, this만 이해하면 프로토타입 체이닝은 딱히 어려운 점은 없다. [JavaScript] 4. 함수와 프로토타입 체이닝 (1) - 함수란 [JavaScript] 4. 함수와 프로토타입 체이닝 (2) - this란 객체 리터럴 방식으로 생성된 객체의 프로토타입 체이닝 var myObject = { name: 'foo', sayName: function()..
CSRF 공격(Cross Site Request Forgery)은 웹 어플리케이션 취약점 중 하나로 인터넷 사용자(희생자)가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 만드는 공격입니다. CSRF를 통해 해커는 희생자의 권한을 도용하여 중요 기능을 실행하는 것이 가능합니다. 예를들어, 페이스북에 희생자의 계정으로 광고성 글을 올리는 것이 가능해 집니다. (물론 페이스북은 CSRF 공격에 대해 잘 대응을 하였겠지만, 이번 글에서 피해 서비스 = 페이스북으로 설명하겠습니다.) 조금 더 설명하자면, CSRF는 해커가 사용자의 컴퓨터를 감염시키거나 페이스북 서버를 해킹을 해서 이뤄지는 공격은 아닙니다. 그래서 CSRF 공격이 이뤄지려면 다음 조건이 만족되어..
인사이드 자바스크립트국내도서저자 : 고현준,송형주출판 : 한빛미디어 2014.01.02상세보기 함수 호출과 this arguments 객체C와 같은 엄격한 언어와 달리, 자바스크립트에서는 함수를 호출할 때 함수 형식에 맞춰 인자를 넘기지 않더라도 에러가 발생하지 않는다. 정의된 함수의 인자보다 적게 함수를 호출했을 경우, 넘겨지지 않은 인자에는 undefined 값이 할당된다. 이와 반대로 정의된 인자 개수보다 많게 호출했을 경우 초과된 인수는 무시된다.이러한 특성 때문에, 런타임 시에 호출된 인자의 개수를 확인하고 이에 따라 동작을 다르게 해줘야 할 경우가 있다. 이를 가능케 하는게 함수를 호출할 때 암묵적으로 전달되는 arguments 객체다. 이 객체는 실제 배열이 아닌 유사 배열 객체이다. fun..
코딩셰프의 3분 딥러닝, 케라스맛Keras 코드로 맛보는 ANN, DNN, CNN, RNN, AE, GAN, UNET김성진 저 | 한빛미디어 최근 딥러닝, 머신러닝에 관심이 많아져 코딩셰프의 3분 딥러닝 케라스맛 책을 리뷰하게 되었습니다. 우선 첫인상은 핸디북 처럼 작고 두껍지 않은 귀여운 형태입니다. 목차에서 확인하실 수 있듯이 ANN, DNN, CNN, RNN, AE, GAN, UNET 딥러닝 모델에 대해 케라스를 이용해서 다룹니다. 저는 딥러닝, 머신러닝에 관해 기초지식이 전무한 상태로 봤는데 이 책은 완전 입문자를 위한 책은 아니다라는 느낌을 받았습니다. 입문을 넘어선 초급자를 위한 핵심 요약 책인듯 하네요. 케라스 코드를 통해 모델을 설명해주는데 코드별로 자세하게 설명을 해주셔서 이해하기는 쉽게..
Java 언어에서 배열 arr의 모든 요소를 표시하기 위해서는 다음과 같이 for문을 사용합니다. for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } for문의 변수 i를 통해 배열 arr의 요소에 접근할 수 있습니다. Iterator 패턴은 이런 변수 i의 기능을 추상화해서 일반화 한 것 입니다.Iterator 패턴의 구성은 아래와 같습니다.Iterator(반복자)요소를 순서대로 검색해가는 인터페이스(API) 입니다. 다음 요소가 존재하는지를 얻기 위한 hasNext 메서드와 다음 요소를 얻기 위한 next 메서드를 결정합니다.ConcreteIterator(반복자 구현체)Iterator 인터페이스의 구현체 입니다.Aggregate(..
MongoDB를 설치하면 기본적으로 패스워드 없이 접속할 수 있습니다. 기본 설정이 MongoDB가 설치된 서버의 로컬(127.0.0.1)에서만 접근할 수 있지만, 외부 서비스와의 연동을 위해 외부 접근을 허용하면 크나큰 보안 위협에 놓이게 됩니다.실제로 MongoDB의 이런 기본 설정 때문에 비밀번호 없이 외부 접근을 허용하는 전세계적으로 사용자들이 꽤나 존재했고, 2017년 1월에 이런 취약점을 노린 랜섬웨어가 발생했습니다. 물론 한국 서버들도 예외는 아니였습니다. 이번 공격은 관리자 암호가 설정되어 있지 않은 채 인터넷을 통해 접근이 가능하도록 설치되어 있는 몽고DB를 노리고 있다 - 보안 전문가인 빅터 거브스(Victor Gerves)와 니알 메리간(Niall Merrigan) 관련 기사 : 보안..