반응형


apt-get install, 특정 버전 강제 설치 (no install recommends)

 

apt-get install 후에 패키지를 설치할 때,

가끔씩 현재 환경과 맞지 않는 최신 버전이 설치되거나,

아니면 의존성 문제가 발생하는 경우가 존재한다.

 

 

예를 들어 위 에러와 같은 경우, 

tensorrt를 다운받으려면, 자동으로 함께 필요한 라이브러리들을 다운 받는데,

apt-get에서 현재 환경에 맞지 않는 다른 버전의 라이브러리를 다운받으려고 하는 경우 발생한다.

 

이럴 때는 install recommends 옵션을 꺼버려서, 특정 라이브러리를 직접 다운받아야 한다.

 

sudo apt-get install -y --no-install-recommends <패키지명>


< 예 시 >
sudo apt-get install -y --no-install-recommends libnvinfer6=6.0.1-1+cuda10.1

 

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


 

Ubuntu 버전 확인하기

 

Docker를 쓰다보면, 아무 생각없이 설치한 라이브러리가 ubuntu 버전에 호환이 안되는 경우가 있다.

따라서, 반드시 도커 이미지의 ubuntu 버전을 먼저 확인하고 설치를 진행하는게 여러모로 신상에 이롭다.

 

# 터미널에서 확인하기

lsb_release -a
cat /etc/lsb-release
cat /etc/issue

 

GUI 환경이 지원된다면, System -> About Ubuntu에서 편리하게 조회가 가능하다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


 

Dpkg로 설치된 패키지 검색 & 삭제 하는 방법

 

물론 apt-get 으로 파일을 바로 설치하는 경우도 있겠지만, 우분투를 사용하다보면 deb 파일을 통해 직접 설치를 하는 경우가 있다.

dpkg를 통한 패키지 설치 방법은 이전 글에서 확인할 수 있다.

 

2020/08/18 - [IT/각종 Tips] - [Ubuntu / 우분투] deb 파일 설치하는 법

 

[Ubuntu / 우분투] deb 파일 설치하는 법

Deb 파일 설치하는 법 deb 파일을 설치하는 방법은, runfile보다 훨씬 간단하다. dpkg -i 를 사용해주면 된다. 예를 들어 cudnn을 설치하는 경우, sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.2_amd64.deb 위와 같..

cryptosalamander.tistory.com

 

이렇게 설치된 패키지를 조회하는 방법을 살펴보자.

 

설치된 패키지 검색

 

# 모든 패키지 조회
dpkg -l

# 특정 패키지 검색
dpkg -l "패키지명"
dpkg --list "패키지명" 

 

패키지명을 완벽히는 모르지만, 부분으로 아는 경우에는 아래와 같은 명령어로 검색이 가능하다.

 

dpkg -l | grep "패키지명(일부분)"

# 예시
dpkg -l | grep "tensorrt"

 

패키지의 풀 네임을 모르는 경우가 많이 존재하기 때문에, 위 명령어는 매우 요긴하게 사용된다.

권한이 없을 경우, 앞에 sudo를 붙여준다.

 

설치된 패키지 삭제

 

# 패키지 삭제
sudo dpkg --remove "패키지명"
sudo dpkg -r "패키지명"

# 패키지 완전 삭제(설정파일 포함)
sudo dpkg --purge "패키지명"
sudo dpkg -P "패키지명"

 

삭제하는 경우 완벽한 패키지의 풀네임을 적어줘야 한다.

따라서 삭제를 원하는 패키지의 풀네임을 위의 설치된 패키지 검색을 통해 찾은 뒤 수행해주면 된다.

 

remove를 통해 삭제할 경우, 설정파일등이 남아있어 dpkg list에서 지속적으로 조회가 되고, 

추후 다시 라이브러리를 설치할 때 충돌을 야기할 수 있다.

 

따라서 웬만하면 purge 방식으로 삭제하는 것이 더 편리할 것이다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


Git SSL Certificate Problem: Certificate has expired 에러 해결법

 

가장 간단한 해결 방법은 SSL 검증을 꺼버리는 것이다.

신뢰할 수 있는 오픈소스의 경우 굳이 SSL 검증을 안켜도 된다.

 

