※ 본 포스팅은 현재 국비학원을 다니는 학생의 시점에서 작성된 글입니다.

 

팀 프로젝트는 처음이라 이런 저런 걱정도 되고

하고 싶은건 많지만 억제하면서 협업 중이다.

모든 과정을 여기에 담을 수는 없지만

배운 점이나 간략한 진행 현황은 블로그에 아카이빙하기로 했다.

 

 회의 또 회의

협업에서는 회의의 중요성을 빼놓을 수 없다.

각자의 역할 분담도 중요하지만, 모두가 알아야할 내용도 있고

주제부터 시작해서 테이블명, 입력값, 출력값, 타입, 이용할 기술 스택, 협업 방식, 기본값 설정 여부, 연동 방식 등등.... 논의해야할게 많다. 첫날은 정리할 것도 많고 얘기할 것도 많아서 거의 모든 시간을 회의에 쏟고 정리했다.

다행히 빠르게 시작할 주제가 좁혀져서 다행이었다.

회의의 중요성은 아무리 강조해도 지나치지 않다...

지금은 협업이 처음이라 오랜 시간 회의가 걸렸지만, 나중에는 목표 시간을 잡고 충분한 준비를 해야겠다고 생각했다.

 

 Git 공동 작업자로 이용

지금까지 Git 허브는 혼자서 작업한 내용들을 아카이빙 하는 용도로만 사용하였는데,

깃허브 계정을 하나를 사용해서 돌려쓰는게 아니라

Setting의 Collaborator 를 이용하여 공동 작업자를 추가해서 저 계정들로도 push pull merge 등을 할 수 있게 만들었다.

그러다보니 같은 이름의 파일을 수정해서 커밋을 올렸을 때

같은 이름의 파일을 다른 계정으로 중복해서 커밋을 올리면 conflict가 발생한다는 점도 알게 되었고,

협업은 혼자할 때보다 고려해야할 사항이 더 많아진다는 점을 실감하게 되었다.

Git을 이용할 때는 워크 플로우를 어떻게 하자(commit 전에 저장소에 새롭게 pull 할 내용이 있는지 체크하기 등등) 등의 이야기를 나눌 수 있었고, 순조롭게 작업이 진행되는 중이다.

 

 open api 이용

api 이용에 대해서 겁먹고 있던게 좀 있었기 때문일까

오늘은 오후 시간에 rest api에 대한 사전 지식을 좀 공부해보고 공공 데이터 포털 이용을 위해서

이것저것 뒤져봤었는데 생각보다 시간을 엄청 많이 잡아먹었다....

 

다른 키워드로 찾아보니 그렇게 어렵지만은 않았다.

https://youtu.be/pe5-RQb-OPI

 

이 유튜브 영상과

https://youtu.be/QPEUU89AOg8

이곳의 영상을 살펴보면서 api 에 대한 지식을 좀 더 보충했다.

문서만으로는 구체적으로 그림이 잘 안그려졌는데 유튜브가 큰 도움이 되었다.

 

밑에 소개한 블로그에서 정말이지 설명을 너무나도 잘해주셔서... 저는 제 환경에서 제가 쓸 확장팩만

몇개 더 추려서 정리해두는 겸 포스팅 해둡니다.

 

 

Project Manager


Live Server


Tabnine AI


IntelliCode


Code Runner


Error Lens


Bracket Select


Bracket Peek


Surround


Doxygen Documentation Generator


Bracket Pair Colorizer 


Output Colorizer


Log File Highlighter


DotENV


Inline SQL Syntax



Auto Reload


Auto Close Tag


Auto Rename Tag


Code Spell Checker


SVG Viewer


Image Preview


Random Everything


HTML to CSS autocompletion


Prettier - Code Formatter


참고한 블로그
출처: https://inpa.tistory.com/entry/VS-Code-⏱️-코딩에-유용한-도구-추천#Project_Manager [👨‍💻 Dev Scroll:티스토리]

 

 22.3.26 퇴사

