내가 컴퓨터 공학을 전공하기로 했을 때 쯤 주변에서 컴퓨터 공학은 더 이상 발전 할 게 없고 이미 레드 오션이라는 말을 들었었다. 그래서 대학교에 진학 할 때 쯤 많은 걱정을 안고 있었다. 그러다 2학년 때 쯤 각종 클라우드 서비스와 인공지능이 붐을 일으켰고, 소프트웨어 엔지니어 수요는 기하 급수적으로 늘어났다. 그 붐에 힘입어 나도 어떻게 저떻게 취업을 했고 지금은 미국의 대기업 중 하나에서 소프트웨어 엔지니어로 일 하고 있다. 소프트웨어 업계의 전망과 급여에 매혹돼 요즘 많은 사람들이 소프트웨어 엔지니어로 전향하려는 경우가 많아지고, 따라서 나 같은 소프트웨어 업계 종사자들이 진로와 전망에 대해 많은 질문을 받곤 한다. 어디서부터 어떻게 시작해야되는지. 무슨 언어를 배워야 하는지, 어떤 자격증을 따야..
-
[일일회고] Python Platform으로 OS찾아내기
오늘의 문제 요즘 AWS Quicksight으로 대시보드를 만들고 있다. 파이썬으로 AWS Athena에 쿼리를 날리고, 그 결과를 가공해 S3버켓으로 올린다. 그러면 그 결과를 Quicksight DataSet으로 받아서 대시보드를 만드는 것이다. 그래서 이번 한 주간 (잘 못하는...) 파이썬으로 열심히 스크립트를 짰는데, 문제가 생겼다. 첫번째는 이 스크립트를 매일 실행하려면 AWS에 올려야되는데, 그 때는 credential을 인스턴스의 것으로 쓰고 싶고, 로컬 환경에서 테스팅 할 때는 다른 라이브러리에서 credential을 받아오고 싶다. 안그러면 테스팅 할 때 마다 체크해야하고... 코드를 예쁘게 짠게 아니라 여기저기 실수하게된다. 그래서 파이썬에서 플랫폼을 확인 할 수 있는지 알아보았다. ..
-
[일일회고] Athena Presto CASE 문, String Split함수
회고의 계절이 돌아왔다. 그래서 회고를 해보려는데 기억이 안난다. 일년간 뭘 배웠는지, 뭘 했는지 정말 기억이 나지 않는다. 분명히 새로운 것을 많이 배웠는데 여러가지 문제를 많이 해결했는데, 그 당시 문제 해결 할 때만 반짝 검색해서 쓰고 그 다음에는 기억이 안나서 또 검색하고 있다. 그래서 앞으로 배운게 있으면 짧게라도 정리해서 올려볼까 생각중이다. 기술 문제가 될 수도 있고, 프로세스나 사람간의 문제가 될 수도 있다. 오늘의 문제 요즘 데이터 분석 및 시각화를 하느라 Athena Presto 쿼리를 짜고 있다. 그 중 오늘 짠 쿼리에서, 문자열(스트링) 컬럼의 일부 정보를 다른 대체문자로 변경해야 하는 문제가 있었다. 예를들어 문자열은 ‘id-type-property-something_else’ 이..
-
개발자가 이해하는 Large Language Model
LLM(Large Language Model) 이란? 주의! 나는 인공지능 전문가가 아니다. 그냥 여기저기서 주워듣고 배운 것을 정리해서 쓰는 것일 뿐이다. 세상이 LLM으로 핫하다. LLM을 기반으로 한 스타트업도 우후죽순으로 생겨나고 있다. 우리 같은 보통 사람들에게는 생소한 단어일 수도 있다. LLM. Large Language Model. 우리에게는 ChatGPT 또는 Generative AI와 같은 단어가 더 익숙하다. 맥킨지에서는 매일 Generative AI에 대한 뉴스레터를 보낸다. 책도 많이 나온다, AI 어쩌고, 챗GPT 저쩌고, 앞으로 글 쓰는 직업은 없어질 것이다, 그림을 그리는 직업도 사라질 것이다, 이러쿵저러쿵 말이 많다. Large Language Model, 그래서 뭘까? L..
-
3. 자바 조건문 (2) switch-case
Switch case는 조건에 따라 코드를 실행한다는 점에 있어서 if-else와 매우 유사하다. 만약 if-else를 모른다면 if-else를 먼저 학습한 후 switch-case를 공부하는 것을 추천한다.예상 독자자바를 배우고 싶은 누구나JDK와 IDE를 설치한 자바 학습자. ( 1. 자바 설치 및 개발환경 설정 )char를 공부한 자바 학습자. ( 2. 자바 변수와 자료형 (1) char )boolean을 공부한 자바 학습자. ( 2. 자바 변수와 자료형 (2) boolean )byte, short, int, long을 공부한 자바 학습자. ( 2. 자바 변수와 자료형 (3) byte, short, int, long )float과 double을 공부한 자바 학습자. ( 2. 자바 변수와 자료형 (4..
-
Call by value vs Call by reference
이번 포스트에서는 메서드 파라미터의 평가 전략(Evaluation Strategy)중 대표적으로 소개되는 Call by value와 Call by reference에 대해 설명하도록 한다. Introduction독자에 대한 몇 가지 가정1. 이 글의 독자는 Java, C, C++를 어느정도 알고 있거나, 새 언어를 읽는데 큰 어려움이 없다. 2. 이 글의 독자는 포인터 *, &에 대해 약간 알고있다. (많이는 몰라도 됨..)3. 독자의 이해를 최대한 돕기 위해 스택(Stack)과 힙(Heap)을 구분하지 않는다. 본인이 컴퓨터 아키텍쳐에 대해 잘 안다면 아래 내용중에 무엇이 스택에 생성되고 무엇이 힙에 생성되는지 스스로 찾아낼 수 있을 것이다.4. 설명을 최대한 단순하게 하기 위해 레퍼런스와 주소를 동일..
-
git 명령어 : git cherry-pick소프트웨어 개발 툴 2019.01.30 16:31
git을 이용해 코드 관리를 하다보면 커밋을 다른 브랜치에 잘못 하거나, 요구사항이 바뀌어 필요 없는 커밋이 생기거나, 코드 의존성(dependency) 때문에 다른 사람의 커밋 중 일부를 가져와야 하는 경우가 종종 생긴다. 그런 경우 git rebase나 git cherry-pick을 많이 사용하는데 오늘은 그 중에서 cherry-pick에 대해 설명 할 것이다. git cherry-pickgit cherry-pick이란 다른 브랜치에 있는 커밋을 선택적으로 내 브랜치에 적용시킬 때 사용하는 명령어이다. 명령어는 다음과 같다.git cherry-pick ...예를 들어 설명 하기 위해 다음의 그림을 보자.위 처럼 현재 당신의 코드는 X 브랜치에 있고 (git checkout X)라는 뜻 당신은 브랜치 ..
-
2. 자바 변수와 자료형 (3) byte, short, int, long자바(Java) 강의 2019.03.04 11:58
이 포스트에서는 자바 프로그래밍 언어의 기본 자료형인 char, boolean, byte, short, int, long, float, double중에서 숫자를 표현 할 수 있는 byte, short, int, long에 대해 알아보도록 하겠다. 예상 독자 자바를 배우고 싶은 누구나 JDK와 IDE를 설치한 자바 학습자. ( 1. 자바 설치 및 개발환경 설정 ) char를 공부한 자바 학습자. ( 2. 자바 변수와 자료형 (1) char ) boolean을 공부한 자바 학습자. ( 2. 자바 변수와 자료형 (2) boolean ) 목표 정수를 표현하기 위한 자료형 자료형의 크기에 따른 비교 byte short int long [더 알아보기] 자료형(Data Type)의 의미 정수를 표현하기 위한 자료형 ..
-
가비지 컬렉터(Garbage Collector)와 Mark & Sweep자바(Java) 강의 2019.11.26 15:58
이번 포스트에서는 JVM(Java Virtual Machine)의 메모리 관리방법에 대해서 약간 설명하도록 한다. JVM의 메모리 관리방법을 알기 위해서는 JVM이 무엇인지에 대해 먼저 알아야한다. 따라서 JVM에 대해 간단히 설명하고, JVM이 메모리를 관리하는 방법인 Garbage Collector와 Mark & Sweep 알고리즘에 대해 설명하도록 한다. 초심자를 위한 글이기 때문에 가비지컬렉터의 기본 원리만 설명하고 자바 메모리 모델에 대해서는 다른 포스트에서 다루도록 하겠다.JVM(Java Virtual Machine)이란?JVM은 프로그램이다. 이 프로그램에 자바 언어를 컴파일한 *.class파일을 인풋으로 줘 실행하면 JVM 프로그램이 실행하면서 입력받은 .class파일을 실행한다. $ ja..
-
컴퓨터 공학에 접근하는 방법소프트웨어 엔지니어링 2019.03.11 11:05
학부 시절에 학교에서 연 세미나에 참석 한 적이 있다. 이 세미나에선 실리콘밸리에서 일하는 한국인 엔지니어들이 와서 자신의 경험과 취업 경로에 대해 이야기 해 주었다. 강연자 중 한 분이 AAFMG (Apple, Amazon, Facebook, Microsoft, Google)중 하나에 재직중이셨고, 그 때문에 나도 세미나 시작 전 부터 기대하고 있었다. 하지만 그 분의 강연 후 나는 많이 좌절하고 말았다. 그 분은 어려서부터 알고리즘 대회에 나가 수상한 경력이 있었고, 국내 최고 대학 중 하나에 진학하셨으며 대학원 진학 후 어떤 컨퍼런스에서 AAFMG에게 면접 제의를 받아 입사 한 경우였다. 전부 나와는 동떨어진 이야기였다. 그 분은 알고리즘을 정말 잘하셨기 때문에 AAFMG 면접을 통과하는 것은 당연..
-
자료구조를 공부하기 위한 5가지 단계소프트웨어 엔지니어링 2019.06.10 07:59
프로그래밍 언어를 어느정도 배우고 나면 그 다음엔 보통 자료구조를 공부하게 된다. 어떤 공부를 하든 마찬가지겠지만 자료구조를 공부하면서도 어디서부터 어떻게, 얼마나 공부해야 자료구조를 '공부했다'라고 할 수 있는지 고민하는 경우가 많다. 이 포스트에서는 자료구조를 공부를 다섯단계로 나누어 설명하고 자료구조를 공부하기위한 템플릿을 제공하도록 한다. 참고! 이 포스트는 자바를 기준으로 작성되었다.목차1단계 : 자료구조의 목적과 이론 이해2단계 : 자료구조의 구현 로직 따라가기3단계 : 자료구조의 형태와 오퍼레이션 직접 구현하기4단계 : 라이브러리를 이용해 자료구조 사용하기5단계 : 자료구조를 적용하여 문제 해결하기1단계 : 자료구조의 목적과 이론 이해컴퓨터 공학의 주된 목적은 문제를 해결하는 것이라고 했다...