Incant: 코드에 마법 주문 추가하기

2025-06-18
Incant: 코드에 마법 주문 추가하기

Incant는 개발자가 언어 모델 호출을 안전하게 통합할 수 있도록 하는 새로운 라이브러리입니다. `createSelector` 및 `createFilter`와 같은 기본 함수를 제공하여 최댓값 선택이나 남성 이름 필터링과 같은 배열 연산을 수행할 수 있습니다. Incant는 환경 변수에서 API 키를 읽고, 구성이 간편하며, 형식 안전성을 보장하여 환각을 방지합니다. 하지만 모든 입력 데이터는 상위 추론 제공업체로 전송되므로 개인 정보나 민감한 정보를 보내는 것은 피해야 합니다.

더 보기
개발

Skywater 130nm SerDes 설계: 고속 통신 구현

2025-06-18
Skywater 130nm SerDes 설계: 고속 통신 구현

이 프로젝트는 고속 통신을 위해 설계된 고속 직렬화/역직렬화(SerDes) 회로에 대한 세부 정보를 설명합니다. Verilog HDL을 사용하여 구현되었고 Skywater OpenPDK 130nm 프로세스에서 OpenLane을 사용하여 합성된 SerDes는 병렬 데이터를 전송을 위한 직렬 스트림으로 변환하고 수신측에서 다시 병렬 데이터로 변환합니다. 설계에는 송신기(CMOS 인버터 체인을 드라이버로 사용), 수신기(저항 피드백 인버터와 CMOS 인버터를 감지 및 증폭 요소로 사용), 데이터 샘플링을 위한 D 플립플롭, 클록 복구를 위한 과도 샘플링 CDR이 포함됩니다. 모든 모듈의 GDS, SPICE, 넷리스트 파일이 제공됩니다.

더 보기
하드웨어 고속 통신

AI 코딩 어시스턴트용 유니버설 규칙 템플릿: 워크플로 향상

2025-06-18
AI 코딩 어시스턴트용 유니버설 규칙 템플릿: 워크플로 향상

다양한 코딩 어시스턴트에서 AI 동작이 일관성 없어서 어려움을 겪고 계십니까? 이 템플릿은 AI 페어 프로그래밍 경험을 향상시키기 위한 강력하고 크로스 플랫폼 프레임워크를 제공합니다. Cursor, CLINE, RooCode, Windsurf, GitHub Copilot 등의 도구에서 확립된 소프트웨어 엔지니어링 원칙과 구조화된 문서를 활용하여 AI의 일관된 동작, 프로젝트에 대한 심층적인 이해, 최적의 워크플로를 보장합니다. 단순한 프로토타입을 넘어 프로젝트를 진정으로 이해하는 AI 파트너를 통해 정교한 애플리케이션을 구축해 보세요.

더 보기
개발

lstr: 초고속 Rust 기반 디렉토리 트리 뷰어

2025-06-18
lstr: 초고속 Rust 기반 디렉토리 트리 뷰어

lstr은 Rust로 작성된 매우 빠르고 최소한의 디렉토리 트리 뷰어입니다. `tree` 명령어에서 영감을 받아 강력한 대화형 모드와 클래식 뷰를 제공합니다. 병렬 디렉토리 스캔을 통해 속도를 극대화하고, 깔끔하고 간결한 인터페이스를 갖추고 있으며, 파일 아이콘, 권한, 크기, Git 상태를 표시하는 옵션을 제공합니다. `.gitignore` 통합, 깊이 제어, 퍼지 검색(fzf 사용)도 지원합니다. 쉘에 시각적인 `cd` 명령어로 통합할 수도 있습니다. 클래식 트리 뷰나 대화형 TUI 중 어떤 것을 선택하든, lstr의 높은 효율성과 깔끔한 디자인은 파일 관리 워크플로우를 향상시킬 것입니다.

더 보기

Go를 위한 초고속 병렬 해시 맵 라이브러리: cmapv2

2025-06-17
Go를 위한 초고속 병렬 해시 맵 라이브러리: cmapv2

