C/C++를 포함한 거의 대부분의 언어에서는 부동소수점의 제곱근 함수를 지원하고 있다. 그리고, 정수 범위에서 제곱근을 구할 때는 보통 이 제곱근 함수를 활용하여 간단히 구현한다. 그런데, 순수하게 정수 범위에서 동작하는 제곱근 함수가 있다면 조금은 더 빠르게 동작할 것 같다. 파이썬의 경우 아예 이러한 함수를 stdlib에서 지원한다. 정수 범위에서 제곱근을 구하는 아이디어에는 몇 가지 방식이 있다. 1. 뉴턴의 근사법 활용 unsigned ISqrtByNewton32(const unsigned n) { unsigned x = n; unsigned y = (x + 1) / 2; while (y < x) { x = y; y = (x + n / x) / 2; } return x; } 2. 곱하기 연산 없이..
이 글을 쓰는 현 시점 우분투 LTS의 최신 버전은 22.04.1이다. 그런데, 이 우분투에서 Nvidia를 제대로 사용하는 건 의외로 전혀 쉽지 않다. 그냥저냥 적당히 쓰기만 하는 것도 어렵고, 제대로 드라이버를 다 설치하려면 고난의 길이 기다린다. 문제점 기본 오픈소스 드라이버인 Nouveau의 문제 우분투와 함께 설치되는 Nvidia GPU 오픈 소스 드라이버(Nouveau)는 Cuda를 활용하지 못하고 성능도 떨어진다. 게다가, Nouveau가 설치된 상태에서는 Nvidia 정식 드라이버를 설치할 수도 없다. 강제로 Nouveau를 uninstall할 수는 있으나, uninstall하면 부팅이 제대로 이루어지지 않는다. 우분투 22.xx대의 yellow screen bug Ubuntu 22.xx대..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. 오류를 수정하고 다양한 성능 개선이 반영된 버전을 공개한다. 아래 링크에서 다운받을 수 있으며, 언제나 그렇듯 x86/x64/avx2 버전이 함께 들어있다. password: teus.me ▲ 히스토리 2022.11.13: 4.22.11 r4478 공개 - 워드랩 단축키를 Ctrl+W에서 Ctrl+Shift+W로 재할당 (관련 링크) - AutoIt 키워드를 3.3.16.0으로 업데이트 (관련 링크) - 행 정렬 기능에 "정렬 안 함" 추가 (관련 링크) - 선택영역 메뉴 하위에 "중복된 줄 병합", "중복된 줄 제거" 기능 추가 (관련 링크) 2022.11.30: 4.22.11 r4524 공개 - CSV 스키마 추가 (관련 링크) 2022.12...
얼마 전 온 가족이 호암 미술관에 바람 쐬러 갔었다. 미술관 내부와는 달리 외부 입장은 간단한 예약만으로 갈 수 있고 나같은 미술 문외한에겐 외부 입장만으로도 볼 게 넘쳐났다. 특히 눈에 들어온 것은 복제품 다보탑. 이런 작품에 워낙에 문외한인 내 눈에도 볼 수록 아름다운 작품이다. 복제품만으로 만족할 수 없었던 우리는 원본을 보러 불국사를 갔다. 기가 막히게 똑같이 만들었다고 생각했지만, 사진을 찍어 비교해보니 뭔가 차이가 있었다. 지붕 위의 상륜부도 뭔가 더 있긴 하지만, 그것보다 눈에 띄는 건 기단부의 사자상. 원본의 사자상은 중앙 쪽에 한 마리가 있는데, 복제품은 모퉁이에 네 마리가 있었다. 이게 뭔 일인가 싶어 뒤져보니 다큐로도 다뤄졌던 꽤 심각한 이슈였다. 이번에도 그렇듯 대일본제국이 크게 한..
예전엔 아이폰 배터리 교체도 직접 하곤 했는데, 어떤 시점부턴가 자본주의로 해결하기 시작했다. 굳이 위험을 감수하기도 싫고... 이번에 가족들 폰을 죄다 업글하게 됐고, 아이폰6s가 남게 되었다. 배터리 상태는 많이 나쁜데, 혹시나 못 고쳐도 별 문제 없지만 그래도 배터리 교체해서 수명이 늘어나면 나쁘지 않은 뭐 그런... 배터리를 교체해서 수명을 늘려주기로 했다. 배터리는 알리 익스프레스에서 저렴하게 구할 수 있다. 아이폰4의 배터리도 판매하는 곳이라 6s 정도는 쉽게 구한다. 그리고, 트위저. 이게 없으면 은근히 불편한 상황이 종종 터진다. 그리고, 그리고, 누구나 집에 하나 쯤은 있는 열풍기. 전면부가 방수 테이프로 붙어있기 때문에 열풍기나 헤어 드라이어 등은 반드시 필요하다. 일단 케이스를 벗겨내..
비디오 컨테이터의 표준인 mp4/mov 포맷은 최초 애플 퀵타임 포맷을 기원으로 한다. 애플 퀵타임 포맷을 보완해서 국제 표준인 MPEG-4 Part 14(ISO/IEC 14496-14:2003)로 등록한 것이다. 기존의 QTFF에 비해서 보완된 점이 여러 가지가 있기는 해도, 본질적인 구성은 동일하다. 오브젝트 단위로 구분되어 있고, 각 오브젝트는 8바이트 필트(크기 4바이트, type 4바이트)로 시작하는 것. 그런데, 가장 크게 바뀐 내용이 그 중 제일 앞의 필드는 ftyp로 시작해야 된다는 것이다. 요즘 아이폰으로 영상을 촬영하면 당연하게도 MPEG-4 컨테이터에 동영상을 저장한다. MediaInfo로 찍어보면 당연히 이렇게 표시된다. 그리고, 내 프로그램 중에서 mp4 파일의 촬영/녹화 시간을 ..
이런 일이 없으면 좋겠지만... .dll 파일로부터 이를 사용하기 위한 .lib 파일을 생성해야 할 때가 있다. 이럴 때의 정석(?)은 dumpbin.exe을 돌린 결과에서 일부 내용을 추출해서 lib.exe를 실행하는 것... 예를 들어, dumpbin.exe의 결과가 아래와 같이 나왔다면... dumpbin.exe /exports mkl_rt.dll [중간 생략] 18796 number of functions 18796 number of names ordinal hint RVA name 1 0 000060E0 CAXPBY 2 1 00006600 CAXPY 3 2 00006F80 CAXPYI 4 3 00006890 CAXPY_DIRECT 5 4 00134CE0 CBBCSD 6 5 001353E0 CBD..