카테고리 보관물: 쌀먹

VMware 사용 로드나인 6개 PC 스펙. 플레이 결과.

가상머신을 사용해서 몇개나 쌀먹을 돌릴 수 있을까? 한번 직접 해봄. 가상머신 종류는 많지만 가장 대중적이고 최근에 무료 전환한 VMware 라는 프로그램으로 진행함

PC 스펙

최근에 PC를 구매해서 사양이 나쁘지 않음

라이젠 5600, 32GB, RTX4060

VMware 설치

https://support.broadcom.com 이동 및 회원가입

VMware Cloud Foundation 클릭

My Download >>> workstation 검색 >>> VMware Workstation Pro 클릭

다운로드

설치는 무료버전으로 설치함

가상머신 생성

4개 생성함. CPU 및 메모리 점유율 넉넉함

내가 볼 땐 라이젠 5600, RTX4060, 32기가 메모리로 6개 이상 충분히 가능하다고 보여짐

각 가상머신 스펙임. 3D 그래픽 사용해야 함. 아니라면 게임 돌리기 힘들고 굳이 VMware를 쓸 필요없음

각 4기가 메모리, CPU 프로세서 2개, 저장공간 60기가 정도 할당함

플레이 결과. 쌀먹이 안되는 이유

3일차에 모두 영구정지 먹음

물론 뚫는 방법이 있다고는 하나 일반인이 하기엔 어렵고 노력대비 뭐하는 짓인가 싶음. 그리고 무엇보다 불안한 쌀먹을 지향하지 않음.

참고로 NC 게임은 가상머신 구동 시 게임가드에서 막혀 실행조차 되지 않음

결론! 가상머신은 사용하지 말자!

메크로, 이미지 인식 > 텍스트 변환 최고의 방법

이미지 > 텍스트 변환하는 방법은 파이썬 활용 시 다양한 라이브러리가 존재한다. 그 중 pytesseract 라이브러리 활용법은 아래 링크에 정리해놨다.

링크 클릭

그 밖에도 다양한 방법이 있지만 제가 사용하는 방법 하나를 더 공유한다.

Google Cloud Vision

구글에서 제공하는 API이다. 파이썬 및 다양한 언어로 활용 가능하다.

설치하면 법은 여기에 잘 정리되어 있다.

구글에서 제공하는 만큼 무료는 아니고 한정 유료이다.

가격표

전체 가격표를 보려면 여기를 클릭

메크로 사용 이미지 내의 문자를 인식하려면 써야하는 기능은 TEXT_DETECTION 이면 충분하다.

가격은 아래와 같다.

처음 1000개 무료, 그 다음부터 1000개 단위로 1.5달러 정도 소요된다.

만약 메크로 1개를 1분당 1장씩 찍는다면 가격은 얼마일까?

(21,600(1달) – 1000(무료 분)) / 1000 * 1.5 = 30.9달러

환율 1400원 계산 시 한달에 43,260원씩 청구된다.

싸다고 생각되면 활용해보시길… 성능은 완벽하다.

[python] pytesseract 활용 이미지 인식하는 법 정리

라이브러리 다운로드

pip install pytesseract pillow

Tesseract-OCR 엔진

Tesseract-OCR 엔진을 별도로 설치해야함
윈도우 환경에서는 아래 링크에서 다운로드

https://github.com/UB-Mannheim/tesseract/wiki


macOS: Homebrew를 사용하여 설치

brew install tesseract

환경 변수 삽입

윈도우 환경이라면 환경 변수 설정 필요 (코드에 경로 적어도 무방)

윈도우 검색 창에 “환경”를 입력하고 “시스템 환경 변수 편집”을 클릭

환경 변수(하단 위치) > 시스템 변수 > Path 에 Tesseract-OCR 설치한 경로 입력

설치 확인

CMD > 터미널에서

tesseract --version

정상 설치 확인한다.

한국어 언어 추가

기본 설치에는 영어만 있음

한국어는 별도로 다운로드 필요 아래 링크에서 확인

https://github.com/tesseract-ocr/tessdata

kor.traineddata 다운로드 받아 C:\Program Files\Tesseract-OCR\tessdata 복사

여기까지 했다면 환경 설정 완료

설전 테스트

import pyautogui
import io
from PIL import Image
import pytesseract
from PIL import Image

# 특정 영역 캡처 (예: (x=0, y=0)에서 시작하여 너비=300, 높이=400인 영역)
region = (0, 190, 220, 40)
screenshot = pyautogui.screenshot(region=region)

