[머신러닝] Hellow World 머신러닝 프롤로그 (글쓰기에 앞서서...)

안녕하세요? 처음으로 글을 쓰게 되었네요... 무엇을 쓸까 고민을 많이 하다가 그냥 흰종이만 쳐다보고 있었네요 ^^.. 우연하게 지난주에 Tensorflow 교육을 받게 되었고 그 후 머신러닝, 딥러닝, 빅데이터 , 데이터 분석 등.... 해보고 싶다라는 생각이 강하게 밀려와서 이렇게 글을 쓰게 되 었습니다. 근데 이미 이분야는 명동교자님이 쓰고 계셔서 겹치긴 하지만... 아무것도 모르는 입장에서 여기저기 부딪쳐가면 써내려가다보면서.. ^^ 많은 의견들도 있을 것이고 저도 많은 것을 배우지 않을까라는 조그마한 생각을 가지고 적으려 합니다. 기초적인 기술 부터 고차원 적인 기술까지 차근 차근 배우고 이해한 내용을 글로써 쓸 예정 이라 혹시나 잘못 이해한 점이나 이해 못하고 있는 부분은 같이 이야기 나눴으면 좋겠습니다. [ 향후 다룰 내용 ] 1) 데이터 분석 (통계학적) 2) 딥러닝, 머신러닝 3) 파이썬 3) Tensorflow 4) R 프로그래밍 5) 이미지 프로세싱 (파이썬을 활용한 분석 전처리 방법) 6) 파이썬을 통한 웹스크롤링 ....... (등등) ps) 사실 캡챠 인식이 빠른 시일내에 이룰 목표라.. 차례 없이 진행 될수도 있습니다. ^^

[iOS 개발팁] UITextView에 placeholder 추가하기

텍스트 입력할 수 있는 UITextView, UITextField를 사용하다보면, "제목을 입력해주세요", "내용을 입력해주세요" 등의 placeholder 값을 넣을 경우가 많습니다. 기본적으로 UITextField에서는 placeholder 프로퍼티를 제공하지만, UITextView에서는 placeholder 제공하지 않지 않습니다. 내용과 같은 많은 텍스트를 입력해야하는 경우에는 UITextViewDelegate를 사용하여, 텍스트를 입력받기전, 입력받은 후에 "내용을 입력해주세요" 텍스트를 넣어주었다가, 지워주어야합니다. 굉장히 불편한데요, UITextView를 상속받아 클래스를 만들고, placeholder 와 같은 기능을 구현하여 이용하면 편리합니다. 먼저, UITextView를 상속받은 클래스는 만들고,  PlaceholderTextView.h  placeholder 변수를 생성합니다. ============================================================================= #import <UIKit/UIKit.h> @interface PlaceholderTextView : UITextView @property ( strong , nonatomic ) NSString *placeholder; @end ============================================================================= PlaceholderTextView.m 구현부의  drawRect 함수에서 UILabel를 만들어서 UITextView 위에 Add해줍니다. 그리고 UITextView의 값을 변경할때 함수로 호출할수 있도록 노티피케이션으로 등록합니다. ======================================

[iOS 개발팁] 스토리보드 분리하기

이미지
iOS를 개발 시 Storyboard는 UI를 만들수 있는 편리한 도구 입니다. 하지만, 프로젝트가 커가면서, Storyboard에 UI를 계속 추가하다보면, 너무 많은 UI 때문에 Storyboard 로드가 느려집니다. 이를 방지하기 위해, Storyboard를 추가로 만들고 사용하는 팁을 알려드립니다. 우선 아래는 플랫폼사업팀에서 진행하는 아이프렌즈펫의 Main.Storyboard의 UI 들입니다. 현재 20개 이상의 화면이 Main.Storyboard에서 사용중이여서, 로드가 오래걸려서 짜증이 납니다. 플랫폼사업팀에서 진행중인 아이프렌즈펫 앱의 스토리보드  이번 아이프렌즈펫 1.9.0 버전, 스프린트에서는 "소모임" 이라는 기능을 추가하기 위해 기존 Main.Stroyboard 에 아래의 ViewController를 추가하였습니다. Main.Stroyboard 로드시에 너무 느려서 작업속도가 현저히 떨어집니다. "소모임" 기능은  하나의 작업단위로 스토리보드를 생성해서 관리하는할 필요가 있으므로, 소모임.Storyboard 파일을 신규로 만들고 Main.Storyboard 있던 ViewController들을 옮겨할 필요가 생겼습니다. 새로운 파일을 만들기 위해서, User Interface에서 Storyboard를 추가하였습니다. 추가된 소모임.Storyboard 에 Main.Storyboard 있던 ViewController들을 옮겼습니다. 파일을 로드하는데 훨씬 빨라졌습니다. 이제는 연결할 ViewController를 호출하는 부분에 코드를 입력하면됩니다. 아래는 "더보기" 화면입니다. "소모임" 메뉴를 통해 소모임에 관련된 ViewController를 연결해야 하므로, 해당 메뉴를 호출하는 함수에 추가된 소모임.stroyboard 를 연결해주면 됩니다. ==========================================