다음 코드를 실행하면 모든 https repository에 연결 할 때 SSL 검증 과정을 스킵한다.

 

$git config --global http.sslVerify false

 

혹은 환경 변수 값을 바꿔줄 경우에도 동일한 효과를 지닌다.

 

$export GIT_SSL_NO_VERIFY=0
반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


Process finished with exit code 139 (interrupted by signal 11: SIGSEGV) 해결법

 

Scikit-learn을 사용하다보면 exit code 139를 만나게 되는 경우가 있다.

 

물론 139 에러코드는 다양한 상황에 나타날 수 있기 때문에 이 방법으로 무조건 해결되지는 않을 수 있다.

다만 대부분의 상황에서는 이 방법으로 해결이 될 수 있을 것 같다.

 

원인


  • Scikit-learn 내부에서 openblas를 사용한다.
  • openblas가 여러 개의 쓰레드를 사용하는데, 여러 라이브러리와의 충돌 원인이 된다.
  • numpy의 경우 완전히 이상한 값을 연산 결과로 내놓기도 한다.

 

해결 방법


import os
os.environ["MKL_NUM_THREADS"] = "1"
os.environ["NUMEXPR_NUM_THREADS"] = "1"
os.environ["OMP_NUM_THREADS"] = "1"

 

위 코드를 python 파일 최상단에 넣으면 해결된다.

본 코드를 통해 openblas가 사용하는 Thread의 수를 제한함으로써 다른 라이브러리와의 충돌을 막을 수 있다.

 

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


Math 라이브러리 - Log, 지수 연산

정말 간단한 식이지만, 아무 생각없이 log와 지수 연산을 하는 라이브러리를 까먹는 경우가 있었다.

이 블로그는 많은 사람들에게 정보가 전달되는 목적도 있지만, 내가 나중에 보기 위한 목적도 있으므로 간단히 정리해두었다.

 

import math

# 지수 연산
math.exp(x) 
>>> math.exp(1)
2.71828182845...

#자연 로그
math.log(x)
>>> math.log(2.718281828459045)
1.0

#상용 로그(10단위 로그)
math.log10(x)
>>> math.log10(10)
1.0

 

 

 

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


Argparse 사용법

 

Python 패키지인 argparse는 물론 다양한 분야에서 활용될 수는 있겠지만,

나와 같이 인공지능/머신러닝을 연구하는 사람이라면 매우 자주 접하게 된다.

 

python3 train.py --encoder tf.efficientNetB7 --epochs 40 --batch 32

 

주로 위와 같은 모양새를 가진 코드를 실행시킬일이 매우 잦다.

또한, argparse의 사용법을 알아두면 여러가지 파이썬 코드를 모듈화시키기에 매우 좋다.

 

인자값을 매번 바꿔줄 필요없이, 실행시킬때 변수로 줄 수 있기 때문이다.

 

 

import argparse

 

argparse는 파이썬 내부에 기본적으로 존재하기 때문에, 별도의 설치없이 바로 Import가 가능하다.

사용법은 다음과 같다.

 

Argparse 기본 사용법

 

import argparse

parser = argparse.ArgumentParser("Testing Argparse")
arg = parser.add_argument
arg('--my-number', type=int, help="ArgParse Tutorial")
args = parser.parse_args()

print(args.my_number)

 

  • ArgumentParser에는 적절한 Description을 넣어 parser 객체를 생성할 수 있다. Description값은 아무렇게나 지정해도 실행에는 전혀 지장이 없다.
  • add_argument를 활용하여 인자 종류를 추가할 것이라는것을 선언한다.
  • arg = ('--my-number', type=int, help="This is Help") 를 통해 my-number라는 인자를 추가한다.
  • type은 인자로 들어올 데이터의 자료형을 의미하며 float, bool, int, str등이 가능하다.
  • help값은 내장된 -h 기능을 통해 인자가 뭘 의미하는지를 보여준다.
  • parse_args()를 통해 입력된 인자값을 얻어 온다.
  • args.my_number를 통해 접근할 수 있다.
  • 기본적으로 --my-number와 같은 경우 args.my_number로 변경된다. --은 제거되고, 가운데에 있는 -는 _로 변경된다. 이는 파이썬의 변수 네이밍 규약 때문이다.

 

