현재 진행사항

  1. 호가 개념 도입 (10단계 호가 정보 제공 예정)
  2. 주문 및 체결 이벤트 발생시, 소켓 통신을 이용하여 해당 정보 실시간 반영
    (웹페이지를 새로고침하지 않아도 각 정보가 실시간으로 반영)
  3. RESTful API 방식을 이용한 매수 / 매도 기능 완료

지난 2012년 7월 즈음, PHP를 이용하여 가상 주식게임을 만들었었다. 처음에는 혼자 가지고 놀 생각이었는데 페북에 URL 한 번 공개하자 주위 사람 몇 명이 같이 시작하더니 나중에는 약 100여명(2015년 기준)이 이용하는 게임 사이트가 되어있었다. 수많은 버그와 에러가 발생했었으면 최대한 빨리 디버깅 & 패치 하기 위해 많은 시간을 할애 했었으며 어떻게 하면 좀 더 쾌적하게 할 수 있을까 늘 고민했었다. (실제로 당시에 DB 공부가 꽤 됐던 것 같다. ㅡ,.ㅡ;)

그러던 중 2015년 말쯤 웹서버가 불안불안 하더니 HDD에 물리적 배드섹터를 내면서 문제가 걷잡을 수 없어졌다. 결국 Raid 0으로 돌아가던(ㄷㄷㄷㄷㄷㄷ) 웹서버 HDD는 장렬히 사망했고 그 안의 모든 자료가 유실되었다. (백업과 소스관리의 중요성 몸소 체험 T_T)

그 후 작년(2016년) 중후반부터 평소 관심있던 Python 을 공부하기 시작했고 Flask, Django 와 같은 프레임웍을 다뤄보며 신기해했다. 이렇게 편할 수가! 그러던 어느 날 문득 이런 생각이 들었다.

 

‘아예 밑바닥부터 다시 한 번 만들어볼까…’

 

몇년간 다뤄왔던 PHP로 만들 당시 사이트 개발/튜닝 및 최적화까지 약 1년에서 1년반정도 걸렸던 것을 생각하면 그보다 더 걸릴 것 같다.

그래도 하나하나 기초부터 다시 만들어볼까 한다. 좀 더 리얼하게!

2cpu NAS 게시판에 올렸던 내용 복&붙…ㄷㄷㄷ (http://2cpu.co.kr/nas/13344)

 


 

이번에 MSI Cubi N 기기가 하나 남아서 SSD 128G 장착하여 헤놀로지 올리고 NAS로 잘 사용하고 있었습니다.

하지만 어쩔 수 없는 용량의 압박으로 곧 1TB USB 외장하드를 붙이게 되었고

웬만한 자료(다운로드, Photo Station, Video 등)들은 모두 이 외장하드에 저장하고 싶었습니다.

처음 도전한 mount –bind 방식은 리눅스의 ln -s 와 같이 간결하게 해결해 줄 수 있지만

약간 좀 꺼름칙한 느낌을 지울 수 없습니다. 게다가 중간에 연결이 끊기는 상황도 발생되더라구요. (ㄷㄷㄷㄷㄷㄷㄷ 아직까지 미스테리 입니다.)

안되겠다 싶어 USB 외장하드를 내장 볼륨으로 인식시키는 방법을 구글링하기 시작했습니다.

그러던 중 synoinfo.conf 파일을 약간 건드리면 인식된다는 글을 발견하고 수많은 삽질을 했습니다.
1. /etc/synoinfo.conf
2. /etc.defaults/synoinfo.conf
* 2가지 모두 수정

무한 삽질 끝에 성공하였고

혹시 저와 같이 외장하드를 내장으로 인식시키고 싶으신 분들이 계실지도 모른다는 생각에

좀 더 편리하게 삽질(..)을 하실 수 있도록 웹 페이지를 제작하였습니다.

http://zective.com/code/xpenology/

 

1) usbportcfg
2) esataportcfg
3) internalportcfg

