배경지식에서 유용한 정보들이 많아서 보고, 링크한것들도 유용해서 여기에서도 링크
http://rogerdudler.github.io/git-guide/index.ko.html
https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EB%82%B4%EB%B6%80-Git-%EA%B0%9C%EC%B2%B4
https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EB%82%B4%EB%B6%80-Git-Refs
생각만큼 이번 과제가 많이 힘들었따.. 진짜 첫날부터 이거 하라고 했으면 바로 포기했을듯.
이 이주일 사이에그새 성장한 모양이다. 얼마나 굴렸으면..
명령어를 정규식으로 받으면 좋긴 한데 때론 그냥 split(" ")로 받는게 더 깔끔하고 안정적이고 보기 좋은 것 같다. 너무 정규식만 쓸려고 하지 말자. 그럼 이렇게 할 때 뒤 단어들 합치기
order = readLine()!!.split(" ")
"commit" ->{
message = ""
for (i in 1..order.lastIndex) message += "${order[i]} "
commit.commit(message)
}
깊은 복사를 하기 위해 cloneable를 상속해서 override clone 하면 된다. data class에도 cloneable된다.
enum class
import java.util.*
data class File(var name: String, var lastEdited: Date, var content: String){
val fileStatus = {"$name(${content.length})"}
val fileStatusWithDate = {"${fileStatus()}\t$lastEdited"}
var status = FileStatus.UNSTAGED
}
data class GitLogFile(val name: String, val logs: List<CommitLog>)
enum class FileStatus{
UNSTAGED, STAGED, COMMITTED
}
FileStatus안에 UNSTAGED, STAGED, COMMITTED 라는 클래스가 있는것. 그냥 새로운 이름을 짓는걸로 생각했는데 그거 이상인 것 같다. 아님 그냥 상수처럼 쓰던지.
reduce
//log
private fun printLog() {
val strLog = curRepos!!.commitLogs.map {
"commit \"${it.message}\"\n" +
it.files
.map { f -> f.fileStatusWithDate()}
.reduce { acc, s -> "$acc\n$s" }
}.reduce { acc, s -> "$acc\n$s" }
println(strLog)
}
위의 것은 reduce 한게 String list라서 이것들을 reduce로 합친것.
해시 고유값
hash = UUID.randomUUID().toString()
실제 github에서는 .git 안에 모든 정보가 다 있는듯.
상태정보.. 흐름에 대해 코딩
클래스가 많으면 어쨌든 그 안에서 다 처리하도록 만들 수 있으니까 이 점에선 좋은 듯.
결과 내놓고 축약한건 실험 안해도 되겠지 하고 최종으로 내놓았는데 결국 버그 떴음.. 마지막의 마지막까지 꼭 테스트 해보고 최종 commit 하자.
'강의 > 부캠 안드로이드 학습정리' 카테고리의 다른 글
day 12. 멀티쓰레드. (0) | 2021.08.04 |
---|---|
day 11. 멀티프로세스, 멀티스레드, 우선순위 (0) | 2021.08.02 |
day 8. 코틀린의 함수형 프로그래밍 (0) | 2021.07.28 |
day 7 클래스 상속 (0) | 2021.07.27 |
day 6 xml, html parser 만드는데 너무 어려웠음 (0) | 2021.07.27 |