일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 큐
- C
- System
- level13
- pwnable.kr
- HTML
- 파일 시스템
- c언어
- 정렬 알고리즘
- Java
- PHP
- windosws wbcs
- LoB
- 백준
- 미로 탐색 알고리즘
- 파이썬
- Stack
- ftz
- 스택
- War Game
- web
- 재귀
- 자료구조
- OSI
- 암호수학
- windosw 문자열
- 시간복잡도
- 두근두근 자료구조
- ftz level13
- SWiFT
- Today
- Total
목록2025/02 (11)
나의 기록, 현진록

1. 역사? iOS에서 부드러운 화면이 출력되기 위해 초당 60 프레임의 주사율을 유지하기 위해 GPU에서 직접 실행되는 그래픽에 강한 OpenGL을 사용하였다. C 기반의 API이므로 이식성이 뛰어나고 Object-C Cocoa Touch 앱과 완벽하게 통합된다고 한다. 최대 장점은 그래픽 하드웨어에 가장 빠르게 액세스할 수 있다는 것이지만 Low-Level API 이기 때문에 코드 양이 방대하고 난이도가 높다고 한다. 보다 쉽게 그래픽을 구현할 수 있는 Core Graphics(CGColor, CGRect...)라는 것도 생겼지만 Low-Level이다. 이를 대체하기 위해 만들어진 것이 Core Animation(CALayer...)이며 더욱 더 간편하게 만든 것이 UIKit이다. 따라서 UIKit으..

UIWindowScenehttps://developer.apple.com/documentation/uikit/uiwindowscene UIWindowScene | Apple Developer DocumentationA scene that manages one or more windows for your app.developer.apple.com 앱의 하나 이상의 UIWindow를 관리하며 UIScene을 상속 받고 있기 때문에 관련 메서드 및 프로퍼티에 접근 가능하다.windows - window는 여러 개 가질 수 있다.keyWindows - 윈도우가 여러개 존재할 때 가장 앞쪽에 배치된 윈도우이다.screen - 화면에 보이는 그 자체(UIScreen 객체이니 hardward 영역인 것 같음) UI..
https://www.acmicpc.net/problem/2179 1. 문제이해N개의 영단어들이 주어질 때, 가장 비슷한 두 단어를 출력하기비슷한 정도는 두 단어의 접두사의 길이로 따진다.접두사란 두 단어의 앞부분에서 공통적으로 나타나는 부분문자열을 말한다."AHEHHEH", "AHAHEH"의 접두사는 "AH"가 되고, "AB", "CD"의 접두사는 ""(길이가 0)이 된다.접두사의 길이가 최대인 경우의 두 단어를 출력하라접두사의 길이가 최대일 경우 단어가 입력된 순서대로 2개(S, T) 출력접두사의 길이가 동일한 경우가 있을 경우 그 중에서 단어 입력 순서가 제일 빠른 단어의 접두사를 기준으로 하여 입력 순서대로 2개의 단어를 출력2. 접근방법N의 최대는 20000, 단어들을 2중 반복문으로 접두사의..
https://www.acmicpc.net/problem/30689 1. 문제이해세로 N, 가로 M, N * M 크기의 미로화살표를 따라 미로 범위 밖으로 나갈 수 있으면 탈출 성공사이클의 경우 점프대를 설치하여 탈출할 수 있다.미로의 어느 칸에서 시작하더라도 탈출할 수 있도록 만들자. 단, 최소한의 비용을 사용해 점프대를 설치해야 한다. 필요한 최소한의 비용을 구하자. 2. 접근방법dfs로 경로 탐색이동 시 경로를 스택에 저장이동 할 칸이 방문 했던 칸이라면 사이클 의심스택에 저장된 경로대로 거꾸로 탐색하여 사이클 의심되는 칸을 도달할 경우 사이클, 최소 설치 비용 구하기 func solution(){ let input = readLine()!.split(separator: " ").map{..

