목록전체 글 (389)
만족
머지포인트가 무엇이냐? 일종의 멤버쉽 서비스이다. 현금으로 포인트를 충전하면 그 포인트를 1:1 비율로 제휴처에서 사용할 수 있는데, 충전 시 프로모션을 풍부하게 제공하여 10만 포인트를 충전하는데 9만원, 8만원, 6만원 밖에 들지 않았다. 더구나 이용자도 많아 사기 의심을 별로 하지 않았을 뿐더러 제휴처도 많았기 때문에 더욱 인기가 있었다. 사건 발생 2021.8.13에 갑자기 많았던 제휴처가 엄청나게 줄어들었다. 또한 포인트를 90% 가격으로 환불해주겠다는 성의없는 안내문이 이용자들에게 발송되었다. 이를 본 사용자들은 불안감을 느껴 몇 남아있지 않은 제휴처로 찾아가 포인트를 무더기로 사용했다. 문제는 남아있는 제휴처들 중에는 대기업은 얼마 없고 중소 영업처들이라는 것인데 이들에게 떠넘겨진 포인트는 ..
웹 1.6.0 버전 이후 모스트 사이퍼/포지션/듀오 정보 표시 방법이 변화되었습니다. 기존에는 전적 페이지에서는 현재 표시되고 있는 전적을 가지고만 분석했었고, 모스트 사이퍼 상세보기 페이지로 이동하면 90일 내 진행한 경기를 모두 불러와 분석했습니다. 그러나 이 방법은 속도가 매우 느리고, 시즌 시작 이후 90일이 지났다면 완전한 데이터를 표현할 수 없게 됩니다. 왜 이런 방식을 채택했나요? 사이퍼즈 OPEN API는 호출 횟수에 한도를 두고 있습니다. 따라서 시즌 내 모든 정보를 불러오게 된다면 API 호출(한번에 최대 90일, 100게임, 하나의 게임 타입) 횟수가 많아져 유저가 몰리는 타임에 서버가 정상적으로 응답을 줄 수 없는 상태에 빠지게 됩니다. (가령 90일 내 100게임 이상을 진행하는 ..
어제자로 깃헙에서 더 이상 패스워드 인증 방식을 사용할 수 없게 되었다. 빨리 배포하고 자려고 했으나 깃헙이 귀찮게 군다... remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. 이런 오류가 발생하게 되는데, 해결법은 간단하다. 깃헙에서 Settings-> Developer settings-> Personal access ..
많은 정렬 알고리즘이 있다. 컴퓨터 과학에서도 매우 빈번하게 사용하는 알고리즘이지만, 처음 정렬을 배울 때는 많은 어려움이 있다. 내가 처음 정렬을 배울 때는 첨자 i와 j가 마구마구 바뀌는데 그 안에서 또 스왑하고 뭐하고 하느라 정신없었던 기억이 있다. 요즘 코테공부를 하는 중인데 복습도 할겸 해서 정렬 시각화 웹을 제작했다. SortVisualizer는 정렬 알고리즘을 처음 접하는 사람에게 큰 도움이 될 것으로 생각한다. 디자인에서 똥냄새가 가득하지만 그냥 넘어가자... 애니메이션 속도와 배열의 길이를 지정하면, 지정한 길이로 랜덤 값으로 채워진 배열을 생성한다. 그리고 각 정렬 항목마다 버튼이 있는데, 이것을 누르면 지정한 애니메이션 속도로 정렬 과정을 시각화해서 보여준다. 정렬 방법 중 하나인 병..
글을 시작하기에 앞서, 복돌이가 되는 방법을 소개하는 포스트가 아님을 밝힌다. 앱스토어에서는 4900원에 판매중이다. 그런데 공식 홈페이지에 들어가면 프로그램을 그냥 다운받을 수 있다. https://www.keka.io/ko/ Keka - macOS 압축 프로그램 압축파일의 용량이 너무 커서 공유할 수 없나요? 만약 파일 크기가 너무 커서 이메일 첨부 또는 서버 업로드가 불가능하다면, 분할 압축을 해보세요. 압축 해제 시 다시 원본 파일로 복구할 수 www.keka.io 이게 어떻게 된 일일까? 스크롤을 조금 내려서 텍스트를 읽어보면 다음과 같은 내용을 확인할 수 있다. 후원을 원할 경우 앱스토어에서 구매해 달라고 한다. 따라서 무료로 좀 쓰다가 괜찮으면 앱스토어에서 구매하는 방식으로 후원하면 좋을 것..
https://satisfactoryplace.tistory.com/266?category=905495 [Nodejs] 코딩 테스트 필수 테크닉: Stack, Queue, Map 다른 언어들과는 달리 자바스크립트에서는 내장 자료구조로 object와 array만을 지원한다. (사실 지원하는것도 몇개 있긴 한데 잘 안쓴다) Stack 스택은 그림처럼 나중에 들어온 것이 먼저 나오는(후 satisfactoryplace.tistory.com https://satisfactoryplace.tistory.com/265?category=905495 [Nodejs] 코딩 테스트 필수 테크닉: Math 자바스크립트로 코딩 테스트를 볼 때 반드시 알아야 하는 Math 관련 함수에 대해 알아보자 Math.max Math.m..
현재 자바스크립트로 된 코딩 테스트 강의나 책은 거의 없는 수준이다. 왜인지는 모르겠지만, 아무튼 없다... 그러던 중 인프런에서 자바스크립트 코딩 테스트 강의를 찾았다. https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4# 자바스크립트 알고리즘 문제풀이(코딩테스트 대비) - 인프런 | 강의 자바스크립트(JavaScript)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 재미있게 풀 수 있는 기초 단계 문제부터 고급 알고리즘까지 단계별로 차근차근 배우도록 설계된 강좌입니..
다른 언어들과는 달리 자바스크립트에서는 내장 자료구조로 object와 array만을 지원한다. (사실 지원하는것도 몇개 있긴 한데 잘 안쓴다) Stack 스택은 그림처럼 나중에 들어온 것이 먼저 나오는(후입선출; LIFO) 특성을 가진 자료구조이다. 스택에 자료를 추가하는 행위를 push라 하고, 스택에서 자료를 제거하는 행위를 pop이라 한다. const arr= []; const push= (data)=>{ arr.push(data); }; const pop= ()=>{ return arr.pop(); } push(1); //arr= [1] push(2); //arr= [1,2] pop(); //arr= [1] js에서는 array의 push와 pop을 이용해 이를 구현할 수 있다. Queue que..
자바스크립트로 코딩 테스트를 볼 때 반드시 알아야 하는 Math 관련 함수에 대해 알아보자 Math.max Math.max() Math.max(값0) Math.max(값0, 값1) Math.max(값0, 값1, ... , 값N) n개의 매개변수들 중 가장 큰 값을 리턴한다. 만약 배열에서 가장 큰 값을 가진 원소를 리턴하고 싶다면, 전개 연산자와 함께 사용할 수도 있다 const arr= [1,2,3]; //3 Math.max(...arr); Math.min Math.min([value1[, value2[, ...]]]) n개의 매개변수들 중 가장 작은 값을 리턴한다. 사용법은 Math.max와 동일하다. Math.abs function difference(a, b) { return Math.abs(a ..
자바스크립트로 코딩 테스트를 볼 때 반드시 알아야 하는 String 관련 함수에 대해 알아보자 String.prototype.substring str.substring(indexStart[, indexEnd]) string에서 indexStart 부터 indexEnd-1까지를 포함하는 새로운 문자열을 반환한다. (indexEnd -1까지라는 점을 명심하자. indexEnd에 해당하는 문자는 포함되지 않는다) const str = 'Mozilla'; console.log(str.substring(1, 3)); // expected output: "oz" String.prototype.split str.split([separator[, limit]]) string을 separator를 기준으로 잘라 arra..
lsof -i :[포트번호] 위 명령어를 이용한다. 만약 3000번 포트를 사용중인 프로세스의 정보를 알고 싶다면, lsof -i :3000 처럼 사용한다. 해당 프로세스를 종료하고 싶다면 sudo kill [PID] 를 사용한다. 위에서 3000번을 사용중인 프로세스의 id인 2304를 종료하고 싶다면 sudo kill 2304 처럼 입력한다.
비트라커로 잠금된 드라이브를 암호를 입력하고 나서 접근하려 했을 때 "매개 변수가 틀립니다" 라는 오류가 발생하는 문제이다. 이 문제는 우선 재부팅해서 다시 시도해보는 방법이 있다. 만약 재부팅해서도 불가능하다면, cmd를 관리자 권한으로 열고 chkdsk/f [드라이브 문자]: 명령어를 입력한다. 가령 D드라이브에 문제가 생겼다면 chkdsk/f D: 를 입력한다. 해당 명령어가 정상적으로 처리되었다면 드라이브를 다시 사용할 수 있을 것이다. 만약 안된다면 포맷해버리거나, 데이터 복구 업체를 찾아가자.
버블 정렬은 2중 for문을 사용해 각 순회마다 인접한 요소들을 비교해 조건을 만족할 경우 위치를 스왑하는 방식(한칸씩 미는 방식)으로 요소를 정렬한다. 매우 쉽지만, 소팅 방법중에 효율이 나쁜 편에 속한다. 작동예시 [3,2,1]을 오름차순 정렬한다고 생각해 보자. 첫 번째 반복 arr= [3,2,1] //i=0. j= 1 to 2 (i+1부터 배열의 길이-1 까지) [2,3,1] //3과 2를 비교하는데 2가 더 작으므로 위치 스왑 (i=0, j= 1) [2,1,3] //3과 1을 비교하는데 1이 더 작으므로 위치 스왑 (i=0, j=2) //첫 번째 반복에서 가장 큰 수는 3으로 결정되었으므로 마지막 요소(arr[2])는 더 이상 검사하지 않음 //i=1. j= 2 to 2 (i+1부터 배열의 길이..
자바스크립트로 코딩 테스트를 볼 때 반드시 알아야 Array 관련 함수에 대해 알아보자 Array.prototype.forEach arr.forEach(callback(currentvalue[, index[, array]])[, thisArg]) 배열의 각 원소에 대해 callback 함수를 호출한다. (callback함수의 매개변수: (현재 요소 값, 현재 인덱스 번호, 원본 배열)) const array1 = ['a', 'b', 'c']; array1.forEach(element => console.log(element)); // expected output: "a" // expected output: "b" // expected output: "c" 간편하지만, 반복 중간에 중지하고 싶어도 그럴 수..
일반적인 방법으로는 제거할 수 없다. 파인더를 열고, 상단의 이동 탭을 누른 뒤 폴더로 이동 버튼을 누른다. 열린 창에 /시스템/라이브러리/Audio/Plug-Ins 를 복사해서 붙여넣고 이동을 클릭한다. 그러면 SpeakerAmp나 BlackHole 등의 오디오 플러그인 폴더가 보일텐데, 지우고 싶은 플러그인의 폴더를 삭제한 후 재부팅하면 사라진다.
class component에서의 prev state componentDidUpdate(prevProps, prevState, snapshot) class component에서는 componentDidUpdate 라이프사이클에서 이전 상태값들을 사용할 수 있었다. Function component에서의 prev state 그러나 hook에서는 위와 같은 라이프사이클이 존재하지 않는다. 따라서 hook을 커스텀해서 prev state를 담을 수 있는 새로운 state를 생성해 활용한다. usePrevState.js import { useEffect, useRef } from "react"; export function usePrevState(state) { const ref = useRef(state); ..
IOS에서는 사용자 추적(오류 로그, 활동 내용 등) 시 사용자에게 반드시 동의를 받아야만 한다. 만약 그렇지 않을 경우 다음 내용과 함께 심사가 거부된다. Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage We noticed that your app requests the user’s consent to access the AppTrackingTransparency, but doesn’t sufficiently explain the use of the AppTrackingTransparency in the purpose string. The purpose string on the App Tracking Transparency permiss..
문제 웹앱 제출 시 사이트의 도메인의 소유권이 앱 제작자에게 있는지 없는지 구글에서는 알 수 없다. 가령 내가 네이버의 소유주가 아닌 데도 https://naver.com 을 웹뷰로 래핑해 앱으로 출시한다면 이는 서비스 소유권 침해이기 때문에 구글에서는 민감하게 반응할 수 밖에 없다. 내 경우엔 내가 제작한 키즈스쿨 서비스(https://kidsschool.vercel.app)을 웹뷰로 래핑해 출시했는데, 콘텐츠 도용 의심으로 제재를 받았다. 조치 웹사이트 서버 및 도메인은 내 소유가 아니기 때문에(웹사이트 호스팅 서비스로부터 대여) 도메인 소유 증명서는 제출할 수 없다. 따라서 해당 서비스에 내 소유라는 것을 증명하기 위한 짧은 텍스트 파일을 추가했다. https://kidsschool.vercel.a..
키즈스쿨은 유치원알리미(https://e-childschoolinfo.moe.go.kr/main.do;jsessionid=41kaF9gF61z6UtBrX8p288tetI721tGKwc8Raia2pxa8P1JEJgeqR7jbouxEiWup.ies-kirwas2_servlet_engine1)에서 제공되는 데이터를 기반으로 서비스를 제공합니다. 키즈스쿨에서는 서비스 개선을 위해 오류 로그 내용, 문의 접수 시 입력한 내용, 접속 정보를 자사에 보관하며 이 내용은 사용자의 신원과 직접 연결되지 않으며 외부로 유출하지 않습니다. 또한 광고의 경우 구글의 애드센스(https://www.google.com/intl/ko_kr/adsense/start/)를 사용하며, 애드센스 서비스에서 사용자와의 광고 관련성을 높이기..
사전 준비 시작하기 전에 아래 링크를 읽고 환경설정과 프로젝트 생성을 완료한다. https://satisfactoryplace.tistory.com/138?category=872124 [React Native] 설치 및 환경설정 해당 포스트는 https://book.naver.com/bookdb/book_detail.nhn?bid=15767673를 참고하여 작성되었다. 스무디 한 잔 마시며 끝내는 React Native 단순하지만 강력한 앱을 원한다면,앱 개발을 위한 최고의 선택2020.. satisfactoryplace.tistory.com https://satisfactoryplace.tistory.com/139?category=872124 [React Native] 프로젝트 생성 및 샘플 실행 np..