Below you will find pages that utilize the taxonomy term “Think”
울티마
좋아요! 🎮 울티마(Ultima) 시리즈는 총 9개의 메인 넘버링 게임과 외전/온라인 시리즈로 구성되어 있어요. 아래에 시리즈별 간단 요약표로 정리해드릴게요:
🗂 울티마 시리즈 요약표 (메인 넘버링 기준)
| 번호 | 제목 (연도) | 주요 특징 / 이야기 요약 |
|---|---|---|
| I | Ultima I: The First Age of Darkness (1981) | 악당 몬다인(Mondain)을 물리치는 SF+판타지 혼합 세계 |
| II | Ultima II: The Revenge of the Enchantress (1982) | 시간여행 시스템 도입, 몬다인의 연인 미나엑스(Minax) 등장 |
| III | Ultima III: Exodus (1983) | 파티 시스템 도입, 전투와 탐험 구분. ‘정통 RPG’ 시스템 완성 |
| IV | Ultima IV: Quest of the Avatar (1985) | 미덕(Virtue) 시스템 도입, 도덕적 영웅 ‘아바타’ 탄생. 전설의 시작 |
| V | Ultima V: Warriors of Destiny (1988) | 미덕이 왜곡된 사회. 폭군 로드 블랙쏜(Blackthorn)과의 대립 |
| VI | Ultima VI: The False Prophet (1990) | 외계종족 Gargoyle와의 갈등 → 오해를 풀고 평화 추구 |
| VII | Ultima VII: The Black Gate (1992) | 극찬받은 그래픽 & 스토리. 컬트 조직 ‘가디언’의 등장 |
| Ultima VII Part Two: Serpent Isle (1993) | 다른 대륙에서 펼쳐지는 후속 이야기. 세계관 확장 | |
| VIII | Ultima VIII: Pagan (1994) | 어두운 세계관, 아바타가 새로운 세계 Pagan에 갇힘. 액션 중심 |
| IX | Ultima IX: Ascension (1999) | 시리즈의 결말. 아바타 vs 가디언의 마지막 대결. 그래픽은 좋았지만 평가 갈림 |
🌐 외전 및 온라인
| 제목 | 설명 |
|---|---|
| Ultima Online (1997) | 세계 최초의 MMORPG 중 하나. 자유도 높은 오픈월드 온라인 세계 |
| Ultima Underworld I & II | 1인칭 던전 크롤러 스타일, 울티마 세계관 기반의 혁신적 외전 |
| Ultima: Runes of Virtue | 게임보이/콘솔용 외전. 가벼운 퍼즐과 액션 중심 |
| Ultima Forever (2013, 모바일) | EA에서 만든 모바일 게임, 서비스 종료됨 |
📌 참고 사항
- Ultima IV~VII는 가장 많은 팬과 평가를 받는 시리즈입니다.
- Ultima Online은 오늘날 MMORPG의 조상 같은 존재입니다.
- Ultima 시리즈는 항상 기술적 혁신과 철학적 깊이를 함께 추구했어요.
더 궁금하신 시리즈가 있으면 그 편만 깊게 소개해드릴 수도 있어요! 어느 쪽이 더 끌리세요? 😊
natural semantic ordering
좋은 질문이에요!
**Natural Semantic Ordering (자연 의미 순서)**는 특히 UI/UX나 데이터 정렬에서 자주 언급되는 개념으로, 사람들이 직관적으로 기대하는 방식대로 항목을 정렬하는 것을 의미해요.
🧠 개념 정리: Natural Semantic Ordering이란?
“텍스트나 숫자가 사람이 이해하기 좋은 순서로 정렬되도록 하는 방식”
기본적인 정렬(예: 사전순, ASCII 정렬)은 기계적으로 문자 하나하나를 비교하지만,
Natural Semantic Ordering은 의미나 숫자 크기 등을 고려해서 훨씬 자연스럽게 보여줍니다.
🔍 예시로 이해하기
✏️ 일반 정렬 (사전순, ASCII 정렬)
file1.txt
file10.txt
file2.txt
✅ 자연 의미 순서 (Natural Semantic Ordering)
file1.txt
file2.txt
file10.txt
사용자는 위와 같이 정렬되길 기대하죠!
Warp-Terminal + LLM + Podman
![]() |
|---|
| WARP를 통해서 Podman container를 기동하는 모습 |
어제 Warp-Terminal을 local에 설치하고 시험 해 보면서 LLM이 local에 대한 권한을 가진다는 것이 얼마나 대단한 영향력을 줄 수 있는지 놀라고 있었다.
오늘은 내침김에 VSCode에 Google Gemini Code Assistant 까지 설치 해 보면서, 단순하게 Web Browser에서 질문하고 검색하는 수준이 아닌 local command를 대체하는 방향성에 대해서 테스트 해 보고 있다.
위 스크린 샷에서 Warp-Terminal은 claude 3.7을 사용해서 podman container 전체를 살리는 명령으로 start -a를 시도해 보지만, 그것이 잘못된 방법인 것읋 알아차리고 목록을 구해서 하나씩 파라미터로 던지는 활동을 하고 있다.
SWIFT & CCF
KRX: 한국거래소
KDS: 한국예탁결제원
RMB: 인민폐의 음차
RQFII: RMB Qualified Foreign Institutional Investor
SWIFT: Society for Worldwide Interbank Financial Telecommunication
1973년 설립, 본사는 벨기에 브뤼셀
CIPS: China Cross-border Interbank Payment System
CCF: CIPS Clearing Framework
즉, SWIFT의 중국버전
예탁결제원 차세대시스템 RFP를 보다가 보니. 중국 위안화 관련 처리를 위한 기능이 많다는 생각이 들었다.
goLang이 좀 더 현대적인 언어라는 느낌
![]() |
|---|
| %와 %+의 차이 |
goLang을 살펴보며 느끼는 불안감이랄까?
저 표현식은 뭘까?
이런 생각이 든 대부분의 것은 출력형식인 경우에 사용되는 옵션이었다.
그리고 느끼는 감정은 좀더 현대적인 언어겠구나. 잘 살펴보면 꾸미기 위해 삽질했던 많은 것 들을 해결 할 수 있겠구나. 하는 것이다.
Majaro Package 설치시 인증이 틀린경우
![]() |
|---|
| 10분 뒤에 다시 하세요 |
Web에서 인증하는 경우가 아니라 Local에서 패키지설치 인증을 하는 동안 비밀번호를 틀리자 보이는 UI.
나름 신선하다. 꼭 필요했을까? 필요 한 거 같다.
goLang slice에서 cap의 개념을 발견하다.
goLang Tour의 slice를 해보고 있었다.
slice라는 것은 python에서도 자연스러운 것이었으나, goLang에서 가장 크게 혼동되는 것은 cap이라는 개념이 있는 것 + 기존 slice에 append하는 경우에, cap이 모자라면 +1이 아니라 +2 해서 생성이 되는 것을 발견한다.
이거 생각 잘 하고. 그 특성을 이해 하고 써야겠는걸?
package main
import "fmt"
func main() {
var s []int
printSlice(s)
// append wprks on nil slices
s = append(s, 0)
printSlice(s)
// append를 하면 len==1이 되는 것은 당연해 보이는데, cap==2가 되는 이유는 무엇일까?
// len을 강제로 2로 변경 해 보면 늘어나는 것을 볼 수 있다.
// s = s[:2]
// printSlice(s)
// The slice grows as needed
// 위에서는 nil에서 append하면 cap==2가 되었는데. cap==2인 상태에서 append하면 여전히 2이다.
// 뭔가 규칙이 있나?
s = append(s, 1)
printSlice(s)
// We can add more than one element at a time
// cap이 apped결과보다 작을 경우에, cap+1이 되어 생성되는 것으로 보인다.
s = append(s, 2, 3, 4)
printSlice(s)
// 강제로 len을 설정하면. 마지막은 0으로 되어 있는 것을 볼 수 있다. nil이 아니다.
s = s[:cap(s)]
printSlice(s)
}
func printSlice(s []int) {
fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)
}
1e9이라는 숫자를 본 적이 있는가?
![]() |
|---|
| 1e9에 대한 설명 |
A Tour of Go를 살펴보다 보니. 변수에 1e9을 대입한다.
응?
처음에는 뭔가 저정돤 메모리주소의 sample인가 싶었지만.
구글링 해 보니, 숫자를 선언하는 형식인것을 알게된다.
task-centric vs. asset-centric workflow
dagster의 교육과정을 살펴보고 있다가 task-centric과 asset-centric이라는 단어를 보게되었다.
예를 든 초컬릿 칩 쿠키를 만드는 과정에서 task중심은 [재료모으기, 재료섞기, 초컬릿칩 추가하기, 굽기]로 Task를 기술하고, 재료나 중간가공품(쿠키 도우와 같은)은 별도로 표시(주석정도?)하는 방식이고, asset은 [주재표, 부재료, 중간가공품]과 같이 재품의 각 상태를 주요하게 기술하고, 각 상태를 전이시키는 task는 주석 정도로 표시하는 방식이다.
이 얼마나 명확한 방법인가 싶어, 이제까지 이런 생각을 못했다니 싶다.
참고로 Data engineering에는 asset중심이 더 유리하다 한다.
- data lineage측면. (이걸 혈통이라고 번역하면 좀 이상하기는 한데. 적절하기도 하다.)에 대한 파악이 용이하다고 한다. 일리가 있다.
- asset의 재활용 측면.
- asset의 freshness측면. (이걸 선도라고 번역하면.) 데이터가 얼마나 신선한가? 의미있는 부분이다.
- debugging측면.
dagster를 보다가 보니까 dbt를 자연스럽게 보게 된다.
Console + 인식
![]() |
|---|
| pamac를 실행했는데, 왜 Chrome을? |
아침에 jq라는 녀석을 한 번 해 보려고 pamac에서 jq를 설치하려 했더니 Chrome을 갱신하고 있다.
Manjaro를 사용 한 지 거의 1년이 다 되어 가지만 아직도 apt에 비해 익숙하지 않은건 사실이고, apt에 비해 더 가벼운 느낌이라는 것도 사실이다.
왜 더 가벼운 느낌일까?
Manjaro를 처음 사용하기 시작하면서, pamac와 pacman에 대해 구분하지 않고 대충 구글링해서 나오는 것을 기계적으로 입력하던 버릇은 apt에서 기인 한 것이라 생각된다.
이 부분을 잘 살펴보면, 인식, 인지 그리고 내가 지금 하려고 하는 것을 향한 돌진에 그것이 걸림돌이 되지 않는다면 아무런 상관이 없는 Console에 뿌려지는 단어들이라는 생각이다.
2025년 살펴 볼 목록들 (시작)
2024년 프로젝트 진행하느라 링크만 남겨뒀던 것들을 주워모아 본다.
지인
바닐라 프론트: 이병옥 대표가 드디어 릴리즈 했다.
ETL or Data Process
아래 4개가 도출되었음
airflow - 아직까지는 가장 범용적 a platform created by the community to programmatically author, schedule and monitor workflows
Prefect Cloud 버전을 테스트중. local은 찾아보고 있음.
Mage 홈페이지에 AI틱한 문구를 띄우고 있지만.
dagster - data pipeline oneline solution? “Data engineering doesn’t need to be a drag"라는데?
luigi - build complex pipelines of batch jobs 간단한 깃헙 페이지?
우리의 인식은 얼마나 오래 되었나?
한 두 주 전이었나? OwnTone이라는 Server를 발견하고는 무척이나 흥미로워했었다.
그리고 이케아에서 쉼포니스크 스피커를 할인하는 것을 보고 그 녀석을 들었다 놨다 사고 싶어 어쩔줄을 몰라하고 있었다.
그러다 문득 쉼포니스크가 AirPlay지원 이라면 AirPlay를 구성하는 서버도 있을 법 한데?
shairport-sync라고 아주 깔끔한 녀석이 이미 잘 나와있고 라즈베리파이3+B 정도면 아주 훌륭하게 작동한다.
![]() |
|---|
| Image Desc. |
WiFi형태의 네트워크 플레이어만 보면 어쩌던지 연결 해 보고 싶어하는 취미를 가진 사람으로서 이미 그 정신이 MPD에 머물러 있는 나는 이미 얼마나 옛날사람인가 싶다.
UUID V7과 DBMS (feat. harlequin)
![]() |
|---|
| VSCode terminal에서 harlequin을 실행한 모습 |
Mariadb Docker 환경(Github)을 하나 만들어 두려고 Dockerfile을 만지작거리고 있다보니 얼마전에 Geeknews에서 본 harlequin과 uuid를 PK로 가지는 것에 대한 논의가 혼합되면서 이왕이면 하는 생각으로 적용시켜보기로 한다.
사실 UUID의 경우 프로젝트에서 interface 전문의 PK로 많이 사용하기는 했지만, V4였기 때문에 조금 아쉬움이 있었다.(내가 생성하는 주체가 아니었기 때문에 V7으로 못했었다.)
mariadb에서 기본으로 제공하는 uuid() function은 아마도 v1인거 같아 따로 function을 만들어 넣었는데, 데이터 생성후 성능테스트까지는 안해봤다.
harlequin은 처음에 host에서 구동 할 생각이었으나, 특정 작업을 진행하는 도구로서 terminal은 언제나 아쉬움이 있기에 함께 넣어봤다.
코레일 잔여 승차권은 무슨 일이 있는 것일까?
![]() |
|---|
| 문제의 기차 예약 현황 |
아침 기차를 타고 서울에 갈 일이 생기는 상황이라 아주 오래된 코레일 멤버쉽을 이용해 예매를 하고 있다.
여의도로 출근하는 사람이 많아서일까? 8시 7분 기차는 거의 매진인 상황인데, 그 다음 기차인 8시 16분 기차는 낮에는 매진이지만, 새벽 2시에는 좌석이 없다가 새벽 4시가 되면 귀신처럼 좌석이 생기는 현상을 경험하고 있다.
이 단순한 현상만 가지고 유추해 볼 수 있는 것은.
- 부지런한 사람들이 새벽에 일어나서 취소를 하거나 예매를 하거나.(나처럼 말이다.)
- 코레일에서 새벽에 배치로 뭔가 조건에 부합하는 잔여좌석(묶어뒀던)을 배치를 돌려 방출하거나.
- 개인에게는 허락되지 않은 API를 사용 할 수 있는 어떤 조직(여행사?)에서 매크로(배치)를 돌리고 있거나.
사실 금일 새벽 3시에 조회를 했을 때에는 잔여좌석이 없어서 며칠간 추리를 하고 있던 것을 수정해야 하나? 하고 있었다.
회신 이메일의 발견
![]() |
|---|
| 회신 이메일 주소 |
가끔씩 보내주는 퇴직연금 관련 메일일을 토요일 아침 무료하게 살펴보다 회신 이메일 주소라는 것을 발견한다.
SMTP 프로토콜에 회신 이메일 주소가 따로 있었던가?
RFC를 대충 찾아봐서 그런건지 그런 항목은 보이지 않는데 말이다.
헤더에 표시할 문자열 형태의 주석을 넣은것인가?하는 상상을 잠시 해 봤으나, 충분히 가능성있는것이다 하기전에.
이미지를 자세히 보면 송신자와 답신 주소가 같다.
당연한것 아닌가?
결국 Gmail에서 답신 이메일이라는 이름으로 보여주는 것이라 생각되는데.. 그러면 과연 송신자와 답신용 이메일을 다르게 설정해서 발송 할 수 있는가? 하는 의문이 생긴다.
균형. 그리고 진단
![]() |
|---|
| Ubuntu Sound Setting |
한 달 정도 걸리는거 같다. PC를 하나 조립하면서 걸린 시간 말이다. (물론 대부분의 시간은 As를 보내고 기다린 시간이기는 하다.)
베타 딱지가 붙은 BIOS가 메모리 뱅크 2개를 모두 지원하는 고마운 상황에 감사하며, 개발환경으로서의 우분투를 사용하고 있는데 말이다.
이 녀석에서 음악을 재생하면 오른쪽만 재상되는 이상한 현상을 보인다.
먼저든 생각은 Linux Sound Driver에 대한 걱정이었으나…
Ask Ubuntu에서 찾은 의외의 답변은 좌우 밸런스를 확인 해 보라는 것이었다. (물론 첫 댓글은 alxamixer를 터미널에서 구동해 보라는 것이었지만 말이다.)
회의. 그리고 진단
![]() |
|---|
| 메모리 진단 프로그램 MemTest |
무슨 생각이 들었는지 AMD CPU르 하나 주문하고, CPU를 샀으니 하는 빌미로 보드와 메모리 등을 호기롭게 주문 한 것 까지는 좋았는데.
처음 BIOS진입부터 사람 힘들게 하더니, OS를 설치하고 설정하는 과정에서 무수한 비정상적인 상황을 연출한다.
주말 양일간 열심히 설정을 해보고 내린 결론은 메모리 오류.
구매처에 유선으로 문의를 하니, 일단 메모리만 보내보라고 하더니, 검사하기 난해하다고 그냥 신품으로 보내주겠다고 해서 받아봤더니.
메모리 두 개 중에 하나는 실이 붙어있고, 하나는 그냥 은박지에 싸서 보낸 모양새가 내가 보낸 것을 되돌려준것인가 싶다.
UWP+Socket+Error 10013
토일 프로젝트로 UWP에서 MPD에 Socket으로 연결하는 작업을 주말마다 아주 조금씩 진행하고 있었다.
처음에는 MVVM 패턴을 이해하지 못해서 진도가 안나가다가 드디어 오늘 Socket 호출을 하게 되었는데 말이다.
socket.Connect(server.serverIp, server.serverPortInt);
이 단순한 문장에서 SocketError 열거형 10013 오류를 throw한다.
![]() |
|---|
| 어플리케이션 설정 기능 |
원인은 아무래도 UWP이다 보니, 이상한 짓을 하게 놔두지 않으려는 MS의 배려인거 같고.
이 프로그램에서 Socket을 사용할것이라고 설정 해 주면 잘된다.
Jekyll Theme al-folio
거의 1년 만에 미뤄뒀던 블로그를 아니 Jekyll을 다시 꺼내, 일요일 아침부터 만지작거리기 시작한다.
처음 시작 할 때는 Jekyll은 커녕 Ruby라는 것이 있는것만 알았지, 처음 써보는 상황이었다.
물론 지금도 Ruby를 사용하는건 아니다. Gemfile에 대해 알았을 뿐이다.
일요일 아침부터 시작한 Jekyll을 재 설정하면서 무료 Theme를 몇 개 섭렵해 봤는데, 그래도 1년 전에 깔짝거려 본 경험이 있어 그런지 al-folio를 발견하고는 몇 시간에 걸쳐 찬찬히 이주 작업을 했다.
그 사이에 Google Domain에서 blog host를 등록하고 Let’s Encrypt 인증서도 등록해야 했다.
RESTFul response status code에 대해
수요일.
만들고 있는 토이프로젝트가 드디어 데이터에 대한 추가, 변경 그리고 삭제에 들어가게 되어 생각한다.
데이터에 대한 추가가 발생하는 경우 201 Created를 보내준다고 하지만, 변경과 삭제는?
언듯 200인가 싶어 찾아보니, 204 No Content에 대한 내용이 있다.
복잡하게 생각 할 수도 있는데, 200은 화면을 갱신해야 하는 경우. 204는 화면을 (전체)갱신하지 않고 표현 할 수 있다면..으로 이해 해 보자.
나는 변경과 삭제시 해당 Table의 Row만 처리 할 예정이라 204를 보내기로 한다.
그런데, 추가시에는 어떻게 할 것인가? 화면 전체를 갱신 할 것인가?
사용자와 권한에 대한 생각
수요일.
사용자와 권한에 대해 생각한다.
<div class="mermaid">
erDiagram
ROLE ||--o{ ROLE-USER : "1:n"
ROLE ||--o{ ROLE-MENU : "1:n"
ROLE ||--o{ ROLE-API : "1:n"
USER ||--o{ ROLE-USER : "1:n"
ROLE-MENU }o--|| MENU: "1:n"
ROLE-API }o--|| API: "1:n"
</div>
과연 당신은 사용자와 권한에 대해 어떤 관계를 생각하고 있을까?
<div class="mermaid">
erDiagram
USER ||--o{ ROLE-ITEM : "1:n"
ROLE ||--o{ ROLE-ITEM : "1:n"
ROLE-ITEM }o--|| MENU : "1:n"
ROLE-ITEM }o--|| API : "1:n"
</div>
추상이라고 불리는 모델링은 정답이 없다.
Mermaid로 다이어그램 그리는 테스트
화요일.
GitHub에서 다이어그램이 필요한데, 당연 디이어그램을 이미지로 넣을 생각을 했더니 뭔가 방법이 있다.
Mermaid라는 녀석인데, 코드블럭을 이용해서 파싱하고 그것을 이미지(아마 SVG겠지? 라고 생각했더니 SVG다.)로 만들어 보여주는 모양으로 생각된다.
그런데, Jekyll사용자의 경우 그냥은 안되고 조금 손을 봐야 하는데, [미리 해 본 사람][https://frhyme.github.io/mermaid/Embedding_mermaid_in_github_page/]이 있어서 크게 어렵지는 않다.
<div class="mermaid">
sequenceDiagram
WebBrowser->>+Nginx: Request /
Nginx-->>-WebBrowser: Response *.js
WebBrowser->>+WebBrowser: Vuex.route에서 판단
WebBrowser->>+Nginx: Request /login
Nginx-->>-WebBrowser: Response login.vue(js)
WebBrowser->>+WebBrowser: Vuex.store에서 요청
WebBrowser->>+Uvicorn: Request /api/loginId (Proxy Bypass)
Uvicorn->>+MySql: Select User
MySql-->>-Uvicorn: User Data
Uvicorn-->>+WebBrowser: Access Token
WebBrowser->>+WebBrowser: internalStorage에 저장
</div>
결론: 좋다!
Toy Projet를 만들면서 발생하는 일들을 기록 해 본다.
목요일.
Toy Projet를 만들면서 발생하는 일들을 기록 해 본다.
- 2022-01-24
Toy Project를 하나 만들기로 하고Front Template을 하나 정해서 GitHub에 커밋을 한다. 이것을 만들게 된 계기를 적어보면, 오라클 무료 인스턴스에 개인적으로 사용할 페이지를 올려 사용할 요량이었는데, 아무래도 인증이 필요해서 이것저것 Template을 찾아보는데, 영 마음에 드는것이 없다.
거기다 그 즈음 보기시작한 Facebook의 개발자 커뮤니티에 올라오는 질문글들을 보면서, 내가 경험한 것들을 조금은 가다듬어 세상에 넘겨줘야 겠다는 생각을 하게 된다. 누군가에게는 도움이 되기를 바라면서 말이다.
- 2022-02-01
구글에서 도메인을 하나 구입했다. 목적은 https를 적용하려면 도메인이 필요했기 때문이기는 한데.
도메인을 구입하고, 오라클 무료 인스턴스를 2개로 늘려서 작업 구성을 하면서 즐거워 하는 나를 발견한다. - halfenif.github.io: GitHub Page를 블로그로 사용하는건 계속 될 것이다. - filemover.enif.page: 주력으로 사용 할 개인적인 것들을 모아두는 인스턴스이다. - livedemo.enif.page: 인터넷상에 공개 할 목적으로 만든 데모 사이트이다. - demo.vvtui5.enif.page : Vite + Vue3 + Tailwind + SAP UI5로 만들어진 Demo 사이트이다.
- 2022-02-03 10:03:45
어제 밤까지 작업은 내용을 클라우드에 올리고 확인을 해보는데.. 뭔가 FastAPI 호출형식이 맞지 않는 오류가 발생한다. 뭐 그러려니 하는데.. 로그 보는 것이 영 불편하다. FastAPI 로그는 아니 정확하게는 Uviconr에서 로그를 생성하는 부분을 살펴보는데, 로깅에 대한dict항목만 찾아지는 것이 이게 뭔가 싶다. Stack Overflow에서 config file(아니 dict) sample을 구해서 넣어보니 동작은 하는데, 에러는 출력되지 않는다. log level이 debug가 아니고 trace로 바꾸자 좀 더 나오는데.. 뭔가 마음에 들지는 않는다. FaceBook Python 사용자 그룹에도움을 요청 해 보고 딴 짓을 한 참 하다가 다시 보는데. 내가 수정한 Header 값으로 요청을 하고 있지 않다. Vite에서 Build오류가 발생하고있어서, dist의 내용물들이 갱신이 안되고 있는 현상이 있다. IMG 항목중 URL이 Local인데 실제 파일이 없는 경우… 뭐 그럴수있지.
- 2022-02-03 23:04:26
로그를 보다가 보다가.. 결국 Nginx Log를 포맷을 수정했고, FileBeat로 Nginx Log를 긁어다가 MySQL로 넣기 위해 JOSN형태의 File로 떨어뜨렸었다가.. 아닌거 같아 Redis에 넣는 것 까지는 되었는데.
이 녀석을 다시 MySql로 넣기 위해서 Python AppScheduler를 보기 시작했고.
개발을 위해 WSL에 Redis를 설치하고 한참을 해 보는데.. 단순하게 생각해서 서버에서 긁어온(=화면에 출력된) 문자열을 WSL에 설치된 레디스에 넣었더니 Type Error가 나온다.
WSL에 Filebeat를 설치해서 Redis에 데이터를 생성하고 테스트해야 정확하다고 본다.
- 2022-02-09

DemoSite의 Logo를 변경했다.
뭔가를 만들려면 상하좌우 모두 두루 살펴서 받아들이는 사람이 이질감 없이 수용 할 수 있도록 준비 해 주는 것이 좋다는 생각이다.
로고는favicon.io라는 곳을 이용했다.
- 2022-02-11 13:46:53
그 사이 많은 일들이 있었다.
우선 ESLint를 적용하는 과정에서 처음 사용했던Template을 버리고, ESLint를 적용한Template로 갈아탔다. 이것은 시간이 매우 많이 소요되는 작업이었지만, 어설프게 웹 개발을 경험하는 것에서 이제 좀 본격적으로 개발 해 본다는 느낌을 가지게 해 주었다.
ESLint를 적용하는 과정에서 이것 저것 프로젝트를 만들다보니 GitHub의 레파지토리가 너무 중구난방이라는 생각이 들어서 전체에 대한 명명규칙을 만들고, 사용하지 않는것들은 삭제했다 - dev** : 개발중인 레파지토리이다. 나중에 demo*_로 Branch될 후보군이다. - demo__ : 인터넷상에 공개한 레파지토리이다. - test** : 테스트를 위해서 만들어본 레파지토리들이다. - toy** : 취미로 만들어보는 것들을 모아두었다.
- 2022-02-11 14:26:04
Vue에서 SVG를 설정하는 것에 대해 알게되었다.
이것의 시작은 ESLint 문법오류를 전부 잡고 Build를 시도하는 작업이었는데, 얼마전에 집어넣은 log.svg에 대한 경로를 찾지 못하는 오류가 나오면서 시작되었다.
어떤 문제를 직면했을 때 인간은 본능적으로 자신이 경험해 온 것을 기반으로 추론하고 행동하게 되었다.(당연한거다.)
이번에는 운이좋았던 것인지, 2시간만에 vite.config.js에서 svgLoader라는 단어를 발견하고, 오류가 나던 logo.svg대신 logo.png를 적용해 봄으로써 그 전까지 세웠던 가설과 추론이 모두 헛된것이었음을 증명하고 문제를 종료시킨다. 참.. 배울게 많다.
- 2022-02-12 14:48:44
Vue를 계속 적용 해 보면서 느끼는 생각은. Vue라는 것이 마치 거대한 무더기인데 거의 정리가 안 된 카오스같은. 그러다 보니 뭔가를 하나 하려면, 이것이 올바른 방법인지 아닌지 검토하고 판단하기 위해 오피셜 레퍼런스를 보지만, (사실 거기에 기술된 것이 정답이겠지만) 조금만 옆으로 응용하거나 더 나가려고 하면 걸리는 것들이 있다. 오늘은 이제까지 계속 생각하고 있던 main.js가 아닌 다른 곳에서 app instance에 접근하는 방법에 대해 검토를 해보니. appContext라는 단어를 찾기까지 시간이 그래도 많이 소요되었다. 이것은 결국 아직 (내가) JavaScript라는 것과 Vue가 프레임워크로서의 구성을 어떻게 해 놨는지에 대한 이해가 부족하다는 것을 반증한다는 생각이다. 한 2시간을 들여서 검토해보고 해결은 했다.
- 2022-02-15 09:21:29
CSS File을 삭제했다. 정확하게는 CSS가 필요한 부분의 Scope를 정하고, 해당 파일 내부의 Style로 설정하는 것으로 변경한 것이다.
이 Toy Project가 지향하는 바가 디지이너 없이 웹 개발경험이 없는 개발자가 간단한 사이트를 만드는 것인것 만큼, 디자인에 들어갈 Effort를 배제하라는 의미이기도 하다.
- 2022-02-15 23:12:58
Facebook 인증을 개발환경에서 만든 것을 운영으로 올리려다 보니,개인정보 처리방안과서비스 약관이 마음에 걸려.
인터넷을 찾아봤으나 마음에 드는 것이 없어 직접 작성했다.
무엇이던지 시작은 미미했을 수 있다.
금요일.
아침에 사무실에 출근해서 전날 저녁에 설정하던 WSL에서 Python Debug하는 것을 계속하려다 이상하게 Java 아니 정확하게는 Eclipse상에서 개발되고 있던 회사 인트라넷 개발환경을 VSCode로 설정하는 것을하는 하는 쪽으로 바꾸게 되었는데.
문제는 설정을 어느정도 한 뒤에 이 녀석에 관련된 북마크만 남겨둘 것이 아니라 간단하게나마 내용을 적어놓자 싶은 생각이 들어, 요즘 젊은 친구들은 어디다 무엇을 적고 있는지 페이스북에 물어본것이 화근이 되어 지금 Jekyll로 설정을 하고 GitHub Page에 push를 하는 상황이 벌어지고 있다.
피할수 없으면 즐겨라! (어! 이건 아닌가?)