# 스크린샷 이미지를 메모리 내에서 저장하기 위해 BytesIO 사용
buffered = io.BytesIO()
screenshot.save(buffered, format="PNG")
screenshot.show()
# 이미지 파일을 저장할 경로와 파일명
file_path = "image\\screenshot_temp.png"

# 스크린샷을 파일로 저장
screenshot.save(file_path)
print(f"스크린샷이 저장되었습니다: {file_path}")

# 스크린샷 저장 경로 리스트화
image_list = [file_path]


# Tesseract 경로 설정 (필요한 경우)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 이미지 파일 열기
image = Image.open(file_path)

# 이미지에서 텍스트 추출
text = pytesseract.image_to_string(image)

print(text)

위 코드는 해당 좌표의 스크린 샷 찍고 이미지를 텍스트로 변환한다.

영어

위 스크린샷을 텍스트 한 결과

얼추 정확하다

한글

한글의 경우 코드에서 수정이 필요

text = pytesseract.image_to_string(image, lang='kor')

언어 선택안하면 무조건 영어번역이다.

위 이미지 텍스트화 결과

한글은 노답


그렇다면 좀 더 정돈된 이미지는 어떨까?

위 이미지로 실행한 결과

오 아주 제법이다.

닷넷을 운용할 수 있는 프로그래밍 언어

닷넷은 다음 세 가지 프로그래밍 언어를 지원합니다.

C#

C#은 형식이 안전한 최신 개체 지향 프로그래밍 언어입니다. C#은 C 언어 제품군에서 시작되었으며 C, C++, Java 및 JavaScript 프로그래머에게 친숙할 것입니다.

F#

F# 언어는 함수형, 개체 지향 그리고 명령형의 프로그래밍 모델을 지원합니다.

Visual Basic

닷넷 언어 중에서 Visual Basic 구문이 일반적인 인간 언어와 가장 유사하여 쉽게 배울 수 있습니다. Microsoft에서 새로운 기능을 적극적으로 개발하고 있는 C# 및 F#과 달리 Visual Basic 언어는 안정적입니다. 웹앱에서는 Visual Basic이 지원되지 않지만 Web API에서는 지원됩니다.

최신글

닷넷을 운용할 수 있는 플랫폼 정리

닷넷은 다양한 플랫폼에서 운용이 가능합니다. 아래 목록은 닷넷을 운용할 수 있는 플랫폼입니다.

플랫폼 종류

  • Windows
  • macOS
  • Linux
  • Android
  • iOS
  • tvOS
  • watchOS

지원하는 프로세서 아키텍처

  • X64
  • x86
  • ARM32
  • ARM64

닷넷을 사용하면 운영 체제 API와 같은 플랫폼별 기능을 사용할 수 있습니다. 예를 들어 Windows의 Windows Forms 및 WPF, Xamarin과 각 모바일 플랫폼 간의 기본 바인딩 등이 있습니다.

최신글

닷넷으로 간단한 애플리케이션 만들기

이 문서에서는 “Hello World!” .NET 앱을 만들고 실행해보려고 합니다. .NET이 무엇인지 잘 몰라도 그냥 한번 따라해봅니다.

애플리케이션 만들기
먼저 컴퓨터에 .NET SDK를 다운로드하여 설치합니다.

그다음 명령 프롬프트(윈도우키 + cmd) 같은 터미널을 엽니다. 다음 dotnet 명령을 입력하여 C# 애플리케이션을 만들고 실행합니다.

dotnet new console --output sample1
dotnet run --project sample1


그럼 다음과 같이 출력이 됩니다. 출력

Hello World!

간단한 닷넷 애플리케이션을 만들어보았습니다.

최신글

디버거란 무엇인가?

코드 에러

개발자로서 작업하다 보면 이따금 내 코드가 작동하지 않을 때가 있습니다.

내 코드가 왜 작동하지 않을까….

개발-수정-개발-수정은 개발자에게 일상입니다. 가장 짧은 시간 내에 실패를 최소화하면서 버그를 찾아 수정하는 데 익숙해지는 것이 개발자에게는 매우 중요합니다. 프로그램에 버그가 있으면 보통 자신만의 방법으로 문제를 처리하게 되는데 아마도 디버깅 방법 중 하나 이상을 이미 시도해 봤을 겁니다.

  • 프로그램이 ‘작동해야’ 하므로 프로그램을 다시 실행해 봅니다.
  • 고무 오리 인형에게 문제를 설명합니다.
  • 문제를 찾기 위해 코드를 다시 읽어봅니다.
  • 산책하면서 머리를 식힙니다.
  • 코드에서 몇 개의 Console.WriteLine("here") 메시지를 무의미하게 채웁니다.