이때에는 계약 만료되기도 했고 새로운 공부를 할 필요성을 느끼고 있었으며

하던 직업의 특성상 생활패턴이 망가져 내 의지만으로는 공부가 어려웠기에

인생에서 큰 결정을 하게 되었다. 이 당시에는 서버 쪽에 관심이 많았었다. (전에 다니던 회사가 방송국 송출실 쪽이라

서버쪽에 민감한  편이었는데, 사실은 그곳에 있던 기술팀 팀장님처럼 되고 싶었다)

 

 22.4 휴식 및 운동

 

 

22.5 스파르타코딩클럽 앱개발 / 데이터분석종합반 무작정 뛰어들기

- 이때 파이썬, 자바스크립트, HTML, Node.Js, React 등을 그냥 무작정 따라해보면서 한번 훑어보았다. 문과생 출신이기도 했고 이때는 수업 내용을 따라가는 것만으로도 벅찼었다. 어떻게든 수업은 따라갔지만 지식이 충분치 않아 어려움을 겪던 시기

 

 22. 6 지원받은 내일배움카드를 이용해서 파이썬 주말반 특강

결과중심적 학습에 회의감을 느낀 이후로부터 무작정 책을 사서 기본 개념을 독파하기 시작(HTML, CSS, C언어, 파이썬)

여기에 주말반으로 집체과정 학원에 첫걸음

이 때 무작정 클론 코딩으로 TodoList 어플리케이션을 어찌저찌 구동에 성공하였다.

(강의가 꽤 오래 전이라 현재 버전으로 맞추면서 공부하게 된게 더 많은 것 같다.)

지금 피드백해보자면 이 때는 지식을 많이 얻었다기보다 자신감을 얻었던 시기라고 볼 수 있을 것 같다.

그렇게 생각하면 무의미한 시간은 아니었다.

 

22. 7 코딩알려주는누나 유튜브를 통해서 웹에 대한 전반적인 용어 파악(자바스크립트 학습 시작)

이때부터 이쪽 일에 대한 확신이 생기기 시작했다.

전에 공부했던 내용들이랑 더해서 무작정 예제들을 바꾸면서 시험해보다가 에러가 났던 날이 있는데

그때 구글링부터 시작해서 아는 개발자형님에게 질문하다가 파도타고 파도타고 장장 4시간 정도의 어려움을 겪었는데

나와 비슷해보이는 사례라면 다 적용해보면서 어떻게 바뀌는지 시험해보다가 결국

스택오버플로우에서 나와 제일 비슷해보이는 상황을 발견하고 node.js 버전 최신화를 다시 하면서 

차근차근 솔루션을 다시 밟아가니 문제가 해결되었던 날이 아직도 잊혀지지 않는다. 

이때 프로그램 버전의 중요성을 깨닫게 되었고, 좀 더 폭 넓은 공부가 필요하다는걸 통감하게 되었다.

(사실은 이날 해결했다는 사실 하나만으로도 너무 기뻤다.)

몇달 전에는 html도 어려워했던 내가 이제는 부트스트랩에 익숙해져있는 모습을 보기도 했다.

 

 22. 8. 카카오톡 봇 minjae Bot 1.0.0 제작(javascript, js)

필자는 옛날부터 게임을 좋아했었고 현재는 모 게임의 서클장을 맡고 있는데

공부도 놓기 싫고, 사회적으로도 좀 더 나아가고 싶으면서 게임에서 알게 되었던 인맥들도 놓치고 싶지 않아

내가 공부를 하거나 프로젝트에 빠져있을 때 방을 관리해줄 봇이 있다면 좋겠다는 생각을 했었다.

여기에서 minjae Bot을 만들게 되었다.

다시 살펴보면 절망감이나 갈증이 한걸음 더 나아가게 해주는 계기가 아닌가 싶다.

(이때는 시간이 너무 턱없이 절대적으로 모자라다는 점과 돈이 모자라다는 점이 나를 절망감에 더 빠트렸다.)