synoinfo.conf 파일의 위 3가지 헥사 값을 편리하게 알아내어 수정할 수 있습니다.

 

[프롤로그]

이미 많은 분들이 아시겠지만

USB / eSATA / 내장장치의 인식이라고 해야하려나요..

이걸 헥사값으로 처리하고 있습니다.

저의 경우엔 다음과 같았습니다.

usbportcfg=”0x300000″

esataportcfg=”0xff000″

internalportcfg=”0xfff”

왜인지는 모르겠지만 MSI Cubi N 스펙에 eSATA 포트가 8개까지 사용할 수 있도록 설정되어 있었고

내장은 12개의 포트가 사용할 수 있었습니다. (아마도 기본이려나요..?)

USB 관련은 당시 제가 꽂아놨던 외장 2개가 바르게 인식되어 0x300000 값으로 되어있었습니다.

여기서 0x300000 헥사(16진법)값은 이진법(바이너리)으로 ’11 0000 0000 0000 0000 0000′(총 22자리) 으로 나타낼 수 있습니다.

일단 0은 모두 무시하시고 ‘1’이 2개인데 현재 구동중인 헤놀로지에서 인식/구동중인 USB 포트라고 생각되어집니다. ㄷㄷㄷㄷㄷ

일반적인 글은 왼쪽에서 오른쪽으로 읽혀지지만

헤놀로지의 이 설정(이진법) 값은 오른쪽에서 왼쪽으로 우선순위가 결정된다고 보여집니다.

1 1 0000 0000
2번째 1번째
USB USB

예를 들어 1번째 USB 외장하드를 내장으로 인식시키고 싶다면

먼저 USB로 인식되지 않도록 해당 포트의 값을 꺼야(0으로 수정)합니다.

그러므로 위 이진법 값을 다음과 같이 수정하시면 됩니다.

’10 0000 0000 0000 0000 0000′ = 11 -> 10 으로 수정

그 후 내장으로 인식될 수 있도록 해당 위치의 값을 1로 변경해 주셔야 합니다.

앞서 말씀드린대로 제 경우의 internalportcfg 값은 ‘0xfff’ 였습니다.

이 헥사값은 이진법으로 나타내면 ‘1111 1111 1111′ 인데.. 위 USB 헥사값은 총 22자리 였는데 이번엔 12자리입니다.

일단 눈으로 보기 편하도록 usbportcfg 이진법 기준으로 모두 22자리를 맞춰줍니다. (빈자리는 0으로 채우면 됩니다.)

따라서 최종적으로 internalportcfg 값은 다음과 같습니다.

’00 0000 0000 1111 1111 1111’

수정한 usbportcfg 이진법 값에서 좌측 2번째 값을 1에서 0으로 변경했었습니다.

이제 이것에 맞춰 internalportcfg 이진법 값의 좌측 2번 값을 0에서 1로 변경하시면 됩니다.

이제 마지막 단계입니다.

synoinfo.conf 파일(2개 – /etc/ && /etc.defaults/)의 각종 *portcfg 값은 헥사값이었습니다.

변경된 이진법 값을 헥사로 변경하시고 저장 후 재시동 하시면 됩니다.

제 경우, 다음과 같이 수정되었습니다. (esataportcfg 값은 변경사항 X)

1. usbportcfg
기존) 0x300000
수정) 0x200000

2. internalportcfg
기존) 0xfff
수정) 0x100fff

업무중에 눈치봐가며 작성한터라 내용이 뒤죽박죽 산으로 가는 거 같네요 ㄷㄷㄷㄷ

부디 편리하게 사용해주시길 바랍니다..ㄷㄷㄷ

인터넷 뱅킹 할 때 이체금액 등을 마우스로 버튼 클릭하여 입력(&추가)하는 방식이 종종 있다.

따로 웹페이지 제작하는건 귀찮아서 위대한(ㄷㄷ) jsfiddle.net 에 샘플을 만들었다.
https://jsfiddle.net/jo1dbf1h/

 

  • jQuery 사용