반응형

맥에서의 파일 검색은 Spotlight를 통해 이루어진다.

아래와 같은 Spotlight UI를 통하지 않고 Finder의 검색 기능을 이용해도 내부적으로 Spotlight를 활용한다.

맥의 Spotlight UI

Spotlight를 통한 파일 검색은 이름뿐만 아니라 내용까지 검색하고 데이터베이스화 하기 때문에 빠르고 좋은 검색결과를 보여준다.

하지만 내부 데이터베이스에 문제가 생긴다면 더 이상 맥에서 제공하는 검색을 믿을 수 없게 된다.

지금 나는 맥의 파일 검색 시스템을 믿을 수 없다.

 

나는 삼성 T5 외장 SSD를 exFAT으로 포맷하여 맥의 외장 저장장치로 사용한다.

윈도우도 종종 사용하기 때문에 exFAT 포맷을 사용하고 있다.

이 곳에 프로젝트 파일들을 저장하고 매일같이 사용한다.

그런데 파인더에서 프로젝트 파일을 검색하면 검색이 되지 않는다.

물론 Spotlight에서도 안된다.

 

파일 검색이 되지 않으면 "환경설정 > Spotlight > 개인 정보 보호"에서 폴더를 추가했다 제거하면 데이터베이스 인덱싱을 다시 하기 때문에 파일 검색이 된다.

이 방법은 애플의 공식 문서에 있는 해결 방법이다.

세계 최고 컴퓨터 회사에서 자사 제품에 대해 내놓은 공식 해결방법이라는게 믿기지 않을 정도다.

 

진짜 문제는 이 방법으로 해결이 안된다는 것이다.

인덱싱을 다시하면 검색이 되지만 몇일 지나면 다시 검색이 되지 않는다.

또한 외장 SSD의 폴더에 태그를 지정해도 나중에 태그 항목에서 그 폴더를 볼 수가 없다.

 

다음은 파인더에서 파일 검색에 실패하는 영상이다.

src라는 폴더에서 app.js 파일을 찾는데 뻔히 눈으로 보이는 파일을 찾지 못한다.

 

눈앞에 있는 파일도 못 찾는 바보같은 macOS

 

윈도우 탐색기는 검색하는 순간 해당 폴더의 파일을 직접 찾고 맥의 Spotlight는 데이터베이스에서 찾는다.

그런데 데이터베이스는 문제가 있다. 

따라서 신뢰할 수 없다.

운영체제의 기본중 기본이 파일 관리다. 

그런데 서드파티 앱(Path Finder, Commander One 등)을 사용해야 파일을 찾을 수 있다는게 황당하고 짜증난다.

파일 검색도 못하는데 이쁘면 뭐하나... 기본이 안되어있는데...

최소한 파인더에서는 실제 파일에서 검색해야하는거 아닌가?

 

나만 문제인지 다른 사람들은 잘 사용하는거 같다.

가끔 문제가 있으면 위에 써놓은 해결 방법을 사용하면 된다는 식이다.

맥은 원래 그렇게 쓰는건가 보다.

 


# 추가

내장 SSD에 파티션을 나누고 exFAT으로 포맷한 뒤 파일을 추가했다.

역시 파인더에서 파일 검색이 되지 않는다.

이 볼륨도 Spotlight의 환경설정에서 추가/삭제 하니 검색이 된다.

언제 또 검색이 안될지 기대된다.

 

 

반응형
반응형

scrcpy란?

데스크탑 컴퓨터에서 Android 장치를 제어할 수 있는 무료 오픈 소스 화면 미러링 응용 프로그램이다.

읽을 땐 screen copy로 읽는다.

 

homebrew 설치

scrcpy를 터미널을 통해 설치하기 위해 homebrew를 먼저 설치해준다.

터미널을 열고 다음 명령어를 복사 붙여넣기 후 실행

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

 

터미널에서 scrcpy 설치

터미널에서 다음 명령어를 순차적으로 실행

설치 시간이 꽤 걸린다.

brew install scrcpy

brew cask install android-platform-tools

 

