안녕하세요 박스여우입니다.오늘은 안드로이드 에서 Cache를 사용하는 방법에 대해 알아보겠습니다. ■ 캐시(Cache) 란?캐시는 웹브라우저의 쿠키와 비슷한 느낌으로 데이터를 임시로 저장해 두는 장소를 말합니다. 앱을 만들어 서비스를 할 때 접속정보나 아이디 기억 등과 같은 굳이 서버에 저장할 필요가 없거나 서버에 저장하기 어려운 정보나 데이터들을 해결하기 위해 사용자의 기기에 저장해야 하는데, 이를 위해 READ,WRITE_EXTERNAL_STORAGE 퍼미션을 받아서 파일을 다루기는 좀 그렇고 해서! 저는 이를 캐시를 통해 해결했습니다. 캐시는 스토리지 접근 읽기 쓰기 퍼미션을 받지 않아도 파일을 다룰 수 있습니다. ■ 캐시(Cache) 사용하기 123456789101112131415161718192..
안녕하세요 박스여우입니다.이번에는 안드로이드 스튜디오에서 패키지명을 변경하는 방법을 알아보겠습니다. Google Play Store에 앱을 등록하려 하니 com.example 패키지 명은 허용되지 않는다고 합니다. 그래서 패키지 명을 변경해야할 필요가 있습니다. 저처럼 패키지명이 com.example로 바로 나와버리는 경우나 모든 패키지가 하나로 표시되는 경우에는 위의 톱니바퀴모양을 눌러 Comapct Empty Middle Packages 체크를 푸시면 됩니다. 그다음에 바꿀 패키지를 우클릭하여 Refactor -> Rename을 누르시면 아래처럼 창이 나오게 됩니다. 저같은 경우에는 패키지와 디렉토리 모두 이름을 변경해 주었습니다! 그리고 아래 콘솔창(?)에 뜨는 부분을 클릭해서 Build Confi..
■ Resources에 추가한 파일 사용하기 ■ 일반파일Byte[] file = Properties.Resources.리소스이름;추가된 파일 리소스는 Byte Array로 취급됩니다. ■ txt 파일String str = Properties.Resources.리소스이름;txt파일인 경우에는 바로 String형으로 읽어들일 수 있습니다. ■ URL로 부터 파일 받아오기c#은 Java에 비해서 URL로 부터 파일을 받아올 수 있는 굉장히 간편한 메소드가 마련되어 있더군요var webClient = new WebClient();byte[] Bytes = webClient.DownloadData(URL);하지만 간단하 사용할 수 있는 만큼 예외처리를 잘해서 사용해야 합니다. URL로부터 파일을 다운로드 받을 수..
■ Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'만약 linux 환경에서 mysql 을 설치했을시에 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 요런 오류가 발생한다면/etc/mysql/my.cnf 를 열어서 socket 부분의 /var/run/mysqld/mysqld.sock를 /var/lib/mysql/mysql.sock로 변경하면 해결. ■ linux 환경에 mysql 설치, 삭제mysql 검색 : sudo apt-cache search mysql-servermysql 설치 : sudo apt-get i..
안녕하세요 박스여우입니다.이번에는 AES란 무엇이고 Java로 구현한 AES 암호화/복호화에 대해서 알아보겠습니다. ■ AES(Advanced Encryption Standard) 암호화 알고리즘AES 는 벨기에의 2명의 암호학자로부터 탄생한 암호화 알고리즘 입니다. NIST는 기밀문서를 안전하게 암호화 시켜 보호하기 위해 DES 암호화 알고리즘을 대체할 새로운 암호화 알고리즘이 필요했고, 1997년에 보다 강력한 알고리즘을 찾기 위한 공모전를 진행했습니다. 그중 MARS, RC6, Rijndael, Serpent, Twofish 이 다섯 개의 암호화 알고리즘이 후보에 올랐고, 결국 Rijndael(레인달) 암호화 알고리즘이 체택되었습니다. 이때 AES 후보 알고리즘들은 다양한 방식의 공격에도 안정성을 ..
안녕하세요 박스여우입니다.이번엔 수 많은 기기들을 구별할 수 있는 고유 식별자 UUID를 알아보겠습니다. ■ UUID - Universally unique identifier : 범용고유식별자기존에는 수 많은 디바이스들을 구별하기 위해서 IP나 MAC Address를 사용햇습니다. 하지만, 모바일 디바이스는 네트워크를 ON OFF만 해도 IP가 변경되고, 위치에 따라 수시로 바뀔 수도 있고, 여러 대의 스마트폰이 한 개의 WIFI를 통해 접속하거나 DHCP(내부 IP 자동할당)기능을 끄고 다른 기기에다 이전에 사용했던 내부 ip를 할당하게 되는등의 상황을 고려하면 ip는 절대 고유한 값을 가진다고 볼 수 없습니다. 또, Mac Address는 네트워크 카드의 고유 값이라고 하지만, 만약 wifi를 거치게..
안녕하세요 박스여우입니다.이번에는 안드로이드의 인텐트(Intent)에 대해 알아보겠습니다. ■ Intent - 인텐트인텐트는 안드로이드 OS 상에서 서로 다른 객체들 간에 자료를 전달하거나 호출해 실행하는 단위 입니다. Intent는 애플리케이션 내부와 애플리케이션 간의 메시지를 전달 할 때 사용되는 클래스 입니다. 안드로이드 기기 내의 모든 애플리케이션 컴포넌트 간의 상호작용을 할 수 있습니다. (쉽게 말하자면 인텐트를 통해 해당 애플리케이션에서 다른 애플리케이션을 실행시킨다던가, 데이터들을 주고 받을 수 있습니다.)인텐트는 명시적 인텐트(Explicit Intent)와 암시적 인텐트(Implicit Intent) 두 가지로 나눌 수 있습니다. ■ Explicit Intent - 명시적 인텐트명시적 인..
안녕하세요 박스여우입니다.이번에는 객체지향과 클래스를 알아보겠습니다. ■ 객체지향 - Object-Oriented객체지향이라는 의미를 알아보기 위해 먼저 객체(Object)에 대해 알아봅시다.객체(Object)란 사전적 의미로는 실세계에 존재하는 모든 사물을 일컫는 말입니다. 지금 현재 우리 주의에서 볼 수 있는 모든 것들을 객체라고 하지요. 그럼 객체지향이란? 이런 실세계에 존재하는 객체를 컴퓨터 상에서 표현하는 것을 말합니다. ■ 객체지향의 특징객체지향은 코드의 재사용성이 높습니다. 클래스 를통해 객체를 정의해 두면, 그 객체를 여러 프로젝트나 프로그램등에 재사용 될 수 있습니다. 객체지향의 특징 두 번째로는 코드의 관리가 용이합니다. 클래스별로 속성과 기능을 정의해 두었기 때문에 클래스만 수정하거나..
얼마전에 안드로이드 스튜디오를 업데이트 했더니 GCMService에서 Notification.setLatestEventInfo 부분에서 오류가 발생하더군요. 구글링 하여 문서를 찾아본 결과 CompleSdkVersion이 23이상일 경우 setLatestEventInfo 분이 삭제되어서 사용할 수 없게 되었다는 소식이 있었습니다. 그래서 해당 코드를 사용하지 않고 Notification Builder를 사용하여 동일한 Notification이 띄워지도록 하겠습니다. 1234567891011121314 String msg = intent.getStringExtra("msg"); try { msg = URLDecoder.decode(msg, "EUC-KR"); } catch (UnsupportedEncodi..