분류 전체보기

    printf + String.format (%%%을 보고 당황했다면..)

    %%% 다음과 같이 해괴망측한 코드가 있다 %가 무려 세번이나 쓰였다 int n = 2; int r = 1; int x = 3; System.out.printf(String.format("%%2d | %%%dd\n", n), r, x); 다음과 같은 이상한 코드는 format에 의해 1. %% → %으로 바뀌고 System.out.printf(String.format("%2d | %%dd\n", n), r, x); 2. %d자리에 n이 들어가게 된다 System.out.printf("%2d | %2d\n", r, x); 최종적으로 다음이 출력된다 (%2d는 2자리 보다 작으면 공백을 추가하여 출력이 됨을 의미) 1 | 3 %%%을 사용하면 공백을 변수로 조절할 수 있게된다

    Django에 https 설정하기 - sslserver

    sslserver를 설치한다 pip install django-sslserver 인증서를 발급한다 openssl genrsa 2048 > django.key openssl req -new -x509 -nodes -sha256 -days 365 -key django.key > django.crt 설치된 앱에 sslserver를 추가한다 인증서를 이용하여 서버를 실행시키면 된다 python manage.py runsslserver --certificate django.crt --key django.key 0:8000 다만 공인된 인증서가 아닌 개인이 발급한 인증서 이므로 도메인에 접속하면 경고를 보낸다 어차피 본인이 만든 사이트니까 그냥 무시하고 들어가주면 된다

    안드로이드 [패스트캠퍼스 챌린지 최종 후기]

    안드로이드에 대한 지식이 급한 상황이었다 단기간에 배울수 있는 앱개발 프로세스가 필요했다 안드로이드 개발언어인 코들린과 개발 툴인 안드로이드 스튜디오에 기본을 배우기 위하여 한달동안 패스트캠퍼스의 Android앱개발올인원패키지Online을 수강하였다 공부를 단기간에 해야되는 상황이고 동기부여도 할겸 환급챌린지로 신청하였다 해당 강의의 파트를 크게 나누면 코틀린, 안드로이드 기본, 안드로이드 프로젝트로 나눌 수 있다 각 파트에 대한 강의 후기를 작성해 보겠다 1. 코틀린강의 해당 강의에서는 코트린의 기본에 대해 배운다 다른 프로그래밍 언어를 처음 배울 때 처럼 기본적인 문법(변수, 자료형, 메소드, 반복문, Collection 등)부터 시작하여 객체지향 기초(클래스, 상속 등)까지 배운다 강의의 난이도는 ..

    안드로이드 - Network [패스트 캠퍼스 챌린지 30일차]

    서버와 통신하는 방법 - 해당 url로 요청한다 - 인증정보를 보낸다 - JSON 형식을 사용해서 data를 보낸다 간단하게 서버에 요청을 보내고 응답을 받아서 데이터를 출력해보겠다 먼저 manifest에 퍼미션을 추가해준다 테스트 서버의 url주소를 URL객체에 담는다 요청은 GET 방식으로, 헤더에 Content-Type을 application/json으로 추가하였다 요청이 잘 된 경우 데이터를 받아서 출력해보겠다 데이터를 주고받을 때 json을 그대로 보내는 것이 아니다 우리가 알아들을 수 없는 바이트 형식으로 주고받기 때문에 우리가 알 수 있는 형식으로 변환해 주어야 한다 InputStreamReader으로 InputStream을 UTF-8 형식으로 읽고 BufferedReader로 버퍼를 이용해..

    안드로이드 - Async [패스트 캠퍼스 챌린지 29일차]

    Async Async를 비동기 처리를 할 수 있으며 주로 네트워크 작업을 할 때 많이 사용된다 간단하게 Async를 이요하여 ProgressBar를 구현해 보겠다 우선 간단하게 화면을 구성해 주었다 다음으로 AsyncTask를 상속받는 클래스를 만들어 주었다 AsyncTask는 3개의 타입 변수를 받는다 차례대로 params, progress, result를 받으며 params는 doInBackground에서 사용할 타입, progress는 onProgressUpdate에서 사용할 타입, result는 onPostExecute에서 사용할 타입이다 doInBackground는 쓰레드가 할 작업이며 onProgressUpdate는 메인쓰레드로 전달할 작업이며 onPostExecute는 작업을 다 마친 후 할..

    안드로이드 - Realm [패스트 캠퍼스 챌린지 28일차]

    Realm Sharedpreference보다 더 복잡하게 데이터를 관리할 수 있는 관계형 데이터베이스이다 따로 설치를 해줘야 한다 공식 사이트를 참고하자 공식사이트 Project의 dependencies에 classpath를 추가해주고 classpath "io.realm:realm-gradle-plugin:10.8.1" Module에 플러그인을 추가해 준다 apply plugin: 'kotlin-kapt' apply plugin: 'realm-android' 플러그인 순서를 지켜줘야 한다 realm-android가 맨 아래로 가야한다 Realm 사용 Realm을 사용하려면 먼저 init해줘야한다 다음은 Realm을 초기화 할때 어떤 방식으로 초기화 할지 설정해줘야 한다 RealmConfiguration을..

    안드로이드 - Sharedpreference [패스트 캠퍼스 챌린지 27일차]

    Sharedpreference 안드로이드의 데이터베이스중 하나이다 Key-value 방식으로 데이터를 저장한다 간단한 데이터를 저장하기 위한 용도로 하드한 데이터베이스 시스템과는 거리가 멀다 Sharedpreference 구현 Sharedpreference을 가져와서 만들어주면 된다 Sharedpreference를 여러개 만들 수 있기때문에 각각을 구분해주기 위해서 첫번째 인자로 Sharedpreference의 이름을 설정해야한다 두번째 인자로는 모드를 넣어준다 모드의 종류에 대해 간단하게 알아보겠다 MODE_PRIVATE : 생성한 application에서만 사용 가능 MODE_WORLD_READABLE : 다른 application 사용 가능 -> 읽을수만 있다 MODE_WORLD_WRITABLE :..

    안드로이드 - TabLayout [패스트 캠퍼스 챌린지 26일차]

    TabLayout Tablayout도 gradle에서 추가해줘야 된다 implementation 'com.google.android.material:material:1.4.0' Tablayout은 tab을 담당하는 TabLayout, 화면을 담당하는 ViewPager, Tablayout과 ViewPager를 연결해주는 Adapter로 구성되어 있다 Tablayout 구현하기 xml에 TabLayout, ViewPager를 추가해준다 먼저 탭을 구현해 보겠다 결과 이제 뷰 페이저를 구현해 보겠다 페이저에 여러 화면을 넣기 위해서는 어댑터를 사용한다 페이저를 위한 어댑터를 만들어 주겠다 FragmentStateAdapter를 상속받고 FragmentManager와 Lifecycle를 사용해보겠다 어댑터 안에..

    안드로이드 - Recyclerview2 [패스트 캠퍼스 챌린지 25일차]

    레이아웃 매니저 Recyclerview는 레이아웃 매니저를 이용하여 여러 형태의 레이아웃을 만들 수 있다 세로 스크롤이 되는 수직 레이아웃은 지난 포스트에서 했으니까 다른 레이아웃을 구현해 보겠다 가로 방향으로 스크롤이 되는 수평 레이아웃 이다 다음은 그리드 레이아웃이다 다음은 불규칙 그리드 레이아웃이다 뷰의 높이에 따라 타일이 불규칙적으로 배치된다 클릭 리스너 각 아이템뷰에 클릭 리스너를 달아보겠다 뷰 홀더에 아이템뷰가 들어오니까 뷰 홀더에 클릭리스너를 달아 보겠다 간단하게 아이템뷰를 클릭하면 뷰에 있는 내용을 출력하고 싶은데 뷰 홀더에는 리사이클러뷰의 포지션 정보가 들어있지 않아서 원하는 데이터에 접근할 수 없다 포지션 정보를 알아내려면 bindingAdapterPosition을 사용하면 된다 포지션..

    안드로이드 - Recyclerview [패스트 캠퍼스 챌린지 24일차]

    RecyclerView ListView의 개선판이며 ViewHolder를 포함하고 있다 ListView보다 유연하여 수직 스크롤뿐만 아니라 수평 스크롤도 가능하고 그리드 레이아웃이 가능하다 Recyclerview 만들기 Recyclerview도 gradle에서 implementation해줘야 한다 xml에 Recyclerview추가해주고 액티비티에서 Recyclerview에 넣을 데이터를 간단하게 후딱 만들어 주었다 Recyclerview 어댑터를 만들어 주겠다 RecyclerView.Adapter를 상속받는다 RecyclerView.Adapter의 타입 변수로 뷰홀더 넣어줘야 한다 아직 뷰홀더를 만들지 않았으므로 일단 비워놨다 그럼 바로 뷰홀더를 만들어 보겠다 RecyclerView.ViewHolder..