android-platform-tools까지 설치 완료된 모습

scrcpy 실행

안드로이드 디바이스를 mac에 연결한 후 터미널에 다음을 입력하여 실행

scrcpy

 

안드로이드 미러링이 성공한 모습

사용하기

mac에서 마우스로 터치하고 키보드로 입력이 모두 가능하다.

다만 디바이스의 물리 버튼을 대체할 UI가 따로 나오지 않기 때문에 다음과 같이 키보드 단축키를 통해 물리 버튼을 대체해야한다.

switch fullscreen mode Ctrl+f
resize window to 1:1 (pixel-perfect) Ctrl+g
resize window to remove black borders Ctrl+x | Double-click¹
click on HOME Ctrl+h | Middle-click
click on BACK Ctrl+b | Right-click²
click on APP_SWITCH Ctrl+s
click on MENU Ctrl+m
click on VOLUME_UP Ctrl+↑ (up)
click on VOLUME_DOWN Ctrl+↓ (down)
click on POWER Ctrl+p
turn screen on Right-click²
paste computer clipboard to device Ctrl+v
enable/disable FPS counter (on stdout) Ctrl+i
install APK from computer drag & drop APK file
push file to /sdcard/ drag & drop non-APK file

https://github.com/Genymobile/scrcpy/issues/304

 

 

scrcpy 실행 스크립트

연결 시 마다 터미널을 열고 "scrcpy" 명령어를 입력하는게 귀찮기 때문에 실행 스크립트를 만들어 사용한다.

스크립트 편집기를 열어 신규 문서를 하나 만들고 다음과 같이 입력한다.

tell application "Terminal"
	do script "scrcpy"
end tell

 

입력 후 "파일 > 내보내기"를 선택하면 다음과 같은 UI창이 나오는데 여기서 파일 포맷을 "응용 프로그램"으로 선택한 후 적당한 곳에 저장한다.

파일 포맷을 "응용 프로그램"으로 선택
응용 프로그램으로 저장된 스크립트 파일

이제 이 프로그램을 실행하면 터미널과 scrcpy가 자동으로 실행된다.

 

단점

  • 사운드는 디바이스에서 재생된다.
  • 구글 키보드(Gboard)를 설치해야 mac에 연결된 키보드로 한글 입력이된다.(갤럭시 노트5 기준)
  • scrcpy에서 한/영 전환이 Shift+Space인데 macOS에서 한/영 전환을 Shift+Space로 해놓은 경우 scrcpy에서 한/영 전환이 안된다.

 

 

참고

http://egloos.zum.com/kim0522ms/v/6548026

 

[scrcpy] MacOS에서 안드로이드 장치 미러링

삼성 휴대폰의 경우, 갤럭시 S9 이하의 휴대폰은 자체적으로 제공하는 SideSync 프로그램을 활용하여 MacOS 에서도 스크린 미러링이 가능하다. 하지만 삼성의 갤럭시 S9 이후 출시 모델들은 SideSync의

egloos.zum.com

 

 

 

 

 

반응형
반응형

homebrew 설치

python3를 homebrew를 통해 설치하기 위해 homebrew를 먼저 설치한다.

설치를 위해 터미널을 열고 다음 명령어를 실행한다.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

명령어는 다음 사이트에서 복사할 수 있다.

https://brew.sh/index_ko

 

 

위 명령어를 실행하면 정말 설치할지를 한 번 물어본 후 설치가 진행된다.

설치전에 설치할 파일들을 알려준다.
설치 완료

Python 설치

터미널에서 다음 명령어 실행

brew install python3

Python3 설치 완료

 

Python3 설치 확인

 

IntelliJ에서 Python 프로젝트 생성하기

일단 IntelliJ에 Python Plugin이 설치되어있어야 한다.

Preferences > Plugins에 가서 Python을 설치해준다.

python을 검색하여 설치

Python Plugin을 설치한 후 새로운 프로젝트를 생성하면 Python이 추가된걸 볼 수 있다.

Python Plugin이 추가된 모습

