목록개발 (101)
Joonas' Note
macOS 10.14.6에서 진행하였다. gtest(Google Test)가 필요해서 설치하려고 하는데, brew에는 패키지가 없는 것 같았다. gtest의 git을 따와서 직접 빌드하던데, brew로 편하게 설치하고 싶으면 아래처럼 진행하면 된다. CMake가 필요하며, brew install cmake 로 설치할 수 있다. 아래 커맨드를 입력하면 설치가 될 것이다. (Kronuz/gtest.rb에서 C++11이 지원되도록 수정하였음) $ brew install --HEAD https://gist.githubusercontent.com/joonas-yoon/9ec4ce1c1374ba8b8473020ced3879d8/raw/gtest.rb 스크립트의 내용은 gist.github.com/joonas-yoo..

빌드 문서는 wiki.qt.io/Building_Qt_5_from_Git#Getting_the_source_code 를 참고하였다. 환경은 macOS 10.14.6 에서 진행하였다. Qt 5는 서브모듈을 무려 45개를 가지고 있다. 그래서 아래 커맨드로 각 서브모듈을 모두 가져오는데, $ perl init-repository 업데이트도 이걸로 한다. (-f 옵션 붙여서) 그런데 내 경우에는 서브모듈들을 가져오는데, 에러가 있었다. 정말 자주 멈췄다. 네트워크 문제인지 모르겠으나, 터미널에서 오브젝트를 받아오는 중에 그대로 멈춰버린다. 그래서 그 모듈을 직접 clone 했다. 클론을 해보려하면 이미 있으니 에러가 있다고 한다. rm -rf 로 지우고 다시 해보면 잘 된다. perl에서 문제가 생긴건지는 모..
Google에는 단말기에서 AR 관련 기능이 돌아갈 수 있도록 AR 플랫폼인 ARCore가 있다. 최근 이와 관련한 업데이트가 있어 글로 남겨볼까 한다. ARCore를 사용하여 개발하는 튜토리얼을 보다보면, OpenGL을 직접 사용하지 않고 Sceneform이라는 프레임워크를 사용하여 개발하는 문서가 굉장히 많다. (실제로도 공식 샘플 코드에서 사용한다.) 하지만 관리가 점점 힘들어지는 탓인지, 프로젝트를 closed해버렸고 1.16 버전부터 오픈소스로 전환, archived 해버렸다. (한국 시간 기준으로 5월 15일) [프로젝트 링크] 이렇게 되면 한가지 문제가 있다. Android Studio에는 3D Object를 쉽게 import 하기 위한 플러그인으로, Google Sceneform Tools..

작년 말에 GitHub에 액션(Actions)이라는 기능이 추가되었다. 이제 GitHub에서는 자체적으로 CI 기능을 제공한다. 그 전에는 Travis-CI 아니면 CircleCI에서 빌드 & 테스트를 하고, 그 상태를 위 같은 배지 이미지로 표시했는데, 이제 직접 제공하면서 더 간편해졌다. 환경 변수를 암호화해서 Travis-CI에서 빌드하는 그런 기능까지 있는지는 써보면서 확인을 해봐야겠다. (aws나 google api key 때문에.. 이거 암호화하는 거 꼭 필요함..) CI + Chrome WebDriver + pytest 배포 전에는 미리 배포 환경으로 테스트하면서 종종 사용하는데, 이번에는 문제가 생겼다. 분명 Windows 10에서는 Chrome WebDriver 사용하는 selenium ..
종종 사용하는 std::binary_search와 그 친구들(lower_bound, upper_bound)의 구현입니다.이 친구들은 헤더에 있습니다. 평소 쓰던 스타일을 그대로 작성하여 올립니다.binary_search가 왜 그 lower_bound와 key가 같은지만 비교하는 지는, 다른 글에서 설명하였다. [보기]코드
저는 quick sort를 기반으로 구현했고, 그 중에서도 중간값이 아닌 (위치가) 중앙에 있는 값을 사용했습니다.이 정도만 구현해도 많은 문제는 생기지 않았습니다. 다만 실제 std::sort 는 구조가 조금 다른 것으로 알고 있습니다. 크기가 100개 이하인 케이스는 insertion sort를 사용하는 등 최적화를 위해서 수정했다고 하네요. template 함수로 작성했기 때문에, 타입은 별도로 명시하지 않아도 됩니다.int형 배열 a[100]에 대해서도, std::sort 함수 쓰듯이 sort(a, a+100) 이라고 호출해도 동작합니다. 이전 게시글에서 구현한 vector를 파라미터로 넘겨도 동작합니다. 즉, sort(vec.begin(), vec.end()) 가능합니다.코드
2018년 말에, Semantic-UI 에서 제공하는 progress bar를 살짝 바꾸어서 CSS의 overflow: hidden 속성으로 무한 로딩을 구현한 적이 있다. https://jsfiddle.net/J00nas/xpvt214o/970756/ 위 링크에서도 동작하는 모습을 볼 수 있다. 기존의 progess bar의 인터페이스는 그대로 유지하고 기능만 추가하였기에, 코드도 나름 깔끔한 편이다. 문제는 기존에 제공되는 placement text는 안된다. 당시에 이걸 유지해보려고 많은 삽질을 해봤다가 실패했다. 사실 이 기능은 Semantic-UI에 PR을 날렸으나 무산되었다. [Progress] Add properties for infinite loop as loader style #6691(..
(venv/db) joonas@DESKTOP-JOONAS $ ~/DB test $ pip install psycopg2Requirement already satisfied: psycopg2 in c:\users\joona\venv\db\lib\site-packages (2.8.4)(venv/db) joonas@DESKTOP-JOONAS ~/DB test $ python manage.py migrateTraceback (most recent call last): File "C:\Users\joona\venv\db\lib\site-packages\django\db\backends\base\base.py", line 220, in ensure_connection self.connect() ....(중략).....