본문 바로가기

전체 글

(115)
[WEB] 모바일 애플리케이션 개발 방식 4가지 비교 📱 모바일 애플리케이션 개발 방식 4가지 (네이티브·모바일웹·웹앱·하이브리드)안드로이드 스튜디오로 모바일 개발을 해보니, 자연스럽게 Kotlin에 관심이 생겼습니다.본격적으로 코틀린을 공부하기 전에, 먼저 "모바일 애플리케이션을 어떤 방식으로 개발할 수 있는가" 라는 전반적인 방법을 정리하고 싶었습니다. 이 글은 앱 개발 방식(개발 관점)을 다루며, 네이티브 앱, 모바일 웹, 웹앱, 하이브리드 앱의 차이를 정리합니다.1. 네이티브 앱 (Native App)Kotlin, Swift로 구현함앱스토어에서 다운로드 가능함운영체제별로 최적화되어 실행속도, 안정성 우수함2. 모바일 웹 (Mobile Web)PC 웹 페이지를 모바일 화면에 맞게 줄인 형태임 (하단 메뉴바 없음)URL로 바로 접속 가능함새로 고침하면..
[소프트웨어공학] Android Studio 이슈 #4 FCM 구현 전에 TodoListItem 구현에 궁금증이 생김. userID를 꼭 할당해주어야 하는건가??? userID는 어디서 사용하는거지???package com.example.merge;public class TodoListItem { //userID가 과연 필요한가??? //String userID; private boolean isDone = false; private String title; private boolean allDay; private String startTime; private String endTime; private String memo; public TodoListItem(){ } public TodoListIt..
[Spring Boot] 스프링 스터디 4일차 # 과제 - JPA 기술 ORM: 객체를 관계형 데이터베이스와 매핑함. => Annotation을 활용, @Entity # 스터디 연관어: Hibernate, 다형성, interface, 정보 숨김 Java Application; Spring Boot, Spring Data JPA? JPA(interface. EntityManager em를 이용해 interface 구현) JDBC, Hibernate, ... (구현체; 어떻게 구현되든 JPA interface를 구현만 하면됨. void excute()-데이터베이스 연결 ) => JDBC, Hibernate, ... 등 종류에 따라 Spring Boot의 코드가 변경되어야함. 따라서 JPA 도입하여 어떤 동작을 할지 알리고, JDBC, Hibernate,..
[소프트웨어공학] Android Studio 이슈 #3 키워드: 비동기 함수, 콜백 와우.. 드디어 비동기 함수에 대해 이해를 했다. 역시 사람은 대가리 박으면서 해봐야 정신을 차린다. ExecutorService service = Executors.newSingleThreadExecutor();=> 하나의 쓰레드를 사용하여 동기적으로 처리하게 한다. 하지만, 결국 쓰레드 사용하기 어려워서 다른 방법 사용함.- AsyncTaskpublic class CalendarAsync extends AsyncTask{ @Override protected Void doInBackground(Void... voids) { stringDateList = new HashSet(42); databaseReferen..
[소프트웨어공학] Android Studio 이슈 #2 어댑터에 대한 이해! onBindViewHolder에서 데이터의 바인딩이 일어난다.-> 이때 제대로된 데이터베이스의 값을 가지지 못한다.=> 쓰레드 속도가 지멋대로임. 클래스 생성하여 함수를 실행하여 데이터를 읽는 것은 holder에 뷰가 바인딩되는 것보다 한참 느림. 이 함수로 데이터를 판별하려 하였으나 어댑터가 뷰를 바인딩하는 속도를 못 따라옴!public boolean isExist(){ try { databaseReference.child("TodoCell").child(currentUser).addValueEventListener(new ValueEventListener() { @Override public v..
[백준] S17086 https://www.acmicpc.net/problem/17086 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만 www.acmicpc.net # 아이디어 1. N*M 크기의 map에서의 모든 자리에서 검색을 한번씩 한다. 2. 각 자리에서 가장 가까운 상어를 찾는다. 3. 각 자리에서 가장 가까운 상어와의 거리를 안전거리의 최댓값으로 저장한다. 4. N*M번 반복하는 검색을 하며 안전거리의 최댓값을 비교하며 업데이트 한다. # 오답 처음에는 bfs로 하려다가 2차원 배열로 구성된 map을 어떻게 검색해야 할..
[Spring Boot] 스프링 스터디 3일차 DB의 값을 자바에서 객체로 처리하기 위해 Domain을 사용함. 데이터베이스로부터 값을 읽어와서 자바에서 Domain의 하나의 클래스로 정의내린 후 값이 변화하면 안 됨. 주요 3계층: Controller, Service, DAO 주요 3계층간에 움직일 때, 보안성이 있고 일부의 데이터만 가지는 DTO를 사용함. 패러다임과 속성이 약간 다른 것들 Controller, Service, DAO: 자바에서 값을 다룸...? DTO, Domain: 데이터베이스의 값을 다룸...? 데이터베이스: 테이블 사용 Spring: Domain 사용 💯💯💯 과제 해결 중 이해한 것 사용자 -> Controller -> 데이터베이스 dto로 입력 ↓↑ @Entity를 활용하여 domain으로 변환 Dto 스프링에서 정의된 ..
[백준] S2606 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net # 아이디어 간선의 정보를 2차원 배열에 저장하고 visited라는 1차원 배열을 통해 정점을 지났는지 아닌지 판별하여 dfs 탐색한다. 이를 통해, 네트워크 망이 연결된 컴퓨터를 찾을 수 있음!!! 이전에 풀었던 dfs와 bfs 문제와 아주 유사함!! 이번에는 정말로 코드를 다 이해한듯?? 블로그 안 보고 품 😎 # 오답 Sol 1. cnt의 값이 -1로 출력됨. package baekjoon; im..
[소프트웨어공학] Android Studio 이슈 #1 뷰의 Context는 ViewGroup이 하나만 존재하는 것처럼 하나만 존재함???Toast.makeText(rootView.getContext(), clickedDate, Toast.LENGTH_SHORT).show(); //리사이클러뷰 설정하는 법recyclerView_todo = dialog.findViewById(R.id.recyclerView_todo);recyclerView_todo.setHasFixedSize(true); //성능 강화linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);recyclerView_todo.setLayoutManager(linearLayou..
[Spring Boot] 스프링 스터디 2일차 - 웹 어플리케이션 5계층에 대한 이해 Controller: 사용자로부터 Get요청을 받음. Service: transaction 처리, 비즈니스 로직 처리 DAO: 서버에 접근 Domain: 데이터베이스에서 객체 형태로 Spring에서 다루기 위한 데이터 타입 클래스. DTO: 보안 및 불필요한 내용 제외하고 필요한 내용만 다루는 곳. Spring Boot의 자바 상에서 Annotation 사용(Domain - 불변의 법칙: 생성자로 한번 Domain이 생성되면 이후에 바뀔 일이 없음) : 기본생성자 private 선언, setter 사용 X, getter는 꼭 필요할 때만 필드 단위로 사용 데이터베이스상의 필드: user_name, Spring에서 사용하는 필드: name @Column(name = ..
[백준] S1260 #https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net # 아이디어 막막하다.. 감도 안 잡힘. 일단 생각난 큰 틀 1. edge 입력받아서 vertex끼리 연결된 배열?같은거 만들기 2. - DFS: 연결된 것 중에 가장 작은거 찾기 -> 작은 vertex로 이동 -> 재귀. 종료조건: cnt == vertex 수 - BFS: 연결된 것 중에 가장 작은 vertex 2개 찾아서 left, right 정하기 ->..
[Spring Boot] 스프링 스터디 1일차 https://start.spring.io/ Group: com.likelion Name: mail Artifact: study Package com.likelion.study => study.likelion.com이라는 api 생성하는 것 Ex) mail.google.com - 스프링 라이브러리 Spring Batch: 대량의 데이터를 일괄적으로 처리함. 일정 주기로 돌아가는 Scheduler와는 다름. Server Side Rendering 어플리케이션 서버 3계층(web server, was, db server) Web server: 로그인 페이지와 같이 DB를 접근할 이유가 없는 요청들을 여기서 처리해버림. WAS: WAS라는 하드웨어, 소프트웨어에서 Springboot라는 애플리케이션이 동작함...