[Flutter] ‘play() can only be initiated by a user gesture ‘ 해결방법

Flutter webview (Android) 에서 동영상을 재생 할 때
‘play() can only be initiated by a user gesture’ 라는 오류가 발생

Android Webview 에서는
‘webviewSettings.setMediaPlaybackrequireUserGesture(false)’
로 해결 할 수 있음

Flutter 에서는 Webview의 속성에
‘initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,’
를 추가해 해결 할 수 있음.

 WebView(
                  initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
                  javascriptMode: JavascriptMode.unrestricted,
                  javascriptChannels: setJavascriptChannels(), 
                  ...

[Node.js] Error: Could not symlink

환경 : Mac , iTerm
오류 메세지 : Error: Could not symlink

개요 : brew 를 이용해 node.js 를 설치하는 과정에서 brew link node 시 ‘Warning :You have unlinked kegs’ 발생
이후 brew link –overwrite node 를 하니 ‘Error: Could not symlink’ 발생

해결 방법 : (사용자 계정명 -> myacc 라고 가정)

1. sudo chown -R myacc /usr/local 호출
2. brew link –overwrite node 하면

정상적으로 link가 됨

3. 이후 brew link node 를 입력하여 다시 한 번 체크
4. brew reinstall node 를 입력하여 node 재설치
5. 설치 확인

정상 설치 확인.

[Android] Could not initialize class org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetKt

안드로이드 스튜디오 4.0 업데이트 후 발생한
Could not initialize class org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetKt 오류.

안드로이드 스튜디오의 코틀린 버전과 build.gradle (프로젝트용, app용 아님)의 코틀린 버전이 달라 발생하는 문제

Tool – Kotilin – Configure kotiln plugin updates 에서 버전을 확인하고

build.gradle 에서 버전을 수정해주면 해결

[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;
    }