분류 전체보기
-
[PHP/Linux/Ubuntu] crontab으로 PHP 스케줄링 세팅Linux 2021. 2. 21. 21:38
서버에서 주기적으로 데이터베이스의 상태를 파악해서 실행되어야 하는 경우가 있다. 하루에 한번, 1시간에 한 번, 5분에 한번 등 특정 시간마다, 함수를 실행시켜 무언가 변화된 부분이 있거나 했을 때 액션을 취하는 경우다. 현재 개발하고 있는 플랫폼에서는 DB에서 물건의 상태가 변경되는 것을 캐치한 후, 사용자에게 알림톡을 발송해야 하는 경우가 있어, 해당 기능을 이용했다. 이 외에도, 가상계좌의 유효기간 만료, 안심번호 만료 안내 등 다양한 경우가 있을 것이다. 예제는 AzureVM, Linux Ubuntu, Apache2 를 사용중이다. 현재 개발하고 있는 플랫폼은 Codeigniter를 통해 개발을 하고 있어, CI코드를 통해 예제를 보여주고자 한다. PHP스케줄링은 리눅스 서버에서 crontab을 ..
-
[JS] Safari에서 new Date 객체 Invalid Date 리턴 받는 경우Javascript 2021. 2. 13. 18:09
크로스 브라우징 이슈는 파도파도 끝이 없는 것 같다. 최근 날짜 관련한 이슈가 있어서 서버에서 날짜를 받아오도록 코드를 전부 수정했었다. 리턴 받는 데이터는 'yyyy-mm-dd H:i:s' 형태로 리턴받고 있다. 리턴 받은 날짜를 new Date() 객체 안에 인자로 넣었더니, 오류가 발생했다. // 오류가 발생한 코드 new Date('2021-02-13 17:40:00'); // 예상 결과 값 // Sat Feb 13 2021 17:40:40 GMT+0900 (대한민국 표준시) // 실제 결과 값 // Invalid Date 위에서 발생한 오류는 크롬브라우저에서는 정상적으로 작동 했지만, Safari 브라우저에서 Invalid Date 값을 리턴 받았다. 원인은 Safari 에서는 new Date ..
-
[JS/AJAX] 서버에서 클라이언트 단으로 시간 가져오기Javascript 2021. 2. 7. 19:54
최근에 코드에서 시간에 대한 이슈가 있었다. 페이지 점검 시간이 되면, 다른 액션을 취하는 코드가 있었는데, 크롬 업데이트를 하고 난 이후로 시간이 대한민국 표준시로 잡히지 않는 이슈였다. 정상적인 시간 Sun Feb 07 2021 19:28:58 GMT+0900 (대한민국 표준시) 크롬 업데이트 후 시간 Sun Feb 07 2021 01:28:58 GMT-0900 (GMT-09:00) 따라서 페이지가 점검이 아닌데도 불구하고 점검 중인 시간으로 인식해 오류를 발생시키고 있었다. 시간과 관련된 중요한 비즈니스 로직이 아니라, 서버의 시간이 아닌 스크립트에서 new Date() 를 통해 현재 시간을 가져오고 있었는데 이번 기회에 클라이언트단에서 시간을 가져오는 것을 전부 수정하기로 마음 먹었다. 한줄 요약..
-
[JS/jQuery] 스크롤 가장 하단으로 이동시키기Javascript 2021. 1. 28. 16:30
채팅방을 구현할 때 채팅내용이 보이는 영역은 overflow: auto를 시켜두고 주고 받은 내용이 많아질 경우 스크롤되도록 처리함. 단, 아무런 처리를 해두지 않았을 경우에는 스크롤이 최상단에 있어 최근 내용을 보기 위해서는 스크롤을 가장 하단으로 내려야 함. 따라서 채팅방에서 스크롤 이벤트를 발생시켜야 하는 경우는 크게 1. 채팅방 Load 시점 2. 메시지 수신 시점 3. 메시지 발송 시점 4. 과거 메시지를 읽다가 최근 메시지로 바로 돌아오고자 하는 버튼 이벤트 메시지 발송 테스트 2021-01-27 15:18:50 ㅎㅎ 2021-01-27 15:22:43 ㅎㅇ 2021-01-27 15:23:07 ㅎㅇㅇㅎ 2021-01-27 15:26:15 gdgd 2021-01-27 15:53:41 ss 202..
-
[Linux/PHP/CI] 서버의 용량이 가득차서 접속이 안될 경우 로그파일을 확인하세요!Linux 2020. 6. 28. 01:27
오후 12시 갑자기 서버에 접속이 안되는 이슈가 발생했습니다. 아직 서버에 대한 지식이 부족한 탓에 원인조차 파악을 못하고 있었는데 의심스러운 부분이 한 곳 있었습니다. 현재 Azure VM을 사용해서 서버를 운영하고 있는데, 시스템 용량을 99.9% 사용 중인 것이 확인되었습니다. 따로 스토리지를 사용하고 있어, 서버의 용량이 크게 차지하지 않는 상황이라 어디에서 용량을 많이 차지하고 있는지 원인을 찾을 필요가 있었습니다. $ df -h 디스크에서 사용 중인 용량을 보여주는 명령어를 입력하면 요런 상태를 볼 수 있는데, 지금은 /dev/sdal1이 57% 사용 중 이지만, 서버에 접속되지 않았을 때는 100% 사용 중으로 나왔습니다. 현재 PHP Codeigniter를 통해 개발을 하고 있었기 때문에,..
-
[Linux/Apache2] Let's encrypt SSL 보안인증서 갱신하는 방법Linux 2020. 5. 28. 00:27
Let's encrypt의 SSL 보안인증서는 유효기간이 3개월이지만, 무료라는 장점으로 인해 번거롭더라도 매번 갱신을 해야 한다. 방법은 간단하다. 1. Let's encrypt의 인증서는 80포트를 통해 발급되기 때문에 일단 80포트를 닫는다. $ sudo service apache2 stop 2. 인증서 갱신 명령어 $ sudo letscnryptsudo letsencrypt renew 인증서를 입력하면 해당 서버에 발급되어 있는 모든 인증서를 갱신하게 된다. 인증서의 개 수에 따라 소요시간의 차이가 있지만 1~2분 내외로 완료 3. 서버 재시작 $ sudo service apache2 restart 현재 매번 수동으로 인증서를 갱신하고 있지만, 자동으로 인증서를 갱신할 수 있는 방법도 있다고 하니..
-
[Linux/WSL] Windows10 에서 리눅스 사용하는 방법Linux 2020. 5. 1. 22:59
MS가 최근 개발자들을 끌어들이기 위한 노력을 기울이고 있다. 그 중 하나가, 개발을 하다 보면 압도적으로 Mac이 편리하다. 리눅스 기반으로 작동하기 때문에, 개발자들에게는 너무나도 익숙한 환경일 것이다. 이에 반해 Windows의 경우, 개발자들에게 친숙하지 못했다. 하지만, 최근들어 VSCode부터 시작해서 GitHub까지 MS의 행보가 심상치 않더니 WSL (Windows Subsystem for Linux) 즉 윈도우에서 리눅스를 사용할 수 있는 것이 나타났다. 개발 환경 세팅은 아주 단순하다. 1. 제어판-프로그램-프로그램 및 기능에서 Windows 기능 켜기/끄기 선택 2. Linux용 Windows 하위 시스템, 가상 머신 플랫폼 체크 3. 재부팅 하라는 창이 뜨면 다음에 한다고 한 이후 ..
-
[Azure/Linux] SSH 서버 외부 접속 차단하는 방법Azure 2020. 2. 18. 21:17
서비스를 개발하다 보면, 리눅스의 Shell을 통해 리눅스 서버에 접속해야 하는 경우가 많다. 리눅스 서버의 로그를 확인하며, 디버깅을 해야 하는 상황이 많기 때문이다. 랩탑을 통해서 개발을 하다 보면, 다양한 장소에서 무선으로 개발을 해야 하기 때문에 서버의 IP를 차단한다면 그때마다 현재 IP주소를 확인 한 후, 해당 IP에 대한 접속권한을 부여한 후에 리눅스 서버에 접속할 수 있다. 매우 번거로운 작업이지만, 혹시라도 누군가 서버에서 악의적인 의도를 가지고 실제 운영중인 서버를 닫거나, 파일을 제거할 수 있기 때문에 외부IP 접속에 대한 차단은 필수이다. 현재 개발환경은 Azure VM을 통해서 서버를 운영하고 있기 때문에, Azure를 기준으로 글을 작성한다. AWS를 사용해보지 않았지만 아마도 ..