앱 개발을 하다보면 버튼의 크기가 너무 작아서 터치가 잘 안되는데 디자인 상 크기를 키울 수 없는 경우가 있다. 이럴 때 화면 상 보이는 버튼 크기는 유지한 채로 터치 영역을 넓히는 법을 알아보자! 터치 영역이 너무 작은 버튼 문제 상황일부러 사이즈가 작은 버튼을 가져와서 버튼의 사이즈를 알 수 있도록 배경색을 노랑색으로 넣어놓았다. 손으로 터치를 하는 앱 특성상 이런 버튼은 터치가 힘들 것이다. Button { } label: { Image(systemName: "ellipsis") .resizable() .scaledToFit() .frame(width: 30)}.background(.yellow) 방법 1) .contentShape() 사용이미지에 `padding(..
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/161988 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 접근 어떤 수열에 펄스 수열을 원소끼리 곱해서 합이 최대가 되는 부분 수열을 찾아야 한다. 이때 펄스 수열은 [1,-1,1,-1], [-1,1,-1,1]과 같이 1과 -1이 번갈아 나오는 수열을 뜻한다. 먼저 합이 최대가 되는 부분 수열의 합을 구하려면 수열의 누적합을 구한 후 차가 가장 큰 경우를 구하면 된다. 그런데 이 문제에서는 펄스 수열을 곱해야하므로 2가지 수열을 모두 고려해야 한다. 문제의 예시를 가지고 펄스 수열을 곱한..
본 글은 '이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접' 책을 읽고 정리한 글입니다. 이번 글에서는 LAN 간의 통신을 위해 사용하는 기술 중 가장 핵심적인 프로토콜인 IP(Internet Protocol)에 대해 알아보려고 한다. ✔️ IP의 목적과 특징IP의 목적은 크게 주소 지정과 단편화로 나뉜다. 1. 주소 지정주소 지정은 네트워크 간 통신 과정에서 호스트를 특정하는 것을 의미하며, IP 주소를 통해 이루어진다. 주소 지정을 위해 필요한 송신지와 수신지의 IP 주소는 IP 패킷 헤더에 포함된다.IP 주소는 총 4byte(32bit)의 크기로 구성되며, 숫자 당 0~255 범위의 10진수 4개로 표기된다. 각 10진수는 `.`으로 구분하는데, 이때 하나의 10진수를 옥텟이라고 ..
본 글은 '이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접' 책을 읽고 정리한 글입니다. 네트워크 통신 모델에서 가장 하위 계층인 물리 계층과 데이터 링크 계층을 간단하게 정리하자면, 물리 계층: 통신 매체를 통해 비트 신호를 운반하는 계층 데이터 링크 계층: 같은 LAN에 속한 호스트끼리 정보를 주고받기 위한 계층이다. LAN 내의 호스트들이 올바르게 정보를 주고받을 수 있게 해주는 다양한 기술 중 하나인 이더넷에 대해 보자. ✔️ 이더넷이더넷(Ethernet)은 LAN에서 가장 널리 사용되는 통신 기술로, 여러 장치(컴퓨터, 공유기 등)를 하나의 네트워크로 연결하여 데이터를 주고받을 수 있게 한다. 이더넷은 통신 매체를 통해 신호를 송수신하는 방법, 데이터 링크 계층에서 주고받는 ..
본 글은 '이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접' 책을 읽고 정리한 글입니다. 네트워크란?네트워크(Network)는 Net + Work의 합성어로, 그물처럼 서로 긴밀하게 연결되어 있는 것을 의미한다. IT에서 사용되는 컴퓨터 네트워크는 두 대 이상의 컴퓨터가 서로 연결되어 통신할 수 있는 것을 말한다. ✔️ 네트워크의 기본 구조 네트워크는 노드와 간선으로 이루어진 그래프의 형태이다. 네트워크 기기가 노드, 네트워크 기기 간 정보를 주고받는 통신 매체가 간선이다. 위 그림과 같이 네트워크 상에서 노드와 노드 사이의 연결 구조를 네트워크 토폴로지라고 하며, 아래 다섯 가지 유형이 있다. 네트워크를 통해 주고받는 정보를 최초로 송신하고 최종으로 수신하는 노드를 호스트라고 하..
본 글은 '이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접' 책을 읽고 정리한 글입니다. 논리 메모리와 물리 메모리 CPU가 프로세스를 처리할 때 보는 주소 값과 실제 메모리의 주소 값은 다르다. 프로세스가 보는 메모리 영역을 논리 메모리 영역이라 하고, 실제로 사용되는 메모리 영역을 물리 메모리 영역이라고 한다. 그리고 CPU가 프로세스를 실행할 때 보는 주소 값을 논리 주소, 메모리의 하드웨어 상 실제 주소를 물리 주소라고 한다. 논리 주소는 프로세스마다 0번지부터 시작하는 주소 체계이다. 따라서 물리 주소의 번지 수는 중복될 수 없지만, 논리 주소의 번지 수는 중복으로 존재할 수 있다. 이처럼 CPU가 프로세스를 실행할 때 사용하는 주소 값과 실제 하드웨어 상의 주소 값이 다르므로..
본 글은 '이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접' 책을 읽고 정리한 글입니다. 한정적인 CPU 자원 내에서 모든 프로세스를 공평하게 실행하는 것은 OS의 주요 목적이다. 스케줄링의 목적 멀티 프로세스 환경에서 모든 프로세스를 공평하게 실행하기 위해 스케줄링 기법을 활용한다. schedule이라는 의미에 맞게, 어떠한 작업의 순서를 계획한다고 생각하면 된다. 스케줄링은 세부적으로 다음 5가지의 목적이 있다. 공평성 : 특정 프로세스가 실행되지 않는 경우가 없어야 한다. 효율성 : 자원을 효율적으로 사용해 자원이 사용되지 않는 시간이 없어야 한다. 안정성 : 높은 우선순위의 프로세스를 먼저 처리한다. 반응 시간 보장 : 프로세스가 오랜 시간 응답이 없으면 사용자는 시스템이 멈춘 ..
SwiftUI의 화면 전환은 sheet, popover, NavigationLink, navigationDestination 등 여러 가지 방식이 있지만오늘은 iOS 16.0 부터 가능한 `NavigationStack`을 `NavigationPath`와 함께 사용해보려고 한다. 앱에서 화면 전환을 할 때, 계속 다음 화면으로 갈 수도 있지만 3개 전 화면으로 이동하거나 초기 화면으로 이동하는 등 화면이 쌓이는 순서를 관리해야할 필요가 있다. 그 방법 중 나는 `NavigationPath`를 선택했다. 이번 글에서는 개념적인 내용은 빼고 사용법만 간단히 작성하려고 한다. 구현하기 먼저 2개의 뷰 화면 `ContentView`, `SecondPage`와 네비게이션 관리를 위한 `NaviManager..