결론부터 말하자면,

 

하지 않는게 좋다. 성능이 안나온다.

 

그럼에도 하고싶다 하는 사람들은 아래대로 따라하면 될 것이다.

 

준비물

  1. 젯슨나노
  2. 인터넷 가능한 환경

 

먼저 난 vi 에디터를 사용할 줄 모르기에 nano 에디터를 설치해주었다.

sudo apt update
sudo apt upgrade
sudo apt-get install nano

이제 ipv6를 꺼주도록 한다.

sudo nano /etc/sysctl.conf

위의 파일에 아래와 같이 작성해주어야한다.

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

호스트 이름 액세스를 활성화하기 위해 설치해주어야 한다.

sudo apt install avahi-daemon

이제 위의 작업을 적용하기 위해 재부팅을 해준다.

sudo shutdown -r now

이제 채굴 프로그램을 설치해볼 것이다.

채굴 프로그램은 ccminer 라는 프로그램이다.

sudo apt-get install git

git을 설치해준 다음 ccminer 를 다운받는다.

git clone -b linux https://github.com/tpruvot/ccminer
cd ccminer
./build.sh

만약 설치가 완료되었다면 아래의 커맨드가 잘 작동해줄 것이다.

./ccminer --version

작성일 기준 버전은 2.3.2 이다.

 

설치가 완료되었으면 실행을 시켜줘야하는데, 그러려면 채굴 시 들어올 지갑과 마이닝 풀이 필요하다.

 

작성자는 nicehash 라는 사이트를 이용했다.

https://www.nicehash.com/

 

NiceHash - Leading Cryptocurrency Platform for Mining and Trading

Latest News Read about all the latest news from NiceHash

www.nicehash.com

Get Start 버튼을 누르면 회원가입을 하게 된다.

 

회원 가입 후 상단의 Mining을 누르고 Mining address 를 누르면 채굴 시 들어올 지갑의 주소를 볼 수 있다.

 

남은건 마이닝풀의 정보인데, Mining을 누른 현재 화면에서, 오른쪽에 Download Miner or Add Asic 버튼을 누르고

 

Stratum generator 를 클릭하고, 사용할 알고리즘(select algorithm)과 서버 위치(select location)을 설정해주면

 

마이닝 풀의 링크가 보일것이다.

 

작성자는 SHA256과 USA-east 를 선택했다.

 

그러면 이제 모든 준비는 끝났다.

 

이제 ccminer 를 실행시킬것이다.

./ccminer -a sha256d -o stratum+tcp://sha256.usa-west.nicehash.com:3334 -u 3Hr2sK6pNCF3nQDDSK71uWawLndgLqgjAY
./ccminer -a sha256d -o 마이닝풀 -u 지갑주소

위의 코드는 실행코드고, 아래코드는 설명코드이다.

 

-a 옵션은 어떠한 것을 채굴할 것인가 인데, 비트코인일 경우 sha256d이다.

 

여러가지 그 외로 채굴하고싶다면, --help 옵션을 넣어서 확인 할 수 있다.

 

3일동안 실행시킨 후 확인 했을때 jetson nano 환경에선

그렇다. 캐지지 않는다.

 

안하는것을 추천한다.

Posted by 서융
:

전편에 이어서 카드게임을 만들어 볼거에요.

 

일단 적용할 블랙잭의 룰을 생각해봅시다.

 

  • 21 이상이면 버스트
  • J, Q, K 카드는 10
  • A 카드는 1
  • 합이 더 크면 승

전 위와 같은 룰로 제작을 해 볼거에요.

//코인 부족 체크
if (coin < 10)
{
	if (AskRegame())
	{
		reGame = true;
		return false;
	}
	return false;
}

먼저 낙장불입을 막아줄게요.

//카드 부족 체크
if (Remain <= 0)
{
	if (AskRegame())
		reGame = true;
	return false;
}

