본문 바로가기

728x90

Programming

(32)
Closure 클로저 function outerFunc(init_count){ let count = init_count ?? 0; return function(add){ count += add ?? 1; return count; };};let counter = outerFunc(1); // 출력값:1counter(); // 2counter(2); // 4outerFunc를 호출한 반환 함수가 counter 변수에 들어감counter가 함수가 되어 호출할때 outerFunc 안의 count 변수에 접근하여 값을 가져옴 클로저함수가 선언될 당시의 렉시컬 환경(Lexical Environment)을 기억해, 함수 실행이 끝난 뒤에도그 내부에서 선언된 변수들에 계속 접근할 수 있는 함수 ※ 렉시컬 환경(Lexical..
RESTful API REpresentational State Transfer자원을 URI로 표현하고, 행위는 HTTP 메서드로 구분하는 설계 방식RESTful APIREST의 원칙을 잘 지켜서 만든 API※URI(Uniform Resource Identifier)는 인터넷 상의 자원을 식별하기 위해 사용되는 고유한 문자열※API(Application Programming Interface)는 두 프로그램 간의 연결 역할을 하며, 한 프로그램이 다른 프로그램의 기능을 사용하거나 데이터를 주고받을 수 있도록 합니다.메서드본문 허용주소(URL)에 파라미터브라우저 캐시멱등성(Idempotent)의미GETXOOO조회POSTOXXX생성PUTOX보통 XO전체 수정PATCHOX보통 XX부분 수정DELETE보통 XO or X보통 XO삭제G..
C# dynamic csharp 컴파일 시점이 아닌 런타임 시점에서 형식이 정해지는 특수한 유형의 형식dynamic 키워드는 데이터 형식 자리에 오지만 특정 데이터 형식을 지칭하지 않음var 키워드는 컴파일할때 데이터 형식을 결정동적 형식은 다른 동적 언어와 통신에 유용dynamic은 컴파일 시점에서는 데이터 형식이 결정되지 않기 때문에 인텔리센스의 도움을 받을 수 없음dynamic x;x = 1234;Console.WriteLine($"{x} {x.GetType()}");//1234 System.Int32x = "abcd";Console.WriteLine($"{x} {x.GetType()}");//abcd System.String컴파일 시점에는 에러가 없으나 런타임 시점에서 에러 발생dynamic now = DateTime.Now;i..
C# 튜플 tuple csharp C# 7.0 버전부터 제공하는 튜플(tuple)은 값을 한 번에 하나 이상 전달하거나 제공받을 때 사용하는 데이터 구조 튜플 리터럴: 변수에 괄호를 사용하여 값을 하나 이상 설정하는 것var r = (12, 34, 56);//기본 형태 Item1, Item2, .. 형태Console.WriteLine($"{r.Item1}, {r.Item2}, {r.Item3}");//12, 34, 56var square = (Width:1920, Height:1080);//이름 지정Console.WriteLine($"{square.Width}, {square.Height}");//1920, 1080(ushort Width, ushort Height) square = (1444, 720);//이름과 형식 지정Console..
google 광고 제거 for(let ele of document.querySelectorAll("[name*=google]")){ ele.remove();}for(let ele of document.querySelectorAll("[class*=google]")){ ele.remove();}for(let ele of document.querySelectorAll("[src*=google]")){ ele.remove();}for(let ele of document.querySelectorAll("[id*=google]")){ ele.remove();}크롬에서 [F12] 후 아래 내용을 덮어쓰기
postgreSQL 데이터 타입 bool boolean char character varchar text int integer float double serial boolean, bool1 bytetrue, false, null 의 값을 가질 수 있음Boolean 열에 아래의 문자를 삽입하면 대소문자 구분 없이 '1', 'yes, 'y', 't', 'true' 는 true로 '0', 'no', 'n', 'f', 'false' 는 false로 변환됨 char(n)고정 길이 문자열, n보다 짧은 문자열을 삽입하면 우측 공백이 생김 varchar(n)가변 길이 문자열 text변수 길이 문자열smallint2 bytes정수 -32,768 ~ 32,767int4 bytes정수 -2,147,483,648 ~ 2,147,483,647bigint8 bytes정수  -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807decimal(p,..
postgreSQL upsert insert update INSERT INTO table_name (column1, column2, ...)VALUES (value1, value2, ...)ON CONFLICT (conflict_column)DO NOTHING | DO UPDATE SET column1 = value1, column2 = value2, ...INSERT INTO ITEM (ID, NAME, PRICE)VALUES (1, 'Water', 600) , (2, 'Ice Cream', 1100)ON CONFLICT(ID)DO UPDATE SET PRICE = EXCLUDED.PRICEON CONFLICT(ID)충돌하면 아래 구문 실행DO NOTHING아무것도 안 함DO UPDATE업데이트 함EXCLUDED충돌돼서 제외된 행
postgreSQL recursive 재귀함수 WITH RECURSIVE cte_name (column1, column2, ...)AS( -- anchor member SELECT select_list FROM table1 WHERE condition UNION [ALL] -- recursive term SELECT select_list FROM cte_name WHERE recursive_condition)SELECT * FROM cte_nameWITH RECURSIVE SUBORDINATES AS ( SELECT EMPLOYEE_ID , MANAGER_ID , NAME FROM EMPLOYEES WHERE EMPLOYEE_ID = 1 UNION SELECT E.EMPLOYEE_ID , E.MANAGER..
postgreSQL GROUPING CUBE ROLLUP SQL 실행 순서 SELECT BRAND , PRODUCT , SUM(SALES)FROM COMPANYGROUP BY GROUPING SETS( (BRAND, PRODUCT) , (BRAND) , (PRODUCT) , ())ORDER BY BRAND , PRODUCT ..GROUP BY CUBE(BRAND, PRODUCT)....GROUP BY GROUPING SETS( (BRAND, PRODUCT) , (BRAND) , ())....GROUP BY ROLLUP(BRAND, PRODUCT)..첫 번째, 두 번째는 동일한 결과이고 세 번째, 네 번째도 동일한 결과GROUPING SETS는 괄호 안에 지정한 형식으로 GROUP을 설정하여 통계CUBE는 괄호 안의 파라미터로 모든 가능한 GROUPING ..
postgreSQL true false null SELECT TRUE AND NULL AS RESULT; -- nullSELECT FALSE AND NULL AS RESULT; -- falseSELECT NULL AND NULL AS RESULT; -- nullSELECT TRUE OR NULL AS RESULT; -- trueSELECT FALSE OR NULL AS RESULT; -- nullSELECT NULL OR NULL AS RESULT; -- null우선순위 TRUE > NULL > FALSEAND 하면 우선순위 낮을 걸로OR 하면 우선순위 높은 걸로※true, false 대신 쓸 수 있는 boolean으로 인정되는 문자열true'true''t''yes''y''1'false'false''f''no''n''0'

728x90