새로운 QT 프로젝트를 깨끗하게 시작하려고 python의 virtual environment를 찾아보다가 카오스에 빠져버렸다. 대부분 Linux나 Mac의 쉘 환경을 기반으로 설명하고 그 환경에서 부드럽게 작동하기 때문에 윈도우즈에서 하려니 패닉상태. 첫번째 시도는 pyenv를 쓰라는 잘못된 가이드들로 시작했다. pyenv가 윈도우즈를 지원하지 않았고 pyenv-win이 있지만, 설치에 헤매이다가 python 공식문서의 언급을 보고 폐기. 버전 3.6부터 폐지: pyvenv는 파이썬 3.3 및 3.4 용…
[월:] 2020년 03월
Blender 2.8 : Edge loop short cut problem
블렌더가 3버튼 마우스를 기본으로 쓰지만, 대부분의 마우스 중간버튼은 휠버튼이고 사용성이 너무 떨어진다. 그래서 Emulate 3Button Mouse를 설정하고 사용한다. emulate 3 Button은 가운데 마우스 버튼(MMB)를 Alt + LMB로 대체해 주는데, 문제는 Alt + LMB를 사용하는 다른 기능들이 동작하지 않는다. 그 수가 많지 않으니 각각 예외적으로 사용하면 될 듯. 그중에 자주 사용하는 Edge Loop가 Alt+LMB를 쓰는데, 그냥…
BigDecimal, BigInteger
Kotlin 공부용으로 커맨드라인 계산기 만들면서 정수로는 Java의 BigInterger를 써서 크기제한이 없이 계산이 가능하게 되었다. 하지만, 계산기가 실수를 다루지 못한다면 쓸모가 없기 때문에 이왕 하는거 크기제한 없는 실수를 찾아보니 BigInteger와 유사하게 Java에 BigDecimal 클래스가 있다. 내부 계산 방법도 궁금하긴 하지만, 어쨌든 BigDecimal 클래스를 사용하면 원하는 기능은 쉽게 구현되겠네. OpenJDK 레퍼런스 : https://devdocs.io/openjdk~8/java/math/package-summary Kotlin 레퍼런스 : https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/java.math.-big-decimal/
Destructuring Declarations in Kotlin
코틀린을 보다보면, 다음과같이 파이썬에서나 볼듯한 기이한 표현을 마주하는 경우가 있다. 일반적인 표현은 아닌데, 이처럼 한큐에 여러 변수들에 값을 저장하는게 가능하다. 이를 Desturturing Declarations라고 부른다. 위 코드는 컴파일 타임에 다음과 같이 변형된다. 보면 알겠지만, 내가 만드는 클래스에 component1(), component2()를 정의 하면 역시 이처럼 사용가능하다. data class에는 이미 구현되어 있기 때문에, 예외적인 경우가 아니라면 data class를 쓰는게…
Kotlin과 Python에서 ‘is’ 키워드의 다른 사용
python에서 ‘is’ 키워드는 ‘==’와 비교될 수 있는데, ‘==’가 값이 같은지 검사한다면, ‘is’는 어떤 오브젝트를 참조하는지 비교한다. 다음의 stack overflow질문을 참고. https://stackoverflow.com/questions/132988/is-there-a-difference-between-and-is Kotlin에도 ‘is’ 키워드가 있지만, 의미는 전혀 다르다. Kotlin에는 ‘is’, ‘as’ 키워드가 있으며, ‘is’는 타입체크를 위해, ‘as’는 타입 캐스팅을 위해 존재한다. 다음의 공식 문서 참고. https://kotlinlang.org/docs/reference/typecasts.html 그러니까 Kotlin의 ‘is’는 python의 isinstance()에 해당한다. 이름이 같다고 헷갈림…