내가 컴퓨터 공학을 전공하기로 했을 때 쯤 주변에서 컴퓨터 공학은 더 이상 발전 할 게 없고 이미 레드 오션이라는 말을 들었었다. 그래서 대학교에 진학 할 때 쯤 많은 걱정을 안고 있었다. 그러다 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)의 의미 정수를 표현하기 위한 자료형 ..
-
소프트웨어 엔지니어 코딩 인터뷰 준비하기 (미국)소프트웨어 엔지니어링 2019.03.24 13:04
졸업을 앞두고 미국에 왔을 때 한국에 있을 당시 이력서를 넣고 전화 인터뷰를 본 덕분에 3개의 On Site인터뷰가 예정되어 있었다. 당시 나는 미국의 소프트웨어 엔지니어링 포지션이 어떤 인터뷰를 보는지 제대로 알지 못했고, 단순히 '코딩 할 줄 암'을 잘 어필하면 채용 될 줄 알았다. 그래서 당연히 Cracking the Coding Interview를 간간히 보고 슈도코드를 종이에 몇번 작성 해 보는 것으로 인터뷰 준비가 끝났다고 생각했다. 당시에는 어떤 이유에선지 3곳 모두 채용 확정이 되었지만, 이후에 다른 회사의 면접을 보며 슈도코드를 종이에 적당히 작성 해 보는 것이 결코 코딩 인터뷰 준비의 끝이 아님을 알게 되었다. 그래서 이번 포스트에서 미국 소프트웨어 엔지니어 포지션의 인터뷰가 어떻게 진..
-
자료구조를 공부하기 위한 5가지 단계소프트웨어 엔지니어링 2019.06.10 07:59
프로그래밍 언어를 어느정도 배우고 나면 그 다음엔 보통 자료구조를 공부하게 된다. 어떤 공부를 하든 마찬가지겠지만 자료구조를 공부하면서도 어디서부터 어떻게, 얼마나 공부해야 자료구조를 '공부했다'라고 할 수 있는지 고민하는 경우가 많다. 이 포스트에서는 자료구조를 공부를 다섯단계로 나누어 설명하고 자료구조를 공부하기위한 템플릿을 제공하도록 한다. 참고! 이 포스트는 자바를 기준으로 작성되었다.목차1단계 : 자료구조의 목적과 이론 이해2단계 : 자료구조의 구현 로직 따라가기3단계 : 자료구조의 형태와 오퍼레이션 직접 구현하기4단계 : 라이브러리를 이용해 자료구조 사용하기5단계 : 자료구조를 적용하여 문제 해결하기1단계 : 자료구조의 목적과 이론 이해컴퓨터 공학의 주된 목적은 문제를 해결하는 것이라고 했다...
-
2. 자바 변수와 자료형 (2) boolean자바(Java) 강의 2019.03.03 15:15
이 포스트에서는 자바 프로그래밍 언어의 기본 자료형인 char, boolean, byte, short, int, long, float, double중에서 boolean에 대해 알아보도록 하겠다. 예상 독자자바를 배우고 싶은 누구나JDK와 IDE를 설치한 자바 학습자. ( 1. 자바 설치 및 개발환경 설정 )char를 공부한 자바 학습자. ( 2. 자바 변수와 자료형 (1) char )목표boolean논리식 (boolean expression 또는 logical expression)booleanboolean자료형의 값에는 참/거짓(true/false) 딱 2가지만이 있다. 실습으로 배워보자.public class Main { public static void main(String[] args) { Syst..