어도비 플래시(Adobe Flash), 2020년 역사의 뒤안길로 사라진다

이미지
어도비 플래시가 2020 년 말에 지원을 중단한다고 합니다. (기사보기 > http://www.zdnet.co.kr/news/news_view.asp?artice_id=20170726065937 ) 솔직히 플래시의 하락세가 시작된지 꽤 오래되어서 곧 플래시 지원이 끊긴다는 것보다 아직도 지원을 끊지 않았다는 사실이 더 놀라운데요. 플래시 액션스크립터로서 경력을 시작했던 저로서는 신기한 기분이 들어서 포스팅을 하게 되었습니다. 플래시는 1996년에 Macromedia 사에서 만들고 2005년에 Adobe가 인수해 지금까지 왔습니다. 웹상에서 영상이나 게임 등 HTML 로는 구현하기 힘든 프로그램등을 사용할 수 있게끔 해준 플러그인의 일종으로, 플래시로 무언가를 만들면 웹에서 배포하기가 용이하기 때문에 빠르게 확장되어 나간, 인기 있는 기술이었습니다. 알_사람은_다_아는_교과서.jpg 이제는 유물들 제가 플래시를 배우고 있던 2007~2009년, 플래시의 인기는 거의 정점을 찍고 있었습니다. 웬만한 웹사이트나 게임은 물론이고 많은 터치폰 UI, IPTV UI, 냉장고 터치스크린 등이 플래시로 제작되었던 걸로 기억합니다. 삼성이 플래시로 모바일 UI를 제작할 수 있게끔 플래시 Lite 버전을 만들어달라고 Adobe 사에 직접 요청했다는 소문(?)도 들었습니다. Flash Lite 로 UI 를 제작했던 LG 뉴초콜릿폰(2009) 사진출처: http://pcpinside.com/1813 매 주 전세계 웹사이트 순위를 매겨 보여주는 awwwards ( https://www.awwwards.com/ ) 에는 플래시로 만든 화려한 모션의 사이트로 도배되어 있었고, papervision3d 같은 오픈 라이브러리를 이용한 풀 플래시 3D + 물리엔진으로 만들어진 게임 등이 많이 있었죠. 예를 들면 이런 것들요. 영상출처: https://youtu.be/XNAFFhAkGC8 나날이 높아지는 인기에 힘입어 Ad

[iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 3부 (필터)

이미지
[iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 1부 (cocospods) [iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 2부 (카메라) [iOS 강좌] 오픈소스로 쉽게 카메라 앱 만들기 - 3부 (필터) 이번 시간에는 카메라의 필터를 변경할 수 있도록하고, 촬영된 사진을 휴대폰의 저장을 해보겠습니다. 먼저 GPUImage에서 제공하는 필터를 카메라에 추가해보도록 하겠습니다. 많은 필터를 제공하고있는데요. iOSBlurFilter를 적용해보겠습니다. iOSBlurFilter 선택해서 해당 클래스를 들어가보면, 프로퍼티값을 확인 할수 있는데요. 설정된 필터에서 값만 변경해주면, 나만의 맞춤 필터를 완성할 수도 있습니다. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #import "GPUImageFilterGroup.h" @class GPUImageSaturationFilter ; @class GPUImageGaussianBlurFilter ; @class GPUImageLuminanceRangeFilter ; @interface GPUImageiOSBlurFilter : GPUImageFilterGroup {     GPUImageSaturationFilter *saturationFilter;     GPUImageGaussianBlurFilter *blurFilter;     GPUImageLuminanceRangeFilter *luminanceRangeFilter; } /** A radius in pixels to use for the blur, wit

[iOS 개발팁] 빌드 환경 분리하기

이미지
Xcode에서는 Plist 파일을 이용하여 빌드 환경을 분리하여 관리할 수 있습니다. 프로젝트를 진행하다보면, 개발환경, 운영환경에 맞게 App를 빌드하여 테스트를 진행할 경우 들이 있습니다. 프로젝트를 처음 생성하면, 아래와 같이 info.plist 파일이 생성이 됩니다. 프로젝트에 대한 설정값들을 관리 할수 있는 파일인데요. 프로젝트 파일을 선택하기 되면, 아래와 같이 현재 연결된 타겟으로 정보를 입력할수 있습니다. Bundle identifier 에 번들명을 입력하게 되어있습니다. 여기에 TARGETS를 추가하면, 다른 번들을 추가 할수 있습니다. Duplicate를 통해 타겟을 복사합니다. 복사한 뒤 dev 라고 이름을 변경합니다. 그후 "Edit Sceme.." 선택하고,  하단에 "Manage Scemes.." 를 선택합니다. 기존의 new가 있고, 새로운 schemes이 추가되어있습니다. 이스키마도 dev로 변경합니다. 변경 후에는 상단 프로젝트에서 스키마를 선택할수 있게 됩니다. 그다음 추가된 plist파일을 이름을 변경하고, Build Settings에서 변경된 이름을 넣어줍니다. 여기까지가 타겟을 추가하고, 스키마, plist파일을 연결해주는 세팅입니다. 이제는 각종 path 및 이름들을 설정해주면됩니다. 각종 API 패스들, 프로젝트 이름를 따로 설정하고, 빌드할때, 타겟만 변경하면 되므로, 매번, 패스들을 변경할필요가 없어서, 안정적인 빌드를 할수 있습니다. 아이프렌즈펫에서는 운영버전과 개발버전에 대한 경로들을 plist에서 정의해두고, 사용하고있습니다. 여러분들의 프로젝트도, 빌드 환경을 분리해서 안정적으로 운영해보세요 운영버전 개발버전

[AWS] Lambda + API GateWay를 이용해 간단한 RESTful API 만들기 #2

이미지
지난 시간에 이어서 Lambda + API Gateway를 이용해 간단한 RESTful API 만들기 2편을 진행하겠습니다. 이전 포스팅에서 Lambda를 이용하여 함수를 작성해보는 것 까지 진행했었는데요. 그렇다면 이번 포스팅에서는 API Gateway를 통해 요청 된 리소스들을 작성한 Lambda Function이 실행되도록 연결해보도록 하겠습니다. 먼저 API Gateway 서비스로 이동합니다. 시작을 누르고 나오는 화면에서 우리는 새로운 API를 만드려고하니까 새 API를 체크하시고 이름과 설명을 작성합니다. 작성 후 API 생성 버튼을 누르면 새로운 API Gateway가 생성됩니다. 여기까지 왔다면, 이제 실제 API를 정의하고 만들어봐야겠죠? 상단의 작업 버튼을 누르면 여러가지 작업들의 목록이 보여집니다. 여기서 먼저 리소스를 생성하겠습니다. 리소스는 말 그대로 이 API가 어떤 내용을 가지고 있는 것인지를 나타내는데요. 예를 들어 회원에 대한 API를 만드실거면 리소스이름을 member로 설정하시면 이 API의 경로는 /(루트) 하위의 member 라는 리소스를 가지게되는 것입니다. 여기선 실제로 member라는 리소스를 사용하겠습니다. 리소스를 생성하면 아래와 같이 /member라는 리소스가 생성됩니다. 그럼 이제 이 member라는 리소스에 메서드를 추가시킬 건데요. 여기서 메서드는 HTTP 메소드를 의미합니다. 기본적으로는 GET, POST, PUT, DELETE 등이 있습니다. 간단하게 알아보자면. GET – URL이 가진 정보를 검색하기 위해 서버 측에 요청하는 메소드 POST – URL에 폼 입력을 처리하기 위해 구성한 메소드 PUT – POST와 유사한 방식이며 일반적으로 웹서버에 변경을 요청하는 메소드 DELETE – 말 그대로 URL에 삭제를 요청하는 메소드 로 정리할 수 있다. 우리는 먼저 POST 메소드 부터 추가해보겠습니다. 위와 같이 작업목록에서 이번엔 메서드 생성 버튼을 누르고