초창기에는 그냥 간단한 대화만 가능한 수준에서 시작했으나 현재 10월 기준으로는 날씨, 로또, 번역 등의 api를 긁어와서 그냥 이런저런 기능들 및 간단한 카카오톡 게임도 구현해두었다.

인게임에서 특정 행동을 취할 때 얻는 불이익에 대해서 체감되는 확률이 불합리하다고 생각돼서

내가 봇에 그 기능을 넣은 후에 그 확률을 그대로 넣었는데 체감상 게임과 비슷하게 구현돼서

사람은 자신이 얻은 손해를 더 크게 기억한다는 사실을 깨닫게 되기도 했다.

 

또 이때 클론 코딩으로 여러 웹페이지를 만들어보기도 했다.

 

 22.9~현재  JAVA 국비 학원 수강

현재는 주5일 국비학원에 다니면서 부족한 기본기를 다지는 중이다.

예전에 서버에 관심이 많았었기 때문에 백엔드 쪽과 가까운 JAVA를 다음 주종목으로 삼게 되었다.

학원 과정을 따라가다보면 oracle 데이터베이스, 전자정부 프레임워크, 

틈틈히 프로그래머스를 이용해서 JAVA, C언어 문제를 풀고 있다.

너무 욕심이 많아서 본 수업을 100퍼 씹어먹고 있지 못하다는 점이 좀 아쉽다.

일단 폭 넓게 공부하고

내가 승산이 있고 내가 좀 더 하고 싶은게 생겼을 때

그 때가 내가 가고 싶은 회사나 어떤 창업을 할지를 선택할 적기라고 판단했다.

 

 향후 계획 1. 코딩 외 활동들

일단 월 1회 대학교 도서관에 다니면서 it와 공학쪽에서 필요한 책을 읽으려고 한다.

주 3회 헬스장에서 하루 1시간 30분 이상, 유산소 1시간 이상할 계획이고(이는 간헐적이긴하지만 4월달부터 꾸준히 해오고 있었다.)

개발 관련 스터디를 기획해보고 싶다. 나와 참여하는 사람들이 같이 발전할 수 있는게 뭐가 있을지 고민해보는 중이다.

 

 향후 계획 2. 가까운 미래

현재는 생활코딩 유튜브에서 인공지능, 머신러닝 관련 강의들을 보고 있는 중이며(10월 중으로 완강할 생각이다.)

조코딩, 노마드 코더 등의 채널을 통해 식견을 넓히고 있다.

11월까지는 현재 구매해둔 JS강의를 완강하고 api를 이용하는 웹페이지를 하나 만들 생각이다.

(이미 카카오톡 봇은 만들어봤으니 그 활동범위가 웹으로 옮겨갔을 뿐이다.)

지금은 내 생각에 조금 안좋은 습관이 있다면 너무 자동완성에 의존한다는 점이랑, 

부트스트랩 같은 프레임워크를 너무 애용한다는 점이다.

오늘 중간 점검을 하면서 귀찮음을 감수하고 손으로 타이핑하는 시간을 늘려야겠다고 피드백했다.

 

게임관련으로 웹어플리케이션 하나를 기획 중이다.(지금 단계에서는 공개하긴 너무 이르다)

 

해커톤이라는걸 알게 되었는데 내가 참여할 수 있는 해커톤이 있다면 참여해보고 싶다.

지금은 아직 부족해서 팀에게 폐가 될수도 있겠지만 열심히 공부해서 일할 때 서로 웃을 수 있는 팀원이 되고 싶다.

 

 향후 계획 3. 조금 먼 미래

지금은 JavaScript, JAVA 기반 공부만 하고 있지만 좀 더 폭 넓게 많은 것을 공부하고 싶다.

몇달 전에는 나 정도면 빨리 공부하는게 아닐까 싶었는데, 열심히하는 다른 사람들의 일지들을 보게 되면

나보다 더 열정적이고 절실한 사람들 천지구나라는 생각 밖에 들지 않는다.

