Universal Link (+ Deeplink)
·
Swift-iOS/iOS
보호되어 있는 글입니다.
야곰 아카데미 커리어 스타터 캠프 수료 후기
·
Swift-iOS
잘(?) 다니던 회사를 그만두고 개발자가 되기로 마음먹기까지 이전 직장에서 업무에 대한 회의감이 커지고 있었던 와중에 회사에서 직원들을 대상으로 코딩 교육 프로그램을 시작했다. 파이썬과 자바 중 나는 자바를 선택했고, 6개월?간 업무와 공부를 병행했다. 퇴근 후 매일 4시간씩, 주말에는 주말 시간을 전부 투자했고, 기능을 하나하나 구현하고 문제를 해결했을 때의 성취감에 푹 빠졌다. 결정적으로 1. 문제를 논리적으로 해결할 수 있다는 점, 2. 내가 직접 무언가를 만들어 가는 것에 대한 보람이 매력적으로 느껴져 개발자로 직무를 변경하기로 마음먹었다. 회사에서 제공해 준 교육은 기초 도서와 패스트캠퍼스 강의였는데, 이때를 되돌아보면 강의 내용을 머릿속에 입력한 후, 과제 때 그대로 쏟아내기만 했던 것 같다...
깃헙에 SSH key 등록해서 사용할 때 주의할점 (ssh-agent)
·
Git
내가 재부팅 할 때마다 명령어 까먹어서 기억하려고 쓰는 포스팅 재부팅 한 후에 터미널에서 `git push` 명령어를 사용해 깃헙의 remote repository에 push하려고 하면 권한이 없다는 오류 메시지가 뜰 때가 종종 있다 (clone 할 때도 마찬가지). 대충 아래와 비슷한 오류 메시지가 뜬다 (출처 - StackOverflow). 깃헙에 SSH key 등록되어 있는데 왜 권한이 없다는거지?!?!! 하면서 처음에 골머리를 많이 썩었는데, ssh-agent 자체가 ssh key를 임시적으로 저장하는 세션 서비스라서, 컴퓨터를 종료하면 agent가 종료되기 때문에 재부팅했을 때 agent가 key를 가지고 있지 않아서 그런 거라고 한다. 그리고 원래 그렇게 설계된거라고 한다.. (출처) git@..
URLComponents, URLQueryItem
·
Swift-iOS/Swift
현재 플젝에 데이터 가져오는 URL이 하드코딩 되어있어서 이걸 내일 리팩토링 하려고 공부해보았다 (사실 구 RayWenderwich의 URLSession 강의 따라하다가 딴길로 샘). 다음과 같은 URL이 있다고 해보자. https://itunes.apple.com/search?media=music&entity=song&term=Musehttps는 scheme itunes.apple.com은 host /search는 path ? 뒤부터 나오는 media=music&entity=song&term=Muse는 query다. URL을 만들 때마다 위처럼 하드코딩을 해줄수도 있겠지.. 그치만 그런 멍청한 방법은 당연히 쓰고 싶지 않다. 그럼 얘를 어떻게 쪼갤까? 할 때 URLComponents, URLQueryI..
HTTP, TCP/IP
·
네트워크
HTTP (HyperText Transfer Protocol) W3 상에서 정보를 주고받을 수 있는 프로토콜. 주로 HTML 문서를 주고받는 데 쓰인다. 주로 TCP를 사용하고 HTTP/3부터는 UDP를 사용하며, 80번 포트를 사용한다. (HTTPS는 443번) 클라이언트와 서버 사이에 이루어지는 요청/응답(Request/Response) 프로토콜이다. 클라이언트인 웹 브라우저가 HTTP를 통해 서버로부터 웹페이지(HTML)이나 그림 정보를 요청하면, 서버는 이 요청에 응답해 필요한 정보를 해당 사용자에게 전달한다. HTTP를 통해 전달되는 자료는 http:로 시작하는 URL로 조회할 수 있다. HTTP Methods 멱등(Idempotent): 요청을 몇 번을 보내도 상대쪽의 상태가 변하지 않는다. ..
[Swift] Class vs Struct (feat. 메모리 구조, Array, CoW)
·
Swift-iOS/Swift
야곰 아카데미에서 프로젝트를 진행하다가 "OO는 왜 구조체로 구현했나요?"라는 질문을 받았는데, 그 질문에 대한 답변이 바로 떠오르지 않았다. 왜냐하면... 특별한 이유를 생각해보지 않고 구현했기 때문이었다^^;;; 굳이굳이 이유를 찾아보자면, 아직 프로젝트 요구사항이 전부 밝혀지지 않아서 굳이 class로 작성할 이유를 찾지 못했기 때문이라고 할 수 있겠다. (애플 공식문서에서 클래스에서만 지원하는 기능이 필요한 경우가 아니면 기본적으로 구조체를 쓰라고 했기 때문에) 그런데 연결 리스트를 구현해보는 과정에서 Node는 아무 생각 없이 클래스로 구현했었던 것이 생각나서, (나를 포함한 다른 사람들도) 왜 노드는 클래스로 구현했지?라는 의문을 갖게 되었다. Doubly Linked List의 노드는 일반적..
Ch.10 Spring Cloud
·
Java/project lion JSB the origin
Spring Cloud Spring Cloud Project란? 프로젝트 살펴보기 Service Registry: 서비스들에 대한 정보가 적재되어 있는 레지스트리. 일반적으로 소프트웨어 형태로 제공됨 Client가 어떤 서비스로 요청을 보내야 하는데, 어디로 요청을 보내야 하는지 알아내는 방법이 크게 2가지 있음 어디로 가야 하는지를 서비스 레지스트리에 물어보는 형태 서비스 레지스트리에 요청을 보내고, 그에 따라서 어떤 서비스로 요청 보내야 할지를 판단하는 방식 client side service discovery 클라이언트와 서비스 사이에 로드 밸런서가 존재해서, 클라이언트가 로드밸런서로 요청을 보냄 로드밸런서가 서비스 레지스트리에 실제 요청을 보내고자 하는 서비스의 위치를 파악한 후 요청에 따라 해당..
Ch.9 Spring과 Middlewares
·
Java/project lion JSB the origin
RabbitMQ Message Broker HTTP는 단방향 단일성 통신 클라이언트가 명백하고, 서버가 명백함 클라이언트가 서버에 요청을 보내면, 서버는 클라이언트에 응답을 돌려줌 (클라이언트와 서버의 역할이 명백하게 분리) 서버측에서 한 번 응답을 보내고 나면 http 요청-응답의 관계가 끝나게 됨 (단발성) 어느 한 쪽이 요청을 보내면, 반대쪽에서 요청을 보내라고 요청할 수는 없음 (단방향) Message Broker 메시지 기반의 통신을 위해 활용하는 부수적 소프트웨어(Middleware)의 일종 미들웨어: 그 자체로서 기능하기 보다는 다른 소프트웨어에 추가적인 기능을 부여하기 위해서 사용하는 소프트웨어 Message Queue를 구현해 놓은 것 Publish Subscribe Message Pat..
Ch.8 Spring Security
·
Java/project lion JSB the origin
Auth & HTTPS Authorization & Authentication Auth: 로그인 과정에서 일어나는 일들을 함축하는 단어. Authorization & Authentication 사용자가 자신이 누구인지를 증명하는 과정 -> Authentication (로그인, 소셜 로그인) API서버를 사용할 때에도 API ID키를 발급받고 그것을 서비스 제공자가 원하는 형태로 가공해서 전달함으로써 사용하기도 함. 이것도 Authentication과정으로 볼 수 있음 사용자의 기능 사용 권한을 검증하는 과정 -> Authorization (권한 관리, 작성, 차단 등) Authentication 브라우저에는 브라우저가 가지고 있어야 할 정보가 쿠키 형태로 저장됨 쿠키는 브라우저가 설정하기도 하고, 요청을..
Ch.7 Spring Boot 기능활용 (2)
·
Java/project lion JSB the origin
Java의 예외처리 Exception (예외) 특수한 처리를 필요로 하는 비상적 또는 예외적 상황 Spring Boot의 예외처리 방법들 ResponseStatusException 단발적 예외: 해당 예외 처리를 위한 메소드를 만들 필요까지는 없을 때 사용 스프링부트 내부에서 자동적으로 처리할 준비가 되어있다는 점이 가장 큰 장점 빠르게 기능을 구현해보기 위한 개발 초기단계에서 주로 사용 \ @ExceptionHandler Controller 내부에서 함수에 붙여 선언함으로써 특정한 예외를 처리할 때 사용 @ExceptionHandler가 붙은 함수는 지정된 예외에 대해서 예외를 처리할 때 동작하는 함수가 됨 자신이 선언된 컨트롤러 내부에서만 작동 HandlerExceptionResolver 실제 예외를..