본문 바로가기
반응형

전체 글408

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.
Sealed Class와 Enum Class 정리 오늘은 Kotlin의 Sealed Class와 Enum Class에 대해 알아보겠습니다.SealedClassSealed 와 WhenEnumEnum Iterate1. Sealed Class1-1. Sealed ClassSeal의 뜻은 밀봉하다, 봉인하다는 뜻 인데요.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. Flow1-1. Flow비동기 작업을 하는 Coroutine의 suspend 함수는,일반적으로 하나의 값을 반환(return)하거나 완료 시 종료됩니다.스트림이 아닌 단일 값 처리에 적합하다는 의미이지요. 비동기적으로 데이터를 지속적으로 방출하거나,한 번에 여러 개를 처리하는 데 적합한 API가 있는데요.. 2022. 10. 10.
Kotlin Coroutine 총정리 part2 # Cancellation Exception Handling 이 글은 이전글에 이어서, Exception Handling과 Cancellation 그리고 여러개의 Job을 다룰때의 주의점등에 대해서 정리해 보겠습니다.참고로 이전 글을 아래 링크를 참조해주세요.>> Kotlin Coroutine 총정리 part1 # launch async Context Job CoroutineScope 1. Exception HandlingCoroutine이 취소(cancel)되면, CancellationException이 발생하여 전파됩니다. 하지만 이 예외는 suspension point에서 자동으로 처리되어 무시되는데요.Kotlin coroutine에서 취소 처리를 위한 정상적인 방법이기 때문입니다.suspension point에서 예외를 자동으로 처리함으로써, 개발자가 일일.. 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. HILTHILT는 Google의 Dagger를 기반으로 만든 Dependency Injection 라이브러리인데요.공식문서에는 Hilt의 목표에 대해서 아래와 같이 정리하였는데요.Kolin이 Kotlin에 특화된 심플한 DI라이브러리.. 2022. 9. 16.
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.
Flask 웹프레임워크 사용방법 정리 # python Routing 오늘은 파이썬의 경량 웹프레임워크인 플래스크(Flask)에 대해서 정리해 보도록 하겠습니다. 1. flask 설치 프로젝트 디렉토리에서 pip모듈을 이용해서 flask를 먼저 설치해 주어야 하는데요. 아래 명령어를 사용해주면 됩니다. python -m pip install Flask 2. Hello World 경량 웹프레임워크이므로 빠르게 코드를 작성해서, Hello World를 뛰어 보겠습니다. 아래와 같이 해주면 되는데요. host는 test용이므로, 'localhost'로 지정해주구요. port는 원하는 port를 할 수 있는데, 지정하지 않으면, 5000포트로 열립니다. 다만, macOS에서는 5000포트가 이미 사용되는 것으로 알고 있어서 여기서는 3000포트를 사용하였습니다. 정상적으로 잘 동.. 2022. 4. 23.
MongoDB Atlas 무료 로 사용하기 오늘은 MongoDB의 Atlas서비스를 무료로 사용하는 방법에 대해서 정리해 보겠습니다. 1. Cluster 만들기 가장 먼저 해야할 것은 Cluster를 만드는 것 입니다. 회원가입을 하였다면, 우측 상단에 New Project 버튼을 눌러서 프로젝트를 생성해 줍니다. 이제 아래 화면에서 Build a Database를 선택해 줍니다. 우리에게 필요한 것은 Free로 제공되는 Shared입니다. 공짜로 제공되는 대신, 다른 사람과 서버를 공유하도록 하는 것 같습니다. 그럴일은 별로 없겠지만, 같이 쓰는 누군가가 서버를 크래쉬하면, 같이 다운되어버리겠지요. Create 해 주면, 아래와 같이 Shared 의 region을 선택하는 화면이 나옵니다. 예전에는 없었는데, Seoul이 포함되어 있는 것을 볼.. 2022. 2. 6.
Javascript Object 와 Function 에 관한 정리 오늘은 Javascript의 Object(객체)와 Function(함수)에 대해서 정리해 보도록 하겠습니다. 1. Object의 생성 Javascript의 Object르 생성하는 방법은 여러가지가 있지만, 다음과 같이 "{"과 "}"을 사용할 수 있습니다. 생성한 object의 property에는 아래와 같이 "." 또는 "[]"를 이용해 접근할 수 있습니다. 그럼 아래와 같은 log를 볼 수 있습니다. 2. Object의 값 변경 값을 변경하는 방버도 아래와 같이 간단합니다. 로그를 찍어보면 true로 값이 변경된 것을 볼 수 있습니다. 단순히 property의 값을 변경하는 것 이외에도, property를 추가할 수도 있습니다. 로그를 보면, iq라는 property가 추가된 것을 알 수 있습니다. 2022. 2. 1.