Obsidian sync를 사용하지 않아도 아이폰에서는 obsidian 연동이 매우 쉽다고 합니다.

이 글에서는 우분투, 안드로이드폰에서 사용하기 위해서 Google drive와 연동하는 방법에 대한 내용을 정리합니다.

1. 우분투 + Google drive (참고 1)

rclone이라는 프로그램을 먼저 살펴봤습니다.(참고 2)

그냥 따라하기만 해도 뭔가 복잡하고 어려웠습니다.

그래서 다른 방법은 없는지 살펴보다가 google-drive-ocamlfuse 프로그램을 사용하는 방법을 확인했습니다. (참고1, 참고3)

 

(1-1) 아래와 같이 프로그램만 설치하고

$ sudo add-apt-repository ppa:alessandro-strada/ppa
$ sudo apt update
$ sudo apt install google-drive-ocamlfuse

(1-2) Google drive와 연동할 폴더를 생성하고,

$ mkdir gdrive

(1-3) Google drive와 연동하면 됩니다.

$ google-drive-ocamlfuse ~/gdrive

이 경우, Google drive의 전체 내용을 gdrive 폴더에서 확인할 수 있습니다.

구글 계정과의 연동은 참고 링크를 확인해 주십시오.

 

2. 우분투 + Google drive (특정 폴더)

만약 특정 폴더만 mount하고 싶은 경우에는 다음과 같이 합니다.

 

(2-1) config 파일을 확인합니다.

$ cd ~/.gdfuse/default
$ rm -r cache
$ gedit config

(2-2) config 파일에서 root_folder 부분을 찾습니다.

root_folder=

(2-3) 이 부분에 mount를 하고자 하는 특정 폴더의 이름을 적어 주면 된다고 합니다. (참고 3)

그런데, 저는 folder id를 입력해 줘야 동작했습니다.

참고 4를 살펴보면 아래와 같은 내용이 있습니다.

Root folder ID
...
So if the folder you want rclone to use has a URL which looks like https://drive.google.com/drive/folders/1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh in the browser, then you use 1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh as the root_folder_id in the config.

즉, 웹브라우저에서 Google drive에 접속한 후 mount하고자 하는 특정 폴더로 이동합니다.

이때 주소창에 보이는 주소에서 folders 이후의 주소를 복사해서 config 파일의 root_folder 뒤에 붙여 넣으면 됩니다.

 

3. 기타

처음에 mount한 경우에 우분투에서 폴더를 생성하거나 파일을 생성하는 경우에 "Input/output error" 문제가 있었고, read only로 mount되는 것을 debug message에서 확인할 수 있었습니다.

웹브라우저로 Google drive에 가서 text 파일을 만들고, 우분투에서 내용을 추가할 수 있었습니다.

이후 동작에 특별한 문제는 없었습니다.

이유는 모르지만 read only로 mount되는 경우가 있어 보입니다. (참고 5)

 

동작 이후 unmount는 아래 명령어를 사용했습니다.

$ fusermount -u ~/gdrive

.bashrc에 다음과 같은 alias를 만들어서 사용하고 있습니다.

alias gmount='google-drive-ocamlfuse ~/gdrive/'
alias gunmount='fusermount -u ~/gdrive'

 

- End -


참고 1. https://bigbigpark.tistory.com/43

참고 2. https://www.woobi.net/board2/4781

참고 3. https://jdselectron.tistory.com/164

참고 4. https://rclone.org/drive/

참고 5. https://astrada.github.io/google-drive-ocamlfuse/

 

 

 

 

반응형

'프로그래밍 > Tips & sites' 카테고리의 다른 글

[Sites] CRC  (0) 2020.09.12
[Tips] 파워포인트 매크로  (0) 2019.12.28
[Tips] VIM  (0) 2019.12.17
[Tips] Notepad++  (0) 2019.12.15

네트워크 프로토콜 관련해서 시험해 보았습니다.

프로토콜의 맨 마지막 형식은 CRC로 패킷 일부에 대한 CRC를 계산하도록 되어 있고,  사용하는 형식은 "표준 CRC 16"이라고 되어 있었습니다.

