목록분류 전체보기 (175)
hmk run dev
컴퓨터 안엔 크게 CPU, MEMORY, DISK가 있다. 아주 기본적인 구조로 폰 노이만 구조라고 한다. CPU프로세스 쉽게 말해서 계산하는 역할 ALU - 수학적계산, 산술 연산 등등... 레지스터 - 메모리에 있는 명령들이 쭉 올라와서 계산을 통해 연산을 하게 된다. 프로그램이 실행되고 있는 것 프로세스는 하나의 컴퓨터에 여러 개가 존재할 수 있다. 컴퓨터 작업 관리자에 들어가 보면 내 컴퓨터에서 실행돼있는 프로세스들을 볼 수 있다. 요즘은 멀티코어, 헥사코어들 프로세서가 여러 개인 컴퓨터가 많지만 프로세서가 하나라고 가정할 때 한 개의 CPU(프로세서)는 한개의 명령만 처리가 가능하다. 프로세스가 여러 개 있다고 해도 보통은 CPU에서 처리속도가 매우 빠르기 때문에 동시에 실행되고 있다고 생각할 ..
추상 클래스 사용하는 이유 - 상속을 강제하기 위함 부모 클래스에서 정의만 해놓고, 실제 동작은 자식 클래스에서 하게 됨 이러한 추상 클래스의 성격이 잘 반영되어진 것이 팩토리 메서드 패턴(Factory Method Pattern)이다. 추상클래스는 일반 클래스와 크게 다르지 않다. 단지, 추상 메서드를 선언해 상속을 통해 자손 클래스에서 완성을 유도하는 클래스라고 할 수 있다. 비유하자면 미완성 설계도라고 할 수 있다. 상속을 위한 클래스 이므로 따로 객체생성이 불가능하다. abstract class className { ... public abstract void methodName(); } - 추상 클래스는 인스턴스, 즉 객체를 만들 수 없는 클래스 - 추상 메소드는 하위 클래스에서 메소드 구현을 ..
데이터 조회 시 JOIN이 들어가는 쿼리일 경우엔 특정 레코드엔 NULL인 칼럼이 들어가는 경우가 빈번하다. 이럴 때 특정 레코드의 칼럼이 NULL인 경우 WHERE 조건을 사용하지 않고 싶을 때 아래처럼 구현하면 된다. SELECT * FROM w_schedule ws LEFT OUTER JOIN w_work w WHERE 1=1 AND ((w.wait_yn IS NULL and 1=1 ) or (w.work_stat IS NOT NULL and w.wait_yn = 'N')) 위의 코드처럼 w_work가 조인돼서 생기는 필드인 w.wait이 IS NOT NULL인 경우에 한해 w.wait_yn = 'N' 조건을 걸어준다. FROM w_alliance_work waw LEFT OUTER JOIN w_w..
캐시워크같은 잠금화면위에 어플화면을 띄울 수 있는 기능을 개발을 해보자! 안드로이드 같은 경우 잠금화면 액티비티를 개발자가 개발 할 수 있다(IOS는 아직까지 안돼는 걸로...) 잠금화면을 점유하기 위해서 BroadcastReceiver에서 ACTION_SCREEN_OFF, ACTION_SCREEN_ON 액션을 받아서 화면에 액티비티를 띄워야 하는데 Manifest파일에 receiver를 등록해 정적 동작은 실행되지 않는다. 그래서 Service를 만들어 백그라운드에서 동작하게 만들어야 하는데 안드로이드 O 버전부터 백그라운드 동작을 죽이기 때문에 일정 시간이 지나면 더 이상 동작하지 않는다. 이것을 해결하기 위해 AlarmManager로 알람을 등록해 서비스를 계속 실행시키는 방법도 있는데 이것은 알람..
Activit - 앱이 실행되면 전체 화면에 앱의 UI를 띄워줌 - 사용자와 상호작용하며 이벤트 처리 - 새로운 UI를 화면에 표시 기본적으로 MainActitvity가 앱 실행 시 최초로 보이는 화면을 담당한다. Service 앱의 백그라운드에서 동작하는 작업을 수행하며 서비스를 실행한 앱을 다른 앱으로 전환하더라도 서비스에서 시작한 작업은 백그라운드에서 계속 실행 된다. 서비스는 크게 3가지로 나눌 수 있는데 - 포그라운드 서비스 : 알침창에 서비스가 실행 중임을 표시해준다. 시스템에 의해서 강제로 종료되지 않음 - 백그라운드 서비스 : 사용자에게 보이지 않는 백그라운드에서 작업을 수행하며. 시스템의 리소스가 부족할 경우 강제 종료될 수 있음 - 바인드 서비스 : 서비스와 서비스를 호출하는 앱 구송 ..
Intent (스프링의 @Autowird와 비슷...??) Component를 실행하기 위해 시스템에 넘기는 정보 기본적으로 안드로이드는 component기반이고 이때 내부적으로 개발자가 작성한 Activity 같은 클래스들이 아래와 같이 동작하게 된다. 위 4개의 영역은 각각각의 class지만 상호 결합되지 않은 상태로 실행이 되고. 이것들은 안드로이드에선 component라고 할 수 있다. 안드로이드 애플리케이션을 네 가지 기본요소에는 Activity, Service, Broadcast Reiceiver, Content Provider가 있다. 이때 인텐트(Intent)란 이러한 어플리케이션 구성요소(컴포넌트) 간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 인텐트는 안드로이드 개발 시 매우 빈..
UML 다이어그램 종류 (액시디콜컴클) UML이란 소프트웨어 시스템을 구축하기 전에 모델을 설계한 그림으로된 표기법 - Activity - Sequence - Deployment - Collaboration - Component - Class 화이트박스 테스트 - 내부구조를 알고 동작검사 블랙박스 테스트 - 내부구조, 작동원리를 모르고 검사 스택을 사용한 연산 - 재귀호출, 후위연산, 깊이 우선탐색(DFS) 큐 - 선택정렬, 넓이 우선탐색(BFS) 병렬 데이터베이스 분할방법 수평분할 - 라운드-로빈, 범위 분할, 해시 분할 수직분할 - 예측분할 데이터베이스 설계 단계 개념적 설계 - 사용자의 요구사항 분석 후 DB에 대한 추상적인 형태 설계(ERD 작성) 논리적 설계 - 논리적 모델이용 스키마 생성, 개..
보호되어 있는 글입니다.
요즘엔 List가 없는 앱을 찾기 힘들다. 배민 - 음식점 list 야놀자 - 숙박 list 핀다 - 대출 list 이렇듯 거의 모든 어플엔 list 형식이 있는데 RecycleView말 그대로 재활용이 된다는 것이다. 화면에 보여질 만큼의 view를 생성하고 계속 재활용한다. RecycleView를 사용하기 위한 준비물이 2개가 필요하다. 1. Adapter - view 생성 만든 view 안에서 데이터 바인딩 담당 class MyAdapter(val context: Context, val list : List, var onDeleteListner: OnDeleteListner) : RecyclerView.Adapter() { // 리스트 사이즈 override fun getItemCount(): In..
onCreate() - 사용빈도 높음 - view를 빌드하고 구성 - 전 액티비티나, 전 활동에서 넘어온 데이터 처리 onStart() - 사용자가 스크린을 볼 수 있게 활동을 포그라운드에 넘김 - 사용자와 상호작용을 준비( ex 버튼클릭, 텍스트입력 ) onResume() - 상호작용이 가능하게 되는 단계 - 포커스가 떠날때 까지 계속됨 > 포커스가 떠난다? > ex) 앱 사용중에 전화가 온다 > 다른 액티비티로 이동함, 어플이 꺼짐 onStop() - 사용빈도 높음 - DB에 저장하거나, CPU 소모가 많은 작업 담당