목록2021/12 (8)
hmk run dev
어떻게 좋은 쿼리를 짜 효율적으로 DB에서 데이터를 가지고 올 수 있을까?라는 질문에 80%가 넘는 답변은 "실행계획 떠봐" 였다. 상당히 중요한 부분이란 걸 알고 있었지만 어렴풋이 알고 넘어갔었기에 이렇게 포스팅을 남겨 제대로 정리해 본다 :) 조회는 이렇게 실행할 쿼리 앞에 EXPLAIN을 쓰거나 마우스 우클릭 > 실행 > 실행계획 보기 (DBeaver의 경우)로 조회가 가능하다. explain select * from w_work; 아래와 같은 결과를 볼 수 있는데 실행계획에서 각 칼럼이 의미하는 것을 정리해보겠다. id 컬럼 더보기 SELECT쿼리를 구분하기 위한 용도로 쓰인다. ( 몇 개의 SELECT가 실행되었는지 확인할 수 있다. ) - SELECT 쿼리에 join 등을 통해 여러 개의 테이..
나는 이때까지 대부분의 loop 문을 for문으로 사용했었는데 문득, 다른 loop문에 대해서도 궁금해졌다 분명 각기 다른 특징이 있어서 나눠놨을거란 생각으로 여러가지 loop함수에 대해 알아보고자 작성하는 글이다. 1. for for (let i = 0; i < arr.length; i++){ console.log(arr[i]) } 가장 먼저 내가 제일 자주 쓰는 for loop - 빠르고 단순하다 손에 익었다. - 모든 자료형에서 사용가능 - 중간에 loop를 건너뛰거(continue)나 종료(break)가 가능하다. - 반복범위를 조절할 수 있다 ( i++, i--, i += 2 ) - i를 index값으로 사용할 수 있다. 2. forEach arr.forEach(function(v,i,arr){..
PL/SQL 함수를 이용해 부모 row에 대한 정보를 가져오는 쿼리 대신 함수 없이 조회할 수 있는 방법으로 데이터를 조회 해봤다..! PL/SQL이 좀 더 빠르긴 하지만 이번에 MYSQL 버전 업그레이드 이후로 함수생성 권한을 받는 것도 까다로워 졌고 PL/SQL 문법도 이전 버전과 맞지 않는 부분이 조금있는 것 같아서 시도해본 방법이다...;; 사실 특별한 방법 이랄게 있나 싶다. PL/SQL로 하던 작업을 여러번의 inner join(부모 row에 대한 정보가 확실할때만)을 이용해 가장 상위부모 row의 데이터를 가지고 오면 된다. 더 효율적인 방법이 있을 것 같은 냄새가 솔솔나는 쿼리다... 일단 적용해놓고 추후에 리팩토링 하기로 했다..! left join ( select // 개편 후 카테고리..
소프트웨어의 생명주기 폭포수 모델 폭포수라는 단어에서 유추할 수 있듯이 다시 되돌아 갈 수 없는 방식으로 각 단계를 확실하게 마무리 해야한다. - 이전으로 돌아갈 수 없으니 확실히 마무리 - 2개 이상의 과정을 병행할 수 없음 - 개발의 방향을 바꿀수 있는 단계 x 초기 계획 그대로 만들어야 한다. - 반드시 메뉴얼이 필요하다. 프로토타입 모델(원형 모델) 프로토타입을 만들어서 문제점을 파악하고 프로토타입을 기초로 한 완전한 소프트웨어를 만드는 방식 - 시제품, 견본이라고도 함 - 빠른 개발을 위해 디자인이나 마감처리 등을 무시하고 최대한 기능적인 부분만 만듦(인터페이스 중심개발) - 폭포수 모형의 단점인 개발 후 오류 대처에 대한 부분을 보완할 수 있음 스파이럴 모델(나선형 모델) 대규모 프로젝트에 적..
호출하는 api를 찾으려면 네트워크 탭 > Fetch/XHR 을 선택해 손쉽게 찾을 수 있다. 페이징이나 무한스크롤로 되있는 ajax 주소를 알아내 개발자 도구에서 함수로 선언해준다. let crawling_list = []; function getData(){ for(i=1;i
계층형 카테고리를 구현하기 위해 만들어놓은 column을 이용해 해당 카테고리의 가장 상위 카테고리번호를 알수 있는 PL/SQL함수를 구현해 보았다. 부모 카테고리 컬럼 - category_no 자식 카테고리 컬럼 - p_category_no CREATE FUNCTION `f_get_category_new_parent`(idx bigint) RETURNS bigint(20) BEGIN DECLARE _id bigint; // 변수 선언 DECLARE _p_category_no bigint; // 자식 카테고리 번호 DECLARE _category_no bigint; // 부모 카테고리 번호 SET _id = idx; // 파라미터로 받은 변수 _id에 할당 IF _id IS NULL THEN // nul..
초기 로딩 속도가 느린 대신 프런트에서 직접 라우팅 처리 - 서버 부하 줄임 페이지 전환 빠름 & 화면 깜빡임 - 사용자 경험 개선 컴포넌트를 이용한 코드 재사용성(요즘은 웹 컴포넌트도 많이 사용하지만..) 등등... 많은 장점을 가지고 있는 SPA 애플리케이션이지만 검색 SEO, 초기 로딩 속도 등의 단점을 커버할 수 있는 프레임워크가 있다. 흔히 알고 있는 NEXT.js , NUXT.js 등의 프레임워크의 동작원리와 코드 스플리팅 & 번들의 원리에 대해서 알아보고자 하는 포스팅입니다.. 작동원리 1. 초기 사용자가 사이트에 접속 요청 > SSR방식으로 렌더링 되는 HTML 보냄 - 초기 로딩 속도 & 검색 SEO 단점 커버 2. 브라우저에서 Javascript는 spa 애플리케이션에 필요한 것들을 다..