728x90
반응형

1. number 타입 mask

  • - : 음수기호만 입력 가능
  • + : 양수기호만 입력 가능
  • ! : +, - 기호를 제외한 숫자만 입력 가능
  • # : 모든 10진수 숫자 (0-9)
  • 9 : 모든 10진수 숫자 (0-9)
  • 0 : 모든 10진수 숫자 (0-9)(값이 없을 경우 0으로 설정)
  • . : 소숫점 자릿수
  • , : 콤마 표시 여부 (Text에서만 나타남)

//숫자만 입력
Action
-edittype: masknumber //그리드일 경우
-mask: !0.000
-type: number

//천단위 콤마
Action
-edittype: masknumber //그리드일 경우
-mask: #,###
-type: number


*참고
- 마스크 문자에 ',' 가 표시되는 경우 ','의 위치에 관계 없이 정수부 자릿수의 3자리마다 ','가 나타납니다.
- 마스크를 입력 하지 않은 경우, 정수부 및 소수부 자릿수에 제한이 없지만, mask를 입력하면 정수부는 자릿수 제한이 없고 소수부는 자릿수가 제한됩니다.





2. string 타입 mask

  • @ : 모든 Ascii 문자(한글 등 다국언어 불가)
  • # : 모든 10진수 숫자(0-9)
  • * : 모든 알파벳 문자(a-zA-Z)
  • 9 : 모든 알파벳, 숫자(a-zA-Z0-9)
  • A : 대문자 알파벳(A-Z)
  • a : 소문자 알파벳(a-z)
  • Z : 대문자 알파벳, 숫자(A-Z0-9)
  • z : 소문자 알파벳, 숫자(a-z0-9)

//주민등록번호 뒷자리 안 보이게 처리
Action
-mask: ######-{#######}
-type: string



728x90
반응형
728x90
반응형

3. 복합형

  • 여러 종류 및 개수의 데이터를 저장하기 위해 사용자가 직접 정의하는 자료형
  • 레코드: 다양한 자료형을 가진 데이터들을 한 번에 저장(테이블의 행과 유사)
  • 컬렉션: 동일한 자료형을 가진 데이터를 여러 개 저장(테이블의 열과 유사, like 배열)



레코드

DECLARE
  TYPE rec_emp IS RECORD(
        name VARCHAR2(200)
       ,salary emp%TYPE
       ,dept_code emp%TYPE
  )
BEGIN
  rec_emp.name := ‘이동욱‘;
  rec_emp.salary := 3000000;
  rec_emp.dept_code := ‘10000678’;
  
  —-레코드를 사용한 INSERT
  INSERT INTO emp
  VALUES rec_emp;
  
  
  rec_emp.salary := 5500000;
  rec_emp.dept_code := ‘10000999’;
  
  —-레코드를 사용한 UPDATE
  UPDATE emp
  SET ROW = rec_emp
  WHERE name = ‘이동욱’
  ;
END
;



컬렉션

  • 특정 자료형의 데이터를 여러 개 저장하는 복합 자려향
  • 종류: *연관 배열, 중첩 테이블, VARRAY

*연관 배열

TYPE 연관배열명 IS TABLE OF 연관배열자료형[NOT NULL] —참조 자료형 사용 가능
INDEX BY 인덱스자료형;
  • 인덱스(key)와 값(value)으로 구성되는 컬렉션
  • 중복되지 않은 유일한 키를 통해 값을 저장하고 불러오는 방식
  • 인덱스는 1부터 시작
  • 사용 빈도가 제일 높은 컬렉션
DECLARE
  idx NUMBER(10) := 0;
  
  TYPE itab_lang IS TABLE OF VARCHAR2(200)
  INDEX BY PLS_INTEGER;
  arr_lang itab_lang;
  
  —-참조 자료형 연관 배열 생성
  TYPE itab_emp IS TABLE OF emp%ROWTYPE
  INDEX BY PLS_INTEGER;
  arr_emp itab_emp;
  
