SQL 프로시저와 PHP는 서로 다른 역할을 수행하는 기술이지만 함께 사용할 때 장단점이 있습니다.

장점:
1. **성능 향상**: SQL 프로시저는 데이터베이스에서 실행되므로 데이터베이스 서버에서 로직을 처리하므로써 성능이 향상될 수 있습니다.
2. **보안 강화**: 프로시저를 사용하면 일부 데이터에 대한 직접적인 액세스를 제어할 수 있어 보안을 강화할 수 있습니다.

단점:
1. **유연성 감소**: SQL 프로시저는 데이터베이스에 종속적이기 때문에 코드를 유연하게 변경하기 어려울 수 있습니다.
2. **디버깅 어려움**: SQL 프로시저 내에서 발생한 오류를 추적하고 디버깅하기 어려울 수 있습니다.
3. **포팅 어려움**: 데이터베이스 시스템을 변경하거나 다른 환경으로 이전할 때 프로시저의 이식성이 떨어질 수 있습니다.

백엔드의 장단점:
1. 다양한 웹 프로젝트에서 사용될 수 있으며, 다양한 데이터 소스와 통합이 가능합니다.
2. 일반적으로 디버깅이 쉽고, 오류 메시지가 명확하여 문제를 해결하기 용이합니다.

종합적으로, 프로젝트의 요구 사항과 성능, 유지보수 등을 고려하여 SQL 프로시저와 백엔드 어떻게 조합할지 결정해야 합니다.

아래는 생년월일로 나이를 계산하는 함수입니다.

<?php
function calculateKoreanAge($birthDate) {
    // 생년월일을 DateTime 객체로 변환
    $birthDateTime = new DateTime($birthDate);
    $currentDateTime = new DateTime();

    // 연도 차이를 계산
    $age = $currentDateTime->format('Y') - $birthDateTime->format('Y');

    // 현재 연도에서 생일이 지났는지 확인
    if ($currentDateTime->format('m-d') < $birthDateTime->format('m-d')) {
        $age--;
    }

    return $age;
}

// 생년월일을 입력 받기 (예: '1990-05-15')
$birthDate = '1990-05-15';
$age = calculateKoreanAge($birthDate);
echo "만 나이: " . $age;
?>

생년월일을 datetime으로 변환을 해야 합니다.

$birthDateTime = new DateTime($birthDate);

생일이 지났는지 확인

if ($currentDateTime->format('m-d') < $birthDateTime->format('m-d')) {
    $age--;
}

 

'tech > PHP' 카테고리의 다른 글

PHP 디버깅. 에러 보이게 하는 방법  (0) 2024.07.02
자주 사용하는 $_SERVER  (0) 2023.12.04
또 다른 조건문 switch  (1) 2023.10.25
사용자 정의 함수에 값을 가져 오는 방법  (0) 2023.10.23
문자 변환, 변경, 치환  (0) 2023.10.22

JavaScript에서 특정 작업을 몇 초 후에 실행하려면 setTimeout 함수를 사용할 수 있습니다. setTimeout 함수는 일정 시간(밀리초 단위)이 지난 후에 지정된 함수를 실행합니다.

사용법:

setTimeout(function, delay);


function: 지연 후 실행할 함수
delay: 지연 시간(밀리초 단위)

예제 1 - 간단한 예제:

setTimeout(function() {
    console.log("3초 후에 이 메시지가 출력됩니다.");
}, 3000);


예제 2 - 화살표 함수 사용:

setTimeout(() => {
    console.log("5초 후에 이 메시지가 출력됩니다.");
}, 5000);


예제 3 - 함수 참조 전달:

function showMessage() {
    console.log("2초 후에 이 메시지가 출력됩니다.");
}
setTimeout(showMessage, 2000);



예제 4 - DOM 조작 예제:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>setTimeout Example</title>
</head>
<body>
    <div id="message">메시지가 여기에 나타납니다.</div>
    <script>
        setTimeout(() => {
            document.getElementById("message").textContent = "4초 후에 이 메시지가 나타납니다.";
        }, 4000);
    </script>
</body>
</html>
더보기


