Coding/Python 삽질기2020. 4. 22. 23:28

ChoboTimer V0.17 으로 업데이트 하였습니다. 

* 타이머에 메모를 넣을수 있도록 수정하였습니다.

chobotimer_td2.zip
8.66MB

ChoboTimer에 대한 자세한 내용은 아래 링크를 참고하세요.

https://chobocho.tistory.com/2461431

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

[Python] 소인수 분해  (0) 2020.07.10
[Python] venv 사용  (0) 2020.04.15
[ChoboTimer] 타이머 앱 만들기  (0) 2020.02.29
Posted by chobocho
Coding/Python 삽질기2020. 4. 15. 19:03
// 만들기
python -m venv ./snake_game

// 실행
cd \snake_env\Scripts
activate.bat

// 종료하기
deactivate.bat

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

[ChoboTimer] Version 0.17 Release  (0) 2020.04.22
[ChoboTimer] 타이머 앱 만들기  (0) 2020.02.29
Minim / 간단한 메모관리 툴 (TK3)  (0) 2020.01.16
Posted by chobocho
Coding/Tip2020. 4. 13. 22:51

Android studio에 있는 유용한 기능을 공유해 봅니다.

1. Alt + 2 : Favorites 표시

자주 참고하는 파일들을 모아서 관리 할 수 있다

 

2. F11 : Bookmark

   Shift + F11 : 모든 Bookmark 표시

 

'Coding > Tip' 카테고리의 다른 글

[Sheet] 구글 스프레드 시트 단축키  (0) 2021.10.16
사무직을 위한 Git 활용 법  (0) 2018.10.27
[GIT] 특정 폴더만 받아오기  (0) 2017.07.22
Posted by chobocho
Coding/Java 삽질기2020. 4. 12. 01:18

몇 년 전에 만들었던, 마작 게임을 껍데기만 빼고 다 바꿔 보았다.

PlayStore:  https://play.google.com/store/apps/details?id=com.chobocho.ColorMatch

Source code: https://github.com/chobocho/ImageMatch

마작 게임 스크린 샷

 

1. 전체 패키지 구조는 아래와 같다

간단한 패키지 구조도

 

2. 이중 마작게임의 State diagram은 아래와 같이 구상 했다.

스테이트 다이어그램

 

3. 그리고 아래와 같이 Class diagram 을 작성했다.

 

Posted by chobocho
Tip/Android2020. 4. 11. 15:15

Android로 APK를 생성하면서 자동으로 파일 이름 생성 및 버전 명을 업데이트 하는 스크립트를 구성해 보았다

