목차

반응형

문제

유니티 포톤 연동 과정에서 에디터 애플리케이션과 빌드 애플리케이션 간의 연동이 안 되는 경우가 발생했다.

이해가 안되는 부분은 다음과 같다.

 

안드로이드 애플리케이션

노트북으로 작업중인 윈도 애플리케이션

맥 에디터 애플리케이션

 

위의 3개 애플리케이션간의 서버 접속은 잘 되지만

맥에서 빌드한 응용 애플리케이션은 자꾸 마스터가 되어서 방에 입장하지 않는 것이다.

 

원인

원인을 찾던 도중 region 설정이 가능하다는 것을 알았다.

마침 내가 맥을 영어 버전으로 사용하고 있던 것이 원이이었던 것일까 region을 하나로 통일하니까 잘 되었다.

 

해결

서버 세팅에서 fixed region을 하나로 바꾸니까 접속이 잘 된다.

반응형
반응형

키보드 단축키 변경, 마우스 세팅 프로그램을 설치하고 맥을 재시작하면 자꾸 그 앱들이 꺼져서 원래 환경으로 돌아간다.

다음과 같이 자동실행을 등록해놓으면 알아서 켜진다.

 

 

 

본인 계정의 Login Items로 들어가서 설정이 필요한 앱들을 등록한다.

 

나는 마우스, 키보드 인풋 바인딩 프로그램을 등록하였다.

반응형
반응형

개요

맥의 파인더에서는 엔터키를 누르면 파일 이름 변경

Command + Delete 해야 Delete 기능이 작동하는데 윈도우를 쓰다가 겪어보면 불편하다.

PresButan이라는 프로그램을 이용하면 변경이 가능하다.

 

설치

프로그램 설치 방법

http://briankendall.net/presButan/ 

 

설치 완료 후 화면

맥에 presButan 설치하자 아이콘만 봐도 개발자의 감성이 적나라하게 드러난다.(또라이인듯)

앱을 실행하면 설정을 이것저것 묻는다.

 

앱을 최초실행하면 나오는 설정화면

앞으로 설정창이 나올 건데 잘 읽으라는 말

 

폴더를 대상으로 엔터키를 누르면 폴더로 들어가는 설정

yes

 

위의 기능과 비슷한 설정이다.

yes

 

딜리트 키를 누르면 파일을 삭제하는지 설정

yes

 

앱이 작동하기 위해서는 추가 설정이 필요하다.

 

시스템 설정 > Security & Privacy

 

Privacy 좌측 리스트의 Accesibility

 

왼쪽 아래 자물쇠를 눌러서 잠금 해제 PresButan 체크하여 등록

 

이제 그러면 엔터를 누르면 이름 변경이 아니라 실행이 되고 딜리트를 누르면 파일이 삭제된다.

 

반응형
반응형

오류

유니티에서 ios 빌드 xocde 프로젝트를 빌드하면 Mopub.h File Not Found 같은 오류가 나는 경우가 있다.

 

또는 프레임워크의 CocoaPods 설치 오류로 인하여

unity Setting up CocoaPods master repo fatal: not a git repository (or any of the parent directories): .git [!] The `master` repo is not a git repo. 

오류가 발생하는 경우가 있다.

 

원인

근본적인 원인은 유니티 ios 빌드하는 경우 cocoapods에 문제가 발생하여 프레임워크가 xcode 프로젝트에 정상적으로 안들어간 상태에서 빌드하는 경우 오류가 발생하였다.

cocoapods 문제로 mopub 광고 프레임워크가 xcode 프로젝트에 정상적으로 들어가지 않은 것 이다.

 

해결

해결하기 위해서는 cocoapods 재설치가 제일 깔끔한 것 같다.

먼저 문제가 있는지 확인을 하기 위하여 아래 디렉토리로 이동한다.

 

pod 파일이 있는 디렉토리로 이동

cd /Users/계정이름/.gem/ruby/2.3.0/bin/

 

pod setup 명령어를 치면 오류가 발생한다.(유니티에서도 위와 같은 오류가 발생 할 것이다.)

