[Unity] System.DllNotFoundException.sqlite3

Unity 에서 Sqlite를 사용할 때
Android 빌드시 sqlite3.dll 파일을 찾을 수 없다는 오류가 발생할 때는
libsqlite3.dll 파일 경로가 잘못되었을 가능성이 큽니다.

libsqlite3.dll 파일은 Plugins-Android 폴더에 넣으시고
그외 dll 파일들은 Plugin 폴더에 넣으시면 됩니다. (Mono.Data.* ,System.* 파일들)

제가 문제를 해결한 플러그인 폴더를 패키지로 공유하니 참고하시기 바랍니다.
https://drive.google.com/open?id=13WDCqq_b0U_czgdFOe58Czc0WLcaDnPW

[Unity] UGUI 에서 터치 좌표에 UI가 있는지 판별하기

개발하다 보면 오브젝트의 Collider 와 UI의 구성요소가 겹치는 경우가 있는데
이 상태를 판별하는 코드이다.

        public static bool IsOverUIElement()
        {
            var eventData = new PointerEventData(EventSystem.current);
            eventData.position = Input.mousePosition;
            var results = new List<RaycastResult>();
            EventSystem.current.RaycastAll(eventData, results);
            return results.Count > 0;
        }

[Unity] UGUI Sprite packer 가 동작하지 않을 때

SpritePacker 의 Pack 버튼을 눌러도 동작하지 않을 때는
1. Resources 폴더 하위에 있는 Sprite 들을 Resources 폴더 밖으로 이미지들을 옮긴다.
2. Edit – Project Setting – Editor – Sprite Packer 의 설정을 Disable로 바꿨다가 다시 Always Enabled 로 바꾼다.
3. 유니티 재시작
4. Window – 2D – Sprite Packer 를 열어 다시 Pack 버튼을 누르면 Packing 이 된다
5. Sprite 들을 다시 원래 위치로 옮긴다.

Please enable desugaring by adding the following to build.gradle 오류

안드로이드 스튜디오에서 빌드시에 오류가 났다.
오류 메세지는 Please enable desugaring by adding the following to build.gradle 이것.
원인을 살펴보니 안드로이드 스튜디오에서 Java 8 을 사용하도록 설정하지 않아서였다.

프로젝트 우클릭 -> Open Module Settion (F4) 메뉴
-> Modules 에서 Source와 Target Compatibility 를 1.8 로 변경해주니 해결~

[Programmers] K번째 수

배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하는 문제

JAVA

public static int[] solution(int[] array, int[][] commands) {
        int cnt = commands.length;
        int[] answer = new int[cnt];

        for(int i = 0; i < cnt; ++i){
            answer[i] = getSelectValue(array, commands[i]);            
        }
        //System.out.println("answer ="+Arrays.toString(answer));
        return answer;
    }

    static int getSelectValue(int[] array, int[] command){
        int start = command[0] - 1 ;
        int end = command[1];
        int index = command[2] - 1;
        //System.out.println(start + " / "+end+ " / "+index);
        int[] temp = Arrays.copyOfRange(array, start, end);
        Arrays.sort(temp);
        //System.out.println("temp ="+Arrays.toString(temp));
        return temp[index];
    }    

 

이렇게 해도 됨
public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        for(int i = 0 ; i < commands.length; i++)
        {
            int size = commands[i][1] - (commands[i][0] - 1);
            int[] copyArray = new int[size];
            System.arraycopy(array, commands[i][0] - 1, copyArray, 0, size);
            Arrays.sort(copyArray);
            answer[i] = copyArray[commands[i][2]-1];
        }
        return answer;
    }

블로그 호스팅 이전 완료!

오랜 기간 woobi.co.kr 에서 1년에 만원짜리 호스팅을 쓰다가

속도도 느리고 php 버전 업데이트도 5.6 까지 밖에 안된다고 해서