CRC 16 관련 코드를 찾아서 구현하고 서버로 패킷을 전송했습니다.

그런데 response packet에서 CRC 16 error를 확인할 수 있었습니다.

코드를 다시 한번 확인해 보아도 이유를 알 수가 없었습니다.

다행시 response packet에서 CRC 필드를 확인할 수 있고, 제가 사용하는 코드에 넣어서 시험했더니 받은 CRC 값과 계산한 CRC 값이 틀린겁니다.

검색을 해 봐도 이유를 확인하기 어렵고 ㅠㅠ

그러다 만난 사이트입니다.

 

https://crccalc.com/

 

Online CRC-8 CRC-16 CRC-32 Calculator

Please enable JavaScript on this site or click one of the buttons above. Share your result: Cookies policies

crccalc.com

사이트에 접속하면 아래와 같은 화면을 볼 수 있습니다.

(1) 입력한 데이터를 Hex로 확인합니다. Byte align이 맞지 않는 경우는 (3)의 9를 표시하는 방법을 참고하면 되겠습니다.

(2) 맨 아래 Processed data 필드 (3)를 활성화합니다. 실제 계산에 사용하는 입력 데이터를 확인할 수 있습니다.

(3) 실제 계산에 사용하는 데이터입니다.

(4) CRC 계산 방법을 선택합니다.

 

CRC16을  선택했는데, 사용하는 Algorithm이 아래와 같이 매우 다양했습니다.

입력 packet의 CRC와 일치하는 algorithm을 확인해보니 CRC-16/MODBUS였습니다.

이를 검색해서 코드를 사용했더니 CRC 에러가 발생하지 않았습니다.

 

- End -

반응형

'프로그래밍 > Tips & sites' 카테고리의 다른 글

[Obsidian] Google drive와 연동하기  (0) 2022.04.03
[Tips] 파워포인트 매크로  (0) 2019.12.28
[Tips] VIM  (0) 2019.12.17
[Tips] Notepad++  (0) 2019.12.15

파워포인트에 그림을 여러장 붙여서 정리해야 했습니다. 여러 가지 방법을 사용해 봤습니다.

선을 그려 놓고, 거기에 맞춰서 그림들을 마우스로 움직여 정렬합니다. 깔끔하지는 않지만 눈대중으로 하는 것보다는 볼만합니다.

그림이 움직일때도 눈에 보이지 않는 좌표에 따라 움직이지 않도록 설정을 변경해 보기도 합니다.

그런데, 그림을 6장씩(3x2) 10개 sheet 이상 정렬하려니, 손으로 작업하는 것은 아니다 싶었습니다.

파워포인트에도 매크로가 있지 않을까 싶어서 찾아보니, 역시나 있었습니다.

그런데, 다른 프로그램들과 달리 단축키 버튼도 없고, 자동 녹화 기능을 쉽게 찾을 수 없었습니다.

대신에 VBA 프로그래밍에 대한 내용들만 있더군요.

더 좋은 방법이 많겠지만, 간단하게 제가 사용한 방법을 정리해 보았습니다.

 

[목적]

1. 그림 파일을 읽는다.

2. 파워포인트에 붙인다.

3. 크기를 조정한다.

4. 위치를 조정한다.

5. 총 6장에 대해서 반복 작업한다.

 

[전체 코드]

Sub ChangeFigSize()

ActiveWindow.Selection.ShapeRange.LockAspectRatio = msoTrue
ActiveWindow.Selection.ShapeRange.Height = 190

picNum = InputBox("그림 위치?")

If IsNumeric(picNum) Then

    If picNum = 1 Then
        ActiveWindow.Selection.ShapeRange.Top = 90
        ActiveWindow.Selection.ShapeRange.Left = 85
    End If

    If picNum = 2 Then
        ActiveWindow.Selection.ShapeRange.Top = 300
        ActiveWindow.Selection.ShapeRange.Left = 85
    End If

    If picNum = 3 Then
        ActiveWindow.Selection.ShapeRange.Top = 90
        ActiveWindow.Selection.ShapeRange.Left = 370
    End If

    If picNum = 4 Then
        ActiveWindow.Selection.ShapeRange.Top = 300
        ActiveWindow.Selection.ShapeRange.Left = 370
    End If

    If picNum = 5 Then
        ActiveWindow.Selection.ShapeRange.Top = 90
        ActiveWindow.Selection.ShapeRange.Left = 655
    End If

    If picNum = 6 Then
        ActiveWindow.Selection.ShapeRange.Top = 300
        ActiveWindow.Selection.ShapeRange.Left = 655
    End If

