카테고리 보관물: 미분류

Xcode 프로젝트에서 CocoaPods 제거하기

다른 사람이 작업한 소스를 전달받을 일이 있어 git clone을 했는데 .gitignore 설정이 제대로 되지 않아서인지 프로젝트 빌드가 되지 않았다. 때문에 다음과 같이 CocoaPods를 제거하고 의존도를 다시 설정하여야 했다.

sudo gem install cocoapods-deintegrate cocoapods-clean
pod deintegrate && pod clean
rm Podfile

 

macOS 업데이트시 git 오류 해결

맥을 Mojave 10.14 버전으로 업데이트 한 뒤에 pod install 을 하려고 하니 다음과 같은 에러가 발생했다. xcrun: error: invalid active developer path … 

검색 결과 Xcode Command Line Tools 의존성 이슈라고 한다. git 버전 체크를 통해 해당 이슈가 발생하는지 확인 할 수 있다.

$ git --version
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

xcode-select 명령어를 이용해서 Xcode Command Line Tools 만 설치 할 수 있다.

$ xcode-select --install
.
..
...
....

$ xcode-select -v
xcode-select version 2343.

 

좌표에 따른 이미지 색상 값 추출

특정 좌표의 색상 값을 알고 싶을때 사용한다.

- (UIColor*)pixelColorInImage:(UIImage*)image atX:(int)x atY:(int)y {
    
    CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
    const UInt8* data = CFDataGetBytePtr(pixelData);
    
    int pixelInfo = ((image.size.width * y) + x ) * 4; // 4 bytes per pixel
    
    UInt8 red   = data[pixelInfo + 0];
    UInt8 green = data[pixelInfo + 1];
    UInt8 blue  = data[pixelInfo + 2];
    UInt8 alpha = data[pixelInfo + 3];
    CFRelease(pixelData);
    
    UIColor *returnColor = [UIColor colorWithRed:red  /255.0f
                                           green:green/255.0f
                                            blue:blue /255.0f
                                           alpha:alpha/255.0f];
    
    return returnColor;
}

 

Xcode 기본 프로그램으로 설정

OSX 10.5 부터 Xcode가 여러버전 설치를 지원한다. 설치시에 Xcode 기본 디렉터리인 /Developer 가 아닌 다른 폴더나 볼륨에 설치해도 개별적으로 동작한다. 폴더 이름도 Developer 가 아니라도 상관없다. 하지만 하위 폴더의 구조는 변경하면 안된다.

여러가지 버전의 Xcode 를 설치할 경우 특정 버전을 기본값으로 설정하기 위한 터미널 명령어로 sudo 권한이 필요하다.

sudo xcode-select -switch <path/to> xcode.app

 

WKWebView 에서 사설인증서 SSL 통과하기

WKNaivagationDelegate 의 URLAuthenticationChallenge 델리게이터를 구현한다.

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    @IBOutlet weak var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let url = URL(string: "https://192.168.0.26:2000")!
        webView.load(URLRequest(url: url))
        webView.navigationDelegate = self
        webView.allowsBackForwardNavigationGestures = true
        // Do any additional setup after loading the view, typically from a nib.
    }

    func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
        let cred = URLCredential(trust: challenge.protectionSpace.serverTrust!)
        completionHandler(.useCredential, cred)
    }

}

 

nodejs 에서 https 사용하기

openssl을 이용해서 다음과 같이 파일을 만들수 있다.

openssl genrsa -out privatekey.pem 1024
openssl req -new -key privatekey.pem -out certrequest.csr
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem

포트에 따라서 http 또는 https 로 이동하게 된다.

var http=require('http'),  
    https = require('https'),
    express = require('express'),
     fs = require('fs');

var options = {  
    key: fs.readFileSync('privkey.pem'),
    cert: fs.readFileSync('cert.pem')
};

var port1 = 3001;  
var port2 = 2000;

var app = express();  
app.use(express.urlencoded());

http.createServer(app).listen(port1, function(){  
  console.log("Http server listening on port " + port1);
});

https.createServer(options, app).listen(port2, function(){  
  console.log("Https server listening on port " + port2);
});

app.get('/', function (req, res) {  
    res.writeHead(200, {'Content-Type' : 'text/html'});
    res.write('<h3>Welcome</h3>');
    res.end();
});