일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 아이패드다이어리
- 스프링부트 웹 소켓
- 다이어리
- 42seoul
- 데이터베이스
- 네트워크
- MySQL
- javascript
- CI
- IOS
- swift
- JPA
- 스프링
- DBMS
- 인공지능
- jenkins
- sql
- springboot
- 프로그래밍언어론
- Spring
- Xcode
- AI
- 스프링부트
- 티스토리챌린지
- 리눅스
- CD
- 오블완
- libasm
- 소켓
- 오라클
- Today
- Total
목록프로그래밍 언어 (36)
Hi yoahn 개발블로그
리액티브 프로그래밍 지원을 위한 주요 API 들이 추가되었다. 리액티브 프로그래밍이란?응답이 빠르고, 탄력성과 회복성이 좋으며, 메시지 기반으로 통신하는 비동기 non-blocking 방식의 프로그래밍 Reactive Streams- 구성 인터페이스: Publisher / Subscription / Subscriber(Processor - Subscriber 와 Publisher 역할 모두 수행)Publishersubscribe(Subscriber subscriber)- 구독 요청- subscriber 에게 onSubscribe(subscription) 을 통해 subscription 을 전달해줌SubscriberonSubscribe(Subscription subscription)- 구독onNext(T ..
제 블로그는 제가 공부한 내용들을 기록하고 나중에 기억이 안날때를 대비해 제가 보기 위한 용도로 작성하고 있습니다.그럼에도 불구하고 구독해주신분들이 계셔서 감사,, 1. 확장된 try-with-resources개발자가 직접 닫아줘야했던 자원을 try( ) 안에 선언하여 try 로직이 끝날때 자동으로 해당 자원을 닫는 기능이다.이때 자원은 AutoCloseable 구현하고 있어야 함try (Resource resource = new Resource()) { // job}자바 8까지는 try() 바깥에서 선언한 변수에 대해서는 try-with-resources 구문을 사용할 수 없었지만 자바9 부터 final 혹은 초기화한 이후 값이 변경되지 않은 변수인 경우에 try() 안에 변수 이름을 한번 더 쓰..
print() 가장 기본적인 사용법은 문자열이나 출력할 변수를 집어넣고 사용하는 것이다. 수식을 넣어 수식의 결과도 출력해볼 수 있다. 변수와 문자열들이 섞여야 한다면 print(grade, "등급") 이런식으로도 사용할 수 있다. 저렇게 출력하면 ,로 구분된 값 사이에는 출력 시 한칸의 공백이 추가된다. f-문자열 print(f"{x}와 {y}의 합: {x + y}") 이런식으로 사용하면 , 쉼표로 출력할 때 조정할 수 없는 공백을 조절할 수 있다. 형식화된 출력 print("%.2f" %py) print("%s: %d" % (key, value)) < 두개 이상인 경우 소괄호로 묶어줘야 한다. 이렇게 하면 특히 실수의 경우 출력 자릿수까지 조절이 가능하다. print("abcd", end=" ") e..
1. 댕글링 포인터 동적 할당된 변수를 다시 메모리 해제하는 경우, free를 통해 메모리를 해제할 수 있다. 하지만 할당되어있던 위치를 가리키던 포인터 변수는 여전히 그 위치를 가리키는 주소값을 가지고 있어서 해당 포인터가 NULL인지 검사할 때 NULL 이 아니라고 나오게 된다. 이렇게 할당 해제된 메모리 주소를 가리키는 포인터를 댕글링 포인터라고 한다. 댕글링 포인터를 사용하면 메모리 접근 시 프로그램이 예측 불가능한 동작을 하게 되는 위험이 있어서 사용하지 않는것이 좋다. 따라서 메모리가 해제된 곳을 가리키는 포인터를 다시 사용해야 하는 경우 할당 해제 후 포인터 변수에 NULL 값을 넣어 초기화해주는 것이 좋다. thinkpro.tistory.com/67 댕글링 포인터(Dangling Point..
1. NULL NULL 포인터 (void * )0 메모리 주소 0번지를 가리키는 포인터 0번지는 일반적인 프로그램이 접근 불가능한 메모리 영역이다. 포인터가 아무것도 가리키지 않는다는 것을 나타내기 위해 초기화 용도로 사용된다. NULL 이 0 으로 define 되어있다. 2. '\0' 아스키코드를 번호로 나타냈을 때 0번째 문자 널문자 값을 나타내는 것 char c = 0 == '\0' 3. "" 빈 문자열을 나타낸다.
1. Cocoa Touch Class vs Swift File 차이 Xcode에서 프로젝트를 생성한 뒤 파일을 만들 때 어떤 경우에는 Cocoa Touch class 를 선택해서 파일을 만들고 어떤 경우에는 Swift File 을 선택해서 만드는 게 있었는데 무슨 차이인지 헷갈려서 정리해둔다. 사실 생각보다 간단하고 별거 없음.. New File - Cocoa Touch Class 를 선택하면 아래와 같은 창이 나온다. 중간에 있는 Subclass of 레이블 옆의 선택 박스에서 UI 프레임워크, Xcode에서 제공되는 iOS를 위한 클래스들 중, 상속받을 클래스를 선택하여 파일을 생성하면 선택한 클래스를 상속한 상태의 코드를 바로 보여준다. Swift File 은 그냥 스위프트 언어를 사용하기 위한 파..
1. CustomStringConvertible 프로토콜 클래스에 이 프로토콜을 추가하면 클래스 객체를 출력할 때 지정된 형식에 맞게 출력된다. https://jiyeonlab.tistory.com/24 [Swift] CustomStringConvertible 애플 공식 문서에 보면, CustomStringConvertible은 텍스트적인 표현을 커스터마이즈하는 타입이라고 적혀있다. 공식 문서에 나온 예시를 보면, CustomStringConvertible 프로토콜을 정의하지 않고, 그냥 구조 jiyeonlab.tistory.com 2. 시스템 로그 통합 로깅 시스템(unified logging system) 모든 level의 시스템에서 메시징을 캡쳐할 수 있는 효율적인 단일 고성능 API 제공 이 시스..
1. StackView 에 UIImageView가 붙은 UIView 를 붙이면 제거가 제대로 안되는 문제 카드게임 앱을 만들다가, 게임참가자별 나눠준 카드를 화면에 출력하는 과정에서 버튼 아래의 것들은 하나의 스택뷰 vertical 로 넣고, 카드 이미지는 하나의 UIView에 넣고 스택에 넣었었는데 화면이 새로 바뀌는 과정에서 기존 뷰를 stack.removefromSuperView를 통해 제거하고 stack 에는 새로운 객체를 생성했는데 이미지가 바뀌는 것이 아니라 계속 새로 추가되는 문제가 있었다. 그래서 UIView에 넣었던 것을 UIStackView로 바꿔서 넣었더니 잘 동작했다! 이유는 잘 모르겠다. (혹시 아시는 분은 댓글로 알려주세요!!!) 2. 최상위 스택뷰의 제약조건 설정하기 코드로 설..
포커게임 앱 만들기를 하면서 레이아웃 잡는 과정이 오래걸렸는데 해결하기까지의 과정을 적어본다. 1. origin 과 frame, bounds의 차이 origin - 절대 위치 frame - 뷰의 좌표가 부모 뷰를 기준으로 결정됨 - 뷰가 회전하면 그 뷰를 감싸고 있는 frame은 회전하지 않고 그에 맞춰 크기와 좌표가 바뀜 bounds - 본인의 좌표계에 의해 위치가 정해지기 때문에 항상 (0, 0) 을 유지 - bounds는 뷰의 width와 height 를 알기 적합하다 - 뷰가 회전해도 회전된 뷰의 width나 height는 변하지 않음 2. SafeArea 확인 let topPadding = UIApplication.shared.windows[0].safeAreaInsets.top let bott..
study 를 진행하면서 ImageView의 레이아웃을 잡아야 했는데, 위치를 잡는 과정에서 iPhone X 이상 모델에서 노치로 인한 SafeArea 위치를 파악하여 safeArea에 view를 잡는 과정이 필요했는데, 드디어 알아내서 기록해두려고 한다 먼저 Swift - iOS 13.0 이상 let window = UIApplication.shared.windows[0] let topPadding = window.safeAreaInsets.top let bottomPadding = windows.safeAreaInsets.bottom topPadding 은 위 사진에서 상단에 위치한 녹색 영역의 높이를 나타내고, bottomPadding 은 위의 사진에서 하단에 위치한 녹색 영역의 height 크기를..