반응형

INTERSECT

 INTERSECT는 교집합을 의미한다. 사용 예와 결과 예는 아래와 같다.


사용 예

1
2
3
4
5
6
7
SELECT subject
FROM timetable
WHERE name='철수'
INTERSECT
SELECT subject
FROM timetable
WHERE name='영희';
cs


결과 예

1
2
3
4
subject
--------
국어
영어 
cs




MINUS

 MINUS는 차집합을 의미한다. 먼저 위치한 SELECT문을 기준으로, 다른 SELECT문과 공통된 레코드를 제외한 항목만 추출된다. 사용 예와 결과 예는 아래와 같다.


사용 예

1
2
3
4
5
6
7
SELECT subject
FROM timetable
WHERE name='철수'
MINUS
SELECT subject
FROM timetable
WHERE name='영희';
cs


결과 예

1
2
3
subject
--------
수학 
cs



출처: http://preamtree.tistory.com/45 [Preamtree의 행복로그]

반응형
반응형

업무를 진행하다 보면 Json 형태의 데이터를 생성하여 전송하거나, 받는 경우가 종종 발생 한다.


json 형태의 데이터는 일일히 문자열로 쭉 나열하여 규칙대로 만들수도 있지만, 구조가 복잡해 지거나 데이터 양이 많을경우 사람이 일일이 만들기에는 좀 힘들다.


그래서 보통은 Java/JSP나 ASP 등과 같이 서버사이드 측에서 json을 쉽게 생성하여 HTML, Javascript 쪽에서 사용한다.



오늘은 서버사이드측이 아닌 javascript로 json 형태의 데이터를 생성하는 방법이다. 워낙 간단하니 아래 예제를 보면 쉽게 이해 할 수 

자바스크립트 내장객체인 JSON.stringfy를 이용하면 생성된 Json 객체를 String으로 변환할 수 있다.


<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script type="text/javascript">
 
     
    $(function() {
         
        // 리스트 생성
        var testList = new Array() ;
         
 
        for(var i=1; i<=2; i++){
             
            // 객체 생성
            var data = new Object() ;
             
            data.number = i ;
            data.name = "Tester #" + i ;
             
             
            // 리스트에 생성된 객체 삽입
            testList.push(data) ;
        }
         
        // String 형태로 변환
        var jsonData = JSON.stringify(testList) ;
         
        alert(jsonData) ;
         
        /*
            출력결과 : [{"number":1,"name":"Tester #1"},{"number":2,"name":"Tester #2"}]
        */
         
    });
     
 
</script>



출처: http://fruitdev.tistory.com/190?category=568934 [과일가게 개발자]

반응형
반응형

웹 개발을 하다보면 의도하지 브라우저 캐시로 인하여 수정내용이 반영이 되지 않을때가 종종 있다.
이럴때는 해당 페이지를 몇번 새로고침하면 수정된 내용으로 나오긴 하지만, 사실 중요한 부분에서 캐쉬가 남아 
의도하지 않은 부분이 사용자에게 노출되면 때론 곤란해질수도 있다.


이미지 같은 정적파일들은 캐쉬로 보관되어 있으면 사이트 로딩등이 빨라지는 장점도 있지만, 

어떠한 액션이 있어야 하는 중요한 동적 페이지에서는 오히려 잘못된 결과를 초래하기도 한다.

캐쉬를 사용하지 않겠다고 하는 선언은 JSP 등과 같은 서버 사이드 언어나, html에 메타태그를 넣어 쉽게 적용이 가능하다.



- JSP의 경우 페이지 상단에 아래 구문을 넣으면 캐쉬가 적용되지 않는다.

<%
 response.setHeader("Cache-Control","no-cache");
 response.setHeader("Pragma","no-cache");
 response.setDateHeader("Expires",0);
%>



- HTML의 경우 아래 구문을 <head> 태그 사이에 넣어주면 된다.

<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>
<meta http-equiv="Pragma" content="no-cache"/>



출처: http://fruitdev.tistory.com/103 [과일가게 개발자]

반응형
반응형

UNION ALL 쿼리 예

