일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- javascript
- Django
- PYTHON
- 백준
- django widget
- AWS
- django rest framework
- 알고리즘 풀이
- django ORM
- java
- react
- js
- HTML
- API
- Git
- 파이썬 알고리즘
- Baekjoon
- 알고리즘
- web
- Algorithm
- form
- DRF
- CSS
- 알고리즘 연습
- es6
- 장고
- 파이썬
- 알고리즘 문제
- MAC
- c++
- Today
- Total
목록분류 전체보기 (341)
수학과의 좌충우돌 프로그래밍
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wd6xh/btq7L0rrnZR/z2RiIKAWM4D3lsIj0fF5K0/img.png)
정적언어 VS 동적언어 Type Hints 에 대해서 알아보기 전에 우선 정적언어와 동적언어에 대한 이해가 필요합니다. 정적언어 컴파일 시 변수의 타입이 결정 변수 선언 시 자료형 지정 C, Java 등의 언어가 해당 동적언어 런타임 시 변수의 타입이 결정 실행 도중 변수에 예상하지 못한 타입이 들어와 Type Error 발생할 수 있음 python, javascript 등의 언어가 해당 Type Hints란 python은 대표적인 동적언어입니다. 그렇기 때문에 변수를 선언할 때, 함수가 매개변수를 받을 때 모두 자료형을 지정하지 않습니다. 위에서 말한대로 런타임 시 결정되기 때문에 실행 도중에 예상하지 못한 타입이 들어와 Type Error 발생할 수 있죠. Type Hints 는 이를 방지하고자 타입..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bBIKSW/btq7iRvyijY/aJAGUooWUOiHIgS8B8x2Lk/img.jpg)
gRPC란 gRPC는 구글에서 개발한 어디서나 실행할 수 있는 오픈소스 고성능 RPC 프레임워크입니다. RPC는 Remote Procedure Call의 줄임말로 원격 프로시저 호출이라고 합니다. 이는 별도의 원격제어를 위한 코딩없이 다른 주소공간에서 함수나 프로시저를 실행할 수 있게 해주는 프로세스간 통신 기술입니다. 특히 MSA 구조에서 각각의 서버가 다른 언어와 프레임워크로 개발되었을 경우에도 RPC는 문제 없이 서버간의 통신이 가능해집니다. 또한 기존의 REST 방식의 경우에는, 표준이 없어 파라미터의 응답이 명시적이지 않았을 뿐 아니라 JSON 형태의 데이터를 Serialization하는 비용이 발생한다는 단점이 있었습니다. RPC는 이러한 문제점까지 해결하며 사용이 많아지고 있습니다. Stub..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bACNRL/btq7bEDXZfG/ux84DZmQBEZrIprwItOCH0/img.jpg)
REST란 REST는 Representational State Transfer의 약자로 자원을 정의하고 자원에 대한 주소를 지정하는 방법 중 하나입니다. URI를 통해 자원을 명시하고 HTTP method를 통해서 동작을 정의합니다. 자세한 설계 방법은 아래에서 살펴봅시다. REST의 특징 동일한 인터페이스 HTTP 표준만 따른다면, 언어와 플랫폼에 종속되지 않습니다. 안드로이드, IOS, 웹에 종속되지 않습니다. Stateless 서버에서 상태정보를 따로 저장하고 관리하지 않습니다. 이로 인해 서버의 구현이 단순해집니다. Cacheable HTTP의 인프라를 그대로 사용할 수 있기 때문에 HTTP가 가진 캐시 기능을 사용할 수 있습니다. Self-descriptiveness (자체 표현 구조) REST..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/buX7fs/btq6fSJlwFu/jzFbWSlUoYkPKmqqe3kEQk/img.jpg)
GraphQL이란 GraphQL 는 Graph Query Language로 facebook에서 개발한 쿼리 언어입니다. GraphQL 은 기존의 REST API의 단점들을 보안하기 위해 나온 통신 규약으로 REST API와 많이 비교됩니다. REST API의 어떠한 문제점들을 보안하는지 알아봅시다. REST API의 한계 REST API는 간단한 서비스에는 문제가 없지만 서비스와 복잡해질수록 Over-Fetching 과 Under-Fetching 문제가 발생할 수 있습니다. 또한 여러 환경에 맞춰 API를 제공해야하는 것도 쉽지 않은 일입니다. 따라서 각 환경에 맞추다보니 비슷한 역할을 하지만 Endpoint가 다른 API가 많이 개발됩니다. Over-Fetching Over-Fetching은 클라이언트..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bRwNLs/btq5R0IR58G/4KLMCJMQHiRVxdkVF7fRz0/img.jpg)
들어가기 전에 웹 개발자에게 있어서 HTTP는 빼놓을 수 없죠. HTTP는 1996년 1.0 버전으로 처음 release 되고 1999년 1.1 버전이 등장하였습니다. 그리고 1.1 버전은 HTTP 2.0이 등장하기까지 무려 15년 동안 지속되었습니다. 하지만 시간이 지남에 따라 웹에서 담아야 할 정보는 점점 늘어났고, 지금은 하나의 웹사이트에 수 많은 멀티미디어 리소스들과 비동기 요청들이 발생합니다. 이런 상황에서 더 이상 HTTP 1.1은 버티기 힘들었고 HTTP 2.0이 등장하게 되었습니다. 왜 HTTP 1.1이 버티기 힘들었으며, HTTP 2.0은 어떤 점이 좋은지 알아봅시다. HTTP 1.1이 어떻길래 HTTP Pipelining HTTP 1.0은 기본적으로 Connection 당 하나의 요청을..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/clIuqz/btq5QrzPIJN/3h6hOdYbiKCaeZdkLDhxw0/img.jpg)
서브 도메인이란 서브 도메인 이라는 단어는 처음 들어봤어도 우리는 이미 익숙하게 사용하고 있습니다. 네이버의 서비스들을 예로 들어봅시다. 네이버는 메일, 카페, 블로그 등등 많은 서비스를 하고 있죠. 이럴 경우 각각의 url은 아래와 같습니다. mail.naver.com cafe.naver.com blog.naver.com 가비아, 후이즈, 고대디 등 웹 호스팅 업체에 서브 도메인을 등록할 때는 CNAME과 A레코드 정보를 함께 입력합니다. 둘은 각각 무엇이고 어떤 차이가 있는지 알아봅시다. A Record A Record 는 DNS에 저장할 때 도메인 주소와 IP 주소를 매핑시키는 방법입니다. 도메인에 대한 요청이 오면 대응되는 IP 주소를 반환합니다. NAME VALUE mail.naver.com 1..
저번 포스팅에서는 JWT에 대해서 알아보았습니다. https://ssungkang.tistory.com/entry/WEB-Authentication-2-JWT [WEB] Authentication (2) JWT 저번 포스팅에 이어 이번엔 인증하는 두 번째 방법, JWT에 대해서 알아보겠습니다. [WEB] Authentication (1) 세션과 쿠키 [WEB] Authentication (1) 세션과 쿠키 Authentication 우선 Authentication 이 뭔지부터.. ssungkang.tistory.com JWT를 결국 클라이언트가 보관해야하는데 그 보관을 어디서 할 것인가에 대해 알아봅시다. 이번 포스팅은 웹 어플리케이션을 기준으로 이야기 하겠습니다. Web Storage Web Stora..
저번 포스팅에 이어 이번엔 인증하는 두 번째 방법, JWT에 대해서 알아보겠습니다. [WEB] Authentication (1) 세션과 쿠키 [WEB] Authentication (1) 세션과 쿠키 Authentication 우선 Authentication 이 뭔지부터 알아봅시다. 여러분이 어떤 서비스를 이용할 때, 아이디와 비밀번호를 입력하고 로그인을 한 경험이 있으실 겁니다. 이것이 바로 여러분이 서버로 부터 ssungkang.tistory.com JWT 란 JWT란 Json Web Token의 줄임말로 json 형태의 token입니다. JWT을 만들기 위해서는 header, payload, verify signature 총 3가지가 필요합니다. 그리고 3개를 . 으로 조합하여 아래와 같은 형태로 만..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/biuKZl/btq4oOXswcz/7eHaH2sPJBe82hWnGQGTO1/img.png)
MacOS에서 인터넷에서 다운 받은 파일이 실행되지 않는 경우가 있습니다. 이 경우, 아래와 같은 창이 뜨게 됩니다. 애플의 보안정책으로 바이러스를 포함한 App일 수 있기 때문에 위와 같은 설정을 해두었습니다. 따라서 인터넷에서 다운받은 파일은 새로운 속성이 추가되어 있습니다. 파일의 속성을 확인하기 위해서는 xattr 명령어를 사용합니다. xattr {파일 이름} 위 명령어로 다운 받은 파일의 속성을 확인하면 아래와 같습니다. xattr chromedriver\ 2 com.apple.macl com.apple.quarantine 해당 파일을 실행 못하는 이유는 quarantine (애플의 격리속성) 때문입니다. 따라서 해당 속성을 삭제해야 합니다. 파일의 속성을 제거하는 명령어도 역시 xattr 입니..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sEqNL/btqTLw5iwbb/nn9DUu7ChaZ4IwwbpktfTK/img.png)
java.util 패키지에는 수 많은 클래스가 있지만 그 중에서 많이 쓰는 몇 가지를 알아봅시다. java.util.Objects 클래스 Object 클래스의 보조 클래스로 모든 메서드가 static입니다. 객체의 비교나 널 체크에 유용합니다. isNull(), nonNull() isNull()은 해당 객체가 null인지 판단하여 널이면 true를 아니면 false를 반환합니다. nonNull()은 정반대로 동작합니다. static boolean isNull(Object obj) static boolean nonNull(Object obj) requiredNonNull() 해당 객체가 널이 아니어야 하는 경우에 사용합니다. 만일 객체가 null이면 NullPointException을 발생시킵니다. 두 번..