개발
-
[BOJ - Java] 19236번 청소년 상어개발/알고리즘 2021. 8. 7. 21:05
문제 19236번 - 청소년 상어 : https://www.acmicpc.net/problem/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 정답 및 풀이 import java.io.*; import java.util.*; public class Main { private static class Shark { int dir, sum, x, y; Shark(int dir, int sum, int x, int y) { this.dir = dir; this.sum = sum; this...
-
공식 가이드 문서로 Coroutine 공부하기 - [04. Coroutine Context and Dispatchers]개발/Kotlin 2020. 12. 2. 10:57
[ 04. 코루틴 컨텍스트 및 디스패처 ] 코루틴은 항상 Kotlin 표준 라이브러리에 정의된 CoroutineContext 타입의 값을 대표하는 일부 context 내에서 실행됩니다. Coroutine context는 다양한 요소의 집합입니다. 주요 요소는 이전에 보았던 코루틴의 Job, 이번 섹션에서 다루는 dispatcher입니다. # 디스패처와 스레드 Coroutine context에는 해당 코루틴이 실행을 위해 사용하는 스레드를 결정하는 coroutine dispatcher(CoroutineDispatcher 참조)를 참조합니다. coroutine dispatcher는 코루틴 실행을 특정 스레드에 제한하거나 스레드 풀로 디스패치하거나 제한없이 실행되도록 할 수 있습니다. launch 및 asyn..
-
공식 가이드 문서로 Coroutine 공부하기 - [03. Composing Suspending Functions]개발/Kotlin 2020. 11. 7. 04:23
[ 03. 일시중지 함수 구성 ] 일시중지 함수(suspending function)의 구성에 대한 다양한 접근방법을 다룹니다. # 기본적으로 순차적입니다 다른 곳에 정의 된 두 개의 Suspending function이 원격 서비스 호출 또는 계산과 같은 유용한 작업을 수행한다고 가정합니다. 이들은 유용한 척 할 뿐이지, 실제로 각각의 코드는 해당 예제를 위해 단지 1초간 지연될 뿐입니다. - code [전체코드 확인하기] : suspend fun doSomethingUsefulOne(): Int { delay(1000L) // 여기에서 어떤 유용한 일을 하고 있는 것처럼 동작합니다 return 13 } suspend fun doSomethingUsefulTwo(): Int { delay(1000L) ..
-
공식 가이드 문서로 Coroutine 공부하기 - [02. Cancellation and Timeouts]개발/Kotlin 2020. 11. 6. 06:57
[ 02. 취소 및 시간 초과 ] 해당 섹션에서는 코루틴 취소 및 시간 초과에 대해 설명합니다. # 코루틴 실행 취소하기 장시간 구동되는 애플리케이션에서는 백그라운드 코루틴에 대한 세밀한 제어가 필요할 수 있습니다. 예를 들어, 사용자가 코루틴을 시작시킨 페이지를 닫았을 수 있으며 이제 그 결과를 필요로 하지 않고 해당 작업을 취소할 수 있습니다. launch함수는 실행 중인 코루틴을 취소시키는 데 사용할 수 있는 Job을 리턴시킵니다. - code [전체코드 확인하기] : val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // 약간 delay println("main:..
-
공식 가이드 문서로 Coroutine 공부하기 - [01. Coroutine Basics]개발/Kotlin 2020. 11. 4. 06:28
[ 01. 코루틴 기본 사항 ] 코루틴 기본 개념을 다룹니다. # 첫번째 코루틴 - code [전체코드 확인하기] : import kotlinx.coroutines.* fun main() { GlobalScope.launch { // 새로운 코루틴을 백그라운드에서 실행 및 진행 delay(1000L) // 1초간 non-blocking 지연 (기본 시간 단위는 밀리세컨드) println("World!") // delay 후, 출력 } println("Hello,") // 코루틴이 지연(delay)되는 동안 메인스레드는 계속하여 진행 Thread.sleep(2000L) // JVM 유지를 위해 2초간 메인 스레드 차단(block) } - result : Hello, World! 기본적으로 코루틴은 경량(l..
-
공식 가이드 문서로 Coroutine 공부하기 - [00. Coroutine Guide]개발/Kotlin 2020. 11. 3. 06:17
[ 00. 코루틴 가이드 ] Kotlin은 언어로서의 표준 라이브러리에서 최소한의 low-level API만 제공하여 다양한 다른 라이브러리가 Coroutine을 활용할 수 있도록 합니다. 유사한 기능을 가진 다른 언어들과 달리, async 와 await 는 Kotlin의 키워드가 아니며 표준 라이브러리의 일부 역시 아닙니다. 또한, Kotlin의 suspending function 개념은 미래나 약속보다 비동기 작업에 대해 더 안전하고 오류 발생 가능성이 비교적 적은 추상화를 제공합니다. kotlinx.coroutines 는 JetBrains에서 개발된 Coroutine을 위한 풍요한 라이브러리 입니다. 여기에는 launch, async 및 기타를 포함한 여러 high-level 코루틴 지원 기본요소들..
-
Window OS에서 Git Secret 사용하기 3개발 2020. 6. 9. 19:22
파일 복호화 하기 git-secret을 적용했던 reposity를 클론해보겠습니다. 왼쪽이미지의 디렉토리는 파일에 git-secret을 적용시킨 후 commit/push했던 local repository입니다. 오른쪽 이미지의 디렉토리는 remote repository로부터 git-secret을 적용시킨 파일을 clone한 local repository입니다. 왼쪽 디렉토리에는 기존파일/암호화시킨파일이 모두 존재하나, 오른쪽 디렉토리에는 당연히 암호화된 파일만 존재합니다. 따라서 test.txt 파일을 확인하기 위해서는 복호화 과정이 필요합니다. 복호화 과정은 간단합니다. 우선 클론된 Local Repository로 이동합니다. $ cd /mnt/c/Yujin/cloneGitSecret 다음 명령어를 입..
-
Window OS에서 Git Secret 사용하기 2개발 2020. 6. 9. 19:15
파일 암호화 하기 기존 Local Repository 입니다. 1. Ubuntu에서 git-secret을 적용할 디렉토리로 이동 후 다음 명령어 작성합니다. $ cd /mnt/c/Yujin/gitSecret $ git-secret init 다음과 같은 결과가 나오면 성공입니다. git-secret: init created: '/mnt/c/Yujin/gitSecret/.gitsecret/' 2. 사용자를 추가합니다. $ git-secret tell 'email@gmail.com' 다음과 같이 키박스 파일이 생성되면 성공입니다. gpg: keybox '/mnt/c/Yujin/gitSecret/.gitsecret/keys/pubring.kbx' created gpg: /mnt/c/Yujin/gitSecret/..