전체 글

전체 글

    AsyncTask는 왜 deprecated 되었을까?

    AsyncTask는 왜 deprecated 되었을까?

    AsyncTask는 백그라운드에서 작업을 수행할 때 사용합니다. 그리고 그 결과를 UI Thread에서 갱신도 하게 되죠. 최대 몇초간의 짧은 작업에 사용하는게 가장 적절합니다. 특징으로, AsynkTask는 순차적으로 실행되게 되죠. deprecated된 이유는 다음과 같습니다. 1. 따로 명시해주지 않으면 액티비티가 종료되도 메모리에 계속 남아, 메모리 누수가 발생 2. 오직 한번만 실행되고 재사용이 불가능 + 처리작업의 수가 1 (비효율적) 3. Configuration 변경이 일어났을때 crash 가능성 RxJava도 합리적인 대안이지만, 코틀린의 coroutine로 대체하는걸 추천하고 있습니다.

    [jsp] getParameter, getAttribute 차이 [짧]

    [jsp] getParameter, getAttribute 차이 [짧]

    getParameter는 리턴값이 String getAttribute는 리턴값이 object

    Retrofit2 간단한 사용법

    Retrofit2 간단한 사용법

    Retrofit이란? OkHttp를 네트워크 계층으로 활용해서 구축한 RESTful HTTP통신 라이브러리 입니다. AsncTask없이 백그라운드 스레드를 실행하며, Callback을 통해 메인스레드에서 UI를 업데이트하게 됩니다. 이후 안드로이드 스튜디오가 메인스레드에서 백그라운드 스레드를 실행하지 못하게 변경되면서 비동기 통신엔 결국 AsncTask를 사용하게 됩니다. Retrofit의 장점 1. AsncTask와 비교해서 빠른 속도. 2. 어노테이션을 사용해 코드가 굉장히 직관적. 3. 간결한 코드로 재사용성 또한 높음 4. 구현히 굉장히 쉬움 Retrofit의 구성요소 1. DTO (Data Transfer Object) - Bean이라고도 부릅니다. POJO를 사용하기도 합니다. 2. Inter..

    JSON 데이터로 JAVA 클래스파일 생성하기 feat.retrofit2

    JSON 데이터로 JAVA 클래스파일 생성하기 feat.retrofit2

    https://www.jsonschema2pojo.org jsonschema2pojo Reference properties For each property present in the 'properties' definition, we add a property to a given Java class according to the JavaBeans spec. A private field is added to the parent class, along with accompanying accessor methods (getter and sette www.jsonschema2pojo.org 완전 편하네요. 우측에 설정을 해서 다른 여러가지 타입으로도 변환이 가능합니다.

    Recycler View item handeling

    Recycler View item handeling

    제목 그대로입니다. 가로로 리스트뷰를 제작해야해서 리사이클러뷰를 썼는데, 리사이클러뷰는 아이템에 접근할 수 있는 메서드가 onBindViewHolder뿐입니다. 기존 레이아웃을 재활용할 뿐더러 접근할수 있는 메서드가 하나 (지만 이것도 데이터 바인딩에 사용)밖에 없어서 리스트뷰에 비해서 사용하기가 너무 까다로웠습니다. 혼자서 끙끙대다가 구글링해보니 같은 고민을 하시는 분이 많아 저도 작성해봅니다. 리사이클러뷰에서 단일 아이템을 선택해서, 해당 아이템만 배경색을 바꾸려면 다음과 같은 과정이 필요합니다. 1. 선택된 아이템의 Position을 저장할 전역변수를 생성합니다. 2. onBindViewHolder에서 생성된 ViewHolder를 ArrayList로 유지합니다. + ArrayList의 contain..

    The type Date is ambiguous

    The type Date is ambiguous

    상황 안드로이드에서 톰캣 서버에 파일 업로드중 java.sql.*을 임포트하니 갑자기 잘되던 date타입이 먹통 원인 java.util.* 과 java.sql.*은 둘다 date를 참조함 해결 둘중 어떤 라이브러리의 date타입을 사용할지 명시 new Date -> new java.util.Date()

    Custom ListView OnItemClickListener가 작동하지 않음

    Custom ListView OnItemClickListener가 작동하지 않음

    상황 CustomListView를 만든 후 OnItemClickListener 이벤트를 입력하였으나 작동하지 않음 원인 기본적으로 제공하는 리스트뷰가 아닌경우 리스트를 클릭하는게 아닌 리스트뷰 내부의 아이템을 클릭하는것으로 인식. 왜냐하면 리스트뷰의 아이템 레이아웃을 별도로 만들어 리스트뷰에 붙였기 떄문임. 해결 리스트뷰에 클릭이벤트를 붙이는게 아닌 어댑터의 getview에서 converterview에 클릭이벤트 생성

    java.net.ConnectException: Failed to connect to

    java.net.ConnectException: Failed to connect to

    상황 맥북 로컬 tomcat서버에 app에서 json 파일을 가져오는 과정에서 발생, 왜안되나 한참 봤더니 연결이 끊겼었음. 매니페스트에 인터넷 퍼미션과 네트워크 세큐리티 콘피그 xml도 설정되어있던터라 아리송했음 해결 mac과 예뮬레이터(실제 핸드폰)이 다른 network에 속해 있었음 느낀점 호스팅 서버에 구동을 하는게 아니면 네트워크는 같은걸로 항상 설정해 두자

    Custom ListView 만들기(1/2) - 설계

    Custom ListView 만들기(1/2) - 설계

    클래스 다이어그램 Adapter를 실체화한 BaseAdapter를 상속받아 CustomAdapter 클래스를 직접 만들었습니다. 하지만, BaseAdapter의 추가기능은 사용하지 않아 BaseAdapter는 다이어그램에서 제외했습니다. Bean의 getter setter가 image밖에 없는데, 흐린눈 부탁드립니다 ㅠㅠ 구조도 Item.xml : 리스트에 넣을 item의 레이아웃 Bean : 리스트에 넣을 데이터 ArrayList : bean의 집합 Adapter : CustomAdapter 구현 순서 1. bean class 구현 2. item.xml 구현 3. CustomAdapter 클래스 구현 4. item에 data 바인딩 *Adapter의 getView()에서 구현 a. 부모뷰를 parent..

    LayoutInflater는 무엇일까?

    LayoutInflater는 무엇일까?

    Inflater는 부풀리다 라는 사전적 의미를 가지고 있습니다. 그러면 LayoutInflater는 레이아웃을 부풀린다는 뜻인데, 왜 부풀리다고 하는 것일까요? 알아봅시다! 우선, 클래스에서 레이아웃을 어떻게 매칭시키는지부터 알아야 합니다. Activity를 생성하게 되면 클래스파일 하나와 레이아웃파일 하나가 같이 생성 onCreate메소드가 자동으로 생성 setContentView(R.layout.activity_order_dialog) 이 바로 클래스와 레이아웃을 메모리에 로드 이로써 findViewById와 같은 메소드로 레이아웃 리소스드들을 id를 매개변수로 주어 핸들링 할 수 있는 것이죠. 그런데, 커스텀 리스트뷰나 커스텀 다이얼로그에 보여줄 레이아웃을 만드 경우에는 XML resource파일만..

    JSP 팀 프로젝트 후기

    JSP 팀 프로젝트 후기

    서론 저번주? 쯤에 10일간 진행됬던 팀 프로젝트도 끝이 났습니다. 과거에도 반려동물 쇼핑몰 홈페이지를 만든 적이 있었는데, php로 작업을 했었습니다. 참고하려고 들어가봤더니 붓스트랩 떡칠이여서 다 엑박이 되어있더군요 허허(무려 3년전) Java Script는 처음 써보는거라 전심전력으로 열심히 작업해 봤습니다. 팀원분들도 열정이 넘치셔서 정말 퀄리티좋은 결과물이 나왔습니다. 개발환경 IDE : Eclips EE 11.0.11 2021-03 DB : MySQL 8.0.3 언어 : JSP, JAVA 11, Java Script 프레임워크 : Jquery 3.5.1 라이브러리 : JSTL 12.5, JSON 1.1.1, cos-20.08 API : javax.mail, kakao map API 협업 툴 :..

    JSP-톰캣 DataSource-server context를 사용한 DB connect

    JSP-톰캣 DataSource-server context를 사용한 DB connect

    아무래도 직접 소스에 직접 입력해서 로그인하게 되면 노출되는 정보가 많죠? 이방법을 사용하면 db를 사용하는 프로젝트에는 직접적인 정보는 아무것도 남지 않게 됩니다. 보시죠. 톰캣 server의 디렉토리 하위에 보면 context.xml 안에 아래의 코드를 입력하면 됩니다. name : 리소스 이름 maxTotal : 동시에 사용할 수 있는 최대 커넥션 개수 (기본 8개) maxIdle : Connection Pool에 반납할 때 최대로 유지될 수 있는 커넥션 개수 (기본 개) maxWaitMillis : pool이 고갈되었을 경우 최대 대기 시간 (ms단위, 기본 -1 (무한)) 이렇게 입력해두면 아래와 같이 호출하면 됩니다. public class dbConntect { DataSource dataS..

    MVC 패턴

    MVC 패턴

    MVC란? Model, View, Controller의 앞글자를 따 MVC라 부른다. 위의 이름대로 어플리케이션을 세개지 역할로 구분해 개발하는 개발 방법론이다. Model 사용자가 요청한 결과를 도출하기 위해 일련의 작업을 수행 View 결과 화면을 표시 Controller 흐름 제어 및 사용자의 요청 처리 장점 모델과 뷰에 로직이 변경되더라도 서로 영향이 없어 유지보수 및 확장이 용이 MVC model 1 model에 비즈니스 로직을 처리하는 코드와 웹 브라우저에 결과를 출력하는 코드가 섞임 MVC model2 모든 요청은 서블릿이 받아서 알맞은 모델을 호출한다. 비즈니스 로직의 처리와 결과 출력 처리를 분리한다.

    JS 상호작용되는 달력 만들기 (5) - 예약달력 (하)

    JS 상호작용되는 달력 만들기 (5) - 예약달력 (하)

    서론 너무 프론트에만 치우친 포스팅이 될 것 같아서 글을 하 나 더 썻습니다. MVC패턴에서 달력을 출력하기 위한 백엔드 작업을 기술하겠습니다. View는 두개의 게시글에 걸쳐서 썼으니 제외하겠습니다. 목차 1. DB ㄱ. Place ㄴ. Share ㄷ. Rental 2. 구조 3. 데이터 정제 ㄱ. 총 이용가능시간 계산 ㄴ. 예약확인용 rental의 DTO 생성 ㄷ. 이번달과 다음달로 데이터를 나눠 담을 준비 ㄹ. DAO를 호출해 rental의 data를 정제 후 이번달, 다음달로 분류 ㅁ. 달별로 나눈 데이터를 일별로 나눈다 a. 사용할 맵 생성 b. rental을 Dto_Refine_rental로 정제해서 map에 입력 4. 데이터 전송 준비 ㄱ. JSONArray선언 ㄴ. 변환 및 예약이 가득찬 ..

    JS 상호작용되는 달력 만들기 (4) - 예약달력 (중)

    JS 상호작용되는 달력 만들기 (4) - 예약달력 (중)

    서론 글이 너무 길어져서 달력과 시간표로 나눠서 작성하게 되었습니다. 지난번에 이어서 추가로 이어집니다. 개발환경 IDE : Eclipse 사용 언어 : HTML, JSP, Java script, SQL 사용 라이브러리 : JSTL, JSON 목차 1. 가정 2. 제약사항 3. 구조 ㄱ. HTML ㄴ. Java script 4. 시간표 구성 ㄱ. 지금 만들어진 달력이 현재 달력인지 확인 ㄴ. 요일입력에 내용 추가 ㄷ. 예약불가일자 처리 (1/2) - 요일생성 안 ㄹ. 예약불가일 예외처리 ㅁ. 예약가능일 클릭이벤트 추가 ㅂ. 예약불가일자 처리 (2/2) - 요일생성 밖 5. 예약정보 출력 1. 가정 예약되어있는 데이터는 JSONArray로 받아옴 JSONArray에 담긴 JSONObject의 키는 date..

    JS 상호작용되는 달력 만들기 (3) - 예약달력 (상)

    JS 상호작용되는 달력 만들기 (3) - 예약달력 (상)

    서론 지난번엔 간단한 달력을 만들었습니다. 이번엔 Service가 제공한 data를 바탕으로 상호작용을 제한하고 추가적으로 시간표까지 출력하는 시스템입니다. 기초적인 달력은 지난번 포스팅을 했으므로, 기본적인 사항은 건너뛰도록 하겠습니다. 한번에 작성하려다 보니 내용이 너무 길어져서 달력과 시간표를 기준으로 상/하로 나누어서 포스팅하였습니다. 개발환경 IDE : Eclipse 사용 언어 : HTML, JSP, Java script, SQL 사용 라이브러리 : JSTL, JSON 목차 1. 가정 2. 제약사항 3. 구조 ㄱ. HTML ㄴ. Java script 4. 달력 구성 ㄱ. 지금 만들어진 달력이 현재 달력인지 확인 ㄴ. 요일입력에 내용 추가 ㄷ. 예약불가일자 처리 (1/2) - 요일생성 안 ㄹ. 예..

    JS 상호작용되는 달력 만들기 (2) - 날짜 검색 달력

    JS 상호작용되는 달력 만들기 (2) - 날짜 검색 달력

    순서 1. 구조 ㄱ. HTML ㄴ. Java script 2. 날짜를 구하기 위한 준비 3. 달력 구성하기 ㄱ. 달력을 만들어서 출력할 table 및 tableTitle을 참조 ㄴ. 현재 달력의 첫날과 마지막날을 구함 ㄷ. 작성할 테이블을 초기화 ㄹ. 달의 첫 날까지 빈 셀을 생성합니다. ㅁ. 본격적으로 달력에 요일 채우기 ㅂ. 달력의 마지막날 뒤 빈칸 행으로 채우기 4. 선택한 일자를 출력하기 5. 이전달, 다음달로 이동하기 6. 추가작업 1. 구조 ㄱ. HTML ◀ yyyy년 m월 ▶ 일 월 화 수 목 금 토 기억해야할 것 Table id : calendar Table title id : calendarTitle 테이블 초기화시엔 두번째 row까지 남긴다 (타이틀, 요일표시) ㄴ. Java scrip..

    JS 상호작용되는 달력 만들기 (1) - 시작하며

    JS 상호작용되는 달력 만들기 (1) - 시작하며

    제작이유 프로젝트도중 예약관련 기능을 담당하게 되었습니다. 사용자가 쉽게 예약을 하려면 달력이 필수라고 생각하였구요, 달력이 쓰이는 부분도 많아 여러 버전의 달력을 만들게 되었습니다. 개발환경 IDE : Eclipes 사용언어 : Java Script, HTML5 구현 결과 1. 장소검색시 날짜검색 달력 2. 예약페이지에서의 달력 3. 예약확인 페이지의 달력 주요기능 1. 공통 알맞은 달력 출력 전달, 다다음달 이동 불가능 (예약가능일자 : 오늘기준 다음날~+30일 이후) 요일 선택시 해당 일자 표시 2. 예약자측 달력 대여 불가능 일자 비활성화 대여자가 입력한 요일 예약이 가득찬 날 오늘기준으로 내일~30일이 아닌 모든 날자 클릭시 시간표 출력 시간표에 예약불가능한 시간 비활성화 선택한 일자와 시간을 ..

    JSP 이미지CRUD가 가능한 페이징된 게시판 구현

    JSP 이미지CRUD가 가능한 페이징된 게시판 구현

    서론 작성해둔 이유는 전에 포스팅한 페이징 소스와 같습니다. 주제가 공간대여 홈페이지다 보니 아무리 파트를 나눠서 작업해도 이미지 업로드 기능이 거의 모든 파트에 필요했었습니다. 다들 CRUD야 수업떄 해봤지만 이미지 업로드까지는 쌩으로 습득하다가 프로젝트 작업이 지연될 것 같아서, 각자 작업물에 맞게 수정해서 쓸수있게끔 프로토 타입 소스를 제작해서 공유했습니다. 추가로 게시판 파트를 위해 업로드된 파일을 다운로드하는 기능도 추가해 뒀습니다. MVC model2로 개발했지만, 구조는 편의상 MVCS구조 나타냈구요, 이번엔 소스가 굉징히 많아서 깃으로 보시는게 좋습니다 ^^ 본문에서는 간단하게 포스팅하겠습니다. 주석도 엄청 상세히 달려있답니다! https://github.com/gr2nsky/ProtoTy..

    JSP 페이징된 게시판 만들기

    JSP 페이징된 게시판 만들기

    서론 이번에 진행한 JSP 프로젝트가 다른팀에 비해서 인원이 한명 많았긴 했지만... 다들 이것저것 넣고싶은걸 추가하다 보니 정말 볼륨이 엄청났었습니다 ㅋㅋㅋ... 덕분에 다들 잠도 줄여가면서 플젝기간 내내 피곤에 쩔어 살았었죠 여튼, 그렇게 설계가 되고나서... 저도 JSP는 처음 해보지만 PHP로는 이미 웹사이트를 구축해봤으니 팀원들의 고민과 시간단축을 위해 공통기능들을 변형해서 적용만 하게끔 일종의 프로토타입 소스를 제작해서 제공했습니다. 결과적으로 대성공해서 시간단축에 많은 도움이 되었었는데, 이번에 포스팅하는 소스가 바로 그 소스입니다 ㅎ... 주석을 엄청 상세하게 달아둿기 때문에 설명은 주석으로 대체하겠습니다. 해당 소스는 DB의 글을 조회만 할 수 있으며 작성 및 수정 삭제는 불가능합니다. ..