하지만 아직 SDK에 연결되지 않았기 때문에 상단의 Project SDK 항목을 열어서 지금 설치한 Python 3를 선택해주면 된다.

 

프로젝트가 생성됐으면 .py 파일을 하나 만들고 작동을 테스트 해본다.

작성된 .py 파일을 실행하기 위해 파일에서 우클릭 "Run"을 선택
실행 결과 "hello world!!" 출력

 

참고

https://freehoon.tistory.com/122

 

[Python] macOS Python 3.x 설치 및 Intellij 적용

이 포스팅의 샘플 게시판 개발 환경은 MAC OS, STS, OpenJDK11 입니다. MAC OS, Python 3.x 버전 설치하기 MAC OS 에는 기본적으로 파이썬 2.7.10 버전이 설치 되어 있습니다. 버전을 확인 하는 방법은 아래와 같

freehoon.tistory.com

 

 

반응형
반응형

파일 검색 안될 때 해결

macOS에서 파일을 검색하는데는 두 가지 방법이 있다.

1. Spotlight 이용.

2. Finder에서 Cmd+F를 눌러서 나타나는 검색 창에서 검색.

 

그런데 Finder에서 현재 보고 있는 파일을 검색해도 검색이 안되는 경우가 있다.

그럴때는 해당하는 파일이 있는 디스크를 "시스템 환경설정 > Spotlight > 개인 정보 보호"에 추가 했다가 제거하면 된다.

+버튼을 눌러 추가했다 -버튼을 눌러 제거하면 된다.

 

검색 영역을 현재 폴더로 변경하기

macOS는 Finder에서 Cmd+F를 눌러 검색창을 띄울 때 기본 검색 영역이 "Mac"으로 설정되어있다.

현재 'Medium'이라는 폴더에서 검색을 했지만 현재 폴더가 아닌 'Mac'이 기본 선택된 모습니다.

이를 현재 Finder에서 보고 있던 폴더로 설정해줄수가 있다.

Finder의 "환경설정 > 고급 > 검색할 때"를 "현재 폴더 검색"으로 바꿔주면 된다.

이제 Finder에서 Cmd+F를 눌러 검색창을 띄울 때 기본으로 현재 폴더가 선택된다.

이렇게 현재 보고 있던 'Medium'이라는 폴더가 기본 선택된다.

 

반응형

'Digital Story' 카테고리의 다른 글

[macOS] 맥에서 컬러 색상값 알아내기  (0) 2020.08.19
iTistory에서 블로깅 테스트  (0) 2010.04.16
VMWare로 Snow Leopard 설치하기  (3) 2010.03.28
반응형

준비물

  • 디바이스 드라이버
  • Android SDK
  • JDK
  • NDK

 

준비물 설치

디바이스 드라이버

삼성 갤럭시 시리즈의 경우 "Android File Transfer" 설치

https://www.android.com/filetransfer/

 

Android File Transfer

Android File Transfer Browse and transfer files between your Mac computer and your Android device. Download now For Mac OS X only. No extra software is needed for Windows. Supports macOS 10.7 and higher.

www.android.com

 

Android SDK

https://developer.android.com/studio

 

Download Android Studio and SDK tools  |  Android 스튜디오

developer.android.com

 

JDK

Unity의 Preferences > External Tools > Use embedded JDK 를 체크한다면 설치할 필요 없다.

만약 버전이 맞지 않거나 이미 설치된 JDK를 사용한다면 체크 해제한다.

 

 

NDK

NDK는 IL2CPP 사용 시 필요한 라이브러리이다.

Preferences 창에서 다운로드할 수 있다. 

Windows에서는 exe 파일로 다운되고 Mac에서는 Zip 파일로 다운된다. 이를 설치하거나 압축해제하고 이 경로를 넣어주면 된다.

 

 

Unity에서 SDK 설정

Unity 설정은 Preferences 창에서 한다.(Unity > Preferences)

여기서는 Android SDK 설정만 설명한다.

 

Android SDK 설정

Android Studio를 실행하면 다음과 같은 화면이 나오는데 하단 Configure를 클릭하여 SDK Manager창을 연다

