2018년 11월 25일

mysql 조회시 동일 값 중 가장 빠른 번호를 보

조회시 동일값중 하나를 조회할때..


SELECT article, dealer, price
FROM   shop
WHERE  price=(SELECT MAX(price) FROM shop);


서브쿼리를 수행하면 쉽게 조회가 가능하다. max, min 등등과같이 옵션을 변경하면 되겟다.

2018년 11월 17일

Font Awesone 의 CSS 아이콘 사용하기

아이콘 스타일시트의 CDN 주소를 <head></head> 사이에 넣는다.

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">



아이콘을 쓰려면 아래와 같이 2가지 방식으로 쓸 수 있다.

<i class="fas fa-stroopwafel"></i> <!-- 1) 무료는 fas 와함께 아이콘 이름을 씀 -->
<i class="fas fa-stroopwafel"></i> <!-- <i> 를 쓰거나 -->
<span class="fas fa-stroopwafel"></span> <!-- <span> 을 써서 아이콘 삽입 -->


아이콘의 크기는 fa-xs  ~ fa-10x 까지 설정가능하다

<i class="fas fa-stroopwafel fa-xs"></i>
<i class="fas fa-stroopwafel fa-sm"></i>
<i class="fas fa-stroopwafel fa-lg"></i>
<i class="fas fa-stroopwafel fa-2x"></i>
<i class="fas fa-stroopwafel fa-3x"></i>
<i class="fas fa-stroopwafel fa-5x"></i>
<i class="fas fa-stroopwafel fa-7x"></i>
<i class="fas fa-stroopwafel fa-10x"></i>



아이콘 컬러를 입히려면 span 으로 컬러코드를 주면 된다.

<span style="font-size: 3em; color: Tomato;">
  <i class="fas fa-stroopwafel"></i>
</span>

<span style="font-size: 48px; color: Dodgerblue;">
  <i class="fas fa-stroopwafel"></i>
</span>

<span style="font-size: 3rem;">
  <span style="color: Mediumslateblue;">
  <i class="fas fa-stroopwafel"></i>
  </span>
</span>


아이콘은 회전을 시키거나 flipping(상하좌우 반전)

<div class="fa-4x">
  <i class="fas fa-magic" data-fa-transform="rotate-90" style="background:MistyRose"></i>
  <i class="fas fa-magic" data-fa-transform="rotate-180" style="background:MistyRose"></i>
  <i class="fas fa-magic" data-fa-transform="rotate-270" style="background:MistyRose"></i>
  <i class="fas fa-magic" data-fa-transform="rotate-30" style="background:MistyRose"></i>
  <i class="fas fa-magic" data-fa-transform="rotate--30" style="background:MistyRose"></i>
  <i class="fas fa-magic" data-fa-transform="flip-v" style="background:MistyRose"></i>
  <i class="fas fa-magic" data-fa-transform="flip-h" style="background:MistyRose"></i>
  <i class="fas fa-magic" data-fa-transform="flip-v flip-h" style="background:MistyRose"></i>
</div>


자 이제 사용법은 알았으니 어떤 아이콘을 쓸수있는지 여기서 아이콘 이름을 찾자.

https://fontawesome.com/icons?d=gallery

2018년 11월 11일

CentOS7 apache 에서 .htm .html 파일에서 php 코드 실행하기

