2022년 1월 24일 월요일

헤더와 데이터를 하나의 패킷으로 만드는 코드(Code to make header and data into one packet(C#))

 

헤더와 데이터를 하나의 패킷으로 만드는 코드


BitConverter.GetBytes 메서드는 데이터를 바이트 배열로 변환해주는 역할을 수행합니다.

short자료형으로 되어 있는 헤더를 바이트로 변환하여 byte header[] 배열에 채워 넣습니다.

다음으로 문자열 데이터도 바이트로 변환하여 넣는데, 인코딩 방식은 utf-8을 사용했습니다.

그리고 byte[] packet = new byte[1024] 라는 패킷 버퍼를 만들어서 

"[헤더][데이터]" 의 구조로 패킷을 구성합니다.

Array.Copy메서드는 원본 배열 데이터를 다른 곳으로 복사할 때 사용하는 메서드입니다.



short size = 5;
string data = "Hello";

byte[] header = BitConverter.GetBytes(size);//using System;
byte[] body = Encoding.UTF8.GetBytes(data); // using System.Text;

byte[] packet = new byte[1024];

Array.Copy(header,0,packet,0,header.Length);
Array.Copy(body,0,packet,header.Length,body.Length);


결과

header
[0]5
[1]0

body
[0]72
[1]101
[2]108
[3]108
[4]111

packet
[0]5
[1]0
[2]72
[3]101
[4]108
[5]108
[6]111
[7]
[8]
...
[1023]0


header는 short 자료형이므로 2바이트를 차지하며, 내용은 5라는 정수값입니다

body는 string을 바이트로 변환한 데이터이며 "Hello"에 해당하는 유니코드 문자열 코드값이 들어가 있습니다.

utf-8로 인코딩하였으므로 크기는 5바이트만큼 차지합니다.


packet은 header와body를 합쳐놓은 것이기 때문에 [header][data] 가 차례대로 들어가게됩니다.

뒤에0으로 채워진 데이터는 비어있는 공간입니다.

실제로 원격지에 전송할 때는, 이 빈 공간을 제외한 "헤더+데이터"의 크기만큼만 소켓버퍼로 전송해야 합니다.


2021년 10월 22일 금요일

파이썬 코드 실행시간

 import time

start = time.time() # 시작 시간 저장
# 작업 코드
print("time :", time.time() - start) # 현재시각 - 시작시간 = 실행 시간

2021년 10월 18일 월요일

pypy install numpy,pandas

아나콘다 프롬프트 창에서

pypy3 -m pip install numpy 

하면됨

는 안됨

https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

해당 사이트에서

numpy

numpy-1.21.2+mkl-pp37-pypy37_pp73-win_amd64.whl

을 받아서 설치하면 됨!!

pip install C:\numpy-1.21.2+mkl-pp37-pypy37_pp73-win_amd64.whl

pandas는 

pandas-1.3.4-pp37-pypy37_pp73-win_amd64.whl

을 설치하면됨!!

ta-lib

TA_Lib-0.4.21-pp37-pypy37_pp73-win_amd64.whl

파이썬 재실행 코드

 Os.execl(sys.executable, os.path.abspath(__file__), *sys.argv)

재실행 코드

2021년 10월 16일 토요일

아나콘다 가상환경 설정

 가상환경 목록 보기


conda info --envs 

또는

conda env list


pypy설치


conda activate <newenviromnentname>

install pypy to the environment


conda install -c conda-forge pypy3.6 
1. 가상환경 조회하기
conda info --envs

가상환경 리스트가 나오고 * (ASTERISK) 가 나오는 곳이 현재 파이썬 환경을 나타낸다

2. 가상환경 변경하기
activate 가상환경명칭

envscraping 이라는 가상환경으로 파이썬 환경을 변경한다

* 표시가 envscraping 이라는 환경으로 변경되어서 표시되고 있음

3. 가상환경 만들기
conda create --name 가상환경명칭 python=3

가상환경을 새로 만들기 python=3 는 파이썬3 환경으로 만드는 옵션임

4. 가상환경 해제하기
deactivate 가상환경명칭
5. 가상환경 지우기
conda remove 가상환경명칭
6. 만들어 놓은 가상환경을 복사하기
conda env export -n 가상환경명칭 > environment.yml

가상환경의 환경설정 상태를 environment.yml 파일로 만들어준다

7. 환경파일로 가상환경을 생성하기
conda env create -f environment.yml



2021년 8월 27일 금요일

주식 벡테스트[2021년8월23일~8월28]


상세 그래프를 보려면 html 파일확인 에서 확인할수있습니다.

------------------------------23일

파일경로 :2021-08-23Stock_Record


026890 손익가:-53470

035080 손익가:7233.0

102460 손익가:153864

220630 손익가:-13043

241520 손익가:-21484

323410 손익가:85669

(94) 총손익!!!:158769.0












------------------------------24일

파일경로 :2021-08-24Stock_Record


005880 손익가:4772

006910 손익가:3048

009270 손익가:2355

014190 손익가:3109

021080 손익가:6372.0

027830 손익가:3591

033160 손익가:19289.0

035080 손익가:8620

037270 손익가:11021

047820 손익가:1174.0

064260 손익가:5479

089140 손익가:-16355

089890 손익가:9157.0

148150 손익가:23882

205470 손익가:15872

(85) 총손익!!!:101386.0

















------------------------------25일

파일경로 :2021-08-25Stock_Record


025750 손익가:1512

035080 손익가:9991.0

052220 손익가:1725.0

064260 손익가:4371.0

064550 손익가:151479.0

148150 손익가:11013.0

950130 손익가:25340.0

(95) 총손익!!!:205431.0










------------------------------26일

파일경로 :2021-08-26Stock_Record


002720 손익가:6643

015860 손익가:7236

(83) 총손익!!!:13879





------------------------------27일

파일경로 :2021-08-27Stock_Record


009520 손익가:10925.0

041930 손익가:20760

104480 손익가:13339.0

(100) 총손익!!!:45024.0






------------------------------28일

100개의 종목으로 28일 하루거래 테스트


 009520 손익가:10925.0

041930 손익가:20760

104480 손익가:13339.0

(100) 총손익!!!:45024.0







ananconda python ta-lib install(py37_32)

 C:\Users\사용자\anaconda3 에다가


TA_Lib-0.4.21-cp37-cp37m-win32.whl 다운받아서


아나콘다 프롬프트 키고 해당 경로에서 설치하면 된다!


pip install TA_Lib-0.4.21-cp37-cp37m-win32.whl





git rejected error(feat. cherry-pick)

 문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...