Jenkins를 이용해 자동으로 빌드하고, 빌드한 결과물은 Zip으로 압축하여 제공한다.
여기서 빌드 결과물 파일에는 BUILD_NUMBER 값을 이용해 파일명을 만들고 있다.

SET FILENAME=MYSELF_%BUILD_NUMBER%.zip

문제는 저 BUILD_NUMBER 부분인데, 이게 1부터 시작해서 빌드 될 때마다 자동으로 1씩 더해지는 값이다.

그러다보니, File Sort를 해보면, 아래 처럼 될 때가 있다.

MYSELF_1.zip
MYSELF_10.zip
MYSELF_11.zip
MYSELF_2.zip
MYSELF_3.zip
MYSELF_4.zip
MYSELF_5.zip
MYSELF_6.zip
MYSELF_7.zip
MYSELF_8.zip
MYSELF_9.zip

요즘은 운영체제가 좋아지기도 했고, 파일관리도구들도 지능적이여서, 저 숫자부분만 떼서 Sort를 해주기도 하지만, 기본적인 String Sort로 하게되면 저렇게 된다.

방법은 저 파일명의 숫자부분 앞에 "0"을 채우면 된다.

그러니까...

MYSELF_0001.zip
MYSELF_0002.zip
MYSELF_0003.zip
MYSELF_0004.zip
MYSELF_0005.zip
MYSELF_0006.zip
MYSELF_0007.zip
MYSELF_0008.zip
MYSELF_0009.zip
MYSELF_0010.zip
MYSELF_0011.zip

위와 같이 만들 수 있다.

이를 위해서는 Jenkins 빌드 후 파일명 만들 때 다음과 같이 만들면 된다.

SET PADDED_BUILD_NUMBER=000%BUILD_NUMBER%
SET PADDED_BUILD_NUMBER=%PADDED_BUILD_NUMBER:~-4%

SET FILENAME=MYSELF_%PADDED_BUILD_NUMBER%.zip

굳이 설명하자면,

1번째 줄에서는 BUILD_NUMBER라는 값 앞에 "000"을 붙인다.
1이면 0001이든, 951이면 000951 같이 된다.

2번째 줄에서는 뒤에서 4글자만 뽑는다.
0001 이면 0001, 000951 이면 0951 식으로 4글자만 뺀다.

그리고 나머지 줄에서는 그렇게 만든 4글자짜리 BUILD_NUMBER를 이용해, 파일명을 만든 것이다.

핵심은....

:~-4

이다.

%{환경변수 이름}:~{+ 앞에서부터, - 뒤에서 부터}{추출할 갯수}%

 

728x90

Windows 10 부터 미디어 작성도구를 제공해서, USB에 자신의 설치용 Windows을 쉽게 만들수 있다.
다만, 이렇게 만들 때, 다양한 버전이 이 안에 들어가다 보니, 설치 중 Profesional 버전을 설치하고 싶을 때 골라서 설치가 안된다. 특히 설치 대상 PC가 OEM PC이고, 바이오스 상에 Windows 라이선스가 박혀 있는데, 그것도 Home Edition인 경우 매우 곤란했다. 쭉 설치하다보면 Home Edition으로 설치되고 끝. 게다가, 요즘 Windows 11 Home의 경우 Microsoft 계정이 없으면 설치도 안되기 때문에, Profesional로 설치하고 싶은데 매번 아무런 질문도 없이 진행되니...

그러나 구글로 찾아보니.. 나오긴 한다.

1. 설치용 USB를 만든다.
그냥 만든다. Microsoft 사이트에 들어가 Media Creation Tool을 받아서 USB 꼽고 만들어 달라고 하면 자동으로 USB에 설치 미디어를 만들어 준다. 이를 설치할 PC에 연결한 뒤 설치하면 잘 진행된다.
물론 여기에 조금 더 작업을 가미해야 한다.

2. ei.cfg 파일을 {설치용 USB 드라이브명}:\sources 폴더에 만들기.
USB가 만들어지면 드라이브가 잡히는데, 아마도 E:\나 F:\ 정도인데,
E:\sources 혹은 F:\Sources 폴더 안에 Text 파일(노트패드 등으로 작성)을 하나 만든다.
만들 때 파일명을 ei.cfg로 하고 만든다.

3. ei.cfg 안에 다음 내용을 넣는다.

[EditionID]
Professional

[Channel]
Volume 

[VL]
1

자세한 설명은 아래 링크를 통해 내용을 확인하도록 한다.
https://learn.microsoft.com/ko-kr/windows-hardware/manufacture/desktop/windows-setup-edition-configuration-and-product-id-files--eicfg-and-pidtxt?view=windows-11

 

