https://code.google.com/archive/a/apache-extras.org/p/phpmailer    다운로드


<?php


use PHPMailer\PHPMailer\PHPMailer;

use PHPMailer\PHPMailer\Exception;


require_once('./lib/PHPMailer-master/src/Exception.php');

require_once('./lib/PHPMailer-master/src/PHPMailer.php');

require_once('./lib/PHPMailer-master/src/SMTP.php');


$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch


$mail->IsSMTP(); // telling the class to use SMTP


try {


    $mail->Host = "smtp.gmail.com"; // email 보낼때 사용할 서버를 지정

    $mail->SMTPAuth = true; // SMTP 인증을 사용함

    $mail->Port = 465; // email 보낼때 사용할 포트를 지정

    $mail->SMTPSecure = "ssl"; // SSL을 사용함

    $mail->Username   = "test@gmail.com"; // Gmail 계정

    $mail->Password   = "password"; // 패스워드

    $mail->SMTPDebug = 2;

    $mail->CharSet = "utf-8";  //한글깨짐 방지를 위한 문자 인코딩설정

    $mail->SetFrom('test@gmail.com', 'TESTER'); // 보내는 사람 email 주소와 표시될 이름 (표시될 이름은 생략가능)

    $mail->AddAddress('test@naver.com', '받는사람'); // 받을 사람 email 주소와 표시될 이름 (표시될 이름은 생략가능)

    $mail->Subject = 'Email test'; // 메일 제목

    $mail->MsgHTML("mail test"); // 메일 내용 (HTML 형식도 되고 그냥 일반 텍스트도 사용 가능함)


    $mail->Send();


    echo "Message Sent OK";


}catch (phpmailerException $e) {

    echo $e->errorMessage(); //Pretty error messages from PHPMailer

} catch (Exception $e) {

    echo $e->getMessage(); //Boring error messages from anything else!

}

 ?>



// 페이지 네이션

$cnt = (!empty($res->num_rows))?$res->num_rows:"0";  //총 행의 수

$display = 10;          //한페이지에 보여질 데이터의 수

$block_page = 10;       //한 페이지블록에 보여질 페이지 수


$total_page = ceil($cnt/$display);        //총페이지의 수

$total_block = ceil($total_page/$block_page);        //총블록 수


$now_page = (!empty($_REQUEST['page'])?$_REQUEST['page']:1);

$now_block = ceil($now_page/$block_page);


$start_page = $now_block*$block_page - ($block_page-1);

if($start_page <= 1){

    $start_page = 1;

}


$end_page = $now_block*$block_page;

if($end_page >= $total_page){

    $end_page = $total_page;

}


$qry = "SELECT rp.*,tp.sale_whole,tp.name,tp.sale_rate,tp.real_price

        FROM rose_shop.tqi_product AS rp

      

        LIMIT ".(($now_page-1)*$display).",".$display;


<div class="container">

            <form class="myform" action="<?php echo $_SERVER['PHP_SELF']?>" method="GET">

                <input type="hidden" name="page" value="">

            </form>

            <nav style="text-align:  center;">

                <ul class="pagination">

                    <li>

                        <a href="javascript:void(0);" onclick="page(1)" aria-label="Previous">

                            <span aria-hidden="true">&laquo;</span>

                        </a>

                        <a href="javascript:void(0);" onclick="page(<?php echo ($start_page<=1?1:$start_page-1);?>)" aria-label="Previous">

                            <span aria-hidden="true">이전</span>

                        </a>

                    </li>

            <?php

            for ($i=$start_page; $i <= $end_page; $i++) {

            ?>

                    <li><a href="javascript:void(0);" onclick="page(<?php echo $i;?>)" <?php if($now_page == $i)echo "style='color:red'";?>><?php echo $i;?></a></li>

            <?php

            }

             ?>

                    <li>

                        <a href="javascript:void(0);" onclick="page(<?php echo ($end_page>=$total_page?$total_page:$end_page+1);?>)" aria-label="Next">

                            <span aria-hidden="true">다음</span>

                        </a>

                        <a href="javascript:void(0);" onclick="page(<?php echo $total_page;?>)" aria-label="Next">

                            <span aria-hidden="true">&raquo;</span>

                        </a>

                    </li>

                </ul>

            </nav>

        </div>


function page(i) {

        $("input[name=page]")[0].value = i;

        $('.myform')[0].submit();

    }

1. 덤프뜨기 


$> mysqldump -u[사용자아이디] -p 데이터베이스명 [테이블명] > 저장될 파일명 

예) mysqldump -ukamkami -p mydatabase > kamkami.pe.kr.sql 

이렇게 하면 디비(mydatabase)를 몽땅 덤프를 뜨게된다. 

