일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 하이퍼레저 패브릭
- play2 강좌
- 스칼라
- Play2
- Play2 로 웹 개발
- 파이썬
- Hyperledger fabric gossip protocol
- hyperledger fabric
- 주키퍼
- 하이브리드앱
- 플레이프레임워크
- 스칼라 강좌
- 엔터프라이즈 블록체인
- 파이썬 강좌
- akka 강좌
- play 강좌
- Golang
- Adapter 패턴
- 스위프트
- 파이썬 동시성
- Actor
- 블록체인
- Akka
- 스칼라 동시성
- 이더리움
- 그라파나
- CORDA
- 파이썬 머신러닝
- 파이썬 데이터분석
- 안드로이드 웹뷰
- Today
- Total
HAMA 블로그
Rust vs Kotlin vs JavaRust의 컴파일 타임 vs Kotlin/Java의 런타임특징Rust (async / Future) Kotlin Coroutines Java Virtual Threads비동기 실행 모델Future 기반 (poll-driven)Suspend 함수 기반 (Continuation)사용자 모드 스레드 기반 (Thread API)상태 관리컴파일 타임에 상태 기계로 변환런타임에서 상태를 관리런타임에서 사용자 모드 스레드 관리최적화컴파일 타임 최적화 (zero-cost abstraction)일부 컴파일 타임, 주로 런타임 최적화주로 런타임 최적화런타임 필요성런타임 스케줄러 필요 (Tokio, async-std 등)코루틴 디스패처 필요Java 런타임 자체에서 관리제어권개발자에 의..
고품질의 코드란 무엇일까? 예외처리가 잘 된 ? 주석이 잘 달린? 성능,메모리 최적화된? 변수명이 좋은? 다 옳은 말이다. 추가적으로 관련 프레임워크/라이브러리의 이해가 잘된 코드, 도메인을 잘 이해한 코드도 물론이고.. 이 글에서 고품질의 코드란 새로운 기능을 구현 할 때 최대한 기존 구현된 코드는 건드리지 않는 구조라고 정하고 그것에 대한 이야기를 써 본다. 이 글은 아래에 나오는 지식 기반을 엮어서 설명한다. Ralph E. Johnson, Martin Fowler et al. - DI,DIP,IoC(Dependency Injection etc) 마틴파울러의 리팩토링 - Refactor Conditional To Polymorphism 로버트 C. 마틴 클린코드 - Data/Object Anti-S..
기존의 언어를 가지고 무엇인가 만들다 보면 그 코드의 쓰임새에 있어서 패턴/정형화가 된다. 그것을 구체적으로 이름 붙히고 규율을 정해 놓으면 사람들이 이해하기 더 쉬워 지는건 인지상정. 예를들어 고양이과 동물을 다 고양이라고 하고, 호랑이에 대해서는 메우 큰 고양이, 사자에 대해서는 목에 털이 많은 고양이라고 말을 해도 알아먹기야 하겠지만, 고양이과를 사자,호랑이로 명확히 나누어서 소통하면 더 빨리 이해 할 수 있게 될 것고 효율적이게 될것이다. 프로그래밍 언어도 마찬가지이다. 새로운 언어는 보통 이전 언어/ 경쟁 대상 언어보다 더 키워드가 많아 지게 되는데 예를들어 C++에는 없던 interface 키워드가 자바에서는 생겼는데 C++에는 비록 interface가 없더라도 class가 그 역할을 겸하였지..
이 말에 대한 비트겐슈타인의 진정한 함의는 모르겠지만, 문장 자체를 그대로 생각해 보면 소프트웨어 개발과 정말 잘 맞는 듯 하다. 이에 따라서 개발자는 - 영어를 잘 아는게 중요하다? - 글쓰기를 잘 하는게 중요하다? - 패턴을 잘 아는게 중요하다? 개발에 추상화란 매우 중요한 요소이다. 소프트웨어 개발에 있어서 추상화를 하기 위해 사용되는 단어들은 생각보다 어려운 단어들이 아니다. Convert, Proxy, Execute, Provider, Factory, Map, Command, Future, Journal, Match, Invocate, Filter, Channel등 근데 막상 개발 할 때 저런 중학생용 영어를 사용하는데 어려움을 겪는다. 즉 개발에 있어서 영어를 원어민처럼 하는거와는 상관 없어 ..
(이미지 출처 : https://www.bitdeal.net/) 블록체인 업계에 대해서 - 블록체인 전직 혹은 블록체인 대학원/국비학원/각종교육으로 고민중인 분들이 최근 많이 있는 것 같아서 대략 정리 해봅니다. 먼저 블록체인 업계가 앞으로 어떻게 될 지는 아무도 모릅니다. 다만 블록체인 관련한 업계는 최소 10년이상은 건재 할 거 같습니다. 저는 "블록체인"이 탈중앙 디지털 자산의 기반으로 미래에 핵심적인 인프라로 남기를 희망합니다. (요 문장에서 만큼은 블록체인==이더리움을 말합니다) 블록체인은 "스포츠" 와 같습니다. 즉 "스포츠" 전문가란 세상에 없습니다. 블록체인에는 수 많은 한 우물을 파야 하는 분야가 있습니다. 그 한 우물을 파는 것에 대해서 우려가 됩니다. 현재 상황에선 물이 안나올 가능성..
잘 짜여진 코드가 무엇일까요?? 코드를 잘 짠다는 것은 매우 어려운 일입니다. 많이 아는 것도 중요하지만, 많이 바꾸는 것도 중요합니다. 코드에 애정이 있다면 자연스럽게 많이 바꾸게 될 것이고, 아름답게 가꾸고 싶어질 것이며 자연스레 코드는 점점 더 좋아 질 것입니다. 물론 공부를 안하면 애정이 있어도 어떻게 아름답게 해야하는지 모를 수도 있겠지요.하지만 애정이 있다면 역시 공부를 하게 되겠죠?? - 한번에 좋은 코드를 짜는 건 세상 어떤 프로그래머도 불가능 합니다.- 소설가들은 좋은 글을 작성 하기 위해서 한 문장에 대해서 한 달 이상 고민을 한 적도 있다고 합니다. 근데 그렇게 쓰여진 문장을 몇 년 후에 다시 보았을 때, 후회가 밀려오기도 한다고도 합니다. 더 좋은 문장이 생각나기도 하기 때문입니다...
20년 경험으로 두서 없이 적어 보았습니다. 당연히 모든 경우가 아래의 경우에 해당하진 않습니다. 회사 규모,제품과 회사 지향점, 리더들의 특성 및 본인의 위치등에 따라 달라 질 수 있으며 정해진 답이 없기에 맞다 틀리다 보다는 본인의 경험에 대해서 댓글에 적어주면 후배들이 보기 좋을 거 같습니다. SI 와 정부과제) 장점 : 1. 새로운 기술 분야/도메인의 도전을 할 기회가 비교적 쉽게/자주 생깁니다. 1-1. 새로운 기술분야를 도전(경험)할 기회가 있다. 전공이 아닐지라도(인공지능,빅데이터,블록체인등등) 1-2. 새로운 도메인 분야를 도전(경험) 할 수 있다. (은행,병원,통신 등등) 2. Low risk / Low Return이다. 즉 정부 돈, 갑의 돈으로 할 수 있으니 부담이 없습니다. 3. 결..
1. 디폴트 값으로 대처 interface Transfer { fun moveTo(id : String) } interface Asset{ val id: String val name: String val data: String } class Token( override val id: String, override val name: String, override val data: String) : Asset,Transfer{ override fun moveTo(id: String) { TODO("Not yet implemented") } } class NFT( override val id: String, override val name: String, override val data: String) : A..
누구나 실수/실패의 상황을 마주하게 되며, 이것은 당신의 실수일 경우도 있고, 타인의 실수 있을 수 도 있으며, 서버/네트워크상에서 일어나는 실패(장애)일 수 도 있다. 이런 다양한 실수/실패는 개발자의 삶과 항상 함께 하는 것이기 때문에, 어떻게 이것을 다루는지가 관건이 된다. 이 글에서는 어떻게 실수/실패등 의도치 않은 상황을 처리하는지, 다양한 패턴들과 함께 살펴보겠다. 1. 디폴트값 처리 val value = getValue() val gretting = value?: "hi" 정상적인 상황하에서 값을 얻지 못하였을 경우 우리는 디폴트값을 할당하여 사용 할 수가 있다. 디폴트을 사용할 수 없는 경우에는 대개 예외를 던지거나 실패값을 리턴해서 상위에서 처리하길 기대 할 수 밖에 없다. 2. Requ..
'코딩'은 소설가의 '글쓰기'와 비슷하다고 생각 합니다. 소설가가 '글쓰기'를 잘하기 위해 매일 매일 습작을 하듯이..'코딩'을 잘하기 위해 서는 매일 매일 코딩 하는 버릇을 들이고, 평생 '장인' 정신을 가지고 노력해야하는 일인거 같습니다. 글쓰기는 잘하는 사람이 코딩도 잘할거라는 확신이 있습니다. (여담으로 자신의 생각을 표현하는데 적극적인 작가형 사람은 무엇이든 만들어내는걸 잘 할 것이고, 짧은 생각으로 비판만 하는 습관만 있는 사람이 독창적으로 무엇인가 스스로 만들어 내기 힘들 거란건 충분히 어리짐작 할 수 있겠지요.) 재능과 반복 지나가는 길에 방망이 깍는 노인을 보고, 일기장에 "오늘 방망이 깍는 노인을 봤다, 신기했다" 라고 단편적으로 적는것과 그것을 주제로 수필을 쓰는 능력은 천지차이 겠지..