./pod setup 명령어를 쳐보면 문제가 있는지 확인 가능하다.

 

cocoapods 제거

sudo gem uninstall cocoapods 명령어로 모든 버전을 제거한다.

 

cocoapods 재설치

gem install --user-install cocoapods

 

pod setup

./pod setup 명령어로 설치를 진행한다.

 

대략 10분정도 걸렸는데 설치 후 유니티에서 ios 빌드를 하면 정상적으로 빌드가 된다.

반응형
반응형

유니티 플레이 스토어를 연동하려는 도중에 오류가 발생하였다.

앱에서 리더보드를 호출하면 아래와 같이 오류 로그가 찍힌다.

04-17 10:38:46.861 13360 13368 E DataBuffer: Internal data leak within a DataBuffer object detected!  Be sure to explicitly call release() on all DataBuffer extending objects when you are done with them. (internal object: com.google.android.gms.common.data.DataHolder@a4c3f4c)

04-17 10:38:46.880 13360 13368 E DataBuffer: Internal data leak within a DataBuffer object detected!  Be sure to explicitly call release() on all DataBuffer extending objects when you are done with them. (internal object: com.google.android.gms.common.data.DataHolder@ca40438)

04-17 10:38:47.012  3668 12103 E Parcel  : Class not found when unmarshalling: com.google.android.gms.auth.api.signin.internal.SignInConfiguration

04-17 10:38:47.012  3668 12103 E Parcel  : java.lang.ClassNotFoundException: com.google.android.gms.auth.api.signin.internal.SignInConfiguration

04-17 10:38:47.012  3668 12103 E Parcel  : at java.lang.Class.classForName(Native Method)

04-17 10:38:47.012  3668 12103 E Parcel  : at java.lang.Class.forName(Class.java:453)

04-17 10:38:47.012  3668 12103 E Parcel  : at android.os.Parcel.readParcelableCreator(Parcel.java:2843)

04-17 10:38:47.012  3668 12103 E Parcel  : at android.os.Parcel.readParcelable(Parcel.java:2797)

04-17 10:38:47.012  3668 12103 E Parcel  : at android.os.Parcel.readValue(Parcel.java:2700)

04-17 10:38:47.012  3668 12103 E Parcel  : at android.os.Parcel.readArrayMapInternal(Parcel.java:3067)

04-17 10:38:47.012  3668 12103 E Parcel  : at android.os.BaseBundle.unparcel(BaseBundle.java:257)

04-17 10:38:47.012  3668 12103 E Parcel  : at android.os.BaseBundle.getString(BaseBundle.java:1086)

04-17 10:38:47.012  3668 12103 E Parcel  : at android.content.Intent.getStringExtra(Intent.java:7706)

04-17 10:38:47.012  3668 12103 E Parcel  : at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:468)

04-17 10:38:47.012  3668 12103 E Parcel  : at com.android.server.am.ActivityStarter.startActivityLocked(ActivityStarter.java:419)

04-17 10:38:47.012  3668 12103 E Parcel  : at com.android.server.am.ActivityStarter.startActivityMayWait(ActivityStarter.java:1308)

04-17 10:38:47.012  3668 12103 E Parcel  : at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:6035)

04-17 10:38:47.012  3668 12103 E Parcel  : at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:5887)

04-17 10:38:47.012  3668 12103 E Parcel  : at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:121)

04-17 10:38:47.012  3668 12103 E Parcel  : at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3863)

04-17 10:38:47.012  3668 12103 E Parcel  : at android.os.Binder.execTransact(Binder.java:682)

04-17 10:38:47.012  3668 12103 E Parcel  : Caused by: java.lang.ClassNotFoundException: com.google.android.gms.auth.api.signin.internal.SignInConfiguration

04-17 10:38:47.012  3668 12103 E Parcel  : at java.lang.Class.classForName(Native Method)

04-17 10:38:47.012  3668 12103 E Parcel  : at java.lang.BootClassLoader.findClass(ClassLoader.java:1355)

04-17 10:38:47.012  3668 12103 E Parcel  : at java.lang.BootClassLoader.loadClass(ClassLoader.java:1415)