$python test.py -h
>> 실행결과
usage: Testing Argparse [-h] [--my-number MY_NUMBER]

optional arguments:
  -h, --help            show this help message and exit
  --my-number MY_NUMBER
                        ArgParse Tutorial
                        
                        
 $python test.py --my-number 1
 >> 실행결과
 1

인자 이름 지정

 

arg('--my-number', '-m', type=int, help="ArgParse Tutorial")

 

인자의 이름을 여러개로 설정할수도 있다. 예를들어 help의 경우 --help와 -h로 동시 정의가 되어있다.


Default값  설정

arg('--my-number', '-m', type=int, default=5, help="ArgParse Tutorial")

 

Default값을 지정하면, 입력을 받지 못했을 시 해당 인자의 값에 default값이 입력된다.


인자를 저장할 변수 이름  설정

arg('--my-number', '-m', type=int, help="ArgParse Tutorial", dest='my_num')

 

위와 같이 dest를 지정하면, 해당 인자 값은 my_num 변수로 저장된다.


필수 입력 지정 

arg('--my-number', '-m', type=int, required=True, help="ArgParse Tutorial")

 

required 옵션에 True를 주게 되면, 인자값이 전달되지않을 시 실행이 되지 않는다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


한글/hwp 표 합치는 방법

 

사실 word에 비해서 여러모로 불편하기도 하고, Mac 유저들은 너무나도 비싼 가격 때문에 꺼려하는 한글이지만...

한국에서는 어쩔 수 없이 한글을 쓸 일이 많으니 어쩔 수 없다.. 우리가 배울 수 밖에

 

 

 

표 합치는 방법


이렇게 2개의 표가 있을 때, 너무 보기 흉해서 두개를 딱 붙이고 싶은데, 

마우스를 아무리 땡겨봐도 두 표가 붙지는 않는다.

 

게다가 표 붙이기 키는 비활성화가 되어 있어서 클릭도 안된다.

단축키를 활용하면 손쉽게 표를 붙일 수 있다.

 

 

먼저 상단 표의 맨 마지막 줄에 커서를 두고,

Ctrl + N + Z를 누르면 표가 합쳐진다.

 

 

관공서나 학교에서 다양한 문서를 처리하시는 분들에게 힘이 되길 바라며...

포스팅을 마친다!

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


