Railway: 매출 자동화, 영업이 아닌

2024-12-18

Railway는 전통적인 영업 방식에서 자동화된 매출 증대로 전환한 과정을 공유합니다. 기존 영업 방식은 효과가 없었고, 제품 주도 성장(PLG) 모델로 전환하여 고객 업그레이드 또는 이탈을 예측하는 회귀 모델을 개발했습니다. 이 모델은 성공/실패한 빌드 수, 설정된 지역 수, 지원 요청 수, 기능 채택률 등의 요소를 사용하여 고객을 평가하고 지원이 필요한 고객을 식별합니다. 적극적인 지원과 이러한 표적화된 접근 방식을 통해 매출과 고객 만족도가 향상되어 지속 가능한 사업 성장으로 이어졌습니다.

더 보기

일본, 330억 달러 규모의 반도체 생산에 거는 도박

2024-12-18

일본은 홋카이도 등 외곽 지역에 330억 달러를 투자하여 반도체 공장을 건설하고, 반도체 산업에서의 주도권을 되찾으려 하고 있습니다. 이로 인해 건설 호황이 일어나고 많은 일자리가 생겨났지만, 지역의 상대적으로 부진한 고용 시장과는 대조적입니다. 야심찬 프로젝트는 위험 부담이 큰 도박이지만, 일본의 기술 혁신 선도 복귀 의지를 보여줍니다.

더 보기

Go로 작성된 최신 IRC 서버 Ergo 출시

2024-12-18

Ergo는 Go로 작성된 최신 IRC 서버로, 설정 및 사용이 간편합니다. ircd, 서비스 프레임워크, 바운서(통합 계정 관리, 히스토리 저장, 바운서 기능) 기능을 결합했습니다. 최신 IRCv3 프로토콜을 지원하며, 재해시 가능한 YAML 구성을 통해 높은 수준의 사용자 지정이 가능합니다. 주요 기능으로는 통합 서비스(NickServ, ChanServ, HostServ), 네이티브 TLS/SSL 지원, SASL 인증, LDAP 지원, 고급 보안 및 개인 정보 보호 기능이 있습니다.

더 보기
개발 IRC 서버

파이썬 메타 순환 인터프리터: 파이썬으로 파이썬 인터프리터 구현하기

2024-12-18

이 글에서는 파이썬을 사용하여 파이썬 메타 순환 인터프리터(MCI)를 만드는 방법을 보여줍니다. MCI는 자신이 해석하는 언어로 작성된 인터프리터로, 호스트 언어의 부분 집합 또는 초집합을 구현할 수 있습니다. 저자는 MCI 구현의 세부 사항을 설명하며, 파이썬 소스 코드 파싱, 추상 구문 트리(AST) 구성, AST 순회 및 명령문 실행, 범위, 심볼 테이블, 제어 흐름 명령문(while 루프 및 if 명령문 등) 처리와 같은 중요한 개념을 다룹니다. 이 예제를 통해 인터프리터의 메커니즘을 깊이 이해하고 파이썬의 AST 모듈과 내장 함수를 활용하여 더욱 복잡한 인터프리터를 구축하는 방법을 배울 수 있습니다.

더 보기

빠른 텍스처 생성: XOR 텍스처 튜토리얼

2024-12-18

이 튜토리얼에서는 각 픽셀의 x좌표와 y좌표를 XOR 연산하여 생성하는 간단한 XOR 텍스처를 생성하는 방법을 설명합니다. 게임이나 아트에는 이상적이지 않지만, 텍스처 매퍼를 테스트하는 데 적합합니다. 이 글에서는 XOR 연산의 자세한 내용, 텍스처 크기가 색상 밝기에 미치는 영향, AND 연산자와 OR 연산자를 사용하여 유사한 텍스처를 생성하는 방법을 설명합니다. XOR을 사용한 3D 텍스처의 예도 제시합니다.

더 보기

오픈소스 5밴드 이퀄라이저 a5eq.lv2 출시

2024-12-18

