2015. 7. 2. 16:53

yyMMdd 형식(6자리)에서 yyyyMMdd 형식(8자리)으로 변환



string OrdYMD_RAW = "150702";
           
DateTime dtOrdYmd = DateTime.ParseExact(OrdYMD_RAW, "yyMMdd", null);
           
string strDate = dtOrdYmd.ToString("yyyyMMdd");
                       
// String --> DateTime   6자리 에서 DateTime 형식으로 변환.
// DateTime --> String   DateTime 형식에서 8자리 날짜 포맷으로 변환.



1. 1915 년에 컴퓨터가 없었다.

2. 2115년 까지 현재의 프로그램을 이용할 확률은 거의 없다.


위 2가지 생각에 비추어 편법으로 앞에 "20" + 6자리 날짜데이터(스트링) 으로 처리 할 수도 있었으나, 왠지 모르게 이건 아니다 싶어 변환 하고 다시 변환하는 방법으로 처리 했는데...


해놓고 보니 그게 그건가... 싶기도 -_-;;



Posted by 해비
2015. 6. 29. 01:07


한성 U35S 노트북에서 밝기 조절이 안되어 찾아서 설정한 자료 입니다.


기존파일 백업

sudo cp /etc/default/grub /etc/default/grub.bak


설정파일 열어서

sudo vim /etc/default/grub

   GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video.use_native_backlight=1"

(진하게 표시된 부분 추가 또는 수정)


grub 업데이트

sudo update-grub


재부팅






[참고]https://bbs.archlinux.org/viewtopic.php?id=177616



Posted by 해비
2015. 6. 4. 23:45


2TB 이상의 하드를 단일파티션으로 사용하기 위해 GPT 볼륨을 생성해야 한다.



1. parted 설치

sudo apt-get install parted



2. GPT 라벨 생성

mklabel gpt



3. 파티션 생성

mkpart primary 0% 100%



4. ext4 파일시스템 생성

sudo mkfs.ext4 /dev/sdb1





5. UUID 확인

ls -l /dev/disk/by-uuid 



6. fstab 에 추가

sudo vim /etc/fstab



7. fstab 마운트 테스트

sudo mount -a





8. 파일시스템 점검

sudo umount /dev/sdb1



umount 했는데도 자동 재마운트가 되는 경우가 있는경우

sudo vim /etc/fstab 

점검을 위해 임시로 해당장치 설정 앞에 # 으로 주석처리 하고, 재부팅 후 작업 한다.


sudo fsck -TV /dev/sdb1







[참고]

http://devanix.tistory.com/242 [파일 시스템 점검 명령어]







Posted by 해비
2015. 5. 21. 22:04


텍스트 문장을 char 배열, 또는 byte 배열로 분해하면...? 문득 떠오른 것을 그냥 한번 만들어 보았다.


어디 써먹을 데 있으려나...





C# 에서 char는 문자 1개당 하나씩 대응(2바이트 인듯 하다) 하고, byte는 알고 있던대로... 한글 2바이트 기타 아스키 코드 1바이트 대응 하고 있다.




char 배열로 분해하기

char[] charArr = msgStr.ToCharArray(); 

- msgStr 은 문자열이 들어있는 string 변수이다.




byte 배열로 분해하기

System.Text.Encoding AscEnc = System.Text.ASCIIEncoding.GetEncoding("ks_c_5601-1987");

byte[] byteArr = AscEnc.GetBytes(msgStr);

- msgStr 은 문자열이 들어있는 string 변수이다.

- 문자열 인코딩을 설정한 다음 바이트 배열로 분해하여 담는다.





풀 소스코드는 Github 에서 다운로드 가능~

https://github.com/haebi/textsplitter




[실행파일]

textsplitter.zip


그냥 실행파일만 필요하면 이것을 받으면 된다. 

닷넷 4.5가 설치되어있지 않다면 실행되지 않고 불평을 늘어놓을 것이다. (아마도...)





Posted by 해비
2015. 5. 21. 13:37



