TableViewController 활용한 메모장 어플 만들기


1. 구성

 : 메모장 리스트, 추가, 저장, 삭제, 수정 ( 5가지 기능 )


2. 완성품 

 : 동영상 참고


3. TableViewControlle 활용

 : 예제 코드는 대부분 ViewController  활용하여 TableViewController로 생성


4. 코드

 : https://github.com/KimHanSeung/swift_study/tree/master/Memo_bill


질문은 댓글 주세요^^

블로그 이미지

김진리

,

오라클 10g 부터 정규식이 생겨 regexp_replace , regexp_like 함수를 사용할 수 있습니다.


그러나 9i에선 사용하고 싶은데 어떻게!??


http://phil-sqltips.blogspot.kr/2009/06/regexpreplace-regexplike-for-oracle-9i.html


위 링크에 가시면 10g에서 사용하는 함수를 생성할 수 있게 구성되었어요 참고하세요

'개발자 > Oracle' 카테고리의 다른 글

Oracle구조  (0) 2013.01.26
Advanced Query ( Aggregation )  (0) 2013.01.26
Table Join Type  (0) 2013.01.26
oracle Date Format  (0) 2013.01.26
Basic Query  (0) 2013.01.24
블로그 이미지

김진리

,

Java Queue

개발자/Java 2015. 7. 1. 14:20

package queue;


public class Queue {


private int front;

private int rear;

private String[] dataAr;

private final int arrayMax = 10;

public Queue() {

// TODO Auto-generated constructor stub

dataAr = new String[arrayMax];

put("push1");

peek();

get();

put("push2");

peek();

get();

put("push3");

peek();

get();

put("push4");

peek();

get();

get();

get();

put("push5");

peek();

}

private boolean empty() {

// TODO Auto-generated method stub

if(front == rear){

System.out.println("비었을 경우 = Underflow");

return true;

}

return false;

}

//front 데이터 출력

private void peek() {

// TODO Auto-generated method stub

System.out.println("peek() : " +  dataAr[front] + "front : " + front + " rear : " + rear);

}


private void put(String temp) {

// TODO Auto-generated method stub

dataAr[rear] = temp;

rear++;

}

private void get() {

// TODO Auto-generated method stub

if(!empty()){

String get = dataAr[front];

System.out.println("삭제  : " + get);

front++;

}

}


}



블로그 이미지

김진리

,

Java Stack

개발자/Java 2015. 7. 1. 13:30

package stack;


import java.util.Scanner;

import java.util.Vector;


public class Stack {

private int top =-1;

private Vector<String> vc = new Vector<String>();

public Stack() {

// TODO Auto-generated constructor stub

while(true){

String str = "";

System.out.println("1 : push , 2 : pop");

Scanner scan = new Scanner(System.in);

int k = scan.nextInt();

switch (k) {

case 1:

System.out.println(" 데이터 입력 ");

str = scan.next();

push(str);

peek();

break;

case 2:

peek();

pop();

break;

default:

break;

}

}

}

private void push(String data) {

// TODO Auto-generated method stub

vc.add(data);

top++;

}

private void pop() {

// TODO Auto-generated method stub

if(!empty()){

vc.remove(top);

top--;

}

}

private void peek() {

// TODO Auto-generated method stub

System.out.println("top : " + top);

if(!empty()){

String peek = vc.get(top);

System.out.println("peek : " + peek);

}else{

System.out.println("EmptyStackException");

}

}

private boolean empty() {

// TODO Auto-generated method stub

if (top < 0) {

return true;

}

return false;

}

}


블로그 이미지

김진리

,

#include <iostream>

using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */




class Bmi {     Bmi 클래스의 선언 마지막에는 세미콜론으로 닫아준다.

public :   public 형의 변수선언

int weight;

int tall;

double getBMI();

};

Bmi 클래스의 함수 구현

double Bmi::getBMI(){

return weight/((tall*tall)/10000);  Bmi 클래스 안의 변수 사용

}


