언어

AWS 생성 및 접속 방법 AWS EC2 생성 및 접속 AWS 인스턴스 생성 기본 설정 위 사진의 순서에 맞게 서버의 이름 / OS / AMI를 선택한다 개인적인 프로젝트라면 3 번 항목을 참고하여 프리티어로 사용해야 과금이 덜 나가게 된다 키 페어 생성 [키 iron-jin.tistory.com Github Push 전 점검 사항 package 목록 뽑아서 txt 파일로 만들어준다 명령어 ) pip3 fressze >> packages.txt 생성 된 파일 정보 pip로 install했던 라이브러리 정보들이 생성된다. Github 연동 및 받기 Repository 생성 및 커밋 Github에 Repository를 생성하고, 프로젝트를 Push한다. 해당 내용에 대한 추가 글 작성 필요 EC2에 접속하여..
UWSGI는 왜 필요할까? - Django는 Web Application Server가 아닌 Web Server Framework - 배포 관련은 이전 글 참고 [Python Djnango] - AWS EC2 기반 배포 AWS 생성 및 접속 방법 AWS EC2 생성 및 접속 AWS 인스턴스 생성 기본 설정 위 사진의 순서에 맞게 서버의 이름 / OS / AMI를 선택한다 개인적인 프로젝트라면 3 번 항목을 참고하여 프리티어로 사용해 iron-jin.tistory.com UWSGI 설치 설치 명령어 ) pip3 install uwgi CLI를 통한 실행 CLI 명령어 uwsgi --http :[포트 번호] --home [가상 환경 루트] --chdir [프로젝트 경로] -w [wsgi 모듈] 포트 번호: ..
1. Python 설치 https://www.python.org/ 3.x 버전 사용 2. 가상환경 설정 설정하는 이유 pip로 설치한 패키지들은 파이썬 설치 폴더 안에 저장된다 이는 결국 모든 파이썬 프로젝트에서 사용할 수 있다는 의미 단점은, 프로젝트 이식성이 떨어진다 프로젝트마다 파이썬 버전이 다를 경우 패키지 버전에 대해 호환이 안 될수도 있다 설정 방법 python3 -m venv {myenv} source {myenv}/bin/activate 3. Django 설치 pip3 install django django-admin startproject {projectName} 4. Django 실행 python3 manage.py runserver
· 언어/java
특징 인터페이스 기반으로 만들기 때문에 인터페이스가 필수 런타임에 동적으로 프록시 객체를 만들어줌 사용 예시 public static void main(String[] args) { TestInterface ref = (TestInterface) Proxy.newProxyInstance( TestInterface.class.getClassLoader(), new Class[]{TestInterface.class}, handler); ref.call(); } } Proxy.newProxyInstance 동적 프록시 생성 함수 인자 값 프록시 인터페이스의 클래스 로더 인터페이스 클래스에 대한 배열 입력 프록시 동작을 수행하기 위한 InvocationHandler 인터페이스만으로 프록시를 사용할 수 있을까? ..
· 언어/java
서론 JDK 21이 발표됨에 따라 관련 업데이트 내용 정리 JDK 17 이후 최신 LTS 버전 주요 업데이트 내용 Record Patterns Pattern Matching for switch Virture Thread 표준화 Sequenced Collection Unnamed Classes and Instance Main Methods Unnamed Patterns and Variables Record Patterns Record 타입에 대한 destructed가 가능해졌다. 패턴 매칭 // As of Java 16 record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = p...
작성 계기 Web3를 통한 프로젝트의 경우 truffle / hardhat 등의 Smart Contract을 위한 대중성있는 블록체인 프레임워크가 존재한다. Java에서도 Web3j 모듈에서 다양하게 지원하긴 하지만, Web3 프로젝트에 비해 그 과정이 상당히 복잡하고 러닝커브가 높다. Web3에 비해 커뮤니티 풀이 생각 외로 적고, 프로젝트 전체 플로우에 대해 참조할만한 블로그도 없어서 직접 작성하게 됐다. 사용 스택 Spring Boot 2.7 & Gradle 7.0 JDK 11 Solidity 0.8.19 위 기술 스택으로 사용한 이유 Gradle 8.0 이상의 프로젝트 (JDK 17 / Spring Boot 3.0)에서는 아직 지원이 안 되는듯하여 이슈로 올라와있다. Solidity 0.8.20 ..
Solidity를 사용하면서 겪었던 스토리지 충돌 관련 이슈 정리 Proxy - delegateCall()호출 시, 스토리지 충돌 문제 컨트랙의 변경을 위해(Smart Contract는 원칙상 변경이 불가하다) Proxy를 만들 수 있는 방법을 찾다가 delegateCall() 발견 데이터 로직을 담당하는 컨트랙(A)에서 데이터 저장소를 담당하는 컨트랙(B)에 접근할 때 delegateCall() 사용 이슈 발생 delegateCall()은 현재 컨트랙의 컨텍스트에서 사용하고자 하는 컨트랙의 함수에 접근하여 사용 가능 (msg.sender가 동일하기 때문에 프록시로 사용하기 유용하다) 문제는 Solidity에서 Storage 변수를 다룰 때, Slot이라는 저장소에 변수를 선언 된 순서대로 저장하게 되는..
Gas Cost를 왜 책정해야할까? Gas 비용이 없다면, 공격자의 Ddos 공격에 취약해진다. 따라서 컨트랙트 함수를 호출할 때마다 비용을 지불하는 방식으로 공격자에게 부담을 지워지게 하는 용도가 가장 큰듯하다. Gast Cost는 어떻게 책정되는가? 1 Ether = 10^9 Gwei = 10^18 wei Gas 비용은 개발자가 어떻게 컨트랙트를 작성하냐에 따라 상대적으로 많아질수도, 적어질수도 있다. Gas 책정 방식은 EVM opcode 참고 https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash Smart Contract를 구현할 때의 유의점 EVM opcode를 하나하나 찾아보고 컨트랙의 ..
iron_jin
'언어' 카테고리의 글 목록