본문 바로가기
반응형

전체 글362

Mac 키체인 Access 토큰 비밀번호 업데이트 # Github Bitbucket KeyChain Git에 인증을 하거나, SourceTree에서 인증후 push를 할 때, Keychain을 요구하는 화면이 뜨는 것을 볼 수 있습니다. 이것은 키체인 설정이 잘못되었기때문인데요. 오늘은 이 문제를 해결하는 방법에 대해서 정리해 보도록 하겠습니다. 1. KeyChain Access 와 Personal Access Token 1-1. 키체인 맥에서는 키체인을 이용해서, 암호나 계좌번호 등 중요정보를 저장해 사용하기 편리하게 하고 보안을 유지하는데요. 참고로 '로그인 키체인'이라는 것이 있는데요. 이것은 맥컴퓨터를 켜서 로그인할 때 사용하는 로그인 암호를 말합니다. 1-2. Github나 Bitbucket에서 발생하는 키체인 문제 Github나 Bitbucket에서 인증하는데 있어서, 기존 Password를.. 2022. 10. 15.
Github 에서 발급하는 Personal Access Token 이제 Github에서 사용하는 password 로 push할 때, 원격저장소 인증이 불가능해 졌습니다. 그래서 Personal Access Token이라는 것을 발급받아, password로 써야하는데요. 오늘은 이것에 대해서 정리해 보도록 하겠습니다. 참고로 Bitbucket도 이와 같은 이슈가 있어서 github가 비슷한 방식으로 문제를 해결해야 하는데요. bitbucket에도 계정이 있다면, 아래 글을 참조해 볼 수 있습니다. >> Bitbucket App Passwords 이슈 해결 # Account Sourcetree 1. Github 사이트에서 Personal Access Token 발급 Token발급받는데 가장 중요한 것은 메뉴를 찾는 것인데요. 먼저, github사이트로 이동해서, 우측상단의.. 2022. 10. 13.
StateFlow 정리 # Android Kotlin Coroutine getStateFlow StateIn 오늘은 Kotlin의 StateFlow 에 대해서 정리해 보도록 하겠습니다. StateFlow도 Flow API의 하나인데요. Flow에 대한 내용은 아래 글을 참조해 주세요. >> Kotlin Coroutine Flow 총정리 part3 # launchIn 1. StateFlow StateFlow는 업데이트가 가능한 데이터값을 가지는 State라는 것을 가지고, collector에게 emit(전파)하는 인터페이스입니다. SharedFlow를 상속받은 인터페이스 이기도 한데요. State를 가지고 있다가, 변경되면 emit을 해주는 역할을 하는 핫스트림이라고 생각하면 됩니다. 핫스트림과 콜드스트림에 대해서는 아래 글을 참조해 주세요. >> Kotlin Coroutine Flow 총정리 part3 # la.. 2022. 10. 12.
Sealed Class 총정리 feat. enum Class 오늘은 Kotlin의 Sealed Class에 대해서 알아보도록 하겠습니다. 1. Sealed Class 와 Interface 1-1. Sealed Class 와 Interface Seal의 뜻은 밀봉하다 봉인하다는 뜻인데요. SealedClass는 abstract클래스여서 객체로 만들수 없는 자신과, 자신을 직접 상속받는 서브클래스나 interface 들로 구성되어 있습니다. 외부의 다른 Class들은 이 sealed클래스로부터 상속을 받을 수 없도록 봉인되어 있습니다. 이렇게 외부에서 확장되지 않은 밀봉된 구조를 가짐으로서, 컴파일타임에 코드를 작성하면서, 서브클래스들에 접근해서 사용이 가능해 지는 것 이지요. 이 서브클래스들은 각각의 특성에 따라서 다양한 생성자를 가질 수 있는데요. 데이터를 받아서.. 2022. 10. 11.
Kotlin By 키워드에 대한 이해 # Property Delegate Pattern 오늘은 Kotlin에서 많이 사용되는 by 키워드에 대해서 정리해 보려고 합니다. by 키워드에 대해 알아보기 전에, 그 근간이 되는 Deletgate Pattern에 대해서 알아 보도록 하겠습니다. 1. Delegate Pattern 에 의한 Class Delegatation (클래스 위임) Delegate 라는 의미는 위임한다는 뜻 입니다. 프로그래밍에서 자주 등장하는 용어이기도 한데요. 코드를 보면서 이해해 보도록 하겠습니다. 아래에는 같은 Car라는 인터페이스를 상속받는, Tesla라는 클래스와 Kia라는 클래스가 있습니다. Testla는 일반적인 클래스 이구요. Kia는 Delegate패턴을 이용하였습니다. 2022. 10. 11.
Kotlin Coroutine Flow 총정리 part3 # launchIn 지난 글에 이어서 part3에서는 Coroutine의 Flow에 대해서 정리해 보도록 하겠습니다. 지난 part1과 part2는 아래 링크를 참조해주세요. >> Kotlin Coroutine 총정리 part1 # launch, async, Context, Job, CoroutineScope >> Kotlin Coroutine 총정리 part2 # Cancellation, ExceptionHandling 1. Flow 1-1. Flow Coroutine의 suspend 함수는 비동기이기는 하지만 값을 하나만 return해 줍니다. 지속적으로 혹은 한번에 여러개의 값들이 나오는 경우에 대응하기 위해서 만든, Coroutine의 비동기 스트림 API가 flow입니다. RxJava API를 사용해보았다면 사용방.. 2022. 10. 10.
Kotlin Coroutine 총정리 part2 # Cancellation Exception Handling 이 글은 이전글에 이어서, Exception Handling과 Cancellation 그리고 여러개의 Job을 다룰때의 주의점등에 대해서 정리해 보겠습니다. 참고로 이전 글을 아래 링크를 참조해주세요. >> Kotlin Coroutine 총정리 part1 # launch async Context Job CoroutineScope 1. Exception Handling cancel된 Coroutine은 CancellationException을 전파한다는 것을 알게 되었는데요. 이것은 suspension포인트에서는 무시됩니다. 이것은 cancel을 위한 정상적인 방법이기 때문입니다. 1-1. Exception의 전파 코루틴의 Exception전파에 있어서는 2가지로 나누어 지는데요. Exception 전파 .. 2022. 10. 9.
Kotlin Coroutine 총정리 part1 # launch async Context Job CoroutineScope 오늘은 Kotlin의 Coroutine에 대해서 정리해 보도록 하겠습니다. 1. Coroutine Kotlin에서 네트워크 호출이나 디스크아이오 같은 비동기 코드를 다룰 때 언급되는 것이 Coroutine인데요. 공식문서에서의 Coroutine에 대한 정의를 보면, suspendable한 Computation이라고 나와있습니다. suspend는 중단하다 혹은 유예하다의 뜻 인데요. 필요할 때 마다 suspendable한 단위의 코드들이, suspend 되었다가 다시 깨어나서 resume 하여 과업을 완료한다는 것 입니다. 그리고 Coroutine과 쓰레드는 컨셉적으로는 비슷하지만, 쓰레드는 아닙니다. 한 쓰레드에서 suspend 되었다가, 다른 쓰레드에서 깨어나서 실행될 수 도 있는 좀 더 가볍고 작은 .. 2022. 10. 7.
Kotlin 확장 함수 및 Property 에 대한 정리 # Extension Functions Kotlin을 이용하면 기존 Class와 Interface의 확장이 매우 용이합니다. 오늘은 이러한 확장을 가능하게 하는 중요한 개념인 Extension Functions 와 Extension Property에 대해서 정리해 보겠습니다. 1. Extension Functions 와 Extension Properties 1-1. Extension Functions 와 Extension Properties 여기서 사용된 Extention의 뜻은 확장 또는 연장인데요. Kotlin에서는 Class나 Interface를, 다른 Class나 Interface에서 상속받지 않고도, 함수를 추가하거나 Property를 추가함으로서 확장할 수 있는 능력을 제공해주고 있습니다. 예를 들어서, 만약 Retrofit이나 G.. 2022. 10. 4.
Bitbucket App Passwords 이슈 해결 # Account Sourcetree 오늘은 Bitbucket에서 해결해야할 이슈 한가지에 대해서 정리해 보려고 하는데요. Push를 하면 기존 Bitbucket 패스워드로는 인증이 안되기 시작한 이슈입니다. 오랜 만에 Bitbucket을 사용하시는 분들은 모르실 수 있어서 정리해 보도록 하겠습니다. 1. Push 후 보이는 에러메시지 커밋을 한 다음, SourceTree에서 Bitbucket에 푸쉬를 해보면 다음과 같은 메시지를 볼 수 있습니다. 2022. 9. 18.
HILT 에 대해서 정리해 보겠습니다. # DI Dependency Injection 오늘은 Hilt를 이용한 Dependency Injection에 대해서 정리해 보도록 하겠습니다. Dependency Injection에 대해 경험이 없으신 분들이라면, 아래 글을 통해서 기본적인 개념에 대해서 이해해 보시면 도움이 될 것 같습니다. 특히 Dependency를 주입해준다는 말의 의미에 대해서 이해해 보아야 합니다. >> Dependency Injection(DI)에 대해서 알아보자 이제 DI에 대해서 이해가 가신다면, HILT에 대해서 알아보도록 하겠습니다. 1. HILT HILT는 Google의 Dagger를 기반으로 만든 Dependency Injection 라이브러리인데요. 공식문서에는 Hilt의 목표에 대해서 아래와 같이 정리하였는데요. Kolin이 Kotlin에 특화된 심플한 D.. 2022. 9. 16.
Git 사용방법 총정리 하기 # github branch stash 오늘은 Git을 사용하는 방법에 대해서 총정리해 보도록 하겠습니다. 이 글은 Git을 VSCode 나 Android Studio 혹은 Source Tree같은 IDE나 그래픽 버전관리프로그램의 도움없이도, 기본적인 기능들을 다룰 수 있도록 하는 것을 목표로 작성하였습니다. 1. Git의 설치 1-1. Mac Git의 설치는 MacOS를 기준으로 Homebrew 를 사용하면 편리한데요. Homebrew가 설치되어 있지 않다면, 터미널에서 아래 명령어로 Homebrew를 설치해주면 됩니다. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 이제 설치된 homebrew를 이용해서 아래 명령.. 2022. 9. 14.
Python 이용한 Web Scraping 방법 # requests beautifulSoup 오늘은 Python의 request 와 BeautifulSoup 모듈을 이용해서, WebScrapping을 하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Web Scraping과 작업순서 1-1. Web Scraping Web Scraping이라고도 하구요. web data extraction이라고도 합니다. 웹사이트들로부터 데이터를 추출해내는 것을 의미하는데요. 요즘은 사이트를 검색하면 사이트의 프리뷰도 미리 검색사이트에서 볼 수 있습니다. 이것도 다 Web Scraping해서 얻은 데이터를 기반으로 하는 것 이지요. 1-2. 작업순서 WebScraping은 모듈사용방법을 읽히는 것도 중요하겠지만, 그보다도 Scraping할 페이지를 분석하고 어떻게 읽어올지를 파악하는 것이 중요합니다. 만약 특정.. 2022. 5. 7.
Selenium Web scraping 방법 정리 # Python implicit Explicit wait 오늘은 Python으로 Selenium 을 이용한 WebScraping 에 대해서 정리해 보도록 하겠습니다. 1. 필요한 모듈 설치 1-1. Selenium 모듈설치 가장 먼저해야할 것은 selenium 모듈을 설치하는 일 입니다. 프로젝트 폴더에서 아래코드로 Selenium 모듈을 설치해 줍니다. python -m pip install selenium 1-2. Chromedriver 설치 드라이버를 설치하면서 주의할 점이 있는데요. 바로 자신의 크롬버전과 같은 버전을 설치해야 한다는 점 입니다. 따라서 제일 먼저 할 것은 Chrome버전을 확인하는 일 입니다. 제 맥에는 아래버전의 크롬이 설치가 되어 있네요. 2022. 5. 6.
NodeJS 에서 CSV 읽어들이기 # JS 오늘은 NodeJS에서 CSV 파일을 읽어들이는 방법에 대해서 정리해 보도록 하겠습니다. 1. 큰 그림 어떤 방식으로 csv파일을 읽어들일지 정리해보면 다음과 같습니다. csv파일은 row는 "\n" 또는 "\r"로 구분되어 있구요. Column은 ","으로 구분되어 있습니다. 그러므로, NodeJS파일핸들 모듈을 이용해서 파일을 읽어들인다음, 먼저 "\n" 또는 "\r"로 텍스트데이터를 분리해서 list에 넣어주구요. 각 list에 들어간 아이템들을 다시 ","으로 분리해서 Column으로 읽어들이는 것 입니다. 2. fs 모듈 제일 먼저 필요한 것은 fs 모듈인데요. NodeJS에 이미 포함되어 있으므로 따로 설치하거나 할 필요는 없습니다. require로 해당 모듈을 사용할 수 있도록 해 줍니다. .. 2022. 5. 5.
pip 로 패키지 설치하고 관리하는 방법 # Python pip는 파이썬을 Package를 설치하고 관리할 수 있게 해주는 Package Installer인데요. 오늘은 이것에 대해서 정리해 보도록 하겠습니다. 1. pip 설치 1-1. pip 설치 pip를 설치하기 위해서는 python에 기본적으로 들어있는 ensurepip라는 모듈을 이용해야 하는데요. 아래 명령어를 이용하면 pip를 실행시킬 수 있습니다. python -m ensurepip --upgrade 2022. 4. 26.
Mac 에서 Cafe24 가상서버 호스팅 접속방법 # SSH 접속 Cafe24의 가상서버호스팅은 가격도 저렴하면서 용량도 적절해서 토이프로젝트나 테스트사이트를 론칭하기에 좋은데요. 오늘은 Mac에서 cafe24의 가상서버 호스팅에 접속하는 방법에 대해서 정리해 보도록 하겠습니다. 1. 부여받은 ip주소 확인하기 Cafe24에서 가상서버를 계약하고 나서 호스팅센터 홈페이지에 가면 다음과 같은 화면을 볼 수 있습니다. 먼저 찾아야 할 것은, '나의서비스관리' 메뉴입니다. 아래이미지의 화살표가 가르키는 곳을 찾아가면 됩니다. 서버 접속 정보는 아래와 같이, 간단하게 나와 있습니다. 아래 빨간색 화살표에 해당하는 것이, 우리가 할당받은 가상서버의 고정 ip주소입니다. 2022. 4. 26.
Python 에서 Time 다루는 방법 # epoch strftime 오늘은 python에서 time 을 다루는 방법에 대해서 정리해 보도록 하겠습니다. 1. time 모듈 python의 standard library 모듈에는 시간을 다루는데 필요한 time모듈이 포함되어 있습니다. 따라서, 시간관련함수를 사용하기 위해서 이 모듈을 아래와 같이 import 해주어야 합니다. import time 2. time() 과 time_ns() time모듈에 들어있는 time()함수는 현재의 시간을 보여주는데요. epoch로부터 얼마나 시간이 지났는지를 밀리세컨단위로 보여줍니다. import time time.time() epoch는 1970년 1월 1일부터의 시간을 초단위로 나타낸 것을 가르킵니다. 이 함수에서 return되는 값은 아래와 같이 float 입니다. 정수가 필요할 때.. 2022. 4. 26.