출처


1. Git manual


2. Stackoverflow(local log 조회)


3. Stackoverflow(remote log 조회)



Local에서 작업중인 경우 조회하는 방법

# 전체 이력 및 수정했던 사항 조회해서 파일에 기록
% git --no-pager log -p  > git_history_dump



다른 repository의 Log 조회하는 방법 (예시: Selenium-Requests)


# 다른 repository의 이력 및 변경사항 조회해서 파일에 기록
% git clone --bare https://github.com/cryzed/Selenium-Requests Selenium-Requests
% cd Selenium-Requests
% git log -p  > git_history_dump



Reference from : https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins




'기타' 카테고리의 다른 글

SIP Application 명령어 코드 (RFC4740)  (0) 2017.12.19
[Git] 커밋 전체 이력과 diff 결과 조회하기  (0) 2017.12.11
[MYSQL] Join 치트쉬트  (0) 2017.09.11
.vimrc 설정하기 (set)  (0) 2017.04.25
.vimrc 설정하기  (0) 2017.04.24
AS와 S-CSCF간 연동 모드  (0) 2017.04.24

기존에 MySQL에서 잘 돌아가던 프로세스가

Maria DB로 옮기고 나서 쿼리자체가 실패하는 현상


1. CREATE TABLE 관련 쿼리는 모두 정상 처리됨


2. INSERT 쿼리가 모두 실패함

  - 접속해서 직접 쿼리를 수행해보니 에러발생


INSERT INTO (IP_ADDR) VALUES ("192.168.0.102")

  - 아무리 생각해도 이상해서 " -> ' 로 바꿔서 실행하니 성공


INSERT INTO (IP_ADDR) VALUES ('192.168.0.102')



3. 검색어가 생각이 안남

  - mariadb double quotation mark causes error 라고 검색해봄

    이것 저것 검색결과를 눌러보다 찾아냄

    https://github.com/catfan/Medoo/issues/292



4. 키워드를 찾았으니 maria db 매뉴얼을 찾아봄

    여기에 가보니 sql_mode = "ansi"로 설정해서 그렇다고 함

    https://mariadb.com/kb/en/the-mariadb-library/sql-mode/



5. 일단 현재 사용하는 곳은 엄격한 룰이 필요없으니깐 /etc/my.cnf에서 해당 설정 주석으로 막음



[mysqld]
user=maria

#sql-mode=ANSI_QUOTES,STRICT_ALL_TABLES,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION


예제를 따라하면 제 경우에는 한글이 깨집니다.



data = "subject=" + subject + "&content=" + content
request = urllib.request.Request(url, data=data.en

엄청 삽질하다가 결국 찾았습니다.

위에처럼 하면 안되고

아래처럼 해주면 잘 됩니다.


from urllib.parse import urlencode
 
    data = urlencode({'subject': subject, 'content': content}).encode()
    request = urllib.request.Request(url, data=data)

아래는 naver developers에서 제공하는 샘플코드입니다.


# 네이버 카페 Open API 예제 - 글쓰기
import os
import sys
import urllib.request
token = "YOUR_ACCESS_TOKEN"
header = "Bearer " + token # Bearer 다음에 공백 추가
clubid = "CLUB_ID" # 카페의 고유 ID값
menuid = "MENU_ID" # (상품게시판은 입력 불가)
url = "https://openapi.naver.com/v1/cafe/" + clubid + "/menu/" + menuid + "/articles"
subject = urllib.parse.quote("[subject] 네이버 Cafe api Test Python")
content = urllib.parse.quote("[content] 네이버 Cafe api Test Python")
data = "subject=" + subject + "&content=" + content
request = urllib.request.Request(url, data=data.encode("utf-8"))
request.add_header("Authorization", header)
response = urllib.request.urlopen(request)
rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)

Junegunn Kim 님의 .vimrc를 따라서 사용하고

vim 에디터의 편리함을 알게 되고 

일단은 그분의 .vimrc 설정에서 모르는 것들에 대해 정리한다.

모르는게 태반이다.




보기 좋게 하려다보니, 주석의 맨 우측에 "를 추가함


set number "라인수 세팅"


set autoindent "이전 줄에서 사용하던 들여쓰기를 현재 줄에서도 사용"


set smartindent "autoindent보다 더 많은 경우에 대해서 들여쓰기 해줌"


set laststatus=2 " 화면 하단에 현재 상태 정보 보여줄 것인지 여부 설정"

