본문 바로가기

전체 글

(47)
동기와 비동기 그 미묘함에 관하여 데이터베이스가 있고 REST API 서버의 ORM 을 사용해서 CRUD 를 하는 서버가 있다고 가정하자 (사실 대부분이 그렇다.) Read 를 제외한 나머지 Create , Update , Delete 는 왠만하면 트랜잭션을 걸고 에러가 나면 롤백을 하고 모든 에러가 없다고 판단이 되면 커밋을 하는 방식일거다. 위의 로직을 유저 테이블로 예제로 예를 들면 회원가입 API 에서는 유저 생성 -> ( 참조테이블 핸들링 , 뭐 어떤거, 뭐 어떤거 Update , 뭐시기 ) -> 유저테이블 쿼리 -> 반환 이런 로직일텐데 동기 코드로 짯다고 하면 (문법적 에러가 없고 데이터베이스 , ORM 모두 연결이 잘 설정 되어 있다고 가정) 분명 동기코드로 커밋을 했는데 유저테이블 쿼리를 할때 record not foun..
macbook 모니터 2개 연결하는 방법 1. 선택받은 맥북들 위와 같이 HDMI 포트가 있는 것들은 기본적으로 모니터 2개를 지원한다고 보면 된다. HDMI 포트에 하나 연결하고 중간에 있는 USB-C 타입에 C to HDMI 연결선을 하나 구입한후 모니터에 연결하면 문제 없이 작동 된다. But .. 나와같은 2. 선택받지 못한 맥북들 위와 같이 C 포트만 두개만 떡하니 있다면.. ( 심지어 맥세이프도 없음 ) 이 맥북들은 기본적으로 모니터를 2개 연결 할 수 없다. 하지만 선택받지 못한 맥북들이라도 아래를 만족시킨다면 억지로 두개이상의 모니터를 연결할 수 있다. 1. DisplayLink Software 위의 URL 로 들어가면 displaylink 를 다운받을 수 있는데 이걸 받아야 한다. 쉽게 설명하자면 맥에 소프트웨어를 설치해 소프트..
golang gin swagger API annotation FormData Path Query JSON
aws ec2 ssh 접속 오류 1. 퍼블릭 서브넷으로 사용하고 있는 라우팅 테이블에 인터넷 게이트웨이 달기 VPC 접속 후 인터넷 게이트웨이 생성 해당 게이트웨이 VPC 연결 라우팅 테이블 탭 -> 라우팅 -> 편집 0.0.0.0/0 ( 모든 접속 허용 한후 ) -> 인터넷 게이트 웨이 선택한후 -> 저장 서브넷 연결 탭 -> 서브넷 연결 편집 퍼블릭 서브넷 -> 저장 2. EC2 보안그룹 인바운드 룰 설정 EC2 콘솔 -> 인스턴스 -> 해당 인스턴스 ID 클릭 -> 보안 보안그룹 클릭 인바운드 규칙 편집 터미널 열고 해당 네트워크의 공인 IP 가져오기 curl ifconfig.me 211.219.148.233 규칙 추가 SSH , TCP , 위에서 가져온 IP/32 맨 뒤에 32 는 해당 IP 만 접속을 허용한다는 뜻 ( 보안을 ..
도메인 주도 설계 DDD DDD ( Domain Driven Design ) [ 도메인 주도 설계 ] DDD : 소프트웨어를 이해하고 프로젝트를 성공적으로 완성하기 위한 사고방식 도메인 : 사용자가 사용하는 것 도메인은 사용자에 따라 또는 사용자가 바라보는 관점에 따라 지속적으로 변화함 도메인에서 말한 사용자는 누구인가? 사용자라는건 매우 추상적이기에 이 접근을 통해 자기 자신을 포함해서 그 소프트웨어와 관련된 모든 사람이 사용자라고 할수 있다 사용자가 사용하는 것 이라 한다면 단 하나의 코드가 될수 있고 하나의 버튼이 될수도 있으며 소프트웨어 전체가 될수도 있다. 예를 들어 요리사가 소프트웨어에서 요리 이미지를 볼 수 있다고 하면 그 요리 이미지는 하나의 도메인이고, 개발자가 조건문 하나를 가지고 고민하고 있다면 그 조건문도 ..
golang http request query 추가 여러 방법 package main import ( "fmt" "io" "log" "net/http" "net/url" ) func main() { // GET client := &http.Client{} // 1. query 를 host 뒤에 직접 입력 host := "https://api.coinpaprika.com/v1/tickers" query1 := "limit=5" endPoint := fmt.Sprintf("%s?%s", host, query1) req, err := http.NewRequest(http.MethodGet, endPoint, nil) if err != nil { panic(err) } resp1, err := client.Do(req) if err != nil { panic(err) } ..
Linux curl 명령어 cURL curl 이란? 개발자가 CLI로 데이터 전송을 가능하게 하는 도구 쉽게 말해 웹브라우저에서 CLI 로 읽고 쓰고 보고 뜯고 맛보고 즐길수 있다 이말 cli는 다양한 프로토콜을 지원한다고 한다. 하지만 관심없다 우리는 ㅈ밥들이니 https 만 다뤄볼꺼다 바로 시작해보자 터미널을 열고 [ curl google.com ] 을 쳐보면 curl google.com 301 Moved The document has moved here. curl 을 가지고 놀다보면 규격화된 코드들을 많이 접할수 있어서 좋다 코드 301 은 사이트의 도메인이 이전되었다는걸 뜻한다 위에서는 http://www.google.com 으로 이전되었다고 적혀있다 그럼 [curl http://www.google.com ] 을 쳐보자 (..
Linux lsof 명령어 lsof 란 LiSt Open Files 의 글자를 따온 열려있는 파일의 목록이다. 프로세스가 사용하는 오픈된 파일의 목록 [ lsof ] : 열려있는 모든 파일들 목록 lsof COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME loginwind 154 myungsworld cwd DIR 1,13 640 2 / loginwind 154 myungsworld txt REG 1,13 2754560 1152921500312205591 /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow loginwind 154 myungsworld txt REG 1,13 46944 18104124 /Librar..