BEGIN
  arr_lang(1) := ‘java’;
  arr_lang(2) := ‘javaScript’;
  arr_lang(3) := ‘sql’;
  arr_lang(4) := ‘python’;
  
  —-LOOP문으로 arr_lang 출력
  LOOP
    idx := idx + 1;
    IF idx > arr_lang.COUNT THEN EXIT;
    END IF;
    dbms_output.put_line(arr_lang(idx));
  END LOOP;

  —-FOR LOOP문으로 arr_lang 출력
  FOR i IN arr_lang.FIRST..arr_lang.LAST LOOP
    dbms_output.put_line(arr_lang(i));
  END LOOP;
  
  idx := 0;
  —-FOR LOOP 응용
  FOR i IN (SELECT * FROM emp) LOOP
    idx := idx + 1;
    arr_emp(idx) := i;
    —-emp 테이블 전체 직원명 출력
    dbms_output.put_line(arr_emp(idx).name);
  END LOOP;

  —-컬렉션을 사용한 INSERT
  INSERT INTO emp2
  VALUES arr_emp(idx)
  ;
END
;



728x90
반응형
728x90
반응형

변수의 자료형

  • 스칼라형(scalar)
  • 참조형(reference)
  • 복합형(composite)
  • LOB(LargeOBject)



1. 스칼라형

  • 오라클에서 기본으로 정의 해놓은 자료향
  • 내부 구성 요소가 없는 단일 값을 의미
  • NUMBER, CHAR, VARCHAR2, DATE, BOOLEAN


2. 참조형

  • 오라클 데이터베이스에 존재하는 특정 테이블 열의 자료형나 하나의 행 구조을 참조하는 자료형
  • %TYPE(열 참조), %ROWTYPE(행 참조)


  —-상수
  PI CONSTANT NUMBER(10) := 3.14;
  
  —-스칼라형
  test1 VARCHAR2(9);
  test2 NUMBER(10) DEFAULT 1; 
  test3 NUMBER(10) NOT NULL := 100;
  —-*NOT NULL 키워드를 사용한 변수는 반드시 선언과 동시에 특정 값을 지정해야 함

  —-참조형
  test4 emp.name%TYPE;
  test5 emp%ROWTYPE;
728x90
반응형
728x90
반응형

1. 조건문

  • IF
  • CASE
DECLARE
  person emp%ROWTYPE;
BEGIN
  SELECT * 
  INTO person
  FROM emp
  WHERE yyyy = ‘2022’
  AND dept_code = ‘04001000’
  AND name = ‘에이다 러블레이스‘
  ;
  
  
—-IF조건문
  IF person.name = ‘에이다 러블레이스’;
    THEN dbms_output.put_line(‘세계 최초의 프로그래머입니다.’);
  ELSIF person.name = ‘제임스 고슬링’;
    THEN dbms_output.put_line(‘최초로 JAVA를 개발하였습니다.’);
  ELSE
    dbms_output.put_line(‘정보가 없습니다.’);
  END IF;
  
—-단순CASE조건문
  CASE person.name
    WHEN ‘에이다 러블레이스‘ THEN dbms_output.put_line(‘세계 최초의 프로그래머입니다.’);
    WHEN ‘제임스 고슬링‘ THEN dbms_output.put_line(‘최초로 JAVA를 개발하였습니다.’);
  ELSE
    dbms_output.put_line(‘정보가 없습니다.’);
  END CASE;

—-검색CASE조건문
  CASE
    WHEN person.salary < 3000000 THEN dbms_output.put_line(‘기본급이 300만원 미만입니다.’);
  ELSE
    dbms_output.put_line(‘기본급이 300만원 이상입니다.’);
  END CASE;





2. 반복문

  • LOOP: 기본 반복문
  • WHILE LOOP: 특정 조건식의 결과를 통해 반복 수행
  • FOR LOOP: 반복 횟수를 정하여 반복 수행
  • CURSOR FOR LOOP: 커서를 활용한 반복 수행


*반복 수행을 중단 시키거나 특정 반복 주기를 건너뛰는 명령어

  • EXIT: 수행 중인 반복 종료
  • EXIT WHEN: 반복 종료를 위한 조건식을 지정하고 만족하면 반복 종료
  • CONTINUE: 수행 중인 반복의 현재 주기를 건너뜀
  • CONTINUE WHEN: 특정 조건힉을 지정하고 조건식을 만족하면 현재 반복 주기를 건너뜀
