기본 콘텐츠로 건너뛰기

3월, 2021의 게시물 표시

GET VS POST

 어렸을 때, http를 처음 배울때, GET과 POST method를 배웠다.   해당 내용을 배울 때, GET은 URL에 파라미터를 보내게 되고, POST 소포처럼 데이터를 Body에 실어서 보내는 것으로 배웠고, 해당 내용의 차이로 GET방식은 많은양의 데이터를 보내지도 못하고, 주소창에 노출 되므로 보안상의 문제가 된다. 라는 식으로 배웠던 기억이 있다.  그때 당시에 그러면 POST만 있으면 되는 거 아닌가? 라는 생각을 하기는 했다.  위의 내용은 사용법의 차이일 뿐, 조금 다시 생각해볼 필요가 있다. GET메소드는 데이터를 조회(Read)하는 경우, POST의 경우 데이터를 변경하는 등의 Create(생성), Update(변경), Delete(삭제)하는 경우에 사용해야 한다는 내용으로 알고 있는 경우가 있다.  여러분들도 멱등성이라는 단어를 들어보았을 수도 있고, 안 들어본 개발자 또한 있을 것이다. 멱등성 은 수학에서 사용 하는 단어로 처음 들었을 때 난해한 단어긴 하다.  멱등성이란 간단히 예기하면, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다. 예를들면 1*1 = 1이다 모든 수에 1을 곱하는 행위는 아무리 많이해도, 결과값이 달라지지 않는다. 0을 더하는 행위도 마찬가지이다.  즉 따라서, GET메서드는 여러번 요청한다고 하더라도 변경을 하지 않게 구현을 해야 하며(멱등성을 보장해야 한다.), POST의 경우에는 데이터를 변경할 수 있다.(비멱등성 함수이다.)  자 여기까지가 GET과 POST의 차이이다. 안전한 메서드 라는 개념이 없기 전까지는 말이다.  안전한 메서드 VS 멱등성 자 아래의 함수가 있다고 해보자.  function get(id) // Get method  function delete(id) // Delete method  function insert(data) // Post method  위의 함수들이 각각의 http메서드와 대칭 되는 함수라고 보자.  get함수는 아무리 요청을 해도 데이터의 변경이

이 문장은 거짓이다.

이번에 소개드릴 내용은 이상한 자바스크립트이다. 1.  배열은 배열이 아닌것과 같다. 이게 무슨 소리일까? console . log ([] == ![]) console . log (+[] == +![]) 위의 항등 연산자는 결과가 어떻게 될까? 특이하게도 위의 결과 둘다 true가 찍힌다. 항등연산자에서 빈 배열은 0으로 값이 있는 배열은 1로 형변환이 가능해진다. [] == ![] 위의 []는 0으로 형변환이 되었고, ![]는 배열을 부정을 하여 false가 되었을 거다. 진위값 또한 false는 0으로 true는 1로 형변환이 가능해진다. 그렇기에 위처럼 둘다 true가 나오는 참사(?)가 발생했다. 2.  배열도 배열이 아닌것도 진실이 아니다. console . log ( true == []) console . log ( true == ![]) 이번 문제는 1번의 해석을 잘 풀어보면 풀수 있을 것이다. 맞다. 위의 결과는 둘다 false가 나온다. 분명 둘중 하나의 경우에는 true를 뜻하고 있어야 함에도 불구하고, 서로 다른이유로 [], ![]을 항등 연상자에서 거짓으로 판별 당했다. 3. 0보다 작거나 같지않지만, 0이하인것 console . log ( null == 0 || null < 0 ) console . log ( null <= 0 )  대부분의 분들이 위의 결과를 둘다 false라고 알고 있을 것이다.  여태 배워온 몇몇 언어들이 null, N/A에 대해서 비교를 제한하고 있는 경우가 많다. 비교를 하면 무조건 거짓이 나온다는 등 말이다. 아래 링크를 보면 자세하게 알 수 있겠지만, 관계연산자 인 경우 숫자형으로 변환시키는 것이 더욱 강제적으로 수행된다고 보면 된다. https://262.ecma-international.org/5.1/#sec-11.9.3 https://262.ecma-international.org/5.1/#sec-11.8.5 즉 아래의 주석과 같이 해석 되었다고 보면 된다. console . log ( nul

알면 쓸만한 자바스크립트 배열 함수

 1. 배열에서 중복 데이터 제거. const data = [ 'sejiwork' , 'sejinjja' , 'sejinjja' , ' 홍길동 ' , ' 홍길동 ' , ' 홍길동 ' , ' 홍길동 ' ] const uniqueData = Array . from ( new Set ( data )) console . log ( 'uniqueData' , uniqueData ) const uniqueAlpha = Array . from ( new Set ( 'sadfsdafas' )) console . log ( 'uniqueAlpha' , uniqueAlpha )  위 처럼 Set은 생성자의 인자로 iterable 객체를 받을 수 있고, 해당 데이터에서 중복이 없어지는 특징 을 같고 있고,   Array.from은 length속성과 인덱싱된 요소를 같는 유사배열객체와, map과 set처럼 순회가능한 객체를 이용하여 배열을 만들 수 있기 때문에 간단하게 두가지를 이어서 중복을 제거 할 수 있다. 2. 배열 자르기 (앞에서) const data = [ 'sejiwork' , 'sejinjja' , 'sejinjja' , ' 홍길동 ' , ' 홍길동 ' , ' 홍길동 ' , ' 홍길동 ' ] data . length = 3 console . log ( data ) 배열의 길이를 변경만 해주었을 뿐인데, 앞에서 3개만 남았다. const stringData = 'abcde' stringData . length = 2 console . log ( stringData ) 아쉽게도 문자열은 지원하지 않는다. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Gl

알면 쓸만한 자바스크립트 문법

 1. Nullish coalescing operator 아래와 같은 코드가 있다. function getTitle (title) { return title || 'no title' } console . log ( getTitle ( ' 알면 쓸만한 자바스크립트 문법 ' )) console . log ( getTitle ()) console . log ( getTitle ( '' )) 당연하게도 위와 같은 결과를 볼 것이다. 하지만, 마지막 console . log ( getTitle ( '' )) 타이틀이 공백문자열 일때는 제대로 표현 되지 않았다. 이럴때 쓸수 있는 것이 아래와 같은 코드이다. function getTitle (title) { return title ?? 'no title' } console . log ( getTitle ( ' 알면 쓸만한 자바스크립트 문법 ' )) console . log ( getTitle ()) console . log ( getTitle ( '' )) 위의 ?? 연산자는 null과 undefined에 대해서만 처리가 된다. 2. console 출력 꾸미기 콘솔을 보다 보면 아래와 같이 이상하게 멋있는(?) 콘솔들을 볼 수 있다. 개발자 대상으로 경고 목적이나, 개발자들한테 전달 하고 싶은 내용들을 멋있게(?) 노출 시킨 다. console . log ( "%c 콘솔을 꾸며 봅시다 ." , "color: yellow; font-style: italic; background-color: blue;padding: 2px" ) ; 위처럼 %c키워드를 이용하면, 뒤에 있는 font-style을 적용 시킬 수 있다. 브라우저별로 사용 가능한 키워드가 있으니 주의 하자. <- 뭐 물론 스타일이 적용 되지 않는다고 버그로 인식 하진 않을 테니 뭐... 3. Optional chai