" 0 - never"

" 1 - only if there are at least two windows (화면분할)"

" 2 - always"



set showcmd "키보드 눌러서 사용하는 명령어 보여줌"


set visualbell "beep 대신에 visual bell 사용"


set timeout timeoutlen=3000 ttimeoutlen=100

"The time in milliseconds that is waited "

"for a key code or mapped key sequence to complete."

"esc 눌렀을 때 키 코드나 매핑 했던것들이 제대로 마무리 될 때까지 기다려주는 시간"

"- time out on mapping after three seconds, "

"- time out on key codes after a tenth of a second"


set shortmess=aIT "Abbreviation, Ignore intro, Truncate other messages"

"vim에서 알려주는 정보들을 짧게하거나 안 보이게 함"


set hlsearch "찾았던 키워드에 하일라이팅 해주기, 끄려면 :noh"


set incsearch "한글자씩 입력할때마다 증가하면서 그에 매칭되는 word에 하일라이팅"


set ignorecase smartcase "/로 검색할 때, 대소문자 구분없이 매칭되는 것을 찾아줌"

"smartcase는 좀더 스마트하게 검색을 해주는데 예를 들어 the, THE, The, ThE가 "

"있을 때, /Th*로 검색하면 T와 Th만 찾아준다."

"ignorecase만 사용하면 the, THE, The, ThE 모두 찾아준다."


set wildmenu "자동완성 기능 향상"

set wildmode=list:full "When more than one match, list all matches and complete first match."


set completeopt=menuone,preview "insert 모드에서 자동완성 추가 옵션"


set tabstop=4 "tab 눌렀을 때 들여쓰기하는 칸 수"

set shiftwidth=4    "<<, >>를 눌러서 들여쓰기 할때 칸 수"

set expandtab smarttab "tab안에 space 채워줌, 이전 줄에서 끝난 그 indent에서 새로운 줄을 시작함"



set list listchars=tab:▸\ ,trail:·,precedes:←,extends:→

"tab과 space 구분하기 용이하게 세팅"


set virtualedit=block "Ctrl + v로 블록잡고 커서를 우측으로 계속 옮길 수 있음, 블록 잡아서 확인하기에 용이함"

"all로 세팅하면 아무모드에서나 커서를 우측에 글자가 없어도 계속 옮길 수 있음"


set nojoinspaces "J로 줄을 합칠 때 space를 1개만 두고 합쳐준다는데 잘 모르겠음"

"차라리 gJ를 사용하면 공백 없이 2개의 줄이 1줄로 merge됨."



set autoread "현재 열고 있는 파일이 아니라 다른 파일에서 수정이 발생한 경우,"

"현재 열고 있는 파일도 변경된 내용을 읽어들인 다는데, 나는 안 써야겠다."



set foldlevelstart=99 "편집하려고 여는 모든 파일의 folding 없앰"


set nocursorline "cursor가 있는곳에 라인이 생기는데 이를 없애줌"


set nrformats=hex "숫자 포맷 0x09 + 1 -> 0x0a "

"octal로 세팅하면 0o07 -> 0o010"



set synmaxcol=9999 "9999 line 이후에는 syntax highlight를 제대로 안 할 수 있음"

"size가 큰 파일을 열때, 속도를 개선하는 효과있음"


set pastetoggle=<F9> "붙여넣기 할때 paste mode on/off 옵션"



set nostartofline "예를 들면 G로 맨 밑줄로 이동할 때 커서가 가장 왼쪽의 시작점으로 이동하지 못하게 한다"

"생각보다 커서가 start of line으로 이동하는것이 불편해서 이렇게 꺼두는게 편리함"


set isfname-=- "vim으로 편집하는 문자가 파일인지 판단하는 옵션"

"-가 있으면 이를 파일로 인식하지 않도록 빼는 설정"



"글자 폭 제한 알림 80자"

if exists('+colorcolumn')

set colorcolumn=80 "vim 7.3 이상"

else

au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)

endif













.

'기타' 카테고리의 다른 글

[Git] 커밋 전체 이력과 diff 결과 조회하기  (0) 2017.12.11
[MYSQL] Join 치트쉬트  (0) 2017.09.11
.vimrc 설정하기 (set)  (0) 2017.04.25
.vimrc 설정하기  (0) 2017.04.24
AS와 S-CSCF간 연동 모드  (0) 2017.04.24
3GPP IMS Architecture  (0) 2017.04.24