이러한 방법은 효과적일 수도 있고 그렇지 않을 수도 있습니다. 일반적으로 가장 효과적인 방법은 디버거를 사용하는 것입니다. 하지만 디버거란 정확히 무엇일까요?

디버거

디버거는 분석 방법으로 프로그램의 실행 흐름을 관찰하고 제어하는 데 사용되는 소프트웨어 도구입니다. 설계 목표는 버그의 근본 원인을 찾고 해결하도록 돕는 것입니다. 디버거는 자체 실행 프로세스에서 프로그램을 호스팅하거나 .NET과 같이 실행 중인 프로그램에 연결된 별도의 프로세스로 실행되는 방식으로 작동합니다.

디버거는 다양한 버전으로 제공되며 명령줄에서 직접 작동하는 경우도 있고 그래픽 사용자 인터페이스와 함께 제공되는 경우도 있습니다. 이 모듈에서는 Visual Studio Code의 통합 그래픽 디버거를 사용합니다.

디버거를 사용하는 이유

디버거를 통해 코드를 실행하지 않는 경우 프로그램에서 발생하는 상황을 ‘추측’하는 것일 수 있습니다. 디버거를 사용할 경우의 주요 혜택은 프로그램 실행을 ‘조사’할 수 있다는 것입니다. 프로그램 실행을 한 번에 코드 한 줄씩 추적할 수 있으며, 이러한 방식을 통해 잘못된 추측을 방지합니다.

모든 디버거에는 고유한 기능 세트가 있습니다. 거의 모든 디버거와 함께 제공되는 가장 중요한 기능 두 가지는 다음과 같습니다.

  • 프로그램 실행 제어. 프로그램을 일시 중지하고 한 단계씩 실행하여 실행되는 코드와 프로그램 상태에 미치는 영향을 확인할 수 있습니다.
  • 프로그램 상태 관찰. 예를 들어 코드를 실행하는 동안 언제든지 변수 값과 함수 매개 변수를 확인할 수 있습니다.

숙련된 디버거 사용은 개발자의 중요한 기술이지만 간과되는 경우가 많습니다. 능숙하게 사용하면 보다 효율적으로 코드에서 버그를 추적할 수 있으며 프로그램 작동 방식을 신속하게 파악할 수도 있습니다.

최신글

.NET 프로젝트에서 종속성 업데이트 관리

앱에 사용하는 종속성은 자주 업데이트할 수 있으며 새 기능, 버그 수정, 중요한 보안 업데이트를 포함할 수도 있습니다. 만든 앱은 소규모이고 종속성이 하나뿐입니다. 앱을 업데이트하는 것은 간단합니다. 최신 기능을 활용하려면 앱을 업데이트할 수 있는지 확인합니다.

앱 종속성 업그레이드

DotNetDependencies.csproj 파일에서 dependencies를 확인합니다. 다음 코드와 같이 표시됩니다.

<ItemGroup>
     <PackageReference Include="Humanizer" Version="2.7.9" />
</ItemGroup>

설치된 종속성을 확인

.NET CLI

dotnet list package

그러면 요청된 버전과 최종 확인된(설치된) 버전이 출력됩니다.

Top-level Package      Requested   Resolved
> Humanizer            2.7.9        2.7.9

오래된 종속성을 확인

.NET CLI

dotnet list package --outdated

다음 출력과 같을 수 있습니다. Latest 열에 다른 값이 표시될 수도 있습니다.

Project `DotNetDependencies` has the following updates to its packages
   [net5.0]:
   Top-level Package      Requested   Resolved   Latest
   > Humanizer            2.7.9       2.7.9      2.8.26

Latest 버전 업데이트

.NET CLI

dotnet add package Humanizer 

출력은 다음과 같습니다.

출력복사

info : PackageReference for package 'Humanizer' version '2.8.26' updated in file 'C:\Users\jamont\Desktop\DotNetDependencies\DotNetDependencies.csproj'.

이 출력은 프로젝트 종속성이 업데이트되었음을 명시합니다.

특정 버전의 종속성으로 업그레이드하려는 경우 --version 매개 변수에 추가하고 특정 버전을 지정할 수 있습니다.