LNK2019 _main 외부 기호(참조 위치: "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 함수)에서 확인하지 못했습니다. 해결법

 

위 에러는 윈도우 프로그래밍을 할 때 자주 발생하는 에러이다.

해결법을 모르면 아무리 소스코드를 고쳐도 해결이 되지 않아 시간을 많이 낭비할 수 있다.

 

콘솔을 통해 개발을 할 경우, 프로그램의 시작점은 Main함수이다.

하지만, MFC와 같은 Windows 응용 프로그램의 경우 WinMain이라는 함수를 시작점으로 사용한다.

 

윈도우 프로그램을 개발하는데, 링커가 콘솔을 통해 개발을 하는 것으로 지정되어 있을 경우 발생하는 문제이다.

 

 

 

프로젝트를 우클릭한 뒤 속성탭으로 들어간다.

 

 

 

링커 -> 시스템 -> 하위시스템란이 콘솔로 설정되어 있을 것이다.

이를 콘솔에서 창으로 변경해주면 문제가 해결된다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,
반응형


 

[REVIEW/ 서평] 자기주권 신원증명 구조 분석서

 

 

지금은 머신러닝과 관련된 연구를 하고 있지만, 

본래 나는 블록체인과 관련된 연구와 프로젝트를 3년간 진행해왔었다.

 

예전에 특허와 논문으로 발표했던 "블록체인 기반의 익명성 전자투표 시스템"에 DID를 적용하여 개선을 하면 어떨까 고민을 했었는데, 마침 제이펍에서 DID와 관련된 책을 보내주셔서 감사히 서평을 작성하게 되었다.

 

먼저 표지를 보면 DID라는 말을 직접적으로 제목에선 사용하지 않아 일반 대중들도 좀 더 편하게 접근할 수 있지 않나 생각한다. 

또한 ETRI 블록체인기술연구센터라는 신뢰도 높은 정부출연연구소가 책을 집필했다는 사실에 책의 내용의 질이 굉장히 좋을 것이라는 생각이 들게 한다.

 

책의 목차는 다음과 같다.

 

  1. SSI 개요 (기존의 인증 방식과 SSI 인증의 차이)

  2. DID & DID Document (DID와 DID의 W3 공식 표준 프로토콜 설명)

  3. VC(신원증명) & VP(신원 증명을 가공하여 필요한 부분만 제출)

  4. SSI 인증 시나리오 (나와 같이 DID를 적용하여 인증을 진행하는 프로젝트를 하고자 하는 사람을 위한 인증 시나리오)
  5. Peer DID(Peer DID의 구조와 Hyperledger 기반의 실제 프로토콜 예시)
  6. SSI 플랫폼 분석 ( Hyperledger indey-node에 대한 분석과 실제 sdk를 활용한 예시)

 

책의 장점


 

컴퓨터를 전공하지 않은 사람도 어느정도 이해를 할 수 있도록 내용을 간단히 도식화하여 그림 자료를 많이 첨부하였다.

이런 그림 자료로 인해 글로는 이해가 잘 가는 부분도 금방 이해할 수 있었다.

 

또한 확실히 ETRI의 저서답게, 굉장히 수준 높은 내용을 다룬다.

단순히 DID는 이런 개념이다~ 를 얘기하는 개념서 수준이 아니라 프로토콜과 왜 DID가 나왔는지에 대한 배경까지 포괄적인 설명을 담고 있다.

 

총평


 

장점

 

  • DID에 대한 폭 넓은 지식을 알 수 있다.
  • 기존 인증방식과의 비교를 통해 DID가 정확히 어떤 개념인지 명확히 설명한다.
  • DID를 프로토콜 레벨로써 이해할 수 있도록 하는 DID의 교과서라고 생각한다.
  • 이해를 돕는데 큰 도움이 되는 간단한 도식도가 친절하게 많이 첨부되어있다.
  • 책의 디자인이 전반적으로 컬러풀해서 어려운 내용임에도 불구하고 딱딱한 느낌이 들지 않아서 좋았다.

 

지극히 개인적인 아쉬운 점

 

  • 조금은 아쉬운 점이, Hyperledger를 활용하여 간단한 DID 인증 플랫폼을 만들어보는 실습 사항이 같이 있었으면 좋았을 것 같다. 물론 프로토콜 레벨에서 어떻게 처리를 해야 되는지에 대한 사항이 챕터 6에서 저술되어있긴하지만, 공부를 목적으로 하는 학생들이 따라가기에는 다소 어려운게 사실인 것 같다. 
  • 지극히 개인적으로는 DID를 바로 도입해보고자 하는 맘에서 책을 읽어보았으나, DID를 어떻게 활용할지에 대해서는 감이 잡혔지만, 도대체 어떻게 구현해야할지는 막막했다.

 

이런 사람에게 추천!

 

  • 차세대 ID 인증 방식인 DID에 대해서 이해하고 싶은 사람
  • 자기 주권 신원증명에 대한 심층적인 분석을 하고자하는 전공자
  • DID를 어떻게 사업에 도입하면 좋을지 고민하고 있는 IT계열 현직자

 

책의 내용 자체가 굉장히 수준이 높다.

ETRI 연구소의 윤대근 연구원님께서 최대한 쉽게 설명하고자 노력하였으나, 아무래도 내용 자체가 전산학 전공이 아닌 이상 완벽히 이해하기는 어려울 듯 하다.

 

일종의 학술 보고서와 같은 내용을 다루기 때문에, 단순히 호기심에 읽기에는 내용 자체가 굉장히 어렵다.

따라서 DID에 대해 공부하고자 하는 의지가 확실히 있으신 분,

그리고 신원 증명 기술에 대해 어느정도의 이해가 있으신 분에게 적합한 책일 것 같다!

 

 

 

 

반응형

'제품 리뷰 > Book' 카테고리의 다른 글

[REVIEW/서평] 핸즈온 머신러닝  (0) 2020.07.10
[Review/서평] 이젠 나도! 자바  (0) 2019.12.10
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,