컴퓨터공부 362

Retrofit으로 REST API 사용하기

지난 글은 라이브러리 사용하지 않고, REST API를 사용하는 것을 해보았다면, 이제는 Retrofit이라는 라이브러리를 통해서 REST API를 사용하는 것을 해보겠다. 목표 : Retrofit으로 REST API를 사용해보자. 작업 순서1. 받을 response를 바탕으로 Contributor을 먼저 만들고2. Retrofit을 통해서 통신할 interface 모듈을 만들고3. Retrofit 인스턴스를 생성해서 사용한다. 별도 HTTP를 통신을 할 필요 없고, 파싱도 알아서 해준다. 거기다 속도도 더 빠르다. 짱임... public class Contributor { private String login; public String getLogin() { return login; } public v..

REST API 사용하기 - GET

요즘에 REST API 소스를 직접 짜는 사람은 적을 것이라고 예상한다. (레트로핏 같은 걸 쓰겠지...?)그래도 의미가 있지 않을까 해서 정리 해본다. https://api.github.com 로 접속해서 그 중에 "current_user_url" 항목을 화면에 띄우는 예제이다. /* * 목표 * 1. AsyncTask와 http url connection을 이용한 http 호출 만들기 * 2. 리턴된 json을 파싱하는 방법을 통하여 JSON 객체 다루는 법 습득하기 * 3. json 객체에서 원하는 데이터 빼내서 화면에 출력하기 * * 작업 순서 * 1. 받을 response를 바탕으로 HubObject를 먼저 만들고 * 2. 통신할 모듈과 파싱할 모듈을 APIClient로 만들고 * 3. APIC..

CustomDialogOnAttach Fragment 예제

CustomDialog Fragment 예제의 연장선이다.그 전 예제는 그저 dialog만 띄우고 끝이 났다. 이제는 dialog를 띄우고 '확인', '취소' 중에 어떤 것을 선택했는지 확인하는 예제이다.(https://developer.android.com/guide/topics/ui/dialogs.html?hl=ko#PassingEvents 중 "이벤트를 대화상자의 호스트에 다시 전달" 참조) ServerTestDialogFragment.java public class ServerTestDialogFragment extends DialogFragment { public interface DialogListener{ public void onDialogPositiveClick(DialogFragment..

TDD 교육(실습) 정리

TDD교육을 받은지 좀 됐는데... 미루다 이제야 정리를 한다.첨부의 자료를 참고하면 Junit 테스트 방법을 알 수 있다. 내가 별로 추가해야할 건 없어 보인다. 다만 그 전에 이해해야 하는 TDD Cycle를 알고 가면 좋을 것 같다. 1. 시작은.. test가 실패할 case를 먼저 작성하는 것이다. 1. 이건... 정상적은 class에서는 성공했을 case이지만 현재 구현에서는 fail이 될 case를 작성하라는 것이다. 즉, 정상적인 TC작성이다. ex) public class FizzBuzzTest {// Arrange - GivenFizz fizzBuzz = new Fizz();@Testpublic void fizz_should_say_number_for_1() {//// Arrange - ..

CustomDialog Fragment 예제

DialogFragment 를 이용해서 팝업이 뜨는 것을 구현해 봤다..아래 구문은 다음에 쓰일 수도 있을 것 같아서 표시해둔다. * DialogFragment를 호출하는 것이 Fragment일 때, support 버전을 맞춰줘야지 컴파일 문제가 없어진다. 즉, android.support.v7.app의 Fragment는 android.support.v7.app.DialogFragment의 DialogFragment를 호출해야 하고, android.support.v4.app의 Fragment는 android.support.v4.app.DialogFragment의 DialogFragment를 호출해야 함Fragment prev = fm.findFragmentByTag(DIALOG_TAG); package ..

파일 upload 같은 걸 할 때 주의할 것.

현상 : 파일 업로드 할 때, 보통 Thread를 사용한다. 근데 보통 파일을 여러개 보내기 때문에 thread 함수를 for문으로 감싸는 경우가 쉽게 생긴다.문제 : 이러면 for문 만큼 thread가 생기게 되기에 정상 동작을 안하거나 리소스가 부족할 수 있다.해결 : 파일을 하나씩 올릴 때 마다 다음 for문을 돌릴 수 있도록 수정해야 한다.

arraylist 와 list 차이점

arraylist 와 list 차이점은 아래 글과 링크로 대신합니다. arraylist 는 아이템타입이 object형입니다. 레퍼런스타입을 넣을때는 상관없지만 value타입을 넣는다면 box과 unbox이 일어나서 퍼포먼스가 좋지 않죠 ArrayList는 타입을 지정하지 않기 때문에, 한개의 컬렉션에서 다양한 타입의 개체들을 담을때에는 상관 없지만, 대부분 한개의 컬렉션에서 한개의 타입들의 컬렉션을 유지한 상황에서는 컬렉션 값을 가져올때, 일일이 typecasting을 해줘야 하는 번거로움과, 캐스팅 한 개체가 넣을때 썼던 개체가 다를때에 컴파일 타임에서 오류를 발견할 수가 없습니다. 참고 & 출처 : http://seeit.kr/36 http://www.hoons.net/board/qacshap/con..

list, vector 배열의 크기를 아는 방법

list input[4]; 위와 같은 선언은 list arry를 4개 선언한 것이다.C로 치면 2차원 배열쯤으로 이해할 수 있다.하지만 이럴 경우 다른 함수에서 input 변수를 사용하고자 할 때, list array의 사이즈는 어떻게 구할까? 힘들게 배열의 크기를 알려고 하지말고list나 vector의 멤버를 list로 만들어서 사이즈를 확인해라. 그럼 굳이 사이즈 신경 안 써도된다. std::list > myListOfLists; // Linked list of linked listsstd::vector > myVectorOfLists; // Better, a vector is more like an arraystd::array this..

알고리즘 문제 풀때, 파일 입출력으로 입출력하고 싶을 때

각종 TC를 직접 손으로 집어 넣는 방법은... 시간이 많이 뺏긴다.그래서 좀 찾아봤는데.. 분명 뭔가 있었던 것 같은데 못 찾았다.. 그냥 구글링해서 대충 만들었는데.. 동작은 한다... 일단 이렇게 가야지.. + // ConsoleApplication1.cpp : Defines the entry point for the console application.// #include "stdafx.h"#include #include // std::ifstream using namespace std; int main(){std::ifstream cin("input.txt", ios::in);std::ofstream cout("output.txt", ios::out); int a; cin >> a; cout