분류 전체보기
-
”Functional Programming is programming without assignment satements”Rober C.Martin특징부수 효과가 없는 순수 함수를 1급 객체로 간주하여 참조 투명성을 지킬 수 있다. 부수효과(Side Effect)변화 또는 변화가 발생하는 작업을 의미한다.변수의 값이 변경됨자료구조의 수정이 일어난다객체의 변수값을 설정한다I/O가 발생한다 순수 함수(Pure Function)Side Effect를 제거한 함수를 순수 함수라고 한다.함수형 프로그래밍의 함수들은 순수 함수들이다.동일한 Input에 대해 항상 동일한 Output을 반환 하는것메모리나 I/O 관점에서 Side Effect가 없는 함수함수의 실행이 외부에 영향을 끼치지 않는 함수순수 함수의 장점함수..
함수형 프로그래밍”Functional Programming is programming without assignment satements”Rober C.Martin특징부수 효과가 없는 순수 함수를 1급 객체로 간주하여 참조 투명성을 지킬 수 있다. 부수효과(Side Effect)변화 또는 변화가 발생하는 작업을 의미한다.변수의 값이 변경됨자료구조의 수정이 일어난다객체의 변수값을 설정한다I/O가 발생한다 순수 함수(Pure Function)Side Effect를 제거한 함수를 순수 함수라고 한다.함수형 프로그래밍의 함수들은 순수 함수들이다.동일한 Input에 대해 항상 동일한 Output을 반환 하는것메모리나 I/O 관점에서 Side Effect가 없는 함수함수의 실행이 외부에 영향을 끼치지 않는 함수순수 함수의 장점함수..
2024.01.05 -
프로세스 개요 운영체제는 프로그램을 메모리에 적재하고 이를 프로세스라고 부른다 운영체제는 프로세스에게 별도의 메모리 공간을 할당하고 이곳에 코드와 데이터 등을 적재한다 CPU는 하드디스크에 저장된 상태에서 코드를 실행하지 않고 메모리에 적재된 코드들만 실행하기 때문 프로세스는 서로 독립적인 메모리 공간을 가지므로 다른 프로세스의 영역에 접근 할 수 없다 다른 프로세스와의 데이터를 주고 받으려면 커널을 통해야 함 커널은 프로세스마다 고유한 번호를 할당한다 프로세스에 관한 정보는 커널에 의해 관리된다 프로세스의 모든 관리는 커널에 의해 수행된다. 프로세스 관리 프로세스는 운영체제가 응용프로그램의 실행을 위해 생성한 것으로 운영체제의 커널은 프로세스의 생성에서 종료까지 모든것을 관리한다. 커널은 프로세스를 위..
프로세스(Process)프로세스 개요 운영체제는 프로그램을 메모리에 적재하고 이를 프로세스라고 부른다 운영체제는 프로세스에게 별도의 메모리 공간을 할당하고 이곳에 코드와 데이터 등을 적재한다 CPU는 하드디스크에 저장된 상태에서 코드를 실행하지 않고 메모리에 적재된 코드들만 실행하기 때문 프로세스는 서로 독립적인 메모리 공간을 가지므로 다른 프로세스의 영역에 접근 할 수 없다 다른 프로세스와의 데이터를 주고 받으려면 커널을 통해야 함 커널은 프로세스마다 고유한 번호를 할당한다 프로세스에 관한 정보는 커널에 의해 관리된다 프로세스의 모든 관리는 커널에 의해 수행된다. 프로세스 관리 프로세스는 운영체제가 응용프로그램의 실행을 위해 생성한 것으로 운영체제의 커널은 프로세스의 생성에서 종료까지 모든것을 관리한다. 커널은 프로세스를 위..
2024.01.05 -
처음 만난 캠퍼들 부스트캠프의 수칙과 스케줄을 숙지하고 드디어 챌린지 첫날이 되었다. 챌린지는 매주 팀이 바뀌며 매일 10시부터 12시까지 팀원들과 코드를 리뷰하는 시간을 가진다. 처음 만난 캠퍼들이었는데 Swift를 해보신분도 있고 처음 해보시는 분들도 있었다. 대학 때 튜터링 활동을 통해 다른 사람의 코드를 리뷰해준 적은 있지만 내 코드를 리뷰받아본 적은 없어서 기대가 많이 되었다. Swift를 처음 접하더라도 부스트캠프에 있다는 것은 어느정도 개발을 잘할거라는 생각이 있었기 때문이었다. 이것이 부스트캠프 미션 … ? 챌린지 후기들을 보면 4-5시간만 자고 밤샘 개발은 기본이라는 글들이 많아서 긴장했었는데 첫날 미션을 받고 코어타임(10시부터 19시까지) 내에 완료를 해서 생각보다 할만한데 ? 라는 ..
부스트캠프 웹·모바일 8기 챌린지 1주차 회고처음 만난 캠퍼들 부스트캠프의 수칙과 스케줄을 숙지하고 드디어 챌린지 첫날이 되었다. 챌린지는 매주 팀이 바뀌며 매일 10시부터 12시까지 팀원들과 코드를 리뷰하는 시간을 가진다. 처음 만난 캠퍼들이었는데 Swift를 해보신분도 있고 처음 해보시는 분들도 있었다. 대학 때 튜터링 활동을 통해 다른 사람의 코드를 리뷰해준 적은 있지만 내 코드를 리뷰받아본 적은 없어서 기대가 많이 되었다. Swift를 처음 접하더라도 부스트캠프에 있다는 것은 어느정도 개발을 잘할거라는 생각이 있었기 때문이었다. 이것이 부스트캠프 미션 … ? 챌린지 후기들을 보면 4-5시간만 자고 밤샘 개발은 기본이라는 글들이 많아서 긴장했었는데 첫날 미션을 받고 코어타임(10시부터 19시까지) 내에 완료를 해서 생각보다 할만한데 ? 라는 ..
2024.01.03 -
지원 당시 스펙 컴퓨터공학 전공 iOS 개발 입문 6개월 차 ,,, (RxSwift 공부 중) 프로젝트 경험 졸업작품 1개 프로그래머스 2단계 거의 다 풀고 3단계 도전 중 지원하게 된 계기 졸업할때가 되니 취업시장이 박살이 나버려서 8월까지 졸업유예를 해놓고 취업준비를 하고있던 와중이였다 … 1년전만해도 정말 쉬웠는데 왜 나만 … 사실 나는 SSAFY나 우테코, 네이버 부스트캠프 등을 하나도 모르고있었다. 그러다가 어느때와 같이 채용공고를 보고있다가 부스트캠프의 모집공고를 보게 되었고 채용공고인 줄 알고 들어갔다가 부스트캠프를 알게되었다. iOS 개발을 독학으로 하기도 했고 대학 내에서도 iOS 개발을 하는 사람도 없었기 때문에 내 실력이 어느정도인지 궁금하기도 했고 iOS를 어떻게 알려주는지도 궁금해..
2023 네이버 부스트캠프 웹·모바일 8기 iOS 합격 후기지원 당시 스펙 컴퓨터공학 전공 iOS 개발 입문 6개월 차 ,,, (RxSwift 공부 중) 프로젝트 경험 졸업작품 1개 프로그래머스 2단계 거의 다 풀고 3단계 도전 중 지원하게 된 계기 졸업할때가 되니 취업시장이 박살이 나버려서 8월까지 졸업유예를 해놓고 취업준비를 하고있던 와중이였다 … 1년전만해도 정말 쉬웠는데 왜 나만 … 사실 나는 SSAFY나 우테코, 네이버 부스트캠프 등을 하나도 모르고있었다. 그러다가 어느때와 같이 채용공고를 보고있다가 부스트캠프의 모집공고를 보게 되었고 채용공고인 줄 알고 들어갔다가 부스트캠프를 알게되었다. iOS 개발을 독학으로 하기도 했고 대학 내에서도 iOS 개발을 하는 사람도 없었기 때문에 내 실력이 어느정도인지 궁금하기도 했고 iOS를 어떻게 알려주는지도 궁금해..
2024.01.03 -
앱을 만들다가 view에 cornerRadius를 주었는데 적용이 되지 않다고 버튼을 클릭했을 때 적용되는 문제를 발견 // 하위뷰의 코드 override func layoutSubviews() { super.layoutSubviews() buttons.forEach { button in button.clipsToBounds = true button.layer.cornerRadius = button.bounds.height / 2 } } 디버깅을 해보니 버튼의 frame이 잡히지 않은 시점 즉 frame이 0인 시점에서 button.layer.cornerRadius = button.bounds.height / 2 을 해주어 cornerRadius가 0이되어 발생하는 문제인것을 확인. 왜 하위 뷰의 fra..
[iOS] 하위 뷰의 frame이 잡히지 않을 때앱을 만들다가 view에 cornerRadius를 주었는데 적용이 되지 않다고 버튼을 클릭했을 때 적용되는 문제를 발견 // 하위뷰의 코드 override func layoutSubviews() { super.layoutSubviews() buttons.forEach { button in button.clipsToBounds = true button.layer.cornerRadius = button.bounds.height / 2 } } 디버깅을 해보니 버튼의 frame이 잡히지 않은 시점 즉 frame이 0인 시점에서 button.layer.cornerRadius = button.bounds.height / 2 을 해주어 cornerRadius가 0이되어 발생하는 문제인것을 확인. 왜 하위 뷰의 fra..
2023.12.28 -
Swift에서의 메모리 관리 Swift에서는 ARC(Automatic Reference Counting)를 사용하여 자동으로 할당/해제를 해준다. BoostCamper 클래스가 있을 때 Swift에서 힙에 메모리를 어떻게 할당하고 해제하는지 알아보자. class BoostCamper { letid: String let name: String } var boostcamper1: BoostCamper? = BoostCamper(id: "S029", name: "이준복") var boostcamper2: BoostCamper? = boostcamper1 boostcamper2 = nil boostcamper1 = nil 이처럼 Swift는 rc가 0이 되면 자동으로 힙에 할당한 메모리를 해제 해주게 된다. A..
[Swift] Swift에서의 메모리 관리Swift에서의 메모리 관리 Swift에서는 ARC(Automatic Reference Counting)를 사용하여 자동으로 할당/해제를 해준다. BoostCamper 클래스가 있을 때 Swift에서 힙에 메모리를 어떻게 할당하고 해제하는지 알아보자. class BoostCamper { letid: String let name: String } var boostcamper1: BoostCamper? = BoostCamper(id: "S029", name: "이준복") var boostcamper2: BoostCamper? = boostcamper1 boostcamper2 = nil boostcamper1 = nil 이처럼 Swift는 rc가 0이 되면 자동으로 힙에 할당한 메모리를 해제 해주게 된다. A..
2023.12.28 -
Copy-on-Write 💡 Collection의 Copy -On-Write 예를 들어 변수 A에 들어있는 Collection값을 새로운 변수 B에 복사한다고 할 때 바로 복사본을 만들지 않습니다. Reference Type 처럼 B는 A의 참조만 공유합니다. 만약 B의 값에 변경이 발생되면 그 시점에서 A에 대한 새로운 복사본을 만들어 B에게 주고 값을 변경합니다. Copy-On-Write는 Reference type의 효율성과 Value type의 불변성을 이용하는 것 입니다. 할당은 많이 일어나지만 변경은 그것보다 적게 일어나 복사의 비용을 줄일 수 있고 변경이 일어나면 기존의 값을 복사하여 새로운 값을 만든 뒤 변경하므로 기존의 값도 변하지 않는 불변성을 유지 할 수 있습니다. // 예시 var ..
[Swift] Copy-on-WriteCopy-on-Write 💡 Collection의 Copy -On-Write 예를 들어 변수 A에 들어있는 Collection값을 새로운 변수 B에 복사한다고 할 때 바로 복사본을 만들지 않습니다. Reference Type 처럼 B는 A의 참조만 공유합니다. 만약 B의 값에 변경이 발생되면 그 시점에서 A에 대한 새로운 복사본을 만들어 B에게 주고 값을 변경합니다. Copy-On-Write는 Reference type의 효율성과 Value type의 불변성을 이용하는 것 입니다. 할당은 많이 일어나지만 변경은 그것보다 적게 일어나 복사의 비용을 줄일 수 있고 변경이 일어나면 기존의 값을 복사하여 새로운 값을 만든 뒤 변경하므로 기존의 값도 변하지 않는 불변성을 유지 할 수 있습니다. // 예시 var ..
2023.12.28 -
프로세스 메모리 관리 기본적으로 프로세스의 메모리가 할당되면 영역은 4군데로 나뉜다. Code 우리가 작성한 소스 코드 저장되는 공간 컴파일 타임에 결정되고 중간에 코드가 변경되는 일이 없도록 Read-Only 형태로 저장된다 Data 전역변수와 static 변수들이 저장되는 공간 보통의 경우엔 프로그램 시작과 동시에 할당되며 프로그램이 종료되어야 해제된다 하지만 Swift에서의 static은 lazy이기 때문에 아마 접근 시 할당되고 앱이 종료시 해제 될 것이다. 실행 도중에 변수 값이 변경될 수 있기 때문에 Read-Write 형태로 저장된다. Stack 함수 호출 시 함수의 지역변수, 매개변수, 리턴값 등이 저장되는 공간. 컴파일 시점에 결정되고 함수가 종료되면 할당된 메모리도 해제 된다. 장점 C..
[Swift] Swift에서의 Value Type, Reference Type프로세스 메모리 관리 기본적으로 프로세스의 메모리가 할당되면 영역은 4군데로 나뉜다. Code 우리가 작성한 소스 코드 저장되는 공간 컴파일 타임에 결정되고 중간에 코드가 변경되는 일이 없도록 Read-Only 형태로 저장된다 Data 전역변수와 static 변수들이 저장되는 공간 보통의 경우엔 프로그램 시작과 동시에 할당되며 프로그램이 종료되어야 해제된다 하지만 Swift에서의 static은 lazy이기 때문에 아마 접근 시 할당되고 앱이 종료시 해제 될 것이다. 실행 도중에 변수 값이 변경될 수 있기 때문에 Read-Write 형태로 저장된다. Stack 함수 호출 시 함수의 지역변수, 매개변수, 리턴값 등이 저장되는 공간. 컴파일 시점에 결정되고 함수가 종료되면 할당된 메모리도 해제 된다. 장점 C..
2023.12.28