분류 전체보기 417

[개발자의 자질] CTO의 역할

최근 EO에 올라온 영상 중 CTO에 관한 영상이 있었다. 꽤 재밌게 봤다. 문득 CTO는 어떤 일을 하는 사람인지 궁금해졌다. 기술 조직의 최고기술책임자는 어떤 일을 할까? CTO 공석인 스타트업들이 많다. 책임회피라고 볼 수 도 있다. 고객에게 진짜 가치를 줄 수 있다면 매출은 당연히 따라온다. Chief Technical Officer란 무엇일까? 기술 팀을 관리하고 회사의 전략과 기술의 전략이 잘 어울리도록 노력하는 사람이다. 회사와 기술팀이 성장함에 따라서 CTO의 역할도 함께 변해야 한다. 그렇지 않다면 서비스와 기술은 성장 정체기를 맞는다. 스타트업의 단계는 아래와 같다. 1. 암흑기 2. 성장기 3. 기술의 르네상스 4. 성숙기 암흑기 기술팀 규모 0~5명 재무적으로 어렵고 불확실성이 큰 ..

개발 팁 2023.04.30

[개발자의 자질] 존 카맥이 말하는 대체 불가능한 개발자가 되는 법

가장 존경하는 개발자를 물어본다면 존 카맥이라고 대답한다. 존 카맥의 영상을 자주 찾아보는 편이다. 너무 존경하는 개발자이기도 하고 세계적으로 인지도도 많아서 이 분의 말씀을 담은 자료들이 올라오는데 그때마다 꼭 챙겨본다. 이번에 꽤 좋은 자료가 올라왔는데 재밌게 볼 수 있는 영상이다. 해당 내용에 대한 간략한 요약과 개인적으로 느꼈던 점을 이야기해보고자 한다. 존 카맥은 어떤 사람일까? 본명 John D. Carmack은 이드 소프트웨어의 공동 창업자이자 기술 감독, 프로그래머이다. 1970년 8월 20일 미국 캔자스 출생이다. 1인칭 슈팅 게임 장르에서 전설적인 게임을 개발했다. 퀘이크콘 등 활발한 연설이나 인터뷰 활동을 펼쳤고 PC 게임 업계에서 스타 개발자이자 3D 그래픽 프로그래밍의 기술 Gur..

개발 팁 2023.04.29

[Tech] 인증과 인가에 대한 이해

인증, 인가에 대해서 간략하게 정리해보고자 한다. 내용이 꽤 많고 사용해본 지 시간이 꽤 흘러서 간단하게 정리해보겠다. 인증과 인가 시스템의 자원을 적절하고 유효한 사용자에게 전달하고 공개하는 방법이다. 인증은 Authentication 즉 로그인이다. 인가는 Authorization 즉 인증 작업 이후 행해지는 작업이다. 인증된 사용자에 대한 자원에 대한 접근 확인 절차를 의미한다. 유저는 관리자 페이지에 접속할 수 없다. 왜냐면 관리자 페이지에 인가되어 있지 않기 때문이다. 세션 기반 인증 세션 기반 인증은 쿠키와 세션과 관련된 내용이다. 세션 기반 인가는 사용자 인증 정보가 서버 세션 저장소에 저장된다. 사용자가 로그인하면 인증 정보를 서버 세션 저장소에 저장하고 사용자에게 저장된 세션 정보인 Se..

백엔드 2023.04.12

[Kotlin] 코틀린 기본기

최근 코틀린을 배워야할 일이 생겼다. 당장 쓸 건 아니지만 미리 알아둬야겠다는 생각이 들어서 간단하게 정리해보고자 한다. 코틀린은 Google I/O 2017에서 안드로이드의 공식언어로 채택되었다. 코틀린 장점 문법적으로 진보 서버 사이드 애플리케이션에 좋음 자바 완벽 호환 툴 지원 (Intellij) 러닝커브가 낫음 코틀린 지원 서버사이드 프레임워크 Spring Vert.x kotlinx.html 세미콜론 사용하지 않는다. val temp: int = 10 var temp = 15 val: 변할 수 없는 상수 (read only, 초기화해줘서 선언해야함) var: 일반적인 변수 fun sum(a: int, b: int): int { return a + b } 위 코드는 아래처럼 단순화 가능하다. fun..

Kotlin 2023.04.11

[Android] 간단한 Firebase push notification alarm 앱 만들기

최근 Firebase push notification을 테스트해볼 일이 생겨서 간단한 안드로이드 앱을 만든 뒤 해당 앱으로 정상적으로 push notification이 전달되는 지 확인해봐야할 일이 생겼다. 그냥 간단하게 만들고 싶어서 flutter 쪽을 살펴봤는데 (개인적인 견해이지만) flutter는 코드의 양이 생각보다 많다는 느낌이 들었다. 그리고 굉장히 익숙하지 않은 형태처럼 느껴졌다. 예시 코드를 찾아보다가 그냥 이럴 바에 kotlin이나 java로 안드로이드 앱을 간단하게 만드는 게 낫다고 생각했다. 순서는 간단하다. 아래 순서대로만 진행하면 된다. Firebase 콘솔에 접속해서 Firebase project를 만들어 준다. project내에서 Android app을 만들어주고 google..

