일회용 비밀번호: 암호보다 더 나쁜가?

2025-08-07

많은 서비스가 결함 있는 로그인 방법을 사용합니다. 이메일이나 전화로 6자리 코드를 보내는 방법입니다. 이것은 매우 안전하지 않습니다. 공격자는 쉽게 피싱 사이트를 만들어 사용자를 속여 코드를 입력하게 하고 계정을 훔칠 수 있습니다. 비밀번호 관리자는 보호 기능을 제공하지 않습니다. 이 방법을 사용하는 Microsoft의 Minecraft 로그인은 이미 수많은 계정 도난 피해를 입었습니다. 이 안전하지 않은 로그인 시스템의 사용을 중지하십시오!

더 보기
기술

Linux의 PATH: 쉘의 비밀

2025-04-29

Linux가 실행하는 명령어를 어떻게 찾는지 궁금해한 적이 있습니까? 답은 커널이 아니라 쉘에 의존한다는 것입니다! 이 기사에서는 PATH 환경 변수의 메커니즘을 자세히 살펴보고, dash와 같은 쉘이 `padvance` 함수를 사용하여 PATH에서 실행 파일을 찾는 방법과 커널의 `execve` 시스템 호출이 실제로 전체 경로를 받는 방법을 밝힙니다. Python, Go, Rust와 같은 프로그래밍 언어도 서브 프로세스 라이브러리에 자체 PATH 검색을 구현하며, 궁극적으로 `execvp`와 같은 기본 함수에 의존합니다. 이 기사에서는 shebang이 절대 경로를 필요로 하는 이유와 `/usr/bin/env`의 영리한 역할에 대해서도 설명합니다.

더 보기
개발

복리로 e를 설명하는 것은 그만두자

2025-04-11

수학 수업에서는 자연로그의 밑 e를 복리로 설명하는 경우가 많습니다. 연이율 100%의 계좌는 연복리로 계산하면 2배가 되고, 반기복리로 계산하면 2.25배, 일복리로 계산하면 약 2.714배, 그리고 연속복리로 계산하면 정확히 e배가 됩니다. 하지만 이것은 오해의 소지가 있습니다. 복리 성장은 지수 함수적이지만, 이 예시에서는 복리 계산 기간을 선형적으로 나누고 있습니다. 은행은 이자율, 복리 계산 기간, 연환산 이자율을 별도로 공개해야 합니다. e를 소개하는 방법은 자기 자신을 도함수로 갖는 독특한 성질이나 오일러 공식에서의 중요한 역할 등 훨씬 더 우아한 방법이 있습니다. 이러한 방법들은 미리 e를 알고 있을 필요가 없으며, 수학적으로 더욱 엄밀합니다.

더 보기

수 시간에서 360밀리초로: 퍼즐 해법의 과도한 엔지니어링

2025-02-08

저자는 행으로 구성된 9개의 9자리 숫자들 중 최대 공약수를 얻는 것을 목표로 수도쿠 퍼즐을 해결하려고 시도했습니다. Z3 솔버를 사용한 초기 시도는 수 시간이 지나도 해결책을 찾지 못했습니다. 그래서 저자는 몇 가지 최적화 전략을 사용했습니다. 검색 공간을 줄이기 위한 수학적 분석, BFS 알고리즘, 그리고 `is_good` 함수의 반복적인 개선(HashSet에서 bitset으로 전환, 그리고 벡터화 계산을 위한 SIMD 활용)입니다. 멀티스레딩과 세련된 스레드 동기화를 통해 해결 시간은 수 시간에서 360밀리초로 단축되었고, 1600배 이상의 속도 향상을 달성했습니다. 하드코딩된 답변이 가장 빠른 방법으로 판명되었지만, 이 글은 단순해 보이는 산술 문제라도 신중한 알고리즘 최적화를 통해 상당한 성능 향상을 얻을 수 있음을 보여줍니다.

더 보기
개발 수도쿠

마인크래프트 서버 위치 선정이 투표 시스템 논쟁으로 이어지다

2024-12-21

마인크래프트 서버 위치를 정하는 문제가 다양한 투표 시스템에 대한 심도 있는 논의를 불러일으켰습니다. 처음 사용된 단순 다수결 방식(Plurality voting)은 '스포일러 효과'로 인해 가장 인기 없는 선택이 승리하는 결과를 낳았습니다. '즉시 결선 투표' 방식을 시도했지만, 후보자가 바뀌면 단조성이 훼손되는 것으로 나타났습니다. 저자는 추가적으로 보르다 방식과 애로우의 불가능성 정리를 소개하고, 최종적으로 애로우의 불가능성 정리의 세 가지 조건(만장일치, 비독재성, 무관한 대안의 독립성)을 충족하기 때문에 점수 투표와 승인 투표를 더 나은 선택지로 추천합니다.

더 보기