Zend Server CE 5.0.2 + Zend Studio 7.2 + Zend Framework 1.10 + PHPUnit 3.4.14 개발환경 구축하기

Posted at 2010/07/06 07:21 // in Development/PHP // by takeone

먼저 설치해야할 프로그램들


Zend Server CE 5.0.2
http://www.zend.com/en/products/server-ce/downloads

위 링크에서 환경과 맞는 버전을 설치한다.
설치시 Custom으로 설치해서 필요한것들을 선택해서 설치하도록 하자
기본으로 할경우 오라클 드라이버만 깔린다.

Zend Studio 7.2
http://www.zend.com/en/products/studio/downloads

역시 위 링크에서 환경과 맞는 버전을 설치한다.



Pearhttp://pear.php.net/go-pear 의 내용을 가져와 go-pear.php로 저장한다.
php go-pear.php 로 수행하면 끝
이후에 pear 명령을 쓸수있다.

* 윈도우 비스타나 7의 경우 관리자 권한으로 cmd.exe를 실행해줘야 정상적으로 동작함
* 윈도우에서 경우 마지막에 레지스트리 파일이 나오는데 이것을 등록해줘야함



PHPUnit 설치
원본 문서는 http://www.phpunit.de/manual/current/en/installation.html 이곳이다.

pear 가 설치되었을경우 다음 3줄이면 PHPUnit 가 설치된다.
pear channel-discover pear.phpunit.de
pear channel-discover pear.symfony-project.com
pear install phpunit/PHPUnit
2010/07/06 07:21 2010/07/06 07:21

Groovy 에서 디비 접속하기!

Posted at 2010/06/25 09:00 // in Development/Java // by takeone
요즘 회사 이직후 적응하는중이라 여유가 없어서 포스팅을 못하네요 ㅋ

그중에서도 회사일 하는중에 간단하게 해야할일 ( 데모를 위한 데이터 정리? ㅋ)을 그루~비! 로 해봤습니다. 역시나 맘에 들도록 간결하게 나오더군요 ㅡㅜ 까오!




데이터베이스 접속

import groovy.sql.Sql


def sql = Sql.newInstance("jdbc:mysql://127.0.0.1:3306/my_db", "root", "pass", "com.mysql.jdbc.Driver")


sql.eachRow("SELECT * FROM table") { row ->

    println row.field
}


sql.execute("update table set field = ?", [11])


설명이 필요없을 정도로 간결한...

요즘은 아예 groovyConsole 을 실행해놓고 테스트나 계산 같은걸 바로바로 해본답니다. ㅎㅎ
2010/06/25 09:00 2010/06/25 09:00

Form의 이벤트

Posted at 2010/05/24 14:37 // in Visual Basic // by takeone
Activated : 말그대로 Form이 활성화될때 나타나는 이벤트
Closing : Form이 닫히려 할때 발생하는 이벤트
Closed : Form이 닫힐때다. MFC로 비유하자면 OnClose 이벤트
Deactivated : Form이 비활성화 되었을때, 이를테면 Focus가 다른데 가있을 경우
Load : Form의 인스턴스가 생성되어 메모리에 적재되었으나 화면에 보이기 전이다
Dispose : Form이 죽을때 발생하는 이벤트. MFC로 비유하자면 PostNcDestroy 이벤트다.



이번 작업에서 form_load 에 걸려있던 이벤트가 화면에 올라오기 전에 이벤트가 발생하는 바람에 이전의 데이터가 남아있는 오류가 있었다. 체크!
2010/05/24 14:37 2010/05/24 14:37

mysql 자주쓰는 것들 모음

Posted at 2010/04/13 14:19 // in Database/Mysql // by takeone
그리 자주 사용하지는 않지만 매우 필요한, 잊어버리지말자!

데이터베이스 루트 비밀번호 분실시

일단 mysql 프로세스를 모두 죽인다.
killall mysqld
혹은
/etc/init.d/mysqld stop
그후 계정이 없는 모드로 mysql을 실행한다.
safe_mysqld --user=root --skip-grant-tables &
혹은
mysqld_safe --user=root --skip-grant-tables &

후에 mysql 로 들어간후 use mysql; update user set password=password('114') where user='root'; 로 변경한다.

예전 시스템의 경우 비밀번호방식이 다른데 old_password로 변경할수 있다.

데이터베이스 이전시 덤프와 입력을 동시에!

mysqldump -h 192.68.0.30 -uroot -p114 --skip-lock-tables data | mysql -h 192.68.0.31 -uroot -p114 data
재시작이 안될경우...
netstat -nlp
하면 각 포트당 물고있는 서비스들이 나온다. 보통은 killall mysqld 하면 죽지만 않죽는경우 위처럼 한다음 PID를 알아내 kill -9 pid 해서 강제로 죽인후 재시작 하면 된다.
vi /var/log/mysql.log
를 보면 원인을 알수있는데 다음과 같은 에러가 난다면
060716 17:21:53  mysqld started
060716 17:21:53 InnoDB: Started; log sequence number 0 1736000119
/usr/sbin/mysqld: File './mysql-bin.000002' not found (Errcode: 2)
060716 17:21:53 [ERROR] Failed to open log (file './mysql-bin.000002', errno 2)
060716 17:21:53 [ERROR] Could not open log file
060716 17:21:53 [ERROR] Can't init tc log
060716 17:21:53 [ERROR] Aborting

060716 17:21:53 InnoDB: Starting shutdown...
060716 17:21:55 InnoDB: Shutdown completed; log sequence number 0 1736000119
060716 17:21:55 [Note] /usr/sbin/mysqld: Shutdown complete

060716 17:21:55 mysqld ended
mysql-bin.index를 삭제해주고 시작하면 된다.
백업후 복구시
ERROR 1153 (08S01) at line 20555: Got a packet bigger than 'max_allowed_packet' bytes
와같은 에러가 난다면
[mysqld]
max_allowed_packet=512M
[client]
max_allowed_packet=512M
이런식으로 설정을 바꿔준다. 최대 허용 패킷이라는건데 원격에서 할경우 날수 있는 오류이다. 4.0.1 이상부터는 1기가까지 가능하고 그 이하는 16M가 최대인다.

Incorrect integer value: '' for column 'field' at row 1
MySQL 5.x 업그레이드 이후 Incorrect integer value: 문제로 strict mode를 주석처리
integer 값에 '' 빈 스트링값이 들어가서 생기는 오류

# Set the SQL mode to strict
# sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"  


2010/04/13 14:19 2010/04/13 14:19

Selenium에서의 파일 업로드

Posted at 2010/03/31 00:47 // in Development // by takeone
 웹테스트 자동화 도구인 Selenium에서 파일업로드를 자동화 하는 방법입니다. 기본적으로 파일은 임의로( 스크립트 등) 변경할수 없게 되어있는데요 파이어폭스에서는 다음과 같이 풀어서 적용되도록 할수 있습니다.

주소창에 about:config 에 들어가서
signed.applets.codebase_principal_support
값을  true로 바꾸고

콘솔창 (파이어버그)에서
netscape.security.PrivilegeManager.enablePrivilege('UniversalFileRead');
다음을 실행해줍니다. 그럼 허용여부를 묻는데 허용을 하면 그다음부터는 Input  type="file"에 직접 파일을 넣을수 있습니다.

IE에서는 어떻게 되는지 모르겠네요 아시는분 없나요 ㅡㅜ
2010/03/31 00:47 2010/03/31 00:47

이클립스로 자바 원격 디버깅 하기

Posted at 2010/03/30 03:46 // in Development/Java // by takeone
보통 프로그램을 만들면 로컬에서 테스트한것과 실제 릴리즈 한것에 대한 차이 때문에 에러 잡기가 애매한경우가 있다.

해서 이클립스와 자바에서는 원격 디버깅을 지원하는데 다음과 같이 실행해볼수 있다.

원격지
java -jar -Xrunjdwp:transport=dt_socket,address=8000,server=y takeone.jar

위에서는 8000포트, 서버모드로 자바 프로그램을 실행한다. 물론 원격지의 방화벽 8000 포트를 열어줘야 한다. 위에처럼 실행하면 자바 프로그램이 다음과 같은 메세지를 띄우며 대기상태가 된다.
Listening for transport dt_socket at address: 8000

이클립스
사용자 삽입 이미지

Debug에서 Remote Java Application을 선택해줍니다. host는 원격지의 IP를 입력해주고 아까 정했던 8000 포트로 지정합니다.

그런후 디버깅~ 누르면 로컬과 똑같이 디버깅을 수행할수 있습니다.

위에서 Connection Type을 Socket Listen으로 바꾸면 반대로 원격지에서 로컬로 접속할수 있습니다. 원격지가 유동IP인경우 좋겠네요
2010/03/30 03:46 2010/03/30 03:46

Zend Framework - Zend_Db 사용법

Posted at 2010/03/25 10:42 // in Development/PHP // by takeone

설정
<?php
require_once 'Zend/Db.php';


// Mysqli 는 디비의 종류, 나머지는 디비 정보
$db = Zend_Db::factory('Mysqli', array(
    'host'     => $host_admin,
    'username' =>  $user_admin,
    'password' => $password_admin,
    'dbname'   => $blog_DB
));

사용법
1. 하나의 데이터
$totalPost = $db->fetchOne("SELECT count(*) FROM posts WHERE
id = '$id'");

2. 하나의 ROW 데이터
$post = $db->fetchRow("SELECT * FROM posts WHERE id = '$id'");

3.  전체 데이터
$posts = $db->fetchRow("SELECT * FROM posts WHERE id = '$id'");

4. 인서트
$data = array('id'=>'takeone', 'comment'=>'hello');
$db->insert('posts', $data);

5. 업데이트
$data = array('id'=>'takeone', 'comment'=>'hello');
$db->insert('posts', $data, "uid = '$uid'");

6. 딜리트
$db->delete('posts',  "uid = '$uid'");

7. 일반 쿼리
$db->query("SELECT * FROM posts WHERE id = '$id'");

2010/03/25 10:42 2010/03/25 10:42

아이폰과 안드로이드 크로스플래폼 개발환경

Posted at 2010/03/19 09:37 // in Development/Mobile // by takeone

PhoneGap

http://phonegap.com/
지원 디바이스 : 아이폰, 안드로이드, 블렉베리, 윈도우 모바일, 심비안, 팜 등등등
개발언어 : Html + css + ajax

요즘 뜨고 있다고 하네요 현재 실제로 개발된 어플들도 많구요 HTML과 CSS로 모양을 만들고
자바스크립트로 콘트롤 하는 형태입니다.
http://phonegap.pbworks.com/
에서 보시면 PhoneGap을 지원하는 자바스크립트 프레임워크로 jQuery나 dojo framework도 보이네요
디바이스 종속적인 기능들도 구현하기 매우 쉽게 되어있네요
구동 동영상을 보시면, 게임도 만들수있습니다. 자바스크립트 코드로 각종 센서들도 접근 가능 +_+

다음은 아이폰에서 연락처를 추가하는 코드입니다. 물론 자바스크립트구요

##PhoneGap addContact

function addContact(){
        var sample_contact = { 'firstName': 'John', 'lastName' : 'Smith', 'phoneNumber': '555-5555' };

        var firstName = prompt("Enter a first name", sample_contact.firstName);
        if (firstName) {
                var lastName = prompt("Enter a last name", sample_contact.lastName);
                if (lastName) {
                        var phoneNumber = prompt("Enter a phone number", sample_contact.phoneNumber);
                        if (phoneNumber) {
                                sample_contact = { 'firstName': firstName, 'lastName' : lastName, 'phoneNumber' : phoneNumber };
                                navigator.contacts.newContact(sample_contact, addContact_Return);
                        }
                }
        }
}

function addContact_Return(contact)
{
        if (contact) {
                navigator.notification.alert(contact.firstName + " " + contact.lastName, "Contact Returned", "Dismiss");
        }
}

플래시

플래시는 플레이어가 있는 곳이라면 어디든 동작합니다. 특히 아이폰과 안드로이드에서는 어플 형식으로 만들수 있고
현재 아이폰에서는 실제 플래시로 작업하는곳도 있습니다.
안드로이드에서는 올해말에 출시될꺼라고 하네요
http://wooyaggo.tistory.com/entry/News-Android%EC%9A%A9-Flash-Player-101-AIR-20-%EA%B3%B5%EC%8B%9D-%EB%B0%9C%ED%91%9C

2010/03/19 09:37 2010/03/19 09:37

2007~2010년도 브라우저와 OS버전별 브라우저 점유율

Posted at 2010/03/19 09:37 // in Development // by takeone

http://blog.daum.net/miriya/15600981

2007~2010년도 브라우저와 OS버전별 브라우저 점유율입니다. 국내 자료라고 하네요

IE6이 점유율이 50% 이하로 떨어졌다는 소식입니다. 한달에 1%씩 떨어지고 있다네요 -_-

최근에 구글도 IE6에 대한 지원 자체를 아예 끊었다고합니다.

(IE6으로 들어가보면 더이상 지원하지않으니 업그레이드 하세요~ 메세지 뜹니다.)

없어져라 IE6 -_-

2010/03/19 09:37 2010/03/19 09:37

제이쿼리 북마크 기능

Posted at 2010/03/12 18:14 // in Development/AJAX // by takeone

줴이쿼리 북마크입니다~

모든 브라우저에서 동작하고, 안되는 브라우저에서는 메세지를 띄워주네요~

주소는
http://www.dummwiam.com/jFav
이고 사용법은

// 줴이쿼리로드
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1");
</script>

// jFav 로드~
<script src="../libraries/jquery/plugins/jFav_v1.0.js"></script>
<script>
$(function() {
 $('.add-favorite').jFav();
});
</script>

// 이미지
<span class="add-favorite">북마크추가<span>


개인적으로는 북마크정도의 기능은 제이쿼리의 기본기능으로 들어가도 될것같네요 ㅎㅎ

2010/03/12 18:14 2010/03/12 18:14
1 2 3 4 5 ... 23