2023의 게시물 표시

visual studio code 파이썬 가상환경 intellisense 적용기

이미지
 공식 참고 :  Using Python Environments in Visual Studio Code 확장 프로그램 설치 : python, pylance (microsoft 마크 있는걸로) 공식문서에 따르면 가상환경 실행하면 인식해서 workspace 내에 있는 interpreter를 자동 선택한다고 하는데 folder로 오픈해서 사용하는 경우도 있고, 종종 꼬이는거 같아서 수동으로 하는 법을 정리함 자동 인식해서 workspace로 만들면 편하지만 실수로 취소할 수도 있다 인터프리터 제대로 설정하면 가상환경내에서도 intellisence 정상 동작 # 왠만한 명령어(옵션 포함) 궁금하면 팔레트(ctrl + shift + P) 에서 검색 # interpreter 선택 가능

윈도우 cmd / powershell 환경변수 설정

이미지
 환경변수의 스코프 - Machine(System) Scope : 시스템 변수   윈도우 레지스트리(\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment)에 저장 - User Scope : 사용자변수   윈도우 레지스트리(\HKEY_CURRENT_USER\Environment)에 저장 - Session Scope : 해당 터미널에서만 임시로 환경변수로 인식    **** Session Scope는 등록 후 바로 조회, 사용 가능          User Scope, Machine Scope는 새 터미널(새 프로세스) 띄워야 사용 가능 <cmd.exe> 환경변수 확인 명령어 echo %PATH% 환경변수 추가/변경 o set : Session Scope 설정 o setx : Machine Scope, User Scope 설정 setx MY_ENV_VAR "hello" -> User Scope setx MY_ENV_VAR "hello" /m -> Machine Scope <powershell> 환경변수 확인 명령어 $Env:PATH 환경변수 추가/변경 o 변수 사용 : Session Scope 설정   $Env:MY_ENV_VAR = "hello"   $Env:path += ";C:\" o set : 동작 안함 o setx : Machine Scope, User Scope 설정 setx MY_ENV_VAR "hello" -> User Scope setx MY_ENV_VAR "hello" /m -> Machine Scope o 닷넷 패키지 사용   [Environmet]:: SetEnvironmentVariable( 'Foo' , ...

윈도우에서 파이썬 virtualenv , venv 실행 (파이썬 3.3 이상)

