목록전체 글 (24)
leeyang의 개발 성장기
브루트포스란게 무엇인지 까먹어서.... 백준의 유형별에서 브루트 포스를 검색해보았다 브루트포스란? 가능한 모든 경우에 대해 모두 직접 해 보는 방법 입니다. 결국.. 다 해보기? 이니까 오히려 빠르게 감을 잡기 쉽다 생각하였다. 하지만 ㅠㅠ 처음에 체스판을 쪼갠다는걸 잘 못 이해해서 올바른 결과값을 만든 후 비교를 했었다가. 결국 전체에서 뺴는걸로 하였다. 줄과 열의 합이 짝수이면 B, 아니면 W인걸 이용하여 비교한다. let input = readLine()!.split(separator: " ").map(){Int($0)} let array1: Int = (input.first ?? 8) ?? 8 let array2: Int = (input.last ?? 8) ?? 8 var result: [Int]..
let n = Int(readLine() ?? "0") ?? 0 var array: [Int] = [] for _ in 1...n { let input = readLine()!.split(separator: " ").map(){String($0)} if input.first == "push" { array.append(Int(input.last ?? "0") ?? 0) } else if input.first == "top" { print(array.last ?? -1) } else if input.first == "size" { print(array.count) } else if input.first == "pop" { print(array.popLast() ?? "-1") } else if input...
안녕하세요 리양입니다 🙂 너무 오랜만에 글을 쓰느라 어떤 글을 쓸까 고민을 하다. 블로그 글을 적는 이유가 제가 스스로 정리하기 위한 일이기도 해서 메모리 구조를 적어볼까 합니다. 메모리 구조를 알아야 메모리 해제 관련 등을 이해하기 쉽지 않을까 해서요! iOS 프로그램을 실행하게 되면 메모리 구조는 아래 그림과 같습니다 Code 작성한 소스코드가 0,1의 binary 형태로 저장되는 공간입니다! 그래서 텍스트 영역이라고 불리기도 합니다. 기계어 형태로 저장되어 있으며 컴파일 타임에 결정이 되고 코드가 변경되면 안되기 때문에 Read-Only 형태로 저장됩니다. 즉 Code 영역에 핵심은 binary, 기계어, Read-Only Data 영역 말그래도 데이터 영역입니다. 전역변수, static(정적) 변..
안녕하세요 리양입니다! 코로나 및 이직 등으로 인해 블로그에 전혀 신경쓰지 못했네요 ㅠㅠ 더욱 열심히 준비하도록 다짐을 하겠습니다! 황금연휴인데 다들 즐겁고 좋은 추억 쌓으시면서 코로나 안걸리도록 화이팅이에요! 원래는 푸시쪽 관련 블로그 글을 쓰고 싶었는 데, 생각해보니 푸시를 하기 위해선 푸시인증서가 필요하고,, 그러다보니 인증서 쪽 관련 글을 다루어 보는게 좋겠단 생각이 들었어요! 그래서 오늘은 인증서~~~~~~의 이야기를 해볼까 합니다. iOS를 개발하다보면 실제 제 디바이스에 빌드해서 확인하고 싶을거에요. 그러기 위한(?) 사전 작업이라고 생각하시면 돼요. 저는 먼저 애플개발자 멤버십을 구입해놓았습니다. 앱스토어에 앱을 배포하기 위해서는 애플 개발자 멤버십이 필요합니다. 그래서 저는 구입을 했고 ..
안녕하세요. 리양입니다 :) 요즘 코로나로 전국적으로 이슈네여 ㅠ ㅠ 다들 몸 조심하시길 바랍니다. 요즘은 패턴에 대해 공부를 하기 시작했어여. 어떻게 layer를 좀 더 잘 나누어서 각 역할을 수행할 수 있게 할까를 고민하기 시작했습니다. 그래서 iOS에서 많이 알려진 mvc, mvvm, mvp, viper, vip를 소개할까 합니다. 시작할게요! MVC 위의 그림은 일반적인 MVC패턴의 모습입니다. Controller가 다리 역할이 되어 View의 입력을 Model에 반영하고 Model의 변화에 맞게 View를 갱신합니다. 역할 및 동작원리 Model 프로그램에서 사용되는 실제 데이터 및 데이터 조작 로직을 처리하는 부분 View 사용자에게 제공되어 보여지는 UI Controller 사용자의 입력을 ..
안녕하세요. 리양입니다 :) 2020년 새해가 밝아서 놀랍네요 ㅠ.ㅠ 다들 새해복 많이 받으세용 :) 세마포어? 뮤텍스? 차이가 별로 없는 거 같은 데 조금은 헷갈립니다. 차이를 말하기 전에 이 둘은 언제 사용하는지가 중요하죠. 멀티스레드를 할 때, 공유 자원에 여러 개의 스레드가 접근할 수 있으므로 공유 자원 영역에 대한 동기화가 필요합니다. 그래서 일반적으로 동기화를 하기 위해 공간 또는 시간을 제어하죠. 여기서, 세마포어는 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것이고 뮤텍스는 공유된 자원의 데이터를 여러 쓰레드가 접근하는 것을 막는 것입니다. 그리고 카운팅의 개념으로 세마포어는 뮤텍스가 될 수 있지만 뮤텍스는 세마포어가 될 수 없습니다. 그건 왜일까요..? 그림처럼 세마포어는 ..
안녕하세요. 리양입니다 :) HTTP 통신을 많이 사용하고 있는 데, Request 요청할 때 Header에 많은 정보가 있습니다. 그런데 그 많은 정보들을 모르고 사용하고 있는 거 같아, 이번 기회에 정리해볼까 합니다! 공통영역 http는 요청과 응답에 따라 header가 다르지만 둘다 상관없이 공통적인 헤더 부분이 있습니다. 먼저 공통 부분을 볼까요? Date Http 메세지를 생성할 때의 날짜(일시), 자동으로 생성됨(RFC 1123) ex) Date: Sat, 2 Oct 2018 02:00:12 GMT Connection ex) Connection: keep-alive 개발자의 영역이 아니다. http는 connection less 방식으로 연결을 매번 끊고 생성의 반복의 작업, 그래서 많은 비용..
안녕하세요. 리양입니다 :) 저는 cocoapods 를 사용을 자주 하고 있습니다. 그런데 최신 버전으로 version up을 하고 생긴 갑작스런 문제... \`raise\_if\_conflicts': Unable to activate cocoapods-core-1.8.4, because concurrent-ruby-1.0.5 conflicts with concurrent-ruby (~> 1.1) (Gem::ConflictError) 일차 당황을 했습니다. 그래서 루비 버전이 제대로 잡히지 않는 거 같아서 gem install concurrent-ruby-ext -v 1.1.5 를 통해 해결하려고도 하지만 여전히 같은 문제가 발생했습니다. 그뒤로 gem 버전도 올리고,,, bundle 버전도 올리고.....