VirtualBox에 안드로이드 설치 도중 부팅이 멈출 때 해결방법

공대생의 팁 2019.10.21 14:42


 한동안 안드로이드와는 거리를 두고 지내던 도중 종종 관련 질문이 들어와서 최신 버전인 Oreo를 VirtualBox에 설치를 아래와 같은 방식으로 시도해 보았었습니다.


안드로이드 버추얼박스(VirtualBox)에 설치하기


 제가 안드로이드를 설치하려 하였던 환경은 아래와 같습니다.


Host OS버전: Ubuntu 16.04

VirtualBox 버전: 6.0.14

Android 버전: 8.1(Oreo)


 위와 같은 환경에서 링크에서 제공하는 설치 방법대롤 하였으나 아래와 같이 화면이 멈추면서 더이상 진행이 되지 않고 있었습니다.


 Trusted GRUB now loading 'Android-x86 8.1-r2'

 Progress: Detecting Android-x86... found at /dev/sda1

X86_64:/ #



정황상 안드로이드가 설치된 파티션을 찾아내어 이를 불러오는 것 까지는 성공한 것 같으나 현 상황에서 알 수 없는 이유로 화면이 더이상 나올 수 없는 상황으로 추정됩니다.


 이를 해결하기 위해 VirutlaBox에서 설정→디스플레이로 접근하신 다음 아래와 같이 나왔을 때 'VBoxVGA'를 선택해줍니다.



 위에 표시도니 VBoxVGA로 설정하신 후 다시 안드로이드를 실행해보시면 아래와 같이 부팅이 정상적으로 동작하고 있는 것을 확인하실 수 있습니다!



Canon MG2990 시리즈 USB 연결 설치방법

흔치않은일상 2019.10.11 02:03


 이사를 하면서 통신사에서 제공하는 공유기를 사용하게 되었는데 호환이 잘 안되는 것 같아 USB로 연결하여 설치해 보았습니다. 이번에 공유기를 통해 무선으로 설치하는 방법을 다루어 본 적이 있었는데 혹시 무선 설치가 안되시는 분들을 위해 이렇게 USB 유선 연결 설치 방법도 소개해 드려볼까 합니다.


 혹시 공유기가 프린터 근처에 있고 무선으로 여러 대의 기기를 사용하고 계신 분이라면 제가 이전에 작성하였던 무선 설치 방법을 참고해 주시기 바랍니다.


    Canon MG2900 시리즈 무선 프린터 설치방법



※설치하시기 전에 반드시 프린터와 컴퓨터와 USB를 빼주세요.


1. 아래의 사이트에 접속하여 '드라이버 통합 설치파일'을 다운로드 받습니다.(Windows 기준)

http://www.canon-bs.co.kr/person/download.aspx?no=3588&category1=2



2. 다운로드 받은 파일을 실행하면 아래와 같은 화면이 나옵니다.



3. '다음' 버튼을 누르면 아래와 같이 드라이버 설치 준비를 합니다.



4. 프린터 연결 방법을 선택합니다. 여기서는 'USB 연결'을 선택해 보겠습니다.



5. 사용자의 거주지를 선택합니다.



6. 자신이 거주하는 국가를 선택해줍니다.



7. 맨 위에 있는 'MP Drivers'를 설치해줍니다.(기본으로 선택이 되어있음)



8. '예' 버튼을 클릭해주세요.



9. '예' 버튼을 클릭해 주세요.



10. 인터넷을 통해 설치 파일을 받는 과정입니다. 잠시 기다려줍니다.



11. 다음과 같은 화면이 나오면 이제 컴퓨터와 프린터를 USB로 연결해줍니다.



 MG2990 프린터의 경우 USB 꽃는 곳은 다음과 같이 뒷부분 오른쪽에 위치해 있습니다.

 프린터에 연결되는 USB는 TypeB 형식으로 일반적인 프린터에서 자주 사용하는 방식입니다.



12. 프린터를 연결하고 프린터의 전원을 키면 아래와 같이 컴퓨터와 프린터가 연결되었음을 확인하실 수 있습니다.



13. 기다리시면 컴퓨터에 드라이버가 자동으로 설정이 됩니다.



14. 프린트 헤드 정력 과정입니다. 만약 프린터를 처음 사용하는 경우라면 실행 버튼을 눌러 안내가 나오는 대로 진행하시면 됩니다.



15. '다음' 버튼을 누르시면 프린터의 설치가 완료됩니다! 이제 프린터를 자유롭게 사용하실 수 있게 되었습니다!



16. '끝내기' 버튼을 눌러 설치 프로그램을 종료합니다.




모노레일, 마을을 잇다 - 태백선 고한역[2019.08.30]


 강원도의 험한 산령을 굽이굽이 해체 나가면서 강릉으로 향하던 태백선 무궁화호는 남한에서 가장 높은 곳에 위치한 태백시의 추전역을 앞에 두고 정신군 고한읍에 위치한 고한역에 오게됩니다. 추전역이 운영되지 않고 있는 현재 우리나라에서 가장 높은 해발고도(705m)에 위치한 고한역은 높은 산이 많은 강원도의 특성을 잘 나타낸다고 할 수 있겠지요.



고한역은 마을에서 약간 높은 곳에 위치해 있습니다.



약간의 오르막길을 올라 고한역에 와보았습니다.



고한역 옆에는 객차를 가조한 시설이 위치해 있습니다.



고한역 앞에는 작은 맞이방이 마련되어 있습니다.



입구 한켠에 추리만화책들을 모아둔 책꽃이가 있습니다.



열차가 오지 않는 시간대의 고한역은 고요합니다.



열차는 하루에 10회 운행되고 있습니다.

청량리행은 오후 6시 39분이 막차입니다.



사북역에는 없던 고객대기실이 마련되어 있군요.



고한역의 오른쪽에 카페가 있군요.



