[Objective-C] 카테고리 클래스 추가하기

카테고리는 기존에 정의된 어떤 클래스에 쉽게 확장을 할수 있도록 해줍니다. 직접 만든 클래스나, Objective-c에서 제공되는 UILabel, UIButton, UIView 등 UI 클래스들에 대해서 모두 확장이 가능합니다. Objective-c 일반적인 클래스는 정의부(.h)와 구현부(.m)로 이루어 집니다. 구현부에 사용된 함수들이 범용적으로 사용 되거나, 내용이 많아 질경우, 유지보수가 어렵게 됩니다. Objective-C에서는 이번부분을 카테고리 클래스를 생성할수 있게 해줌으로써 개발자들에게 유지보수를 용의하게 해줍니다. 사용법은 간단합니다. AClass.h AClass.m 클래스 생성 후 네트워크 관련 함수, 문자열 관련 함수를 AClass.m 구현부에 작성합니다. 그다음에 AClass+Network , AClass+String 를 정의부와 구현부를 만들어줍니다. AClass.m에 작성된 함수 중 네트워크 관련함수는 AClass+Network, 문자열 관련 함수는 AClass+String으로 옴깁니다. + 클래스 메스드로 정의함으로써, AClass+Network를 바로 사용할수 도 있습니다. 또한, Fouundation이나 UIKit 등에 있는 클래스도 확장이 가능합니다. 예를 들어, UIImage 의 사이즈 조절하는 함수를 만들었다면, 정의부와 구현부와 아래와 같이 만들고 사용할수 있습니다. @interface UIImage (ResizeAdditions) +( UIImage *)resizeImage:( UIImage *)image width:( float )resizeWidth height:( float )resizeHeight; @implementation UIImage (ResizeAdditions) +( UIImage *)resizeImage:( UIImage *)image width:( float )resizeWidth height:(

[AWS] CodeStar를 이용하여 손쉽게 프로젝트 구성하기

이미지
안녕하세요. 남산돈가스입니다. 새로운 프로젝트를 구성하기 위해선, 서버 그리고 이 프로젝트를 어떤 언어 및 프레임워크를 사용할 건 지 고려해야합니다. 일단 서버를 손 쉽게 생성할 수 있는 AWS에서 생각해보자면, 직접 EC2 인스턴스를 생성해서 서버를 구성하는 방법이 있을 것이고, 또 Lambda-API Gateway를 이용하여 서버리스 환경을 구성할 수도 있습니다. 그리고 Beanstalk를 이용하여 자동 배포를 하는 방법도 있습니다. 다음으로 언어를 살펴보면, nodejs, java, python, spring, php 등 다양한 언어와 프레임워크들이 존재합니다. ec2의 경우 직접 서버에 접속하여 해당 런타임들을 구성해줘야하는 번거로움도 생길 수 있습니다. 추가적으로, 프로젝트를 진행하며 형상관리 및 빌드, 배포까지 고려한다면 귀찮은 것들이 한 두가지가 아닙니다. AWS에서 이런 번거로움들을 하나의 서비스로 해결해주고 있습니다. 바로 CodeStar라는 서비스입니다. 프로젝트를 생성하면, 서버, 언어 , 형상관리, 배포, 빌드까지 여러 서비스들을 한 곳에 묶어 관리해주고 있습니다. 오늘은 이 CodeStar라는 서비스를 이용해 클릭 몇 번으로 프로젝트를 생성해서 서버를 실행까지 해보려고합니다. 먼저 CodeStar의 콘솔화면으로 이동합니다. 새 프로젝트 생성버튼을 클릭합니다. 가장 먼저 보이는 것이 프로젝트 템플릿 선택화면입니다. 처음에 이 화면을 보고 정말 놀라웠던 점이 정말 다양한 언어를 제공하고, 그에 따른 템플릿도 목적에 맞게 제공하고있었기에, 사용자는 입맛에 맞는 템플릿을 선택하면 기본 셋팅이 완료 된 프로젝트를 바로 접할 수 있다는 것이었습니다. 이번 포스팅에선 간단하게 nodejs의 express 프로젝트를 Beanstalk를 이용하여 관리형 어플리케이션에 올리는 템플릿을 선택했습니다. 다음 화면에서, 프로젝트의 이름을 입력한 뒤, 형상관리에 대한 툴을 AWS에서 제공하는

[반려동물 이야기] 유실.유기동물 만났을 때 대처방법

이미지
어느날 길을 가는데 웬 뽀시래기가 길에.. 1. 인식표 확인 3개월령 이상의 반려견은 기르는 곳에서 벗어날 경우 반드시 주인의 이름과 연락처가 기재된 인식표를 부착하게 되어 있습니다. 연락처가 발견되면, 주인에게 연락해서 찾아주면 끝! 만약에 인식표가 없는데, 근처에 동물 병원이 보인다면 데려가서 내장형 칩이 있는지 살펴보는 것도 하나의 방법이죠! 아이프렌즈펫 구조대 출동! 주인 찾으러 가자! 2. 유기 동물 신고 인식표도, 연락처도, 내장형 칩도 확인할 수 없다면 동물을 발견한 지역의 시청이나 구청 동물보호 담당자에게 전화를 걸어 신고하면 됩니다. 만약 연휴나 휴가 등의 이유로 담당자 혹은 상황 근무자가 없어 연락이 닿지 않는다면 직접 관할 유기동물 보호시설에 연락할 수 있습니다. 그러면 담당자가 출동해 동물을 구조합니다. 유기 동물을 마음대로 잡아서 팔거나 죽이면 1년 이하의 징역 또는 1,000만원 이하의 벌금에 처합니다 3. 유기동물 보호시설 찾기 http://www.animal.go.kr/ 동물보호관리시스템 홈페이지에서 유기동물 보호센터의 위치와 연락처를 확인하실 수 있습니다. 신고가 접수되면 동물보호관리시스템의 유기동물.동물보호센터 > 공고에서 확인이 가능합니다. 소중을 가족을 찾는데 도움이 되었으면 좋겠네요. 포인핸드 라는 아주 유용한 앱도 있어요~

포토샵 - 클리핑 마스크 만들기

이미지
<포토샵 사용시 알아두면 유용하게 활용할 수 있는 클리핑마스크 > 포토샵 실행 후 원하는 이미지를 볼러 옵니다. [file] – [open] <단축키 : Ctrl + O 또는 workspace(작업내역) 더블클릭 불러온 이미지를 레이어 복사 합니다. (단축키 : Ctrl +J) 새레이어를 만들어를 만들어 배경색을 칠해주세요. [단축키 배경색 칠하기 : Ctrl+Delete] [단축키 전경색 칠하기 : Alt + Delete ] 도형툴을 사용하여 도형을 그려봅니다. 정원을 그릴 때는  Shift + 드레그를 해줍니다. 레이어의 순서를 다음과 같이 변경해줍니다. 이미지 밑으로 도형을 이동시켜줍니다. 레이어 순서 변경하는 단축키 [ 가장 아래  :  Ctrl + Shift + [ ] [ 가장 위  :  Ctrl + Shift + ] ] [ 레이어 한칸 아래  :  Ctrl + Shift + [ ] [ 레이어 한칸 위 :  Ctrl + Shift + ] ] 이미지를 선택한 후 마우스 오른쪽 클릭 [Create Clipping Mask]를 선택해줍니다. [ 클리핑 마스크 단축키 : Ctrl + Alt + G ] 도형안에 선택한 이미지가를 넣을 수 있다. 완성된 이미지

[레드마인] 레드마인 플러그인 설치하기

이미지
레드마인 설치 후 Check List 기능 사용을 위하여 플러그인을 설치 하는 방법에 대해 알아보겠습니다. 레드마인 설치 방법은 아래 링크를 참조 하시면 됩니다. 레드마인 설치 따라하기 플러그인은 RedmineUP.com 에서 다운로드 하였습니다.   RedmineUP.com 이제 레드마인이 설치된 서버에 접속합니다. 1. 레드마인 설치 루트 폴더로 이동 합니다. 위의 설치 링크대로 설치 하셨다면  /usr/share/redmine  경로가 됩니다. # cd /usr/share/redmine/ 2. 루트 폴더의 plugins 폴더로 이동하여 플러그인 폴더를 복사합니다. 폴더가 없는 경우에는 새로 생성해 주면 됩니다. # mkdir plugins 다음으로 다운로드 해놓은 플러그인 폴더를 복사해 줍니다. 3. Gem 파일을 설치 합니다. # bundle install --without development test 4. Plugin’s 테이블을 추가합니다. # bundle exec rake redmine:plugins:migrate RAILS_ENV=production 5. 아파치 서버를 재기동 합니다. # service apache2 restart 6. 레드마인 설정에서 플러그인을 확인합니다. 플러그인 설치가 모두 완료 되었습니다.

[Swift] if..return을 알기 쉽게 대체한 guard 조건문

이미지
안녕하세요 명동콜링입니다. 이번에는 Swift에서 다른 언어와는 다르게 아주 간편하게 if... return 형태를 식별할 수 있는 guard 조건문에 대해 간단하게 알아 보려 합니다. 먼저 if... return의 형태가 어떤 것이냐 하면 다음과 같은 형태가 되겠습니다. 다음 예시는 간단하게 Playground에서 String값을 식별하여 return 처리를 한 예를 들었습니다. 이처럼 if 안에 있는 조건에 해당되는 데이터들은 더이상 메소드의 내용을 진행하지 못하고 팅겨주는 역할을 하는 흔히 개발자들이 필터링 할 때 사용하는 조건문 형태가 되겠습니다. 이 if ... return 형태의 조건문을 Swift에서는 guard 조건문이라는 것으로 따로 구분을 지어서 만들게 되었습니다. 그렇게 어렵지 않은데다가 왜 따로 구분을 지어놓은 지는 쓰는 사람은 이해가 가지 않지만, 아마도 좀 더 한눈에 들어올 수 있는게 요즘 코딩의 추세이다 보니 그에 맞춰 바꾸지 않았나 생각이 됩니다. 그럼 저 위의 형태를 guard 조건문으로 바꾸면 어떻게 될까, 바로 다음과 같다 형태는 guard [조건] else .... return 형식으로 바뀌었다. 형태 외에 if와 다른 점이라 함은 조건식의 형태와 return이 꼭 들어가야 한다는 점이다.  전자에 대해 설명하자면 else라는 지시어가 있기 때문에 if와는 다르게 무조건 guard안으로 들어오는 조건문이 아닌 '무조건 통과하는 조건문'을 사용해야한다.   else, 우리가 조건문에서 알고있는 "그렇지 않으면..."의 뜻을 가지고 있는 지시어이기 때문에 guard 조건문 안에 조건과 조합이 되면 if... return에서 쓰이는 조건과 같은 뜻으로 되어집니다. 그래서 조건식을 작성할 때에는 if ... return에서 쓰일 때와 반대되는, 무조건 통과할 것 같은 조건을 사용하면 되겠습니다. 여러 가지의 조건이 있을 때는 if와 함께 중첩되어 사용한다면

[네이버클라우드] 서버 인스턴스 생성하기

이미지
안녕하세요. 남산돈가스 입니다. 오늘은 AWS가 아닌 국내 Naver Cloud Platform(이하 ncp)에서 서버인스턴스를 생성하는 방법을 간단하게 소개해보려고 합니다. ncp에서는 aws의 대표서비스인 ec2와 비슷하게 서버 인스턴스를 제공하는 기능이 있는데요. 별 다른 명칭 없이 Server라는 이름으로 쓰이고 있습니다. 개인적으로 aws의 ec2와 ncp의 Server로 느낄 수 있는 차이점은 사용성으로 얘기할 수 있을 것 같습니다. aws는 ec2 인스턴스를 하나 생성하는 데에 정말 생각지도 못한 다양한 옵션을 설정할 수 있습니다. 이것이 큰 장점으로 작용하나, 처음 인프라를 구축하는 사람들에겐 머리를 복잡하게 하는 요인이 될 수도 있는데요. 반면에 ncp의 Server는 aws ec2 만큼의 다양한 옵션을 제공하지는 않지만, 일단 국내 서비스인 점에서 번역 된 한국어가 아닌 이해하기 쉬운 한국어로 소개가 되어있다는 점과, 손 쉽고 직관적으로 Server를 올릴 수 있다는 점에서 각각 장단점이 있는 것 같습니다. 소개는 여기까지 하고, 바로 Server 인스턴스를 생성해보도록 하겠습니다. 먼저 ncp 콘솔에 접속합니다. 현재 운영 중인 ncp 서비스들을 간략하게 보여주는 Dashboard 화면입니다. 좌측 메뉴 중 Server를 클릭합니다. Server 콘솔화면입니다. 서버 생성 버튼을 클릭합니다. 생성할 서버의 종류 및 스펙을 선택하는 화면입니다. * 부팅디스크의 크기 (aws의 루트 디바이스 볼륨) * 이미지 타입 (aws의 기본ami와 마켓플레이스 ami) * OS 이미지 타입 - 리눅스의 CentOS기반, Ubuntu 기반 또는 Windows 서버 저는 우분투 최신 버전인 Ubuntu-16-04를 선택하고 다음을 선택했습니다. 그 다음은, 서버에 대한 기본정보를 설정하는 화면입니다. 특별한 설정은 없고, aws ec2의 userdata와 같이 ncp에서는