SDK Manager 창의 Android SDK Location의 경로를 Unity Preferences 창의 Android SDK란에 넣는다.

SDK Manager창의 Android SDK Location 경로를 복사
Unity Preferences창의 Android SDK 경로에 붙여넣는다.

 

 

빌드

Build Settings창을 열고(File > Build Settings) 플랫폼을 Android로 바꿔준다.

Android를 선택하고 Switch Platform을 클릭하여 플랫폼 변경

플랫폼 변경이 완료되면 유니티 아이콘이 Android 항목 옆에 표시된다.

플랫폼이 Android로 변경된 모습

여기서 Build를 누르면 apk 파일을 저장할 경로를 지정하고 빌드가 된다.

Build And Run은 Build와 동일하지만 빌드 완료 후 연결된 디바이스에 apk 파일을 옮기고 실행까지 자동으로 진행한다.

 

빌드 시 SDK 경로 에러나는 경우

SDK 경로를 제대로 지정했는데도 다음과 같은 에러가 난다면 Android SDK Manager에서 tools를 받아야한다. 

SDK 경로를 잘 못지정한게 아니라 "Android SDK Tools"가 없어서 나는 에러다.

 

Android SDK Manager의 SDK Tools 탭에서 "HIde Obsolete Packages"를 체크 해제하면 "Android SDK Tools(Obsolete)" 항목이 나오는데 이를 선택하고 Apply를 누르면 설치된다.

"Android SDK Tools"를 Android에서는 더 이상 지원하지 않고 Unity에서는 아직 사용하기 때문에 나타나는 에러이다.

 

빌드 후 디바이스에 앱이 갱신되지 않는 경우

디바이스에 이미 윈도우에서 빌드한 앱이 들어있다면 갱신되지 않으니 삭제후 "Build And Run"하면 잘 된다.

 

 

반응형
반응형

1. Android Studio 설치

https://developer.android.com/studio

 

2. CMD or PowerShell 창 열어서 여기로 이동

"C:\Users\[사용자이름]\AppData\Local\Android\Sdk\platform-tools"

 

3. 다음 명령어로 현재 컴퓨터에 연결된 안드로이드 기기의 디버깅 로그 출력

  • adb logcat : '안드로이드 폰'에서 발생하는 모든 이벤트 표시
  • adb logcat -s Unity : (안드로이드 폰에 설치된) '유니티로 개발된 앱'에서 발생하는 유니티 이벤트 표시
  • adb logcat Unity:I Native:I *:S : 위와 동일하나 유니티 로그캣만 표시
  • cmd창 대신 PowerShell을 띄운 경우 .\adb.exe라고 입력해야한다.

 

 

반응형
반응형

게임에 사용되는 용어는 대부분 사전에 나오지 않는다. 또한 검색도 힘들고 찾았어도 제대로된 설명인지 확인 불가인 경우가 많다.

그런데 ncsoft의 블로그에서 게임 용어에 대해 잘 설명해놓은 시리즈를 찾을 수 있었다. '게임으로 배우는 영어'라는 시리즈이고 그동안 궁금했던 게임 관련 용어들의 어원 및 유래를 재미있게 잘 정리해놓았다.

이 글은 내가 나중에 찾아볼 수 있게 아주 간단히 정리만 했고 ncsoft의 블로그에 가면 제대로된 설명과 사진을 볼 수 있다. 링크는 이 글 끝에 걸어두었다.

 

 

CC기

Crowd Control, 군중 제어 기술, 군중 제어 장치

기절, 침묵, 감속, 중독, 최면 등 플레이어의 행동에 제약을 주는 모든 기술을 CC기라 한다.

 

Mez기

Mesmerize, 최면을 걸다, 매혹하다

움직임을 제어하거나 무력화하는 기술, CC기의 하위개념

 

Stun

Sturn, 기절시키다

기절시켜 어떤 행동도 할 수 없게 하는 무력화 기술

 

DOT

Damage over time

일정 시간 지속적으로 피해를 주는 기술

화상, 중독 등

 