고한역 앞에 있는 나무계단을 내려오면 마을사람들의 사진들이 붙어있습니다.



한산한 마을 안에 제법 큰 초등학교 건물이 보입니다.



과거 탄광촌이었던 고한읍에는 광부의 자녀들이 학교를 다녔겠지요.



고한시장의 입구



탄광촌이었던 마을의 특성을 시장에 잘 살려놓았습니다.



고한시장의 반대편에서 바라본 모습

마을을 돌아다니던 도중 배가고파 점심을 해결했습니다.








갈비탕이 상당히 맛이 좋았습니다.



고한읍내를 둘러 개천이 흐르고 있습니다.

탄광이 한창 운영될 때 이 천에는 검은 물이 흘렀다고 하더군요.



마을 인근에는 고한모노레일이 운행되고 있습니다.



모노레일은 생각보다 상당히 작아보입니다.

흔히 타는 엘리베이터 크기 정도랄까요?



모노레일에 직접 탑승해 보기로 하였습니다.



모노레일 차량 안에서 레일을 바라본 모습



차량 내부는 엘리베이터와 흡사하게 생겼습니다.

문을 열고 닫는 버튼이 엘리베이터의 그것과 똑같습니다.



오르막길을 올라갈때 생각보다 빠르더군요.



아랫쪽을 보니 상당히 가파른 언덕입니다.



읍내 너머를 자세히 보니 고한역이 보입니다.



모노레일은 다시 제가 탑승하였던 곳으로 이동합니다.



모노레일 바로 옆에 강원랜드 사무실이 있었군요.



마을 너머로 보이는 태백선



이제 다시 다리를 건어 고한역으로 돌아갑니다.


날이 어두워지자 카페 간판의 별에 불이 들어옵니다.



방금전에 보았던 그 객차의 뒷모습

다른데로 이동할 예정이 없는지 체인으로 꽁꽁 묶어놓고 있습니다.



이제 우리는 고한역을 떠납니다.



열차가 오기를 기다리며...



잠시후 청량리행 무궁화호 열차가 고한역으로 들어옵니다.



이제 기차에 몸을 싣고 집으로 돌아갑니다.

이 장소를 Daum지도에서 확인해보세요.
강원 정선군 고한읍 고한리 97-11 | 한쇼
도움말 Daum 지도

탄광의 마을에서 리조트의 마을로 - 태백선 사북역[2019.08.30]


 청량리를 출발하여 제천을 거쳐 강릉으로 가는 무궁화호는 우리나라가 산업화가 한창이던 시절 석탄을 수송하기 위한 목적으로 건설한 태선을 지나갑니다. 태백선은 1974년 전철화가 완료되어 힘 좋은 전기기관차가 석탄을 나르던 곳이기도 하지요. 그러나 석탄이 사양 사업이 되면서 수많은 사람들이 일자리를 잃게 되었고 특히 정선군 내에 대표적인 탄광촌이었던 사북과 고한은 활기를 잃고 맙니다.

 몰락하는 탄광촌을 막기 위해 정부는 인근에 리조트를 건설하고 한국인이 유일하게 출입이 허가된 카지노인 강원랜드를 만들게 되면서 사람들은 다시 마을로 몰려들었습니다. 리조트의 건설로 마을의 수입원이 다시 생기게 되었지만 도박중독 등의 사회적인 문제를 떠안게 되었습니다.



제천역에서 강릉행 무궁화호를 타고 사북역에 도착합니다.



예전에 새마을호가 다녔던 적이 있었는데 아직까지 타는곳에 표시가 되있네요.



역에서 내리자마자 호텔촌이 보입니다.



어느새 열차는 출발하기 위해 출입문을 닫습니다.



열차는 그렇게 고한역을 향해 달려갑니다.



고한역을 유유히 빠져나가는 무궁화호



사북역 안에는 탄광열차의 모형이 전시되어 있었습니다.



불과 몇십년전만 해도 이 동네에는 이러한 탄광열차가 돌아다니고 있었습니다.



이제 사북역사 내로 이동합니다.



역내에는 분식집이 있습니다.

콤프도 사용할 수 있었나보군요.



흔한 매표소의 모습



열차를 타러 가는 방향에서 바라본 모습



사북역 인근에는 주 수입원인 하이원 리조트가 위치해 있습니다.



역 밖을 나오자마자 마주친 대출광고를 보고 이 동네의 분위기를 짐작할 수 있었습니다.



마을 안은 호텔들이 잔뜩 늘어서 있었습니다.



주변이 호텔촌인 것에 비해 한적한 사북역



안그래도 좁은 마을에 폐건물이 역앞에 있으니 더 처량해 보입니다.



사북역 삼거리



좀 더 걸어가다 보면 사북시장이 보입니다.



사북역에서 가장 많이 보이는 가게는 전당사입니다.

그 다음으로 많이 보이는 가게는 마사지샵...



도박에 빠진 사람들을 위해 기도하는 교회도 있나봅니다.



강원랜드가 위치한 하이원리조트로 들어가는 입구



강원랜드의 현실을 보여주는 씁쓸한 사진

번호판을 떼인 차량이 주인을 하염없이 기다리고 있습니다.



정선군 또한 평창올림픽 개최지로 알파인 스키 경기가 개최되었습니다.

이 곳 사북에서는 거리가 어느정도 됩니다만

이 곳에서도 수호랑과 반다비가 있군요.



잠시 마을을 한 바퀴 돌다온 사이에 대출 명함들이 덕지덕지 붙어있습니다.



세상에나, 서울 면허의 택시가 이 외딴동네까지 와있습니다.

소문에 의하면 서울에서 강원랜드까지 10만원 이상을 주고 여기까지 온다는 분들이 계시더군요.


마을을 둘러본 후 또다른 탄광촌이었던 고한역으로 이동합니다.





