이전 포스팅에 이어 DB 연동 중 Insert만 해보겠습니다. 종료된 mariadb docker 실행. 기존 테이블에 id 컬럼 AUTO_INCREMENT 추가. (이전에 잊었습니다.) ALTER TABLE Device MODIFY id INT AUTO_INCREMENT; debug결과, DB결과, 호출 curl -X POST -H "Content-Type: application/json" -d '{"name":"iPhone19","mac":"11:11:11:22:33:aa"}' http://localhost:8000/v1.0/device 중요한건 DB연동시 "defer db.Close()" 를 꼭 한다는 것입니다. golang에서 함수가 종료되고 나면 GC에서 정리될 때 Close 될까 싶었는데 실제로..
개발하기 전에 DB환경 부터 구성 하겠습니다. 지금 맥을 쓰고 있어서 저는 맥용으로 진행 하겠습니다. mac용 docker 다운로드 https://docs.docker.com/desktop/install/mac-install/ docker mariadb 설치. docker pull mariadb 도커 컨테이너 실행(생성) docker run -d --name mariadb-for-go -e MYSQL_ROOT_PASSWORD=TheGolangOfFuture -p 3306:3306 mariadb 도커 bash 들어가서 MariaDB접속하기 docker exec -it mariadb-for-go bash mysql -u root -p # 패스워드는 생성할때 선언 했던 TheGolangOfFuture 로 입력..
API 서버 예제를 만들어 보려 합니다. gin같은 좋은 웹프레임워크를 쓰면 좋지만 이번포스팅에서는 기본 패키지만 가지고 진행하겠습니다. 저는 백엔드를 익숙한 Django를 주로 쓰지만 언젠가는 Go로 전환하고 싶은 생각을 항상 합니다. Django때문에 아직은 어렵겠지만요. 그래도 기본을 위해 포스팅 해봅니다. 한번에 다 포스팅 하기 힘들어서 계획을 잡고 하나씩 해볼까 합니다. API Mock서버로 테스트 실제 DB를 이용한 테스트 파일 다운로드, 파일 업로드 그다음 것 생각중... HTTP 핸들러 함수가는 요청 처리 응답하는 함수입니다. 그래서 기능별로 URI를 등록해서 핸들러를 등록 하면서 API서버를 구축할 수 있습니다. 이번장은 API에 대한 기본적인 틀만 작성해 보았습니다. 테스트 요청은 다음..
포인트 함수 벤치마킹 Golang은 C언어처럼 포인터를 지원합니다. 하지만 포인터 연산은 안 되는 건 go를 사용하시는 분들은 아실 겁니다. 하지만 포인터 참조만으로도 많은 이익이 있습니다. 그중에서 가장 흔하게 함수를 작성할 때 포인터를 사용한다. 입니다. 이유는 포인터 함수 호출 시 메모리 복사를 안 한다는 것입니다. call by reference라 합니다. 반대로 일반 함수는 메모리 복사가 되는 call by value라 합니다. 아래 코드를 돌려 일반 함수와 포인터 함수의 성능 차를 비교하였습니다. 간단한 string으로 테스트하였지만, 크기가 큰 array나 map을 포인터로 사용하였다면 더 큰 이익을 볼 수 있습니다. 하지만 map 사용 시 교착상태가 발생하여 행이 걸리는 이슈를 경험해 보면..