본문 바로가기
300x250

분류 전체보기241

HTTP 허용 API 호출을 하거나 어떤 사이트에 접근하거나 다운로드 등을 할 때 주소가 http로 시작하는 경우가 있습니다. https가 아닌 경우에는 에러가 발생하면서 접근이 불가능 합니다. 그럴 때는 간편하게 info.plist에서 몇가지 작업을 해주면 금방 해결이 가능합니다. 첫번째 방법. info.plist에 아래처럼 설정해주면 모든 http 접근이 가능해집니다. 두번째 방법. 첫번째 방법은 보안상 좋지 않은 방법이라고 하네여 그래서 특정 도메인만 허용하도록 설정 하는 방법도 있습니다. 2023. 9. 16.
MD5 MD5란? Message-Digest algorithm 5의 약자로 암호화 해시 알고리즘 중 하나로 임의의 길이의 문자 값을 받아서 해시값을 출력해준다. 단방향 암호화이기 때문에 출력값에서 입력값으로 복원하기는 일반적으로 불가능하다. 복잡한 수학적 해시 알고리즘을 통해 32자의 문자열로 반환되며 같은 값은 항상 같은 출력값이 나온다. 또한 고속 연산이 가능하고 읨의로 변경된 패턴에 대해 충돌 가능성이 낮기 때문에 주로 파일의 무결성을 확인하는데 주로 사용된다. 권장되지는 않지만 MD5를 이용해 보안용도로 사용할 때에는 반드시 salt를 붙여서 사용해야한다. *salt: 입력된 값에 임의의 값을 붙인다든지, 암호화 한 값에 또다른 값을 붙여서 암호화 한다든지... 이름이 왜 Salt냐면 음식에 소금을 뿌리.. 2023. 9. 14.
클린아키텍처 서로 의존도를 낮춰 유지보수를 용이하게 한다. 기본적으로 저수준에서 고수준으로 변경에 영향을 받지 않도록 한다. 고수준 Entity 객체 클래스(데이터의 기본이 되는 모델) ex. struct Movie: codable { let name: String let director: String let year: Int } *entity: 원본 데이터 *model: entity를 통해실제 사용될 데이터로 가공된 것 =>entity와 model 사이에 차이가 없다면 entity를 model로 취급해도 무방 ↑ Use Case 객체의 값(데이터)을 가져오고 가공한다. Interface Adapters(=Presentation Layer): controllers, gateways, presenters control.. 2023. 9. 14.
페이지네이션(Pagination) 개발 시 발생할 수 있는 문제 생각보다 페이지네이션 작업은 까다롭다고 느껴진다. 페이지네이션 개발 방법은 예제가 많으므로 구현 자체는 어렵지 않지만, 깔끔하게 동작 하지 않는 경우가 너무 많은 것 같다. 아래 주의 사항은 내가 개발 하면서 마주 했던 문제점들을 해결하는 방법이다. 1) 최초 화면이 로드 될 때, 스크롤이 맨 밑에 있다고 인식 하는 경우 scrollViewDidScroll(_:) 에서 스크롤이 맨 밑에 도달 할 경우 새로운 페이지를 로드 시킨다면 처음 부터 새로운 페이지를 로드 하려 하기 때문에 오류가 발생한다. 이럴 때엔, 사용자가 스크롤 했다는 것을 알려주는 flag를 활용 할 수 있다. scrollViewWillBeginDragging(_:) { flag변수 = true } scrollViewDidScroll(_:.. 2023. 8. 31.
1부- 3장. 긴 코드 조각내기(단계 1/4) 1. 긴 함수 조각내기 2.타입 코드 처리 3. 유사 코드 통합 4. 데이터 보호 코드가 쉽게 지저분해지는 주 원인 메서드 여러가지 일을 한다 추상화의 수준이 맞지않다 주석과 적절한 메서드명이 부족하다 코드를 조각내는 5가지 규칙 1. 다섯 줄 제한 한가지 작업만 해야하는 리펙터링 정의를 생각해보면 메서드가 길다는 것 자체가 좋지 않은 코드이다. 그렇기 때문에 메서드는 {}를 제외하고 5줄 이하여야 한다. 한가지 작업만 하는 메소드를 만들게 되면, 훨씬 빠르고 이해하기 쉽다. 2. 메소드 분리 메소드 내에 역할들을 그룹으로 작게 분리하여, 빈 줄을 추가하거나 주석을 추가한다. 이런 작은 그룹들은 하나의 메서드로 추출할 수 있다. 3. 추상화 수준 맞추기 코드는 직접 조작하는 낮은 .. 2023. 8. 27.
1부- 2장. 리팩터링 깊게 들여다보기 리팩터링의 이점과 핵심을 정리한다. 가독성 의도가 잘 전달되어야 한다는 의미 예. if a != false { return false } else { return true } 위와 같이 첫 조건문에 false를 사용하는 것은 (부정문을 사용하는 것은) 읽기 어렵고, 단순하게 만들 수 있는 코드를 길게 풀어 씀으로써 또 읽기 어려운 코드이다. 이를. return a 위와 같이 리팩터링 하면, 같은 기능을 하며 가독성 좋은 코드로 만들 수 있다. 유지보수성 변경(수정 및 추가)되는 부분이 많으면 안된다. 한군데서 무언가 수정함으로 관련 없는 다른 곳에 문제가 발생하는 것은 코드가 취악한 것이고, 일반적으로 이 근원은 전역변수에 있다. 전역 변수는 어디서든 읽고 쓰기가 가능하여 값의 변경이 나타날 수 있다. .. 2023. 8. 19.
1부- 1장. 리팩터링 리팩터링하기 이 책은 리팩터링을 어떻게 해야하는지에 대한 수련법을 기록한다. 리팩터링이란? 코드 스멜을 줄이고 코드의 가독성과 유지보수성을 높이기 위한 방법 (기능은 변경하지 않고 코드를 변경하는 것) 리팩터링을 하는 이유? 향후 유지보수를 하기 위해 코드의 가독성을 높이고 수정의 범위를 줄이기 위함 리팩터링은 언제 하고 언제 하지 말아야 하나 리팩터링은 항상 해야한다. 다만 아래와 같은 상황에서는 하지 않는것이 좋다 1. 한번 실행하고 삭제될 코드 2. 폐기 전 3. 엄격한 성능 요구 사항이 있는 경우 2023. 8. 19.
프로그래머스: 2018 카카오 블라인드 채용 - [1차] 캐시 https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 LRU 알고리즘을 이용해서 캐시 만큼 배열 요소 개수가 차면 0번 인덱스 값을 지워주고 최근 검색 중인 city가 배열에 있는지 확인 후 있으면 지워준 뒤 맨 뒤로 넣어주는 작업을 해주면 된다. (단, city가 치사하게 대문자일 때도 있고 소문자일때도 있으니 처음에 그냥 cities를 대문자건 소문자건 싹다 바꿔준디 작업해야함) func solution(_ cacheSize:Int, _ c.. 2023. 7. 21.
프로그래머스: 과일 장수 https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 score = 사과 수 즉, 이 사과 들 중에 m개 씩 빼와서 상자를 만들어야 한다 그러면 score.count / m 만큼 상자를 만들 수 있는데 최대 이익을 내야 하므로 score를 오름차순 정렬한 배열에서 최대 이익을 만들 수 있는 score.count % m 인덱스 값부터 상자를 만들어 내면 된다. 이 상자들 각자 최저 사과 점수) x (한 상자에 담긴 사과 개수) 를 구해서 값들을.. 2023. 7. 20.
300x250