게임할 때 카드가 부족하면 안되겠죠?

printf("Your Bet Coin : ");
scanf_s("%d", &m_betCoin);
if (m_betCoin < 0)
	m_betCoin = 0;

이제 베팅 부분인데, 아래에 if문은 만약 마이너스 값을 입력하는 바보같은 경우를 미리 차단해둔 거에요.

m_die = true;
coin -= (m_betCoin + 1);

혹시 다이를 선택하는 경우도 있으니 미리 체크해둡니다.

bool Cardcompare(int temp[5])
{
}

카드를 비교할 함수를 만들어줍니다.

 

이제 남은건 카드의 비교겠져?

int m_temp[5];
for (int i = 0; i < 5; i++)
{
	m_temp[i] = temp[i] % 13 + 1;
	if (m_temp[i] == 1)
		m_temp[i] = 10;
	if (m_temp[i] == 13)
		m_temp[i] = 10;
	if (m_temp[i] == 12)
		m_temp[i] = 10;
}

카드가 총 52장으로 모양별로 13장씩 4모양이니까 13으로 나머지계산을 한 후 +1을 해줍니다.

 

13(K)을 13으로 나눌 경우 0이 되니까 그 부분과 Q, J 카드도 10으로 처리해줍니다.

for (int i = 0; i < 3; i++)
{
	if (temp[i] == -1)
	{
	}
	else
	{
		m_psum += m_temp[i];
	}
}

카드를 뽑을때 -1로 초기화해둔 temp 의 배열을 바꿔주었기 때문에 뽑지 않았을 경우 건너뛰도록 해줍니다.

for (int i = 3; i < 5; i++)
{
	m_dsum += m_temp[i];
}

딜러는 간단하게 두장만 합쳐줍니다.

//버스트 체크
bool m_pbust = false, m_dbust = false;
if (m_psum > 21)
	m_pbust = true;

if (m_dsum > 21)
	m_dbust = true;
if (m_dsum < 15)
	m_dbust = true;
	
if (m_dbust)
	return true;
if (m_pbust)
	return false;

카드 숫자 합이 21을 넘어가게 되었을 때, 혹은 딜러가 15보다 낮을때 버스트인지 체크해줍니다.

//합 숫자 비교
bool win = false;
if (m_psum >= m_dsum)
	win = true;
else
	win = false;

return win;

이제 양쪽이 버스트가 아닐때 승리처리를 해 준 후 리턴을 해줍니다.

//카드 비교하기
if (!m_die)
{
	if (Cardcompare(temp))
	{
		coin += (m_betCoin + 1);
	}
	else
	{
		coin -= (m_betCoin + 1);
	}
}

마지막으로 승리시 배팅시만큼의 금액을, 패배시 배팅 금액을 더하거나 빼줍니다.

 

전체 코드는 아래 압축파일에 있습니다.

 

CardGame.zip
0.00MB

'프로그래밍 > C, C++ ' 카테고리의 다른 글

C,C++ 응용 - 콘솔 카드게임 만들기(전편)  (0) 2020.12.02
C, C++ 기초 - 생성자, 소멸자  (0) 2020.05.06
C,C++ 기초 - 클래스  (0) 2020.05.06
C, C++ 기초 - 포인터  (0) 2020.04.20
C, C++ 기초 - 함수  (0) 2019.08.25
Posted by 서융
:

오랜만에 다시 왔네요.

 

이번에 만들 카드 게임은 다들 한번쯤은 해보셨을 블랙잭을 만들어볼거에요.

 

필요로하는 헤더는 이렇게 되겠습니다.

#include <iostream>
#include <time.h>
#include <stdlib.h>

그리고 카드는 조커를 제외하고 52장이므로, 카드 갯수를 선언해줍니다.

#define CARD_COUNT	52

또한 남은 카드도 글로벌로 선언해줍니다.

int Remain = CARD_COUNT;

이제 남은 필요한 변수들을 생각해봅시다.

 

