자바

Android

Android AES-128 Encryption with Random IV in Java

사실 이 문제는 회사에 들어와 가장 먼저 고민했던 문제였다. 로그인 시, 아이디와 패스워드를 암호화해 전송해야 했기 때문이다. 전에 Google Play Console 여기저기를 누르다보니 SHA 방식의 암호화를 지나치듯 본 기억이 있었다. 짧은 AES 방식 소개하지만 SHA는 복호화할 수 없는 방식이기에 AES 방식을 사용하기로 했다. AES 암호화 방식은 key 값의 길이에 따라 바뀌는데 16바이트이면 AES-128, 32바이트이면 AES-256이 된다. 대신 IV(Initialization Vector)의 길이는 AES-128, AES-256 둘 모두 16바이트로 동일하다. Random IV를 적용해보기여기서 재밌는 기능을 하나 추가해보자. 바로 IV를 매번 random하게 생성하는 것이다. 그리고..

프로그래머스

[PCCE 기출문제] 7번 / 가습기 자바(Java)

이번 문제를 기점으로 0레벨의 PCCE 기출문제 시리즈는 1문제가 남았다. (이래 놓고 언젠가 추가될 수도 있지만) 이번 문제는 함수 이름때문에 스크롤을 이리저리 올렸다 내렸다 하는게 귀찮은 문제였다. 문제 이번 문제는 빈칸 채우기 문제로 설명을 읽기 전에 코드를 먼저 살펴보긴 했다. 코드를 먼저 봤을 때, 함수 내부를 완성하고 main 함수에서 해당 함수들을 적절히 호출하는 문제였다. 풀이 auto, target, minimum에 해당하는 함수를 작성해야 하는데 문제에서는 이름이 func1, 2, 3으로 구분되어 있다. 일단 func2가 auto 모드인 것은 해당 모드 동작과 함수 본문이 같은 로직이므로 직관적으로 파악할 수 있다. 이 때, 빈 칸에 else가 아닌 else if를 적으면 컴파일 에러가..

프로그래머스

[PCCE 기출문제] 6번 / 가채점 자바(Java)

오랜만에 돌아온 PCCE 기출문제 시리즈이다. 이 사이에 있던 문제는 딱히 블로그에 올릴 만한 내용은 없어서 스킵해버렸다. 문제 실행 순서대로 설명해보면 n번 학생이 본인 점수를 질의한다. 그럼 해당 번호에 맞는 점수 두 개를 비교해서 같다, 다르다를 판단한다. 이렇게 정리해볼 수 있겠다. 풀이 원래는 score_list[i]와 같은지 판단하도록 코드가 구성되어있었다. 하지만, i번째를 비교하게 되면 입출력 예시에 대입해볼 때 값이 이상해진다. 학생의 번호 값이 들어있는 numbers 안의 값을 가져와야 하는데 score_list의 0번부터 비교하게 되면 안된다. 그래서 numbers[i] 값을 가져오게 되었는데 이 때, 입출력 예시에서 numbers 값이 1인 경우, our_score에서 비교하는 값이..

프로그래머스

[PCCE 기출문제] 2번 / 피타고라스의 정리 자바(Java)

이번에는 피타고라스의 정리에 관한 문제인데 다들 아는 a제곱 + b제곱 = c제곱 공식을 알고 있는 지에 대해 확인하는 문제같다. 문제 결국 문제에서 요구하는 값은 b제곱인데 이는 보통 c제곱 - a제곱이라는 사실을 알 것이다. 풀이 여기서 이 문제가 특이했던 점은 2줄 이상 수정 시 에러가 난다고 한다. 그래서 한 줄만 수정했더니 저렇게 초록색으로 괜찮다는 표시가 보였다. 내가 수정한 줄의 원본은 int b_square = c - a;였다. 실행 결과

프로그래머스

[PCCE 기출문제] 1번 / 출력 자바(Java)

이 문제를 보고 PCCE가 뭔가 했더니 프로그래머스의 코딩필수역량인증시험이라고 한다. 그래서 기출문제를 하나씩 풀어보고 있다. 다만, 자주 사용하던 코틀린은 없다는게 아쉬울 따름이다. 문제 간단히 말해 주어지는 코드의 빈칸 넣기 문제이다. 풀이 아래 3줄의 프린트문에 맞춰 변수 값을 채워주었다. 정말 언어를 알고 있느냐 수준의 문제였다.

Android

종종 간과하는 문제 해결 에피소드(feat. Handler, Thread)

