달력

3

« 2024/3 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2011. 9. 14. 21:28

Distinct 처리과정 Study/Database2011. 9. 14. 21:28


• 9i 버젼까지는 Distinct 키워드 처리를 위해서 
  SELECT된 record를 SORT(정렬)한 후에, 중복제거를 합니다.
  이 때 메모리를 많이 사용합니다.

• 10g~ 버젼부터는 메모리 사용량을 줄이기 위해
  정렬방법을 안쓰고 Hash 메커니즘을 이용해서 중복제거를 합니다.
  따라서 아래처럼 결과가 정렬되지 않습니다.

  ※distinct 에서 order by 구문을 이용할 경우 기존의 9i버전때까지의 distinct 처럼
    SORT UNIQUE  로 바뀐다. 그냥 distinct 후 받아온 값을 정렬해주는 메소드를 정의한다.

:
Posted by 유쾌한순례자
2011. 9. 14. 21:27

q연산자 Study/Database2011. 9. 14. 21:27


 q연산자! Literal Character String 처럼 작은따음표 안에 작음 따음표를 찍어야 되는 경우 처럼 사용할때 편리하다
   ※단 10g 이상에만 지원
   q'[문자열]' ,[] , {},(),<>,!!
:
Posted by 유쾌한순례자
2011. 9. 14. 21:27

sqlplus 모양 정리 Study/Database2011. 9. 14. 21:27

sql plus에서 컬럼명이 줄줄이 이어져서 불편했었지 ㅜㅜ

SQL> col last_name format a15  /* 출력결과의 Heading이 LAST_NAME일 경우 */
       /* 15글자 공간사용하여 출력.             */
     col job_id format a10

     col salary format 99999

     set pagesize 999          /* 한 페이지를 999 라인으로 사용         */
       /* 999 라인마다 Heading이 출력됩니다.    */
     set linesize 200          /* 한 라인의 길이를 200 바이트만 제한    */


     col last_name format a50



:
Posted by 유쾌한순례자
2011. 9. 14. 21:26

select * 은 별로 좋지 않다. Study/Database2011. 9. 14. 21:26


 select * 등 * 최대한 안쓰는게 좋다 예를 들어 컬럼 하나당 1메가라고 치면 11개의 컬럼이  전송되면 11메가 아닌가.

신경쓰자



:
Posted by 유쾌한순례자
OCP 수업중 들었던 내용 정리


1) FROM 절에 테이블 이름을 적을때 스키마.테이블이름 습관들기

2) 테이블 보는 명령어인 desc는 describe의 약어 였다... orz

3) AS 는 왠만하면 약식표기법이 아닌 표준문법으로 쓰자. (이유는 일부 리포팅툴에서 약식표기를 인식 못할때가 많음)

4) 대소문자 변환 함수는 아예 insert 당시에 대소문자 변화 함수를 사용해서 입력해야한다. 




  

'Study > Database' 카테고리의 다른 글

Distinct 처리과정  (0) 2011.09.14
q연산자  (0) 2011.09.14
sqlplus 모양 정리  (0) 2011.09.14
select * 은 별로 좋지 않다.  (0) 2011.09.14
우분투 10.04 에서 오라클 11g r2 설치하기.  (0) 2011.06.21
우분투 오라글 외부접속 설정법  (0) 2011.06.21
if not exists  (0) 2010.08.22
mssql 원하는 부분외에 xx로 표현  (0) 2010.07.08
게시판 다음글 이전글  (0) 2010.06.26
오라클에서 제약조건 보기 (관리자계정)  (0) 2010.06.26
:
Posted by 유쾌한순례자
2011. 9. 14. 21:21

getServletContext() Study/WEB2011. 9. 14. 21:21

원래 이거 그냥 써도 되었던거 같은데... Spring에서는 메소드 자체를 인식 못하는거 같았다. 그래서 session으로 만들어둠

session.getServletContext().getRealPath("/images/") 

사용용도는 현재 servlet의 절대경로를 구해서 이미지 사용하려고...
:
Posted by 유쾌한순례자
1) maven 설치

http://maven.apache.org 에서 다운 받아 압축을 풀고 PATH를 잡아줌

2) maven 설치 여부 확인

cmd - > mvn -version

제대로 나오면 설치 OK.

3) webapp 로 maven 프로젝트 생성 후 pom.xml 설정

pom.xml 에서 사용할 라이브러리들을 셋팅함 (더보기 내용은 pom.xml에서 생긴 오류들)


4) webapp -> web-inf -> web.xml 에 세팅을 시작함

maven에서는 webcontent - > web-inf 에 셋팅하는게 아니라 저 위에 적어둔 곳 에서 함

5) 전부 셋팅을 마치고 hello maven 출력

테스트 완료!  
:
Posted by 유쾌한순례자
2011. 9. 1. 15:44

maven (pom.xml) 에 ojdbc 14 추가하기 Study/WEB2011. 9. 1. 15:44

저장소를 추가해줘야한다 

<repositories>
  <repository>
    <id>mesir-repo</id>
    <url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>
  </repository>
</repositories>

 

  <dependency>
      <groupId>com.oracle</groupId>
      <artifactId>ojdbc14</artifactId>
      <version>10.2.0.4.0</version>
    </dependency>
:
Posted by 유쾌한순례자
2011. 9. 1. 15:34

지도기능 이용하기 Study/Android2011. 9. 1. 15:34

Location을 사용할때는

getSystemService를 이용해 Context.LOCATION_SERVICE 정보를 가져옴

지도 - > 2가지의 provider를 가짐

1) 최근 위치값 1개 저장하는곳 (GPX)

2) 여러개 저장하는 곳  (KML)



예제 내용 : 지도 위에 아이콘 띄우기