설명:
간단한 예제: 3초 후에 콘솔에 메시지를 출력합니다.
화살표 함수 사용: 5초 후에 콘솔에 메시지를 출력합니다.
함수 참조 전달: showMessage라는 함수를 정의하고, 2초 후에 실행합니다.
DOM 조작 예제: setTimeout을 사용하여 4초 후에 div 요소의 텍스트 내용을 변경합니다.

이 예제들은 JavaScript에서 setTimeout 함수를 사용하여 특정 작업을 지연시키는 방법을 보여줍니다. setTimeout은 비동기적으로 동작하므로, 지연 시간 동안 코드의 다른 부분이 계속 실행될 수 있습니다.

 

PHP 개발을 하다 보면 다양한 에러와 문제를 만나게 됩니다. 이때, 에러 메시지를 정확히 보고 수정하는 것이 중요합니다. PHP는 기본적으로 에러 메시지를 숨기는 설정이 되어 있는 경우가 많기 때문에, 개발 환경에서 에러를 표시하도록 설정하는 방법을 알아보겠습니다.

1. php.ini 설정 파일 수정
PHP의 설정 파일인 php.ini를 수정하여 에러를 표시할 수 있습니다. 이 파일은 PHP가 설치된 디렉터리에 위치해 있습니다.
PHP가 설치된 디렉터리에서 php.ini 파일을 찾아 텍스트 에디터로 엽니다.
1.2.  display_errors 설정 변경

display_errors = On


display_errors 값을 On으로 설정하면 에러 메시지가 브라우저에 출력됩니다.
1.3. error_reporting 설정 변경

error_reporting = E_ALL

error_reporting 값을 E_ALL로 설정하면 모든 수준의 에러를 보고합니다.
2. PHP 코드 내에서 설정

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// 에러를 발생시키는 코드 예시
echo $undefined_variable;
?>
 

 

'tech > PHP' 카테고리의 다른 글

생년 월일로 나이 계산  (0) 2024.07.09
자주 사용하는 $_SERVER  (0) 2023.12.04
또 다른 조건문 switch  (1) 2023.10.25
사용자 정의 함수에 값을 가져 오는 방법  (0) 2023.10.23
문자 변환, 변경, 치환  (0) 2023.10.22

브라우저에 http로 접속 했을 때 http로 리다이렉션을 할려면 아파치 설정에서 리다이렉션을 하거나 백엔드에서 리다이렉션을 해야 합니다.

cloudflare를 이용하면 좀 더 편하게 할 수 있습니다.


