목록전체 글 (389)
만족
mongodb는 외부 접속이 기본적으로 막혀 있다. 외부에서 DB 접속 클라이언트를 사용해 접속하기 위해서는 조금 설정을 바꾸어 주어야 한다. https://ianlondon.github.io/blog/mongodb-auth/ How to connect to your remote MongoDB server I have MongoDB running on my Ubuntu server in Amazon EC2. Since there’s no simple all-in-one tutorial out there explaining how to set up user authentication for Mongo so that you can read and write to your MongoDB server from ..
웹 서버의 디스크 용량이 부족하다는 알림을 받아 화들짝 놀라 확인해보았다. df -h 위 명령어를 이용하면 마운트된 드라이브 별 사용량을 볼 수 있다. /dev/xvda1을 보니 정말로 디스크가 거의 꽉 찬 모습을 볼 수 있다. sudo du -a / | sort -n -r | head -n 20 위 커맨드를 이용하면 가장 큰 파일 사이즈를 가진 TOP 20을 볼 수 있다. 어떤 파일이 용량을 차지하는지를 찾아보다가, 웹 서버의 로그 파일이 10기가를 넘어서는 것을 포착했다. 그래서 rm으로 해당 로그 파일을 지우고 다시 df -h로 확인해 보았지만 Use%가 그대로였다. rm했는데 왜 사용량이 그대로일까? 그 파일이 다른 프로세스에서 open한 상태라면 rm하더라도 실제로 삭제하지 않는다. 그런 파일들..
애드블록은 브라우저를 사용할 때 표시되는 광고의 로딩을 막아 빠른 로딩이 가능하고 쾌적한 이용을 할 수 있게 해 주는 확장 프로그램이다. 그렇지만 개발자나 운영자 입장에서는 트래픽은 나오는데 수익으로 이어지지 않게 하는 아주 골치아픈 녀석이다. https://adblockplus.org/ko/faq_internal 자주 묻는 질문 - 내부 작동 원리 어려운 작업은 실질적으로 게코(Gecko)라는 파이어폭스, 선더버드 그리고 다른 애플러케이션에 내장된 상위 엔진에 의해 이루어집니다. 게코는 "콘텐츠 정책(content policies)"으로 불리는 것을 허용 adblockplus.org 애드블록은 브라우저에서 요청을 보낼 때 그 요청 대상이 등록된 광고 관련 주소일 경우 요청을 드랍시키는 방법으로 광고를 ..
AWS lightsail 인스턴스에서 장시간 CPU에 높은 부하를주면 CPU 성능이 강제로 떨어져버린다. 위 사진은 CPU Utilization Metric인데, 계속 CPU를 갈구다가 뚝 떨어져버렸다. 비단 나만의 문제는 아니고, 실제 다양한 VPS사의 인스턴스에서 장시간 부하 테스트를 했을 때 라이트세일은 독보적으로 낮은 점수를 보인다. 라이트세일쪽이 전부 최하위를 기록하고 있다. Lightsail: 4GB 2cores는 심지어 월 20달러 플랜이다. 그럼에도 디지털오션의 1GB 1core의 5달러 플랜에 떡발리는 모습을 보여준다. 왜 그럴까? 라이트세일의 인스턴스는 burstable capacity라는 것을 가진다. 쉽게 말해 CPU 사용량이 burstable zone에 진입($3.5플랜에서는 10..
전제조건 사양은 다음과 같다 https://browser.geekbench.com/v5/cpu/compare/12269910 [Turbo] MacBook Pro (15-inch Mid 2019) vs MacBook Pro (15-inch Mid 2019) - Geekbench Browser [Turbo] MacBook Pro (15-inch Mid 2019) MacBook Pro (15-inch Mid 2019) Difference Single-Core Score 881 539 163.5% [Turbo] MacBook Pro (15-inch Mid 2019) MacBook Pro (15-inch Mid 2019) Multi-Core Score 6694 4410 151.8% [Turbo] MacBook P..
사용 중인 맥북 프로 2018 15인치 모델이 이제 슬슬 맛탱이가 가는 것 같다. 구매는 2019년 7월에 했으니 이제 한 2년 반 정도 썼다. 문제는 배터리 사이클이 약 400회인 반면(공식 홈페이지에서는 1000까지를 정상 사용 가능 범위로 본다) 배터리가 가벼운 작업(웹 서핑 등)만 해도 4시간을 못 간다는 것이다. (보통 3시간정도 되면 꺼지고 오래가면 3시간 30분정도 간다) 발열도 굉장히 심한 데다 배터리까지 빨리 닳으니 화가 날 때도 많다. 이번에는 터보 부스트를 꺼서 배터리 소모와 발열을 줄일 것이다. 터보 부스트란? CPU에 부하가 걸릴 때, CPU클럭을 높여 작업 성능을 끌어올리는 인텔의 기술을 뜻한다. 꺼지면 성능은 줄어들겠지만, 베이스 클럭으로만 동작하게 되니 어느 정도 성능은 떨어..
현재 운영중인 서비스에서 VPN으로 아이피를 해외로 돌려 악성 댓글을 작성하는 경우가 포착되었다. 따라서 요청 아이피를 확인해 해외 아이피인 경우 일부 기능을 사용할 수 없도록 할 것이다. 클라이언트 아이피 가져오기 function getClientIP() { $ipaddress = ''; if ($_SERVER['HTTP_CLIENT_IP']) { $ipaddress = $_SERVER['HTTP_CLIENT_IP']; } else if ($_SERVER['HTTP_X_FORWARDED_FOR']) { $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; } else if ($_SERVER['HTTP_X_FORWARDED']) { $ipaddress = $_SERVER['..
2021년에 나는 무엇을 했고 어떤 일이 있었는지를 정리해보려고 한다. 거창한 것은 아니고.. 1년치 일기를 하나의 포스트에 담아보았다. 토익 올 초에는 토익 시험을 준비했다. 영어 실력을 향상시키고 싶다거나 하는 것은 아니였고, 4학년이였기 때문에 취업을 위해 800점 정도만 따놓으려고 공부를 시작했다. 약 한달정도 공부하고 시험을 봤는데 790점(LC390/RC400)이 나왔다. 평소에 LC가 잘 나오는 편이였지만 내가 간과한 것은 시험장 스피커는 음질이 쓰레기라는 점이였다... 결국 LC 점수가 곤두박질쳤지만, 시간을 더 투자하기엔 아깝고 개발 직군의 토익 컷이 대부분 600~700선(800점도 있긴 하지만 일부 공기업에 한했다)이였기 때문에 여기까지만 하고 토익은 그만뒀다. 나중에 더 높은 점수가..
MDN문서 내용을 바탕으로 설명할 것이다. https://developer.mozilla.org/ko/docs/Web/HTTP/CORS#%EA%B8%B0%EB%8A%A5%EC%A0%81_%EA%B0%9C%EC%9A%94 교차 출처 리소스 공유 (CORS) - HTTP | MDN 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라 developer.mozilla.org CORS는 무엇이고, 왜 필요하며, 어떻게 CORS 문제를 해결하는지는 평소 개발할 때도 크게 도움이 되고, 웹 개발 직무 면접 시에도 자주 등장하는 만큼 반드시 ..
https://sass-lang.com/ Sass: Syntactically Awesome Style Sheets Sass is the most mature, stable, and powerful professional grade CSS extension language in the world. sass-lang.com Scss는 css를 더 유연하게 사용할 수 있게 해 주는 언어이다. 실제로 웹에서 적용할 때는 전처리기를 통해 css로 변환한 후 사용한다. React에서 Scss 사용하기 yarn eject eject 스크립트를 통해 webpack 설정파일을 끄집어낸다. yarn add node-sass sass-loader 모듈 두개를 설치한다. 단 webpack의 버전에 따라 최신 버전의 node-..
Image Classification 등 입력의 갯수가 많을 때 Full-connected Neural Network를 사용하면 조정해야 할 파라미터의 갯수가 너무 많아 학습시간이 너무 오래 걸린다. 크기가 64*64 해상도인 사진 입력과 히든 레이어 2겹, 각 1000개의 뉴런에 대해 y를 계산하려면 64*64*1000+ 1000*1000+ 1000개의 파라미터에 대해 최적화를 진행해야 한다. 이것은 학습 시간이 오래 걸린다는 것을 의미하기도 하지만, 너무 많은 학습 데이터를 요구한다는 것을 의미하기도 한다. (학습 데이터의 갯수는 가중치를 원하는 정확도로 나눈 값이 최소값으로 하는 것이 권장된다) Convolutional Neural Network 바로 Neural Network를 사용하지 않고, N..
뉴럴 네트워크는 각각이 가중치로 연결되어 신호를 주고받는 간단한 프로세싱 유닛(뉴럴)로 구성되어 있다. 각각의 프로세싱 유닛들이 신호를 주고받는 모습이 마치 사람 뇌의 뉴럴이 상호작용하는 것과 비슷해서 이런 이름이 붙었다. 뉴럴 네트워크는 인풋 레이어, 히든 레이어, 아웃풋 레이어로 나누어볼 수 있다. 예를 들어 y= a*x1+ b*x2+ c일때 입력 x1,x2에 대해 인풋 레이어에 뉴런 2개가 들어가고 출력 y에 대해 아웃풋 레이어에는 1개의 뉴럴이 들어간다. 히든 레이어는 출력 y를 계산하기 위한 여러 겹의 뉴럴들이 존재한다. Neural Network: 각 뉴럴의 입출력 어떤 하나의 뉴럴 N에서 입력값과 그 입력에 대한 가중치의 곱의 합에 bias를 더한 후 그 값을 Activiation funct..
어떤 입력에 대해 맞냐 아니냐와 같이 이분법적인 결과를 예측하기 위해서는 Linear Regression 대신 다른 방법을 사용해야만 한다. 예를 들어 X가 공부시간이고 Y가 시험 합격여부라고 한다면, 그 데이터를 Linear regreesion으로 예측하는 것은 별로 적합하지 않을 것이다. Logistic Regression Logisic Regression은 sigmoid 함수를 이용해 나타낼 수 있다. 이렇게 하면 위와 같이 결과가 0,1로 나타나는 값에 대해 더 적합한 방법으로 분석할 수 있게 된다. Logistic Regression에서 입력 X1, X2 ... Xn에 대해 충분히 반영하여 y를 계산할 수 있도록 sigmoid와 Linear Regression 을 결합한 형태를 갖는다. Sigm..
Gradient Desent (경사 하강법) 경사 하강법은 cost의 변화량에 따라 파라미터를 움직여가며 cost가 최소가 되는 지점을 찾는 방법이다. J(w)를 cost를 계산하는 함수라고 했을 때, 우리는 J(cost)가 최소가 되면서 변화량이 최소가 되는 지점을 찾고 싶다. J가 최소가 되면서 변화량(미분계수)가 최소가 되는 지점을 찾을 때, w값을 움직여가면서 J'(w)의 값이 양수이면 J(w)가 커지고 있다는 뜻이므로 파라미터를 반대 방향으로 움직인다. => parameter의 변화에 따라 cost가 커지고 있으면 그 변화의 반대 방향으로 움직여야만 cost가 작아진다 반대로 J'(w) 값이 음수이면, cost가 줄어들고 있다는 뜻이므로 파라미터를 정방향으로 움직인다. 경사하강법: 사용 J의 변..
전자서명 전자적 데이터에 서명자에 대한 인증을 추가하는 것 비대칭 키를 이용해 서명할 때 개인키로 서명하고 공개키로 검증한다. => 서명: Signiture(M, 개인키) => 검증: Verify(S, 공개키) 따라서 서명은 본인만 할 수 있지만 검증은 공개키를 알고있는 모두가 할 수 있다. 전자서명: 해시 => 서명: Signiture(M, 개인키) => 검증: Verify(S, 공개키) 에서 M이 원본 메시지 그대로에 서명하는 것은 아니다. 메시지를 Hash해서 Hash(M)값에 대해 서명한다. 그러므로 더 정확하게는 => 서명: Signiture(Hash(M), 개인키) 가 맞다. 전자서명: 알고리즘 대표적으로 RSA알고리즘을 사용한다. RSA암호화와 기본 개념은 동일하지만, 여기에서 목적은 서명과..
암호화를 통해 복호화 키를 가지지 않은 사람은 메시지의 원문을 확인하지 못하게 할 수 있다. 대칭키 암호화 대칭키 암호화는 암호화 키와 복호화 키가 같은 암호화 방식을 발한다. 대칭키 암호화는 대표적으로 DES 암호화가 있다. https://yjshin.tistory.com/entry/%EC%95%94%ED%98%B8%ED%95%99-%EB%8C%80%EC%B9%AD%ED%82%A4-%EC%95%94%ED%98%B8-DESData-Encryption-Standard [암호학] 대칭키 암호 - DES(Data Encryption Standard) 데이터 암호화 표준 DES(Data Encryption standard) 1. 개요 DES는 대칭형 암호(비밀키 암호)이다. 즉, 암호화 및 복호화 키가 동일하다..
포맷 스트링 공격은 버퍼 오버플로우 공격과 매우 유사하다. 포맷 스트링 int main(){ char* buf= "str"; printf("%s", buf); } 위와 같이 %s 와 같이 출력 서식을 지정하는 문자를 포맷 스트링이라고 한다. 조금 특이한 %n에 대해서 알아볼 것이다. int main(){ int n; printf("hahaha%n", &n); } %n은 현재까지 출력된 바이트 수를 지정한 변수에 넣는다. 여기에서 %n 전에 출력된 문자열은 hahaha로 6byte이므로, n에 6이 들어간다. %n은 값을 4byte크기로 쓰기작업을 하는데, 만약 2byte만 쓰기에 사용하고 싶을 경우 %hn을 사용한다. 포맷 스트링 공격 원리 만약 printf에서 포맷 스트링을 사용하고 추가 인자를 넘겨주..
아직 블록체인에 대해 오래 공부하지는 않았기 때문에 틀린 내용이 있을 수 있으니 오해설을 발견하게 된다면 댓글을 통해 알려주시면 감사하겠습니다. https://bitcoin.org/files/bitcoin-paper/bitcoin_ko.pdf 이 포스트에서는 위 문서(비트코인 백서)를 해설할 것이다. 비트코인의 목적은 무엇인가? 기존의 인터넷 기반 상거래(쇼핑몰에서 물건 사기 등)에서 재화를 거래하기 위해서는 판매자와 구매자가 직접 재화를 거래하지 않고 금융기관과 같은 중개 기관을 통해 거래한다. 그러나 이런 중개 기관의 개입은 분쟁 등의 이유로 거래의 취소가 발생할 수 있기 때문에 서로 완전히 믿고 거래를 진행할 수 없다. 비트코인은 위 문제를 해결하기 위해 탄생한 1) 중앙통제를 받지 않고, 2) 거..
150분(2시간 30분)동안 3문제를 풀어야 한다. 프로그래머스를 통해 시험이 진행되며, 주어진 기간 내 아무때나 시험을 보면 되서 이 점은 지원자를 배려해준 것 같아 매우 감사했다. (여태까지 본 모든 회사들은 정해진 시간에 다같이 모여서 보는 방식이라 그 날 스케줄이 있을 경우 매우 곤란했다) 난이도는 쉬운 수준이였지만, 3문제 중 두 문제가 효율성 테스트(시간복잡도 줄이기)가 있어 조금 멈칫했다. 단순 문제의 정답을 맞추는 것(정확성 테스트)은 바로바로 가능했고, 효율성 테스트에서 2번 문제 10분, 3번 문제에서 30분정도 소모했다. 특히 3번 문제는 조금 황당했는데, 이분 탐색에 트리까지 써가며 일부 로직의 시간복잡도를 O(N^2)에서O(logN)으로 줄이면서 별 난리를 쳐도 안되던데 극단적으로..