이 문서에서는 Go를 위한 고성능 병렬 해시 맵 라이브러리인 cmapv2를 소개합니다. MurmurHash 알고리즘을 사용하며, 일반 맵과 분할 맵 두 가지 유형을 제공하여 다양한 병렬 처리 요구 사항을 충족합니다. 예제 코드에서는 키-값 쌍의 초기화, 삽입, 검색, 삭제 방법을 보여줍니다. 또한, `go test`와 `pprof`를 사용한 CPU 및 메모리 프로파일링을 통한 성능 테스트에 대해서도 설명합니다.

더 보기

Codecov의 필수 AI 기능이 사용자 우려 야기

2025-06-17
Codecov의 필수 AI 기능이 사용자 우려 야기

Codecov의 새로운 AI 기능이 비활성화 옵션이 없다는 이유로 사용자들의 우려를 불러일으키고 있습니다. 사용자들은 Codecov가 허락 없이 코드를 AI 학습에 사용하거나 저작권 침해 코드를 삽입할 것을 우려하고 있습니다. 따라서 모든 조직에서 AI 기능을 영구적이고 명확하게 비활성화하는 방법과 코드 커버리지 분석에 AI가 사용되지 않는다는 보장을 요구하고 있습니다.

더 보기
개발

faynoSync: 클라이언트 애플리케이션 자동 업데이트 API 서버

2025-06-17
faynoSync: 클라이언트 애플리케이션 자동 업데이트 API 서버

faynoSync는 클라이언트 애플리케이션을 자동으로 업데이트하기 위한 Go 기반 API 서버입니다. 애플리케이션을 S3에 업로드하고 버전 번호를 설정하면 클라이언트는 업데이트를 확인합니다. 새로운 버전이 있으면 서버는 업데이트 링크를 반환하고 클라이언트에 경고가 표시됩니다. 백그라운드 업데이트와 온디맨드 업데이트를 지원하며, 완벽한 문서, 프런트엔드 대시보드, 샘플 클라이언트 애플리케이션을 제공합니다. 배포에는 환경 변수 설정이 필요하지만 Docker를 사용하여 간소화되며, 광범위한 단위 테스트를 통해 기능이 보장됩니다.

더 보기

Canine: 간편한 Kubernetes 클러스터 배포 플랫폼

2025-06-16
Canine: 간편한 Kubernetes 클러스터 배포 플랫폼

Canine은 Kubernetes 클러스터를 위한 직관적이고 사용하기 쉬운 배포 플랫폼입니다. Docker와 Docker Compose를 설치하면 단일 명령어를 실행하거나 Git 저장소를 복제하여 Docker Compose를 실행하는 것만으로 간편하게 배포할 수 있습니다. 웹 UI 포트를 쉽게 사용자 지정하고 GitHub 통합, 역할 기반 액세스 제어, 실시간 메트릭, 낮은 유지 관리 등의 클라우드 기반 기능을 활용하여 팀 협업을 간소화할 수 있습니다.

더 보기
개발

SSH를 통해 AI와 채팅하기: Docker 기반 AI 채팅 서버

2025-06-16
SSH를 통해 AI와 채팅하기: Docker 기반 AI 채팅 서버

이 프로젝트는 SSH를 통해 접근 가능한 Docker 기반 AI 채팅 서버를 제공합니다. 여러 AI 모델을 지원하며, 환경 설정, Docker Compose 파일, 종속성 설치 등 자세한 배포 지침을 제공합니다. 사용자는 모델, 속도 제한, 블랙리스트, 화이트리스트 등의 매개변수를 사용자 지정할 수 있습니다. 이 프로젝트에는 다양한 운영 체제(macOS, Linux, Windows)에 대한 배포 제안도 포함되어 있으며, V.PS의 서버 후원에 감사드립니다.

더 보기
개발

Socket.io의 비동기 함수 호출: socket-call 소개

2025-06-16
Socket.io의 비동기 함수 호출: socket-call 소개

socket-call은 Socket.io 기반의 작은 라이브러리로, 일반적인 비동기 TypeScript 함수처럼 이벤트를 호출할 수 있습니다. Socket.io 사용을 간소화하여 더욱 깔끔하고 직관적인 프로그래밍 경험을 제공합니다. 코드 예시는 서버측과 클라이언트측 구현을 보여주며, 로그인 기능과 서버에서 클라이언트로 메시지를 전송하는 기능을 시연합니다.

더 보기
개발

Zeekstd: Rust로 구현된 탐색 가능한 Zstandard

