[Windows] BAT 파일에서 현재 시간,날짜 만들기

Stackoverflow에 외국에 맞는게 올라가 있다.

Locale 설정에 따라 달라져야 한다. 맞게 바꾸면.

set hour=%time:~0,2%

if “%hour:~0,1%” == ” ” set hour=0%hour:~1,1%

echo hour=%hour%

set min=%time:~3,2%

if “%min:~0,1%” == ” ” set min=0%min:~1,1%

echo min=%min%

set secs=%time:~6,2%

if “%secs:~0,1%” == ” ” set secs=0%secs:~1,1%

echo secs=%secs%

set year=%date:~0,4%

echo year=%year%

set month=%date:~5,2%

if “%month:~0,1%” == ” ” set month=0%month:~1,1%

echo month=%month%

set day=%date:~8,2%

if “%day:~0,1%” == ” ” set day=0%day:~1,1%

echo day=%day%

set datetimef=%year%%month%%day%_%hour%%min%%secs%

참고: http://stackoverflow.com/questions/1192476/format-date-and-time-in-a-windows-batch-script

git p4 Windows에서 쓰기

아. git-p4를 내가 다시 쓸 일이 생기다니.. OTL

Perforce는 (거지같게도) patch 파일이나 diff 파일 만드는 기능이 빈약해서 git p4 clone 해서 patch 파일을 만들어 사용하면 편하다.

사실 별로 해줄 건 없고,

Git for Windows 깔고,

p4 깔고,

git-p4.py 만 https://raw.github.com/git/git/master/git-p4.py 에서 받아다가 “C:\Program Files (x86)\Git\bin\” 아래에 넣어주면 된다.

git-p4.py 치는 거보다 git p4 로 쓰고 싶으면 “%USERPROFILE%.gitconfig” 를 아래와 같이 고쳐서 alias해주면 된다.

[alias]

p4 = !’C:\\Program Files (x86)\\Git\\bin\\git-p4.py’

기본 config variable은 다음과 같다.

git-p4.user

User specified as an option to all p4 commands, with -u
<user>
. The environment variable P4USER can be used instead.

git-p4.password

Password specified as an option to all p4 commands, with -P
<password>
. The environment variable P4PASS can be used
instead.

git-p4.port

Port specified as an option to all p4 commands, with -p
<port>
. The environment variable P4PORT can be used instead.

git-p4.host

Host specified as an option to all p4 commands, with -h
<host>
. The environment variable P4HOST can be used instead.

git-p4.client

Client specified as an option to all p4 commands, with -c
<client>
, including the client spec. 

참고: http://ericlathrop.com/2012/12/how-to-set-up-git-p4-in-windows/


[Linux:Kernel] string 처리 개선

String copying

ssize_t strscpy(char *dest, const char *src, size_t count);

ssize_t strscpy_truncate(char *dest, const char *src, size_t count);

strscpy()는 src에서 dest로 최대 count bytes를 copy한다. source string이 count bytes보다 긴 경우를 제외하고는 copy된 bytes 수를 리턴한다. 긴 경우는 -E2BIG을 리턴한다. 다른 차이는 overflow 나는 경우는 src를 truncate하는게 아니라 dest가 empty string이 된다. 에러 체크를 항상 하면 괜찮은데, 안하는 경우, truncate된 string이 문제를 일으키는 일이 많기 때문에 이렇게 동작한다고 한다.

truncate된 string이 필요한 경우는 아래 버전을 사용하면 된다. 리턴 값은 같지만, null-terminate된 truncate된 string이 dest에 들어간다.

Integer parsing

simple_strto*() 함수가 많이 사용되지만, checkpatch가 불평하듯, kstrto*()가 더 낫다. 그런데, simple_strto*()는 “123abc”와 같은 string을 123으로 변환하는데, 이게 편리한 경우도 있다. 그래서 새로운 함수가 제안되었다.

int parse_integer(const char *s, unsigned int base, <type> *val);

사실, parse_integer()는 함수가 아니라 val의 타입에 맞는 여러가지 매크로이다. val이 unsigned short라면, 디코딩은 unsigned를 기초로 하고, 결과값이 short의 범위를 벗어나지 않는지 확인된다.