DECLARE
  num NUMBER(10) DEFAULT 1;
  total NUMBER(10) DEFAULT 0;
  v_emp emp%ROWTYPE;
  
  CURSOR c_emp IS
  SELECT *
  INTO v_emp
  FROM emp
  WHERE yyyy = ‘2022’
  AND dept_code = 04001000’
  ;
BEGIN
  —-기본LOOP(1부터 10까지 합산값 구하기)
  LOOP
    total := total + num;
    num := num + 1;
    IF num > 10 THEN EXIT;
    END IF;
  END LOOP;
  
  total := 0;
  num := 1;
  —-WHILE LOOP
  —-반복 수행 전에 조건식을 검사하기 때문에 조건식 결과 값에 따라 단 한 번도 반복 수행 되지 않을 수도 있음!
  WHILE num < 11 LOOP
    total := total + num;
    num := num + 1;
  END LOOP;
  
  total := 0;
  —-FOR LOOP
  FOR i IN 1..10 LOOP
    total := total + i;
    CONTINUE WHEN MOD(i, 2) = 0;
    dbms_output.put_line(‘i: ‘||i);
  END LOOP;
  
  —-CURSOR FOR LOOP(커서 출력)
  FOR i IN c_emp LOOP
    dbms_output.put_line(‘이름: ‘||i.name||’, 기본급: ’||i.salary);
  END LOOP;
END
;



728x90
반응형
728x90
반응형

1. cmd 창에서 명령어 SET 실행

2. 출력 결과 중, Path란에서 오라클 설치(ORACLE_HOME) 경로 확인
*ORACLE_HOME은 가변적인 경로


tnsnames.ora

-데이터베이스 주소를 정의해놓은 파일
-해당 파일이 있으면 IP주소와 SID 혹은 Service Name을 직접 입력하지 않고도 DB 연결 가능
-(고정)경로: ORACLE_HOME\network\admin\tnsnames.ora



sqlplus 계정명/패스워드@tnsnames.ora에 설정한 DB alias명


728x90
반응형
728x90
반응형

 

1. 현재 라즈베리파이 ip 주소 확인

무선(wlan0)과 유선(eth0) 주소가 다른데 무선의 경우 wlan0에 inet 주소를 확인!

 

 

2. /etc/dhcpcd.conf 파일 수정

#/etc/dhcpcd.config 파일 수정
sudo vi /etc/dhcpcd.conf

 

interface wlan0

static ip_address="ip주소 입력"

static routers="ip주소의 끝부분만 1로 바꿔서 입력"

 

위 내용을 해당 파일 맨 아래 쪽에 추가해주면 됨

 

 

 

 

3. 재시작

#networking service 재시작
sudo /etc/init.d/networking restart

#라즈베리파이 재시작
sudo reboot

 

 

 

 

728x90
반응형
728x90
반응형

1. 라즈베리파이에 들어있던 다양한 프로그램과 라이브러리를 최신 버전으로 업그레이드

#미리 정해져 있는 레파지토리 또는 저장소 서버로부터 최신 패키지 리스트를 받아옴
sudo apt update

#시스템 업그레이드(패키지의 의존성까지 고려해서 업그레이드 수행)
sudo apt full-updgrade

#설치 후 재부팅
sudo reboot

 

 

 

2. 라즈베리파이 운영체제의 전체적인 설정 변경

Preferences > Raspberry Pi Configuration
-System 탭: 암호 또는 호스트네임 변경, 부팅 후 시작화면 설정
-Performance 탭: GPU 메모리 변경

 

 

 

3. OS 한글 깨짐 해결 방법

#한글 입력을 위한 패키지 설치
sudo apt install ibus ibus-hangul

#한글이 정상적으로 출력되도록 한글 폰트 설치
sudo apt install fonts-nanum fonts-unfonts-core

#설치 후 재부팅
sudo reboot

 

+ 한글 입력이 안 될 경우

우측 상단의 입력기 아이콘 클릭 후, [한국어-korean] 말고 [한국어-hangul] 로 변경

 

 

 

 

 

https://www.youtube.com/watch?v=nxeFKr63yC4

