본문 바로가기

전체 글189

[C/Linux] 헤더 파일 헤더 파일에 앞서 빌드란... 소스코드가 전처리-> 컴파일 -> 어셈블 -> 링크, 단계를 거쳐서 실행파일이 생성되는 것을 말한다. 보통 gcc 컴파일러를 통해서 컴파일을 하면 gcc -c main.c --> 를통해서 오브젝트 코드인 main.o 파일을 생성할 수 있다 gcc -o [test] main.c --> 를 통해서 바로 실행파일인 a.out 또는 test 파일을 생성할 수 있다. 컴파일을 통해서 .o (오브젝트 코드)를 생성한다음에 여러개의 오브젝트 파일을 묶어서 실행파일을 만들 수 있다. gcc -o test main.o sum.o double.o --> test라는 실행파일이 생성된다. -----------------------------------------------------------.. 2022. 5. 16.
[DB/Oracle] TRIGGER * 바인드 입력 한번 찾아보기(찾음) 아래의 SQL 문을 보면 TRIGGER를 생성하는 쿼리문을 볼수 있다 첫줄부터 형식을 보면 CREATE [OR REPLACE[ TRIGGER 생성할_트리거_이름 [BEFORE/AFTER] [INSERT/UPDATE/DELETE] ON 테이블명 --> 트리거를 생설할때 트리거 이름을 만들고, 해당 트리거가 INSERT OR UPDATE OR DELETE 가 실행되기 BEFORE 전에 실행될것인가 AFTER 후에 실행될것인가를 정하고 ON 테이블명 --> 해당 테이블에서 [I/U/D]가 [AFTER/BEFORE] 할때 실행되는 트리거이다 REFERENCING NEW AS N OLD O --> 해당 트리거가 INSERT일떄는 NEW만 사용 가능하다 이것은 INSERT 시에 이전의 데이터는 존재 하지 않기 때문.. 2022. 4. 29.
[DB/Oracle] Procedure, Curosr , 사용자 정의 함수 Oracle 에서 Procedure를 실행 할때 ORACLE에서 출력 값을 확인 하기 위해서는 SET SERVEROUTPUT ON; 쿼리 수행의 결과로 패치된 튜플 수가 0개 이면 TRUE 선언한 프로시저 사용방법 프로시저의 매개변수가 없거나 // IN 매개 변수만 있을경우는 EXEC(=EXECUTE, CALL) 프로시저명 // EXEC(매개변수) 를통해서 실행 할 수 있습니다. 프로시저의 매개변수가 IN/OUT 모두 있을경우는 프로시저 안에서 사용할 수 있다. 아래를 보면 위에서 선언한 프로시저를 사용하고 있는데 GROUP_AVG()안에 IN,OUT 의 매개 변수가 들어가는데 IN 안에는 char의 변수를 넣어주고, OUT에는 FLOAT의 변수를 넣어준다. 이때 OUT은 해당 프로시저의 결과값을 받아야.. 2022. 4. 28.
[DB/Oracle] SQL 모음 테이블 생성(Create Table ) not null의 경우 속성을 정의 할때 같이 적어주며, 기본키, 유니크키, 외래키, 제한(Check) 의 경우 아래에 따로 적어줍니다. 외래키의 경우는 Foreign Key(컬럼명) references 테이블명(컬럼명) 으로 적어줍니다, 현재 테이블의 (컬럼명)은 참조합니다 어디 테이블의(컬럼을) check의 경우는 () 안에 조건을 사용해줍니다. 테이블 속성 추가 alter table (테이블 이름) add (추가할 속성) (추가할 속성의 타입) 뷰 생성(Create View) 뷰를 생성할 떄는 create view 뷰이름 as (가져올 속성들을 select 합니다) 이때 가져올 속성들 이름을 그대로 사용하고 싶지 않을 경우에는 뷰이름(원하는 속성명을 적어주면 .. 2022. 4. 28.
[AWS] Amazon Web Service Amazon Web Service 를 통해서 가상 컴퓨터를 생성한 후에 웹서버를 다운로드 하였다. AWS에 접속한다음에 버튼을 통해서 가상 컴퓨터를 생성할 수 있는 단계로 넘어가게 되며, 여기서 Window Server를 선택하여 생성하였다. 이때 Public Key, Private Key를 생성하였고, 프라이뱃 키는 pem 파일로 저장되는것 같았다. 인스턴스란 가상의 컴퓨터를 생성하는 것으로 알고 넘어가면 될것 같다. 인스턴스 생성 후 생성한 인스턴스를 연결을 할떄는 RDP클라이언트에서 원격 데스크톱 다운로드 통해서 rdp 파일을 다운로드하여 가상컴퓨터접속 파일을 다운로드 하면된다, 이때 접속할때 비밀번호가 필요한데 이때 아까 설정한 키페어 비밀번호를 통해서 암호를 받아서 접속 할 수 있다. 이렇게 가.. 2022. 4. 11.
[Javscript] JS-JSON JSON이란 Javascript Object Notation의 줄임말으로, key : value 형태의 포맷으로 되어있다. JSON.stringify() 를 알아보자면 매개변수로 Javascript 객체를 넣으면, String 문자열로 return 되어 나온다. a 의 경우는 "강남": "gangnam" , "사과":"apple" 로 정의 되어 있고, b의경우는 이차원 배열인데 이것도 쉽게 생각하면 1:[1,2,3] , 2:[23,42,66], 3:[6,3,1] 로 생각할 수 있는것 같다. 따라서 배열도 JSON.stringify()를 통해서 문자열로 바꿀수 있다. 즉 JSON.stringify(Javascript 객체) 릍 통해서 문자열화 할수 있고 반대로 문자열화 된 Javascript 객체는 JSO.. 2022. 4. 4.
[Javascript] 2차원 배열 2048 게임 2048 게임이 무엇인지 모른다면 한번 검색해보고 직접 해보는걸 추천한다. 마우스가 움직이는 방향마다 4*4 판의 숫자가 모여지고 같은 숫자는 서로 더해지는 게임이다. 아래와 같은 모양의 4*4 판에 방향키가 움직일떄마다 왼쪽으로, 위로, 옆으로, 아래로 모아지면서, 같은 숫자가 만나면 더해지는 방식이다. 왼쪽,오른쪽으로 움직일 경우와, 위아래로 움직일 경우가 비슷한 방식으로 코드가 이루워지기 때문에 왼쪽과, 위로만 움직이는것을 보고 코드를 짜보자. 우선 코드먼저 보자면. 현재 data = [ [0,2,4,2], [0,0,8,0], [2,2,4,8], [0,16,0,4] ]; 2차원배열로 4*4 형식을 이루고있다. 글로 설명하자면 값을 표로 정리하자면 이런식으로 진행된다. 왼쪽으로 몰떄는 0을뺸 값을 n.. 2022. 4. 1.
[Javascript] DOM DOM : 문서객체모델 (Document Object Model)은 HTML 또는 XML에 접근하기 위한 인테페이스로, 문서내의 모든 요소를 정의하고, 각각의 요소에 접근하는 방법을 제공한다. 자바스크립트는 이러한 객체 모델을 이용하여 다음과 같은 작업을 할 수있다. - 자바스크립트는 새로운 HTML 요소나 속성을 추가할 수 있습니다. - 자바스크립트는 존재하는 HTML 요소나 속성을 제거할 수 있습니다. - 자바스크립트는 HTML 문서의 모든 HTML 요소를 변경할 수 있습니다. - 자바스크립트는 HTML 문서의 모든 HTML 속성을 변경할 수 있습니다. - 자바스크립트는 HTML 문서의 모든 CSS 스타일을 변경할 수 있습니다. - 자바스크립트는 HTML 문서에 새로운 HTML 이벤트를 추가할 수 있.. 2022. 3. 27.
[Linux/C] GDB GDB의 경우 Linux 로 컴파일 한것을 디버깅할수 있을 도구로 gcc -g [파일명] 을통해서 디버깅 할수 있도록설정한다음 gdb [컴파일한 파일명] 을 통해서 GDB로 접속한다. 기본적인 명령어로서 disas main : main() 함수에 적혀있는 함수를 어셈블리 언어로 확인할 수 있다. l : 코드를 10줄 보여주며, l을 누를때마다 10줄씩 보여준다. b : break point를 찍는 명령어로써, 코드를 실행시에 멈추게 되는 부분이다. r : 코드를 진행시킨다. Break Point 가 체크되어 있다면 해당 Break Point 에서 멈추게된다. n : 한줄을 실행 시키는 명령어로써 함수가 있을경우 해당 함수를 실행시키면서 한줄을 넘어가게된다. (해당 함수 안에 들어가서는 n키를 사용하는게 .. 2022. 3. 25.
[Javascript] 2차원배열 2차원 배열이란 [ [ 1, 2, 3 ], 0 [ 4, 5, 6 ], 1 [ 7, 8, 9 ] 2 ]; 위와 같은 방식으로 배열안에 배열이 들어가있는 형식이다. 이때 주로 data[][] []를 2번 표시하여 나타내준다. 이때 첫번쨰 []는 행의 숫자를말하는 것으로 현재는 0,1,2 총 3행이있고 1행안에서 3열이 존재하는 것이다. 즉 [0,1] = 1 [0,2] = 2 [0,3] = 3 [1,1] = 4 [1,2] = 5 [1,3] = 6 [2,1] = 7 [2,2] = 8 [2,3] = 9 가된다. 위와 같이 주로 2차원 배열의 경우 forEach문을 2개 사용하여 만들며, 첫번쨰로 선언한 data 배열안에 rowData 배열을 넣어준후에 rowData에 0을 넣어주고 있다. 이때 4번 4번씩 반복되.. 2022. 3. 25.
[Linux/C] 함수 포인터 우선 말하고 싶은 것은 함수도 결국 메모리에 저장되고, 저장된 메모리 주소를 함수명으로 저장한다고 말할 수 있다. 아래의 실행결과와 코드를 보면 우선 함수 포인터 *fp를 선언하였고 (반환형 void, 매개변수 없는) 해당 함수포인터에 test함수의 주소를 저장하였다. 이떄 fp,test의 주소와 데이터를 확인해보자 test함수가 저장되어 있는 메모리주소의 시작점이 -472358470이 나왔고, 함수형 포인터에 저장되어 있는 값또한 -472358470이 나왔다. 즉 함수형 포인터 안에, 이미 선언되어있는 test함수의 시작 주소가 저장되었고 fp포인터 자체의 메모리 주소는 2084418384가 나온것을 확인 할 수있다.(배열과 동일하게 함수의 값과 포인터 값을 동일 test, *test값이 동일했다.) .. 2022. 3. 24.
[Linux/C] 포인터 리눅스의 꽃 포인터 int * char * float * double * short * 를 sizeof 하여 보면 8byte가 나오게 되는데 이것은 컴퓨터 구조에 영향이 있다. 32bit 컴퓨터는 포인터가 4byte이다. 32bit 컴퓨터는 램을 4기가 이상 못 꼽는다. 각 주소번지마다 1:1 매칭이되야함 (랜덤엑세스) 왜다 8byte로 나오냐 ? --> 결국 포인터에 저장되는것은 메모리 주소 값이 저장된다. 64비트 컴퓨터의 경우는 8바이트의 주소값이 나오게 되므로 해당 주소를 수용할 수 있는 8byte가 나오게된다. 해당 내용의 결과값을 가지고 그림으로 설명해보자. 그림을 말로 설명해보자 가장먼저 int a= 3; 을 통해서 메모리 주소를 a로 정의하고 해당 주소에 3을 대입하였다 printf("a .. 2022. 3. 23.