Enchant 인챈트

Enchant 황홀하게 만들다, 마법을 걸다

장비를 강화시키는 행위

 

Stat 스탯

Status 상태

캐릭터의 능력치

 

능력치 약어

힘 Str Strength

민첩 Dex Dexterity

체력 Con Constitution

지식 Int Intelligence

지혜 Wis Wisdom

매력 Cha Charisma

 

Mob 몹

Mobile, 움직이다

게임 내에서 스스로 움직이는 모든 개체들을 모바일(Mobile)이라 부르고 이를 줄여서 몹(Mob)이라 부름

 

Nerf or Nurf 너프

Nerf 남의 차에 부딧치다

사전의 단어와 달리 게임에서는 밸런스 상 능력치를 '약화시킨다'는 뜻으로 쓰인다.

이유는 '울티마 온라인'에서 게임 내 칼의 공격력을 낮추었는데 너무 낮춰서 장난감 칼을 휘두른 것과 같았고 아동용 장난감 브랜드 이름인 Nerf가 약화시킨다는 의미로 사용되었다.

 

Buff 버프

Buff 애호가, 좋은 몸, 매니아, 연마

밸런스 상 능력치를 '강화시킨다'는 뜻 또는 일시적으로 강화 효과를 주는 스킬을 뜻한다.

예전 소방관들이 버팔로 가죽으로 만든 방화복을 입었는데 버팔로 가죽으로 만들어서 이를 버프 코트라고 불렀다. 여기서 '버프'라는 단어가 근육질 남자들, 또는 무언가를 열정적으로 지지하는 사람들을 지칭하게 되었고 게임에서 '기술을 사용하여 지지해준다, 강하게 해준다'는 의미로 사용됐다.

 

Channeling Skill 채널링 스킬

스킬 시전 또는 지속시간 동안 시전자가 다른 행동을 할 수 없는 스킬. 말뚝딜이라고도 불린다.

시전자가 상태이상에 걸리면 스킬이 취소되는 경우가 많다.

 

Raid 레이드

Raid 급흡하다, 단속, 침입하다

게임 내에서는 여러 사람이 파티를 이루어 대규모로 함께 사냥하는 것을 뜻한다.

 

Tanker 탱커

tanker 유조선, 공중 급유기

사전적 의미는 유조선 등 기름 탱크등을 설치한 배, 항공기, 트럭 등을 의미한다.

게임에서는 탱크처럼 강한 체력을 가지고 전방에서 데미지를 받아내는 캐릭터를 의미한다.

일부러 데미지를 흡수하는 행위 자체를 'Tanking'한다고 표현하는데서 Tanker가 유래했다고도 한다.

 

Dealer 딜러

Dealer 상인, 판매업자 / Deal 다루다, 거래, 가하다

게임에서 딜러는 상대에게 공격력이 강한 캐릭터를 의미한다.

상대에세 데미지를 주는 행위를 Dealing 한다고 표현하는데서 딜러가 유래했다고 한다.

사전으로 뜻을 유추하기 힘들다.

 

Healer 힐러

Healer 치료자

사전적의미와 게임에서의 의미가 딱 맞아 떨어진다.

동료를 치료하는 역할을 갖는 캐릭터를 뜻한다.

 

Aggro 어그로

Aggro 난폭, 도발, 싸움

사전적 의미와 달리 Aggressive Behaviour(공격적인 행위)에서 유래됐는데 어그로는 적대치를 의미한다.

적대치는 적대적인 수치를 뜻하는데 이는 가장 적대적인 캐릭터부터 공격하기 위한 수치이다.

따라서 몬스터의 관심을 끌기 위한 수치인 어그로가 곧 '몬스터의 관심을 끄는 행위'를 뜻하게 되었고 현실에서도 관심을 끄는 사람의 뜻으로 쓰이기 시작했다.

 

Farming 파밍

Farming 농업, 농사, 사육업

몹이나 미니언을 잡으면서 경험치를 쌓거나 아이템을 모으는 것을 농사에 비유한 것이다.

우리나라에서는 노가다라고도 한다.

 

