들어가며
🎨 unity.webp
🔑 unity.libsodium
💾 SqlCipher4Unity3D
NF.Tool.UnityPackage
시작하며
- 유니티 패키지에 있는 파일들을 쉽게 확인하고 싶었다. (이미자, 사운드 등등)
- 드레그 드랍으로 쉽게 만들고 싶었다.
결정
- winform 아니면 WPF 아니면 Maui
- 간단하게 만들거라 winform으로.
- 나중에 크로스플렛폼이 되는 Maui로 하면 어떨까? 너무 무겁나?
unitypackage경로
| os | path |
|---|---|
| win | C:\Users{User}\AppData\Roaming\Unity\Asset Store-5.x |
| mac | ~/Library/Unity/Asset\ Store/ |
| linux | ~/.local/share/unity3d/Asset Store-5.x/ |
기타
- pack : yaml
- unpack: tar/gzip
Ref
NF.Tool.ReleaseNoteMaker
시작하며
- 히스토리에서 뽑는건 별로
- ADR같은 도구가 있으면 좋겠다.
- towncrier을 찾았다.
기록
-
렌더템플릿 및 라이브러리 선택
-
AnsiConsole
- public override string StackTrace { get; } 안먹히는것.
- stderr AnsiConsole 어떻게 처리할고
- MultiSelectionPrompt 해서 키를 입력받아 캔슬 넣고싶었는데 캔슬이 없네?
- Select는 있는데 SelectAll/DeselectAll이 없네
- https://github.com/spectreconsole/spectre.console/discussions/700
- 최대길이
- AnsiConsole.Profile.Width = 255;
-
towncrier
- 다이나믹 언어 타입 및 네이밍 문제 - 저쪽 세상 네이밍 센스 맘에 안듬.
-
assemblyLocation empty
<IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>- 이 옵션을 사용하면 애플리케이션의 모든 콘텐츠 파일(예: DLL, 구성 파일, 리소스 파일 등)이 실행 파일 내에 포함되어 실행 파일을 실행하면 자동으로 추출되고 실행됩니다.
- https://learn.microsoft.com/en-us/dotnet/core/deploying/single-file/overview?tabs=cli
-
PatchNoteMaker 했는데... ReleaseNoteMaker 도 있는데...
- PatchNoteMaker했다가 최종적으로 ReleaseNoteMaker로 결정.
-
Tomlyn 사용법
- array를 키를 지정해서 dic으로 넣는 기능이 있으면 좋을것같은데...
-
집합연산 까먹네
- https://learn.microsoft.com/en-us/dotnet/csharp/linq/standard-query-operators/set-operations
- 표로 정리했다가 그냥 그때그때 검색하자. 나중에 필요하면 다시 표로정리.
-
public void Deconstruct(out string fname, out string lname)
-
구조체 생성자 방지
- public ObsoleteAttribute(string? message, bool error)
- throw new InvalidOperationException
- public ObsoleteAttribute(string? message, bool error)
-
line ending 문제
-
TestInitialize/TestCleanup/DeploymentItem/TestMethod
- DeploymentItem들이 TestInitialize보다 먼저 실행되는데 막상 TestContext.DeploymentDirectory는 동일해서 파일조작 테스트는 오작동을 일으킬 가능성이 생김.
- public required TestContext TestContext { get; set; } 로 가져와서 시작시 폴더이동.
-
liquid
- fluid / scriban / dotliquid
- dotliquid는 Drop만드는게 귀찮아서 패스
- https://github.com/microsoft/semantic-kernel/issues/6233 에서 scriban대신 fluid쓰는거보고 fluid로 선택
- liquid를 지원했으나 whitespace관리가 어렵고 fluid에서 class의 method호출이 안되었다.
- 안되서 {%- assign categoryIssues = category.GetAllIssues() -%}
- 이렇게 함 {%- assign categoryIssues = category.CategoryIssues -%}
- fluid / scriban / dotliquid
-
docfx
[!INCLUDE [<title>](<filepath>)][!code-<language>[](<filepath><query-options>)]mermaid- NOTE / TIP / IMPORTANT / CAUTION / WARNING
> [!NOTE]
> Information the user should notice even if skimming.
- pack 시 define flag를 알 수 없네..
- reno라는 것도 있네?
잡다한
- filename => fileName
- https://stackoverflow.com/questions/159017/named-string-formatting-in-c-sharp
- python textwrap
- https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-11.0/raw-string-literal
- 러스트로 작성된 것도 있네?
- https://github.com/nekitdev/changelogging
- draft대신 preview라는 명령어를 넣은건 좋은듯. https://docs.rs/changelogging/latest/changelogging/#preview
- https://github.com/nekitdev/changelogging
nf.unitylibs.managers.assetbundlemanagement
nf.unitylibs.managers.patchmanagement
nf.unitytools.essentials
note.project-record
시작하며
- README.md에 써놓기에는 주저리 주저리 뒷썰같은 느낌.
- 필요한 것만 들어가는 간결한 프로젝트와는 다른 뭔가가 필요했다.
시도
저장소 이름 짓는게 귀찮았다. gpt 무료버전을 사용해봤다.
project-log
retrospect
post-mortem
knowhow
lab-notes
dev-journey
여러가지가 나왔는데. retrospect / post-mortem는 왠지 끝나고 하는 느낌이라 도중에도 적는 느낌이 안나 제외.
일단 저장소 이름을 note.dev-journey 해서 한글 타이틀을 정하는데 study.dev-notes의 한글 타이틀이 넷평의 개발 노트 였다.
뭔가 dev도 중복되고 journey가 가지고있는 여행의 느낌이 맘에 안들었다. 그래서 한글 타이틀을 건조하게 넷평의 프로젝트 기록이라 먼저 정하고 영문 저장소 이름을 정했다. note.project-record
이모지도 정하고 싶었는데
- 📄는 이미 study.에서 쓰고 있다
- 📓도 note라서 생각했지만, 팬을 넣는게 좀 더 느낌이 있어 보인다.
- 📝도 팬이 달려있어 고려해봤는데 종이장이 study.에서 쓰이는 거랑 겹친다.
- ✒️ 펜촉을 써본적이 없지만. 뭔가 느낌이 있어 노트의 아이콘은 이걸로 하겠다.
http://netpyoung.github.io
- https://netpyoung.github.io/blog/jekyll_to_zola/
- https://netpyoung.github.io/blog/githubpages_jekyll_v3/
- https://netpyoung.github.io/blog/netpyoung.github.io_on_jekyll/
ADR
ArchitectureDecisionRecords (ADRs).
결론
컨셉자체는 괜찮은데 짜잘짜잘한거까지 하면 스트레스. 분쟁이 일어날시 팀장역활 중요.
시도
3명이서 해봤는데 adr 드라이븐을 강제해서 해봤다. 찬반으로 해서 결정하는건데 결정이 더 느리고 통과할때까지 문서만 바꾸느라 진도가 안나감.
Title: 제목 Decision: 결정 Issue: Status: // proposed, accepted, rejected, deprecated, superseded Expected Result: 예상결과 / Consequences 결과
버그노트 현상 추정 과정 원인 해결책
Ref:
- Documenting Architecture Decisions - Michael Nygard
- npryce/adr-tools - GPL
- https://github.com/phodal/adr - MIT
- https://github.com/joelparkerhenderson/architecture-decision-record
변경내역을 깃 커밋 히스토리로 뽑는것에 대한.
결론
결론은 반대. 자동으로 뽑는건 필요하지만, 커밋 기반으로 뽑는것은 아니다.
시도
- git history를 기반으로 changelog를 생성하는 것은 툴도 많고, 깃 히스토리를 파싱해서 만들면 간단하게 만들 수 있을거 같아 만들어 볼까라는 생각을 가지고 있었다.
- 주객전도
- 그렇게 몇번 코드를 가지고 놀다가. history기반으로 작업을 하면 changelog를 예쁘게 뽑기위해 커밋을 수정해야하는 경우가 생기는 경우가 생긴다.
- 불신
- 플로우에 맞추어 커밋로그를 잘 남긴다는 나 스스로 혹은 다른 넘들을 믿을 수 가 없다.
- 복잡성 증가
- 나 역시 몇번 시도 해봤는데 커밋 메시지를 changelog를 생각하면서 남긴다는것 자체가 곤욕이다.
마크업 언어
결론
markdown이 간단해서 1픽으로 하고 만약 요구사항이 늘어난다면 그 다음으로는 asciidoc을 고려.
시도
markdown, asciidoc, reStructuredText, org 들을 써봤다.
| fileextension | |
|---|---|
| markdown | .md |
| asciidoc | .adoc / .asciidoc / .asc |
| reStructuredText | .rst |
| org | .org |
복잡하고 잘 까먹는다. org는 에디터 특성을 탄다.
Ref
템플릿 언어
결정
- 디버깅때문이라도 t4쓰자. 추후 razor디버깅 방법을 안다면 이쪽으로 가도 될듯?
시도
- mustache / handlebars 는 문법이 간단한데 이걸 기반으로 템플릿을 작성해보면 더 개판남.
- 비쥬얼스튜디오 T4 template / razor 가 디버깅이 잘됨
- t4로 작성해도
<# #>하다보면 너무 지저분해보임
- t4로 작성해도
- liquid 개인적으로 맘에드는데 디버깅이 안되네..