최종 결과는 val안에 담기고, 디코딩된 char 수가 리턴된다. 전체 string이 decode됐는지는 s[return_value] 가 null byte인지를 체크하면 된다. null-terminate string이면 원래 s[strlen(s)]는 ‘\0’일 테니까. 아니라면, 그 곳에 parsing하는 string이 계속 있을 거다. base가 문서화되지 않은 값 PARSE_INTEGER_NEWLINE과 or되면, 맨 마지막의 newline character는 무시-sysfs file로의 input을 parsing할 때 유용하다-된다. 아무 character도 convert되지 않으면, -EINVAL을 리턴한다. overflow인 경우 -ERANGE를 리턴한다.

출처: Improving kernel string handling(http://lwn.net/Articles/643376/)

KVM 스위치 ATEN CS692 사용법

HDMI/USB/Keyboard/Audio 를 두개 연결해서 전환할 수 있는 KVM 스위치 ATEN CS692를 퇴사한 동료가 쓰던 것을 물려받아(?) 쓰고 있는데,

이상하게 특정 마우스만 꽂으면 이상하게 튀고, 웨이브 모양을 그리며 움직이는 거다;; 상하로 움직이는데 좌우로 움직이고 막… 다른 마우스 꽂으면 잘 되고.. -_-;;

그래서 접지나 호환성 문제가 있나 하고 넘어갔다가, 오늘 매뉴얼을 찾아 읽어보니 Mouse Emulation mode가 켜져 있으면 그렇더라. 끄니까 잘된다.

KVM에 핫키 설정이 있었다는 사실을 모르고, 스위치로만 눌렀더니…

어쩐지 컨트롤키랑 여러개 막 치다보면 키보드 램프가 돌아가며 깜박깜박하고, 어떨 땐 막 제멋대로 화면 전환이 되더라니… 램프 깜박거릴 때 ESC 누르기 귀찮았는데… 어쩐지… 어쩐지…

원래는 Scroll lock 두번 누르는 것으로 시작되는 명령 모드가, Scroll lock을 Ctrl로 변경할 수도 있어서, 이게 Ctrl로 변경되어 있어서.. Ctrl키를 많이 쓰다보면 막 제멋대로….

[Scroll lock], [Scroll lock], [Enter] 하면 다른 화면 전환.

[Scroll lock], [Scroll lock], m, [Enter] 하면 Mouse emulation mode Enable / Disable.

[Scroll lock], [Scroll lock], w, [Enter] 하면 Switching mouse-port 라던가. 암튼, 휠 버튼 더블클릭으로 마우스 전환. 이건 Mouse emulation mode가 켜져 있어야 동작한다고 한다. 누르면 근데 아마 저절로 Mouse emulation mode가 On되는 듯.

[Scroll lock], [Scroll lock], x, [Enter] 하면 Scroll lock 두번 누를 때 Scroll lock 대신 Ctrl키를 사용할 수 있다.


모르거나 이상하면 매뉴얼을 읽어보자.


우분투 LiveCD로 grub 복구하기

매번 할 때마다 그냥 그때그때 찾아서 했는데, 이제 찾는 것도 귀찮다…..

1. Live CD로 부팅한 후 https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCIQFjAA&url=http%3A%2F%2Fhowtoubuntu.org%2Fhow-to-repair-restore-reinstall-grub-2-with-a-ubuntu-live-cd&ei=tC1nVYDRKoalmQWr64LwAw&usg=AFQjCNEezfvAX1O1qULcr-1Cptqi-ps7Iw&sig2=lVwEJ0u7IuDDgGZfJnzjwQ&bvm=bv.93990622,d.dGY 의 내용대로 함.


요약하면, sudo gparted 하여 우분투 설치 파티션 알아냄. 거의 ext4 파티션. 나의 경우 /dev/sda4

sudo mount /dev/sda4 /mnt

sudo mount –bind /dev /mnt/dev &&

sudo mount –bind /dev/pts /mnt/dev/pts &&

sudo mount –bind /proc /mnt/proc &&

sudo mount –bind /sys /mnt/sys

sudo chroot /mnt

grub-install /dev/sda

grub-install –recheck /dev/sda

update-grub

exit &&

sudo umount /mnt/sys &&

sudo umount /mnt/proc &&

sudo umount /mnt/dev/pts &&

sudo umount /mnt/dev &&

sudo umount /mnt

2. Default 설정 등 파일은 /etc/default/grub 에 있음. 설정 바꾼 후 update-grub 하면 그대로 설정됨.

GRUB_DEFAULT=0

#GRUB_HIDDEN_TIMEOUT=0

GRUB_HIDDEN_TIMEOUT_QUIET=true

GRUB_TIMEOUT=5

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

GRUB_CMDLINE_LINUX=””