중복된 행이 발견되는 경우 결과에 이런 행을 유지해야 하므로, 다음 예제에서는 UNION ALL 연산자를 사용합니다. 이벤트 ID의 특정 시리즈에 대해, 쿼리는 각 이벤트와 관련된 각각의 판매에 대해 0개 이상의 행을 반환하고 그 이벤트의 각 목록에 대해 0개 또는 1개의 행을 반환합니다. 이벤트 ID는 LISTING 및 EVENT 테이블에서 각각의 행에 고유하지만, SALES 테이블에서 이벤트 및 목록 ID의 동일한 조합에 대해 여러 개의 판매 건이 있을 수 있습니다.

결과 집합의 세 번째 열은 행의 원본을 식별합니다. 행의 출처가 SALES 테이블인 경우 SALESROW 열에 "YES"로 표시됩니다. (SALESROW는 SALES.LISTID의 별칭입니다.) 행의 출처가 LISTING 테이블인 경우 SALESROW 열에 "No"로 표시됩니다.

이 경우, 결과 집합은 목록 500, 이벤트 7787에 대해 3개의 판매 행으로 구성됩니다. 즉, 이 목록 및 이벤트 조합에 대해 3가지 다른 트랜잭션이 발생했습니다. 다른 두 목록 501 및 502에서는 어떤 판매도 생성되지 않았으므로, 쿼리가 이들 목록 ID에 대해 생성하는 유일한 행의 출처는 LISTING 테이블입니다(SALESROW = 'No').

select eventid, listid, 'Yes' as salesrow from sales where listid in(500,501,502) union all select eventid, listid, 'No' from listing where listid in(500,501,502) order by listid asc; eventid | listid | salesrow ---------+--------+---------- 7787 | 500 | No 7787 | 500 | Yes 7787 | 500 | Yes 7787 | 500 | Yes 6473 | 501 | No 5108 | 502 | No (6 rows)

ALL 키워드 없이 같은 쿼리를 실행하는 경우 결과에는 판매 거래 중 하나만 유지됩니다.

select eventid, listid, 'Yes' as salesrow from sales where listid in(500,501,502) union select eventid, listid, 'No' from listing where listid in(500,501,502) order by listid asc; eventid | listid | salesrow ---------+--------+---------- 7787 | 500 | No 7787 | 500 | Yes 6473 | 501 | No 5108 | 502 | No (4 rows)

출처  : https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/c_example_unionall_query.html

반응형
반응형

※ Linux 명령어

 

uname -a     버젼정보보기

pwd          현재위치보기

nl <파일>     numberline

vi -> :set nu   라인넘버보기

ls --help

mkdir -p <디렉토리/디렉토리>     하위디렉토리포함 만들기

rmdir <디렉토리>     디렉토리지우기

touch <파일>     파일만들기 또는 현재날자로 수정

clear         화면지우기

cp -f <파일> <파일>      //-f:묻지않음, -r:하위디렉토리포함

rm -rf <디렉토리>     디렉토리지우기

mv <디렉토리> .      이동

ln <파일1> <파일2>     hardlink 2->1

ln -s <파일1> <파일2> softlink 2->1

echo $PATH      PATH보기

PATH=$PATH:\root/디렉토리     path추가

who am I     내정보보기

cat -n <파일>     라인번호

more, less      b: back, /단어: 검색

cat file1 > file2     redirection 표준출력

cat file1 >> file2     Append 추가

rpm -qa | grep <파일>     현재컴퓨터에 설치된 프로그램중 <파일>만출력

cal 월 년 | mail 주소     달력출력후 메일로 보내기

ps -ef | grep <파일>     실행중 프로세스중 <파일>만 출력

wc <파일>     라인 단어 문자 파일명

rpm -qa | wc -l     개수

bc     계산기

alias     별칭보기(ls -al == ll)

alias c='clear'     추가

history     !번호

useradd <계정>     계정추가

passwd <계정>      비밀번호

ps1='[\d  \t  \!] [\w]  \n  \\$'

    날짜 시간 명령어번호 현재경로 새로운라인

.bashrc     초기설정값저장, alias, ps1입력해서 전역변수화, 다음로그인시 설정값저장


ftp <주소>

ftp> pwd: server경로,     !pwd: client경로, !ls

ftp>get <파일>    다운로드

ftp>mget <*>    여러파일 다운로드

ftp>? <명령어>     설명

ftp>bye     끝

ftp>put <파일>     업로드

ftp>mput <a*>     여러파일 업로드