import java.util.List;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.ZoomControls;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

public class HelloMyMap extends MapActivity {
 
 List<Overlay> mapOverlays; 
 Drawable drawable; 
 HelloItemizedOverlay itemizedOverlay;
 LinearLayout linearLayout;
 MapView mapView; 
 ZoomControls mZoom;
    
 @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
 
/** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
        
        //위성지도
        mapView.setSatellite(true);
        
        //위치
        GeoPoint p=new GeoPoint(37450877,126768494);
        MapController mc=mapView.getController();        
        
        //시작할때 p위치로 가셈ㅋ
        mc.animateTo(p);
        
        mc.setZoom(5); 
        
        //그림을 그리기 위한 객체
        mapOverlays = mapView.getOverlays(); 
        
        //이미지를 가져옴
        drawable = this.getResources().getDrawable(R.drawable.androidmarker); 
        
        //지도정보와 이미지를 보내줌
        itemizedOverlay = new HelloItemizedOverlay(drawable,this);
        
        OverlayItem overlayitem = new OverlayItem(p, "안녕", "서울");
        
        itemizedOverlay.addOverlay(overlayitem); 
        mapOverlays.add(itemizedOverlay);
    }     
    
}

package com.soldesk.HelloMyMap;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

public class HelloItemizedOverlay extends ItemizedOverlay {

private Context mContext;
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
super(boundCenterBottom(defaultMarker));
// TODO Auto-generated constructor stub
mContext = context;
}

// 객체를가져와~~~
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return mOverlays.get(i);
}

// 이미지의 사이즈
@Override
public int size() {
// TODO Auto-generated method stub
return mOverlays.size();
}

// 이미지를 추가
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}

// 이미지를 선택하였을때 이미지
@Override
protected boolean onTap(int index) {
OverlayItem item = mOverlays.get(index);
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(item.getTitle());
dialog.setMessage(item.getSnippet());
dialog.show();
return true;
}

}


 

:
Posted by 유쾌한순례자
package com.narratage.file2;

import java.io.FileOutputStream;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.Toast;

public class MyMenuFile extends Activity {

EditText edit;
    
        //사용할 메뉴 ID 
static final int MENU1 = Menu.FIRST;
static final int MENU2 = Menu.FIRST+1;
static final int dialog_id0 = 0;
AlertDialog dlg;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

public void onResume() {
super.onResume();
edit = (EditText) findViewById(R.id.editText);

}

@Override
//OptionMenu만들기
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, MENU1, Menu.NONE, "저장하기").setIcon(R.drawable.icon);
menu.add(Menu.NONE, MENU2, Menu.NONE, "취소하기").setIcon(R.drawable.icon);
return true;
}

//OptionMenu 선택시 실행될이벤트
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case MENU1:
showDialog(dialog_id0);
return true;
default :
return false;
}
}
protected Dialog onCreateDialog(int id) {
super.onCreateDialog(id);
System.out.println("oncreatedialog");

switch (id) {
case dialog_id0:

dlg = new AlertDialog.Builder(this)
//AlertDialog의 아이콘
.setIcon(R.drawable.icon)
//AlertDialog의 타이틀
.setTitle("저장내용")
//AlertDialog의 메세지 내용 단 최초 한번은 여기서 부르나 다음부터는 onPrepareDialog 메소드에서 재정의함
.setMessage(edit.getText().toString())  
//Ok를 누르면 발생할 이벤트
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
//입력받은 값이 있는지 없는지를 판단하여 fail 이나 save 메소드를 호출함.
// == 이것으로 비교할 경우 논리오류가 발생할 우려가 있음(해보진않음)
if (edit.getText().toString().equals("")) {
fail();
} else {
save();
}
}
})
//cancel을 누르면 dialog 닫힘
.setNegativeButton("CANCEL",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
edit.setText(""); 
}
}).create();
break;

default:
dlg = null;
}
return dlg;
}

@Override
//두번째부터 재정의하게 될 onPrepareDialog 여기서 메세지를 재정의해줌
public void onPrepareDialog(int id, Dialog dlg) {
super.onPrepareDialog(id, dlg);
this.dlg.setMessage(edit.getText().toString());
}
public void save() {
// id 값을 가져와서 R.id.button 값일 경우 실행

try {

// 입력받은 값을 String 형으로 저장함
String txt = edit.getText().toString();

// test.txt 파일을 쓰기 권한으로 줌
FileOutputStream outstream = openFileOutput("test.txt",
Activity.MODE_WORLD_WRITEABLE);

// byte 단위로 입력함
outstream.write(txt.getBytes());

// Exception이 발생하지 않았으므로 저장완료 Toast를 띄움
Toast.makeText(this, "저장완료!!", Toast.LENGTH_LONG).show();



} catch (Exception e) {

e.printStackTrace();

// Exception이 발생하였으므로 저장실패 Toast를 띄움
Toast.makeText(this, "저장실패!", Toast.LENGTH_LONG).show();
}

   edit.setText("");

}

public void fail() {
Toast.makeText(this, "아무것도  입력되지 않았어요!", Toast.LENGTH_LONG).show();
}
}

'Study > Android' 카테고리의 다른 글

지도기능 이용하기  (0) 2011.09.01
File저장기법+dialog를 이용해 보기  (0) 2011.08.31
EditText 에 입력하여 file로 저장하기  (0) 2011.08.30
Data Storage 中 Preferences  (0) 2011.08.30
TextView 그림자처리와 자동링크  (0) 2011.08.30
px (vs) dp  (0) 2011.08.29
상태바 Notification 예제 파일분석  (0) 2011.08.29
Intent  (0) 2011.08.29
getSystemService  (0) 2011.08.29
Style / Theme  (0) 2011.08.29
:
Posted by 유쾌한순례자