오늘은 회사에서 마주한 에러를 해결했던 에피소드를 적어보고자 한다. 사실, 되게 사소하지만 크리티컬한 문제였다. 가장 먼저 오늘 마주한 에러를 다시 재현하기 위해 내 노트북에서 샘플앱을 만들었다 ㅋㅋㅋㅋㅋ 마주한 에러 로그를 첨부하겠다. java.lang.RuntimeException: Can't create handler inside thread Thread[Timer-0,5,main] that has not called Looper.prepare() at android.os.Handler.(Handler.java:227) at android.os.Handler.(Handler.java:129) at android.app.Dialog.(Dialog.java:138) at android.app.Dialo..

Language/Java

자바의 상속 - 1

오늘은 자바에서 가장 중요한 것들 중 하나인 상속에 대해 적어보려 한다. 먼저 상속이 뭘까? 상속은 다른 클래스의 설계도를 가져와 새로운 기능을 추가하는 기법이라고 할 수 있겠다. 이 상속 관계에 대한 호칭은 언어마다 다른데 주로 사용되는 호칭을 몇 개 나열해보면 상위 - 하위 부모 - 자식 슈퍼 - 서브 정도가 있겠다. 자바에서 공식적으로 사용하는 호칭은 슈퍼 - 서브인데 개발자들은 부모 - 자식으로도 많이 얘기한다고 들었다. 상속받은 클래스(자식)의 객체를 만들면 자동으로 상속해준 클래스(부모)의 객체도 내부에 같이 생성된다. 이러다 보니 내가 상속받아온 클래스의 멤버를 마음대로 사용 가능하다. 하지만, 저번 글에서도 소개했듯이 객체지향 프로그래밍에서는 멤버 변수를 직접 .연산자를 통해 제어하는 것을..

Language/Java

Java에서의 String 소개 - 2

이번 글은 저번 글에 이어 String class에서 자주 쓰이는 메소드(함수)들을 소개하겠다. //3. 문자열에서 특정 위치의 char 얻어오기 char ch = str.charAt(0); System.out.println(ch); //System.out.println(str.charAt(5)); // error 인덱스번호 벗어남 for (int i = 0; i < 5; i++) { System.out.println(str.charAt(i)); } 이번에 소개할 메소드(함수)는 charAt()이다. 눈치가 빠른 사람이라면 이 메소드의 리턴 타입을 바로 인지했을 것이다. 보다시피 char형이다. String은 내부적으로 문자열을 문자형 배열로 저장한다. 바로 이전 글에서 str을 "Hello"라고 저장했..

Language/Java

Java의 print와 scan

컴퓨터 언어에서 가장 기본적인 내용 중 하나는 많은 사람들이 알고 있듯 print문을 통해 Hello World를 출력해보는 것이다. 그래서 바로 이전 글에서 사용은 했지만 소개하지 않았던 print문을 사용하는 방법과 C언어에서의 scanf와 같은 기능을 사용하는 방법에 대해 소개해보려 한다. 저번 글에서 마지막에 객체만 생성해봤던 클래스가 있었다. Scanner라는 클래스이다. 이 클래스를 이용하면 사용자의 키보드 입력을 받을 수 있다. 하지만, 그 전에 먼저 알아야할 내용이 있다. 충격적인 사실을 말하자면 Scanner클래스는 사실 사용자의 키보드 입력을 받을 수 있는 자체적인 기능이 없다. 그럼 이 녀석은 대체 어떻게 키보드 입력을 받을 수 있는 것일까?? 내가 첫 글에서부터 사용했던 출력 기능을..

Language/Java

짧은 객체지향 프로그래밍 소개

자바에서 print와 scan을 소개하기 전에 객체지향 프로그래밍의 간단한 개념을 알아야할 것 같다. 먼저 C언어에서의 함수(Java에서는 메소드)는 main함수 안에서 바로 사용할 수 있었다. 그런데 자바 파일을 보면 다른 점이 있다. main이라는 함수 앞에 public static가 붙어있고 파라미터도 있지만 그 외곽은 class가 감싸고 있다. 간단히 말하면 자바에서 모든 함수(메소드)는 클래스 안에서 사용해야 한다. 그리고 이 클래스는 일종의 설계도면이라고 할 수 있다. C언어의 구조체 선언은 어떤 역할이었는지 다시 떠올려보자. struct AAA { int a; double b; }; main함수 위에 이런 구조체를 선언했다면 우리는 a와 b라는 변수를 만든 것일까? 아니다. 이 구조체는 자료..

BonusTrack02.dev
'자바' 태그의 글 목록