일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- array
- heroku
- 자바입력
- hash table
- 자바 스레드 실행 순서 제어
- input
- Easy
- SpringBoot 2
- 카데인 알고리즘
- scanner
- 사칙연산
- 자바 thread 실행 순서 제어
- Kadane's Algorithm
- R
- JAVA11
- 수학
- Today
- Total
목록분류 전체보기 (192)
DeFacto-Standard IT
PHPStorm과 Codeigniter를 쓰면서 가장 불편했던 것은,자바와 다르게 컴파일 언어가 아니라 스크립트 언어와 이에 대한 프레임워크라 그런지 코드 자동완성 기능이 아주 아주 부족하다는 것이다. 단, @property라는 PHP DOC 주석을 통해 IDE에 힌트를 제공하여 자동완성 기능을 사용할 수 있다. 이를 아는 개발자들은 보통 다음과 같이 Loader클래스를 사용하여 라이브러리나 모델 클래스의 인스턴스를 만들어 로드하고,로드된 객체를 통해 함수 등을 수행한다. class user_model { public function echoModel() { echo 'echo'; } } /** * @property user_model $user_model */ class Welcome extends C..
보통 디버깅을 할 때는 로컬에서 BreakPoint를 잡아서 해당 BreakPoint까지 진행시키고, 멈춘 후 변수 들의 값들을 확인하는 방식으로 진행한다. 웹이 연동되지 않는 프로그램의 경우, 별도의 WAS설정 등이 많이 필요가 없다. 내장된 디버거 하나만으로도 디버깅이 가능하기 때문이다. 그러나 자바와 같은 컴파일 언어로 빌드한 웹 애플리케이션은 WAS에 jar 또는 war파일을 올리는 방식으로 수행하고,php와 같은 스크립트 언어의 웹 애플리케이션은 서버에 스크립트를 올린 후 WAS에 path를 설정하여 읽은 후 실행하는 방식으로 수행된다.이런 상황에서의 디버깅은 몇 가지 설정을 동반하여야 한다. 다룰 주제는 PHPStorm에서 Xdebug를 연동하여, 로컬에서만 돌아가는 프로그램이 아닌, 웹 애플..
https://stackoverflow.com/questions/45461777/lombok-problems-with-eclipse-oxygen/45463023
얼마 전 Eclipse를 쓰다가 학생 용 라이센스로 IntelliJ 1년치를 쓰게 되었다. Eclipse에서도 소스 제너레이트 기능도 있고 Lombok 사용도 가능했지만, 왠지 lombok.jar를 특정 경로에 넣고 재시작 해야만 사용 가능한 버그가 있었다. 너무 불편했다. IntelliJ IDEA에서도 이를 사용해보려고 했는데, 뭔가 해결이 되지 않았다. 기본적으로 시도한 사항은 다음과 같다. 1. Enable Annotation Processing2. Lombok Plugin 설치 후 재시작3. 자바 프로젝트를 Maven 프로젝트로 변환 후, Lombok Dependency 추가 결론적으로 위 사항을 모두 해봐도 해결이 안됐지만, 드디어 해결 방법을 찾아서 기록용으로 남겨둔다. 에러 메시지는 다음과 ..
ObjectMapper Class의 readValue()를 사용하면 String Type의 값을 Object Type으로 변환할 수 있다. 단, 그 사용법이 조금 까다롭긴 하지만, 코드를 봤을 때 그 의도가 상당히 명확하다. public class Main { // throws Exceptions는 제외 public static void main(String[] args) { String personString = "{\"age\":3, \"grade\":1, \"name\":\"ycp\", \"subName\":\"YCP\"}"; ObjectMapper mapper = new ObjectMapper(); Person p = mapper.readValue(personString.getBytes("UTF-..
@RequestBody는, Client에서 Server로 객체의 내용을 전송할 때, 이를 객체로 DataBinding하여 사용할 때 용이하다. 네트워크를 통해서 전송하려면 Object는 무조건 String으로 전송해야 하는데, 다시 받는 곳에서는 String을 Object로 바로 받아서 사용한다면 굉장히 편할 것이다. Client에서는 JavaScript Library인 JQuery의 $.ajax()에서 JSON.stringify()함수를 사용하여 Object를 String으로 변환시킨 후 이를 인자로 태워서 Request한다. @RequestBody는 인자 앞에 붙여서 사용할 수 있다. 이때, JSON의 키 값이 받으려는 Object의 필드명과 동일해야 한다. @RestController @Reques..
JSONObject jObject = new JSONObject();JSONArray jArray = new JSONArray(); JSON 포맷의 객체를 직접 조합할 수 있어 편리하다. 다만, 한 개의 객체만 있더라도 이 객체에 대한 키값이 존재해야 한다. 객체 내에 있는 필드에 대한 키값이 아닌, 객체 자체에 대한 키값을 의미한다. 길이가 길어진다면 점점 복잡해지는 경향이 있다. 한 객체의 정보만을 넘기는 것이 아니라, 여기에 부가적인 정보까지 포함하여 보내야 하는 경우에 사용했다. 부가적인 정보를 포함시키기 위해, 이를 위한 Class를 생성하는 것도 좀 아닌 것 같아서, Response에 객체 정보 뿐만 아니라, 추가적인 정보를 첨가하는 클래스들을 만들고, 이 내에서는 net.sf.json 라이브..
jackson-databind 라이브러리는 REST API를 구현하는데 자주 이용된다. 그 외에 json포맷으로 바꾸는데 여러가지 라이브러리가 쓰인다. gson, json, jackson, net.sf 등의 라이브러리가 있다. 이 라이브러리에는 ObjectMapper라는 클래스가 있는데, Object to JSON / JSON to Object를 모두 지원한다. 여기서는 Object Serialization에 사용되는 writeValueAsString()을 알아볼 것이다. ObjectMapper# writeValueAsString()은 인자로 객체를 넘겨주기만 하면 해당 객체를 JSON 포맷을 String Type으로 변환하여 리턴한다. - ObjectMapper# writeValueAsString(Ob..
1. @ResponseBodyClient에서@RestController Annotation이 붙은 Controller Class에 Ajax Call을 하는 경우이다. @RestController에 포함된 Annotation인 @ResponseBody를 사용하여, HTTP Body에 Object가 JSON 포맷으로 들어간다. @RestController는 Class단에서 매핑한다. 즉, 해당 Annotation이 붙은 모든 메서드는 @ResponseBody Annotation이 붙은 효과를 볼 수 있다. Client는 JavaScript의 Framework인 JQuery의 $.ajax() 등을 통해 Response의 Content-Type을 application/JSON으로 명시할 경우, success(d..
JSON to Object 1. 깊이1의 JSON 객체 - JSPfunction sendAjax(content) { var username = $("#username").val(); var datas = { "boardno" : ${boardVO.boardno}, "username" : username, "content" : content }; var jsonData = JSON.stringify(datas); $.ajax({ method : 'POST', url : '/rest/reply/', data : jsonData, contentType: "application/json", success : function(){ alert("AJAX성공"); }, error : function(){ alert(..