ashafq는 오픈소스 5밴드 이퀄라이저 LV2 플러그인인 a5eq.lv2를 출시했습니다. 이 플러그인은 로우 쉘프, 3개의 피킹 필터, 하이 쉘프를 갖추고 있으며, 아마추어와 전문 오디오 엔지니어 모두 정확한 사운드 조각을 할 수 있도록 설계되었습니다. 고정밀 필터 계수, 스테레오 처리, 사용자 친화적인 인터페이스를 갖추고 있습니다. Ardour 및 Audacity와 같은 LV2 호스트 소프트웨어와 호환되며, 명령줄을 통해 쉽게 설치하고 사용할 수 있습니다. 사용자는 GitHub를 통해 문제를 제출하거나 코드에 기여할 수 있습니다.

더 보기

Jupyter Notebook: E2E 테스트와 문서를 하나로

2024-12-18

양자 컴퓨팅 라이브러리를 개발하는 동안 저자는 Jupyter Notebook을 사용자 가이드와 엔드투엔드 테스트 모두로 활용했습니다. Notebook 내에서 환경 변수(예: SERVER_URL)를 읽어 매개변수화를 구현하여 사용자와 자동화된 CI/CD 파이프라인 모두에서 실행할 수 있도록 했습니다. Notebook 실행 방법으로 간결한 nbclient와 더 유연한 nbconvert/jq 두 가지 방법을 고려했습니다. 최종적으로 저자는 nbclient의 간결성을 선택하여 문서 유지 관리와 코드 테스트를 효과적으로 통합함으로써 매 머지 요청마다 양쪽의 무결성을 보장했습니다.

더 보기
개발 E2E 테스트

dLine: 효율적인 일정 관리를 위한 터미널 기반 캘린더 도구

2024-12-18

dLine은 터미널 내에서 직접 캘린더 형식으로 중요한 데이터를 표시하는 명령줄 도구입니다. 중요한 날짜를 모니터링하고, API를 통해 이벤트 추가를 간소화하며, 다양한 이벤트 유형의 기간을 계산합니다. 개발자를 위해 설계된 dLine은 터미널을 벗어나지 않고도 이벤트 관리 및 일정 탐색을 간소화합니다. 동적 뷰와 정적 뷰, 이벤트 계산기, 이벤트 추가, 삭제, 보기, 정리 등의 강력한 데이터 관리 기능을 갖추고 있습니다. dLine은 사용자 지정 색상 테마, 사용자 번역, Google 캘린더와의 통합도 지원합니다.

더 보기

CSIRO, AI 기반 오픈 액세스 수자원 안보 연구 시각화 지도 공개

2024-12-18

CSIRO는 2010년 이후 수자원 안보 프로그램에서 공개된 수자원 과학 논문의 지리적 분포를 시각화하는 대화형 지도인 "Atlas of Open Water Security Science"를 공개했습니다. AI 기반의 이 3개월 시험 버전은 논문에서 위치와 맥락을 추출하지만 부정확성이 있을 수 있습니다. 사용자는 연구의 발전을 탐색하고, 논문을 클릭하여 세부 정보를 확인하고, CSIRO의 환경 과학 분야 AI 혁신에 대해 자세히 알아볼 수 있습니다. 주의해서 사용하십시오.

더 보기

IncludeOS: 오버헤드 없이 클라우드에서 애플리케이션 실행

2024-12-17

IncludeOS는 기존 OS 없이 클라우드에서 애플리케이션을 실행할 수 있는 경량 운영 체제입니다. OS 기능을 애플리케이션에 직접 통합하여 고성능, 안전하고 리소스 효율적인 가상 머신을 만듭니다. IncludeOS 애플리케이션은 수십 밀리초 안에 부팅되며 디스크와 메모리는 몇 메가바이트만 필요합니다. 간단한 명령줄 도구를 통해 빌드와 배포가 용이하며, 풍부한 예제와 설명서를 통해 개발자는 빠르게 시작할 수 있습니다.

더 보기

OpenAuth: 범용적이고 자체 호스팅되는 OAuth 2.0 서버

2024-12-17