1. 메인 큐- 메인 스레드이자 메인 큐이다.- 한 개이고 직렬성을 가진다.DispatchQueue.main.async{ // 메인 스레드에서 비동기 작업을 수행함} 2. 글로벌 큐- 6가지 종류의 Qos를 가짐- default는 ConcurrentDispatchQueue.global.async{ // 글로벌 큐로 비동기 작업을 보냄} DispatchQueue.global(qos: .userInteractive) { // 거의 즉시 처리 // 유저와 직접적 인터렉티브 // UI 업데이트, 애니메이션, UI 반응(사용자와 상호작용)}DispatchQueue.global(qos: .userInitiated) { // 몇 초 안에 처리 // 유저가 즉시 필요로 하지만, 비동기적으로 처리된 작업..

동시성 프로그래밍이 필요한 이유iOS 앱 개발 시 비동기적인 작업을 제대로 처리 하지 않으면 버벅이는 상황을 경험한 적 있을 것이다. 동기적으로 작업이 이루어졌기 때문에 그러한 증상을 볼 수 있는데 메인 스레드가 아닌 다른 스레드로 작업을 분산 처리하여 비동기적인 코드를 작성하여 이러한 문제를 해결할 수 있을 것이다. Swift에서는 직접적으로 스레드를 관리하지 않는다. 큐에 작업을 할당하면 Swift는 알아서 적절한 스레드에 작업을 할당한다. 위에서 말한 큐는 Swift에서 제공하는 GCD(DispatchQueue)와 Operation(OperationQueue) 등을 활용할 수 있다.비동기(Async)의 개념- 메인 스레드가 작업을 다른 스레드에 보내고 그 작업이 끝나길 기다리지 않고 메인 스레드는 ..

프로그램을 절차적으로 실행되는 명령어의 집합이기 보다 여러 독립적인 부품(객체)들이 유기적인 집합체로 파악하고자 하는 패러다임이다. 객체지향적 설계- 자동차를 만든다고 할 때 수많은 부품의 결합과 연결로 하나의 완전한 자동차가 만들어지는 것처럼 프로그램의 일부분에 해당하는 부품, 즉 객체를 먼저 만들고 여러 객체들을 조립해서 하나의 완성된 프로그램을 만드는 방법론라고 볼 수 있다. - 컴퓨터 부품을 갈아끼울 떄 해당하는 부품만 쉽게 교체하고 나머지 부품들은 건들이지 않아도 되는 것처럼 객체 지향적 원리를 잘 적용해둔 프로그램은 각각의 객체들이 독립적인 역할을 가지기 때문에 코드의 변경을 최소화하고 유지보수 하는 데 유리하다. - 객체 지향적 설계로 인해 프로그램을 보다 유연하고 변경이 용이하도록 만들 수..
클로저에 대한 강한 참조 사이클 강한 참조 사이클은 클래스의 인스턴스의 프로퍼티에 클로저를 할당하고 해당 클로저의 본문에 인스턴스를 캡처하는 경우에도 발생할 수 있다. 이러한 캡처는 클로저의 본문에서 self.someProperty 와 같이 인스턴스의 프로퍼티에 접근하거나 클로저는 self.someMethod()와 같이 인스턴스의 메소드를 호출하기 때문에 발생할 수 있다. 두 경우 모두 클로저가 self를 캡처하여 강한 참조 사이클을 생성하게 되는 경우이다. 클로저에서 강한 참조 사이클이 발생할 수 있는 이유는 클로저도 참조 타입(Reference Type)이기 때문이다. 프로퍼티에 클로저를 할당하면 해당 클로저에 참조를 할당하는 것이다. 아래의 예제는 self를 참조하는 클로저를 사용할 때 강한 참..
ARCSwift에서 메모리를 추적하고 관리하기 위한 메모리 관리 방식이다. Reference Counting으로 메모리 할당과 해제 여부를 결정한다. 참조 타입은 메모리에서 Heap 영역에 할당 되고 그 인스턴스에 대한 Reference Count를 가진다. 자동으로 관리된다고 하지만 순환 참조(Circular Reference)가 발생하지 않도록 하기 위해서는 개발자의 추가적인 비용?이 필요하다. ARC / GCJAVA에서의 GC(Garbage Collection)과 비슷하지만 분명한 차이는 Reference Counting 시점이다. GC는 런타임 중에 동적으로 메모리를 추적한다. 이러한 경우 프로그램이 실행 중인 동안 계속해서 메모리를 감시하기 때문에 이에 따른 부하가 발생한다. 그러나 불필요한 메..
struct User{ var name: String var age: Int}var a = User(name: "유현진", age: 5)var b = User(name: "유현진 아님", age: 6)var c = ba.name = "유"print(a)print(b)print(c)b.name = "현"print(a)print(b)print(c)// User(name: "유", age: 5)// User(name: "유현진 아님", age: 6)// User(name: "유현진 아님", age: 6)// User(name: "유", age: 5)// User(name: "현", age: 6)// User(name: "유현진 아님", age: 6) class User{ var name: St..