2020년 3월 26일 목요일

mitmproxy 설치(mac), iPhone Proxy 연결

mitmproxy(man in the middle proxy) 설치 메모

https://mitmproxy.org/ 에서 설치 방법 확인


brew를 사용해서 설치 진행
 - $ brew install mitmproxy
 - 설치후 mitmproxy 명령으로 터미널 모드 실행 가능
 - 설치후 mitmweb 명령으로 웹 모드 실행 가능


설치후 인증서 설치
 - ~/.mitmproxy 폴더 아래 mitmproxy-ca.p12 파일 확인
 - 파인더에서 해당파일 열기 하여 "키체인  접근.app" 실행
 - 암호 팝업은 입력없이 확인
 - 인증서 정보 가져오기에서 신뢰 항목 열어 항상 신뢰 선택


네트워크 환경설정 열어서 프록시 세팅
 - 웹 프록시(HTTP), 보안 웹 프록시(HTTPS) 선택하여 프록시 서버(로컬 주소) 와 포트 입력(기본 8080)
 - 프록시 암호는 사용하지 않음


WIFI연결 상태인 폰에서 Proxy서버 연결
 - 설정 > Wi-Fi > 접속하고 있는 Wifi SSID > 프록시 구성
 - 수동 선택후, 서버와 포트를 위에 셋팅한것과 같이 설정


프록시 인증서 설치를 위해 사파리를 열어 mitm.it 주소를 입력(크롬 안됨, 반드시 사파리)
 - 페이지에서 Apple 아이콘 클릭 하여 설치
  


다운로드 받은 프로파일 승인 처리
 - 설정 > 일반 > 프로파일 > mitmproxy >  오른쪽 위 "설치" 버튼 탭
  

  


인증서 신뢰설정 처리
 - 설정 > 일반 > 정보 > 인증서 신뢰 설정
 - mitmproxy 루트인증서 신뢰 처리 활성화


proxyweb에서 테스트
 - iPhone 소프트웨어 업데이트 https 확인

2020년 3월 23일 월요일

Unity3d에서 Rust함수 호출

Unity3d에서 Rust 라이브러리를 생성하여 rust함수를 호출해 보기

Rust를 사용하여 라이브러리를 생성/빌드 한 뒤 유니티에서 Plugin으로 dll import하여 함수 사용

-- Rust --

숫자 2개를 더해 리턴하는 간단한 라이브러리 생성

Library생성을 위해 Cargo.toml 에 lib정보 추가
[package]
name = "unity-rust"version = "0.1.0"authors = ["xxx "]
edition = "2018"
[dependencies]

[lib]
name = "unity_rust"crate-type = ["dylib"]

lib.rs 소스 추가(단순한 2개 숫자 합산후 리턴)
#[no_mangle]pub extern fn sum(input1: i32, input2: i32) -> i32 {
    input1 + input2
}

생성된 파일 ./unity-rust/target/debug/libunity_rust.dylib 파일을
Unity ./Assets/Plugins 에 복사


--- Unity ---

RustBehaviour.cs 파일 추가

클래스 안에 DllImport속성을 지정하여 함수 추가(dll확장자는 생략 가능)

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;

public class RustBehaviour : MonoBehaviour
{
    [DllImport("libunity_rust")]
    private static extern int sum(int v1, int v2);

    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("sum : " + sum(3, 4));
    }

}

아래와 같은 결과를 Console에서 확인 가능


2020년 2월 26일 수요일

Jenkins Unity plugin (Editor command line arguments)


-quit -batchmode -stackTraceLogType Full -projectPath "$WORKSPACE"/BasicShapeSprite-master -executeMethod MyEditorScript.PerformMacOSXBuild GNSS.ios.qa.ini -logFile $WORKSPACE/build_unitylog.txt


-quit
다른 커맨드 실행을 마친 후 Unity 에디터를 종료합니다. 이렇게 하면 오류 메시지가 숨겨질 수 있습니다. 하지만 Editor.log 파일에서는 여전히 확인할 수 있습니다.

-batchmode
배치 모드로 Unity를 실행합니다. 항상 다른 커맨드 라인 인자와 함께 사용해야 합니다. 그래야만 팝업 창이 나타나지 않고 사람이 직접 개입할 필요가 없어집니다. 스크립트 코드를 실행하는 도중에 예외가 발생하면 에셋 서버 업데이트 또는 기타 작업이 실패하고, Unity는 반환 코드 1 을 표시하며 즉시 종료됩니다.
배치 모드에서 Unity는 최소 버전의 로그 출력을 콘솔에 전송합니다. 하지만 로그 파일에는 여전히 전체 로그 정보가 포함됩니다. 에디터에 동일한 프로젝트가 열린 경우에는 배치 모드로 프로젝트를 열 수 없습니다. Unity의 단일 인스턴스만 한 번에 실행할 수 있습니다.
팁: 배치 모드에서 에디터 또는 스탠드얼론 플레이어를 실행하는지 확인하려면 Application.isBatchMode 연산자를 사용하십시오.
프로젝트가 -batchmode를 사용하여 아직 임포트되지 않은 경우 타겟 플랫폼이 기본 플랫폼입니다. -batchmode를 사용할 때 다른 플랫폼을 강제 설정하려면 -buildTarget 옵션을 사용하십시오.