728x90
반응형
728x90
반응형

1. 라즈베리파이 4에 anydesk 설치

 

#anydesk 데비안 패키지 다운로드
wget https://download.anydesk.com/rpi/anydesk_6.1.1-1_armhf.deb

#다운로드 받은 패키지 설치
sudo dpkg -i anydesk_6.1.1-1_armhf.deb

 
→ 오류 발생
dpkg: dependency problems prevent configuration of anydesk: armhf:
anydesk: armhf 패키지는 다음 패키지에 의존: libminizip1. 
 
위와 같은 내용의 오류 발생할 때는 추가 패키지를 설치해주고 재설치 진행
 
 

#추가 패키지 설치
sudo apt-get install libminizip1 libegl1-mesa

→ 오류 발생
이 상황을 바로잡으려면 'apt --fix-broken install'을 실행해야 할 수도 있습니다.
다음 패키지의 의존성이 맞지 않습니다: anydesk:armhf : 의존: libminzip1:armhf 하지만 %s 패키지를 설치하지 않을 것입니다.
 
추가 패키지 설치 중 오류 발생해서 오류 메세지에 있는 명령어(apt --fix-broken install) 실행하고 추가 패키지 재설치 진행
 
 
 
 
 
 

2. anydesk 실행

#anydesk 실행
anydesk

→ 오류 발생
anydesk: error while loading shared libraries: libbrcmGLESv2.so: cannot open shared object file: No such file or directory
 
 

#추가 패키지 설치 및 소프트 링크를 만들어줌
sudo apt-get install libegl1-mesa libegl1-mesa-dev mesa-common-dev libgles2-mesa libgles2-mesa-dev
sudo ln -s /usr/lib/arm-linux-gnueabihf/libGLESv2.so /usr/lib/libbrcmGLESv2.so
sudo ln -s /usr/lib/arm-linux-gnueabihf/libEGL.so /usr/lib/libbrcmEGL.so

추가 패키지 설치 후 재실행
 
 

#추가 설치
sudo dpkg --add-architecture armhf
sudo apt install libpolkit-gobject-1-0:armhf libraspberrypi0:armhf libraspberrypi-dev:armhf libraspberrypi-bin:armhf libgles-dev:armhf libegl-dev:armhf


나같은 경우엔 또 같은 에러가 발생해서 추가로 더 설치함(Raspbian 64 aarch64에 anydesk armhf를 설치하는데 필요한 거 같음)


설치 후, anydesk 재실행해보니까 정상적으로 실행되고 원격 접속도 잘 됨


 
 
 
 
 
 

라즈베리 파이(Raspberry Pi) 4 Model B에 AnyDesk 설치
https://remnant24c.tistory.com/330
Installing AnyDesk to the Raspberry Pi
https://pimylifeup.com/raspberry-pi-anydesk/
anydesk: error while loading shared libraries libbrcmglesv2.so
https://raspberrypi.stackexchange.com/questions/116996/anydesk-error-while-loading-shared-libraries-libbrcmglesv2-so/137566#137566

728x90
반응형
728x90
반응형

오라클 데이터 딕셔너리(Data Dictionary)

  • 오라클 데이터베이스 운영과 연관된 중요한 정보를 제공하는 읽기 전용 시스템 테이블
  • 뷰의 집합으로 일반 사용자가 직접 수정하는 것은 불가능하며 오라클 서버가 스스로 관리하는 영역(소유자: SYS)

 

모든 스키마 오브젝트(테이블, 인덱스, 뷰, 시퀀스, 동의어, DB링크, PL/SQL 함수나 프로시저)의 정의와 이 오브젝트에 대해 얼마나 많은 저장공간을 사용하는지, 칼럼의 기본값은 무엇이고 제약조건은 어떤 것들이 있는지, 오라클 사용자의 이름, DB에 생성된 권한과 롤 등이 어떻게 부여 되었는지, 객체접근 및 수정에 따른 시스템 감사정보, 데이터베이스 생성시각, 이름, 운영모드, 인스턴스의 이름 등과 같이 DB운영에 필요한 중요한 정보들이 기록된다.

