분류 전체보기 476

[kotlin] 코틀린 코루틴에 대한 개념 정리 (2)

지난번 포스트에 이어 코틀린 코루틴에 대한 개념 정리를 이어가고자 한다. 코루틴에는 CoroutineStart.LAZY를 사용한 코루틴 지연이라는 개념이 있다. 왜 코루틴을 지연해야할까? 코루틴을 CoroutineDispatcher의 큐에 제출했다고해서, 곧장 코루틴을 특정 스레드에 할당해서 바로 실행해선 안될때 필요하기 때문이다. 그저 실행해야할 코루틴을 미리 만들어두고 나중에 실행시키는 것이다. 이 경우 launch의 start인자로 CoroutineStart.LAZY를 주어 제출하면 된다. 그리고 이후에 실행시킬 필가 있을때 start시키면 된다. 지연하고 나서 이후 시작할 수 있는 방법은 launch 코루틴 빌더함수를 통해 받은 Job객체를 사용하면 된다. Job객체는 코루틴을 실행시킬 수 있는 ..

Kotlin lang 2024.04.21

[Kotlin] 코틀린 코루틴에 대한 개념 정리 (1)

최근 코틀린을 다룰 일이 있었다. 코드는 그냥 작성하면 되는데, 코루틴에 대한 개념이 좀 부족했다고 생각했다. 애매하게 알고 있는 상태에서 코루틴의 기능을 쓰는게 썩 기분이 좋진 않았다. 뭔가 찝찝했다. 그래서 이번 기회에 코루틴에 대해 시간을 갖고 천천히 알아보고자 한다. 코루틴은 기본적으로 경량 스레드라고 불린다. 왜 경량 스레드냐면, 스레드에 붙였다 뗄 수 있기 때문이다. 왜 코루틴이 필요하냐를 정리하자면, 멀티스레드 프로그래밍에서의 일부 한계점을 극복하고자함이다. 우선 싱글 스레드부터 살펴보자. 스레드가 하나이므로 단 하나의 작업만 할 수 있다. 모든 일은 순차적으로 진행된다. cpu바운드던, 네트워크 IO 작업이던 모든지 하나라서 그다지 효율적이지 않다. 그래서 등장한게 멀티스레드 프로그래밍이다..

Kotlin lang 2024.04.20

[Rust] 러스트 Double Linked List 코드

최근 프로젝트 중 러스트를 사용할 일이 있어서 러스트를 학습 중이다.  대학교때 공부했던게 사용하지 않으니 머릿속에서 정말 말끔하게 증발해버렸다. (뭐 어딘가엔 어렴풋하게 있겠지만)  러스트 이중 연결리스트에 대한 코드다. 현재 학습 중인 자료에서 Rust double linked list코드가 나오는데 좋은 개념들이 함께 등장해서 분석해보면 좋을 것 같은 예제이다.  그나저나 lifetime은 아직도 긴가민가하다. 이런 syntax자체가 생소해서인지.  use std::cell::RefCell;use std::rc::{Rc, Weak};pub struct Node { data: isize, next: Option>>, prev: Option>>,}pub struct List { h..

Rust lang 2024.04.12

[C] C language의 연산자 우선순위는 설계 실수인가?

최근 흥미로운 내용을 접했다. C language의 연산자 우선순위에 설계상 결함이 있다는 이야기다. 전설의 C에 언어 설계 결함이 있을 수 있나? 라는 생각이 들었다. (지금도 결함 정도로 생각되진 않지만) 내용은 이렇다. & | 연산자와 == 연산자 간의 연산자 우선 순위로 인해 실수할 여지가 크다는 내용이다. & | 보다 ==의 연산자 우선순위가 더 높기 때문에 문제가 될 수 있다고 한다. 아래 코드가 있다고 보자. if (a & b == c) { // ... } 위 코드는 a&b의 결과가 c와 동등한지 확인하는 코드가 아니다. 오히려 b==c가 먼저 평가되고 그 결과와 a와 bit and를 한다. (당연히도) 해당 의견을 접하고 먼저 든 생각은 이렇다. 이게 왜 설계상 오류일까? 연산자 우선순위가..

C & C++/C 2024.01.01

[생각] 드디어 연말 그리고 돌아보는 한 해

최근 글을 많이 쓰지 못했다.  바쁘게 지내기도 했고, 이것 저것 많이 생각이 들어 집중하지 못했다.  나름 알차게 보내려 했고 잘 되었는지는 아직 모르겠다.  몇 가지 얻은 경험들은 있다.  일부 프레임워크에 대한 새로운 경험과 한 가지 언어와 툴을 사용한 몇 개의 프로젝트 덕분에 일부분에 있어서 경험적 지식이 늘었다.  ebook과 책을 몇권 읽었고, 일부 프로젝트에 참여하면서 기여할 수 있는 기회를 가졌다.  나 혼자 진행하는 프로젝트를 하면서 스스로 고민해볼 수 있는 시간을 조금이나마 가져보았다.  그럼에도 불구하고 스스로 고민하며 헤쳐나가는 능력은 아직 부족하다.  사이드 프로젝트를 진행하면서 늘려야할 것 같다.  하고 싶은 것도 많고, 욕심도 많다.  넓은 시야를 가지고 비즈니스를 바라보는 것..

생각들 2023.12.29

[생각] 대학원 진학에 대하여

최근 대학원 진학에 대해 진지하게 생각해봤다.  졸업 전부터 생각은 하고 있었다. 전망이라기보다는 그냥 순수하게 내가 좀 더 공부해보고 싶은 분야가 있었다.  과연 현업에서 일하는 것과 연구실에 박혀서 연구만 하는 것 중에서 뭐가 더 행복할지 생각해봤다. 유망할 것이냐 아니냐에 대해서는 굳이 따질 필요까진 없다고 생각했다. 어차피 본인이 잘하면 둘 중 어떤걸 택해도 잘할테니까.  그냥 내가 어떤 사람인지, 뭘 하고 싶은지 좀 더 고민해봤던 시간이었던것 같다.  결론은 정해졌다.  현업에서 계속 일하기로. 일하면서 배우는게 좋기도 하고, 좋은 사람들과 이야기하면서 조금씩 자질구레한 스킬들을 알려주는게 좋았다.또한 자유로움도 좋았다. 기술적 자유로움. 내가 원하는 기술을 사용할 수 있는것 내가 할 수 있는걸..

생각들 2023.12.28
반응형