int main() {

Bmi bmi;   자바와 다르게 변수 선언으로 객체가 생성!!

bmi.weight = 71;

bmi.tall   = 180;

cout << "비만도는  " <<  bmi.getBMI() << endl;

return 0;

}




결과값



자바와 다르게 변수가 선언되면 객체가 생성되어 메모리에 할당된다.

'개발자 > C++' 카테고리의 다른 글

C++ hellow world 시작 하기  (0) 2015.02.12
블로그 이미지

김진리

,

#include <iostream>

using namespace std;

int main() {

cout << "Hellow World!";

return 0;

}







#include <iostream>  : c++ 에 있는 입출력을 위한 헤더파일 ( input / output stream) 입출력 스트림

using namespace std : c++ 표준에서 제공하는 다양한 요소들은 namespace std 안에 선언되어 있어 cout를 사용 할 수 있다.

using namespace std 가 존재 하지 않는 경우 


위와 같이 std:: 를 사용해주어야 한다. std 를 선언하므로써 축약이 가능


cout  : (console output) 화면에 출력

같이 쓰는 명령어 

cout << "Hellow World!" << endl;


endl : (End Line) 줄의 끝 , new line으로 시작


'개발자 > C++' 카테고리의 다른 글

C++ 클래스와 객체 사용법  (0) 2015.02.12
블로그 이미지

김진리

,

참조테이블 : test_table

칼럼 : age , hakbun , grade


인덱스 생성

CREATE  INDEX  인덱스_이름  ON 참조테이블  ( 칼럼 )

- CREATE  INDEX  AGE_INDEX  ON  TEST_TABLE  (AGE)


인덱스 삭제

ALTER  TABLE  테이블_이름  DROP  INDEX  인덱스_이름

 - ALTER  TABLE  TEST_TABLE  DROP  INDEX  AGE_INDEX


결합 인덱스 생성

CREATE  INDEX  인덱스_이름  ON 참조테이블  칼럼 ,칼럼 , 칼럼)

- CREATE  INDEX  AGE_INDEX  ON  TEST_TABLE  (AGE ,hakbun , grade )


인덱스를 참조했는지 테스트 하는법

EXPLAIN SELECT 쿼리~~

ex) EXPLAIN SELECT * FROM STUDENT;