2025-06-16
Zeekstd: Rust로 구현된 탐색 가능한 Zstandard

Zeekstd는 탐색 가능한 Zstandard 형식을 구현한 Rust 라이브러리입니다. 압축 데이터를 독립적인 프레임으로 분할하여 효율적인 임의 접근을 가능하게 합니다. 원래 사양과 완전히 호환되며, Zeekstd는 개선 사항을 제공하고 전체 파일 또는 특정 프레임의 압축 해제를 가능하게 하는 인코더와 디코더 기능을 포함합니다. 명령줄 도구도 제공됩니다.

더 보기

오픈소스 하이퍼스펙트럴 유화 및 회화 데이터셋: 회화 기법 규명

2025-06-16
오픈소스 하이퍼스펙트럴 유화 및 회화 데이터셋: 회화 기법 규명

이 오픈소스 프로젝트는 하이퍼스펙트럴 스캔 데이터, 처리 코드 및 재구성된 안료 샘플을 포함하는 대규모 데이터셋을 제공합니다. 이 데이터셋은 안료 매핑 및 스펙트럼 업샘플링과 같은 미술사 연구 및 컴퓨터 그래픽에 사용하도록 설계되었습니다. 9점의 회화에 대한 하이퍼스펙트럴 스캔과 수많은 안료 샘플의 반사율 측정값이 포함되어 있습니다. Kubelka-Munk 모델을 사용하여 스펙트럴 데이터를 처리하고 안료를 혼합 및 레이어링하는 Python 패키지 `painting_tools`도 제공됩니다. 연구자들은 이 데이터셋을 사용하여 회화의 재료 및 기법을 연구하고 새로운 이미지 처리 및 분석 방법을 개발할 수 있습니다.

더 보기

Twin: 텍스트 모드 창 환경

2025-06-15
Twin: 텍스트 모드 창 환경

Twin은 마우스, 창 관리자, 터미널 에뮬레이터, 네트워크 클라이언트 및 실시간 모드 디스플레이 연결/분리 기능을 지원하는 텍스트 기반 창 환경입니다. 일반 텍스트 터미널, X11, 자체 등 다양한 디스플레이 유형을 지원합니다. 현재 여러 아키텍처에서 Linux, macOS, FreeBSD에서 테스트되었습니다. GPL 및 LGPL 라이선스의 이 오픈 소스 프로젝트는 포괄적인 자습서와 개발자 문서를 제공하며 GitHub에서 사용할 수 있습니다.

더 보기

Seastar: 빠르고 확장 가능한 다국어 빌드 시스템

2025-06-15
Seastar: 빠르고 확장 가능한 다국어 빌드 시스템

Seastar는 현재 C와 C++을 지원하며, 향후 Rust와 Zig도 지원할 예정인 빠르고 확장 가능한 빌드 시스템입니다. 프로그램 생성, 프로토타이핑, 반복 작업을 쉽게 하도록 설계되었으며, Rust의 Cargo와 같은 사용 편의성을 목표로 하면서 여러 언어 간의 원활한 컴파일을 제공합니다. Seastar는 간단하게 빌드 및 실행할 수 있으며, Cargo와 Rust를 설치하고, 저장소를 복제하고, 제공된 명령어를 실행하기만 하면 됩니다. 현재 초기 단계이므로 프로덕션 환경에서의 사용은 권장하지 않습니다.

더 보기
개발

docker-compose처럼 Apple Container 관리하기

2025-06-15
docker-compose처럼 Apple Container 관리하기

`container-compose`라는 CLI 도구를 사용하면 docker-compose와 유사한 설정 파일로 Apple Container를 사용할 수 있습니다. 현재 알파 버전이므로 버그나 누락된 기능이 있을 수 있습니다. Homebrew를 통해 설치(`brew tap noghartt/container-compose https://github.com/noghartt/container-compose.git; brew install noghartt/container-compose/container-compose`)하거나 릴리스 페이지에서 미리 빌드된 바이너리를 다운로드할 수 있습니다.

더 보기
개발

WT32-ETH01: 저렴한 ESP32 이더넷 개발 보드

2025-06-15
WT32-ETH01: 저렴한 ESP32 이더넷 개발 보드