테이블만 덤프를 뜨고 싶다면 

예) mysqldump -ukamkami -p mydatabase member_table > kamkami.pe.kr.member_table.sql 

이렇게 하면 테이블만 덤프를 뜰 수 있다. 

2. 복구하기 

덤프 파일을 가지고 복구를 하는 방법도 간단하다. 
$> mysql -u[사용자아이디] -p [디비명] < 덤프파일명 

예) mysql -ukamkami -p < kamkami.pe.kr.sql 
예) mysql -ukamkami -p mydatabase < kamkami.pe.kr.member_table.sql 



추가팁)

https://cigiko.cafe24.com/terminal-%EC%97%90%EC%84%9C-mysql-%EC%A0%91%EC%86%8D%ED%95%98%EC%97%AC-%EB%8C%80%EC%9A%A9%EB%9F%89-sql-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%84%9C%EB%B2%84-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4/



source명령어의 파일명을 쓸때는 반드시 "\"대신에 "/"를 써주어야된다.


폴더명에 한글이름이 있을경우 실행되지않음을 확인.

php를 이용하여 file을 로컬저장소에 저장하기



간단한 예제 소스입니다.

<?php $file_name = 'msg.txt'; // 저장될 파일 이름 $file = './text/msg.txt'; // 파일의 전체 경로 header('Content-type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . $file_name . '"'); header('Content-Transfer-Encoding: binary'); header('Content-length: ' . filesize($file)); header('Expires: 0'); header("Pragma: public"); $fp = fopen($file, 'rb'); fpassthru($fp); fclose($fp); ?>


사용법은 위의 소스코드를 file_down.php 등의 파일로 만들어 두고 

버튼이나 <a> 태그로 눌렀을때 file_down.php 로 이동하게 만들면 화면은 로드되지 않고 바로 파일 다운을 실행합니다.




디렉토리는 이렇게 구성하였습니다. 'text' 폴더안에 msg.txt 파일이 존재합니다.


test.php 에는 file_down.php 를 실행하기 위한 <a>태그만 하나 만들어줍니다.



링크를 누르게 되면 file_down.php 를 실행하게 되고 자동으로 파일이 지정된 폴더로 다운로드 되게 됩니다.



저장 폴더위치는 브라우저 설정에서 변경 할 수 있으며 '크롬' 의 경우 chrome://settings/  -> 고급 -> 다운로드에서 위치를 변경하면 됩니다.



HTML 에서 <input>으로 입력을 받을때 자동커서, Enter 치면 다음 <input>으로 커서를 넘기는

autofocus : 문서가 로드되면 autofocus 가 설정된 <input>에 자동focus를 준다.

required : required 가 설정된 <input>에 입력값이 없을때 <form>을 submit하게 되면 해당 <input>으로 focus를 넘긴다.




간단한 입력 <form>을 작성하여 autofocus 속성과 required 속성이 작동하는걸 보겠습니다.

 
         <form class="" action="index.html" method="post">
            <label for="">A</label>
            <input type="text" required="true" autofocus=""><br />
            <label for="">B</label>
            <input type="text" required=""><br />
            <label for="">C</label>
            <input type="text" required=""><br />
            <label for="">D</label>
            <input type="text" required="">
            <button type="submit" name="button">전송</button>
        </form>
 

autofocus 속성을 첫번째 <input>에 설정을 해준후 문서를 로드하면 자동으로 커서가 깜빡이는 모습입니다.


required 속성을 세번째 <input>에 설정한후 값을 모두 입력하고 '전송'을 하게 되면 <form>설정된 주소로 값을 보내게 됩니다. 

(index.html은 현재폴더에 만들어 두지않아서 Not Found오류가 발생하였습니다.)


만약 세번째 <input>에 값이 비워진상태에서 '전송'을 하게 되면 경고문구와 함께 해당 <input>으로 커서가 이동하게 됩니다.


이 두가지 속성을 모르고 <form>을 작업할때는 자바스크립트로 조금 복잡하게 코딩을 했었는데 찾아보니 

<input> 태그안에서 간단하게 속성만으로 동작할 수 있게 

회원가입이나 로그인 여러 필수 정보를 입력받는 <form>태그에서 두가지 속성 만으로도 편하게 구현이 가능할 것 같습니다.



정말 어렵게 접속되었다!!! 과연 어떤 모습일까??



25일 오픈한 '듀랑고'는 시작부터 굉장히 삐걱거리고 원할하지 못한 서버상태로 실망을 주었습니다.
2일이 지난 오늘까지도 두번가량의 패치가 있었고 접속자가 몰리자 서버를 증설하며 사태를 수습하려는 모습이 보였는데요.
새로오픈된 '찰리' 서버에서 시작을 해보았습니다. 약 만명의 대기자가 있었고 10분정도 기다리니 접속이 되더라구요!!