기본기를 탄탄히 다지는건 앞의 과정이라 생략하고

바닐라js, 커피js, 타입스크립트(TypeScript), express, Go 등등 경험해보고 싶은게 많다.

이외에도 이번에 노벨ai가 오픈소스화(?) 되어서 원한다면 누구나 이용할 수 있는 상태가 되었는데

앞으로도 있을 무언가의 오픈소스 ai를 요리해보기 위해서 머신러닝, 딥러닝에 대한 공부도 꾸준히 해야하고

알고리즘에 대한 공부도 틈틈히 해야한다. 이는 못해도 한달에 한번 이상은 날을 잡고 할 생각이다

ai에까지 관심을 가지고 있는 이유가 굳이 있다면(구체적으로 아직 밝힐 수가 없기에 대강의 설명밖에 할 수가 없다는 점을 이해해주세요)

내가 만들고 싶은 어플리케이션 중에 사람들이 찍는 스크린샷을 인식해서 그 스크린샷 속에서 정보들을 추려내서

그 사람의 상황에 어떤게 필요한지(이것도 실은 게임이다.) 이런 것에 대한 고민이 있었다.

사람들이 간편하게 스크린샷만 찍어도 그들이 원하는 정보를 받아낼 수는 없을까?

찾아보니 이와 같은 기술은 이미 몇년전부터 존재해왔었다. 이 점에서 살짝 힘이 빠지기도 하였으나

예전에 비해서 결핍에 대한 고민이 많이 늘어가고 있다는건

개발자 성장의 관점에서는긍정적 신호로 보고 있다.

 

 

예전에 3D 디자인 공부할 때(maya, nuke)부터 가졌던 신념이 있다면

 

"하나를 잘하는 장인이라면 비슷한 무언가를 잡아도 잘할 수 밖에 없다."

라는게 내 신념이다.

일단 지금 당장은 지루해도 좀 더 작업이 손에 익는게 중요하고,

내가 뭘 부족하게 생각하는지, 내가 무엇을 생각하고 있는지, 사람들이 불편해하는 것은 무엇인지에 대해

생각해볼 시간을 늘리는게 더욱 중요하다고 생각이 든다.

결국 지식을 쌓거나 코드를 짜는건 무언가를 필요로 하기 전에는 소용이 없기 때문이다.

 

 

...

결국 이렇게 기록을 남기는건 지금은 열심히 하고 있지만

마음 속 한켠에서는 불안감도 그에 못지 않게 크기 때문이다.

공부를 하면 할수록 세상은 넓다는걸 확인하게 되고 처음에는 자신감 있게 도전했었으나

내가 경쟁해야할건 4년제 대학을 나온 사람들, 코딩 천재들, 관련학과 석박사들이라고 생각하니

너무 길이 멀게만 느껴졌다.

결국 불안감 때문에 오늘 글이 너무 길어졌다.

불안감 때문이라는걸 제 3자의 관점으로 보게 되다보니 좀 더 마음이 평온해지는 느낌이 든다.

하고 싶은건 많지만 지치지 않게 꾸준히 포기하지 말고 나아가자!

 

2022.10.24 이민재

 

 

 

※ 본 포스팅은 프로그래머스에 있는 연습문제 풀었던 내역을 아카이빙하기 위해 작성했습니다.

작성자의 공부를 목적으로 작성된 포스팅입니다.

이 포스팅은 방법을 제시한다기보다 제가 어떤 어려움을 겪었는지를 기록하는 목적으로 작성되었습니다.

 

 