VS 2013 에서의 github 사용 방법 간단정리



1. git 다운로드

http://msysgit.github.io/



2. 회원가입, 로그인 후 리포지터리 생성

https://github.com/

- 리포지터리 생성할 때, Initialize this repository with a README 에 체크가 되지 않도록 주의한다.



3. 그대로 vs2013 실행 후, 아무거나 프로젝트 하나 만들자 (윈폼 하나 떠 있어도 일단은 OK 다)

[파일] - [소스 제어에 추가] - [Git 선택] - [확인]



4. [보기] - [팀 탐색기] 열어서, [홈(집)] - [프로젝트-변경내용] - [커밋 메시지 입력] - [커밋]

- 여기서 로컬에 커밋이 완료 되었습니다.



5. 다시 [팀 탐색기] 열어서, [홈(집)] - [동기화 되지 않은 커밋] - [github에서 생성한 리포지터리의 URL 주소 입력] - [게시] - [github ID, PW 입력]

-여기서 github에 푸쉬가 완료 되었습니다.





이제 github 으로 부터 소스 내려받아서 작업 진행을 예로 들겟습니다.

1. vs2013실행 - [파일] - [소스제어에서 열기] - [팀 탐색기] - [연결(플러그)] - [복제본] - [github 리포지터리 URL 입력] - [복제]

- 원격지의 소스를 로컬에 내려받았다.



2. [복제] 버튼 아랫부분에 로컬에 내려진 프로젝트가 보인다. - [더블클릭] 하면 해당 [프로젝트의 홈으로 이동]한다.

   - 솔루션파일(.sln)을 다시 더블클릭하면 해당 솔루션이 열린다.

   - 솔루션 탐색기로 가면 프로젝트는 이미 열려있다. 직접 소스를 열도록 한다.



3. [소스 수정] 알아서 임의로 수정한다. 그냥 버튼 하나 추가로 끝내도 좋다.



4. [팀 탐색기] - [홈] - [변경내용] - [커밋 메시지 입력] - [커밋 후 푸시] - [github ID/PW 입력] - [로컬커밋 & github 푸시 완료]

- 이번엔 로컬 커밋과 github의 푸시를 한번에 완료 하였다.






Posted by 해비
2015. 5. 8. 23:19


여기서 셋팅하는 프로그램 목록입니다

- NAS 기능을 위한 것.

samba (네트워크 드라이브)

openVPN (원격에서 네트워크 드라이브 연결용)



- 시스템 설정

iptables (방화벽)

SSH (원격 쉘 접속)

디스크 마운트



배포판은 아무거나 취향에 따라서~~

여기 설정은 데비안 8 기준입니다.

SSH, 기본구성유틸리티를 제외한 모든 체크를 해제 후 설치 진행합니다. (권장)



설치 시 파티션 설정

 /boot

 ext4

 250 MB

 /

 ext4

 29.5 GB

- 32GB MicroSD 에 설치 해서 USB로 부팅하였다.

- /boot 에 250 MB 제외한 모든 용량을 / 에 할당 하였다.

- MicroSD 에 운영체제를 설치하는 이유는 관리의 편의성 때문이다. usbit 로 통째로 이미지 백업을 해두고, 필요시 복원하면 간편하게 관리가 된다. (32GB 기준으로 이미지 백업 하는데 약 50분 소요되는 듯 하다)




스왑공간 생성

$ sudo apt-get install dphys-swapfile

- 설치만 하면 기본 2 GB의 스왑공간이 생성된다.


스왑공간 설정(옵션)

$ sudo vim /etc/dphys-swapfile

CONF_MAXSWAP=100

- 주석을 해제하고 원하는 용량을 지정할 수도 있다. (단위 MB)




쉘 프롬프트 색상 설정

$ cd ~

$ vim .bashrc

force_color_prompt=yes

- 주석처리 되어있다면 풀어준다.

- 저장 후 로그아웃 했다가 다시 로그인 한다.




ll 명령어 사용(ls -l)

$ sudo vim /etc/profile