카드의 문양과 숫자를 지정해줄 문자열변수, 무슨 카드가 뽑혔는지 알려줄 정수형 변수, 코인, 다시할건지 물어볼 bool형 변수 이렇게 4개가 주로 사용될 변수겠죠?

 

그러면 이제 그 변수들을 선언을 해줍시다.

const char* m_card[CARD_COUNT] = {	"♠1", "♠2", "♠3", "♠4", "♠5", "♠6", "♠7", "♠8", "♠9", "♠10", "♠11", "♠12", "♠13",
					"◆1", "◆2", "◆3", "◆4", "◆5", "◆6", "◆7", "◆8", "◆9", "◆10", "◆11", "◆12", "◆13",
					"♥1", "♥2", "♥3", "♥4", "♥5", "♥6", "♥7", "♥8", "♥9", "♥10", "♥11", "♥12", "♥13", 
					"♣1", "♣2", "♣3", "♣4", "♣5", "♣6", "♣7", "♣8", "♣9", "♣10", "♣11", "♣12", "♣13"};
int m_index[CARD_COUNT];
int m_coin = 0; 
bool m_reGame = true;

이제 카드 섞기와 코인 입력 등 초기화 부분의 함수를 만들어 볼겁니다.

void InitGame(int index[CARD_COUNT], int &coin, bool &reGame)

함수의 인수부터 설명하자면, 왼쪽부터 카드 체크용 변수, 코인값, 다시 게임할지 물어봐주는 변수입니다.

for (int i = 0; i < CARD_COUNT; i++)
{
	index[i] = i;
}

먼저 카드를 처음부터 정렬해줍니다.

srand(time(NULL));
int temp;
int rn;
for (int i = 0; i < CARD_COUNT - 1; i++)
{
	rn = rand() % (CARD_COUNT - 1 - i) + i;
	temp = index[i];
	index[i] = index[rn];
	index[rn] = temp;
}

그 후 카드를 섞어줍시다. 이러면 초기화는 끝났습니다.

 

그러면 이제 인게임을 만들차례가 됬죠?

int temp[4];
for (int i = 0; i < 4; i++)
{
	temp[i] = rand() % CARD_COUNT;
	for (int j = 0; j < i; j++)
	{
		if (temp[i] == temp[j])
		{
			i--;
			break;
		}
	}
	if (index[temp[i]] == -1)
		i--;
}
for (int i = 0; i < 4; i++)
{
	index[temp[i]] = -1;
}

Remain -= 4;

카드를 이제 딜러(CPU)와 플레이어꺼 카드 총 4장을 뽑아야 하는데 카드가 중복이 되면 안되겠죠?

 

그래서 그 부분의 예외처리하는 부분과 남은 카드장수를 체크하는 부분의 코드입니다.

 

남은 코드와 내용은 다음주에 이어서 업로드 됩니다.

 

남은 부분은 블랙잭의 규칙과 배팅, 다시할지 여부가 남았습니다. 다음주에 뵈요

'프로그래밍 > C, C++ ' 카테고리의 다른 글

C,C++ 응용 - 콘솔 카드게임 만들기(후편)  (0) 2020.12.07
C, C++ 기초 - 생성자, 소멸자  (0) 2020.05.06
C,C++ 기초 - 클래스  (0) 2020.05.06
C, C++ 기초 - 포인터  (0) 2020.04.20
C, C++ 기초 - 함수  (0) 2019.08.25
Posted by 서융
:

패치노트 10.23기준이지만, 심하게 너프먹지 않는이상 별 차이 없을것 같아요.

주요 룬

유성과 콩콩이는 평타견제를 많이 할 수 있는 상대면 콩콩이 그 외는 유성이라고 생각하시면 편해요.

 

그 아래 마순팔과 절대집중은 공통이고, 라인전 쎄게 가려면 주문 작열, 라인전 반반노리면 폭결을 추천해요.

 

