새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. Scintilla 라이브러리가 4.4.5로 업데이트 되고, 선택어 강조 기능의 성능을 개선하는 등의 다양한 업데이트들이 반영된 버전을 공개한다. 아래 링크에서 다운받을 수 있으며, 언제나 그렇듯 x86/x64/avx2 버전이 함께 들어있다. password: teus.me ▲ 히스토리 2020.10.4: 4.20.09 r3342 공개 - Scintilla 라이브러리를 4.4.5로 업데이트(관련 링크) - 읽을 수 있는 최대 파일 크기를 물리적 메모리의 절반으로 조절(이전: 1/3, 관련 링크) - 찾기/바꾸기 창에 모두 찾기 기능 추가(관련 링크) - 찾기/바꾸기 창에서 고정폭 글꼴 사용 가능하도록 기능 개선 - 선택어 강조 기능을 별도의 스레드로..
MFC의 CDialogEx는 CDialog에서 파생된 클래스로 기능은 거의 비슷하며, 배경을 지정하는 기능이 추가되었다. 참고로, 상속관계는 아래와 같고... CObject CCmdTarget CWnd CDialog CDialogEx CDialogEx에 추가된 메소드들은 아래와 같다. void SetBackgroundColor( COLORREF color, BOOL bRepaint=TRUE); void SetBackgroundImage( HBITMAP hBitmap, BackgroundLocation location=BACKGR_TILE, BOOL bAutoDestroy=TRUE, BOOL bRepaint=TRUE); BOOL SetBackgroundImage( UINT uiBmpResId, Backgr..
여차저차 해서 T-Mobile의 TM-AC1900 한 대가 손에 들어왔다. 그런데, 사실 TM-AC1900 유무선 공유기는 다름 아닌 ASUS RT-AC68U를 리브랜딩한 제품이다. 다시 말해 잘만 하면 DD-WRT를 설치할 수도 있는 공유기가 한대 생긴 것이다. 그런데, 이게 쉽지가 않다. 리브랜딩 제품이라 그런지 순정 펌웨어나 써드파티 펌웨어로 교체하는 것을 근본적으로 다 막아두었다. 펌웨어 버전 2827 이후부터 이런 작업을 철저하게 차단한다. 이건 비단 펌웨어 단 뿐만 아니라 그 밑에 있는 CFE에서도 이를 철저히 차단한다. 즉, 펌웨어를 교체하기 위해서는 펌웨어를 구버전으로 교체한 뒤, 다시 CFE를 구버전으로 교체해야 되는 것이다. 펌웨어는 1703, CFE는 1.0.2.0을 사용하는 것이 대..
어째저째 여차저차 해서 지인의 집을 정리할 일이 있었다. 옛날 물건들 몇 점이 추억을 떠오르게 해서 그것들만 따로 간략히 포스팅 플로피 디스켓 지금은 저장 아이콘모양으로만 겨우들 알고 있는 3.5" 플로피 디스켓을 몇 장 찾았다. HD니까 1.44MB의 용량을 저장할 수 있는 매체이다. 왼쪽 아래의 네모난 부분이 쓰기 방지 장치... 난 이 이전 규격인 5.25" 부터 사용했었고, 전산실 정리하면서 8" 디스켓을 실제로 보기도 했다. ZIP 디스켓 이제 완전히 사멸해버렸지만, 1990년대를 주름잡았던 아이오메가의 ZIP 디스켓이다. 난 병렬 포트를 사용하는 100MB 버전을 사용했는데, 그 때 250MB 버전은 저 높은 하늘 같은 존재였다. 750MB 버전이나 그 이후에 나온 1GB/2GB 짜리 재즈 드..
GeForce 16 및 20 계열에는 튜링 코어와 함께 7세대 NVENC가 적용되어있다. 7세대는 6세대 NVENC에 비해 눈에 띄는 성능 향상을 자랑했었다. HEVC HW 인코딩이 드디어 x264를 능가(x265가 아니고...)하는 성능을 보여준 것이다. 7세대 NVENC는 훌륭한 인코더임은 분명하지만, 여전히 성능이 향상될 여지가 있다. x265와 비교 결과를 보면, HEVC의 성능을 완벽하게 발휘할 수준의 인코더는 되지 못한 것이다. GeForce 30 시리즈가 나올 때 내심 기대했던 것이 NVENC의 업데이트였다. 7세대 향상폭의 절반만 구현해도 어마어마한 결과를 보여줄 거라 생각했기 때문이다. 특별한 기능이 추가되지 않더라도, 알고리즘 개선으로 효율이 높아질 수도 있고... 하지만, 발표 결과를..
깃헙에서 북극에 오픈소스를 아카이빙하는 Arctic Vault program이라는 프로그램을 진행했었다. 소스코드를 특수한 필름에 QR 코드로 인쇄해서 북극의 노르웨이령 지역에 보관하는 것이다. 이를 통해 혹시나 깃헙 저장소 전체가 소실되더라도 다음 세대에 이를 넘겨주는 게 목표라고 한다. 근데, 엊그제 보니 내가 참여한 소스도 여기 아카이빙 되어 나도 Arctic Code Vault Contributor 배지를 받았었다. 내가 참여한 코드도 다음 세대에 확실히 넘어가게 된 것이다. 근데, 대체 이 배지를 받은 걸 왜 지금까지 못 봤지? ※ 참고글: GitHub Archive Program: the journey of the world’s open source code to the Arctic Every..
시놀로지 NAS에서 토렌트를 원활하게 사용하기 위해 Transmission 패키지를 많이들 사용한다. 그리고, 최근 이 패키지가 3.00-18로 업데이트 되었다. 그런데, 업뎃을 하면 기존에 잘 사용해오던 Transmission Remote GUI가 제대로 동작하지 않는다. 메시지의 내용은 다음과 같다. 이 메시지에 대해서 깃헙 Ku33ma님께서 설명을 해주셨다. Transgui did enter the "status" field twice. One is a direct parameter of FRpc.RequestInfo, the second is taken from ExtraFields.Transmission 2.94 returned a response with one field, and 3.0 re..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. PC 뱅킹의 주적은 PC 뱅킹 프로그램이다. PC 뱅킹을 하고 나면 컴퓨터가 미친 듯이 느려지기 때문이다. 키보드 보안 프로그램을 필두로 컴퓨터를 느려지게 만드는 악의 무리들이 너무나 많다. 전통의 명가(?) nProte**부터 컴퓨터 발목잡기의 거목 안* 온라인 시큐**, 그 외에도 수많은 잡 구라들… KISA에서 I사 보안모듈 프로그램에 문제가 있다고 발표할 정도로 완성도가 엉망인 경우도 있다. 보안 취약점을 갖고있는 보안 프로그램이라니… 무슨 열림교회 닫힘도 아니고… 더군다나 이런 프로그램들은 몰래 설치가 되는 것도 아니고 아예 (강제로) 동의를 받아 설치된다. 마치 건물 철거 강제 집행하면서 동의서 서명당하는 기분이다 그래서 간단히 만들었다..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. Scintilla 라이브러리가 4.4.4로 업데이트 되고, C++ 20의 최종안이 반영되는 등의 다양한 업데이트들이 반영된 버전을 공개한다. 아래 링크에서 다운받을 수 있으며, 언제나 그렇듯 x86/x64/avx2 버전이 함께 들어있다. password: teus.me ▲ 히스토리 2019.7.19: 4.20.07 r3181#1 공개 - Scintilla 라이브러리를 4.4.4로 업데이트 - C++ 20 최종안 반영(관련 링크) - 줄의 좌우 정렬시 이모티콘 영역의 글자도 전각글꼴과 동일하게 계산하도록 보강 - Donate 버튼 색상 및 스타일 조정 2019.8.17: 4.20.08 r3252 공개 - SSE2, AVX2, SSSE3 등을 활용한 ..
지금까지 사용해오던 Square 스킨을 무려 3년만에 교체했다. 스킨 자체엔 아무 문제가 없었지만, 커져가는 해상도 환경에서 뭔가 좀 갑갑해보이는 면이 있기 때문이었다. 이왕 변경하는 김에 그간 수정하려고 생각만 한 부분들을 함께 고쳐보았다. 1. 스킨 앞에서 얘기했듯 스킨은 친효스킨을 선택했다. 2. 글꼴 기존 블로그에선 구글에서 제공하는 웹 글꼴들을 사용했는데, 다 걷어내고 리디 바탕체를 단독으로 사용하기로 했다. 이 글꼴은 리디북스로 유명한 리디주식회사에서 공개한 글꼴이다. Syntax Highlighter 등을 위해서는 D2Coding의 웹폰트를 적용했다. 이 과정에서 성능과 용량 최적화를 위해 이상진 님의 Webfont 사용과 최적화를 참고했다. 3. 수식 지금까지 수식을 표현하기 위해서 mat..
트위터 계정이 완전히 사라졌다. 상황 진행은 단순했다. 1. 웬 일본인(으로 추정되는 ㅅㄲ)가 종군 위안부 피해자는 미군도 동의한 성매매 였고, 일본은 배상했고... 같은 장문의 멘션 몇 개를 사진들과 함께 보냄 2. 꺼져, 쪽빠리야 멘션 보내고 신고함 3. 내가 인종차별로 계정 정지 당함 4. 트위터에 나를 신고한 놈이 비윤리적 멘션을 보낸 것이며, 그가 역사적 죄를 지은 것이라 장문의 답변 보냄 5. 인종차별 맞다고 다시 경고 메일 받음 6. 더러워서 더 이상 대응하지 않음 트위터는 대체 누가 인간을 차별하고, 인간성을 말살하는지 판단할 능력도 없는 쓰레기 회사이다. 깨끗한 척 사용자를 평가한다 오만방자를 떨어대지만, 조금만 들춰도 썩은내가 진동하는, 최악의 윤리 회사이며, 오히려 전쟁범죄국 일본의 ..
윈도우 10은 이전 버전의 윈도우들에 비해 사용자 편이성이 대폭 향상되었다. UI는 기존 스타일을 대체로 따라가지만, 들여다보면 편리하게 추가된 기능들이 한둘이 아니다. 그 중 하나는 시작 프로그램 관리. 검색창에서 시작 프로그램 또는 시작 앱을 검색해서 실행하면 시작 프로그램을 손쉽게 관리할 수 있다. 그리고, 이를 쉽게 실행할 수 있는 URI도 공개했다. ms-settings:startupapps 이를 프로그램에서 직접 사용하는 것도 대단히 쉽다. 대략 아래와 같은 한 줄이면 가능하다. ShellExecute(NULL, NULL, _T("ms-settings:startupapps"), NULL, NULL, SW_SHOWDEFAULT); 그런데, 이를 프로그램에서 직접 사용하려면 생각을 좀 해야 한다...
2013/10/29 - Windows 8.1에서 GetVersionEx() 함수가 버전을 제대로 인식하게 하려면… 전통적으로(?) Visual C++에서 윈도우의 버전 번호를 읽는 함수는 GetVersion() / GetVersionEx() 였다. 그런데, MS는 윈도우 8.1을 출시하면서 이 함수의 기능을 OS의 버전 대신 manifest 정보를 리턴하도록 변경했다. MS의 입장은 알겠지만, 많은 개발자들에게 이 수정은 커다란 혼란을 가져왔고, 여전히 이해가 어려운 게 사실이다. 이에 다양한 버전 번호를 읽는 방식들과 동작 결과 등을 간략하게 정리한다. 아래의 실행 환경은 모두 윈도우 10 Pro (x64)임을 미리 얘기해둔다. 1. GetVersionEx() OS의 버전을 읽는 방식은 앞에서 기술한 ..
티스토리의 좋은 기능 중 하나는 2차 도메인을 편하게 사용할 수 있다는 점이다. 그런데, 얼마 전부터 로그인을 해도 로그인 상태로 진입하지 못하는 애매한 문제가 발생했다. 처음엔 카카오(티스토리)의 잘못으로 생각했는데, 공지사항을 보니 브라우저들의 보안 정책 변경이 원인이었다. 즉, 구글 등의 입장은 티스토리 같은 방식으로는 2차 도메인 쓰지 말라는 것이다. 티스토리가 개선방안을 찾겠다고 하니, 일단 기다려야 되는 상황이고. 기다리는 동안 댓글 기능을 정상적으로 사용할 수 있는 우회로를 만들기로 했다. 개념은 간단하다. 2차 도메인으로 접속하면 기본 도메인 주소로 돌려주는 것. 블로그 스킨 편집 화면에서 아래와 같은 스크립트를 헤더 영역 최상단에 배치하면 이 우회로를 적용할 수 있다. 물론, 아래의 코드..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. iDevice용 동영상 변환기를 18.10으로 업데이트 했다. 18.x대 업데이트에서 가장 크게 변경된 내용은 32비트 용과 64비트 용을 별도로 분리한 것이다. 이를 통해 각 CPU의 성능을 최대한 발휘한 인코딩이 가능해졌다. 변환기는 아래 링크에서 다운받을 수 있으며, 여전히 별도의 설치 프로그램따위는 없다. 64비트 / password: teus.me 32비트 / password: teus.me 관심 있는 분들의 수많은 지적과 질타 부탁드립니다. 이 프로그램은 여러분 덕에 완성되어 갑니다. ▲ iTrans의 상세한 기능 및 특징 #일반 1. 대상 비디오 파일을 목록에 드롭한 뒤 변환 버튼을 클릭하면 알아서 변환함 지원 포맷: AVI, MKV,..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. 이제 DSLR 이외의 수많은 장비들이 카메라의 자리를 대신하고 있다. 이러다보니, 여행을 가서 찍은 사진을 모아보면 의외로 정리가 쉽지 않다. 온라인 서비스/모바일 앱들은 정렬 순서를 Exif 촬영일자 순으로 하는 경우가 많지만, PC에선 파일명 순인 경우가 일반적이다. 그러다보니 촬영시간 순서는 알기 힘들고 카메라 기종순으로 파일을 보게 되는 경우가 대부분이다. FPO는 JPEG에 저장된 Exif 정보 중 촬영일자 정보를 활용해서 파일명을 수정하고, 최대한 작은 크기로 파일을 줄여주는 프로그램이다. mozjpeg를 활용해서 파일 자체의 크기를 조금이라도 더 줄이도록 했고, 이와 별개로 resample을 적용해서 사진의 크기도 축소시킬 수 있다. ..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. 온라인에서 이미지의 크기를 줄여주는 많은 사이트들이 있다. TinyPNG가 가장 잘 알려져있는데, 최근에는 여기서 JPEG도 지원하도록 기능이 추가되었다. 비슷한 기능을 하는 PunyPNG도 있다. 여기는 JPEG, GIF까지도 지원해준다. 그런데, 이런 사이트를 통해 이미지를 압축하려면 내가 가진 이미지를 업로드해야 한다는 근본적인 문제가 있다. 왜 내 개인 이미지를 온라인에 올려줘야 되지? 그리고, 그 사이트들이 내 이미지를 다른 목적으로 사용하지 않는다는 보장이 있나? 사실, 이 사이트들이 사용하는 알고리즘은 대동소이 아니, 동일하다. 본 블로그에서도 몇 차례 소개한 적이 있던 mozjpeg, ZopfliPNG, pngquant, Gifsic..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. 메모장2 mod의 이번 배포판에서는 아주 중요한 변화가 있었다. 바로 한국어 버전과 영어 버전을 하나로 통합했다는 것이다. 깃헙의 상위 프로젝트에서는 중국어(번체, 간체) 및 일본어 UI까지 구현했지만, 이 배포판엔 한/영 버전만 포함되어 있다. (추가 또는 변형된 기능이 다수 있기 때문에 깃헙 배포판의 dll 파일을 사용할 수 없다는 점에 유의해야 함) 기본 언어는 한국어로 되어있으며, 언어를 변경하고 설정을 저장한 뒤 프로그램을 다시 실행하면 바뀐 UI가 동작한다. 기존 버전에서도 영문 버전은 회색 아이콘을 사용했는데 이 부분까지 동일하게 동작한다. 아래 링크에서 다운받을 수 있으며, 언제나 그렇듯 x86/x64/avx2 버전이 함께 들어있다...
최근 많은 사람들이 집이나 차량에 IoT 기능이 탑재된 장치들을 설치하고 있다. 필립스 휴(Hue) 라인업의 경우 단순한 밝기 뿐만 아니라 다양한 효과까지도 줄 수도 있고, 샤오미 만능 리모콘은 IR 신호들을 학습시켜 에어컨 등을 다양하게 제어할 수도 있다고 한다. 돈이 없어서이러한 장비들을 설치하기에 앞서, 일단 워밍업 하는 기분으로 IoT 전원 스위치를 달아보기로 했다. 선택한 스위치는 Somgoms 사의 2로 스위치. 알리 익스프레스에서 약 2만원 이하에 구매할 수 있었다. 알리 답지 않게(?) 주문한지 8일밖에 안 됐는데 도착했다. 포장을 벗기니 찬란한 박스가 눈에 들어온다... 상자 속에는 대략 이렇게 생긴 전원 스위치가 들어있다. 그리고, 대망의 뒷부분. 아래 사진을 보면 알 수 있듯이, 이 ..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. PC 뱅킹의 주적은 PC 뱅킹 프로그램이다. PC 뱅킹을 하고 나면 컴퓨터가 미친 듯이 느려지기 때문이다. 키보드 보안 프로그램을 필두로 컴퓨터를 느려지게 만드는 악의 무리들이 너무나 많다. 전통의 명가(?) nProte**부터 컴퓨터 발목잡기의 거목 안* 온라인 시큐**, 그 외에도 수많은 잡 구라들… KISA에서 I사 보안모듈 프로그램에 문제가 있다고 발표할 정도로 완성도가 엉망인 경우도 있다. 보안 취약점을 갖고있는 보안 프로그램이라니… 무슨 열림교회 닫힘도 아니고… 더군다나 이런 프로그램들은 몰래 설치가 되는 것도 아니고 아예 (강제로) 동의를 받아 설치된다. 마치 건물 철거 강제 집행하면서 동의서 서명당하는 기분이다 그래서 간단히 만들었다..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. SRT 자막 관리 도우미 SRTier를 3.90으로 업데이트했다. 자막 변환 외에도 SRT 교정, 텍스트 추출에서도 폴더 단위로 처리할 수 있도록 변경했고, 챕터 파일도 조정하며, 후원 계좌를 표시하도록 수정했다. 이 프로그램의 주요 기능은 아래와 같다. - SRT 파일 교정: SRT 파일을 읽은 뒤 오류를 수정한 뒤 다시 기록하거나 시간을 조정함 - 자막 변환: SAMI/SSA/ASS 자막을 SRT로 변환, SRT 자막을 SAMI로 변환 - 텍스트 추출: SRT 자막에서 텍스트만 추출 - 텍스트 합치기: 기존의 SRT 자막의 시간 코드에 맞춰 텍스트 파일의 내용을 합침 - 챕터 XML 수정: XML 포맷의 챕터 파일 역시 자막과 동일한 기준으로 ..
새 버전이 나왔습니다. 새 버전을 사용해주시기 바랍니다. 이번 배포판에서 추가된 가장 중요한 기능은 지정어 강조(Mark Phrase) 기능이 추가됐다는 점이다. 기존의 선택 영역 강조(Mark Occurences)에 덧붙여 추가한 이 기능은 순정 Notepad2-mod에는 없는 기능이다. 강조 여부는 보기-선택어 강조-지정구도 동시에 강조에서 선택할 수 있으며, 문구는 설정-강조할 지정구 설정에서 설정할 수 있다. 이 외에도 괄호짝 강조 기능의 스타일이 변경되고, 많은 부분이 튜닝되는 등 수많은 개선이 적용되었다. 아래 링크에서 다운받을 수 있다. 기존의 한/영 x86/x64 버전과 함께 avx2 버전도 함께 들어있다. password: teus.me ▲ 히스토리 2019.4.12: 4.20.03 r2..
요즘 일이 너무 바빠 변변하게 블로그 포스팅을 못 하고 있었다. 이러다 개점휴업 상태가 되어버릴까봐 하루 바짝 시간을 끌어모아 프로그램들도 업데이트 하고 근황도 정리해본다. 1. LG 노트북에 탑재될뻔한 구라 제거기 한달 하고도 두어주 전에 LG전자에서 구라 제거기를 탑재하고 싶다는 연락을 받았다. 처음엔 스팸을 의심했다가, 레이더를 돌려 스팸이 아니라는 점을 확인하고 컨퍼런스 콜도 진행했다. 그런데, 비용없이 탑재할 의향이 있는지 황당한 질문을 하길래 개인 무료, 기업 유료라는 상식 수준의 답변을 해줬다. 그러자 무려 한달 하고도 두주만에 돌아온 대답은 이런 것... 그 회사 지인을 통해 살짝 조언을 구해보니, 등골만 빼먹고 튀는 경우도 있으니 주의하란 권고를 들었었는데, 과연... 틀리지 않은 듯. ..
약 1년여 전에 한 회사의 업무 환경에 시놀로지를 전면 적용했고, 계속 사용해오고 있다. 시놀로지 NAS 장비 한 대에 다양한 업무들을 안정적으로 통합했는데, 결과는 물론 통합하는 과정도 상당히 만족스러웠다. 0. 배경 회사는 직원이 50명이 조금 넘는 중소기업이라 대규모의 전산 시스템을 구축할 여유는 없었다. 업종은 아웃바운드 콜과 이에 연계하여 강의를 하는 곳이고, 관련 자료들을 일일이 수작업으로 관리하고 있었다. 창업 이후 모든 데이터는 엑셀 파일들로 관리하고 있었으며, 실무자는 몇년치 엑셀 자료들을 검색해서 업무를 진행했다. 부서별로 공유해야 할 자료들은 윈도우 폴더 공유를 통해 공유하였고, 업무상 필요한 일부 자료들은 드롭박스로 공유했다. 엑셀 자료들은 파일의 크기가 너무 커져서 관리가 힘들어지..
짧고 간결한 프로젝트 오일러 문제 하나. 제목에서도 적었듯이 n제곱 해서 나온 숫자의 자릿수가 n인 모든 경우를 묻는 것이다. 다른 문제도 그렇지만, 이 문제는 일일이 제곱을 해가며 풀 수도 있다. 제곱의 결과가 64비트 범위를 넘어설 수도 있으니 이 부분을 해결할 아이디어만 있으면 된다. 하지만 그런 무식한(?) 방법보다는 로그를 활용하는 것이 훨씬 더 좋다. 일단 10진수 D의 자릿수가 n이라는 건 \(n-1 \leq log _{10} D \lt n\) 이라고 쓸 수 있다. 또한, 문제의 특성상 지수의 밑은 오로지 1~9 까지만 가능하다. 다시 말해서 \(1 \leq d \leq 9\) 인 자연수 d에 대해서 \(n-1 \leq log _{10} d ^ {n} \lt n\) 인 자연수 n의 개수를 세..
앞 포스팅에서도 짧게 언급했는데, 소수 여부를 판별하는 가장 빠른 방법은 에라토스테네스의 체다. 수의 범위가 정해져있다면 그 범위까지의 소수를 모두 식별하는데 이것보다 빠른 방법은 없다. 하지만, 반대로 이 방식은 임의의 한 수가 소수인지 식별할 때는 오히려 느린 편이다. 일일이 숫자를 나눠서 확인하는 경우 더 빠른 방법이 어느쪽인지 테스트해봤다. 테스트 환경은 그냥 개인용 PC(AMD Ryzen 5 3600X)인데, 다른 환경이라고 큰 차이는 없을 듯. 0. 에라토스테네스의 체 그냥 지나치긴 뭐해서 일단은 간단히 구현해봤다. bool IsPrime_0(unsigned num) { switch (num) { case 0: case 1: case 9: return false; case 2: case 3: ..
간만에 풀어보는 프로젝트 오일러. 이 문제는 복잡하게 생각하지 않아도 된다. 간단한 규칙만 찾으면 된다. 오히려 진짜 문제는 소수의 판별을 빠르게 하는 방법을 찾는 것. 에라토스테네스의 체를 활용하기 힘든 문제라 오히려 이 쪽이 성능에 영향을 미칠 수 있다. 1. 소수 식별 앞에서도 썼듯이, 소수를 식별하는 방법 중 에라토스테네스의 체보다 더 빠른 방식은 없다. 충분한 메모리만 확보할 수 있으면 이 방법이 최고다. 하지만, 이 문제에선 왠지 이 방식을 쓰는 게 어색하다. 대체 얼마만큼의 메모리를 확보해야 하는지를 알 수 없기 때문이다. 그래서 여기선 정공법을 선택했다. 정공법으로 풀 때 나누어지는지의 여부는 3 ~ \(\sqrt {n}\)까지만 확인하면 된다. 정수 범위에서 제곱근을 빠르게 구하는 방법은..
앞 포스팅들을 다시 읽어보니 뭔가 마무리가 되지 않은 느낌이 들었다. pow() 함수가 없기 때문인 것 같아서 이것까지 마저 만들기로 했다. 이미 ln()과 exp() 함수가 있기 때문에 구현 자체는 어려운 게 없다. 아래 적힌 관계만 이용하면 된다. 여기서 유의해야 될 점은 몇 가지 예외조건이 있다는 것이다. 이런 점을 고려한 코드는 아래와 같다. double EXP(const double x, const double limit) { double result = 1 + x; double x0 = x; int count = 1; while (true) { ++count; x0 = x0 * x / count; if (isinf(x0)) { break; } result += x0; if (fabs(x0) <..
이전 블로그에서 적었듯, ln()을 구현한 김에 sin()도 함께 구현해봤고, 원주율 계산도 간단하게 구현해봤다. 1. sin(x)의 구현 물론, 이번에도 테일러 급수다. sin(x)는 아래와 같이 전개된다. 이번에도 역시 구현 자체는 그리 어렵지 않지만 적절한 횟수를 정하는 것이 필요하다. const static double PI = 3.141592653589796323846; void SIN_v1(double x, double limit, double& result, int& count) { result = 0; count = 0; while (x > 2 * PI) { x -= 2 * PI; } while (x < 0) { x += 2 * PI; } double xxxx = x * x * x * x;..
2020/03/19 - 온도 센서의 출력 저항값으로 원래 온도값 계산 삽질기 이전 포스팅에서 로그와 간단한 식을 이용해서 센서 데이터를 처리하는 방식들을 얘기했다. 그런데, 새로운 문제가 제기되었다. 구현하는 환경에서 log() 함수가 지원되지 않으면 어떻게 하지? 쿼드코어 CPU가 발길에 채이는 세상이지만, 놀랍게도 이런 문제는 상존한다. 예컨데, Cortex 시리즈의 경우 M0는 물론 M3까지도 HW 부동소수점 기능이 제공되지 않는다. 1. 로그(ln(x))의 구현 방안 로그의 계산은 당연하게도(!) 테일러 급수에서 시작된다. 자연로그는 아래 두 가지 형태로 기술된다. 뭔가 좀 복잡해보이니 간단하게(?) 전개하면 아래와 같다. 그런데, 이 두 식은 조금만 생각해보면 홀수차 항만 남기도록 정리가 가능하..