Ganking 갱킹

Gank ~을 훔치다, 소형무기로 처형하다.

유래로 보자면 영어 단어와는 별 상관없이 게임에서는 몰래 덮쳐서 죽이고 떠나는 것이다.

유래는 수적으로 우세한 쪽이 협공으로 한 명을 킬하는 형태를 뜻하는 'Gang kill'에서 유래했다.

 

Roaming 로밍

Roam 돌아다니다, 배회하다

맵이나 던전 이곳저곳을 빠르게 돌아다니는 행위를 뜻한다.

 

 

HUD

Head-up Display

게임 내 환경과 동떨어져 플레이어에게 정보를 알려주기 위해 정보가 표시되는 요소

 

Lag 지연

Latency

게임의 반응이 느리거나 없는 경우

 

Glitch

버그, 의도하지 않은 여러 상황

'미끄러지다'라는 뜻의 독일어 'glitshen'에서 유래

 

OP

Overpowered 

압도적으로 강해 게임 밸런스를 해치는 캐릭터, 스킬, 몬스터 등

 

Imba

Imbalanced

밸런스 불균형

 

Mod

Modification

기존 게임의 그래픽이나 시스템을 변형하거나 변조해 만든 2차 창작 콘텐츠

 

PK

Player kill

게임 내에서 다른 플레이어의 캐릭터를 죽이는 행위

현피 = 현실 + Player kill

 

SMURF 스머프

다른 존재로 위장해서 나쁜 짓을 하는 사람, 부계정으로 뉴비 학살하는 고인물

 

MMR

Match-making rating

실력이 비슷한 플레이어끼리 대결할 수 있도록 점수를 매기는 것

 

 

 

 

 

참고

게임으로 배우는 영어

 

반응형
반응형

'Object Oriented Programming'은 '객체 지향 프로그래밍'으로 번역이 된다.

그런데 여기서 Object 즉 객체는 무엇일까?

 

지금까지 나는 단순히 하나의 독립된 대상으로 생각하고 있었다.

틀린 말은 아니지만 정확한 말도 아니다.

개체로 생각했다고 볼 수 있다.

 

사전적 뜻은 이렇다.

객체(客:손 객, 體:몸 체) : 주체로부터 독립되어 있는 인간의 인식과 실천의 대상

개체(個:낱 개, 體:몸 체) : 단일하고 고유한 독자적 존재

 

객체는 주체와의 관계를 생각해야한다.

주체가 바라보는 대상이 객체이다.

객체 입장에서 바라보면 자신은 주체이다.

주체가 없으면 객체도 존재하지 않는다.

 

프로그래밍의 세계에서 풀어보자.

프로그램은 목표를 위해 행동하는 주체이다.

이 주체가 행동하는데 필요한 많은 요소들을 의미가 있는 단위로 나눈게 객체이다.

'객체 지향 프로그래밍'은 주체(프로그램)을 객체(클래스)로 나누어 프로그램을 짜는 것을 말한다.

 

이제 개체를 알아보자.

개체는 독립적으로 구분될 수 있는 하나를 말한다.

즉 프로그램도 개체이고 그안의 변수, 함수들도 개체이다.

하지만 프로그래밍 세계에서는 보통 클래스에서 실체화된 인스턴스를 말한다.

 

그동안 이 두 개념을 구분하지 못했다.

책을 봐도 혼용하여 쓰는 경우가 흔하고 어떤 이는 "객체 지향"을 "개체 지향"으로 바꿔야한다는 사람도 있다.

일면 맞는 말이기도 하다.

기능별로 작은 책임만 있는 개체들의 조합으로 전체 프로그램을 만들어내니 말이다.

 

개체는 이해가기 쉽다.

그런데 객체는 이해하기 어렵다.

왜 어려운지를 생각해보니 객체를 이해하려면 주체라는 대상이 반드시 필요한데 그걸 간과했다.

 

주체와 객체.

객체와 주체.

한쪽이 없으면 다른 한쪽을 이해할 수 없는 개념이다.

반응형

+ Recent posts