[Android] 코루틴 Coroutine Context and Dispatchers 이번에는 coroutine context와 dispatchers 에 대해 알아보겠습니다 [Dispatchers and threads] Coroutine 은 CoroutineContext 에 의해 실행됩니다 CoroutineContext 의 요소에 여러 요소를 설정할수 있는데 요소들 중에는 Job, Dispatchers 등이 있습니다 Dispatchers 는 Coroutine이 어떤 thread 나 thread pool 에서 실행될지를 결정하는 요소입니다 모든 Coroutine builder 는 옵셔널로 CoroutineContext 를 파라미터로 받습니다. ex) launch, async 이것을 통해 dispatcher를 지정할 수 있습니다 fun main() = runBlocking { launch {..
[Android] 코루틴 Composing Suspending Functions 1. 코루틴 왜 써야하는가 2. 코루틴 기초 3. 코루틴 Cancellation and Timeouts 이번에는 suspending functions을 조합하여 코루틴을 유용하게 사용 하는 법에 대해 알아보겠습니다. [Sequential by default] fun main() = runBlocking { val time = measureTimeMillis { val one = doSomethingUsefulOne() val two = doSomethingUsefulTwo() println("The answer is ${one + two}") } println("Completed in $time ms") } suspend fun doSomethingUsefulOne(): Int { delay(1000L)..
[Android] 코루틴 Cancellation and Timeouts 1. 코루틴 왜 써야 하는가 2. 코루틴 기초 에 이어서 이번에는 코루틴의 취소와 타임아웃에 대해 알아보겠습니다 코루틴을 정교하게 취소하지 않으면 메모리를 잡아먹기 때문에 메모리릭이 발생합니다. 코루틴을 취소하는 방법은 cancel를 호출하면 간단하게 처리됩니다. 그러나 코루틴 자체가 스스로 cancel에 대해서 협조직은 형태로 구현이 되어있어야 합니다. 그러한 특성들에 대해서 알아보겠습니다 [Cancelling coroutine execution] fun main() = runBlocking { val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // 1.3초 지연 pr..
[Android] 코루틴 기초 저번 코루틴은 왜 써야하는가 에 이어서 이번에는 코루틴의 기초에 대해 공부해 보겠습니다! [ First Coroutine ] fun main() { GlobalScope.launch { // 백그라운드에서 코루틴을 생성하고 진행합니다 delay(1000L) // 1초 동안 지연 println("World!") // 지연 후 출력 } println("Hello,") // 코루틴이 지연되는 동안 메인쓰레드는 계속 됩니다 Thread.sleep(2000L) // JVM을 유지하기 위해 2초동안 메인 스레드를 차단합니다 } 코루틴 문서에서는 이것을 쓰레드로 시도해 볼것을 권유했습니다. fun Main() { thread { //delay(1000L) Thread.sleep(2000L) println("world..
[Android] 코루틴 왜 써야하는가 코루틴은 구글 블로그에서도 공식으로 추천하고 있는 코틀린의 기능입니다. 블로그에 의하면 코루틴은 실시간 처리를 훨씬 쉽게 작성하고 이해할 수 있게 해준다고 합니다. 또한 Jetpack 라이브러리 (Lifecycle ,WorkManager, Room) 에도 코루틴을 지원하여 더 나은 코드를 작성할 수 있다고 합니다. [Coroutine] - 코루틴은 루틴의 일종 - 협동 루틴이라 할 수 있다 - 코루틴의 "Co"는 with 또는 together을 뜻한다 1 .코루틴은 이전에 자신의 실행이 마지막으로 중단되었던 지점 다음의 장소에서 실행을 재개한다. - 일반적으로 사용하는 함수나 루틴은 중단되는 개념이 없고 실행이되면 빠져나오고 끝인 반면에 코루틴은 실행이 되고나서 중단과 재개를 컨트롤 할수 있다 (함수의 ..
썸네일 [DEEP LEARNING] 윈도우 10에서 Darknet을 이용한 YOLOv3 데이터 학습 및 검출 방법 이번에는 저번 학습전 세팅에 이어서 학습을 시키고 검출까지 진행해보겠습니다. 세팅이 완료 됐다면 학습을 시켜주시면 됩니다 darknet detector train data/obj.data cfg/crack.cfg darknet53.conv.74 처음 학습전 가중치 파일은 다크넷에서 제공되는걸 썼습니다 http://pjreddie.com/media/files/darknet53.conv.74 (저는 학습을 끝낸후 재학습을 시키고 있는중이라 그래프가 0부터 시작하지 않은 것 입니다) 학습을 시작하게되면 이런 그래프 화면(chart) 과 학습이 진행되고있는 창(프롬프트)이 있을겁니다 Chart.png current avg loss : 손실률 iteration : 반복 횟수 time left : 남은 시간 max..
썸네일 [DEEP LEARNING] 윈도우 10에서 Darknet을 이용한 YOLOv3 데이터 학습 전 세팅 방법 저번 설치에 이어서 학습 방법 및 검출 방법에 대해서 알아보겠습니다 YOLOv3를 이용해 학습 시킬때 세팅을 해줘야 하는 부분이 몇가지 있습니다 학습과 트레이닝 데이터를 정의하는 data 파일 CNN레이어의 구조를 정의하는 cfg 파일 학습시킨 가중치 정보가 들어있는 weights 파일 1. 학습과 트레이닝 데이터를 정의하는 data 파일 일단 저는 일본 GIS 협회에서 제공하는 도로 손상 데이터 세트를 이용하여 학습을 시켰습니다 https://github.com/sekilab/RoadDamageDetector sekilab/RoadDamageDetector Contribute to sekilab/RoadDamageDetector development by creating an account on Git..
썸네일 [DEEP LEARNING] 윈도우 10에서 Darknet을 이용한 YOLOv3 설치 및 세팅 방법 이번에 회사에서 딥러닝을 하게되어서 공부도하고 정리도 할겸 글을 작성하려고 합니다 일단 컴퓨터의 사양은 아래와 같습니다 Windows 10 Pro i7-8700 RAM 16G GTX 1050Ti 윈도우 버전의 YOLO를 실행하기 위해서 밑에 적힌 4가지의 프로그램이 설치 돼있어야 합니다 (꼭 이 버전이 아니어도 됩니다! 대신 하나의 버전이 다르면 호환이 안될 가능성이 있어서 다른것도 맞춰줘야됩니다!) Visual studio 2015 (비쥬얼 스튜디오를 가장 먼저 깔아주는게 경로를 잡아주기 편합니다!) CUDA 9.0 cuDNN 7.6.5 OpenCV 4.0.1 https://visualstudio.microsoft.com/ko/vs/older-downloads/ Visual Studio 이전 다운로드 ..
[LINUX] VT-x is not available (VERR_VMX_NO_VMX) Windows 10 HOME 64비트 운영체제 RAM 16G, i7-8750H 를 사용중입니다. VirtualBox6.1.4 버전을 받았고 CentOS8.1 버전을 받아서 설치중이었는데, 시작을 누르니 '가상머신 CentOS8의 세션을 열수 없습니다' VMMR0_DO_NEM_INIT_VM failed: VERR_NEM_MISSING_KERNEL_API (VERR_NEM_MISSING_KERNEL_API). VT-x is not available (VERR_VMX_NO_VMX). 이런 에러가 발생하였습니다 검색해보니 hyper-V를 꺼야한다는 내용이 있었습니다 1. 관리자 권한으로 cmd 실행 2. cmd 창에서 dism.exe /Online /Disable-Feature:Microsoft-Hyper-V ..
[DOCKER] Windows 10 Home에 Docker Desktop 설치하기 Windows 10 Home에서 도커가 설치가 안됐는데 이 자료를 보고 따라하니 잘됐습니다. https://blog.sapzil.org/2019/06/09/docker-desktop-for-windows-home/
[GIT] git clone 이전 커밋 가져오기, 이전 커밋 클론하기 git clone 깃저장소주소 cd 프로젝트명 git reset --hard 이전커밋해시
[Android] 레이아웃을 이미지로 만들어서 공유하기 Layout to Image share 하나의 화면 자체를 공유하고 싶을때 사용합니다. 작동 원리는 레이아웃을 스크린샷 형태로 갤러리에 저장한 뒤에 그 uri을 가져와서 공유하는 방식입니다. 일단 LayoutToImage 클래스를 복붙 합니다! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 public class LayoutToImage { public interface SaveImage..