alias ll='ls $LS_OPTIONS -l'

- 일일이 ls -l 치는거 귀찮다. 그냥 ll 입력을 위해 설정한다.




SSH 설치 및 설정

$ sudo apt-get install ssh

$ sudo vim /etc/ssh/sshd_config

Port 22

PermitRootLogin no

- SSH 접속포트 설정

- Root 계정 로그인 금지




방화벽 설정

$ vim iptables

iptables -P INPUT ACCEPT
iptables -F


iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP


# Allow any connection from this host.
iptables -A INPUT -i lo -j ACCEPT

# Allow all broadcast traffic.
iptables -A INPUT -m pkttype --pkt-type broadcast -j ACCEPT

# Avahi
iptables -A INPUT -m udp -p udp --dport 5353 -j ACCEPT



# SSH
iptables -A INPUT -m tcp -p tcp --dport 22 -j ACCEPT

# SAMBA
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 137:139 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 137:139 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

# OpenVPN
iptables -A INPUT -m udp -p udp --dport 1194 -j ACCEPT



iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
iptables -P INPUT DROP


iptables -P OUTPUT ACCEPT


iptables -nL


iptables -t nat -F
#iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -nL


방화벽 설정 스크립트 파일 생성 및 적용

$chmod 700 iptables
$sudo ./iptables

현재 방화벽 설정을 담은 파일 생성 및 /etc/ 폴더 아래에 복사
$sudo iptables-save > iptables.conf
$sudo mv iptables.conf /etc/

부팅시 지금 설정한 규칙이 유지되도록 설정
$sudo vim /etc/network/interfaces

pre-up iptables-restore < /etc/iptables.conf

- 부팅시 iptables 규칙 자동 재적용 설정.




장치마운트

마운트 할 경로 생성

$ sudo mkdir /mnt/hdd1


장치의 UUID 확인

$ sudo blkid


장치의 UUID와 현재 파일시스템을 설정.

$ sudo vim /etc/fstab

UUID=장치의UUID       /mnt/hdd1       ext4      defaults        0        0 


장치 마운트

$ sudo mount -a

- /etc/fstab 설정이 잘못된 경우 부팅시 문제가 되므로 꼭 마운트 하여 테스트 해 보도록 한다.




Samba 설치 및 설정

$ sudo apt-get install samba

$ sudo apt-get install samba-common-bin 


사용자 추가

먼저 시스템 사용자를 추가하고, samba 유저에 추가를 한다.

$ sudo useradd net1

$ sudo useradd netr

$ sudo smbpasswd -a net1

$ sudo smbpasswd -a netr

- 기존 samba 사용자 패스워드 변경 시 -a 옵션(samba사용자 추가)을 제거 한다.


$ sudo vim /etc/samba/smb.conf

workgroup = WORKGROUP

dos charset = CP949

display charset = UTF8

unix charset = UTF8



[nas_rw]

path = /mnt/hdd1/nas

writable = yes

valid users = net1


[nas_r]

path = /mnt/hdd1/nas

writable = no

guest = yes

- smb.conf 는 기존 내용을 전부 지우고 이 내용으로 대체 한다.

- 동일 경로를 공유명칭 2개 (nas_rw, nas_r) 로 권한을 달리 하여 공유 하고 있다.

- nas_rw 는 쓰기권한이 주어졌고, nas_r 은 쓰기가 허용되지 않는다.

- net1 로 로그인 하면 nas_rw, nas_r 둘 다 접근이 가능하며, net1을 제외한 smbuserpasswd 에 등록된 모든 계정에 대해 nas_r 에만 접근이 가능하다.




OpenVPN 설정

- 이 블로그의 OpenVPN 설치 항목을 참고... (너무 길다 -_-)






넉넉한 메모리는 파일 복사시 버퍼로 활용되기도 합니다.

- 넉넉한 용량의 메모리는 파일 복사시 기가비트 랜의 빠른 속도를 감당하지 못하는 느린 5400 rpm하드디스크의 속도를 일정부분 커버 해 줍니다.