1. 관리자권한으로 powershell 실행 2. 가상환경 생성할 폴더로 이동 PS D:\> cd D:\downloads\system_design\python\src 3. 가상환경 생성 명령어 실행 PS D:\downloads\system_design\python\src> python -m venv venv 현재 경로에 venv 폴더 (이 폴더 안에 가상환경 실행을 위한 파일들까지 생성됨) 4. 보안 설정 해제 PS D:\downloads\system_design\python\src> Set-ExecutionPolicy Unrestricted 실행 규칙 변경 실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호합니다. 실행 정책을 변경하면 about_Execution_Policies 도움말 항목(https://go.microsoft.com/fwlink/?LinkID=135170)에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을 변경하시겠습니까? [Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): Y 5. 스크립트 실행 PS D:\downloads\system_design\python\src> .\venv\Scripts\Activate.ps1 실행시 커맨드 입력창 앞에 (venv)  표시됨

쿠버네티스와 미니큐브

이미지
 1. 쿠버네티스란? 점차 운영 환경이 물리적 서버1대 -> 버추얼머신(OS포함) -> 컨테이너 로 변해가고 큰 규모의 시스템에서 운영 자동화 필요성이 생겼다. 컨테이너 운영 환경의 관리 & 자동화를 위해서 만든 시스템 컨테이너와의 연관성 ? 쿠버네티스에서는 추상화된 파드라는 개념을 쓴다. 파드의 구현으로써 컨테이너를 사용하는것. 2. 쿠버네티스 아키텍처(구성) 클러스터 - 마스터 노드(=물리적 서버1대) --- API 서버 프로세스 : 워커 노드에 명령을 전달, 개발한 컨테이너 배포를 위한 서버 --- 스케쥴러 프로세스 : 파드 생성 계획을 담당, CPU가 덜 바쁜 워커 노드 혹은 접속이 적은 워커 노드 혹은 번갈아 등등 --- 컨트롤러 프로세스 : 클러스터 상태 변화를 탐지(파드 충돌 등등) --- etcd 프로세스 : 클러스터 변화, 리소스 정보 등등이 저장 & 업데이트 됨    (마스터 노드도 스케일업이 가능하기 떄문에 이런 저장 정보는 별도의 DB에 넣어야할 필요가 있음) - 워커 노드(=물리적 서버1대) --- 컨테이너 런타임 프로세스 : 도커면 도커 런타임, 그 외 컨테이너는 해당 컨테이너 런타임 --- 큐브렛 프로세스 : 쿠버네티스 파드(추상) 와 컨테이너(실제)를 이어주는 어댑터. 노드와 통신하며 파드 생성(=컨테이너 생성)을 담당 3. minikube 란? 출처 : https://www.devopsschool.com/blog/what-is-minikube/ 클러스터를 구성하려면 일반적으로 물리서버가 여럿 필요하고, 자원도 많이 필요함 minikube는 가벼운 테스트 정도 목적으로 클러스터를 1개의 노드에서 구성한 것. 컨테이너 ---- 마스터&워커 합친 1노드 (=프로세스를 다 갖고 있음) ---- 가상환경(virtual box, hypervisor) ---- 내 PC

asp.net 프로젝트 도커화 분석

1. asp.net 이란? 웹 개발을 위한 프레임워크   *프레임워크에서 요구하는대로 경로, 설정파일, 파일확장자 등 규칙을 맞춰야 한다. 총 3가지 프레임워크 형태를 제공하는데 - Web Forms :    난이도 중~상   윈도우폼 .NET 개발 경험자에게 유리   HTML을 캡슐화한 컨트롤을 제공하기 때문에 빠른 개발이 가능 - MVC :    난이도 중~상   ruby on rails, .NET 개발 경험자에게 유리   HTML이랑 코드가 분리된 프레임워크 양식   single page application 개발에 적합 - Web Pages :   난이도 하~중   ASP, PHP 개발 경험자에게 유리   HTML이랑 코드를 한 파일에 쓰는 프레임워크 양식  참조 : https://learn.microsoft.com/ko-kr/aspnet/overview 2. asp.net 과 asp.net core 차이 asp.net 4.x 는 윈도우용 서버 asp.net core 는 크로스플랫폼 서버로 1에서 설명한 프레임 워크중 Web Forms, Web Pages 형태의 프레임워크는 지원하지 않음 참조 : https://learn.microsoft.com/ko-kr/aspnet/core/fundamentals/choose-aspnet-framework?view=aspnetcore-7.0 참조 : https://learn.microsoft.com/ko-kr/dotnet/architecture/porting-existing-aspnet-apps/migrate-web-forms 3. 도커로 옮길 프로젝트 분석 - asp.net or asp.net core ? = asp.net, 윈도우 IIS용 - 빌드 버전 : .net framework 4.6.2 - 사용한 언어 : typescript - 웹서버 설정  web.conf...

도커 mongo db, mongo db express 연동하기(볼륨생성, 네트워크 구성)

이미지
 1. 도커 구성도 정확한 관계는 애매하긴한데 대충 이렇다. 2. 사용 컨테이너 MongoDB : DB 공식 페이지 참고 : https://hub.docker.com/_/mongo-express Mongo Express :  웹 MongoDB 관리자 인터페이스 공식 페이지 참고 : https://hub.docker.com/_/mongo 3. 컨테이너간 커뮤니케이션 컨테이너는 서로 격리된 환경이기 때문에  - 네트워킹 : 서비스가 listening 중인 포트를 통해 통신 프로토콜 사용 - 공유디스크 : 호스트의 공유 디스크를 통해 두 가지 방법으로 커뮤니케이션할 수 있다. 4. 도커 네트워크 설정 컨테이너간 네트워킹을 위해선 도커내부에 가상 네트워크를 설치해준다. PS C:\Users> docker network create -d bridge mongo-net PS C:\Users> docker network ls NETWORK ID     NAME        DRIVER    SCOPE c162ff4844f3   mongo-net   bridge    local 5. 데이터 지속성을 위한 volume 생성  요약 : 윈도우 OS인 경우, 몽고db 이미지(리눅스기반)랑 파일시스템이 안 맞음  - 권장 : docker volume 을 생성  - 대안 : windows-based 몽고DB 도커 이미지를 다운로드   volume 생성 명령어 : docker volume create mongo-vol WARNING (Windows & OS X) : When running the Linux-based MongoDB images on Windows and OS X, the file systems used to share between the host system...

깃허브 소스코드로 로컬에서 웹서비스 구동하기

이미지
대상 : [가와마타 아키라의 프로그래밍 작동원리] 책에서 실습용으로 제공하는 어플리케이션 깃허브 소스 : https://github.com/autumn009/ee8080 웹서버 주소 : http://ee8080.azurewebsites.net/ 목적 : 개발자가 마이크로소프트사에서 무료(일정 용량까지만)로 제공하는 azurewebsites.net 에 publish한 거 같다. 서버 닫으면 공부하기 어려울까봐 소스도 공개된김에 로컬 웹서버에 올려보기로 함 개발환경 동기화 :  소스 파일들을 보면 sln(비주얼스튜디오 솔루션), csproj (비주얼 스튜디오 설정 파일), aspx(asp.net 용 소스) 확장자들이 있음  - visual studio  - .net framework 4.6 개발자 킷 설치 테스트 : IIS Express 실행으로 테스트 (참고, 다른 프로젝트가 메인으로 로드되어 IIS Express가 활성화 안되어있을 수 있음 -> 언로드 해줄것) 게시(publish) : VS에서 웹 서비스를 위한 폴더 자체를 만드려면 게시를 하면 된다. 로컬 웹서버 (IIS) 설정  - aspx => asp.net 실행을 위한 iis 기능 설치 - 웹 사이트 추가 실행경로는 게시로 생성한 폴더 지정 - 웹 사이트 들어갔을 때 권한 때문에 발생할 수 있는 문제 1. IIS Error 500.19 0x80070005 : 폴더에 IIS_IUSRS 가 접근권한이 없음 2. IIS Error  401.3  : 폴더에 익명사용자의 접근 권한이 없음 인증 설정에서 익명 인증을 할 수 있는 계정 확인 웹서비스용 폴더 권한설정 웹서비스 정상 동작

프로그램 실행 과정(소스코드부터 CPU에서 코드 실행하기 까지)

이미지
소스코드에서 실행파일로 변환 과정 - 소스파일은 컴파일러를 통해 오브젝트 코드(기계어) 파일로 바뀐다. - 오브젝트 파일은 몇 개의 영역으로 나뉜다. .text 영역(section) 에는 오브젝트 코드가 들어있고, .rdata 영역은 read-only 데이터, .data 영역은 mutable 데이터 정보가 들어있다. - 링커는 실행하기 위해 필요한 모든 오브젝트 파일을 종합해 실행파일 (그림에서 a.out, 윈도우에선 exe) 로 만든다. - 링커는 각 unknown심볼들에 대한 정보(참조 주소 등)를 정리한다.  그림 출처 : Link-Time Binary Rewriting Techniques for Program Compaction by BJORN DE SUTTER, BRUNO DE BUS, and KOEN DE BOSSCHERE / Ghent University 실행파일 적재 후 명령어 실행 과정 실행파일은 보조기억장치(DISK) 에서 주기억장치 (RAM)로 적재해야 실행할 수 있다. - 적재는 로더(loader)가 수행한다. - 메모리 적재시 여유공간 확인 후 페이징 기법 등이 사용될 수 있다. - 메모리에 올라간 실행파일은 기계 명령어를 CPU로 보내고 한 줄씩 수행한다. 그림 출처 :  Generating Programs and Linking by Rick Han / University of Colorado

DLL 이해하기

이미지
배경지식   프로그램 실행 과정(소스코드부터 CPU에서 코드 실행하기 까지) (diary1215.blogspot.com) 글 읽을 때 헷갈리지 않게 빌드 과정 및 용어 정리 빌드 과정 =  소스코드(C++,JAVA 등) -> 실행가능한 코드(기계어, 바이트코드, 오브젝트파일) -> 실행파일(exe 등) 라이브러리(library) 라이브러리는 실행가능한 코드 모음 이다. 프로그래밍 모듈화를 도와준다. string의 글자수를 세주는 여러 프로그램에서 유용하게 쓸 수 있는 함수를 만들었다고하자. 글자수를 세는 기능이 필요한 프로그램을 만들때마다 이 함수를 직접 소스코드에 쓰는것은 낭비다. 라이브러리로 만들어 두면, 매번 소스코드에 쓰지 않고도 실행파일을 만들 수 있게 해준다. 1. 기능을 실행가능한 코드(기계어 또는 바이트코드)로 미리 만들어 놓는다.   = 라이브러리 2. 다른 프로그램에서 기능을 사용할 때 라이브러리랑 링크 해서 기능을 사용한다. 링크 시점에 따라서 정적(static) 라이브러리와 동적(dynamic) 라이브러리로 나뉜다. 정적 라이브러리 링크 시점이 실행 파일을 만들 때이다. 실행파일은 기존 프로그램의 실행가능한 코드(기계어/바이트코드)와 라이브러리의 실행가능한 코드를 합쳐서 만든다. 실행파일 = 내 프로그램 + 라이브러리 동적 라이브러리 링크 시점이 런타임이다. 실행파일은 기존 프로그램 의 실행가능한 코드만 가지고 만든다. 라이브러리 코드랑 실행 파일은 관련이 없기 때문에, 라이브러리 업데이트를 하더라도 실행파일을 새로 만들 필요가 없다. 실행파일 = 내 프로그램 *cf) 자바는 JVM 가상환경 특징이 있어서 .jar 이 실행가능한 파일이자 실행파일, 동시에 라이브러리이기도 하다. JVM 가상환경에 필요할 때 로드 되므로 굳이 구분하자면 동적이라고 볼 수 있다. 동적링크라이브러리(dll)이란? 기본 배경 윈도우 운영체제용 라이브러리. 라이브러리이기 때문에 여러 프로그램에서 동시에 사용할 수 있는 코드와 ...

