programing
-
[Web] 세션과 HTTP, 연결(커넥션)에 관하여programing/Network 2021. 5. 16. 15:42
발단 쿠키와 세션에 관한 질문에 대해 고찰하던 중, 세션 인증 방식을 위해서는 필수불가결하게 쿠키를 사용해야 한다는 사실을 깨닳았습니다. 왜냐하면 HTTP 프로토콜은 기본적으로 매 요청마다 연결(커넥션)을 맺고 끊기 때문입니다. HTTP 프로토콜은 기본적으로 stateless 하기 때문입니다. 그렇다면 1번의 이유에 대해, 세션이라는 단어가 내포하고 있는 "클라와 서버의 연결이 끊기지 않음" 이랑 모순되지 않나? 라는 생각이 들었습니다. HTTP 위 사진은 HTTP 레이어를 나타내고 있습니다. 브라우저는 어플리케이션이고, 여기서부터 네트워크 요청이 만들어지므로, 응용 계층(7, application layer)에는 웹 브라우저가 관여하게 됩니다. 연결은 전송 계층(4, transport layer)에서 ..
-
[web] Intersection Observer API와 활용programing/Web 2021. 5. 16. 14:39
Intersection Observer API 🚨 글을 작성하는 현재 시점에선 해당 API는 실험적인 기능임을 명심하자! 특정 DOM 요소(이하 타겟 요소)와 그 상위 요소, 혹은 최상위 도큐먼트인 viewport(이하 루트 요소)와의 교챠영역에 대한 변화를 비동기적으로 감지할 수 있는 API. 보통 스크롤이 어느 위치에 도달했을 때, 애니메이션 혹은 특정 로직을 트리거하기 위한 장치로 많이 사용한다. new IntersectionObserver 로 생성된 IntersectionObserver 인스턴스 객체는 설정된 비율 만큼의 가시성을 계속 감시한다. 이 생성자 함수는 다음과 같은 세가지 옵션을 설정할 수 있다. root 디폴트는 viewport. 교챠영역의 기준이 되는 요소. rootMargin 디폴..
-
[programmers] 약수의 개수와 덧셈programing/Algorithm 2021. 5. 15. 17:40
약수의 개수와 덧셈 월간 코드 챌린지 시즌 2 level 1 python 3 우선 특정 수의 약수 개수를 판단하는 기본적인 방법은 다음과 같다. def dividorNumIsEven(n): dividorList = [] for i in range(1, n + 1): if (n % i) == 0: dividorList.append(i) return True if len(dividorList) % 2 == 0 else False 그런데 이런 방식을 left 부터 right 까지 모두
-
Webstorm에 Dart Support 설정하기programing/Mobile 2021. 5. 2. 15:30
Dart plugin 설치 webstorm 의 plugin에서 dart를 설치하자. Dart SDK 다운로드 Get the Dart SDK를 참고하여 SDK를 다운로드하자. SDK 경로 확인 brew info dart 를 치면 다음과 같이 SDK 경로가 나온다. Webstorm 설정하기 Dart SDK path 에 복붙해주면 끝. pub get 그리고 webstorm 에서 pub 관련 에러가 뜬다면, 터미널에서 pub get 을 하거나 flutter pub get 을 해주자.
-
[Programmers] 124 나라의 숫자programing/Algorithm 2021. 4. 18. 22:54
124 나라의 숫자 연습 문제 level 2 풀이 이 문제가 제일 짜증나는 점은, 문제의 조건이 자연수만 있다는 점이다. 일반적 진법에는 0을 포함하기 때문에 0, 1, 2, 10, 11, 12, 20, ... 이런식으로 진행되는 반면에, 문제는 1, 2, 4, 11, 12, 14, 21, ... 이런식으로 진행된다는 점이 까다롭다. conversion = { 0: 4, 1: 1, 2: 2, 3: 4, } def getNum(decimal, _str): if (decimal
-
[Programmers] [1차] 다트 게임programing/Algorithm 2021. 4. 11. 19:27
[1차] 다트 게임 2018 KAKAO BLIND RECRUITMENT level 1 python 3 import re score_table = { 'S': 1, 'D': 2, 'T': 3 } option_table = { '*': 2, '#': -1, '': 1, } def getRounds(_str): pattern = re.compile(r'(\d+)([SDT])([*#]?)') return pattern.findall(_str) def calculateScore(_rounds): scoreList = [0] * len(_rounds) for i, _round in enumerate(_rounds): [baseScore, exponent, option] = _round if option == '*'..
-
[Programmers] 비밀지도programing/Algorithm 2021. 4. 4. 21:33
비밀지도 2018 KAKAO BLIND RECRUITMENT level 1 python3 def getBinary(n, num): _num = num _bin = [0] * n for i in range(n): remainder = _num % 2 quotient = _num // 2 _bin[n - 1 - i] = remainder _num = quotient return _bin def getMap(_bin): return ''.join(list(map(lambda x: '#' if x > 0 else ' ', _bin))) def solution(n, arr1, arr2): answer = [] for row in range(n): _bitOr = arr1[row] | arr2[row] _bin =..
-
[Programmers] 실패율programing/Algorithm 2021. 3. 28. 21:34
실패율 2019 KAKAO BLIND RECRUITMENT level 1 python3 from itertools import groupby def solution(N, stages): failRatioList = [(i+1, 0) for i in range(N)] users = len(stages) fail = 0 stages.sort() for (stage, group) in groupby(stages): if stage > N: break listGroup = list(group) failUserNum = len(listGroup) print(stage, listGroup, len(listGroup)) failRatioList[stage - 1] = (stage, failUserNum / users..