본문 바로가기

전체 글

(211)
Visual Studio Code : 리모트 개발 환경 원격에 있는 파일들을 사용하여 개발을하고싶을때 Remote Development 확장 프로그램을 이용하면 된다. 아래와 같은 환경을 지원한다. - WSL - SSH - Container (Docker) SSH 환경 사용하기 - 로컬환경에서의 SSH의 공개키를 리모트 환경 인증에 추가한다. ( .ssh/id_rsa.pub -> .ssh/authroized_keys ) 1. 커맨드 팔레트에서 Remote: Connect to Host... 실행 2. 연결 대상 입력 : 유저@호스트, 유저@도메인@호스트 3. 연결 완료 후 Open Folder -> 대상 workspace 절대 경로 입력. 다운하지 않아도 실시간으로 수정할 수 있기에 좋은 설정이라고 생각함.
노트북을 위한 리눅스 전원관리 : TLP 기본적으로 리눅스 DE를 사용하면 자체적으로 전원관리가 딸려오기는 한다. 하지만 본인의 씽크패드에는 배터리 칼리브레이션이라던가 쓰레숄드등이 지원가능하기에 찾아보면 TLP(Linux Advanced Power Management)이란게 있다. TLP는 알아서 자동 전원 관리이다, 즉 Just Install it and forget it. 설치만하고 실행만하면 알아서 해주겠다. 이말. 하지만 또 다양한 커스터마이징이 가능한 것도 장점. 기본적으로 설치 후 씽크패드일 경우엔 tlp-stat -d 커맨드로 내 노트북/커널에 추천되는 애드온들이 주르륵 나오기 때문에 추가적으로 설치해준다. 이렇게만 하면 기본적으로 설정을 끝이다. TLP 설정방법 몇가지를 올려본다. 아래 읽는것보다 공식 문서를 참고하는걸 추천ㅎ *..
안드로이드 VPN Service를 이용해서 HTTPS(SSL) MITM 해보자 TL;DR : 매우 제한적이다. 앱에 따라 적용 가능 여부가 다르다. 로컬에서 작동하는 VPN Service를 통해 HTTPS Proxy로 포워딩하여 MITM! 대충 그려보자면 위 그림과 같은데 VPN으로 하려는 이유. 첫째 프록시 적용을 일부 앱에서 하고 싶다, 둘째 하지만 해당 앱이 별도의 프록시 설정을 지원하지 않아... 셋째 기존 안드로이드에서 제공하는 방식의 프록시 설정은 매우 불편하고 시스템-와이드로 적용 되기 때문에 프록시가 불필요한 대상을 포워딩하여 오버헤드가 발생한다는 점이다. 만들어보자... 우선 Vpn Service를 만들어주고, 해당 서비스에 연결되는 TUN 인터페이스를 만들고 HTTP CONNECT로 프록시 서버에 넘겨주면 된다. 말은 쉽다.. 하지만 언제나 그렇듯, 이미 다른 유..
electron-vue 에서 sass 전역변수 사용하기 공식 Document 에서는 아래와 같이 하라고 하는데, 필자 환경에서는 작동하지 않는다. * .electron-vue/webpack.renderer.config.js 의 vue-loader 수정 loaders: { sass: 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1&data=@import "./src/renderer/globals"', scss: 'vue-style-loader!css-loader!sass-loader?data=@import "./src/renderer/globals";' } 무엇이 문제인지는 본질적으로 확인하지 못했다. 해결을 위해 직접 SASS 의 Loader를 아래와 같이 수정해주면 된다. { test: /\.scss$..
안드로이드 MediaProjection 에 ImageReader로 버퍼 읽을시 검은 화면 우선 5.0(API 21) 이상에서는 대부분~ 잘된다. 하지만 특정 환경(대부분 예뮬레이터들)에서 MediaProjection을 ImageReader로 통해서 Surface를 읽다 보면 아무 데이터가 없거나 NULL일 수 있다. 이는 실기기 안드로이드든, 예뮬레이터 환경에서 (물론 5.0도 이상일 수 있다!) openGLES 호환(EGL_RECORDABLE_ANDROID 값이 없는 등.. )이 좋지 않아서 발생하는 문제이다. 그래서, 우리는 다른 방법으로 처리해야한다. 바로 구글의 비공식 테스트 앱 (grafika)를 살펴보고 구현하면 된다. 우선 grafika의 gles 을 모드 임포트 해준다. 그리고 VirtualDisplay가 사용할 수 있는 Surface를 만들어 준다. eglCore = EglC..
[Rust] 369게임 //three six nine. 369 game fn main() { for n in 1..100 { let mut cur_num: u32 = n; let mut clap_cnt: u32 = 0; while cur_num > 0 { let cur_x:u32 = cur_num % 10; clap_cnt += match cur_x { 3 | 6 | 9 => 1, _ => 0 }; cur_num /= 10; } if clap_cnt > 0 { for _c in 0..clap_cnt { print!("clap! "); } print!("\n"); } else { println!("{}", n); } } } 연습
[JAVA/Kotlin] Polygon(도형)의 내각 구하기 for (step in 0 until dimens) { val p0 = cords[step] val p1 = cords[(step+1) % dimens] val p2 = cords[(step+2) % dimens] val a = (p1.x - p0.x).pow(2.0) + (p1.y - p0.y).pow(2.0) val b = (p1.x - p2.x).pow(2.0) + (p1.y - p2.y).pow(2.0) val c = (p2.x - p0.x).pow(2.0) + (p2.y - p0.y).pow(2.0) val angle = acos(( a + b - c) / sqrt(4 * a * b)) * 180.0 / Math.PI } dimens는 면의 개수 cords는 dimens 개의 Coordinate..
OpenCV UI 오브젝트 검출 개발 환경은 아래와 같다. OpenCV 4.2 (Built for Android with NONFREE) Android 10 내가 검출하고자 하는 데이터는 실제(Real Object)가 아니고 안드로이드의 Display에서 특정 UI 컴포넌트를 검출하는 작업이 필요했다. 먼저 시도한 방법은 OpenCV의 TemplateMatching. 하지만 여러 디바이스 환경에서의 UI 컴포넌트의 사이즈와 변형(반응형 디자인)으로 인해 TemplateMatching의 특성상 검출하려는 오브젝트의 크기가 검출 대상 소스에서의 크기는 같아야 하고 Multi-scaling의 방식이나 MatPyramid 등 다양한 scale-case 를 반영해도 변형된 데이터에서는 검출이 힘들었다. 그래서 시도해본 것은 SURF, SIFT ..