본문 바로가기

분류 전체보기59

Android 간단한 RecyclerView 사용법 RecyclerView를 사용해보자. 참고로 이 예제는 View Binding을 사용하였다. 최종 결과물을 미리 보자면 아래와 같다. 1. RecyclerView가 추가될 위치에 삽입하기 먼저, xml 파일 상에서 원하는 위치에 RecyclerView를 추가한다. 나는 mainactivity에 추가할 것이기 때문에, activity_main.xml에 recyclerview를 아래와 같이 추가하였다. 2. 하나의 Row 디자인 만들기 RecyclerView 내부에 보여질 열(Row) view의 xml을 만들어 주자. 이 예제에서는 row_item.xml에 해당 파일을 만들어 주었다. 위 xml의 디자인은 아래와 같다. RecyclerView는 위 디자인의의 열에 적절한 값이 들어가고, 이것이 반복되는 꼴이.. 2022. 5. 24.
Next permutation, 다음 순열 구하기 어떤 순열이 주어져 있을 때 다음 순서의 순열을 구하는 알고리즘이다. 참고로 여기서 말하는 순서는 어떤 요소들로 순열을 만들고 이 순열들을 사전 순서대로 정리하듯 정렬하였을 때를 기준으로 한다. 예를 들어 어떤 1, 2, 3을 가지고 모든 순열을 만들고 이를 사전 순서대로 정리하면 아래와 같다. 123 132 213 231 312 321우리가 하고자 하는 것은 어떤 순열이 주어졌을 때 다음 순열을 구하는 것이다. 예를 들어 231 이 주어졌을 경우 312를 반환하는 것이다. Algorithm 어떤 순열을 arr라고 하자. arr[i] arr[i] 인 j 중 가장 큰 j를 구한다. swap(arr[i],arr[j]).. 2022. 4. 4.
Flutter Clipboard 다루기 Flutter에서 text를 클립보드로 복사하고, 클립보드의 text 값을 가져오는 방법을 알아보자. Clipboard로 text 복사하기 Flutter를 사용하여 어떤 텍스트를 클립보드로 복사해보자. 이를 위해 Clipboard 클래스의 setData를 사용할 것이다. setData 인자 ClipboardData data 반환값 Future flutter/services.dart를 import 한 후 원하는 시점에 텍스트를 클립보드로 복사하는 코드를 호출하면 된다. // import import 'package:flutter/services.dart'; // copy to clipboard Clipboard.setData(ClipboardData(text: 'text to copy.. 2022. 3. 10.
Flutter의 ListView.builder() 사용법 ListView.builder의 간단한 사용법 ListView.builder에 몇 개의 항목을 만들 것이고 몇 번째 항목에는 어떤 View를 그려주자라는 것을 알려주어야 한다. itemCount가 이 몇 개에 해당하고, itemBuilder가 어떤 View를 그려주자 라는 것에 해당한다. itemCount : int값이며 ListView 항목들의 총개수에 해당한다. 단, 주어지지 않으면 무한히 항목을 만든다. itemBuilder(BuildContext ctx, int idx) : idx번째에 해당하는 항목에 그려질 View를 반환하는 함수이다. idx는 0부터 시작한다. 아래의 코드는 각 항목에 "Content Number"에 이어 해당하는 숫자가 적힌 Text를 가지는 ListView를 그릴 것이다... 2022. 1. 26.
Python unittest module 사용 프로그램을 개발할 때 Unit test를 수행하는 경우가 많다. 처음 프로그래밍을 시작하였을 때에는 오류가 생겼을 때 프로그램 중간에 관련 출력문을 추가하여 함수의 출력이나 결과를 확인하는 경우가 많다. 하지만, 프로그램이 살짝만 복잡해져도 어느 함수에서 오류가 발생하였는지 추적하는 것이 힘들어지게 된다. Unit test를 하는 경우 어느 함수 혹은 메소드가 통과하여야 하는 테스트들을 작성해 놓은 뒤 테스트를 수행하게 된다. 테스트 케이스를 잘 작성해 놓은 경우 테스트 결과를 확인하는 것으로 어느 함수가 경우에 대해 동작하고, 제대로 동작하지 않는지를 볼 수 있다. python에서는 이를 unittest 모듈을 사용하여 쉽게 수행할 수 있다. unittest 모듈 간단하게 사용하기 unittest.Te.. 2021. 12. 23.
Python os.fork, os.wait 멀티프로세싱 3 학부에서 Linux 시스템 프로그래밍을 배울 때 멀티프로세싱을 다루었었다. 이때 fork, wait의 system call을 사용하였었다. 그런데 이 system call들을 python에서도 사용할 수 있다. 이 systam call들은 os 모듈을 사용하여 접근할 수 있다. 이를 이용하면 파이썬에서도 c에서와 유사하게 multi-processing을 할 수 있다. 단, Ms Windows처럼 이 system call들을 지원하지 않는 운영체제에서는 사용할 수 없다. fork c에서 fork는 fork를 사용한 시점에서 새로운 프로세스를 생성하는 system call이다. fork 이후에는 기존 프로세스와 새롭게 생성된 프로세스 모두에서 이후 코드들이 실행되게 한다. python에서의 fork 도 이와.. 2021. 11. 19.
lseek, pread, pwrite 사용하기 lseek을 이용하면 파일의 offset을 조작하여 이후 offset이 설정된 위치부터 read, write를 할 수 있게 해준다. 즉, 원하는 곳에서부터 읽고 쓸 수 있게 된다는 것이다. lseek 주어진 file descriptor의 file offset을 조작한다. #include off_t lseek(int fd, off_t pos, int whence); lseek 인자 int fd : 조작할 파일과 관련된 file descriptor다. off_t pos : 이동할 file offset의 위치이다. 정확한 위치는 whence의 값에 따라 달라진다. int whence : SEEK_SET, SEEK_END, SEEK_SET 중 하나이다. 반환값 새로 설정된 offset을 반환한다. 실패한 경우 .. 2021. 11. 17.
open, read, write, close 사용하기 리눅스 상에서 사용가능한 파일 입출력 관련 시스템 콜을 소개한다. open, read, write, close는 c를 처음 배울 때 사용하던 파일 관련 함수인 fopen, fread, fwrite와 유사하고, 이들은 사실 이 시스템 콜을 사용한다. open 파일 경로와 flag, mode를 입력으로 넣어주면 file descriptor를 전달하여 준다. fcntl.h 헤더에 포함되어 있다. #include int open (const char *name, int flags) int open (const char *name, int flags, mode_t mode) open 인자 const char* name : 파일의 절대 경로 혹은 상대 경로이거나 파일 이름이다. int flags : 반드시 O_RD.. 2021. 11. 15.
'윈도우 11'에서 바탕화면 휴지통 없애기 Windows 11로 업그레이드를 하였다. 클린 설치를 하였더니 이전에 하였던 모든 설정들을 다시 해주어야 했다. 이 글은 그중 하나였던 '바탕화면의 휴지통 없애기'에 대한 글이다. 설정 > 개인설정 > 테마 > 바탕화면 아이콘 설정으로 들어가 준다. 그리고 휴지통을 '체크해제' 한 후 '적용'을 누르면 된다. 1. 설정 Window + x를 누르면 아래와 같은 모습을 볼 수 있는데, 여기서 '설정'을 선택하자. 2. 개인설정 > 테마 개인설정을 선택한 후 테마를 선택해준다. 3. 테마 > 바탕화면 아이콘 설정 바탕화면 아이콘 설정을 클릭해주자. 4. 휴지통 체크 해제 후 적용 위에서 바탕화면 아이콘 설정을 클릭하면 아래 창이 뜬다. 이 창에서 '휴지통'의 체크를 해제하고 '적용'을 눌러준다. 이후 바탕.. 2021. 11. 1.
wait, waitpid의 사용 Parent process는 wait, waitpid를 사용하여 자신이 생성한 child process들이 종료되기 전까지 기다려 줄 수 있다. 또, 자식들이 어떻게 종료되었는지와 child process가 종료 할 때의 반환한 값도 알 수 있다. wait wait의 사용법을 먼저 알아보자. wait는 아래와 같은 모습으로 사용할 수 있다. wait(int* status) 인자 status : 종료 상태를 담을 포인터이다. 받을 필요가 없다면 0을 입력한다. 반환 값 pid : 성공시 종료된 child process의 pid 값 -1 : 실패시 -1 wait는 child process가 종료될 때까지 기다렸다가 child process가 종료되면 종료된 child process의 값을 반환한다. 만약 실.. 2021. 10. 19.