OpenAuth는 범용적이고 표준 기반의 오픈소스 인증 제공자입니다. 독립형 서비스로 배포하거나 기존 애플리케이션에 통합할 수 있으며, 프레임워크에 종속되지 않고 Node.js, Bun, AWS Lambda 또는 Cloudflare Workers에서 실행됩니다. OAuth 2.0 사양을 준수하며 사용자 정의 가능한 테마가 있는 UI를 제공합니다. 라이브러리인 대부분의 오픈소스 인증 솔루션과 달리 OpenAuth는 인프라에서 쉽게 자체 호스팅하도록 설계된 중앙 집중식 서버입니다. 사용자 관리를 의도적으로 생략하고 대신 사용자 정의 사용자 조회/생성 로직을 위한 콜백을 제공합니다. 데이터 저장소는 최소한(갱신 토큰 등)이며 간단한 KV 저장소(Cloudflare KV, DynamoDB)를 사용합니다. 미리 구축된 UI를 사용할 수 있지만 쉽게 사용자 정의하거나 완전히 바꿀 수 있습니다. SST 팀에서 만든 OpenAuth는 애플리케이션의 인증을 간소화합니다.

더 보기

혼돈 길들이기: Go에서의 에러 처리 중앙 집중화 및 구조화

2024-12-18

이 글에서는 저자가 성장하는 Go 프로젝트에서 점점 증가하는 에러 처리 문제를 해결한 과정을 자세히 설명합니다. 처음에는 간단한 에러 처리 방식이 혼란스러운 로그와 추적 불가능한 에러로 인한 혼돈으로 이어졌습니다. 이를 해결하기 위해 새로운 에러 처리 프레임워크를 설계 및 구현했습니다. 이 프레임워크는 네임스페이스 코드를 사용하는 중앙 집중화된 구조화된 시스템을 채택하여 에러를 의미 있고 추적 가능하게 만듭니다. 핵심은 에러 코드의 중앙 집중화된 선언입니다. 각 서비스 계층은 컨텍스트 정보로 강화된 자체 네임스페이스 코드만 반환합니다. 이 글에서는 설계 결정, 구현, 얻은 교훈, 마이그레이션 전략을 자세히 설명하여 귀중한 실무 경험을 제공합니다.

더 보기

SeleniumBase: 강력한 웹 자동화 프레임워크

2024-12-17

SeleniumBase는 웹 자동화, 테스트, 봇 탐지 우회를 위한 강력한 Python 프레임워크입니다. Selenium WebDriver를 기반으로 하며 pytest와 같은 테스트 러너와 통합되어 페이지 요소의 자동 대기, 테스트 보고서 생성, 대시보드, 여러 브라우저 및 운영 체제 지원 등 광범위한 기능을 제공합니다. SeleniumBase는 또한 UC 모드 및 CDP 모드와 같이 은밀성과 안정성을 높이는 모드를 포함하며, 포괄적인 예제와 문서를 통해 빠른 도입이 가능합니다.

더 보기
개발 웹 자동화

네트워크 보안 돌파구: '지옥의 네트워크'에서 침입자를 가두다

2024-12-17

오울루 대학교 SensorFu팀 연구원들은 LaBrea tar pit 기술에서 영감을 받은 새로운 네트워크 보안 방어 시스템을 개발했습니다. 이 시스템은 ARP 요청을 가로채고 SYN-ACK 응답을 지연시켜 네트워크에 수많은 가상 장치를 생성하여 침입자를 혼란스럽게 만듭니다. 이로 인해 공격자는 실제 장치를 식별하는 데 많은 시간을 낭비하게 되고, 관리자는 취약성을 패치할 수 있는 귀중한 시간을 확보하게 됩니다. 테스트 결과, 이 시스템은 스캔 시간을 수 시간으로 연장하여 공격 성공률을 크게 낮추는 것으로 나타났습니다. 경량, 효율적이며 배포가 용이한 이 시스템은 모든 규모의 조직에 강력한 네트워크 보안을 제공합니다.

더 보기

FastVideo: 오픈소스 프레임워크를 통한 대규모 비디오 확산 모델 가속화

2024-12-17

FastVideo는 대규모 비디오 확산 모델의 추론 및 학습 속도를 높이도록 설계된 오픈소스 프레임워크입니다. FastMochi 및 FastHunyuan과 같은 모델을 지원하며, 추론 속도를 최대 8배까지 향상시킵니다. 이 프레임워크는 지식 증류 기술을 활용하며, PCM 기반 비디오 DiT 모델의 증류, 미세 조정 및 추론을 지원합니다. 또한 FastVideo는 FSDP, 시퀀스 병렬 처리 및 선택적 활성화 체크포인트를 통한 확장 가능한 학습 기능을 갖추고 있어 메모리 효율적인 미세 조정을 가능하게 합니다.

더 보기

