안녕하세요 .생존본능입니다.

 우선 이전에 Facebook 강좌중 잘못된 정보를 제공해드려 죄송합니다.

 테스트 해본결과 JSON.php 에서 제공하는 json_decode 에서 object를 읽을경우

  ' Cannot use object of type stdClass as array in '

 오류가 발생되는것을 확인하였습니다.

 object에 대한 return 값이 아무것도 넘어가지 않고있는데요,

 확인이 늦은점 죄송합니다.

 그래서 다른 방법으로 알려드립니다.

  



 우선 위 파일을 다운받으신후 

 

 
 index.php 파일과 같은 경로에 놓습니다.

 Json_decode.php 파일안에는 Json_decode를 읽는 함수가 들어있습니다.

 이 파일을 index.php 파일에서 호출하여 줍니다.

 

 <?php 


     
require 'Json_decode.php';
 

     $app_id = "YOUR_APP_ID";


     $canvas_page = "YOUR_CANVAS_PAGE_URL";


     $auth_url = "http://www.facebook.com/dialog/oauth?client_id=" 

            . $app_id . "&redirect_uri=" . urlencode($canvas_page);


     $signed_request = $_REQUEST["signed_request"];


     list($encoded_sig, $payload) = explode('.', $signed_request, 2); 


     $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);


     if (empty($data["user_id"])) {

            echo("<script> top.location.href='" . $auth_url . "'</script>");

     } else {

            echo ("Hello " . $data["user_id"]);

     } 

 ?>

 
 이렇게 되면 정상적으로 object를 읽어올수있게 됩니다.


 이러면 json_decode 사용하기 완료입니다.^^

 감사합니다~


당신의 속도를 테스트 하라! 킬링타임용 게임으로,

게임의 목적은 단순합니다.

짧은 시간내에 많은 클릭수를 기록하기 입니다.

 

제가 만든 게임이라 한번 올려봤어용.ㅎ

한판 즐겨주세요 굽신굽신.^^


http://apps.facebook.com/clickgameclick/

 

 안녕하세요 생존본능입니다.

 PHP 5.2이하버전에서 어떻게 사용하시는지 질문하셔서, 그 내용 적어드립니다.^^

 우선 PHP 5.2버전에서는 JSON이 기본적으로 제공되나, 하위버전에서는 지원되지 않습니다.

 그렇기 때문에 json 라이브러리를 다운받아서 사용하셔야 하는데요,

 우선 라이브러리를 다운받기위해서는 아래싸이트로 이동합니다.

 http://www.json.org/

 
  



이동하셔서 아래쪽에 보시면 Services_JSON이라는 링크를 클릭하여 다운로드 페이지로 이동합니다.


 

 
이동하셔서 보시면 Links에서 가장 위에있파일을 클릭합니다.

 PEAR package file (.tgz) 클릭하셔서 다운로드 받으신후 압축을 풀어주시면 압축파일중에

JSON.php라는 파일이 저희가 사용할 파일입니다.

 제가 받은 파일도 같이 공유드리겠습니다.

 위 절차가 귀찮으신분은 제가받은 파일을 받아서 사용하셔도 됩니다.

  



 이제 기본적으로 사용할 준비는 끝났습니다.

 그럼이제 소스에서 JSON.php를 추가하주시면 됩니다.

 추가하는 방법은 우선 저는 이전에 있던파일과 같은 경로를 넣겠습니다. 

 

 
그리고 이전에 만들었던 index.php를 수정해주시면 됩니다.



 이전 PHP 5.2 이후버전에서는 json_decode 라고 호출해주면 됬지만

이번에는 라이브러리를 가져온것이기때문에 소스내에서도

require_once를 해주어야 합니다.

 require_once('JSON.php');
 
그리고 실제로 사용하기위해서 new 선언을 해주었습니다.
   $json = new Services_JSON(); 
 
이제 json_decode를 실제로 사용하기 위해서 호출해주셔야되는데

decode는 현재 위치에 있는것이 아니라 방금 선언한

$json에 있는것이고, 명령어는 json_decode가 아니라 decode 입니다.
   $json->decode(타겟, true); 


 아래와 같은 방법으로 사용해주시면 됩니다.
    require_once('JSON.php');
$json = new Services_JSON();
$json->decode(타겟, true);
 
 JSON  사용하는 방법은 여기까지입니다.

 하지만 JSON.php에서는 Object를 읽지 못하게됩니다.

 이럴때는

 

PHP 5.2 이하버전 Object 에 json_decode 사용하기.



 
에서 방법확인하시면 됩니다.





 그럼, 수고하셨습니다.


 ^ㅡ^


 안녕하세요 생존본능입니다.

 작업을 하다보면 PHP에서는 한글 깨짐 현상을 종종 확인할수있는데요,

  그 이유는 euc-kr 로 설정되었기 때문입니다.


 이 경우에는 강제로 코드에서 UTF-8 로 변경해주시면 됩니다.

 

 변경방법은 html 코드의  <head></head> 나 <body><body> 사이에 넣어주시면 됩니다.

 그리고 html 코드를 사용하지않고 그냥 php코드만 있는경우에는 그냥 최상단에 넣어주시면 됩니다. 

<meta http-equiv="Content-Type" content="text/html" charset="utf-8"> 


 위처럼 하면 정상적으로 한글이 보여지게됩니다.


 감사합니다.^^ 


 모든 근로자가 봐두면 최소한 알고있다는 사실만으로도 도움이 될만한 만화입니다.

 썩 유쾌한 이야기도 아니고 정말 재미있는 이야기도 아니지만 모르면 당할수밖에 없는 이야기입니다.

그런내용으로 이해하기 쉽게 만화로 그려주셨네요,.^^




첫번째이야기

 


두번째이야기

 


세번째이야기

 


네번째이야기

 


다섯째이야기

 


여섯째이야기

 


일곱째이야기

 


여덜번째이야기

 


아홉번째이야기

 


열번째이야기

 

'개발' 카테고리의 다른 글

비트연산 기초.  (0) 2011.08.11
[.NET] MS-SQL 접속 방법.  (0) 2011.06.21
[EnterpriseLibrary] enterprise library 5.0 란  (0) 2011.06.21
Windows XP PowerShell 1.0 한국어 버전  (0) 2011.05.27
garbage collection 가비지 컬렉션  (0) 2011.05.19

Microsoft SQL Server 2008 R2 를 설치하는데 없다고 떠서 찾아봤네요.^^

 자료공유드려요.


시스템 요구 사항


  • 지원하는 운영 체제:Windows XP Service Pack 2;Windows XP Service Pack 3

  • .NET Framework 버전 2.0 필요
     

개요


Windows PowerShell에 포함되는 사항은 다음과 같습니다. 

• 서비스, 프로세스, 이벤트 로그, 인증서, 레지스트리 등의 일상적인 시스템 관리 작업을 수행하고 WMI(Windows Management Instrumentation)를 사용할 수 있는 130개 이상의 명령줄 도구("cmdlets"라고도 함) 

• 명령줄 도구는 표준 명명 규칙 및 일반 매개 변수를 쉽게 익히고 사용하도록 설계되었으며 데이터와 개체를 정렬, 필터링 및 서식 적용할 수 있는 간단한 도구입니다. 

• 기존 스크립팅 언어와 명령줄 도구 및 Windows XP, Windows Server 2003, Windows Vista™, Windows Server 코드 이름 “Longhorn"을 비롯한 여러 Windows 버전 지원 

• 사용자가 레지스트리 저장소와 인증서 저장소 같은 데이터 저장소를 파일 시스템처럼 탐색할 수 있는 기능 

• Windows 데이터를 ADSI(Active Directory 서비스 인터페이스), WMI(Windows Management Instrumentation), COM(구성 요소 개체 모델) 개체, ADO(ActiveX 데이터 개체), HTML 및 XML을 포함한 서로 다른 저장소와 형식으로 관리할 수 있는 표준 유틸리티. 

• 명령줄에서 정교한 식 구문 분석 및 .NET Framework 개체 처리 가능(예: 개체를 파이프라인하면 IT 전문가들이 보다 효율적으로 작업할 수 있음) 

• 개별 소프트웨어 공급업체 및 엔터프라이즈 개발업체가 고유 응용 프로그램 및 시스템 관리 요구 사항에 부응하도록 사용자 지정 cmdlets를 빌드할 수 있는 확장 인터페이스 


설치 권장 버전

• 다국어 지원 독일어, 스페인어, 프랑스어, 이탈리아어, 일본어, 한국어, 포르투갈어, 러시아어, 중국어 간체 또는 중국어 번체로 된 Windows 버전을 실행 중인 사용자는 이 페이지의 다운로드 링크를 사용하여 Windows PowerShell 1.0 다국어 설치 패키지를 설치할 수 있습니다. 자세한 내용은 기술 자료 문서 926140을 참조하십시오.

• 영어 Windows 영어 버전을 실행 중이거나 독일어, 스페인어, 프랑스어, 이탈리아어, 일본어, 한국어, 포르투갈어, 러시아어, 중국어 간체 또는 중국어 번체 외의 다른 언어로 된 Windows 버전을 실행 중인 사용자는 Windows PowerShell 1.0 영어 버전을 설치하시기 바랍니다. 자세한 내용은 기술 자료 문서 926139를 참조하십시오.

• MUI 언어 팩 Windows 인터페이스가 여러 언어로 표시되는 Windows MUI(다국어 인터페이스) 버전을 실행 중인 사용자는 Windows PowerShell 1.0 영어 버전을 설치한 다음 Windows PowerShell 1.0 MUI 언어 팩을 설치하십시오. MUI 언어 팩에는 Windows PowerShell 프로그램이 포함되어 있지 않습니다. 자세한 내용은 기술 자료 문서 926141을 참조하십시오.

다른 버전의 Windows PowerShell 1.0이 설치되어 있는 경우 Windows PowerShell 1.0을 설치하기 전에 먼저 제거하십시오. 설치하는 동안 다른 프로그램에서 다른 버전의 Windows PowerShell 1.0 파일을 사용한 경우가 아니라면 Windows PowerShell 1.0을 설치한 후 컴퓨터를 다시 시작하지 않아도 됩니다.


다운로드
 

1. garbage collection (쓰레기 수집)
- 자바 프로그램이 더 이상 참조되지 않는 메모리를 모아 시스템에 되돌려 주는 것.
- 프로그래머는 메모리에 대해서는 아무 관여하지 않는다.
- 참조중인 객체를 찾는 방법
참조계수 기법 (reference-counting) : 객체를 참조하는 갯수를 추적하여 참조중인 객체를 구분.
- heap 안에 있는 각 객체마다 참조계수(reference-count)가 유지
- 어떤 객체가 처음 생겨서 그 객체를 참조하는 변수에 배정하면 참조계수는 1이고 다른 변수가 그 객체를 참조할 때 참조계수는 1씩 증가한다. 그리고 객체를 참조하는 변수가 다른 값이 배정되면 1씩 감소한다.
- 참조계수가 0인 객체 : garbage
추적 기법 (tracing) : 루트 노드에서 시작하는 참조의 그래프를 추적하는 방법.

① simple garbage collection
mark-sweep 방식
- 주기적으로 전체 메모리를 탐색하여 garbage를 찾음.
- local variable array와 stack에서 참조하는 각 객체를 '유효함' 상태로 체크
- 유효하다고 체크된 각 객체들이 참조하는 다른 객체들도 역시 '유효함'
⇒ mark 단계
- 유효함 체크 과정이 끝나고 유효함 체크를 받지 못한 객체들은 garbage로 간주
- garbage로 간주된 객체는 garbage collector에 의해 수거된다.
⇒ sweep 단계
- garbage collection이 진행중인 경우, garbage collector 이외의 모든 쓰레드는 중지되어야만 한다. garbage collection 하는 중에, 유효하다고 체크되지는 않았지만 실제로는 유효한 객체에 대한 참조를 다른 쓰레드가 메모리에서 옮기고 다닐 수 있기 때문에 그 객체는 garbage로 간주될 수 있기 때문이다.

② generational garbage collection
- 메모리 일부만 탐색하여 garbage를 찾는 방식으로 mark-sweep 방식보다 전체 처리 속도 향상.
- 자바 프로그램에서 만들어지는 대부분의 객체들은 매우 짧은 시간 동안만 참조되어진다는 것과 오랫동안 유효했던 객체는 계속적으로 유효할 것이라는 전제를 바탕으로 한다.
- 객체들은 언제 생성되었는지를 기준으로 세대별로 묶이게 된다.
- heap을 객체들 한 '세대(generation)'에 의해 두 개 이상의 각 subheap으로 나눔.
- 객체가 처음 생성되면 특정 subheap에 메모리를 할당해준다.
- 대부분의 객체가 수명이 짧으므로 첫 번째 garbage collection이 일어나면 살아있는 객체는 아주 적음. 이 때 가장 어린 세대로서 살아 남은 객체는 다음 세대로 등급이 올라감 : 다른 supheap로 옮겨진다.
- 어린(younger) 객체는 늙은(older) 객체보다 더 자주 garbage collection을 함.

※ compaction 기법
- garbage collection 이후 객체들이 참조하는 메모리는 순서대로 되어 있지 않고 흩어져서 존재하기 때문에 큰 크기의 객체가 차지할 만한 곳을 찾기가 힘들어지게 된다.
⇒ fragmentation (단편화)
- 이런 단편화를 최소화하기 위해서 compaction 기법을 사용한다.
- 현재 참조되고 있는 객체를 heap의 한 쪽 끝으로 모으는 기법
- 하나의 메모리 공간이 다른 공간으로 복사되어야 함.
- 옮겨진 객체는 새로운 위치로 참조가 갱신됨.

※ finalization (객체 최종화)
- class는 static으로 선언되지 않고, 아무런 인자도 받지 않고, 어떤 값도 return 하지 않는 finalize라는 method를 사용하여 finalization을 요구할 수 있다.
- 객체가 finalizer를 가지고 있으면서 더 이상 참조되지 않으면 garbage collector는 객체에 의해 점유되고 있는 메모리를 재사용하기 위해 finalizer를 호출한다.
- finalizer는 반드시 한번 호출되어야 한다.
- 객체가 언제 어디서 어떤 순서로 finalizer를 호출한다는 것은 보장하지 않는다.
- protected void finalize() throws Throwable {
super.finalize();
 


begin tran
/** BEGIN TRAN... ROLLBACK TRAN으로 EMP 테이블의 무결성을
유지할 것***/

--1. 30번 부서 사원들의 직위, 이름, 월급을 담는 VIEW를 만들어라.
create view view01
as
select job,ename,sal
from emp
where deptno = 30

select * from view01


--2. 30번 부서 사원들의  직위, 이름, 월급을 담는 VIEW를 만드는데,
-- 각각의 컬럼명을 직위, 사원이름, 월급으로 ALIAS를 주고 월급이
-- 300보다 많은 사원들만 추출하도록 하라.

alter view view02
as
select job  as [직위]
,  ename as [이름]
,  sal  as [월급]
from emp
where sal > 300

--3. 부서별 최대월급, 최소월급, 평균월급을 담는 VIEW를 만들어라.

create view view03 as
select max(sal) as[max]
,  min(sal) as[min]
,  avg(sal) as[avg]
from emp
group by deptno

select * from view02

--4. 부서별 평균월급을 담는 VIEW를 만들되, 평균월급이 2000 이상인
-- 부서만 출력하도록 하라.

alter view view02 as
select avg(sal) as [avgsal]
from emp
where sal > 2000
group by deptno

exec sp_help view03

--5. 직위별 총월급을 담는 VIEW를 만들되, 직위가 MANAGER인
-- 사원들은 제외하고 총월급이 3000이상인 직위만 출력하도록 하라.

alter view view02 as
select sum(sal) as[sal]
from emp
where job != 'manager'
group by deptno
 having sum(sal) > 3000


--6. 30번 부서 사원의 부서번호, 사원번호, 사원이름, 월급을 담는
-- VIEW를 작성하되 다른 부서에서 근무하는 사원들의 레코드는
-- 입력 및 수정하지 못하도록  WITH CHECK OPTION을 사용하라.

create view view06
as
select deptno, empno, ename, sal
from emp
where deptno = 30
with check option;

 

--7. 20번 부서에서 근무하는 사원의 이름, 월급, 커미션, 부서번호를
-- 담는 VIEW를 작성하되, 그 누구도 VIEW의 정의를 보지 못하도록 하라.

create view view07 with encryption
as
select ename, sal, comm, deptno
from emp
where deptno = 20

exec sp_helptext view07

--8. 7번 문제에서 만든 VIEW를 20번 부서에서 근무하는 사원의 이름과
-- 월급만 담는 VIEW가 되도록 수정하고 다시 암호화하여라.
alter view view07 with encryption
as
select ename, sal
from emp
where deptno = 20

-- 9. 위의 VIEW를 삭제하라.
drop view view01,view02,view03,view04,view05,view06,view07


begin tran
--view
/*
보다, 실제테이블은 아니며, 실제 테이블의 특정 부분을 보기 위한
구문을 담고있는 객체.
보안 , 편리성
view를수정할경우 기본값도 수정됨
*/

create view view01
as
select empno, ename, sal
from emp

select * from view01

create view view02
as
select empno, emp.deptno, dname
from emp, dept
where emp.deptno = dept.deptno
 and emp.deptno in(10,20)
 
select* from view02

update view01
set sal = 9999
where ename = 'smith'

select * from emp

insert view01 values(8888,'tom',500)

alter view view01 with encryption
as
select empno, ename, sal
from emp


/*
view03
직업별 평균 월급을 담는 뷰 생성.
*/

alter view view01
as
select job , avg(sal) as [avgsal]
from emp
group by job

update view01
set avgsal = 3000
where job = 'clerk'


/*
view04
사원이름, 월급을 담는 뷰 생성 단, 월급이 높은 사람부터 출력(내림차순)
*/

--order by는 바로 view에 담길수없다.
alter view view02
as
select top 50 ename, sal
from emp
order by sal desc

/*
view05
사원번호, 이름, 월급을 담는 뷰, 단 월급이 2000이상
*/

alter view view02
as
select empno,ename,sal
from emp
where sal > 2000

insert view02 values(7777,'tom',2500)
insert view02 values(8888,'kim',1500)
insert view02 values(9999,'lee',500)

select * from emp

select * from view02

delete from emp
where empno in(7777,8888,9999)


--1. 아래와 같은 조건으로 'SQL좌석번호'이름의 데이터베이스를 만들어라.
CONDITION
/*1. FILE_GROUP: PRIMARY ONLY
2. DATA_FILE
 - LOGICAL_NAME: SQL좌석번호_DATA
 - PHYSICAL_NAME:
   C:\Program Files\Microsoft SQL Server\MSSQL\Data\sql좌석번호data.mdf
 - SIZE: 3MB
 - MAXSIZE: 10MB
 - FILE_GROWTH: 10%
3. LOG_FILE
 - LOGICAL_NAME: SQL좌석번호_LOG
 - PHYSICAL_NAME:
   C:\Program Files\Microsoft SQL Server\MSSQL\Data\sql좌석번호log.ldf
 - SIZE: 1MB
 - MAXSIZE: 8MB
 - FILE_GROWTH: 10%
*/
create database SQLNum
on primary
(
 name='SQLNum_DATA'
, filename='d:\test\SQLNumData.mdf'
, size=3mb
, maxsize=10mb
, filegrowth=10%
)
log on
(
 name='SQLNum_LOG'
, filename='d:\test\SQLNumLog.lef'
, size=1mb
, maxsize=8mb
, filegrowth=10%
)

exec sp_help SQLNum

-- 2. SQL좌석번호 데이터베이스에서 아래와 같이 EMP02라는 테이블을 만들고
-- 데이터를 입력하라.

create table EMP02
(
 EMPNO int
, ENAME varchar(12)
, SAL int
, HIREDATE datetime
)

alter table EMP02
add DEPTNO int


/*
COLUMN_NAME EMPNO ENAME  SAL HIREDATE DEPTNO
DATA_TYPE INT VARCHAR(12) MONEY SMALLDATETIME INT
  111 JOHN  3000 2000-06-30 1
  112 HUNTER  2500 2001-08-03 2
  113 SMITH  3500 1999-09-23 3
  114 CARRY  2500 2001-08-02 3
*/

-- 3. EMP02 테이블에 MGR 컬럼(INT)을 추가하라.

alter table emp02
add MGR int

-- 4. EMP02 테이블에서 SAL 컬럼의 데이터형을 INT로 바꾸어라.

alter table emp02
alter column SAL int


exec sp_help emp02

-- 5. EMP02 테이블에서 MGR 컬럼을 삭제하라.

alter table emp02
drop column MGR

-- 6. EMP02 테이블을 삭제하라.

 

-- 7. SQL좌석번호 데이터베이스를 삭제하라.

drop database SQLNum

create table test01
(
 eid int not null
, ename char(10)
)

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

MS-SQL 문제 9문  (0) 2011.05.18
MS-SQL Veiw  (0) 2011.05.18
MS-SQL 데이터베이스 만들기 [ create table , create database ]  (0) 2011.05.18
MS-SQL 문제 50문  (0) 2011.05.18
MS-SQL 문제 12문  (0) 2011.05.18

+ Recent posts