class Solution {
    public int[] solution(int n) {
        int count = 0;
        for(int i = 1 ;i<=n;i++){
            if(n%i==0) count++;
        }
        int[] answer = new int[count];
        // 현재까지 완료한 것, answer를 약수의 갯수만큼 배열을 만들어서 초기화 했다.
        // 할 일
        // answer의 각 항에 약수를 최소값부터 차례차례대로 대입한다.
        // 예를 들자면 answer[0] 에는 1번째 약수인 1을
        // answer[1] 에는 2번째 약수인 2를
        // answer[2] 에는 3번째 약수인 3을
        // answer[3] 에는 4번째 약수인 4를
        // ...
        // answer[count-1] 에는 count 번째 약수인 24를
        for (int i=0; i<count; i++){
            for ( int j = 1; j <= n; j++){
                if(n%j==0){
                    answer[i]=j;
                }
            }
        }

        
        return answer;
    }
}

간결한 코드라고 생각했었는데

정답이 1,1,1,1,1,1,1 혹은 24,24,24,24,24,24

이렇게밖에 출력이 안되어서 무엇이 문제인지를 테스트하다가

for (int i=0; i<count; i++){
            for ( int j = 1; j <= n; j++){
                if(n%j==0){
                    answer[i]=j;
                    i++; // 아 부분을 추가했습니다.
                }
            }
        }

 

이렇게 강제적으로 i++를 해주니 제대로 빠져나와서 1,2,3,4,6 이런 식으로 연산이 되는 모습을 확인할 수 있었다.

이 경우에서는 break나 continue를 사용해도 1,1,1,1,1,1,1 혹은 24,24,24,24,24,24 리턴이 되어서 상당히 곤란했었다.

break를 사용해서 가장 가까운 반복문이었던 j 를 빠져나오고 i가 진행되는 모습을 상상했었지만 잘 안됐었다.

좀 더 확실하게 공부해야할 내용들이 많다....

2달 전만 해도 나는 개발자의 꿈을 가지고만 있던

평범한 직장인이었다.

 

모종의 이유로 퇴사하게 되었고, 예전에 하지 못했던 일들을 하나씩 해보려고 하는데

국비 지원으로 공부할 수 있는 곳을 찾아보다가

스파르타 코딩 클럽을 알게 되었고 덕분에 지금 코딩에 입문해서 하나하나씩 배워나가는 중이다 ....

실은 첫주차인데도 생각보다 어려워서 이해가 쉽지 않았다.

 

데이터 분석을 위해 파이썬을 배우고 있고

앱 개발을 위해 자바스크립트를 배우고 있다.

 

이번주에 가장 크게 느낀 점은,

 

자발, 자율적인 학습이 정말 중요하다는 점이다.

 

코딩의 시작은 문제의 인식이고 그 문제를 해결하기 위해서 어떻게 해야할지 생각하면서

해야한다고 생각한다.

그러기 위해서는 내 생각을 구체화해서 구글 유튜브 등의 검색 엔진을 통해 검색할 수 있도록

빠르게 준비를 해야한다고 생각한다.

 

무튼 잡설이 길었고...

 

데이터 분석에서는

변수와 요소들의 상관관계라는 기초 중의 기초부터 

기본적인 데이터 가공 방법,

상관관계 분석,

엑셀의 한계와 파이썬을 배워야하는 이유 등을 배웠고

 

데이터 분석에서는 구글 Colab을 주로 이용하여 수업을 진행하였다.

 

그리고 

 

# 두 개의 변수를 선언 후 곱하기(*) 연산 수행

a = 5

b = 7

a * b

 

이런 식으로 아주 기초적인 변수부터 시작해서

자료에는 정수형/실수형/문자형/리스트 등이 있다고 배웠다.

 

그리고 조건문과 반복문에 대해서 깊게 공부하였다.

 

for i in range(0, 5): # 맨 끝에 :(콜론)을 사용하였다.

     print(i,'번 반복할게요~') # print 앞에 들여쓰기를 해주었다.

 

list1 = [1, 2, 3, 4, 5]

list2 = ['a', 'b', 'c', 'd', 'e']

 

for element in list1: print(element)

 

1

2

3

4

5

 

이런 식으로 배워나갔다.

 

그리고 비교 연산자에 대해서도 공부하였다.

 

 

이 부분은 크게 어렵지는 않았다.

 

