디바이스에 설치되어 있는 apk를 제거하는 방법


안드로이드 SDK가 설치된 폴더의 adb.exe 파일이 있는 platform-tools 폴더로 

이동해서 도스 창을 띄운 후 아래와 같은 명령을 통해서 설치된 앱(apk)를 제거할 

수 있다.


이때 중요한 것은 해당 앱의 패키지명으로 제거한다는 사실이다.

만일 com.sample.myapp.MyTalk.apk를 제거 할려면 파일명을 제외한 

패키지 명으로 제거한다.


C:\SDK설치 폴더...\platform-tools>adb uninstall com.sample.myapp

Success



앱의 설치 위치 지정하기(내장 메모리, 외장 메모리)


AndroidManifest.xml 에 아래와 같이 installLocation 을 추가 한다.


<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.freecatz.test"

    android:versionCode="3"

    android:versionName="1.6"

    android:installLocation="preferExternal" >


auto : 자동으로 내장메모리에 우선 설치 하나 공간이 없는 경우 외장메모리에 설치.

internalOnly : 내장 메모리에 설치.

preferExternal : 외장메모리에 설치를 우선으로 하나 공간이 없는 경우 내장메모리에 설치.



◈ mysql에 접속하기

d:\>mysql -uroot -papmset

 ==> 여기서 root는 id, apmset은 비밀번호

 ==> mysql -u계정id, -p계정비밀번호


◈ mysql이 관리하는 데이타베이스들 목록 보기

mysql>show databases;


◈ 원하는 데이터베이스 선택/사용하기

mysql>use phpmyadmin;

 ==> 여기서 phpmyadmin은 DB 이름


◈ 선택된 데이타베이스(현재 사용하는 데이타베이스)의 테이블 목록 보기

mysql>show tables;


◈ 새로운 데이터베이스 생성

mysql>create database 데이터베이스명;


◈ 데이터베이스 삭제

mysql>drop database 데이터베이스명;

mysql>drop database meditab;


◈ 특정 테이블 구조 보기

mysql>desc 테이블명;

 ==> 이 명령 전에 먼저 데이터베이스를 사용하는 "mysql>use 데이터베이스명;"이 선행되어야한다.


◈ mysql 데이타베이스의 user 테이블에 있는 사용자 계정 정보 보기

mysql>select host, user, password from user;

 ==> user라는 테이블로부터 host, user, password라는 필드의 내용을 보여줌

 ==> user 테이블의 필드들 정보를 보려면 "desc 테이블명;"을 통해서 보면 host, user, password....등의 필드 이름들을 볼 수 있다.


◈ mysql 이라는 데이타베이스의 user 테이블에 새로운 사용자 계정 정보 등록하기

mysql>insert into 테이블명 (필드1, 필드2, 필드3) values (필드1_값, 필드2_값, 필드3_값);

ex) mysql> insert into user (host, user, password) values ('localhost', 'uljavajoe', password('kog'));

 ==> host에는 MySQL이 있는 서버의 URL 주소가 입력된다.

 ==> 여기서 비밀번호를 셋팅할 때는 반드시 password('kog')와 같은 식으로 해야지 되지 그냥 ('localhost', 'uljavajoe', 'kog')와 같이 하면 나중에

이 계정과 이 비밀번호를 mysql에 접속할 때 다음과 같은 에러 발생한다.


ERROR 1045 (28000): Access denied for user 'uljavajoe'@'localhost' (using password: YES)


◈ 레코드 수정 명령
update 레코드명 set 필드명='필드값' where 조건식
 mysql>update info set age=35 where name='홍길동';


◈ 특정 레코드 삭제 명령
delete from 레코드명 where 조건식;
mysql>delete from info where name='홍길동';

-. 전체 레코드 삭제
mysql>delete from info;


◈ 데이터베이스 백업하기
c:\>mysqldump -uuljavajoe -pkog joe > joebackup


◈ 데이터베이스 백업
c:\>mysqldump -u계정id -p계정비밀번호 데이터베이스이름 > 백업할이름.확장자
c:\>mysqldump -uuljavajoe -pkog joe > joe_backup.sql
===> 백업되는 joe_backup.sql이라는 이름으로 저장되는 내용은 SQL 명령 형태로 데이터가 저장된다. 데이터베이스 내용 자체가 저장되는 것은 아니다.
이렇게 SQL 명령 형태로 저장된 내용을 이용해서 나중에 백업 데이터베이스를 복원(?)(생성) 하는 식이다.


◈ 데이터베이스 복원
c:\>mysql -u계정id -p계정비밀번호 복원될_데이터베이스이름 < 백업한파일이름.확장자
c:\>mysql -ujsisx -pkog joe2 < joe_backup.sql
===> 이때 여기서 다른 계정인 jsisx와 kog가 준비되어 있어야 하고 복원될 데이터베이스인 joe2도 미리 준비가 되어 있어야만 한다.


