Coding/Java 삽질기2020. 3. 28. 11:17

이번주도 봄이 왔으나 집에서 방콕을 하면서, 프리셀 게임을 만들어 보기로 했다.

Source cdoe 위치:  https://github.com/chobocho/freecell

Freecell 실행 화면

실행파일:

freecell_td1.2.zip
0.12MB


어떻게 만들었나

1. Class 다이어그램

Freecell class diagram

2. GUI 설계

3. 실행 화면

Posted by chobocho

댓글을 달아 주세요

Coding/Java 삽질기2020. 3. 24. 22:28

IntelliJ에 포함된 OpenJDK의 위치는 아래와 같습니다.

C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.2\jbr\bin
 
 
Posted by chobocho

댓글을 달아 주세요

Coding/Java 삽질기2020. 3. 24. 01:50
봄이 왔으나 집에서 방콕을 하면서, 솔리테어 게임을 만들어 보기로 했다.
간만에 뭔가를 만들어 보려니, 생각만큼 속도가 나오지 않았으나,
꾸역꾸역해서 일단 만들어 보았다.
 
 
게임 동작 화면
실행파일:
 

어떻게 만들었나?

1. UML 그리기

Solitaire 게임의 핵심 부분의 UML을 그려보면 아래와 같습니다.

2. Testcase 설계

구현을 시작하기 전에, 구현을 위한 Testcase를 작성합니다.

Testcase 작성시, 명료성을 위하여 아래와 같이 각각의 카드 덱에 번호를 붙입니다.

솔리테어 덱의 번호

그리고 아래와 같이 위 이미지를 기준으로 Testcase를 작성합니다.

Testcase 작성에 시간이 걸리기는 하지만, 미리 작성해 두면, 디버깅 및 테스트 시간을 아낄 수 있고,

버전 발행시 기본적인 기능 오류를 발견하지 못하는 일을 방지 할 수 있습니다.

솔리테어 체크 리스트 중 일부

3. 코드 구현

1) Card class

https://github.com/chobocho/solitaire/blob/master/src/com/chobocho/card/Card.java

2) Deck class

https://github.com/chobocho/solitaire/tree/master/src/com/chobocho/deck

 

Posted by chobocho

댓글을 달아 주세요

Coding/Java 삽질기2020. 3. 20. 00:30
IntelliJ 에서 "Cannot find or load main class"  메시가 보이는 경우
 
main 함수가 있는 파일의 폴더에서 
-> 마우스 우 클릭
-> Mark Directory as
-> Sources Root 를 클릭 하면 된다.
 
 
 
Posted by chobocho

댓글을 달아 주세요

Coding2020. 3. 16. 23:20
  • 이 글은 개인 경험에 편향 된 지극히 주간 적인 글입니다 ^^;;

1.기초

1.1 영어

  • Stack overflow 는 읽고 이해 할 수 있어 함
  • RFC 문서를 읽고 해석 할 수 있어야 함

1.2 SCM

  • Git 사용법
  • Github 사용법

1.3 자료구조

  • 스택
  • 링크드 리스트
  • Tree
  • Graph
  • Tries
  • Hash

1.4 기초 알고리즘

1.4.1 Big(O)

1.4.2 기초 정렬 알고리즘

  • Bubble sort
  • Shell sort
  • Insertion sort
  • Bucket sort
  • Quick sort
  • Merge sort
  • Radix sort
  • 위상정렬

1.4.3 탐색

  • 이진 탐색

1.5 기본 알고리즘

  • BFS
  • DFB
  • 탐욕 알고리즘

1.6 언어

  • C
  • C++
  • Java
  • Python
  • Kotlin
  • Go

1.7 OS 기초

  • Process
  • Thread
  • 프로세스와 쓰레드의 차이
  • 인터럽트
  • File system
  • Linux 기초

1.8 네트워크 기초

  • DNS
  • TCP/IP
  • UDP
  • 웹 브라우저를 열고 주소창에 www.google.com을 입력하고 화면이 뜰 때 까지 일어나는 일을 설명하기

1.9 DB 기초

2. 읽어 두면 좋은 책

2.1 공통

  • 조엘 온 소프트웨어
  • 피플웨어
  • Clean code
  • Clean coder
  • Clean software
  • Clean architecture
  • Refactoring 2/e
  • CODE
  • Code complete 2
  • 소프트웨어 장인
  • 헤커의 기쁨 2/e
  • 해커와 화가
  • Head First Design Pattern
  • GoF의 디자인 패턴

2.2 자바

  • Effective java 3/e
Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 2. 29. 23:20

주말의 무료함을 달래고자, 파이썬으로 간단히 Timer 앱을 만들어 보았습니다.

https://github.com/chobocho/timer

 

chobocho/timer

simple timer for windows. Contribute to chobocho/timer development by creating an account on GitHub.

github.com

 

 

먼저 아래아 같이 간단히 User case diagram을 대충 그려 봅니다.

그리고 star uml을 사용해서 대충 class diagram을 그립니다.

그리고 star uml의 code generator 기능을 이용해 skeleton code를 생성 합니다.

실행파일:

chobotimer_tc3.zip
8.66MB

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

