Apache HTTP to HTTPS 리다이렉션(.htaccess)

Apache 웹서버에서 HTTP로 접속(http://example.com)했을 때 HTTPS(https://example.com)으로 접속하도록 리다이렉션(Redirection)하는 방법이다. 웹서버 설정 파일(.conf) 파일이 아닌 디렉터리 루트의 .htaccess 파일을 통해 설정할 것이다.

.htaccess 파일을 호스팅 디렉터리 루트에 생성하고 아래와 같이 작성한다.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

iOS Privacy – Camera Usage Description 카메라 권한 사용에 대한 설명 추가하기

카메라 사용을 위해서 Info.plist에 아래 항목이 추가되어있어야한다.

Privacy - Camera Usage Description

Info.plist 파일에 항목을 추가하고 Key 입력 필드에 “NSCameraUsageDescription” 입력 후 Value 입력 필드에 카메라 권한이 왜 필요한지 어디에 사용되는지 등 권한에 대한 설명을 작성한다.

없으면 카메라 기능에 액세스할 때 아래와 같은 오류가 발생하고 앱은 비정상 종료된다.

2021-12-06 10:38:43.405974+0900 example[25586:8408389] [access] This app has crashed because it attempted to access privacy-sensitive data without a usage description.  The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

“Debug Navigator”에서는 아래와 같은 오류가 발생했다고 표시된다.

Thread 17: signal SIGABRT
libsystem_kernel.dylib`__abort_with_payload:
    0x1ae885a9c <+0>:  mov    x16, #0x209
    0x1ae885aa0 <+4>:  svc    #0x80
->  0x1ae885aa4 <+8>:  b.lo   0x1ae885ac4               ; <+40>
    0x1ae885aa8 <+12>: pacibsp 
    0x1ae885aac <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1ae885ab0 <+20>: mov    x29, sp
    0x1ae885ab4 <+24>: bl     0x1ae862e28               ; cerror_nocancel
    0x1ae885ab8 <+28>: mov    sp, x29
    0x1ae885abc <+32>: ldp    x29, x30, [sp], #0x10
    0x1ae885ac0 <+36>: retab  
    0x1ae885ac4 <+40>: ret    

MySQL DATE_ADD() 시간/날짜 더하기

user_ticket 이라는 테이블이 있다. 사용자별 이용권의 목록을 담고 있고 `expired_at` 컬럼은 해당 이용권의 만료일을 뜻한다.

만료일을 30일 연장하려고 한다.

UPDATE user_ticket SET expired_at = DATE_ADD(expired_at, INTERVAL 30 DAY);

실행전에 변경될 값을 미리 확인해볼 수 있다.

SELECT expired_at, DATE_ADD(expired_at, INTERVAL 30 DAY) FROM user_ticket;

nohup 로그파일명 변경하여 백그라운드에서 실행하기

sync_home.sh 파일을 실행하고자 한다.

nohup ~ & 방식으로 실행하게 되면 “nohup.log” 파일이 생성된다. 이 생성되는 파일명을 지정하고 싶을 때 아래와 같이 하면 된다. 같은 경로에서 여러개의 명령을 nohup 으로 백그라운드 실행을 할 때도 유용하게 사용할 수 있다.

  1. 백그라운드에서 실행해야한다.
  2. 지정한 파일에 로그가 저장되도록 한다.

sync_home.sh

rsync -avh --progress --exclude ".ssh" /volume1/homes/admin/ admin@example.com:/volume1/homes/admin/

다음과 같이 사용할 수 있다.

nohup sh sync_home.sh > sync_home.log 2>&1 &

그러면 아래와 같이 실행된 프로세스의 PID가 출력된다.

[1] 25607

아래 명령어를 통해 PID를 통해 실행중인 프로세스를 조회할 수 있다.

ps -f 25607
admin   25607 24895  0 14:51 pts/0    00:00:00 sh sync_home.sh