[PHP] 클래스의 직렬화, 역직렬화

웹 & 안드로이드/PHP|2014. 2. 11. 09:43

해당하는 요청에 사용하는 객체를 세션에 저장하고 싶을 경우, 직렬화를 사용하면 된다.

 

serialize() : 객체를 스트링 타입의 정보로 리턴.

unserialize() : serialize()함수에 의해 직렬화된 스트링 타입의 정보를 다시 객체화.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$seri_cls = serialize(new Test()); #Test클래스를 새로 생성하여 직렬화.
 
echo $seri_cls;
 
$unseri_cls = unserialize($seri_cls); #직렬화된 클래스를 역직렬화.
 
echo $unseri_cls->num;
echo $unseri_cls->str;
 
class Test{
    public $num = 10;
    public $str = 'class';
}
 
?>

결과값

 

O:4:"Test":2:{s:3:"num";i:10;s:3:"str";s:5:"class";}10class

 

- O:4:"Test":2:{s:3:"num";i:10;s:3:"str";s:5:"class";}

 : 객체를 직렬화한 스트링 타입의 정보.

 

 

댓글()

[PHP] .htaccess 파일 간단하게 작성하기.

웹 & 안드로이드/PHP|2014. 2. 11. 09:13

http://www.htaccesseditor.com/kr#a_basic

 

 

 

여러가지 옵션이 있으며 옵션 선택후 밑에 나타나는 소스를 해당 .htaccess 파일에 붙여넣기 하면 된다.

 

댓글()

collie/jindo - 게임개발에 유용한 javascript 프레임워크

웹 & 안드로이드/HTML5|2014. 1. 5. 19:00
http://blog.naver.com/etwas0227/60175284923

 

댓글()

enchant.js - 스마트폰 게임개발을 위한 html5/JavaScript 기반 프레임워크

웹 & 안드로이드/HTML5|2014. 1. 5. 18:39
HTML5 + 자바스크립트 기반의
게임프로그래밍 라이브러리입니다.

http://enchantjs.com/en/?s=en

 

 

기본적인 그래픽(타일 등)을 지원 한다고 합니다.

 

 

 


댓글()

프로그래밍의 디자인 패턴.


한글화된 문서는 내용이 아직 채워지지 않았으므로 영어 문서를 보는 것을 추천.

출처 - http://kiros33.blog.me/130181116363


Reference

소프트웨어 디자인 패턴 분류

 

안녕하세요.

이번에 소개 해드릴 내용은 디자인 패턴입니다.

이번에는 간략하게 설명만 하고 자세한것은 추후에 다루도록 하겠습니다.

디자인 패턴은 크게 3가지(생성, 구조, 행위) 로 나뉘게 되고요. 각자 세부적인 패턴들이 있습니다.

사실 이미 알게 모르게 다 사용하고 잇는 내용이지요.

 

생성



 

구조



 

행위 



 

위키를 기준으로 텍스트로 다시 정리해봤습니다.

 

생성 패턴(Creational Patterns)

 

 

 

구조 패턴(Structural Patterns)

 

 

 

행위 패턴(Behavioral Patterns)

 




댓글()

자바 문법 문제 2


1.
/*
 * 1. - 주관식 - 기초문법 - 연산자와 키워드 - 중
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는?
 * 
 * -답안
 *  SU MO TU WE TH FR SA
 *              01 02 03
 *  04 05 06 07 08 09 10
 *  11 12 13 14 15 16 17
 *  18 19 20 21 22 23 24
 *  25 26 27 28 29 30 31
 */

package java2_total;

public class GrammerEx1 {
    public static void main(String[] args) {
        final int SUN = 1;
        final int MON = 2;
        final int TUE = 3;
        final int WED = 4;
        final int THU = 5;
        final int FRI = 6;
        final int SAT = 7;

        int start = 1;
        int end = 31;
        int startWeek = THU;
        System.out.println(" SU MO TU WE TH FR SA");
        for (int i = 1; i < startWeek; i++) {
            System.out.print("   "); // "공백3칸"
        }
        for (int i = start, n = startWeek; i <= end; i++, n++) {
            System.out.print((i < 10) ? " 0" + i : " " + i); // (i < 10)?
                                                                // "공백두칸"+i :
                                                                // "공백한칸"+i
            if (n % 7 == 0)
                System.out.println();
        }
    }

}