ftp>prompt      Interactive mode off/on


chsh -l     내시스템이 사용중인 쉘종류

cat -n /etc/shells

echo $SHELL     현재사용중인 쉘

env     환경변수 보기

chsh     /bin/ash(쉘종류)     shell change

gzip -1v <파일>     숫자클수록 압축률상승 속도저하

gunzip <파일>     파일명.gz 압축하기

tar xvfz <파일.tar.gz>     풀기


mount     현재마운트된 상태

df -h     파티션정보, 마운트정보

mount -t ext3 </dev/hda8> </apm>

mount -t iso9660 /dev/cdrom /mnt/cdrom/        cdrom마운트

umount </apm>

mkfs -t ext3 </dev/hda8>     파티션포멧

/etc/fstab     filesystem정보담긴 파일

/etc/inittab     runlevel 설정파일

  id:5:initdefault:     3:일반텍스트모드, 5:xwindow모드부팅

/etc/grub.conf     groub설정파일

vi -> se nu     번호붙이기


※ Kernel Compile

1. 커널 다운로드후 /usr/src  이동후 압축해제

2. /linux 이동

3. make mrproper     커널환경초기화

4. make xconfig/menuconfig

5. make dep     의존성 구축

6. make clean    필요없는 모듈제거

7. make bzImage     새로운 커널 이미지마듬

8. make modules

9. make modules_install

10. arch/i386/boot/bzImage  -> /boot로 이동

11. grub에서 설정


rpm -qa | grep ftp | wc -l

rpm -e --nodeps  <package name> 의존성무시 강제삭제

rpm -ivh <package name>   설치

rpm -Uvh     업그레이드

(core 먼저설치, standalone 나중설치)

 

/proc    시스템정보   meminfo, cpuinfo, swaps, interrupts, IRQ정보

top    현재 프로세스 사용상태 실시간

ps -A   실행중 프로세스     -ef 자세히

pstree

killall <프로세스이름>   프로세스 죽이기


useradd <계정>

passwd <계정>

/etc/passwd

/etc/shadow

finger <계정>   정보보기

chfn <계정>    정보수정

usermod -s(쉘변경) /bin/zsh(쉘위치) <계정> ;   -g(그룹변경) <그룹명> <계정>

userdel -r <계정>     homedirectory삭제

/etc/group

groupadd <그룹명>

/etc/default/useradd     홈디렉토리변경가능

useradd -G <그룹> <계정>

groups <계정>     이계정의 소속그룹 확인

chgrp <그룹명> <디렉토리>     디렉토리 소유그룹을 <그룹명>으로 변경

chown <계정명> <파일명>

chown <계정.그룹> <파일> 계정,그룹동시변경 가능

chmod 777 <파일>   r:4, w:2, x:1

 

gcc -o <만들파일이름> <소스파일.c>

./configure   (--prefix=/디렉토리)   (기본=/usr/local)

make   컴파일

make clean   에러발생시

make install

 

shutdown -h now   (-r: reboot)


host -l <domain name>   그 도메인의 IP주소출력

traceroute microsoft.com

 

find / -name "filename"    (-perm, -user)

find . -name "*.txt" | xargs grep [-option] hello   -> hello문자열을 포함한 파일 찾기

[option]

-l: 파일리스트만 보여주기, -i: 찾는 문자열 대소문자 구분하지 않기, -r: find쓰지 않고 특정디렉토리 이하 모두 검색

 

which <명령어>

whereis <명령어>

 

/var/log/dmesg     ->커널이 부팅시 하드웨어 검색하는 메세지

/var/log/messages   ->커널과 시스템에 관련된 로그 메세지

 

service networ [옵션]

redhat-config-network

ifconfig

vi /etc/sysconfig/network     기본 호스트에 대한 정보

vi /etc/sysconfig/network-scripts/ifcfg-eth0     이더넷카드설정

vi /etc/resolv.conf          DNS설정

 

/etc/init.d/network restart   (또는 /etc/rc.d/init.d/network)   네트워크재시작




반응형
반응형


현재 디렉토리에서, pl 확장자를 가진 모든 파일 찾기

find -name '*.pl'


(현재 디렉토리 밑의 하위 디렉토리까지 다 찾습니다.)


루트에서부터, 즉 전체 하드에서, pl 확장자를 가진 모든 파일 찾기

