전체 글 35

[SimpleChatApp] 0일차

기획의도 Udemy에서 Android app 개발을 배우기 시작한지 1~2주 정도 된 것 같다. 근데 거기서는 굉장히 기본적인 개념만 배울 수 있어서 내가 직접 토이프로젝트를 시작해야 겠다는 생각이 들었다. MVP 토이 프로젝트로 구현할 것이기 때문에 최소한의 기능을 염두에 두고 개발을 해보려고 한다. - 실시간 채팅을 보낼 수 있는 기능(DB연결) - 친구 추가 기능 - 프로필 설정 기능 - Bottom Navigation Bar 디자인 디자인은 카톡 디자인 기본으로 하려고 한다. 기술 스택 먼저, java를 사용해서 개발을 진행하려고 한다. kotlin 강의도 있는데 아직 java로 android 개발하는 게 덜 익숙해서 천천히 해보려고 한다. - Java - Firebase - Git 이 정도를 기..

자바 개념 정리

상속(Inheritance) - 상속이란 subclass가 superclass의 field와 method를 상속 받는 것을 말한다. - extends라는 keyword를 쓴다. - 상속은 하나의 class 밖에 받지 못한다. 하지만, interface는 여러 개일 수 있다. - 모든 것을 상속 받지만 private은 상속받지 못하며, constructor 또한 상속 받지 못한다. 그래서 subclass에서는 constructor를 새롭게 규정해야 한다. - 또한, polymorphism를 상속의 개념과 연관해서 말해보자면 상속 받은 subclass들을 instantiate해서 superclass의 type으로 선언할 수 있다. 만일 superclass Person을 subclass Student와 Tea..

코딩 테스트 2023.03.11

java 공부 정리

며칠 동안 포스팅을 안해서 밀렸던 자바에 대한 것들을 정리해보려고 한다. StringBuilder string에 + 연산을 반복해서 하면 속도가 저하된다고 한다. 그래서 StringBuilder를 사용하여 연산을 빠르게 할 수 있다. 간단한 사용법은 다음과 같다. StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("문자열 ").append("연결"); // String str = stringBuilder; // String에 StringBuilder를 그대로 넣을 순 없다. toString()을 붙여야 한다 String str = stringBuilder.toString(); https://onlyfor-me-blog.tist..

코딩 테스트 2023.03.06

[프로그래머스] 02.21

