마이크로소프트는 서버시장의 문을 자주 두드립니다. 그리고 30~50%정도의 점유율을 가지고 있다고 언론에서는 이야기하는데 이상할 정도로 제 주변에는 Windows 서버를 쓴다는 사람이 적습니다.

 

대부분은 CentOS나 RHEL을 주로 쓰고 간혹 우분투나 IBM AIX정도입니다. Windows서버를 이야기 하면 다들 기겁합니다. 그런 비싸기만한 OS를 왜 쓰냐고요.

 

사실 서버시장은 굉장히 보수적입니다. 한번 들여놓은것을 바꾸려 들지 않습니다. 만약 바꿔서 문제가 생기면 시간마다 어마어마한 돈이 사라지니까요. 특히 IT쪽을 제외한 금융, 교육 등의 분야는 바꾸는것 자체가 용인되지 않는 분위기 입니다.

 

우리나라는 그나마 Windows서버의 점유율이 높은 편입니다. 그나마도 RHEL이나 오라클에 갉아먹히고 있다는 느낌이긴 하지만 그래도 2000년대부터 써오던 것이 있어서 그런지 점유율이 그럭저럭 있는 편입니다. 하지만 금융쪽은 HP-UX나 AIX등의 유닉스가 아직도 대세이고 카카오뱅크 출범이후 리눅스가 갉아 먹고 있습니다. 교육쪽은 솔라리스가 거의 점령한 이후 요즘은 RHEL등으로 바뀌는 듯한 모습이 보입니다. 아무튼 파이가 큰 곳은 Windows가 보이지 않습니다.

 

2000년대 초반 웜바이러스로 인한 인터넷대란이 있었습니다. 전국의 인터넷이 모두 끊기고 전국의 통신이 마비가 되는 사태였지요. 범인은 각 개인PC를 통해 전파된 웜바이러스였는데 Windows의 취약점을 뚫고 들어와서 퍼졌습니다. 그리고 이 웜은 모든 통신이 들어오는 혜화동 KT IDC를 마비시켜버리고 말았습니다. 국내의 보안업체들이 나서서 웜바이러스를 제거하는 프로그램을 배포하고 마이크로소프트에 책임을 묻는 등 많은 일이 있었는데 당시 KT IDC의 대부분이 WindowsNT ~ 2000을 쓰는 것을 알았습니다. (아마 ASP때문이 아니었을까 합니다.) 아무튼 이 당시를 겪은 이쪽 분야사람들은 Windows서버라고 하면 질려버리는 듯 합니다. (Sun microsystems와 마이크로소프트가 모두 인터넷대란으로 인해 작살난 서버였습니다. 하지만 Sun보다 마이크로소프트의 피해가 더 극심했다고 합니다.)

 

최근 IIS 설정을 했다며 자랑을 한 누군가의 글이 보였습니다. 그런데 저는 속으로 IIS? 그걸 왜 써? 라는 생각이 먼저 들더군요. IIS가 나쁜 물건은 절대 아니지만 저 인터넷대란 당시의 Windows서버에 안 좋은 기억이 있다보니 IIS쓴다는 소리에 기겁을 했습니다.(IIS는 windows에 내장된 전용 프로그램입니다.) 서버실습을 하려고 한다면 그리고 우리나라에서 그걸로 밥 빌어먹으려면 Apache나 nginx로 windows에서 연습 후에 RHEL이나 CentOS에서 다시 재 구축을 하는 것이 제일 좋다고 말하고 싶었습니다.

 

예전에 국내에서 꽤 유명한 업체에서 2020년에 Windows Server 2003을 쓴다고 해서 제가 황당해 했던 기억이 있습니다. 제 친구놈이 바로 해당 업체를 해킹해서 내부 파일이 나온 다는 것을 보여줬고 (다른것도 아니고 스마트폰으로 그냥 쓱쓱 했습니다.) "이게 우리나라 현실이다." 라고 하면서 웃더군요. 이유는 신규 관리자가 오지 않아서 그렇답니다. 기존 관리자는 퇴사했고 신규 관리자는 Windows 서버를 경험자가 RHEL에 비해 드물답니다. 그래서였는지 해당 업체는 최근에 RHEL로 교체했다는 이야기가 들리네요. 

 

이쯤되면 적어도 국내에선 Windows서버의 미래가 좀 암울하지 않을까.... 싶습니다.

,

https://github.com/MoorDev/Tacotron2-Wavenet-Korean-TTS

 

