본문 바로가기

server

(53)
Difference between the Accept and Content-Type HTTP headers https://stackoverflow.com/questions/35722586/header-parameters-accept-and-content-type-in-a-rest-context Accept 매개변수는 서버에서 전송된 클라이언트 응답에 예상되는 데이터 유형을 정의하기 때문에 응답 헤더로 사용되는 것으로 알고 있습니다. 저의 질문은 content-type에 관한 것인데, 클라이언트가 보낸 요청의 본문 형식을 정의하기 위해 content-type을 사용합니다. 항상 클라이언트 요청의 일부로 사용했기 때문에 Accept와 content-type으로 헤더를 설정하는 클라이언트 요청이 있습니다. 그리고 최근에 응답 헤더에 content-type이 정의되어 있는 프로젝트를 접하게 되었다(그래서 서버가 보낸..
cors 쉽게 이해하기 CORS란? Cross-Origin Resource Sharing (CORS)은 추가 HTTP 헤더를 사용하여 브라우저가 실행 중인 웹 애플리케이션에 선택된 액세스 권한을 부여하도록 하는 메커니즘입니다. 다른 출처(도메인, 프로토콜 또는 포트)의 자원 및 리소스를 요청할 때 cross-origin HTTP 요청을 실행합니다. 과거에 보안 상의 이유로, 브라우저들은 스크립트 내에서 cross-origin HTTP 요청을 제한했었습니다. 예를 들어, XMLHttpRequest and the Fetch API는 same-origin 정책을 따랐습니다. 다른 API의 응답에 올바른 CORS 헤더가 포함되어 있지 않으면 해당 API를 사용하는 웹 응용 프로그램은 동일한 출처의 리소스(같은 도메인, 같은 포트)만 ..
sentry.io 를 이용한 에러 탐지 (python) 프로그램을 작성시 테스트를 통해 수많은 에러를 겪으며 프로그램을 작성한다. 단위 테스트, 통합 테스트 등 수많은 테스트를 겪었으니 해당 프로그램은 에러가 없을까?세상에 완벽한 프로그램이 없듯이 자의든 타의든 프로그램엔 에러가 있을 수 밖에 없다. 에러 발견을 메신져 알림을 통해 바로 확인하게 할수도 있고, 디비에 해당 내역을 기록할수 도 있다. 수많은 프로그램이 난무 하는 가운데 그중 하나인 sentry.io를 소개 한다. 사용법이 간단하고(아마도??) 통합적으로 관리할수 있는 뷰가 있어서 sentry.io를 선택했다. 먼저 회원가입을 하면 사용하는 언어/프레임워크를 선택한다. 저의 경우 python을 선택했다.sentry-sdk 라는 패키지 설치 및 해당 프로젝트에 해당 api key를 선언해 준다. ..
코딩을 하기전 해야할 일들 1. 요구사항의 명확화 - 정확히 무엇을 할것인지를 정의할것 2. 파라미터 정의 - int / array / date / timestamp 인지 파라미터를 명확히 한다. 3. 기능의 순서 설계 - 요구사항을 진행하기 위해서 어떤 순서로 코드를 작성할 것인가? UML / 다이어그램 / 순서도 등을 통해 순처리/예외처리를 확인 을 통해 간결해 진다. 4. 코드 작성 및 리팩토링 (코드를 짜면서 기능을 추가 할수도 있으며, 기능 단위로 다시 묶음으로써 리팩토링이 가능해 진다. ) 5. 추가 사항이 있는가 확인. 있다면 다시 1번으로 - 버그나 에러는 1, 2번에서 빠진게 있는것. 만일 이게 아니라면 기능상의 오류 (기능정의부터 잘못됨) - 코드부터 작성하지 말자. 기능과 파라미터를 명확히 하면 더 시간을 아낄..
No such file or directory: 'geckodriver': 'geckodriver' No such file or directory: 'geckodriver': 'geckodriver'selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.혹시 selnium 패키지를 이용하여 테스트를 할시 위와 같은 에러가 발생한다면 selenimu에서 사용하는 gecko 브라우져의 드라이버를 추가해줘야 한다. https://github.com/mozilla/geckodriver/releases 자신의 OS에 맞는 드라이버를 다운로드 한후 MAC의 경우 /usr/local/bin/ 폴더에 복사 해주면 정상 작동한다.
web developer roadmap 출처 : https://github.com/kamranahmedse/developer-roadmap 눈에 띄는 것은 1. 테스트 작성 및 TDD가 최상단에 있다는것. (6번) 2. Docker / GraphQL을 배워야 한다는것 (19 / 21 번) 자신이 스타트업같이 개발자가 10명 이내의 회사라면 프론트엔드 + 백엔드 + 데브옵스 까지 기본적인 것은 다 해야 한다. (위의 것은 한번쯤은 건들어봐야 한다... 그게 스타트업이다....아무것도 없으니 만들어야됨.. 누가? 네가!)규모가 있는 회사라면 백엔드와 데브옵스 팀이 구분되어 있다. (데브옵스가 인프라팀으로 세분화 된다)게임에서만 케릭터 스킬 뭐 찍을까 몇일씩 고민하지 말고 자신의 테크트리도 잘 보고 찍자.- 단 천재는 알아서 다 잘한다. 저걸 전부..
Elasticsearch {"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406} 5.5.0 이상 버전에서 아래와 같은 에러 발생 시 {"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406} curl의 헤더에 content-type을 추가해 줘야 한다. -H 'Content-Type: application/json'ex) $ curl -XPOST "http://localhost:32769/board/guest"-H ‘Content-Type: application/json’-d'{ "name": "test", "title": "title", "content": "content content"}'
포털 사이트는 http/2를 지원하는가? http/2 는 무려 2015년동에 이미 공식 프로토콜로 승인되어 많은 웹서버에서 지원하고 있다. ( 설정하는것은 나중에 따로 포스팅으로..)기존 http보다 무려 2배 이상 빠르다. 만일 전송해야 될 파일이 많으면 많을수록(크기는 중요치 않다, 양이 중요하다) 이론상으론 더 빨라진다. 기존 브라우저에서 6개만의 소켓으로 통신하는 프론트엔드 파일을 한꺼번에 던져 줄 뿐더러, 압축률까지 좋다. http1에서의 클라이언트 서버는 6개의 차가 도로를 모두 차지 하므로 나머지 차량은 대기 해야 한다. (저 소켓 6개의 한계 때문에 리소스 서버는 도메인을 바꾼다 던지, gzip 압축을 추가 / 스프라이프이미지 / minify로 용량 줄이기 등 수많은 짓을 하지 않았는가!!) http2에서는 한차량으로 여러 차량이..