⭐️ 개발
[JAVA] 기본문법 - 변수, 형변환, 배열
Java1. 기본문법1). 변수 타입에 따라 크기가 달라 타입 기본형 primitive type(8개) : 미리 정해진 크기의 데이터 표현 / 변수 자체에 값 저장 논리형 boolean 정수형 byte, short, int(32bit, 약 20억개 저장, 부호비트 → -128~127), long 실수형 float(32bit) double(64bit) → 정밀도 차이 문자형 char 참조형 reference type : 크기가 미리 정해질 수 없는 데이터의 표현 / 변수에는 실제 값을 참조할 수 있는 주소만 저장 변수 예제1public class Lang_01 { public static void main(String[] args) { int i1 = Integer.MAX_VALUE; int i2 = i1..
[JAVA] Maven, pom.xml
Maven : 자바 프로젝트의 빌드 자동화 도구 의존관계 라이브러리 자동화 도구 / 빠르게 늘어나는 라이브러리 추가 및 버전 관리를 위해 사용 / ant → maven → gradle 순서로 등장 https://mvnrepository.com/ org.json json 20231013 maven은 필요한 라이브러리를 pom.xml에 정의해 두면, 내가 사용할 라이브러리와 그 라이브러리가 작동하는데 필요한 다른 라이브러리까지 관리해서 네트워크를 통해 자동으로 다운받아 준다. 중앙 저장소를 통한 자동 의존성 관리를 중앙 저장소라는 라이브러리를 공유하는 파일 서버 pom.xml : maven을 이용하기 위해 pom 사용 이 파일을 통해 프로젝트의 모든 설정, 의존성 알 수 있음
[JAVA/WEB] 웹 구동 원리
개발언어 컴파일 언어 : 실행파일 → 컴파일 / OS 종속적, 수행속도 빠름 인터프리터 언어 : 소스 → 실행 (브라우저가 번역) / HTML / OS독립적, 번역해야 하니까 수행속도 느림 자바는 컴파일, 인터프리터 기반 둘 다 - 자바는 플랫폼/DBMS/WAS에 독립적 / 수행속도도 빨라 소스 코드 작성 HELLO.java (javac) HELLO.class (byte code) - 중간단계 기계어 - 번역기(JVM)에 의해서 번역 실행 HELLO → JDK - 개발 키트 JVM - 번역기 역할 Api - jar 형식으로 클래스 묶음 제공 JRE - JVM + API : 자바 실행 환경HTML5 - 표준화한 것static / dynamic contentsCGI CGI : common gateway in..
[개발] JAVA 기초
자바 데이터 타입 기본형 정수형 byte 8bit/short 16bit/int 32bit(기본)/long 64bit, 실수형 float 32bit/double 64bit(기본), 논리형 boolean, 단일문자형 char(2byte, 16bit, ‘A’,’광’) 참조형(객체형) 모든 클래스 - 인터페이스, 배열 문자열 : java.lang.String (’A’, ‘광’, ‘광주5반’) 실수형은 f 붙여야 함. 더블형은 d 안붙여도 됨 Type Casting(형변환)기본형 : 작은 타입은 큰 기억 공간 (정수형, 단일문자형 → 실수형)참조형(객체형) : 작은 타입 (자식타입 sub class) → 큰 타입(부모타입 - super class) 자동 형변환 : 작은 타입의 데이터는 큰 타입의 기억공간에 자동 ..
[Rx] Combine Operator
Combine Operator startWith concat merge combineLatest zip withLatestFrom sample switchLatest reduce -> transform 가장 마지막에 있음 startWith 옵저버블 시퀀스 앞에 새로운 요소를 추가 // MARK: - startWith : 옵저버블 시퀀스 앞에 새로운 요소를 추가 let num = [1,2,3,4,5] // 기본값이나 시작값 지정시 활용 Observable.from(num) .startWith(9999) // 2개 이상 연달아 사용 가능 .startWith(1111, 2222) .startWith(3333) .subscribe { print($0) } .disposed(by: bag) // Last In F..
[Rx] Transform Operator
Transform Operator toArray map compactMap flatMap flatMapLatest flatMapFirst concatMap buffer window groupBy scan (reduce까지) toArray 원본 옵저버블이 방출하는 모든 요소를 하나의 배열로 바꿔서 방출해줌 // MARK: - toArray : 원본 옵저버블이 방출하는 모든 요소를 하나의 배열로 바꿔서 방출해줌 let numbers = [1,2,3,4,5,6,7,8,9,10] let subject = PublishSubject() subject .toArray() // single로 변환, 하나의 요소로 변환 .subscribe { print($0) } .disposed(by: bag) subject.onN..
[Rx] Sharing Operator
Sharing Operator share multicast, Connectable Observable publish replay, replayAll refcount share let bag = DisposeBag() let source = Observable.create { observer in let url = URL(string: "https://tistory.com")! let task = URLSession.shared.dataTask(with: url) { (data, response, error) in if let data = data, let html = String(data: data, encoding: .utf8) { observer.onNext(html) } observer.onComp..
[Rx] Time Based Operator
Time Based Operator interval timer timeout delay delaySubscription interval // MARK: - interval 지정된 주기마다 정수를 방출 // period : 반복주기 // scheduler : 정수를 방출할 스케줄러 // 지정된 주기마다 정수를 계속해서 방출한다. 즉, 무한한 시퀀스를 생성하는 것! -> 직접 dispose를 해줘야 함 // int를 포함한 모든 정수형식을 사용가능하다. let i = Observable.interval(.seconds(1), scheduler: MainScheduler.instance) let subscription1 = i.subscribe { print("1 >> \($0)") } // 별도로 종료시키는..
[Rx] Conditional Operator
Conditional Operator amb 여러 옵저버블 중에서 가장 먼저 이벤트를 방출하는 옵저버블을 선택하는 것 right 옵저버블이 left 옵저버블보다 먼저 방출됐기 때문에 left 옵저버블은 무시되고, rigth 옵저버블만 구독된다. 많은 서버 연결 시도 중 가장 먼저 응답을 준 서버와 통신하고 싶은 경우 사용한다. let bag = DisposeBag() enum MyError: Error { case error } let a = PublishSubject() let b = PublishSubject() let c = PublishSubject() // 소스 옵저버블이 2개로 제한될 경우 a.amb(b) .subscribe { print($0) } .disposed(by: bag) a.onN..
[Rx] Filtering Operator
Filtering Operator ignoreElement elementAt skip take debounce throttle filter single distinctUntilChanged ignoreElement // MARK: - IgnoreElements next 이벤트를 필터링하는 연산자 let friends = ["소깡", "디온", "방구"] Observable.from(friends) .ignoreElements() .subscribe { print($0) } .disposed(by: bag) //completed elementAt // MARK: - elementAt 특정 인덱스에 위치한 요소를 제한적으로 방출하는 연산자 Observable.from(friends) .element(at: ..
[Rx] Create Operators
Create Operators just, of, from range, generate repeateElement deferred create just, of, from import RxSwift let disposeBag = DisposeBag() let element = "🎀" // MARK: - just, of, from 옵저버블 생성에 사용한느 가장 단순하고 기초적인 세가지 연산자 // just는 파라미터로 전달한 걸 그대로 전달한다. // 🎀 Observable.just("🎀") .subscribe { event in print(event) } .disposed(by: disposeBag) // [1, 2, 3] Observable.just([1, 2, 3]) .subscribe { event i..
[질문정리] 객체지향 프로그래밍
0. 도입 그 전에, Swift가 어떤 특징을 갖는 언어인지 알아야 된다. ARC (따로 공부하자!) Compile 언어 빌드 전 컴파일 시점에 타입을 결정짓는 정적언어 → 그래서 타입 오류나면 빨간오류 뜸 덕분에 안전성이 높고, 대규모 프로그램 개발에 적합 함수형 프로그래밍 언어 함수를 일급객체로 보기 때문에, 함수 자체를 매개변수나 반환타입으로 사용 가능 프로토콜형 프로그래밍 언어 값타입의 구조체와 열거형, 프로토콜을 객체지향 프로그래밍 언어 1. 객체지향 프로그래밍 객체와 객체간의 관계를 설계하는 프로그래밍 객체지향 프로그래밍에서 중요한 키워드는 클래스, 객체, 프로퍼티(상태, 속성, 데이터), 메소드(행위, 동작, 메시지) 클래스는 객체를 구성하기 위한 틀이다. like, 붕어빵틀 - 팥붕어빵/슈..
[질문정리] 클래스와 구조체(feat. 메모리영역, COW, Method Dispatch)
https://huree-can-do-it.notion.site/feat-COW-Method-Dispatch-22178b012cdb4699b665bb27bb05278e
Xcode Cloud 맛보기 (1차 해결-ci_scripts)
1. Xcode Cloud가 뭔데용? 헤수몬이 언제 이거 좋다고,, 한 적이 있어 궁금해서 해보자해보자 했던 것... 함 공부 트라이 해봤다.. ➰ Xcode에 내장된 지속적인 통합 및 배포 서비스(CI/CD)로, Apple 개발자를 위해 특별히 제작되었습니다. 앱을 빌드하고, 병렬로 자동화된 테스트를 실행하고, 테스터에게 앱을 배포하고, 사용자 피드백을 보고 관리하는 데 도움이 되는 클라우드 기반의 도구를 통합하여 고품질 앱을 개발하고 배포할 수 있습니다. 라고 나와있다. 일종의 데브옵스 시스템, CI/CD? CI Continuous Integration 지속적 통합 한 줄로 개발 변경 사항을 꾸준히 커밋하고 병합하고 이 단계에서 테스트해보며 오류가 없는지 체크하는 것 단위 테스트 같은 자동화된 단계를..
[Rx Operator 시리즈] 4. flatMap / flatMapFirst / flatMapLatest
1. FlatMap 방출된 항목의 값이 바뀌면 새로운 항목을 방출한다. 원본 옵저버블이 방출한 값을 감시해서 최신값을 확인할 수 있다. 옵저버블로 변환되고 값이 업데이트 될 때마다 새로운 항목을 방출한다. 모든 옵저버블이 방출하는 걸 모아서 -> 최종적으로 하나의 옵저버블(Result Observable)을 리턴한다. 네트워크 호출에 자주 쓰인다. let redCircle = "🔴" let greenCircle = "🟢" let blueCircle = "🔵" let redHeart = "❤️" let greenHeart = "💚" let blueHeart = "💙" Observable.from([redCircle, greenCircle, blueCircle]) .flatMap { circle -> Obs..