전체 글233 macOS 리눅스 ssh 연결 ssh 접속가상 환경에서 ssh 접속을 위한 ip 확인 ssh {id}@{주소} 로 원격 접속 비밀번호를 입력한 후 접속에 성공한 화면 2024. 7. 21. macOS Linux 설치 방법 가상 환경 선택맥에서 사용 가능한 가상 환경은 VirtualBox, UTM, Parallels 등이 있습니다.대부분 무료 혹은 제한된 무료 소프트웨어므로 취향에 맞게 선택하면 되며, 저는 UTM을 선택 했습니다. UTM 설치 링크 리눅스 배포판 다운로드리눅스의 배포판(Linux distribution, distro)는 CentOS, Debian, Ubuntu, Arch Linux 등 패키지 관리자와 저장소를 기준으로 묶입니다. 배포판을 선택 할 땐 가벼운 용량, 높은 성능처럼 본인의 목적에 맞게 고르시면 됩니다.저는 Swift를 실행 할 생각이라 Ubuntu를 다운로드 했습니다. 우분투 다운로드 링크 리눅스 설치 설정UTM을 실행하고 “새 가상머신 만들기” 클릭 “Virtualize” 클릭 “Linu.. 2024. 7. 21. 네이버 부스트캠프 1주 차 회고록 후기빡세네요…예비군 다녀온 첫날과 운동 및 식사를 제외하곤 하루 평균 14시간씩 투자한 것 같네요.시간을 이렇게 투자해도 목표를 완벽하게 완수한 날이 없어서 조금 착잡했습니다. 회고부스트캠프는 이미 많은 수료생들이 적어주셨듯 CS 지식에 대한 학습과 구현을 수행합니다.지난 한 주를 돌이켜보면, 저는 “결과”라는 것에 너무 매몰되어 있던 것 같아요. 당일 나오는 미션의 완료 여부가 멤버십 입과에 영향을 끼칠 수 있다고 생각해서 하나의 기능에 1시간 2시간씩 소비하거나, 책상 앞에 앉아서 에러를 내뿜는 코드를 5시간씩 보고 있었으니까요. 함께 자라기읽어야지… 읽어야지… 하다가 결국 읽지 못한 “함께 자라기”라는 책을 부스트캠프 덕에 읽을 수 있었습니다. 1시간가량 짧게 읽은 것뿐이지만, 어느 정도 생각이 정.. 2024. 7. 21. WWDC24: Swift에서 noncopyable 유형 소비하기 정확한 내용은 원문 참고 바랍니다. 원문OverviewConsume noncopyable types in Swift.ownership, noncopyable type에 대한 소개 및 noncopyable을 제네릭, extension에서 사용하는 법 CopyingAutomatic copying아래 코드는 value 타입으로, player1을 player2로 복사(copying)하는 것이다.그래서 player2의 아이콘을 변경하여도 player1에 영향을 끼치지 않는다.struct Player { var icon: String}func test() { let player1 = Player(icon: "🐸") var player2 = player1 player2.icon = "🚚" assert(.. 2024. 7. 12. WWDC24: SwiftUI 컨테이너 쉽게 이해하기 본문은 영어 공부를 겸해 WWDC 영상을 보고 정리한 것으로 오역이 있을 수 있습니다.정확한 내용은 원문 참고 바랍니다. 원문OverviewSwiftUI에서 커스텀 컨테이너 뷰를 만드는 새로운 방법 소개 컨테이너 뷰: 컨테이너 뷰는 클로저를 사용해 콘텐츠 랩핑뷰 빌더에 정적 콘텐츠 정의 예: 하드 코딩 Text 뷰뷰 빌더에 동적 콘텐츠 정의 예: ForEach 사용해서 Text 뷰List { // 정적 콘텐츠 정의 Text("Scrolling in the Deep") Text("Born to Build & Run") Text("Some body Like View") // 동적 콘텐츠 정의 ForEach(otherSongs) { song in Text(song... 2024. 7. 2. Teck Talks: 더 적은 데이터로 더 많은 작업하기 본문은 영어 공부를 겸해 WWDC 영상을 보고 정리한 것으로 오역이 있을 수 있습니다. 정확한 내용은 원문 참고 바랍니다.원문Overview더 적은 데이터(유저 개인정보, 로그인, …)로 앱을 개선하는 방법. Delay sign-in as long as possible사람들은 가능하면 계정 없이 앱을 실행하는 걸 선호한다.→앱에 로그인 기능을 넣지 않거나, 로그인이 필요할 때 까지 로그인을 미룬다. Only request data you need쇼핑 앱의 회원가입에서 모든 항목이 필수 입력이라면, 소비자는 왜 주문을 하기 위해 내 생일 혹은 결혼 여부가 필요한지 모른다.→텍스트 필드에 옵셔널과 동시에 생일에 쿠폰을 지급하기 위해 필요하다고 알린다. 회원 가입을 위한 시간을 절약하기→애플 로그인을 사.. 2024. 6. 29. WWDC24: Swift on Server 생태계 본문은 영어 공부를 겸해 WWDC 영상을 보고 정리한 것으로 오역이 있을 수 있습니다.정확한 내용은 원문 참고 바랍니다. 원문영상 대부분이 코드 설명이라 찾아본 Swift on Server 문서와 정리한 내용 OverviewSwift on Server는 스위프트를 server-side 개발을 하기 위해 스위프트 프로그래밍 언어를 사용할 수 있는 능력서버에 Swift 애플리케이션을 배포하기 위해 Vapor, Hummingbird와 같은 웹 프레임워크를 사용할 수 있다. Swift on Server의 이점: server-side 코드를 작성하기 위한 안전, 효율적 옵션 제공(Swift의 장점을 서버에서도) 서버 애플리케이션에 적합한 다른 이유들: 성능(Performance), 빠른 시작(Quick start.. 2024. 6. 28. WWDC24: Swift Tesing 소개 본문은 영어 공부를 겸해 WWDC 영상을 보고 정리한 것으로 오역이 있을 수 있습니다.정확한 내용은 원문 참고 바랍니다.원문소개새로운 오픈 소스 패키지인 Swift Testing 추가Swift Testing은 Descriptive, organized tests, Actionable failures, Scalable에 강점으로 리눅스와 윈도우에서도 지원 Building blocks사용: Target - Unit Testing Bundle 후 import해서 사용import Testing 선언: @Test 어노테이션, 선언 시 실행 버튼 생김(플레이그라운드에 있는 거)@Test func videoMetadate() { } 테스트 코드 작성: #expect(…) 매크로, 결과 값 예측하면 됨테스트 실패 시.. 2024. 6. 27. WWDC24: SF Symbols 6 본문은 영어 공부를 겸해 WWDC 영상을 보고 정리한 것으로 오역이 있을 수 있습니다.정확한 내용은 원문 참고 바랍니다.원문Animation presets새로운 애니메이션 프리셋 추가: Wiggle, Rotate, Breathe새로운 기능 업데이트: Replace, Variable ColorWiggle: 상하좌우, 원하는 각도 지원Rotate: 전체 회전, 특정 부분 회전 지원Breathe: 부드러운 확장 및 축소Replace: Magic Replace라는 관련 있는 두 심볼간 베이스 심볼을 기준으로 부드러운 전환(슬래시 벨 → 벨 → 배지 벨)Variable Color: Open loop(end point 2개), Closed loop(end point 1개) 중 Closed loop의 애니메이션 반복.. 2024. 6. 26. 노션 API w/ SwiftUI SwiftUI에서 노션 API를 사용해 노션 데이터베이스에 데이터를 업데이트하는 방법을 다룹니다. 들어가기 앞서노션은 개발자를 위해 워크스페이스의 데이터베이스에 대한 무료 API를 제공하고, http 요청을 통해 (depth가 깊긴 하지만) 손쉽게 사용할 수 있습니다.기본 환경 설정에 대한 건 노션 공식 홈페이지에서 제공하기도 하고, 이미 많은 블로그에서 상세히 다루기 때문에 생략하겠습니다.노션 API 키 발급 및 워크스페이스 적용노션 개발자 도큐먼트노션 API 레퍼런스포스트맨 노션 API 샘플 API 예제네이버 오픈 API 중 뉴스 검색 API를 사용합니다.네이버 오픈 API에 대한 자세한 사항은 네이버 오픈 API 도큐먼트 참고 바랍니다. 뉴스 검색 APIAPI에서 받은 값을 노션에 업데이.. 2024. 5. 1. Git이 뭐Git래 Git 기초 강의: 깃이 뭐길래Git에 대한 기초를 위한 자료로 레포지터리, 커밋, 브랜치에 대해 간단하게 다루는 글 입니다. 시작우리는 지금 부산에 있습니다!자가용을 끌고 서울에 놀려가려고 해요. 하지만, 유감스럽게도 길을 아는 사람이 한 명도 없고, 휴대폰은 꺼져있으며, 가진 거라곤 지도 한 장 뿐이에요.그래도 뭐 어쩌겠어요. 가야지. Git은 버전 관리 시스템의 하나로 현재 저장소(repositories)에 현재 프로젝트의 상태를 저장하고, 필요에 따라 원하는 버전으로 돌아가거나, 저장한 상태를 삭제, 새로운 분기 생산 등 여러 사람과 함께 프로젝트를 관리할 때 효율적으로 관리할 수 있도록 해주는 도구입니다. 기존 저장소를 복사해오는 git clone 혹은 새로운 프로젝트를 설정하는 git i.. 2024. 4. 30. SwiftUI: [1차] 뉴스 클러스터링 프로그래머스 [1차] 뉴스 클러스터링 각 문자열을 2글자 단위로 끊어서 합집합과 공집합을 통해 자카드 유사도를 구하는 문제입니다. Set의 집합 관련 메소드를 사용하면 결과 값이 달라서 순회로 구현했습니다. func solution(_ str1:String, _ str2:String) -> Int { let str1 = str1.lowercased().reduce(into: [" "]) { $0.append("\\($0.last!.last!)\\($1)") }.filter { $0.first!.isLetter && $0.last!.isLetter } var str2 = str2.lowercased().reduce(into: [" "]) { .. 2024. 4. 4. SwiftUI: [1차] 캐시 프로그래머스 [1차] 캐시 주어진 배열에 LRU 캐시 교체 알고리즘을 사용해서 소요 시간을 구하는 문제입니다. 문자열이 대소문자 구분 없이 들어있고, 캐시 사이즈는 0인 것을 주의하면 됩니다. func solution(_ cacheSize:Int, _ cities:[String]) -> Int { var cache: [String] = [] return cities.map({ $0.lowercased() }).reduce(into: 0) { time, city in if cache.contains(city) { cache = cache.filter({ $0 != city }) time += 1 } else { .. 2024. 4. 3. SwiftUI: 의상 프로그래머스 의상 주어진 옷과 부위 배열에서 도출 가능한 경우의 수를 구하는 문제 아무 것도 입지 않는 경우를 제외하고 아래 주석과 같은 형태가 되어서 n * m * … 으로 구현 func solution(_ clothes:[[String]]) -> Int { clothes.reduce(into: [:], { $0[$1.last!, default: 0] += 1 }).values.reduce(into: 1, { $0 *= ($1 + 1) }) - 1}// clothes return// [["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]] 5// [["crow_mas.. 2024. 4. 2. SwiftUI: H-Index 프로그래머스 H-Index 주어진 인용수를 통해 H-Index를 구하는 문제연습문제 문제집의 문제는 통번역체라 문제 해석이 더 오래 걸려서 대충 힌트만 보고 구현 func solution(_ citations:[Int]) -> Int { for i in 0...citations.count { if citations.filter({ $0 > i }).count 2024. 4. 2. SwiftUI: 가장 큰 수 프로그래머스 가장 큰 수 주어진 배열을 이어 붙혔을 때 가장 큰 수를 구하는 문제 “000” 배열 예외 처리하고, 이외는 “1” + “2”와 “2” + “1” 중 큰 순으로 정렬해서 구현 func solution(_ numbers:[Int]) -> String { let numbers: [String] = numbers.map({ String($0) }).sorted(by: { ($0 + $1) >= ($1 + $0) }) return numbers[0] == "0" ? "0" : numbers.joined()}// numbers return// [6, 10, 2] "6210"// [3, 30, 34, 5, 9] "9534330" 2024. 3. 26. SwiftUI: n^2 배열 자르기 프로그래머스 n^2 배열 자르기 [1], [[1 2] [2 2]], [[1 2 3] [2 2 3] [3 3 3]] … 처럼 1씩 증가하는 n * n 배열을 1차원 배열로 변환 했을 때 원하는 구간을 반환하는 문제 n = 3 일 때 [1 2 3 2 2 3 3 3 3]로 left부터 right까지 몫과 나머지를 통해 구현 func solution(_ n:Int, _ left:Int64, _ right:Int64) -> [Int] { (left...right).map { Int(max($0 / Int64(n) + 1, $0 % Int64(n) + 1)) }}// n left right result// 3 2 5 [3,2,2,3]// 4 .. 2024. 3. 25. SwiftUI: 할인 행사 프로그래머스 할인 행사 원하는 목록을 할인 목록에서 모두 구할 수 있는 회수가 몇 회인지 구하는 문제 원하는 목록의 수 만큼 할인 목록을 추가해서 원하는 목록 범위만큼 순회해서 구현 func solution(_ want:[String], _ number:[Int], _ discount:[String]) -> Int { var able = 0 let count = number.reduce(0) { $0 + $1 } let list = Dictionary(uniqueKeysWithValues: zip(want, number)) let discount = discount + Array(repeating: "", count: count) for i in 0.. (dict[$1... 2024. 3. 24. SwiftUI: 괄호 회전하기 프로그래머스 괄호 회전하기 주어진 문자열을 문자열의 길이만큼 회전하면서 올바른 괄호가 얼마나 있는지 반환하는 문제 프로그래머스 올바른 괄호 문제 코드에 순회 추가해서 구현 func solution(_ s:String) -> Int { let s = s.map({ String($0) }) return s.enumerated().reduce(into: 0) { partialResult, element in var stack = [Character]() (s[element.offset...] + s.prefix(element.offset)).map { bracket in if stack.last == "(" && bracket == .. 2024. 3. 23. SwiftUI: 멀리 뛰기 프로그래머스 멀리 뛰기 n까지 도달하는 경우의 수를 구하는 문제 n - 2의 경우의 수와 n - 1의 경우의 수를 더한 DP로 구현 func solution(_ n:Int) -> Int { var F = [0, 1, 2] while F.count 2024. 3. 22. SwiftUI: 예상 대진표 프로그래머스 예상 대진표 대진표 상의 두 플레이어가 만나는 시점을 구하는 문제 a와 b가 일치할 때 까지 반으로 나눠서 그 횟수를 반환 하도록 구현 func solution(_ n:Int, _ a:Int, _ b:Int) -> Int { var a = a var b = b var count = 0 while a != b { count += 1 a = (a.isMultiple(of: 2) ? a : a + 1) / 2 b = (b.isMultiple(of: 2) ? b : b + 1) / 2 } return count}// N = 4// 3// 2 2// 1 1 1 1// N A B answ.. 2024. 3. 21. SwiftUI: N개의 최소공배수 프로그래머스 N개의 최소공배수 주어진 배열의 최소공배수를 구하는 문제 최소 공배수라는 건 결국 배열의 모든 수의 공배수이기 때문에, 배열의 가장 큰 수를 곱하면서 모든 수의 공배수인지 검사하도록 구현 func solution(_ arr:[Int]) -> Int { var i = 1 while arr.map({(arr.max()! * i).isMultiple(of: $0)}).contains(false) { i += 1 } return arr.max()! * i}// arr result// [2,6,8,14] 168// [1,2,3] 6// [1,2,3,4,5,6,7] 60 2024. 3. 20. SwiftUI: 점프와 순간 이동 프로그래머스 점프와 순간 이동 1칸 앞으로 가거나 현재 위치의 2배를 이동할 수 있을 때 주어진 수까지 도달하는 횟수를 구하는 문제 2진수로 변환해보니 1의 개수와 답이 일치해서 주어진 수의 1의 개수를 반환하도록 구현 func solution(_ n:Int) -> Int { n.nonzeroBitCount}// 101// 110// 1001110001000// N result// 5 2// 6 2// 5000 5 2024. 3. 19. SwiftUI: 연속 부분 수열 합의 개수 프로그래머스 연속 부분 수열 합의 개수 앞과 뒤가 이어진 수열(= 연속 수열)에서 도출 될 수 있는 합의 개수를 찾는 문제 Set을 사용한 이중 for문으로 구현 func solution(_ elements:[Int]) -> Int { var numbers = Set() for i in 0.. 2024. 3. 18. 이전 1 ··· 3 4 5 6 7 8 9 10 다음