-stackTraceLogType
자세한 디버깅 기능입니다. StackTraceLogging을 사용하면 자세한 로깅을 허용하도록 기능을 제어할 수 있습니다. 모든 설정에서 None, Script Only 및 Full 을 선택할 수 있습니다(예, -stackTraceLogType Full).

-projectPath
주어진 경로에서 프로젝트를 엽니다.

-executeMethod
Unity가 프로젝트를 열자마자, 그리고 옵션 에셋 서버 업데이트가 완료되면 정적 메서드를 실행합니다. 
이 옵션을 사용하면 연속 통합, 유닛 테스트 실행, 빌드 제작 또는 데이터 준비 등의 작업을 수행할 수 있습니다. 
커맨드 라인 프로세스에서 오류를 반환하려면 Uniy가 반환 코드 1 을 표시하고 종료되도록 하는 예외를 발생시키거나, 
0이 아닌 반환 코드를 포함한 EditorApplication.Exit를 호출해야 합니다. 
파라미터를 전달하려면 파라미터를 커맨드 라인에 추가한 후 System.Environment.GetCommandLineArgs를 사용하여 함수 내에서 검색해 가져오십시오. 
-executeMethod를 사용하려면 둘러싸인 스크립트를 Editor 폴더에 배치해야 합니다. 또한 실행하는 메서드는 반드시 static으로 정의되어야 합니다.

-logFile
에디터 또는 Windows/Linux/OSX 스탠드얼론 로그 파일이 작성되는 위치를 지정합니다. 
경로가 누락되면 OSX와 Linux는 콘솔에 출력을 작성합니다. Windows는 %LOCALAPPDATA%\Unity\Editor\Editor.log 경로를 기본으로 사용합니다.




[MyEditorScript.cs]

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
using UnityEditor;
using UnityEditor.Build.Reporting;
lass MyEditorScript {
 static string[] SCENES = FindEnabledEditorScenes();
 static string APP_NAME = "YourProject";
 static string TARGET_DIR = "target";
 [MenuItem("Custom/CI/Build Mac OS X")]
 static void PerformMacOSXBuild() {
  string target_dir = APP_NAME + ".app";
  GenericBuild(SCENES, TARGET_DIR + "/" + target_dir, BuildTarget.iOS, BuildOptions.None);
 }
 private static string[] FindEnabledEditorScenes() {
  List EditorScenes = new List();
  foreach(EditorBuildSettingsScene scene in EditorBuildSettings.scenes) {
   if (!scene.enabled) continue;
   EditorScenes.Add(scene.path);
  }
  return EditorScenes.ToArray();
 }
 static void GenericBuild(string[] scenes, string target_dir, BuildTarget build_target, BuildOptions build_options) {
  EditorUserBuildSettings.SwitchActiveBuildTarget(build_target);
  BuildReport report = BuildPipeline.BuildPlayer(scenes, target_dir, build_target, build_options);
  BuildSummary summary = report.summary;
  if (summary.result == BuildResult.Failed) {
   throw new Exception("BuildPlayer failure: " + summary.result);
  }
 }
}

2020년 2월 20일 목요일

mac 에서 linux처럼 ll command 사용하기

~/.bash_profile 을 찾아 아래 command 추가

alias ll='ls -lG'

option
 -l      List in long format.
 -G     Enable colour output.

2020년 2월 18일 화요일

Mac Jenkins에서 docker에러(Cannot run program "docker": error=2)

Jenkins 빌드중 docker에서 에러나는 경우

java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.(UNIXProcess.java:248) at java.lang.ProcessImpl.start(ProcessImpl.java:134) : : :Caused: java.io.IOException: Cannot run program "docker": error=2, No such file or directory : : :Finished: FAILURE