End If

End Sub

 

[상세]

파워포인트에서 '매크로' 메뉴를 실행하고, 새로운 매크로를 하나 만들면, VBA 프로그램 화면이 새로 뜹니다.

위의 전체 코드를 입력하기 전에 그림들의 위치를 확인해 볼 필요가 있습니다.

우선 손으로 그림들을 배치시켜봅니다.

그리고, 아래 코드를 VBA에 넣습니다.

MsgBox 'ActiveWindow.Selection.ShapeRange.Height'
MsgBox 'ActiveWindow.Selection.ShapeRange.Top'
MsgBox 'ActiveWindow.Selection.ShapeRange.Left'

그림을 하나 선택한 후, 매크로를 실행합니다. 그러면 팝업창이 뜨면서 선택한 그림에 대한 Height, Top, Left에 대한 숫자가 표시됩니다.

이 숫자들이 선택한 그림의 크기와 좌표 정보입니다.

손으로 작업한 것이라, 그림마다 조금씩 틀릴 수 있습니다.

따라서 모든 그림에 대한 크기와 좌표를 확인한 후, 최종적으로 작업할 그림의 크기, 좌표를 정리해 둡니다.

예를 들면 그림 크기가 160.1, 159.8, 160.3등이면 160을 사용하자는 식으로 말입니다.

 

앞서 그림의 크기와 좌표를 확인하기 위한 코드를 지우고, [전체 코드]를 넣습니다.

이때 앞서 확인한 그림의 크기, 좌표등의 숫자는 정리해둔 값을 사용하세요.

 

매크로를 실행하면 팝업창이 뜨면서 몇번째 그림으로 사용할 것인지 묻습니다.

이때 1~6 중에서 원하는 숫자를 입력하면 해당 위치로 그림이 이동하게 됩니다.

 

 매크로 실행을 위한 단축키를 사용하면 좋겠지만, 인터넷에서 쉽게 찾을 수는 없었습니다.

그래서 다음과 같이 작업했습니다.

 

1. 그림 파일을 읽는다. (Ctrl+C 키보드를 입력)

2. 파워포인트에 붙인다. (Ctrl+V 키보드를 입력)

3. 매크로를 실행한다.

    3.1. 매크로 자체를 실행하기 위한 단축키 "Alt+F8" 입력
    3.2. 매크로 메뉴에서 실행 단축키 "Alt+R"키 입력
    3.3. 그림의 위치 선정을 위한 숫자 입력

 

그림이 크기가 변경된 후 원하는 위치로 자동 이동하게 되었습니다.

 

[End]

반응형

'프로그래밍 > Tips & sites' 카테고리의 다른 글

[Obsidian] Google drive와 연동하기  (0) 2022.04.03
[Sites] CRC  (0) 2020.09.12
[Tips] VIM  (0) 2019.12.17
[Tips] Notepad++  (0) 2019.12.15

윈도우용 editor들을 주로 사용하고, VI는 가끔 읽기, 한두글자 고치기 정도로만 사용했습니다. 그러다 최근 plugin을 비롯해서 다양한 기능을 사용하면서 빠른 속도와 함께 매력을 느끼고 있습니다. 사용하면서 필요한 다양한 Tip들을 정리합니다.

 

  • Search history

사용한 명령어 history는 ESC mode에서 history 명령어를 이용하면 됩니다.

:history

Search history도 확인할 수 있는데 ESC mode에서 다음과 같은 명령어를 입력하면 됩니다.

:history /

혹은

:history search

 

  • Whole word search and etc.

일치하는 단어를 search할 때의 ESC 명령어는 다음과 같습니다.

/\<searching_word\>

'/'로 search를 시작하고, "\<"와 "\>"로 원하는 단어를 감싸면 일치하는 단어를 찾을 수 있습니다.