기계식 손목시계 제작의 놀라운 여정

2024-12-17

Imgur 앨범은 숙련된 장인이 기계식 손목시계를 만드는 전 과정을 기록하고 있습니다. 부품 준비부터 정밀한 조립까지, 각 단계는 정교한 장인 정신과 디테일에 대한 철저한 추구를 보여줍니다. 독자들은 이미지를 통해 기계식 손목시계 제작의 매력을 이해하고, 시간과 기술의 완벽한 조화를 경험할 수 있습니다.

더 보기

Surfer Protocol: 개인 데이터 제어를 위한 오픈소스 프레임워크

2024-12-17

Surfer Protocol은 개인 데이터를 기반으로 애플리케이션을 내보내고 구축하기 위한 오픈소스 프레임워크입니다. 여러 플랫폼에 분산된 데이터 문제를 해결하기 위해 Surfer Protocol은 솔루션을 제공합니다. 다양한 앱과 서비스에서 데이터를 내보내기 위한 데스크톱 애플리케이션과 이 데이터를 사용하여 애플리케이션을 구축하기 위한 Python SDK로 구성됩니다. 사용자는 Surfer Protocol을 활용하여 개인화된 AI 모델을 만들거나, 대기업으로부터 데이터 제어권을 되찾거나, 디지털 레거시를 남길 수 있습니다.

더 보기

구글 검색: 질 저하로 인한 사용자 불만

2024-12-18

SEO 전문가 엘리 베레비는 구글 검색의 질이 크게 저하되어 광범위한 사용자 불만으로 이어지고 있다고 지적합니다. YouTube 댓글 등 비공식 채널의 사용자 피드백을 분석하여 검색 결과 질 저하, 과도한 광고, AI 개요에 의한 콘텐츠 도용에 대한 불만을 밝혀냈습니다. 구글의 전략은 사용자 경험보다 수익 창출을 우선시하는 것으로 보이며, 이는 사용자들이 대체 검색 엔진으로 이동하게 만들 수 있습니다. 이 글은 구글에 대한 경고이며, 개선이 이루어지지 않으면 심각한 결과를 초래할 수 있음을 시사합니다.

더 보기

적응 가능한 텍스트 에디터 'ad': Vim과 Acme의 장점 결합

2024-12-18

ad는 Vim과 Kakoune의 모달 편집 인터페이스와 Plan9의 Acme의 확장성 접근 방식을 결합한 새로운 텍스트 에디터입니다. ad는 텍스트를 실행할 수 있으며 다양한 텍스트 에디터 기능 구현을 실험하기 위한 테스트 환경으로 사용됩니다. 현재 ad는 충분히 안정적이며 기능이 완성되어 사용해 볼 수 있지만, 설명 문서가 부족하고 버그가 있을 수 있습니다. ad의 설계 철학은 Vim의 모달 편집, Emacs의 미니 버퍼, Acme의 편집 명령어 및 확장성을 결합하여 외부 도구 및 프로그램과의 직접적인 상호 작용을 지원하는 편리한 편집 환경을 구축하는 데 있습니다.

더 보기

Exbody2: 인간형 로봇의 고정밀 전신 동작 모방

2024-12-18

연구원들은 인간형 로봇이 사람과 같은 안정성으로 표현력 있는 동작을 수행할 수 있도록 하는 일반적인 전신 추적 프레임워크인 Exbody2를 개발했습니다. 강화 학습을 사용하여 시뮬레이션 환경에서 훈련된 후 실제 세계로 전환됩니다. Exbody2는 키포인트 추적과 속도 제어를 분리하고, 특권 교사 정책을 활용하여 정확한 모방 기술을 증류하여 달리기, 쪼그리고 앉기, 춤추기 등의 역동적인 움직임을 고정밀도로 재현합니다. 두 개의 휴머노이드 플랫폼에서의 실험은 최첨단 방법과 비교하여 우수한 성능을 보여주며, 인간형 로봇의 고급 전신 제어를 위한 실용적인 지침을 제공합니다.

더 보기

디자인 토큰: 확장 가능하고 일관성 있는 UI 아키텍처의 핵심

2024-12-18