2.

/*
 * 2. - 주관식 - 기초문법 - 조건문/반복문 - 상
 * 다음은 행렬 곱셈을 구현한 코드이다.
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는?
 * 
 * -생각
 *  {54,0,}
 *  {0,0,}
 *  몰라
 *  
 * -결과
 *  {54,30,}
 *  {165,70,}
 */

package java2_total;

public class GrammerEx2 {
    public static void main(String[] args) {
        int x[][] = { { 3, 2, 3 }, { 5, 9, 8 } };
        int y[][] = { { 4, 7 }, { 9, 3 }, { 8, 1 } };

        int z[][] = Matrix.multiply(x, y);
        Matrix.print(z);
    }
}

class Matrix {
    public static int[][] multiply(int[][] m1, int[][] m2) {
        int m1Rows = m1.length;
        int m1Cols = m1[0].length;
        int m2Rows = m2.length;
        int m2Cols = m2[0].length;

        if (m1Cols != m2Rows) {
            throw new IllegalArgumentException();
        }

        int[][] result = new int[m1Rows][m2Cols];

        for (int i = 0; i < m1Rows; i++) {
            for (int j = 0; j < m2Cols; j++) {
                for (int k = 0; k < m1Cols; k++) {
                    result[i][j] += m1[i][k] * m2[k][j];
                }
            }
        }
        return result;
    }

    public static void print(int[][] a) {
        int rows = a.length;
        int cols = a[0].length;
        for (int i = 0; i < rows; i++) {
            System.out.print("{");
            for (int j = 0; j < cols; j++) {
                System.out.print(a[i][j] + ",");
            }
            System.out.println("}");
        }
    }

}


3.

Colored By Color Scripter

/*
 * 3. - 주관식 - 배열과 컬렉션 - 배열과 컬렉션 - 중
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는?
 * 
 * -생각
 *  set입력 1,2,9,7,4,6,0
 *  정렬 0,1,2,4,6,7,9
 *  
 *  결과 0,1,2,4,6,7,9
 *  
 * -결과
 *  0124679
 */

package java2_total;

import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

public class CollectionEx3 {
    public static void main(String[] args) {
        String[] arr = { "1""2""9""7""4""6""1""7""0" };
        Set set = new HashSet();
        for (String s : arr) {
            set.add(s);
        }

        List list = new LinkedList(set);
        Collections.sort(list);

        Iterator it = list.iterator();

        while (it.hasNext()) {
            System.out.print(it.next());
        }
    }
}


4.

/*
 * 4. - 주관식 - OOP특징 - 객체의 생성과 사용 - 상
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는? 컴파일시 에러가 발생한다면 라인번호와 그 원인과 해결책을 설명하시오.
 * 
 * -결과
 * 10
 * 10
 */

package java2_total;

public class OopEx4 {
    public static void main(String[] args) {
        Test t1 = Test.getInstance();
        Test t2 = Test.getInstance();
        t1.setX(5);
        t2.setX(10);
        System.out.println(t1.getX());
        System.out.println(t2.getX());
    }
}

class Test {
    private static Test t;
    private int x;

    private Test() {
    }

    public static Test getInstance() {
        if (t == null) {
            t = new Test();
        }
        return t;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

}


5.

/*
 * 5. - 주관식 - OOP특징 - Abstraction - 상
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는? 컴파일시 에러가 발생한다면 라인번호와 그 원인과 해결책을 설명하시오.
 * 
 * -생각
 *  first
 *  second
 *  third
 * 
 * -결과
 *  first
 *  second
 *  third
 */

package java2_total;

public class OopEx5 {
    public static void main(String[] args) {
        Template t = new Test1();
        t.play();
    }
}

abstract class Template {
    void play() {
        first();
        second();
        third();
    }

    abstract void first();

    abstract void second();

    final void third() {
        System.out.println("third");
    }
}

class Test1 extends Template {
    @Override
    void first() {
        System.out.println("first");
    }