Windows 설치 프로그램 버전 구성 및 제품 ID 파일(EI.cfg 및 PID.txt)

Windows 설치 프로그램 버전 구성 및 제품 ID 파일(EI.cfg 및 PID.txt) 아티클 05/30/2023 기여자 5명 피드백 이 문서의 내용 --> 선택적으로 버전 구성(EI.cfg) 및 제품 ID(PID.txt) 파일을 사용하여 Windows 설치 중

learn.microsoft.com

 

저장이 끝나면 이제 이 USB를 이용해 Windows 11을 설치하면 된다.

 

728x90

2년전 (2021년 11월 경)에 레노버 노트북인 T14Gen2 라이젠 에디션을 구매했다.
잘 쓰고 있는데, 간혹 외부에 나갈 때, 회의 할 때 노트북을 들고 나가려면 매번 여러 포트들에 연결된 장비들을
해제하고 정리해야 했다.

전원으로 사용되는 USB-C 포트.
포트 확장으로 이용되는 또 다른 USB-C 포트.
4K 해상도의 큰 모니터 연결용 HDMI 포트.
키보드, 마우스 USB-A 포트,
유선랜을 위한 RJ-45 포트 ...등등.

한 두번이야 뺐다가 다시 끼면 된다고 하지만, 회의 2번 정도 하면,
자연스럽게 노트북 보다는 다이어리로 적고, 그것을 다시 PC로 옮겨 적곤 했다.

물론 USB-C 형태의 멀티 포트 지원하는 제품들을 사용해서
근래 유행하는 USB-C 기반의 Docking Station이 있고, 그것을 이용하면, 전원부터 모니터, 랜선까지
다양한 기기를 한번에 뺐다가 다시 낄 수 있긴 하다.
그런데, 개인적인 생각에는 Intel의 썬더볼트 기반의 구조가 아니면, 대역폭의 한계가
알게 모르게 보이게 됐고.. 더욱이 T14의 경우 다른 USB-C 포트는 주변이 이상하게 생긴 부분이 있다.

USB-C가 두개가 있는데, 하나는 전원단자를 거의 담당하고, 다른 하나는 뭔가 이상한 포트와 한셋트 처럼 되어 있었다.

뭔가.. 이용할 포인트가 없었을까? 해서... 레노버 공홈에서 Docking Station을 검색하는데 이젠 USB-C 기반의 Docking Station으로 밖에는 없었다. 예전 노트북들의 옵션과 같은 진짜 Docking Station이 아니라, USB-C 기반의 허브로 된 Docking Station이 전부였다. 불가능은 아니지만 대역폭 문제와 의문의 단자 부분의 활용이 아깝다는 생각에 고민에 빠졌다.

그러다가.. 우연히 E-Bay에서 아래와 같은 Docking Station을 발견했다.
https://www.ebay.com/sch/i.html?_from=R40&_trksid=p4432023.m570.l1311&_nkw=lenovo+40aj0135us&_sacat=0

 

lenovo 40aj0135us for sale | eBay

유효한 가격 범위를 입력해 주세요

www.ebay.com

다 좋은데.. 문제는 호환성.

T14Gen2가 지원되는지 안되는지에 대한 문구를 어디서 찾아보기 힘들었고, 과연 연결이 제대로 되는지 조차 알길이 없었다. 외국어를 잘하고, 뭔가 자신감 뿜뿜이면 Reddit 같은데 질문도 올려보고 고민을 다양하게 해보겠지만, 소심자로는 도무지 용기가 나지 않았다. 물론 가격이 3~40불이라고 적혀 있어 계산해보니 5~6만원 정도라... 질러 볼까 했는데, 배송비 등을 보니까(물론 무료도 있지만, 대개는 대행사가 있어야만 가능) 10만원 언저리.

고민하다가 Amazon에서 구매를 했다.
https://www.amazon.com/s?k=40AJ0135US&ref=nb_sb_noss

이베이가 저렵한 것 같지만, 배송비 장난이나, 국내 배송 불가가 은근히 많고, 제품이 중고인데, New라고 하는 곳도 있고..애매해서였다.

배송까지는 대략 1주걸린듯.

제품은 도킹스테이션과 아답터가 있는데, 이 아답터는 도킹스테이션과 연결되어 노트북에 전원을 공급한다.
그리고 도킹스테이션과 노트북이 연결하는게 좀 재미있는데, 왼쪽 슬라이드 부분이 노트북과 연결되지 않으면 꿈쩍도 하지 않는데, 처음에 그냥 밀어봤는데, 뭐가 잠긴듯 꿈쩍하지 않는 것이였다. 그래서 열쇠가 잠겨서 인가? 싶었는데, 그것도 아니였다. 처음에 연결이 잘 안되서 호환이 안되는줄 알아... 돈 날렸구나.. 했다.

