분류 전체보기
-
우분투에서 MySQL을 재설치하는 과정은 비교적 간단합니다. 아래 단계에 따라 진행하시면 됩니다. 1. MySQL 제거먼저, 기존에 설치된 MySQL을 제거해야 합니다.sudo systemctl stop mysqlsudo apt-get remove --purge mysql-server mysql-client mysql-commonsudo apt-get autoremovesudo apt-get autoclean 2. MySQL 데이터 및 설정 파일 삭제MySQL의 데이터 및 설정 파일을 삭제합니다.sudo rm -rf /etc/mysql /var/lib/mysqlsudo rm -rf /var/log/mysqlsudo rm -rf /var/log/mysql.* 3. MySQL 재설치이제 MySQL을 다시 설..
우분투에서 MySQL을 재설치하는 방법우분투에서 MySQL을 재설치하는 과정은 비교적 간단합니다. 아래 단계에 따라 진행하시면 됩니다. 1. MySQL 제거먼저, 기존에 설치된 MySQL을 제거해야 합니다.sudo systemctl stop mysqlsudo apt-get remove --purge mysql-server mysql-client mysql-commonsudo apt-get autoremovesudo apt-get autoclean 2. MySQL 데이터 및 설정 파일 삭제MySQL의 데이터 및 설정 파일을 삭제합니다.sudo rm -rf /etc/mysql /var/lib/mysqlsudo rm -rf /var/log/mysqlsudo rm -rf /var/log/mysql.* 3. MySQL 재설치이제 MySQL을 다시 설..
2024.07.25 -
ImportError: cannot import name 'mesh_core_cython위와 같은 에러가 났다면 userpath/face3d/mesh/cython 경로로 들어가서 아래처럼 setup 파일을 install 해주세요! cd ./engineer/render/face3d/mesh/cython # !!각자의 face3d 라이브러리 path 맞춰줍시다python setup.py build_ext --inplacepython setup.py install
ImportError: cannot import name 'mesh_core_cython'ImportError: cannot import name 'mesh_core_cython위와 같은 에러가 났다면 userpath/face3d/mesh/cython 경로로 들어가서 아래처럼 setup 파일을 install 해주세요! cd ./engineer/render/face3d/mesh/cython # !!각자의 face3d 라이브러리 path 맞춰줍시다python setup.py build_ext --inplacepython setup.py install
2024.06.18 -
성능에 대해서는 프로그램을 만들고 나서나 기능 개발이 완료되고 나서나 작동이 잘되는것을 확인했는데 속도가 아쉽다면 항상 고민을 하게 됩니다.우리는 더 나은 품질에 빠릿빠릿한 프로그램을 원하니까요!프로그램이 원할하게 돌아가게 하기 위해선 Frontend에서의 부드러움도 중요하지만 그만큼 Backend 및 자동화를 위한 스크립트에서도 빠른 속도가 바쳐줘야 합니다. 이글은 제가 많은 시도 끝에 성능을 올려본 방법론중에 하나이며 스스로도 추후에 참고하고 싶어 기록을 남겨봅니다.속도가 문제가 되는곳에는 그만큼 거대한 연산작업이 있다는것입니다. 그 거대한 연산작업을 기다리지 않고 병렬로 처리한다면 사용자는 우선적으로 결과값을 바로 받을 수 있어 사용성에 부드러움을 느낄 수 있습니다. 그 병렬처리를 위해 동시프로그래..
(Python 성능 향상) concurrent.futures 동시 프로그래밍 모듈로 속도 개선해보자!성능에 대해서는 프로그램을 만들고 나서나 기능 개발이 완료되고 나서나 작동이 잘되는것을 확인했는데 속도가 아쉽다면 항상 고민을 하게 됩니다.우리는 더 나은 품질에 빠릿빠릿한 프로그램을 원하니까요!프로그램이 원할하게 돌아가게 하기 위해선 Frontend에서의 부드러움도 중요하지만 그만큼 Backend 및 자동화를 위한 스크립트에서도 빠른 속도가 바쳐줘야 합니다. 이글은 제가 많은 시도 끝에 성능을 올려본 방법론중에 하나이며 스스로도 추후에 참고하고 싶어 기록을 남겨봅니다.속도가 문제가 되는곳에는 그만큼 거대한 연산작업이 있다는것입니다. 그 거대한 연산작업을 기다리지 않고 병렬로 처리한다면 사용자는 우선적으로 결과값을 바로 받을 수 있어 사용성에 부드러움을 느낄 수 있습니다. 그 병렬처리를 위해 동시프로그래..
2024.06.17 -
OWASP의 Top 1~5는 1위. Broken Access Control(취약한 접근 제어: 권한/인가), 2위. Cryptographic Failures(암호화 실패), 3위. Injection(인젝션), 4위. Insecure Design(안전하지 않은 설계), 5위. Security Misconfiguration(보안 설정 오류) 등이 있습니다. 아래는 해당 취약점들에 대한 대응 방안입니다. 1위. Broken Access Control(취약한 접근 제어: 권한/인가) 대응 방안 우선 CORS 설정을 허락한 url만 접근할 수 있도록부터 하여야 하며, 해커가 api 호출할 때 파라미터를 조작하여 호출하는 경우를 대비하여 사용자가 로그인하여 인가된 토큰을 가지게 하여 인가된 토큰을 가지고 있는 ..
OWASP Top 10중 Top 1 ~ 5에 대한 대응 방안에 대하여OWASP의 Top 1~5는 1위. Broken Access Control(취약한 접근 제어: 권한/인가), 2위. Cryptographic Failures(암호화 실패), 3위. Injection(인젝션), 4위. Insecure Design(안전하지 않은 설계), 5위. Security Misconfiguration(보안 설정 오류) 등이 있습니다. 아래는 해당 취약점들에 대한 대응 방안입니다. 1위. Broken Access Control(취약한 접근 제어: 권한/인가) 대응 방안 우선 CORS 설정을 허락한 url만 접근할 수 있도록부터 하여야 하며, 해커가 api 호출할 때 파라미터를 조작하여 호출하는 경우를 대비하여 사용자가 로그인하여 인가된 토큰을 가지게 하여 인가된 토큰을 가지고 있는 ..
2024.06.11 -
테스트를 위하여 특정 객체로 FireMagican 클래스를 만들고 fireResistance, defense, hp, mana, title 이렇게 멤버 변수를 선언 해줍니다.FireMagician 객체를 생성합니다. FireMagician의 필드값들을 Field형식의 배열에 넣어줍니다. fireMagicianfields에 있는 field들을 이름과 값을 fireMagicianMap에 키값에 이름을, 밸류값에 값을 넣어 줍니다. 아래는 객체의 모든 멤버 변수의 값을 Collection(Map)에 넣어 출력한 결과 입니다.
(Java) 런타임 중 특정 객체의 모든 멤버 변수의 값을 Collection(Map) 혹은 Array에 넣는 방법테스트를 위하여 특정 객체로 FireMagican 클래스를 만들고 fireResistance, defense, hp, mana, title 이렇게 멤버 변수를 선언 해줍니다.FireMagician 객체를 생성합니다. FireMagician의 필드값들을 Field형식의 배열에 넣어줍니다. fireMagicianfields에 있는 field들을 이름과 값을 fireMagicianMap에 키값에 이름을, 밸류값에 값을 넣어 줍니다. 아래는 객체의 모든 멤버 변수의 값을 Collection(Map)에 넣어 출력한 결과 입니다.
2024.06.11 -
동시성 문제가 발생 할 수 있습니다. Thread를 특정 기능 및 로직에 의해 반복문 안에서 여러번 생성하고 실행되었을때 데이터 충돌이 일어나 동시성 문제가 발생합니다. 결괏값이 순차적으로 나오지 않는 논리적 문제가 발생하여 쓰레드 안정이 깨지는 상황이 발생합니다. 코드로 예를 들어 보겠습니다. 아래는 간단하게 사용자들이 회사 홈페이지를 조회하면 카운트가 올라가는 코드입니다. 코드를 run 했을 때 스레드로 조회하는 횟수가 100이고 그 횟수를 100번 더 반복하여 10000번의 조회가 나올 것을 예상할 수 있습니다. 하지만 결과는 다음과 같습니다. print되는 숫자들이 동시성이 없으며 순차적이지 않습니다. 동시성 문제는 Java Atomic Type, volatile, synchronized 같..
(Java) Thread와 Thread Local 등을 사용 할 때 발생 할 수 있는 위험 요소와 이에 대한 해결 방안에 대하여 (feat.Atomic Type, volatile, synchronized)동시성 문제가 발생 할 수 있습니다. Thread를 특정 기능 및 로직에 의해 반복문 안에서 여러번 생성하고 실행되었을때 데이터 충돌이 일어나 동시성 문제가 발생합니다. 결괏값이 순차적으로 나오지 않는 논리적 문제가 발생하여 쓰레드 안정이 깨지는 상황이 발생합니다. 코드로 예를 들어 보겠습니다. 아래는 간단하게 사용자들이 회사 홈페이지를 조회하면 카운트가 올라가는 코드입니다. 코드를 run 했을 때 스레드로 조회하는 횟수가 100이고 그 횟수를 100번 더 반복하여 10000번의 조회가 나올 것을 예상할 수 있습니다. 하지만 결과는 다음과 같습니다. print되는 숫자들이 동시성이 없으며 순차적이지 않습니다. 동시성 문제는 Java Atomic Type, volatile, synchronized 같..
2024.06.11 -
때로는 정적 메서드나 필드만 모은 클래스를 만들어야 할 때가 있습니다. 객체를 생성하지 않고 바로 사용하는 클래스가 필요할 때가 있습니다. static메서드와 static 필드만 들어있는 객체가 존재한다면 이 객체는 인스턴스로 만들 필요가 전혀 없습니다. 이런 경우 생성자를 외부에서 사용하지 못하도록 막아주면 안전하게 객체를 사용할 수 있는 장점이 있습니다. 아래처럼 클래스에서 private 생성자를 클래스에 추가하면 Instance 생성을 막을 수 있습니다. 테스트로 NPC 인스턴스를 생성하려고 하면 오류가 납니다.
(Java) Class의 Instance생성을 금지하는 방법에 대하여때로는 정적 메서드나 필드만 모은 클래스를 만들어야 할 때가 있습니다. 객체를 생성하지 않고 바로 사용하는 클래스가 필요할 때가 있습니다. static메서드와 static 필드만 들어있는 객체가 존재한다면 이 객체는 인스턴스로 만들 필요가 전혀 없습니다. 이런 경우 생성자를 외부에서 사용하지 못하도록 막아주면 안전하게 객체를 사용할 수 있는 장점이 있습니다. 아래처럼 클래스에서 private 생성자를 클래스에 추가하면 Instance 생성을 막을 수 있습니다. 테스트로 NPC 인스턴스를 생성하려고 하면 오류가 납니다.
2024.06.10 -
Abstract Class와 Interface는 둘 다 상속이 가능하고 구현해야 될 기능을 정의해 주지만 사용 목적에 따라 쓰임새가 다릅니다. Abstract Class와 Interface의 가장 큰 차이점은 다중 상속 가능 여부입니다. Abstract Class는 한 개의 클래스만 상속 가능하며 자식 클래스에 일반 메서드를 작성해서 물려줄 수 있습니다. 부모 클래스가 가진 기능들을 구현해야 할 때 사용합니다. Interface는 공통적인 기능이 필요할 때 사용합니다. 아래의 추상 클래스 예제로 설명드리겠습니다. 위에서 Magician과 Warrior는 공통적으로 Human이고 Human의 기능들을 상속받습니다. 하지만 각 추상 클래스의 속성이 다르므로 구현되어야 할 기능은 따로 정의됩니다. 따로 정의..
(Java) Abstract Class와 Interface 차이에 대하여Abstract Class와 Interface는 둘 다 상속이 가능하고 구현해야 될 기능을 정의해 주지만 사용 목적에 따라 쓰임새가 다릅니다. Abstract Class와 Interface의 가장 큰 차이점은 다중 상속 가능 여부입니다. Abstract Class는 한 개의 클래스만 상속 가능하며 자식 클래스에 일반 메서드를 작성해서 물려줄 수 있습니다. 부모 클래스가 가진 기능들을 구현해야 할 때 사용합니다. Interface는 공통적인 기능이 필요할 때 사용합니다. 아래의 추상 클래스 예제로 설명드리겠습니다. 위에서 Magician과 Warrior는 공통적으로 Human이고 Human의 기능들을 상속받습니다. 하지만 각 추상 클래스의 속성이 다르므로 구현되어야 할 기능은 따로 정의됩니다. 따로 정의..
2024.06.10