반응형

안녕하세요. 코로나19 바이러스 이슈사 해결되는 듯 해결되지 않고 계속 지속되어 국민 모두가 힘든 시기입니다. 저와 같은 회사원들도 재택근무를 지속하느라 업무효율도 낮고 힘든 시기입니다.

얼마전에 제가 재택근무 필수 유틸로 '자리안비움' 이라는 유틸을 하나 올렸었는데요.

2020/03/09 - [DEV/c#] - 재택근무 필수 유틸 "자리안비움" - 윈도우 꺼짐 방지

 

재택근무 필수 유틸 "자리안비움" - 윈도우 꺼짐 방지

요즘 코로나 바이러스 때문인지 덕분인지 재택근무를 하는 분들이 많은데요. 막상 집에 있다 보면 사무실에 있을 때 처럼 연속해서 자리에 머무르지 못하는 경우가 종종 있습니다. 애들이나 와�

diy-dev-design.tistory.com

회사의 보안 문제로 해당 유틸리티가 구동이 되지 않는 분들이 계서서 엑셀로 비슷한 기능을 하는 버전을 하나 만들어 보았습니다.

엑셀 버전 자리안비움 V2

작동 하는 방법은 간단합니다.

타이머 간격 옆부분에 숫자를 입력합니다. 해당 숫자는 마우스가 움직이지 않는 시간을 지정합니다.

그런다음 '시작' 버튼을 누르면 동작 하게 되는데요. 

마우스가 지정한 시간만큼 움직임이 없으면 잠깐 마우스 커서를 이동시키는 기능을 수행합니다.

'중지' 버튼을 누르면 처음 설정한 시간으로 시간이 리셋되고 기능 동작이 멈춥니다.

모니터 절전 방지 기능은 넣지 않았고요. 마우스만 제어가 됩니다. 

모니터 절전 기능까지 동일하게 동작 됩니다.  시작을 누르면 ON 상태가 되며 중지를 누르면 OFF 로 바뀌도 기능이 중단 됩니다.

하드디스크 꺼짐, 최대절전모드 진입 등의 제어는 이루어지지 않으니 컴퓨터가 꺼진다면 확인해 보세요.

 

엑셀 한켠에 해당 파일을 열어두고 '시작' 버튼을 눌러 놓으면 시스템이 자리비움으로 변경되지 않는 것이지요.

반응형

'ㅎㅎ

물론 우리들은 누가 지켜보든 지켜보지 않든 열심히 일을 하지만 피치 못하는 상황으로 자리를 비워야 하는 일이 있을 수도 있지 않겠습니까? 그런데 회사에서는 자리를 지키고 앉아 있는지만 모니터링 하는 한심한 상사도 있게 마련이지요. 

암튼 뭐 좋은 목적으로 사용하시리라 믿습니다.

아래 파일을 다운로드 받으셔서 사용하시면 되며 초기 구동시 엑셀 매크로에 대한 허용 권한을 허용해 주셔야 합니다.

zarianbium_excel.xls
0.05MB

해당 엑셀 파일에 vba 를 이용하여 마우스를 제어하는 코드도 들어있으니 공부하실 분들은 다운로드 받으셔서 살펴보시기 바랍니다 ^^

 

 

20200901 내용 추가

- 유틸 버전 자리안비움과 동일한 모니터 절전 기능을 추가하였습니다.

20230512 내용 추가

- 어플처럼 마우스 클릭 기능을 추가하는 방법을 소개해 드립니다. 직접 하시면 됩니다.

  • 다운로드 받은 엑셀 파일을 열어놓고 alt+F11 키를 눌러줍니다 --> vba 편집창 나타남
  • 중간코드 중에 waitTime 부분을 아래와 같이 수정합니다. Call click 추가

이랬던 코드를
요렇게 3줄 추가하여 수정해 줍니다.

요렇게 하면 마우스가 이동한 뒤에 클릭! 원래 위치로 돌아와서 클릭! 하는 동작이 추가 됩니다.

스카이프 기반 메신저가 자리비움이 안먹는다는 분들이 계신데.. 요렇게 테스트 해보니 자리비움으로 바뀌지 않는 것을 확인했습니다. 

정지 했다가 한번 다시 시작하시면 적용 됩니다.

 

그럼 이만~

2020/09/04 - [DEV/VBA] - [vba] 엑셀 이미지 리스트로 일괄 다운로드 받기

2020/06/22 - [DEV/VBA] - [vba] 초등학교 연산 자동 문제집 - 곱셈 추가

2020/01/08 - [DEV/c#] - Excel Automate, 엑셀 자동화 프로그램

2020/05/21 - [DEV/VBA] - [Excel] LCD 인치 정보로 가로 세로 길이 알아내는 방법

2019/10/24 - [DEV/VBA] - [vba] 버튼(단추)를 이용하여 스크립트 실행하기

반응형
반응형

c# 을 이용하여 streamreader 개체로 텍스트를 읽는 방법은 매우 효율 적이고 손쉽게 작업을 수행하도록 해줍니다. 빠르고 간단하게 개발을 할 수 있어 저도 자주 사용하고는 합니다.

그런데 이번에 방대한 크기의 텍스트 파일을 이용해서 작업을 하는 중 고민 거리가 생겼습니다. 미리 텍스트 파일을 읽어서 중간중간 핵심이 되는 ID 별로 위치를 저장해놓고 나중에 ID 에 해당되는 위치로 seek 하여 읽어 들이는 방법을 사용하려고 했습니다.

그런게 steramreader 는 seek 기능이 없더군요. -_-

그래서 streamreader.basestream 으로 들어가보니 seek 도 있고 position 도 있길레 해당 메소드와 프라퍼티로 구현을 해보기로 하였습니다.

long filePos = -1;
using (StreamReader cini = new StreamReader(fs, Encoding.Default))
{
      do
      {
          filePos = cini.BaseStream.Position; //readLine 을 하기 전 위치를 저장한다
          string cline = readline();
          if (cline == "내가 원하는 정보")
          {
              break;
          }
      }while(cini.EndOfStream == false);
}

// filePos 에 저장된 값을 나중에 이용할 경우
using (StreamReader cini = new StreamReader(fs, Encoding.Default))
{
      cini.DiscardBufferedData();
      cini.BasePosition.Seek(filePos, SeekOrigin.Begin);
    
      // 자 이제 읽어 볼까!
      string myResult = cini.readLine();
}

이런 식으로 말이지요..

간단하잖아요? 상식적으로 저렇게 하면 될 것 같기도 하고요...

 

그런데 안됩니다.

 

 

엉터리 값이 나오게 됩니다.

라인 위치도 안맞고 알수 없는 위치의 값들이 튀어 나옵니다.

인터넷을 좀 뒤적거려보니 StreamReader 의 readline 이라는 녀석이 특이한 녀석이더군요.

우리가 생각하는 문자열에서 실제 한줄을 읽어서 반환해주는 게 아닌 어떤 블럭 단위로 데이터를 읽어 들인 뒤 newLine 에 해당하는 기호까지의 데이터를 돌려주는 것으로 블록 안에는 한줄이아닌 여러줄이 들어 있을 수도 있습니다.

 

어쨌든 여기저기 한참을 뒤진 후 완벽하게 구동하는 코드를 찾아 공유합니다.

stackoverflow.com/a/17457085

 

StreamReader and seeking

can you use streamreader to read a normal textfile and then in the middle of reading close the streamreader after saving the current position and then open streamreader again and start reading from...

stackoverflow.com

바로 요 링크에 있는 코드인데요. 사용하기도 편리하게 해당 개발자 분께서 함수로 깔끔하게 구현을 해주셨습니다.

바로 아래코드를 본인의 개발중인 클래스에 포함시킵니다.

public static long GetActualPosition(StreamReader reader)
{
    System.Reflection.BindingFlags flags = System.Reflection.BindingFlags.DeclaredOnly | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.GetField;

    // The current buffer of decoded characters
    char[] charBuffer = (char[])reader.GetType().InvokeMember("charBuffer", flags, null, reader, null);

    // The index of the next char to be read from charBuffer
    int charPos = (int)reader.GetType().InvokeMember("charPos", flags, null, reader, null);

    // The number of decoded chars presently used in charBuffer
    int charLen = (int)reader.GetType().InvokeMember("charLen", flags, null, reader, null);

    // The current buffer of read bytes (byteBuffer.Length = 1024; this is critical).
    byte[] byteBuffer = (byte[])reader.GetType().InvokeMember("byteBuffer", flags, null, reader, null);

    // The number of bytes read while advancing reader.BaseStream.Position to (re)fill charBuffer
    int byteLen = (int)reader.GetType().InvokeMember("byteLen", flags, null, reader, null);

    // The number of bytes the remaining chars use in the original encoding.
    int numBytesLeft = reader.CurrentEncoding.GetByteCount(charBuffer, charPos, charLen - charPos);

    // For variable-byte encodings, deal with partial chars at the end of the buffer
    int numFragments = 0;
    if (byteLen > 0 && !reader.CurrentEncoding.IsSingleByte)
    {
        if (reader.CurrentEncoding.CodePage == 65001) // UTF-8
        {
            byte byteCountMask = 0;
            while ((byteBuffer[byteLen - numFragments - 1] >> 6) == 2) // if the byte is "10xx xxxx", it's a continuation-byte
                byteCountMask |= (byte)(1 << ++numFragments); // count bytes & build the "complete char" mask
            if ((byteBuffer[byteLen - numFragments - 1] >> 6) == 3) // if the byte is "11xx xxxx", it starts a multi-byte char.
                byteCountMask |= (byte)(1 << ++numFragments); // count bytes & build the "complete char" mask
            // see if we found as many bytes as the leading-byte says to expect
            if (numFragments > 1 && ((byteBuffer[byteLen - numFragments] >> 7 - numFragments) == byteCountMask))
                numFragments = 0; // no partial-char in the byte-buffer to account for
        }
        else if (reader.CurrentEncoding.CodePage == 1200) // UTF-16LE
        {
            if (byteBuffer[byteLen - 1] >= 0xd8) // high-surrogate
                numFragments = 2; // account for the partial character
        }
        else if (reader.CurrentEncoding.CodePage == 1201) // UTF-16BE
        {
            if (byteBuffer[byteLen - 2] >= 0xd8) // high-surrogate
                numFragments = 2; // account for the partial character
        }
    }
    return reader.BaseStream.Position - numBytesLeft - numFragments;
}

 

그런 다음 위에서 제가 작성했던 코드에 position 을 기록하는 부분을 위에 소개한 함수를 이용해서 찾는 것이지요.

GetActualPosition 이라는 함수를 이용해서요. 그럼 아래와 같이 되겠죠.

long filePos = -1;
using (StreamReader cini = new StreamReader(fs, Encoding.Default))
{
	do
	{
		filePos = GetActualPosition(cini); //readLine 을 하기 전 위치를 저장한다
		string cline = readline();
		if (cline == "내가 원하는 정보")
		{
			break;
		}
	}while(cini.EndOfStream == false);
}

// filePos 에 저장된 값을 나중에 이용할 경우
using (StreamReader cini = new StreamReader(fs, Encoding.Default))
{
	cini.DiscardBufferedData();
	cini.BasePosition.Seek(filePos, SeekOrigin.Begin);

	// 자 이제 읽어 볼까!
	string myResult = cini.readLine();
}

 

이렇게 해서 결과를 확인해보면 아주 완벽하게 동작이 됩니다.

해당 개발자 분께서 페이지에 그리고 주석으로 상세하게 소개를 하고 있으니 관심 있으신 분께서는 한번 찬찬히 분석해보시는 것도 큰 공부가 될 것 같습니다.

c# 을 이용해 StreamReader 를 사용하시는 분들~

readline 수행 후 정확한 위치를 구해야 하는 문제에 봉착하셨다면 한번 시도해 보세요.

 

그럼 이만~

2023.01.31 - [DEV/c#] - [c#] Resource 에 추가한 텍스트를 소스코드에서 불러오기

2020/07/29 - [DEV/c#] - [C#] 설정 저장하고 재실행 시 저장한 값 불러오기

2020/07/21 - [DEV/c#] - C# 문자열 읽어서 문자열에 해당하는 변수에 값 세팅하기

2020/06/29 - [DIY/Arduino] - C# 에서 아두이노로 시리얼 통신 하기

2020/06/03 - [DEV/c#] - C# .net으로 photoshop 연동하기

반응형
반응형

본격적으로 캠핑의 계절이 왔습니다. 야외에서 침낭이 없어도 춥지 않은 환상적인 날씨죠. 이제 가을까지 계속 캠핑하기 좋은 날이 이어질거라 믿습니다. 그래서 이것저것 캠핑용품을 구입하였는데요.

문제는

차에 안들어 간다는 것입니다. i30cw 의 트렁크가 작지 않다고 믿었지만 ... 무리데스. -_-;;

이때는 몰랐다. 이게 다인줄 알았지... 

위의 사진에추가로 구입한 물품이

야전텐트 2개, 캠핑의자 2개, 자충식 에어 매트리스 가 되겠으며 이제 여름이니까 여름 물놀이 용품과 보트, ....

 

... (-_-)>"

 

 

 

 

그래서 차량용 루프박스를 구입하기로 마음 먹었습니다.

 

툴레 루프박스, 최고로 멋지고 최고로 비싸다. -_-

우선 여러가지 제품을 살펴보았는데요. 단연 THULE 제품이 눈에 들어오더군요. 많은 사람들에게 인기가 있는건 다 이유가 있는 것이지요. 유럽에서 안전 인증도 받았을 뿐더러 디자인이 정말 너무나 예쁩니다. 하지만 문제는 가격이죠. 마음에 든다 싶으면 100만원이 훌쩍 넘어가더군요. 결재 버튼에 손이 몇번이나 갔는지 모르겠습니다. 

 

어쨌든 구입을 망설이며 며칠을 루프박스를 검색하며 알아본 결과 중요한 포인트를 몇가지 알게 되었습니다.

 

차량용 루프박스 선택 시 체크해야 할 사항 (중요)

  • 내 차량에 루프레일 / 루프랙이 달려있는가?
  • 기본 장착 구조가 아니라면 별도로 장착하기 위한 구조로 설계가 되어있는가?
  • 루프박스의 높이가 생각보다 높다. 가로바와 루프박스 설치를 완료한 높이가 2.1 m 를 넘는가?
    (건물 지하주차장 최소 진입 높이가 대부분 2.1m라고 합니다.)
  • 루프 박스의 잠금 방식은 안전한가?
  • 과연 내차에 올라가는 사이즈(길이, 폭) 인가?
    (생각보다 루프박스가 큽니다. 길이가 2m 가 훌쩍 넘는 제품도 있지요)
  • 열리는 방향은 양쪽으로 다 열리는가?
  • 뚜껑이 견고한 플라스틱으로 이루어져 있는가? (재질, 두께)

적어도 이 정도의 검토를 하고 구입을 하는 것이 후회를 하지 않습니다. 인터넷에 찾아보면 주차장 진입시 루프박스가 부딪혀 박살난 이야기들을 종종 찾아볼 수 있는데요. i30cw 의 경우 워낙 오래된 차여서인지 생각보다 정보가 없더군요. 어떤 제품을 사야할지 많이 고민이 되었습니다.

i30cw의 경우 일단 SUV 보다는 차고가 낮으니 선택의 폭은 좀 넓어 지겠으나 루프랙 자체의 높이도 있고 하니 최소한의 높이가 되는 조합을 찾기로 하였습니다.

그런데 루프박스의 높이가 낮아지면 가격은 올라가는 것을 아시나요? 얇은 루프박스들은 정말 많이 비쌉니다.

일단 제차는 높이가 낮으니 조금은 선택의 폭이 넓어진 셈 입니다. 중대형 SUV 였다면 아마 눈물을 머금고 비싸고 얇은 루프박스를 구입했어야 하겠죠.

제 차량에 과연 루프박스가 문제 없이 올라갈까 싶어 포토샵으로 시뮬레이션도 해보았습니다.

 

 

 

가로바의 선택

높이를 낮추기 위해서는 가로바를 휘습바 라는 제품을 설치하는 것이 좋습니다. 물론 루프랙이 있는 차량의 이야기 입니다. 휘습바는 루프랙 안쪽으로 설치가 가능한데 좌우로 가로바가 튀어 나오지 않아 깔끔한 외관을 보이고 높이도 장착할 수 있는 최저 높이가 되므로 아주 적당한 솔루션이 되겠습니다. 툴레와 야키마의 제품이 유명한데 가격이 만만치 않습니다. 국산 유일 캐리어에서는 휘습바는 나오지 않지만 루프랙에 장착할 수 있는 고급형 가로바의 거의 두배에 가까운 금액이 필요합니다. 이것도 고민이 되는 부분입니다.

 루프렉이 있는 차량에 높이를 최소한으로 설치할 수 있다.

하지만 결국 저는 유일 캐리어의 가로바를 최종 선택하였는데요. 아무래도 국산 제품이며 제품에 대한 신뢰도가 생각보다 높았습니다. 만약 루프박스도 생산하였다면 유일 캐리어 제품을 고민 했을 지도 모릅니다.

유일캐리어의 루프랙용 가로바 시스템

어쨌든 제가 구입한 가로바는 유일 캐리어의 YI-127WB 제품을 구입하였습니다. 참고로 YI-127 은 가로바 아래쪽에 루프랙과 고정되는 부품(풋) 의 제품명이며 WB 는 윈드 블레이드?? 정도로 구분되는 제품명으로 보여집니다. 어쨌든 제품이 튼튼해 보이고 디자인도 유려하였으며 (툴레 못지 않게) 가로바의 단면 형상이 공기 저항에 최적화된 '에어로 바' 를 제공하므로 툴레와 비교하여도 부족할 것이 없었습니다. 다만 휘습바에 비하여 높이가 높아지기 때문에 루프박스 선택에 야간의 고민이 늘게 되었습니다.

설치는 직접 하는 것으로 하고 인터넷으로 구입하니 툴레 제품의 반값 밖에 안되더군요.

또 나중에 차량을 바꿔 루프랙이 없는 차량이라도 풋만 따로 구입이 가능하므로 풋만 구입하면 바로 재사용 할 수 있겠다 싶었습니다.

유일 캐리어 가로바는 이틀만애 배송 완료.

3개의 박스에 포장되어 도착

 

 

 

 

루프박스 선택

어쨌든 가로바를 먼저 구입하고 나서 루프박스를 살펴보았습니다. 

처음엔 THULE 에서만 고르다가 인터넷에 찾아보니 가성비 루프박스들이 많이 소개되어 있었습니다. 하지만 국내 루프박스의 3대장 하면 결국 THULE, Hapro, Yakima 요렇게 3가지로 압축 되더군요. 중국산 제품은 일단 믿음이 잘 안가고 심지어 많이 알려진 제품의 경우 가격도 그다지 저렴하지도 않았습니다.

결국 안전성, 디자인, 가격 모두 합리적이다 판단된 Hapro 브랜드로 선택의 폭이 좁혀졌고 그 중에 제니스, 트랙서로 압축이 되었습니다.

제니스는 높이가 비교적 낮고(37cm) 디자인이 훌륭합니다. 하지만 가격이 비싼게 걸렸습니다. 가장 큰 사이즈인 8.6 의 경우 100만원이 훌쩍 넘는 가격이어서 포기, 6.6 역시 가격에 있어서는 큰 차이가 없었습니다. 

날렵한 디자인의 제니스 (가격이 부담스럽다)

 

약간 통통해 보이는 트랙서, 제니스 8.6에 가까운 수납 용량을 보인다.

 

트랙서 제품은 70만원대에 가격이 형성되어 있고 6.6 으로 사게 되면 크기도 적당해 보여 해당 제품으로 구입해야 겠다 마음을 먹었습니다. 높이가 제니스에 비하여 약간 높지만(43cm) 설마 2.1m 가 넘겠나 싶었습니다. 결국 인터넷에서 검색되는 최저가로 구입을 하였습니다. 물론 최저가는 60만원대 초반에 올라와 있더군요.

그런데 이게 왠일 인가요.. 판매자가 갑자기 물건이 없다며 환불을 해버린 것 입니다. 어의가 없었지만 재고가 없다니 어쩌겠습니까... 그렇게 구매에 실패하고 나니 좀 현실감이 생겼습니다. 중고도 한번 알아볼까?

결국 중고나라를 며칠 뒤적거린 후 아주 마음에 드는 녀석을 발견!!  판매자 분과 바로 약속을 잡고 두근거리는 마음을 안고 퇴근길에 올랐습니다.

바로 제니스 8.6 을 구입할 설렘을 안고 말이지요. ㅋㅋ

 

 

 

유일캐리어 가로바 직접 설치하기!

집에오자 마자 저녁을 입으로 먹었는지 코로 먹었는지 모릅니다. 숟가락을 놓자마자 중고거래를 위하여 미리 사놓은 가로바를 부랴부랴 설치합니다.

가로바 설치는 처음해보았는데요. 유일 캐리어에서 설치하는 메뉴얼을 영상으로 제작해 주어 아주 쉽게 따라할 수 있었습니다. 손재주 좋으신 분은 혼자서도 20분이면 충분히 설치할 수 있을 것 같습니다. 

순서는 다음과 같습니다.

  1. 가로바 상단에 고무 마개 씌우기 끝까지 딱 맞게 끼우시면 됩니다. 고무 길이가 가로바 길이의 1/2 보다 조금 짧으므로 두개 끼우고 나서 하나는 끼우고 끝을 커터칼로 잘라주시면 됩니다.
  2. 하단 양쪽에 풋이 들어갈 부분에 밀어주는 마개가 있는데요. 안쪽으로 밀어줍니다.
  3. 풋을 박스에서 꺼내서 나사를 풀어 아래쪽을 좀 벌려준 후 양쪽에 하나씩 끼워줍니다. 안쪽으로 여유있게 넣어 둡니다.
  4. 반듯하게 들고 이동하여 루프랙 위에 얹어봅니다. 
  5. 한쪽씩 풋의 위치를 조정하여 루프랙에 고정 부분이 끼워지도록 위치합니다. (양쪽 모두)
  6.  줄자를 가져와서 좌우 길이가 동일해 지도록 맞춥니다.
  7. 다른 한세트를 동일하게 조립해서 역시 루프랙에 위치하고 길이를 맞춥니다.
  8. 가로바와 가로바 사이의 길이를 최소한 550mm 이상으로 벌려서 조임 나사를 돌려 본격적으로 고정을 합니다.
    이때 루프랙의 끝부분으로 부터 거리를 잘 확인하셔서 양쪽이 동일한 위치에 자리잡도록 확인해 주셔야 합니다.
    그리고 약간 앞 쪽으로 위치시켜야 나중에 루프박스를  올렸을때 트렁크와의 간섭이 안생깁니다.
  9. 네군데 나사를 모두 조여줍니다. YI-127 제품은 별도의 공구 없이도 손으로 나사를 조일 수 있게 되어 있으니 설지 작업이 매우 편리한 편 입니다.
  10. 아까 안쪽으로 밀어 두었던 하단부 마개를 풋에 딱 맞도록 다시 당겨서 맞춥니다.
  11. 가로바 양쪽에 플라스틱 마개를 덮고 동전 등을 이용하여 잠금장치를 잠그어 줍니다. 4군데 모두
  12. 풋의 덮개를 덮어주기 전에 네군데 모두 확실하게 조여질 수 있도록 한번더 확인합니다.
  13. 풋의 덮개를 덮고 열쇠로 잠그면 설치 완료!

글로 설명하려니 장황하지만 직접 해보시면 간단한 작업이고요. 옆에서 누가 도와주면 정말 쉬운 작업입니다.

줄자는 필수 입니다.
묵직한 풋, 내부 채결 부품이 모두 튼튼한 금속으로 구성되어 있다.
YI-127 풋의 최대 장점은 설치, 분해시 별도의 도구가 필요없다는 점이다. 가운데 보이는 손잡이를 돌리면 고정됨
모양새도 괜찮은 편이다.
루프랙으로 부터의 높이는 약 8cm 정도? 생각보다 높지 않다.

 

디자인도 굳!

자 이제 머리 올리러 출발!

 

 

 

 

i30cw 에 215cm 의 제니스 8.6 루프박스가 거뜬히 올라가다.

직접 만나서 거래를 하고 판매자 분과 함께 제차에 올려보며 크지는 않은지 확인까지 하며 중고 거래를 마쳤습니다. 생각보다 크지 않더군요. 사이즈가 아주 마음에 듭니다. 판매자 분도 6.6으로 구입했으면 후회했을거라 하시더라구요. 짐 들어가는게 많이 차이가 난다고 합니다.

크기를 보기위해 살짝 얹어놓은 모습

색상도 제 차량과 잘 어울립니다. 진회색인 제 차량과 카본 실버 색상이 톤이 비슷하여 깔끔하고 예뻐 보입니다.

가로바도 마칭 600mm 정도로 간격을 벌려놨기 때문에 루프박스가 바로 올라갑니다. 전 주인분께서 친절히 설치를 도와 주셨고요, 고정장치를 손으로 돌려 고정하기 때문에 별도의 장비도 필요가 없었습니다.

하프로 제니스 스펙
자가 설치를 하려면 반드시 위의 내용을 숙지하고 가로바를 설치하는 것이 좋다.
하프로 제니스 전체 외부 크기

하프로 제니스 소개 페이지 : https://www.vdlhapro.com/en/travel/roof-boxes/model:zenith.htm

 

Zenith - Roof boxes - Hapro International

 

www.vdlhapro.com

 

 

판매자 분께서 친절히 도와 주셔서 쉽게 설치할 수 있었습니다.

드디어 머리를 올린 나의 I30CW

두근 거리는 마음으로 집까지 오며 소음이나 진동을 귀기울여 봤지만 거의 느끼지 못할 수준이었습니다. 참고로 제차가 워낙 방음과는 거리가 멀어서 그런지도 모르겠네요. i30cw 는 정말 시끄러운 차입니다. 노면음이 그대로 들리는듯. ㅋ

 

 

 

어찌어찌 집으로 돌아와 아파트 주차장에 세워두고 세밀하게 센터도 맞추고 모양도 다시한번 관찰해 보았습니다.

너무자 자연스러운 ㅋㅋ

 

뒤에서 보면 이런 느낌. 높은 것 같지만 I30CW 차량이 왜건이다 보니 많이 높지는 않음

 

 

많은 분들이 궁금해하실 루프박스 내부를 공개하겠습니다.

 

내부는 이렇게 생겼다

쨔잔. 

빨간 동그라미가 보이는 원형 부품이 가로바에 루브박스를 고정하는 장치입니다. 역시 별도의 공구 없이 바로 탈착이 가능한 시스템입니다.

차박용 텐트가 생각보다 컸던거 기억나시나요? 

루프박스가 생겼으니 이제 큰 짐들은 루프박스에 넣어 봐야 겠지요?

예상보다 큰 공간을 보여주는 루프박스

와우. 2개의 텐트가방과 아이들 캠핑의자, 돗자리까지 넣었는데도 텅텅 비는 군요. 아주 만족스럽습니다.

지붕에 올리는 크고 무거운 짐의 경우 사진에 보이는 노란색 끝처럼 고정시키는 스트랩으로 고정을 해 주는 것이 좋습니다. 급커브길을 지나거나 급정거를 하는 순간에 짐이 움직이게 되면 안전 사고가 일어날 수 있습니다.

 

하프로 제니스 8.6과 I30CW , 디자인도 아주 만족스럽다.

 

 

 

드디어 미션 complete!

짐싣고 떠날일만 남았습니다 ㅋ

 

자 정리를 해보자면 

  • 자신의 차량 높이 + 가로바 높이 + 루프박스 높이 < 210cm 가 되도록 제품을 알아보자.
  • 저렴한 중국산도 좋지만 안전을 우선으로 생각하자.
  • 잘 모르겠다면 판매점을 찾아가서 직접 올려보고 선택하자.
  • 국산 가로바도 좋기만 하다.

 

여러분도 고민만 하지 마시고 루프박스 구입부터 장착까지 직접 한번 도전해 보시는 건 어떨까요? ㅋ

이상으로 포스팅을 마치겠습니다.

 

2020/07/12 - [여행] - i30cw 로 차박 캠핑 즐기기 - 준비하기

 

i30cw 로 차박 캠핑 즐기기 - 준비하기

코로나로 바깥 활동이 뜸해지고 집에만 머무르는 시간이 길어지며 많은 분들이 답답함을 호소하는 시기입니다. 그래서인지 요즘 캠핑이 특히 인기가 많은 것 같은데요, 사람들 바글바글한 오토

diy-dev-design.tistory.com

2020/07/14 - [여행] - i30cw 로 차박 캠핑 즐기기 - 첫번째 캠핑

 

i30cw 로 차박 캠핑 즐기기 - 첫번째 캠핑

드디어 기본적인 준비는 완료 되었습니다. 텐트와 의자, 화로대와 조명까지. 이제 출발만 하면 되는데 어디로가야할까... 인터넷을 검색해보니 경기 북부권에서 차박 캠핑의 성지쯤 되는 곳이 ��

diy-dev-design.tistory.com

2020/06/18 - [DESIGN] - 현대차에서 이런 왜건 차량이 나온다면 ?

 

현대차에서 이런 왜건 차량이 나온다면 ?

대한민국은 정말 왜건 차량의 무덤인것 같습니다. 저는 개인적으로 해치백이나 왜건 형태의 차량을 선호합니다. 스포티해 보이기도 하고 실용적이기도 하지요. 실제로 트렁크가 달려있는 세단�

diy-dev-design.tistory.com

 

 

반응형
반응형

오늘 소개해 드릴 포스팅은 C# 에서 어플리케이션을 만들때 디렉토리 입력창이나 각종 설정들에 대하여
마지막으로 실행했던 설정이 다음번에 다시 실행했을 때 남아있도록 해주는 기능입니다.

매번 경로나 설정을 바꿀 필요가 없다면 마지막에 설정했던 항목이 남아있는 것이 편리하겠죠. 반대로 프로그램 동작시 마다 매번 경로를 입력하든 설정 값들을 일일이 세팅을 해주어야 한다면 무척 불편한 것입니다.


실제로 일반적인 응용 프로그램들에서도 쉽게 볼수 있는 중요한 기능이기도 합니다.

 

자 한번 만들어 보겠습니다.

먼저 본인이 저장하고 싶은 항목을 구성해야 합니다.
저는 적당히 아래와 같은 의미로 저장을 해보겠습니다.

  • string : 디렉토리 주소
  • boolean : 하위폴더까지 포함 여부
  • integer : 분할 개수


요렇게 각각 하나씩 3가지를 해보기로 하겠습니다.

새로 공부하시는 분은 새로운 프로젝트를 생성해주시고요. 만약 기존 프로젝트에 본 기능을 붙이실 분은 해당 프로젝트를 여신 뒤에 진행하시면 됩니다. 

저는 임시로 새로운 프로젝트를 하나 만들어 보겠습니다. 그리고 위에서 말씀드린 내용을 설정하고 저장해보기 위한 간단한 UI 를 추가했습니다.



그 다음 비주얼 스튜디오 오측 솔루션 탐색기에서 현재 프로젝트의 프라퍼티 쪽을 확인해 주세요. 


프라퍼티 하위에 Settings.settings 라는 항목이 보이시나요?



해당 항목을 더블클릭해 줍니다.

다음에 이 설정을 가져올 수 있다고 써있네요.



그럼 위와 같은 데이터 입력 창이 나오는데요. 제일 좌측은 해당 값의 변수가 될 이름, 
두번째는 데이터의 형식이며 드롭다운 메뉴를 눌러 선택이 가능합니다.
범위는 사용자로 두시면 되고 제일 우측 값 부분에 최초 저장될 값을 임시로 넣어 두면 됩니다.

저는 위의 3가지 설정을 저장할 예정이므로 위와같이 3가지 타입의 변수를 정해 주었습니다.

 

자 이제 Form 이 Load 될 때 이 설정 값들을 가져오도록 해보겠습니다.

먼저 UI 디자인하는 화면에서 타이틀바를 더블클릭 해주면 Form load 함수가 생성이 됩니다. 생성된 함수를 아래와 같이 작성합니다.

private void Form1_Load(object sender, EventArgs e)
{
  textBox1.Text = Properties.Settings.Default.myPath;
  checkBox1.Checked = Properties.Settings.Default.myCheck;
  numericUpDown1.Value = Properties.Settings.Default.myNumber;
}

당연히 본인이 작성한 설정의 이름과 UI 의 이름을 이용하여 작성을 해야겠죠?

이렇게 작성한 뒤 실행해보면 아래와 같이 표시가 됩니다.

위에 settings 에서 입력했던 값이 그대로 표시가 되고 있지요?

이제 해당 값을 변경한뒤에 저장하는 부분을 만들면 됩니다.

저는 일단 버튼을 누를때 현재 각 메뉴에 설정되어 있는 값을 저장하는 것으로 해보겠습니다.

private void button1_Click(object sender, EventArgs e)
{
    Properties.Settings.Default.myPath = textBox1.Text;
    Properties.Settings.Default.myCheck = checkBox1.Checked;
    Properties.Settings.Default.myNumber =Convert.ToInt32(numericUpDown1.Value);
    Properties.Settings.Default.Save();
}

엄청 간단하죠? 불러올때와 반대로 해당 값을 설정에 입력해준 뒤 마지막 줄에 save 해주면 됩니다.

이 코드를 하나의 함수로 묶어서 핵심 기능을 수행할 때나 Form 을 종료할때 넣어주면 되겠습니다.

반응형

 

 

한번 해볼까요?

 

요렇게 설정을 한 뒤에 버튼을 눌러주고 껐다가 다시 실행해 보면 ?

 

당연한 것이지만 이렇게 다시 그상태 그대로 form 이 실행이 됩니다.

 

어떠신가요? 참 쉽죠?

요런 간단한 기능들이 프로그램의 사용성을 크게 높일 수 있습니다. 본인이 개발하는 유틸리티나 어플리케이션에 이러한 기능이 아직 없다면 어렵지 않고 크게 시간도 들지 않는 기능이므로 꼭 한번 넣어보시기 바랍니다.

그럼 이만~

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면  클릭!!  부탁드려요~

2023.01.31 - [DEV/c#] - [c#] Resource 에 추가한 텍스트를 소스코드에서 불러오기

 

[c#] Resource 에 추가한 텍스트를 소스코드에서 불러오기

뻔하디 뻔한 개발 노하누는 가라~ 이번에도 쓸만한 내용을 소개해 드릴 까 합니다. 개발을 하다 보면 실제 소스코드 외에도 어떤 텍스트를 resource 에 넣어 두고 소스코드에서 불러와야 하는 경우

diy-dev-design.tistory.com

2020/08/11 - [DEV/c#] - [c#] streamreader 를 이용하여 정확한 라인 위치 찾기

2020/07/21 - [DEV/c#] - C# 문자열 읽어서 문자열에 해당하는 변수에 값 세팅하기

 

C# 문자열 읽어서 문자열에 해당하는 변수에 값 세팅하기

오늘 소개해드릴 꿀팁은요. 문자열을 읽어 들여서 문자열 내에 들어있는 특정 단어를 이용하여 개발 중인 코드의 변수로 인식하여 해당 변수에 값을 세팅하는 방법을 소개해 드릴까 합니다. 예�

diy-dev-design.tistory.com

2020/06/03 - [DEV/c#] - C# .net으로 photoshop 연동하기

 

C# .net으로 photoshop 연동하기

저는 회사에서 디자인팀에 있고 전공도 디자인과 출신이며 심지어는 고등학교도 예체능계열 고등학교를 나왔습니다만 지금 회사에서 하는일의 95% 정도는 개발을 하고 있습니다. 실제로 제가 ��

diy-dev-design.tistory.com

2020/06/29 - [DIY/Arduino] - C# 에서 아두이노로 시리얼 통신 하기

 

C# 에서 아두이노로 시리얼 통신 하기

카테고리를 c# 으로 해야 할지 Arduino 로 해야할지 조금 고민이 되는 포스트 입니다. 음.... arduino 로 하는게 좋겠네요. 따지고 보면 C# 으로 만든 어플이 중요한게 아니라 아두에노에서 시리얼 통신

diy-dev-design.tistory.com

2020/05/28 - [DEV/c#] - [c#] 주어진 경로가 디렉토리인지 파일인지 확인하는 방법

 

[c#] 주어진 경로가 디렉토리인지 파일인지 확인하는 방법

오늘은 간단하게 주어진 경로가 폴더인지 파일인지 구분하는 방법을 소개해 드리겠습니다. 길게 설명할 것 없이 간단하게 코드나갑니다. FileAttributes chkAtt = File.GetAttributes(_path); if ((chkAtt & FileA..

diy-dev-design.tistory.com

 

반응형
반응형

겨울철 따뜻한 아파트 거실에 푹신한 카페트는 정말 사랑스럽습니다. 포근하고 부드럽죠.

그런데 매년 어김없이 찾아오는 여름이 되면 이녀석이 골칫덩어리가 됩니다. 

보관하자니 덩치도 너무 크고 멀쩡한 카펫을 버리자니 아깝기도 하고 말이죠.

그래서 한여름을 깨끗하게 보관할 수 있는 팁을 하나 드리려고 합니다.

 

모든 분들이 가능한 방법은 아니지만 또 이런 방법이 있구나 하고 다른 응용방안을 찾아내는 분들도 계시리라 믿고 제가 사용한 방법을 공유 드립니다.

 

 

 

 

이름은 잘 모르겠는 비닐 진공 압축 기계

이 기계는 제가 재활용품 버리는 곳에서 주워온 것인데요, 원하는 크기로 비닐 봉지를 만들어서 진공으로 압축해서 보관할 수 있는 혁신적인 제품인데요, 아마 그냥 일회용 봉투 사용하는 것에 비하여 번거로움이 있고 뭔가 세련된 디자인이 아니어서인지 히트상품은 아니었던거 같아요.

요즘은 세련된 디자인으로 동일한 기능의 제품이 나오는 것 같습니다.

하지만 들여다 보면 정말 효용성있게 잘만든 제품이지요.

 

어쨌든.. . 이기계에는 roll 타입으로 아주 긴 비닐이 감겨있는 것이 있습니다. 한쪽은 막혀 있지만 나머지는 뚫려있어 양쪽을 녹여 붙여주고 내용물을 담은 뒤 나머지 부분을 녹여 붙여주면 외부와 완전히 밀폐되는 공간이 만들어 집니다.

일단 롤에 감겨 있는 비닐을 돌돌 말아놓은 카펫 길이만큼 풀어낸다.

저는 이 롤 타입의 비닐을 길게 뜯어 긴 한쪽을 모두 접착해서 아주 긴 비닐 봉투를 만든것인데요, 얇고 아주 길게 만들어진 봉투에 돌돌 말은 카펫을 넣어서 여름내 습기와 먼지로부터 완벽하게 보호될 수있도록 보관을 하는 것이죠.

 

빨간 선 부분을 길게 이어 붙여 준다. 

길게 띁어낸 봉투의 옆면을 이어 녹여 붙여 주면 이렇게 길고긴 봉투가 하나 만들어 집니다.

 

돌돌 말아놓은 카펫을 여기에 끼워 넣는 것이죠.

 

이렇게 다 끼우고 나면 끝부분은 테이프로 붙여주면 됩니다.

 

우왕 굳!

 

 

 

이런식으로 보관하면 여름이 지나고 다시 겨울이 되어 꺼내는 약 5 개월여간의 보관 기간 동안 먼지, 습기 등의 피해를 입지 않고 깨끗하고 안전하게 카펫을 보관할 수 있습니다. 이렇게 말아둔 카펫은 붙박이장 한켠에 세워 두거나 장롱 상단에 멀찌감치 밀어넣어 두면 지저분하게 보이지 않도록 잘 보관할 수 있답니다.

이번에 사용한 진공 압축기역시 위에서 적은 것처럼 재활용품 수집장에서 주워온 것인데 벌써 3년째 카페트 정리하는데 유용하게 사용하고 있습니다 ㅋㅋ 본래의 목적으로는 생각처럼 잘 사용하게 되지 않더군요. 지퍼백이나 위생백이 너무나 편리하기도 하고 쉽게 사용할 수 있기 때문이겠습니다만 불필요한 비닐의 사용을 막고 사용할 만큼씩만 딱 사용할 수 있는 제품인만큼 요즘같은 시대에 오히려 각광을 받아야 하는 제품이 아닐까 생각해 봅니다.

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다.

 

2020/03/16 - [DIY] - 욕실장(싱크대) 경첩 셀프 교체하기 #노하우, #주부도 가능

 

욕실장(싱크대) 경첩 셀프 교체하기 #노하우, #주부도 가능

이사를 하고 보니 집에 손볼곳이 한두군데가 아니었습니다. 이번에는 욕실장 경첩 입니다. 전세로 이사를 하고나니 내 집도 아닌데 뭘 고쳐가면서 살아... 하는 생각도 들지만 막상 지저분하고 �

diy-dev-design.tistory.com

2020/03/10 - [청소장인] - 욕조 배수구 물빠짐 개선을 위한 리모델링

 

욕조 배수구 물빠짐 개선을 위한 리모델링

'아니 이걸 왜 이렇게 만들어서 물이 안빠지게 말이지...' 라는 생각을 샤워할 때 마다 한 것 같습니다. 욕조 배수구에 보면 머리카락 같은 이물질이 하수도로 흘러 들어가는 것을 막기 위하여 구

diy-dev-design.tistory.com

2019/08/24 - [청소장인] - [청소장인] 욕실 수도꼭지 호텔처럼 반짝반짝 닦는 방법

 

[청소장인] 욕실 수도꼭지 호텔처럼 반짝반짝 닦는 방법

욕실 청소 중의 으뜸은 뭐니뭐니 해도 수전과 같은 크롬 광택의 금속재질을 갖는 부분과 도기, 유리를 반짝반짝하게 닦는 것입니다. 청소하고 나면 청소한 티가 정말 팍팍 나는 아이템이며 청소

diy-dev-design.tistory.com

 

반응형
반응형

오늘 소개해드릴 꿀팁은요.

문자열을 읽어 들여서 문자열 내에 들어있는 특정 단어를 이용하여 개발 중인 코드의 변수로 인식하여 해당 변수에 값을 세팅하는 방법을 소개해 드릴까 합니다.

예를 들면 텍스트 파일로 어떤 설정들을 저장해놓고 해당 설정파일을 읽어 들이면 일일이 변수명과 비교하여 맞으면 설정하는 방식이 아닌 바로 설정 파일 자체에 변수명을 넣어두고 변수명 그대로 값을 설정파일에서 읽어 들이는 것이지요.

이렇게 되면 변수가 아주 많은경우 간단하게 코딩을 할 수 있는 장점이 있겠습니다.

 

다시 말하면 aa,bb,cc 라는 변수가 있고 설정 파일 (텍스트파일) 에 다음과 설정이 있다고 하면요.

aa=#FFFcbc
bb=#12cd43
cc=#FF0000
      :
      :

if (읽어들인 문자열 앞부분 == "aa") aa = 읽어들인 문자열 뒷부분;
if (읽어들인 문자열 앞부분 == "bb") bb = 읽어들인 문자열 뒷부분;
if (읽어들인 문자열 앞부분 == "cc") cc = 읽어들인 문자열 뒷부분;
                 :
                 :

이런식으로 하지 않아도 된다는 것이지요. 만약 몇줄 안된다면 상관 없겠지만 20~30 줄 이상이라면 매번 if 로 정확하게 명칭을 따주는 것도 일입니다. 몇 백줄의 설정이 필요하다면 더더욱 그럴 수 밖에 없겠죠.

 

 

 

 

실제 예제를 볼까요?

컨트롤 해야 하는 컬러 설정 파일을 아래와 같이 준비 합니다. txt, ini 같은 그냥 텍스트 파일로요. 

color_A=#cc3333
color_B=#99cc33
color_C=#cccccc
color_D=#006666
color_E=#00ffff
color_F=#6666cc
color_G=#9966cc

 

위의 문자열들에서 color_A 는 제가 아래 올린 코드의 color_a 에 대한 설정 값으로 사용되게 됩니다. 일일이 if 문을 이용하여 color_A == color_a 인지 color_b 인지 확인하지 않고 해당 클래스가 들고 있는 프라퍼티들의 이름 중에 같은 것이 있는지 찾는 방법이지요.

// 제일 상단에 지시문 추가
using System.Reflection;

// 본 클래스는 메인 클래스가 아니어도 상관 없습니다. 
// 예를 들면 Form 클래스내에 기능적인 용도나 구조체로 사용할 클래스 여도 상관 없음
public class MyColorStyle
{
	private string color_a;
	private string color_b;
	private string color_c;
	private string color_f;
	private string color_e;
	private string color_f;
	private string color_g;
	
	// 외부에서 가져가고 세팅할 수 있도록 get set 함수 하나씩 준비
	public string color_A {get { return color_a;} set { color_a= value; } }
	public string color_B {get { return color_b;} set { color_b= value; } }
	public string color_C {get { return color_c;} set { color_c= value; } }
	public string color_D {get { return color_d;} set { color_d= value; } }
	public string color_E {get { return color_e;} set { color_e= value; } }
	public string color_F {get { return color_f;} set { color_f= value; } }
	public string color_G {get { return color_g;} set { color_g= value; } }
	
	public golfMapcolorStyle()
	{
		//생성자 부분에는 초기화 값 넣어 주시고요.. 
	}
	public void setColor(string clrString) // clrString : "color_A=#FFEECC" 형식의 설정 문자열이 줄단위로 기록되어 있는 파일 전체
	{
		string[] tmps = clrString.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); // 줄바꿈 단위로 분리해준다.
		foreach (string str in tmps)
		{
			string[] tmp = str.Split('='); // = 기호를 기준으로 앞의 문자열은 변수 명칭을 검색, 뒤의 문자열은 값으로 사용 

			foreach (PropertyInfo p in typeof(MyColorStyle).GetProperties())
			{
				if (tmp[0] == p.Name)
				{
					tmp[1] = tmp[1].Trim(); // 잘려진 문자열 뒤에 지저분하게 붙는 경우가 있어서 사용함
					p.SetValue(this, tmp[1], null);
				}
			}
		}
	}
}

 

총 7개의 변수가 있지만 단 하나의 방법으로 설정을 할 수 있게 됩니다. 

만약 변수가 100 개 이상이었다면 위와 같은 방식으로 사용하는게 개발 시간을 크게 단축할 수 있을 것입니다. 오류도 많이 줄어들 것이고요.

위 코드에서 제일 핵심이 되는 부분은 바로 아래 부분입니다.

foreach (PropertyInfo p in typeof(MyColorStyle).GetProperties())
{
	// p 에 대하여 무었인가를 할 수 있음
}

클래스가 가지고 있는 변수를 프라퍼티로 보고 프라퍼티의 이름을 확인하여 뭔가를 할 수 있게 되는 것이죠.

p.SetValue 라는 명령어를 이용하여 p 라는 MyColorStyle 라는 클래스의 프라퍼티(변수) 의 값을 설정하는 것이 이번 포스트의 핵심 내용입니다.

 

 

 

만약 변수가 문자열 뿐만 아니라 int 형식도 존재한다고 하면 아래와 같이 간단하게 구현할 수도 있습니다.

foreach (PropertyInfo p in typeof(golfMapcolorStyle).GetProperties())
{
	if (tmp[0] == p.Name)
	{
		try
		{
			tmp[1] = tmp[1].Trim();
			p.SetValue(this, tmp[1], null);
		}
		catch
		{
			tmp[1] = tmp[1].Trim();
			p.SetValue(this, Convert.ToInt32(tmp[1]), null);
		}
	}
}

 

반대로 현재 설정을 저장하는 등의 기능을 구현 할 때에도 위의 코드를 응용하여 특정 클래스가 갖는 모든 프라퍼티를 정확한 변수명과 값으로 손쉽게 저장하는 것이 가능할 것입니다.

 

그럼 이만~

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면  클릭!!  부탁드려요~

 

2020/08/11 - [DEV/c#] - [c#] streamreader 를 이용하여 정확한 라인 위치 찾기

2020/06/29 - [DIY/Arduino] - C# 에서 아두이노로 시리얼 통신 하기

2020/06/03 - [DEV/c#] - C# .net으로 photoshop 연동하기

2020/05/29 - [DEV/c#] - [C#] .net 프로그램에서 MD5 해시 체크파일 만들기

2019/06/21 - [DEV/c#] - [C#] 마우스 매크로를 위한 마우스 자동 클릭 기능 만들기

2020/01/03 - [DEV/c#] - [C#] C# APP 에서 엑셀 연동해보기

반응형
반응형

드디어 기본적인 준비는 완료 되었습니다.

텐트와 의자, 화로대와 조명까지.

이제 출발만 하면 되는데 어디로가야할까...

 

인터넷을 검색해보니 경기 북부권에서 차박 캠핑의 성지쯤 되는 곳이 있었습니다.

'모곡밤벌유원지'

정말 유명하긴 한가봅니다.

 

 

오늘은 토요일. OK. 바로 짐을 싸서 출발을 하기로 합니다.

준비해놨던 의자와 텐트, 조명과 블루투스 스피커를 챙기고 시동을 켭니다.

 

룰루랄라 신나는 마음은 출발한지 1시간이 되자 강제로 진정되었습니다. 바로 춘천을 향하는 차들로 인한 교통 체증때문이죠. 와.. 이건 뭐 답이 없더군요. 조금더 일찍 나오지 않은 제가 원망 스러워 지기 까지 했습니다.

서울에서 남양주를 지나 경춘국도로 이어지는 46번 국도가 합류지점인 금남IC 를 지나는 순간 도로는 거의 주차장이 되었습니다.

바로 요기쯤.

음...

 

금방 가겠지뭐...

 

"아빠 오줌마려워.."

"나도..."

 

차안에서 슬슬 불편한 민원이 발생되기 시작했고 이대로는 안될 것 같아 대성리쪽 편의점에 들러 급한 용무를 해결하기로 했습니다. 물도 좀 사고 들른김에 라면 같은 필요한 것들을 좀 사기로 하였습니다.

남양주시를 막 벗어나는 곳에 대성리가 있는데요. 대성리쪽으로 건너는 다리 "구운교"를 지나가는데 아래쪽에 차박 캠퍼들이 보이는게 아니겠습니까?

지도로 보면 느낌이 잘 안오신다면 스카이뷰로 보시길

 

"오 .. 이런데서도 캠핑을 하는구나..." 하고 편의점을 들러서 출발하려다 말고 아내한테 이야기를 해봅니다.

"우리 그냥 저 아래가서 캠핑할까? 아직 한시간이나 더 가야하는데... 길은 점점 밀려가니 더걸릴수도 있잖아.."

라고하니 아내도 잠시 생각하더니 그러자고 하더군요.

 

바로 옆으로 꺾어 들어가 길을 찾아 나섰습니다.

 

저는 처음와보는 곳인데 마치 아는 곳처럼 운전을 해서 들어갔습니다.

 

 

 

 

그리고 자리잡은 곳.

 

적당히 풀이 적은 곳에 자리잡았다.

캠핑시작!

 

어쨌든 우연찮게 발견된 장소에는 이미 가족단위로 아이들과 즐거운 한때를 보내는 분들이 몇팀 계셨습니다. 저희는 주위를 둘러보고 적당한 곳에 자리를 잡았죠.

 

차랑연결은 당연지사.. 그런데 너무 더워서 옆쪽을 다 열어 놨습니다.

일단 텐트는 지난번에 한번 쳐 봤으니 수월하게 설치를 할 수 있었습니다.

그나마 풀들이 조금 적게 난 곳을 이용해서 텐트를 치고 의자와 테이블, 야심차게 준비한 가랜드 조명도 설치했습니다.

I30CW 가 작은차처럼 보이지만 막상 의자를 눕히면 이렇게나 광활한 공간이 나타납니다.

넓디넚은 우리의 침실공간 ㅋ

 

오우~

이제 제법 캠핑 분위기가 납니다.

아이들은 물가로 뛰어들어 수영도 하고 고기도 잡아봅니다.

잠시후 완전히 풍덩 했다는 ㅋㅋ

 

 

 

저는 지렁이 미끼를 한통 사서 낚시를 시작했지요.

뭐 잡아도 그만 못잡아도 그만이니 부담없이 정말 즐기는 낚시 수준이었고요.

한 15분 정도 했으려나요? 찌가 쭉 빨려 들어가며 저같은 초보 낚시꾼에게 손맛을 안겨준 녀석이 있었으니 바로 계곡의 제왕 꺽지였습니다.

꺽지를 잡았다.

아이도 좋아하고 와이프도 신기하다며 자기도 해보겠다고 하네요. ㅋㅋ

물론 와이프도 아이도 저도 그이후로는 한마리도 잡지 못했지만요. ㅋ

 

슬슬 물놀이를 마치고 낚시도 철수 합니다.

 

혹시나 해서 넣어둔 어항에는 송사리, 각시붕어, 붕어 새끼 등이 가득 들어 있었습니다. 

아들내미는 환호성을 지르고 아주 신이 났습니다.

 

슬슬 자리로 돌아오며 잠자리채로 고기를 잡는 하는 아이들에게 저희가 잡은 물고기를 나누어 주었습니다.

 

 

드디어 모닥불 타임! 퐈이야~

우리는 초보캠퍼, 장작따위를 준비해 왔을리가 없지요,

근처에서 마른나무 가지를 주워와 불을 피워 봅니다. 마침 화로대로 준비가 되어 있었기 때문이지요.

불멍때리는 7살 아가씨 ㅋ

 

준비한것도 하나도 없는것 같은데 재밌게 노는 느낌이네요. 암튼 저와 아들내미는 장작을 주우러 근처를 돌아다니며 꽤 많은 뗄감을 공수해 왔습니다. 

사실 노지에서 이정도면 정말 훌륭하다 생각 들었습니다.

캠핑의 낭만을 위하여 낮에 잡았던 꺽지를 나뭇가지에 끼워 구워볼 생각입니다. ㅋ

잘모르지만 일단 끼워보았다.

덜마른 나뭇가지를 주워 껍질을 대충 벗기고 꺽지의 커다란 입속으로 끼워 넣었습니다.

그리고 정글의 법칙의 병만족장 처럼 불 옆에 세워 굽기 시작했습니다.

노릇노릇 구워지고 있는 꺽지

생각했던 것 보다 노릇노릇 잘 익었습니다. ㅋ

물론 직접 살을 발라보니 가시가 많고 생각했던 것보다 비린 맛이 강해 다 먹지는 못하였지만 재미있는 경험이었습니다. 

이렇게 자연에 나와 물고기를 직접 잡아 구워 먹어볼 거라 생각이나 했을까요.

초등학교 6학년인 아들 녀석은 신이 나 하더군요.

 

이제 잠자리에 들 시간

 

슬슬 모닥불 불명도 마치고 잠자리에 들어 봅니다.

처음하는 차박 캠핑이 편하지만은 않겠지요. 저도 침대가 없어 잠자리는 불편하더라고요. 

막상 돌아와서 매트와 각종 부족했던 것들을 주문해 봅니다.

차에 이런것들이 다 실릴지 걱정이네요 ㅋ

어쨌든 모곡 밤벌 유원지를 가지는 않았지만 너무나 즐거운 1박 2일을 보내고 집으로 돌아왔습니다. 아침에는 모두들 피곤한 눈빛이었지만 금방 눈빛이 초롱초롱 해져 물가로 가자고 조르는 아이들을 보며 정말 잘 왔다고 생각 했습니다.

참고로 이곳은 걸어서 5분도 안되는 거리에 편의점, 주유소 화장실을 갈 수 있어 사실 캠핑의 불편함은 거의 느낄 수 없는 아주 좋은 장소라고 생각됩니다.

서울에서 접근성도 나쁘지 않고 일부러 관리를 하지 않는 것 같지만 캠퍼들에 의해 깨끗하게 잘 관리되고 있는 느낌이네요. 다시 찾더라도 더럽히지 않고 깨끗하게 즐기다 오리라 마음먹어 봅니다.

 

자 일주일에 한번씩 빠지지 않고 주말은 찾아오지 않습니까? 가족들과 함께 오붓하게 오롯이 가족들을 위한 시간을 갖을 수 있는기회, 예약과 성수기/ 비성수기의 스트레스 없이 오롯이 하루를 즐겁게 놀 수 있는 캠핑, 한번 해보시는 것은 어떨까요?

 

이만 포스팅을 마칩니다.

 

2020/07/12 - [여행] - i30cw 로 차박 캠핑 즐기기 - 준비하기

 

i30cw 로 차박 캠핑 즐기기 - 준비하기

코로나로 바깥 활동이 뜸해지고 집에만 머무르는 시간이 길어지며 많은 분들이 답답함을 호소하는 시기입니다. 그래서인지 요즘 캠핑이 특히 인기가 많은 것 같은데요, 사람들 바글바글한 오토

diy-dev-design.tistory.com

2020/10/29 - [DIY] - [DIY] 오래된 다목적 랜턴 LED 램프, 충전식으로 교체하기

 

[DIY] 오래된 다목적 랜턴 LED 램프, 충전식으로 교체하기

처갓집 구석에서 재미있는 물건을 하나 발견했습니다. 마침 캠핑 전용 랜턴이 하나 있었으면 하는 차에 이게 왠 떡인가요 ㅋ 언제부터 처갓집에 있었는지는 모르겠지만 사용하지 않는 것이 분

diy-dev-design.tistory.com

2020/07/31 - [여행] - i30cw 에 루프박스 설치하기 - 하프로 제니스, 유일캐리어

 

i30cw 에 루프박스 설치하기 - 하프로 제니스, 유일캐리어

본격적으로 캠핑의 계절이 왔습니다. 야외에서 침낭이 없어도 춥지 않은 환상적인 날씨죠. 이제 가을까지 계속 캠핑하기 좋은 날이 이어질거라 믿습니다. 그래서 이것저것 캠핑용품을 구입하였

diy-dev-design.tistory.com

2020/09/08 - [여행] - [캠핑용품] 카릭스 로켓 우드 스토브 사용 후기 - 장단점

 

[캠핑용품] 카릭스 로켓 우드 스토브 사용 후기 - 장단점

캠핑의 꽃은 뭐다? 퐈이아~ 네. 그렇습니다. 역시 캠핑의 꽃은 화로대 아니겠습니까? 저역시 마찬가지로 캠핑에서의 최애 힐링 포인트는 역시 불멍 타임이 되겠습니다. 일단 장작 화로대는 있는�

diy-dev-design.tistory.com

 

반응형
반응형

코로나로 바깥 활동이 뜸해지고 집에만 머무르는 시간이 길어지며 많은 분들이 답답함을 호소하는 시기입니다. 그래서인지 요즘 캠핑이 특히 인기가 많은 것 같은데요, 사람들 바글바글한 오토캠핑장보다는 한적한 곳을 찾아 떠나는 캠핑카나 차박 캠핑이 많은 사랑을 받는 것 같습니다.

보통 차박 캠핑하면 SUV 차량을 이용해서 즐기는 정보만 가득한데요... i30CW 와 같은 왜건 차량으로도 차박 캠핑이 가능한지 궁금해 졌습니다. 

 

 

일단 텐트를 주문 하자

바로 인터넷 쇼핑몰을 둘러보며 이런저런 제품들을 찾아보던 중 캠프밸리에서 출시한 차박 캠핑용 텐트인 "오토카하우스 차박텐트"를 구입하였습니다. 가격이 저렴한 편 (235,000원) 이어서 저와 같은 입문용으로 적당해 보였고 천정이 높은 것 (무려 210cm) 이 마음에 들었으며 차량 연결 부위가 충분히 커서 나중에 차량을 변경하게 되더라도 무난히 사용할 수 있을 거라 판단 되었고요. 무엇보다 원터치로 모기장 텐트를 펼수 있다는 점에 높은 점수를 주었습니다. 캠핑장에서 텐트치다보면 한나절인 분들 계시잖아요? 저는 손재주는 좋은 편이지만 그런 귀찮은 과정을 마주하기는 싫었기 때문에 설치가 편리한 제품을 우선으로 하였습니다. 

온라인 쇼핑몰 소개사진. (광고는 아닙니다)
온라인 소핑몰 소개사진 (광고아님)

색상이 조금 마음에 들지 않았지만 구입할 수 있는 제품이 당장 하나 밖에 없어 카키(황토색) 제품을 구입하게 되었습니다.

차량용 차박 텐트는 기본적으로 차량안에서 잠을 자는 것을 기본으로 하기 때문에 텐트 바닥은 없습니다. 바닥이 있는 제품도 있었으나 신발 신고 다닐 수 없다면 신발 신고 벗기가 불편할 것 같고 또 청소도 매번 해주어야 하니 바닥이 없는 제품이 낫겠다 싶었습니다.

 

막상 제품이 도착하고 보니 예상을 깨는 패키지였습니다.

??? 가방이 두개? 

가방이 두개??

 

펼쳐보니 긴 가방은 안쪽에 설치하는 기둥 역할을 하는 모기장 텐트이고 짧은게 그 모기장 텐트를 덮는 텐트 외부 천 이었습니다.

 

일단 모기장 텐트를 펴보았습니다. 폴대를 끼우고 자시고 없이 바닥에 펴놓고 뒤로 제껴주기고 위로 당겨 올리기만 하면 끝 입니다. 정말 간단하네요. 모기장 치는건 1분이면 충분합니다.

 

정말 생각지도 못했던 정체(?) 가 아니고 ㅋ크기

 

모기장의 크기가 생각보다 크네요. 실내에 설치해보니 그 크기가 실감이 됩니다. 32평 아파트 거실만하군요.

높이가 210cm 라기에 음.. 높구나 했는데 정말 깜놀 하였습니다. 저희집 천장이 낮은건지...

 

그때 불현듯 걱정이 스쳐지나갔는데, 이게 과연 차에 실릴까 하는 것이었죠. 제차는 i30cw 다 보니 SUV 들처럼 트렁크가 넓고 높지 못한것이 떠올랐습니다. 물론 왜건이다 보니 작지는 않죠. 근데 생각보다 공간은 안나옵니다.

 

차에 가지고 내려가 봅니다.

음.. 길다.

어깨에 매면 이정도 입니다.

작지는 않죠? 물론 대형 텐트들에 비하면 큰건 아니지만 제가 생각했던 것보다는 분명 큽니다.

 

주차장에 도착해서 트렁크안을 살펴보고 답이 나왔습니다.

다행히 트렁크 위쪽 공간에 텐트 패키지가 모두 실렸다.

쨔잔~

트렁크 양쪽 창문 부분 옆으로 슬라이드 덮개를 끼는 레일이 있는데 그 레일위에 얹으니 딱 맞더구요. 길이가 더 긴 모기장 텐트는 트렁크 창문쪽에 끼우면 적당하게 잘 맞습니다. 아래 보이는 코스트코 파라솔이 외부 텐트를 받쳐주고 있습니다. 

오호.. 이렇게 되면 실제 트렁크 적재 공간이 그대로 살아나는것 아니겠습니까?

정말 뭔가 맞춘것처럼 딱 맞아 신이 다 나더군요.

 

 

자 그럼 이제 남은 일은 뭐다?

 

 

 

차박 텐트 설치해 보기

일단 짐을 싣고 출발해 봅니다. 자고올건 아니고 정말 텐트쳐보고 잠깐 놀고 올 계획입니다.

정말 대충넣어도 공간이 남는다. SCX10 은 사랑이죠. ㅋ

짜잔~ ㅋㅋ 먹을거랑 제 장난감까지 넣었는데도 공간이 남네요 남아. 

아.. 이거 진짜 괜찮겠는데 싶은 순간이었습니다.

어쨌든 텐트 설치 테스트를 해보기위하여 집에서 멀지 않은 영종도를 찾았습니다. 처음 펴보는 장소는 당일로 하루 노는데 3만원 정도를 받는 사유지 캠핑장이었습니다. 돈이 조금 아까웠지만 이미 영종도 해안가는 인산인해더군요. -_- 텐트한번 쳐볼 자리 마련하기가 쉽지 않아 보였습니다.

여름인지 덮구나. 테이블이 너무 작아보이는건 기분 탓인가

 

음... 상당히 괜찮은데? 진짜 높이가... 와.. 

첫날은 뭐 대단한걸 준비해 간게 아니었기 때문에 바닷가에서 조금 놀다가 라면만 먹고 왔습니다. 한가족이 앉아 쉬고 놀기에는 정말 딱 괜찮은 사이즈인것 같습니다. 

i30cw 의 뒷좌석을 눕히니 성인도 누워서 잘 수 있는 크기가 됩니다. 관리 잘된 i30cw 있으면 세컨카로 하나 장만 해 놓으셔도 괜찮을 것 같습니다. 사실 상당히 잘만든 차라고 생각하고 있습니다.

차안에서 본 텐트의 모습..  어디 휴양지에 온줄알았다. 아늑하구만

 

와.. 휴양지가 따로 없네요. (옆에 나온 다리가 좀 거슬리기는 하지만... 사진이 이것밖에 없어서.)

 

음... 제대로 사진 찍힌게 없네요... 다음번에 제대로 찍어 올리겠습니다.

 

이렇게 아이들과 갯뻘에서 작은 게도 잡고 고동도 주으며 즐거운 하루를 보내고 왔습니다.

갯뻘에서 즐거운 시간을 보내는 중

 

 

 

더 필요한 것들

어쨌든 텐트를 직접 설치해보니 캠핑을 위해 필요한게 하나둘 보이더군요.

필요한 것들 중 1순위는 단연 작고 편안한 의자. 그리고 4식구가 차안에서 모두 자기에는 힘들기 때문에 간단한 야전 침대도 필요하다고 생각했습니다.

음.. 추가로 예쁜 가랜드 조명과 야간에 사용할 실내용 조명.. 정도가 필수로 있어야 겠습니다. 가랜드 조명은 구입, 실내용 조명은 직접 만들어 보기로 하였고 나머지는 얼른 주문을 하였습니다.

뭐 나머지야 집에 있는 것들 대충 싸가지고 다니면 됩니다.

 

우선 짐이 많으면 캠핑자체를 꺼리게 되는건 당연지사. 짐싣고 푸는데 땀뻘뻘 흘렸던 기억이 떠올라 의자는 작은걸로 구입했습니다.

찾아보니 정말 작은 제품이 많더군요.

그래서 구입하게된 제품은 바로 KOOLMAN 초경량 백패킹 체어 B형, 침대는 가성비 끝판왕이라 불리는 네이처하이크 경량 야전침대 가 되시겠습니다.

 

의자는 

온라인 쇼핑몰 소개사진 (광고아님)

바로 요제품이 되시겠고요

많은 분들이 궁금해 하실 사이즈는 

가장 중요한 사이즈!!!

요렇습니다. 정말 작죠? ㅋ

갓 배송온 의자에 앉아 비디오 게임을 즐기는 아이들. 너무 맞춤 인데?

아이들이 앉으면 이런 모습입니다. ㅋ 앙증맞네요. 아래 쪽에 보이는 가방이 바로 수납 가방입니다. 정말 작죠? 실내화 가방만하네요.

 

침대는 아직 배송이 되지 않아 제품 사진을 보여드릴 수가 없어 아쉽습니다.

 

 

첫번째 캠핑준비를 마치고 나니 기대가 커집니다. 아이들도 너무 좋아하여 만족스럽고요, 비싼돈 들여 숙소를 잡지 않아도 발 닿는 곳 어디든지 여유롭게 쉴 수 있다는 것이 가슴을 설레게 합니다.

얼른 나머지 준비를 해서 진짜 1박을 떠나봐야 겠습니다.

 

다들 떠날 준비 되셨나요? SUV가 아니어서 망셜여 지고 계셨나요?

얼른 출발 준비들 하시죠~

 

 

 

 

참고로 실내용 조명은 2개를 만들건데요, 예전에 주워서 화장대 조명으로 재탄생한 LED 바의 자투리를 이용해서 만들어볼 계획이고요, 다른하나는 LED 패널이 들어있는 보조배터리(고장난) 를 부활시켜서 제작해볼 계획입니다. ^^

LED 바를 이용해 화장대 조명을 만들었던 이야기는 아래 포스트를 참고해 주세요~

2020/05/17 - [DIY] - [재활용] 고장난 LED 바 수리하기 > 화장대 조명 만들기

 

[재활용] 고장난 LED 바 수리하기 > 화장대 조명 만들기

저의 보물창고 바로 폐 배터리, 형광등 수거함 입니다. 지나는 길에 기웃거려 보니 LED 바가 버려진게 있더군요. LED 바 금액 자체가 비싼건 아니지만 사실 일부러 돈주고 살만큼 효과적인 조명기�

diy-dev-design.tistory.com

 

의자도 사고 침대도 사고... 여름 물놀이 용품까지 가지고 다니려니 결국 공간이 부족해서 구입한 루프박스.

아래 링크에서 확인하세요~

2020/07/31 - [DIY] - i30cw 에 루프박스 설치하기 - 하프로 제니스, 유일캐리어

 

i30cw 에 루프박스 설치하기 - 하프로 제니스, 유일캐리어

본격적으로 캠핑의 계절이 왔습니다. 야외에서 침낭이 없어도 춥지 않은 환상적인 날씨죠. 이제 가을까지 계속 캠핑하기 좋은 날이 이어질거라 믿습니다. 그래서 이것저것 캠핑용품을 구입하였

diy-dev-design.tistory.com

 

2020/09/08 - [여행] - [캠핑용품] 카릭스 로켓 우드 스토브 사용 후기 - 장단점

 

[캠핑용품] 카릭스 로켓 우드 스토브 사용 후기 - 장단점

캠핑의 꽃은 뭐다? 퐈이아~ 네. 그렇습니다. 역시 캠핑의 꽃은 화로대 아니겠습니까? 저역시 마찬가지로 캠핑에서의 최애 힐링 포인트는 역시 불멍 타임이 되겠습니다. 일단 장작 화로대는 있는�

diy-dev-design.tistory.com

 

반응형
반응형

요즘 누가 CD 를 듣나?

라고 생각하시겠지만 아이들을 키우다 보면 생각보다 음악 CD 를 재생할 일이 많이 있습니다. 동화책 같은 곳에 딸려오는 CD 도 있고요, 영어 교재나 음악 교재 등에도 여전히 CD 로 음악을 담아 배포하는 경우가 흔하답니다. 저역시 지금 사용하는 노트북은 CD 롬 드라이브가 장착이 안되어 있을 정도로 중요하다고 생각하지 않았습니다.

어쨌든 당장 CD 음악을 들어야 하는 상황이 되니 당황스럽더군요. 그래서 온라인으로 USB 타입 외장형 CD-ROM 을 하나 구입하였습니다. 

 

USB 외장형 CD-ROM (별도전원 불필요)

 

그런데 구형 미디어의 불편함이랄까요? 요즘은 음악을 듣고 싶으면 유튜브나 멜론 같은 스트리밍으로 언제 어디서든 음악을 들을 수 있지만 제가 구입한 외장형 CD 만 하더라도 장착하고 CD 를 넣고 재생될때 까지 기다리고 하는 과정이 생각보다 귀찮아서 CD 안의 음악을 꺼내야겠다 생각이 들었습니다.

 

 

음악 CD 안의 음악을 mp3 파일로 추출해 보자

 

그래서 적어도 노트북에 꺼내 놔야 겠다 생각을 하게 되었던 것이죠.

 

CD-ROM 드라이브를 윈도우 탐색기를 통해 열어보면 아래와 같은 모습입니다.

1kb 짜리 파일만 가득하다?

이것 때문에 아내가 저에게 복사가 안된다며 이야기를 건냈습니다.

저역시 열어보고 살짝 당황했는데요. 

사실 윈도우 미디어 플레이어에 기본으로 지원하는 기능 중에 음악 파일을 라이브러리로 꺼내는 기능이 있습니다.

 

먼저 CD를 재생할 플래이어를 윈도우 미디어 플레이어로 지정해 주어야 합니다.

미디어 플레이어가 실행되면 아래와 같은 모습이 되겠죠.

윈도우 미디어 플레이어가 CD 안의 음악을 재생중인 모습

 

그럼 우측 상단에 보이는 네모네모 아이콘을 클릭해 줍니다.

그럼 아래와 같이 미디어 라이브러리가 보이게 됩니다.

아래 그림의 빨간 네모 박스를 선택하셔서 내 컴퓨터로 가져올 음악을 모두 선택해 줍니다. 물론 개별로 선택하셔도 됩니다.

원하는 파일만 체크하여 복사하는 것도 가능

 

아래 사진의 CD 복사를 눌러줍니다.

전체 음악을 복사한다.

 

그럼 아래 그림처럼 선택된 음악 파일이 하나씩 하나씩 컴퓨터로 복사되기 시작합니다.

선택된 음악 파일이 복사되기 시작함

 

그럼 복사된 파일은 어디에 저장이 될까요?

바로 라이브러리 - 음악 폴더에 저장이 된답니다.

내컴퓨텅 mp3 파일로 복사가 진행중이다.

간단하죠? 

 

참고로 복사설정을 누르시면 복사할 파일의 음질이나 포멧 등에 대하여 선택이 가능하므로 원하는 설정을 먼저 골라준 뒤 복사를 진행해도 되지만 이것저것 잘 모르겠으면 그냥 CD 복사 를 하셔도 무방합니다.

 

도움이 되셨길 바랍니다~ ^^

 

반응형

+ Recent posts