3.14.2022

윈도우에서 안드로이드 스튜디오 설치하는 방법

  




이 포스트에서는 윈도우 환경에서 안드로이드 스튜디오를 설치하는 방법을 설명하겠습니다.







https://docs.flutter.dev/get-started/install/windows#install-android-studio 로 들어가서 위의 파란 링크를 클릭해줍니다.


 




위의 Download Android Studio를 클릭하여 다운로드합니다. 다운로드가 완료되면 실행파일을 더블클릭하여 설치를 시작합니다. 




 

설정은 기본 세팅 그대로 두십시오. 끝까지 진행한 후 Finish를 눌러 설치를 완료해주세요. 





가져올 기본 세팅이 없으므로 그대로 OK를 눌러주세요. 





구글과 해당 소프트웨어(안드로이드 스튜디오)의 오류 데이터를 공유할 의사가 있는지 물어봅니다. 원하신다면  파란 버튼을, 원하시지 않는다면 그 옆의 검은 버튼을 눌러주세요.





마찬가지로 기본 세팅대로 따라갑니다. 약관에 동의하는 창에서는 왼쪽 리스트에서 보이는 큰 세 항목을 클릭하여 Accept를 눌러준 후, 다음으로 넘어갑니다. 





설치가 끝나면 아래와 같은 창이 나옵니다. 





Share:

윈도우에서 플러터 설치하는 방법




 https://docs.flutter.dev/get-started/install/windows#get-the-flutter-sdk 로 들어가서 아래의 파란 버튼을 눌러 flutter를 다운로드 합니다. 



다운로드 된 압축파일을 원하는 위치에 풀어줍니다.








그 후, 압축 해제 한 폴더 안으로 들어가 flutter -> bin 폴더로 들어갑니다. 





해당 폴더창을 그대로 두고, 윈도우 검색창에서 env를 검색하여 나오는 아래 제어판 경로로 들어갑니다. 





아래와 같은 환경변수 설정창이 나옵니다. 




 

위와 같이 사용자 변수 목록에서 Path라는 변수가 없으신 분은 바로 밑의 새로 만들기 버튼을 클릭해주세요. 




환경변수의 이름은 Path로, 변수 값은 아래 이미지와 같이 플러터를 설치한 폴더 아래 flutter -> bin 의 경로를  복사하여 입력해주세요.







설정창에 이미 Path라는 변수가 있으신 분들은 해당 변수를 더블 클릭해주세요. 그 후에 나오는 환경변수 편집창에서 새로 만들기 버튼을 누른 후 해당 경로를 입력해주세요. 





확인을 눌러 환경변수 창을 모두 닫아줍니다.

그 후, 압축 해제한 폴더 속 flutter 폴더로 이동해줍니다. 폴더창에서 마우스 오른쪽 클릭 후 Windows  터미널에서 열기 버튼을 클릭해줍니다.






명령창이 열리면 아래 명령어를 입력하여 플러터가 잘 설치되었는지 확인해줍니다.


where.exe flutter dart


위와 같이 경로의 목록이 출력되면 잘 설치된 것입니다.

동일한 명령창에서 아래 명령어를 입력하여 줍니다.

  • where.exe flutter dart

flutter doctor


 

위와 같이 flutter 세팅 체크 결과 가 나오면 flutter가 정상적으로 설치된 것입니다.


Share:

1.18.2022

1인 개발로 Flutter 앱을 출시하다


Web에서 App으로

웹에서 앱으로 전향한 이유는 매우 간단하다. 1인 개발을 시작하기에 더 적합한 형태라고 생각했기 때문이다. 물론 웹으로 서비스를 만들 수 있다. 하지만 그렇게 할 경우 내 머릿속에 그려지는 서비스의 규모가 너무 컸다. 다른 여러 창업 서적에서도 충고했고, 나 역시도 원했던 것은 ‘작은 시작’이었다. 1인 개발은 개발만 하는 것이 아니다. 어쩌면 1인 개발이라는 명칭보다는 1인 사업이라는 타이틀이 더 적합할 수 있겠다. 실제로 이번에 유료 앱을 출시하는 과정에서 사업자번호가 없었으면 진행하기 매우 어려웠을, 아니면 불가능 했을 수 있는 절차들이 몇개 있었다. (앱을 본격적으로 개발하기에 앞서 개인 사업자 신청을 미리 해두었다) 거기다 개발 전에 들어가야 하는 기획, 개발 후에 들어가는 마케팅, 개발 후 유지보수, 사업자로 인한 각종 부수적인 업무들까지... 1인 개발을 제대로 하려고 마음 먹으면 더이상 개발이 아니라 사업이 되어 있다.