Posted by 해비
2015. 5. 3. 08:42



압축(zip)

 tar cvzf file.tar.gz --exclude=file.tar.gz .

- 마지막의 .은 현재 폴더를 의미

- --exclude는 여러개 지정가능( --exclude=file1 --exclude=file2 ... )



내용확인

 tar tvf file.tar.gz



압축해제

 tar xvf file.tar.gz -C /etc/test



압축(bzip)

 tar cvpjf ssltools.tar.bz2 ssl/ 



해제

 tar xvpjf ssltools.tar.bz2

- 현재 폴더 하단의 ssl 폴더를 통째로 압축합니다.

- 해제시 하단에 폴더가 생기고 안에 풀립니다.

- tar로 파일을 묶고, bzip 으로 압축합니다.



tar --help 내용 중 일부

 -c, --create               create a new archive

 -t, --list                 list the contents of an archive

 -v, --verbose              verbosely list files processed

 -z, --gzip, --gunzip, --ungzip   filter the archive through gzip

 -f, --file=ARCHIVE         use archive file or device ARCHIVE


 --exclude=PATTERN      exclude files, given as a PATTERN

 -C, --directory=DIR        change to directory DIR




Posted by 해비
2015. 4. 29. 00:58




민트데비안 콘솔모드 부팅설정


GRUB 수정

sudo vi /etc/default/grub

1

2

3

4

#GRUB_CMDLINE_LinUX_DEFAULT="quiet" 

GRUB_CMDLINE_LinUX_DEFAULT="text"


GRUB_TERMINAL=console

- 해당 항목 찾아서 변경한다.


1. GRUB_CMDLINE_LinUX_DEFAULT="quiet" 부분을 찾아서 앞에 '#' 으로 주석처리.

   (="quiet" 뒤에 무언가 더 들어있는 경우도 있다. 무시하자.)


2. GRUB_CMDLINE_LinUX_DEFAULT="text" 추가

   (GRUB_CMDLINE_LinUX_DEFAULT="" 으로 되어있는 경우, 안에 text 만 추가)


3. GRUB_TERMINAL=console 추가

   (주석으로 막혀 있는 경우, 주석 해제만 한다.)




적용...?

sudo update-grub 




재부팅 해서 확인 하면 끝~!






[참고]

http://ask.xmodulo.com/boot-into-command-line-ubuntu-debian.html

http://linuxmint.kr/8676



P.S.

- 한국 민트 리눅스 사용자 모임에 질문글 올렸다가 bagjunggyu님의 답변을 받아 적용 후 정리하였습니다. bagjunggyu님 감사합니다.



Posted by 해비
2015. 4. 28. 00:17



삼바(SAMBA) 서버설치

 sudo apt-get install samba

 sudo apt-get install smbclient

 sudo apt-get install samba-common-bin 




설정1 - 공유폴더

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

sudo vim /etc/samba/smb.conf


 /etc/samba/smb.conf

1

2

3

4

5

6

7

8

9

10

11

12

13

14

workgroup = WORKGROUP

dos charset = CP949

display charset = UTF8

unix charset = UTF8


[nas_rw]

path = /usr/hdd1/nas

writable = yes

valid users = net1


[nas_r]

path = /usr/hdd1/nas

writable = no

guest = yes

- 기본 smb.conf 내용을 모두 다 지우고 이 내용만으로 채웠는데 잘 되더라능~

- 갠히 기존파일에 수정만 했다가 안된다고 씩씩댔었다. (그냥 참고만...)

- 윈도우 에서 네트워크 드라이브 연결 시 폴더 2개가 노출된다. (nas_rw, nas_r)

- nas_rw 에 연결하기 위해서는 아이디가 net1 이어야 한다. 쓰기권한 yes 이므로 읽고, 쓰고 다 된다.

- nas_r 에 연결하기 위해서는 smb에 등록된 어떤 아이디든 가능하다. 쓰기권한 no 이므로 읽기만 된다.

노출될 폴더명, 사용자 아이디는 임의로 설정하자.