MoorDev/Tacotron2-Wavenet-Korean-TTS

Korean TTS, Tacotron2, Wavenet. Contribute to MoorDev/Tacotron2-Wavenet-Korean-TTS development by creating an account on GitHub.

github.com

지속적으로 기존에 있던 hccho2 님의 Tacotron2의 소스(https://github.com/hccho2/Tacotron2-Wavenet-Korean-TTS)로 수정중이다.
Tensorflow 1.x를 썼기에 그에 따른 구버전 설치 문제가 있었고 (그동안은 tensorflow.contrib 모듈로 인해 1.x 사용이 강제 되었지만 TFA(https://www.tensorflow.org/addons/overview?hl=ko)의 등장으로 2.x로의 포팅이 어렵지 않게 되긴했다.) Python 3.6~3.7 이외에서 오류가 발생하는 문제도 있었다.

하지만 이 코드가 제일 확실한 한국어 Tacotron 소스였고 제일 잘 돌아가는 코드였다. (무엇보다 학습속도가 빨랐다.)
다만 문제는 내가 만든 데이터셋을 적용하려 하니 고생이 많았다는 것.

KSS데이터셋https://www.kaggle.com/bryanpark/korean-single-speaker-speech-dataset 은 테스트하기 제일 좋은 물건이었고 이것을 이용해 만든 모델을 전이시켜서 새로운 목소리로 하는 글도 많이 있었는데 결과물은 어딘가가 계속 부족했다. 즉, 궁극적인 이유는 학습데이터가 부족한것.

그리하여 데이터 증강기법을 음성에 적용하기로 했고 sox의 tempo와 dither 기능을 사용해 목소리의 속도를 미묘하게 바꿔 데이터를 증강하였다. tempo 0.9 0.85 이 둘만 해도 사람 귀에는 크게 거슬리지 않는 소리가 나오며 1.05배도 큰 차이를 못 느낀다. 하지만 dither 기능으로 이 모든 음성은 Mel Spectrogram이 전혀 다른 녀석이 튀어나오며 데이터 증강효과가 발생한다. (하지만 속도만 조절한것이기에 문장자체는 동일하므로 데이터 증강 효과가 없을지도...)

 

#!/bin/bash
find ./audio/ | while read entry
do
    sox "${entry}" "${entry//.wav/_slow.wav}" -V tempo 0.8
done

위 bash 스크립트를 audio 폴더 밖에서 만들어서 실행하면 _slow가 붙은 wav파일이 추가된다. recognition.json파일은 어차피 이 글을 보고 있는 이상 dataset을 만들줄 알고 있다는 의미일테니 길게 설명하지는 않을 것이다. 해당 json파일에 추가된 slow파일 리스트를 추가하면 데이터 증강이 된다. 이 파일을 수정하면 0.8배 0.9배 1.1배(빠르게 만드는 것은 발음이 뭉개지기 때문에 추천하지 않음)데이터 증강을 할 수있다. 이건 응용하는 사람에 따라 다를 것이다.

본래 데이터셋이 말이 좀 빠르다면 0.7배까지도 문제 없을 것으로 생각된다.


그리하여 어느정도 괜찮은 결과는 나왔지만 문제는 데이터의 증가폭이 너무 큰 나머지 학습속도가 무지막지하게 느려졌다. 하지만 뭐.... 결과만 잘나오면 장땡이지.

이외에도 수정한 hparam을 정리한다. hparam.py를 열면 잔뜩 있는데 여기를 수정하면서 학습튜닝하는것이 노가다지만 의외로 재미있다.

griffin_lim_iters = 100,
#기본은 60이며 Mel-spectrogram을 Linear-spectrogram으로 바꾸고 이를 다시 시간영역으로 바꾸는 알고리즘. Wavenet이 등장해서 이걸로 대체하기도 하지만 속도면에서 아직 Griffin-Lim이 나에겐 더 맞는 방식이었다. Iters를 100이상으로 늘리니 조금 더 들어줄만한 음성이 나온다.

main_data_greedy_factor = 0.5,
main_data = ['./data/monika'], # 이곳에 있는 directory 속에 있는 data는 가중치를 'main_data_greedy_factor' 만큼 더 준다.

이 파라미터는 어느 목소리를 메인으로 할 것인가를 결정한다. Multi Speaker 는 말이좋아 multi-speaker지 엄밀히 말해서 부족한 데이터를 대신해 메인이 되는 것을 대량의 데이터가 도와주는 것에 가깝다. greedy_factor를 많이 주면 많이 줄 수록 메인 데이터 위주로 학습을 이뤄지며 보조데이터셋의 학습속도는 떨어진다. 적절한 값을 찾지 않으면 모두 학습이 느려지는 결과를 초래한다. 대신 Overfitting은 잘 이뤄지지 않는다.

silence_threshold = 1,
trim_silence = True, #Whether to clip silence in Audio (at beginning and end of audio only, not the middle)
기본은 0인데 무음부분을 삭제한다. 앞뒤의 무음만 삭제하므로 학습효과를 올려주는 효과가 있다.

Nvidia의 논문에 따르면 앞뒤에 무음이 있으면 Attention이 잘 잡히지 않아 학습속도가 떨어진다고 한다.

일단 이 정도로 파라미터를 수정하고 돌리니 1시간 음성을 3시간으로 뻥튀기 하고 200k STEP이 돌아가는 와중에도 attention은 아직 제대로 안 잡힌다. 그런데 조금씩조금씩 잡혀가는게 1000k쯤되면 문제 없을 듯.

뭔가 300k부터 align이 안 잡히는 것이 보인다. 이건 문제가 있다.
역시 dataset이 문제 아닐까 싶은데 자세히 보니 내 데이터는 stereo로 되어있었다. 혹시 이건가...?

일단 mono로 바꾸기 위해서 wav파일들이 있는 곳에서

find . -name '*.wav' -exec ffmpeg -i '{}' -ac 1 '{}' \;

위 명령을 이용했다. 어떻게든 되겠지.

그리고 https://github.com/carpedm20/multi-speaker-tacotron-tensorflow/issues/4#issuecomment-368457924

 

training이 잘 안됩니다. · Issue #4 · carpedm20/multi-speaker-tacotron-tensorflow

샘플로 주신 prepare_jtbc.sh을 실행해 만든 audio data를 가지고 single speaker로 20만 step이상 학습을 진행했는데도, 여전히 음성이 제대로 안 나옵니다. 문제가 뭔지 알 수가 없습니다. 혹시 제대로 음성

github.com

여기보니 reduction factor를 5로 바꾸니 더 잘 된다는 이야기가 있다. 이유는 여전히 모르겠지만... 일단 손을 대보는 중.

위의 방법이 확실히 효과가 있었다!
Reduction Factor 5
데이터의 Mono화(ffmpeg이용)
데이터 증강(sox이용)

이 3가지가 정답이었다!
물론 아직은 노이즈가 느껴지지만 Align이 확실히 잡힌다

12000Step의 Alignment 상황이다.
Hyper parameter와 데이터증강기술(?)그리고 데이터 셋 정리의 승리

 

 

이제 여기서 pb로 만들고 기타 정리를 더 하면 모바일에서 나만의 TTS를 만들 수 있을지도 모른다

https://github.com/keithito/tacotron/issues/95

 

Freezing and Optimising for Inference · Issue #95 · keithito/tacotron

I've been attempting today to create a frozen graph, and then optimise that graph for inference (to evaluate performance for an embedded device). This model lacks a placeholder node for inferen...

github.com

여기서 원본 코드를 만든 keithito의 말에 의하면 Output Node name은 "model/inference/dense/BiasAdd:0" 이거라고 하니까 ckpt를 pb로 만드는건 어렵지 않을지도

물론 결과물은 Griffin-Lim을 한번 해줘야 하니까 여기서 성능을 꽤 잡아 먹겠지만...

 

대충 이런식으로 하면 bazel로 pb할 수 있다고 한다.

./bazel-bin/tensorflow/tools/graph_transforms/transform_graph \ --in_graph="../TTSDataset_keith/tacotron-60k/freezed.pb" \ --inputs='import/datafeeder/input_queue' \ --outputs='model/inference/dense/BiasAdd:0' \ --out_graph='optimized_ta_keith_60k.pb' \ --transforms='strip_unused_nodes(type=float, shape="1,224,224,3")fold_constants(ignore_errors=true) fold_batch_norms fold_old_batch_norms quantize_weights quantize_nodes sort_by_execution_order' \

 

해보면 대충 뭐..알겠지

,

한때 윈도우관련 파워유저들의 각종 강좌와 팁들이 공유되던 거대 사이트였는데 이름을 매니안닷컴이라고 바꾸고 종합컴퓨터 커뮤니티로 바꿔버린뒤로 간적이 별로 없습니다.

최근들어가보니 망했네요.

여기가 대박이었던것이 Windows98부터 WindowsXP 시대까지 별의별 팁과 유틸리티들이 소개되고 공유되었습니다.
WindowsPE라던가 Windows의 개발버전 유출소식 등 각종 Windows관련 이야기가 많이 나왔습니다.

당시는 CD시대였기에 오버버닝해서 윈도우 설치CD를 굽기위해 각종 CD를 굽는 프로그램들이 나오기도 했고 무인설치(그러니까 디스크를 넣고 가만히 냅두면 알아서 설치끝)방법이 공유되기도 했으며 최신 OS의 호환성 문제가 터질때마다 방법을 찾기도 했습니다.
특정게임이 출시 될때마다 개조드라이버들이 많이 공유되기도 하는등 진짜 거대한 커뮤니티였고 그만큼 수준도 높았습니다.

저도 한때 여기서 활동하면서 지식을 많이 얻었는데 2021년 현재 그 지식들은 별로 쓸 일이 없네요.

애초에 윈도우는 소스가닫혀있으니 무언가 해킹을 통해서 알아낸다고 해도 시간이 지나면 쓸모가 없습니다. 그리고 윈도우 파워유저들도 WinBBS시절만큼 활동적이지 않습니다. 요즘은  OS의 구석까지 뜯어보는 것이 어려워진탓이겠지요. (XP도 그리 뜯기 쉬운 물건은 아니긴 했습니다.)

그리고 윈도 서버도 국내에서 많이 시장에서 사라졌습니다. 심지어 있다고 해도 예전처럼 극한으로 튜닝해서 쓰지도 않고요. 그땐 윈도 서버 튜닝하는 것도 많이 돌아다녔는데 그것도 굳이 할 필요가 없고요.

파워유저의 수가 줄었다는건 그만큼 윈도가 쉬워졌다는 의미겠지요??? 좋은 현상인걸까요?

,

제발 상품설명에 번역을 해놨으면 좋겠다.

이게 무슨 말이냐면 최근 인터넷쇼핑몰을 찾다보면 중국회사와 연계해서 물건을 직접 중국에서 배송하는 경우가 꽤 많습니다.

이전에는 중국에서 물건을 떼서 자신들의 회사상표를 붙이는 경우(OEM)이 많았다면 요즘은 그냥 중간유통만 하고 중국회사의 상표를 그대로 쓰는 경우가 많아졌더군요.

나쁜것은 아닙니다. 해외 직구가 활성화된 요즘 해당제품을 통관번호 없이 직접 살 수 있다는 것은 초보자들에게 엄청난 장점이니까요.

그런데 그로인한 폐해가 나오고 있습니다.

제품설명란은 보통 제조사가 직접 건네준 카탈로그를 넣는것이 일반적입니다. 이전에는 한국상표였기에 한국업체가 만든 카탈로그가 들어갔습니다. 최소한 글로벌업체라도 한국어 아니면 영어로라도 스펙은 볼 수 있게 했습니다.

그런데 중국업체의 상표를 쓰다보니 카탈로그로 되어있는데 그걸 고대로 제품설명란에 넣습니다.

대한민국에 사는 사람들 중 중국어를 읽는 사람은 얼마나 될까요? B2B라면 그럴 수 있지만 보통 쇼핑몰은 B2C입니다. 소비자에게 직접 팔겠다는건데 한국인을 대상으로 하고 카탈로그를 중국어를 주면 누가 읽을까요?

비슷한것으로 책이 있습니다. 번역서와 원서 어느것이 더 잘팔릴까요? 교수나 박사같은 사람도 번역서를 우선 챙깁니다. 원서는 혹여나 번역으로 인해 왜곡될것을 감안해야하는 경우에 선호합니다. 그리고 이건 애초에 박사급 되는 사람들은 국제학회에 나가기 때문에 영어를 기본으로 깔고 가니까 가능한것이지요.

근데 수입제품도 한글 의무표기한다고 스티커라도 붙이는게 있는데 제품설명이 중국어면 대체 어쩌라는건지 모르겠습니다.

P.S 같은 제품인데 어떤 가게는 번역을 해서 올렸고 어떤가게는 중국어 그대로 올렸더군요. 번역한 가게는 5000원 정도 더 비쌌지만 이쪽이 더 판매량이 더 높았습니다. 보고 있나? 보따리상들?

,

잉크스케이프, Blender, Gimp

이 셋은 오픈소스 CG 삼대장이라 불립니다.

 

벡터이미지의 잉크스케이프

비트맵이미지의 Gimp

3D의 Blender

 

이 중에서 제일 성능이 구리고 문제 많기로 소문난 것이 잉크스케이프 입니다.

 

하지만 벡터이미지를 만드는 것에는 Adobe Illustrator를 제외하면 이것밖에 없다고 해도 과언이 아닙니다.

아니면 CAD를 쓰는 방법도 있기는 한데 애초에 CAD는 그림그리라고 만든것이 아니라서 Spliine 처리하다보면 빡칩니다.

 

그리고 어차피 대부분 벡터 이미지 쓰는 곳이면 *.ai파일 아니면 *.svg인데 SVG야 잉크스케이프의 네이티브 파일이니 그렇다 치고 ai파일 읽어 들이는 것도 잉크스케이프에서는 문제가 없어서 간단한 작업에는 크게 문제가없습니다.

 

그래서 잉크스케이프가 잘 쓰이는 곳이 있습니다.

 

보통 회사 로고들은 ai파일로 제공합니다. 하지만 그 로고를 도면에 넣으려면 어찌 되었든 AutoCAD형식으로 바꿔야 합니다. (LibreCAD는 PDF형태로 된 것을 바로 읽는다고 하지만 그것도 완벽하지 않습니다.) 특히 공개된 포맷인 DXF가 여기저기 편리합니다. 그래서 잉크스케이프로 ai파일을 읽은 다음 DXF로 변환해서 넣으면 도면에 깔끔하게 들어가지요.

 

그런데 회사에서 쓰기 위해 잉크스케이프 1.0을 쓰던 도중에 ai나 PDF로 만든 DXF가 오류나더군요. AutoCAD에서 읽히지가 않아서 LibreCAD로도 해봤는데 마찬가지로 오류가 났습니다.

 

방법을 몰라서 이리저리 옵션을 바꾸면서 수많은 오류를 경험하고 그냥 잉크스케이프 버전을 0.92로 낮추니까 잘 되네요.

그냥 ai파일을 잉크스케이프로 읽은 다음에 dxf형태로 변환하는 것으로도 아무 문제가 없습니다.

아무래도 동봉된 Python이 문제된것이 아닐까 싶은데 잉크스케이프 0.92버전은 Python2.7을 사용하고 이후 버전은 Python3를 사용합니다. 그리고 저는 Python3을 버전별로 깔아두고 쓰고 있지요. (32비트, 64비트, 3.6 3.7 3.8...) 이게 원인일 가능성이 매우 높습니다.

 

리눅스야 시스템에 설치된 Python을 적극 활용하게 패키징을 하니 문제가 없지만 (정 안 되면 버전과 관련없이 쓸 수 있는 SNAP이 있지요.) 윈도우는 시스템에 Python을 추가로 설치하다보니 기존에 설치된 Python과 충돌이 난 듯 합니다.

 

예로부터 오픈소스 삼대장은 윈도우에서 성능이 그닥 잘 안나오긴 했는데 이번에 또 한번 실감하네요.

,

대부분 우리나라에서 스마트폰은 삼성아니면 애플입니다.
그나마 있던 LG는 사업철수를 결정했고 중국제조사는 눈에 들어오지도 않으며 그 외의 다른 제조사들도 떨이 신세된지 오랩니다.

그런데 애플이야 애플고유의 생태계가 잘 되어서 그렇다치고 삼성이 독주인것도 이유가 있을겁니다.

일단 하나는 삼성페이인데 이건 넘어가고 저는 Good Lock이 큰 장점이더군요.

안드로이드의 구글 정책에 의해 제조사 커스텀이 많이 사라졌는데 Good Lock은 그냥 프레임워크를 덮어버리면서 커스텀롬에서만 제공되던 기능을 순정상태에서 제공합니다.

혹자는 Good Lock을 씀으로서 삼성만의 안드로이드가 완성된다고 하더군요.

다만 단점이 있는데 프레임워크를 바꾸는 작업이 수반되므로 안드로이드의 버전이 바뀌면 기능이 사라지기일수 입니다. 이내 부활하기는 하는데 시간이 좀 걸리지요. 그냥 저는 OS업데이트를 6개월쯤 뒤에 합니다.

그래야 GoodLock이 지원되더군요.

일단 갤럭시 스토어에서 Good Lock을 검색했을때 뜬다면 해당 기기는 Good Lock이 지원됩니다.

하지만 진정한 Good Lock은 내부기능에서 시작됩니다.

Good Lock만으로는 기능을 쓸수없고 Good Lock내부에서 추가기능을 설치해야합니다.

개인적으로 LockStar는 쓸일이 없어서 안 쓰게 되더군요. 결국 지워버렸습니다. 내비게이션바를 내마음대로 바꾸는 NavStar도 쓰는 것만 씁니다.

QuickStar는 통신사로고를 지워버리는 필수 앱입니다. 쓸데없이 통신사로고를 띄우는 고집도 대단하지만 그걸 날리는 삼성도 고맙더군요.

안드로이드 11에서는 Home Up에 편입된 Task Changer는 기존에 커스텀롬으로 많이 보던 레이아웃으로 바꿔주는데 이게 물건입니다. AOKP롬에서 사용되던 레이아웃인데 구글이 제시한 페이지뷰 방식보다 더 직관적입니다. Task Changer를 한동안 못 찾아서 헤맸는데 이 기능을 살리고 나니 어찌나 반갑던지 너무 편하더군요.

그리고 Good Lock의 기능은 아니지만 One Hand Operation +도 필수 앱으로 통합니다. 어딘가 부족한 제스처 기능을 보조해주고 편하게 옆으로 쓰는것으로 스크린샷을 찍는다거나 뒤로가기 기능을 할 수 있습니다. 쓰다보면 저도 모르게 모서리에서 손가락을 움직이는 자신을 볼 수 있습니다.

사실 이것도 다른 커스텀롬에서 많이 봤던것이지만 커스텀롬이 아닌 순정롬에서 이를 지원하는게 중요한것이지요.

사실 삼성 스마트폰이 겁나게 비싸긴하지만 이래서 바꾸기가 애매하긴합니다. 어쩌면 이게 삼성이 노린것일수도 있고요.

,

http://gpl.iptime.org/gpl/HDD1/GPL/

Index of /gpl/HDD1/GPL/

gpl.iptime.org

여기에가면 지금까지 판매된 Iptime펌웨어의 소스코드가 공개되어있습니다. 툴체인도 함께 올라와 있고 Readme를 보면 어떤 펌웨어에 어떤 툴체인을 써야하는지 잘 나와 있습니다. 자세히보면 ed나 vi같은것도 있고 iptable도 직접 설정이 가능합니다.

이렇게보니 의외로 오래된 공유기를 장난감으로 만드는데 무리없을것 같습니다. 이미 공유기용 리눅스가 존재하긴 하지만 직접 제조사에서 만든 정식 펌웨어가 더 안정적이지요.

저희집에는 a604 한대가 있습니다.대략 2014년쯤 샀고 암튼 오래됐습니다. 이걸 간단한 응답서버로 만들어볼까 합니다. 응답 프로그램을 컴파일해서 넣고 init쪽을 건드려보면 되겠지요. 그리고 잘 된다면 a604는 할 수 없는 Mesh가 지원 될수도 있겠고요.(a604R은 할 수 있지요. 소스코드를 뜯어봐야겠지먀)

암튼 새로운 장난감이 생겼군요.

,

우선 20H2에서는 이런일이 없었던것 같은데 1809나 1903에서 일어난 것이라 대충 적습니다.

프린터 관련해서 문제가 은근히 있었는데

간단하게 프린팅을 하면 프린터가 아무짓을 안하고 멍때리고 있고 Windows의 프린터는 작업을 열심히 보낸다고 뜹니다.

한쪽은 일하고 있다고 뜨고 한쪽은 일을 안 하는 상황

이건...Windows의 버그입니다.

서비스에서 Printer Spooler를 껐다 켜주면 작업이 들어가게 됩니다. 간단하죠?

 

그래서...

 

프린터안될때.zip
0.00MB

이걸 자동으로 해주는 스크립트를 만들었습니다.

 

위 파일의 압축을 풀고 프린터안될때.cmd 파일을 실행하면 관리자 권한으로 실행을 요구하는데 여기서 예를 누르면 Priniter Spooler 서비스가 꺼졌다가 다시 실행 됩니다.

 

이 방식을 사용하면 프린터가 안 되는 문제의 일부는 해결 가능하실 수도 있겠습니다.

,

맑은 고딕은 굉장히 호평 받은 폰트입니다.

작아지면 잘 안보이고 크면 형상이 너무 구린 굴림과 다르게 작아도 잘 보이고 커도 글자 형태가 잘 보입니다.

 

그래서 애플 컴퓨터를 쓰는 사람들은 이를 엄청 부러워했었지요. 지금은 맑은 고딕과 비슷한 산돌 고딕이 들어갔지만요.

 

그런데 리눅스에선 Noto Sans(Source Han Sans)가 쓰이면서 UI는 신경을 아무도 쓰지 않아도 될 정도가 되었습니다.

 

그래서 맑은 고딕이 없던 XP 이전 시절에 일부 프로그램에서는 나눔바른고딕이나 Noto Sans를 내장해서 만들기도 하지만 윈도우에는 이미 맑은 고딕이라는 걸출한 기본 폰트가 있다보니 이젠 맑은 고딕을 다들 적극적으로 씁니다.

 

문제는... Wine에서 이런 프로그램을 쓰려고 하면 맑은 고딕이 없으니 대체 폰트를 써야 한다는 겁니다. 그런데 굴림시절에도 그랬는데 여기서도 맑은 고딕을 하드코딩 해버리는 만행을 저지르는 일이 일상적입니다. 대표적인 것이 카카오톡...입니다.

 

나눔고딕을 설치하면 나눔고딕이 맑은 고딕을 대체 할 수 있지만 이것조차 완벽하지 않지요.

그.래.서.

https://moordev.tistory.com/176

 

굴림 날리고 나눔고딕으로 대체하기

http://moordev.tistory.com/175 이 포스팅 바로전에 슬픈 굴림이야기라는 포스팅을 잠시 했었습니다. 내용은 대충 Wine으로 실행 되는 프로그램중에 굴림을 지정해서 사용하는 경우가 있으며 해당 프로

moordev.tistory.com

나눔고딕으로 가짜 굴림을 만들어서 대체했던 것처럼 Spoqa Han Sans(Noto Sans기반의 경량화 폰트)를 기반으로 가짜 맑은 고딕을 만들어서 이를 대체해 보는 것이지요.

 

방법은 굴림때와 똑같이 만들었으니 설명은 따로 안 하겠습니다.

malgun.ttf.7z
9.74MB

이 파일이 바로 이름은 맑은 고딕인데 내부는 Spoqa Han Sans인 폰트입니다. 이걸 설치하면 Wine 프로그램에서 하드코딩된 프로그램도 한글이 잘 뜨게 될겁니다.

 

그리고 NotoEmoji-Regula도 추가해 넣어서 이모지도 잘 뜨게 될겁니다. (다만 컬러 이모지가 아닌 흑백 이모지입니다.)

 

이런 가짜 폰트들이 많아지는게 좋은 일은 아니지만 그래도 쓸 수 있다는게 얼마입니까.

,

이전에 scrcpy를 유용하게 쓰고 있다는 이야기를 했었습니다.

https://moordev.tistory.com/323

 

scrcpy로 우분투에서 안드로이드 스마트폰 미러링하기

우분투에서 안드로이드 게임을 하거나 안드로이드 에뮬레이터를 돌리는 것은 꽤나 어렵습니다. 기껏해야 Genymotion정도가 안드로이드를 돌리는데 겨우 쓸만합니다. 그리고 대부분 안드로이드 게

moordev.tistory.com

 

실제로 미러링임에도 딜레이가 적었으며 디버그 모드를 활성화 해서 PC를 기억해두면 연결후에 바로 화면이 뜨는 등 매우 편리한 프로그램이었습니다.

 

그런데 사용하고 있는 PC가 아니라 오래된 랩탑에 scrcpy만 설치해서 필요에 따라 스마트폰 화면을 띄우는 독으로 만들면 어떨까라는 생각을 했습니다.

 

비슷한것으로 삼성Dex가 있고 더 옛날로 돌아가면 모토로라의 아트릭스가 있겠네요.

일단 Dex나 아트릭스나 있으면 좋겠지만 삼성 휴대폰이 아니더라도 넓은 화면으로 스마트폰을 쓰고 싶은 사람들도 있을 것이고 외부 모니터를 지원하지 않는 휴대폰도 있을 것이며 때에 따라서는 HDMI모니터 대신 오래되서 버려진 랩탑을 사용하는 또다른 방법이 될 수도 있겠다는 생각을 했습니다.

 

우선 만들어진 이미지는 

https://drive.google.com/file/d/1McZMh8MxRRkGEghZtrtM52wuuOyduZ1Y/view?usp=sharing

 

custom-live.iso

 

drive.google.com

여기서 다운로드 받을 수 있습니다. Debian 10 Buster 기반이고 필요에 따라 Debian 11 Bullseye의 패키지 일부를 백포트해서 설치했습니다.

MD5 2e2118cf81dcd620547bc14505a9a288 

 

해당 이미지를 balenaEtcher로 USB에 굽거나 CD로 구워서 PC로 부팅합니다.

 

그리고 디버그 모드가 설정된 안드로이드 휴대폰을 USB로 연결하면 끝입니다. 디버그 모드 설정은 여기서 굳이 설명 안 해도 찾아보면 많이 나오니 따로 설명은 안 하겠습니다. 참고로

https://4343282.tistory.com/267

 

USB디버깅 모드) 안드로이드 개발자 옵션 활성화 하기

 USB디버깅 모드는 프로그램을 개발하는 개발자, 마케팅을 진행하는 마케터들에게는 필수 기능입니다. 안드로이드 기기에서 기본적으로 제공하는 '안드로이드 개발자 옵션(USB 디버깅 모드)'를

4343282.tistory.com

여기 자세히 나와 있네요.

 

그러면..

https://youtu.be/QGEC9VW_tjM

이렇게 쓸 수 있습니다. 여기에 몇가지 단축키를 알아두시면 더 편리합니다.

 

왼쪽 Alt + O = 스마트폰 화면 꺼짐

왼쪽 Alt + Shift + O = 스마트폰 화면 켜짐

왼쪽 Alt + P = 전원 버튼

왼쪽 Alt + R = 화면 돌리기

왼쪽 Alt + 방향키 위아래 = 볼륨 조절

왼쪽 Alt + H = 홈버튼

마우스 오른쪽 버튼 = 뒤로가기

Ctrl+드래그 = 핀치투 줌

 

자세한 내용은 SCRCPY 설명서를 참조 하시면 됩니다.

 

이런 만드는 방법은 다음과 같습니다.

Virtualbox를 준비합니다.

Debian을 Virtualbox에 설치합니다.

설치가 끝난 뒤에 Debian에 xorg, nodm, openbox, adb, scrcpy 를 설치합니다. (scrcpy는 bullseye 이상에서 제공합니다. 그러므로 Debian 11 이상 사용을 추천)

/etc/default/nodm 파일에 

 

NODM_USER = "설치할때 정한 로그온계정"

 

이것을 안 하면 root로 로그인 되어버립니다. 보안상 문제가 있겠지요.

 

/etc/xdg/openbox/autostart

파일을 열고 마지막줄에 다음과 같이 적습니다.

 

while :; do adb wait-for-device && scrcpy; done

 

이제 openbox의 단축키를 일부 수정합니다.

/etc/xdg/openbox/rc.xml 파일을 수정합니다.

 

<keyboard>

  <keybind key="XF86PowerOff">

    <action name="Execute">

      <command>sudo shutdown -h now</command>

    </action>

  </keybind>

</keyboard>

 

<keyboard> 안을 이것으로 바꿔버립니다. (단축키 충돌 방지를 위함)

 

그리고 shutdown 시 암호를 묻지 않게 하기 위해서

(참고 : https://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without-sudo-password/)

 

sudo visudo

%sudo ALL = NOPASSWD: /sbin/shutdown

 

위 내용을 추가합니다.

 

이제 이것을 LinuxRespin을 사용해서 백업합니다.

cd /tmp

wget gitlab.com/remastersys/LinuxRespin/-/raw/master/respin_4.0.0-2_all.deb

sudo dpkg -i respin*.deb

sudo apt install -f

 

이제 백업을 합니다.

 

sudo respin backup

(backup대신 dist를 해도 되나 nodm이 오류 날 수 있음)

이제 /home/respin/respin에 iso파일이 하나 있을 겁니다. 이것은 표준 iso이므로 이걸 하이브리드 iso로 만들어서 USB에 바로 심을 수 있게 만듭니다.

 

sudo apt-get install syslinux isolinux syslinux-utils syslinux-efi
cd /home/respin/respin

isohybrid *.iso

이제 해당 iso파일을 VM밖으로 꺼내와서 사용하면 끝. (VM밖으로 꺼내는 것은 네트워크를 사용하던지 아니면 알아서 하시면 됩니다.

,