    @Override
    void second() {
        System.out.println("second");
    }

}


6.

/*
 * 6. - 주관식 - OOP특징 - 다형성/인터페이스/동적바인딩 - 중
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는? 컴파일시 에러가 발생한다면 라인번호와 그 원인과 해결책을 설명하시오.
 * 
 * -생각
 *  r.test(s);
 *  test()의 매개변수는 Testable. Ship은 Testable를 구현하지 않았으므로 받지 못한다.
 * 
 * -결과
 * r.test(s); //error
 * 
 */


package java2_total;

public class OopEx6 {
    public static void main(String[] args) {
        Car c = new Car();
        Ship s = new Ship();
        Robot r = new Robot();
        r.test(c);
        r.test(s);
        r.test(r);
    }
}

class Elect {
    int value;
}

interface Testable {
}

class Car extends Elect implements Testable {
}

class Ship extends Elect {
}

class Robot extends Elect implements Testable {
    void test(Testable t) {
        if (t instanceof Elect) {
            System.out.println("test하다");
        }
    }

}


7.

/*
 * 7. - 주관식 - Java API - String class, StringBuffer, Wrapper - 중
 * 다음 프로그램 컴파일과 실행시 출력되는 결과는?
 * 
 * -생각
 *  true
 *  true
 *  true
 *  false
 *  false
 * 
 *  찍음..
 * 
 * -결과
 *  true
 *  true
 *  false
 *  true
 *  false
 * 
 * -결과에 대한 생각
 * Integer, String같은 매퍼타입 변수는 equals메소드를 오버라이딩 하여 참조하고 잇는 메모리의 값을 비교.
 * StringBuffer의 equals는 Object의 메소드 그대로 이므로 참조변수의 해쉬값을 비교.
 * 
 * Date역시 equals메소드를 오버라이딩 하였다.
 * d2.equals(d3)경우는 값이 같이 때문에 true
 * d1.equals(d4)는 new Date()한 시간이 서로 다르기 때문에 false.  
 */

package java2_total;

import java.util.Date;
import java.util.GregorianCalendar;

public class ApiEx7 {
    public static void main(String[] args) {
        Integer i1 = new Integer(1);
        Integer i2 = new Integer(1);

        String s1 = new String("one");
        String s2 = new String("one");

        StringBuffer sf1 = new StringBuffer("one");
        StringBuffer sf2 = new StringBuffer("one");

        Date d1 = new Date();
        Date d2 = new GregorianCalendar(2011, 7, 15).getTime();
        Date d3 = new GregorianCalendar(2011, 7, 15).getTime();
        Date d4 = new Date();

        System.out.println(i1.equals(i2));
        System.out.println(s1.equals(s2));
        System.out.println(sf1.equals(sf2));
        System.out.println(d2.equals(d3));
        System.out.println(d1.equals(d4));
    }

}


'웹 & 안드로이드 > JAVA & JSP' 카테고리의 다른 글

대충 만들어본 로그 클래스  (0) 2014.05.15
프로그래밍의 디자인 패턴.  (0) 2013.12.12
자바 문법 문제 1  (0) 2013.12.04
OR 연산자의 연산.  (0) 2013.12.03
[JSP] 안보이는 주석  (1) 2013.11.19

댓글()

자바 문법 문제 1

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

OR 연산자의 연산.

a || b;


a가 거짓일 경우 b도 검사하지만


a가 참일경우 b는 검사 하지 않고 참을 출력한다.

댓글()

javascript json 맵 형태로 받았을때 키 이름을 출력하는 방법

웹 & 안드로이드/HTML5|2013. 12. 1. 13:55
1
2
3
4
5
6
var items = { 'one' : 1, 'two' : 2 };
 
for(var name in items){
    alert(name);
}
 

one

 

two 경고창 뜸. 

댓글()

여러개 체크박스를 가져와 개별 클릭 이벤트 체크 하는방법

웹 & 안드로이드/HTML5|2013. 11. 26. 13:40
1
2
3
4
5
6
7
8
9
10
11
$(document).ready(function(){
 
    var subject = $('input[type=checkbox]');
    $(subject).each(function(index, item){
        $(item).click(function(){
        console.log($(item).is(':checked'));
        console.log($(item).val());
        }); 
    });
});
 

댓글()