소프트웨어 엔지니어링
-
[일일회고] Python Platform으로 OS찾아내기소프트웨어 엔지니어링/Daily Learning Series 2023. 12. 16. 11:25
오늘의 문제 요즘 AWS Quicksight으로 대시보드를 만들고 있다. 파이썬으로 AWS Athena에 쿼리를 날리고, 그 결과를 가공해 S3버켓으로 올린다. 그러면 그 결과를 Quicksight DataSet으로 받아서 대시보드를 만드는 것이다. 그래서 이번 한 주간 (잘 못하는...) 파이썬으로 열심히 스크립트를 짰는데, 문제가 생겼다. 첫번째는 이 스크립트를 매일 실행하려면 AWS에 올려야되는데, 그 때는 credential을 인스턴스의 것으로 쓰고 싶고, 로컬 환경에서 테스팅 할 때는 다른 라이브러리에서 credential을 받아오고 싶다. 안그러면 테스팅 할 때 마다 체크해야하고... 코드를 예쁘게 짠게 아니라 여기저기 실수하게된다. 그래서 파이썬에서 플랫폼을 확인 할 수 있는지 알아보았다. ..
-
[일일회고] Athena Presto CASE 문, String Split함수소프트웨어 엔지니어링/Daily Learning Series 2023. 12. 13. 14:19
회고의 계절이 돌아왔다. 그래서 회고를 해보려는데 기억이 안난다. 일년간 뭘 배웠는지, 뭘 했는지 정말 기억이 나지 않는다. 분명히 새로운 것을 많이 배웠는데 여러가지 문제를 많이 해결했는데, 그 당시 문제 해결 할 때만 반짝 검색해서 쓰고 그 다음에는 기억이 안나서 또 검색하고 있다. 그래서 앞으로 배운게 있으면 짧게라도 정리해서 올려볼까 생각중이다. 기술 문제가 될 수도 있고, 프로세스나 사람간의 문제가 될 수도 있다. 오늘의 문제 요즘 데이터 분석 및 시각화를 하느라 Athena Presto 쿼리를 짜고 있다. 그 중 오늘 짠 쿼리에서, 문자열(스트링) 컬럼의 일부 정보를 다른 대체문자로 변경해야 하는 문제가 있었다. 예를들어 문자열은 ‘id-type-property-something_else’ 이..
-
개발자가 이해하는 Large Language Model소프트웨어 엔지니어링 2023. 10. 23. 07:21
LLM(Large Language Model) 이란? 주의! 나는 인공지능 전문가가 아니다. 그냥 여기저기서 주워듣고 배운 것을 정리해서 쓰는 것일 뿐이다. 세상이 LLM으로 핫하다. LLM을 기반으로 한 스타트업도 우후죽순으로 생겨나고 있다. 우리 같은 보통 사람들에게는 생소한 단어일 수도 있다. LLM. Large Language Model. 우리에게는 ChatGPT 또는 Generative AI와 같은 단어가 더 익숙하다. 맥킨지에서는 매일 Generative AI에 대한 뉴스레터를 보낸다. 책도 많이 나온다, AI 어쩌고, 챗GPT 저쩌고, 앞으로 글 쓰는 직업은 없어질 것이다, 그림을 그리는 직업도 사라질 것이다, 이러쿵저러쿵 말이 많다. Large Language Model, 그래서 뭘까? L..
-
Call by value vs Call by reference소프트웨어 엔지니어링 2019. 12. 1. 17:09
이번 포스트에서는 메서드 파라미터의 평가 전략(Evaluation Strategy)중 대표적으로 소개되는 Call by value와 Call by reference에 대해 설명하도록 한다. Introduction독자에 대한 몇 가지 가정1. 이 글의 독자는 Java, C, C++를 어느정도 알고 있거나, 새 언어를 읽는데 큰 어려움이 없다. 2. 이 글의 독자는 포인터 *, &에 대해 약간 알고있다. (많이는 몰라도 됨..)3. 독자의 이해를 최대한 돕기 위해 스택(Stack)과 힙(Heap)을 구분하지 않는다. 본인이 컴퓨터 아키텍쳐에 대해 잘 안다면 아래 내용중에 무엇이 스택에 생성되고 무엇이 힙에 생성되는지 스스로 찾아낼 수 있을 것이다.4. 설명을 최대한 단순하게 하기 위해 레퍼런스와 주소를 동일..
-
클라우드(Cloud)란?소프트웨어 엔지니어링 2019. 9. 2. 14:17
이 포스트에서는 클라우드가 무엇인지 설명하고 클라우드 서비스와 클라우드 컴퓨팅이 무엇인지에 대해 간단하게 설명하도록 한다. 클라우드(Cloud)란? 클라우드란 인터넷이다. 클라우드란 인터넷을 은유적으로 표현하는 말이다.클라우드 서비스(Cloud Service)란?클라우드 서비스란 클라우드, 즉 인터넷을 이용해 제공되는 서비스를 말한다. 예를 들어서 노트 어플을 생각해보자. 기존의 노트 어플(notepad)는 내 컴퓨터에 깔려있다. 노트패드에 노트를 작성하고 저장하면 어디에 저장되는가? 내 컴퓨터에 저장된다. 이 과정은 인터넷 연결이 전혀 필요 없다. 이제 요즘 사람들이 많이 쓰는 에버노트나 노션을 생각해보자. 에버노트(evernote)나 노션(notion)에 노트를 작성하고 저장하면 어디에 저장되는가? ..
-
자료구조를 공부하기 위한 5가지 단계소프트웨어 엔지니어링 2019. 6. 10. 07:59
프로그래밍 언어를 어느정도 배우고 나면 그 다음엔 보통 자료구조를 공부하게 된다. 어떤 공부를 하든 마찬가지겠지만 자료구조를 공부하면서도 어디서부터 어떻게, 얼마나 공부해야 자료구조를 '공부했다'라고 할 수 있는지 고민하는 경우가 많다. 이 포스트에서는 자료구조를 공부를 다섯단계로 나누어 설명하고 자료구조를 공부하기위한 템플릿을 제공하도록 한다. 참고! 이 포스트는 자바를 기준으로 작성되었다.목차1단계 : 자료구조의 목적과 이론 이해2단계 : 자료구조의 구현 로직 따라가기3단계 : 자료구조의 형태와 오퍼레이션 직접 구현하기4단계 : 라이브러리를 이용해 자료구조 사용하기5단계 : 자료구조를 적용하여 문제 해결하기1단계 : 자료구조의 목적과 이론 이해컴퓨터 공학의 주된 목적은 문제를 해결하는 것이라고 했다...
-
그래서 유닛테스트(Unit Test)가 뭔가요?소프트웨어 엔지니어링 2019. 5. 18. 14:26
소프트웨어 업계에 종사하거나 개발을 많이 해봤다면 유닛테스트에 대해 종종 들었을 것이다. 업계에 종사하고있다면 실제로 유닛테스트를 매일 작성하고 있을수도 있다. 유닛테스트는 뭘까? 개발자들이 왜 유닛테스트를 하는걸까? 이 포스트에서는 유닛테스트(Unit Test)가 무엇인지, 또 소프트웨어 엔지니어들이 유닛테스트(Unit Test)를 왜 작성하는지에 대해 이야기 해 보도록 하겠다. 예를 들기 위해 사용한 프로젝트의 구조는 아래와 같으며, 이 포스트는 자바8 + Gradle + JUnit4를 기준으로 작성되었다. 참고: Gradle을 이용해 자바 프로젝트 만들기UnitTestTutorial ├── build.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.ja..
-
소프트웨어 엔지니어로 취업하기 전에 알면 좋은것들소프트웨어 엔지니어링 2019. 5. 13. 12:34
이 포스트에서는 개발자/소프트웨어 엔지니어로 첫 직장에 들어가기 전에 알면 좋은 것들에 대해서 이야기 한다. 소프트웨어 엔지니어가 되기위해서는 자료구조와 알고리즘을 어느정도 반드시 알아야 한다. 따라서 이 글의 독자들은 자료구조와 알고리즘을 어느정도 알고있다고 가정한다. 이 포스트에서는 내가 '미리 알았다면 도움이 더 좋았을텐데', 또는 ‘이거 알고 취업해서 다행이다.’라고 생각하게 한 기술과 툴에 대해 소개하려고 한다.디자인 패턴(Design Patterns) 코딩을 하는 것이 소프트웨어 엔지니어의 유일한 가치는 아니다. 코딩을 하는것은 소프트웨어 엔지니어의 기본이라고 생각하면 된다. 여러분이 코딩을 이제 잘 한다고 하자. 리트코드와 같은 코딩 사이트에서 가장 효율적인 방법으로 여러가지 알고리즘 문제를..