미래의 나를 위하여 기록을 남긴다

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    def versionPropsFile = file('versioninfo.properties')
    def Properties versionInfo = new Properties()

    if (versionPropsFile.canRead()) {
        versionInfo.load(new FileInputStream(versionPropsFile))
    } else {
        versionInfo['VERSION_HEADER'] = "0.1105"
        versionInfo['VERSION_NUMBER'] = 0
        versionInfo['VERSION_COUNT'] = 0
        versionInfo['BUILD_COUNT'] = 0
    }

    def versionHeader = versionInfo['VERSION_HEADER']
    def versionNubmer = versionInfo['VERSION_NUMBER'].toInteger()
    def versionCount = versionInfo['VERSION_COUNT'].toInteger()
    def buildCount = versionInfo['BUILD_COUNT'].toInteger()

    def taskName = gradle.startParameter.taskNames
    def addVersion = 1
    def isReleaseVersion = false

    if (":app:bundleRelease" in taskName) {
        println '---[bundleRelease]---'
        versionNubmer += addVersion
        versionCount += addVersion
        isReleaseVersion = true
    }

    buildCount += addVersion

    versionInfo['VERSION_HEADER'] = versionHeader.toString()
    versionInfo['VERSION_NUMBER'] = versionNubmer.toString()
    versionInfo['VERSION_COUNT'] = versionCount.toString()
    versionInfo['BUILD_COUNT'] = isReleaseVersion ? "1" : buildCount.toString()

    versionInfo.store(versionPropsFile.newWriter(), null)

    def date = new Date();
    def alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    def thisYear =  alphabet.charAt(date.getYear() + 1900 - 2001)
    def thisMonth = alphabet.charAt(date.getMonth())
    def monthVersion = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(versionCount)

    println '-------------------'
    println taskName
    println "${versionHeader}.${thisYear}${thisMonth}${monthVersion}.${buildCount}"
    println '-------------------'

    defaultConfig {
        applicationId "com.chobocho.ColorMatch"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode versionNubmer
        versionName "${versionHeader}.${thisYear}${thisMonth}${monthVersion}.${buildCount}"
        setProperty("archivesBaseName", "imagematch_$versionName")
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

미래의 우둔한 나를 위하여, 주석을 남긴다.

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    // 프로퍼티 파일 이름
    def versionPropsFile = file('versioninfo.properties')
    def Properties versionInfo = new Properties()

    if (versionPropsFile.canRead()) {
        versionInfo.load(new FileInputStream(versionPropsFile))
    } else {
        // 프로퍼티 파일이 없으면 생성을 하기위해 기본 값을 설정한다
        versionInfo['VERSION_HEADER'] = "0.1105"
        versionInfo['VERSION_NUMBER'] = 0
        versionInfo['VERSION_COUNT'] = 0
        versionInfo['BUILD_COUNT'] = 0
    }

    def versionHeader = versionInfo['VERSION_HEADER']
    def versionNubmer = versionInfo['VERSION_NUMBER'].toInteger()
    def versionCount = versionInfo['VERSION_COUNT'].toInteger()
    def buildCount = versionInfo['BUILD_COUNT'].toInteger()

    def taskName = gradle.startParameter.taskNames
    def addVersion = 1
    def isReleaseVersion = false

    // Signed APK 빌드인 경우만 versionCount를 증가 시킨다
    if (":app:bundleRelease" in taskName) {
        println '---[bundleRelease]---'
        versionNubmer += addVersion
        versionCount += addVersion
        isReleaseVersion = true
    }

    buildCount += addVersion

    // 수정된 값을 프로퍼티에 업데이트 한다
    versionInfo['VERSION_HEADER'] = versionHeader.toString()
    versionInfo['VERSION_NUMBER'] = versionNubmer.toString()
    versionInfo['VERSION_COUNT'] = versionCount.toString()
    versionInfo['BUILD_COUNT'] = isReleaseVersion ? "1" : buildCount.toString()

    versionInfo.store(versionPropsFile.newWriter(), null)

    // 빌드한 연도와 월을 남기기 위한 부분
    // 2001년 1월 > AA
    // 2020년 3월 > TC
    def date = new Date();
    def alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    def thisYear =  alphabet.charAt(date.getYear() + 1900 - 2001)
    def thisMonth = alphabet.charAt(date.getMonth())
    def monthVersion = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(versionCount)

    println '-------------------'
    println taskName
    println "${versionHeader}.${thisYear}${thisMonth}${monthVersion}.${buildCount}"
    println '-------------------'

    defaultConfig {
        applicationId "com.chobocho.ColorMatch"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode versionNubmer
        // 버전명 정보 -> 0.1105.TD1.2
        versionName "${versionHeader}.${thisYear}${thisMonth}${monthVersion}.${buildCount}"
        // 생성 되는 파일이름을 설정한다
        setProperty("archivesBaseName", "imagematch_$versionName")
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

'Tip > Android' 카테고리의 다른 글

[Termux] Web server 돌리기  (0) 2020.10.27
[Termux] ssh 사용하기  (0) 2020.10.26
[ChooseOne] 안드로이드 제비뽑기 앱 만들기 (I)  (0) 2019.09.02
Posted by chobocho
Coding/Java 삽질기2020. 4. 5. 22:37

이번 주말도 방콕을 하면서, 10년전에 만들었던 게임을 Java와 Android 버전으로 개선해 보았다.

10년전 코드를 보면서 참 부끄러웠고, 지금도 별반 차이게 없는게 안타까웠다.  ㅠㅜ 

Android Mahjong 버전 (안드로이드 마작)

PlayStore:  https://play.google.com/store/apps/details?id=com.chobocho.ColorMatch

Source code: https://github.com/chobocho/ImageMatch

 

Posted by chobocho
Coding/Java 삽질기2020. 4. 3. 00:43
Posted by chobocho
Coding/Java 삽질기2020. 4. 1. 01:09