생각하기 95

GO - RESTful API만들기 Echo Framework & Gorm ORM

개요 회사에서 업무중 몇가지 정보를 거래처에 제공하는 API를 만들어 줘야하는 경우가 생겼다. 기존의 주 업무는 Java - SpringBoot 프레임워크를 사용해서 했었지만, 이번에 새롭게 Golang 을 사용하는 건 어떤지 얘기가 나와서 고민하다가 결구 Go 언어로 새롭게 API를 개발해 보기로 했다. 먼저 Go 언어는 가볍고 미니멀한 프로젝트를 만들기에 적합하고, 비교적 다른언어보다 최근에 나온언어인지 웹 개발자들이 쓰기 좋은 기능들이 기본 내장되어 있는 듯했다. 일단 Web 통신을 위해 프레임워크나 라이브러리중 적합한 기능일 선택해야했는데, 1. 먼저 기본내장된 http/net, 2. github 순위 1위에 GIN 3. 그리고 한국에서 그나마 인기있다는 echo 이 3가지만 생각했고, 내장되어있..

Programming/GO 2022.04.30

Golang - 한글 UTF8 을 EUCKR 서버로 인코딩처리하기.

개요 저는 현재 맡은 업무가 고(golang) 언어로 API 서버를 개발하는 업무를 맡았습니다. 그런데, 개발 중간에 tcp 통신을 통해 다른 server에게 request 해야할 사항이 생겼는데, 문제는 이 서버에서 한글은 EUC-KR 형식인겁니다.. 이게 왜 문제냐? 바로바로.. 고 (golang 이하 고 라고 하겠습니다)는 rune 이라는 특이한 스타일로 타입을 사용하고 이를 UTF-8로 인코딩합니다. 그러므로 고 언어는 UTF-8 타입을 디폴트로 사용하게 되는데요, 이 타입 그대로 byte 타입으로 변환하게 된다면, byte 코드 또한 그 타입을 따라갑니다. 그래서 통신하는 정보에 한글이 필요하다면 어떤 타입의 char type을 정해뒀는지 확인 할 필요가 있습니다. JSON 보통 다른 serve..

Programming/GO 2022.04.30

스프링부트 API - POST Method 활용하기

개요 POST Method의 의미와 종류, 이를 활용하는 방법을 알아보기 POST Method란 리소스를 전달하여 추가하기 위해 사용되는 API로 Create를 위해 사용되는 Method이다. POST API의 종류 @PostMapping : POST API를 제작하기 위해 사용되는 어노테이션, @RequestMapping + POST method의 조합, 일반적으로 추가하고자 하는 Resource를 HTTP body에 추가해서 서버에 전달하여 요청, 그렇기에 @RequestBody 를 이용해 body값을 받음 DTO : key 와 value 가 정해져있지만, 받아야할 파라미터가 많을 경우 DTO객체를 사용하는 방식 // 1. postMapping @PostMapping(value="/member") ..

Programming/Spring 2022.04.04

스프링부트 API - GET Method 활용하기

개요 API와 GET Method를 이해하고 활용하는 다양한 방법을 알아보기 GET 어노테이션의 종류 @RequestMapping : value와 method로 정의하여 API를 개발하는 방식으로 요즘 추세는 사용하지 않는 편 @GetMapping : 별도의 파라미터 없이 GET API를 호출하는 경우 사용되는 방법 @PathVariable : GET형식의 요청에서 파라미터를 전달하기 위해 URL에 값을 담아 요청하는 방법 @RequestParam : GET형식의 요청에서 쿼리 문자열을 전달하기 위해 사용되는 방법 // 1. ReqeustMapping @RequestMapping(value = "/hello", method = RequestMethod.GET) public String requestTes..

Programming/Spring 2022.04.03

스프링부트 API - REST API 란? 스프링부트로 API만들기

개요 REST API 란 무엇이며, 스프링부트에서 RESTful 한 API를 만들기위해 어떤방식으로 설계및 구현할지 알아보기위해 포스팅합니다. API 란? API는 Application Programming Interface의 줄임말로 응용 프로그램에서 사용할 수 있도록 다른 응용 프로그램을 제어할 수 있게 만든 인터페이스를 뜻합니다. API를 사용하면 내부 동작 로직을 알지못해도 정의되어 있는 기능으로 쉽게 사용할 수 있게됩니다. 여기서 Interface란 어떤 장치간에 정보 교환을 위한 수단이나 방법을 의미하며 대표적으로 마우스, 키보드 등이 해당됩니다. REST 란? REST는 Representational State Transfer 의 줄임말로 자원의 이름으로 구분하여 해당 자원의 상태를 교환하는..

