일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 일본음식
- 알고리즘 문제풀이
- 알고리즘
- 프로그래밍도서
- 해커랭크
- IOS
- build
- 개발
- 유니티
- 자유여행
- 책 정리
- Unity
- 책리뷰
- Android
- Effective C#
- 서평
- 문제풀이
- 프로그래밍
- 독서
- C#
- 방학여행
- javascript
- 해커랭크 문제풀이
- 이펙티브 씨샵
- 독후감
- 빌드
- HackerRank
- 코토리
- 이펙티브 C#
- 정렬
- Today
- Total
목록C# (9)
Console.Log
문제 게임 개발을 하다보면 Android AAB 빌드 용량이 150mb를 넘기는 순간이 온다. 이 때부터 개발자는 AAB내 base파일과 리소스 파일을 분리하여 base파일을 150mb가 넘어가지 않도록 수정해야 한다. 해결 Play Asset Delivery 안드로이드에서는 이런 문제를 해결 하기 위해 PAD(Play Asset Delivery)를 지원한다. PAD는 구글플레이에서 지원하는 애셋 호스팅 서비스다. 이 서비스를 사용하면 따로 CDN을 쓰지 않아도 쉽고 간편하게 애셋을 올릴 수 있다. 전송 모드 PAD는 총 3가지의 전송 모드를 지원한다. install-time: 앱이 설치될때 같이 전송된 된다. google play의 앱 크기에 영향을 미친다. ( 최대 1GB ) fast-follow: ..
뒤끝에서 서버 API를 사용하는 방법 뒤끝에서 서버 API를 사용하는 방법은 총 3가지다. 동기호출 비동기호출 SendQueue(비동기) 호출 난이도가 가장 쉽고 직관적인건 1번이지만 서버 값을 받아올 때까지 게임이 멈추기에 그렇게 좋은 방법은 아니다. 그렇다면 비동기호출을 해야하는데, 보낸 순서대로 순서를 보장 받을 수 있는 SendQueue방식의 호출을 게임을 개발하며 주로 사용했다. Promise 패턴 Promise 패턴은 여러 비동기 함수들을 쉽게 관리할 수 있게 하는 패턴이다. Promise 객체는 처리에 대한 결과 상태를 반환하고, 작업의 종료시점을 알 수 있게 된다. Promise객체의 상태는 크게 3가지다. Pending - 작업이 완료되지 않은 상태. Resolved - 작업이 성공적으로..
문제 float.Parse() 함수를 사용할 때 러시아, 스페인등 지역에서 파싱 에러가 난다. FormatException: Input string was not in a correct format. at System.Number.ParseSingle (System.String value, System.Globalization.NumberStyles options, System.Globalization.NumberFormatInfo numfmt) 원인 C#에는 사용자의 문화권에 따라 , 나 . 를 사이에 사용한다. 만약 사용자의 언어 환경이 다른 숫자 표기법을 사용하는 국가라면 string에서 float나 double로 파싱할때 특정 언어 환경에서만 에러가 난다. 해결 CultureInfo.Invaria..
Unity로 게임을 만들다 보면 필연적으로 데이터와 로직이 결합된 상태로 개발하게 된다. 프로젝트가 커질수록 점점 코드는 복잡해지고, 데이터와 로직이 뒤섞여 더 이상 유지보수가 힘든 상황이 이르게 된다. 따라서 데이터(Model)와 로직(Controller)을 분리해주는 패턴으로부터 개발을 시작하는 게 좋다. MVC 패턴 MVC 패턴은 Model과 View, 그리고 둘을 잇는 Controller라는 요소가 들어있는 패턴이다. Model 게임의 데이터가 되는 요소 로직이 아닌 순수 데이터가 들어가야 함 Controller 게임의 핵심 로직들을 담당한다. Model들을 조작하고 업데이트된 Model들을 View에 통지해준다. View 게임 내 외적으로 보이는 모든 요소들이다. Controller에서 받은 데..
문제 링크: https://www.hackerrank.com/challenges/climbing-the-leaderboard/problem#! Climbing the Leaderboard | HackerRank Help Alice track her progress toward the top of the leaderboard! www.hackerrank.com 안녕하세요, 이번 HackerRank 문제는 랭킹보드에서 자신의 점수들이 몇등에 해당하는지 찾아내면 되는 문제입니다. 보기엔 간단해보였지만 주먹구구식으로 풀었다간 쉽게 Timeout이 걸려버리는 마법에 걸립니다..; 문제 요약 난이도: Medium Dense Ranking의 방식인 순위표가 있고, 그 순위표엔 여러 점수들이 들어가 있습니다. 앨리스의..
문제 링크: https://www.hackerrank.com/challenges/sherlock-and-anagrams/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=dictionaries-hashmaps Sherlock and Anagrams | HackerRank Find the number of unordered anagramic pairs of substrings of a string. www.hackerrank.com 이번 문제는 Dictionary와 Anagram의 원리를 이해하면 풀 수 있는 문제입니다. Anagram은 단어의 순서를 바꿔 다른 단어를 만드는 놀이 입니다. 한글로..
문제 링크: https://www.hackerrank.com/challenges/new-year-chaos/problem New Year Chaos | HackerRank Determine how many bribes took place to get a queue into its current state. www.hackerrank.com 문제 요약 난이도: Medium - 새해 첫날 원더랜드 롤러코스터를 타기 위해 줄을 서 있습니다. - 줄에 서있는 사람들에게 먼저 온 순서대로 번호 스티커를 배부했습니다. ( 5명이면 1,2,3,4,5 이렇게 ) - 뒷 번호에 있는 사람들은 최대 2번 뇌물을 주어 앞번호를 가진 사람과 위치를 바꿀 수 있습니다. - input으로 주어진 뒤죽박죽 된 번호들을 보고 몇 번..
ITEM 11: .NET 리소스 관리에 대한 이해 힙에 관한 메모리 관리는 가비지 콜렉터가 완전히 책임진다. 그러나 그 외의 비관리 리소스는 개발자가 관리해야함. → 비관리 리소스는 finalizer 와 IDisposable인터페이스라는 두가지 메커니즘 제공 [위험] finalizer: finalizer를 포함하고 있는 객체를 가비지로 판단한 경우, 이 객체에 대한 참조를 다른 큐에 삽입하여 나중에 finalizer를 호출될 수 있도록 사전 준비만 수행. 가비지 콜렉터의 세대 개념 0세대: 수집 절차 이후 생성된 객체들 1세대: 수집 절차에서 살아남은 객체들 2세대: 두번 혹은 그 이상의 수집 절차에서 살아남은 객체들 수집 절차 기본적으로 0세대 객체만 검사 1세대는 대략 10번에 한 번 검사 2세대는 ..
ITEM 1: 지역변수를 사용할 때는 var를 사용하라 타입을 명시적으로 드러내지 않는 경우라면 var를 사용하는 것이 좋다.1234567IEnumerable q = from c in db.Customers select c.ContactName; var q2 = q.Where(s => s.StartsWith(start)); return q2;Colored by Color Scriptercs q를 var로 받지 않을경우, IQueryable을 반환해야 하지만 상위객체인 IEnumerable로 반환하게 되어 Where 구문에서 성능이 저하되게 된다. 반대로 q를 var로 받았을 경우에는 IQueryable를 반환하게 되어 성능저하가 발생하지 않게 된다. 내장 숫자 타입(int, float, double등)을..