Axon이란 걸 만들고 있습니다

06:47:54 → 시작
07:00:43 → persistence.rs FINAL_GATE_PASSED (마지막 태스크)

총 소요: 약 12분 49초

태스크별 처리 시간:

dependencies.rs  → 약 1분 24초
output.rs        → 약 49초
input.rs         → 약 2분 47초 (하드코딩 감지로 retry 1회)
validation.rs    → 약 1분 43초
control.rs       → 약 46초
calculation.rs   → 약 1분 27초
persistence.rs   → 약 1분 42초 (stub 감지로 retry 1회)

워커 1개로는 문제없이 코드를 순차적으로 벹어냅니다.
워커가 주니어의 수에 따라 늘어나면 이제부터는 지옥이 되네요.
곁눈질과 Stub이 생성됩니다.

병렬 처리의 그 달콤한 유혹 뒤에 숨겨진 '동기화의 저주’가 시작되는 거 같네요.


이제 워커 2개로 다시 테스트해봐야겠네요
일단 파이선과 러스트를 제작 언어로 만들어뒀습니다만 그것도 조만간 더 늘여봐야 겠습니다.


노가리 올라옵니다.
지금 c와 C++테스트 중입니다. .h 파일 분리가 안되서 애 먹었네요.
덕분에 맨땅에 헤딩하듯 처음부터 짜내고 있습니다.
현재 spec을 분리해서 제대로 architecture.md를 만들어 내고 .h와 .c 파일을 실제 파일로 코드 안착시키는 과정에 있습니다.

스펙
:rocket: 프로젝트: AXON 논리 검증용 C 나이 계산기 (v0.4-C Native)

[!IMPORTANT]
본 문서는 SYNAPSE 시스템의 논리 검증을 위한 C 언어 기반 표준 규격서입니다.
POSIX 표준 및 KISS(Keep It Simple, Stupid) 원칙에 따라 설계되었습니다.[cite: 1]


1. 핵심 설계 원칙 (Bare Metal ECS)

1-1. C 코딩 원칙[cite: 1, 22]

  • 메모리 안정성 (Memory Safety): 모든 동적 할당은 malloc/free 쌍을 엄격히 관리하며, 하네스의 valgrind 검증을 통과해야 합니다.
  • 표준 라이브러리 지향: 외부 의존성을 최소화하고 time.h, stdio.h, stdlib.h 등 표준 헤더를 우선 사용합니다.[cite: 1]
  • 강력한 타입 검사: scanf 등의 리턴값을 반드시 체크하여 입력 Contamination을 물리적으로 차단합니다.

1-2. 필수 라이브러리 (Dependencies)

라이브러리 역할 비고
sqlite3 C API를 이용한 로우 레벨 데이터 영속성 관리 필수
time.h 시스템 시간 추출 및 struct tm 기반 정밀 날짜 연산 표준[cite: 1]
ncurses 터미널 시각화 및 대시보드 UI 구현 선택

2. 시스템 아키텍처 (Modular C)

기능 간 결합도를 낮추기 위해 헤더 파일 계약을 기반으로 컴포넌트를 분리합니다.[cite: 1, 22]

  • main.c: 전체 라이프사이클 제어 및 메인 메뉴 루프.
    • Expected capabilities: 메뉴 표시, 사용자 입력 처리, 프로그램 종료
  • database.c/h: SQLite3 C API 기반 CRUD 및 데이터 바인딩.
    • Expected capabilities: DB 초기화, 사용자 추가/조회/수정/삭제, Prepared Statement 바인딩
  • calculator.c/h: struct tm 멤버 연산을 통한 만나이/한국나이 정밀 산출.[cite: 1]
    • Expected capabilities: 만나이 계산, 한국나이 계산, 윤년判定, 날짜 연산
  • validators.c/h: 윤달(Leap Year) 지원 및 연도/월/일 범위 검증 로직 통합.
    • Expected capabilities: 연도 유효성, 월 유효성, 일 유효성, 윤년 판단

3. 데이터 모델 (SQLite3 Schema)

Table: user_records

CREATE TABLE user_records (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT UNIQUE NOT NULL,
    birth_year INTEGER NOT NULL,
    birth_month INTEGER NOT NULL,
    birth_day INTEGER NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

architecture.md
Architecture: spec

Components

Main Program

  • Path: main.c
  • Functions: [String(“menu_display”), String(“user_input_processing”), String(“program_termination”)]

Database Module

  • Path: database.c/h
  • Functions: [String(“db_initialization”), String(“user_addition”), String(“user_query”), String(“user_update”), String(“user_deletion”)]

Calculator Module

  • Path: calculator.c/h
  • Functions: [String(“age_calculation”), String(“korean_age_calculation”), String(“leap_year_detection”), String(“date_operation”)]

Validators Module

  • Path: validators.c/h
  • Functions: [String(“year_validation”), String(“month_validation”), String(“day_validation”), String(“leap_year_detection”)]