며칠전 1회용 전자 담배 하나를 충전하여 계속 사용할 수 있게 개조를 한것을 본 다른 동료가 본인의 것도 가능하냐고 문의를 해왔습니다.
무의 한 제품은 Vuse go 라는 제품이고 아주 작고 귀여운 모습을 한 1회용 전자 담배입니다.
일단 가능할 것 같다고 했는데요, 우선 배터리가 완전 방전되지 않도록 지금 상태에서 바로 개조하는게 좋겠다고 하니 선 뜻 내주었습니다.
요렇게 생긴 제품이지요.
우선 분해를 해야 하니 겉에 붙어있는 건 떼어 내기로 하였습니다.
스티커를 떼어내고 나니 은색의 금속 몸체가 나오는 군요.
전체가 플라스틱인줄 알았더니 중간의 몸체는 금속으로 만들어져 있었습니다. 그렇다면 위쪽과 아래쪽이 분리가 된다는 의미가 되겠네요.
먼저 위쪽 틈사이로 얇은도구를 이용하여 틈을 벌려 봅니다.
그리고 열었습니다 ㅋ
네. 예상한 데로 상부에는 액상 탱크가 있고 중간에 리튬 이온 배터리가 있네요. 아마 아래쪽에 공기 흡입을 이용한 스위치가 있는 것으로 보입니다.
아래쪽도 분해해 보겠습니다. 역시 날카로운 도구로 틈을 만들어 빼내면 됩니다.
네 이제 완전히 분해가 되었습니다.
전에 재활용 했던 BELOW MONS 제품에 비하여 뭔가 만듬새도 훨씬 좋고요. 소재도 훨씬 고급 스럽습니다. 이정도 품질의 제품을 1회용으로 만든게 조금 아쉬울 정도입니다.
그래서 저는 이 제품을 여러번 사용할 수 있는 제품으로 개조할 예정인데요, 우선 아직 탱크에 액상이 많이 남아있기 때문에 배터리가 방전되는 것을 막기위하여 충전 보드를 달아줄 계획입니다. 액상을 다 사용하는 동안 배터리가 최저 전압까지내려가는 불상사가 일어나면 배터리를 버려야 하기 때문이죠.
USB C 타입으로 리튬이온 배터리를 충전할 수 있는 보드를 하나 준비합니다. 알리에서 구입하면 하나에 500~1000 원 사이면 구입 할 수 있는 그런 제품입니다. 워낙 개조할 뷰즈고 제품의 크기가 작고 공간의 제약이 많은 관계로 제가 가지고 있는 부품중에 가장 작은 녀석을 준비했습니다.어디에 어떻게 넣을까 구상을 해보며 요리조리 끼워 맞추어 봤는데요그러던 중 딱 맞는 공간을 찾았습니다.
쫘좐~ 숨어있는 보드를 찾으셨나요? ㅋㅋ 네 바로 배터리와 에어 플로우 스위치 사이에 딱! 아주 딱 맞는 공간이 있네요. 뭐 이건 더도 말고 덜도 말고 충전 보드를 넣기 위한 자리라고 볼 수 있겠습니다.바로 아래쪽 뚜껑에 구멍뚫기 작업 들어갑니다. 한참을 드릴로 뚫고 줄로 갈아주고... 쓱쓱 싹싹 드레멜로 윙윙 갈아내주면 구멍이 딱 만들어 집니다.
완전 딱 맞는구멍 뚫기 성공.
뭐 이제다 끝났습니다. 전선만 배터리의 +, - 에 연결하면 끝이네요.
이런경우 무조건 조립하기 전에 충전 테스트를 해봐야 합니다. DIY 에는 언제나 복병이 있을 수 있기 때문인데요, 조립을 다하고 났더니 충전이 안된다던가.. 충전보드가 해필 불량이었다던가.. 납땜을 하면서 어딘가 냉납 현상으로 단선이 발생했다던가 하는 안타까운 일이 있을 수 있기 때문이죠.
으흐흐흐흐
충전도 잘 되는군요.
왠일로 제가 이렇게 일이 술술 풀리는 지 모르겠습니다. 오늘은 어쩐지 일이 잘 풀리더니.. 하는 일은 없었으면 좋겠네요.
자 이제 그럼 다시 조립을 해보겠습니다.
뭐 조립이라야 본드를 살짝 뭍혀서 충전 보드를 고정해 주고 나머지는 적당히 원래 위치에 자리잡은 뒤 상하단 뚜겅만 끼우면 됩니다.
최종 조립도 뚝딱. 완성
이렇게 하고 서너시간 방치해 줍니다. 급한 마음에 충전기를 꼽거나 하면 아직 마르지 않은 본드가 떨어지면서 보드가 안으로 밀려 들어가는 안타까운 일이 발생될 수 있기 때문이죠. ㅋ
한참을 방치했다가 이제 충전기를 꼽아 봅니다. ㅋ
저 희끄므리한 초록색 불 보이시나요?? 네 충전이 잘 되고 있습니다.
이제 이 1회용 전자 담배는 적어도 배터리가 방전되서 못쓰게 되는 일은 없을 겁니다. ㅋ
아래쪽에 USB C 타입 방수 마개를 끼워 줬습니다.
이게 USB 포트로 공기 흐름이 생기다 보니 아무래도 없을 때보다 흡입하는 느낌이 좀 약해진 듯 했거든요. USB C 타입 방수 마개를 끼우고 나니 처음과 같이 뻑뻑한 흡입감!
배터리가 완충되서 인지 기분 탓인지 무화량도 좋아진 것 같네요 ㅋㅋ
이제 내부에 있는 액상을 모두 소진할 때 까지 원래 주인에게 돌려 줄 예정이고요. 액상이 모두 소진되면 제가 리필하는 방법을 또 고민해서 리필이 가능한 제품으로 탈바꿈 시켜줄 예정입니다.
과연 어떻게 하면 리필을 할 수 있을까나..
PS. 근데 생각해 보니 제품을 둘러싸고 있던 스티커는 사실 떼어낼 필요가 없었군요. ㅎㅎ
연초 담배를 끊은지 거의 10년 가까이 되었나 싶은데요, 그렇다고 담배를 끊은건 아니고 액상 전자 담배만을 이용하는 전담 유저인 저는 DIY 도 좋아하겠다.. 뭐 거의 전담도 만들어서 피는 수준입니다.
얼마전에 회사 동료가 일회용 전자담배를 편의점에서 구입하여 피는 것을 보고
'그거 다 피우고 나면 나한테 버려줄래요?'
ㅎㅎ 사실 1회용 전자담배 구조가 궁금하기도 했고 요즘 내가 주로 피우는 IORE LITE POD 이랑 뭔가 비슷할 것 같은 느낌이 들었기 때문입니다.
얼마간 시간이 지나 동료에게 받은 전자 담배는 바로 아래와 같습니다.
BELOW MONS 라고 써있는 것 같습니다. 빌로우 몬스 라고 읽어야 하나요?
암튼 이녀석을 이제 분해해 볼겁니다.
먼저 아래쪽 뚜껑을 따볼 건데요, 날카로운 도구를 이용하여 틈새를 만들고 서서히 벌리면 아래와 같이 뚜껑을 딸 수 있습니다. 별도의 접착이나 고정 장치는 없는 것 같고, 원통형 몸체에 딱 맞는 마개가 있는 형태라 쉽게 뚜껑을 딸 수 있었습니다.
음.. 재미있네요. 아래쪽에는 리튬 폴리머 배터리가 들어있고요, 제일 아래에는 공기 흡입에 의한 스위치가, 그리고 위쪽으로는 1회용 담배에 걸맞게 별도의 탱크라기보다는 단순히 원통형 플라스틱에 솜이 채워져 있고 내부에 atomizer 가 들어있는 형태였습니다. 위아래로는 실리콘 마개가 액상이 흘러나오지 않도록 막고 있었고 약간의 흐름에 대비하기 위하여 솜이 조그맣게 들어있는게 전부였습니다.
생각보다 구조가 간단하여 배터리만 별도로 충전해 보았는데요,
이미 한번 완전 방전된 상태여서 그런지 배터리 내부 저항이 매우 높고 충방전 용량이 거의 없는 상태 였습니다.
만약 제가 구입한다면 구입하자마자 외부 충전 표트를 장착했을 것 같습니다. ㅎ
일단 이녀석의 배터리를 교체하면 그대로 다시 사용할 수 있을 듯 하여 개조해 보기로 합니다.
먼저 이 전자담배의 구조를 간단하게 이해하는 시간이 필요하겠네요.
아래 그림을 보시죠.
1회용 전자 담배에 배터리를 교체하고 (배터리 상태가 좋다면 그냥 사용해도 무방함) 배터리 충전 회로를 추가하면 이제 더이상 1회용이 아닌 다회용으로 사용이 가능하게 됩니다. ㅎㅎ
자 충전 회로를 넣고 새로운 배터리로 교체하려면 기존의 케이스에서는 어려울 것 같으니 3D 프린터로 제작을 해보기로 합니다
클릭, 클릭.. 클릭 하다보면 모델링 완성. 한 30분 걸렸나봅니다.
뭐 일단 대충 만들어 봅니다. 안 맞을 수도 있으니까요.
3D 프린터에서 출력하기 위해 슬라싱을 한뒤 프린터로 뽑으면
요렇게 똭!
나왔습니다.
물론 약간의 표면처리를 해주었습니다. 3D 프린터로 출력하면 층층이 레이어가 조금 눈에 거슬리죠. 사포로 살살 문질러 주면 어느정도 표면이 매끈하게 됩니다.
이제 내부를 채울 녀석들을 준비해봅니다.
나중에 조립하다 보니 배터리가 불량이어서 배터리는 다른것을 사용했지만 집에 굴러다니는 14500 규격의 li-ion 배터리를 이용하여 개조를 하였습니다.
위아래 마개가 딱 맞아야 하므로 원통을 잘라서 위아래 마개부분에 끼워줄거에요.
그리고 위에 소개해 드렸던 구조대로 결선을 한 뒤 조립을 해보면 아래와 같이
쫘좐~~
참쉽죠?
네 완성되었습니다.
뚜껑을 따고 실리콘 마개를 열어준 뒤 액상을 채우면 저 투명하게 보이는 스펀지 부분이 촉촉하게 젖어 들어가는 모습이 보이고요, 아래쪽에는 USB C 타입 충전기로 충전을 해주면 됩니다. 배터리는 14500 배터리라서 600mah 정도되는 크지 않은 용량이기는 하지만 한나절 정도는 충분히 피울 수 있을 것 같습니다. (조금만 피우시는 분은 하루 이상도 충분히 가능할 듯) 물론 리튬 이온 배터리를 장착하였으므로 너무 끝까지 사용하지 말고 중간 중간 충전을 해주시는게 좋을 것 같기는 합니다.
마지막으로 크기 참고를 위해 사진 한장 추가 합니다.
네 아주 아담한 크기가 되겠습니다. 손안에 쏙 들어와서 손으로 움켜쥐면 보이지 않을 정도로 작은 크기입니다. ㅋ
주머니에 넣어도 작아서 부담이 없고 좋을 것 같습니다.
저는 만드는 즐거움을 누렸으니 전담을 제공해준 회사 동료에게 선물로 다시 줘야 겠습니다 ㅋㅋ
도전해 보고 싶으신 분을 위하여 3D 프린트용 파일을 올려놓을 테니 관심 있으신 분은 받으셔서 한번 도전해 보시기 바랍니다. ㅋ
참고로 나사 구멍은 매우 좁게 출력될 수 있으니 사용하실 나사에 맞게 구멍을 확장하는 작업은 해주셔야 합니다
바로 다운로드 받아서 보는 방법이 있죠. 인터넷에 보면 유튜브 주소를 넣으면 음원 파일이나 영상 파일로 다운로드 해주는 사이트 들이 많이 있습니다. 지저분한 광고로 도배가 되어 있는가 하면 정말 답답하게 느리기도 하고요. 뭔가 상당히 찜찜함을 남기는 UI 나 뭐 거시기 합니다.
그래서 광고 없고, 빠르고, 무료인 깔끔한 프로그램을 직접 만들어 보았습니다.
MUSIC DOWNTOWN
네 이름 그대로 뮤직 다운타운 입니다.
설치할 필요 없고요. 압축 풀고 실행파일 (musicdowntown.exe) 실행하시면 됩니다.
압축 파일을 열어 보시면 아래와 같이 3개의 실행 파일이 있을텐데요.
yt-dlp 는 유튜브영상이나 음악을 다운로드 해주는 정말 놀라운 프로그램이고요, ffmpeg 는 아시는 분은 아시겠지만 영상, 음악 분야의 신의 손 정도로 부를 수 있는 대단한 프로그램 입니다. 물론 둘다 command line 으로 사용해야 하는 프로그램이다 보니 약간 일반 사용자들에게 익숙한 프로그램은 아니죠.
대충 감 잡으셨을지도 모르겠지만 musicdowntown 은 사실 저 두개의 프로그램을 조금더 사용하기 편리하게 만들어주기 위하여 적당한 명령을 날려주는 역할을 하는 HMI(Human Machine Interface) 정도로 보시면 되겠습니다.
yt-dlp 와 ffmpeg 프로그램을 직접 사용하시기 위한 사용법이나 자세한 내용이 궁금하시면 아래 사이트를 방문해 주세요
와우! 놀랍지 않습니까? 여러개의 음악을 하나로 묶어둔 음원 자르는것도 자동으로 됩니다. 마음에 드는 플레이 리스트가 있다면 한번에 모두 다운로드 받으세요.
사용방법
먼저 유튜브 주소를 복사합니다. 주소 표시줄의 주소를 그냥 복사 하시면 됩니다. 현재 보고 있는 영상의 주소가 플레이 리스트인데 재생중인 영상만 다운로드 받고 싶다면 영상 아래쪽에 공유 버튼을 이용해서 주소를 복사해도 됩니다.
복사한 주소를 youtube 옆에 있는 칸에 붙여 넣습니다. 그리고 아래 그림처럼 아래 줄에 음원이나 영상이 저장될 PC 의 경로를 넣어 주세요.
주의사항!
저장될 경로에 한글이 있거나 공백이 있으면 저장이 잘 되지 않습니다. 가능하면 공백 없는 영문으로만 이루어진 경로를 이용해 주세요.
자 download 버튼을 누르셨가면 이제 다운로드 되기 시작할텐데요
처음에는 요렇게 2개의 파일이 생성되는데요. 다운로드가 완료되면 아래와 같이 하나만 남게 됩니다.
영상으로 받고 싶으시면 MUSIC 버튼을 누르시면 VIDEO 로 변경이 되며 download 실행 시 영상 파일(mp4)로 다운로드가 됩니다.
현재 듣거나 보고 있는 영상의 주소가 playlist 중의 일부라면 자동으로 플래이 리스트의 모든 파일이 다운로드 됩니다. 아무래도 공식 영상이나 음원에 신경쓴 자료들은 한곡씩 있는 경우가 많죠? 또 어떤 분이 멋진 플레이 리스트를 생성해서 공유한 경우도 있을 테고요. 또 내가 좋아하는곡들만 모아듣고 싶을 때도 있습니다. 이럴때 한번에 받을 수 있는 기능입니다.
위에도 적었지만 만약 그 중 한 파일만 받고 싶으시면 주소 표시줄의 주소가 아닌 영상 하단의 '공유' 버튼을 통해 생성된 링크를 입력하셔야 하나만 다운로드 됩니다.
저렇게 list라는 표시가 있으면 해당 주소는 플레이 리스트 주소를 담고 있습니다. 제가 좋아하는 guns n roses 의 음원 모음이네요. (너무 좋음)
다운로드 받은 경로와 주소를 모두 붙여넣은 뒤 download 버튼을 눌러주시면 끝
아래쪽 검은색 칸에 진행상황이 나오고요..
요렇게 자동으로 쭉쭉쭉 다운로드가 됩니다.
어떠신가요 ? 마음에 드시나요?? ㅎ
뭉터기 음원 자동 자르기
중간에 single/list 라고 되어 있는 버튼을 눌러 주시면 multiple 로 변경이 되는데요, 이때 아래에 있는 download 버튼이 download cutting 으로 변경이 되고요. 그 옆에 name prefix 라는 부분에 이름을 적을 수 있는 칸이 활성화 됩니다.
예를 들어 '옛날노래' 라고 적으시면 아래와 같이 자동으로 음악을 잘라주게 됩니다. ㅋㅋ
음원에 따라 dB, duration 을 조정해야 하는 경우도 있긴 하지만 제 경험상 대부분 그냥 사용하시면 잘 동작합니다.
아무래도 전문적으로 뛰어보려니까 달리기 전용 워치 정도는 있는게 좋을 것 같았습니다. 인터넷을 여기저기 찾아보다가 당근에 garmin venu2 가 저렴하게 나왔길레 덜컥 구입!
자 이제 신상 템을 장착하고 밖으로 나가보기로 했습니다.
대회 준비 시작
대회 시작 2주전,
일단 여러 마라톤 훈련 중 LSD 훈련을 통해 내가 하프를 뛸 수 있는 체력이 되는지를 파악해 보기 위해 동네를 무작정 뛰어보았습니다. 어쨌든 21km 라는 어마어마한 거리를 뛰어야 하니 내 다리가 과연 버텨줄지 궁금하기도 했고요.
이날은 가능하면 15 ~ 20km 를 달려보려고 마음먹고 6분 40초 정도 페이스로 14km 정도를 달렸는데 생각보다 힘이 들지 않더라고요. 그레서 14km 를 넘기면서 속도를 올렸습니다. 5분 10초대까지 올리며 2km 를 더 달렸는데 아직도 더 올릴 수 있을 것 같아서 마지막 1km 다 생각하고 4분 30초대까지 올려 1km 를 달리기로 합니다.
와 200m 정도를 남기고 전력질주를 해봤는데 심장이 188bpm 까지 뛰며 온몸이 불타오르는 것 같았습니다. 굉장한 기분이 들더라고요.
그렇게 마치고.. 하프도 뛸 수 있긴 하겠구나.. 라고 마음먹고 집으로 왔는데..
그런데..
무릎이 아픈겁니다. 통증이 살살 오는데 하루 이틀 지나면 괜찮겠지 싶어 별 신경 쓰지 않았습니다.
그런데 하루가 지나고 이틀, 삼일이 지나도 통증이 줄어들 기미가 보이지 않더라고요. 걸을 때 마다 무릎이 아프고 시리고, 힘도 주기 어려웠습니다. 훈련은 고사하고 출퇴근도 너무 힘들더라고요.
안좋은 느낌이 들었습니다.
대회까지 1주일 정도 남은 시점. 살짝 통증은 줄었지만 아직 뛰는건 무리.
절망적이었습니다.
도대체 무엇이 문제였을까
인터넷을 찾아보다가 영상을 하나 봤는데 정말 기가막힐 노릇이었습니다.
제가 신는 바로 그런 신발, 아식스 타사엣지 같은 그런신발요.
절대 신지 말라는 충고였습니다 (털썩). 무릎 다 나간다고 하네요.
아뿔사......
신발이 문제였구나....
그래서 얼른 이곳 저곳 정보를 찾아본 뒤에 아식스 매장에 찾아가 신발을 새로 구입했습니다.
그이름은 매직스피드2
저처럼 발볼이 넓은 사람들을 위해 WIDE 버전이 나오는 고마운 신발이지요. 신발의 모양을 보면 엄청난 쿠션감이 있을 것 같지만 그다지 쿠션이 아주 많은편은 아닌것 습니다. 하지만 나름 카본플레이트가 들어간 신발입니다. 공식 홈페이지에 반발력이 뛰어나다고 설명하고는 있지만 그다지 반발력이 뛰어난지는 잘 모르겠고요. 볼이 넓어 일단 발이 편하고요, 뛰는동안 약간 힘이 덜 드는 느낌은 있었습니다. 워낙 가볍기도 하고요.
보통 대회나가기 전에 대회용 신발로 100km 정도는 뛰어서 익숙한 상태로 출전해야 한다고 하였으나 저는 뭐 대안이 없었습니다.
그렇게 수요일 (D-4) , 새로산 신발을 신고 동네를 1km 정도 뛰었습니다. 아~~주 천천히요.
타사엣지에 비하면 푹신푹신하기도 하고 뛰는 느낌이 완전히 달라서 조금 어색했지만 살살 뛰어서인지 뛸만 했습니다. 물론 무릎 통증이 사라지지는 않아 1km 뛰고는 들어왔습니다. 더 뛰면 증상이 완전히 나빠질 기세였거든요.
목요일 (D-3) 역시 가볍게 1km 정도를 뛰었습니다. 어제보다는 신발이 조금 익숙한 느낌입니다. 약간 통통 거리는 느낌이 있는데 그 얇은 창의 타사엣지보다 더 반발력은 적은 느낌이었고요. 중창 부분에 카본 플레이트가 들어있다고 하는데 딱히 뭔가 다른 느낌은 없었습니다. 무릎은 어제보다는 조금 나아졌지만 역시 1km 만 뛰고 들어와 쉬었습니다.
그냥 이대로는 무리일 것 같아 목요일 저녁부터 이부프로펜을 먹기 시작했습니다. 어쨌든 통증은 줄여야하지 않겠습니까.
금요일 (D-2), 그냥 쉬었습니다.
토요일 (D-1), 칼로리젤 도착, 간단히 몸풀기.
인터넷에 찾아보니 달리기 중 영양 보충이 매우 중요하다는 사실을 알게되었고 칼로리젤을 구입하였습니다. 달리면서 에너지 보충하는 것도 연습이 필요하다고 하는데.. 이것 역시 처음 도전을 해보게 되네요.
모든게 정말 미숙한 하프마라톤 준비네요.. 걱정이 앞섭니다.
장트러블이라도 없기를 바라며 점심 저녁은 간단히 먹고 동네 한바퀴 (2km) 정도를 가볍게 뛴 후 출전 준비를 마무리 했습니다.
드디어 시합 당일 (D day)
아침 일찍 일어나 우유(매일 소화가 잘되는 우유) 와 단팥빵을 하나 먹고 화장실 가서 변을 본뒤 (다행) 여의도로 출발 합니다. 다행히 대회 시작 시간이 9시라서 여유있게 이동을 할 수 있었습니다.
대회장에 도착하니 이미 사람들이 많이 모였더군요. 부라부랴 배번표를 달고 신발끈을 조여 맨뒤 에너지젤을 하나 섭취합니다. 이때가 출발 30분전,
다른 참가자들과 함께 진행자의 리드에 맞춰 준비운동을 하고 몸을 풀어 주었습니다.
드디어 하프 출발 대기선에 섭니다.
두구두구~~~
드디어 경기 시작!
오늘의 목표는 완주 이므로 초반에 힘을 아끼기 위하여 천천히 달리기로 마음먹고 다른 사람들이 추월 하든 말든 신경 쓰지 않고 6분 20초 정도 페이스로 천천히 달리기 시작했습니다.
상쾌한 아침 바람을 맞으며 한강을 옆으로 하고 달리는 기분이 매우 좋더군요. 한 2 km 정도 달리고 나니 슬슬 몸이 풀리는 느낌이 들었습니다. 생각보다 몸이 가벼운게 컨디션이 괜찮은 듯 했습니다. 하지만 자만은 금물. 6분 00 ~ 10초 정도로 페이스를 약간만 올린채 반환지점까지 유지하기로 해봅니다.
심박수는 140 언저리에서 크게 넘지 않도록 유지했습니다. 대약 10km 쯤 왔을때 150이 살짝 넘더군요. 사실 심박수 150 미만이면 그동안 경험상 거의 힘들거나 숨차지 않은 수준이었고 역시나 예상대로 10km를 달렸지만 발바닥이 조금 묵직할 뿐 다른 불편한 느낌은 없었습니다. 하지만 역시 완주를 위하여 15km 까지는 지금의 수준을 유지해보기로 합니다. 10km 를 지나면서 에너지 젤을 하나 따서 먹었습니다. 천천히 달리고 있었기 때문에 달리면서 먹는데 무리는 없었고 생각보다 갈증이 나지는 않더군요. 곧 마주한 급수대에서 물을 한컵 마셔 주었습니다.
15km 근처에서 심박수는 서서히 올라 150이 조금 넘고 있었고 페이스는 6분 정도를 유지하고 있었습니다. 지금까지 달린걸 보면 계획대로 빠르지는 않지만 서서히 페이스를 올리는 전략대로 진행이 되고 있었고 몸에도 큰 무리가 없는 상태였기 때문에 완주는 할 수 있겠다는 생각이 들기 시작했습니다. 다만 계획에 없던 바람이 반환점을 돌자마자 역풍으로 바뀐것이 변수라면 변수였달까요? 큰 문제가 되는 수준은 아니었지만 순풍이 얼마나 중요한건지 깨닳았습니다. 반환점 돌기 전까지 제가 체력 유지를 할 수 있었던건 아마 순풍의 힘이 영향이 있었다고 생각이 들었습니다.
17km를 통과하는 지점에서 이제 남은 체력을 투입해보기로 합니다. 5분 40초 안쪽으로 페이스를 올리고 한 2km 정도를 달리고 나니 심박이 160을 넘어 170으로 치닫더군요. 숨이 차오르기 시작합니다. 하지만 더 달릴수 있을 것 같은 느낌이 있습니다. 발 구름은 이제 뭐 거의 무의식 적으로 기계적으로 반복해서 이루어 지고 있었고.. 자세가 무너지지 않도록 신경쓰면서 조금씩 보폭을 넓혀 봅니다.
20km 를 통과하기 시작하며 이제 남은 힘을 다해 남은 1km 정도를 달려보기로 하였습니다. 5분 페이스 안쪽으로 뛰고 싶었지만 몸이 말을 안 듣더군요. ㅋㅋㅋ. 5분 20초 정도의 페이스로 달리는게 고작이었습니다. 마지막 400m 정도는 4분대 페이스로 뛰기는 했지만 한계였습니다. 이미 심박수가 180을 넘었거든요. 이래서 평소에 인터벌달리기나 템포런 같은 훈련을 하는구나 했습니다. 체력이 다 빠진 상태에서도 마지막 질주를 할 수 있는 몸을 만드는 것이죠.
어쨌든 완주 성공.
마지막 3~4km 구간 동안 그동안 앞질러 갔던 선수들을 따라 잡으면서 바람을 가르며 (이건 역풍 때문에 더. ) 달리는 기분이란 정말 이루 말할데 없는 환상적인 기분이었습니다.
결승선을 통과한 뒤 사람들과 부딪히지 않도록 계속 달렸습니다. 아니 사실은 멈추어지지가 않더라고요. 보폭을 줄이며 계속 달려가서 화장실로 ㄱㄱ
세수를 하고.
숨을 돌리며.
달리다 보니 마중나온 친구를 들여 보냅니다. 읭? 무슨 소리냐고요? 요건 나중에 따로 한번 작성할텐데요. 만성이 된 치질(치핵) 이 있었는데... 요 녀석이 좀 오래 뛰면 빼꼼 얼굴을 내밀더군요. ㅜㅜ
어쨌든 처음 참가한 하프마라톤 경기를 잘 마무리 할 수 있었습니다.
정말 너무너무너무 뿌듯하고 가슴 벅찬 경험이 아닐 수 없습니다.
달려보지 않은 사람은 모르는 기분이죠. 정말이에요. 나 자신을 이겨냈다는 뿌듯함과 성취감. 나 스스로가 너무 대견하고 칭찬해 주고 싶은 그런 기분입니다.
이글을 읽는 여러분도 도전해 보세요. 살면서 이런 가슴벅찬 경험을 몇번이나 경험할 수 있겠습니까??
초보 런린이의 하프마라톤 도전 핵심 포인트 정리
이번 달리기를 하며 하프마라톤을 위하여 준비해야 할 핵심 포인트만 정리해 보겠습니다.
180bpm 음악 준비하기 (2시간 이상 들을 수 있도록)
오래 달리기에 적합한 신발 준비 (쿠션화 추천)
심박계 또는 정확한 심박 측정이 가능한 러닝 워치
평소 운동을 통하여 본인의 심박 레벨을 꼭 확인하자.
숨차지 않는 수준으로 달릴때의 본인의 심박수 알아두기
에너지 젤 과 달리며 먹는 연습 (페이스가 흐트러지지 않도록)
대회 당일 아침 장을 깨끗히 비우기 (중요)
완주를 위한 페이스 전략 세우기
처음부터 다른 선수들의 페이스에 말려 지치면 안됩니다.
가볍고 보온 또는 체온 관리가 용이한 복장
눈부심을 많이 타는 경우 썬글라스 준비
시작전 스트레칭 등 준비운동 열심히!!
출발 후 1~2km 는 반드시 본인의 컨디션 확인을 위하여 워밍업 느낌으로 달리기
이정도가 되겠습니다. 물론 엘리트선수 분들을 위한 포인트가 아닙니다. 저처럼 처음 도전하거나 처음 완주를 목표로 하는 분이 보시면 좋을 것 같아 적어 보았습니다.
그리고 앞서 크게 걱정했던 무릎은 21km 를 완주한 후에도 별다른 통증이 없었던것을 보면 신발을 바꾼 효과를 톡톡히본 셈 입니다. 정말 다행이죠.
자 그럼 기록은?
부끄럽지만~
제 가민 커넥트 앱에 기록된 정보 입니다. 처음으로 21km 를 뛰었기 때문에 개인 기록으로 등록이 되었네요.
초보 러너로써 완주에 큰 의미를 두고 참가한 경기지만 생각했던 것 보다 결과도 만족스럽습니다.
페이스 전략이 중요하다는 것을 크게 느꼈고 완주 후에도 몸에 큰 무리가 없었던 것을 보면 평소에 심박수를 기준으로 페이스 전략을 잘 세우면 기록을 올리는 것도 가능할 것 같습니다.
자 이제 가을에는 풀코스에 도전을 해볼까요? ㅋㅋ
여러분도 한단계 한단계 성장하는 기쁨을 함께 맛보기를 바라며 이만 마치겠습니다.
좋은 대회를 열어주신 행복한 가게 마라톤 관계자 분들께도 감사의 인사를 드립니다. 참고로 행복한 가게 마라톤 대회의 참가비용은 기부금으로 쓰여집니다 흐뭇~
도대체 왜 D 형 건전지 같은 무시무시하고 쓰잘데기 없는 것 같은 크기의 배터리를 만든걸까?
물론 망간 건전지 시절에는 장시간 사용해야 하는 기구에 많은 전력을 담아야 하면 물리적으로 건전지의 크기가 커야만 했을 것 같습니다. 요즘은 알칼라인 건전지가 워낙 작은 크기에도 전력을 많이 담을 수 있기 때문에 작은 크기로 오랜시간 사용이 가능하지만 예전에는 그렇지 않았겠죠.
그래서인지 요즘은 D 형 건전지 같은 커다란 배터리를 잘 사용하지 않고 그러다 보니 사용자 입장에서 상대적으로 비싼 가격으로 건전지를 구매할 수 밖에 없습니다.
그래서 쇼핑몰에서 배터리 변환 홀더를 구매하여 사용해 보려고 했는데요.
흐미~
왠일인가요. 홀더 두개에 배송비까지 하면 가격이 생각보다 적지 않습니다.
흠.. 이럴일인가.
음..
뭐 만들면 되지
오리혀 좋아~ 히힛!
바로 3D 모델링 프로그램을 열고 모델링을 시작합니다.
간단하죠? 뭐 복잡하게 만들기도 귀찮고 해서 원통에 구멍 뚫고 아래쪽에 - 단자 연결을 위한 구멍을 두개 뚫어 주었습니다. 가준에 구멍은 가장 구하기 좋고 흔한 AA 건전지 크기로 하였습니다.
참고로 모델링 프로그램은 무료 프로그램인 Blender를 이용하였습니다.
어쨋든 DIY 의 핵심은 쉽게 만들고 사용하기 좋아야 한다는 점 입니다. (중요)
3D 프린트 하는 과정은 없고 그냥 바로 완성 사진입니다. 두개 프린트 하는데 3시간 정도 걸렸네요.
위쪽에는 건전지가 너무 쉽게 빠져버리지 않도록 고무를 조금 잘라 붙였습니다. 고무는 빵꾸난 자전거 타이어를 조금 잘라서 순간 접착제로 붙였습니다.
손으로 잡아 빼거나 조금 세게 거꾸로 흔들면 적당히 빠질 정도로만 잘라 붙여 줍니다.
아래쪽은 굴러다니는 니켈 스트립( 5mm 짜리)을 이용하여 감싸듯이 감아 주었습니다. 땜질같은거 없이 그냥 감아주고 마무리.
위쪽에서 보면 이런 모양입니다. (타이어를 조금 예쁘게 잘라 붙일껄 후회가 약간 된다능)
배터리를 끼워볼까요?
쫘좐~
홀더에 끼워넣으면 위쪽으로 배터리가 조금 올라오도록 해서 나중에 꺼내기 쉽게 해 주었습니다.
개발을 하다 보면 실제 소스코드 외에도 어떤 텍스트를 resource 에 넣어 두고 소스코드에서 불러와야 하는 경우가 있을 수 있습니다. 저의 경우는 포토샵, 일러스트 등의 프로그램을 연동하여 c# 으로 App 을 만들었을때 실제 수행되는 코드는 jsx 스크립트 파일로 만든 뒤 app 에서 해당 스크립트를 실행하도록 하는데 이때 resource 에 스크립트 파일을 추가해 놓고 실행하는 타이밍에 해당 내용을 불러와 실행하도록 하는 경우가 종종 있습니다.
일단 c# 보다 javascript 로 작성하는게 쉽고 나중에 오류가 생기더라도 app 이 아닌 기능 단위로 만들어진 스크립트만 수정하면 되기 때문인데요.
보통 인터넷에 그런 내용으로 검색해 보면 실행파일이 빌드되는 순간 빌드 폴더에 해당 스크립트 파일이 복사되고 실행 파일 경로를 기준으로 하여 해당 파일을 불러와서 사용하도록 안내하고 있는 예제가 대부분입니다.
해당 스크립트(텍스트)를 굳이 공개하고 싶지 않고 스크립트 코드(텍스트 파일)가 빌드된 실행파일 내에 포함되면서 해당 텍스트를 불러오는 방법을 이번에 소개해 드리겠습니다.
두가지 방법이 있는데요. 두가지 방법을 모두 보시고 본인이 편한 방법을 사용하면 되겠습니다.
1. Properties > Resources.resx 내에 추가하는 방법
개발 디렉토리 내 임의의 폴더를 생성
생성된 임의의 폴더에 원하는 텍스트 파일 작성
작성된 텍스트 파일을 Properties > Resources 내에 텍스트 리소스로 추가
소스코드 내에 리소스를 텍스트(string) 로 가져오는 코드 작성
자 실제 화면을 보면서 설명을 드려보면요
위와같이 임의의 폴더를 하나 개발 디렉토리내에 생성한 뒤 필요한 텍스트 파일을 추가 합니다.
저의 경우는 포토샵 스크립트 파일 포멧인 jsx 로 추가하였고요. 좌측 내용을 보면 실행하면 그냥 "hello photoshop" 을 팝업으로 띄워주는 스크립트 입니다.
그 다음 Properties > Resources.resx 를 더블클릭해서 열어준 뒤 좌측 상단의 리소스 타입을 '파일'로 변경해 줍니다.
그런 다음 리소스 추가 를 누르시고 '기존 파일 추가' 를 선택해 줍니다.
그럼 파일 선택 창이 나타나는데요. 아까 만들어준 JS 폴더 ( 본인이 생성한 폴더) 에 가보시면 생성한 텍스트 파일이 있을 거고요. 해당 파일을 선택해 주시면 됩니다.
그럼 이렇게 파일이 들어와 있는 것을 보실 수 있는데요. 이 파일이 텍스트 파일이라고 확인을 시켜 주어야 합니다.
우측 아래 속성 텝에 보면 이 파일의 타입이 Binary 로 되어 있는 것을 Text로 변경해 주어야 합니다.
Text 로 변경하고 나면 위와 같이 인코딩을 지정할 수 있으니 나중에 텍스트 오류가 나면 해당 인코딩을 변경해가면서 사용하시면 됩니다.
자 이제 리소스로 추가 하였으니 불러오는 방법을 알아야 겠죠?
위와 같이 string 문자열을 만들어서 불러오면 됩니다. PSXL_AUTO 는 솔루션 명으로 namespace 에 지정된 이름을 사용하시면 됩니다.
그 뒤로는 Properties 부터 자동완성 되므로 상세한 설명은 생략
MessageBox.Show(myResourceText) 를 이용하여 리소스 텍스트 내용을 불러와보면
요렇게 잘 불러와 진것을 볼 수 있습니다.
물론 이렇게 하면 자동으로 포함리소스가 되므로 런타임에 별도로 파일을 찾아야 하거나 할 필요가 없습니다. 빌드 폴더에도 역시 별도로 파일이 나오거나 하지 않습니다.
간단하죠?
막상 해보면 간단합니다.
2. 그냥 개발 디렉토리 내에 폴더를 생성하고 파일을 추가하는 방법
임의의 폴더를 생성한다
생성한 폴더에 스크립트 파일을 작성한다
실행할 때 해당 스크립트를 불러오는 코드를 포함하여 실행한다.
요 방법도 제가 자주 사용하는 방법인데요. 별도로 리소스로 등록할 필요가 없어서 스크립트를 만들고 사용하는 과정에서 좀더 간단한 방법이라 할 수 있겠습니다.
물론 실행하는 부분에서 코드가 약간 복잡하기는 하지만 그래도 텍스트를 만들고 또 리소스에 추가하는 과정이 없어 좀더 직관적이라고 할까요?
이번에도 생성한 폴더에 스크립트 파일을 추가하였습니다.
내용을 구분하기 위하여 hellow 를 bye로 변경하였습니다 ㅎ
속성 텝에서 아래와 같이 포함리소스, 출력디렉토리에 복사 안함 으로 설정해 줍니다.
자 이제 코드를 불러오는 내용을 작성해야 하는데요. resources 에 추가한 내용을 불러오는 것은 아주 간단했죠?
요건 약간 복잡합니다. 아래 코드를 참고해 주세요.
private string showtextString()
{
string myStr = "";
var assembly = Assembly.GetExecutingAssembly();
var myScript = "PSXL_Auto.JS.defPSScript.jsx";
using (Stream stream = assembly.GetManifestResourceStream(myScript))
{
using (StreamReader sr = new StreamReader(stream))
{
myStr = sr.ReadToEnd();
}
}
MessageBox.Show(myStr);
return myStr;
}
// 또는
private string showtextString(string txtName)
{
string myStr = "";
var assembly = Assembly.GetExecutingAssembly();
var myScript = "PSXL_Auto.JS." + txtName;
using (Stream stream = assembly.GetManifestResourceStream(myScript))
{
using (StreamReader sr = new StreamReader(stream))
{
myStr = sr.ReadToEnd();
}
}
MessageBox.Show(myStr);
return myStr;
}
// 실행하는 부분에서
showtextString("defPSScript.jsx");
일단 간단하게 해당 리소스 텍스트를 string 으로 돌려주는 함수처럼 만들었는데요. 코드 내에 "JS" 라는 부분은 사용자가 만든 폴더 명칭이라는 것을 아실 수 있으시죠? 물론 아래와 같이 리소스 파일명을 인자로 받아 해당 텍스트를 리턴해 줄 수 있도록 하면 사용할 때도 간단하게 사용할 수 있을 것입니다.
요렇게 만들어진 함수를 실행해서 메시지 박스로 출력해 보면
당연히 잘 출력 됩니다.
중간에 bye 로 나오는 것 잘 보이시죠?
당연히 위의 두가지 방법 모두 실행 파일 경로에 해당 텍스트 파일이 따라오지 않고 잘 숨겨져 있게 됩니다.
프로그래밍을 하다보면 16진수를 10진수로 바꾸거나 10진수를 16진수로 바꾸어야 하는 경우가 종종 있습니다.
읭? 16 진수?
라고 하실수도 있겠지만 막상 개발을 하다 보면 16진수가 쓰이는 경우를 생각보다 자주 만나게 됩니다.
대표적을 RGB 컬러 값을 HTML 에서 사용하는 #FFEACB 이런 값으로 변경하는 작업이 있겠습니다. 또는 반대로 0 ~ FF 가지 255개의 숫자가 16진수로 구성되어 있는 값을 0~255인 자연수로 변경을 해야 하는 경우가 있을 수도 있고요. 16진수는 1개의 자릿수에서 0~15 까지의 값을 표현할 수 있기 때문에 10진수에 비하여 간단한 텍스트로 더 큰 숫자를 표현할 수 있다는 장점도 있습니다.
자 쓸데 없는 말이 길었네요.
VBA를 이용해서 숫자의 형을 변환하는 여러가지 방법이 있지만 오늘 소개해드릴 방법은 그중에서도 단연 쉽고 간단한 방법입니다.
바로 worksheet의 함수를 이용하는 방법인데요. 엑셀 상단에 수식을 입력할 수 있는 칸이 있자나요? 여기서 사용되는 함수가 바로 worksheet function 입니다.
worksheet function 중에 DEC2HEX() 와 HEX2DEC() 가 바로 오늘의 주인공 입니다.
함수 명칭만 봐도 딱 감이 오시죠?
사용하는 방법은 아래와 같습니다.
먼저 위와 같이 엑셀에 16진수 값이 들어있는 셀이 있다고 가정을 하고요.
vba 에디터를 열어 아래와 같이 코드를 작성해봅니다.
Sub changeNumber()
Dim rngA As Range
Set rngA = [A1]
rngA.Offset(0, 1).Value = WorksheetFunction.Hex2Dec(rngA.Value)
rngA.Offset(0, 2).Value = WorksheetFunction.Dec2Hex(rngA.Offset(0, 1).Value)
End Sub
자 A1 셀에 있는 값을 바로 우측 옆 칸에 10진수로 바꾸는 함수를 적용하여 값을 넣어 줍니다.
그다음 B1 에 위에서 자동으로 입력된 값을 다시 16진수로 옆칸에 자동으로 입력해주는 코드 입니다.
실행하면요
요렇게 B1 에는 10진수로, 다시 C1 에는 16진수로 값이 변경된 것을 볼 수 있죠?
worksheetFunction 에는 물론 엑셀에서 사용할 수 있는 모든 함수를 지원해 주니까 vba 작성중에도 가져다가 사용할 만한 함수가 많지만 오늘 포스트의 주제에 맞게 숫자의 형 변환 관점에서만 보자면 아래와 같은 여러 함수들이 지원됩니다.
물론 Hex 로 부터 출발 하는 경우에도 마찬가지 입니다.
문장이 조금 길어 보여서 어렵거나 복잡하게 생각될 수도 있기는한데 막상 사용해보면 생각보다 단순 합니다. 사용하는데 따로 알아두어야 할 규칙 같은것도 없어서 코딩하는 시간도 많이 절약되는 방식이라 할 수 있겠습니다.
만약 아래와 같이 셀에 html 색상 값이 들어있는 경우
vba를 이용하여 해당 색상으로 셀의 배경 색상을 자동으로 칠해 줄 수 있습니다.
Sub changeNumber()
Dim rngA As Range
Set rngA = [A1]
Dim clrR As Integer
Dim clrG As Integer
Dim clrB As Integer
clrR = WorksheetFunction.Hex2Dec(Mid(rngA.Value, 2, 2))
clrG = WorksheetFunction.Hex2Dec(Mid(rngA.Value, 4, 2))
clrB = WorksheetFunction.Hex2Dec(Mid(rngA.Value, 6, 2))
rngA.Interior.Color = RGB(clrR, clrG, clrB)
End Sub
간단하죠? 위에서 소개해 드린 worksheetFunction을 이용하여 2자리씩 잘라낸 16진수를 10진수로 담은뒤에 셀의 배경 색상으로 지정하는 것이죠.