04-17 10:38:47.012  3668 12103 E Parcel  : at java.lang.ClassLoader.loadClass(ClassLoader.java:312)

04-17 10:38:47.012  3668 12103 E Parcel  : ... 17 more

04-17 10:38:47.012  3668 12103 E Parcel  : Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

04-17 10:38:51.268 26157 26157 E ViewRootImpl@d3b955f[SignInActivity]: Attempting to destroy the window while drawing!

04-17 10:38:51.268 26157 26157 E ViewRootImpl@d3b955f[SignInActivity]:   window=android.view.ViewRootImpl@b7aaef1, title=com.google.android.play.games/com.google.android.gms.games.ui.signin.SignInActivity

04-17 10:38:51.345 26157 26157 E ViewRootImpl: sendUserActionEvent() returned.

04-17 10:38:52.621 25361 25361 E TokenFragment: Setting result error status code to: 16

04-17 10:39:03.358  5083  5249 E ContactsProvider_EventLog: Flush buffer to file cnt : 1 size : 1Kb duration : 1ms lastUpdatedAfter : 60119 ms mFlush_time_threasold : 2000 mCurrentSize : 593

04-17 10:39:08.527  3290  3290 E audit   : type=1400 audit(1555465148.514:65230): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/crypto" dev="proc" ino=4026535594 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.528  3290  3290 E audit   : type=1400 audit(1555465148.514:65231): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/last_kmsg" dev="proc" ino=4026535585 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.528  3290  3290 E audit   : type=1400 audit(1555465148.514:65232): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/tsp_raw_data" dev="proc" ino=4026535583 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.528  3290  3290 E audit   : type=1400 audit(1555465148.514:65233): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/usblog" dev="proc" ino=4026535540 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.528  3290  3290 E audit   : type=1400 audit(1555465148.514:65234): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/sec_log" dev="proc" ino=4026535505 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.529  3290  3290 E audit   : type=1400 audit(1555465148.514:65235): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/init_command" dev="proc" ino=4026535173 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.529  3290  3290 E audit   : type=1400 audit(1555465148.524:65236): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/boot_stat" dev="proc" ino=4026535172 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.529  3290  3290 E audit   : type=1400 audit(1555465148.524:65237): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/store_lastkmsg" dev="proc" ino=4026535171 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.530  3290  3290 E audit   : type=1400 audit(1555465148.524:65238): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/reset_reason" dev="proc" ino=4026535170 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.530  3290  3290 E audit   : type=1400 audit(1555465148.524:65239): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/user_fault" dev="proc" ino=4026535169 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.530  3290  3290 E audit   : type=1400 audit(1555465148.524:65240): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/tima_secure_rkp_log" dev="proc" ino=4026535079 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.530  3290  3290 E audit   : type=1400 audit(1555465148.524:65241): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/tima_debug_rkp_log" dev="proc" ino=4026535078 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.531  3290  3290 E audit   : type=1400 audit(1555465148.524:65242): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/tima_secure_log" dev="proc" ino=4026535077 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.531  3290  3290 E audit   : type=1400 audit(1555465148.524:65243): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/tima_debug_log" dev="proc" ino=4026535076 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.531  3290  3290 E audit   : type=1400 audit(1555465148.524:65244): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/dmverity_odin_flag" dev="proc" ino=4026535075 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.532  3290  3290 E audit   : type=1400 audit(1555465148.524:65245): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/partitions" dev="proc" ino=4026534988 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.532  3290  3290 E audit   : type=1400 audit(1555465148.524:65246): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/diskstats" dev="proc" ino=4026534987 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.532  3290  3290 E audit   : type=1400 audit(1555465148.524:65247): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/iostats" dev="proc" ino=4026534986 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.532  3290  3290 E audit   : type=1400 audit(1555465148.524:65248): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/key-users" dev="proc" ino=4026534985 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:08.532  3290  3290 E audit   : type=1400 audit(1555465148.524:65249): avc:  denied  { getattr } for  pid=26677 comm="netstat" path="/proc/keys" dev="proc" ino=4026534984 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 SEPF_SM-G930S_8.0.0_0017 audit_filtered

