Tip/Android2025. 5. 8. 01:03

ULTRA 워드 앱은 어떠한 개인 정보도 수집하지 않습니다. 
ULTRA Word does not collect any personal information.

다운로드 링크:

https://play.google.com/store/apps/details?id=com.chobocho.wordmaster&pcampaignid=web_share

 

UltraWord - Google Play 앱

초 간단 단어장 입니다

play.google.com

 

Posted by chobocho
Coding/JavsScript 삽질기2025. 3. 18. 01:07

오래전에 친구의 PDA로 열심히 하였던 Crazy Daisy Game의 클론을 만들어 보았다.

플레이하기: http://chobocho.com/game/daisy/index.html

 

CrazyDaisy Game

Version V0.2

chobocho.com

 

 

어떻게 만들었는가?

1. 게임은 아래와 같이 서로 인접한 잎이 같은 색인 경우 없어 지는 것이 기본 룰이다.

그래서 먼저 아래와 같이 서로 인접한 잎을 숫자로 표시하였다.

 

2. 그리고 실제 매번 체크해야 하는 인접 꽃잎의 정보는 아래와 같이 테이블을 만들었다.

[ 꽃번호 * 10 + 꽃잎번호, 인접 꽃번호 * 10 + 꽃잎번호]의 쌍으로 만들었고,

가운데 있는 꽃을 0번으로, 3시 방향의 꽃을 1로 시계 방향으로 돌아가면서 번호가 증가 한다고 가정 하였다.

그리고 아래 코드를 이용하여 현재 상태에서 마주 하는 꽃잎이 있는 지를 체크 하였다.

자세한 내용은 아래 전체 소스 코드를 참고 하면 됩니다. ^^

전체 소스코드: https://github.com/chobocho/daisygame

 

GitHub - chobocho/daisygame: Daisy Game

Daisy Game . Contribute to chobocho/daisygame development by creating an account on GitHub.

github.com

 

Posted by chobocho
Coding/Python 삽질기2025. 2. 27. 19:31

JetBrain AI Assistant를 이용하여 근무시간표를 짜주는 스크립트를 만들어 보았다.

1차 도전 ChatGPT 4o로 모델을 설정하고 아래와 같이 요청했다.

아래 조건에 해당하는 엑셀 파일을 생성하는 파이썬 스크립트를 만들어 주세요.
1. xx년 yy월을 입력 받아서 해당 연월의 달력을 만들어주세요
2. 일요일은 빨간색 글자로 표시해 주세요.
3. 토요일은 파란색 글자로 표시해 주세요.
4. 휴일은 빨간색 글자로 표시해 주세요.
5. 휴일을 설정할 수 있는 holiday 필드를 만들어 주세요
6. 근무자 리스트를 입력 할 수 있는 worker 리스트 변수를 만들어 주세요
7. 근무자 리스트에는 아래와 같은 형식의 딕셔너리 자료구조를 이용해서 근무자의 제한 조건을 받게 해주세요
   {최대 근무일수: N, 휴일근무가능: Yes or No, 일요일 근무 가능: Yes or No, 토요일 근무 가능: Yes or No, 근무 불가 날짜 리스트:[]}
8. 각 날짜 아래에는 근무자 이름이 표시되게 해주세요.

작성된 코드를 실행하니 뭐가 하나씩 부족했다.

몇번을 버그리포팅을 하다가, ChatGPT o1으로 모델을 변경하고, 다시 작성을 요청했다.

import calendar
from itertools import cycle
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment


def create_calendar(year, month, holidays, workers):
    # '일요일'을 주의 시작으로 설정
    calendar.setfirstweekday(calendar.SUNDAY)
    # monthdayscalendar: 한 달을 주 단위로 나눈 2차원 리스트 반환
    # 예: [[0, 0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11, 12], ...]
    #    -> [일, 월, 화, 수, 목, 금, 토]
    month_matrix = calendar.monthcalendar(year, month)

    # 워크북 및 워크시트 생성
    wb = Workbook()
    ws = wb.active
    ws.title = f"{year}년 {month}월"

    # 헤더 (일~토)
    headers = ["일", "월", "화", "수", "목", "금", "토"]
    for col, header in enumerate(headers, start=1):
        cell = ws.cell(row=1, column=col)
        cell.value = header
        cell.font = Font(bold=True)
        cell.alignment = Alignment(horizontal="center")

    # 색상 스타일
    red_font = Font(color="FF0000")  # 빨간색 → 일요일 / 공휴일
    blue_font = Font(color="0000FF")  # 파란색 → 토요일

    # 근무자 순환 (cycle)
    worker_cycle = cycle(workers)

    # 달력에 날짜 및 근무자 표시
    # month_matrix는 각 주(week)에 대해 일~토(7개) 날짜를 리스트로 갖고 있음
    # 일자(day_num)가 0이면 그 주에 해당 요일은 비어있음을 의미
    # 주마다 2줄(첫 줄: 날짜, 둘째: 근무자)
    start_row = 2
    for week_index, week in enumerate(month_matrix):
        # 한 주의 날짜들을 표시할 행(week_row) 계산
        # 첫 번째 주 -> start_row=2, 두 번째 주 -> 4, 세 번째 주 -> 6, ...
        week_row = start_row + (week_index * 2)

        for col_index, day_num in enumerate(week, start=1):
            if day_num == 0:
                # 0이면 해당 칸이 비어있는 날이므로 건너뜀
                continue

            # 날짜 표시 (week_row 행, col_index 열)
            day_cell = ws.cell(row=week_row, column=col_index)
            day_cell.value = day_num
            day_cell.alignment = Alignment(horizontal="center")

            # 요일별 색상 설정
            if col_index == 1:  # 일요일 (컬럼 1)
                day_cell.font = red_font
            elif col_index == 7:  # 토요일 (컬럼 7)
                day_cell.font = blue_font
            # 공휴일(holidays)에 해당한다면 빨간색 추가 적용
            if day_num in holidays:
                day_cell.font = red_font

            # 근무자 표시 (날짜 아래 한 줄)
            worker_cell = ws.cell(row=week_row + 1, column=col_index)
            worker = next(worker_cycle, None)
            worker_cell.value = worker["이름"] if worker else ""
            worker_cell.alignment = Alignment(horizontal="center")

    # 엑셀 파일 저장
    file_name = f"{year}_{month}_calendar.xlsx"
    wb.save(file_name)
    print(f"{file_name} 파일이 생성되었습니다!\n")


# 테스트용 코드
if __name__ == "__main__":
    year = 2023
    month = 11
    holidays = [5, 15, 25]
    workers = [
        {"이름": "홍길동", "최대 근무일수": 5, "휴일근무가능": "Yes", "일요일 근무 가능": "No", "토요일 근무 가능": "Yes", "근무 불가 날짜 리스트": [5]},
        {"이름": "김철수", "최대 근무일수": 7, "휴일근무가능": "No", "일요일 근무 가능": "Yes", "토요일 근무 가능": "No", "근무 불가 날짜 리스트": [12]},
        {"이름": "박영희", "최대 근무일수": 6, "휴일근무가능": "Yes", "일요일 근무 가능": "Yes", "토요일 근무 가능": "Yes", "근무 불가 날짜 리스트": [20]},
    ]

    create_calendar(year, month, holidays, workers)

몇 번의 추가 질문 끝에 위와 같은 스크립트를 얻을 수 있었다.

실행 결과

결론적으로, AI를 잘 쓰기 위해서는 개인의 수련이 필요한 것 같다.

'Coding > Python 삽질기' 카테고리의 다른 글