코드를 보다 보면 "variable =="는 제외하고 ""variable ="만을 찾고 싶을 때가 있었습니다. 그런데, 위의 명령어는 word만 찾기 때문에 space가 포함된 위 내용은 찾을 수 없었습니다. 다양한 방법을 찾아보다가 정규표현식을 조금만 이용해서 아래와 같은 명령어로 "=="가 아닌 "="까지만 찾을 수 있었습니다.

/searching_word =[^=]

정규표현식과 관련해서는 다양한 page들이 있지만 잘 정리된 링크를 소개합니다. (https://hamait.tistory.com/342)

 

  • 코드 indent 자동 정렬

코드의 indent를 자동으로 해주는 프로그램을 찾다가 vi에서도 아래의 ESC mode 명령어로 가능하다는 것을 알았습니다. (https://wookiist.tistory.com/1)

gg=G

Visual mode로 일부 코드를 선택한 후 "="를 입력하면 해당 block에서만 audo indent가 수행됩니다.

 

  • Block의 처음과 끝 이동하기

C언어는 block이 '{'로 시작해서 '}'로 끝나게 됩니다. VI는 똑똑하게도 그 시작과 끝을 알고 있습니다. 이때 Block의 처음과 끝을 이동하고 싶으며, 원하는 '{' 혹은 '}'에 커서를 위치시킨 후 '%'키를 누르면 '{'와 '}'사이를 왔다 갔다 할 수 있습니다.

반응형

'프로그래밍 > Tips & sites' 카테고리의 다른 글

[Obsidian] Google drive와 연동하기  (0) 2022.04.03
[Sites] CRC  (0) 2020.09.12
[Tips] 파워포인트 매크로  (0) 2019.12.28
[Tips] Notepad++  (0) 2019.12.15

예전에는 Ultra editor를 사용했습니다. 데이터 정리등을 위해서 매크로 기능을 사용했는데, 프로그래밍하기도 간단했죠. 그러다 유료인 Ultra editor 대신 무료 application을 사용하라는 요청을 받았습니다. Vi도 대안이겠지만, Windows를 주로 사용하다 보니 GUI 지원을 선호해서 Vi 보다는 Notepad++를 선택했습니다. Notepad++에 대한 tips을 정리하면 이후 유용할 것으로 보여 정리하게 되었습니다.

 

  • 중복되는 줄 삭제

reference: https://www.it-swarm.net/ko/notepad%2B%2B/%EB%A9%94%EB%AA%A8%EC%9E%A5%EC%97%90%EC%84%9C-%EC%A4%91%EB%B3%B5-%ED%96%89-%EC%A0%9C%EA%B1%B0/970641118/

 

원래는 Notepad++에서 TextFX plugin을 사용했습니다. 그런데, 윈도우를 64bit로 설치하면서 64bit용 TextFX plugin을 설치했는데도 동작하지 않았습니다. 그러다 링크의 site를 발견했죠.ㅕㅜ

Notepad++이 정규 표현식을 지원하는 줄도 몰랐는데, 단 몇자의 글자로 중복되는 줄을 삭제하는 기능을 사용할 수 있다니 정말 놀랍습니다. 간단한 정규표현식은 공부했습니다만, 여기에 사용하는 정규표현식을 해석하기도 쉽지 않으니, 정규표현식을 자유자재로 사용하는 것은 항상 부럽네요.

 

방법은 reference 링크과 같습니다.

1. Replace 메뉴를 선택 (Ctrl+h)

2. 윈쪽 아래 "Regular express"을 선택하고, "matches new line"도 체크

3. 찾는 문자열에 아래 정규식을 입력

^(.*?)$\s+?^(?=.*^\1$)

4. "찾아서 변경하기" 버튼을 누르면 중복되는 라인이 사라짐

 

반응형

'프로그래밍 > Tips & sites' 카테고리의 다른 글

[Obsidian] Google drive와 연동하기  (0) 2022.04.03
[Sites] CRC  (0) 2020.09.12
[Tips] 파워포인트 매크로  (0) 2019.12.28
[Tips] VIM  (0) 2019.12.17

+ Recent posts