노마드 코더에서 Python을 이용한 웹 스크래퍼를 만드는 강의를 듣고 있습니다. 웹 페이지에 있는 HTML 코드에서 정보를 가져올 때에 BeautifulSoup을 사용해봤습니다. 저도 수업 강의 내용과 문서를 보면서 해보았습니다. BeautifulSoup? BeautifulSoup은 HTML 과 XML 문서를 분석 할 수 있는 Python 패키지 입니다. HTML 에서 데이터를 추출하여 사용할 수 있기 때문에 웹 스크래핑에 유용합니다. 웹 스크래핑과 웹 크롤링에 대해서 개념이 명확하지 않으시다면 아래 링크 참고 해주세요. 전체 함수는 BeautifulSoup 문서를 참고해주세요. [공부/Python] - Python 웹 스크래핑, 크롤링? 정체가 뭐냐 개념 잡기 Python 웹 스크래핑 먼저 웹스크래핑..
처음 Python을 찾아 본 이유는 웹 크롤링을 해보기 위해서 였습니다. 지금 웹 스크래핑을 먼저 배우고 있는데요. 크롤링? 스크래핑? 그놈이 그놈 같은 이 기분을 해소하기 위해서 개념을 알아보려고 합니다. 웹 크롤링, 스크래핑의 개념 많은 사람들이 웹 페이지에서 필요한 정보를 긁어서 수집하는걸 웹 크롤링이라고 생각합니다. 저도 이렇게 이해를 하고 있었는데요. 이게 명확한 표현은 아닙니다. 정확한 내용을 이해하려면 개념을 파악해야 합니다. Web Scraping(웹 스크래핑)이란? 웹 사이트 상에서 원하는 부분의 위치한 데이터를 추출하여 수집하는 기술. Web crawling(웹 크롤링)이란? 자동화 봇(bot)인 웹 크롤러(web crawler)가 정해진 규칙에 따라 복수 개수 웹 페이지를 브라우징하는..
혹시 프로그래밍 언어를 공부하고 싶은데 환경 설정 때문에 미루신 적 있으신가요? 비주얼 코드(Visual Code), 비주얼 스튜디오(Visual Studio), 다른 코드 편집기 등 설치를 미루셨나요? 코딩 입문자분들이 어려워하시는 부분도 이런 설치, 환경 설정 등에 있다고 생각됩니다. 저는 요즘 Python으로 웹 크롤링을 하고 싶어서 보고 있는데요. 지금 기본적인 Python 문법을 익히고 있습니다. 별다른 환경 설정 설치 없이 해보고 있죠. 코딩을 해보기 위한 준비물은 크롬만 있으면 됩니다. 이제 다양한 언어를 사용해 볼 수 있습니다. 어떻게 할까요? Repl.it 사이트를 이용하는 겁니다. Repl.it Repl.it 은 온라인 IDE입니다. IDE는 통합 개발 환경(Integrated Deve..
요즘 애플로그인 작업을 하고 있습니다. 코드 자체는 길지도 않고 어렵지도 않은데... 인증서가 애드훅이라 테스트하는 과정이 힘드네요. [공부/iOS] - 애플 로그인1 - Sign in with Apple (Objective C) 디바이스로 애플로그인을 해보면서 테스트를 해봤는데요. 애플로그인으로 앱에 접속한 상태일 때 계정 연결을 끊게 되었을 때 처리가 필요했습니다. 게임에서 로그아웃하는 게 아닌 아이폰 설정에서 하는 걸 말합니다. 아이폰 설정창으로 가보면 애플 계정에 연결된 앱들을 볼 수 있습니다. 계정에서 암호 및 보안을 눌러보면 내 Apple ID를 사용하는 앱을 볼 수 있습니다. 눌러줍시다. 현재 연결된 앱들인데요. 2번째는 애플 공식 예제입니다. 현재 작업하고 있는 앱은 가려뒀습니다. 앱을 눌..
애플 정책에 따라 앱에서 사용자의 기본 계정 설정을 타사 소셜 로그인 서비스 (페이스북 구글, 트위터 등) 사용하는 앱은 Apple 로그인 역시 동등하게 제공해야 합니다. 사용자의 기본 계정은 사용자 식별, 로그인, 앱의 기능 및 연결된 서비스에 접근하기 위한 목적으로 앱에 설정한 계정을 의미합니다. 애플 로그인 가이드 라인 애플 로그인 예제 애플에서 이제 Objective-C는 예제도 제공하지 않는군요. 애플 공식 예제에는 Swift만 제공되어있습니다. 애플 로그인 샘플 코드 AuthenticationServices Sign In with Apple 애플 로그인은 구현하기 위해서는 AuthenticationServices.Framework 를 추가해야 합니다. Xcode 11.3+부터 사용이 가능하며 ..
UITableView는 여러 아이템을 테이블(리스트) 형태로 보여주기 위한 뷰입니다. 컬럼은 여러 개를 갖지 않고 한 가지만 가집니다. 대신 데이터를 여러 행으로 표시할 수 있게 됩니다. 각 데이터들은 TableViewCell을 통해서 표현이 됩니다. Recycle Cell 테이블 뷰는 Cell을 재사용합니다. 예를 들어서 30개의 데이터가 있고 이걸 리스트로 보여주려고 합니다. 하지만 디자인된 Cell은 화면에 5개 정도만 표시가 된다고 해봅시다. 만약 모든 데이터에 맞게 셀을 생성하게 되면 낭비가 됩니다. 즉 실제로 보이는 셀은 한정적이기 때문에 모든 데이터를 위해서 TableViewCell을 만들지는 않습니다. 화면에 보이는 셀을 만들고 재활용해서 사용하게 됩니다. 따라서 스크롤을 하게 되면 새로운..
Swift의 Object인 구조체와 클래스에 대해서 알아봤습니다. 구조체와 클래스 모두 관계가 있는 데이터를 묶어서 표현할 때 사용됩니다. 이것을 표현하면 프로퍼티와 메서드로 표현할 수 있습니다. 문법과 구조는 비슷하지만 사용되는 방식은 다른데요. 오늘은 두 가지를 비교해 봅시다. 구조체와 클래스 차이 Struct Class Value Types Reference Types Copy Share Stack Heap Fast Slow 해당 표는 Struct와 class의 차이점입니다. 하나씩 살펴 봅시다. Value Types과 Reference Types Swift에서는 구조체와 클래스는 할당되는 방식이 다릅니다. 구조체의 경우Value Type 값에 의한 복사가 이뤄집니다. struct PersonStr..
Swift의 클래스 역시 구조체처럼 관계가 있는 것들을 묶어서 표현할 때 사용됩니다. 구조체와 마찬가지로 기본적인 구조는 프로퍼티와 메서드로 구성되어있습니다. 구조체를 클래스로 변경이 쉬울 만큼 구현 문법이 동일합니다. 클래스를 알아보고 구조체와 클래스의 차이점에 대해서 알아보겠습니다. Class(클래스) 정의하기 class 클래스 이름 { // 프로퍼티 // 메서드 } 클래스의 간단한 형태입니다 class로 지칭할 수 있으며 property와 method를 가질 수 있습니다. class Person { var firstName: String = "" var lastName: String = "" // 따로 initializers를 정의하지 않고 프로퍼티를 초기화 해주어도 됩니다. func printMy..
Swift에서도 구조체와 클래스가 있습니다. 오늘은 Struct인 구조체에서 알아봅시다. 구조체는 사용자 정의 데이터 타입인데요. 구조체를 사용하면 서로 관계가 있는 것을 묶어서 표현할 수 있게 됩니다. 관계있는 것들은 어떻게 표현할 수 있을까요? 바로 프로퍼티와 메서드를 이용하여 만들어 줄 수 있습니다. Struct는 다른 기본 데이터 타입과 마찬가지로 Value Type입니다. 즉 값이 Copy가 되는 것이죠. 차근차근 알아봅시다. Struct struct [구조체의 이름] { // 프로퍼티... //메서드... } struct Position { let x: Int let y: Int } Struct는 프로퍼티와 메서드를 사용하여서 만들 수 있다고 했습니다. Position은 Int 타입 2개 x,..
Closure(클로저)는 일종의 실행 가능한 코드블럭이라고 할 수 있습니다. 이름 없는 함수(메소드)라고 합니다. 이전에 공부 한 함수는 Closure의 형태로 이름이 있는 클로저라 할 수 있습니다. C++에서의 람다와 비슷하다고 이해했습니다. 클로저는 전달 인자로도 넘겨줄 수 있으며, 변수나 상수로 저장될 수 도 있습니다. 그리고 함수의 반환 값으로도 사용할 수 있죠. 그리고 클로저는 레퍼런스 타입입니다. Closure //Closure { (parameters) -> return type in //... code } var addClosure: (Int, Int) -> Int = { (a: Int, b: Int) -> Int in return a + b } 클로저 표현 방식입니다. 함수와 비슷한 구조..
오늘은 새로 작업한 부분의 인앱 결제 테스트해야 했습니다. 따라서 iPhone 디바이스 빌드를 위해서 오랜만에 케이블을 연결했습니다. 그런데 빌드는 완료가 되었는데 앱 설치가 되지 않았습니다. iPhone is not available. 해당 팝업창이 보여지고 계속 넘어가지 않았습니다. iPhone is not available. Please reconnect the device. 다시 해보라는 말에 케이블의 연결을 해제했다가 다시 연결해보며 재시도를 했습니다. 마찬가지였습니다. 계속 해당 팝업창만 보이고 설치가 되지 않았습니다. Xcode 11.5 원인은 제 iPhone의 iOS 버전 때문이었습니다. 최근에 아이폰 코로나 관련 업데이트가 되었습니다. 바로 iOS 13.5인데요. Xcode에서 현재 iO..
Swift Colleciton Type 마지막 Set을 알아봅시다. Set은 수학에서 많이 봐왔던 집합입니다. 집합은 같은 요소를 가질 수가 없고, 집합 안의 순서도 의미가 없습니다. Swift에서도 동일합니다. 즉 고유값만 저장하는 Collection입니다. 중복된 값을 허용하지 않는다는 것이죠. 따라서 각각의 고유한 값을 순서에 대해서 고려할 필요가 없을 때에 Set을 사용 할 수 있습니다. Set 생성하기 //비어있는 Set 생성 var emptySet1: Set = [] var emptySet2 = Set() //초기화 var set1: Set = [1, 2, 3, 3, 4, 2] var set2: Set = [1, 2, 3, 3, 4, 2] //Set을 명시 하지 않으면 배열로 인식하게 됩니다...