오늘은 기본적인 여러 문제들을 풀어봤다. - 최대공약수, 최소공배수 알고리즘 최대공약수를 구하는 GCD 알고리즘은 이와 같다. 최소공배수를 구하는 LCM 알고리즘은 두 자연수의 곱/GCD이다. - length, size 배열이나 colleciton object의 길이를 알아야 할 일이 다분한데 굉장히 헷갈려서 따로 적어두려고 한다. - HashMap import java.util.*; class Solution { public int solution(int[] array) { int maxCount = 0; int answer = 0; Map map = new HashMap(); for(int number : array){ int count = map.getOrDefault(number, 0) + 1; ..

카테고리 없음 2023.02.21

[프로그래머스] 옹알이(1)

학부 2학년 때 자바를 접하고서 처음으로 자바로 코딩을 해봤다. 문제 자체는 간단했지만 굉장히 까다로운 문제들을 겪게 되었다. 더보기 1. main method의 필요성 2. iterator 3. List, ArrayList의 차이 1. main method의 필요성 먼저, java의 경우 oop의 컨셉을 사용해서 프로그래밍을 해야 하다 보니까 class를 선언하고 method를 만들 때에 앞에 붙여야 하는 prefix가 굉장히 많았다. 공개범위, 그리고 static인지, 반환값의 type도 써야했다. 이런 것에 대해서는 추우에 개념을 정리해볼 예정이다. 일단, 이것을 제쳐두고 프로그래머스에서 처음 문제를 봤을 때에 Solution class에 int solution 함수만 있어서 굉장히 당황했다. 나는..

코딩 테스트 2023.02.20

[CSS] 중앙 정렬

HTML 삽입 미리보기할 수 없는 소스 HTML을 최근에 써보면서 느끼는 건데 정렬하는 게 참 어렵다. 특히 중앙정렬을 해야 할 일이 많았는데 그때마다 고생했다. 내가 알고 있는 방법은 다음과 같다. 1. center tag 사용 2. translate 사용 3. flex 4. margin auto 여기서 사실상 쓸 만한 것은 3번과 4번이다. 왜냐하면 center tag는 html 5부터는 제공되지 않는다고 한다. 그리고 translate의 경우에는 코드가 더럽고 animation을 적용하고 싶을 때에 translate가 animation과 중첩되어 적용되는 경우가 있어서 잘 안쓰게 되었다. Flex flex란 무엇인가? w3school에서는 이렇게 정의하고 있다. The flex property se..

web 2022.11.24

[CSS] 자연스럽게 특정 위치로 scroll하기

처음에 web page를 공부하면서, 감탄했던 기능이 있었다. 그건 바로 화면을 보고 있다가 버튼을 누르면 자연스럽게 특정 위치로 이동하는 것이었다. 이렇게 페이지 내에 특정 위치로 한번에 이동하는 것은 a tag를 사용해서 쉽게 구현할 수 있다. 예를 들어, 맨위로 이동하게 하려면 top 이런 식으로 해두면 맨위로 가기는 하는데 너무 빠르게 간다. 그래서 위로 가는 것을 조금 느리게 하려고 하는데 구현 방법이 생각보다 쉬웠다. 난 자바스크립트를 사용해서 구현할 수 있을 줄 알았는데 그냥 css로도 할 수 있었다. html { scroll-behavior: smooth; } css에다가 이런 코드를 적어주면 자연스럽게 동작한다. 근데 주의해야 할 점은 자연스럽게 scroll이 되게하려면 root elem..

web 2022.11.04

python 입력방식

코딩 테스트를 준비하면서 새롭게 알게 된 입력방식들이 있다. 기본 x = input() y = input("변수를 입력해주세요") 이게 내가 알던 기존의 방식이었다. map() a, b, c = map(int, input().split()) 이런 식으로 입력 값을 받게 되면 5 6 7 위와 같은 형식으로 space를 사용하여 한 줄로 여러 변수를 입력할 수 있다. map()은 map(적용시킬 함수, 적용할 값들)을 parameter로 받는다. input().split()로부터 적용할 값들을 받아서 int()함수를 적용시키는 것이다. try except while True: try: n = input() except: break 이렇게 입력값을 받으면 try code 쪽에서 오류가 나기 전까지는 입력을 계..

코딩 테스트 2022.10.05

flutter에서 Inspector 사용하는 법

오늘은 Visual Studio Code에서 inspector를 사용하는 법에 대해서 말해보고자 한다. 구글에서 inspector를 사용하는 법에 대해서 검색해봤는데 제대로 되지 않아서 내가 따로 정리해보려 한다. 사용법은 많이 간단하다. terminal에서 flutter run을 하면 다음과 같은 출력을 볼 수 있다. 여기서 맨 마지막 url에 들어가면 inspector를 볼 수 있다. 그리고 이렇게 simulator랑 같이 쓰면 훨씬 작업하기 편하다. 그리고 이 버튼을 눌러주면 widget tree에서 내가 누른 component가 화면에서도 표시된다.

flutter 2022.06.29

특정화면에서 flutter를 실행하는 법

flutter로 화면을 그리다 보면 가끔 특정 페이지만 실행하고 싶은 경우가 있다. 그럴 때에는 다음과 같은 명령어를 사용해주면 된다. flutter run --route /routeName 여기서 '/routeName'은 다음 코드처럼 main.dart에서 선언해주는 Named route를 말하는 것이다. return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), initialRoute: '/splash', routes: { '/home': (context) => HomePage(), '/splash': (context) => SplashScreen(), '/login': (context) => L..

flutter 2022.06.29