find / -name '*.pl'




전체 하드 디스크에서, 파일명이 ab 로 시작하는 모든 파일 찾기

find / -name 'ab*'




전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기

find / -name '.bash*'




전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
+ ls 명령 형식으로 출력

find / -name '.bash*' -ls


뒤에 -ls 라는 옵션을 붙이면 됩니다.




디렉토리명 찾기


전체 하드 디스크에서, 디렉토리 이름이 et 로 시작하는 모든 디렉토리 찾기

find / -name 'et*' -type d



주의! 옵션 순서를 바꾸면 에러가 납니다.




반응형

'프로그램 관련 > Linux(리눅스)' 카테고리의 다른 글

linux find 파일찾기  (0) 2018.08.22
리눅스 명령어모음!!!  (0) 2018.08.22
LINUX 파일만들기, 파일옮기기,이동,복사하기  (0) 2018.08.22
UBUNTU APT 패키지 삭제  (0) 2018.08.22
LINUX HDD MOUNT 하기  (0) 2018.08.22
반응형

mv

mv는 이름변경 및 이동을 담당하는 명령어이다.

 

형식) mv 원본파일 대상파일

 

예를들어 test.txt 라는 파일이 있다고 치고 나는 /home 디렉토리로 옮기고싶다.

하면 mv test.txt /home 이런식으로 적으면 test.txt 파일이 /home 디렉토리로 이동하게 된다.

( 물론 원래 현재 디렉토리에 있던 test.txt은 없어지게 된다. ) 

 

만약에 mv test.txt test1.txt 라고 하면,

test1.txt 라는 파일은 원래 없기때문에 자연스럽게 test.txt란 파일은 사라지고 test1.txt로 남게된다.

즉, 이름 변경이 가능하다는 뜻이다.

 

 

cp

 

cp는 파일이나 디렉토리를 다른 파일 또는 다른 디렉토리로 복사(Copy)를 수행한다.

 

형식) cp 원본파일 대상파일

 

예를들어 test.txt 라는 파일이 있다고 치고 /home 디렉토리에 복사해서 내용이 같은 파일을

복사하고 싶다면 cp test.txt /home 이런식으로 적으면 test.txt 파일은 그대로 있되

/home 디렉토리에도 또다른 test.txt 파일이 내용똑같은 상태에서 저장하게 된다.

 

또는 cp test.txt test2.txt 이런식으로 하면 test.txt 내용이 똑같이 복사된 test2.txt를

생성하게 된다.

 

옵션)

-a : 원본 파일의 속성, 링크 파일 정보를 유지하며 복사

-b : 파일이 존재할 경우 기존 파일을 백업

-d : 복사할 원본이 심볼릭 링크일 때 심볼릭 링크 자체를 복사

-f : 복사할 대상이 있으면 강제로 지우고 복사

-i : 복사할 대상이 있으면 강제로 지우고 복사

-r : 디렉토리 복사할 때 사용

-v : 복사 과정 자세히 출력

-u : 복사할 대상의 변경 날짜가 같거나 더 최근 것이면 복사하지 않음

 

옵션 예 ) cp -r 디렉토리명1 디렉토리명2

 

 

자, 그럼 실습을 통해 이해하기 쉽게 알아보자.

 

 

 

mv 명령 실습

 

 

 

 

 

cp 명령 실습

 

 

 

 

내용 저장시 당연히 콜론상태에서 wq 해줘야하는거 잊지않기

 

옵션을 이용해서 응용해 스스로 실습하는 시간을 가져보길 바란다.




반응형

'프로그램 관련 > Linux(리눅스)' 카테고리의 다른 글

리눅스 명령어모음!!!  (0) 2018.08.22
리눅스 파일 찾기 (파일명 검색)  (0) 2018.08.22
UBUNTU APT 패키지 삭제  (0) 2018.08.22
LINUX HDD MOUNT 하기  (0) 2018.08.22
UBUNTU POSTGRESQL PASSWORD변경  (0) 2018.08.22
반응형

우분투(Ubuntu)에서 패키지를 관리하는 명령어가 몇가지 있습니다. 그 중 가장 기본이 되는 것이 apt-get입니다. 많은 옵션이 있는데, 자주 쓰는 몇가지를 정리해보겠습니다.

apt-get update