이 글에서는 현대 UI 아키텍처에서 디자인 토큰의 역할을 살펴봅니다. 디자인 결정을 데이터로 표현함으로써 디자인 토큰은 단일 진실 소스 역할을 하며, 여러 플랫폼에서 자동 코드 생성을 가능하게 하여 더 빠른 업데이트와 향상된 디자인 일관성을 제공합니다. 디자인 토큰의 계층 구조(옵션 토큰, 결정 토큰, 구성 요소 토큰), 자동 배포 프로세스, 적절한 계층 수와 토큰 범위 선택 방법에 대해 자세히 설명합니다. 마지막으로 디자인 토큰의 적절한 사용 시나리오와 한계에 대해 논의하여 독자가 자신의 프로젝트에 적합한지 판단하는 데 도움이 되는 정보를 제공합니다.

더 보기

우리는 새턴 V를 건설했다: 달 탐사 로켓의 숨겨진 이야기

2024-12-18

이 기사는 인류를 달로 보낸 강력한 추진체인 새턴 V 로켓의 개발 과정을 설명합니다. 케네디 대통령의 야심찬 목표인 유인 달 착륙을 달성하기 위해 헌신적인 팀은 로켓 연료의 고유한 위험, 믿을 수 없을 정도로 강력한 엔진 개발, 그리고 전국 각지에서 온 부품의 정밀한 조립 등 수많은 어려움을 극복했습니다. 엔지니어와 기술자들의 생생한 증언을 통해 이 기사는 이 놀라운 업적 뒤에 숨겨진 엄청난 노력과 헌신을 생생하게 보여주며, 인적 비용과 기술 발전에 대한 흔들림 없는 추구를 강조합니다.

더 보기

Bruin: SQL과 Python으로 데이터 파이프라인 구축

2024-12-17

Bruin은 데이터 수집, SQL 및 Python을 사용한 데이터 변환, 데이터 품질 검사를 단일 프레임워크로 통합한 강력한 데이터 파이프라인 도구입니다. 주요 데이터 플랫폼과 호환되며 로컬 머신, EC2 인스턴스 또는 GitHub Actions에서 실행할 수 있습니다. 주요 기능으로는 데이터 수집, SQL 및 Python 변환, 데이터 품질 검사, Jinja 템플릿, 엔드투엔드 검증, 여러 환경 지원 등이 있습니다. 간단한 pipeline.yml 파일을 사용하여 파이프라인을 쉽게 정의할 수 있습니다.

더 보기

달: 매혹적인 우주 여정

2024-12-17

이 글은 달의 움직임, 지구-달 시스템, 그리고 태양계 내의 3체 문제의 복잡성을 매혹적으로 탐구하는 여정입니다. 대화형 시연을 사용하여 저자는 달의 궤도, 조수, 일식과 월식과 같은 현상을 설명하고, 달 표면의 특징 형성과 달의 밝기 이유를 밝힙니다. 중력과 각운동량 보존과 같은 개념을 다루면서 복잡한 천문 현상을 쉽게 설명하여 과학적으로 매력적이고 재미있는 읽을거리가 됩니다.

더 보기
기타 우주

국제 공조 작전 PowerOFF, DDoS 공격 플랫폼 27개 폐쇄

2024-12-17

유럽 형사 경찰 기구(유로폴) 주도로 15개국이 참여한 'PowerOFF' 작전에서 주요 DDoS 공격 플랫폼(일명 '부터' 및 '스트레서' 웹사이트) 27개가 폐쇄되었습니다. 이 플랫폼들은 사이버 범죄자와 해커들이 불법 트래픽으로 목표를 공격하여 웹사이트와 온라인 서비스를 마비시키는 데 사용되었습니다. 이 작전은 미국 법무부와 FBI 등 미국 정부 기관을 겨냥한 공격도 차단했습니다. 상당한 성과를 거두었지만, 전문가들은 범죄자들이 빠르게 적응할 것이라고 경고하며, DDoS 공격 대응에는 지속적인 노력이 필요하다고 강조합니다.

더 보기

오픈소스 요리용 향신료 데이터베이스 SpiceNice 출시

2024-12-17

SpiceNice는 요리용 향신료에 대한 포괄적인 데이터베이스를 제공하는 새로운 오픈소스 웹사이트입니다. 각 향신료에 대한 자세한 정보(식물 이름, 요리에서의 사용법, 원산지 등)와 해당 식물에 대한 정보를 제공합니다. Strapi(백엔드), PostgreSQL(데이터베이스), Astro(프런트엔드)를 사용하여 구축된 SpiceNice는 요리사, 생물학자, 농부, 향신료 애호가를 위한 중심적인 리소스가 되는 것을 목표로 합니다. 향후 계획에는 웹 API, 다국어 지원, 커뮤니티 포럼이 포함됩니다.