URL은 www.도메인/*
설정 선택은 항상 https사용을 선택해서 page rule 저장 선택 한 뒤 소유한 도메인 URL을 브라우저에서 접속하면 https로 리다이렉션 되는 것을 볼 수 있습니다.

해외에서 서버로 접근을 시도하는 경우가 있고, 로그를 확인하여 보면 악의적인 접근 시도 일 때가 있습니다.

이러한 공격 시도를 막기 위해서 방화벽을 설정합니다.
중국 발 공격을 막기 위해서는 geoip(https://dev.maxmind.com/geoip)를 이용해서 중국 발 아이피 대역을 막기도 하지만 설정에 불편함이 있습니다.


cloudflare에 가입을 하고 난 뒤 DNS에서 도메인을 등록해야 합니다.

도메인 등록이 되었다하더라도 도메인 인증이 된 후 사용이 가능합니다.
인증 후 좌측 Security 선택 WAF에서 중국을 선택한 후 block을 선택하면 됩니다.

홍콩은 따로 추가를 해야 합니다.
이렇게 한 뒤 deploy를 선택하면 적용이 됩니다.

$_SERVER는 개발 작업을 할 때 쓰이지 않는 곳이 없을 정도로 널리 사용되고 있는 PHP에서 정해진 예약 변수입니다.
print_r($_SERVER)이나 var_dump($_SERVER)를 해보시면 아시겠지만 배열 형태로 되어 있습니다.

  • $_SERVER['HTTP_HOST']
    도메인 부분에 대당 합니다.
    테스트 서버 도메인과 실서버 도메인이 다를 때 $_SERVER['HTTP_HOST']를 사용하면 실서버로 이전 했을 때 별도의 작업이 필요 없습니다.
  • $_SERVER['PHP_SELF']
    도메인 뒤에 경로 입니다.
    https://google.com/shop/product.php
  • $_SERVER['QUERY_STRING'] 
    쿼리스트링 부분 입니다.
    예)?stx=abcd
  • $_SERVER['REMOTE_ADDR']
    접속된 사용자의 공인 아이피입니다.
  • $_SERVER['DOCUMENT_ROOT']
    httpd.conf 에 설정된 웹서버의 루트 디렉토리입니다.

'tech > PHP' 카테고리의 다른 글

생년 월일로 나이 계산  (0) 2024.07.09
PHP 디버깅. 에러 보이게 하는 방법  (0) 2024.07.02
또 다른 조건문 switch  (1) 2023.10.25
사용자 정의 함수에 값을 가져 오는 방법  (0) 2023.10.23
문자 변환, 변경, 치환  (0) 2023.10.22

온라인 게임을 하다가 갑자기 블루스크린이 뜨면서 video tdr failure 라고 뜨면서 재부팅이 되었습니다.
온라인 게임이라서 신고 당하지 않을까 했지만 다행히 신고는 당하지 않았습니다.

시도 했던 방법을 몇 가지 적어 보겠습니다.
1. video에러 라고 떠서 nvidia 그래픽 카드 드라이버를 완전 삭제
DDU(Display Driver Uninstaller)
https://www.wagnardsoft.com/display-driver-uninstaller-DDU-

 

Display Driver Uninstaller (DDU)

Drivers removal utility and other tools.

www.wagnardsoft.com

삭제 후 최신 드라이버 설치

2. 비디오 카드 전원 뺐다 꼽아 봤습니다.
3. 램을 뺐다 꼽아 봤습니다.
4. 비디오 카드 팬에 쌓여 있던 먼지를 제거 했습니다.
5. 제어판 > 사운드 드라이버 사용하지 않기로 변경

윈도우 키 + S > 장치관리자 > 사운드, 비디오 및 게임 컨트롤러 부분에 nvidia 사운드는 사용하지 않으므로 사용하지 않기로 했습니다.

6. 모니터와 비디오 카드(=그래픽카드)는 HDMI로 연결되어 있는데, 다른 HDMI로 연결 해봤더니 잘 되고 있습니다.

'tech > windows' 카테고리의 다른 글

실제로 꼽힌 램 보다 적게 인식이 된다면?  (0) 2020.03.25
파일 찾기  (0) 2016.10.04
MS WINDOWS 7 설치 할 때 0X80300001에러  (3) 2012.02.27

조건에 따라서 다른 실행이나 변수에 담는 여러가지 행위를 할 때 보통은 if를 사용하는 경우가 있습니다.
때에 따라서는 switch가 더 클린한 코드를 만들수 있습니다.

*if

if($condition){
	$res = 1;
}else{
	$res = 2;
}

*switch

switch($condition){
	case "1" : $res = "1"; breack;
	case "2" : $res = "2"; breack;
}

물론 if도 짧게 가능 합니다.

if($condition) $res = 1;
else $res = 2;

혹은 삼항 연산자도 가능합니다.

$res = ($condition) ? 1 : 2;

사용자 정의 함수에 값을 가져 오는 방법은 여러가지가 있습니다.

function inside(){
	$month = "12";
	return $month;
}

위의 사용자 정의 함수는 inside를 실행하면 12가 있습니다.

$prefix = "month : ";
function inside($prefix){
	$month = "12";
	return $prefix.$month;
}

인자 값으로 $prefix의 값을 넣을수 있습니다.
인자 값에는 문자열뿐만 아니라 배열도 가능 합니다.

$prefix = array("year", "month", "day");
function inside($prefix=array()){
	$month = "12";
	return $prefix[0].$month;
}

인자 값과는 별도로 글로벌로 가져 올려면 아래와 같습니다.

$prefix = "month : ";
function inside(){
	global $prefix;
    
	$month = "12";
	return $prefix.$month;
}

'tech > PHP' 카테고리의 다른 글

자주 사용하는 $_SERVER  (0) 2023.12.04
또 다른 조건문 switch  (1) 2023.10.25
문자 변환, 변경, 치환  (0) 2023.10.22
PHP의 데이터 타입(data type)  (0) 2023.10.20
자바스크립트에는 없는 PHP 연관 배열  (0) 2023.10.19

+ Recent posts