.NET CLI

dotnet add package Humanizer --version 2.8.26

마지막으로 --prerelease 매개 변수에 추가하여 최신 시험판 패키지를 설치할 수도 있습니다.

.NET CLI

dotnet add package Humanizer --prerelease

결과는 약간 다를 수도 있습니다. 나열되는 버전은 사용 가능한 최신 패키지 버전에 해당합니다.

최신글

닷넷 패키지 검색 및 설치

패키지 설치

패키지를 설치하는 데는 몇 가지 방법이 있습니다. 비쥬얼스튜디오에는 기본 제공되는 패키지 관리자 명령줄과 그래픽 사용자 인터페이스가 있습니다. 프로젝트 파일에 패키지 참조를 수동으로 추가할 수 있습니다. 또는 Paket이나 닷넷 Core CLI 같은 CLI(명령줄 인터페이스) 도구를 통해 설치할 수 있습니다.

닷넷 Core CLI은 터미널에서 명령을 호출하여 .NET 프로젝트에 패키지를 추가할 수 있습니다. 일반적인 설치 명령은 dotnet add package <name of package>와 같습니다. add package 명령을 실행하면 명령줄 도구는 전역 레지스트리에 연결되고 패키지를 가져와서 모든 프로젝트가 사용할 수 있는 캐시된 폴더 위치에 저장합니다.

패키지 검색

개별 개발자는 NuGet.org에서 전역 레지스트리를 사용하여 앱에 필요한 패키지를 찾고 다운로드할 수 있습니다.

패키지는 전부 공개될수도 일부만 공개적으로 제공될 수도 있습니다. 일부는 제한되어 특정 기업의 직원에게만 제공될 수도 있습니다. 패키지가 있을 수 있는 위치는 다음과 같습니다.

  • 레지스트리 : NuGet.org 레지스트리와 같은 전역 레지스트리를 예로 들 수 있습니다. 프라이빗 또는 퍼블릭일 수 있는 고유한 레지스트리를 호스트할 수 있습니다. GitHub 및 Azure DevOps 같은 서비스는 프라이빗 레지스트리를 사용 가능하게 만듭니다.
  • 파일 : 로컬 폴더에서 패키지를 설치할 수 있습니다. 고유한 닷넷 라이브러리를 개발하려고 하고 로컬에서 패키지를 테스트하려고 하거나 특정 이유로 레지스트리를 사용하지 않으려는 경우에는 패키지에서 설치하는 것이 일반적입니다.

닷넷 명령어 상세

닷넷 Core CLI에는 매우 많은 명령이 있습니다. 이러한 명령은 패키지 설치, 패키지 작성, 닷넷 프로젝트 초기화 등의 작업에 도움이 됩니다. 허나 모든 명령을 자세히 알 필요는 없습니다. 닷넷을 사용하기 위해선 일부 명령어만 알면 되고 닷넷 사용이 많아질수록 나도 모르게 다양한 범주의 명령을 사용하게 될 겁니다.

기본적으로 “종속성 관리”, “프로그램 실행”, “패키지 작성 및 게시” 쪽의 몇가지 명령어 정도만 숙지하면 좋을 것 같고 모든 명령의 자세한 목록을 보려면 터미널에 dotnet --help를 입력하면 찾아볼 수 있습니다.

패키지 설치 명령어

dotnet add package <dependency name> 명령을 사용하면 애플리케이션의 일부로 사용되어야 하는 일반 종속성을 설치합니다.

폴더에 있는 패키지를 확인하려면 dotnet list package를 입력하면 됩니다.

종속성 복원

프로젝트를 만들거나 복제하는 경우 포함된 종속성은 프로젝트 빌드 시까지 다운로드되거나 설치되지 않습니다. dotnet restore 명령을 실행하여 프로젝트 파일에 지정된 프로젝트 특정 도구뿐만 아니라 종속성도 수동으로 복원할 수 있습니다.

종속성 삭제

패키지가 더 이상 필요없거나 더 나은 패키지를 발견했을때 기존의 패키지는 삭제해야 퍼포먼스에 도움을 줍니다. 이때 어떤 이유로든 사용하지 않는 종속성 또한 삭제되어야 합니다.

프로젝트에서 패키지를 제거하려면 dotnet remove package <name of dependency>와 같이 remove 명령을 사용합니다. 이 명령은 프로젝트의 .csproj 파일에서 패키지를 제거합니다.

최신글

닷넷 프로젝트와 패키지

