.vimrc 읽은 후 .gvimrc 설정 부분 재 정의
set background=dark
colorscheme hybrid
"
"set background=light
"colorscheme hybrid
"set background=dark
"colorscheme solarized
"set background=light
"colorscheme solarized
" Windows
"set guifont=Font\ Family:h12
"set guifontwide=Font\ Family:h12
"Linux Version
set guifont=D2Coding\ 16
set guifontwide=D2Coding\ 16
카테고리
asm
(27)
bootloader_x86_grub
(1)
C
(92)
compile
(11)
config
(76)
CPP
(13)
CSS
(1)
debugging
(7)
gimp
(1)
Go
(1)
html
(1)
Java
(1)
JavaScript
(1)
kernel
(19)
LibreOffice
(3)
Linux system progamming
(21)
MFC
(1)
opencv
(4)
OpenGL
(1)
PHP
(1)
Python
(4)
qemu
(29)
shell
(3)
socket
(7)
troubleshooting
(2)
ubuntu18.04
(2)
windows
(1)
2018/12/14
화면분할 CLI 설정
우분투 18.04 에서 gnome-shell이 4분할 기능이 현재 나오지 않음.
스크립트 작업에 필용한 응용프로그램 4분할 위치 지정 방법 시나리오.
윈도우 사이즈 설정
sudo apt-get install wmctrl
sudo apt-get install xdotool
wmctrl -r '제목 창' -t '작업 공간 번호 지정'
#epiphany 실행 뒤,
#3초 대기
# 해당 프로그램의 PID에 해당하는 창 ID를 획득.
# 해당 창 ID 정보로 지정된 작업공간 0번으로 옮긴다.
epiphany & sleep 3; t=$(wmctrl -lp | grep -F " $! " | awk '{ print $1 }'); wmctrl -i -r $t -t 0
스크립트 참고 (http://hungrylobster.tistory.com/136).
sudo vi ~/bin/setwindow.py
#!/usr/bin/env python3
import subprocess
import time
import sys
app = sys.argv[1]
get = lambda x: subprocess.check_output(["/bin/bash", "-c", x]).decode("utf-8")
ws1 = get("wmctrl -lp"); t = 0
subprocess.Popen(["/bin/bash", "-c", app])
while t < 30:
ws2 = [w.split()[0:3] for w in get("wmctrl -lp").splitlines() if not w in ws1]
procs = [[(p, w[0]) for p in get("ps -e ww").splitlines() \
if app in p and w[2] in p] for w in ws2]
if len(procs) > 0:
w_id = procs[0][0][1]
cmd1 = "wmctrl -ir "+w_id+" -b remove,maximized_horz"
cmd2 = "wmctrl -ir "+w_id+" -b remove,maximized_vert"
cmd3 = "xdotool windowsize --sync "+procs[0][0][1]+" "+sys.argv[4]+"% "+sys.argv[5]+"%"
cmd4 = "xdotool windowmove "+procs[0][0][1]+" "+sys.argv[2]+" "+sys.argv[3]
for cmd in [cmd1, cmd2, cmd3, cmd4]:
subprocess.call(["/bin/bash", "-c", cmd])
break
time.sleep(0.5)
t = t+1
실행 권한
chmod +x ~/bin/setwindow.py
setwindow.py 0 0 50 100 gedit /path/to/file.txt
setwindow <horizontal-position> <vertical-position> <horizontal-size (%)> <vertical-size (%)> <application> <file_to_open>
setwindow <수평> <수직> <수평-크기 (%)> <수직-크기 (%)> <응용프로그램> <파일명>
크기가 다른 듀얼 모니터 사용 예
wmctrl -lG | grep firefox
wmctrl -lG | grep Mozilla\ Firefox
0x04200011 0 14 94 1280 1386 linuxlee-11T750-GT58K Mozilla Firefox
0x04200011: 프로세스 메모리 로딩 위치
0: 작업 공간 번호
14 94: x, y 위치
1280 1386: 윈도우 가로, 세로 화면 크기
위치 지정
setwindow.py 사용프로그램 <x위치> <y위치> <가로크기> <세로크기>
setwindow.py firefox 1221 24 25 100
setwindow.py firefox 2332 24 25 100
setwindow.py firefox 1221 24 50 100
setwindow.py firefox 2332 24 0 100
스크립트 작업에 필용한 응용프로그램 4분할 위치 지정 방법 시나리오.
윈도우 사이즈 설정
sudo apt-get install wmctrl
sudo apt-get install xdotool
wmctrl -r '제목 창' -t '작업 공간 번호 지정'
#epiphany 실행 뒤,
#3초 대기
# 해당 프로그램의 PID에 해당하는 창 ID를 획득.
# 해당 창 ID 정보로 지정된 작업공간 0번으로 옮긴다.
epiphany & sleep 3; t=$(wmctrl -lp | grep -F " $! " | awk '{ print $1 }'); wmctrl -i -r $t -t 0
스크립트 참고 (http://hungrylobster.tistory.com/136).
sudo vi ~/bin/setwindow.py
#!/usr/bin/env python3
import subprocess
import time
import sys
app = sys.argv[1]
get = lambda x: subprocess.check_output(["/bin/bash", "-c", x]).decode("utf-8")
ws1 = get("wmctrl -lp"); t = 0
subprocess.Popen(["/bin/bash", "-c", app])
while t < 30:
ws2 = [w.split()[0:3] for w in get("wmctrl -lp").splitlines() if not w in ws1]
procs = [[(p, w[0]) for p in get("ps -e ww").splitlines() \
if app in p and w[2] in p] for w in ws2]
if len(procs) > 0:
w_id = procs[0][0][1]
cmd1 = "wmctrl -ir "+w_id+" -b remove,maximized_horz"
cmd2 = "wmctrl -ir "+w_id+" -b remove,maximized_vert"
cmd3 = "xdotool windowsize --sync "+procs[0][0][1]+" "+sys.argv[4]+"% "+sys.argv[5]+"%"
cmd4 = "xdotool windowmove "+procs[0][0][1]+" "+sys.argv[2]+" "+sys.argv[3]
for cmd in [cmd1, cmd2, cmd3, cmd4]:
subprocess.call(["/bin/bash", "-c", cmd])
break
time.sleep(0.5)
t = t+1
실행 권한
chmod +x ~/bin/setwindow.py
setwindow.py 0 0 50 100 gedit /path/to/file.txt
setwindow <horizontal-position> <vertical-position> <horizontal-size (%)> <vertical-size (%)> <application> <file_to_open>
setwindow <수평> <수직> <수평-크기 (%)> <수직-크기 (%)> <응용프로그램> <파일명>
크기가 다른 듀얼 모니터 사용 예
wmctrl -lG | grep firefox
wmctrl -lG | grep Mozilla\ Firefox
0x04200011 0 14 94 1280 1386 linuxlee-11T750-GT58K Mozilla Firefox
0x04200011: 프로세스 메모리 로딩 위치
0: 작업 공간 번호
14 94: x, y 위치
1280 1386: 윈도우 가로, 세로 화면 크기
위치 지정
setwindow.py 사용프로그램 <x위치> <y위치> <가로크기> <세로크기>
setwindow.py firefox 1221 24 25 100
setwindow.py firefox 2332 24 25 100
setwindow.py firefox 1221 24 50 100
setwindow.py firefox 2332 24 0 100
swap 함수 구현
교환 함수 swap 구현
#include <stdio.h>
void swap(int *a, int *b);
int main(void){
int number1=5, number2=10;
printf("numberber1 = %d\n", number1);
printf("numberber2 = %d\n", number2);
swap(&number1, &number2);
printf("numberer1 = %d\n", number1);
printf("numberber2 = %d\n\n", number2);
return 0;
}
void swap(int *a, int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
#include <stdio.h>
void swap(int *a, int *b);
int main(void){
int number1=5, number2=10;
printf("numberber1 = %d\n", number1);
printf("numberber2 = %d\n", number2);
swap(&number1, &number2);
printf("numberer1 = %d\n", number1);
printf("numberber2 = %d\n\n", number2);
return 0;
}
void swap(int *a, int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
scanf 입력 6개 총합
6개의 키보드 정수형을 입력
입력 받은 숫의 총합 계산.
#include <stdio.h>
int main(void){
int i, value[6], sum=0;
printf("Enter 4 numbers:\n");
for(i=0; i<6; ++i) {
scanf("%d", (value+i));
sum += *(value+i);
}
printf("Sum=%d", sum);
return 0;
}
입력 받은 숫의 총합 계산.
#include <stdio.h>
int main(void){
int i, value[6], sum=0;
printf("Enter 4 numbers:\n");
for(i=0; i<6; ++i) {
scanf("%d", (value+i));
sum += *(value+i);
}
printf("Sum=%d", sum);
return 0;
}
배열 포인터 메모리 주소 자료형 변화
#include
<stdio.h>
int
main(void){
int
c_array[4]={'o', 't', 't', 'f'};
//c_array[4]
8비트 4개
자료형 4Byte
0x2003 |
f | |
0x2002 |
t | |
0x2001 |
t | |
대표번지 | 0x2000 | o |
int
d[4]={1,2,3,4};
//d[4]
array 32bit 4개 자료형 32Byte
0x3012 |
4 | |
0x3008 |
3 | |
0x3004 |
2 | |
대표번지 | 0x3000 | 1 |
int
i;
for(i=0;
i<4; ++i){
printf("memory_address
of c_array[%d]=%p\n\n", i, &c_array[i]);
c_array[%d]
|
i
|
o
|
%p
|
&c_array[i]
|
0x2000
|
printf("&c_array[%d]=%p,
(c_array+%d)=%p\n\n", i, &c_array[i], i, (c_array+i));
&c_array[%d]
|
i
|
t
|
%p
|
&c_array[i]
|
0x2001
|
c_array+%d
|
i
|
t
|
%p
|
c_array+i
|
0x2002
|
printf("c_array[%d]=%c_array, (c_array+%d)=%c_array\n\n", i, c_array[i],i, *(c_array+i));
&c_array[%d]
|
i
|
f
|
%p
|
&c_array[i]
|
0x2000
|
c_array+%d
|
i
|
t
|
%p
|
c_array+i
|
0x2001
|
}
for(i=0;
i<4;++i){
printf("memory_address
of d[%d]=%p\n\n", i, &d[i]);
memory_address
of d[%d]
|
i
|
1
|
%p
|
&d[i]
|
0x3000
|
printf("&d[%d]=%p, (d+%d)=%p\n\n",i, &d[i], i, (d+i));
&d[%d]
|
i
|
2
|
%p
|
&d[i]
|
0x3004
|
(d+%d)
|
i
|
3
|
%p
|
(d+i)
|
0x3008
|
printf("d[%d]=%d, *(d+%d)=%d\n\n", i,d[i], i, *(d+1));
d[%d]
|
i
|
3
|
%d
|
d[i]
|
0x3008
|
*(d+%d)
|
i
|
4
|
%d
|
*(d+1)
|
0x3012
|
}
return
0;
}
초급자 메모리 포인터 선언 실수 원인
#include
<stdio.h>
int
main(void){
int
*pointer_value, value;
메모리 번지
|
메모리 자료형 int(32bit)
|
변수 이름
|
설명
|
0x5000
|
메모리 공간 할당 *
|
point_value;
|
변수 선언
|
0x5200
|
메모리 공간 할당
|
value
|
변수 선언
|
*pointer_value=value;
메모리 번지
|
메모리 자료형 int(32bit)
|
변수 이름
|
설명
|
0x5000
|
메모리 공간 할당 *
|
point_value;
|
주소(R)
변수 선언
|
0x5000
|
INT
주소 자료 형식
|
주소 값
|
주소(R)
값 모드 대기
|
0x5200
|
메모리 공간 할당
|
value
|
(RW)변수
선언
|
0x5200
|
INT
주소 자료 형식
|
변수 값
|
정수 값(W)
모드 실행
|
메모리 번지
|
자료형 NO
|
형식 다름
|
실패
|
*pointer_value=&value;
메모리 번지
|
메모리 자료형 int(32bit)
|
변수 이름
|
설명
|
0x5000
|
메모리 공간 할당 *
|
point_value;
|
주소(R)
변수 선언
|
0x5000
|
INT
주소 자료 형식
|
주소 값
|
주소 값(R)
모드 대기
|
0x5200
|
메모리 공간 할당 &
|
value
|
주소(RW)
참고 변수 선언
|
0x5200
|
INT
주소 자료 형식
|
추소 참고 변수 값
|
참고 (W)
모드 실행
|
메모리 번지
|
자료형 NO
|
형식 다름
|
실패
|
*pointer_value=value;
메모리 번지
|
메모리 자료형 int(32bit)
|
변수 이름
|
설명
|
0x5000
|
메모리 공간 할당 *
|
point_value;
|
주소(R)
변수 선언
|
0x5000
|
INT
주소 자료 형식
|
주소 값
|
주소 값(R)
모드 대기
|
0x5200
|
메모리 공간 할당
|
value
|
(RW)
변수 선언
|
0x5200
|
INT
주소 자료 형식
|
주소 값
|
참고 (RW)
모드 실행
|
메모리 번지
|
자료형 KO
|
형식 다름
|
성공
|
pointer_value=&value;
메모리 번지
|
메모리 자료형 int(32bit)
|
변수 이름
|
설명
|
0x5000
|
메모리 공간 할당
|
point_value;
|
주소(RW)
변수 선언
|
0x5000
|
INT
주소 자료 형식
|
주소 값
|
주소 값(RW)
모드 대기
|
0x5200
|
메모리 공간 할당 &
|
value
|
(RW)
변수 선언
|
0x5200
|
INT
주소 자료 형식
|
주소 값
|
참고 (RW)
모드 실행
|
메모리 번지
|
자료형 KO
|
형식 다름
|
성공
|
}
피드 구독하기:
글 (Atom)