여러가지 직업의 캐릭터중에 플레이할 캐릭터를 선택면하면서

영화처럼 캐릭터가 야생의땅으로 표류하게 되는 내용의 인트로 튜토리얼을 진행하구요.



인트로를 진행해보니 그래픽이나 연출이 그동안 해보았던 모바일게임들에 비교했을때 

꽤나 완성도가 있는 편이라고 느껴지네요.



인트로가 끝나고 나면 케릭터생성을 진행하는데요.

커스텀마이징은 머리모양 피부색 목소리등 큰부분의 변화뿐 세세하게 설정하는 부분은 없는거 같아 아쉽네요.



케릭터생성후 로딩이 지나가면 튜토리얼을 진행하는 '앙코라'섬에서 시작하게 됩니다.


튜토리얼을 진행하고 나면 '안전가옥섬' 으로 이동하게 되고



유저 본인만의 공간인 '사유지' 를 가지게 되는 임무를 진행합니다.

이미 많은 분들이 집을 지었네요. 저는 처음에 맵에 나타나는 집모양에서만 건설이 가능한줄 알고 해맸습니다...

원하시는 곳에 내려서 빈땅에서 사유지를 건설 할 수 있습니다. ㅎㅎㅎ




어렵게 접속하여 1시간 가량 플레이 해보았는데요.. 

전체적으로 저는 그래픽도 좋고 게임성도 모바일에서 그동안 해보았던 느낌이 아니라는 생각이 들더군요. 


아쉬운 점은 오픈 후 지금까지도 서버의 불안정한 모습과 각종 오류들이 플레이도중 나타났지만

게임자체는 앞으로 충분히 지켜보며 즐겨볼만한 것 같습니다. 

앞으로 운영에서 문제점들을 잘잡고 개선해 나간다면 충분히 좋은 평가를 받을 수 있지않을까?? 하는 생각이 드네요.


야생의 땅 듀랑고 1월 25일 오픈!!! 그러나...



언제 부터인지 기억나지 않을 정도로 TV / 인터넷에서 사전예약중 광고를 하던 그 게임
'듀랑고' 가 드디어 1월 25일 오픈을 알리더니 아침에 앱스토어에 들어가니 다운로드가 가능하더라구여


모바일 게임을 굉장히 좋아하지만 요즘들어 할게임도 없고 하루 일과처럼 업적만 깨는 '세븐나이츠' 를 잠시할뿐...

양산형 RPG가 아닌 과금유도가 없는 그런 신박한 게임이 하고 싶었던 저는 그간 광고와 매체에서 접했던 '듀랑고'는 

조금은 다르지 않을까?? 어쩌면 정말이지 재밌는 게임을 오랜만에 하게 되지 않을까??? 하는 마음으로 다운을 했어요 ㅎㅎㅎ



저는 아이폰X를 사용중이에요 요즘 게임들이나 어플들은 아이폰X의 해상도를 지원하지 않아서 화면이 위아래 텅비거나 

게임을 할때는 좌우가 여백이 심하게 생겨서 아이폰X의 매력을 느끼지 못했는데 '듀랑고'는 화면을 가득채워주는 시작에

오... 재대로 만들었나?? 하는 기대감에 실행하였지만 '점검중' 만 보이더라구요...

많은 기대를 줬으니 유저가 몰려서 서버가 불안정 한가보구나 하고 일을 시작했죠 ... 점심먹고오면 할 수 있겠지 하는마음으로



점심시간이 다가오는 시간에 듀랑고는 포털사이트 실검 1위를 달성하며 

'오류의 땅 듀랑고' 라는 애칭(?) 을 가지게 되며 사용자들의 거센 관심을 받게되죠...ㅎㅎㅎ

저는 아 그냥 퇴근하고 집가서 편하게 해봐야겠다 라는 생각을 하게 되었죠.



하아... 그러나 집에 와서도 점검중...


8시 40분경 접속이 되는거 같아 인트로영상 까지 보고 케릭터 생성까지 했으나...




결국 이런모습으로 인상깊은 첫인상을 남겨주네요 '듀랑고'

하하하 몇달을 기다리게 했는데 하루 이틀 지나면 할 수 있겠죠?? 기다려봅니다... 얼마나 잘만들었는지 즐겨보겠어!!

'IT > 리뷰' 카테고리의 다른 글

[아이폰][게임] 야생의 땅 듀랑고 튜토리얼 진행  (0) 2018.01.27

애플 iOS 11.3 프리뷰 공개



애플이 24저녁 공식홈페이지에 iOS 11.3 에 대한 미리보기를 공개하였습니다.


