내가 컴퓨터 공학을 전공하기로 했을 때 쯤 주변에서 컴퓨터 공학은 더 이상 발전 할 게 없고 이미 레드 오션이라는 말을 들었었다. 그래서 대학교에 진학 할 때 쯤 많은 걱정을 안고 있었다. 그러다 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)의 의미 정수를 표현하기 위한 자료형 ..
-
13. 파이썬 함수 - 여러개의 값 반환하기(튜플)파이썬(Python) 강의 2019.03.13 13:48
들어가기전에이 포스트는 여러분이 파이썬을 설치했고 각자 원하는 IDE를 이용해 파이썬을 개발한다고 가정한다. 혹시 파이썬을 설치하지 않았다면 1.파이썬 설치 및 개발환경 설정 이 포스트에서 파이썬과 파이썬 개발환경을 먼저 셋업하길 바란다. 앞서 말했듯이 반드시 실습 해 보길 바란다. 이 포스트는 여러분이 파이썬의 주요 자료형과 함수를 알고있고 사용 할 수 있다고 가정한다. 또한 이 포스트는 여러분이 파이썬 함수의 기초를 알고있다고 가정한다.목표여러개의 값 리턴하기여러개의 값 리턴하기에 대한 착각여러개의 값 리턴하기파이썬은 아래와 같은 형식의 함수를 선언/사용 할 수 있다.def function(x, y, z): return x + y, y + z, x + z; val = function(1, 3, 5) ..
-
컴퓨터 공학에 접근하는 방법소프트웨어 엔지니어링 2019.03.11 11:05
학부 시절에 학교에서 연 세미나에 참석 한 적이 있다. 이 세미나에선 실리콘밸리에서 일하는 한국인 엔지니어들이 와서 자신의 경험과 취업 경로에 대해 이야기 해 주었다. 강연자 중 한 분이 AAFMG (Apple, Amazon, Facebook, Microsoft, Google)중 하나에 재직중이셨고, 그 때문에 나도 세미나 시작 전 부터 기대하고 있었다. 하지만 그 분의 강연 후 나는 많이 좌절하고 말았다. 그 분은 어려서부터 알고리즘 대회에 나가 수상한 경력이 있었고, 국내 최고 대학 중 하나에 진학하셨으며 대학원 진학 후 어떤 컨퍼런스에서 AAFMG에게 면접 제의를 받아 입사 한 경우였다. 전부 나와는 동떨어진 이야기였다. 그 분은 알고리즘을 정말 잘하셨기 때문에 AAFMG 면접을 통과하는 것은 당연..
-
그래서 유닛테스트(Unit Test)가 뭔가요?소프트웨어 엔지니어링 2019.05.18 14:26
소프트웨어 업계에 종사하거나 개발을 많이 해봤다면 유닛테스트에 대해 종종 들었을 것이다. 업계에 종사하고있다면 실제로 유닛테스트를 매일 작성하고 있을수도 있다. 유닛테스트는 뭘까? 개발자들이 왜 유닛테스트를 하는걸까? 이 포스트에서는 유닛테스트(Unit Test)가 무엇인지, 또 소프트웨어 엔지니어들이 유닛테스트(Unit Test)를 왜 작성하는지에 대해 이야기 해 보도록 하겠다. 예를 들기 위해 사용한 프로젝트의 구조는 아래와 같으며, 이 포스트는 자바8 + Gradle + JUnit4를 기준으로 작성되었다. 참고: Gradle을 이용해 자바 프로젝트 만들기UnitTestTutorial ├── build.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.ja..