환골탈태(換骨奪胎)를 위해여 - 제천임시역(4)[2019.08.30]


  중앙선과 충북선, 태백선을 달려온 모든 열차가 모이는 제천역은 전국의 여행객들이 한 번쯤은 거쳐가는 곳이라 할 수 있겠지요. 자신이 가고자 하는 방향에 따라서 이 곳에서 열차를 갈아타야 하기 때문이지요. 청량리에서 안동이나 태백으로 가시는 분이라면 열차에서 내릴 필요 없이 바로 갈 수 있지만 충북선을 이용해야 하는 경우 제천역이 충북선의 시종착역 역할을 하고 있기에 이 곳에서 자연스레 갈아타게 됩니다.


 충북선을 타고 제천역에서 정선으로 향하는 열차를 갈아타기 위해 이번에도 제천역을 방문하게 되었습니다. 지금까지 제천역을 방문하였던 이야기들은 아래의 글들을 보아주시길 바랍니다.



환골탈태(換骨奪胎)를 위해여 - 제천임시역(1)[2010.02.04]


환골탈태(換骨奪胎)를 위해여 - 제천임시역(2)[2018.10.28]


환골탈태(換骨奪胎)를 위해여 - 제천임시역(3)[2018.12.16]




지난번에 충북선 제천행 열차를 타고 왔을 땐 임시승강장에서 내렸었는데

이번에는 새로 개조한 승강장에 승객들을 내려줍니다.



마침 강릉행 무궁화호가 잠시후 도착하는데

환승하는 승객들의 편의를 위해 이곳에 내려준 것일까요?



물론 제천역이 목적지인 분들은 나가는곳으로 향합니다.



가만보니 제가 내린 승강장은 작년 12월까지만 해도 공사를 하느라 막아둔 곳이었습니다.



한동안 이 승강장을 쓸 예정인지 안내판에 '임시'라는 글씨까지 써두었습니다.



보아하니 기존의 승강장은 고상홈으로 탈바꿈 하였습니다.



임시승강장도 아직은 운영되고 있습니다.



승강장 공사는 완료되었지만 아직 계단 공사는 끝내지 못한듯 합니다.



작년까지 홀로 쓰이던 승강장도 벌써 고상홈 공사가 한창입니다.



고상홈 개량 공사가 끝나면 철거될 줄 알았던 지하통로가 아직도 사용되고 있습니다.



바로 옆 승강장 또한 고상홈으로 개량하고는 있으나 지하통로는 막아두지 않고 있습니다.



고상홈 승강장에 올라갈 수 있도록 나무계단으로 연결되어 있습니다.

신역사 계단 공사가 끝날 때 까지는 계속 사용될 듯 보입니다.



공사중인 승강장으로 가는 길은 현재 출입을 금지하고 있습니다.



휠체어 리프트가 있는데 과연 사용은 되고 있긴 할까요



역내 안내는 현재 공사 상황까지 반영하여 놓았습니다.

대전방면의 임시승강장까지 가는 길 또한 안내되고 있습니다.



잠시 쉬는 곳



제천역의 새로운 역사를 건설한지 벌써 1년반이 지났습니다.



이제 창문도 붙이고 생각보다 공사 속도는 빨라보입니다.

마음만 먹으면 2019년이 끝나기 전에는 개통될 것 같습니다만

언제나 그랬듯이 2020년에 개통되겠지요.



며칠전까지 휑하던 임시역사 뒷편도 건물이 올라가고 있습니다.



다시 승강장으로 돌아가 강릉행 열차를 타러 갑니다.



승강장까지 이동하는 통로도 골조는 모두 완성되었습니다. 이제 붙이기만 하면 될 듯!



어느새 강릉행 열차가 승강장으로 들어오고 있습니다.

저상흠 승강장은 지하통로에서 고상흠 끝까지 걸어가야 하기 때문에 역 내에도 열차 출발 15분 전까지는 도착하기를 권하고 있습니다.

실제로 나이 많으신 분들은 고상홈 승강장을 모두 건너오시는데 많이 힘들어 하십니다.



작년까지만 해도 특실로 운행되었던 1호차입니다.

이젠 무궁화호 특실이 사라졌지만 운이 좋다면 기존의 특실을 이용할 수 있습니다.


이제 다음 여행지인 사북역으로 향합니다.





Windows 10 Internet Explorer 11 에서 Adobe flash가 샐행되지 않을때 해결방법

공대생의 팁 2019.08.26 13:31


 2020년 말부터 Chrome 웹브라우저가 Adobe에서 제공하는 Flash Player 지원을 종료한다고 하였습니다. 인터넷 초창기에 벡터 방식을 사용하여 저용량으로 고용량의 동영상보다도 고화질로 화면에 표현할 수 있다는 점 때문에 Flash는 상당히 많이 사용되었습니다.

 그러나 인터넷 속도가 점점 향상되면서 2019년 오늘날에는 유튜브와 같은 고화질 동영상을 무리없이 다운로드 받아 실시간으로 재생할 수 있는 환경이 만들어지면서 고도의 연산을 필요로 하는 Flash는 오늘날의 인터넷 환경에서는 빠른 속도를 요구하는 웹브라우저에도 어울리지 않게 되면서 점차 사용이 줄어들고 있는 상황입니다. 최근에 제작되는 사이트들도 다양한 디바이스 환경에서 접속되는 것을 대비하기 위해 반응형 사이트를 제작하기에 Flash를 사용하는 것은 더더욱 어려워졌습니다.


 그럼에도 아직까지 우리나라에서는 Flash가 사용되는 사이트들이 아직까지 존재하고 있습니다. Flash가 점점 퇴출되어가는 과정에서도 우리나라의 환경에서는 웹브라우저의 Flash 지원 종료는 조금은 불편하게 느껴지는 것은 사실입니다. 티스토리 또한 Flash를 사용하지 않는 새로운 웹에디터를 제공함으로서 (비록 새로운 에디터의 장단점을 떠나서) Flash의 의존에서 점차 멀어져 가고 있는 상황에서 말이지요. 이러한 우리나라의 인터넷 환경에서 Flash가 실행되지 않을 때 이를 해결하는 방법에 대해 다루어보겠습니다.


 먼저 아래의 링크를 클릭하셔서 Flash Player를 활성화합니다.