각 칼럼의 의미

  • table                사용한 테이블. 조인일 경우는 행이 여러 개로 나온다.
  • type                 가장 중요한 것 중에 하나이며, 조인이 사용되었는지 말해준다.
  •                         가장 좋은 타입부터 가장 나쁜 타입은 system, const, eq-ref, ref, range, index, all 이다.

                            Type에 all이나 index, range 등이 보일 경우는 쿼리가 그다지 빠르지 않다는 것을 의미한다.

     

              system : 테이블이 하나의 레코드만 가지는 경우
              const  : 테이블에 조건을 만족하는 레코드가 하나일 때, 상수 취급
              eq_ref : 인덱스가 UNIQUE이거나 PRIMARY KEY인 경우의 조인으로 const를 제외한 조인 중 가장 좋은 형태
              ref    : eq_ref와 다른 점은 UNIQUE나 PRIMARY KEY가 아닐 경우 사용한다는 것.
              range  : 조건에 레코드의 범위가 주어진 조인.
              index  : all 형태와 비슷하며, 인덱스를 사용한다.
              all    : 모든 레코드를 스캔한다.

     

  • possible_keys    사용 가능한 키(인덱스)
  • key              사용하고 있는 키(인덱스)
  • key_len          키가 사용된 길이. 작을수록 좋다(int는 4바이트, char(10)은 10바이트를 차지한다.
  •                  테이블에서 데이터형의 결정은 되도록이면 int나 smallint, medianint를 사용하는 것이 좋다).

  • ref              칼럼이나 상수(const)가 사용되었는지 말해준다.
  • rows             인덱스 범위를 나타낸다. 작을수록 역시 빠르다.
  • Extra            정보- "using temporary"나 "using filesort"는 가장 좋지 않다.
  •  

              distinct : 조건을 만족하는 레코드를 찾았을 때 같은 조건을 만족하는 또 다른 레코드가 있는지 검사하지 않음.
              not exist : left join 조건을 만족하는 하나의 레코드를 찾았을 때 다른 레코드의 조합은 더 이상 검사하지 않는다.
              range checked for each record : 최적의 인덱스가 없는 차선의 인덱스를 사용한다는 의미.
              using filesort : mysql이 정렬을 빠르게 하기 위해 부가적인 일을 한다.
              unsing index : select 할때 인덱스 파일만 사용
              using temporary : 임시 테이블을 사용한다. order by 나 group by 할때 주로 사용
              where used : 조건을 사용한다는 의미.



    위의 각 칼럼의 의미 [출처] 최적화를 위한 분석(PROCEDURE ANALYSE, EXPLAIN SELECT) |작성자 너만을



    오라클에서는 인덱스를 여러개를 생성하면 전부 사용가능하지만 mysql에선 인덱스를 하나밖에 사용하지 못한다고 합니다. 여러개의 인덱스를 한번에 사용하려면 결합인덱스를 생성하면 사용하실수 있습니다.


    ex)  - CREATE  INDEX  AGE_INDEX  ON  TEST_TABLE  (AGE ,hakbun , grade )  


    SELECT  *  FROM  TEST_TABLE  WHERE AGE = '' AND HAKBUN = '' AND GRADE = ''  

    3개의 조건이 동일시 사용할 경우 인덱스 사용법


    - EXPLAIN 시 Extra 칼럼에 Using Temporary, Using filesort 라는 값이 나타날 경우 느린 결과를 초래하기때문 피해셔야 합니다.

    group by 를 사용할 경우 order by null 추가 생성으로 피할 수 있습니다.

    블로그 이미지

    김진리

    ,

    net.sf.jasperreports.engine.util.JRFontNotFoundException: Font '바탕' is not available to the JVM. See the Javadoc for more details.


    jasperreports 를 사용하면서 한글os -> 영문os  ,  영문os -> 한글os 간  사용을 하다보면 폰트가 존재하지 않는다고 에러가 나옵니다. 이럴 경우!!?


    jasperreports-x.x.jar 파일의 옵션을 바꾸시면 되는데 가장 익숙한 이클립스를 사용하여 옵션을 수정해 보겠습니다.




    먼저 이클립으로 java 빈 프로젝트를 생성해주시고


    프로젝트 오른쪽 버튼에서 임포트기능!!


    Archive File 을 선택하셔서 사용하시는 jasperreport,jar 파일을 추출합니다.


    위와 같이 불러 오시구요 Finish를 합니다.



    속성값에 : missing.font = true 로 수정해 주시면 됩니다


    그리고 다시 jar파일로 묶는 과정입니다. 프로젝트를 오른쪽 눌르셔서 jar file로 하시구 이름을 jarperrerport.jar 과 같은 전에 사용하시던 파일 이름으로 덮어쓰시면됩니다.


    그리고 다시 jar를 배포하셔서 테스트 하시면 끝!


    블로그 이미지

    김진리

    ,

    특정 데이터베이스  DB백업

    ex)  database 이름이 test 이면

    mysql 이 설치된 폴더에서 bin 까지 접근한 후

    mysqldump -u root -p test > 덤프이름.sql    로 생성


    bin 폴더 안에 덤프이름으로 생성됩니다.


    모든 데이터베이스 DB백업

    test , user, compnay 라는 3개의 DB가 존재하면

    mysqldump -u root -p --all-databases > 덤프이름.sql  로 생성

    블로그 이미지

    김진리

    ,

    최초 mysql 을 접속하여 


    use mysql;  후


    insert into user (Host, User, Password, ssl_cipher, x509_issuer, x509_subject ) 

    values('localhost','아이디',password('비밀번호'),'','','');

    flush privileges;


    위 과정을 하면 아이디가 생성이 됩니다.


    이후 select 권한 부여시


    grant select on database.tabe to '아이디'@localhost; 

    flush privileges;

    위 과정을 하면 해당 아이디에 select 권한을 가지게 됩니다.


    블로그 이미지

    김진리

    ,