[Python] venv 사용  (0) 2020.04.15
[ChoboTimer] 타이머 앱 만들기  (0) 2020.02.29
Minim / 간단한 메모관리 툴 (TK3)  (0) 2020.01.16
Minim / 간단한 메모관리 툴 (SL6)  (0) 2019.12.10
Posted by chobocho

댓글을 달아 주세요

Coding/Java 삽질기2020. 1. 23. 23:30

Android 제비뽑기 앱 만들기 (II)

간만에 마음에 여유가 생겨, 앱을 약간 수정하였습니다. ^^

결과물 
Source code:  https://github.com/chobocho/choose_one 
Play store:  https://play.google.com/store/apps/details?id=com.chobocho.chooseone 

앱의 목적 
  
2명이상의 사용자들 중 한 명을 뽑아 준다 (사다리 타기) 
  
사용 예:  커피 쏘기 
앱의 기본 동작 설계

 

앱의 요구 사항 분석 
  
앱을 실행 후 2명 이상이 화면에 손가락을 올리면, 3초 뒤에 한 명을 선택해 준다 
손가락을 올려 둔 상태에서 3초 안에 손가락을 떼거나, 추가하면 다시 3초를 센다 
손가락을 올려 둔 상태에서 3초 안에 손가락을 모두 떼면, 동작을 멈춘다 
60초 동안 아무도 손가락을 올리지 않으면 자동으로 앱이 종료 된다

  
기초 설계
 
앱의 동작을 위하여 내부적으로 IDLE, SELECTING, SELECTED 3개의 State를 가지는 State machie 을 구상하였다.
State의 변화는 아래와 같다. (편의 상 시간의 변화를 tick이란 단어로 표시했다.)

Posted by chobocho

댓글을 달아 주세요

Coding/Python 삽질기2020. 1. 16. 00:08

Minim은 간단한 메모 관리 앱니다.

개인, 회사, 공공기관 어디에서도 되는 무료 앱입니다. 

다운로드: github.com/chobocho/ChoboMemo2/tree/release/src/dist


어떻게 만들었나: https://chobocho.tistory.com/2461418

 

Posted by chobocho
TAG Memo, minim, Python

댓글을 달아 주세요

Coding/JavsScript 삽질기2020. 1. 13. 01:04

소개 https://chobocho.tistory.com/2461396
실행하기 http://www.chobocho.com/javascript/painter.html
전체 소스코드 https://github.com/chobocho/painter

 

chobocho/painter

Painter written html5. Contribute to chobocho/painter development by creating an account on GitHub.

github.com

9.1 Undo/Redo 기능 구현

Undo/Redo 기능을 구현하기 위해서는 모든 사용자의 동작을 저장해야 합니다

그럼 사용자의 동작을 저장하기 위해서, 선을 그리거나, 원을 그리는 동작을

아래와 같이 커맨드로 정의 해야 합니다.

마우스로 그린 그림

color red 
color lightblue 
rect 8 6 713 356 F 
color white 
ellipse 190 116 93 44 F 
ellipse 456 115 87 42 F 
color black 
ellipse 226 116 31 31 F 
ellipse 489 113 29 30 F 
ellipse 420 277 0 0 F 

그리고 그 커맨드를 stack에 저장합니다.

 

Posted by chobocho

댓글을 달아 주세요

  1. 가루

    안녕하세요?
    먼저 좋은 게시물을 작성해주셔서 감사합니다.

    웹상에서 로컬에 있는 이미지를 불러와서
    이미지에 연필/선/사각형/원형을 이용하여 편집(덧칠)한 뒤 다운로드 하며
    그 과정에서 좌표를 입력하는 기능을 직접 만드는 도중
    초보초님의 블로그를 찾게 되었습니다.

    MIT라이센스라고 명시되어있으나 그냥 날름 가져다 쓰기엔 뭔가 아닌것 같아서
    감사하다는 말씀을 드리려고 댓글을 작성했습니다.

    감사합니다(__)

    2020.10.26 06:21 [ ADDR : EDIT/ DEL : REPLY ]
  2. 방문해 주셔서 감사합니다.
    제 글이 도움이되었다니 다행이네요. 즐거운 하루되세요.

    2020.10.26 08:10 신고 [ ADDR : EDIT/ DEL : REPLY ]

소개 https://chobocho.tistory.com/2461396
실행하기 http://www.chobocho.com/javascript/painter.html
전체 소스코드 https://github.com/chobocho/painter

8.1 저장하기

painter.html에 save를 위한 버튼을 추가 합니다.

<div>
  <a id="saveImage" download="image.png">
      <INPUT type="button" value="Save" onClick="saveImage()" />
  </a>
</div>

그리고, painter.js에 saveImage()함수를 추가합니다.

function saveImage() {
  console.log("saveImage()");
  var imageName = document.getElementById("title").value;
  console.log(imageName.lenght);
  if (imageName.length == 0) {
    imageName = "image";
  }
  imageName += ".png";
  var savedImage = document.getElementById("saveImage");
  var image = document
    .getElementById("canvas")
    .toDataURL("image/png")
    .replace("image/png", "image/octet-stream");
  savedImage.setAttribute("download", imageName);
  savedImage.setAttribute("href", image);
}

여기 까지 소스코드는 아래 링크를 참고 하시면 됩니다.

https://github.com/chobocho/painter/commit/dceabd6f3ace4d39e21260d593dc55a2d15e47df

Posted by chobocho

댓글을 달아 주세요