노트북이 놓이는 자리 쪽에 눌리는 스위치 같은 부분이 여러개 있는데, 노트북이 잘 놓으면 그 부분이 모두 눌리면서 자연스럽게 슬라이드시켜 노트북과 연결하는 구조였다. 저 도킹판 위에 노트북을 이리저리(상하, 좌우)로 조금씩 이동시키다보면 아래로 조금 내려가면서 뭔가 체결되는 느낌이 있다. 그 시점에 왼쪽의 슬라이드를 밀어 노트북과 연결하면 된다.

모델명은 40AJ0135US 이여서, 대략 검색으로 충분히 찾을 수 있을 것이다.

다른 것 모르겠지만, 자신의 Lenovo 노트북 왼편의 포트 중 USB-C 포트가 두개이고, 다른 한쪽의 USB-C 포트가 이상하게 생긴 포트로 둘러싸인 구조라면 대부분 호환될 것 같다. (하지만 검색해서 나오지 않는다면 용기가 좀 필요할 듯)

지금은 매우 만족해서 쓰고 있고, 기능이나 성능 그 어떤 부분에서도 불만이 없다.

진즉 알았으면 좋았겠지만, 늦게 산만큼 가격은 저렴해진 부분도 있어 현재로는 불만 0 상태다.

728x90

현재 Synology NAS를 이용해서 이것 저것 활용하고 있다.
그 중에 하나가 Docker를 이용한 방법인데, 여기서 Bitwarden을 잘 쓰고 있다.

개인적으로 쓸때는 아무 문제가 없었는데, 사용자를 추가하려고 하니까,
접근이 안되는 것이다. 예전에는 URL 맨 뒤에, /admin 만 붙이면 들어가졌는데,
갑자기 사이트가 활성화 되지 않는 것이다.

잠깐 구글링을 했고 원인을 찾아 적용했다.

관리자 화면 띄위기

일단, 관리자 화면을 띄우려면, 해당 기능 활성화 전에, 관리자 접속을 위한 정보가 필요하다.
여러가지 방법이 있지만, 그 중 가장 간단한(물론 보안에는 그닥 권장은 못하지만) 방법을 적용했다.
바로 환경 변수에 ADMIN_TOKEN 이라는 값을 추가하는 것이다.
vaultwarden 컨테이너에 환경변수로 다음과 같은 값을 추가한다.
ADMIN_TOKEN
여기에 들어가는 값은 40개의 문자로 구성된 랜덤한 문자열이 필요하다.
여기서 Bitwarden을 띄워 40개 문자, 숫자, 대소문자, 특수문자까지 섞어서 만든다.
이렇게 만들어진 ADMIN_TOKEN을 환경변수로 추가하면 된다.


다만, 여기서 만들어진 토큰은 외부에 유출되지 않도록 한다.

이제 다시 vaultwarden 컨테이너를 다시 시작한 뒤, 자신의 bitwarden 사이트이 URL 맨 뒤에 /admin을 넣으면
관리자 페이지로 들어가는 관문이 나온다.

여기에 앞서 만든 토큰 값을 넣으면 드디어 관리자 페이지에 들어갈 수 있다.

 

728x90

전기 자전거를 구입하고 대략 1년 넘게 탔는데, 
현재 탑승시간 200시간을 넘기게 되었다. 
물론 중간 중간 갑자기 전원이 꺼지거나 무전원 상태로 굴리기도해서 100% 완전하게
탑승시간을 나타내는 것은 아니지만, 최소한 전기를 이용해 달린 시간만 따진다고
볼때 90% 이상은 맞는 시간...

다만, 전에 100시간 넘겼을때도 그랬는데, 시간 카운트가 99:59:59 에서 00:00:00 으로 넘어갈때
마치 초기화 되는 것처럼 누적거리도 없어지는데, 껏다가 다시켜면 거리가 원래대로 나온다.

199 시간 38 분에 찍고...
00시간 00분 초기화된 시점이 200시간.
다시 껏다가켜니, 200시간 현재 3752.6Km 달림

아마도 자전거로 어디를 놀러가거나 그냥 운동(?)삼아 탔다면 절대 못찍었을듯.
출퇴근이라는 명분이 있다보니 여기까지 온 것 같다.

728x90

Windows Command Line을 이용해서 스크립트를 종종 짤 때가 있는데, 

