잘 알려져있다시피 SSD의 수명은 무한하지 않다. HDD과 SSD는 수명이 비슷하게 유한하지만, 둘의 패턴은 꽤 다르다. HDD가 수명과 밀접한 관련이 있는 것은 플래터 면의 손상이다. 흔히 말하는 배드 섹터 얘기다. SSD의 수명은 NAND 셀 하나하나의 수명과 관련이 있다. 셀 하나의 수명에 용량을 곱한 정도의 크기만큼을 쓰는 것이 SSD의 수명이다. SSD 컨트롤러가 하는 중요한 일 중 하나는 셀 하나하나의 수명이 다해가기 전에 다른 셀로 데이터를 옮기는 것이다. 이를 좀 더 정형화한 값이 바로 요즘 대부분의 SSD 스펙에 명시되어있는 TBW이다. AnandTech에서 이 식을 아래와 같이 정리했다. 여기서 분모 쪽은 실제 데이터에 따라 달라질 수 있으므로 최악의 상황을 가정하여 계산하니 사실상 상..
이전 글에서도 썼지만, 윈도우11을 라이젠 CPU 환경에서 사용하려면 fTPM은 뭔가 좀 많이 찝찝하다. 스터터링 이슈를 완전히 잡지 못한다면 굳이 나서서 성능을 떨어뜨리는 선택을 하는 게 되기 때문이다. 물론 궁극적인 솔루션은 AMD에서 완벽한 마이크로코드를 제공하고, MS에서는 윈도우11의 성능 문제를 해결하는 것이지만... 현시점에서 최선의 선택은 메인보드에 맞는 dTPM 모듈을 장착하는 것 같다. 이를 위해선 일단 메인보드 메뉴얼을 확인한다. 메인보드마다 장착 가능한 TPM 모듈은 천차만별이기 때문. 내 보드의 경우 아래 캡쳐와 같이 SPI 방식의 TPM 모듈을 지원한다. LPC 방식의 TPM을 지원하는 메인보드도 많은데, 이 두 방식은 아예 호환성이 없다. 만약 같은 SPI 방식인데 핀맵만 다르..
내 CPU는 라이젠 5900x다. 나름 이 계열에서 최상위 라인업 쪽에 속하는 프로세서이고, 성능도 만족스럽다. 하지만, 윈도우 11로 업데이트 한 뒤 왠지 찝찝한 이슈가 벌어지고 있었다. 컴퓨터가 툭툭 멈추는, 흔히 스터터링(stuttering)이라 부르는 현상이 발생하기 시작한 것이다. 게임을 특별히 하는 것도 아닌데, 이게 체감될 정도였다. AMD에서도 이 문제를 인지하고 있었고, 결국 fTPM 모듈의 문제를 인정하고 마이크로코드를 업데이트했다. (AMD AGESA 1.2.0.7) 이 업데이트 설치 이후 별 문제 없을 것으로 기대했지만, 현실은 언제나 냉혹한 것... 이전과 별 다름 없이 스터터링이 발생하는 것이었다. 문제를 제대로 해결해보기 위해 아예 윈도우10과 윈도우11을 돌아가며 구동하면서 ..
이 글을 쓰는 현 시점 우분투 LTS의 최신 버전은 22.04.1이다. 그런데, 이 우분투에서 Nvidia를 제대로 사용하는 건 의외로 전혀 쉽지 않다. 그냥저냥 적당히 쓰기만 하는 것도 어렵고, 제대로 드라이버를 다 설치하려면 고난의 길이 기다린다. 문제점 기본 오픈소스 드라이버인 Nouveau의 문제 우분투와 함께 설치되는 Nvidia GPU 오픈 소스 드라이버(Nouveau)는 Cuda를 활용하지 못하고 성능도 떨어진다. 게다가, Nouveau가 설치된 상태에서는 Nvidia 정식 드라이버를 설치할 수도 없다. 강제로 Nouveau를 uninstall할 수는 있으나, uninstall하면 부팅이 제대로 이루어지지 않는다. 우분투 22.xx대의 yellow screen bug Ubuntu 22.xx대..
비디오 컨테이터의 표준인 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..
몇달 전 USB 3.0 허브를 구매해서 사용하고 있었다. 유전원 USB 허브이며, 장비 옆의 케이블 커넥터까지 누가 봐도 USB3.0 허브다. 물론 여기 꽂을 수 있도록 동봉된 마이크로 USB 타입 B 케이블 역시 누가 봐도 USB3.0임을 확신할 수 있다. 하지만, 유튜브 뻘짓연구소에 충격적인 영상이 얼마 전 올라왔었다. 아니, 모양이라도 다르던가... 아예 대표 이미지로 나온 바로 그 디자인이다... 그래서 직접 까봤다. 찬란하게(?) 박혀있는 SL2.1s의 위엄... 그리고 12.000MHZ... 이름만 봐도 알 수 있듯이 저건 USB2.0 컨트롤러 칩이다. 그리고, 12.000MHz는 이 칩에서 사용되는 오실레이터... 이렇게 찍은 사진을 마지막으로 쓰레기통에 처넣었다... 다음에 지른 건 USB..
몇년 전 프린터를 새로 샀고, 마침 대학원 졸업증명서를 뽑아야 했으며 게다가 그게 주말이었는데, 인쇄를 못 하는 상황이 벌어졌다. 내가 산 프린터가 왜 '허용된 프린터 목록'에 없지? 메일로 수정 요청을 보냈긴 했지만, 하루만에 뚝딱 해결될 수 있는 상황이 아니라 꽤 스트레스를 받았었다. 그 뿐만 아니라 온라인 민원 사이트에서 내 정보를 다운받으면서 이런 의문이 종종 들었었다. 왜 내 정보를 내가 다운받는데, 한 번씩밖에 못 받는가? 물론, 이 "정보"엔 등본, 초본을 비롯한 상세한 개인정보가 있어 충분한 보안대책이 필요하다는 점을 모르는 바는 아니다. 하지만, 어쨌거나 기술적으로 궁금한 건 또 다른 문제다. 게다가 이 관점에서 더 따라가보면 프린터에서 사용되는 PCL이나 PS같은 언어들이 진화한 형태가..
이전 글에서 간략하게만 적었는데 바이오스의 버그 등으로 인해 윈도우의 최대 절전 모드가 동작하지 않는 경우가 있다. 이런 경우에 단순하게 명령창의 명령만으로 절전 모드에 진입시키는 것이 아예 불가능하다. shutdown.exe 이건 rundll.exe powrprof.dll 이건 무엇 하나 기대대로 동작하지 않는다. powrprof.dll을 활용해서 적절한 인자를 추가하여 최대 절전 모드 대신 절전 모드로 진입시키려 해도 제대로 되지 않는다. shutdown.exe /h /f rundll32.exe powrprof.dll SetSuspendState 정확한 메커니즘은 확인할 수 없었지만, 명령행에서 최대 절전 모드 대신 굳이 절전 모드로 진입하는 건 불가능해 보인다. 하지만, 아주 약간의 코드 만으로도 ..
메인보드로 ASRock의 B550M Steel Legend를 사용하고 있다. 이 보드는 USB 포트에 역전류 방지 회로가 장착되어 있어 언제나 안정적으로 사용할 수 있다. 그런데, 어느 날부터 절전모드가 정상적으로 동작하지 않는 상황이 벌어지고 있었다. 해외 포럼들에서도 이 문제는 많은 이슈가 되어서 여러가지 글들이 많이 올라오고 있었고, 기본적인 해결책도 나와있었다. 시스템 설정에서 최대 절전 모드를 끄는 것. 이렇게 하면 윈도우 자체는 큰 문제 없이 사용할 수 있으나, 본질적인 문제는 해결되지 않는다. 예를 들면, shutdown.exe 명령으로 절전 모드로 진입할 수 없다. shutdown.exe /h /f 이는 아래 명령을 통해서도 마찬가지다. rundll32.exe powrprof.dll Set..
정규식은 문자열을 비교 처리할 때 사용되는 강력한 표현법이다. Perl, JavaScript 등의 언어에서는 대단히 높은 활용도를 보여주고 있다. C++ 언어의 경우 정규식을 처음부터 지원한 건 아니었고, C++11부터 지원하기 시작했다. 표준에 포함되긴 했지만, C++ 언어의 문법 구조상 정규식을 사용하는데는 불편함이 있다. 예컨데, 아래의 정규식은 메일 주소를 확인하기 위한 꽤 흔한 식이다. var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i; 하지만, C++에서 이런 정규식을 사용하려면 식을 문자열로 써야 하고, 이에 따라 \는 한 번이 아니라 두 번 적어야 한다. 마지막에 ..
이 문제는 의외로 오래 전에(?) 알려졌던 문제이다. 이 프로그램이 설치되고 나면 언인스톨이 깔끔하게 되지 않는데, 이걸 수작업으로 지우면 문제가 터지는 것. nProtect Firewall Core Driver가 일단 설치되면 언인스톨을 하더라도 컴퓨터 어딘가에 숨어서 암약하고 있다. 1. 수작업 제거 1단계 명령행을 관리자 권한으로 실행한 뒤 아래와 같이 입력하면 관련 프로세스가 제거된다. 그리고... 인터넷이 죽는다. sc stop TKFWFV sc delete TKFWFV 2. 수작업 제거 2단계 명령행에서 다음과 같이 입력한다. netcfg -s n 윈도우에 설치된 각종 네트워크 구성 요소들이 화면에 표시되는데, 이 중 아래와 같은 내용을 찾는다. 관리자 권한으로 실행된 명령행에서 아래와..
언젠가부터 지메일이나 유튜브 접속 속도가 묘하게 느려졌다. 구글이 아니더라도 뭔가 느릴 이유가 없는데 접속이 느려보이는 사이트들이 좀 있었다. 그러다 클리앙에서 글을 하나 보고서 따라했더니 효과가 커서 공유. 현재까지 공식적으로 널리 사용되는 HTTP 표준은 2.0이다. 그리고, 이 한계를 극복하기 위해 연구되고 있는 게 3.0. 여기 사용될 기술이 QUIC이라는 프로토콜이다. 골자는 기존 TCP 기반의 한계를 극복하기 위해 UDP 기반으로 더 빠르고 훌륭한 프로토콜을 만든다는 것. 그리고, 이미 구글을 포함한 많은 사이트들이 HTTP 3.0을 시범지원하고 있는데, 여기서 뭔가 문제가 벌어진 듯. HTTP 3.0(QUIC)이 정식으로 지원되고, 안정화가 이루어지기 전까지는 잠시 꺼두어도 괜찮을 것 같다...
드디어 그 날이 오고야 말았다. 구글의 G Suite 서비스는 10년 넘게 무료로 도메인 메일을 제공해주는 고마운 서비스였다. 하지만, Google Workspace라는 유료 서비스로 통합된다는 얘기가 있었고, 드디어 2022년 7월 1일로 고지를... 받았다. 이 서비스를 소규모 회사 등에서 사용하는 건 큰 무리가 없을 것이다. 계정 1개당 6달러이므로 30명 규모 조직이라면 월 180달러라는 꽤 만만한 가격에 훌륭한 서비스를 활용할 수 있다. 하지만, 단지 도메인 메일만을 사용하는 개인이라면 얘기가 다르다. 계정이 2개만 되어도 월 만원 이상의 비용이 나가는데, 은근 부담스럽다. 다음 스마트워크를 사용할까 했다가 이왕 있는 장비를 잘 써먹기 위해 시놀로지 NAS를 활용하기로 했다. Synology M..
HW(그래픽 카드) 전문 사이트들에서는 이미 꽤 다뤄졌던 얘기 같은데, 실제로는 잘못 꽂는 경우가 많아서 포스팅. 대부분의 PC용 파워 서플라이의 사용설명서 등에는 아래와 같이 보조전원에 대한 설명이 나와있다. 간단히 말해 전력 소모가 큰 경우엔 전원 케이블 하나에 보조전원 둘을 동시에 연결하지 말라는 것. 그리고, nVidia의 홈페이지에 가면 아래와 같은 내용을 볼 수 있다. 20시리즈의 경우 RTX 2070 Super는 보조전원을 215W 필요로 한다고 한다. 즉, 2070 Super 이상에선 별도의 전원 케이블 2개를 꽂아야 하는 것 같다. 30 시리즈의 경우 3070Ti가 무려 290W를 사용한다. 즉, 3070Ti 이상에서는 전원 케이블을 별도로 꽂아야 한다는 것 같다. 그런데, 실제로 레퍼런..
C/C++ 언어에서 헤더의 중복 선언을 방지하기 위해 #pragma once를 사용한다. 그런데, #pragma once를 써도 링크 오류가 발생하는 경우가 있다. 아래와 같은 간단한 프로그램들을 보자. // CTest1.h: 헤더 파일 // #pragma once class CTest1 { public: int Func(); }; // CTest1.cpp: 클래스 동작을 정의함 // #include "CTest1.h" int CTest1::Func() { return 1; } #include #include "CTest1.h" int main() { CTest1 test1; std::cout
이전 포스팅들에서 OpenDDS를 Visual Studio 환경에서 컴파일하는 법을 정리했다. 이후 OpenDDS 자체의 변경사항도 있고, 뭔가 이상한 점이 확인되기도 해서 좀 더 정리함. 1. 3.18.1 → 3.19 깃허브에 올라온 공식 버전이 3.19로 업데이트 됐다. 그리고, 공식적으로 Visual Studio 2022를 지원한다. 최신 버전을 사용한다면 configure 파일을 수정할 필요가 없음. 2. static 모드 사용 비추 다양한 테스트들을 돌려봤는데, static 모드로 컴파일하면 DDS 통신이 제대로 되지 않는다. TransportRegistry::create_inst() 함수가 오동작하는 것 같은데, 정확한 문제는 더 추적이 필요함. 일단은 정적 라이브러리에서 MFC 사용 옵션은 ..
갑자기 Log4j 사태 때문에 관련 업계 쪽에선 폭탄이라도 맞은 분위기인 것 같다. 상당수의 자바 개발자가 사용하는 애드온에 서버의 모든 권한을 가져올 수 있는 오류가 있다니... 정부를 비롯해서 관련 기관/업계에선 부랴부랴 난리가 났고, 이번에도 어김없이 가짜뉴스가 판친다. 해당 오류는 2.x 대에 있는데, 전자정부는 1.2 사용하니까 문제 없다고?? 물론, 답글은 뭐 이런 식이고... 하지만, 이건 조금만 찾아보면 쉽게 진위여부를 확인할 수 있다. 전자정부 표준 프레임워크는 3.1부터 Log4j2.0을 사용하고 있었다. 그리고, 이 3.x는 '14년~'15년부터 사용되었고. 세줄 요약 1. 전자정부 프레임워크는 6년 전 503 시절부터 Log4j 2.x 사용 2. 원 글 올린 사람은 이 사실을 알면서..
10. 프로젝트 설정 당연한 얘기지만, 모든 프로젝트를 선택해서 설정하면 C/C++ 항목이 표시되지 않는다. 이 점을 신경 써서 C/C++ 항목이 표시되는 모든 프로젝트에 대해 다음의 전처리기를 정의한다. 이 부분은 빼도 상관은 없지만, 경고가 너무 많이 표시되어 보기 싫기 때문에 하는 것을 추천. _WINSOCK_DEPRECATED_NO_WARNINGS _CRT_SECURE_NO_WARNINGS 그리고, 하는 김에 다중 프로세서 컴파일을 예(/MP)로 설정한다. 환경에 따라 다르지만 요즘 환경이라면 적어도 2배 이상은 더 빨리 컴파일된다. 11. /bigobj 설정 몇몇 프로젝트는 섹션 수가 한도를 초과한다는 메시지와 함께 컴파일 실패가 발생한다. 이 프로젝트들은 C/C++ 명령줄에서 /bigobj를 ..
7. 수정 #3 다음 수정들은 좀 지저분하다. NetworkConfigMonitor.h 파일에서 다음과 같은 부분을 찾는다. virtual void add_interface(const NetworkInterface& interface) { NetworkInterface::AddressSet addresses = interface.get_addresses(); for (NetworkInterface::AddressSet::const_iterator pos = addresses.begin(), limit = addresses.end(); pos != limit; ++pos) { add_address(interface, *pos); } } virtual void remove_interface(const Net..
VS 환경에서 OpenDDS를 컴파일하는 것 자체는 그렇게 어려운 일이 아니다. 다운을 받아 압축을 풀고 configure.cmd를 실행시킨 뒤 VS로 컴파일하면 된다. 컴파일 오류가 몇 개 발생하긴 하지만 잘 고쳐보면 된다. 그럼 쉬운 게 아니잖아. 하지만, 이걸 정말로 써먹을 수 있도록 컴파일하는 것은 쉽지 않다. 앞 글에서도 얘기했듯이 윈도우에서 제대로 쓸 수 있는 수준에 맞춰야 하는데 쉬울리가... 현 시점에서 릴리즈된 OpenDDS의 최신 버전은 3.18.1이다. 이 버전은 공식적으로 VS2019 까지만을 지원한다. VS2019 사용자라면 그냥 쓰면 되지만, VS2022 사용자라면 선택을 해야 한다. configure를 좀 수정하거나 이후 버전을 다운받아야 한다. 0. 사전 준비 물론 이 작업을..
1. OpenDDS란? 미들웨어 중에 DDS라는 녀석이 있다. Publisher-Subscriber 모델을 사용하며, 상당히 신뢰도가 높아 국방체계에도 사용되는 미들웨어다. RTI DDS가 비싸도 널리 사용되는 것 같고, 이 외에도 OpenSplice DDS, 국산인 스마트DDS, 구름DDS도 있다. DDS도 다른 기술들과 마찬가지로 표준화가 이루어져 오픈소스 버전도 만들어져 깃허브에서 관리되고 있다. 깃허브에서 소스가 관리되는 DDS는 위에 언급된 OpenSplice DDS 외에도 OpenDDS가 있다. 이 중 OpenDDS를 윈도우 환경에서 적용해보기로 했다. 2. 윈도우 환경과 기타 환경의 미묘한 차이 우리나라에서 프로그램을 개발할 때는 당연히 유니코드를 적용해서 개발해야 한다. 호환성 때문에 멀티..
최근 인텔 12세대 CPU가 발표되었지만, 인텔의 주장과는 달리 성능의 엄청난 향상을 보여주진 못하고 있다. 성능 향상폭은 크지 않은데, 보드도 새로 사고, DDR5도 새로 사야할만한 필요성은 전혀 느껴지지 않는다. 물론 DDR5도 언젠간 수율이 올라가고 기술력이 안정화되어 DDR4를 대체하겠지만, 아직은 아닌 것 같다. 라이젠 계열을 계속 쓰는 게 낫다고 판단해서 없는 돈에 영혼 한 방울까지 끌어모아 라이젠 5900X로 업그레이드 했다. 메인보드도, 메모리도 아무것도 살 필요 없이 CPU만 사면 되니 가성비는 일단 비교할 수 없이 높고... 일단 떠나보내는 CPU(및 그 외에 안 바뀌는 시스템) 사양은 아래와 같았다. 그리고 새로 영입한 CPU는 이렇다. 당연히 새로운 CPU가 성능이 좋겠지만, 어느 ..
윈도우 11도 32비트는 지원하지 않고 64비트 환경만 지원하더니, 드디어 비주얼 스튜디오도 64비트로 넘어갔다. 16비트에서 32비트로 넘어갈 때도 눈 깜박할 사이에 넘어갔는데 64비트로의 전환 역시 신속하게 진행되고 있다. 이전에 VS2019에서 돌리던 프로젝트들을 하나씩 VS2022로 이관했는데, 이 과정에서 묘한 컴파일 실패가 발생했다. 아래의 코드를 32비트 릴리즈 모드에서 컴파일하면 환경을 어떻게 설정해도 컴파일이 중단된다. 64비트나 디버그 모드에선 이상 없이 잘 되지만, 딱 32비트 릴리즈 모드에서만 컴파일러 자체가 멈춘다. 식을 좀 더 단순하게 써보라는 조언만 남기고 그냥 중단된다. #pragma loop(hint_parallel(0)) #pragma loop(ivdep) for (int..
Visual Studio 2022의 Preview 버전이 4.1까지 나왔다. 이제 충분히 안정화되었을 것이라 보고 VS2019로 만들었던 프로젝트들을 하나씩 이관하기 시작했다. 언제나 그렇듯 대부분의 프로젝트들은 별 문제 없이 잘 이관되었고, 몇 개만 문제를 일으켰다. 그리고, 언제나 그렇듯 이런 프로젝트들은 해결책 찾기가 너무나 어려웠다. 그중 가장 고갱님 당황하셨어요? 시추에이션은 Paint.NET 프로젝트. C/C++ 프로젝트와 달리 별다른 마이그레이션도 필요없을 줄 알았는데, 현실은 언제나 시궁창... 그렇지 않아도 무슨 얘긴지 모르겠는데, 기계번역된 결과는 너무나 읽기 어렵다... 좌우지간 버전 간의 충돌이란 얘긴데... 1. 안일한 불의의 길 Paint.NET 포럼을 뒤져보니, 이미 많이 벌어..
실망으로 가득 찼던 지난 포스팅 이후 다시 한 번 NOTHING ear(1) 구매에 도전했다. 당시는 무x사에서 한정판매하는 것이었고, 이 글을 쓰는 지금까지도 거기서 구매에 성공했다는 글은 여전히 볼 수 없다... 며칠 뒤 본진 홈페이지에서 판매를 시작할 것이라는 메일을 받고 다시 한 번 도전했다. 이번엔 그 때처럼 시간에 맞춰 대기하지도 았았고, 그냥 생각날 때 접속하여 구매에 성공했다. 그리고 바로 다음 날 택배가 도착했다. 택배 상자에는 한자가 잔뜩 적혀있었지만, 인천에서 발송됐다. 박스를 뜯으니 거대한 에어캡으로 안전하게 포장되어 있다. 에어캡을 벗기니 다시 한번 스티로폼에 쌓인 물건이 나온다. 그리고, 짜잔! 바로 이것이 NOTHING ear(1)의 상자이다!!! 상자 뒷면에는 충전 관련 정보..
투명한 디자인과 액티브 노이즈 캔슬링에 더해 저렴한 가격까지 갖춘 NOTHING ear(1)이 한달전 영국에서 출시됐다. 가격이 무려 99달러로 책정돼 업계 끝판왕 에어팟 프로의 ⅓ 수준인데다 디자인이 훌륭해서 온라인에서 화제가 됐었다. 리뷰들을 보면 어떤 리뷰어는 과장광고일 뿐이라 하고, 어떤 리뷰어는 가성비 끝판왕이라고도 한다. 어쨌거나, 디자인이 예쁜 건 맞고, 가격 대비해서 부족한 제품은 아닌 것 같다. 국내 발매를 기다리던 중에 무x사에서 선발매한다는 소식이 들려왔다. 그런데, 무x사의 기사는 처음부터 뭔가 쎄했다. 낫싱은 안드로이드의 아버지로 불리는 앤디 루빈이 구글을 떠나 처음으로 론칭한 이라니... 앤디 루빈이 구글을 떠나 처음으로 설립한 회사는 에센셜이다. 참고로, 구글에서의 그의 부적절..
0. 윈도우 어플에서의 아이콘 크기 윈도우용 아이콘은 파일 하나에 여러 종류의 크기를 담을 수 있으며, 상황에 맞춰 윈도우가 선택한다. 이게 상식이고, 모든 얘기의 시발점이다. 윈도우 98/2000 까지는 4bpp 아이콘을 주로 사용했지만, XP 이후로는 8bpp/32bpp를 기본으로 한다. 현재 4bpp 아이콘은 단순히 하위 호환성을 위해 존재할 뿐 실제 프로젝트에 적용할 필요는 없다고 봐도 무방. 아이콘 파일의 스펙을 보면 가로/세로 크기는 256이 최대이고, 32bpp 까지만 적용이 가능하다. XP 까진 비트맵 포맷만 지원했지만, 비스타 이후는 PNG 포맷도 적용이 가능하다. 1. 실제로 만들어야 하는 아이콘의 크기들 실제 어플리케이션에서 만들어야 하는 아이콘의 크기는 스택오버플로우에 잘 정리되어있..