IE(Internet Explorer) 어도비플래시플레이어 설치 및 활성화 방법 안내

↑↑위 링크를 클릭해주세요



 만약 위의 링크대로 하였지만 여전히 실행이 되지 않을 경우 아래의 방법을 참고해주시길 바랍니다.





 2019년 8월 현재 Flash Player로 서비스를 제공하는 사이트들 중 하나인 더존 세금계산서(https://www.bill36524.com)를 Windows 10 운영체제에서 Internet Explorer 11로 접속한 후 로그인을 하게 되면







 위의 화면과 같이 '어도비 플래시 플레이어 꼭 설치 하셔야 합니다!'라는 경고문구와 함께 플래시를 설치할 것을 요구하고 있습니다.








 그러나 Windows 10에서 부터는 Internet Explorer 11에는 이미 Flash Player가 포함이 되어있기 때문에 별도의 설치를 하지 않더라도 Flash Player를 실행할 수 잇어야 합니다. 이는 Flash Player를 사용하려는 사이트에서 호환성에 문제가 발생히여 실행이 되지 않는 것으로 추측됩니다.






 혹시 인터넷 익스플로러의 버전 문제 때문일 가능성이 있어 Internet Explorer를 다른 버전으로 설치하려고 시도하였으나 Windows 10에서는 Internet Explorer가 기본프로그램으로 설정되어 있기 때문에 삭제할 수 없으며 게다가 이전 버전으로 다운그레이드를 시키는 것도 사실상 불가능합니다.


 그렇다면 Windows 10에서 Internet Explorer의 이전 버전을 실행할 수 있는 방법은 없을까요? Internet Explorer 11에서는 이전 버전의 환경에서 사이트에 접속할 수 있도록 하는 에물레이션 모드가 존재하여 11 이하의 버전의 환경에서 웹브라우저를 사용할 수 있습니다.


 Internet Explorer 11을 실행하신 다음 'F12'버튼을 누르시면 아래의 화면과 같이 개발자도구창이 나타납니다.





개발자도구창이 나타나면 메뉴에서 '에뮬레이션'을 클릭합니다.





에뮬레이션 창을 클릭하면 다음과 같은 창을 보실 수 있습니다. 위의 메뉴 중 '문서 모드'를 보시면 11(기본값)이라 적혀있는 부분을 보실 수 있습니다. 이는 해당 사이트를 Internet Explorer 11 모드에서 접속중이라는 의미입니다.





문서 모드에서 버전이 적혀있는 부분을 클릭하시면 11 이외의 모드를 선택할 수 있습니다. Internet Explorer 10 버전 모드에서 해당 사이트에 접속하고 싶다면 '10'을 선택해줍니다.






에뮬레이션 모드로 문서 모드를 11 이하의 버전으로 설정하여 접속하게 되면 이전과 같이 Flash Player를 설치해달라는 창이 나오지 않고 곧바로 플래시가 실행된 창이 나타나는 것을 확인하실 수 있습니다.





기차가 스쳐가는 아름다운 바닷가가 있는 곳 - 영동선 안인역과 안인해변[2019.08.20]


 영동선 동해 - 강릉 구간은 바닷가에 근접하여 열차가 달리는 구간입니다. 그 덕에 열차안에서 푸르른 바닷가가 차창 너머로 펼쳐집니다. 이러한 광경이 아름답고 멋지기에 관광 상품으로 바다열차가 만들어져 운행되고 있지요.


 평소 무궁화호 안에서 풍경으로만 보아왔던 안인역 인근의 해변을 직접 보기 위해 차를 타고 직접 찾아가 보았습니다.





정동진역과 강릉역 사이에 위치한 안인역입니다.

평범한 간이역처럼 보이지만 매우 중요한 역할을 하고 있는 역입니다.



현재 여객 업무를 취급하고 있지 않지만 아직 승강장은 남아있습니다.



그럼에도 이 역이 중유한 이유는 이 역의 바로 뒷편에 위치한 시설 때문입니다.



역 뒷편에 위치한 영동화력발전소의 발전을 위한 물자를 수송하기 위해 이 역이 매우 중요한 것이지요.

그러나 역 주변에서 바다를 보기 위해서는 다소 멀리 떨어진 마을로 이동해야 합니다.





안인진리에 위치한 안인해변에는 철길이 마을의 한중간을 지나가고 있습니다.



철로 바로 옆에 바닷가를 볼 수 있어 상당히 좋은 뷰포인트입니다.



마을 사이에는 철길을 건널 수 있는 육교가 설치되어 있습니다.



바닷가를 마주보고 물회를 판매하는 가게가 위치해 있습니다.



철길 바로 옆에는 고양이들이 횟집에서 버려진 물고기를 가져와 먹고 있습니다.



보아하니 이제 한달 정도 된 어린 고양이들이로군요.



철길은 이 곳을 지나 바닷가를 유유히 떠나 강릉역을 향합니다.



철길 옆에 강아지 한마리가 꼬리를 흔들며 낮선이를 반깁니다.



이 곳을 지나 정등진역까지 열차 옆으로 동해의 아름다운 바다가 훤히 보입니다.



이제 한 번 바닷가를 걸어보겠습니다.



이제 막 해수욕장이 폐장되어 사람들은 많이 보이지 않습니다.

그리도 바닷가에는 한 가족일행이 물놀이를 하고 있습니다.



이제 올해 말이면 KTX를 타고 이 멋진 경관을 볼 수 있게 될 것입니다.

다음에는 KTX를 타고 이 곳을 방문하고자 합니다.






이 장소를 Daum지도에서 확인해보세요.
강원 강릉시 강동면 안인리 165-1 | 안인역
도움말 Daum 지도

KTX 타고 동해바다로! - 남강릉삼각선[2019.08.20]


 2017년 평창 동계올림픽 개최를 대비하여 경강선이 강릉역까지 개통되어 강릉에서 KTX를 탈 수 있게 되었습니다. 이어 올해 진부에서 강릉으로 이어지는 선로에 삼각선을 새로 추가하여 KTX가 동해역까지 어이질 수 있도록 남강릉삼각선을 건설하여 앞으로는 서울역에서 정동진역까지 KTX로 한 번에 갈 수 있게 됩니다.


 올해 12월에 개통될 남강릉삼각선 구간을 안인해변을 들리는 도중에 둘러보았습니다.





현재 무궁화호만 운행되고 있는 비행장건널목입니다.

건널목 너머에는 강릉선KTX가 운행되고 있는 경강선 고가가 있습니다.



이 두 노선은 강릉역에 도착하기 전 합류한 후 지하로 이어집니다.



건널목 이름의 유래는 인근의 군부대에서 따온 듯 합니다.

횡단보도 옆에는 해당 부대의 이름이 적혀 있습니다.



안인역(정동진역 방향)에서 바라본 모습

오른쪽에 살짝 보이는 고가가 남강릉삼각선입니다.



강릉역 방향

여기서 얼마 안가 경강선과 합류합니다.



강릉역 구간이 지하화 되는 동안 이 곳도 약간의 개량을 거친 듯 합니다.



기존에는 없던 철조망을 설치하여 안전도를 높였습니다.


이번에는 남강릉삼각선이 영동선과 합류하는 부분으로 이동하였습니다.





사동3건널목



이곳 건널목에서 길이 두 갈래로 나뉘어집니다.

왼쪽은 진부역, 오른쪽은 강릉역



KTX의 종착역이 될 동해역 방향입니다.



건널목 바로 앞이 급곡선으로 되어있어 경보기가 건널목에서 떨어진 위치에 있습니다.



이런식으로 두 대의 경보기가 설치되어 있습니다.



분기점이 의외로 가까운 곳에 있었습니다.



나중에 이 곳으로 KTX가 지나다니겠군요.



버스정류장 이름이 매우 적절합니다.



2차선이던 도로가 여기서부터는 좁아집니다.

건널목이 좁아서 차량이 한대가 지나갈 공간만 있습니다.



차량이 그렇게 많이 지나다니지는 않아서 굳이 2차선으로 확장할 필요는 없어보입니다.



갑자기 경보기가 울리다너 차단기가 내려옵니다.

곧 열차가 통과할 모양입니다.



안인역 방향에서 기관차가 울리는 경보음이 들립니다.



강릉까지 운행되는 무궁화호 열차였습니다



열차는 순식간에 지나 뒷꽁무니만 보인 채고 강릉역으로 향합니다.



남강릉삼각선을 설치하는 과정에서 주민들의 반발이 컸나봅니다.



남강릉삼각선이 경강선과 합류하는 지점입니다.

아직은 공사가 한창인 모양입니다.



KTX가 지나다니게 된다면 이 마을은 이제 고요하지는 않을 것 같네요.



남강릉삼각선이 마을을 관통하는 구간으로 와보았습니다.



고가로 설계되어 통행 자체는 큰 문제는 없을것 같아 보입니다.



확실히 고가는 마을을 관통하는 위치에 있습니다.



마을 안의 산을 깎은 부분이 보입니다.



지금은 공사중이지만 마무리만 하면 금방 완성될 만큼 진척도는 빠릅니다.



공사중인 철길 위에 희안한 이동체가 보입니다.

설마 사람의 힘으로 움직이는 걸까요?



공사가 끝난 후 서울역에서 KTX를 타고 정동진에 갈 수 있는 날을 고대해봅니다!


이 장소를 Daum지도에서 확인해보세요.
강원 강릉시 월호평동 | 비행장교차로
도움말 Daum 지도

시내를 관통하던 철길이 공원으로 변신하다 - 강릉 월화거리[2019.08.20]


 동해선의 강릉 시내구간이 지하화되면서 철길로 단절되었던 공간이 사람들이 돌아다닐 수 있는 공간이 되면서 월화거리는 많은 사람들이 왕래할 수 있는 산책로가 되었습니다. 특히 평창동계올림픽을 치루고 난 이후에는 강릉을 찾아오는 관광객들이 걸어다닐 수 있는 관광지로 부상하였죠.



  남대천 인근에 있는 월화정 인근에서 부터 월화거리를 걸어보았습니다.



철길로 단절되었던 마을이 통행로가 되면서 길이 아름답게 꾸며졌습니다.



야간에 방문한다면 꽤 좋은 경치가 될 것 같습니다.



터널 내부는 특별히 조명시설을 갖추고 있지는 않았습니다.

짧은 구간이어서 굳이 조명이 크게 필요하지는 않은 듯 합니다.



터널을 통과한 후 나와보니 생각보다는 어두워보이네요.



과거에 건널목이 있을법한 부분에서는 이렇게 횡단보도를 철길처럼 그려놨습니다.



공원 인근에 위치한 O Chair와 월화정



남대천을 건널 수 있도록 기존의 철교를 보강하여 보행이 가능하게 만들어졌습니다.



철고 위에서 바라본 강원도의 풍경



그 반대편의 모습



바닥에는 마치 철도를 형상화한 듯 남겨둔 것 같아 보입니다.



바로 옆부분에는 바닥을 투명하게 하여 남대천을 직접 볼 수 있도록 만들어 놓았습니다.



철교 위에서 월화정을 바라보고서...




이 장소를 Daum지도에서 확인해보세요.
강원 강릉시 노암동 275-2 | 월화정
도움말 Daum 지도

하나된 열정, 뜨거운 열정! 평창 동계올림픽(5) - 1년후 이야기 [2019.08.20]


  평창올림픽이 개최된지 벌써 1년이 지났습니다. 올림픽의 열기는 아직까지 느껴지는것 같지만 기억속의 모습들은 서서히 옅어져가고 있습니다. 지난 겨울 환호성이 울려퍼졌던 평창올림픽 경기장에 방문하여 그 때의 함성을 기억해보았습니다.



가톨릭관동대학교에 위치한 하키경기장입니다.

남북단일팀이 이 곳에서 경기를 하였을 때 엄청난 인파가 줄을 이었던 기억이 나네요.



하키장 인근은 공원으로 잘 꾸며져 있습니다. 작년에도 이 정도로 만들었던 것으로 기억하고 있습니다.



시설이 사용되고 있지 않는지 관계자 외에는 출입을 하지 못하게 하고 있습니다.

1988년 서울올림픽이 개최되었던 한양대학교 올림픽체육관이 지금도 활용되고 있는 걸 생각하면 참으로 아쉬운 부분입니다.

비록 하키경기장으로 설계되었지만 사후 활용 방안을 만든다면 학생들이 사용할 수 있지 않을까 싶지만

방법을 찾아보기 어려운가봅니다.



이번에는 강릉역 너머에 위치한 올림픽파크에 도착하였습니다.



이곳에 있는 강릉 하키 센터는 당시 사용했던 안내판을 그대로 사용하고 있었습니다.



올림픽 당시에 이 곳에 많은 사람들이 있었다는게 한편으론 믿어지지가 않는군요.



이번에는 강릉종합운동장으로 이동해봅니다.

작년 이 곳에 방문했던 기록은 아래의 링크로 확인해봅니다.


하나된 열정, 뜨거운 열정! 평창 동계올림픽(1) - 남북단일팀[2018.02.14]

https://elecs.tistory.com/249



올림픽이 개최되었던 곳임을 이 스케이트 한 짝의 모형이 나타내고 있습니다.



모형 옆에는 수많은 원형 모형들 사이 오륜기가 그려져 있습니다.



비록 올림픽은 끝났지만 오륜기는 남아있습니다.



실내 로울러스케이트장



경기장 한컨에는 암벽등반장이 마련되어 있습니다.

며칠전 영화 '엑시트'를 보았었는데 암벽등반이 결코 쉬운 액티비티는 아니더군요.



경기장 내부의 모습입니다.

올림픽 당시에 이 곳을 보지 못한건 참으로 아쉽습니다.



동네 축구동호회 회원들이 경기 준비를 하는 듯한 모습이 보입니다.



오륜마크만이 덩그러니...



강릉스피드스케이팅경기장



이곳도 외부인은 출입을 제한하고 있습니다.



2019년 11월에 강릉커피축제를 한다는군요.


이번에는 올림픽 개폐회식이 진행되었던 평창 대관령으로 이동해봅니다.



평창올림픽의 시작을 알린 성화는 이 곳에 있습니다.

작년 이 곳에서 성화에 불이 활활 타던 모습은 아래의 포스팅에서 확인해봅니다.


하나된 열정, 뜨거운 열정! 평창 동계올림픽(3) - 성화

https://elecs.tistory.com/251



2019년 현재 평창올림픽 성화대는 이렇게 황량하게 서있습니다.



정말 성화 주변은 그 어떤 건물도 하나 없습니다.



성화대 근처에 가까이 가보니 안으로 들어갈 수 있게 되어 있습니다.



성화가 서있던 곳에서 올림픽스터디움이 있던 곳으 바라본 모습입니다.

대관령답게 험준한 산령이 펼쳐져 있습니다.



평창 올림픽 및 패럴림픽 로고

처음 발표되었을 땐 한글 가지고 유치하게 만든거같아 보였는데

지금 다시 보니 정말 잘 만들어진 로고입니다.



성화 내부 벽에는 각종 경기 기록들을 기록하고 있었습니다.



양쪽 벽에 각각 올림픽과 패럴림픽 기록을 걸어두었더군요.



평창올림픽의 기록이 이렇게나마 남아있는건 그나마 다행이라 볼 수 있겠지요?

서울올림픽 시설들처럼 남아있을 것이라 기대하고 어렵게 오신 분들께는 조금은 아쉬울 수도 있겠네요.



정말 놀랍게도 성화대 너머에는 비닐하우스 철골들이 줄지어 있습니다.



성화대 너머로 보이는 마을의 모습들입니다.

올림픽이 끝난 지금은 관광객도 많이 줄어들었다고 하네요.



영동고속도로를 힘차게 차를 몰고 여기까지 올라왔습니다.

올림픽이 개최되었던 곳이지만 택시 구하기도 마땅치 않아 차를 몰고 돌아다니는게 오히려 편한 동네였습니다.


부디 내년에도 지금보다 더 나은 모습으로 시설들이 남아있었으면 하는 마음입니다.

올림픽을 성공적으로 치루었던 만큼 남은 시설들이 애물단지가 되지 않도록 활용된다면

앞으로 우리나라도 동계올림픽 강국이 될 수 있지 않을까요?






이 장소를 Daum지도에서 확인해보세요.
강원도 평창군 대관령면 |
도움말 Daum 지도

평창올림픽의 열정을 다시 한 번, 평창남북평화영화제 [2019.08.19]


 2018 평창 올림픽이 개최된지 벌써 1년이 지났습니다. 작년 1월 1일 북한의 평창올림픽 참가 제안으로 시작된 남북관계가 다시 교류를 시작하게 된 계기가 되어 지금까지 좋은 관계를 유지하나 싶었지만 지난 2019년 5월부터 계속되고 있는 북한의 미사일 발사 위협이 평창올림픽이 개최되기 이전의 차디찬 관계로 다시 돌아가게 될까 싶은 나날이 벌어지고 있습니다.


 그렇다고 해서 지난 세월처럼 서로를 경계해야만 할 필요는 없지요. 2019년 8월 현재와 같이 한국과 일본의 정치적 갈등이 심화되고 있다 하더라고 사람과의 교류만큼은 흔들림 없이 계속 이어가야 할 것입니다. 비록 지금 당장 관계가 회복될 수는 없다 하더라도 말이죠.


 2019년 개최된 제 1회 평창남북평화영화제는 평화와 관련된 다양한 주제로 평창과 강릉에서 영화제가 개최되었습니다. 


 영화 주제는 남북관계 뿐 아니라 전 세계에서 전쟁으로 고통받는 사람들에 대한 이야기와 같이 평화와 관련된 메시지를 담고 있는 영화들이 주를 이루고 있습니다. 영화를 보고 난 후 메시지를 되새겨볼 때 평화란 과연 무엇인가 라는 생각을 할 수 있는 기회가 되기도 합니다.



영화제 3일차인 2019년 8월 19일 평창 알펜시아에 위치한 영화관을 방문하였습니다.





이날 제가 선택한 영화는 '모가디슈에서 온 소녀'입니다.

전쟁으로 혼란스러운 나라인 소말리아에서 도망쳐 나온 소녀의 이야기인데

전쟁의 참상이란 말로 설명할 수 없을 정도로 매우 끔찍합니다.



영화관 앞에 비치된 팜플렛이 상당히 재밌게 생겼습니다.

북한 여권에 항공권을 끼운 듯한 모습입니다.

북한 주민들도 당당하게 여권을 들고 여행을 다닐 수 있는 날이 왔으면 좋겠네요.



알펜시아에 있는 영화관은 마치 시민회관 큰 강당을 빌려서 영화를 상영하는 분위기였습니다.

어찌보면 시민회관을 빌려 영화를 상영하는 듯한 분위기처럼 보이기도 합니다.



작년 평창올림픽의 마스코트였던 수호랑과 반다비가 보입니다.

올림픽 축제 분위기로 달아올랐던 평창이 생각나는군요.



드디어 영화관에 입장하였습니다.

워크샵을 온 사람들의 행사 소음이 극장 안까지 들려오는것이 흠이군요.



영화가 끝나고 숙소로 가던 도중 보았던 PyeongChang2018.

이러한 표기가 이 곳이 올림픽이 열렸던 곳임을 알 수 있을듯 합니다.



올림픽이 끝난 지금 보면 이런 깡촌에 화려한 장식들이 있는 것이 약간 위화감이 듭니다.



다음날 아침 강릉 시내에서 영화제가 개최중안 상영관을 찾아가 보았습니다.





평창남북평화영화제, 파프라고도 부르는군요.



엘리베이터에도 상영관임을 붙여놓았군요.



이번에는 독립영화관인 신영극장에 찾아가 보았습니다.





이 건물에 입주한 가게들이 신영이라는 이름을 즐겨 쓰는 듯 보입니다.



매표소는 상영관이 위치한 4층에 올라가면 보입니다.

1관과 2관은 별개의 건물이지만 건물 사이에 다리를 놓아 건널 수 있게 되어 있습니다.



영화제의 개회식은 평창 올림픽 스터디움이 위치했던 곳에서 진행되었습니다.

축제의 막바지여서인지 사람 없이 한산합니다.



평창을 떠나기 직전 영화제의 포스터의 모습입니다.



과연 내년에도 평창에서 영화제가 이어서 개최될까요?

그 때엔 우리나라에 평화가 찾아오기를 간절히 기도해봅니다.







이 장소를 Daum지도에서 확인해보세요.
강원 평창군 대관령면 용산리 200-3 | 알펜시아리조트 알펜시아시네마
도움말 Daum 지도

C++에서 Boost ASIO를 사용하여 TCP 동기화(Blocked) 통신 프로그래밍

공대생의 팁 2019.07.21 19:58

 지난 포스팅에서 C++에서 제공하는 Boost 라이브러리의 통신 라이브러리인 ASIO를 사용하여 비동기 통신 프로그래밍을 하는 방법에 대해 소개를 하였던 적이 있었습니다.



C++에서 Boost ASIO를 사용하여 TCP 비동기(Unblocked) 통신 프로그래밍

https://elecs.tistory.com/314


 서버-클라이언트 통신 시스템을 구축하던 도중 Java에서 사용하던 객체 통신 프로그래밍 방식이 상당히 편했던 기억이 있어 이를 C++에서도 편하게 사용할 수 있는 방법을 찾았던 것이어서 이를 정리하였던 글이었는데 생각보다 많은 분들께서 도움을 받으셨다는 답변을 받았습니다.


 그래서 이번에는 ASIO 통신 프로그래밍에서 다룰 만한 내용으로 동기화(Synchronization, Blocked) 프로그래밍 방식에 대해 이야기 해보고자 합니다.





 위 그림은 ASIO 프로그래밍의 동기화 통신 방식의 흐름도를 나타낸 것입니다. 이전 포스팅에서 다루었던 비동기화 통신 방식과는 달리 동기화 통신은 상대로부터 response를 대기하는 과정이 추가됩니다.

 비동기 모드의 경우 Handler를 등록해두면 response의 수신 여부와 관계 없이 서버는 프로그램의 동작을 멈추지 않고 별개의 동작을 수행할 수 있습니다. 반면 동기화 통신의 경우 상대방의 response가 들어오고 나서 동작하는 방식이므로 서로가 통신이 확인이 되었는지의 여부를 확인할 수 있다는 장점이 있습니다.


 먼저 프로세스는 socket에 자신의 IP 정보를 기록한 후 이를 io_service(Boost 1.66 버전 이후는 io_context)를 통해 운영체제 커널에 정보를 등록합니다. 이후 운영체제가 다른 컴퓨터로부터 응답을 수신하게 되면 이를 프로세스의 socket에게 전달하고 프로세스는 전달 받은 정보를 가공하는 방식으로 통신이 이루어집니다.


자세한 내용은 아래의 소스코드를 통해 알아보도록 하겠습니다.



 프로그램을 실행하기에 앞서 자신의 컴퓨터에 Boost 라이브러리를 설치합니다. Ubuntu를 기준으로 다음과 같이 실행합니다.


$ sudo apt install libboost-all-dev



 이제 어러분의 컴퓨터에는 Boost 라이브러리가 설치되었습니다. 다음으로 아래의 소스코드를 작성해줍니다.


sync_server.cc


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include<cstdlib>
#include<iostream>
#include<boost/asio.hpp>
 
using namespace std;
using boost::asio::ip::tcp;
 
class session
{
public:
    session(tcp::socket& sock)
    //boost 1.66이후 (Ubuntu 18.10 이후) 버전의 경우 io_context를 사용
    //session(boost::asio::io_context& io_service)
    : socket_(sock){
        start();
    }
 
    void start(){
        try{
            while(1){
                boost::system::error_code error;
                size_t length = socket_.read_some(boost::asio::buffer(data_), error);
                if(error == boost::asio::error::eof){
                    //클라이언트로 부터 정보를 모두 받았으므로 종료한다.
                    break;
                }else if(error){
                    throw boost::system::system_error(error);
                }
                cout << "Message from client: " << data_ << endl;
                boost::asio::write(socket_, boost::asio::buffer(data_, length));
            }
        }catch(exception& e){
            cerr << "Exception in server: " << e.what() << endl;
        }
    }
 
    tcp::socket& socket(){return socket_;}
 
private:
    tcp::socket& socket_;
    enum { max_length = 1024 };
    char data_[max_length];
};
 
class server
{
public:
    server(boost::asio::io_service& io_service, short port)
    //boost 1.66이후 (Ubuntu 18.10 이후) 버전의 경우 io_context를 사용
    //server(boost::asio::io_context& io_service, short port)
    : io_service_(io_service), acceptor_(io_service, tcp::endpoint(tcp::v4(), port))
    {
        while(1){
            //boost 1.66이후 (Ubuntu 18.10 이후) 버전의 경우 io_context를 사용
            //new session(acceptor_.accept());
 
            //sever의 소켓 생성
            tcp::socket sock(io_service);
            //client로부터 접속 대기
            acceptor_.accept(sock);
            new session(sock);
        }
    }
private:
    boost::asio::io_service& io_service_;
    //boost 1.66이후 (Ubuntu 18.10 이후) 버전의 경우 io_context를 사용
    //boost::asio::io_context &io_service_;
    tcp::acceptor acceptor_;
};
 
int main(int argc, char* argv[]){
    try{
        if(argc != 2){
            cerr << "Usage: server <port>" << endl;
            return 1;
        }
        boost::asio::io_service io_service;
        //boost 1.66이후 (Ubuntu 18.10 이후) 버전의 경우 io_context를 사용
        //boost::asio::io_context io_service;
        server s(io_service, atoi(argv[1]));
 
    }catch(exception& e){
        cerr << "Exception: " << e.what() << endl;
    }
 
    return 0;
}
cs



sync_client.cc


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<cstdlib>
#include<iostream>
#include<boost/asio.hpp>
 
using boost::asio::ip::tcp;
using namespace std;
 
class client
{
public:
    client(boost::asio::io_service& io_service,
    //client(boost::asio::io_context& io_service,
    const string& host, const string& port) : socket_(io_service)
    {
        tcp::resolver resolver(io_service);
        //서버에 접속을 시도한다.
        boost::asio::connect(socket_, resolver.resolve({host, port}));
 
        string msg = "Hello, world!";
        size_t msg_length = msg.length();
 
        //서버로 데이터를 전송
        boost::asio::write(socket_, boost::asio::buffer(msg, msg_length));
 
        char reply[max_length];
        //서버로부터 데이터를 수신
        size_t reply_length = boost::asio::read(socket_, boost::asio::buffer(reply, msg_length));
        cout << "Reply is: " << reply << endl;
        
    }
 
private:
    tcp::socket socket_;
    enum { max_length = 1024 };
};
 
int main(int argc, char* argv[]){
    try{
        if(argc != 3){
            cerr << "Usage: client <host> <port>" << endl;
            return 1;
        }
 
        //boost 1.66이후 (Ubuntu 18.10 이후) 버전의 경우 io_context를 사용
        //boost::asio::io_context &io_service;
        boost::asio::io_service io_service;
        client c(io_service, argv[1], argv[2]);
 
    }catch(exception& e){
        cerr<<"Exception: " << e.what() << endl;
    }
 
    return 0;
}
cs



CMakeLists.txt


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
cmake_minimum_required(VERSION 3.0)
add_compile_options(-std=c++11)
 
project(asio_sync)
find_package(Boost REQUIRED system)
find_package(Threads)
 
include_directories(${Boost_INCLUDE_DIR})
 
add_executable(client
    sync_client.cc
)
 
add_executable(server
    sync_server.cc
)
 
target_link_libraries(client
    ${Boost_LIBRARIES}
    ${CMAKE_THREAD_LIBS_INIT}
)
 
target_link_libraries(server
    ${Boost_LIBRARIES}
)
cs



Linux 환경에서 다음과 같이 프로그램을 컴파일합니다.


$ mkdir build

$ cd build

$ cmake ..

$ make


 이제 우리가 만든 프로그램을 실행하여봅니다.



Server

1
2
$ ./server 2222
Message from client: Hello, world!
cs



Client


1
2
$./client 127.0.0.1 2222
Reply is: Hello, world!
cs



 축하합니다! 이제 여러분들도 Boost 라이브러리의 ASIO를 사용하여 동기화 통신 프로그래밍을 만들 수 있게 되었습니다!