PID 값이 담긴 Text 파일을 읽어 안에 들어 있는 PID 값을 이용해 프로세스를 종료하려고 할 때 쓰려고 한다.

RUNNING_PID 라는 텍스트파일 여부를 가지고 하는데, 아래와 같이 짠다.

IF EXISTS RUNNING_PID (

SET /p PID=<RUNNING_PID

TASKKILL /PID %PID%

) else ( echo Not Running... )

 

 

728x90

이 작업은 이미 Obsidian에 잘 설명되어 있으며, N2O(Notion To Obsidian)라는 프로젝트의 설명이 잘되어 있었다.
https://help.obsidian.md/How+to/Import+data
https://github.com/visualcurrent/Notion-2-Obsidan

다만, 워낙 설명을 잘 읽지 않는 개인적인 문제로 약간의 작업의 오류가 있었고, 준비하는 과정이 좀 있어야 되서 그 내용에 대한 정리를 한다.

Notion에서 Export 하기.

먼저 Notion에서 현재 기록된 모든 내용을 다운 받도록 한다. 이걸 한번에 할 수 있는데, Notion에서 "설정과 멤버"에 들어가 "워크스페이스'의 "설정"으로 들어가면 맨 아래 쪽에 "콘텐츠 내보내기"라는 항목에 "워크스페이스의 모든 콘텐츠 내보내기" 버튼을 클릭한다.
그러면 내보내기를 위한 옵션들을 선택하게 나오는데, "내보내기 형식"에서 "Markdown & CSV"를 선택하고, "하위 페이지용 폴더 생성"에서 옵션을 켜주도록 한다.
그리고 내보내기 버튼을 누르면 페이지들을 내보내주기를 한다.
기다리면 최종적으로 다운로드 링크를 보여준다.
만일 페이지가 많으면 많을 수록 시간이 매우 오래 걸리므로 일단 내보내기 창을 닫고 기다리자. 완료되면 계정과 연결된 이메일로 결과를 보내준다.

실행 준비

Notion To Obsidian 이라는 프로그램이 Python으로 되어 있어, Python을 띄울 수 있어야 한다. 물론 Windows에서도 가능하지만, 필자는 아예 Linux가 있어서 그 안에서 했다. 단, GUI가 필요하므로 Linux는 Desktop 버전으로 사용하도록 한다.

이 프로그램은 git을 통해서 다운이 가능하다. git 없으면 git을 설치한 뒤, 다음과 같이 입력해서 Notion to Obsidian 프로그램을 다운 받자.

git clone https://github.com/visualcurrent/Notion-2-Obsidan.git

이 프로그램은 Python3 가 필요하다. 혹시 Python2 라면 Python3로 업그레이드하거나 교체해야 된다. 그리고 Python의 UI 관련된 기능을 추가로 설치해야 한다.

sudo apt install python3-tk

이 패키지는 Python관련 Window 기반 UI를 띄워준다. 꼭 이 패키지를 같이 설치한다.
마지막으로 PIP가 필요한데, 이 PIP가 있어야 추가적인 패키지를 설치할 수 있다. 보통 Python을 이용한 App을 돌리고 있다면 대개는 설치되어 있으나 혹시 설치가 안되어 있을 수 있으므로 다음 명령을 넣어 설치하도록 한다.

sudo apt install python3-pip

최종적으로 pip가 준비되었다면 다음 명령을 넣어 easygui를 구성한다.

pip install easygui

프로그램 다운로드

압축파일 확보

Notion을 통해서 다운 받은 파일은 보통 암호같인 긴 이름의 zip 파일이다. 이 압축파일의 압축을 해제한다. 압축을 해제하면, 다시 Export-xxxx....zip 파일이 더 생기는데, 이 파일을 앞서 git을 통해 다운 받은 폴더 위치에 넣는다. 확장자가 py가 있는 그 폴더에 넣으면 된다.

실행

다음 명령을 넣으면 프로그램이 실행된다.

python3 N2O.py

(만일 실행이 안된다면 위의 단계 중 누락되어 패키지 부족이나 버전 문제, 압축파일 위치나 N2O.py 파일들이 제 위치에 없어서 일 가능성이 높음)
그럼 다음 그림과 같이 UI 화면이 나오는데, 그곳에서 앞서 복사해넣은 Export-xxxx...zip 파일을 선택하도록 한다.

정상적으로 실행되었다면, 다음과 같이 표시된다.


