본문 바로가기

분류 전체보기274

[GOLANG] 공부 (3) - import 패키지 > 패키지 이름은 디렉토리 경로의 마지막 이름을 사용. - import (pkg1, pkg2, ...) || import "pkg1" import "pkg2" - 첫 문자가 대문자로 시작 > 패키지를 사용하는 곳에서 접근 가능한 exported name math.pi : cannot refer to unexported name math.pi mathPi : 3.141592653589793 *함수 - 매개변수 타입은 변수명 뒤에 명시 - x int, y int > x, y int - 하나의 함수는 여러 개의 결과 반환 가능 - 반환 값에 이름을 부여하면 변수처럼 사용 가능, 반환 값을 지정하지 않고 return해도 알아서 반환 package main import "fmt" func .. 2020. 10. 29.
[GOLANG] 공부 (2) * reflection : 실행 시점(runtime)에 인터페이스나 구조체 등의 타입 정보를 얻어내거나 결정하는 기능 - reflect.TypeOf(변수명이나 구조체명) > Name(), Size(), Kind() / 구조체 : FieldByName(필드명), FieldByName(필드명).Get(태그명) - reflect.ValueOf(변수명이나 구조체명) > Type(), Kind(), Float() ... - reflect.ValueOf(변수명이나 구조체명) > 포인터 : Elem(), Elem().Int() (값을 다시 얻어와 타입에 맞게 가져옴) // 인터페이스 : Int() (바로 가져옴) * reflection을 사용하여 동적으로 함수 생성 방법 > 타입별로 함수 구현 방지 var hello.. 2020. 10. 29.
[GOLANG] 공부 (1) * 클로저를 고루틴으로 실행할 때 반복문에 의해 바뀌는 변수는 반드시 매개변수로 넘겨줌 ! > 고루틴은 반복문이 완전히 끝난 다음에 생성됨 * 채널은 값을 주고 받는 동시에 동기화 역할까지 수행 * 동기 채널은 보내는 쪽에서는 값을 받을 때까지 대기하고, 받는 쪽에서는 채널에 값이 들어올 때까지 대기함 > 동기 채널을 활용하면 고루틴의 코드 실행 순서 제어 가능 * 채널에 버퍼를 1개 이상 설정하면 비동기 채널이 생성됨 (asynchronous channel) done := make(chan bool, 2) //버퍼가 2개인 비동기 채널 생성 * 비동기 채널은 보내는 쪽에서 버퍼가 가득 차면 실행을 멈추고 대기하며 받는 쪽에서는 버퍼에 값이 없으면 대기; * 비동기 채널을 사용할 때는 실행 순서나 채널 .. 2020. 10. 29.
[ANDROID] camera preview frame byte array to bitmap public void onPreviewFrame(final byte[] bytes, final Camera camera); 위의 onPreviewFrame에서 byte array 데이터를 bitmap 으로 변환하는 방법은 Camera.Parameters parameters = camera.getParameters(); YuvImage yuv = new YuvImage(bytes, parameters.getPreviewFormat(), APP_PREVIEW_WIDTH, APP_PREVIEW_HEIGHT, null); ByteArrayOutputStream out = new ByteArrayOutputStream(); yuv.compressToJpeg(new Rect(0, 0, APP_PREVIEW_WIDT.. 2020. 10. 19.
[ANDROID] Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug' Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug' implementation 'com.github.PhilJay:MpAndroidChart:v3.1.0' 를 불러와 쓰려고 했더니, 빌드 시 다음과 같은 에러가 떴다... 검색해 본 결과, app > build.gradle에 아래와 같이 추가해주면 빌드 성공 ! android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } } 2020. 10. 16.
[ANDROID] Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $ release apk 시, 위와 같은 에러가 뜨면서 apk가 만들어 지지 않음 build APK 후 generate signed apk 를 해주었더니 그제서야 apk 생성 2020. 10. 16.
[JAVA/Android] JNI proguard 난독화 buildTypes { release { minifyEnabled true signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 프로가드 활성화해서 apk파일을 만들고, 앱을 실행시키는 과정에서 JNI DETECTED ERROR IN APPLICATION: JNI GetJavaVM called with pending exception java.lang.NoSuchMethodError: no non-static mdethod ~~~ 라는 JNI 관련 에러가 뜨면서 앱이 죽는다.. 해결방법은 -keep public class TestClass.. 2020. 9. 23.
[JAVA] 소수점 반올림 double n = 1.23456; System.out.println(Math.round(n)); // result : 1 double n = 1.23456; System.out.println(Math.round(n * 10)/10); // result : 1.2 double n = 1.23456; System.out.println(Math.round(n * 100)/100); // result : 1.23 double n = 1.23456; System.out.println(Math.round(n * 10000)/10000); // result : 1.2346 2020. 9. 8.
[JAVA] list 내 원소 내림차순 정렬 public static class Descending implements Comparator { @Override public int compare(Float o1, Float o2) { return o2.compareTo(o1); } } Descending descending = new Descending(); Collections.sort(_arr, descending); ArrayList인 _arr의 원소들을 Log로 찍어보면 내림차순으로 정렬되어 있음.! 2020. 9. 7.
[NodeJS/MQTT] MQTT SERVER로 파일 전송하기 확실한 방법은 아니지만, 우선 적어두겠다.! client에서 server로 파일을 전송할 일이 있어서 검색한 결과 아래와 같이 하면 된다고 한다. 정말 되는지 확인한 후에 다시 글 수정을 하겠다.! MQTT.pub('my/topic', File.read('a.json')); 2019. 11. 4.