나 혼자서 커버할 수 있을 정도로 작게 시작하고자 했기에, 백엔드 관리가 필요없고, 일반 사용자들이 좀 더 친숙하게 다가가는 앱 서비스를 기획하기 시작했다.

React Native가 아닌 Flutter를 선택한 이유

전에 취업준비를 할 때 React Native를 잠깐 배워본 적이 있다. 그 때 어쩌다가 네이티브 코드까지 까보아야 하는 경험이 있었다. 그 때의 기억 때문인지, 그럴 바에는 아예 네이티브를 배우는게 낫겠다 싶어 맨 처음 무료 앱을 개발할 때는 Kotlin을 배워서 개발했다. 그 다음으로 유료 앱을 개발하면서 구글과 애플 플랫폼에 모두 출시하고 싶었고, 그래서 Flutter를 들여다보게 되었다.

나는 React로 일을 했고, React Native을 배운 경험이 있었지만, Dart를 빠르게 훓고 Flutter 코드를 몇 번 테스트 해본 후 고민 없이 Flutter로 개발하기로 하였다. 그리고 개발 과정에서도 Flutter로 선택한 것을 매우 만족하였다. React Native가 눈에는 익숙했지만 쓰면 쓸 수록 불편했던 반면, Flutter는 코드를 작성하면서 크게 불편하다고 느낀 지점이 없었다. 물론 개발 도중 패키지의 네이티브 코드를 까보기도 하였다. 하지만 그러면서 더 Flutter가 좋아졌다. 패키지를 들여다보면서 MethodChannel , 네이티브를 Flutter로 끌어다 쓰는 부분을 공부하였다. ios 코드를 배운적이 없지만, 필요한 ios 코드만 공부한다면 Flutter에서 필요한 패키지를 깔끔하게 구현할 수 도 있겠다는 생각이 들었다.

Flutter를 선택한 것은 매우 만족스런 경험이었다.

내가 하고 싶은 일을 할 수 없을 때까지 미루지 말자

퇴사 후 채용사이트에서 올려 놓았던 이력서를 보고 몇몇 제의 메세지를 받았다. 퇴사 후 초반에는 나도 다른 회사 면접을 몇 개 보았다. 하지만 가면 갈수록 과연 회사 생활이 나와 맞는 것일까, 끊임없이 내 능력을, 시간을, 쓸모를 증명해야 하는 개발 직장인 생활이 정말 내가 원하는 것일까, 아니면 당장 안정적인 월급을 받고 싶은 것일까 스스로에게 질문하게 되었다.

개발 공부를 시작하면서 나는 디지털 노마드 생활을 꿈꾸었다. 빠르게 실력을 키워서 노마드가 되는 것이 애초의 목표였다. 코로나가 장기화 되면서 해외 노마드 생활은 힘들어졌지만 이 목표를 떠올리자 지금부터 시작하자는 마음의 결정을 내렸다. 최근에 ‘데일 카네기의 자기관리론’이란 책을 읽고 있는데, 그 책에서는 사람들이 인생의 시기마다 다음 시기에 행복을 누리자고 지금의 행복과 도전을 미룬다는 내용이 나온다. 결국 은퇴하고 나서 더이상 미룰 수 없을 때 후회하는 사람이 많다고 했다. 하고 싶은 일도 도전할 수 있는 때와 없는 때가 있는 것 같다. 그래서 시작했다.

개발보다 어려운 마케팅의 세계

개발은 컴퓨터와의 싸움이다. 사실 이 녀석은 0과 1로 된 아이로, 내가 논리정연하게 지시하기만 하면 말을 잘 듣는다. 한동안 그런 세계 속에서 우물 안 개구리처럼 살다가 앱을 출시하고 마케팅의 세계로 나아가 보니, 컴퓨터 CPU보다 복잡하고 비밀스런 소비자의 마음이 있었다. 소비자는 코드의 깔끔함은 신경쓰지 않는다. 소비자는 자신이 제공받는 가치를 본다. 서비스의 가치를 어필하고, 필요로 하는 사람들에게 먼저 다가가고, 끊임없이, 그러나 자연스럽게 구애해야 한다. 요즘은 앱 출시를 마치고 이런 지점을 고민하고 시도하며 지내고 있다.

이제부터 시작

연습은 끝났다. 이제는 실전으로 배울 차례이다. 내가 이 앱을 기획하고 개발하면서 담고자 했던 가치를 100% 보여주자.


이 글은 아래의 걱정은행 이라는 앱을 만들면서 기획 및 개발 과정을 되돌아본 내용입니다.