최종적으로 만들어진 파일은 앞서 제시한 Export_xxxxx....zip 파일 맨 뒤 쪽에 Export_readyObsidian.zip 이라는 파일이 새로 생긴다. 이 파일을 가져온다. 그리고 이제 다운 받은 파일의 압축파일을 풀도록한다. Windows에서 기본적으로 제공하는 압축 프로그램으로는 압축해제가 잘 안될 수 있는데, 7-zip이나 반디집 같은 것으로 풀도록 한다.

보관소 열기 및 복사

Obsidian을 실행한다.
그리고 왼쪽 아래편 끝자락에 있는 "다른 보관소 열기"를 선택한다.

그리고 난 뒤, 맨 위의 보관소를 선택한 뒤, 메뉴 버튼을 클릭 후 "시스템 탐색기에서 보기"를 선택하도록 한다.

폴더가 열렸으면, 그 안에 새로운 폴더를 만들고 그 안에 앞서 압축을 해제한 내용을 복사해 넣는다.
Obsidian의 문서 구조와 폴더 안의 구조가 동일하니, 적당히 폴더를 구성해서 담아주면 된다. 

728x90

11번가에서 격하게 싸게 나온 물건을 구매했었다.

지금의 미친듯한 환율 직전이라서 그런지 몰라도, 진짜 격하게 싸게 나왔다.

혼자 대박대박하면서 받고, 밀린 업무 간신히 치우고 마친 Windows 를 11에서 10으로 내려야되는 시점에
이 SSD를 보드에 박았다.

처음에는 잘 설치되어 OK!!!!!! 했는데, 갑자기 재부팅을 하는데, Windows를 찾을 수 없다는 안타까운 사태가 터져버렸다.
뭐지 뭐지 하면서 다시 설치하려하는데, 해당 SSD가 바이오스 상에서 안뜨기 시작했다.
등줄에서는 식은땀이.. 쫙....

이거 어쩌지부터 시작해서 별의별 생각을 다했다. SSD를 기존것으로 다시 바꾸고, 데이터 쪽으로 옮겼는데, 
바이오스 상에서도 안나오던 것이 이제사 뜨지도 않는 것이다. 
난생 처음 RMA를 해야 되나 싶었다. 이게 국내 정식 벤더를 통해서 구매한 제품이 아니라, 11번가의 아마존 챤스로 구매한 제품이다보니, 국내 유통망을 통한 교환이라는 개념이 탑재되지 않은 상태라....

결국 Gigabyte 쪽으로 문의를 올렸다. RMA 되요? 라고...
그러자, 일단 ScanTool을 다운 받아돌려보라고 하길래 돌려봤는데, 왠걸 찾지못한다고 뜬다. 혹시나 해서 외장 NVME 도구를 써봤는데, 드라이브는 나오는데, 초기화하라고만 나오고, 해봐야 되지도 않는 것이다. 그래서 이런 상태니, RMA 되? 라고 다시 물어봤는데, 이번엔 구매처에 대한 정보를 알려줘야 진행이 된다고 하는 것이다.

난감.....

그래서 하는 수 없이 11번가의 고객센터에 문의했다.
하루 지나자 아마존 담당 고객센터에서 전화가 왔다. 물건을 확인해보니, 이 물건이 동작안된다는 사실을 메일에 담아달라고 하더라. 그래서 지금까지 Gigabyte 측에 문의한 내용과 가지고 있는 제품 사진등을 주었다.
그런데, 이렇게 보내면 고장난 사실을 알 수 없으니, 고장난 사실을 명확하게 확인할 수 있는 동영상으로 달라고 했다.
귀찮기는 했지만, 한두푼이 아니라서 결국 외장 NVME로 연결해서 상황을 보여주었다. 

그리고 다음날.
다시 전화가 왔다. 환불 해준다라고 했다. 마음속으로는 '휴.... 다행이다...'라고 생각했지만,
다른 한편으로는 '윽.. 교환.. 교환은 안되는 것인가!' 라는 생각이 들었다. 
사실 지금은 35만원이 되어 있다.

16만원 정도 했던게 지금은 2배가 되버린 상황....

 

그러나, 이렇게 내구성이 약하면 다시 물건을 받아도 어쩔 수 없을 것 같았고,
그냥 폐기해주면 된다고 하길래... 그냥 마음 접었다.

일단 환불 처리는 된 것 같다.(2~3일 후에 환불 금액 입금은 해준다고했다.)

안도의 한숨과 안타까움의 한숨이 겹친다. 

아직 나에겐 Gen4는 먼길인가 싶긴하다;;;;;;

 

 

하지만 11번가 아마존 업무 처리는 ....
만세다!!!!!
쵝오다!!!!

728x90

+ Recent posts

728x90