파이썬 패키지 오프라인 설치

이미지
파이썬으로 cx_Oracle이나 seaborn 패키지 기능을 사용할 일이 있었는데, 내부망에는 인터넷은 따로 안되고, pypi 미러 서버도 없어서 패키지를 usb 등을 통해서 설치해야 했다. 인터넷이 되면 굳이 이럴 필요 없이 아래 명령어 한 줄이면 되는데, python -m pip install <패키지명> --upgrade 오프라인으로 하려니 dependencies (먼저 설치되어야하는 패키지) 문제로 너무 오래 걸렸다. 나중에 또 헷갈릴까봐 기록..! 1단계 -> 3단계로 dependencies 오류(대략 A패키지가 없음) 발생시 그 다음 단계 방법을 적용하면 된다. cx_Oracle은 다행히 dependencies 없이 1단계에서 끝났고, seaborn은 dependencis 오류가 발생해서 3단계까지 가서 해결했다. 다운 받을 패키지 확인 오프라인PC 환경 체크 1. OS 종류: windows / linux 2. OS 시스템 : 32비트 운영체제 / 64비트 운영체제 3. 파이썬 버전 확인 명령어  python --version 4. OS, 비트, 파이썬 버전 확인하여 알맞은 버전 찾기: 패키지 버전에 따라 파이썬 2.7까지만 지원한다거나 3 이후부터 지원하는 경우가 있기 때문에 무조건 최신으로 설치하면 안되고 내 파이썬 버전(3.9)을 지원하는지 봐야한다. 이건 패키지 공식 홈페이지나 구글링 통해 알아보면 된다. 1. 패키지 단독 설치 온라인PC pypi.org 접속 후 패키지+버전 검색 source distribution 을 다운받으면 내가 빌드(=내 PC 환경에 맞는 기계어로 번역)를 해줘야해서, 위에서 확인한 <오프라인PC> 환경에 맞는 built distribution 을 다운로드 받으면 된다. 오프라인PC ㅇ 패키지(.whl)설치 명령어 :  pip3 install -t C:/<타겟경로> C:/<파일경로>/cx_Oracle-8.3.0-cp39-cp39-win_amd64...