Programming/Spring 2022.04.02

이펙티브 자바 - 2장 객체 주입 , 관리 , 참조

아이템5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 여러 클래스가 하나 이상의 자원에 의존합니다. 예를 들면 맞춤법 검사기는 사전에 의존하는데, 이런 클래스를 정적 유틸리티 클래스로 구현한 모습을 드물지 않게 볼 수 있습니다. 사용하는 자원에 따라 동작이 달라지는 클래스에는 정적 유틸리티 클래스나 싱글턴 방식이 적합하지 않습니다. // 정적 유틸리티를 잘못 사용 public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker(){} public static boolean isValid(String word) {} public static List suggestions(String typ..

Programming/JAVA 2022.03.15

이펙티브 자바 - 2장 빌더, 싱글톤, private 생성자

아이템 2 - 생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩토리와 생성자에는 똑같은 제약이 하나 있다. 선택적 매개변수가 많을 경우 적절한 대응을 하기가 어렵다는 점이다. 처음 자바를 공부할 때, 사용자가 필요로하는 경우의 수가 많을수록 생성자의 가짓수도 많아지는 경우를 경험해보았을 것이다. 1. 점충적 생성자 패턴 public class Camping { private final int tent; private final int clothes; private final int backpack; private final int food; private final int camper; public Camping(int tent, int food) { this(tent, food); } public C..

Programming/JAVA 2022.03.13

HTML <datalist> 태그 속성

개요 HTML 태그 중 select 태그와 하위 태그인 option을 이용해 리스트를 셀렉하고 그 value를 넘기는 경우가 상당히 많을 것이다. 이때 리스트의 양이 많아 스크롤을 쭉 해야하거나, 한눈에 찾기 어렵다면 유저입장에서 여간 불편한 일이 아닐 수 없다. 이를 해결하기 위해 다양한 방법이 있겠지만, 그 중 HTML5 에서 기본으로 제공하는 태그인 datalist 를 이용해 적용하기로 해보겠다. 하나 두울 세엣 네엣 datalist 란? 태그와 유사한 태그로 로 표기한다. 하위 태그로 을 이용해 셀렉할 수 있고, 검색 혹은 자동완성기능등이 있어 option 태그가 많을 때 찾는 용도로 유용하게 사용이 가능하다. select 태그와 다른점이라면, 검색기능과 input 태그를 주체로 사용한다는 점이다..

이펙티브 자바 - 1, 2장 개요, 객체 생성과 파괴

개요 매주 이펙티브 자바를 한 단원씩 공부하기로 했다. 자바 개발자로 일하면서 애매하게 알고넘어갔던 부분과 심화적으로 알고있어야 할 내용을 배우기위해서 이펙티브 자바를 선택했다. 어려운 책이라고 후기들을 봤고, 선배 개발자와 얘기해도 어려운 책이니 잘 안읽힌다고 들었지만, 어렵다고 미루기보단 지금부터 봐 둬야 나중에 다시보는 일이 있어도 보기 수월할 것 같았다. 그러므로 시작해보겠다. 1장 : 들어가기 자바 입문자가 아닌 자바에 익숙한사람을 위한 책이라고 설명하며 시작한다. 나 역시 자바 개발자라고 하지만 입문자나 마찬가지라고 생각한다. 문법만 안다고 전부를 아는건 아니며, 알고 쓰는것과 모르고 쓰는것은 다르다는 것을 알고 있기 때문이다. 이 책에선 성능적인 부분도 있지만 그보다 명확하고 정확하고 유용하..

Programming/JAVA 2022.02.20

Linux - 파일 찾기, 파일의 정보 확인하기

개요 리눅스를 통해 서버에 있는 파일이나, 리눅스상에 있는 파일의 상태를 확인하거나, 코드를 조회하고 찾아야할때가 많을겁니다. 이때 사용할 수 있는 다양한 명령어들을 공부해보았습니다 ! 명령어 명령어 의미 사용법 cat 파일의 내용을 출력, 두개 이상의 파일을 합쳐서 출력도 가능 $ cat file head 해당 파일의 첫줄부터 출력 $ head -n2 file (-n2 : 첫줄부터 2번째줄까지) tail 해당 파일의 마지막줄부터 출력 $ tail -n2 file grep 해당 파일에서 찾고자하는 문자열을 검색해서 해당 열 출력 $ grep hello file ('hello'라는 문자열을 file 에서 검색) cmp 두개의 파일을 비교한다. $ cmp fil1 file2 (byte , line으로 다른 ..

Programming/Linux 2022.02.13