Author: byun1114

  • [SQLite] vacuum

    SQLite도 vacuum이 있다. 기본적으로 활성화 되지 않는 것 같다.

    방법은 매우 단순하다. SQLite 에서 vacuum을 입력하거나 터미널 입력 창에서 입력해준다.

    # sqlite3 finance_data.db "vacuum;"
    
    or
    
    sqlite> vacuum;
  • [SQLite3] REPLACE INTO

    PostgreSQL에서도 이런 기능이 있었는지는 모르겠다. 그런데 찾아보다 보니 데이터가 없으면 만들어주고 있으면 바꾸어주는 기능이 있다는 것을 알게 되었다. INSERT OR REPLACE INTO 이렇게 구현하는 것 같다. 블로그에 따라서는 REPLACE INTO 만을 언급하고 있는 것들도 있다.

    그래서 이렇게 이용해 보았는데 REPLACE가 되지 않고 INSERT 만 계속 되고 있는 것을 알게 되었다. 다시 검색을 해보니 index가 없을 경우 이런 현상이 있다고 한다.

    그래서 다음과 같이 index를 생성해 준다. 여러 번 시행착오를 거친 결과 내가 원하는 형식으로 사용하려면 date와 name 을 이용한 index를 생성하여야 한다. price까지 이용하면, 당일 자료들이 중복되어 생성된다.

    CREATE UNIQUE INDEX idx ON stock_trend(name, date);

    index를 잘못 만들면, 삭제 후 다시 만들어 준다.

    DROP INDEX [IF EXISTS] index_name;
  • Constant FORCE_SSL_ADMIN already defined

    2024/05/02 21:15:11 [error] 900#900: *11 FastCGI sent in stderr: "PHP message: PHP Warning:  Constant FORCE_SSL_ADMIN already defined in /var/www/blog/wp-config.php on line 99" while reading response header from upstream, client: 192.168.88.180, server: blog.welovedoctor.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php8.2-fpm.sock:", host: "blog.welovedoctor.com"
    

    사용에 문제는 없는데 nginx의 error 로그를 보면 이런 메세지가 자꾸 나온다. 검색에 의하면 wp-config.php 파일에서 FORCE_SSL_ADMIN의 위치에 따른 문제라고 한다.

    /* That's all, stop editing! Happy blogging. */

    위 문장 이전에 아래 내용을 적어주고 재시작 하면 된다.

    define( 'FORCE_SSL_ADMIN', true );
  • Log, IP

    remote_addr 의 주소에 따라서 log 여부를 설정하는 방법을 이용했다.

    http 블럭 내에서 map을 이용해 remote_addr에 따른 그룹을 지정한다.

    http {
        map $remote_addr $log_true {
    	default yes;
    	192.168.88.199 no;
    	192.168.88.162 no;
    	211.48.203.66 no;
        }
    }

    다음은 server 블록에서 다음과 같이 지정한다.

    server {
        location / {
    	if ($log_true = 'no') {
                access_log off;
    	}
        }
    }

    이게 사실 제대로 동작하지 않았다. 그래서 좀 더 시도해 보았다. http 블럭에서 다음과 같이 설정한다.

     map $remote_addr $log_true {
                    default 1;
                    192.168.88.154 0;
                    192.168.88.180 0;
                    192.168.88.162 0;
                    192.168.88.199 0;
            }
            log_format compression '$remote_addr - $remote_user [$time_local] '
                               '"$request" $status $body_bytes_sent '
                               '"$http_referer" "$http_user_agent" "$gzip_ratio"';
    
            access_log /var/log/nginx/access.log compression;

    server 블럭에서 다음과 같이 해준다.

    access_log /var/log/nginx/access.log compression if=$log_true;