목록전체 글 (390)
만족
RANK/DENSE_RANK/ROW_NUMBER 함수는 모두 특정 열의 값에 대해 순위를 매기는 함수다. 서식은 다음과 같다 RANK() OVER([PARTITION BY COL_NAME_1] ORDER BY COL_NAME_2 [DESC]) RANK대신 DENSE_RANK/ROW_NUMBER로 대치해서 사용할 수 있다. [...]로 된 부분은 생략 가능하다. 다른 함수들과 달리 꽤나 괴상하게 생긴 함수인데, 그렇게 어려운 부분은 없으니 겁먹지 않아도 된다. 먼저 [PARTITION BY COL_NAME_1] 부분 없이 알아보자. RANK() OVER (ORDER BY COL_NAME_2 DESC)는 COL_NAME_2값을 내림차순으로 순위를 매기는 함수다. 즉 다음과 같은 데이터가 있다고 해보자. de..
item.gmarket.co.kr/detailview/item.asp?goodscode=1820719093 PC스피커 ₩88,000 R27BT 2채널 블루투스 컴퓨터스피커 PC USB 광단자 item.gmarket.co.kr 기존에 쓰던 스피커가 죽어버려서 새로운 스피커를 샀다. 전에 쓰던건 이놈인데, 10년인가 11년인가 불만없이 잘 썼을 정도로 일하던 녀석이였으나 얼마전 우퍼쪽 케이블 단선으로 수명을 다했다. 우선 새로운 스피커를 고를 때 염두한 것은 다음과 같다. 1순위: V자 성향의 시원시원한 음색 2순위: 블루투스 가능 3순위: 적당히 큰 사이즈 4순위: 2채널 (별도 우퍼가 있는 스피커는 공간을 너무 차지한다) 5순위: 리모컨 유무 3순위의 적당한 사이즈의 이유는, 너무 작은 스피커에서는 경험..
결론부터 빨리 말하자면, 중고나라, 당근마켓, 번개장터 등에서 에어팟/버즈 미개봉을 검색하면 판매가보다 약 30~40% 낮은 가격에 신품을 구매할 수 있다. 버즈뿐만 아니라, 에어팟, 에어팟 프로 역시 시중가보다 훨씬 저렴하게 올라와 있다. 왜 쌀까? 우선 버즈 시리즈의 경우, 플래그십 또는 준플래그십 휴대폰을 구매할 때 버즈 라이브/프로 할인쿠폰을 주는데 사실 모든 사람이 새 블루투스 이어폰이 필요한 것은 아니다. 그래서 해당 사은품을 다시 되팔아, 휴대폰 구매 비용을 캐시백받는 느낌으로 판매하는 것이다. 버즈 라이브의 경우 10~11, 프로의 경우 17~20정도의 가격이 형성되어 있다. 에어팟 시리즈는 평소에 사은품으로 끼워주진 않지만, 올해 1~2월에 진행하는 '신학기 프로모션'으로 에어팟을 무료로..
whitepaek.tistory.com/40 macOS 오라클 DB 설치 및 실행 방법 macOS에서 오라클 데이터베이스(oracle database)를 사용하기 위해서는.. 맥 OS에서 오라클 데이터베이스를 사용하기 위해서는 도커(docker)를 이용해야 합니다. MySQL처럼 바로 설치하여 사용할 수 있으 whitepaek.tistory.com 참고로 arm기반인 m1에서는 아직 docker를 사용할 수 없기 때문에 거기서는 안된다. 요약 1. 설치 (도커 설치 과정은 생략) docker pull jaspeen/oracle-xe-11g //이미지 다운로드 docker images //이미지가 다운로드 되었는지 확인 2. 실행 docker run --name oracle11g-test -d -p 808..
한국에서 정부사이트, 금융사이트 등을 이용하다 보면 컴퓨터에 AhnLab Safe Transaction, TouchWiz... 등등 보안 프로그램이 한무더기 쌓이게 된다. 그러나 이런 프로그램들이 한번 컴퓨터에 설치되면, 윈도우 시작과 동시에 작동을 시작하고, 관련 서비스를 사용하지 않을 때에도 지혼자 뭔갈 한다. (시작 프로그램에서 꺼버리면, 해당 사이트에서 프로그램을 인식하지 못해 다시 설치하라고 한다) 문제는 은근히 CPU를 많이 먹는다는 것인데, 따라서 컴퓨터 속도를 느리게하는 주범인 것이다. 하나하나 찾아서 지우기는 귀찮으니, 전용 소프트웨어를 사용하도록 하자. teus.tistory.com/category/IT/%EA%B5%AC%EB%9D%BC%EC%A0%9C%EA%B1%B0%EA%B8%B0 ..
2020-11-21자로 사이퍼즈 서포터 안드로이드 앱에 광고 제거 상품이 추가되었습니다. 2018-08-31에 첫 출시를 하고, 그로부터 2년이 지난 뒤에야 추가한 이유에 대해 천천히 풀어볼까 합니다. 사실 그 전부터 광고 제거 상품에 대한 요청은 많이 있었습니다. 그러나 제 답변은 항상 '예정에 없습니다' 또는 '고려중입니다' 에 불과했었죠. 여태껏 광고 제거 상품을 꺼려했던 가장 큰 이유는 다음 두 가지 입니다. 첫째로, 기존에 '기부'해 주셨던 분들이 느끼실 박탈감입니다. 사이퍼즈 서포터는 광고 제거 상품이 출시되기 전 까지 광고와 자발적 기부만으로 운영된 서비스입니다. 광고 제거 상품을 너무 저렴한 가격에 출시하게 되면, 기존에 기부 상품을 1000원에 구매하신 분들은 말 그대로 생돈을 날린 것 ..
350주고 산 맥북에 1년 6개월만에 화면에 커다란 멍자국이 생겼다. 주로 어두운 테마 환경에서만 작업을 해서 모르고 있었는데, 친구가 알려주고 난 뒤부터는 너무 신경쓰인다. 경우에 따라 검은색이나, 노란색 등으로도 멍이 나타나는데 찾아본 바로는 원인은 다음과 같다. 원인 1. 노트북의 열을 충분히 식히지 않고 노트북을 닫았을 경우 2. 외장모니터를 이용해 노트북을 닫은 상태로 사용할 경우 3. 외부적으로 노트북이 눌릴 경우 나의 경우는 1,2번 때문일 것 같다. (디스플레이에 지속적인 열이 가해지면 접착제가 녹아버리거나;스테인게이트, 디스플레이 자체가 손상된다고 한다) 좀 어이없는게, 1번은 그렇다 쳐도 2번의 경우 맥에서 공식 지원하는 기능인데 이런 치명적인 문제가 있는걸 알면서도 지원하는게 얼탱이가..
기존에는 앱/웹과 사이퍼즈 API 서버가 직접 통신했습니다. 매우 간단하고 빠르지만, 치명적인 문제가 있습니다. 사이퍼즈 API 서버가 다운되거나, 점검 상태에 들어가면 모든 요청이 실패한다는 것입니다. 해결법 중간에 프록시 서버를 하나 두어 요청 성공 시 일정 시간동안 그 정보를 저장하고, 사이퍼즈 API 서버가 죽어버리면 저장된 정보를 돌려주는 것입니다. 그러나 이것 역시 문제가 있습니다. 첫째로 한 번도 조회되지 않은 데이터는 프록시 서버에도 존재하지 않기 때문에 오류가 발생한다는 것이고, 또한 거쳐야 하는 서버 갯수가 하나 늘어남으로써 데이터 송/수신 속도가 느려진다는 것이죠. 두 가지 모두 완벽하게 해결할 수 있는 방법은 없으나, 후자의 경우는 비교적 쉬운 방법으로 완화시킬 수 있습니다. 바로 ..
새로운 프로젝트 시작 시 내가 반드시 포함하는 몇몇 모듈이 있어 공유해 본다. 모듈 설치는 npm install [모듈명] 또는 yarn add [모듈명] 위의 명령어를 이용해 한다. axios http request를 간편하게 만들어주는 모듈이다. classnames 조건부로 className이 변경될 경우 유용하게 사용할 수 있다. 예컨데, className={`${someCondition? 'positive': ''}`}를 classnames를 사용하면 className={classNames({positive: someCondition})} 처럼 쓸 수 있다. 조건부 className의 가짓수가 적을 때는 번거로워 보이지만 2~3개만 되어도 훨씬 편해진다. moment Date관련 로직을 간소화해주..
서버에서 MongoDB를 사용한 이후 별로 무거운 작업이 없음에도 CPU 로드율이 미친듯이 날뛰는 문제가 포착되었다. MongoDB를 사용하기 이전에는 볼 수 없었던 문제인데다, 쿼리들 역시 단순히 특정 컬럼을 하나 찝어 일치하는 row 하나를 불러오는 아주 간단한 작업이였기 때문에 어떤 이유로 저런 그래프가 그려지는지 궁금해졌다. 해당 문제에 대해 조사하던 중, 크게 세 가지 원인이 있음을 알아냈다. 1. 거대한 Log 사이즈 mongodb는 기본적으로 /var/log/mongodb/mongod.log 에 로그를 저장한다. 그런데 해당 로그 사이즈가 너무 거대해질 경우(GB단위 이상) 성능에 큰 영향을 끼친다고 한다. cd /var/log/mongodb 로 로그파일이 있는 경로로 이동하고, ls -al..
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key se..
해당 오류를 검색해 본 결과 원인은 통신 중 어느 한 쪽의 커넥션이 끊겼을 때 발생한다고 한다. 상대 서버를 조사해 본 결과 상대측에서 끊은 것은 아니라 좀 더 찾아보니, 내 서버에서 병렬적으로 네트워크 요청을 할때 그 갯수가 한계치를 넘어서면 더 이상 요청을 발송하지 못하고 뻗어버린다고 한다. const axios = require("axios"); axios.default.timeout = 5 * 1000; 커넥션을 하는 부분을 찾아 우선 timeout 값을 지정해 줘서 일정 시간이 지나도록 상대 서버가 응답하지 않으면 이쪽에서 먼저 커넥션을 끊어버리게 만든다. 나는 axios를 사용중이라 위 방법대로 지정했고, 다른 http request module을 사용할 경우 해당 문서를 읽고 타임아웃 최대 ..
forever 모듈로 express 서비스를 배포한 후, 서비스가 죽는 현상이 관찰되었다. DDoS공격이 감지되긴 했지만, 서버가 아예 서버리는 상태가 아니라면 서비스가 죽은 후 다시 해당 서비스를 실행시키는 액션을 기대했지만 튕긴 상태로 유지될 뿐이였다. error: Forever detected script exited with code: 1 forever 에러 로그 맨 마지막엔 해당 오류가 찍혀 있었고, 그 외에 다른 특이사항은 없었다. 재미있는 것은 어떤 로그에서는 해당 로그가 표시된 뒤 서비스를 재시작한 이후, SIGTERM을 받고 프로세스가 죽어버리는 경우도 있었다. error: Forever detected script exited with code: 1 error: Script restar..
운영중인 서비스(사이퍼즈 서포터)는 AWS Lightsail을 이용중이다. 사양은 1Core/1GB RAM인데, 기존까지는 평균적으로 CPU는 20% 이하, RAM은 70%정도가 사용되고 있었다. 사람들이 몰릴 경우 CPU가 40~60%, RAM은 90%정도 사용되는데, 금일 오전 DoS공격을 받아 결국 서버가 뻗어버렸다. ...공격이 아니더라도 간당간당한 수준이라 슬슬 사양을 업그레이드 하기로 했다. CPU쪽은 별로 할 필요가 없을 것 같고, 램 정도만 업그레이드 할 것이다. (1Core/1GB RAM-> 1Core/2GB RAM) 시작해보자 lightsail.aws.amazon.com/ls/webapp/home/instances https://lightsail.aws.amazon.com/ls/weba..
velog.io/@velopert/react-hooks#4-usereducer 리액트의 Hooks 완벽 정복하기 React Hooks 는 v16.8 에 도입된 개념으로서, 함수형 컴포넌트에서도 상태 관리를 할 수 있는 useState, 그리고 렌더링 직후 작업을 설정하는 useEffect 등의 기능을 제공합니다. 이에 대하여 한번 자세히 velog.io 작성자분이 잘 정리해두셨기 때문에 위의 링크를 참조하면 좋다. 공식 문서에서 useState/useEffect/useRef 정도만 읽고 사용해봤는데, 이 밖의 유용한 hook도 많은 것 같다. 조만간 보고 프로젝트에 적용해 봐야지
얼마전 www.warning.or.kr/ 을 피해 폰헙 등 차단된 사이트에 들어갈 수 있는 방법을 게시한 포스트가 방심위 요청으로 삭제되었다. 항상 티스토리를 이용하고 사랑해 주시는 회원님,회원님께서 더 편안하고 즐겁게 티스토리를 이용하실 수 있도록 안내 말씀 드립니다.신고가 접수되어 살펴본 결과, 회원님의 블로그 내에 이용약관 및 운영원칙에 위반되는 내용이 발견되어 아래와 같이 조치되었습니다. 일자 : 2020-11-30 조치내용 : 경고 위치 : 만족 잡동사니게시글 삭제 조치(방송통신심의위원회요청)* 심의번호 : [번호 비공개]* URL : http://satisfactoryplace.tistory.com/119* 결정사유 : 해당 정보는「정보통신망 이용촉진 및 정보보호 등에 관한 법률」등 관련 법령..
우선 맥 사양은 다음과 같다 맥북 프로 15인치 (2019) i9-9980H Radeon Pro 560x 16GB RAM 512GB PCIe SSD MacOS Big Sur 가격 버츄얼박스는 무료고, 페러렐즈는 일회성 구매 기준으로 96000원이다. 페러렐즈가 훨씬 비싼데다, 맥 메이저 업데이트 시 하위호환이 안되는 경우가 있어 새로 사야할 때가 있다. 구독을 하면 1년에 96000원을 내는 것으로 맥 업데이트에 대응해주지만 차라리 일회성 구매를 하고, 호환이 안될 때 마다 업그레이드(60000원)하는게 낫다. 아니그래도 무슨 가상컴퓨터에 십만원을 갖다박습니까? 얘기 조금만 더 들어봐라.. 성능 사실 포스팅을 하는 이유도 성능 때문이다. 버츄얼박스의 성능은 개쓰레기다. 우선 벤치를 보자. (버츄얼박스와 ..
이런식으로 포맷팅되지 않은 JSON 파일은 사람이 읽기 힘들다. 해당 문자열을 복사해서 jsonformatter.curiousconcept.com/# JSON Formatter & Validator Format and validate JSON data so that it can easily be read by human beings. jsonformatter.curiousconcept.com 위의 사이트에 붙여넣으면 보기 좋게 포맷팅해준다. 물론 문자 인코딩은 해주지 않으니 포맷팅에만 중점을 두면 된다. 오른쪽 아래의 세 번째 버튼을 누르면 전체 화면 보기도 할 수 있다. JSON외에도 다른 데이터 포맷 문자열을 정렬하고 싶다면 ~~beautify 를 이용해 검색하면 된다. (EX: JSON beauti..
Google Play Developer Console와 GCP를 연동하면서 발생한 문제다. the project id used to call the google play developer api has not been linked in the google play developer console. 분명 GCP와 개발자 콘솔 API가 분명히 연결되어 있음에도, 위의 오류 메세지를 뱉어내면서 403(Forbidden) 오류가 발생한다. 이걸로 6시간이 갈려나갔는데 해결법은 매우 간단하다... 개발자 콘솔 내 대상 앱의 인앱 상품 페이지로 들어가 아무 상품이나 새로 만든 다음, 그 상품을 지우면 해당 오류가 해결된다.