일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Qt OpenGL
- Java
- 이륜차
- 안드로이드
- 엑티브엑스
- vuejs
- 바이크
- 잡담
- 재귀함수
- HTML
- 디자이어HD
- QT
- android SAF
- 스타2
- 윈도우7
- 자바
- 오토바이
- FFI
- c언어
- 마영전
- 스타크래프트2
- 정성하
- 양평역
- Qt4
- 자료구조
- QTcpServer
- 알람프로그램
- Qt 소켓프로그래밍
- 고속도로
- qt 설치
- Today
- Total
목록프로그래밍 (173)
프로그래밍과 잡담
초창기의 개방형 OS가 아닌 점점 애플 iOS 처럼 폐쇄적으로 가는거 같다. 왜 그러냐 하면은 점점 저장소에 대해서 iOS 처럼 바뀌고 있다. 최근 타겟 버전을 29버전 이상으로 강제하고 있다. 이 버전부터는 앱이 내부 폴더 이외의 장소에는 접근을 할 수 없게 된다. 즉, 안드로이드 앱의 앱 내부 저장소는 /data/data/앱이름 으로 되어 있는데 이 아래의 정보만 접근이 가능하다. 그외에 공용 폴더는 접근이 가능하다. 그림, 동영상 이딴거 말이야. 예전에는 폰의 내부저장소(/sdcard), 외부저장소( /storage/123-123) 에 바로 접근을 할 수 있다. 근데 지금은 접근을 할려면 Storage Access Framework 를 써야한다. 그리고 안드로이드 11버전에선 저장소의 루트 폴더에 ..
까먹기 전에 글을 써둬야지.. Spring 에서 외부파일을 이용해서 JDBC 셋팅하는 방법 일단 지금 내가한 방법은 1. src/main/resources 아래에 property 폴더를 생성 2. 폴더 내에 db.properties 파일을 생성 3. 아래와 같이 셋팅 db.driverClassName=oracle.jdbc.driver.OracleDriver -- db에 맞춰서 셋팅 db.url=jdbc:log4jdbc:oracle:thin:@{DBURL}:{DBssid} -- 오라클일 때는 이렇게 하고 다른 db면 그거에 맞게 db.username={LoginID} db.password={LOGIN PASSWORD} 4. root-context.xml에 아래와 같이 셋팅 5. 끗
구글을 찾아봐도 내가 검색을 못하는건지 잘 안나오는거 같음. 내가 원하는건 컴포넌트의 값이 변경될 경우, 체크될 때 값을 체크해서 뭔가를 띄워주거나 하고 싶은건데 찾아도 watch를 검색하면 프로퍼티를 이용하는 방법만 나오더라. 그래서 대충 아무거나 해보던 와중에 발견한거임. 그냥 mounted 에서 this.$watch 함수를 이용해서 내가 원하는 데이터를 셋팅해주고 콜백 넣으니까 되더라 ㅋ 사실 제대로 이해하고 만든게 아니라 그냥 참조만 할것 template: '' data: function(){ return { data1 : "", Data: { name: "" } } }, mounted: function () { this.$watch('Data.name', function (newVal, old)..
template에 radio 버튼이나 checkbox 만들고 label for로 라벨클릭시 선택되게 할려고 할 때 아래처럼 해줘야 인덱스가 id에 들어감. 예제> nodejs에서 쓸 경우 i는 for문 변수 idx는 외부 변수 node.js에서 하면 편하다. 예제> node.js가 아닌 html에서 쓸 경우 template = ' \ \ \ \ ' 빨간색 작은따옴표( ' )는 template를 덮는 부분 파란색 \' 는 변수를 또는 추가로 붙일 문자에 넣음 보라색은 + 는 외부 변수 추가 용도 검은색 + 는 변수와 문자열을 연결하는 용도
ust는 다른 언어를 위한 인터페이스가 존재한다. 구조는 C 인터페이스를 사용한다. 그에 대한 사용법은 아래와 같다. Rust에서 선언 이렇게 하면 되고 // Rust에서 다른 언어로 넘길 때 사용하는 구조체 아래의 어노테이션을 써야한다. #[repr(C)] pub struct Data{ pub int_val : i32, pub double_val: f64, // 문자열 쓸려면 이렇게 해야함. pub str_val: *const c_char } // 이건 뭐 해도 되고 안해도 됨 impl Clone for Data{ fn clone(&self) -> Data { Data { int_val: self.int_val, double_val: self.double_val, str_val: self.str_val..
인터넷 찾아보면 WPF MVVM 패턴을 구현한 거보면 대부분 이해하기 쉽다. 근데 그 예제들은 이해하기 쉬우라고 쉽게 만들어 놓은거지만 실제 사용 할려면 여러가지가 짬뽕되서 사용해야한다는거지. 일단 나도 공부하는 중이라서 여기다 적어 놓는다. 유저컨트롤 - 유저컨트롤 간의 데이터 교환을 할려면 결국 인터페이스든 이벤트든 간에 연결이 필요하다. 컨트롤A가 있는데 이건 그냥 유저를 추가하는 기능 밖에 없음. 대충 아래와 같이 생김. xaml 코드 그리고 컨트롤 B는 컨트롤 A에서 추가한 유저 목록을 표시함. 소스는 아래와 같음. xaml 하는 일은 간단함. 컨트롤 A에서 유저를 입력하면 B에 추가되서 표시되는거지. 그러면 MainWindow에서는 아래와 같이 처리함. 소스는 그냥 제외 처리한다. 그냥 유저컨..
1. 사전 준비 작업 안드로이드 SDK 설치 안드로이드 NDK 설치 ( sdk 열어서 SDK_Tools 탭에 가면 ndk 설치하면 된다. ) Rust 설치 2. 빌드 셋팅 config 파일을 만들어서 에디터로 연다. 그리고 아래와 같이 셋팅 NDK 경로는 toolchains 라는 폴더가 있는 위치를 넣으면됨 예를들어 나같은 경우는 D:\Dev\android-sdk\ndk\21.3.6528147 이렇게 되어 있음 뒤에 exe, cmd 는 각자의 os에 맞춰서 바꾸면 된다. [target.aarch64-linux-android] ar = "[NDK경로]/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android-ar.exe" linker = "[ND..
C#에서 Rust 에서 만든 메소드를 호출 하는데 예를 들어 아래와 같은걸 호출한다고 치자. // 문자열 배열을 받아서 문자열 배열을 반환하는 함수임. C#으로 따지면 string[] 이거임. // 근데 이걸 반환하기가 넘 어려움. fn foo(bar: &[*const c_char] ) -> &[*const c_char] 문제는 다른 언어에서 이걸 호출 하면 졸라 어렵다는거다. 왜냐하면 문자열 배열이란게 C언어로 치면 char** 이 거랑 비슷하다. 그러다보니 서로 통신하기가 아주 지랄맞아. 이건 Go 도 마찮가지다. 단순 문자열은 잘 가지만 문자열 배열이 들어가는 순간 지랄이 나는거야. 그냥 때려치우고 하나의 문자열로 만들어서 보낼려고 한다. 그리고 처리하는 쪽도 받은걸 잘라서 처리한 다음에 다시 하나..
C#에서는 Java의 final 과 같은 로컬변수를 고정하는 기능이 없다. 그래서 아래 처럼 제네릭 클래스를 만들어서 써야한다. 다만 이것도 단점이 있다. java의 final은 다시 new가 안돼지만 이건 new 하면 덮어 쓸 수 가 있다. 뭐 다만 이미 셋팅된 값을 변경 할려고 하면 에러나니까 그냥 대충 써야지 뭐. çlass Const { public T value { get; private set; } public Const(T data){ value = data; } }
Rust 언어는 프로그래머가 일일이 메모리 관리에 골머리를 쌓으면서 처리 안해도 돼는 좋은 언어이다. 게다가 성능도 C++와 비슷하거나 빠르다. 하지만 이 좋은 기능을 Rust 에서만 사용해서는 안됀다. C언어나 C++ 처럼 다른 언어에서도 사용 할 수 있어야, 그 언어의 진가가 발휘 할 수 있을 것이다. 왜냐 일반적으로 가비지 컬렉션을 사용하는 자바나 C# 또는 인터프리터 언어들(python, ruby 등등등)은 바이너리 언어 비해서 성능이 떨어지는 편이다. 요즘은 많이 좋아졌다고는 하지만 1분 1초가 중요하게 생각하는 분야에서는 여전히 C/C++이 대세이다. 당연하게도 rust에서는 이 기능을 제공하고 있다. 콘솔을 열고 아래와 비슷한 rust 프로젝트를 생성한다. $cargo new myfunc 그..