[Airflow] Apache Airflow Test Case 작성하는 법

최근 Apache Airflow를 만질 일이 생겼다. 여러 Task 들을 작성하기는 했는데 테스트 코드를 어떻게 작성할 지에 대한 감도 잡히지 않았고 이걸 직접 다 돌려보는 풀테스트를 작성해야하나 긴가민가 했다. 그리고 짧은 조언을 받았는데 기본적인 테스트 코드들이 있었으면 좋겠다는 리뷰를 받았다. 그러니 앞으로는 테스트는 기본으로 가져가자는 마인드를 가져야겠다. 그래서 airflow 에 대해 간단한 Test Case를 작성하는 법을 알아보고자 한다. 우선 pytest를 사용할 것이기 때문에 pip install을 해주자. mock 테스트 안할 거면 후자는 빼줘도 되요~ pip3 install pytest pytest-mock 그리고 아래와 같은 dag와 task 들을 정의해줬다고 가정하자. from d..

[Convention] 협업 방식 정리(3) 애자일 + 스크럼 + 개발 프로세스 + 리더의 자질

신입 개발자로 일할 경우 사내에서 접하게 되는 개발 문화가 있다. 규모에 따라 다를 수 있겠지만 개발자로 일하는 경우 애자일 문화, 스프린트 방식, 코드 리뷰, 개발 프로세스에 대한 회사만의 특유한 문화를 접하게 된다. 그에 대한 간략한 내용을 정리하고자 한다. 스프린트 일일 스크럼 회의 짧게 회의한다. 15분 ~ 20분 정도, 팀원들이 보여서 어디까지 했고 어제 무얼 했으며 오늘 뭘 했고 어떤 점이 문제인지 이야기한다. 스프린트 원칙 스프린트 기간 중에 서비스의 우선 순위를 바꿔선 안된다. 요구 사항이 생기면 진행 중인 스프린트 내에서의 변경을 해서는 안된다. 스프린트도 갑자기 종료될 수 있는데 이때는 어찌할 수 없는 상황에서만 종료되어야 한다. 스프린트는 정해진 시간 안에 끝내고 연속적으로 진행되어야..

[Docker] OCI runtime exec failed: exec failed: unable to start container process: exec: "ping": executable file not found in $PATH: unknown

간만에 도커를 실습하는 와중에 아래와 같은 에러를 마주했다. OCI runtime exec failed: exec failed: unable to start container process: exec: "ping": executable file not found in $PATH: unknown 내가 하고자 하는 명령어는 아래와 같았다. docker exec mysql ping findby docker exec findby ping mysql 즉 findby라는 컨테이너와 mysql이라는 컨테이너 사이에서 서로에게 핑을 보냄으로써 정상적으로 컨테이너가 살아있는 지 확인하기 위함이었다. 물론 당연히 떴으니 살아있겠지만 그냥 확인차 ping은 잘 날라가는 지 보고 싶었다. 근데 왜 위 오류가 발생했을까? 위 ..

[Docker] 협업 방식 정리(2) 가상화 + docker + dockerfile + docker compose + docker network + dockerhub

오늘은 docker, dockerfile, docker compose, docker network에 대해서 알아보기로 한다. 협업에서 혹은 신입 개발자로 일하게 된다면 반드시 docker 혹은 가상화 기술에 대해 알고 있어야 한다. 그냥 업무 숙달의 일환이라고 생각하고 간단하게 살펴보자. 도커 공식문서: https://docs.docker.com/get-started/overview/ 가상화 기술이란? https://velog.io/@palza4dev/Docker%EC%99%80-%EA%B0%80%EC%83%81%ED%99%94-%EA%B8%B0%EC%88%A0 https://spidyweb.tistory.com/71 https://nomad-programmer.tistory.com/282 가상화는 물리..

[Git] 협업 방식 정리(1) git + gitflow + gitlab + 코드 리뷰 + code convention + PR Request + Merge Request + 개발 문화

협업을 제대로 해본 적이 없어서 협업 방식에 대해서 정리하고자 한다. 코드 리뷰도 제대로 해본 적이 없어서 협업 컨벤션이나 구체적인 루틴에 대한 이해가 필요할 것 같다. 간단하게 정리하고자 한다. https://backlog.com/git-tutorial/kr/ git 기본 명령어 정리 https://wecandev.tistory.com/152 인덱스(index): 커밋할 변경사항을 모아놓은 궁간임. 작업 폴더(work Tree)의 변경내용을 인덱스에 기록하는 것을 스테이지(Stage)라고 한다. 머지(Merge): 선택한 브랜치에 다른 브랜치에서 커밋한 내용을 병합하는 동작임. 컨플릭트(Conflict):동시에 같은 파일의 유사한 부분을 수정한 경우 발생하는 코드충돌을 의미하고 의도에 맞는 코드를 선택..

반응형