목록분류 전체보기 (130)
바닥코딩
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bcgen0/btq0NwMDZZ6/uSk6U4xasNCLkHkIxAgU00/img.jpg)
커서는 DB서버에 저장되어 있는 특정 쿼리를 실행하기 위한 정보를 저장하는 PGA 에 대한 포인터로, 클라이언트 메모리에 존재하는 자료구조 입니다. 지금까지 짧게나마 pl/sql 문법과 얘재들을 살펴보면서 커서라는 개념을 접한적은 없었습니다. 그런데 과연 꼭 커서를 알거나 사용할 필요가 있나 의문이 들 수 있습니다. 결론적으로 말하자면 PL/SQL은 커서 없이는 쿼리를 실행할 수 없습니다. 지금까지 했던 예제들은 따로 커서를 명시해 주지는 않았지만, 묵시적으로 커서가 사용된 것이며 물론 명시적으로도 커서를 사용할 수 있습니다. 묵시적 커서, 명시적 커서 비교항목 묵시적 커서 명시적 커서 커서 선언 없음 있음 복잡도 단순 복잡 커서 제어 불가능 가능 유연성 낮음 높음 사용가능 SQL SELECT, INSE..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/BuB16/btq0egi9tzr/kgaPhEVRV1wUaLDtigmRB0/img.png)
Map은 key-value 의 쌍으로 이루어져 있습니다. Map은 해당 키와 value를 개발 단계에서 유용하게 사용하기 좋기 떄문에 유용한 개발을 위해서 Map 오브젝트의 구조와 Map에서 제공하는 함수를 보겠습니다. Map 오브젝트 구조 let newMap = new Map([ /*Map 작성*/ ["key1","value1"], ["key2","value2"], ["key3","value3"] ]); Map은 new Map() 를 통해 인스턴스를 생성합니다 여기서 하나 주의할점은 key:value 형식으로 작성하는 것이 아니라 ["key" ,"value"] 형태로 작성을 한다는 것입니다. 선언 하는 방법에 어려운점은 없을 것입니다. Map을 활용했을 때 좋은 경우에 대해서 알아보면 아래의 경우 정도..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bBj6fW/btq0iWRpTKs/ebafeK8KcLsos7SWTfr9h0/img.png)
ES6(ECMAScript6) 문법 부터 JS 에서는 새로운 함수 생성 방식이 등장했습니다 =>(화살표) 표시를 사용하여 함수를 생성하는 방식인데 화살표의 이름을 따 이를 arrow function(한글로 화살표 함수) 이라고 부릅니다. 화살표 함수는 기존의 function(param) 형식의 코드 형태를 축약했습니다. param => [함수 코드] 와 같은 방식으로 구현하게 되는데 이 함수는 파라미터의 경우에 따라 여러 방식의 함수를 작성 할 수 있으며, 무명/익명 함수라는 성질을 가지고 있기 때문에 화살표 함수를 즉시 적용하는 것이 아니라 호출을 하려면 Function 오브젝트를 할당할 변수를 만들고 이를 변수에 대입해 주어야 합니다 화살표 함수는 function 키워드 보다 간단하게 함수를 만들고 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bqAMOF/btq0c17HpyT/qrN8dXsN8nUUUE1irc9JcK/img.png)
JS를 처음으로 접하신 분들에게는 생소한 개념일 수도 있지만 c++, c#., java, 파이썬 등등 여러 언어를 학교나 학원 또는 개인공부를 통해 해보신 분들에게는 class(클래스) 것이 굉장히 익숙한 단어일겁니다. 객체지향언어의 핵심적인 역할을 하는 class는 개발에서 굉장히 중요한 요소입니다. 물론, JS도 class 라는 개념이 존재합니다. ES6(ECMAScript6) 문법이 처음으로 등장하게 되면서 JS에서도 class라는 개념을 활용할 수 는 있습니다. 그렇지만 JS에서의 class의 중요도는 위에 언급한 언어들과는 사뭇 차이를 보입니다 객체지향언어 ,프로토타입 기반 언어 객체지향언어는 말그대로 class - 객체 방식의 패러다임을 지향하는 언어 입니다. 실제로 java와 같은 언어는 전..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b9MXaJ/btqZ4zpprGx/dg9dDE2noWudtWpxg5VnG0/img.png)
GIT에서는 commit을 하면 초록색으로 그 날 커밋에 대한 여부를 확인 할 수 있습니다. 일명 '잔디 심기'라고 불리는 git의 특성인데 git에서 중요한 기능은 아니지만 개발 or 공부를 하게 되면서 심어지는 잔디를 보며 나름의 뿌듯함을 느끼는 요소가 개발욕구를 끌어올리는 것 같습니다. 구글에만 1일 1커밋을 검색해 보면 여러 개발자들이 하루에 최소 하나 이상의 커밋을 진행하며 열심히 개발 공부를 하는 모습을 볼 수 있습니다. 이런 잔디가 뺴곡히 심어진 화면을 보면 저도 모르게 나도 열심히 해야 하겠다는 자극이 되고는 합니다. 이건 저의 잔디? 입니다. 작년 기준 10월 부터는 사업이 많이 바쁜지라 개인적인 공부를 하지 못했네요 ,, 이런걸 보면서 반성도 하게 되고 좀더 열심히 채워보겠다는 욕심도 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b69yFw/btqZ7KDOE1Q/uuSS8mtLehph5LEzCirR71/img.jpg)
클로저? 자바스크립트에는 자바스크립트 만의 고유의 개념은 아니지만 '클로저' 라는 것이 존재합니다. 정의를 살펴보면 “A closure is the combination of a function and the lexical environment within which that function was declared.” - 클로저는 함수와 그 함수가 선언됐을 떄의 렉시컬 환경과의 조합이다 - 이런 의마라고 한다는데 ... 사실 이해가 되지 않았습니다. 그래서 클로저를 사용한 여러 예제를 찾아보고 실제 사용되는 의미를 파악해본 결과 일반적으로 클로저는 어떤 함수가 자신의 스코프가 아닌 외부에서 선언된 변수에 접근 하는것을 의미한다라는 정의를 내릴 수 있었습니다. 사실 이말도 이해가 안될거라고 생각합니다.....
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/s6lY9/btqYwhQD51y/qKA3f5DvPE9O7AV55AFEz1/img.png)
순환문은 일정한 범위의 소스 코드 문장을 반복적으로 수행하는 기능을 제공합니다. 당연히 순환문에서는 무한루프를 방지하기 위해 탈출문이 존재하며 순환문은 LOOP, WHILE, FOR등을 제공합니다. LOOP BEGIN LOOP --충족조건이 없는 무한 루프 NULLL; end loop; end; LOOP 문의 일반적인 구조는 위와 같습니다 위와 같은 조건일 경우 LOOP 안쪽에 문장을 반복하게 되는데 따로 조건이 없기 떄문에 직접 실행을 해본다면 무한루프에 빠지는것을 확인 할 수 있습니다. 이러한 LOOP 문의 탈출 조건을 지정하기 위하여 탈출문이 존재합니다 EXIT WHEN declare is v_num number :=1; begin loop DBMS_OUTPUT.PUT_LINE('v_num =' |..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bfkvJZ/btqYB5PmeAT/olZBygFntcHlFIhUx2OpU0/img.jpg)
PL/SQL 은 논리 조건에 따라서 다른 문장을 실행 할 수 있도록 조건 분기문을 제공합니다. 조건분기문은 IF문과 CASE문 두가지를 제공합니다 IF 조건문 IF 조건문은 타 프로그래밍 언어의 IF와 유사합니다. 일단 예제를 통해 알아보겠습니다. create or replace procedure Iftest_proc is v_cnt number; v_type STRING(10); begin select count(*) into v_cnt from USER_TABLES where TABLE_NAME ='EMP'; if v_cnt > 0 then DBMS_OUTPUT.PUT_LINE('테이블 emp 가 존재 합니다'); elsif dbms_output.PUT_LINE('테이블 emp가 존재 하지 않습니다'..