WT32-ETH01은 이더넷, Wi-Fi, GPIO 핀을 갖춘 소형이면서 저렴한 ESP32 개발 보드입니다. 저렴한 가격과 이더넷을 지원하는 ESP32 보드의 부족으로 신뢰할 수 있는 유선 네트워크 연결이 필요한 프로젝트에 적합합니다. 제조업체 지원은 제한적이지만 Arduino IDE 및 ESP-IDF와 같은 일반적인 프로그래밍 환경과의 사용 편의성 및 호환성으로 IoT 및 임베디드 시스템 개발에 이상적입니다. 그러나 일부 핀의 제한 사항에 유의하고 전원 전압 선택 시 주의해야 합니다.

더 보기
하드웨어

MEOW: AI 워크플로우에 최적화된 스테가노그래피 이미지 형식

2025-06-15
MEOW: AI 워크플로우에 최적화된 스테가노그래피 이미지 형식

MEOW는 Python 기반 이미지 파일 형식으로, AI 메타데이터를 PNG 이미지에 포함하여 특수 뷰어 없이도 모든 이미지 뷰어에서 열 수 있습니다. LSB 스테가노그래피를 사용하여 메타데이터를 숨기므로 파일 작업 후에도 데이터 무결성을 유지합니다. AI 워크플로우 효율 향상을 위해 설계된 MEOW는 미리 계산된 AI 특징, 어텐션 맵, 바운딩 박스 등을 제공하여 머신러닝 속도를 높이고 LLM의 이미지 이해도를 향상시킵니다. 크로스 플랫폼 호환이 가능하며 변환 및 보기를 위한 명령줄 도구와 GUI 애플리케이션을 제공합니다.

더 보기
AI

최소한의 PyTorch 확률적 확산 모델: 2D 데이터셋 실험

2025-06-15
최소한의 PyTorch 확률적 확산 모델: 2D 데이터셋 실험

이 글에서는 2D 데이터셋을 위한 확률적 확산 모델의 최소한의 PyTorch 구현에 대해 설명합니다. 저자는 학습률, 모델 크기, 확산 프로세스 길이, 시간 단계 인코딩과 같은 하이퍼파라미터를 다양한 실험을 통해 탐구했습니다. 결과적으로 적절한 학습률이 매우 중요하며, 더 긴 확산 프로세스를 통해 더 완전한 샘플이 생성되고, 모델 용량이 주요 병목 현상이 아님을 보여주었습니다. 입력 인코딩에 사인파 임베딩을 사용하면 저차원 영역에서 고주파수 함수를 학습하기 쉽습니다.

더 보기

Text-to-LoRA: 즉시 Transformer 적응

2025-06-15
Text-to-LoRA: 즉시 Transformer 적응

Text-to-LoRA(T2L)는 간단한 텍스트 설명으로 특정 작업에 맞는 LoRA 모델을 빠르게 생성할 수 있는 혁신적인 모델 적응 기술입니다. 이 프로젝트는 Hugging Face 기반 웹 UI와 명령줄 인터페이스를 포함한 자세한 설치 및 사용 방법 가이드를 제공합니다. 데모를 실행하고 사전 훈련된 체크포인트를 다운로드하려면 최소 16GB의 GPU가 필요합니다. T2L은 Mistral, Llama, Gemma 등 다양한 기본 모델을 지원하며 여러 벤치마크 테스트를 통해 뛰어난 성능을 보여줍니다. 이 프로젝트에는 생성된 LoRA를 평가하기 위한 스크립트와 비동기 평가를 위한 감시 프로그램도 포함되어 있습니다.

더 보기

ICONIC: GitHub README를 위한 세련된 스킬 아이콘 라이브러리

2025-06-15
ICONIC: GitHub README를 위한 세련된 스킬 아이콘 라이브러리

ICONIC은 GitHub README, 포트폴리오, 이력서를 위해 디자인된 세련된 버블 형태의 스킬 아이콘 라이브러리입니다. 시각적으로 명확하고 아름다운 버블 아이콘, 밝고 어두운 두 가지 테마 변형, Markdown/HTML에 손쉬운 임베딩 기능을 제공합니다. 또한 HTML 미리보기 API(Django 백엔드)와 다운로드 가능한 SVG를 제공하여 스킬을 간편하게 보여줄 수 있습니다.

더 보기

SSHTron: SSH를 통해 플레이하는 멀티플레이어 라이트사이클 게임