설정2 - 사용자 추가

sudo useradd net1

sudo useradd netr


sudo passwd -d net1

sudo passwd -d netr


sudo smbpasswd -a net1

sudo smbpasswd -a netr

- 사용자 추가

- 패스워드 제거(SSH 접속을 원천적으로 막음)

- 삼바 사용자 추가

  - 리눅스에 존재하는 사용자명과 동일한 사용자명으로 추가, 패스워드는 동일하지 않아도 된다

  - a 옵션 은 사용자 추가를 의미 하므로, 패스워드 변경시 -a 옵션 없이 입력한다.




포트개방

sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 137:139 -j ACCEPT

sudo iptables -A INPUT -m state --state NEW -m udp -p udp --dport 137:139 -j ACCEPT

sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT




서비스시작

sudo /etc/init.d/samba restart






Posted by 해비
2015. 4. 23. 23:13


라즈베리파이2를 구입 후 NAS 구성했더니 속도가 영 안습이라...


결국 x86 초 저전력 보드를 구입하기에 이르게 되었습니다.



GIGABYTE J1900N-D3V 입니다.

메인보드에 납땜된 CPU가 소모전력이 무려 10 W 입니다. --> 옆에 파워는 안정(?)적 전력공급을 위한 500 W 짜리 -ㅅ-

케이스가 없으니 일단은 이렇게 ...




보드 스펙상으로는 8 GB 까지 라고 되어있는데...

16384 MB (16 GB) 인식 이 잘 됩니다. 그것도 아주 자~알...

DDR3L 8GB x 2 개 로 구성했습니다.


바이오스 셋업화면 들어가야 하는데 생판 처음 보는 EFI Shell 이라는 녀석 때문에 고생좀 했네요... 그냥 exit 치고 엔터 !!

부트 시퀀스로 넘어가기 전에 재빨리 Del 키 눌러야 하는건 뽀나스~


이건 제 키보드가 별나서 그런건지 몰라도...

(키패드 Del 키는 안먹고, 방향키 위에 6개 모여있는 거기 Delete 눌러야 진입되더군요... 참내..-_-);




윈도우에서도 이렇게... 16기가 인식에 문제 없습니다.

(15.9GB 라고 된거는 내장그래픽이 일부 용량을 뺏어가서 저런 겁니다. 아마도요...)




각각 항목별 점수 입니다.




USB 3.0 외장하드로 부터의 전송속도 입니다.

USB 3.0 역시 인텔 컨트롤러가 진리 입니다 ㅠㅠ


AMD970 보드에 내장된 USB는 E머시기 회사의 칩셋이었던거 같은데, 이 속도를 보니 그동안 가짜 USB 3.0 을 써왔다는 생각만 드네요.




이어지는 동영상 재생 테스트



위 (노가속), 아래(가속) 입니다.

CPU사용률이 거의 절반가량 내려가는 Magic이~~

완젼 똑같은 부분 잡기는 힘드네요... -_-




마지막 게임 테스트~


인기 절정의 리그오브레전드 입니다.

기본옵션이구요, 별도 옵션 건드리지 않았습니다.

음... 뭐 그냥 돌아는 가네.. 정도 로 절대 플레이할 수준이 못됩니다.

이거로 게임 할 생각은 그냥 접어두세요~




기본적인 테스트는 다 해봤으니...

이제 리눅스 깔아서 서버 세팅을 해야 겠군요~



공유기를 허브로 돌리고 이녀석을 공유기로 써볼까 싶기도 하네요 (으흐흐... 마침 이 보드에 듀얼 기가비트 랜이 장착되어있음~)

공유기의 용량은 동시 연결 수 입니다. XXX MB 의 대용량(?) 메모리로 XXX,XXX 개의 커넥션을 제공 한다고...

(모 회사의 상품설명란)


그렇다면 인텔 x86 셀러론 쿼드코어에 16 GB의 울트라 하이퍼 초 특대용량이니까 처리 가능한 동시 연결수는 ...? ^^






Posted by 해비