워드프레스 이미지 업로드 안되는 이슈




평소처럼 워드프레스 포스팅을 작성하면서 이미지를 첨부하려고 했는데 

갑자기아래 메세지가 뜨면서 실패하였다. 


The uploaded file could not be moved to wp-content/uploads/2019/09.



이럴 경우 원인은 두가지 정도가 있다. 


1. 서버 용량. 


여러 명이 같이 사용하는 디렉토리일 경우 용량이 꽉 경우 이미지 및 백업 등의 기능들이 수행되지 않는다. 


리눅스의 경우 df -h 로 각 디렉토리별 용량을 확인하자


2. 디렉토리 permission 문제. 


755 권한이 제대로 wp-content/uploads 디렉토리의 하위 디렉토리까지 주어졌는지 확인한다.   









ssh 작업 백그라운드로 돌리기



https://nosyu.pe.kr/17455



  • 현재 프로그램이 돌고 있습니다. 제가 확인한 상황은 Java 프로그램이 돌고 있는 상황입니다. 즉, Java -jar 명령어를 이용해 실험을 돌리고 있는 것입니다.
  • ‘Ctrl + z’를 눌러서 해당 프로그램을 정지(pause)시킨 후 shell로 돌아갑니다.
  • ‘bg’ 명령어를 쳐서 해당 프로그램을 background로 보내어 돌려버립니다.
  • ‘disown -h’ 명령어를 쳐서 ssh 연결이 끊어져도 해당 프로세스가 돌아가도록 합니다.
  • 이제 안전하게 ssh 연결을 종료하셔도 됩니다. (Windows 도움말 같네요.)


  • 리눅스에 도쿠 위키 설치하기


    일단 다운로드 부터 : https://download.dokuwiki.org


    보안 주의 사항 : https://www.dokuwiki.org/ko:security



    아래는 도쿠 위키에서 제공하는 설치 과정이다. 



    • Step 0: 설치할 서버가 시스템 요구사항을 충족하는지 확인하세요.
    • Step 1: 최신 버전을 다운로드 페이지에서 다운로드하세요.
    • Step 2: 설치 전 보안 페이지 읽기. 이것은 매우 중요합니다. 의문이 있다면 메일링 리스트에 질문하여 주세요.
    • Step 3: 다운로드한 패키지를 압축 해제 후 생성 된 파일들을 설치를 원하는 웹 공간에 복사합니다.
    • Step 4: 웹 브라우저로 install.php 파일을 열고 나서 나오는 설치 과정을 실행합니다. (추가정보는 installer 페이지를 참고하세요.)
    • Step 5: 설치된 DokuWiki 둘러보고, 설명서를 통해 무엇을 할 수 있는지 살펴봅니다.




    일단 wget 으로 도쿠위키 파일을 다운로드 받고 압축을 푼다. 





    # wget "https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz"

    --2018-12-07 19:11:45--  https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz

    Resolving download.dokuwiki.org (download.dokuwiki.org)... 138.201.137.132, 2a01:4f8:172:3483::2

    Connecting to download.dokuwiki.org (download.dokuwiki.org)|138.201.137.132|:443... connected.

    HTTP request sent, awaiting response... 200 OK

    Length: 3749191 (3.6M) [application/octet-stream]

    Saving to: ‘dokuwiki-stable.tgz’


    100%[======================================>] 3,749,191   1.39MB/s   in 2.6s


    2018-12-07 19:11:49 (1.39 MB/s) - ‘dokuwiki-stable.tgz’ saved [3749191/3749191]


    tar -xvf dokuwiki-stable.tgz



    파일을 html 폴더에 압축을 풀고 웹 사이트에 접속하면 

    아래와 같이 곧바로 위키 화면이 뜬다 초간단 -_-/



    첫 페이지에서 곧바로 Edit this page 에서 간단히 위키 설명을 적었다. 

    이제 실험하면서 나오는 부동산 용어들 이곳에다가 정리하려고 한다. 







    ubuntu (14.04) 에서 php 업데이트 하기






    도쿠위키를 설치하려다가 다음과 같은 에러가 나와서 설치가 중단되었다.  




    The installer found some problems, indicated below. You can not continue until you have fixed them.


    Your PHP version 5.5.9-1ubuntu4.26 is lower than the needed 5.6.0. You need to upgrade your PHP install.



    도쿠위키를 설치하기 위해서는 PHP 버전이 적어도 5.6 은 되어야 한다고 해서 

    중간에 아래와 같이 PHP 업데이트를 진행하였다. 




    PPA(Personal Package Archive) 라는 개인 패키지 아카이브를 사용해서 (블로그 참조

    업데이트를 진행하였다. 

    유분투에서 PHP 7.0 설치를 지원하는 PPA 를 일단 추가해보자. 





    # sudo add-apt-repository ppa:ondrej/php


    Co-installable PHP versions: PHP 5.6, PHP 7.x and most requested extensions are                                                                                              included. Only Supported Versions of PHP (http://php.net/supported-versions.php                                                                                             ) for Supported Ubuntu Releases (https://wiki.ubuntu.com/Releases) are provided.                                                                                              Don't ask for end-of-life PHP versions or Ubuntu release, they won't be provide                                                                                             d.


    Debian oldstable and stable packages are provided as well: https://deb.sury.org/                                                                                             #debian-dpa


    You can get more information about the packages at https://deb.sury.org


    BUGS&FEATURES: This PPA now has a issue tracker:

    https://deb.sury.org/#bug-reporting


    CAVEATS:

    1. If you are using php-gearman, you need to add ppa:ondrej/pkg-gearman

    2. If you are using apache2, you are advised to add ppa:ondrej/apache2

    3. If you are using nginx, you are advise to add ppa:ondrej/nginx-mainline

       or ppa:ondrej/nginx


    PLEASE READ: If you like my work and want to give me a little motivation, please                                                                                              consider donating regularly: https://donate.sury.org/


    WARNING: add-apt-repository is broken with non-UTF-8 locales, see

    https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:


    # LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php

     More info: https://launchpad.net/~ondrej/+archive/ubuntu/php

    Press [ENTER] to continue or ctrl-c to cancel adding it


    # LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php

     More info: https://launchpad.net/~ondrej/+archive/ubuntu/php

    Press [ENTER] to continue or ctrl-c to cancel adding it


    gpg: keyring `/tmp/tmpjth0tz09/secring.gpg' created

    gpg: keyring `/tmp/tmpjth0tz09/pubring.gpg' created

    gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com

    gpg: /tmp/tmpjth0tz09/trustdb.gpg: trustdb created

    gpg: key E5267A6C: public key "Launchpad PPA for Ondřej Surý" imported

    gpg: Total number processed: 1

    gpg:               imported: 1  (RSA: 1)

    OK







    설치 중간에 apache2를 위한 PPA 주소도 가이드해서 이것도 같이 추가하였다. 



    sudo add-apt-repository ppa:ondrej/apache2




    PPA 설치가 완료되면 이 내용을 포함할 수 있도록 로컬 패키지 캐시를 업데이트한다. 




    sudo apt-get update




    그 후 php 7.0 을 설치한다. 






    # sudo apt-get install php7.0

    Reading package lists... Done

    Building dependency tree

    Reading state information... Done

    The following packages were automatically installed and are no longer required:

      duplicity librsync1 python-lockfile

    Use 'apt-get autoremove' to remove them.

    The following extra packages will be installed:

      libapache2-mod-php7.0 libpcre16-3 libpcre3 libpcre3-dev libpcre32-3

      libpcrecpp0 libssl1.1 php-common php7.0-cli php7.0-common php7.0-json

      php7.0-opcache php7.0-readline

    Suggested packages:

      php-pear

    The following NEW packages will be installed:

      libapache2-mod-php7.0 libpcre16-3 libpcre32-3 libssl1.1 php-common php7.0

      php7.0-cli php7.0-common php7.0-json php7.0-opcache php7.0-readline

    The following packages will be upgraded:

      libpcre3 libpcre3-dev libpcrecpp0

    3 upgraded, 11 newly installed, 0 to remove and 583 not upgraded.

    Need to get 6,086 kB of archives.

    After this operation, 20.4 MB of additional disk space will be used.

    Do you want to continue? [Y/n]




    정상적으로 설치가 마무리 되었다. 

    mysql 을 사용할 경우 php7.0-mysql 패키지도 설치해준다. 




    # sudo apt-get install php7.0-mysql

    Reading package lists... Done

    Building dependency tree

    Reading state information... Done

    The following packages were automatically installed and are no longer required:

      duplicity librsync1 python-lockfile

    Use 'apt-get autoremove' to remove them.

    The following NEW packages will be installed:

      php7.0-mysql

    0 upgraded, 1 newly installed, 0 to remove and 583 not upgraded.

    Need to get 123 kB of archives.

    After this operation, 526 kB of additional disk space will be used.

    Get:1 http://ppa.launchpad.net/ondrej/php/ubuntu/ trusty/main php7.0-mysql amd64 7.0.33-1+ubuntu14.04.1+deb.sury.org+1 [123 kB]

    Fetched 123 kB in 1s (92.4 kB/s)

    Selecting previously unselected package php7.0-mysql.

    (Reading database ... 202132 files and directories currently installed.)

    Preparing to unpack .../php7.0-mysql_7.0.33-1+ubuntu14.04.1+deb.sury.org+1_amd64.deb ...

    Unpacking php7.0-mysql (7.0.33-1+ubuntu14.04.1+deb.sury.org+1) ...

    Processing triggers for libapache2-mod-php7.0 (7.0.33-1+ubuntu14.04.1+deb.sury.org+1) ...

    Setting up php7.0-mysql (7.0.33-1+ubuntu14.04.1+deb.sury.org+1) ...


    Creating config file /etc/php/7.0/mods-available/mysqlnd.ini with new version


    Creating config file /etc/php/7.0/mods-available/mysqli.ini with new version


    Creating config file /etc/php/7.0/mods-available/pdo_mysql.ini with new version

    Processing triggers for libapache2-mod-php7.0 (7.0.33-1+ubuntu14.04.1+deb.sury.org+1) ...







    마지막으로 php --version으로 제대로 7.0으로 업데이트 된것을 확인한다. 



    # php --version

    PHP 7.0.33-1+ubuntu14.04.1+deb.sury.org+1 (cli) (built: Dec  7 2018 09:26:06) ( NTS )

    Copyright (c) 1997-2017 The PHP Group

    Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

        with Zend OPcache v7.0.33-1+ubuntu14.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies






    참고 : https://www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-ubuntu-14-04





    javascript json 객체에 키와 값 추가 방법


    참고: https://gent.tistory.com/21



    JSON 객체에 키(key)와 값(value)를 추가하고 삭제하는 방법


    var json = {NAME: "John", AGE: 30, SEX: "male"};


    //add item (key, value)

    json.BIRTHDAY = '2001-03-01';


    //delete item (key)

    delete json.SEX;






    jqeury로 json 정렬하기


     참고: https://stackoverflow.com/questions/881510/sorting-json-by-values


    jquery로 json 파일 정렬하는 법 


    prop 은 정렬하고 싶은 json 파일의 필드 이름이고 asc는 순차 정렬 여부를 의미함. 





    function sortResults(result, prop, asc) {

        SortedResult = result.sort(function(a, b) {

            if (asc) { 

                return (a[prop] > b[prop]) ? 1 : ((a[prop] < b[prop]) ? -1 : 0);

            } else {

                return (b[prop] > a[prop]) ? 1 : ((b[prop] < a[prop]) ? -1 : 0);

            }

        });

       

      return SortedResult

    }



    호출 



    if(comparision && (comparision == '가장 비싼' || comparision == '제일 비싼'))

          result = sortResults(result, "price");

       else

          result = sortResults(result, "price", "asc");




    result ( json 샘플 파일) 


    result = [{

        housename: "우면아파트(Umyeon Apt)",

        areaname: "우면동(Umyeon-dong)",

        area_sido : "서울특별시",

        price: 10000000,

        photo: {images: [{url:'/images/room1.jpg'}]}

      },

      {

        housename: "코오롱아파트(Korong Apt)",

        areaname: "양재동(Yangjae-dong)",

        area_sido : "서울특별시",

        price: 20000000,

        photo: {images: [{url:'/images/room2.jpg'}]}

      },

       {

        housename: "한라아파트(Hanra Apt)",

        areaname: "양재동(Yangjae-dong)",

        area_sido : "서울특별시",

        price: 180000000,

        photo: {images: [{url:'/images/room3.jpg'}]}

        }

              

    ]






    cafe24 네임서버 변경하기




    최근 오픈 api로 매일 아파트 실거래가를 받아오고 있다. 

    ( 참고로 운영 서버를 등록하면 매일 100만건까지 다운로드가 가능하다. )


    지역코드, 연도별로 자동으로 수집하도록 python 스크립트를 걸어놨는데 

    자꾸 [Errno -2] Name or service not known 에러가 나면서 죽는게 아닌가 ㅠㅠ




    ['     4,298거래금액', '2002건축년도', '2009년', '옥천읍 장야리법정동', '옥천장야주공(1)단지아파트', '6월', '11~20일', '51.95전용면적


    ', '313지번', '43730지역 코드', '1층', '']

    Fail <urlopen error [Errno -2] Name or service not known>






    구글링을 해보니 이런 에러는 DNS(네임서버) 문제라고 해서 

    네임서버를 변경하려고 까페24로 ㄱㄱ


    도메인관리에서 도메인 목록에 들어가면 아래와 같이 현재 사용하고 있는 네임서버 정보가 나온다. 





    구글에서 무료로 제공하는 네임서버를 1차로 하고 

    cafe24 서버호스팅 네임서버를 2차로 변경하고

    나머지는 그대로 유지하였다. 















    반영될 때까지는 최대 이틀이 걸린다고 한다. 


    구글에서 무료로 제공하는 네임서버가 좀 느리다는 평도 있긴 있는데 

    그래도 뭔가 변화가 생기를 기다리면서 일단은 변경 완료. 







    [알고리즘 사이트] 알고리즘 문제 풀이 사이트


    출처: http://ledgku.tistory.com/40



    [알고리즘 사이트] 알고리즘 문제 풀이 사이트


    오일러 프로젝트(Project Euler)

    수학적인 문제들을 프로그래밍으로 해결하는 퀴즈 풀이 사이트

    Synap에서 한글로 번역한 사이트를 제공하고 있다. 본 사이트의 모든 문제가 번역되어 있진 않지만 현재 100여개의 문제가 번역되어 있고 많은 사람들이 사용하고 있다. 자신이 원하는 언어로 문제를 풀고 답만 입력하면 된다. 입력한 답이 정답일 경우 다른 사람들이 문제를 푼 코드들을 볼 수 있다.

    (Project Euler @kr : http://euler.synap.co.kr/)

    (Project Euler @net : https://projecteuler.net/)


    알고 스팟(Algospot)

    프로그래밍 대회에서 배우는 '알고리즘 문제해결 전략'의 저자 구종만씨가 운영하는 사이트

    C, Java, Python, C++, Scala, Javascript, Rust, Haskell, Go등 다양한 언어로 문제 풀이가 가능하며 문제별 채점결과(속도, 크기) 랭킹을 제공해준다. 다양한 알고리즘 대회의 양질의 문제들을 제공해 주고 있다. 알고스팟 캘린더에는 알고리즘 대회 스케쥴을 제공해 주고 있다. 국내 알고리즘 사이트 중에서는 Dovelet과 함께 양강체제를 구축하고 있다. 코딩 테스트를 준비하고 있다면 반드시 풀어봐야 할 사이트.

    (Algospot : https://algospot.com/)


    더블릿(Dovelet)

    알고 스팟과 양대산맥을 이루는 알고리즘 트레이닝 사이트

    C, Java, Python, C++, Perl로 문제 풀이가 가능하다. 1~30계단, 옥상으로 단계를 구분해서 운영하고 있는데 무료로 1~3계단, 옥상 레벨의 문제를 풀 수가 있다. 정회원이 되려면 소정의 금액을 지불해야 한다. 랭킹 30위 안에 들면 1년 이상 무료로 이용이 가능하다. 코딩 테스트를 준비하고 있다면 반드시 풀어봐야 할 사이트.

    (Dobelet : http://59.23.113.171/index.php)


    코딜리티(Codility)

    해외에서 정말 유명한 알고리즘 문제 사이트

    문제가 영어로 제공되어 해석의 어려움이 있을 수는 있지만 Web에서 코드를 작성하고 컴파일 결과를 확인할 수 있는 장점이 있다. 코드를 제출하게 되면 시간 복잡도와 공간 복잡도를 서버에서 채점하고 등급을 알려준다. 많은 언어를 제공하며 완성도가 높은 사이트이다. 마찬가지로 코딩 테스트를 준비하고 있다면 반드시 풀어봐야 할 사이트.

    (Codility : https://codility.com/)


    코딩도장

    운동 도장에 매일 다니며 수련하는 것 같이 프로그래밍 문제풀이를 통해서 코딩 실력을 수련하자는 목표로 만들어진 사이트

    구글, 페이스북등 유명 해외 기업과 국내 유명 기업의 코딩 문제들도 수록되어 있다. 채점은 되지 않지만 풀이를 댓글로 작성할 수 있고 다른 사람들의 풀이도 볼 수 있다.

    (코딩도장 : http://codingdojang.com/)


    정리

    더 많은 알고리즘 사이트들이 있지만 여기까지 소개하도록 하겠다. 일단 위의 사이트들의 문제를 충분히 풀어보고 탑코더, 코드포스, 해커랭크등 알고리즘 사이트의 문제들도 풀어보면 좋을 듯 하다. 

    알고리즘은 매일매일 꾸준히...!!

    윈도우에 자바(JDK) 패스 설정

     

     

     

    윈도우에 자바 패스 설정

     

    시스템 - 고급 시스템 설정 - 고급 - 환경변수 - 시스템 변수 설정

     

     - JAVA_HOME 설정

     

     jdk가 깔려있는 폴더를 JAVA_HOME으로 설정한다.

    변수이름: JAVA_HOME

    변수값: jdk가 깔려있는 폴더 예) C:\Program Files\Java\jdk1.8.0_25

     

     

     

    - JAVA_HOME/bin 폴더를 path에 추가한다.

    변수이름: Path

    변수값: jdrk 깔려있는 폴더 아래 bin 디렉토리 예) %JAVA_HOME%\bin

     

    cmd 창에서 path, java, javac 를 쳐보고 제대로 나오나 확인한다.

     

     

     

     

     

     

     

     

     

    Makefile 예시문

    CC          =   gcc -Wall -fPIC
    PAKAGE   =   /home/package/package-name

    EPDIR  = ../../passage/
    INCLUDE     =   -I$(PAKAGE )/include -I$(EPDIR)/include
    LDFLAGS     =   -L$(EPDIR)/lib -lep -L$(PAKAGE)/lib -led

    DEBUG  = -g

    RM          =   rm -f

    LIBDIR      =   ../lib
    BINDIR  = ../bin
    BINS  = sample

    CFLAGS      =   $(TRACE) $(DEBUG) $(OPTIMIZE) $(PROF) $(INCLUDE) $(USEMMAP)


    all: clean compile

    compile:
     for i in  $(BINS); do (  \
            $(CC) $(CFLAGS) -o $(BINDIR)/$$i $${i}.c $(LDFLAGS); \
        );  done

    valgrind:
     cat ../bin/sample.txt | LD_LIBRARY_PATH=$(PAKAGE)/lib:$(EPDIR)lib valgrind --track-origins=yes --leak-check=full --show-reachable=yes -v ../bin/sample

    clean:
     $(RM) *.o

    # vim: sw=4 ts=4 smarttab smartindent


     

     

     

    UTIL_DIR   = /util/
    UTIL_BINDIR  = $(UTIL_DIR)/bin
    UTIL_INCDIR  = $(UTIL_DIR)/include
    UTIL_LIBDIR  = $(UTIL_DIR)/lib
    UTILLIB   = -luf

     

    HTTP_DIR  = /httpd/

    HTTP_INCDIR  = $(HTTP_DIR)/include

    LIB_SRCS  = main.c code1.c code2.c code3.c code4.c


    LIB_OBJS  = $(LIB_SRCS:.c=.o)


    CC    = gcc -Wall -m64 -D_LARGEFILE64_SOURCE
    DEBUGFLAG  = -g
    OPTFLAG   =

    INC    = -I$(HTTP_INCDIR) -I$(UTIL_INCDIR)

    LIBS   = -L$(UTIL_LIBDIR) $(UFLIB) -lfl -lz -lc

     

     

    include ../../../version
    include Makefile.common


    LIB_SRCS        = $(wildcard *.c)
    LIB_OBJS        = $(LIB_SRCS:.c=.o)

    MODULE          = ../binary1 ../binary2 
    CFLAGS          = -c $(DEBUGFLAG) $(OPTFLAG) -fPIC $(INC) -D_LARGEFILE64_SOURCE

    .SUFFIXES: .c .o

    deault: all

    all: $(MODULE) ctags etags

    service:
     make all DEBUGFLAG="-g -DNDEBUG"


    .c.o:
     $(CC) $(CFLAGS) -c $< -o $@

    $(MODULE): $(LIB_OBJS)
     $(CC) -shared -o $@ $(LIB_OBJS) $(LIBS)

    ctags:
     @find $(HTTP_INCDIR) ./ -name "*.[ch]*" | /usr/bin/ctags -L-


    etags:
     etags -R *


    clean:
     rm -f $(LIB_OBJS) $(MODULE) *.gcov *.gcda *.gcno sc.log app.info tags TAGS .gdbinit

    #EOF