04-17 10:39:13.098  3668  4168 E Watchdog: !@Sync 16389 [2019-04-17 10:39:13.098]

04-17 10:39:22.757  3668  3692 E memtrack: Couldn't load memtrack module

04-17 10:39:22.861  3668  3692 E memtrack: Couldn't load memtrack module

 

핵심은 아래 부분이다.

04-17 10:38:47.012  3668 12103 E Parcel  : Class not found when unmarshalling: com.google.android.gms.auth.api.signin.internal.SignInConfiguration

04-17 10:38:47.012  3668 12103 E Parcel  : java.lang.ClassNotFoundException: com.google.android.gms.auth.api.signin.internal.SignInConfiguration

 

찾아보니까 oatuh2.0 사인을 안해서 발생하는 오류라고 나오는데 앱을 먼저 출시를 하지 않으면 위와 같은 오류가 발생한다고 한다.

그래서 앱을 먼저 출시하였다.

 

 

앱을 출시하였더니 오류가 말끔히 사라지고 정상적으로 작동함을 확인하였다.

출시는 알파출시만 해도 되고 출시만 하면 바로 리더보드 연동이 확인 가능하다.

 

연동 결과창

 

반응형
반응형

유니티에서 파티클을 자동으로 제거하는 방법에 대해서 알아보자.

스크립트가 무조건 필요하다.

ParticleSystem.IsAlive(true)인지 질의하여 파티클을 삭제하는 스크립트를 추가하면 되는데 아래 에셋에서 더 좋은 기능이 첨부되어 있는 스크립트를 찾았다.

JMO Assets - Cartoon FX - 파티클 프리팹 - CFX_AutoDestructShuriken 스크립트

 

[RequireComponent(typeof(ParticleSystem))]
public class CFX_AutoDestructShuriken : MonoBehaviour
{
	// If true, deactivate the object instead of destroying it
	public bool OnlyDeactivate;
	
	void OnEnable()
	{
		StartCoroutine("CheckIfAlive");
	}
	
	IEnumerator CheckIfAlive ()
	{
		ParticleSystem ps = this.GetComponent();
		
		while(true && ps != null)
		{
			yield return new WaitForSeconds(0.5f);
			if(!ps.IsAlive(true))
			{
				if(OnlyDeactivate)
				{
					#if UNITY_3_5
						this.gameObject.SetActiveRecursively(false);
					#else
						this.gameObject.SetActive(false);
					#endif
				}
				else
					GameObject.Destroy(this.gameObject);
				break;
			}
		}
	}
}

요렇게 하면 좋은점은 프리팹에서 OnlyDeactivate를 체크하면 파티클이 플레이가 끝나도 파티클을 삭제하지 않고 비활성화만 해주는 추가적인 기능이 있어서 더 좋다.

반응형
반응형

맥에서 똑같은 프로그램을 여러 개 켜기 위해서는 터미널을 사용해야 하는데 매번 그러기 쉽지 않다.

자동화하는 방법까지 탐구해 보았다.

 

1. 스크립트로 프로그램 켜기

 

 

터미널을 켠다.

 

 

Open -n -a "프로그램 이름"

유니티를 켠다고 가정하였을 때는 Open -n -a "Unity" 로 새로운 유니티 실행

 

 

2. 스크립트로 켜는 것을 자동화 하기

매번 터미널을 켜서 새로 유니티를 실행하는 것은 귀찮으니까 자동으로 실행해주는 바로가기 스크립트를 생성한다.

 

바탕화면에 vi Unity.sh 로 스크립트 파일 생성

 

 

위와 같은 스크립트를 적용한다.

esc로 INSERT모드 해제

Shift + :wq 로 스크립트 저장

chmod a+x Unity.sh로 파일 권한도 바꿔준다.

 

 

바탕화면에 생긴 스크립트 파일을 실행하는 기본 프로그램을 바꿔야 한다.

 

 

스크립트 파일 우 클릭 후 Other 선택

 

 

Enable: Recommended Applications를 All Applications로 변경

 

 

terminal 검색

 

 

터미널 프로그램 선택 후 Always Open With를 체크하여 Open

 

 