부 특성

정밀일 경우

장점 : 침착을 이용해서 마나수급이 잘된다.

단점 : 지배에 비해 다른 라인에 영향을 주지 못한다.

변경점 : 상대가 체력을 올리는 챔프(블라디미르, 갈리오 등등)일 경우 체력차극복, 그 외는 최후의 일격을 추천드려요

지배일 경우

장점 : 6렙 이후에 다른 라인에 영향을 주면서 동시에 미드 파밍도 되서 성장력이 두 배로 뛴다.

단점 : 마나 관리가 다른 룬에 비해 어렵다.

영감일 경우

장점 : 비스킷을 이용해서 초반 마나관리가 쉽다.

단점 : 초반에 킬 혹은 어시를 못따면 신발을 못사므로 오히려 독이 될 가능성이 높다.

 

템트리

고정 1, 2코어

리안드리 -> 지평선의 초점

이후 템트리는 상대가 마저를 올리면 공허의 지팡이, 그 외에는 존야와 같은 생존템을 사는 것을 추천드려요.

 

라바돈이 비싸져서 효율이 떨어져가지구 빠르게 올리는 방식은 비추하고, 2코어만으로도 충분히 딜이 나오기에 생존템을 사서 더 안전하게 스킬을 쏘는 것이 중요해요.

Posted by 서융
:

1. 룬

룬은 기존 칼날비와 집공과 비슷합니다.

공통적으로 상대가 cc가 많은데, ap가 적을 경우 (예를 들면 리븐, 사이온 등등)

정밀 -> 전설: 강인함 을 들어줍니다.

 

칼날비일 경우, 부특성으로 마법일 경우

부특성으로 정밀일 경우

탱커가 있는 경우엔 침착 대신 체력차극복을 들어줍니다.

침착을 들 경우 평Q견제를 많이 할 수 있다는 장점이 있지만 그게 안 될거같은 상황에선 승전보가 더 좋아요!

 

2. 아이템

아래 템트리는 opgg 통계에 나온 템트리보다 조금 더 싼 템트리를 찾아본거에요.

 

톱날 정수를 즐겨가던 사람들을 위한 아이템트리

월식(or 철갑궁) -> 몰왕(Q진화) -> 공속신 -> 내셔(WE동시진화 + ap트리) or 루난(E진화 + 치명타트리)

무라마나 템트리는 여전히 비교적 싸게 Q진화가 된다는 장점이 있다.

무라마나 AD템트리

여눈 -> 월식 -> 무라마나(Q진화) -> 공속신 -> 구인수 -> 단검(E진화)

무라마나 AP템트리

여눈 -> 월식 -> 무라마나(Q진화) -> 공속신 -> 내셔(11레벨 WE동시진화)

Posted by 서융
:

최근 인공지능이 발전하고 있죠?

 

그 인공지능 중에서 제가 이번에 다룰 내용은 사람의 목소리를 흉내내는 Voice Cloning 이라는 기술이에요.

 

그리고 이 기술이 아직 한국어로 많이 퍼져있지가 않은거같아요.

 

Voice Cloning이란?

 

다른 이름으론 DeepVoice라고도 불리며, 사람의 목소리와 말투를 기계가 학습해서 그 목소리를 기반으로 어떠한 글을 읽어주는 기술이에요.

 

비슷한 프로그램의 예시로는 보이스로이드, 보컬로이드도 있죠.

 

제가 참고로 한 사이트는 https://github.com/CorentinJ/Real-Time-Voice-Cloning 이에요.

 

설치

 

1. Anaconda 다운로드

https://www.anaconda.com/products/individual

 

Anaconda | Individual Edition

Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

위의 링크에서 자신의 운영체제에 맞는 아나콘다를 다운받습니다.

 

저는 윈도우 64비트니까 64비트로 다운했어요.

 

2. 깃허브 다운로드

