- REST API (REpresentational State Transfer API) 란? > 널리 사용되는 의미: HTTP 프로토콜로 제공하는 API > 일반적인 프로그래밍 언어를 사용할 때 'API를 사용한다' 고 하면 누가 이미 만들어놓은 함수 (메서드) 를 가져다 쓴다는 의미였다 > 'HTTP Request를 통해서' 서버에서 이미 만들어놓은 기능을 동작시켜 그에 따른 Response를 받는 것 > 보통 Response로는 JSON 파일을 받게 된다 > REST의 의미: 엄밀하게 RESTful이라고 하려면 다음과 같은 것들을 지켜야 한다 >> client-server >> stateless >> cache >> layered system >> code-on-demand: 여기까지는 HTTP를 사..
- JDBC (Java DataBase Connectivity) 자바를 이용해서 DB를 다루기 위한 API. 각 DB 벤더들마다 JDBC 인터페이스를 구현한 드라이버를 제공한다. - JDBC 사용법: 안드로이드에서 SQLite 쓸 때나 PHP에서 MySQL 쓸 때 어떻게 했는지 떠올려보자. 비슷하다. 1) JDBC 드라이버 설치 및 Import Maven에 의존성을 추가해서 쉽게 드라이버 라이브러리를 다운로드받을 수 있다. mysql mysql-connector-java 5.1.45 다운로드 받았으면 .java (혹은 .jsp) 파일에서 -> import java.sql.* 2) 연결 (Connection) 드라이버를 로드하고, 드라이버 매니저를 이용해 Connection 인스턴스를 얻는다. 이때 DB의..
사진에 들어있는 텍스트를 컴퓨터로 인식하는 것 (OCR: Optical Character Recognition) 은 컴퓨터 비전의 한 분야로서 예전부터 꾸준히 연구되어왔던 분야인데, 요즘은 머신러닝 기술이 발전하면서 예전보다 훨씬 높은 인식률을 구현할 수 있게 된 것 같다. 특히 뉴럴 네트워크의 한 종류인 CNN (Convolutional Neural Network) 이 이미지 인식에 많이 사용되는 기술이라고 알고 있다. 하지만 이런 머신러닝 기술을 직접 로우레벨부터 구현하기엔 많은 노력이 필요하다. 뉴럴 네트워크를 구축하고 데이터를 모아서 학습을 시키고 파라미터를 조절하고... 이런걸 OCR을 이용한 서비스 하나 만들어보겠다고 다 배우는 것보다 편리한 방법은 클라우드 서비스를 이용하는 것이다. AWS나..
- Maven이란 무엇인가? Java 기반 프로젝트의 라이프사이클 관리를 위한 빌드 관리 도구. 아파치 재단에서 제작. > 컴파일과 빌드를 동시에 수행 > 서버 측 Deploy 자원을 관리할 수 있는 환경 제공 > 라이브러리 관리가 용이: 라이브러리를 사용할 때 jar 파일을 다운로드받아서 특정 폴더에 넣는 식이 아니라, 설정 파일에 라이브러리 이름/주소를 써주면 알아서 그걸 가져오는 기능이 있다. 전에도 얼핏 들어본 적은 있고 특히 3번째 특징을 보면 생각나는게 안드로이드 스튜디오의 Gradle이다. 안드로이드 스튜디오에서도 라이브러리를 쓰고 싶으면 build.gradle 파일에다가 dependency 어쩌구를 추가해주면 그걸 Gradle이 인식해서 import해주는 기능이 있었다. 실제로 Gradle..
최근에 포스트잇에 매일 그날 할 일들의 리스트를 적어서 벽에 붙여두면 뭔가 목표의식이 좀 더 뚜렷해지고 동기부여가 되지 않을까, 라는 생각을 해서 그렇게 하고 있긴 한데 아무래도 직접 글씨를 쓰는 건 귀찮기도 하고 그냥 해야할 일의 리스트를 적어둔 것 뿐이라 동기부여는 별로 되지 않더라. 시작한지 3일만에 써놓은 일을 미루게 되었다. 그래서 생각난게 이걸 대신할 앱을 만들자는 것이다. 물론 to-do list 관리할 수 있는 앱이야 앱스토어 가면 널려있겠지만, 동기부여를 위해서 '게임 같은' 기능을 좀 넣어보면 어떨까라는 생각을 했다. 운동을 하려고 해도 그냥 운동에는 아무래도 흥미가 안붙어서 펌프 같은 게임으로 대체하는게 나다. - to-do list에 일을 추가하면 거기에 경험치가 일정량 붙고, 그 ..
SQL은 이미 어느정도 아는 내용이기도 하고 얼마 전에 정처기 공부하면서 리뷰하기도 했었으니 대충 슥 보고 넘어가면 될 것 같다. 2-7. MySQL 설치 및 세팅 - 내 컴퓨터에는 이미 WAMP 스택이 깔려있었기 때문에 그거 깔면서 같이 설치됐을 MySQL을 그대로 써먹으면 될거라 생각 - wampstack/mysql/bin 폴더를 환경변수에 추가 - MySQL 로그인: 콘솔창에서 'mysql -u root -p' > -u는 아이디를 주는 부분이고 -p는 패스워드를 입력하겠다는 뜻. 패스워드는 WAMP 깔때 세팅했던 그거 > 아이디를 지정해주지 않고 그냥 mysql이라고만 치면 접근 거부 오류가 뜬다 2-8. SQL - 사용자 계정 생성 및 권한 주기 grant all privileges on (DB명..
1) EL: Expression Language - 값을 표현하는데 사용되는 스크립트 언어로 JSP의 기본 문법을 보완하는 역할을 함 > JSP에는 HTML도 들어가고, 자바 코드도 들어가고 막 섞여있음. 프론트 개발자와 백엔드 개발자 모두가 읽기 편하게 할 수는 없을까? 라는 고민에서 출발. - EL의 기능 > JSP의 스코프에 맞는 속성 사용 > 집합 객체에 대한 접근법 제공 > 수치연산, 관계연산, 논리연산자 제공 > 자바 메소드를 호출할 수 있는 기능 제공 > EL만의 기본 객체 제공: pageContext, pageScope, requestScope, param, header, cookie, ... - 기본 문법: ${exp} ex) ${member.id}님이 로그인하셨습니다. ex) ${par..
Page Scope -> Request Scope -> Session Scope -> Application Scope 뒤로 갈수록 범위가 넓어짐. 1) Page Scope: 한 페이지에서만 유지, 지역변수처럼 사용 - PageContext라는 추상 클래스 사용 - PageContext라는 JSP 내장 객체가 있음 - 한 페이지 내에서만 유지되는 것이므로 forward로 다른 페이지로 넘어가면 소멸됨 - 지역변수처럼 사용하지만 지역변수와 완전히 같은 것은 아님 (나중에 EL, JSTL을 배우면 안다?) - pageContext.setAttribute() / getAttribute() 로 저장했다가 뺐다가 하면 됨 (다른 scope들도 다 비슷함) 2) Request Scope: 하나의 Request를 받아..
1) redirect - 서버가 클라이언트로 요청을 받은 후, 클라이언트에게 특정 URL로 이동하라고 요청할 수 있음 - 서버 -> 클라이언트: HTTP 상태코드 302, 이동할 URL을 헤더에 담아 전송 - 클라이언트: 서버로부터 받은 상태값이 302이면, 헤더값을 보고 해당 Location으로 이동 (즉 해당 페이지를 자동 요청) - response 객체의 sendRedirect() 메서드를 이용하면 됨 - 크롬 개발자 도구의 Network 탭으로 가보면 302 응답코드를 확인할 수 있다 - 리다이렉트 대상 페이지를 다시 요청할 때는 또 새로운 request, response 객체가 생성된다 2) forward Client ->(request) -> Servlet 1 -> (forward) -> Se..
1) JSP 기초 - MS에서 만든 ASP의 대항마로 1999년에 썬에서 발표 - WebContent 폴더 안에 넣으면 됨 - 기본적으로 HTML 안에 (스크립트릿) 라는 영역으로 JSP 코드임을 표시함 > _jspService() 라는 메서드 안에 JSP 파일의 내용이 자바 코드로 변환되어 들어가있는걸 볼 수 있음 > HTML 코드는 out.write, 표현식은 out.print, 스크립트릿 영역은 그냥 들어가있음 - JSP 실행순서 (1) 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달 (2) 브라우저가 요청한 JSP가 최초로 요청되었을 경우, > 서블릿으로 코드가 변환됨 (.java 파일 생성) > 서블릿 코드를 컴파일해서 실행가능한 바이트코드로 변환함 (.class 파일 생성) > 서블릿 클래..