iOS, Swift, “Increasing Performance by Reducing Dynamic Dispatch” 를 읽고,


대충, 이해 하는 것만 적는다. 보다 확실 한 것은 링크의 원문을 참고바람.

class, method, property 의 호출에서 Dynamic Dispatch 는 직접 호출에 비해서
느릴 뿐 아니라 컴파일 Optim 을 Off 시킨다.

Dynamic Dispatch 를 회피 하는 방법
* 상속에서 활용 하지 않을 것은 final 로 한정해라.
* private 으로 한정. ( scope, 현재 파일 안에서만 참조/사용 가능 )
* final class XXX() {…} 로 전체를 final 로 할 수 있음. (private 도)
* public class XXX() {…} 로도 Optim 이 가능, 안에 Public 선언된 method, property 만 public…
(앞에 public 붙이지 않으면 모두 final 로 인식해서 Optim 됨.)

원문 : Increasing Performance by Reducing Dynamic Dispatch

iOS 개발, CocoaPods, “.h” 파일들을 못 찾을 때 해결 방법


프로젝트에 Pods-{앱명}.[debug/release].xcconfig 이런 파일(텍스트)이 있을 것이다.

HEADER_SEARCH_PATHS = ${SRCROOT}/Pods/Headers/**

를 추가해 준다.

Xcode 의 “Build Settings” 쪽에 보면 “Header Search Paths” 항목에 “…./Pods/Headers/**” 가 추가 되있는 것을 볼 수 있다.

참고 : http://guides.cocoapods.org/using/troubleshooting.html

Emacs, Cask 설정


1. Cask 준비

설치 위치 : $HOME/.emacs.d

2. Cask 생성

$HOME/.emacs.d/Cask 를 만든다.

% cd $HOME/.emacs.d
% cask init

“cask init” 으로 Cask가 만들어 진 것을 볼 수 있다.

3. Cask 수정

http://cask.emacs.kr/dsl.html 에 있는 패키지 저장소 목록에서
( 예) http://elpa.gnu.org/packages/ )
직접 가보면 본인이 원하는 package를 검색해서 찾는다.
markdown 패키지가 mkdown 이라고 있고 이것을 설치 하고 싶으면
Cask에 아래 내용을 추가 하면 된다.

(depends-on "mkdown")

4. Cask로 패키지 설치

간단히 Cask 가 있는 디렉토리에서 cask 명령을 하면 설치가 된다.

% cask

5. “$HOME/.emacs.d/init.el” 추가


(require 'cask "~/.emacs.d/.cask/24.4.1/elpa/cask-20150109.621/cask.el")
(cask-initialize)
(require 'pallet)
(pallet-mode t)

– 끝 –

iOS 개발, CocoaPods 설치 및 프로젝트에 Facebook SDK 추가해 보기


1. CocoaPods(http://cocoapods.org) 설치 (no sudo 모드)

1.1 $HOME/.zshrc 추가


# for GEM
export GEM_HOME=$HOME/.gem
export PATH=$GEM_HOME/bin:$GEM_HOME/ruby/2.0.0/bin:$PATH

1.2 cocoapods 설치


% gem install cocoapods --user-install

$HOME/.gem/ 안에 설치가 된다.

1.3 cocoapods 초기화(?)


% pod setup

2. 예) Project 에 CocoaPods를 이용해서 FacebookSDK 설치

2.1 우선 Project 디렉토리로 이동한다.

(MyProject.xcodeproj 와 같이 xcode project 파일 이 있는 곳으로…)

2.2 Podfile 생성


% pod init

2.3 Podfile 수정.

(“pod ‘Facebook-iOS-SDK'” 추가)

% cat Podfile
# Uncomment this line to define a global platform for your project
# platform :ios, '6.0'

target ‘syruporder’ do
pod ‘Facebook-iOS-SDK’
end

target ‘syruporderTests’ do

end

2.4 FacebookSDK 를 받는다.

(Podfile 이 있는 디렉토리, Project 디렉토리에서 하면 된다.)

% pod install
Analyzing dependencies

CocoaPods 0.36.0.rc.1 is available.
To update use: `sudo gem install cocoapods –pre`
[!] This is a test version we’d love you to try.

For more information see http://blog.cocoapods.org
and the CHANGELOG for this version http://git.io/BaH8pQ.

Downloading dependencies
Installing Bolts (1.1.4)
Installing Facebook-iOS-SDK (3.23.0)
Generating Pods project
Integrating client project

[!] From now on use `syruporder.xcworkspace`.

[!] The `syruporder [Release]` target overrides the `GCC_PREPROCESSOR_DEFINITIONS` build setting defined in `Pods/Target Support Files/Pods-syruporder/Pods-syruporder.release.xcconfig’. This can lead to problems with the CocoaPods installation
– Use the `$(inherited)` flag, or
– Remove the build settings from the target.

% tree -L 1 -d Pods
Pods
├── Bolts
├── Facebook-iOS-SDK
├── Headers
├── Local\ Podspecs
├── Pods.xcodeproj
└── Target\ Support\ Files

Project에 Pods 라는 디렉토리가 생기고 Facebook-iOS-SDK가 잘 설치 된 것을 볼 수 있다.

– 끝 –

iOSDev, zsh을 이용한 pngquant 스크립트.


zsh 의 기능 중 “**/*.png” 를 응용해서 recursive 하게 하위 디렉토리까지 pngquant 를
적용할 수 있게 만듬.

옵션은 각자에 맞게 수정이 필요.
“-s1 –quality 100” 는 적용 시간은 오래 걸리지만 최상 image quality 를 위한 옵션임.

pngquant -s1 --quality 100 **/*.png --ext .png --force

참고 URL :
http://stackoverflow.com/questions/9647920/recursively-batch-process-files-with-pngquant/9649214#9649214

You have not chosen to trust the “AddTrust External CA Root” the issuer of the server’s security certificate (SSL error 61)


해결 했음!!!

AddTrustExternalCARoot.crt

iliaselmatani

Today installed the Citrix Receiver for Linux 12.1 on Debian.. After logging in to the Citrix XenDesktop portal, received an error message from the Citrix Receiver:

“SSL Error. Contact your help desk with the following information: You have not chosen to trust the “AddTrust External CA Root” the issuer of the server’s security certificate (SSL error 61).

This error message can be fixed by downloading and placing the file AddTrustExternalCARoot.crt in the directory /opt/Citrix/ICAClient/keystore/cacerts/

sudo mv AddTrustExternalCARoot.crt /opt/Citrix/ICAClient/keystore/cacerts/

Download link : AddTrustExternalCARoot.crt

https://support.comodo.com/index.php?_m=downloads&_a=viewdownload&downloaditemid=9&nav=0,1

Concatenate AddTrustExternalCARoot.crt

ilias@SD23-FG76:~/Downloads$ cat /opt/Citrix/ICAClient/keystore/cacerts/AddTrustExternalCARoot.crt
—–BEGIN CERTIFICATE—–
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
—–END CERTIFICATE—–

원본 글 보기