2025-06-14
SSHTron: SSH를 통해 플레이하는 멀티플레이어 라이트사이클 게임

SSHTron은 SSH를 통해 플레이할 수 있는 멀티플레이어 라이트사이클 게임입니다. sshtron.zachlatta.com에 연결하여 플레이를 시작하세요. WASD 키 또는 vim 키 바인딩을 사용하여 사이클을 조작합니다. 7가지 색상 중에서 선택할 수 있습니다. BrickHack 2에서 약 20시간 만에 개발되었으므로 코드 품질은 개선의 여지가 있습니다. 이 프로젝트는 오픈소스이며 Docker 및 Raspberry Pi 배포를 지원합니다. 보안 경고에서는 SSH 클라이언트와 관련된 잠재적인 취약성(CVE-2016-0777)이 지적되었으므로 클라이언트 업데이트를 권장합니다.

더 보기
게임

miniDiffusion: PyTorch로 구현된 최소한의 Stable Diffusion 3.5

2025-06-14
miniDiffusion: PyTorch로 구현된 최소한의 Stable Diffusion 3.5

miniDiffusion은 최소한의 종속성을 가진 순수 PyTorch를 사용하여 Stable Diffusion 3.5 모델을 간소화하여 재구현한 것입니다. 교육, 실험, 해킹 목적으로 설계되었으며, 간결한 코드베이스(약 2800줄)에는 VAE, DiT, 학습, 데이터셋 스크립트가 포함되어 있습니다. 이 프로젝트는 학습 및 추론 모두를 위한 스크립트를 제공합니다. 사용자는 종속성을 설치하고 사전 훈련된 모델의 가중치를 다운로드해야 합니다. 이 오픈소스 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다.

더 보기
AI

Green Tea GC: Go 성능 향상을 위한 메모리 인식 접근 방식

2025-06-14
Green Tea GC: Go 성능 향상을 위한 메모리 인식 접근 방식

Go 팀은 멀티코어 시스템 및 비균일 메모리 아키텍처에서 기존 가비지 컬렉션 알고리즘의 성능 병목 현상을 해결하도록 설계된 실험적인 가비지 컬렉터인 Green Tea를 개발하고 있습니다. Green Tea는 개별 객체 대신 연속적인 메모리 블록을 스캔하여 공간적 및 시간적 지역성을 개선하고 가비지 컬렉션 CPU 오버헤드를 크게 줄입니다. 초기 평가 결과 일부 GC 집약적 워크로드에서 GC CPU 비용이 10~50% 감소하는 것으로 나타났습니다. 향후 작업에는 SIMD 가속 및 집중기 네트워크 조사가 포함되며 성능을 더욱 향상시키는 것을 목표로 합니다.

더 보기
개발

FileDB: Zig로 구현된 Bitcask 기반 키-값 저장소

2025-06-14
FileDB: Zig로 구현된 Bitcask 기반 키-값 저장소

FileDB는 Riak의 Bitcask 논문에서 영감을 받은 키-값 저장소로, Zig 언어로 구현되었습니다. 로그 구조 해시 테이블을 메타데이터에 사용하고, 디스크 파일에 레코드를 추가하여 높은 처리량을 달성합니다. 정기적인 압축 및 동기화를 통해 데이터의 내구성을 보장합니다. Redis 호환 클라이언트의 벤치마크 테스트 결과, 읽기 속도는 초당 10만 개의 요청을 넘었으며, 쓰기 성능 또한 매우 뛰어났습니다.

더 보기

Bloxi: Simulink용 AI 조종사

2025-06-13
Bloxi: Simulink용 AI 조종사

임페리얼 컬리지 런던 항공우주공학과 2학년 학생이 Bloxi라는 AI 조종사를 개발했습니다. 이는 일반적인 영어 프롬프트를 작동하는 Simulink 제어 시스템 모델로 변환합니다. 다중 모드 LLM을 활용한 Bloxi는 모델을 단계별로 구축하여 실시간 디버깅과 더 직관적인 워크플로우를 제공합니다. 학생은 코드를 공개했습니다.

더 보기
개발 모델 구축

qrkey: QR 코드를 사용한 오프라인 개인 키 백업용 명령줄 도구

2025-06-13
qrkey: QR 코드를 사용한 오프라인 개인 키 백업용 명령줄 도구