주요기능으로는 



- 사자, 용, 곰, 해골을 포함한 16개의 새로운 애니모티콘 (아이폰X 에서만 가능)



- 새로운 AR 경험 ARKit 1.5출시


- 기업용 비지니스 챗 지원



- 배터리 및 성능 (최근 배터리게이트 문제로 논란이된 기능을 사용자가 선택가능 하도록 변경할 예정)

아이폰 8,X 이전의 모델의 배터리 소모가 이루어졌을 경우 소프트웨어적으로 성능을 의도적으로 저하시켰던 이슈


- 건강 앱에 건강 기록 추가





iOS 11.3 의 정식버전배포는 올 봄에 이루어 진다고 합니다.




cmd(명령프롬프트)창에서 MySQL 접속하기

서버에 있는 DB를 로컬로 가져오는 작업을 하려는데 phpMyAdmin은 가져오기 제한이 80MB 여서 검색하고 방법을 찾아 php.ini를 수정하고 했지만 재대로 가져오지 못했습니다....ㅠ
cmd에서 가져오기를 하는 방법이 있길래 도전해보았는데 MySQL접속에서도 오류가 나네요 검색을 통해 방법을 찾았습니다.



일반적인 접속방법은
'window키 + R' 로 실행 창이 뜨면 'cmd' 를 입력후 Enter



cmd 화면에서 'mysql -u root -p' 를 입력하고 Enter

그런데 위와 같이 password를 입력하라고 뜨지않고 



이런 화면이 보인다면 접속이 정상적으로 이루어지지 않은 것이에요.

시스템이 mysql이 어디에 설치되있는지 모르는 것이죠. 경로를 등록 해줘야합니다.



바탕화면이나 시작부분에서 '컴퓨터' 를 우클릭 -> '속성'



컴퓨터 속성창에서 '고급 시스템 설정' 메뉴가 보이실거에요.

저는 윈도우7을 사용중이 지만 윈도우10도 비슷할거에요.



'고급' 탭으로 이동후 '환경 변수' 를 눌러주세요.



사용자 변수에서 'Path'를 선택해주시고 '편집'을 눌러줍니다.




편집메뉴에서 기존에 있던 경로값 뒤에  세미콜론( ; ) 을 붙이고 

MySQL이 설치된 경로의 bin 폴더에 가셔서 경로를 복사해 옵니다.

그리고 세미콜론( ; ) 뒤에 붙여넣기 해주시고 확인!


설정이 모두 끝났습니다.


처음으로 돌아가 다시 명령어를 실행시켜보면



위와 같은 화면이 뜨면서 mysql> 이라는 시작부분이 보인신다면 접속이 정상적으로 된 것 입니다.

'Development > MySQL' 카테고리의 다른 글

mysql cmd에서 sql파일 덤프 용량 제한 x  (1) 2018.05.04

오늘 날씨가 굉장히 추웠는데요 퇴근후에 집에서 푹지지면서 쉬다보니 매콤한 야식이 땡기네요 ㅎㅎㅎ

집앞 편의점에서 요새 새로나온 까르보 불닭볶음면이 핑크핑크하게 눈에 들어왔습니다.



기존의 불닭볶음면도 매운게 땡길때 가끔먹지만 먹다보면 너무매워서 헉헉거리면서 먹다보면 땀범벅 정신이 얼얼했었는데

까르보 불닭은 과연 이름처럼 까르보나라의 맛이 나면서 얼마나 매운맛을 냈을까?? 궁금해지는군요



기존의 불닭은 액상스프와 김가루가 들어있었는데 까르보불닭은 분말스프가 하나 들어있습니다.



끓는물에 면 만 넣고서 잘 익도록 끓여줍니다. 물은 잘따라 버리시구요 기호에 맞게 조금 남겨주세요.

보통 한~두수푼 남기라고 되있는데 저는 약간 찰랑하게 해놓고 불을 다시키고 볶듯이 비벼서 먹는걸 좋아해요.

그렇게 하면 뜨끈뜨끈하고 적은물이라 증발도 되고 간이 딱 맞아요~



잘 비벼줍니다~~ 쉐킷쉐킷



짠~ 기존의 불닭볶음면 보다는 묽은 색깔이 느껴지시나요?

딱 먹었을 때 첫맛은 느끼한 까르보나라 느낌이 나요!!! 그리고 적당한 매운맛이 오면서 맛있게 맵다는 느낌이 들었습니다 ㅎㅎ

추운 날씨에 야식이 더욱더 땡기는 거 같은 요즘 핑크핑크한 까르보불닭을 마주치신다면 한번 드셔보세요 색다른 맛을 느낄 수 있을거에요~


+ Recent posts