안드로이드 : https://bit.ly/3GKWEdC

아이폰 : https://apple.co/3IdphAf

인스타그램 : https://www.instagram.com/worry_bank/


Share:

11.16.2020

비전공자, 1년 독학, 그리고 취업


 

"잘못 탄 기차가 나를 목적지로 데려다준다"는 말이 생각난다. 떨어질 줄 알았던 시험이 나를 취업까지 이어준 것을 보면 그 말이 맞는 경우도 있는 것 같다. 순전히 운이 좋았다고 하면 그동안 내가 쏟아 부었던 노력이 억울할 것이다. 장장 1년. 코딩 공부를 시작한지 딱 1년만에 취업에 성공하였다. 그것도 내 인생 첫 회사 면접에서 말이다.

결국 웹 개발 공부의 거의 대부분은 독학으로 하였지만, 중간 중간 꽤나 여러 프로그램을 들쑤시고 다녔다. 하지만 누가 어떻게 공부했냐고 물어본다면 독학이라는 답변을 한다. 실제로 나의 코딩 공부 대부분은 독학이었다.

독학은, 그것도 비전공자가 하는 독학은 참 외로웠다. 그래서인지 같은 관심사로 이야기를 나누고 함께 고심할 수 있는 회사 생활이 재미있기도 하다. 입사 초반이어서 모든 것이 벅차고 부담스럽지만 그와중에도 시간을 내어 이 글을 쓰는 이유는 이전의 나와 같은 처지에 계신 분들이 분명 계실 것이기 때문이다. 그리고 나의 경험에 비추어 보았을 때, 그러한 상황에서는 귀동냥이 안 되기 때문에 눈동냥으로 인터넷 상의 실제 후기들에 의존하게 된다. 나의 이야기는 아직도 현재 진행형이지만 다른 분들께 정보를 드리고, "아, 이런 경우도 있구나"하는 인사이트를 줄 수 있다면 좋겠다.

밑져야 본전이니까...한 번 해보지 뭐

처음에는 제 2 외국어를 커리어로 가져가려 했다. 그러나 언어는 수단일 뿐, 나만의 핵심 기술이 있지 않으면 언어는 삼겹살 없는 상추였다. 그래서 고민하다가 코딩 공부를 시작했다. 뜬금없이 왠 코딩이냐고 할 수도 있고, 돈 많이 주는 거 하려고 한다고 생각할 수도 있다. 하지만 코딩은 나의 수많은 관심사 중 하나이었고, 마침 슬럼프를 겪고 있었던 내가 동아줄 부여잡듯 잡은 것이 코딩이었다.

4학년 졸업을 앞두고 장기 휴학을 하며 코딩 공부를 시작했다. 혼자 생활코딩을 들으며 이것저것 만들어 보다가 코딩 부트캠프 기초반에 들어갔다. 하면 할 수록 재밌는 것이, 나의 적성에 맞는 일 같았다. 그래서 기초반 때고 실전반도 가려고 했으나 비싸도 너무 비싼 가격에 혼자 공부해보는 것으로 결정하였다.

하루 9시간 코딩 가즈아~!

취업 준비 기간동안 내가 잘 한 것 중 하나는 장시간의 집중한 공부시간 확보였다. wakatime이라는 vscode extension을 설치해서 확인해보니 하루 평균 9시간 정도 코딩한 것으로 나왔다. 물론 개발자로 커리어를 전환하는 과정에서 풀타임으로 시간을 낼 수 있는 사람은 많지 않을 것이다. (나는 대학 4학년 장기휴학이라는 찬스를 썼었다) 하지만 여건을 만들어 길고 집중된 공부시간을 만들기를 강추한다. 개인적으로 가장 중요한 것 중 하나라고 생각한다.

그 9시간 동안 나는 스스로 아이디어를 내어 프로젝트 개요를 짜고, 구글링으로 필요한 기술을 검색하며 자잘한 프로젝트들을 많이 진행했다. 마무리가 제대로 된 것은 몇 가지 없다. 하지만 이런 공부 방법으로 배우지 않았다면 훨씬 더 먼 길을 돌아 돌아 갔을 것 같다.

외롭고 불안한 독학의 길

혼자 독학하면서 가장 힘들었던 것을 꼽으라면 그 과정이 참으로 외롭고 불안하다는 것이다. 아무런 보장도 없고, 내가 얼마나 하고 있는건지 감도 잡지 못하고, 정말 "막막"했다. 마지막에 가서는 코딩보다 다른 것으로 마음이 갔다.

