일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- compateto
- 우아한 테크코스
- 딥다이브
- this
- 검색
- 파일 url
- 음악 url 파일 다운로드
- AWS
- 모던 자바스크립트
- bucket4j
- invalid_grant
- 우아한테크코스
- Deep Dive
- redis
- 프론트엔드
- 프론트엔드 과제
- 코멘토 #코멘토실무PT #실무PT후기 #실무강의 #리액트강의 #웹프로그래밍 #react #웹개발실무
- oauth
- 프로그래머스
- 유효시간 설정 url
- Dev-Matching
- NestJS
- concurrency limit
- api 요청 수 제한
- 자바스크립트
- 스프링부트
- api 비동기처리
- 프리코스
- TypeORM
- 타입스크립트
- Today
- Total
목록전체 글 (174)
개발 알다가도 모르겠네요
SharedPreferences이란? 여러 데이터 저장 방법 중 간단하게 사용할 수 있는 기능입니다. 개발에 필요한 크지 않은 변수와 값들을 내부에 저장하기에 적당합니다. 파일이 앱 폴더 내에 저장되므로 앱을 삭제하면 당연히 데이터도 삭제됩니다. 예시를 살펴보겠습니다. public class MainActivity extends AppCompatActivity { EditText et_save; String shared = "file"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_save = (E..
Adapter는 하나의 Object(객체)로서, 보이는 View와 그 View에 올릴 Data를 연결하는 일종의 Bridge이다. 즉, 데이터의 원본을 받아 관리하고, 어댑터뷰가 출력할 수 있는 형태로 데이터를 제공하는 중간 객체 역할을 한다. 리스트뷰를 갱신하기 위해서는 Adapter의 notifyDataSetChanged() 메소드를 사용한다.
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let storyboard = UIStoryboard.init(name : "Main", bundle: nil) let newsDetail = storyboard.instantiateViewController(identifier: "NewsDetailController") as! NewsDetailController if let news = newsData { let row = news[indexPath.row] if let v = row as? Dictionary { if let imageUrl = v["urlToImage"] as? String { newsDe..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bEtlQF/btqU7drJbHH/hrxHkMYkCgLMbokfFmJJa0/img.png)
swift에서 data는 dictionary 타입입니다. (key, value) func getNews() { let url = "https://newsapi.org/v2/top-headlines?country=kr&apiKey=248805a55af84f14b13e8e69456fb6dd" let task = URLSession.shared.dataTask(with: URL(string: url)!) { (data, response, error) in if let dataJson = data { do { let json = try JSONSerialization.jsonObject(with: dataJson, options: []) as! Dictionary //swift에서 data는 dictionary..
Create a url Create a URLSession Give the session a task Start the task URLSession은 기본적으로 다음과 같은 순서(Life Cycle)로 진행됩니다. Session configuration을 결정하고, Session을 생성. 통신할 URL과 Request 객체를 설정. 사용할 Task를 결정하고, 그에 맞는 Completion Handler나 Delegate 메서드들을 작성. 해당 Task를 실행. Task 완료 후 Completion Handler가 실행. Completion handler 어떠한 일이 끝났을 때 진행할 업무를 담당. 1. Session URLSession은 크게 3가지 종류의 Session을 지원합니다. Default S..
모바일에서 네트워크 통신 시 그 과정은 백그라운드에서 동작(스레드 = 일꾼에 의해) 합니다. Background : Network Main : UI 즉 ui에 보이도록 하라면 백그라운드의 데이터를 메인으로 올라오게 해야 합니다. 이때 dispatchqueue를 사용합니다. GCD (Grand Central Dispatch) 멀티코어 환경을 제공하는 ios에서 멀티스레드를 활용한 동시성 프로그래밍을 개발자가 DispatchQueue를 이용해 쉽게 구현할 수 있도록 하는 기술. Serial : Queue 대기열 내에 있는 작업 항목들을 순차적으로 처리 Concurrent : Queue 대기열 내에 있는 작업 항목들을 병렬로 동시에 처리 Sync : Queue의 작업을 수행시키고 수행 완료될 때 까지 기다림...
클로저 실행 가능한 코드 블록 파라미터로서 넘겨질 수 있음. 이름이 없는 함수 옵셔널 옵셔널의 개념 어떤 변수에 value가 있을 수도 있고 없을 수도 있음. 있다면 value값을 넣고 없다면 nil을 넣음. Forced unwrapping : 억지로 박스를 까 보기 Optional binding (If let) : 부드럽게 박스를 까 보자 1 Optional binding (guard) : 부드럽게 박스를 까 보자 2. Cyclonic complexity를 줄이기 위해. guard란? 함수의 시작 부분에 써서 반드시 가져가야 할 조건들을 검사하는 파트. if문의 subset개념으로 if문을 대체할 수 있음. if문보다 가독성이 좋음. Nil coalescing : 박스를 까봤더니, 값이 없으면 디폴트 ..
Single Responsibility (단일 책임) Type Safety (타입이 분명해야 할 때) - 부모 혹은 다른 자식 클래스들과 구분을 명확하게 해야 할 때 Shared Base Classes (다자녀가 있을 때) Extensibility (확장성이 필요한 경우) Identity (정체를 파악하기 위해)
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/LqOvQ/btqVbwdhWf6/RFdo3zQg91jqyxuDbMRkkk/img.jpg)
가비지 컬렉션이란? 기존에 할당된 메모리를 재사용하는 메커니즘. 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블록을 찾아 자동으로 재사용가능한 자원으로 회수 하는 것. 장점 GC를 지원하는 환경에서는 프로그래머가 동적으로 할당된 메모리 영역 전체를 완벽하게 관리할 필요가 없어집니다. GC는 다음과 같은 버그를 줄이거나 완전히 막을 수 있습니다. 유효하지 않은 포인터 접근 이미 해제된 메모리에 접근하는 버그를 말함. 만약 이 포인터가 해제되고 새로운 값이 할당되었다면, 잘못된 값을 읽어오게 됨. 이중 해제 이미 해제된 메모리를 다시 해제하는 버그를 말함. 메모리 누수 더는 필요하지 않은 메모리가 해제되지 않고 남아있는 버그를 말함. 메모리 누수가 반복되면 메모리 고갈로 프로그램이 중단될 수 있음...
클래스 Class를 쓰는 경우 두 object의 인스턴스 자체가 같음을 확인해야 할 때. 하나의 객체가 필요하고, 여러 대상에 의해 접근되고 변경이 필요한 경우. call by reference. 클래스의 인스턴스는 힙 영역에 저장. 따라서 타입이 let일 경우에도 값의 변경이 가능. ex) let me = Person(health: 100)이라고 가정했을 때, me 자체의 타입은 let이지만 그 안의 내용은 Person클래스 타입의 새로 만들어진 인스턴스의 주소 값을 가지고 있는 상태입니다. (즉 힙 영역에 생성된 실제 person의 주소를 가리키고 있음) 따라서 체력을 깎는 me.damage(10)라는 메서드를 실행하면 let형태의 me의 값을 바꾸는 것이 아니라 me가 가리키는 실제 주소의 값을 바..