본문 바로가기

전체 글

(49)
shell 비교 - Bash vs zsh shell 운영체제 상에서 다양한 운영체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다. 사용자와 운영체제의 커널 사이의 인터페이스 역할을 한다. 최초의 유닉스 셸인 sh가 있고, Bourne shell (본 셸)은 sh에서 파생된 셸이다. Bash ($) 쉘종류중 하나이며, Boourne shell을 대체하여 만들어진 셸이다. 리눅스의 표준셸이며 macOS에서는 카탈리나 이전까지는 기본셸로 사용되었다. (현재 macOS 기본 셸은 zsh) 많은 자동화 작업과 프로그래밍 솔루션을 bash에서 쉽게 수행할 수 있다. 반복 및 조건부, 물결표 및 중괄호 확장, 별칭 사용과 같은 많은 프로그래밍 기능 세트들이 있다. 또한 Bash 자체가 오래된 셸이므로 다양한 작업 수행을 위한 온라인 리소스가..
Login Shell vs Non-Login Shell bash와 zsh 차이점을 알아보다가.....계속 로그인 쉘 이랑 논 로그인쉘이 언급되길래 정리용.. Shell unix 운영체제에서 shell이란 사용자와 OS 커널단과의 인터페이스이다. shell은 사용자로부터 입력을 받아 커널에게 전송한다. 또한 커널로부터 결과를 사용자에게 보여준다. Login Shell 로그인 shell은 /etc/passwd 파일을 읽어 /bin/login을 사용하여 성공적으로 로그인 한 후 시작되는 첫번째 프로세스이다. 이때 사용자 ID로 실행된다. 로그인 셸은 터미널을 사용하여 로그인하거나 다른 사용자로 전환하거나 ssh를 사용할 때 실행된다. 로그인 셸이 시작되면 시작 스크립트 컬렉션을 실행하여 셸 환경을 설정한다. 다음과 같은 단계로 시작된다. 로그인 프로세스는 /etc..
swift autoresizingMask autoresizingMask Apple Developer 공식문서에 따르면 특정뷰의 superview의 bound가 변경되었을떄, 해당 뷰(sub view)가 자체 크기를 어떻게 할지 정하는 integer bit mask 이다. 상세 설명은 view의 bounds가 변경되었을때, 해당 뷰는 자동적으로 서브뷰들을 각 서브슈의 autoresizing mask에 따라 크기를 재설정한다. (resize) 이때 C언어의 비트 연산자 OR을 사용하여 UIView.AutoresizingMask에 설명된 constant값을 결합하여 이 마스크 값을 지정한다. constants 값을 결합한다는 것은 뷰의 차원이 superview에 비해 늘어나야하는지 또는 줄어들어야 하는지를 특정할 수 있도록 해준다. 이 프로퍼티의 기..
[Objective C] #import <Header.h> 와 #import "Header.h" 의 차이점 Objective C 에서 다른 라이브러리같은 헤더파일을 가져올 때 #import 키워드를 사용하여 가져온다. 해당 키워드는 C, C++의 #include 와 동일하다. Objc 언어로 프로그래밍을 하다보면 Import 할 때 #import 처럼 꺽쇠로 라이브러리 명을 가져오는 경우도 있고 #import "Header.h" 처럼 쌍따옴표로 라이브러리를 가져오는 경우가 있는데 둘의 차이점은 아래와 같다. #import 시스템 파일에서 해당 파일을 가져오는 것으로, Objc 컴파일러는 로컬 파일이 아닌 시스템 파일에서 지시한 파일을 찾는다. 전역의 의미를 포함한 것으로, 컴파일러에 전달된 포함 경로의 어딘가에 있는 것을 의미한다. #import "Header.h" 시스템 파일이 아닌 로컬 파일 ( 개발자가 ..
[Objective C] Class 구조 파악 및 선언하기 자 옵젝씨의 시간이다. 오브젝티브 C의 포스팅은 프로그래밍 오브젝티브-C 2.0 책의 내용을 정리한 시리즈 형식으로 정리될 예정이다. Objective C 언어의 Class는 선언부, 구현부로 나뉘어져 있으며 이렇게 작성한 클래스를 사용하기 위해서는 main인 프로그램부분에서 사용하여야 한다. 클래스의 선언부와 구현부를 작성하는 법을 알아보고, 프로그램 부분에서 객체의 인스턴스를 만들어 인스턴스 메서드를 호출해보는 예시를 들어보겠다. 1. @interface 선언부이다. 클래스를 새로 정의할 때 해야할 일이 몇가지 있는데 첫째로 Objective-C 컴파일러에게 클래스가 어디서 왔는지 알려줘야 한다. 두번째로는 이 클래스의 객체를 다룰 때 사용할 작업 또는 메서드를 정의해야한다. 이러한 과정을 @inte..
DispatchQueue, DispatchGroup를 사용하여 비동기적 함수 작성하기 본 글은 인프런 엘런님의 강의를 수강하며 공부한 것을 정리한 내용입니다. 강의 : https://www.inflearn.com/course/iOS-Concurrency-GCD-Operation/dashboard 본 포스팅은 평소에 동기적으로 작동하는 함수를 비동기적으로 작동하도록 고쳐나가는 과정을 포함한다. DispatchQueue를 활용하여 작업들을 비동기적으로 보내고 각 작업들이 끝난 후 escaping 클로저를 통해 작업이 끝났음을 알린다. 더 나아가 DispatchGroup을 활용하여 작업을 그룹단위로 묶어 처리하도록 한다. 1. DispatchQueue를 활용한 작업의 비동기 처리 방식 코드를 작성하기 앞서 작업을 비동기로 처리한다는 의미를 짚고 넘어가겠다. 기존에 (예를 들어 viewDidLo..
NSSegmentedControl Image Scale NSSegmentedControl 각 셀에 이미지를 넣어서 커스텀 세그먼트를 만들다가 각 이미지의 글자 폰트들이 안맞아버리는 오류가 발생했다.. 폰트가 문제냐 세그먼트 뜯어보고 온갖 디버깅을 시도해봤지만 NSSegmentedControl 에 이미지를 세팅할때 이미지의 스케일 옵션을 잘못줘서 틀어진거였다. 정말 간단한 문제였는데 한 2~3일 해맨 오류..ㅠㅠ 잊어먹지 않기 위해 각 이미지 스케일의 옵션별 차이정도 기록하겠다. 스토리보드에서 NSSegmentedControl Scailing 옵션 변경 부분 총 4가지의 옵션이 있다. 테스트하기 위한 이미지는 텍스트를 NSImage로 변환하여 각 NSSegmentedCell에 setImage로 이미지를 넣어주었다. 의도한 커스텀 세그먼트는 위 이미지와 같다. ..
macOS - XPC Service 프로세스 통신을 위한 XPC XPC 매커니즘은 IPC용 소켓 (또는 MIG를 사용하는 Mach Services)에 대한 대안을 제공한다. 예를들어 특정 프로세스의 API에 접근하거나, 서비스를 제공하기 위한 클라이언트를 기다리는 서버역할의 프로세스를가 있을 수 있다. 애플리케이션의 XPC 서비스 보통 XPC 서비스에 대해 얘기할때 XPC Service라고 불리는 번들(Bundle)에 대해 이야기 하는것을 의미한다. 애플 생태계에서 번들은 특정 디렉토리 구조로 표현되는 엔티티를 나타낸다. 가장 잘 알려진 번들은 애플리케이션 번들이다. 애플리케이션(예: Chess.app)을 마우스 오른쪽 버튼으로 클릭하고 콘텐츠 표시를 선택하면 디렉토리 구조가 표시된다. XPC로 돌아와서, 애플리케이션은 XPC Servi..