글의 첫머리에 "잘못 탄 기차가 나를 목적지로 데려다준다"라는 말처럼 그렇게 지내던 나는 뜬금없이 취업이 되었다. 큰 기대 없이 보았던 프로그래머스 테스트에서 붙고, 그렇게 그렇게 면접을 보고 취업을 했다. 이 모든 과정이 정말 눈 깜짝할 새에 일어났다. 그렇게 길게 공부한 기간이 결국은 이 순간을 위한 것이었구나.

이 글을 읽고 있을지 모르는, 그 떄의 나와 같은 느낌을 느끼는 사람에게 말 해주고 싶다. 나처럼 너무 오래 그 상태로 있지 말라고 말이다. 자신의 실력을 모르면 면접에서 부딪치며 배우라는 조언을 듣지 않았었다. 지금에 만족하지만 만약 그 때 좀 더 자신감을 가지고 부딪치며 공부해갔다면 그 고통의 기간이 좀 더 짧아지지 않았을까 생각한다. 웹 개발을 독학하시는 모든 분들, 정말 응원한다.

비슷한 듯 다른 또 하나의 시작

취준 기간동안에는 "취업"이 목표이었다면, 취업이 된 지금의 목표는 무엇일까? 요즘 내 일기장의 주된 주제이다. 하루 하루가 금방 사라진다. 부디 손가락 사이로 흐르는 시간 속에서 조금이라도 성장하고, 앞으로 나아갈 수 있기를 바란다.

Share:

10.04.2020

Studying Basic GIT(init, add, commit, branch, merge, stash)

This summary is based on a very useful tutorial. (not English, but Korean)


  • What is GIT?

    → Version Control System

Basic Commands of GIT

  • git init

  • git add

    • Why should I do git add before git commit ?

      It makes you possible to choose what to commit.

      It great when you have done massive changes on your code, but forgot to commit by each feature.

      We call stage area when you add but didn't commit.

      After commit, it goes to repository .

  • git status

    → It will show you what has been added(tracked) and what has not.

  • git config —global user.name <your name>

  • git config —global user.email <your email>

    → If you are using git for the first time, you need to configure git account to let git and others know who is making the commits.

  • git commit

    → activate vim for writing commit message

    shortcut git commit -m <your message>

  • git log

    → It will show you the history of commit that you made.

  • git log -p

    → you can see the differences between each commit

  • git diff <A commit id>..<B commit id>

    → It will show you the differences between A commit and B commit in a source level.

  • UNDO the commit

    1. reset
      • git reset <commit id that you want to go back to> — hard
      • the version after above commit will be disappear.
      • You will ONLY can reset the commit on your local.(can't reset already pushed one)
    2. revert
      • remove the target commit and create a new commit.

How GIT Works

  • index(also called cache, staging area)

    • Index contains the file names that have been added, and the location address of that file in the objects folder.

    • It uses SHA1 hash function to generate file directory name(first two letter of the hash string), and file name(left over hash string).

      → SO, If the contents of two different file is exactly same, then git reuses the previous one. (means that git does not create another objects file)

  • objects

    • The objects directory is the one contains the source code that has been git add .
    • The name of the file and the directory name which contains the target file are come from the hash string. So it doesn't contain the file name.(index does)
    • It also contains the commit log.
      • The commit object has two important infomations.
        1. tree(also called snapshot )

          → pointing the object that contains addresses of this version files.

          →The type of each file is blob .

        2. parent

          → pointing the object that contains addresses of previous version files.

  • GIT compares most recent index and commit objects, and make decisions.(git status messages)

GIT Branch

  • git branch

    → show all branches and let us know which one we're in

  • git branch <new branch name>

  • git checkout <branch name that you want to be in>

    shortcut git checkout -b <new branch name that you want to create and want to be in at the same time>

  • git log —branches —decorate —graph <optional : —oneline>

    → show git log with branches states and show us branch graph

  • git diff master..<other branch> || git log master..<other branch>

    → show us differences between two branchs

  • (if you want to merge A to B, you must checkout to B) git merge A

  • git branch -d <branch name that you want to delete>

  • git stash [save]

    stash command let you save current changes like a temporary commit, you don't actually write the commit command though.

    → you can skip the save command.

  • git stash list

    → It shows all the stashed log.

  • git stash apply

    →It brings back most recent stashed state, so that you can continue with your work.

    → It is helpful to type git status to understand how stash works.

  • git stash drop

    → It deletes most recent stash log.

    shortcut git stash pop(apply and drop)

  • git reset — hard HEAD

    → It roll back the current state to the most recent commit(not stash one, but actuall commit).

  • alert git stash ONLY handle the file that is being tracked to git. So, for example, if you have a new file that you never added before, then stash cannot handle that file.

Share: