Posted
Filed under 프로그래밍/PHP

* notice에러 방지
$ret = $arr[var];
-> $ret = $arr['var'];


* notice에러 방지
if ($_POST['var'])
-> if (isset($_POST['var']))


* 남용하면 이해할수 없는 코드가 됨
isset($_POST['var'])? $_POST['var']:NULL;
-> 삼항연산자는 남용하지 않는다.


* 무한루프 방지
for($i=0; $i<$max; $i++) {
-> for($i=0, $max = count($loop); $i<$max; $i++) {


* 메모리 절약
$msg = '안녕하세요';
echo $msg;
-> echo '안녕하세요';


* 에러 방지
echo "안녕 $msg";
-> echo '안녕 '.$msg;


foreach가 빠르다

explode가 빠르다

모든 변수는 선언하지 않은채 사용하면 notice에러가 발생한다.

2013/07/04 10:34 2013/07/04 10:34
Posted
Filed under 프로그래밍

$("#id",opener.document).text("aa");
$("#id",parent.document).text("aa");
2013/07/03 18:50 2013/07/03 18:50
Posted
Filed under 프로그래밍/PHP
개발을 하다보면 설정파일이 필요할때가 있다
프레임웍을 사용하면 자체적으로 별도의 설정파일을 세팅할수 있게 지원하지만 네이티브로 개발할경우
많이 사용하는 방식을 소개한다.

parse_ini_file

설정파일 내용은 기본적으로 php의 ini파일 형태이고
; This is a sample configuration file
; Comments start with ';', as in php.ini

[first_section]
one = 1
five = 5
animal = BIRD

[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username"

[third_section]
phpversion[] = "5.0"
phpversion[] = "5.1"
phpversion[] = "5.2"
phpversion[] = "5.3"

 

사용방법은

<?php
$ini_array parse_ini_file("sample.ini"true);
echo $ini_array['first_section']['one'];
?>




배열의 형태로 사용한다.
두번째인자의 true는 그룹명까지 결과에 포함하겠냐는거다


ini파일 노출이 껄그러우면 파일을 php로 만들어버리면 된다
 ;<? /*
; This is a sample configuration file
 ; Comments start with ';', as in php.ini

 [first_section]
 one = 1
 five = 5
 animal = BIRD

 [second_section]
 path = "/usr/local/bin"
 URL = "http://www.example.com/~username"

 [third_section]
 phpversion[] = "5.0"
 phpversion[] = "5.1"
 phpversion[] = "5.2"
 phpversion[] = "5.3"
;*/?>

2013/07/02 09:47 2013/07/02 09:47
Posted
Filed under 프로그래밍/PHP

잘돌아가던게 php 5.4로 업그레이드후 오류가 뜬다

2013/06/09 12:46:16 [error] 2952#0: *11681 FastCGI sent in stderr: "PHP message: PHP Fatal error:
Call-time pass-by-reference has been removed in /home/miyu/html/zboard/zboard.php on line 197"
while reading response header from upstream

 

&$error 와 같이  reference 처리된것은 모두 에러처리 되고 프로그램이 중단된다.
$error 와 같이 모든 코드를 교체해야한다.

예전에는 php.ini에서 allow_call_time_pass_reference = On으로 처리했지만
5.4부터는 사라졌다.

더불어 globals_register와 magic_quotes도 사라졌다.

The ini option allow_call_time_pass_reference was removed
Register globals, magic quotes and safe mode were removed

 

2013/06/09 13:21 2013/06/09 13:21
Posted
Filed under 장난감
서밋과 함께한 간단한 등산.

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
2013/06/05 21:16 2013/06/05 21:16
Posted
Filed under 골때리는 기사들
한 편의점 주인이 본사와 갈등을 겪다 자살을 기도한 사건 보도해 드렸습니다. 그런데 편의점 CU 측이 책임을 면하려고 고인의 사망 진단서에 손을 댄 사실이 뒤늦게 밝혀졌습니다. 수면 유도제 중독이라는 문구를 삭제했습니다.

.........


http://media.daum.net/economic/newsview?newsid=20130530203007800

2013/05/30 23:11 2013/05/30 23:11
Posted
Filed under 프로그래밍/PHP
PHP 5.4.15로 업그레이드를 했다
근데 기존에 없던 옵션이 생겼네?
security.limit_extensions 라는 놈이다

php-fpm.conf 을 열어보면
;security.limit_extensions = .php .php3 .php4 .php5

이렇게 되어있을것이다.
주석을 풀어주고 php코드가 들어간 확장자를 추가해준다.

security.limit_extensions = .php .php3 .php4 .php5 .htm .html

기본값이 .php 이기때문에 다른게 들어오면 막아버리는것이다.


2013/05/30 01:21 2013/05/30 01:21
Posted
Filed under 기타

요즘 시간을 가지고 구직 중이다.
이름없고 작아도 오래 다닐수 있는 회사를 찾고 있지
전회사에서는 면접관이였지만 이제 면접자로 입장이 바뀌었다

면접관이 갑?

내가 입사해서 어떤일을 할지도 안알려주는...

자기들 회의한다고 1시간이 넘게 대기실에서 기다리게 하고 미안하단 말한마디 없고 음료 한잔 안주고 실무파악도 안된 사람이 면접관으로 나온....

정보만 캐낼려는...

이력서도 안보고 이상한 질문 하는...

명함도 안주고 커피숍에서 면접하는...

면접관이 나보다 떨어져서 대화가 잘 안되는...

예전부터 느끼는거...회사가 같이 일할 사람을 선택하는거 맞지만
면접자는 자기가 일할 회사를 선택하는것도 맞다는거.

좋은 인재를 채용하려면 면접관의 자세도 중요하다 생각한다.

기본적인 예의는 서로 지키자고...
내가 널 채용해 줬으니 감사하게 생각하라는 마인드는 언제적 얘기인가..

지금은 당신이 면접관이지만 언제든지 상황이 바뀔수도 있다는걸 명심하자..



2013/05/15 11:54 2013/05/15 11:54
Posted
Filed under 프로그래밍

    $("#BtnDateSearch").click(function() {
     if(!$("#Date1").val()) { alert("시작날짜를 선택하세요");  return false; }
     if(!$("#Date2").val()) { alert("끝날짜를 선택하세요");  return false; }
     var date1 = new Date($("#Date1").datepicker("getDate"));
     var date2 = new Date($("#Date2").datepicker("getDate"));
      if (date2 - date1 < 0){
      alert("끝 날짜가 시작날짜보다 이전일수 없습니다"); return false;
     }
     $("#DateSearchForm").submit();

    });

 

2013/04/25 11:39 2013/04/25 11:39
Posted
Filed under 프로그래밍

mysql 에서 CHAR, VARCHAR 타입은 유사하다.

단지 저장하고 읽을 때만 살짝 다르다.

 

CHAR(40) 에 "mydata" 를 저장할 때, 6바이트를 저장하고 나머지 34바이트의 비어 있는 공간에는 공백을 채워서 저장한다.

그리고 읽어들일 때, 임의로 채워진 공백들은 제거되어서 읽혀진다. (물론, PAD_CHAR_TO_FULL_LENGTH 모드를 활성화하면 공백까지 다 읽어온다)

 

VARCHAR(40) 에 "mydata" 를 저장할 때, 6바이트를 저장하고, 뒤에 1바이트(255길이 미만) 또는 2바이트(255길이 이상)의 길이 정보를 추가한다.

따라서 VARCHAR 에는 공백을 채워넣지 않으므로, 가변 길이의 정보에 적합하다.

문제는 VARCHAR(40) 에 새로운 데이터가 업데이트 될 경우이다. 더 큰 길이의 데이터가 저장되면, 공간이 부족하여 새로운 저장 영역에 새로 할당해야 하기 때문이다. 이 때문에, 데이터 파편화가 심해진다.


테이블 ROW 중에 CHAR, VARCHAR 타입이 섞여 있으면 데이터 파편화는 발생할 수 밖에 없다. 파편화를 염두하고 설계한다면, 테이블의 데이터 타입 중에 VARCHAR 타입을 두어선 안될 것이다.

그러나 MySQL 에서는 다음의 쿼리를 적용하면 파편화를 막을 수 있다. 

ALTER TABLE tblname ROW_FORMAT = FIXED;

VARCHAR 타입을 CHAR 타입처럼 동작하도록 강제로 지정하는 것이다. 덕분에 저장 용량은 증가하지만, VARCHAR 로 인한 파편화로 성능 저하는 막을 수 있다.

 

물론 VARCHAR 로 선언한다고 무조건 파편화가 발생하는 것은 아니다. 앞서서 적은대로, 처음에 데이터를 INSERT 한 뒤에, 다른 크기의 데이터로 UPDATE 가 발생할 경우에 파편화가 발생하는 것이다.

그러므로 LOG 테이블처럼 INSERT 만 허용되는 테이블에는 이 문제가 적용되지 않을 것이다.

 

 

그리고, 다음의 쿼리를 통해서 저장된 데이터를 분석해볼 수도 있다.

SELECT * FROM tblname PROCEDURE ANALYSE();

 

 

마지막으로, 테이블 설계할 때부터 데이터 타입은 신중하게 고려하면 좋다. IPv4 문자열 주소는 CHAR(15) 형태로 한다든가, 아니면 아예 INT 값으로 저장할 수도 있다.(IPv6 라면 CHAR(39) 이다.)

그리고 MD5 암호키 정보는 CHAR(32) 형태로 하는 것이다.



출처 : http://netmaid.tistory.com/44

2013/04/23 14:07 2013/04/23 14:07