[Python] Jupyter notebook 팁  (0) 2024.05.11
[SQL] BEGIN TRANSACTION  (0) 2024.03.07
Cardioid 그리기  (0) 2024.02.17
Posted by chobocho
Tip/Linux2025. 1. 18. 20:48
Posted by chobocho
My Life/Book Story2024. 11. 13. 22:21

며칠 전 중고서점에서 < Professional 소프트웨어 개발>을 업어왔습니다.

https://www.yes24.com/Product/Goods/403672

 

Professional 소프트웨어 개발 - 예스24

소프트웨어 공학 전문가와 경제적인 고품질 소프트웨어 생산을 뒷받침하는소프트웨어 기법에 관한 책이다. 소프트웨어공학을 시작하는 사람의 관점에서 볼 때 다양한 스타팅 포인트를 제공하

www.yes24.com

 

무려 2003년에 국내에 번역본이 나온 책인데, 20년이 지나서 다시 읽어 보니 느낌이 새로워서 기록 겸 글을 남깁니다.

저자는 그 유명한 <Code complete2> 의 스티브 맥코널 님 입니다.

책이 나온지 20년이 흘러서 저자가 이야기 한 부분 중 개선된 부분도 많지만, 아직 까지도 해결되지 않고 유지된 문제들도 많습니다.

책에 나온 내용 중 재미있는 내용을 소개하자면,

프로그래머의 MBTI에 대한 이야기가 나옵니다. 1985년경 자료에 따르면 ISTJ가 소프트웨어 개발자에게는 가장 흔하게 발견되는 유형이라고 하며, 25-40% 정도라고 합니다.

2000년 쯤에, 미국에는 2,063,000명의 소프트웨어 종사자가 있었으며, 전 세계적으로는 10,000,000명의 개발자가 있었다고 합니다.

그리고 전문 소프트웨어 엔지니아거 갖추어야 할 능력으로 아래와 같은 항목들을 꼽았습니다.

* 소프트웨어 요구사항

* 소프트웨어 설계

* 소프트웨어 구축

* 소프트웨어 테스팅 

* 소프트웨어 유지보수

* 소프트웨어 형상 관리

* 소프트웨어 품질

* 소프트웨어공학 관리

* 소프트웨어공학 툴과 방법론

* 소프트웨어공학 프로세스

비록, 오래된 서적이고, 코드 한줄 없는 에세이지만, 구할 수 있다면 추천 드립니다.

Posted by chobocho
Tip/Windows2024. 11. 13. 22:06

제어판에서 프로그램 삭제를 했는데도, 시작 프로그램에 찌꺼기가 남아 있는 경우가 있다.

이럴 땐 다음과 같이 아래 폴더로 가서, 그 프로그램 바로가기 파일을 지우면 된다.

C:\Users\[사용자계정]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

Posted by chobocho
Tip/Android2024. 10. 9. 12:45

Posted by chobocho
Tip/Android2024. 10. 9. 12:44

Posted by chobocho
My Life/version 6.12024. 9. 1. 21:06

코딩을 처음 배울 때, 문법만 배우면서 무엇을 해야 할지 막막 할 때가 많다.

이럴 때, 다음과 같은 프로그램을 만들어 보면 도움이 된다.

1. 텍스트 파일의 문자 개수, 단어 개수, 라인 수를 알려주는 프로그램

2. 텍스트 파일의 숫자의 개수를 히스토 그램을 그려주는 프로그램

3. Binary Search 

4. Bloom filter

5.테트리스

6. 소코반 게임

6. 유전 알고리즘으로 2차 방정식 풀기

7. 2인용 테트리스

8. 1:1 온라인 테트리스

9: 2:2 온라인 테트리스

10. 간단한 DNN 

Posted by chobocho
Coding/Java 삽질기2024. 6. 25. 01:02
 // 한번에 원하는 위치로 이동하기
 ebookListView.setSelection(loadCurrentPosition())
// 현재 보이는 첫 번째 줄 위치 가져오기
ebookListView.firstVisiblePosition

 

Posted by chobocho