macos 버전은 Catalina
jenkins는 brew로 설치(https://jenkins.io/download/lts/macos/)
Mac용 docker Desktop 설치(https://hub.docker.com/?overlay=onboarding)

brew를 사용한 jenkins lts버전 설치후 다음 명령으로 구동하면 위와 같은 오류 발생 함 #brew service start jenkins-lts

하지만 서비스로 구동하지 않으면 해당 오류가 나타나지 않고 정상 수행됨 #jenkins-lts

권한 문제가 아닐까 짐작, 다른 해결 방법 찾는중.

2019년 10월 26일 토요일

Visual Studio Code(이하 VSCode)를 유니티 에디터 - Mac

Visual Studio Code(이하 VSCode)를 유니티 에디터로 디버깅
준비 :Mac에 Unity, VSCode, Homebrew

버전

  • MacOSX (10.13 High Sierra)
  • Unity (2017.1.2f1 Personal)
  • VSCode (1.16.0)
  • Homebrew (1.3.1)

1. 각 도구의 다운로드 및 설치

  • .NET Core
    • .Net Framework의 일부 (부분)에서 크로스 플랫폼에 대응하고있다
    • 요점 .NF 기능의 일부를 Linux와 Mac에서도 사용할 수 있도록 한 것 (같은 인식에있어있어?)
    • 링크에 설치 방법이 써 있으므로 참조
  • VSCode.cs
    • VSCode을 Unity 편집기로 사용하기위한 설정 파일
    • GitHub의 DownloadZip에서 떨어 뜨려 압축
    • Unity 프로젝트 /Assets/Plugins/Editor/VSCode.cs로 배치

2. Homebrew에서 필요한 도구를 설치

mono

$ brew install mono

openssl

$ brew install openssl
위 명령 /usr/local/opt/openssl에 설치된다. 
그러나 이대로라면 기본에 /usr/bin/openssl이용되어 버리기 때문에 
.bash_profile새로운 사람의 설치 경로를 추기한다.
$ vim ~ / .bash_profile
.bash_profile
export PATH = / usr / local / opt / openssl / bin : $ PATH

3. VSCode에 필요한 플러그인을 설치

Command + p 명령 팔레트를 표시
스크린 샷 2017-08-28 13.00.33.png
입력 폼에 ext install계속 설치하려는 플러그인 이름을 입력하고 Return한다.

C # for Visual Studio Code

ext install C #

Debugger for Unity

ext install Debugger for Unity

Mono Debug

ext install Mono Debug
이스토루이 완료 Extensions 설치 된 항목에 표시된다.
스크린 샷 2017-08-28 13.png

4. Unity를 시작 연계 설정

1. Unity> Preferences> External Tools를 열 
2. External Script Editor 항목 풀다운 메뉴에서 Other를 선택 
3. Visual Studio Code.app을 선택 (풀다운이 code로 바뀐다)
스크린 샷 2017-06-02 11.56.26.png
4. Unity> Preferences> VSCode 열기 (기본 기본으로 OK)
스크린 샷 2017-06-02 11.56.43.png

5. VSCode을 시작 IntelliSense를 사용하려면

인텔리 센스 (IntelliSense)는 Microsoft Visual Studio 통합 개발 환경에서 사용되는 Microsoft에서 자동 완성 시스템.
1. Unity 측의 Assets> Open C # Project In Code에서 VSCode을 시작
스크린 샷 2017-08-28 13.21.12.png
2. 프로젝트 아래에 .sln 파일이 있는지 확인
스크린 샷 2017-08-28 13_2.png
3. 적당히 .cs 파일을 열 
4. VSCode의 상태 표시 줄 (화면 하단의 녀석)의 오른쪽이 뿌제쿠토 이름 .sln되어 있는지 확인 
(되어 있지 않다면 클릭하여 변경)
스크린 샷 2017-08-28 13_4.png
IntelliSense가 활성화 될 때 보완과 함수 점프 등의 기능 외에 
n references같은 느낌으로 그 메소드와 변수가 다른 사람에서 얼마나 참조되고 있는지를 알 수있게된다.

6. 단계 실행

  1. 브레이크 포인트를 적당하게 붙여 VSCode 측을 디버그 모드로 전환한다. Shift + Command + d)
  2. 화면 상단의 Start Debugging 버튼 (디버그 창 녹색 삼각형)을 클릭하면 DEBUG CONSOLE에 부착 정보가 출력되고 대기 상태가된다.
  3. Unity 측에서 재생하면 브레이크 포인트에서 처리가 중지됩니다.
스크린 샷 2017-08-28 13.35.33.png

.gitignore_global

#################################################################################

*~
.DS_Store

#################################################################################
###### android studio ###########################################################
# Built application files
*.apk
*.ap_

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
**/build/
**/release/
**/.idea/

**/bin/
**/gen/
**/out/

# Gradle files
**/.gradle/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
**/proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
**/.navigation/

# Android Studio captures folder
captures/

# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/dictionaries
.idea/libraries

# Keystore files
# Uncomment the following line if you do not want to check your keystore files in.
#*.jks

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild

# Google Services (e.g. APIs or Firebase)
google-services.json

# Freeline
freeline.py
freeline/
freeline_project_description.json

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md



#################################################################################
###### Xcode ####################################################################
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## Build generated
**/build/
**/DerivedData/

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
**/xcuserdata/

## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint

## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/

# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control

fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output

# Code Injection
#
# After new code Injection tools there's a generated folder /iOSInjectionProject
# https://github.com/johnno1962/injectionforxcode

iOSInjectionProject/



#################################################################################
###### Unity3d ##################################################################
#
**/[Ll]ibrary/
**/[Tt]emp/
**/[Oo]bj/
**/[Bb]uild/
**/[Bb]uilds/
**/Assets/AssetStoreTools*

# Visual Studio 2015 cache directory
**/.vs/

# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb

# Unity3D generated meta files
*.pidb.meta
*.pdb.meta

# Unity3D Generated File On Crash Reports
sysinfo.txt

# Builds
*.apk
*.unitypackage


#################################################################################