qrkey는 오프라인 개인 키 백업을 위해 파일에서 QR 코드를 생성하고 복구하는 명령줄 도구입니다. 큰 파일은 여러 QR 코드로 분할하여 처리하며, 복구 및 검증을 용이하게 하는 메타데이터를 포함합니다. macOS에서는 Homebrew, Docker를 사용하거나 다른 시스템의 경우 릴리스 페이지를 참조하십시오. 생성: `qrkey generate --in --out file.pdf`; 복구: `qrkey recover --in `.

더 보기

Go로 구현된 BitTorrent 클라이언트: 개발 중

2025-06-13
Go로 구현된 BitTorrent 클라이언트: 개발 중

이 프로젝트는 Go로 BitTorrent 클라이언트를 구현하며, torrent 파일 파싱, 피어 검색, 파일 다운로드를 처리합니다. Bencode 인코딩/디코딩, torrent 파일 처리, 피어 통신, 단일 및 다중 파일 torrent 다운로드 관리 등 핵심 기능이 이미 구현되었습니다. 향후 개발에는 마그넷 링크, 메타데이터 교환 프로토콜, DHT 지원이 포함될 것입니다.

더 보기
개발

해커 뉴스: GameCube 키보드 컨트롤러로 Animal Crossing 강화

2025-06-12
해커 뉴스: GameCube 키보드 컨트롤러로 Animal Crossing 강화

한 개발자가 GameCube 키보드 컨트롤러와 닌텐도의 Animal Crossing을 결합한 놀라운 프로젝트를 만들었습니다. 이 프로젝트에는 게임 내에서 엄청나게 빠른 타이핑, 사용자 지정 이미지 및 비디오 가져오기, 심지어 Snake 게임 플레이까지 가능하게 하는 도구가 포함되어 있습니다! 3D 프린팅으로 제작된 사용자 지정 키캡, Raspberry Pi Pico 및 일부 전자 부품이 필요합니다. 이 프로젝트는 오픈 소스이며 코드는 GitHub에서 공개됩니다.

더 보기
게임

McWig: Go로 작성된 Vim 유사 텍스트 에디터 - 신속한 실험 프로젝트

2025-06-12
McWig: Go로 작성된 Vim 유사 텍스트 에디터 - 신속한 실험 프로젝트

McWig는 Go로 작성된 모달 방식의 Vim 유사 텍스트 에디터로, 작성자가 매일 사용하고 있습니다. 현재 .go 파일만 지원하며 초기 개발 단계이므로 파일 손상 위험이 있습니다. LSP 자동 완성, goto definition, 호버 정보, Tree-sitter 지원, 색상 테마(Helix 텍스트 에디터에서 차용) 등의 기능을 갖추고 있지만 버그도 많습니다. 작성자는 이를 안정적이고 모든 기능을 갖춘 Vim 유사 에디터로 발전시킬 계획입니다.

더 보기
개발

QEMU: 강력한 오픈소스 가상화 도구

2025-06-12
QEMU: 강력한 오픈소스 가상화 도구

QEMU는 범용적인 오픈소스 머신 에뮬레이터 및 가상화 도구입니다. 하드웨어 가상화 지원 없이 소프트웨어 내에서 완벽한 머신을 에뮬레이트할 수 있으며, 동적 변환을 통해 뛰어난 성능을 제공합니다. QEMU는 Xen 및 KVM 하이퍼바이저와 통합되어 에뮬레이트된 하드웨어를 제공하는 동시에 하이퍼바이저가 CPU를 관리하도록 하여 네이티브에 가까운 성능을 제공합니다. 서로 다른 아키텍처의 머신에서 서로 다른 아키텍처의 운영 체제를 실행하거나, 서로 다른 ABI에 대해 컴파일된 바이너리를 실행하기 위한 사용자 공간 API 가상화를 제공합니다. QEMU는 안정적인 명령줄 인터페이스와 모니터 API를 갖추고 있으며, libvirt, oVirt, OpenStack, virt-manager 등의 도구와 통합되며 GPLv2 라이선스 하에 제공됩니다. 포괄적인 문서와 활발한 커뮤니티가 사용 편의성과 지원을 보장합니다.

더 보기
개발
1 2 10 11 12 14 16 17 18 50 51