일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UI
- 소켓프로그래밍
- 파일입출력
- vscode
- ws2_32.lib
- Mat 변수
- 문자열파싱
- 진수변환기
- Kotlin
- FTP
- 연결리스트
- 자료구조
- 코틀린
- 콘솔 키보드 이벤트
- 문자열다루기
- 문자열 다루기
- background service
- 딕셔너리
- dictionary
- C
- InfluxDBClient
- flutter
- dart
- foreground service
- InfluxDB
- socket
- vs code
- Android
- 메모리반환
- Linked List
- Today
- Total
목록전체 글 (33)
무슨 일로 C 하셨습니까?
안드로이드 백그라운드 서비스를 만들 일이 생겼다. Ui는 Ui대로, 서비스는 서비스 대로 동작 하고 Ui가 죽어도 백그라운드에서 계속 서비스 하는 애플리케이션을 만들어야한다. 안드로이드 OS가 최신화 될수록 백그라운드 서비스를 개발하기 어려워졌다고 하는데 일단 만들어 보겠다. 테스트 개발은 API 28, Android 9.0 (Oreo) 버전으로 진행하겠다. 1. Thread 기본화면에서부터 시작하겠다. 사실 이번에는 Ui는 변경할 건 크게 없다. 일단 첫번째 목표는 Ui와 비동기적으로 비동기적으로 돌아가는 애플리케이션이다. void f(){ for(int i=0;i
프로젝트를 준비했다면 이제 직접 그려보자 UI를 그려보기 전에 일단 기본 구조부터 파악해보자 이전에 생성한 프로젝트를 들여다 보자 프로젝트 구조는 다음과 같다 lib 폴더 아래 main.dart 파일이 있는데 해당파일이 프로그램의 시작점이라고 보면 된다. main.dart 파일을 들여다보면 세 클래스가 정의되어 있는 것을 볼 수 있다. 여러 언어로 개발을 해본 경험으로 미루어 보아 세 클래스가 실질적으로 UI를 그리는 클래스들 ( Window, Frame, Form, Activity 등 )로 유추해 볼 수 있겠다. 크게 Stateless Widget과 Stateful Widget으로 구분할 수 있겠다. 우선 Widget을 알아보자 Flutter에서 모든 요소는 Widget이다. 레이아웃부터 텍스트 버튼까..
요새는 PC는 게임이나 개발할 때를 제외하고는 거의 볼 일이 없는 것 겉다 쇼핑을 하거나 유튜브를 보고 인터넷을 해도 핸드폰을 더 많이 찾게된다. 핸드폰 성능도 이제 PC못지 않게 발전했고 어쩌면 얼마 않있어서 핸드폰으로 개발하게 될 것 같다. 이미 하고 있을 수도?? 핸드폰의 사용량은 증가하는 반면 PC의 사용량이 줄어드는 걸 보면 머지않아 PC프로그램 보다 모바일 프로그램을 더 많이 개발하게 되지 않을까 그런 기념으로 안드로이드 앱 개발이나 해야겠다 마침 있었음 하는 앱도 있었다 안드로이드 스튜디오 쓰면 간단한데 너무 많이 써봐서 지겹기도 하고 새로운 언어도 써 볼겸, VS Code에서 개발하면 간지도 나기 때문에 VS Code에서 많이 쓰는 Flutter로 앱을 개발해보자 (android, ios ..
앞서 만든 파일 입출력 함수를 가지고 나만의 config 파일을 만들어보겠다. 일단 설정 값들을 가질 구조체를 만든다 typedef struct _Config { int num; char* ip; }Config; 설정 값들이 뭐가 들어갈지는 마음껏 넣어주면 되겠다. 더보기 좀더 동적으로 활용하고 싶다면 2020.10.13 - [C -이걸 굳이?/유틸리티] - [C] 자료구조::딕셔너리 (Dictionary) 지난번에 만든 딕셔너리를 설정 값으로 넣어주면 설정 데이터를 동적으로 지정할 수 있을 것이다. config 구조체에 파일로 저장된 데이터들을 읽는 함수를 만들어보자 int Config_Read(Config* config, char* path) { FILE* stream = NULL; errno_t n..
프로그램 실행 중에 변수에 저장되는 데이터는 지역 변수던 전역 변수던 동적할당이 되었던 정적할당이 되었던 결국 프로그램이 종료되면 데이터도 사라지게 된다. 내가 저장해 놓은 데이터를 다음에 실행할 때에도 유지하고 싶다면 바로 파일 입출력을 이용하면 되겠다. 솔직히 DB도 파일 입출력을 베이스로 만들어진게 아닐까 생각한다. 간단하게 파일을 쓰는 함수를 만들어 보겠다. #include #include void FileWrite() { char* filename = "test1.txt"; FILE* stream = NULL; fopen_s(&stream, filename, "w+"); char* data = "data"; int len = fprintf(stream,"%s\n",data); printf("wr..
송신부가 디렉토리를 전송하면 반대쪽 수신부에서는 디렉토리 내용을 받아서 사용자가 원하는 파일을 선택할 수 있도록 UI로 구현해야한다. 디렉토리 내용을 전송하는 함수를 만들었고, 콘솔 창에서의 UI를 만들었으니 두가지 함수를 합쳐서 구현해보자. 우선 디렉토리에 포함된 파일을 UI에 그릴 수 있도록 문자열 형태로 변환시키는 함수를 만든다. char* File2String(filedata file_) { // [ ] n: | filename | extension | size char temp[100]; char* _extension = FileExtension(file_); sprintf(temp, "%2d: | %16.16s | %6s | %-d", file_.index, file_.name, _extens..
안드로이드나 mfc, wpf 처럼 멋진 GUI를 만들면 좋겠지만 C에서는, 뭣보다 내가 원하는 바는 콘솔창에서 UI를 구현하는 것이다. 옛날 DOS 감성으로 문자로 UI를 그려서 구현하도록 하겠다. #include #include #include typedef struct _Painter { struct _Line* line; }Painter; typedef struct _Line { char* data; struct _Line* next; }Line; 아무래도 UI를 구현하게 된다면 고정적으로 출력되는 화면(문자열)이 존재할 것이다. 그러한 화면을 저장하기 위해 리스트 형식의 자료형을 선언하겠다. void Painting(Painter Paint_) { system("cls"); printf("파일 및..
일을 하다보니 WPF에서 InfluxDB에 연결해서 데이터를 받아올 일이 생겼다. MYSQL을 생각하며 조금 검색해보면 쉽게 구현할 줄 알았는데 죄다 영어글에 버전이 1.7이니 1.8이니 2.0이니 하는 바람에 정신이 혼미해졌다. 혹여라도 다음에 찾아볼 일이 있으니 글로 남겨본다. ( 참고로 이 글은 1.8버전이다 ) InfluxDB는 관계형 데이터베이스가 아닌 시계열 데이터 베이스로 어쩌구 저쩌구 자시구 하는 이야기는 넘어가고 기본만 알고가자 Inlfux Data Base MySQL Bucket Database Measurements Table Tag-Key key Field-Key key 아닌 놈들 이제 WPF에서 InfluxDB에 연결해서 데이터를 읽어보도록 하겠다. 시작은 관련된 API를 다운받아..