https://github.com/CorentinJ/Real-Time-Voice-Cloning

 

CorentinJ/Real-Time-Voice-Cloning

Clone a voice in 5 seconds to generate arbitrary speech in real-time - CorentinJ/Real-Time-Voice-Cloning

github.com

1번을 기다리면서 위의 링크에서 Download Zip을 눌러서 압축파일로 코드를 내려받습니다.

 

그리고 깃허브 사이트에서 약간 내리면 pretrained models도 다운합시다.

 

3. 1번과 2번이 다 된 후

 

"시작" 버튼을 누르시면 Anaconda Prompt 라는 프로그램이 새로 생겼을거에요.

 

실행시키면 명령프롬프트와 비슷한 창이 뜨죠?

 

그 창에 지금부터 명령어를 칠 거에요.

 

3-1. conda create -n VoiceTest python=3.6

 

위 명령어를 설명하자면, VoiceTest라는 이름의 가상 머신을 파이썬 3.6버전으로 만들겠다. 라는 뜻이에요.

 

3-2. conda activate VoiceTest

 

말 그대로 VoiceTest 라는 가상머신을 활성화 시킨다는 명령어에요.

 

3-3. conda install -c menpo ffmpeg

 

이젠 설치하는 명령어인데, menpo라는 채널에서 ffmpeg 를 설치한다는 뜻이에요.

 

3-4. https://pytorch.org/get-started/locally/

 

PyTorch

An open source deep learning platform that provides a seamless path from research prototyping to production deployment.

pytorch.org

이제 위 사이트에서 pytorch라는것을 다운로드 해줘야 하는데, 버전을 설정하는 방법을 설명하자면,

pytorch build : pytorch 버전

your os : 사용중인 운영체제

package : 다운할 때 사용할 패키지 언어 (지금은 conda)

language : 프로그래밍 언어 (지금은 python)

cuda : 사용중인 cuda 버전

 

자신의 현재 상황에 따라 설정 후 나오는 명령어를 복사하고, anaconda prompt에 붙여넣기 하시면 됩니다.

 

ex) 위의 상황에선 conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch 입니다.

 

3-4-1. cuda 버전 확인법

 

윈도우일 경우, 바탕화면에 우클릭을 하여 nvidia 제어판을 들어갑니다.

 

그 후 왼쪽 하단에 시스템 정보 버튼을 클릭하신 후, 구성요소에  NVCUDA.DLL 의 제품 이름 부분을 보시면 됩니다.

 

3-5. pip install -r requirements.txt

 

이번 명령어는 치기 전에 디렉토리 경로를 이동해줘야 합니다.

 

아까 처음에 깃허브에서 다운했던 파일의 압축 해제한 후 폴더 내부로 경로를 변경해야 하는데 그 명령어는 리눅스와 동일합니다.

 

cd C:\경로 를 먼저 해 주셔야 제대로 작동합니다.

 

실행

 

이제 설치는 다 끝났습니다.

 

기나긴 설치 후 이제 실행만 남았는데, 실행 명령어는 단 한줄입니다.

 

python demo_toolbox.py

 

3-5에 들어간 경로 내에서 위의 명령어를 실행시키면 실행이 됩니다.

 

간단한 UI 설명을 하자면, Record(녹음) Browse(불러오기) synthesize and vocode(합성 및 실행) Export(추출)만 아셔도 될 것 같습니다.

 

녹음은 말 그대로 마이크로 바로 음성을 녹음할 수 있는것이고,

 

불러오기는 음성파일을 불러와서 학습을 할 수 있는 기능입니다.

 

우측 상단의 텍스트란에는 실행시 인공지능이 할 말을 적는 칸입니다.

 

이상 자신만의 tts(text to speach) 설치 및 실행법이었습니다.

'프로그래밍 > Linux' 카테고리의 다른 글

젯슨나노에서 채굴기  (0) 2021.07.04
Posted by 서융
: