[swift] 연산자들 (==, ..., ??) swift에도 다양한 연산자들이 있는데 조금 특이한 것만 기록한다 오늘도 역시 이 강의를 보면서 기록함 https://youtu.be/zHISh4p1MVM?list=PLJqaIeuL7nuFbWKMhG8-xLzF1T7gIPr8Z&t=264 == 값이 같은지 체크 === 포인터의 주소 까지도 같은지 확인 (같은 인스턴스를 가리키는지) ... 범위 연산자 1...5 는 1~5 1.. swift & iOS/swift 2022.01.10
[swift] 타입 체크 (is) 어떤 객체가 특정 클래스의 인스턴스인지 검사하려면 is 키워드를 사용한다. var a : A = A() // a는 A 클래스의 인스턴스 if a is A { // } swift & iOS/swift 2022.01.10
[swift] 타입 캐스팅 (형 변환) https://youtu.be/V6-WmAh4Y1E?list=PLJqaIeuL7nuFbWKMhG8-xLzF1T7gIPr8Z 요새 이 채널에서 swift, ios 개발 영상을 열심히 보고 있다. 매번 swift 로 올리는 글도 이 채널의 영상들을 보고 정리하는 것이다. 대학교 강의인 것 같은데 요새는 유튜브에서 여러 강의들이 영상으로 올라오니 무엇이든 배우기 좋은 것 같다. 형 변환(casting)은 as 라는 키워드를 사용한다. 형 변환에는 upcasting, downcasting이 있는데 위를 부모 클래스 아래를 자식 클래스 라고 생각하면 upcasting, downcasting이 무엇인지 쉽게 추측할 수 있다. upcasting은 어떤 객체를 부모 클래스의 객체로 형 변환 하는 것이고 (부모 클래스 swift & iOS/swift 2022.01.10
[swift] Any, AnyObject Any 모든 인스턴스를 다 표현 클래스, 구조체, 열거형, 함수 모두 가능 let arr: [Any] = [1, 2, "ha", true] AnyObject 클래스의 인스턴스만 표현함 (구조체 x , 열거형 x) protocol 중에 AnyObject 인 경우가 있는데 클래스에서만 채택되도록 하기 위해서임 // 아래처럼 작성할 수 없음. Int, String, Boolean 모두 구조체이기 때문 let arr: [AnyObject] = [1, 2, "ha", true] 포함하는 정도로 보자면, Any > AnyObject > NSObject swift & iOS/swift 2022.01.10
[swift] switch vs. if 언제 쓸까? (짧음 주의) 비교해야 하는 조건이 5개를 넘으면 switch, 5개 이하면 if .....^^ if conditions > 5 { useSwitch() else { useIf() } swift & iOS/swift 2022.01.09
xss, csrf 간단하게 xss cross site scripting: 자바스크립트 공격 예: 글쓰기 버튼 클릭 -> 글 작성 화면 -> 글 작성 이 때 글 작성할 때 같은 자바스크립트 코드를 넣어서 작성함 csrf 예: 하이퍼링크 이용.. 방지방법: 1 주소에 다 드러나는 get 방식 말고 post 방식 2 같은 도메인에서 들어온 요청이 아니면 다 차단 (header에서 referrer 검증) 3 csrf 토큰 사용 (스프링 시큐리티에서는 csrf 토큰 없으면 무조건 접근 차단함) Javascript와 아이들 2022.01.09
[Spring boot] localhost:8080 로그인 창이 뜰 때 스프링 부트로 서버도 잘 동작시켰고 localhost:8080 으로 접속도 되는데 자꾸 위와 같은 로그인 창이 뜰 때가 있다. 이 주소에 대한 모든 접근을 스프링 시큐리티가 일단 막고 보는 것이다. 위와 같은 로그인 창이 보였을때 로그인 하려면, ide에서 스프링 서버를 동작시킬 때 나오는 로그 중에 'Using generated security password:...' 같은 부분이 있다. username은 user라고 입력하고 password는 'Using generated security password: ' 에 이어서 나오는 아주 긴 비밀번호를 입력해서 로그인하면 된다. 아예 이런 로그인 창이 뜨지 않게 하려면 build.gradle 파일에서 아래 두 줄을 주석처리 하면 된다. (maven이면 po.. Java & Spring boot 2022.01.09
오버로딩 & 오버라이딩 오버로딩 한 클래스 안에서 이름이 같은 함수를 여러번 쓰는것..? (내용 보충 필요) (22.01.19 추가: 이름은 같은데 parameter의 개수와 타입은 다른! 함수를 여러 개 정의하는 것) 오버라이딩 자식클래스 부모클래스 상속 사이에서 같은 이름의 함수가 있을때 자식 클래스의 함수를 우선하고 싶을때 오버라이딩 사용 swift & iOS 2022.01.08
[swift] 옵셔널 optional 간단 정리 참고: https://www.youtube.com/watch?v=V6-WmAh4Y1E&list=PLJqaIeuL7nuFbWKMhG8-xLzF1T7gIPr8Z&index=26 옵셔널(optional)은 변수/상수에 아무런 값이 할당되지 않는 상황을 안전하게 처리하기 위한 방법이다. 그리고 옵셔널 타입이어야 nil을 할당할 수 있다. var a = nil 이렇게 작성하면 에디터에 에러가 나타난다. a가 옵셔널 타입임을 명시해준 후에야 nil을 할당할 수 있다. var a : Int? a라는 옵셔널 Int 형의 변수를 선언한 것이다. 이 변수에는 Int 형의 값을 할당할 수도 있고 값이 없을 수도 있다. (nil) 만약 a에 값을 할당하면 그 값은 옵셔널로 감싸지게 된다. a = 10 print(a) // O.. swift & iOS/swift 2022.01.08
[swift] 튜플(tuple) 생성과 값 접근하는 방법 튜플: 여러 값을 하나의 객체에 일시적으로 묶는 방법 * 다양한 타입을 한 튜플에 담을 수 있다. let myTuple = (10, 21.12, “hi”) * 튜플의 각 값에 접근하는 방법은 . 을 이용한다 let str = myTuple.2 // "hi" * 위처럼 각 값에 하나씩 접근할 수도 있지만 아래처럼 튜플의 모든 값을 한꺼번에 변수에 할당할 수도 있다. (자바스크립트의 구조분해할당 같은 느낌) let (age, width, greeting) = myTuple let (age, _, greeting) = myTuple // _ 언더스코어는 ‘무시한다’ 라는 뜻 * 튜플 생성할 때 각 값에 이름을 부여할 수 있고 그 이름들은 값에 접근할 때 사용할 수 있다. let testTuple = (heig.. swift & iOS/swift 2022.01.08