sh파일을 더블클릭하면 프로그램이 정상적으로 켜진다.

하지만 터미널이 꺼지지 않고 남아있는다.

아래 옵션을 설정하여 exit 코드 이후 터미널이 꺼질 수 있도록 설정한다.

 

 

 

터미널 애플리케이션의 설정

 

 

Profiles > Shell > When the shell exits:

의 Don’t close the window를 Close if the shell exited cleanly로 바꾼다.

 

 

 

 

3. 도커에 추가

도커에 추가해서 마음대로 실행하기 위해서는 프로그램으로 바꿔줘야 할 필요가 있다.

 

 

도커에 추가하기 위해서는 스크립트를 실행하는 프로그램을 만들어야 한다.

Script Editor를 켠다.

녹화 버튼을 누르고 스크립트를 더블클릭해서 실행한다.

 

 

녹화를 중단한다. 위와 같은 스크립트가 작성될 것이다.

 

 

File > Export

 

 

File Format을 Applicaiton으로 바꿔서 저장한다.

 

 

스크립트를 실행하는 프로그램이 만들어졌다.

기존에 생성한 Unity.sh의 위치가 바뀌면 안 된다.

해당 프로그램을 dock에 추가한다.

 

 

dock에서 프로그램을 클릭하여 유니티를 실행할 수 있다.

반응형
반응형

산업기능요원으로 국외여행을 신청하는 방법

 

기존에는 병무청에 팩스를 보내야 했으나 지금은 병무청 애플리케이션을 통하여 신청을 하게 되었다.

더 간편해졌다.

 

1. 회사측으로부터 국외여행 허가 추천서 받기

회사에다가 말해서 국외여행 허가 추천서를 받는다.

보통 산업기능요원이 있었던 회사는 인사담당자가 척 알아듣고 문서 작성해주신다.

모르신다면 문서를 드리고 설명해드리고 받도록 한다.

 

2. 병무청 어플리케이션을 통하여 국외여행 신청

 

병무청 어플리케이션을 받는다.

 

민원 서비스를 누른다. 본인인증이 필요하다고 한다.

 

공인인증서나 휴대폰 인증을 통한 로그인이 필요하다.

 

국외여행/체재를 누른다.

아래 민원처리 내역은 내가 신청한 내역이라 신청 완료되면 나올 내역이다.

 

국외여행(기간 연장) 허가신청을 누른다.

 

기본사항은 다 입력하고 첨부파일에 회사 측으로부터 받았던 서류를 사진 찍어서 올린다.

누락된 내용이 있으면 신청이 거절된다.

 

신청이 성공하면 다음과 같은 카톡이 온다.

꼭 온다고 하니까 안온다면 확인해봐야 한다.

반응형
반응형

MAC에서는 기본적으로 마우스의 사이드 버튼이 작동 안 한다.(사실하는데 브라우저에서 새로운 탭을 여는 용도 이런 걸로 사용된다. 쓸모없다.)

 

아래 프로그램을 깔고 활성화해주면 바로 작동한다.

https://sensible-side-buttons.archagon.net/?

설치 후 설정하는 곳으로 들어간다.(앱 설치하고 나면 알아서 안내해줌)

설치 후. 왼쪽 하단 자물쇠 눌러서 잠금해제

체크해준다.

 

우측 상단에 아이콘중 카카오톡 왼쪽에 마우스 아이콘이 있는데 클릭

 

 

활성화가 바로 안되어있는데 Enabled 눌러서 활성화 해주면 마우스의 사이드 버튼이 잘 작동한다.

 

반응형
반응형

MAC에서 화면 캡쳐 단축키는 기본적으로 커맨드 + 쉬프트 + 3(나는 컨트롤 + 쉬프트 + 3)인데 화면 캡쳐본을 클립보드에 저장하는 단축키도 따로 있는데 단축키가 매우 불편해서 변경을 했다.

System Preferences > Keyboard > Shortcuts > ScreenShots

 

기본 설정값

 

설정 후 변경 값

매우 편하다.

이렇게 블로그 글쓰기가 한결 더 수월해졌다.

반응형