패키지 목록을 갱신합니다.

apt-get upgrade

모든 패키지를 최신 버전으로 업그레이드합니다.

apt-get install abc

abc 패키지를 설치합니다.

apt-get remove abc

abc 패키지를 삭제합니다. 설정파일은 삭제하지 않습니다.

apt-get purge abc

abc 패키지를 삭제합니다. remove와 다르게 설정파일도 삭제합니다.

참고로 패키지 검색은 apt-cache로 합니다. abc라는 단어를 포함한 패키지를 검색하려면 

apt-cache search abc

와 같이 하면 됩니다.

apt-get 명령어의 사용법과 옵션은

apt-get -h

으로 알아낼 수 있습니다. 결과는 다음과 같습니다.

apt 0.8.16~exp12ubuntu10.12 for i386 compiled on Jul 16 2013 18:00:58
Usage: apt-get [options] command
       apt-get [options] install|remove pkg1 [pkg2 ...]
       apt-get [options] source pkg1 [pkg2 ...]

apt-get is a simple command line interface for downloading and
installing packages. The most frequently used commands are update
and install.

Commands:
   update - Retrieve new lists of packages
   upgrade - Perform an upgrade
   install - Install new packages (pkg is libc6 not libc6.deb)
   remove - Remove packages
   autoremove - Remove automatically all unused packages
   purge - Remove packages and config files
   source - Download source archives
   build-dep - Configure build-dependencies for source packages
   dist-upgrade - Distribution upgrade, see apt-get(8)
   dselect-upgrade - Follow dselect selections
   clean - Erase downloaded archive files
   autoclean - Erase old downloaded archive files
   check - Verify that there are no broken dependencies
   changelog - Download and display the changelog for the given package
   download - Download the binary package into the current directory

Options:
  -h  This help text.
  -q  Loggable output - no progress indicator
  -qq No output except for errors
  -d  Download only - do NOT install or unpack archives
  -s  No-act. Perform ordering simulation
  -y  Assume Yes to all queries and do not prompt
  -f  Attempt to correct a system with broken dependencies in place
  -m  Attempt to continue if archives are unlocatable
  -u  Show a list of upgraded packages as well
  -b  Build the source package after fetching it
  -V  Show verbose version numbers
  -c=? Read this configuration file
  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp
See the apt-get(8), sources.list(5) and apt.conf(5) manual
pages for more information and options.
                       This APT has Super Cow Powers.



반응형
반응형

linux hdd mount 하기


디스크가 인식되었는지 확인합니다.
$ sudo fdisk -l


파티션 할당합니다.
$ sudo fdisk /dev/sdb1

m 눌러서 명령을 봅니다.

n 눌러서 파티션을 추가합니다.

p 파티션 생성

파티선 생성이 끝나면

 

w 눌러서 저장합니다.

리부팅 합니다.

파티션을 포맷합니다.  (파티션을 하나로 잡았을경우)
$ sudo mkfs.ext3 /dev/sdb1

마운트할 디렉토리를 만듭니다.
$ sudo mkdir /pub

마운트 합니다.
$ sudo mount /dev/sdb1 /pub


자동 마운트 설정을 추가합니다.
$ sudo vi /etc/fstab

다음 부분 추가합니다.
/dev/sdb1 /pub ext3 defaults,errors=remount-rw 0 1

 

 

 

 

* 요즘은 UUID로 입력한는 경우가 많습니다

 

UUID 확인

$ ls -l /dev/disk/by-uuid

 

자동 마운트 설정을 추가합니다.
$ sudo vi /etc/fstab

다음 부분 추가합니다.
UUID='UUID' /마운트할/폴더명 ext3 defaults 0 1




반응형
반응형


ubuntu Postgresql password변경


sudo -u postgres psql postgres

# \password postgres

Enter new password: 사용할 비밀번호




반응형

'프로그램 관련 > Linux(리눅스)' 카테고리의 다른 글

UBUNTU APT 패키지 삭제  (0) 2018.08.22
LINUX HDD MOUNT 하기  (0) 2018.08.22
UBUNTU JDK INSTALL  (0) 2018.08.22
Tomcat의 logging.properties 및 디렉토리설정  (0) 2018.08.22
UBUNTU TOMCAT INSTALL  (0) 2018.08.22

+ Recent posts