닷넷과 패키지

닷넷에는 파일 관리, HTTP, 파일 압축에 이르는 모든 것을 처리하는 많은 핵심 라이브러리가 함께 제공됩니다. 타사 라이브러리로 구성된 대규모 에코시스템도 있습니다. 닷넷 패키지 관리자인 NuGet을 사용하여 핵심 라이브러리를 설치하고 애플리케이션에서 사용할 수 있습니다.

닷넷 및 해당 에코시스템은 ‘종속성’이라는 단어를 많이 사용합니다. 패키지 종속성은 타사 라이브러리입니다. 종속성은 특정 기능을 수행하며 애플리케이션에 추가될 수 있는 재사용 가능한 코드 조각입니다. 타사 라이브러리는 애플리케이션이 작동하기 위해 ‘의존’하는 항목이며, 그래서 ‘종속성’이라는 단어를 사용합니다.

타사 라이브러리는 패키지로 간주하며 리포지토리에 저장될 수 있습니다. 패키지는 관련 기능을 활용할 수 있도록 애플리케이션에 추가할 수 있는 하나 이상의 라이브러리로 구성됩니다.

패키지를 설치할지 여부

닷넷 프로젝트에 패키지가 필요할지 몇가지 고려사항입니다.

더 나은 코드 : 예를 들어 보안과 같은 작업을 처리하고 있으며 인증 및 권한 부여를 구현하려고 할때 개발자 데이터와 고객 데이터를 보호하기 위해 정확하게 수행하는 작업입니다. 많은 개발자가 사용하는 라이브러리와 표준 패턴이 있는데 이와 같은 라이브러리는 개발자에게 항상 필요할 수 있는 기능을 구현하고 문제가 발생하면 패치가 적용됩니다. 직접 만드는 대신 이러한 라이브러리를 사용하는 것이 시간도 절약하고 생산성 및 다른 개발자가 알아보기 쉽습니다. 개발을 할때 고려해야 하는 사항이 너무 많기 때문에 직접 코드를 생산하는 것보다 더 나은 선택이 될 수 있습니다.

시간을 절약 : 위에서도 말씀드린 부분인데 유틸리티 라이브러리나 UI 구성 요소 라이브러리와 같은 대부분의 항목을 직접 빌드할 수 있습니다. 하지만 시간이 걸립니다. 직접 빌드한 결과가 사용 가능한 항목과 비슷하더라도, 필요하지 않다면 이 코드를 작성하는 작업을 복제하는 데 시간을 들이지 않는 것이 좋습니다.

유지 관리 : 개발도 중요하지만 유지보수도 중요합니다. 이는 모든 라이브러리 및 앱을 유지 관리해야 하는 것과 같은 맥락인데요. 유지 관리에는 새 기능 추가 및 버그 수정이 포함됩니다. 라이브러리를 유지 관리하는 것이 개발자나 팀의 시간을 잘 활용하는 것은 아닙니다. 오픈 소스 소프트웨어 팀이 유지 관리하게 하는 것이 더 좋다는 건 누구나 아는 사실입니다.

좋은 패키지 선택

라이브러리를 설치하기 전에 라이브러리의 종속성을 검사하는 것이 좋습니다. 이러한 종속성은 패키지를 사용하도록 결정하는 요인이 될 수도, 사용하지 않을 이유가 될 수도 있습니다. 프로젝트의 종속성을 선택할 때 고려할 몇 가지 요소는 다음과 같습니다.

크기 : 너무 큰 패키지 즉, 종속성 수가 많으면 큰 메모리 공간이 생성될 수 있습니다. 대역폭이 제한되거나 다른 하드웨어 제한이 있는 경우 이 요인은 프로젝트가 느려진다던지 하는 문제가 발생할 수 있습니다.

라이선스 : 라이브러리에 부여된 라이선스가 상업적, 개인적, 교육용 등 의도한 모든 용도에 사용해도 되는지 확인이 필요합니다.

활성 유지 관리 : 꼭 필요한 패키지가 있더라도 오랫동안 업데이트되지 않거나 사용되지 않는 패키지는 결국 문제가 될 수 있습니다.

패키지를 설치하기 전에 https://www.nuget.org/packages/<package name>으로 이동하여 패키지에 대해 자세히 알아볼 수 있습니다. 이 URL을 선택하면 패키지의 상세 페이지로 이동합니다. 설치 전에 한번 방문해서 알아보는 습관이 중요합니다.

최신글