C++ volatile 설명 & 예시

이미지
설명 C++에서 volatile은 자료형 한정자다. 하드웨어에 의해서 프로그램 내 값이 변할 수 있다는 말로,  인터럽트 핸들링과 같은 다른 비동기 프로세스에서 자료의 메모리에 접근할 수 있다. 또한, 어디서 쓰일지 모르기 때문에 컴파일러가 해당 객체 최적화를 하지않는다. (일부러 피할 때 쓸 수 있다) 예시 const 는 상수니까 최적화를 해서 i == 100 인지 루프에서 비교하지 않게끔 최적화 됨. while(true) 처럼 최적화 const지만 volatile이 있으므로 최적화 하지 않고 루프마다 i == 100인지 비교함

Git 레파지토리 생성 및 C# 프로젝트 생성(데이터분석-2편)

이미지
소스 버전관리는 왜? 소스 버전 관리(SVM)는 기본적으로 팀으로서 작업하기 위한 이유도 있고, 안전하게 소스를 작성할 수 있게 도와준다. 혼자 만드는데 처음부터 버전관리를 시작하는 이유는, IDE를 쓰면 불편하거나 어려운 소스 관리를 알아서 해주기 때문에 편하지만 무슨 일이 내부에서 일어난건지 알기가 어렵다. 그래서 프로젝트 초반부터 빈 레파지토리를 만들고 작업때마다, 뒤에서 뭐가 바뀌는지 추적하기 위해 Git 을 쓰려고 한다. github가 대세기도 하고 편리해서 github desktop을 쓰려고 한다. 깃허브 데스크탑(GitHub Desktop) 설치 깃허브 회원가입이 되어있어야 한다. 회원가입 : https://github.com 다운로드 :  https://desktop.github.com/ 다운로드 후 설치   새 깃허브 레파지토리 만들기 로그인 파일-옵션 accounts-sign in 브라우저로 로그인 진행할 수 있다. 로컬 레파지토리 생성 웹에서 만들고 로컬PC에 클론해와도 되고, 로컬PC에 만들고 웹에다가 publish 해도 된다. 여기서는 로컬에 먼저 만들려고 한다. 파일-New repository 새 레파지토리 생성창 이름, 설명, 로컬 레파지토리 경로 설정 후 생성버튼 누른다. 로컬 레파지토리 원격 레파지토리에 동기화 github.com 서버에 있는 내 원격 레파지토리에 publish(동기화) Publish repository 내 github.com에 publish publish가 완료되면 내 깃허브 서버에도 연결된 레파지토리가 생긴다. private로 해도 되는데,  무료사용자는  private 용량, 변경수 등 제한이 있다. publish 후 웹 레파지토리 새 프로젝트 만들기 .NET Framework 를 사용한 windows form application 만들기 프레임워크는  최신인 4.8 선택 경로는 내 로컬 레파지토리 만든 경로 폼 어플리케이션 생성 후 초기 모습 여기를 시작점으로 ...

