본문 바로가기

분류 전체보기241

[Java] Scanner & 표준 출력 스트림 Scanner import java.util.Scanner; class Exam { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("String Line : "); // \n까지 받아서 버림 System.out.println(scanner.nextLine()); System.out.println("String : "); System.out.println(scanner.next()); System.out.println("Byte : "); System.out.println(scanner.nextByte()); System.out.println("Short : "); Sys.. 2022. 4. 1.
[Java] 문자 입력 받기 import java.io.IOException; class Exam { public static void main(String[] args) throws IOException { int Input1 = System.in.read(); int Input2 = System.in.read(); int Input3 = System.in.read(); int Input4 = System.in.read(); int Input5 = System.in.read(); System.out.println("Input1 : " + Input1); System.out.println("Input2 : " + Input2); System.out.println("Input3 : " + Input3); System.out.print.. 2022. 4. 1.
[Android] EditText 주로 쓰는 옵션 EditText의 옵션에 따라서 기본 키패드 옵션이 달라지게 된다. ​ // 문자열 추가 android:text="@string/str_dot" ​ // 텍스트 정렬 , 색상, 크기, style(bold, normal, italic), 입력 가능 문자 android:textAlignment="center" android:textColor="@color/black" android:textSize="50dp" android:textStyle="normal" android:maxLength="6" ​ // 비밀번호 입력 타입(영어) android:inputType="textPassword" ​ // 숫자 키패드 android:inputType="number" ​ // 이메일 키패드(영어, @) android:.. 2022. 4. 1.
[Google Play Store] 어플 키워드 관련 정리 플레이스토어 상위 노출이 되기 위해 필요한 요소들을 정리한다. 1. 앱 성능 성능이 좋은 경우에 더욱 상위에 배치가 된다고 한다. 2. 앱 소개 키워드를 콘솔에 앱 이름에 키워드를 담고 설명에 키워드를 적절하게 넣어라. 애플의 앱 스토어 같은 경우에는 키워드 등록이 있다고 하는데 플레이 스토어의 경우에는 그런 개념이 존재하지 않는다. 하지만 어플 이름에 AAA: BBB형태나 AAA-BBB 처럼 특정 키워드를 같이 사용할 수 있다. 앱 설명에도 특정 키워드를 넣어주는 것이 좋다고 한다. 3. 앱 이름 짓기 (기존에 출시된 어플과 비슷하게 하면 좋지 않음) 기존에 출시된 어플과 비슷하게 짓지말고 눈의 확 띄게 지으면 좋다고 한다. 4. 다운로드 및 평가 인기가 많고 평가가 좋은 어플이 상위에 배치가 된다. .. 2022. 3. 31.
[Flutter] 같은 행에 Widget 정렬하기 처음에 접근한 방식은 Row 위젯에 자식 위젯을 두고 적절하게 Center위젯으로 감싸면 될 거라고 생각했는데 안 된다. Row의 MainAxisAlignment를 center로 바꾸면 처리가 되기는 하는데 각 위젯마다 처리가 안 된다. 문제의 코드 Row( children: [ SizedBox( width: vocaBottomSheetLoginIconSize, height: vocaBottomSheetLoginIconSize, child: image), Center( child: Text( strText, style: const TextStyle( fontSize: textSize16, color: Colors.black, fontWeight: FontWeight.bold), ), ), ], ), 원하.. 2022. 3. 31.
[Flutter] BottomSheet 크기 조정 바텀 시트의 최대 사이즈는 기본적으로 스크린 사이즈의 절반으로 되어 있는데 동적으로 바꾸고 싶다면 showModalBottomSheet 부분을 다음과 같이 교체해야 한다. showModalBottomSheet( isScrollControlled: true, context: context, builder: (BuildContext bc) { return Wrap( children: [...] ) } ) 2022. 3. 31.
[Android] 2차 인증(2 factor authentication) 최근에 회사 내 어플에서 2차 인증 쪽 로직을 추가해서 관련 글을 적어보려고 한다. ​ 일단 흐름은 로그인을 이용하여 우리 어플을 사용하는 유저들이 2차 인증을 통과한 이후에만 서비스를 이용할 수 있도록 하는 기능이다. 2차 인증의 방식에는 Email / OTP 인증이 있는데 google OTP를 주로 많이 사용하는 듯하다. ​ 이메일 같은 경우에는 모바일 앱에서 이메일에 대한 요청을 보내고 인증 코드를 입력하면 유효성을 확인하는 통신 처리가 필요하다. 이거는 흔히 사용하는 방식이니까 굳이 더 자세한 설명은 필요 없을 것 같다. ​ Google OTP의 경우에는 구글에서 따로 제공하는 어플이 있는데 우리가 키를 등록하면 30초를 주기로 6자리 인증 코드를 생성해 준다. 우리가 어플에서 인증을 받는 상황에.. 2022. 3. 30.
[Android] Toolbar padding in Tablet ​ stackover flow를 찾아보니까, Toolbar를 찾아와서 거기에 직접 자식을 넣고 inflate하는 방식, 속성 처리.. 여러 방법이 있는데 나의 경우에는 다른 문제였다. ​ 찾아보면 이런 거 많이 한다. ​ 나는 Material Design을 이용해서 AppBarLayout, MaterialToolbar를 이용하고 내부에 ConstraintLayout을 사용하여 구현했다. ​ 이런 상황에서 Tablet기기부터 좌우에 뭔가 색상이 뭍어나오는데 Tablet보다 작은 크기의 기기들은 문제가 생기지 않았다. contentInsetStart, consentInsetEnd값을 주지 않으면 옆에 공간이 남는다. 추가적으로 paddingStart, paddingEnd에 값을 줘야 한다. ​ 안드로이드 내.. 2022. 3. 30.
[Android] EditText with ObjectAnimator android에서 View에 애니메이션을 주고 싶은 경우가 생긴다. ​ 인터넷에서 ObjectAnimator를 이용하는 방식 View.animate()... ViewPropertyAnimator를 이용하는 방식이 있다. (사용) ​ TranslationX, Y 값을 이용해서 이동을 시킬 수 있는데, Button이나 TextView에서는 크게 문제가 생기지 않는다. 이동한 자리에서 클릭을 해도 후처리가 자연스럽게 연결이 되는데 ... EditText를 사용한 View를 애니메이션 시킨 경우에는 텍스트를 가리는 문제가 생길 수 있다. ​ 예를 들어서 EditText View를 Y축으로 100만큼 이동을 시키면 실제 보이는 영역은 100만큼 이동을 하는데 처리되는 영역(실제 영역)은 그대로 위치를 하게 된다... 2022. 3. 30.
[영상처리] iFrame 관련 이슈(프레임 깨짐 현상) 영상 데이터를 보낼 때 모든 픽셀 정보를 하나씩 처리해서 데이터를 보내지 않는다. 데이터가 너무 커져서 그런 방식은 사용하지 않고 iFrame과 pFrame의 개념을 이용하는데 iFrame은 하나의 완성된 장면을 가지고 있고 pFrame은 이진 데이터로서 움직임에 따른 장면만 가지고 있다고 한다. ​ 이런 상태면 영상 데이터의 크기를 획기적으로 줄일 수 있게 된다. pFrame은 앞선 frame 정보를 토대로 자신의 정보를 복구하기 때문에 이전 frame의 정보가 보존이 되어야 한다는 특징이 있다. ​iFrame의 경우에는 완성된 그림이므로 이전 Frame의 영향을 받지 않는다. ​ 기존 로직에서는 영상 데이터에 iFrame 정보가 들어오면 이전에 쌓인 Frame 정보를 버리고 영상을 그려주는 처리를 해.. 2022. 3. 30.