더 보기
개발 향신료

Langfuse: 오픈소스 LLM 엔지니어링 플랫폼으로 개발 간소화

2024-12-17

Langfuse는 대규모 언어 모델(LLM) 애플리케이션의 개발 및 배포를 간소화하도록 설계된 오픈소스 LLM 엔지니어링 플랫폼입니다. LLM 관찰 가능성, 메트릭, 평가, 프롬프트 관리, 플레이그라운드, 데이터 세트 등의 기능을 제공하며 LlamaIndex, Langchain, OpenAI SDK, LiteLLM 등의 도구와 원활하게 통합됩니다. 개발자는 Langfuse를 사용하여 LLM 성능을 모니터링하고, 프롬프트를 관리하고, 모델의 효율성을 평가하며, 궁극적으로 LLM 애플리케이션 개발을 가속화할 수 있습니다.

더 보기

Cerbos, CRDT를 활용한 협업 플레이그라운드 구축

2024-12-17

Cerbos는 복잡한 권한 부여 로직을 단순화하기 위해 "Playground"라는 협업 가능한 IDE 및 테스트 환경을 구축했습니다. 원활한 협업을 위해 충돌 없는 복제 데이터 유형(CRDT)을 사용합니다. CRDT는 분산 시스템의 충돌을 자동으로 해결합니다. 이 기사에서는 CRDT를 살펴보고, Yjs와 Automerge와 같은 일반적인 라이브러리를 비교하고, 사용자 정의 CRDT를 구축하는 과제와 가능성에 대해 논의합니다. Cerbos는 CRDT를 백엔드-프런트엔드(BFF) 아키텍처와 통합하고, WebSocket을 데이터 전송에, IndexedDB를 로컬 영속화에 사용하여 강력한 협업 플랫폼을 구축했습니다. 글로벌 협업 및 데이터 영속화의 과제도 설명합니다.

더 보기

BYOJS: 네이티브 JavaScript를 활용한 웹 개발

2024-12-17

BYOJS 프로젝트는 무거운 프레임워크에 의존하는 대신, 코어 JavaScript를 사용하여 웹 애플리케이션을 구축하는 것을 지지합니다. TypeScript와 같은 프레임워크와 언어가 인기가 있지만, BYOJS는 코어 JS 언어를 사용하여 효율적인 웹 애플리케이션을 구축하는 것은 잊혀진 기술이라고 주장합니다. 느슨하게 결합된 라이브러리를 긴밀하게 결합된 프레임워크 대신 사용할 것을 권장하며, 작업을 완료하는 데 필요한 최소한의 강력한 도구를 선택하고 간결한 코드를 우선시할 것을 주장합니다. 이 프로젝트는 간단한 키-값 저장소 API, 비동기 이벤트 에미터, 모달 래퍼 등 유용한 유틸리티를 제공합니다. 모든 코드는 MIT 라이선스로 제공됩니다.

더 보기

네트워크 프로토콜: 단순해 보이는 기적

2024-12-17

이 글은 신뢰할 수 있는 데이터 전송부터 물리 계층 하드웨어의 복잡성까지 네트워크 프로토콜 스택을 명확하게 설명하여 놀라울 정도로 복잡하고 독창적인 면모를 보여줍니다. 88.5MB 비디오 다운로드를 예로 들어 IP, TCP, 이더넷 등의 프로토콜이 네트워크 불안정성과 패킷 손실을 어떻게 극복하고 궁극적으로 신뢰할 수 있고 효율적인 데이터 전송을 달성하는지 설명합니다. 단순해 보이는 네트워크 작업 뒤에 숨겨진 복잡한 라우팅 알고리즘, 혼잡 제어, 패킷 재구성 기술과 다양한 프로토콜 간의 상호 의존성 및 제약 조건을 밝히고 이더넷 패킷 크기가 1500바이트로 설정된 이유 및 기타 역사적 문제에 대해서도 설명합니다.

더 보기
1 2 5 6 7 9 11 12 13 20 21