![react](https://tistory1.daumcdn.net/tistory/4365896/skin/images/react-logo.png)
목록📖 전체보기 (254)
즐겁게, 코드
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dWehOD/btqZDQcQ3H8/mMJ8Bb9zEpjFWRIWLmaXbK/img.png)
[백준 온라인 저지 - 문제 링크] N번째 피보나치 수를 구하는 문제입니다. 다만 N의 범위가 0 ~ 1백만 사이로, 꽤나 큰 피보나치 수를 구해야 합니다. 우선 이 문제는 파이썬 + 재귀 조합으로는 풀 수 없습니다! C++이나 자바 등의 언어에서는 어떤지 모르겠지만, 파이썬은 기본적으로 1000번까지의 *재귀 호출만을 허용합니다. 따라서 메모이제이션을 활용하는 재귀 함수 코드로는 런타임 에러를 피할 수 없게 됩니다. (* sys 모듈을 불러온 후 sys.setrecursionlimit() 함수를 활용하면 최대 재귀 깊이를 조정할 수 있긴 합니다만, 이 문제에서는 메모리 초과 에러에 걸리게 됩니다.) 그래서, 이 문제는 잠깐 초심(?) 으로 돌아가 단순 for문을 활용해 해결할 수 있습니다. [정답 코드..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bh4FjP/btqZkpuJOc0/h7hluIU97CtQPm47h9sji1/img.jpg)
혹시 피보나치의 수를 구하는 알고리즘을 알고 계신가요? 아마 많은 분들이 재귀함수를 사용하는 알고리즘을 떠올릴 것입니다. N = int(input()) def fib(N): if N == 0 or N == 1: return N return fib(N - 1) + fib(N - 2) print(fib(N)) # input output time # 10 55 0.00092s # 5 5 0.00018s # 100 한없이 긴 시간이 소요됩니다... 얼핏 보면 완벽해 보이는 알고리즘이지만 여기에는 함정이 하나 숨어있는데요, 잠깐 5번째 피보나치 수를 구하는 과정을 그림으로 소개하자면 아래와 같습니다. 5번째 피보나치 수는 4번째 피보나치 수와 3번째 피보나치 수를 더한 결과이며, 4번째 피보나치 수는 3번째 + ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/domqgO/btqZpVFN3Ga/JCCwhykKkrwhkOqXGOXLFk/img.png)
브라우저 API를 찾아보다 보면 "이런 게 있었어?" 라는 생각이 들 정도로 기상천외한 API가 많은데요, 오늘은 브라우저에서 음성 인식을 구현할 수 있는 Web Speech API에 대해 간략히 소개해보고자 합니다. 음성인식 API는 아직 많은 브라우저에서 지원하지 않지만, 그래도 타 클라우드 서비스와는 달리 무료로 활용할 수 있다는 점이 강점입니다. (* 다만 후술하겠지만 실제 프로덕트에서 활용하기는 아직 쉽지 않아 보입니다.) 🎤 음성인식 체험하기 - MDN 예제 mdn.github.io/web-speech-api/speech-color-changer/ 먼저 간단하게 음성인식 API를 활용하는 예제를 소개해보려 합니다. 위 링크는 사용자가 말한 색으로 배경색을 바꾸는 예제인데요, 화면을 클릭하면 인..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/csJVy5/btqYIjWiiqh/ZDpvEo8HA5QNklaF5FzhTK/img.png)
서버리스 프레임워크로 로컬 환경에서 dynamoDB를 활용하려 하니 Serverless: Skipping start: DynamoDB Local is not available for stage: dev 라는 오류가 출력되는 경우가 있다. 이럴 경우 serverless.yml에 다음 구문을 복사해주면 된다. custom: dynamodb: stages: - dev 유사한 오류로 Serverless: Skipping start: DynamoDB Local is not available for stage: test 라는 메시지가 출력되면 위 코드를 -dev 에서 -test 로 고쳐주자.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bxGqUB/btq3TWVvNc3/rrF8Wo2oZbZUXFZV80UD60/img.png)
이전에 제작한 항공대 종강시계의 공지사항 탭이 죽었습니다. 이유가 뭔가 했더니 방학동안 홈페이지 리모델링이 이루어져, 기존 공지사항 게시판이 사라졌다고 하네요...!! 안돼!! 그래서 새로운 페이지의 공지사항을 크롤링해야 했는데, 페이지 렌더링 방식이 변해 공지사항을 어디선가 불러와 동적으로 렌더링하는걸 알게 되었습니다. ⚙️ 학교 게시판 함수 호출 순서 분석 과정 교내 홈페이지 코드는 확실히 공공기관이라는 보수적인 분위기 때문인지, JQuery와 함께 엄청난 스파게티가 되어 있었습니다. 메서드 호출 순서를 따라가며 교내 홈페이지 분석에 필요한 내용들을 정리해보았습니다. 1. onLoad 시 익명 함수 실행 공지사항을 확인하면 제일 먼저 실행되는 함수입니다. $(document).ready(functio..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ba7k5x/btqYvem7l9x/mrQ9YIYr0ntKN2K1r6lEy1/img.png)
{ "message": "API rate limit exceeded for 110.14.126.182. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)", "documentation_url": "https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting" } 깃허브 클론 프로젝트를 진행하던 중, 깃허브 api는 시간당 60회 호출 제한이 걸려있어 프로젝트 진행에 어려움을 겪고 있었습니다. 컴포넌트가 재렌더링될때마다 함수에서 데이터를 요청하기 때문에 불과 몇 ..
태그를 활용할 때 새 창에서 페이지를 이동하기 위해서는 target="_blank" 라는 속성을 활용합니다. 네이버로 이동! 그런데, 이 속성에 보안 문제가 숨어있다는 사실을 알고 계신가요? Tabnabbing 공격 window.opener 라는 전역 객체는 현재 창을 열었던 이전 창의 참조를 반환합니다. 그런데 해커들이 기가 막힌 방법을 고안해냈는데요, 이 window.opener의 location을 피싱 사이트의 주소로 바꿔치기하는 것입니다. 그러면 원래 사이트는 피싱 사이트로 변하게 되고 사용자는 별 의심 없이 정보를 건네주게 되는 것이죠. 간단 시연 _blank 속성으로 새 탭에서 네이버에 들어간 뒤, 네이버에서 window.opener.location 속성을 조작해 이전 탭을 피싱 사이트로 바꿔..