Junegunn Kim 님의 .vimrc를 따라서 사용하고

vim 에디터의 편리함을 알게 되고 

일단은 그분의 .vimrc 설정에서 모르는 것들에 대해 정리한다.

모르는게 태반이다.



1. folding


.vimrc 설정이 길어지다보면

이를 카테고리 별로 나눠 보는게 편리하다.

그리고 이를 folding해서 주제별로 보는건 더 편리하다.

zr, zm 으로 폈다, 접었다 할 수 있다.

" vim: set foldmethod=marker foldlevel=0:



2. let

변수를 선언해서 세팅한다.

has('mac')은 Any Macintosh version of Vim인지 확인하고 맞으면 s:darwin은 1로 세팅된다.


has로 확인할 수 있는 항목은 :help feature-list를 확인할 수 있다.


let s:darwin = has('mac')


3. mapleader, maplocalleader


let mapleader = ' '

let maplocalleader = ' '


mapleader를 위 처럼 세팅하면 <Leader>로 세팅한 것들을 사용하기 전에 공백을 먼저 입력해주면 사용가능하다.

maplocalleader는 동일한데 <LocalLeader>로 세팅한 것들을 사용하는데 쓸 수 있다.




4. augroup

augroup vimrc

autocmd!

augroup END


vimrc의 autocommand gorup을 설정하는데

autocmd!로 하는 경우는 기존 세팅된 autocommand를 모두 delete한다.




5. recursive, none recursive 차이


map vs noremap의 차이를 몰랐는데 아래 링크에 가면 이해하기 쉽게 설명이 되어있다.

http://jaeheeship.github.io/console/2013/11/15/vimrc-configuration.html


:map j gg

:map Q j


이런식으로 recursive하게 매핑되면 Q -> j -> gg로 재귀적으로 서로가 서로를 참조하게 되는 차이가 있다.













.

'기타' 카테고리의 다른 글

[MYSQL] Join 치트쉬트  (0) 2017.09.11
.vimrc 설정하기 (set)  (0) 2017.04.25
.vimrc 설정하기  (0) 2017.04.24
AS와 S-CSCF간 연동 모드  (0) 2017.04.24
3GPP IMS Architecture  (0) 2017.04.24
SIP 기본 콜 플로우 (RFC 3665 SIP Basic Call Flow Examples)  (0) 2017.04.21


http://www.tta.or.kr/data/ttas_view.jsp?totalSu=14051&by=asc&order=publish_date&rn=1&pk_num=TTAK.OT-01.0010&nowSu=7644


https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=1055




개인 정리용이므로

아래의 내용보다는 위의 출처의 글을 보는것이 

더 도움이 될 수 있다.



AS(Application Server)와 소프트 스위치(S-CSCF)간 연동 모드

- 그림 상에 From, To, Call-ID에 주의를 기울이면 이해하는데 도움이 된다.

- 다이얼로그: SIP 메시지를 통해 두 UA 사이의 설정된 가상의 SIP 관계를 나타낸다.


AS는 응용서비스 동작할 때, 아래의 각 모드들을 적절하게 조합하여

S-CSCF와 연동하여 서비스를 제공한다.




1. AS가 착신 UA 혹은 Redirect 서버로 동작



2. AS가 발신 UA로 동작




3. AS가 SIP Proxy로 동작

- Application Server는 Request에 있는 SIP 헤더를 추가, 변경, 삭제가 가능함




4. AS가 B2BUA로 동작

- 3rd party 호처리를 위해 B2BUA로 동작


4-1 Routing B2BUA

- AS가 Request를 수신하면, 해당 다이얼로그에 대한 세션 처리를 중지 or 보류하고, 

  새로운 다이얼로그 설정을 위해 Request를 생성하여 S-CSCF로 전달



4-2 Initiating B2BUA

AS가 2개의 서로 다른 Request를 생성하여 S-CSCF로 전달

  이 경우 AS는 각 Request에 대한 다이얼로그를 별도로 생성



5. AS를 거치지 않는 경우

- AS는 S-CSCF로 부터의 SIP Request에 대해 이후 진행할 SIP signalling path를 계속 유지하려는 경우

  해당 Request 내에 있는 Record-Route 헤더를 추가해야함

  만일 그렇지 않은 경우 AS는 SIP signalling path에서 제외됨












.


+ Recent posts