Amazon Lightsail 로 옮겼다. (https://lightsail.aws.amazon.com)

https://seoulrain.net/2017/07/10/amazon-lightsail/

이분의 블로그를 참고했는데

중간에 도메인 꼬여서 몇번 삽질한거 빼면 아주 쉽게 이전이 가능했다.

워드프레스 블로그 이전의 핵심 포인트는

도메인을 먼저 정리하는 것이다.

과정을 간단히 살펴보면

1. All in on WP Migration 플러그인 - 내보내기를 통해 
워드프레스 백업 파일을 만들고 
(나중에 가져오기 할 때 용량제한이 40메가이므로 40메가 이하로 조정한다.)

2. wp-config.php 에 입력된 기존 도메인을 
호스팅에서 기본 제공해주는 도메인으로 변경한다.
(ex. tedhome.net -> tedhome.woobi.co.kr )

3. Amazon Lightsail 로 넘어와서 워드프레스 인스턴스를 생성한 뒤

4. '홈 - 네트워킹' 메뉴에서 고정 아이피를 만들고

5. '홈 - 네트워킹 - DNS영역 생성'을 통해 DNS레코드를 생성한 다음 
DNS 정보를 입력한다. 
A 레코드 / @.내도메인 / 4번에서 만든 고정아이피
(예 : A레코드 / @.tedhome.net / 10.10.10.1)
C네임레코드 / www.내도메인 / A레코드에 입력한 내 도메인
(예 : C네임레코드 / www.tedhome.net / tedhome.net) 

6. 하단에 도메인 네임 서버가 네개 보이는데 
이것을 도메인 관리 사이트에 가서 네임서버로 등록해주면 
도메인과 4번에서 발급한 고정 아이피의 연결이 완료된다. 
(네임서버 등록은 시간이 조금 걸릴 수 있으니 기다리자.)

7.3번에서 생성한 워드프레스 인스턴스로 가서 
네트워킹 메뉴를 선택하면 'IP고정' 버튼이 보이는데 
이를 선택해서 4번에서 만든 고정아이피를 연결하면 
도메인과 워드프레스를 연결 하게 된다.

이렇게 되고 이 과정외에 기존 블로그 데이터 내보내기 – 가져오기는
All-in-one WP Migration 플러그인이 알아서 해주기 때문에 어려울 것이 없다.

빨라지니까 속이 다 시원하다! ㅎㅎㅎ

[HackerRank] Number of ID

Input값은 숫자로 된 문자열.

이를 재조합 하여 사원 번호를 만든다고 가정할 때 몇개를 만들 수 있는지 찾는 문제.

조건 1 : 사원번호는 8로 시작함

조건 2 : 사원번호는 11자리 숫자로 구성됨

 

public static int numOfIds(string pool)
        {
            List list = new List(pool.ToCharArray());
            //int firstIdx = list.IndexOf('8')+ 1;
            int cnt = list.Count;// - firstIdx;
            int d = cnt / 11;
            int r = cnt % 11;
            Console.WriteLine(string.Format("firstIdx = {0} / cnt ={1} / d = {2} / r = {3}", 0, cnt, d, r));
            string str = "8";
            int tCnt = list.Count(s => str.Contains(s));
            Console.WriteLine("tCnt = "+ tCnt);
            return Math.Min(d, tCnt);
        }

 

[HackerRank] Common Child

주어진 두 문자열중 중복되는 문자를 찾고
연속으로 가장 길게 배치되는 글자 수를 찾는 문제.
(문제 이해하기가 어렵다;;;)

List에 넣어서 하나 하나 비교하는 방식으로 하다가
자꾸 오답이 나서 보니 문제를 잘못이해함.. ㅠ
멘붕와서 포기하고 풀이 검색을 해봤는데

정말 상상도 못할 방법으로 푼 해답을 발견했다.

아니… 대체 왜 이렇게 되는거냐고;;;

이런거 짜는 사람들은 대체 누굴까..;; 

 

https://www.geeksforgeeks.org/longest-common-subsequence-dp-4/

 static int commonChild(string s1, string s2)
        {
            char[] X = s1.ToCharArray();
            char[] Y = s2.ToCharArray();
            int m = X.Length;
            int n = Y.Length;

            int[,] L = new int[m + 1, n + 1];

            for (int i = 0; i <= m; i++)
            {
                for (int j = 0; j <= n; j++)
                {
                    if (i == 0 || j == 0)
                        L[i, j] = 0;
                    else if (X[i - 1] == Y[j - 1])
                        L[i, j] = L[i - 1, j - 1] + 1;
                    else
                        L[i, j] = Math.Max(L[i - 1, j], L[i, j - 1]);
                }
            }
            return L[m, n];
        }
		

[HackerRank] Sparse Arrays

오늘 문제는 너무 기초네..;;; 

주어진 배열안에 검색어가 몇 개인지 찾는 문제..;;

 

static int[] matchingStrings(string[] strings, string[] queries) {
        List result = new List();
        foreach(string q in queries)
        {
            result.Add(GetContainsCount(strings, q));
        }
        return result.ToArray();
    }

    static int GetContainsCount(string[] arr, string q)
    {
        List list = new List(arr);
        int result = list.Count(x => q.Contains(x));
        return result;
    }