전체 글 54

[SOPT] 야우쓰_2주차 (옵셔널 삼항연산자)

야우쓰란? "야 우리도 스위프트 할 수 있어" in SOPT iOS 2주차의 키워드는 옵셔널 삼항연산자다. - optional 직역하면, optional 이란 wrapped 된 값이나 값의 부재를 나타낸다. 구체적으로 말하자면, 반환하고자 하는 값을 optinal 로 한 번 더 wrapped 하는 것을 의미한다. 왜냐하면 선언한 변수에 값이 없을 수도 있기 때문에, nil 값을 고려한 개념이라고 생각해줄 수 있다. 따라서 값이 있다면 값이 있다고 판단하고, 정상적인 변환이 불가능하다면 nil 값을 반환하고 프로그램이 종료된다. ++ 일반적인 변수, 상수에는 nil 값을 직접적으로 대입할 수 없다. 따라서 옵셔널 타입으로 설정해주어야 nil 대입이 가능하다. var i = 0 i = nil print(i)..

[SOPT] 애니메이션_2주차 (UIGestureRecognizer 중 UIPanGestureRecognizer)

애니메이션 클론코딩 스터디 in SOPT iOS 2주차는 UIGestureRecognizer 에 대하여 공부하였다. UIGesureRecognizer 는 class 의 한 종류이고 말 그대로 gesture 와 관련된 class 다. 아래와 같이 8개의 제스처를 제공한다. - UITapGestureRecognizer - UIPinchGestureRecognizer - UIRotainGestureRecognizer - UISwipeGestureRecognizer - UIPanGestureRecognizer - UIScreenEdgePanGestureRecognizer - UILongPressGestureRecognizer - UIHoverGestureRecognizer 구체적인 제스처 사용법은 따로 포스팅하..

[SOPT] 야우쓰_1주차 (swift 타입 / 기본 연산자 / 조건문 / 반복문 )

야우쓰란? "야 우리도 스위프트 할 수 있어" in SOPT iOS 1주차의 키워드는 타입 / 기본연산자 / 조건문 / 반복문 이다. - 타입 1. bool bool 은 true 와 false 만을 값으로 가진다. var godotHasArrived = false let numbers = 1...5 let containsTen = numbers.contains(10) print(containsTen) // Prints "false" let (a, b) = (100, 101) let aFirst = a < b print(aFirst) // Prints "true" 위는 애플디벨로퍼 공식 문서다. 그렇다면 나는 궁금한 점이 생겼다. 왜 containsTen 이나 aFirst 를 bool 이라고 정의하지 않았..

[SOPT] iOS_2주차_과제

Closure's Capture List Closure 란 이제는 많이 들어봤어도 (이름 없는 함수 느낌) , Capture List 라는 것은 처음 들어본다. 먼저 Capture 란, 클로저를 변수에 할당하거나 클로저를 호출하는 순간, 자신이 참조하는 외부의 변수를 캡쳐한다. 예를 들어, 클로저에서 stored로 선언된 변수를 사용하고자 힙에 저장되는 클로저에 stored 변수 주소를 캡처하는 것을 의미한다고 할 수 있다. 이때 값 자체를 복사해서 사용할 수 있는 캡처리스트도 존재한다. 캡쳐리스트란, 주변 환경의 범위에서 참조한 변수들을 얼마나 강하게 캡쳐해야 하는지를 명시하는 것으로, 이를 통해 메모리 누수를 일으키는 강한 참조 순환을 피할 수 있다. 강한 참조 순환으로는 Closure 의 강한 참조..

[SOPT] iOS_2주차_정규세미나 (데이터 전달 심화, SnapKit을 통한 AutoLayout, InjectIII, Then)

목차 1. 데이터 전달 심화 - Protocol / Delegation을 활용한 데이터 전달 - Notification Center를 활용한 데이터 전달 - Closure를 활용한 데이터 전달 - Segue prepare 메소드를 활용한 데이터 전달 2. AutoLayout - Frame-Based Layout - Auto-Layout 3. InjectionIII, SnapKit, Then - SPM (Swift Package Manager) - InjectionIII - SnapKit - Then 4. 실습 코드 - Protocol / Delegation 을 활용한 데이터 전달 실습 - Notification Center 를 활용한 데이터 전달 실습 23.04.12 SOPT iOS 2주차 정규세미나 내..

[SOPT] iOS_1주차_과제 (final/private/lazy var/let/viewController/forEach/$0)

SOPT iOS 세미나 1주차 기본과제입니다. iOS 32YB 신지원 작성 0. 세미나 1주차 과제2 내용 1. final 키워드 사용 이유 상속을 방지하기 위해서 사용한다. final로 선언된 요소들은 직접 호출하는 반면, 그렇지 않은 요소들은 vtable을 통해 간접 호출되어 직접 호출되는 경우보다 느리게 작동한다. 즉, 다른 class에서 상속과 overrider가 불가능하게 된다. vtable 은 오버라이딩에 따라 어떤 지점에서 실행할지를 결정하는 반면, final은 바로 어떤 메서드를 실행할지 결정할 수 있다. 따라서 상속, 오버라이딩 될 필요가 없는 클래스, 메서드, 프로퍼티에 final 키워드를 붙이게 된다면 클래스의 경우 static Dispatch로 작동하게 되어 런타임 시간이 더 효율적..

[크롤링] 목록 범위 설정하고 동적페이지에서 범위 찾기

#----------------selenium 설정 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By #find_element 함수 chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option("detach", True) #페이지가 자동으로 꺼지지 않게 해줌 driver = webdriver.Chrome(service=Service(Chrom..

cs/크롤링 2023.03.27

[크롤링] iframe

url = 'https://prstaff.sogang.ac.kr/prstaff/index.html' driver.get(url) sleep(1) driver.find_element(By.XPATH, '/html/body/div/ul/li[1]/a').click() 위의 간단한 코드가 작동이 안되었다. 원인은 " Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/ul/li[1]/a"} " 라고 한다. 한마디로 나는 로그인을 눌러달라고 하였는데 로그인 버튼이 어딨는지 모른다는 것이다. 친절하게 XPATH 도 적어줬건만! 바보! 이를 통해 iframe 이라는 것에 대해 알게 되었다. if..

cs/크롤링 2023.03.27

[크롤링] 하늬가람 페이지 크롤링해보자

내가 원래 크롤링을 시작했던 이유는 하늬가람 페이지를 크롤링해 또 다른 프로그램을 만들고 싶었기 때문이다. 그럼 앞서 배운 내용을 바탕으로 크롤링 해보자 https://hanigaram.sogang.ac.kr/front/cmsboardlist.do?siteId=hanigaram&bbsConfigFK=1301 학생홍보대사 하늬가람 - 공지사항 1 2 3 4 5 6 7 8 9 10 / 10 hanigaram.sogang.ac.kr 이 공지사항에 있는 목차 제목을 크롤링하고자 하였다. 내가 크롤링하고자 하는 페이지의 소스는 이렇게 구성되어 있었다. div(class = list_box) - ul - 여러개의 div - 여러개의 a (원하는 내용) 사실 중간에 왜 div 를 한 번 더 썼는지 모르겠다. 개발자 ..

cs/크롤링 2023.03.20