일단 경로를 보자면
/etc/httpd/conf/httpd.conf
에 AddType 관련한 설정을 찾아봤는데 php관련 설정은 안보인다.
/etc/httpd/conf.d/php.conf
라고해서 php관련한 설정을 이 파일에 따로 하는것을 알수있었다..
내용이 얼마 안되니까 풀코드를 써보겠다.
아래 부분중 붉은 색부분이 추가된 내용이다.(코드뷰가 색깔을 지가 맘대로 지정해서 붉은색 시가 잘 안난다. 그래서 글자를 키웠다. 큰 글씨가 추가된 부분임.
#
# Allow php to handle Multiviews
#
AddType text/html .php .html .htm

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

# mod_php options
<IfModule  mod_php7.c>
    #
    # Cause the PHP interpreter to handle files with a .php extension.
    #
    <FilesMatch \.(php|phar|htm|html)$>
        SetHandler application/x-httpd-php
    </FilesMatch>

    #
    # Uncomment the following lines to allow PHP to pretty-print .phps
    # files as PHP source code:
    #
    #<FilesMatch \.phps$>
    #    SetHandler application/x-httpd-php-source
    #</FilesMatch>

    #
    # Apache specific PHP configuration options
    # those can be override in each configured vhost
    #
    php_value session.save_handler "files"
    php_value session.save_path    "/var/lib/php/session"
    php_value soap.wsdl_cache_dir  "/var/lib/php/wsdlcache"

    #php_value opcache.file_cache   "/var/lib/php/opcache"
</IfModule>
변경된 설정을 저장하고 아파치 재시작 해주면 끝
systemctl restart httpd

2018년 11월 9일

CentOS7 에서 git 서버 자체서버로 운용하기

yum 으로 git 는 설치한걸로 가정하고 git 를 이해못하는 본인으로써 그냥 명령어들을 하나하나 나열해 보고자 한다.



기본환경에 아래의 경로로 작업을 했다.. 대부분 이와 거의 비슷하리라 본다.

1. CentOS 7 에 git  repository  디렉토리  /home/git/repo/
2. 웹서버에서 실제돌아가는 디렉토리  /home/rhdqn/htdocs/
3. 우리집 윈도우 컴퓨터 디렉토리 d:\home\rhdqn\htdocs\


<CentOS 7> 에서 git 생성 + 웹서버 파일을 git 레포로 집어넣기

1. git계정생성 홈디렉토리가  /home/git/

useradd git

2. git계정 비번 설정

passwd git

3. git 의 bare 만들기   rhdqn.git   라는 디렉토리를 만든다. 디렉토리명으로 git를 쓰는건 보통 git를 만들때 정한 무언의 규칙.

su - git
ssh-keygen -t rsa
mkdir /home/git/repo
mkdir /home/git/repo/rhdqn.git
cd /home/git/repo/rhdqn.git
git init --bare --shared

4.  웹서버 디렉토리로 이동해서 웹파일을 git로 올린다.

su - rhdqn
cd   : 현재위치는 (/home/rhdqn/ ) 가 되겠지
git init
git config --global user.name "name is here"
git config --global user.email "email is here"
git commit -m "first commit" -a
git remote add origin ssh://git@127.0.0.1/home/git/repo/rhdqn.git
git push origin master

5. <윈도우클라이언트> 집에서 쓰는 내 개인용 프로그래밍 할 컴퓨터에서 할 일

git init
git remove add origin ssh://git@www.rhdqn.kr/home/git/repo/rhdqn.git
git pull remote origin master

이후 소스가 수정되면
pull commit push  를 하면서  git 를 사용한다.

2018년 10월 26일

git 사용시 the file will have its original line endings in your working directory 에러 발생시 해결방법

윈도와 리눅스의 줄바꿈 차이 때문에 발생하는 문제

항상 윈도에서 작업하려면  아래 명령어를 써주면, 알아서 CTLF 를 git가 붙여준다.

git config --global core.autocrlf true

맥과 리눅스에서도 같이 작업하려면.. 아래 명령어를 통해 단방향으로만 붙여주게 함

git config --global core.autocrlf input

2018년 10월 21일

CentOS7 에서 phantomjs 가 error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory 에러 뿜을때 해결방법

일단 현재 구글링해서 찾을수있는 모든걸 다 찾아봤는데 결국 실패
phantomsjs 을 설치하고 실행하니 다음의 에러메시지가 발생
error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory
구글링결과 fontconfig 와 freetype 가 있어야 한다고 해서 아래와 같이 실행하니 둘다 설치가 되어있다고 나옴.
yum -y install fontconfig
yum -y freetype*
하다하다 안되서 최종적으로 centos7용 일본의 레포지토리를 추가해서 yum으로 phantomsjs 를 설치 (기존에는 composer 로 설치했었으나 에러 발생했음)
yum -y install epel-release
rpm -ivh http://repo.okay.com.mx/centos/7/x86_64/release/okay-release-1-1.noarch.rpm
yum -y install phantomjs
속도가 느려서 15메가 다운받는데 30분 정도 걸린것 같음.
뭐 결론은 되느냐면????

잘된다!!!! 6시간 헤메다가 성공
아 한글이 안나와서 한글폰트 추가로 설치함. ^^
yum install cjkuni-fonts-common cjkuni-ukai-fonts cjkuni-uming-fonts
yum install libXext libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi
fc-cache -f -v
wget http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip
mkdir /usr/share/fonts/nanumfont
unzip NanumFont_TTF_ALL.zip -d /usr/share/fonts/nanumfont
cd /usr/share/fonts/nanumfont
rm -f NanumFont_TTF_ALL.zip
rm -f /usr/share/fonts/nanumfont/NanumBrush.ttf
rm -f /usr/share/fonts/nanumfont/NanumPen.ttf
fc-cache -r

2018년 10월 18일

UTF-8 파일 다운로드처리 이어받기 및 속도 제한 함수.

참조 사이트 : https://www.phpschool.com/link/tipntech/78587

<?php
/**
 *  PHP 파일 다운로드 함수.
 *  Version 1.3
 *
 *  Copyright (c) 2014 성기진 Kijin Sung
 *
 *  License: MIT License (a.k.a. X11 License)
 *  http://www.olis.or.kr/ossw/license/license/detail.do?lid=1006
 *
 *  아래와 같은 기능을 수행한다.
 *
 *  1. UTF-8 파일명이 깨지지 않도록 한다. (RFC2231/5987 표준 및 브라우저 버전별 특성 감안)
 *  2. 일부 OS에서 파일명에 사용할 수 없는 문자가 있는 경우 제거 또는 치환한다.
 *  3. 캐싱을 원할 경우 적절한 Cache-Control, Expires 등의 헤더를 넣어준다.
 *  4. IE 8 이하에서 캐싱방지 헤더 사용시 다운로드 오류가 발생하는 문제를 보완한다.
 *  5. 이어받기를 지원한다. (Range 헤더 자동 감지, Accept-Ranges 헤더 자동 생성)
 *  6. 일부 PHP 버전에서 대용량 파일 다운로드시 메모리 누수를 막는다.
 *  7. 다운로드 속도를 제한할 수 있다.
 *
 *  사용법  :  send_attachment('클라이언트에게 보여줄 파일명', '서버측 파일 경로', [캐싱할 기간], [속도 제한]);
 *
 *             아래의 예는 foo.jpg라는 파일을 사진.jpg라는 이름으로 다운로드한다.
 *             send_attachment('사진.jpg', '/srv/www/files/uploads/foo.jpg');
 *
 *             아래의 예는 bar.mp3라는 파일을 24시간 동안 캐싱하고 다운로드 속도를 300KB/s로 제한한다.
 *             send_attachment('bar.mp3', '/srv/www/files/uploads/bar.mp3', 60 * 60 * 24, 300);
 *
 *  반환값  :  전송에 성공한 경우 true, 실패한 경우 false를 반환한다.
 *
 *  주  의  :  1. 전송이 완료된 후 다른 내용을 또 출력하면 파일이 깨질 수 있다.
 *                가능하면 그냥 곧바로 exit; 해주기를 권장한다.
 *             2. PHP 5.1 미만, UTF-8 환경이 아닌 경우 정상 작동을 보장할 수 없다.
 *                특히 EUC-KR 환경에서는 틀림없이 파일명이 깨진다.
 *             3. FastCGI/FPM 환경에서 속도 제한 기능을 사용할 경우 PHP 프로세스를 오랫동안 점유할 수 있다.
 *                따라서 가능하면 웹서버 자체의 속도 제한 기능을 사용하는 것이 좋다.
 *             4. 안드로이드 일부 버전의 기본 브라우저에서 한글 파일명이 깨질 수 있다.
 */
function send_attachment($filename, $server_filename, $expires = 0, $speed_limit = 0) {
    
    // 서버측 파일명을 확인한다.
    
    if (!file_exists($server_filename) || !is_readable($server_filename)) {
        return false;
    }
    if (($filesize = filesize($server_filename)) == 0) {
        return false;
    }
    if (($fp = @fopen($server_filename, 'rb')) === false) {
        return false;
    }
    
    // 파일명에 사용할 수 없는 문자를 모두 제거하거나 안전한 문자로 치환한다.
    
    $illegal = array('\\', '/', '<', '>', '{', '}', ':', ';', '|', '"', '~', '`', '@', '#', '$', '%', '^', '&', '*', '?');
    $replace = array('', '', '(', ')', '(', ')', '_', ',', '_', '', '_', '\'', '_', '_', '_', '_', '_', '_', '', '');
    $filename = str_replace($illegal, $replace, $filename);
    $filename = preg_replace('/([\\x00-\\x1f\\x7f\\xff]+)/', '', $filename);
    
    // 유니코드가 허용하는 다양한 공백 문자들을 모두 일반 공백 문자(0x20)로 치환한다.
    
    $filename = trim(preg_replace('/[\\pZ\\pC]+/u', ' ', $filename));
    
    // 위에서 치환하다가 앞뒤에 점이 남거나 대체 문자가 중복된 경우를 정리한다.
    
    $filename = trim($filename, ' .-_');
    $filename = preg_replace('/__+/', '_', $filename);
    if ($filename === '') {
        return false;
    }
    
    // 브라우저의 User-Agent 값을 받아온다.
    
    $ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
    $old_ie = (bool)preg_match('#MSIE [3-8]\.#', $ua);
    
    // 파일명에 숫자와 영문 등만 포함된 경우 브라우저와 무관하게 그냥 헤더에 넣는다.
    
    if (preg_match('/^[a-zA-Z0-9_.-]+$/', $filename)) {
        $header = 'filename="' . $filename . '"';
    }
    
    // IE 9 미만 또는 Firefox 5 미만의 경우.
    
    elseif ($old_ie || preg_match('#Firefox/(\d+)\.#', $ua, $matches) && $matches[1] < 5) {
        $header = 'filename="' . rawurlencode($filename) . '"';
    }
    
    // Chrome 11 미만의 경우.
    
    elseif (preg_match('#Chrome/(\d+)\.#', $ua, $matches) && $matches[1] < 11) {
        $header = 'filename=' . $filename;
    }
    
    // Safari 6 미만의 경우.
    
    elseif (preg_match('#Safari/(\d+)\.#', $ua, $matches) && $matches[1] < 6) {
        $header = 'filename=' . $filename;
    }
    
    // 안드로이드 브라우저의 경우. (버전에 따라 여전히 한글은 깨질 수 있다. IE보다 못한 녀석!)
    
    elseif (preg_match('#Android #', $ua, $matches)) {
        $header = 'filename="' . $filename . '"';
    }
    
    // 그 밖의 브라우저들은 RFC2231/5987 표준을 준수하는 것으로 가정한다.
    // 단, 만약에 대비하여 Firefox 구 버전 형태의 filename 정보를 한 번 더 넣어준다.
    
    else {
        $header = "filename*=UTF-8''" . rawurlencode($filename) . '; filename="' . rawurlencode($filename) . '"';
    }
    
    // 캐싱이 금지된 경우...
    
    if (!$expires) {
        
        // 익스플로러 8 이하 버전은 SSL 사용시 no-cache 및 pragma 헤더를 알아듣지 못한다.
        // 그냥 알아듣지 못할 뿐 아니라 완전 황당하게 오작동하는 경우도 있으므로
        // 캐싱 금지를 원할 경우 아래와 같은 헤더를 사용해야 한다.
        
        if ($old_ie) {
            header('Cache-Control: private, must-revalidate, post-check=0, pre-check=0');
            header('Expires: Sat, 01 Jan 2000 00:00:00 GMT');
        }
        
        // 그 밖의 브라우저들은 말을 잘 듣는 착한 어린이!
        
        else {
            header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
            header('Expires: Sat, 01 Jan 2000 00:00:00 GMT');
        }
    }
    
    // 캐싱이 허용된 경우...
    
    else {
        header('Cache-Control: max-age=' . (int)$expires);
        header('Expires: ' . gmdate('D, d M Y H:i:s', time() + (int)$expires) . ' GMT');
    }
    
    // 이어받기를 요청한 경우 여기서 처리해 준다.
    
    if (isset($_SERVER['HTTP_RANGE']) && preg_match('/^bytes=(\d+)-/', $_SERVER['HTTP_RANGE'], $matches)) {
        $range_start = $matches[1];
        if ($range_start < 0 || $range_start > $filesize) {
            header('HTTP/1.1 416 Requested Range Not Satisfiable');
            return false;
        }
        header('HTTP/1.1 206 Partial Content');
        header('Content-Range: bytes ' . $range_start . '-' . ($filesize - 1) . '/' . $filesize);
        header('Content-Length: ' . ($filesize - $range_start));
    } else {
        $range_start = 0;
        header('Content-Length: ' . $filesize);
    }
    
    // 나머지 모든 헤더를 전송한다.
    
    header('Accept-Ranges: bytes');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; ' . $header);
    
    // 출력 버퍼를 비운다.
    // 파일 앞뒤에 불필요한 내용이 붙는 것을 막고, 메모리 사용량을 줄이는 효과가 있다.
    
    while (ob_get_level()) {
        ob_end_clean();
    }
    
    // 파일을 64KB마다 끊어서 전송하고 출력 버퍼를 비운다.
    // readfile() 함수 사용시 메모리 누수가 발생하는 경우가 가끔 있다.
    
    $block_size = 16 * 1024;
    $speed_sleep = $speed_limit > 0 ? round(($block_size / $speed_limit / 1024) * 1000000) : 0;
    
    $buffer = '';
    if ($range_start > 0) {
        fseek($fp, $range_start);
        $alignment = (ceil($range_start / $block_size) * $block_size) - $range_start;
        if ($alignment > 0) {
            $buffer = fread($fp, $alignment);
            echo $buffer; unset($buffer); flush();
        }
    }
    while (!feof($fp)) {
        $buffer = fread($fp, $block_size);
        echo $buffer; unset($buffer); flush();
        usleep($speed_sleep);
    }
    
    fclose($fp);
    
    // 전송에 성공했으면 true를 반환한다.
    
    return true;
}

2018년 10월 9일

재사용 php 파일을 쉽게 관리한다. composer 설치 및 사용하기

아 본좌가 정말 하나씩 배워가는 재미가 쏠쏠하다.

기존 카카오톡 로그인, 네이버 로그인 국내업체의 로그인은 curl 을 통해서 웹으로 불러오고 보여지는걸 긁어오는 방식으로 소셜 로그인을 달았는데...

구글과 페이스북 같은 글로벌 소셜 로그인을 달려니 이미 오브젝트로 쉽게 쓸수있게 만들어 놨더라..

구글은 삽질하면서 인터넷 검색해서 달았는데, 페이스북의 오브젝트를 받으려니.. 이미 github에 만들어진 파일은 있는데. vendor 이 먼지. autoload.php 는 뭔지. 아 젼나 헷갈렸다.

그 중심에 composer 가 있다는 것만 알면 된다..

composer를 yum으로 설치하려니까.. 수십만가지의 의존성 파일이 같이 설치되야 한다고 나오더라. 이거 원...



=============================================================================================================================================================================================================================================
 Package                                                                  Arch                                           Version                                                    Repository                                          Size
=============================================================================================================================================================================================================================================
Installing:
 composer                                                                 noarch                                         1.7.2-1.el7                                                epel                                               383 k
Installing for dependencies:
 php-PsrLog                                                               noarch                                         1.0.2-2.el7                                                epel                                                12 k
 php-composer-ca-bundle                                                   noarch                                         1.0.2-1.el7                                                epel                                                12 k
 php-composer-semver                                                      noarch                                         1.4.2-1.el7                                                epel                                                17 k
 php-composer-spdx-licenses                                               noarch                                         1.4.0-1.el7                                                epel                                                17 k
 php-composer-xdebug-handler                                              noarch                                         1.3.0-1.el7                                                epel                                                18 k
 php-intl                                                                 x86_64                                         7.2.10-1.el7.remi                                          remi-php72                                         215 k
 php-jsonlint                                                             noarch                                         1.6.1-1.el7                                                epel                                                17 k
 php-justinrainbow-json-schema5                                           noarch                                         5.2.7-1.el7                                                epel                                                41 k
 php-paragonie-random-compat                                              noarch                                         2.0.12-1.el7                                               epel                                                26 k
 php-password-compat                                                      noarch                                         1.0.4-1.el7                                                epel                                                10 k
 php-seld-phar-utils                                                      noarch                                         1.0.1-1.el7                                                epel                                               7.7 k
 php-symfony-browser-kit                                                  noarch                                         2.8.12-2.el7                                               epel                                                23 k
 php-symfony-class-loader                                                 noarch                                         2.8.12-2.el7                                               epel                                                26 k
 php-symfony-common                                                       noarch                                         2.8.12-2.el7                                               epel                                               124 k
 php-symfony-config                                                       noarch                                         2.8.12-2.el7                                               epel                                                51 k
 php-symfony-console                                                      noarch                                         2.8.12-2.el7                                               epel                                                88 k
 php-symfony-css-selector                                                 noarch                                         2.8.12-2.el7                                               epel                                                37 k
 php-symfony-debug                                                        noarch                                         2.8.12-2.el7                                               epel                                                36 k
 php-symfony-dependency-injection                                         noarch                                         2.8.12-2.el7                                               epel                                                83 k
 php-symfony-dom-crawler                                                  noarch                                         2.8.12-2.el7                                               epel                                                30 k
 php-symfony-event-dispatcher                                             noarch                                         2.8.12-2.el7                                               epel                                                24 k
 php-symfony-expression-language                                          noarch                                         2.8.12-2.el7                                               epel                                                27 k
 php-symfony-filesystem                                                   noarch                                         2.8.12-2.el7                                               epel                                                22 k
 php-symfony-finder                                                       noarch                                         2.8.12-2.el7                                               epel                                                38 k
 php-symfony-http-foundation                                              noarch                                         2.8.12-2.el7                                               epel                                                93 k
 php-symfony-http-kernel                                                  noarch                                         2.8.12-2.el7                                               epel                                                99 k
 php-symfony-polyfill                                                     noarch                                         1.5.0-1.el7                                                epel                                                26 k
 php-symfony-process                                                      noarch                                         2.8.12-2.el7                                               epel                                                32 k
 php-symfony-var-dumper                                                   noarch                                         2.8.12-2.el7                                               epel                                                48 k
 php-symfony-yaml                                                         noarch                                         2.8.12-2.el7                                               epel                                                28 k

Transaction Summary
=============================================================================================================================================================================================================================================
Install  1 Package (+30 Dependent packages)

Total download size: 1.7 M
Installed size: 6.3 M
Is this ok [y/d/N]:

그래서 그냥 composer만 깔았다.  이렇게.
php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/local/bin/
ln -s /usr/local/bin/composer.phar /usr/local/bin/composer

끝.. 이걸로 뭘하냐고??
내가 지금 하려는건 이거다.

https://developers.facebook.com/docs/php/howto/example_facebook_login

2018년 10월 5일

SQL문 간단히 배워보자.. phpmyadmin 에 의존하니까 터미널을 쓸수밖에 없을때 진짜 난감했다. sql 테이블 구조보기 나 테이블 컬럼 추가 삭제 할때.

아래의 mysql 터미널로 들어가는 방법은 일단 알고있어야 함.

mysql -uroot -p
mysql>  프롬프트에서 내리는 sql문 공식에 대해서 이야기 한다.

1. 테이블 생성 뭐 요정도 보면 나머진 알아서 응용되리라 봄.

CREATE TABLE admin_log(
  no int(11) NOT NULL,
  reg_date date NOT NULL DEFAULT current_timestamp(),
  name varchar(50) NOT NULL,
  pds_quality float NOT NULL DEFAULT 100,
  fees tinyint(4) UNSIGNED NOT NULL DEFAULT 50,
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

2. 키 만들기 (프라이머리키, 그리고 유니크, 인덱스 키를 만들고)

ALTER TABLE admin_log
  ADD PRIMARY KEY (no),
  ADD UNIQUE KEY name (name),
  ADD KEY reg_date (reg_date);

3. 위 테이블에 vote_avarage 컬럼을 추가했다.

ALTER TABLE `admin_log` add (`vote_avarage` float DEFAULT 0 NOT NULL);

4. 그리고 삭제까지.

ALTER TABLE admin_log drop vote_avarage;

2018년 10월 1일

윈도우10 공인인증서 위치 (윈도우7 이상 똑까틈)

시작 -> 실행에서 아래 유저 폴더명을 입력 (단축키 윈도우키+R)

%AppData%

참고로 윈도우는 대소문자는 구분하지 않는다.

저기 들어갔는데 왜 Roming 폴더가 나오지? 한단계 상위로 가서 AppData 우측에 아래화살표를 누르면 저렇게 3개 폴더가 나온다. LocalLow 로 들어가소 NPKI를 넣으면 땡~

인증서 넣는 폴더 매번 까먹는다.. 뭐 모르는게 정상이고 할떄마다 또 여기글을 찾아서 보면 되겠지...




2018년 9월 30일

Firebase에 앱추가시 디버그 서명 인증서 SHA-1 만드는 방법

윈도우키 + R 눌러서 cmd 치고 엔터 커맨드창을 연다.



아래 명령어를 입력한다. (그전에 자바와 Android Studio는 당근 깔려있겠죠?) 아래 붉은색 경로는 사용자 마다 다르니까 직접 찾아서 들어갈 것.

탐색기에서 아래 녹색으로 보이는 경로 대신 %USERPROFILE%\.android\debug.keystore   라고 입력하면 될꺼 같은데, 내 컴퓨터는 빙시라서 %USERPROFILE%를 인식 못하더라. 그래서 직접 입력함.


keytool -list -v -keystore "C:\Users\dikaf\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

2018년 9월 28일

윈도우10 핫스팟 존 만들기. 그리고 켜질때마다 자동으로 핫스팟이 켜졌으면 좋겠다. 윈도우10 핫스팟 자동실행

윈도우10 에서 수동으로 핫스팟을 켜기란 너무도 쉽다. 단치 우측 아래에 네트워크아이콘을 누르면 모바일 핫스팟이라는 메뉴가 있다.

지금 본좌는 그걸 하고싶은게 아니라 컴터를 켜면 자동으로 핫스팟이 켜졌으면 좋겠다. 이건 어쩔수 없이 수작업으로 해줘야하고, 시작프로그램에 등록을 해야하겠다.

1. 나만의 핫스팟 이름과 비밀번호 설정하기

 윈도우키 + R 눌러서 실행창 뜨면 cmd입력

2. 터미널창이뜨면 ( dikafryoAP 는 핫스팟이름,  s2463372! 는 핫스팟비번)

netsh wlan set hostednetwork mode=allow ssid=dikafryoAP key=s2463372!

만약에 아래처럼 관리자 권한 어쩌고 나오고 제대로 실행이 안되면.. 3번 항목으로~



2-1. 이렇게 제대로 네트워크모드 허용이 뜨고 SSID 와 암호설정이 정상적으로 되면 4번 항목으로~


3. 관리자 모드로 실행하라고 뜰때는.. 터미널에마 마우스 대고 우측버튼 클릭..



명령 프롬프트에서 또한번 마우스 오른쪽버튼 누르면 관리자 권한으로 실행이 나온다.



이제 관리자 권한으로 위의 2번항목의 명령어를 통해 핫스팟 이름과 비밀번호 그리고 allow 모드를 켜주자!

4.  핫스팟 켜기

netsh wlan start hostednetwork

5. 네트워크 공유 설정하기

다시 cmd 창에서 아래 명령어 실행
아 ㅆ ㅣ  nvpa.cpl 아니다 nvpa.cpl이다 이것도 몰라서 열라 찾음.

nvpa.cpl
ncpa.cpl


네트트워크 연결이 나오는걸 볼수있다 거기에 나는 보니 dikafryoAP가 2번째 네트웍으로 보인다. 쟤가 보이면 완성..

지금현재 공유할 메인 네트워크의 속성으로 들어가자.. 젤 오른쪽에 이더넷을 마우스 우측버튼 속성..





들어가서 공유탭으로 가면 첫번쩨 내모칸 체크하고 네트워크를 공유할 홈네트워킹을 아까 위에 보이던  "로컬 영역 연결*11" 을 선택해주면 된다.

(밑에 이미지에 Wi-Fi 쟤 아니다!! 저건 그냥 저렇게 나온다고 캡쳐했는데 내가 바보같이 캡쳐한거임)



메모장으로에 hotspot_start.bat 라는 파일을 만들자
메모장 내용은

netsh wlan set hostednetwork mode=allow ssid=dikafryoAP key=s2463372!
netsh wlan start hostednetwork

2줄로 만들어서 저장하자. 참고로 bat 확장자를 가지도록 하자. 확장자 숨김을 해놓으면 hotspot_start.bat.txt  가 되는데 안보이니까 알수 없다. 아래 그림을 보고 탐색기에서 파일 확장명 체크를 하도록 한다!







이제 시작프로그램에 위에서 만든 파일  bat 파일을 넣자..  실행창에서 아래 명령 실행.. cmd창이 아니라 그냥 실행 창이다 ^^




shell:startup

이미지는 복사가 안되니 복사용으로 명령어 남김 ㅋㅋ

참고로 배치파일을 C:\  에 넣어두고... 시작프로그램에는 연결을 만들어 넣어야 한다. 아래 처럼..



연결을 넣는 방법은 마우스로 클릭해서 끌때    Ctrl + Shift 를 누른상태로 파일을 끌어다 넣으면 연결이 만들어진다..
혹은 마우스 우측버튼으로 끌어 넣어서. 나오는 메뉴에서 연결만들기를 해도된다.



이게 끝??? 인줄 알았찌만 아직 끝이 아니다. 배치파일도 관리자 권한으로 실행해야 실행이 되니까...


파일에서 마우스 우측버튼 눌러 속성




고급에 들어가서 관리자 권한으로 실행을 체크하면 끝!!!

방금처럼 연결을 넣은 이유는 파일은 관리자 권한 실행 체크가 안된다. 오직 연결에만 관리자 메뉴뜨니까 참고하시라..




참고로 : 이걸로 쓰다가 윈도우10에서 자체 지원하는 핫스팟을 켜니까 완전 네트웍이 병맛이 되더라. 그뒤로 이걸 실행해도 안되고. 좀 이상하게 되더라구.. 그냥 이거 하나만 쓰는게 깔끔 윈도 자체 핫스팟은 아예 실행도하지마라.


그래서 본좌는.. 이렇게 설정한다


1. 작업표시줄에 마우스대고 우측 버튼 눌러 > "작업 표시줄 설정"  클릭
2. 스크롤 내려가면 "작업 표시줄에 표시할 아이콘 선택"  클릭
3. 내가 남기고싶은것만 켜고 나머지는 아예 보여지지 않도록 끈다. ( 네트워크 따위는 꺼주자!)  참고로 본좌는   OneDriv, 볼륨조절 이렇게 2개만 켠다.




2018년 9월 23일

mysql 의 auto_incrrement 최적화 or 초기화 시키기!

먼저 테이블에 업데이트 인서트가 활발하게 이루어지는 경우는 다소 무리가 있는 방법이다.

SET @CNT = 0;
UPDATE table_name SET field_name=@CNT:=@CNT+1;
하고난 뒤에 AUTO_INCREMENT 번호를 다시 지정해주자.. 총 적용되는 컬럼수가 43540 개라면.. 최소 43541보다는 큰 값으로 해야겠다.

ALTER TABLE table_name AUTO_INCROMENT=43542;

2018년 9월 21일

php 문자열로 변수이름 짓기

php 문자열로 변수이름 짓기 

<?
$extra_var = "type=101|total=12800|amount=12300|cash=500|total=12800|PRODUCT_NAME=30일무제한이용권|PRODUCT_CODE=101|RESERVED=30|RESERVED2=여유변수|RESERVED3=일무제한이용권";
$extraArray = explode("|", $extra_var);

for($i = 0; $extraArray[$i]; $i++) {
 $valueArray = explode("=", $extraArray[$i]);
 ${$valueArray[0]} = $valueArray[1];
}

echo $type;   // 101
echo $total;   // 12800
echo $amount;  //12300
echo $cash;     // 500
echo $total;    // 12800
echo $PRODUCT_NAM // 30일무제한이용권
echo $PRODUCT_CODE // 101
echo $RESERVED     // 30
echo $RESERVED2    // 여유변수
echo $RESERVED3     // 일무제한이용권
?>

두번째 더 간단한 예

$value = 'money':
${$value} = 1000;
echo $money;

결과값 : 1000

2018년 9월 19일

CentOS7 에 ftp 설치하다.

1. 그냥 제가 아크로에디트를쓸라니 아 이놈은 ssh 가 안되고 ftp만되네요. 할수없이 비보안 전송프로토콜을 쓰기로했습니다.

 CentOS7 에 ftp설치합니다.

yum install ysftpd
저는 -y 옵션을 안줍니다. 어떤게 깔리는지 눈으로 볼라꼬요.. vsftp는 다행히도 지 하나만 깔리네요 의존된 다른건 없네요.
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                     | 7.7 kB     00:00
 * base: mirror.kakao.com
 * epel: mirrors.aliyun.com
 * extras: mirror.kakao.com
 * ius: mirrors.kernel.org
 * remi-php72: ftp.riken.jp
 * remi-safe: ftp.riken.jp
 * rpmforge: ftp.neowiz.com
 * updates: mirror.kakao.com
base                                                     | 3.6 kB     00:00
extras                                                   | 3.4 kB     00:00
ius                                                      | 2.3 kB     00:00
mariadb                                                  | 2.9 kB     00:00
remi-php72                                               | 2.9 kB     00:00
remi-safe                                                | 2.9 kB     00:00
rpmforge                                                 | 1.9 kB     00:00
updates                                                  | 3.4 kB     00:00
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:3.0.2-22.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package          Arch             Version                 Repository      Size
================================================================================
Installing:
 vsftpd           x86_64           3.0.2-22.el7            base           169 k
Transaction Summary
================================================================================
Install  1 Package
Total download size: 169 k
Installed size: 348 k
Is this ok [y/d/N]: y
설치완료 몇가지만 설정해볼께요
#vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO     <== 익명접속하용하지 않음. 허용하려면YES
xferlog_enable=NO          <== 파일송수신 로그 너무 많아서 저는 NO  로그하시려면 YES하세요.
설치끝 방화벽 열고 시작함.
# firewall-cmd --permanent --add-service=ftp
success
# firewall-cmd --reload
success
# systemctl start vsftpd
#systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

2018년 9월 18일

CentOS7 apache2.4 에 https 운용 및 Let's Encrypt 설치 그리고 자동갱신까지..

1. apache 에 먼저 https 부터 설치한다. 필수 프로그램을 먼저 설치

yum install open-ssl

 Let's Encrypt 설치

필수 패키지 설치 보통있겠지만, 없을수도있는 분을 위해

yum install httpd mod_ssl

Let's Encrypt 설치!

yum -y install certbot

certbot 로 인증서 제작! 끝(?!)

[root@localhost iteach4u]# certbot certonly --server https://acme-v01.api.letsencrypt.org/directory \
--rsa-key-size 4096 --agree-tos \
--email dikafryo@gmail.com --webroot -w /home/iteach4u/htdocs/ \
-d www.iteach4u.kr -d iteach4u.kr

-d 옵션을 통해 같은 도메인에 호스트만 바뀌는 경우는 7일동안 5개의 도메인까지 가능하며,
1대의 서버에서 3시간에 10개의 도메인의 인증을 허용함.
아래와 같이 나오며..   메일 수신을 할꺼냐? 물어보고 Y/N선택하면 설치 끝.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for www.iteach4u.kr
Using the webroot path /home/iteach4u/htdocs for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/www.iteach4u.kr/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.iteach4u.kr/privkey.pem
   Your cert will expire on 2018-12-17. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

위에 분홍색 경로에 파일을 ssl.conf 에 등록해야하니 잘 알아두자.

vi /etc/httpd/conf.d/ssl.conf 파일에 가상호스트를 만든다.

<VirtualHost *:443>
    ServerName www.iteach4u.kr
    DocumentRoot "/home/iteach4u/htdocs"

    <Directory "/home/iteach4u/htdocs">
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    SSLEngine on
    Header always set Strict-Transport-Security "max-age=31536000"
    SSLCertificateFile /etc/letsencrypt/live/www.iteach4u.kr/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.iteach4u.kr/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www.iteach4u.kr/chain.pem
    SSLCACertificateFile /etc/letsencrypt/live/www.iteach4u.kr/fullchain.pem

    ErrorLog "logs/error_log"
    CustomLog "logs/access_log" combined
</VirtualHost>

갱신은 완전 간단하다

/usr/bin/certbot renew

하면 자동갱신되며 저 명령어를 크론에 등록하면 되겠다.
갱신일 30일이하로 남아야 갱신되고 그 이상이면 갱신 안되고 그냥 pass니까. 나는 일주일에 한번씩 갱신하는걸로.  마지막 숫자는 수요일을 뜻함

vi /etc/crontab

3 2 * * 4 /usr/bin/certbot renew

2018년 9월 17일

MySQL 또는 MariaDB 5.5 에서 MariaDB 10.x 버전 업그레이드 하고 꼭 해야할 것.. ㅋㅋ

mysql_upgrade -uroot -p


간단해서 죄송합니다 ^^  
하면 DB를 주루룩~~ 업데이트 합니다..

그리곤 끝. ^^ 

MariaDB 10.3.x 이중화 마스터,슬레이브 서버 구축 Replication DB 구축하기 슬레이브는 synology nas 로

마스터는 CentOS7 이고, 슬레이브는 시놀로지(synology) nas 에 를 사용합니다.

시놀로지는 mariadb설치시 경로가 다음과 같습니다.

/var/packages/MariaDB10/var/mariadb10   : 데이터경로
/volume1/@appstore/MariaDB10/usr/local/mariadb10/bin/   실행파일 경로
/var/packages/MariaDB10/etc/my.cnf  설정파일 경로

그외 일반적인 리눅스는 다음과같습니다.
/etc/my.cnf    설정파일 경우

1. 마스터 서버의 my.cnf 의 [mysqld] 섹션 또는  [mariadb] 섹션을 찾아서 수정합니다.
[mysqld]
log-bin
server_id=1

2. 디비서버 재실행해서 설정파일이 적용되도록 한다
systemctl restart mariadb

3. 디비접속해서 슬레이브서버에서 사용할 사용자를 만들고, DB백업을 함
mysql -uroot -p
password : 입력

4. 리플리케이션을 하기위한 아이디(replication)와 비밀번호(bigs3cret)를 세팅했다.(물론 변경가능)  2번째 줄은 리플리케이션 사용자가 슬레이브서버로 백업할수있는 권한을 준다.
CREATE USER 'replication'@'%' IDENTIFIED BY 'bigs3cret';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

5. 아래 쿼리문을 2개를 실행하고 ssh 창을 잠시 열어둔다.
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| master1-bin.000002 |    455330 |              |                  |
+--------------------+----------+--------------+------------------+
로그파일명  master1-bin.000002  와  position 455330 을 기록한다.

6. mysql을 빠져나오면 테이블락이 해제되므로. 빠져나오지 말로 ssh 를 하나더 접속해서.. db파일을 덤프뜬다..슬레이브 서버에 쓰레기 데이터가 있으면 기존테이블삭제 하라는 문구도 넣었다.
/path/to/mysqldump -add-drop-table -A -uroot -p > all_databases.sql



7. 이제 슬레이브 DB서버로 덤프파일을 이동시키고 슬레이브 dB에 집어 넣는다..
mysql -uroot -p < all_database.sql

이제 슬레이브 서버의 my.cnf 파일을 수정한다.
특정DB만 복제할 경우 replication-do-db를 사용해서 DB명을 입력하자. db가 여러개면 ,(콤마)로 구분해서 여러개를 쓸수있다.

[mysqld]
server-id=2
replicate-do-db='repl_db, repl2_db'


설정파일을 변경했으면 mariadb재시작시켜주고.  시놀로지에서 재시작을 한다.

synopkg restart MariaDB10


디비접속
mysql -uroot -p
password : 입력.

아래 쿼리문의 마스터DB설정값을 쓰고, 로그파일과 포지션을 본인에게 맞게 수정해서 쿼리 실행

CHANGE MASTER TO
  MASTER_HOST='211.182.233.2',
  MASTER_USER='replication',
  MASTER_PASSWORD='bigs3cret',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master1-bin.000002',
  MASTER_LOG_POS=455330,
  MASTER_CONNECT_RETRY=10;

start slave;

동작이 잘되는지 확인한다.
show slave status\G

다음 2 줄이 Yes 나오면 제대로 되고있음...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes


slave가 동작이 잘되는지 계속해서 확인하다가 어느순간 에러로 멈추는 경우가 있다. 슬레이브 서버로 insert를 하거나 update를 하게되면 마스터 DB와충돌이 일어나기에 반드시 select구문만 슬레이브 서버에서 운용하도록 하자.

에러 구문을 확인해서 별것 아닌 에러면 그냥 하나 스킵하면 되고.. 나머지 중요한 에러 같으면 슬레이브DB에서 거기 맞도록 적용하고 넘어가야 겠다..
일단 쿼리가 막혔을때 해당 쿼리 하나만 그냥 넘어가고 다음을 진행하라는 명령어.. 아래 3줄을 복사해서 mysql 슬레이브에서 붙여넣기하면 해당오류만 스킵하고 다음 sql문부터 업데이트를 시킨다.

stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;

에러를 아예 무시하려면 my.cnf 에   slave-skip-errors=all  구문을 한줄 넣어주면 에러는 모두 무시하고 다음으로 넘어간다.



[mysqld]
slave-skip-errors=all



마스터,슬레이브로  DB를 사용하기위해선 insert 나 update 구문은 반드시 마스터 DB에서만 실행하여야 한다. 슬레이브 DB를 먼저 변경할 경우  DB충돌이 일어나게 된다.


또한 슬레이브 서버를 더이상 사용하지 않을때는 다음 명령어를 통해 슬레이브 설정을 완전 삭제할 수 있따.
stop slave;
reset slave all;

2018년 9월 16일

CentOS7 에 ssh2 Extension for PHP 7 설치하기 (apache 기준)

사전 준비 gcc, php-devel, libssh2 and libssh2-devel on CentOS 7
php-devel 같은 경우는 php71w-devel 로 되어있는 경우도 있고, 이름이 레포에 따라 다른 경우도 있으니, 나에게 깔려있는 php 의 이름이 어떤지 한번 찾아보자..  yum list install | grep php   명령어로 내 서버의 php 이름을 알수있음.

# yum install gcc php-devel libssh2 libssh2-devel
Download php7 pecl-networking-ssh2
# wget https://pecl.php.net/get/ssh2-1.1.2.tgz
Unzip and Change folder
# tar zxvf ssh2-1.1.2.tgz
# cd ssh2-1.1.2.tgz
Building environment for SSH2 extension
# phpize
# ./configure
Make SSH2 extension make sure build success
# make
Install SSH2 extension
# make install
Write SSH2 extension in PHP 7 extension directory
# vi /etc/php.d/ssh2.ini

extension=ssh2.so
Restart apache server and php-fpm
# systemctl restart httpd

블로거 blogger 에서 소스코드 색 입히기 Syntaxhighlighter

Apache
 Bash
 C#
 C++
 CSS
 CoffeeScript
 Diff
 HTML, XML
 HTTP
 Ini
 JSON
 Java
 JavaScript
 Makefile
 Markdown
 Nginx
 Objective-C
 PHP
 Perl
 Python
 Ruby
 SQL
 Shell Session
등이 가능하고 실제로 훨씬 많은 언어를 지원하고 있다. 설치도 간단해서



1. 블로거 관리페이지 &gt;  테마  &gt; HTML 편집 으로 들어가서

2. <head> 와  </head> 사이에 아래 코드 를 넣기만 하면 끝

<!-- SyntaxHighlight 소스코드 색깔넣기 시작 -->
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/styles/darcula.min.css" rel="stylesheet"></link>
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/highlight.min.js">
<script>hljs.initHighlightingOnLoad();</script>
<!-- SyntaxHighlight 소스코드 색깔넣기 끝 -->


4. 글쓰기에서 글을 아래와 같이 작성했다

function fnNameLayer($ismember, $name, $which = 2) {
global $CountNameLayer, $name_layer;
// ' 등의 특수문자때문에 붙인 \(역슬래쉬)를 떼어낸다
$lname = '<span onMousedown="showNameLayer(\'layer_name'.$CountNameLayer.'\',\'visible\')" style="cursor:hand;"><b><font color=#555555>'.$name.'</font></b></span>';
//arrayNameLayer('레이어번호','회원번호','닉네임','자료실=1 게시판=2');
$name_layer .= "arrayNameLayer('layer_name".$CountNameLayer."', $ismember,'".$name."','".$_SESSION['member']['level']."');\n";
$CountNameLayer++;
return $lname;
}

5. HTML 작성으로 들어가서 처음과 끝에

<pre><code class="php">



</code></pre>

를 쓰면 아래와 같이 나옵니다.

function fnNameLayer($ismember, $name, $which = 2) {
 global $CountNameLayer, $name_layer;
 // ' 등의 특수문자때문에 붙인 \(역슬래쉬)를 떼어낸다
 $lname = '<span onMousedown="showNameLayer(\'layer_name'.$CountNameLayer.'\',\'visible\')" style="cursor:hand;"><b><font color=#555555>'.$name.'</font></b></span>';
//arrayNameLayer('레이어번호','회원번호','닉네임','자료실=1 게시판=2');
 $name_layer .= "arrayNameLayer('layer_name".$CountNameLayer."', $ismember,'".$name."','".$_SESSION['member']['level']."');\n";
 $CountNameLayer++;
 return $lname;
}

2018년 9월 14일

CentOS7 java 설치

그냥 yum으로 설치하면 된다.

yum install java


[root@localhost ~]# yum install java
Dependencies Resolved
==========================================================
Package          Arch           Version              Repository         Size
==========================================================
Installing:
java-1.8.0-openjdk         x86_64  1:1.8.0.181-3.b13.el7_5    updates   250 k
Installing for dependencies:
copy-jdk-configs             noarch  3.3-10.el7_5               updates   21 k
java-1.8.0-openjdk-headless  x86_64  1:1.8.0.181-3.b13.el7_5    updates   32 M
javapackages-tools           noarch  3.4.1-11.el7               base      73 k
libXfont                     x86_64  1.5.2-1.el7                base     152 k
libfontenc                   x86_64  1.1.3-3.el7                base      31 k
lksctp-tools                 x86_64  1.0.17-2.el7               base      88 k
python-javapackages          noarch  3.4.1-11.el7               base      31 k
python-lxml                  x86_64  3.2.1-4.el7                base     758 k
ttmkfdir                     x86_64  3.0.9-42.el7               base      48 k
tzdata-java                  noarch  2018e-3.el7                updates  185 k
xorg-x11-font-utils          x86_64  1:7.5-20.el7               base      87 k
xorg-x11-fonts-Type1         noarch  7.5-9.el7                  base     521 k
Transaction Summary
==========================================================
Install  1 Package (+12 Dependent packages)
Total download size: 34 M
Installed size: 109 M
Is this ok [y/d/N]: y
Downloading packages:
(1/13): copy-jdk-configs-3.3-10.el7_5.noarch.rpm           |  21 kB   00:00
(2/13): javapackages-tools-3.4.1-11.el7.noarch.rpm         |  73 kB   00:00
(3/13): lksctp-tools-1.0.17-2.el7.x86_64.rpm               |  88 kB   00:00
(4/13): python-javapackages-3.4.1-11.el7.noarch.rpm        |  31 kB   00:00
(5/13): python-lxml-3.2.1-4.el7.x86_64.rpm                 | 758 kB   00:00
(6/13): ttmkfdir-3.0.9-42.el7.x86_64.rpm                   |  48 kB   00:00
(7/13): tzdata-java-2018e-3.el7.noarch.rpm                 | 185 kB   00:00
(8/13): xorg-x11-font-utils-7.5-20.el7.x86_64.rpm          |  87 kB   00:00
(9/13): xorg-x11-fonts-Type1-7.5-9.el7.noarch.rpm          | 521 kB   00:00
(10/13): libXfont-1.5.2-1.el7.x86_64.rpm                   | 152 kB   00:03
(11/13): java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64.r | 250 kB   00:03
(12/13): libfontenc-1.1.3-3.el7.x86_64.rpm                 |  31 kB   00:06
(13/13): java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5 |  32 MB   00:08
--------------------------------------------------------------------------------
Total                                              4.1 MB/s |  34 MB  00:08
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : libfontenc-1.1.3-3.el7.x86_64                               1/13
Installing : libXfont-1.5.2-1.el7.x86_64                                 2/13
Installing : 1:xorg-x11-font-utils-7.5-20.el7.x86_64                     3/13
Installing : ttmkfdir-3.0.9-42.el7.x86_64                                4/13
Installing : xorg-x11-fonts-Type1-7.5-9.el7.noarch                       5/13
Installing : lksctp-tools-1.0.17-2.el7.x86_64                            6/13
Installing : tzdata-java-2018e-3.el7.noarch                              7/13
Installing : python-lxml-3.2.1-4.el7.x86_64                              8/13
Installing : python-javapackages-3.4.1-11.el7.noarch                     9/13
Installing : javapackages-tools-3.4.1-11.el7.noarch                     10/13
Installing : copy-jdk-configs-3.3-10.el7_5.noarch                       11/13
Installing : 1:java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_   12/13
Installing : 1:java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64          13/13
Verifying  : 1:java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64           1/13
Verifying  : 1:java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_    2/13
Verifying  : xorg-x11-fonts-Type1-7.5-9.el7.noarch                       3/13
Verifying  : copy-jdk-configs-3.3-10.el7_5.noarch                        4/13
Verifying  : python-javapackages-3.4.1-11.el7.noarch                     5/13
Verifying  : python-lxml-3.2.1-4.el7.x86_64                              6/13
Verifying  : libXfont-1.5.2-1.el7.x86_64                                 7/13
Verifying  : tzdata-java-2018e-3.el7.noarch                              8/13
Verifying  : javapackages-tools-3.4.1-11.el7.noarch                      9/13
Verifying  : libfontenc-1.1.3-3.el7.x86_64                              10/13
Verifying  : lksctp-tools-1.0.17-2.el7.x86_64                           11/13
Verifying  : ttmkfdir-3.0.9-42.el7.x86_64                               12/13
Verifying  : 1:xorg-x11-font-utils-7.5-20.el7.x86_64                    13/13
Installed:
java-1.8.0-openjdk.x86_64 1:1.8.0.181-3.b13.el7_5
Dependency Installed:
copy-jdk-configs.noarch 0:3.3-10.el7_5
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.181-3.b13.el7_5
javapackages-tools.noarch 0:3.4.1-11.el7
libXfont.x86_64 0:1.5.2-1.el7
libfontenc.x86_64 0:1.1.3-3.el7
lksctp-tools.x86_64 0:1.0.17-2.el7
python-javapackages.noarch 0:3.4.1-11.el7
python-lxml.x86_64 0:3.2.1-4.el7
ttmkfdir.x86_64 0:3.0.9-42.el7
tzdata-java.noarch 0:2018e-3.el7
xorg-x11-font-utils.x86_64 1:7.5-20.el7
xorg-x11-fonts-Type1.noarch 0:7.5-9.el7
Complete!

2018년 9월 10일

CentOS7 ZipArchive 설치(php-pecl)

제로보드XE3 를 설치하는데, 콘솔에서 설치하려니 ZipArchive가 필요하다고 나왔다.
ZipArchive는 php의 클래스패키지중 하나이다.

CentOS에서는 yum을 통해 설치가 가능하다.

리포지토리를 remi-php72로설정(가장최신버전이있음) 하고 내려받으면 되겠다.

yum-config-manager --enable remi-php72

yum install php-pecl-zip

설치가 끝나면 php 설정파일이 있는 곳에 파일을 하나 만들어 줍니다. /etc/php.d/  로 이동하시면 설치순서대로 10, 20, 30 해서 붙어있는게 보이죠? 최초에 설치되면 10-xxx.ini 로 네이밍이 될꺼고.. 두번째는 추가되는 라이브러리는 20-xxx.ini 지금 저는 40-zip.ini 로 이름지었네요 ^^ 이 파일에 extension=zip.so  를 써주시면 됩니다. 아래처럼 콘솔에서 바로 입력했습니다.

echo "extension=zip.so" >> /etc/php.d/40-zip.ini

리눅스 사용자(유저) 추가 및 기본환경 설정에 대해서

useradd 명령을 통해 만들면

/erc/default/useradd 파일의 내용을 참고로해서 환경설정을 한다.


그리고홈디렉토리의 기본구성은

/etc/skel/    디렉토리의 내용을 홈디렉토리로 그대로 복사해온다.

따라서 홈에 기본적으로 있어야할 디렉토리라 파일을 여기에 만들어 두면되겠다

php.ini 수정

mysql data 디렉토리를 /db 로 쓰니까 php 에서 mysql.sock 디렉토리를 못읽고

/var/lib/mysql/mysql.sock  를 찾고 있었다..

그래서 php.ini 파일에 다음 내용을 삽입하였다.



mysqli.default_socket = /db/mysql.sock

2018년 9월 9일

CentOS7, apache 2.4 , php7.2 설치시 설정파일 경로

 /etc/httpd 입니다

/etc/httpd/conf
/etc/httpd/conf.d

에서 설정이 가능

/etc/httpd/conf/httpd.conf  에서 기본 인덱스 파일을 설정합니다.
<IfModule dir_module>     
    DirectoryIndex index.html 
</IfModule>




에러메시지 :
mysqli_real_connect(): (HY000/2002): No such file or directory
config.inc.php 파일 내
$cfg['Servers'][$i]['host'] = "localhost"; 라고 적힌 부분을
$cfg['Servers'][$i]['host'] = '127.0.0.1'; 로 바꿔주니 해결되었다.

추천 게시물

전기차 충전 요금 비교(2024년 4월)

작성기준일: 2024. 4. 15. 충전업체 완속(3kW) 중속(7kW) 급속(~100kW) 초급속(100kW~) 기타 채비 https://www.chaevi.com/ 250 290 360 385 채비패스 유료 가입시 일정용량만...