조건문에 대해서도 공부해보았는데, 조건문이 생각보다 어려웠지만 재미 있었다.

 

If, elif, else 등으로 조건을 설정하고 출력해보는 연습은 상당히 재미 있었다.

 

그리고 본격적으로 함수에 대해서 공부하기 시작했다.

 

함수의 기본 구조는 반복하면서 숙달해야할 것 같다는 생각이 많이 들었다.

 

이 외에도 예외처리라던지 판다스와 데이터프레임에 대해서 공부했다.

 

 

웹과 웹스크래핑 패키지부터는 좀 어려운 이야기로 다가왔다.

 

이 부분도 반복 숙달이 필요하다.

 

크롤링에 대해서 공부하고 실제로 사이트에서 자료를 스크래핑 해보는 실습을 했다.

 

 

그리고 앱개발을 위해서 배운 자바스크립트에 대해서도 언급해보자면

 

자바스크립트에 대한 기초와 공부하기 위한 준비들을 같이 진행하였고,

 

예전에 독학할 때 어려움을 느꼈던 플랫폼이나 방향성에 대해서 확실히 짚고 넘어갈 수 있어서 좋았다.

 

파이썬과 자바스크립트를 같이 공부하면서 느꼈던건 둘이 비슷하면서도 많이 달라서

 

생각보다 연습하면서 손이 꼬이기도 하였다.

 

예를 들자면 크롬 콘솔 창의 엔터키와 구글 Colab의 엔터키가 달라서 줄을 띄어야할 때나 실행해야할 때 상당히 버벅거리게 되었다

 

let으로 변수를 선언하는 것과 const로 변수를 선언할 때 차이부터 시작해서

 

리스트(배열) & 딕셔너리(객체)의 차이에 대해서도 공부했고 개인적으로 이 부분이 상당히 흥미로웠다.

 

names = [{'name':'bob','age':20},{'name':'carry','age':38}]

 

// names[0]['name']의 값은? 'bob'

// names[1]['name']의 값은? 'carry'

 

new_name = {'name':'john','age':7}

names.push(new_name)

 

이런 식으로 리스트와 딕셔너리를 합치는 응용과 딕셔너리의 자주 쓰는 두가지 표현 방법을 배웠다.

 

그리고 자바스크립트 기본 제공함수에 대해서도 배웠고

 

기본적인 형태에 대해서는 많이 익숙해졌다. 처음에는 영타에 익숙하지 않아서 시간이 많이 걸렸지만

 

지금은 그래도 일주일 만에 나름(?) 빨라져서 좋다

 

그리고 배열에서 숫자들을 더한다던지 특정 원소 갯수를 구한다던지 

 

지정한 값 사이에 있는 요소들의 이름만 출력한다던지 등등을 배웠다.

 

 

그리고 기본적인 틀을 다 배우고 난 후에

 

최신 방식으로 fuction() 이 부분을 생략하고 arrow를 이용하는 방식까지 배우게 되었다.

 

그 와중에서 어려웠던 부분은 비구조 할당에 대한 것과 map 함수에 대한 내용이다.

 

그 내용을 가져와보자면

 

리스트(배열)를 순회하여 값을 꺼내 확인할 땐 다음과 같이 for 반복문을 사용했습니다.

이를 위해 리스트의 길이 값을 알아야 했습니다. map은 리스트의 길이값을 몰라도 되며, for와는 반대로 리스트안에서 몇 번째에 있는 값인지 순서를 알려줍니다.

 

라는 말이 잘 이해가 안되었다.

 

let numbers = [1,2,3,4,5,6,7];

 

numbers.map((value,i) => {

  console.log(value,i)

})

 

이 부분이

 

numbers.map(function(value,i) {

  console.log(value,i)

})

 

와 같다는 점이랑 i가 순서를 의미한다는 것을 배우고 넘어갔다.

 

실은 아직도 정확하게 작동하는 원리는 잘 모르겠지만 더 익숙해지려고 노력해야겠다.

+ Recent posts