키움증권 api 준비하기 (데이터분석-1편)

이미지
 VIsual Studio 설치 지금은 2022 버전이 최신인데, 키움증권 api 질문에 보면 2019까지 지원한다고 나와있다. 키움증권 제공 api는 32비트 액티브x(COM 어플리케이션) 이기 때문에 32비트 빌드 를 지원하는 visual studio 2019 를 설치해야한다. 구버전 다운로드 : https://visualstudio.microsoft.com/ko/vs/older-downloads/ 2019 확장해서 다운로드를 누른다. 마이크로소프트 계정으로 로그인해야지 다운받을 수 있다. 컴퓨터 운영체제에 맞는 프로그램을 설치. 요즘은 대부분 64비트 컴퓨터니까 x64 선택해서 다운 받는다. 윈도우 설정 -> 시스템 -> 정보 에서 몇 비트 운영체제가 설치되었는지 확인할 수 있다. 다운 받은 visual studio installer 를 실행하면 뭐 설치할지 물어보는데,  나는 [.net 데스크톱 개발도구]만 있으면 된다. 필요한 게 더 있으면 알아서 설치. 키움증권 api 사용신청 및 설치 계좌개설과 회원가입이 되어있으면 키움증권 api 사용신청할 수 있다. 키움증권 홈페이지에서 전체메뉴-> 고객서비스->다운로드->open api+ 메뉴로 이동 키움증권 홈페이지 :  https://www.kiwoom.com/   키움증권에서 화면에 사용절차 설명을 잘 해놨다. 설명을 따라 버튼을 누르면 신청/다운로드할 수 있다. 1단계 api 사용신청 2단계 api 모듈(Open API) 다운로드 다운로드 받은걸 설치하면 기본 설치 경로 C:\OpenAPI (아마 윈도우 설치한 드라이브) 에 설치된다. koa스튜디오 다운로드 koa 스튜디오에 api 사용법이 나와있다. 또 트랜잭션(transaction)* 테스트용으로도 쓸 수 있다.  *주가요청, 주문신청 등을 트랜잭션이라 부른다 KOA Studio 다운로드 파일 압축 풀고 나서 OpenAPI 설치 경로(기본 C:\OpenAPI)에 파일을 옮겨야 ...