본문 바로가기

분류 전체보기

(9)
[iOS] URL에서 가져온 JSON, Parsing 하기 웹에서 데이터 가져오기 🚀 String(주소 문자열) -> URL 가장 먼저 할 일은 String형태의 변수에 url주소를 저장한 후, 이를 URL 객체로 변환해주는 것입니다. 이 때, 만약 String형태의 url주소가 비어있다면, URL의 생성자는 nil값을 반환합니다. 그렇기 때문에, 위와같이 guard-let 구문을 통해서, 혹시모를 오류상황을 잡아주도록 합니다. 🚀 URL -> String Url 객체를 통해 새로운 String값을 생성합니다. 이 때, 입력된 url로 연결된 웹 서버에서 값을 가져오는 작업이 일어나기 때문에, do-catch와 try구문을 통해서 안전하게 묶어줘야 합니다. 참고로 이 상태의 String값은 다음과같은 형태입니다. 🚀 String(받은 데이터) -> data 이번..
[JavaScript] EventLoop와 비동기 동작 자바스크립트는 기본적으로 단일쓰레드에서 동작한다. 하지만 주로 웹에 쓰이는 언어다보니, 단일쓰레드에서 동기적으로만 동작한다면 이런저런 문제가 발생할 수 있다. 외부에서 용량이 큰 데이터를 받아서 띄워주는 경우를 예로 들어보자. 만약 데이터를 받는 시간이 밀리세컨드 단위라면 동기적으로 실행되어도 큰 문제는 없을 것이다. 하지만 받는 시간이, 1, 2초나 그 이상의 시간이 걸리는 경우, 최악의 경우엔 데이터 파일 하나 때문에 웹페이지 전체를 띄우지 못하는 경우가 생길 수 있다. 이러한 문제상황에 대비해서, 자바스크립트에서는 단일쓰레드에서도 비동기적인 프로그래밍이 가능하도록 몇가지 장치를 해두었는데, 그것이 Event Queue와 Event Loop이다. Call Stack 사실 Call Stack은 비단 자..
Swift 문법 정리 [객체 관련] Swift 언어를 공부 하면서 암기가 필요한 내용, 특히 기존 배웠던 언어들 과의 차이점에 중점을 둬서 정리함 클래스 기본 Swift의 클래스는 대부분 Java와 비슷하게 동작함 용어 변경점 멤버변수 -> 프로퍼티 (var: 가변프로퍼티, let: 불변프로퍼티) static 변수 -> 타입 프로퍼티 static 메서드 -> 타입 메서드 주의할 점은 Swift에서는 옵셔널이 아닌 값들에선 nil을 허용하지 않기 때문에 모든 프로퍼티들은 ::각자 초기화::해주거나 ::생성자로 init:: 해주어야함. (이 때 만약 옵셔널 프로퍼티가 있다면 초기화는 생략해주어도됨 -> 당연?) Swift에는 소멸할 시 호출되는 디이니셜라이저 deinit도 존재하며, init과 구현방법은 동일. 구조체 / 열거형 기본 1. 구..
Swift 문법 정리 [기본] Swift 언어를 공부 하면서 암기가 필요한 내용, 특히 기존 배웠던 언어들 과의 차이점에 중점을 둬서 정리한 글. 1. About Swift POP(Protocol Oriented Programming) 함수형 언어 2. 변수와 상수 var : 변수 선언 키워드 let : 상수 선언 키워드 Swift에서는 boolean 대신 Bool, char 대신 Character를 사용하며 모든 자료형들은 대문자로 시작한다. String과 Character형은 모두 쌍따옴표 “”로 표현되며 홀따옴표’’는 안된다 모든 타입을 지칭하는 Any 타입과 AnyObject 타입. (마치 Object 클래스) null 대신 nil 을 사용한다. Swift에서는 기본적으로 모든 변수에 null(nil)값을 허용하지 않는다. J..
XCode로 유튜브 앱 만들기 #1 레이아웃 작업 ** 본 프로젝트는 해외 유튜버 "Lets Build that App" 님의 영상을 참고하여 주요 내용만 요약했습니다. ** 코드 깃허브 링크 StoryBoard와 이별하기 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { self.window = UIWindow(frame: UIScreen.main.bounds) self.window?.makeKeyAndVisible() self.window?.rootViewController = UINavigationController(rootViewControlle..
그래프 관련 알고리즘 정리 그래프? 정점과 간선들로 이루어진 집합. 즉 트리 역시 그래프에 속한다고 할 수 있다. * 그래프를 표현하는 대표적인 방법 세가지 간선 리스트 말그대로 배열에 간선들을 저장한다. 가장 간단하게 구현되지만 한 정점의 간선에 대한 정보를 얻으려면 모든 간선리스트를 탐색해야 하기 때문에 “벨만-포드 알고리즘”과 “크루스칼 알고리즘” 같은 일부 알고리즘이 아니고서야 많이 사용되지는 않는다. 인접 행렬 정점이 N개라면 NxN행렬을 만들어서 각각에 연결된 모든 간선들을 표시한다. 장점은 어떠한 두 정점이 연결되어 있는지를 확인한다 던지 할 경우 2차원 배열에서 탐색하기 때문에 인덱스로 상수시간 탐색이 가능하다는것. 단점은 간선의 수가 적던 많던 무조건 NxN의 공간을 사용하기 때문에 특히 정점에 비해 간선의 수가 ..
벨만포드 알고리즘 다익스트라, 플로이드-워셜과 함께 가장 많이 사용되는 “최단경로 알고리즘” 3가지 중 하나. V개의 정점과 E개의 간선을 가진 가중 그래프 G에서 특정 출발 정점(S)에서 부터 다른 모든 정점까지의 최단경로를 구하는 알고리즘 1. 핵심 IDEA V개의 정점과 E개의 간선을 가진 가중그래프에서 어떤 정점 A에서 어떤 정점 B까지의 최단거리는 최대 V-1개의 간선을 사용한다. 즉, 시작 정점 A를 포함하여 최대 V개의 정점을 지난다. 2. 특징 일반적으로 다익스트라 알고리즘보다 느리고 플로이드-워셜 보다는 빠른 중간정도의 연산속도를 같는다. 다익스트라 알고리즘과는 달리 음의 가중치를 갖는 간선을 포함하는 그래프에서도 사용이 가능하다. 그래프에서 음의 사이클의 존재 여부를 확인할 수 있다. 3. 알고리즘 구현..
자주 묻는 Programming 질문들 오버로딩 vs 오버라이딩 ...더보기 오버라이딩은 상위 클래스, 혹은 인터페이스의 메서드를 알맞게재정의 하는것. 오버로딩은 동일메서드에 대해 다른 인자를 받는 경우에 대해 중복정의하는것. 인터페이스 vs 추상클래스 ...더보기 인터페이스는 함수의 구현을 강제하기 위해. 추상클래스는 해당 추상클래스를 상속받아서 기능을 이용하고 확장시키는데 있음. 가비지 컬렉터? ...더보기 언제 실행되는가? JVM은 메모리를 부여받고 프로그램들을 실행하다가 **메모리가 부족해지는 순간**이 오면 OS에게 추가로 메모리를 요청한다. 바로 이 메모리를 더 달라고 요청하는 때에 가비지 콜렉터가 실행된다. 또한 서버의 경우 24시간 돌아가는데 이 때는 JVM이 한가할 때 가비지 콜렉터가 수행된다. 가비지컬렉터는 주로 주소를 잃어..