◈ php에서 MySql에 접속하는 함수
mysql_connect(데이터베이스_접속주소, 계정id, 계정비번)
resource mysql_connect(string hostname [:port], string username, string password)
 -. hostname : 서버의 호스트명 또는 '호스트명:포트번호'
 -. username : 사용자 계정 id
 -. pssword : 사용자 계정 비번

⇒ 기능 : php와 MySql을 연결한다. d:\>mysql -uuljavaje -pkog와 같은 기능

⇒ 반환값
 -. 성공 : 식별자 번호(resource) --> 이 값은 0 보다 큰 임의 수인데 시스템 내부적으로 사용하는 값.
 -. 실패 : false(실제 값은 0이다. C언어에서 나온 php이므로 C언어에서 false는 0이다)

⇒ 용례
  $mConnect = mysql_connect("localhost", "uljavajoe", "kog");

◈ 테이블에 있는 특정 필드 삭제
mysql>alter table 테이블명 drop 삭제할필드명;
msyql>alter table info drop age;


◈ 필드이름 수정명령
mysql>alter table 테이블명 change 이전필드명 바꿀필드명 바꿀필드타입;
mysql>alter table info change addr address varchar(80);


◈ 필드 타입 수정명령
mysql>alter table 테이블명 modify 필드명 필드타입;
mysql>alter table info modify addr char(70);


◈ 테이블명 수정 명령
mysql>alter table 테이블명 rename 새테이블명;
mysql>alter table info rename person;


◈ 테이블 삭제 명령
mysql>drop table 테이블명;
mysql>drop table info;


◈ sql 쿼리 문 일괄 실행
c:\>mysql -u사용자계정 -p비밀번호 데이터베이스명 < 일괄처리명령문파일명.확장자
c:\>mysql -ujsisx -p1234 joe < info.txt


◈ 레코드 삽입 명령
mysql>insert into 레코드명 (필드명1, 필드명2, 필듬여3,...) values('필드값1', '필드값2', '필드값3'...);
insert into info (num, name, age, addr) values (1, '홍길동', 23, '대구시 북구 산격로 7');


◈ 검색명령
 -. 이름이 김씨 성을 가진 모든 사람
 mysql>select * from info where name like '김%';

 -. 나이가 20대인 사람 모두
 mysql>select * from info where age>=20 and age<30;

 -. 이름 가운데 글자에 '수'자가 있는 사람 모두
 mysql>select * from info where name like '__수%';
  ===> 여기서 _는 임의의 글자 한 자, %는 임의의 여러 글자. 그런데 한글은 2바이트 이므로 _를 2개로 표현

 -. 나이를 기준으로 오름차순 검색
 mysql>select * from info order by age;

 -. 이름을 기준으로 내림차순 검색(이름이 한글인 경우는 sort가 잘 안되는데 이때는 MySQL 설치시 한글이 제대로 되도록 해당 파라미터를 옵션으로 설정해야됨)
 mysql>select * from info order by name desc;
 혹은 binary() 함수를 이용하면 한글도 정상적으로 sort가 된다.
 mysql>select * from order by binary(name);



Context에 대한 이해

  • Context를 이해하는 걸 다들 어려워 한다. 질문글에 답을 달다가 갑자기 정리가 깔끔하게 되서....

    하나의 application이 실행되기 위해서는 그 밑바탕에 깔려져야 하는 많은 정보들과 환경들이 필요하다. 
    그 정보들과 환경들을 안드로이드 시스템이 제공해 준다.
    application 실행을 위해 밑바탕에 깔려져 있는 정보들과 환경들을 Context라 한다.
    따라서 이 Context에는 안드로이 시스템이 제공해주는 유용한 많은 정보들이 있다.
    따라서 이 Context를 통해서 안드로이드 시스템이 제공해주는 많은 유용한 정보들을 
    꺼집어 낼수 있다(getSystemService() 메소드로).

    근데 Context를 필요로하는 곳에 Activity 객체인 this를 념길수 있는 이유는  
    Activity가  Context를 상속 받았기 때문에 Activity는 Context의 모든 정보를 가지고 있는 것이이다. 
    그래서 Context를 필요로 하는 곳에서 Activity의 객체를 넘길수 있는 것이다.

    Context를 얻을 수 있는 몇 가지 방법
    -. Activity 객체를 통해서. Activity 객체 자체가 Context이기도 하기 때문에 Context를   
       필요로하는 곳에 Activity 객체인 this를 사용하면 된다.
    -. View의 객체가 있으면 View의 getContext()를 통해서. View의 객체가 없는 상황이면 
       View v = new View(activity.this);로 만들면된다. 이때 View를 전역적으로 선언하면
       된다.
    -. Context 클래스의 getApplicationContext()를 통해서
    이정도면 Context를 못 구할 일이 별로 없을 것이다.



+ Recent posts