오라클은 사용자 정보 및 관련 스키마 오브젝트와 저장구조등에 접근하기 위해 데이터 딕셔너리를 접근하고 사용자가 실행하는 DDL(Data Definition Language)에 맞추어 데이터 딕셔너리를 갱신하고 모든 오라클 사용자는 이러한 정보를 읽기 전용 뷰를 통해 참조할 수 있다.





▪️접두어에 따른 데이터 딕셔너리 분류

 Prefix  Access Scope
USER_ 현재 로그인한 계정이 생성한 모든 객체에 대한 정보
ALL_ 현재 로그인한 계정으로 접근 가능한 모든 객체에 대한 정보
DBA_ 데이터베이스 내 모든 객체에 대한 정보





예시

—-데이터베이스 사용자가 접근 가능한 딕셔너리뷰를 나열
SELECT *
FROM DICTIONARY
;

—-모든 프로시저, 함수, 패키지 소스가 text 컬럼에 담겨있음
SELECT *
FROM DBA_SOURCE
;

—-모든 테이블, 뷰, 프로시저 등의 정보
SELECT *
FROM DBA_OBJECTS
;

—-모든 테이블과 뷰에 지정된 comment 정보
SELECT *
FROM DBA_TAB_COMMENTS
;

—-모든 테이블과 뷰의 컬럼과 지정된 comment 정보
SELECT *
FROM DBA_TAB_COMMENTS
;








참조
http://www.ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=636

728x90
반응형
728x90
반응형

💡리눅스에서 파일이나 디렉터리를 사용해 할 수 있는 작업은 크게 세 가지로 나뉘는데 이 작업에 대한 권한을 파일(디렉터리)마다 사용자에 따라 지정


작업 사용자
1. 읽기(read)
2. *쓰기(write)
3. 실행(execute)
1. 사용자(user)
2. 그룹(group)
3. 기타(others)
4. 모든 사용자(a=u+g+o)


*파일에 부여되는 쓰기(w) 권한

  • 파일 내용을 수정할 수 있는 권한
  • 파일 생성, 삭제, 이동 등에 대한 권한은 파일이 아니라 상위 디렉터리에 쓰기(w) 권한이 부여되어 있어야 함

 

*디렉터리에 부여되는 쓰기(w) 권한

  • 디렉터리 내부에 파일을 생성, 삭제, 이동이 가능한 권한




▪️ls -l

  • 파일이나 디렉터리에 지정된 권한이나 파일 소유자와 그룹을 확인
  • 현재 디렉터리 내 파일 리스트(ls=list)가 하나의 파일 단위로 한 줄로 길게(-l=long) 출력

 

 

  • 첫번째 필드: 사용자 별 권한
 d  r  w  x  r  -  x r  - x
*파일유형 사용자 그룹 기타


*파일 유형

일반 파일 -
디렉터리 d
특수 파일 블록 파일 b
입출력 파일 c
심볼릭 링크 파일 l
파이프 p
소켓 s

 

  • 세번째 필드: 파일 소유자명
  • 네번째 필드: 그룹명




✅ chmod(Change Mode)

  • 파일이나 디렉터리의 *모드를 변경(파일이나 디렉터리의 권한 변경)
chmod [옵션] [모드] [파일 및 디렉터]

 

*모드(mode)

  • 사용자(u, g, o, a) 별 권한(r, w, x)에 대한 설정값을 숫자모드와 기호모드로 표현

 

기호모드
사용자 작업 *연산자
u g o a r w x - + - =
숫자모드
  4 2 1    


*연산자

  • 허가권 부여: +
  • 허가권 제거: -
  • 허가권 지정(기존 속성값은 사라짐): =

 

▪️ 옵션

옵션 의미
-R 경로와 그 하위 파일들을 모두 변경



✅ 예시

#test.txt 파일에 소유자만 읽기,쓰기 권한이 부여된 상태에서 
#소유자에게 실행 권한을 부여하고 그룹과 기타 사용자에게 쓰기 권한 부여
chmod u+x,go+w test.txt
chmod 722 test.txt

#myDir 디렉터리와 하위 파일과 디렉터리 대상으로 기타 사용자에게 쓰기 권한 부여
chmod -R o+w myDir





728x90
반응형

+ Recent posts