cbwstar의 등록된 링크

 cbwstar로 등록된 티스토리 포스트 수는 404건입니다.

오라클 클라우드 마리아db 외부 연결 방화벽 설정 [내부링크]

오라클 클라우드에서 외부접속을 하기 위해서는 방화벽을 설정 해 줘야 한다. 컴퓨터>인스턴스>인스턴스 세부정부에서 가상클라우드 네트워크 선택 보안목록 선택 수신규칙 추가 CIDR 형식으로 입력후 규칙추가 버튼을 클릭하여 규칙을 추가한다. 마리아 DB 사용자 계정에 외부 접속을 할수 있게 계정을 생성한다. #계정 생성 create user '아이디'@'%' identified by '비밀번호'; #계정 삭제 drop user '아이디'@'%' #유저 목록 확인 select user, host from mysql.user; #권한 부여 grant all privileges on *.* to '아이디'@'%'; #MariaDB 권한 적용 flush privileges; MariaDB - IP 및 PORT 설정 ..

우분투(Ubuntu) 22.04/20.04/18.04에 마리아 db 11.0 설치 하는 방법 [내부링크]

Ubuntu 22.04/20.04/18.04에 MariaDB 11.0 설치 Ubuntu 시스템에서 MariaDB 데이터베이스 인스턴스를 실행하려면 이 섹션에 제공된 단계를 따르세요. 1단계: 시스템 업데이트 우리는 항상 시스템 업데이트로 설치를 시작합니다. sudo apt update && sudo apt -y upgrade 업그레이드 후 재부팅이 필요한 경우 계속 진행하세요. [ -f /var/run/reboot-required ] && sudo reboot -f 업그레이드가 완료되면 다음 단계로 넘어갈 수 있습니다. 2단계: MariaDB APT 저장소 추가 다음으로 Ubuntu 시스템에 MariaDB 11.x를 설치하는 데 필요한 패키지가 포함된 저장소를 추가합니다. curl -LsS https:/..

검색엔진은 뭘까? 이효리 팬으로서 이효리를 검색해 볼까? [내부링크]

내용은 없다. 그냥 검색엔진 상위에 어떻게 하면 노출 되는지 확안해 보고 싶어서 쓰고 있다. 아무말이나 적어서 검색을 하면 누가 더 빨리 정확하게 검색을 해 줄까? 네이버가 잘 이효리에 대해서 검색을 할까? 구글에서 더 정확하게 해 줄까? 다음 검색엔진은 동직 하기는 할까 그냥 궁금해서 테스트 될때따지 해,보자 오떤글을 써야 탑에 올라 가는지

'밤에피는꽃' 이하늬, 시부 김상중 [내부링크]

'밤에 피는 꽃' 이하늬가 시아버지 김상중의 실체에 충격을 받았다. 지난 9일 방송된 MBC 금토드라마 '밤에 피는 꽃'(극본 이샘 정명인 / 연출 장태유 최정인 이창우) 9회는 닐슨 코리아 전국 기준 11%를 기록했다. 설 연휴 첫날, 모든 채널 중 유일한 두 자릿수 시청률을 기록하며 정상을 지켰다. 특히 박수호(이종원 분)가 담장에 숨겨 놓은 다식과 꽃을 보며 좋아하는 조여화(이하늬 분)의 모습이 담긴 못다한 이야기 장면은 13.1%까지 치솟았다. 이날 방송에서는 선왕의 죽음에 대해 진실을 밝히려는 여화와 이를 숨기려는 석지성(김상중 분)의 팽팽한 신경전이 그려졌다. 여화는 자신으로 분장시킨 활유(이우제 분)와 함께 박윤학(이기우 분)을 만나러 갔고, 활유의 정체가 탄로 날 위기에 처하자 윤학에게 칼..

껌쌕옌찐 얼마나 짤되는지 테스트 해보기 [내부링크]

자 내 사이트가 검색엔진 상위에 노출 돠는 가간을 한번 테스트 해 보갰다. 과연 몇일 아나면 몇 사간만에 검샥앤잔 상위에 노출이 돨까? 1위는 구굴일꺼러고 추측 해 본다. 2위는 어딜까? 다음일까? 네이버 일까? 여기에 검샥 상위애 뜰만한 마법의 키워드를 넣어 몰것이다. 우짜라뽕짝크득코득아엏군저헝빙실벙싱 자 위에 문장으로 검색해서 과연 검색이 잘 될까 일단 테스트 해 보고 결과를 봐여겠다.

오라클 무료 클라우드 [내부링크]

Oracle Cloud Free Tier 무료 구성 사양은? 상시 무료 클라우드 서비스무제한 이용 가능한 서비스입니다. Oracle APEX 및 Oracle SQL Developer와 같은 강력한 도구가 포함된 Oracle Autonomous Database 2개 AMD 컴퓨팅 VM 2개 ARM 기반 Ampere A1 컴퓨팅 인스턴스 최대 4개 지원(매월 3,000 OCPU 시간과 18,000 기가바이트-시간 제공) 블록 스토리지, 오브젝트 스토리지, 아카이브 스토리지, 로드 밸런서 및 데이터 송신, Monitoring 및 Notifications CountryKorea selected 메뉴 Oracle Cloud Free Tier Oracle Cloud에서 애플리케이션 제작, 테스트, 배포를 무료로 체..

[데이터뉴스]공공데이터 활용 기업은 52%…약 11만곳 [내부링크]

기업에서 공공데이터 활용도가 높아지고 있다. 과학기술정보통신부가 지난 24일에 발표한 '2023년 정보통계집'에 따르면, 전체 기업체 21만 1000여개 중에서 공공데이터를 사용하는 기업체는 52.3%로 약 11만 기업에서 공공데이터를 활용하고 있다고 추정했다. 조사 시점은 2022년 12월 31일이다. 2020년에 46.7%(9만 5120개), 2021년에 51.9%(10만 7589개)로 점진적으로 이용률이 늘어나고 있는 추세다. 공공데이터는 공공기관이 만들어 낸 정보, 자료 등 공적인 정보다. 정부는 개방 효과성과 시급성 등을 고려해 국가 데이터를 개방한다. 특히 종사자수가 250명 이상인 기업체에서는 공공데이터 활용률이 69%로 상대적으로 높게 나타났다. 종사자수 50명에서 249명인 기업체에서는 ..

올해 과기부 SW 진흥 핵심은 SaaS 활성화를 추진한다. [내부링크]

SW진흥 실행계획 살펴보니 SaaS전환-기술 고도화 240억 글로벌 빅테크 연계사업 110억 현지 맞춤사업-스타트업 육성도 관련 통계자료 다운로드SW 진흥 실행계획에 포함된 SaaS 지원 정책 과학기술정보통신부가 올해 서비스형 소프트웨어(SaaS) 해외 진출 지원 등 SaaS 활성화에 힘을 쏟는다. 전자신문이 입수한 과기정통부 '2024년 소프트웨어 진흥 실행 계획'에 따르면, SaaS 기업 해외 진출 지원에 신규 예산을 배정하고, 소프트웨어(SW)기업의 SaaS 전환 지원, SaaS 제도 개선 등을 올해 목표로 세웠다. 과기정통부는 국내 SW기업이 글로벌 SaaS 마켓 플레이스에 진입할 수 있도록 50개 기업에 25억원을 지원하는 예산을 신규 배정했다. 아마존웹서비스(AWS) 리인벤트, 마이크로소프트..

비전 프로 분해한 결과 픽셀 밀도가 레티나보다 무려 50배 [내부링크]

2010년 애플이 아이폰 4와 함께 공개한 최초의 레티나 디스플레이는 인치당 326픽셀이었는데, 당시 스티브 잡스는 인간의 망막 한계인 300ppi를 ‘편안하게 뛰어넘었다”라고 설명했다. 이제 비전 프로에서는 레티나의 한계를 한 번 더 뛰어넘어 아이폰 픽셀 하나당 약 54픽셀을 나타내는 디스플레이를 탑재하게 됐다. 전자기기 분해 전문 미디어인 아이픽스잇은 심층 분해 결과를 통해 비전 프로의 픽셀 밀도가 3,386ppi로 매우 고해상도 디스플레이지만 기술적으로는 3,840 픽셀 너비라는 4K 조건에 미치지 못한다고 밝혔다. 그러나 아이픽스잇은 비전 프로가 “지금까지 본 것 중 가장 밀도가 높은 디스플레이”이며, HTC 바이브 프로(950ppi)와 메타 퀘스트 3(1,218ppi)를 능가하는 수준이라고 평가..

AI로 만든 합성 사진 메타 자동 라벨링 툴 개발 중 [내부링크]

메타가 생성형 AI 시스템으로 합성한 이미지를 식별하는 툴을 개발하고 있다. 페이스북, 인스타그램, 스레드 등 메타의 모든 소셜 미디어에 적용할 계획이다. Getty Image Bank 메타의 글로벌 이슈 부문 대표 닉 클레그는 회사 블로그를 통해 "업계 협력사와 함께, AI를 이용해 만든 콘텐츠임을 나타내는 마크에 대한 공통의 기술 표준을 맞추는 작업을 진행 중이다. 이 신호를 감지하면 사용자가 페이스북이나 인스타그램, 스레드에 올린 사진이 AI가 만든 이미지라는 것을 식별해 별도로 표시한다. 현재 이런 기능을 개발 중이고 몇 달 내에 각 앱의 모든 언어 버전에 적용하기 시작할 것이다"라고 말했다. 구글이나 오픈AI, 어도비, 셔터스톡, 미드저니 등의 AI가 만든 이미지에 별도 표시를 하려는 움직임..

비트코인 현물 ETF' 출시…예상되는 3가지 시나리오 [내부링크]

비트코인 현물 상장지수펀드(ETF)들이 미국 증권거래위원회(SEC)의 승인을 받으면서, 비트코인을 비롯한 가상자산 시장에 어떤 영향을 미칠 지 주목된다. 10일(현지시간) SEC는 비크토인 현물 ETF 11종에 대한 시장 출시를 승인했다. 그 동안 SEC는 비트코인 선물 투자 상품은 허용했지만, 현물 ETF에 대해선 시장 조작 위험 등을 이유로 금지해 왔다. 그런데 SEC가 그 동안의 입장을 바꾸면서 현물 투자 상품이 시장에 나오게 됐다. 비트코인 현물 ETF 출시가 불러올 변화로 여러 전망들이 제시되고 있다. 우선 비트코인에 대한 투자 접근성이 좋아지면서 자금 유입이 나타날 것이란 관측이 많다. 다른 가상자산 기반 현물 투자 상품 출시 가능성도 제기된다. 특히 선물투자 상품이 거래되고 있는 이더리움에 ..

[마이크로소프트]MS 코파일럿에서 'GPT-4 터보' 무료 이용 가능 [내부링크]

마이크로소프트 코파일럿에서 오픈AI의 새 인공지능(AI) 모델 'GPT-4 터보' 이용이 가능해졌다. 10일(현지시간) 벤처비트는 마이크로소프트 코파일럿 사용자들이 추가 비용부담 없이 해당 모델을 사용할 수 있다고 보도했다. 오픈AI GPT-4와 달리3 기반의 대화형 AI 서비스다. 올해초 빙 챗으로 처음 출시됐으며, 최근 이름을 변경했다. 터보 버전을 이용하려면 오픈AI에 매월 20달러(약 2만7천원)를 지불해야 하지만, 코파일럿에서는 무료다. 폴 쿠버트라는 IT 커뮤니티 활동가가 X를 통해 해당 소식을 처음 알렸다. 마이크로소프트 코파일럿에서 GPT-4 터보를 무료로 이용할 수 있다. (사진=X) GPT-4 터보를 사용하려면 접근 권한부터 확인해야 한다. 우선 마이크로소프트 코파일럿 웹사이트에 방문한..

오픈AI, AI로 만든 이미지에 워터마크 붙인다 [내부링크]

구글, 메타에 이어 오픈AI도 자사 인공지능(AI)으로 생성된 이미지에 특정 표시를 넣기로 했다. 오픈AI는 7일(현지시간) 공식 홈페이지를 통해 자사 이미지 생성형 AI 도구인 '달리3'로 만든 이미지에 디지털 워터마크를 붙인다고 밝혔다. 디지털 워터마크는 사진이나 동영상 등 각종 디지털 데이터에 저작권 정보를 비롯한 비밀 정보를 삽입하는 기술이다. 원본 출처와 정보 추적이 가능하다. 육안으로 디지털 워터마크를 확인할 수는 없다. 특정 기술을 통해서만 워터마크 부착 여부 확인이 가능하다. 오픈AI의 달리3로 그린 '디지털 워터마크 부착한 생성형 AI 이미지' (사진=오픈AI) 오픈AI 측은 '콘텐츠 출처 및 진위 확인을 위한 연합(C2PA)' 형태의 워터마크를 부착한다고 했다. C2PA는 콘텐츠 출처와..

해외 및 국내 IT트렌드 관련하여 참고사이트 모음 [내부링크]

[IT 전문 뉴스 매체] 블로터 닷넷 : IT 전문 뉴스 블로그 http://www.bloter.net/ 전자신문 : IT 전문 언론매체 https://www.etnews.com/ ZDNet Korea : 해외 IT 전문 온라인 미디어 ZDNet의 한국판으로 ZDNet 영문 번역 기사가 자주 올라옴 http://www.zdnet.co.kr/ Gigaom : 해외 IT 전문 미디어 (영문), https://gigaom.com/ ReadWriteWeb : 해외 IT 전문 미디어 (영문), https://readwrite.com/ Mashable : 해외 IT전문 미디어(영문), https://mashable.com/ TechCrunch: 해외 IT전문 미디어, 스타트업 정보가 잘 정리되어 있음 (영문) ht..

2024년형 프레임워크 랩톱 16 [내부링크]

2024년형 프레임워크 랩톱 16(Framework Laptop 16)은 지향점이 명확한 노트북이다. 강력한 성능을 제공하는 노트북이면서 동시에 다른 노트북에서는 찾아볼 수 없는 수리성을 보장하는 것을 목표로 한다. 결과적으로 프레임워크 랩톱 16은 이 원대한 목표를 잘 구현했다. 단지, 상당한 값을 치러야 한다는 전제가 붙는다. 이 제품을 자세히 살펴보자. IDG/Matthew Smith 사양과 기능 이번에 리뷰한 2024년형 프레임워크 랩톱 16 사양은 DIY 에디션이어서 약간의 조립 과정이 필요하다. 메모리, 스토리지, 포트, 확장 베이 등을 고를 수 있다. 메모리와 스토리지를 다른 사이트에서 구매할 수 있지만, 이런 부품을 사용하려면 프레임워크가 '확장 카드(Expansion Cards)'라고..

[PWA] MVC 패턴 클래스 파일 만들기 [내부링크]

3.2.3 MVC 패턴 클래스 파일 만들기 HTML 삽입 미리보기할 수 없는 소스 "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다." Mvc 패턴에 맞게 Controller를 만들자. 만드는 순서는 Controller를 만들고, 서비스 인터페이스를 만들고, 서비스 인터페이스를 상속받은 구현체를 만들고, 데이터베이스와 통신을 할수 있게 JpaRepository 상속받은 인터페이스를 만들어서 데이터베이스에 push알림 구독정보를 저장하여 관리 할수 있게 만들것이다. 이번에는 패키지와 클래스 파일을 동시에 같이 만들어 보자. 위에서는 패키지 따로 파일 따로 만들어 보았는데 같이 만들어도 된다. pwapush 패키지명에 마우스 오른쪽 버튼을 클릭하여 New->Class를 ..

java.security.NoSuchProviderException: no such provider: BC 에러 [내부링크]

위와 같은 자바 시큐리티 에러가 발생한 경우 자바 경로에 가서 관리자권한으로 보안 관련 설정을 추가 하고 프로그램을 재 실행 하면 에러가 사라진다. jdk8 버전인 경우에는 jdk1.8.0_162\jre\lib\security\java.security 파일을 연다 security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider

[PWA] 자바 패키지 파일 생성 [내부링크]

3.2 자바 패키지 파일 생성 3.2.1 자바 환경설정 파일 만들기 src/main/java 밑에 pwapush에 가서 마우스 오른쪽 버튼을 클릭하여 Package 선택 Name에 pwapush.config 입력후 Finish 버튼을 클릭하여 패키지 를 생성한다. 생성된 패키지 에서 마우스 오른쪽 버튼을 클릭하여 New->Class 를 클릭하여 WebConfig.java 파일을 생성하자 WebConfig.java 파일은 환경설정 파일로 서버가 기동될때 최초로 메모리에 환경설정을 로딩하는 기능을 처리한다. WebMvcConfigure을 상속 받아서 json형식을 데이터를 사용하겠다고 설정하는 부분이다. package pwapush.config; import org.springframework.context..

[PWA] 3장 스프링부트 프로젝트 생성 [내부링크]

3장 스프링부트 프로젝트 생성 3.1 push 알리미 기능 프로젝트 생성 spring부트 실행하여 File -> New -> Spring Starter Project 위와 같이 입력후 Next DB는 테스트 하기 좋은 H2 메모리 DB를 선택 Spring Web, Lombok, 웹페이지는 Thymeleaf선택 JPA를 사용할꺼라서 Spring Data JPA 선택 Spring Boot DevTools는 개발할때 소스에 변경 사항이 있을경우 자동 재기동을 시켜주는 편리한 기능이 있어서 선택 하여 준다. Finish를 눌러 준다. 프로젝트가 위와 같은 구조로 생성이 되었다. 일단 환경 설정 부터 해보자 src/main/resources 밑에 application.properties 파일을 yaml 형식으로 ..

[PWA] 2장 개발환경 셋팅 [내부링크]

2장 개발환경 셋팅 2.1 개발툴 설치 자바1.8버전, 스프링부트 준비 2.1.1 스프링부트설치 https://spring.io/tools 사이트에 들어가서 해당 운영체제에 맞는 버전을 다운로드 받아서 압축을 풀어 줍니다. 압축을 푸실때 압축푸는 경로명이 길경우에는 압축풀다가 오류가 발생하면서 안 풀리는 경우가 가끔 있습니다. 이런경우에는 반디집을 설치하여 압축을 풀면 정상적으로 풀립니다. 2.1.2 자바 설치 https://www.oracle.com/kr/java/technologies/javase-downloads.html 사이트에 들어가서 자바1.8버전을 다운받습니다. 이 책의 예제는 자바 1.8기준으로 작성하였습니다. 다운 받아서 설치 해 주시기 바랍니다.

[PWA] PWA 소개 , PWA란 무엇인가? [내부링크]

-목 차- 1장 PWA 소개 6 1.1 PWA란 무엇인가? 6 1.1.1 PWA(Progressive Web Apps) 6 2장 개발환경 셋팅 12 2.1 개발툴 설치 12 2.1.1 스프링부트설치 12 2.1.2 자바 설치 13 3장 스프링부트 프로젝트 생성 14 3.1 push 알리미 기능 프로젝트 생성 14 3.2 자바 패키지 파일 생성 26 3.2.1 자바 환경설정 파일 만들기 26 3.2.2 모델 만들기 29 3.2.3 MVC 패턴 클래스 파일 만들기 34 3.2.4 Controller 코딩하기 41 3.2.5 Service interface 코딩하기 46 3.2.6 Service impl 코딩하기 46 3.2.7 repository 코딩하기 51 4장 클라이언트 만들기 53 4.1 push 알..

[PWA] 스프링부트로 배우는 실전 PWA [내부링크]

스프링부트 Server (스프링부트 + 톰캣서버+ H2 DB+JPA) 실무에서 바로 써먹는 자바를 이용한 PUSH 알리미 구현 Mysql, H2DB + JPA(ORM)을 적용한 PUSH 알리미 키값 구현 Front (자바스크립트) 점진적 웹 앱(PWA, Progressive Web App) 자바스크립트로 PWA 구축 스프링부트를 이용한 PUSH알리미 서버 구축과, 자바스크립트를 이용한 Progressive Web App 구축 예제와 함께 WAS 서버 배포까지 실전 완벽 가이드 따라서 한번만 만들어 보면 초보자도 쉽게 배우는 PWA의 기본서 입니다. 최신트랜드에 맞게 DB 처리부분은 JPA를 적용하였습니다. “딱 일주일만 이 책을 따라하시면 누구나 쉽게 실 업무에서 사용하는 프로젝트를 이해 할수 있습니다...

[쿠버네티스] ingress-nginx-controller node에 다 기동 되어 있어야 한다. [내부링크]

node서버가 여러개인 경우 각 node서버 에 ingress-nginx-controller가 기동 되어 있어야 브라우저에서 호출할때 에러가 없다. 각 노드마다 통신을 해야 하는데 ingress-nginx-controller가 떠있지 않은 node에서 서비스가 돌아가는 앱은 ingress와 통신이 안되어서 호출이 안된다. root@master:~/ingress# kubectl get deployments.apps NAME READY UP-TO-DATE AVAILABLE AGE ingress-nginx-controller 1/1 1 1 10d 호출을 해서 확인후에 아래 명령으로 편집을 해서 kubectl edit deployments.apps ingress-nginx-controller replicas: ..

[트론] 트론은 중국의 저스틴선이 개발하였고 콘텐츠 거래를 위한 암호화폐다. [내부링크]

트론 트론은 블록체인 기반의 분산형 콘텐츠 엔터테인먼트 플랫폼으로 자유롭게 콘텐츠, 웹사이트 및 응용 프로그램 등을 제작하고 배포하는 블록체인 디앱(Dapp) 플랫폼입니다. 트론은 2018년 5월 31일 메인넷을 출시하였고, 중앙 콘텐츠 관리자 없이 제작자와 소비자를 연결하여 보다 효율적인 분산 스토리지 기능을 수행하며, 탈중앙화된 엔터테인먼트 생태계를 구축하고자 합니다. 즉 페이스북이나 유튜브 등의 중개자 없이 콘텐츠 제작자가 지적재산권을 온전히 소유하고 그에 대한 보상을 더 많이 돌려주는 구조입니다. 발행처 및 발행 방식 트론 재단은 2017년 7월에 싱가포르에 설립되었고 베이징과 샌프란시스코에 2개의 본사를 두고 있습니다. 트론팀은 베이징에서 서울, 도쿄, 샌프란시스코 및 기타 여러 국적의 100명..

[테더] 테더(USDT) 법정통화 미국달러와 1:1로 가격이 유지되는 달러 스테이블 코인입니다. [내부링크]

테더 테더(USDT)는 법정 통화를 쉽게 사용할 수 있도록 설계된 블록체인 지원 플랫폼이며, 미국 달러와 1:1로 가격이 유지되는 것을 목표로 하는 달러 스테이블 코인입니다. 테더 운영사는 이를 실현하기 위해 USDT의 준비금을 현금, 채권, 비트코인 등의 자산으로 보유하고 있습니다. 2014년에 처음 발행된 USDT는 현재 비트코인, 이더리움에 이은 코인마켓캡 기준 시가총액 3위의 가상자산입니다. USDT는 이더리움, 트론 등 14개 블록체인 네트워크에서 발행이 가능하며 타 자산과의 교환, 결제 등의 수단으로 활용됩니다. 발행처 및 발행 방식 - 기능 및 특징 [준비금 공개] USDT 발행에 사용되는 준비금과 발행 현황은 홈페이지 상에 매 분기로 공시되고 있습니다. 2023년 9월 30일 공개된 감사 ..

[리플] 국제은행간 송금서비스가 빠르고 수수료가 저렴한 장점이 있습니다. [내부링크]

리플 리플은 암호화 기술과 해시를 이용한 가상자산으로 차세대 국제은행 간 통신협정(SWIFT)이라는 의미에서 SWIFT 2.0이라고 칭하기도 합니다. 발행처 및 발행 방식 리플은 2009년 1월 3일에 리플랩스에서 은행간 이체 서비스에 중점을 두고 만들어진 핀테크를 위한 결제 프로토콜입니다. 기능 및 특징 리플은 블록체인 기반 기술을 사용하여 구축된 네트워크를 통해 실시간으로 국제결제를 진행할 수 있게 지원합니다. 리플의 글로벌 주문형 결제 서비스는 빠르고 수수료가 저렴하며 즉시 정산 체결 시스템을 사용함으로 서비스의 위험도가 낮다는 장점을 가지고 있습니다. 이것 예전에 나올때 국제송금 수수료도 저렴하고 실시간 이체 처리 되고 속도가 빨라서 국제은행간 송금하는 방식 (SWIFT) 송금 한번 할려면 몇일 ..

[비트코인] 가상자산 하면 비트코인 이지 [내부링크]

비트코인 비트코인은 블록체인이라는 공공 거래 장부를 이용한 최초의 가상자산입니다. 블록체인 기술은 거래에 참여하는 모든 사용자에게 거래내역을 공개하며 거래를 의미한 트랜잭션이 발생 때마다 공공 거래 장부와 대조해 데이터 위조를 막을 수 있습니다. 발행처 및 발행 방식 비트코인은 '나카모토 사토시(가명)'가 개발한 최초의 가상자산으로 알려지며 최대 발행 수량은 2,100만개입니다. 기능 및 특징 비트코인은 기존 화폐와 달리 정부나 중앙은행, 금융기관의 개입없이 개인 간(P2P) 빠르고 안전한 거래가 가능하며, 금처럼 유통량이 한정되어 있다는 특징을 가지고 있습니다. 비트코인 거래는 암호화에 의해 보호되어 비트코인은 사용자가 소유한 가상자산에 대해 높은 수준의 통제권과 보안을 보장할 수 있습니다. 비트코인을..

[이더리움] ETH 가상화폐 이더리움 정보 및 가격 [내부링크]

이더리움 이더리움은 분산 응용 애플리케이션 플랫폼으로서, 가상자산을 통한 분산형 스마트 계약의 실행뿐만 아니라 신규 가상자산을 개발할 수 있는 환경을 제공합니다. 이더리움의 발행수량은 무제한이며, The Merge 시점(2022년 9월 15일)기준 발행수량은 약 1억 2천2백만개 입니다. 이더리움 The Merge 업데이트를 통해 에너지 절약 및 이더리움 네트워크의 속도, 효율성, 확장성 등을 개선하고자 기존 작업증명(PoW) 방식에서 지분증명(PoS) 방식으로 전환하였습니다. 발행처 및 발행 방식 이더리움은 러시아계 캐나다인 '비탈릭 부테린' 외 7인의 공동 설립자들이 함께 개발한 가상자산 플랫폼입니다. 이더리움 2.0은 지분증명(PoS) 방식의 합의 알고리즘을 제공함으로써, 검증인과 풀 참여자들은 지..

[비트코인] BTC 저항선 돌파시도 빗썸,업비트,코인베이스 프리미엄도 반등세 [내부링크]

비트코인은 2024년 1월 28일 기준 최고가 58,880,000원 찍고 저항선을 뚫고 상승 중에 있다. 28일(현지시간) 가상자산(암호화폐) 분석 플랫폼 크립토퀀트(CryptoQuant)의 트레이더오아시스(TraderOasis) 분석가는 퀵테이크 리포트를 통해 "비트코인은 현재 저항선을 테스트하고 있다"면서 "코인베이스 프리미엄도 마이너스에서 플러스로 전환하려 시도하고 있다. 해당 저항을 돌파하면 더 안전한 상승이 가능할 것"이라고 밝혔다. BTC 가격은 28일 12시 7분 바이낸스 USDT 마켓을 기준으로 전일대비 0.66% 오른 4만2098달러에 거래되고 있다. 한편 코인베이스 프리미엄 지표는 코인베이스 프로와 바이낸스의 코인 가격 차이를 나타내는 지표다. 프리미엄이 높아지는 것은 미국 내 기관 투..

[신용카드] 신용카드 가맹점 우대수수료 31일 부터 적용 합니다. [내부링크]

오는 1월 31일부터 302만 7000개의 신용카드 가맹점에 대해 매출액 구간별로 우대수수료가 적용됩니다. 95.8% 정도의 가맹점이 해당됩니다. 금융위원회는 28일 올해 상반기 영세.중소 신용카드 가맹점 선정 결과를 발표하였습니다. 신용카드는 여신전문금융업법에 따라 3년마다 수수료를 재산정하고 있으면. 지금 현재기준으로 가맹점 연매출에 따라 신용카드 수수료율 영세(3억원 이하) 0.5% 중소1(3억원 초과~5억원 이하) 1.1% 중소2(5억원 초과~10억원 이하) 1.25% 중소3(10억원 초과~30억원 이하) 1.5% 등의 우대수수료율이 적용되고 있다. 우대수수료율 적용을 받는 가맹점 수를 구간별로 보면 영세 229만2000개 중소1 27만8000개 중소2 27만1000개 중소3 18만..

[빗썸] bithumb 신규고객 2만원을 받는 방법을 알려 드립니다. [내부링크]

1월 신규 고객님을 위한 빗썸 2만원 이벤트 입니다. 그냥 가입만 하고 2만원 받고 나오시면 됩니다. 빗썸은 NH농협은행만 거래 됩니다. 농협은행 통장이 있으시면 1원만 입금하고 2만원 받으시면 됩니다. 이벤트 기간 : 2024.01.01(월) ~ 2024.01.31(수) 이벤트 내용 : 한 번만 입금해도 20,000원 드려요! - 원화 1회 이상 입금하면 2만원 상당의 빗썸캐시를 드립니다. 이벤트 대상 : 아래 3가지 조건을 모두 충족하는 고객 (지급일까지 유지 필요) - 이벤트 기간 중 생애 첫 빗썸 신규가입 - NH농협은행 계좌등록 후 1원 이상 입금 - SMS 수신동의 이벤트 지급 일정 : 2024년 2월 9일(금) 유의사항 - SMS 수신 동의 방법 : 빗썸 앱>더보기>약관 및..

[카드론] 장기 카드 대출 이용방법 [내부링크]

카드사 장기 카드 대출 이용방법. 돈 구하는것도 단계가 있다고 본다. 처음에는 제 1금융권을 찾다가 거기서 못 구하게 되면 2금융권을 알아 보게 되어있다. 근데 거기에서도 필요한 자금을 못 구하게 되면 쉽게 빌릴수 있는곳이 카드사에 장기 카드 대출이다. 신용도가 그렇게 나쁘지 않으면 단기카드 대출 현금서비스를 받는것 보다는 장기카드 대출을 받는것이 더 유리한다. 일단 대출을 받아서 잘 갚으면 되는데 경제적 여유가 안되어서 못 갚게 되면 개인 회생 같은거라도 신청을 해야 하는데 단기카드 대출로 돌려 막기를 하게 되면 매달 매달 새로운 신규 대출건으로 잡히게 된다. 그러면 개인 회생 신청해도 받아 들여 지지가 않는다. 최근 3개월동안 신규 대출건이 없어야 개인 회생 신청을 할 수있다. 3개월 동안은 채권자들..

[현금서비스] 신용카드 단기 카드 대출, 현금서비스 대출 2배 이용하는 방법 [내부링크]

현금서비스 이용하는 방법 단기카드 대출 단기카드 대출 일명 현금서비스라고 도 하는데 웬만해서는 안하는것이 좋다. 그렇지만 살아 가다 보면 피치 못할 사정으로 이용하는 경우가 생긴다. 어쩔수 없이 이용하게 되는 경우가 있다. 잠깐 빌려서 갚을수 있으면 급한대로 이용하는것도 나쁘지는 않다고 본다. 급전 구할 곳 없으면 사채를 이용하는것 보다는 좋은 방법이라고 생각한다. 단기 카드 대출은 한달에 한번 빌릴수 있다고 생각을 했었는데 최대 2배까지 빌릴수가 있다. 결재일 기준으로 빌릴수 있는 금액이 다시 복원 된다. 예를 들어서 결재일이 15일이라고 하면 14일에 단기카드 대출을 받는다. 그리고 카드사에 따라서 결재일 기준 이틀후에 복원이 된다. 농협카드,현대카드는 결재일 기준 이틀 15일이 결재일이면 17일날 ..

[쿠버네티스] MSA(7) TLS 인증서 생성 [내부링크]

1. MSA ingress SSL 인증서 생성 openssl genrsa -out portal.co.kr.key 4096 openssl genrsa -out admin.co.kr.key 4096 openssl genrsa -out kibana.co.kr.key 4096 openssl genrsa -out gateway.co.kr.key 4096 openssl genrsa -out discovery.co.kr.key 4096 2. vi v3.ext authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment exten..

[쿠버네티스] MSA(6) mysql db 설치 [내부링크]

1. configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: mysql-configmap labels: env: production tier: database app: configmap name: mysql-configmap data: mysql-user: "msaportal" mysql-database: "msaportal" mysql-allow-empty-password: "1" mysql-root-host: "%" TZ: Asia/Seoul master.cnf: | [mysqld] log-bin character-set-server=utf8 collation-server=utf8_general_ci slave.cnf: | [mysqld] sup..

[쿠버네티스] MSA(5) Zipkin 설치 [내부링크]

1. deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: zipkin-deployment labels: env: production tier: backend app: zipkin name: zipkin-deployment spec: replicas: 1 selector: matchLabels: env: production tier: backend app: zipkin name: zipkin-pod template: metadata: labels: env: production tier: backend app: zipkin name: zipkin-pod spec: containers: - name: zipkin image: openzip..

[쿠버네티스] MSA(4) configmap 생성 [내부링크]

1. 환경설정 파일 configmap 생성 vi common-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: common-configmap labels: env: production tier: backend app: configmap name: common-configmap data: APP_HOME: "/srv/nfs" TZ: "Asia/Seoul" vi backend-comfigmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: backend-configmap labels: env: production tier: backend app: configmap name: backend-configm..

[쿠버네티스] MSA(3) 도메인별 시크릿 키 생성 [내부링크]

1. 가상 도메인별 시크릿 키 생성 1) msa 네임스페이스 변경 kubectl ns msa root@master:/home/msa/k8s/envirionments/nfs# kubectl ns msa Context "kubernetes-admin@kubernetes" modified. Active namespace is "msa". 2) secrets 조회 kubectl get secrets root@master:/home/msa/k8s/envirionments/nfs# kubectl get secrets No resources found in msa namespace. /* msa 네임스페이스에는 작업한게 없어서 생성된 데이타가 없다. */ 3) 시크릿 키 생성 - 인증서 파일이 만들어진 폴더로 이동한..

[쿠버네티스] MSA(2) nfs공유폴더 설정 [내부링크]

1. MASTER서버를 서버 공유 폴더를 생성한다. * 서버측 nfs 패키지 설치 #!/bin/sh # NFS 서버 패키지를 설치한다. sudo apt install -y nfs-kernel-server # 공유 디렉터리를 만든다. sudo mkdir /srv/nfs # 공유 디렉터리에 권한을 부여한다. sudo chown -R nobody:nogroup /srv/nfs sudo chmod 777 /srv/nfs # 공유 디렉터리 내보내기를 설정한다. echo "/srv/nfs *(rw,sync,no_subtree_check,no_root_squash)" | sudo tee /etc/exports # NFS 서버를 재시작하고 상태를 확인한다. sudo systemctl restart nfs-kernel-..

[쿠버네티스] MSA(1) 개발환경 셋팅 [내부링크]

1. msa 네임스페이스 생성 kubectl create namespace msa 2. 네임스페이스 확인 kubectl get namespaces root@master:/home/msa/k8s/envirionments/rabbitmq/ingress# kubectl get namespaces NAME STATUS AGE argocd Active 15d calico-apiserver Active 19d calico-system Active 19d default Active 19d harbor Active 8d ingress-nginx Active 8d jenkins Active 16d kube-node-lease Active 19d kube-public Active 19d kube-system Active ..

[쿠버네티스] 젠킨스에서 깃랩전송시 fatal: could not read Username 에러 발생시 [내부링크]

fatal: could not read Username for 'https://invako.kro.kr:8090': No such device or address 깃랩 토큰 : glpat-sXzjyFdtfSg8gpfSmVvM 깃랩 접속 오류 발생시 터미널 접속(도커일경우 도커접속) /* 접속설정 영구저장 */ git config --global credential.helper store # 또는 로그인 정보를 시간단위로 저장 # git config --global credential.helper 'cache --timeout 600' git config --global user.name manager git config --global user.email [email protected] git ls-re..

[쿠버네티스] Argocd TLS/SSL 적용 [내부링크]

1. ca 키생성 openssl genrsa -out ca.key 4096 2. ca 인증성생성 openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Osong/L=Osong/O=invako/OU=Personal/CN=192.168.2.50" \ -key ca.key \ -out ca.crt 3. 서버 인증서 개인키 생성 openssl genrsa -out argocd.co.kr.key 4096 3. 인증서 서명요청(CSR) /* CN은 도메인이나 아이피 입력 */ openssl req -sha512 -new \ -subj "/C=CN/ST=South/L=Osong/O=invako/OU=Personal/CN=argocd.co.kr" \ -..

[쿠버네티스] nginx TLS(SSL) 접속 & vhost & proxy 설정 젠킨스 ssl 적용 [내부링크]

1. nginx 도커 설치 1) docker-compose.yaml 파일생성 vi docker-compose.yaml version: '3.1' services: nginx: container_name: nginx_web image: nginx:latest restart: always ports: # 사용안하는 포트와 포트 포워딩 - "7080:80" - "5443:443" volumes: # ssl 사설인증서 공유폴더 설정 - ./ssl:/etc/ssl - ./nginx.conf:/etc/nginx/conf.d/default.conf # - ./content:/usr/share/nginx/html:rw # 동일네트워크 대역설정 networks: - apps_net environment: - TZ=Asi..

[쿠버네티스] rabbitmq 설치 ingress 적용 & SSL 적용 [내부링크]

1. 폴더 생성 mkdir -p /home/msa/k8s/envirionments/rabbitmq cd /home/msa/k8s/envirionments/rabbitmq 1) deployment 생성 vi deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq-deployment labels: env: production tier: backend app: rabbitmq name: rabbitmq-deployment spec: replicas: 1 selector: matchLabels: env: production tier: backend app: rabbitmq name: rabbitmq-pod template: me..

[쿠버네티스] Ingress TLL/SSL 설정 [내부링크]

1. CA 인증서 개인 키를 생성합니다. openssl genrsa -out ca.key 4096 2. CA 인증서를 생성합니다. openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Korea/L=Osong/O=invako/OU=Personal/CN=localhost" \ -key ca.key \ -out ca.crt 3. 서버 인증서를 생성합니다. 1) 개인키(비밀키) 생성 openssl genrsa -out invako.kro.kr.key 4096 2) 인증서 서명 요청 CA루트인증서 (CSR)을 생성합니다. openssl req -sha512 -new \ -subj "/C=CN/ST=South/L=Osong/O=invako/OU=P..

[쿠버네티스] GitLab-ArgoCd CD 구축 [내부링크]

1. krew 이용한 플러그인 설치 ns : 네임스페이스를 변환해주는 플러그인 neat : yaml 추출시 불필요한 부분을 삭제하여 깔끔하게 볼 수 있는 플러그인 설치 kubectl krew install ns kubectl krew install neat root@master:~/argocd# kubectl krew install ns Updated the local copy of plugin index. Installing plugin: ns Installed plugin: ns \ | Use this plugin: | kubectl ns | Documentation: | https://github.com/ahmetb/kubectx | Caveats: | \ | | If fzf is installed..

[쿠버네티스] 쿠버네티스 배포하기 위한 manifest 파일생성 & 깃랩전송 오류시 credential 설정 [내부링크]

1. manifest 레포지토리 생성 2. 로컬에 manifest 폴더 생성 - README.md , pipelineapp_deployment.yaml. pipelineapp_service.yaml 파일 생성 - 쿠버네티스에 디폴로이 하기 위한 deployment 파일 생성 pipelineapp_deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: pipelineapp-deploy spec: replicas: 2 selector: matchLabels: type: pipeline version: v1 template: metadata: labels: type: pipeline version: v1 spec: containers: - n..

[쿠버네티스] 젠킨스 & 깃랩 CI 자동배포 [내부링크]

1. 젠킨스 설정 1) 깃랩인증정보 등록 2) global 클릭 2) Add Credectials 클릭 3) Username with password 4) GitLab API token 5) 젠킨스관리-> 시스템 2. 깃랩 토큰 발행 - 발행된 토큰을 위에 젠킨스에 사용 1) 신규프로젝트 생성 2) 프로젝트 생성 완료 로컬pc에서 작업한 소스 깃랩으로 push 3) 로컬 작업 소스 깃랩 push 4) 깃랩 명령어 실행 5) 깃랩 소스 반영 확인 6) Webhooks 설정 - 소스 커밋시 자동 CI 7) 젠키스 파이프라인 생성 - 메인화면에서 새로운 item 클릭 3 파이프라인 테스트 1) Dockerfile 생성 FROM openjdk:17-ea-11-jdk-slim LABEL authors="cbw" ..

[쿠버네티스] 깃랫 접속 ssh키 등록 [내부링크]

원격깃랩으로 ssh 인증으로 접속하기 1. ssh 키생성 ssh-keygen -t rsa root@jenkins:~# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa Your public key has been saved in /root/.ssh/id_rsa.pub The key fingerprint is: SHA256:C..

[쿠버네티스] Debian 12 리눅스 자바17설치 [내부링크]

APT를 통해 Debian 12, 11, 10에 OpenJDK 17 설치 1단계: OpenJDK 17 설치 전 Debian 패키지 업데이트 OpenJDK를 설치하기 전에 Debian Linux의 모든 시스템 패키지가 최신 상태인지 확인하는 것이 중요합니다. 시스템을 업데이트하면 OpenJDK 설치 프로세스 중에 충돌이 발생할 가능성이 최소화됩니다. 패키지를 업데이트하고 업그레이드하려면 터미널에서 아래 명령을 실행하세요. sudo apt update && sudo apt upgrade 이 명령은 사용 가능한 업데이트 목록을 가져온 다음 패키지를 업그레이드합니다. 2단계: OpenJDK 17 패키지 검색 OpenJDK 17을 설치하는 가장 안정적이고 번거롭지 않은 방법은 기본 Debian 저장소를 이용하는 ..

[쿠버네티스] Spring boot를 이용한 샘플 웹 애플리케이션 생성 [내부링크]

1. 개발툴 인텔리 제이 설치 https://www.jetbrains.com/ko-kr/idea/ IntelliJ IDEA – Java 및 Kotlin을 위한 최고의 IDE www.jetbrains.com 인텔리제이 사이트에 들어가서 돈이 없으니까 공짜 버전 커뮤니티 버전을 다운 받아 설치 합니다. - 개발툴이 좋아야 개발이 편해 집니다.(인텔리제이를 추천합니다.) 2. spring.io 홈페이지에 가서 스프링 프로젝트 생성 https://start.spring.io/ - 간단하게 테스트 용도니까 Spring Web을 추가 합니다. - 방금 선택한 내용 대로 ZIP 파일로 다운을 받습니다. - 다운 받은 파일을 d:\spring-cloud\example\ 위에서 만들어 놓은곳으로 카피해서 압축을 풉니다...

[쿠버네티스] git clone 인증서 오류 발생시 [내부링크]

git clone https://xx.xxx.com:9888/xxxx.git certificate verification faile. CAfile: /etc/ssl~~~~~에러 발생시 SSL Verify 옵션을 Off 해주면 Clone일 잘된다. git config --global http.sslVerify false

[쿠버네티스] gitlab 과 젠킨스 프로젝트 연동 [내부링크]

1. 깃랩 자체 CI/CD 사용안함 설정 1) 깃랩 관리자 계정(root)으로 접속 2 젠킨스 파이프라인 등록 1) 파이프라인등록 메인페이지-> 새로운 Item - Ok 버튼을 클릭한다. 3. 깃랩 프로젝트 생성 4. 테스트 소스 생성 1) 적당한 드라이브에 폴더를 생성한다. - d:\spring-cloud\example 폴더를 하나 생성하고 파일 3개를 만들었다. 프로젝트는 좀있다 만들고 3개 파일이 깃랩에 잘 올라 가는지 확인하자. README.md 는 프로젝트에 대한 간단한 설명이다. 개발툴은 vscode다 여기서 터미널을 열어서 깃랩에서 생성한 명령어를 실행하여 잘 올라 가는지 확인한다. - 전송이 되었다 - 깃랩에도 정상적으로 올라 갔는지 확인 깃랩에도 README.md 파일이 잘 올라 갔다. ..

[쿠버네티스] erver certificate verification failed. CAfile: none CRLfile: none [내부링크]

1. 깃랩 연동시 오류 발생할 경우 root@jenkins:/var/jenkins_home/msa# git clone https://invako.kro.kr:8090/cbw/invako_msa.git Cloning into 'invako_msa'... fatal: unable to access 'https://invako.kro.kr:8090/cbw/invako_msa.git/': server certificate verification failed. CAfile: none CRLfile: none /* sslVerify 를 끈다 */ git config --global http.sslVerify false root@jenkins:/var/jenkins_home/msa# git config --globa..

[쿠버네티스] 젠킨스 플러그인 설치 & 깃랩연동 [내부링크]

1. 젠킨스 플러그인 설치 1. Bitbucket Pipeline for Blue Ocean 2. Dashboard for Blue Ocean 3. Personalization for Blue Ocean 4. Display URL for Blue Ocean 5. Server Sent Events (SSE) Gateway 6. Events API for Blue Ocean 7. Blue Ocean Pipeline Editor 8. i18n for Blue Ocean 9. Autofavorite for Blue Ocean 10. Blue Ocean 11. NodeJS 12. GitLab 13. Generic Webhook Trigger 14. Gitlab Authentication 15. Gitlab API..

[쿠버네티스] 도커로 젠킨스 설치 [내부링크]

1. jdk 11버전 설치 vi docker_jenkins_jdk17_container.sh # docker network create --subnet 192.168.10.0/24 --gateway 192.168.10.1 apps_net docker run -d --name jenkins \ -p 9080:8080 \ --privileged=true \ --hostname jenkins --restart=on-failure --net apps_net --ip 192.168.10.3 \ -v ./jenkins_home:/var/jenkins_home \ # 젠킨스 컨테이너 내부에서 외부에 있는 도커 실행 -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bi..

[쿠버네티스] Java PKIX path building failed: 에러 해결 [내부링크]

Client error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 1. SSL 인증서를 추출해서 Java VM 에 등록해 주면 해결됩니다. /* 1.github에 올려 놓은 소스 다운로드 */ curl -O https://gist.githubusercontent.com/lesstif/cd26f57b7cfd2cd55241b20e05b5cd93/raw/InstallCert.java /* 2.다운받은 소스 컴파일 */ javac InstallCert.java /* 3. InstallCert ..

[쿠버네티스] 플러그인 패키지 매니저 krew설치 [내부링크]

홈페이지 : https://krew.sigs.k8s.io/docs/user-guide/quickstart/ Quickstart · Krew 2023 The Kubernetes Authors. Krew is a Kubernetes SIG CLI project. Edit Page · krew.sigs.k8s.io 1. 다운로드 & 설치 ( set -x; cd "$(mktemp -d)" && OS="$(uname | tr '[:upper:]' '[:lower:]')" && ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && KREW="krew-${OS}_${ARCH}" && ..

[우분투22.04] watchdog: BUG: soft lockup - CPU#0 stuck for 23s! [containerd-shim:3292] [내부링크]

watchdog: BUG: soft lockup 에러 "watchdog: BUG: soft lockup" 에러는 리눅스 시스템에서 발생할 수 있는 소프트 락업(soft lockup) 상황을 나타내는 경고 메시지입니다. 이러한 에러는 일반적으로 CPU가 장시간 동안 사용 중인 상태로 보고되지 않는 경우에 발생합니다. 이 문제를 해결하기 위해 다음과 같은 단계를 시도할 수 있습니다. 최신 커널 업데이트: 우선, 시스템에 적용 가능한 최신 커널 패치 및 업데이트가 있는지 확인하십시오. 새로운 커널 버전에는 소프트 락업과 관련된 문제에 대한 수정 사항이 포함되어 있을 수 있습니다. 하드웨어 문제 확인: 소프트 락업은 하드웨어 문제에 의해 발생할 수도 있습니다. 메모리, CPU, 디스크 등과 같은 시스템 하드웨어..

[쿠버네티스] 깃랩 SSL certificate problem: unable to get local issuer certificate [내부링크]

[Git] SSL 에러 : SSL certificate problem: unable to get local issuer certificate SSL Certificate 란? SSL 은 Secure Sockets Layer 의 약자로써, 웹 서버 - 웹 브라우저 간의 암호화된 링크를 생성하여 사용자와 웹 사이트 간의 통신을 보호한다. - 가장 간단한 해결방법은 git terminal 을 이용하여 일시적으로 SSL 검증을 해제하는 건데, 사실 미봉책이기도 하고, git 은 사실 기본적으로 "Linux" crypto backend 를 사용한다고 한다. 하지만 Windows 에서 하고 있는 우리들은! 기본 설정인 "Linux" crypto backend 를 "SChannel" 이라는 built-in Windo..

[쿠버네티스] 깃랩(Giglab) 설치 [내부링크]

참고 사이트 : https://workshop.infograb.io/setup-gitlab/3_setup_gitlab/1_create_working_directory/ 설치 디렉토리 생성 - Setup CI/CD System with GitLab 설치 디렉토리 생성 모든 Repository 데이터를 저장할 수 있을 만큼의 여유 공간이 있는 경로에 GitLab 작업 디렉토리 (Working directory)를 생성합니다. sudo mkdir -p /data/gitlab && cd /data/gitlab GitLab 데이터를 workshop.infograb.io 1. 도커 컴포즈 파일 생성 - 설치 폴더 생성 mkdir -p /home/docker/gitlab - vi docker-compose.yml v..

[쿠버네티스] Harbor(하버) 설치하기 TLS CA키 생성 [내부링크]

하버 홈페이지 참고 사이트 https://goharbor.io/docs/2.10.0/install-config/download-installer/ Harbor – Download the Harbor Installer Download the Harbor Installer goharbor.io 하버 깃허브 : https://github.com/goharbor/harbor/releases Releases · goharbor/harbor An open source trusted cloud native registry project that stores, signs, and scans content. - goharbor/harbor github.com harbor 버전 : 2.10.0 1. 다운로드 폴더 생성 m..

[쿠버네티스] 우분투22.04 도커 설치하기 [내부링크]

1. 우분투 시스템 패키지 업데이트 $ apt-get update 2. 필요한 패키지 설치 apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common lsb-release 3. Docker 공식 GPG Key 추가 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 4. Docker 리포지터리 설정 docker.list에 docker 리포지터리를 설정해 줍니다. echo \ "deb [arch=$..

[쿠버네티스] 헬름 설치 [내부링크]

https://github.com/helm/helm/releases Releases · helm/helm The Kubernetes Package Manager. Contribute to helm/helm development by creating an account on GitHub. github.com 참고 사이트 : https://helm.sh/ko/docs/intro/install/ 헬름 설치하기 헬름 설치하고 작동하는 방법 배우기. helm.sh 1. 헬름 깃허브에 가서 설치하고 싶은 버전을 다운로드 받는다. wget https://get.helm.sh/helm-v3.13.3-linux-amd64.tar.gz tar zxvf helm-v3.13.3-linux-amd64.tar.gz mv linu..

[쿠버네티스] 아르고(Argo) cd 설치 [내부링크]

https://argo-cd.readthedocs.io/en/stable/getting_started/ Getting Started - Argo CD - Declarative GitOps CD for Kubernetes Getting Started Tip This guide assumes you have a grounding in the tools that Argo CD is based on. Please read understanding the basics to learn about these tools. Requirements Installed kubectl command-line tool. Have a kubeconfig file (default location i argo-cd.readthedoc..

[쿠버네티스] 젠킨스 CI 구성 [내부링크]

1. 젠킨스 & Github를 이용한 CI 구성 1) 깃허브와 연동하기 위한 토근 발급 - public 저장소이면 토큰 발급이 필요치 않으나 private 저장소일 때은 저장소 접근을 위한 토큰을 생성하여야 합니다. - 깃허브 로그인 후 메뉴에서 Settings 클릭하여 들어간다. - Generate new token 클릭하여 토큰 생성 /* 발행된 토큰은 복사하여 따로 저장해 놓는다 */ 2) 젠킨스와 생성된 토큰 연결 - 에러가 없으면 젠킨스와 깃허브 연결이 완료 되었습니다. 참고자료 : https://medium.com/finda-tech/finda-msa%EB%A5%BC-%EC%9C%84%ED%95%9C-kubernetes-%EC%84%B8%ED%8C%85%EA%B3%BC-ci-cd-pipelin..

[쿠버네티스] k8s 젠킨스 설치 [내부링크]

/* 쿠버네티스에 젠킨스 설치시 영구 저장을 위해서 스토리지를 생성한다. */ 참고 : https://kubernetes.io/ko/docs/concepts/storage/storage-classes/#nfs 스토리지 클래스 이 문서는 쿠버네티스의 스토리지클래스의 개념을 설명한다. 볼륨과 퍼시스턴트 볼륨에 익숙해지는 것을 권장한다. 소개 스토리지클래스는 관리자가 제공하는 스토리지의 "classes"를 설명할 수 kubernetes.io 1. StorageClass 생성 vi storageClass-local-storage.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage provisioner: kubern..

쿠버네티스 대시보드 설치 [내부링크]

1. 공식 k8s dashboard yaml 다운받아 설치 wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml vi recommended.yaml kind: Service 33 apiVersion: v1 34 metadata: 35 labels: 36 k8s-app: kubernetes-dashboard 37 name: kubernetes-dashboard 38 namespace: kubernetes-dashboard 39 spec: 40 ports: 41 - port: 443 42 nodePort: 31055 43 targetPort: 8443 44 selector: 45 k8s-app..

쿠버네티스 환경 설정 [내부링크]

우분투22.04 버전 4대의 가상 서버 준비 master : 10.0.100.2 node1: 10.0.100.3 node2: 10.0.100.4 node3: 10.0.100.5 template : 10.0.100.6 /* 쿠버네티스 작업하다 오류 발생시 복원용 */ 총 4개의 가상서버를 준비하여야 하는데 일단 한개의 서버만 복제하여 쿠버네티스 master 정보를 셋팅한다. 마스터가 잘 셋팅이 되면 node서버는 마스터 복제하여 쉽게 구성할 수 있다. 마스터 서버 셋팅이 에러가 없이 잘되면 되는데 버전 문제가 많아서 잘 안된다. 몇번 시도 끝에 현재 버전에서 잘되는 방법으로 정리 하였다. /* 현재 버전은 도커를 별도로 설치 할 필요가 없다. 기존 방식대로 도커를 설치 했다가 꼬이는것 같아서 공식문서를 보..

우분투 22.04 버추얼 머신 설치하기 [내부링크]

https://ubuntu.com/download/server https://ubuntu.com/download/server ubuntu.com Download Ubuntu Server 22.04.3 LTS 서버용 우분투 버전을 다운 받는다. 오라클 VM VirtualBox 를 인터넷 검색하여 설치를 한다. VirtualBox를 실행 시켜서 메뉴에서 머신을 선택후 새로 만들기 버튼을 클릭하여 가상머신 이미지를 생성한다. 재부팅후 위에서 만든 계정으로 로그인 후에 root 패스워드를 부여 한다. root 계정은 패스워가 없기 때문에 패스워드를 부여해야 사용할수 있다. $ sudo passwd root 명령어로 root 패스워드를 생성한다. root 계정으로 접속을 한다. $ su - root Passwor..

centos 도커 설치 [내부링크]

# 도커 이전번전 uninstall yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 기존 도커 저장소 수동 삭제 /var/lib/docker/에 저장된 이미지, 컨테이너, 볼륨, 네트워크는 자동으로 지워지지 않음. 수동으로 지우는 것 필요 rm -rf /var/lib/docker # yum-utils 패키지 설치 yum -y update yum install -y yum-utils # repository 설정 yum-config-manager --add-repo https://down..

레이어드 아키텍처 [내부링크]

레이어드 아키텍처(Layered Architecture)가 무엇인지 알아보자. 소프트웨어 아키텍처란? 소프트웨어 아키텍처란, 소프트웨어 시스템의 전체적인 구조와 구성요소들 간의 상호작용을 설계하는 것을 말한다. 쉽게 말해, 건축물의 뼈대를 잡는 것과 같은 과정이다. 건축물의 구조와 종류는 굉장히 다양하다. (철근 콘크리트, 철골, 목조, …) 어떤 자재를 사용하고, 해당 자재들을 어떻게 조립하는지에 따라 건축물의 특성은 크게 달라진다. 이와 같이 소프트웨어 아키텍처는 시스템의 전체적인 동작을 결정하고, 시스템의 품질 성능(성능, 확장성, 유지보수성, 보안 등)에 직접적으로 영향을 미친다. 소프트웨어 아키텍처를 선택할 때는 다양한 요소(요구사항, 복잡성, 기술 스택, 경험, 비용 및 시간 등)들을 고려하여..

fetch 파일다운로드 [내부링크]

/* 자바 스크립트 */ function fileDownLoad(fileName,finalFileName,path){ const paramData = { method: 'POST', body: JSON.stringify({ fileName, finalFileName,path }), headers: { 'Content-Type': 'application/json' } }; fetch('/logFarm/downloadFetchFiles.json',paramData) .then(res => res.blob()) .then(data => { const a = document.createElement("a"); a.href = window.URL.createObjectURL(data); a.download = f..

jsp 멀티 첨부파일 생성& 삭제 [내부링크]

제이쿼리 & jsp 화면에서 멀티 첨부파일 등록 및 다운로드 스프링 연동 jsp 파일에서 첨부파일 선택 하는 부분입니다. 문의하기 제목 내용 문의 내용을 최대한 상세히 적어 주세요 첨부파일 파일선택 문의등록 자바 소스 /* * Controller.java * */ @RequestMapping(value="/saveNotice.json", method=RequestMethod.POST) @ResponseBody public Map saveNotice( HttpServletRequest request, @RequestPart(value = "key") Map param, @RequestPart(value = "file",required = false) List fileList) throws Exception..

첨부파일 다운로드 & 업로드 [내부링크]

/* 자바 첨부파일 다운로드 & 업로드 */ FileManagerController.java package logfarm.admin.file.controller; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletOutputStream; import..

백업받은 airflow 설정및 기동 [내부링크]

/* 백업 받은 docker 파일 로딩 */ podman load -i ubunto-airflow_2.6.0.tar /* 공유폴더 생성 */ mkdir -p /docker_share/airflow /* centos podman 컨테이너 실행 */ podman run -d --name ubuntu -p 2222:22 -p 8080:8080 -p 3306:3306 -p 8888:8888 --privileged=true --hostname ubuntu22 -v /docker_share/airflow:/home/airflow/ai:z cbwstar/ubuntu22.04-airflow:2.6.0 /sbin/init podman ps -a /* 도커 접속 */ 접속 : podman exec -it ubuntu ba..

ubuntu22.04 airflow2.6.0설치 [내부링크]

/* postgresql 설치 */ -- 설치하기전에 설치가능한 버전확인 apt show postgresql apt show postgresql-14 -- postgresql 설치를 위한 패키지 등록하기 최상위 경로 이동 cd / sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list. d/pgdg.list' GPG Key 추가 wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - 패키지 목록 업데이트 apt-get update /* postgresql 최신버전 설치..

리눅스에서 우분투 도커 설치(systemctl 적용) [내부링크]

도커컨테이너 생성 : 상기 코드에서 systemctl 사용 권한을 갖기 위해 필요한 부분은 --privileged=true 와 /sbin/init 이다 /* 도커파일을 생성한다. */ vim Dockerfile /****************/ FROM ubuntu:22.04 ARG DEBIAN_FRONTEND=noninteractive ENV TZ=Asia/Seoul RUN sed -i 's/kr.archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list RUN apt update \ && apt install -qq -y init systemd \ && apt install -qq -y build-essential \ && apt install -qq..

airflow 설치 [내부링크]

리눅스 사용자 계정 생성 adduser airflow /* sudo 권한 부여 */ apt install sudo chmod +w sudoers vi /etc/sudoers chmod -w sudoers airflow ALL=(ALL:ALL) ALL su - airflow mkdir airflow 환경설정 export AIRFLOW_HOME=~/airflow /* 파이션 3.8설치 */ /* 설치전 우분투 서버 업데이트 */ apt update apt upgrade 2단계: Python 3.8 PPA 가져오기 Ubuntu 사용자의 경우 Python 및 추가 필수 패키지에 대한 최신 업데이트에 액세스하는 가장 쉬운 방법은 "deadsnakes" 팀 Launchpad PPA를 가져오는 것입니다 . 이렇게 하..

vscode 터미널 버퍼사이즈 지정하기 [내부링크]

Settings.json 파일에 아래 문구 추가 "terminal.integrated.scrollback": 9999999

스프링부트 메이븐 컴파일 [내부링크]

mvn clean package java -jar -Dspring.profiles.active=local ./addrLaLoBatch-0.0.1-SNAPSHOT.jar --job.name=jdbcPostgresPagingItemReaderJob baseDate=2022-10-25 스프링 부트에서 실행 : ./mvnw.cmd spring-boot:run Clean 후 패키지 생성 ./mvnw.cmd clean package ./mvnw.cmd clean install /* mvn 기동시 profiles 설정 cmd창에서 실행할때 powershell에서는 안먹힘 */ mvn spring-boot:run -Dspring-boot.run.profiles=프로파일명 mvn spring-boot:run -Dspri..

Docker postgres 설치 [내부링크]

도커 이미지 다운로드 docker pull postgres 이미지 실행 docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=postgres -d postgres 3. 이미지 삭제시 데이터가 날아가기 때문에 볼륨을 생성해서 데이터를 생성된 볼륨에 저장한다. C:\Users\cbw>docker volume create pgdata Pgdata 생성된 볼륨확인 docker volume list C:\Users\cbw> docker volume list DRIVER VOLUME NAME local 77deaac01a4c3f4b09bc2e8d5d263c8939dee0f9aab5ed7b0dd71ddd6a57fd76 local 2377c4650f107de611..

Docker 오라클 19c설치 [내부링크]

docker pull banglamon/oracle193db:19.3.0-ee docker run -d --name oracle19db -p 1521:1521 -e ORACLE_SID=ORCL -e ORACLE_PDB=MONGOPDB -e ORACLE_PWD=sys -v c:\ora19db:/opt/oracle/oradata banglamon/oracle193db:19.3.0-ee 컨테이너 로그 조회 - docker logs 컨테이너 실행 명령어 수행 후 바로 컨테이너를 사용할 수 있는 것은 아니다. 컨테이너에 따라 컨테이너를 생성하는데 필요한 설정을 하고 컨테이너를 생성하는데 시간이 소요된다. 오라클 데이터베이스는 오라클 인스턴스와 데이터베이스에 필요한 파일들을 생성하는데 일정 시간이 소요된다. 컨테이..

호스트가 다른 도커 컨테이너 통신 [내부링크]

호스트가 다른 도커 컨테이너 통신 네트워크 생성 podman network create --subnet 192.168.0.0/24 --gateway 192.168.0.1 net-postgresql 네트워크 확인 podman network ls ifconfig 설치가 안되어 있을때 yum install net-tools 설치 /* ssh 설치 */ yum -y install openssh-server openssh-clients openssh-askpass systemctl start sshd.service /* ssh test */ was1 번 : 10.0.3.15 podman run --privileged --restart="always" -d --net net-postgresql --hostname ..

우분투 도커에 mysql셋팅 [내부링크]

이미지 다운로드 : docker pull ubuntu:22.04 도커컨테이너 생성 : 상기 코드에서 systemctl 사용 권한을 갖기 위해 필요한 부분은 --privileged=true docker run -d --name ubuntu -p 22:22 -p 8080:8080 -p 3306:3306 -it --privileged=true ubuntu:22.04 접속 : docker exec -it ubuntu22 bash /* 우분투 서버 업데이트 */ apt-get update /* systemctl 설치 */ apt update && apt-get install -y systemd /* mysql-server 설치 */ apt-get install mysql-server /* 기동 */ service..

Java 에서 ValidatorException 등 인증서 관련 에러 해결 [내부링크]

/* 사설인증서 아이피 인증서 자바에서 오류시 처리 방법 */ /* 자바 인증서 생성 */ c:\dataworks>keytool -genkey -alias dataworks -keyalg RSA -storetype PKCS12 -keystore keystore_local.p12 -validity 100000 키 저장소 비밀번호 입력: 새 비밀번호 다시 입력: 이름과 성을 입력하십시오. [Unknown]: 192.168.4.13 조직 단위 이름을 입력하십시오. [Unknown]: org 조직 이름을 입력하십시오. [Unknown]: local 구/군/시 이름을 입력하십시오? [Unknown]: Seoul 시/도 이름을 입력하십시오. [Unknown]: Seoul 이 조직의 두 자리 국가 코드를 입력하십시오..

오라클 PIVOT 동정 컬럼 사용방법(가변IN절) [내부링크]

오라클에서 PIVOT을 사용하다보면 IN절에 동적으로 값을 할당하고 싶을때가 있다. 그러나 PIVOT의 IN절은 SQL의 IN절과 다르다. PIVOT의 IN절은 할당된 값의 개수와 순서를 맞춰서 결과가 출력된다. 일반적인 쿼리문의 PIVOT은 IN절에 동적으로 값을 할당 할 수 없지만, PIVOT XML 또는 Dynamic SQL을 활용하여 동적 PIVOT을 구현 할 수 있다. 일반적인 PIVOT 쿼리 SELECT * FROM (SELECT job , deptno , sal FROM emp ) PIVOT ( SUM(sal) FOR deptno IN ('10', '20', '30', '40') ) ORDER BY job PIVOT 쿼리는 IN절 ('10', '20', '30', '40')의 값과 순서에 따..

postgresql + pgpool-ii 셋팅 [내부링크]

리눅스에서 도커를 이용하여 postgresql 서버 2대를 구성하여 고가용서 ha 를 구성한다. 도커 허브에 접속하여 centos-8 stream을 다운받아서 서버2대를 구성하고 테스트 https://hub.docker.com/r/twistedbytes/centos8-stream/tags Docker hub.docker.com /* 도커 허브에서 이미지를 다운 받는다 */ poman pull twistedbytes/centos8-stream:latest 맨밑에 docker.id 선택하여 이미지 다운 받는다. /* 도커 이미지 확인 */ podman images /* 네트워크 생성 */ podman network create --subnet 192.168.0.0/24 --gateway 192.168.0.1..

postgresql리눅스 부팅시 자동실행 등록 [내부링크]

리눅스 부팅시 postgresql 자동실행 /usr/lib/systemd/system 경로에 가서 vi postgresql.service 파일 생성 [Unit] Description=PostgreSQL 15.0 database server After=syslog.target After=network.target [Service] Type=forking User=postgis Group=postgis # Note: avoid inserting whitespace in these Environment= lines, or you may # break postgresql-setup. # Location of database directory Environment=PGDATA=/apps/pgdata # Disab..

podman 리눅스 부팅시 자동 실행 [내부링크]

podman 리눅스 시스템 재기동시 자동실행 Systemd 설정 경로로 이동한다. cd /usr/lib/systemd/system podman ps -a 컨테이너 아이디 또는 컨테이너명으로 systemd 파일 생성 podman generate systemd --name postgis > container-postgis.service /* 시스템 재기동시 실행할수 있게 설정 */ systemctl enable container-postgis.service /* 상태 확인 */ systemctl status container-postgis.service /* 실행 */ systemctl start container-postgis.service /* 중지 */ systemctl stop container-po..

podman 컨테이너 저장경로 변경 [내부링크]

docker 는 환경설정 파일 변경하면 컨테이너 이미지 저장 경로를 쉽게 바꿀수 있는데 podman은 찾다가 문서도 제대로 없고 못 찾아고 귀찮기도 해서 그냥 softlink 찾아서 처리 하였음 podman 이미저 저장경로 /var/lib/containers /* 원하는곳에 저장폴더를 만든후에 */ mkdir -p /podman/lib/containers 기존 저장경로 삭제 rm -rf /var/lib/containers cd /var/lib /* 소프트링크 생성 */ ln -s /* 원본경로 대상경로 */ ln -s /podman/lib/containers containers podman으로 이미지 생성시 생성 저장경로는 /var/lib/containers 에서 /podman/lib/containers..

postgis 확장모듈 소스 컴파일 설치 [내부링크]

설치운영체제 centos8 stream 버전 postgis를 설치하기 위해서는 순서대로 의존성을 설치후 마지막에 설치를 하여야 한다. 설치 버전 정보 1. postgresql-15.0 2. geos-3.8.0 3. proj-6.2.1 4. cgal-4.14.2 5. sfcgal-v1.3.7 6. gdal-3.5.3 7. postgis-3.3.1 직접 소스를 컴파일 해서 설치 하는 경우 os배포판과 분리 하기 위해서 각 패지지 설치 경로를 만든다. 1. geos 소스 컴파일 설치 ./configure --prefix=/apps/geos make all make install 2. proj6.6 소스 컴파일 설치 sqlite 의존성 패키지를 먼저 설치한다. yum install sqlite-devel.x86..

CentOS 8에서 시스템 언어 한글 설치하기 [내부링크]

운영 체제(OS) : CentOS 8 root 계정으로 실행 locale locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory LANG=ko_KR.UTF-8 LC_CTYPE="ko_KR.UTF-8" LC_NUMERIC="ko_KR.UTF-8" LC_TIME="ko_KR.UTF-8" LC_COLLATE="ko_KR.UTF-8" LC_MONETARY="ko_KR.UTF-8"..

Jsp 자동 반영안될경우 옵션 추가 [내부링크]

jboss standalone-ha.xml -- 기존 -- 변경

Db재기동시 reconnection [내부링크]

validate-on-match 옵션이 true이면 background-validation은 false 로 둘중 하나만 사용한다 중복사용불가 -- standalone-ha.xml 파일 열어서 설정 한다. select 1 true false

ISPN000299 에러 발생시 [내부링크]

Log 파일 에러 확인 cat server.log | grep -i ISPN000299 2022-10-31 08:34:45,063 ERROR [org.infinispan.interceptors.impl.InvocationContextInterceptor] (async-thread--p21-t1) ISPN000136: Error executing command GetKeyValueCommand on Cache 'ifh-1.0.0.war', writing keys []: org.infinispan.util.concurrent.TimeoutException: ISPN000299: Unable to acquire lock after 15 seconds for key SessionCreationMetaDataKe..

스프링 대용량 멀티 배치_스케줄 [내부링크]

여러개 배치를 실행할때 스케줄을 여러개 등록하기 위해서는 job 객체를 이름을 지정해서 생성하여 Qualifier로 객체를 주입하여 스케줄을 여러개 생성해서 기동한다. 스케줄 시간설정은 환경설정 파일을 이용하여 셋팅 Scheduler.java package kr.go.naq.batch.schedulers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.batch.core.*; import org.springframework.batch.core.launch.JobLauncher; import org.springframework.batch.core.repository.JobEx..

윈도우 도커에 Centos8 설치 [내부링크]

윈도우에 먼저 도커가 설치 되어 있어야 한다. cmd 창 띄워서 설치 가능한 docker 이미지 검색 목록 확인후 docker pull roboxes/centos8 이버전 오류가 있어서 사용안함 docker pull dokken/centos-8 이버전 설치 아래꺼도 이걸로 설치 해야 잘됨 이미지를 다운받아서 설치한다. 설치된 이미지 확인 docker images - container 생성 및 실행 docker run -it --name centos8 roboxes/centos8:latest bin/bash --name 은 생성될 컨테이너 이름 그 뒤에 나오는 이름은 REPOSITORY 이름 + TAG 이름을 적어 줍니다. bin/bash 는 컨테이너가 실행될때 bash shell로 접속하라는 구문입니다...

[Jenkins] 환경설정 [내부링크]

Jenkins를 설치후에 소스 자동 배포를 위한 환경설정 - Jenkin관리로 들어가서 필요한 플러그인 설치 플러그인 관리 에 들어간다. 설치가능 에 검색창에 Publish Over SSh 입력하여 검색한후에 해당 플러그인을 설치한다. 설치가능에 많은 플러그인들이 나오는데 굳이 다 설치 할 필요는 없고 해당 기능이 필요할때는 도움말 보고 그때 그때 상황에 맞게 설치하자 시스템 설정으로 이동하여 밑으로 쭈욱 내려가서 Name : 아무이름이나 입력 Hostname : 리눅스 서버 호스트 이름 입력 UserName : 리눅스 계정 root 입력 Remode Directory : / 고급 버튼을 클릭하여 root 사용자 패스워드 입력 Use password authentication, or use a diffe..

Centos 8에서 mod_jk사용하여 Apache 2.4 와 Tomcat 연동하기 [내부링크]

1. mod_jk 모듈 만들기 wget http://mirror.navercorp.com/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz 다운을 받은후 압축을 푼다 tar -xvzf tomcat-connectors-1.2.48-src.tar.gz 디렉토리 이동 cd tomcat-connectors-1.2.48-src/native 아파치가 설치된 apxs 경로를 찾아서 컴파일을 위한 환경 설정을 합니다. apxs 경로를 모를경우 find / -name apxs 로 찾아서 아파치가 설치된 경로 /apps/apache/bin/apxs 경로로 셋팅 ./configure --with-apxs=/apps/apache/bin/apxs 컴파..

Centos8 에 JenKins 설치 [내부링크]

1 단계 : CentOS 8에 Java 설치 Jenkins가 작동하려면 Java JRE 8 또는 Java 11을 설치해야합니다. # dnf install java-11-openjdk-devel 2 단계 : CentOS 8에 Jenkins 리포지토리 추가 Jenkins는 CentOS 8 리포지토리에서 사용할 수 없으므로 Jenkins Repository를 시스템에 수동으로 추가 할 것입니다. 아래와 같이 Jenkins Key를 추가하여 시작하십시오. # rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key 이제 Jenkin의 저장소를 CentOS 8에 추가합니다. # cd /etc/yum.repos.d/ # curl -O https://pkg...

Centos-stream8 postgressql 컴파일 설치 [내부링크]

root 로 로근인후 사용자 계정 생성 adduser postgres 사용자 암호생성 passwd postgres 새암호: 새암호 재입력: postgresql 사이트에서 postgresql-13.4.tar.gz 파일을 생성된 사용자 계정 홈 디렉토리에 다운 받는다. cd /home/postgres wget https://ftp.postgresql.org/pub/source/v13.4/postgresql-13.4.tar.gz 압축을 푼다 tar -zxvf postgresql-13.4.tar.gz 소스가 컴파일 되어서 설치될 디렉토리를 생성한다. 설치할 디렉토리 생성 mkdir -p /apps/postgresql-13.4 mkdir -p /postgresdata/pgdata 소유권 변경 chown -R po..

자바 cors 우회하기 get,post방식 [내부링크]

get 방식 호출 자바 네이버 지도 get 방식 호출 처리 @RequestMapping(value="/map-direction/v1/driving.do") public ModelAndView driving(HttpServletRequest request) throws Exception{ ModelAndView mav = new ModelAndView("jsonView"); String start = EgovStringUtil.nvl(request.getParameter("start")); //시작좌표 String goal = EgovStringUtil.nvl(request.getParameter("goal")); //목적지좌표 String option = EgovStringUtil.nvl(request...

[PostgreSql] 오라클 INSTR = POSITION [내부링크]

오라클 위치 찾기 SELECT INSTR('가나다라마바사', '다') FROM dual; POSTGRESQL 위치찾기 같은 기능 select position('다' in '가나다라마바사')

[PostgreSql] 오라클 WM_CONCAT와 같은 기능 [내부링크]

/* POSTGRES 오라클 WM_CONCAT 와 같은기능 */ SELECT ARRAY_TO_STRING(ARRAY_AGG(CONCAT ORDER BY CONCAT ),',') AS AR FROM ( select '문자열합치기1' AS CONCAT UNION ALL select '문자열합치기2' AS CONCAT UNION ALL select '문자열합치기3' AS CONCAT ) A /* 오라클 WM_CONCAT */ SELECT WM_CONCAT(CONCAT) AS CONCAT FROM ( select '문자열합치기1' AS CONCAT FROM DUAL UNION ALL select '문자열합치기2' AS CONCAT FROM DUAL UNION ALL select '문자열합치기3' AS CONCA..

[PostgreSql] 특정문자를 짤라서 컬럼으로 변경 [내부링크]

/* 오라클에서 특정문자를 기준으로 짤라서 컬럼으로 변경 */ SELECT TRIM(REGEXP_SUBSTR('COLUMN1,COLUMN2,COLUMN3', '[^,]+', 1, LEVEL)) AS SPLIT_CNSTNT_ID ,LEVEL FROM DUAL CONNECT BY INSTR('COLUMN1,COLUMN2,COLUMN3', ',', 1, LEVEL - 1) > 0; /* POSTGRESQL 특정문자를 기준으로 짤라서 컬럼으로 변경 */ select (REGEXP_SPLIT_TO_ARRAY('COLUMN1,COLUMN2,COLUMN3',','))[LEVEL] AS SPLIT_CNSTNT_ID, LEVEL from (select 'COLUMN1,COLUMN2,COLUMN3' as P_CNSTNT_..

[PostgreSql] pg_cron job schedule 등록방법 [내부링크]

/* pg_cron이 설치가 안되어 있는 경우 * https://github.com/citusdata/pg_cron 사이트에 가서 소스를 다운받아서 컴파일 설치를 한다. * git clone https://github.com/citusdata/pg_cron * cd pg_cron * postgresql이 설치된 bin 경로를 설정한다. */ 리눅스에 .bash_profile 열어서 경로 설정 LANG=ko_KR.UTF-8 PGHOME=/home/passdata/apps/postgresql-13.4 PGDATA=/home/passdata/passdata/pgdata PATH=$PGHOME/bin:$PATH:$HOME/.local/bin:$HOME/bin LD_LIBRARY_PATH=/$PGHOME/lib ..

[PostgreSql] 파티션 자동 생성 프로시저 [내부링크]

PostgreSql에서 파티션 자동생성 프로시저 입니다. 오라클과 달리 PosrgreSql에서는 파티션을 나누면 그 자체가 서브 테이블로 생성이 됩니다. 서브테이블에 바로 인서트 해도 되고 서브테이블을 그냥 삭제 해 버리면 파티션도 자동으로 그냥 삭제 처리가 됩니다. CREATE OR REPLACE PROCEDURE PROC_AUTO_PART_CREATE( OUT_RESULT_CD INOUT VARCHAR, OUT_SQLERR INOUT VARCHAR ) LANGUAGE plpgsql AS $procedure$ DECLARE V_SQL VARCHAR(4000); C_PART RECORD; BEGIN FOR C_PART IN select 'CREATE TABLE public.part_' || A.PDATE..

[PostgreSql] 프로시저 생성 방법 [내부링크]

DBeaver 툴 사용해서 생성 Function메뉴에서 마우스 오른쪽 버튼 클릭하여 Create New Function 메뉴 선택하면 생성창이 뜬다. Type에서 procedure 선택하고 Language에서 plpgsql선택후 확인 눌러서 생성하면 기본 템플릿이 작성된다. CREATE OR REPLACE PROCEDURE public.pn_test() LANGUAGE plpgsql AS $procedure$ declare /* 변수 선언 */ v_test varchar(100); v_date timestamp; BEGIN /* 로직 구현 */ /*변수 초기값 셋팅 */ v_date := now(); END; $procedure$

[PostgreSql] 함수 function 생성 방법 [내부링크]

DBeaver 툴을 이용하여 기본 템플릿 functin 생성하는 방법 create New Function 클릭하면 입력창이 뜬다. 확인 버튼 클릭 기본 템플릿 파일이 생성 된다. function은 리턴값이 존재하고 프로시저는 리턴값이 있을수도 있고 없을수도 있다. postgresql은 특이하게 function안에 commit나 rollback구문을 넣으면 프로시저나,함수 호출시 에러가 발생한다. 오라클에서는 문제가 안된다. 사실 function안 또는 프로시저안에 commit문이나 rollback을 넣는것 자체가 문제다. 원자성이 훼손된다. 프로그램에서 호출시에 전체가 성공해야 commit이 실행되어야 하는데 프로시저안에 중간 중간 다 박아 넣으면 전체가 성공해야 commit처리가 되어야 하는데 그냥 성..

[PostgreSql] 오라클에서 postgresql 로 이관시 타입변환 정리 [내부링크]

오라클에서 MERGE INTO 문은 postgresql에서는 UPSERT 문과 비슷하지만 다르다. 오라클에서는 한번에 조회해서 update나 insert처리가 되지만 postgresql에서는 한건씩 비교해서 같으면 업데이트 다르면 인서트 처리를 한다. 건수가 많지 않을경우에는 cursor돌려서 처리하면 되지만 몇백만건 이상 될때는 속도 차이가 많이 난다. FOR 루프로 100만건 정도 된다고 하면 한건싹 루프 돌면서 처리가 되어서 시간이 오래 걸림 FOR ROW_DATA IN ( SELECT KEY,TEST1,TEST2 FROM 조회_테이블명 ) LOOP WITH UPSERT AS ( UPDATE 테이블명 SET TEST1 = ROW_DATA.TEST1 , TEST2 = ROW_DATA.TEST2 , R..

[PostGreSql] 문자인지 숫자인지 체크하는 함수 [내부링크]

postgresql에는 문자인지 숫자인지 체크하는 함수가 없다. 인터넷 검색하다가 못 찾아서 그냥 함수 하나 만들었다. CREATE OR REPLACE FUNCTION is_numeric ( p_string varchar ) RETURNS numeric AS $$ DECLARE V_NEW_NUM BOOLEAN; BEGIN SELECT p_string ~ E'^[-+]?\\d*\\.?\\d+(?:[eE][-+]?\\d+)?$' into V_NEW_NUM; IF (V_NEW_NUM) THEN RETURN 1; ELSE RETURN 0; END IF; END; $$ LANGUAGE 'plpgsql' /* 사용방법 함수 호출해서 1이면 숫자 0이면 문자다 */ select is_numeric('-3.2')

[파이쎤] 이기종 db 마이그레이션 [내부링크]

대용량 데이터를 이관할때 파이쎤을 이용한 벌크인서트와 읽어 올때 chunksize 옵션 처리 기능을 이용해서 메모리 오버플로우를 처리 하였습니다. 메모리가 충분하면 한방에 읽어와서 처리하면 처리가 빠르지만 메모리 용량이 부족할 경우에는 나누어서 읽어서 처리를 해야 메모리 오버플로우가 발생하지 앖습니다. 파이썬 버전 : 3.8.8 로 테스트 파이썬을 설치후 패키지를 다운받아서 설치한다. pip install contextlib pip install sqlalchemy pip install jaydebeapi pip install pandas pip install apscheduler 1. config.py TIBERO_DB_CONFIG = { 'driver': 'com.tmax.tibero.jdbc.TbD..

[파이쎤] 이기종간의 DB 실시간 동기화 [내부링크]

파이썬 버전 : 3.8.8 로 테스트 파이썬을 설치후 패키지를 다운받아서 설치한다. pip install contextlib pip install sqlalchemy pip install jaydebeapi pip install pandas pip install apscheduler 1. config.py TIBERO_DB_CONFIG = { 'driver': 'com.tmax.tibero.jdbc.TbDriver', 'url': 'jdbc:tibero:thin:@192.100.1.10:829:tibero', 'user': 'tiberotest', 'password': 'test1234', 'jdbcDriver': 'd:/python_schedule/jdbc/tibero6-jdbc.jar' } PG_DB..

build.gradle plugins 와 apply plugin 차이 [내부링크]

그레이들에서 멀티 모듈을 Root project에 위치한 빌드스크립트에서 정의하는 것을 ‘Cross project configuration'라고 한다. 예제에서 플러그인 설정을 할 때 빌드스크립트(build.gradle 파일) 내에 buildscript를 정의하는데 내 파일에는 plugins 방식으로 되어있어 찾아봤는데 개선되었다고 한다. 기존 buildscript { ext { springBootVersion = '2.1.7.RELEASE' } repositories { mavenCentral() jcenter() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } ..

vscode 오프라인에서 extension 설치 [내부링크]

- 마켓 플레이스 접속하여 다운받고 싶은 툴 검색하여 다운 받는다. extension은 확장자가 vsix 이다. https://marketplace.visualstudio.com/ Visual Studio Marketplace Extensions for Visual Studio family of products on Visual Studio Marketplace marketplace.visualstudio.com

[react] Router [내부링크]

Single Page Application(SPA) 서버로부터 새로운 페이지를 불러오지 않고 현재의 페이지에 컴포넌트를 통해 동적으로 다시 작성하여 클라이언트와 소통하는 웹 애플리케이션이다. 필요한 모든 소스는 하나의 페이지에서 새로고침 없이 동작하게 된다. 그러나, SPA를 기반으로 개발할 때 흔히 겪는 어려움 중 하나는 웹페이지의 라우팅이다. 기본적으로 SPA에서 라우팅을 구현하게 되면 url path가 아닌 현재 어떤 컴포넌트가 렌더링 되어야 하는지 state를 통하여 관리를 한다. 이렇게 되면 다음과 같은 문제가 발생하게 된다. 1. 컴포넌트가 전환되어도 브라우저 주소창의 URL은 고정되어 있기 때문에 특정 페이지에 대한 즐겨찾기 등록이 불가능하다. 2. 뒤로가기 버튼을 누르면 해당 앱 내에서 이..

[react] props [내부링크]

props props 는 컴포넌트에서 사용 할 데이터 중 변동되지 않는 데이터를 다룰 때 사용한다. parent 컴포넌트에서 child 컴포넌트로 데이터를 전할 때, props 가 사용된다. props 추가하기 컴포넌트에서 변하지 않는 데이터가 필요 할 땐, render() 메소드의 내부에 안에 { this.props.propsName } 형식으로 넣고, 컴포넌트를 사용 할 때, < > 괄호 안에 propsName="value" 를 넣어 값을 설정한다. src/components/Header.js import React from 'react'; class Header extends React.Component { render(){ return ( { this.props.title } ); } } expo..

[react] 리액트 초기 프로젝트 생성 [내부링크]

리액트 프로젝트 생성 및 실행 방법 프로젝트 생성 프로젝트 생성 명령 설치하기 npm install -g create-react-app 위 명령으로 리액트 프로젝트를 생성하는 create-react-app명령을 설치했다. -g옵션이 주어졌기 때문에 시스템 공통 폴더에 설치된다. 따라서 프로젝트를 새로 생성할 때마다 위 명령을 반복할 필요가 없다. npx 로 프로젝트를 생성해야 하는데 npx 를 설치하기 위해서는 npm 을 통해서 설치 가능하다. npm install npx -g 프로젝트 생성하기 npx create-react-app [프로젝트이름] create-react-app명령을 실행하여 프로젝트를 생성할 수 있다. 프로젝트 이름으로 영어 대문자는 사용이 불가능하다. 프로젝트 실행 생성한 프로젝트 폴..

자바 랜덤 API 암호화 BASE64 KEY 생성 [내부링크]

package egovframework.util; import org.apache.commons.codec.binary.Base64; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.xml.bind.DatatypeConverter; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; public class RandomAESKeyGen { public static String generate(final int keyLen) throws NoSuchAlgorithmException { KeyGenerator keyGen = ..

전자정부 프레임워크 Swagger UI 적용 [내부링크]

1. pom.xml 파일에 seagger 관련 라이브러리 추가 io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui 2.9.2 2. egov-com-servlet.xml 파일에 객체생성및 파일위치 추가 전자정부에서는 자바 config파일에서 그냥 bean 객체를 생성하면 오류가 발생하여서 xml파일에서 객체를 생성하여 준다. 3. SwaggerConfig.java 파일 생성 package egovframework.com.cmm.config; import org.springframework.context.annotation.Bean; import org.springframework.web.bind.annotation.RequestM..

아파치 2.4.52 소스 컴파일 설치 [내부링크]

컴파일 설치 컴파일 할 소스 다운로드 https://httpd.apache.org/download.cgi Download - The Apache HTTP Server Project Downloading the Apache HTTP Server Use the links below to download the Apache HTTP Server from one of our mirrors. You must verify the integrity of the downloaded files using signatures downloaded from our main distribution directory. The signatures can be httpd.apache.org 접속하여 최신버전 .tar.gz 파일을 다..

리눅스 파이썬 psycopg2 패키지 설치 오류 해결 [내부링크]

파이썬 3.8버전 기준 리눅스에서 테스트 관련 의존성 라이브러리를 pip로 설치한다. sudo pip3.8 install sqlalchemy sudo pip3.8 install jaydebeapi sudo pip3.8 install pandas sudo pip3.8 install psycopg2 Error: pg_config executable not found. 에러 발생시 postgresql과 설정에 문제가 있어서 발생 sudo yum install postgresql postgresql-devel python3-devel 설치 후 다시 설치 sudo pip3.8 install psycopg2 gcc 관려 에러가 발생하면 gcc도 설치 해 준다. sudo yum install gcc /* 리눅스에서 ..

리눅스 sudo 권한 부여하기 [내부링크]

root 권한을 접속후 [root@localhost /]# ll /etc/sudoers -r--r-----. 1 root root 4355 12월 23 00:52 /etc/sudoers 속성이 읽기 전용이다. 보안상 필요할때만 쓰기로 바꿔서 사용하고 읽기전용으로 변경한다. [root@localhost /]# chmod +w /etc/sudoers [root@localhost /]# ll /etc/sudoers -rw-r-----. 1 root root 4355 12월 23 00:52 /etc/sudoers sudoers 파일을 편집한다. [root@localhost /]# vi /etc/sudoers ## Next comes the main part: which users can run what soft..

CentOS,RHEL 리눅스 ISO파일로 로컬 저장소 만들기 [내부링크]

인터넷이 차단된 서버에서 ISO Image파일을 이용해서 로컬 저장소 만들기 1. mount할 폴더를 생성 [root@localhost /]# mkdir -p /localrepos 2. 다운받은 CentOS 또는 RHEL 리눅스 풀버전 iso 파일을 서버에 올린후 mount 합니다. -rw-r--r--. 1 root root 10975444992 12월 22 21:17 rhel-8.5-x86_64-dvd.iso [root@localhost iso]# pwd /home/roo/iso 임의의 폴더를 생성후 생성된 폴더에 다운받은 rhel-8.5-x86_64-dvd.iso 파일을 올립니다. 마운트 합니다. [root@localhost iso]# mount -o loop /home/roo/iso/rhel-8.5..

인터넷 없는 환경에서 패키지 설치 [내부링크]

리눅스 시스템에 로컬 repo 저장소를 만들어서 yum을 통하여 설치한다. 로컬에 레파지토리를 구축하기 위해서는 레파지토리 관리를 해주는 createrepo를 설치하여 로컬레파지토리를 구축한다. 일단 인터넷이 되는 리눅스에서 root계정으로 로그인 후에 createrepo 패키지를 먼저 다운 받는다. 다운 받을 폴더를 하나 만든다. mkdir /createrepo 폴더를 만든후 yum을 이용하여 의존성까지 설치는 하지 말고 옵션을 이용하여 다운받는다. yum install -y --downloadonly --downloaddir=/createrepo createrepo createrepo 설치하기 설치하고자 하는 패키지르들 모두 다운받은후 해당 파일을 카피하여 인터넷이 안되는 리눅스에 파일을 복사하고..

전자정부프레임워크 스케줄러 생성 [내부링크]

전자정부프레임워크에서 스케줄러 등록방법 까먹을지 몰라서 정리 차원에서... WEN-INF\config\egovframework\springmvc\egov-com-scheduler.xml 파일을 생성후 필요한 스케줄러를 등록한다. 환경설정 시간 관련 기본정보는 globals.properties파일에 설정한다. 1. 스케줄러 처리 환경파일 설정 등록할 스케줄러가 여러개인 경우 하나씩 인터페이스를 정의한후에 스케줄러 트리거에 배열로 등록한다. - egov-com-scheduler.xml org.quartz.simpl.SimpleThreadPool 5 4 org.quartz.simpl.RAMJobStore 60000 - globals.properties # 스케줄러 매일 매시 5분 주기 실행 #scheduler..

[PostgreSql] 설치후 초기 데이터 구축 [내부링크]

1. 사용자 계정 생성 create user test password 'test2021' superuser; 2. 데이터 베이스 생성 create database naqs owner test; 3. 테이블 스페이스 저정될 폴더를 먼저 생성한다. mkdir -p /postgre_db/com_dat mkdir -p /postgre_db/com_idx 소유권을 변경한다. chown -R postgrs:postgres /postgre_db 4. 테이블 스페이스 생성 CREATE TABLESPACE naqscom_tbl owner test LOCATION '/postgre_db/com_dat'; CREATE TABLESPACE naqscom_idx owner test LOCATION '/postgre_db/com..

[PostgreSql] 리눅스 postgresql 소스 컴파일 설치 [내부링크]

https://www.postgresql.org/ftp/source/v13.4/ PostgreSQL: File Browser www.postgresql.org postgresql 버전 13.4 centos 에 소스 컴파일 설치 리눅스에서 postgresql 설치할 사용자 계정을 root에서 생성한다. adduser passdata 사용자 암호생성 passwd passdata 새암호: 새암호 재입력: postgresql 사이트에서 다운받은 postgresql-13.4.tar.gz 파일을 생성된 사용자 계정 홈디렉토리에 전송한다. 압축을 푼다 : tar -zxvf postgresql-13.4.tar.gz cd postgresql-13.4 설치할 디렉토리 생성 mkdir -p /apps/postgresql..

자바로 크로스 도메인 우회처리 [내부링크]

/** * 크로스 도메인 우회처리 * @param map * @return */ public static String processHTTP(Map params ) throws Exception { int statusCode = 0; String url= params.get("url"); logger.debug("url : " + url); CloseableHttpClient httpclient = HttpClientBuilder.create().build(); HttpPost httpPost = new HttpPost(url); List nvps = makeParams(params); try { httpPost.setHeader("Content-Type", "application/x-www-form-ur..

국세청 사업자번호 진위확인 [내부링크]

var ItemJSON; ItemJSON = '{"b_no": ["'+bNo+'"]}'; console.log("ItemJSON",ItemJSON) URL = "http://api.odcloud.kr/api/nts-businessman/v1/status?serviceKey=발급받은서비스키"; //Your URL var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = callbackFunction(xmlhttp); xmlhttp.open("POST", URL, false); xmlhttp.setRequestHeader("Content-Type", "application/json"); // xmlhttp.setRequestHeader('Author..

open api 국세청 사업자정보 진위확인 [내부링크]

자바로 post방식 json 타입 파라미터 전송하여 open api 값 가져오기 package egovframework.frmprd.ifh.openapi.web; import com.nexacro.uiadapter17.spring.core.annotation.ParamDataSet; import com.nexacro.uiadapter17.spring.core.data.NexacroResult; import egovframework.com.cmm.util.EgovStringUtil; import lombok.extern.slf4j.Slf4j; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JSONSerializ..

vscode Sass Compiler 설치 [내부링크]

1. 설치하기 확장플러그인에서 검색하여 설치 - SASS 컴파일을 자동으로 해주는 플러그인 - [SASS Lint]도 같이 설치하면 SASS문법을 쉽게 코딩할 수 있다. Sass Lint를 통해 Sass문법을 쉽게 작성가능 2. [Watch SASS] - [Live Sass Compiler]를 설치하면 하단 상태표시줄에 [Watch Sass]버튼이 생성 빨간색으로 체크한 부분이 [Watch Sass]버튼 - [test.scss]에서 구문을 작성 후 [Watch Sass]를 누르면 [test.css]가 바로 생성 1) 자동생성해보기 # HTML코드 SASS테스트 제목태그 # SCSS코드 $mainColor: red; h1{ color: $mainColor; } # 자동 컴파일 과정 # 컴파일된 CSS코드 ..

[PostgreSql] 데이터 이관시 트리거 비활성후 테이블 데이터 삭제 [내부링크]

/* 데이터 마이그레이션의 경우 모든 트리거 비활성 하는 방법 */ /* 비활성 시키고 데이터 삭제 */ SET session_replication_role = 'replica'; SELECT 'delete from ' || tablename || ';' as de FROM pg_catalog.pg_tables where schemaname = '스키마명'; SELECT 'select * from ' || tablename || ';' as se FROM pg_catalog.pg_tables where schemaname = '스키마명'; /* 데이터 삭제후 활성 */ 마이그레이션 후 모두 다시 활성화 SET session_replication_role = 'origin' ;

[PostgreSql] 패스워드 없이 백업 및 복원 [내부링크]

백업을 하기 위해서는 먼저 홈디렉토리에 패스워드 파일을 생성해야 한다. vi .pgpass 아래의 내용 추가 192.168.1.42:5432:*:아이디:패스워드 권한변경 chmod 0600 .pgpass /* 패스워드 없이 스키마 별로 백업 */ pg_dump --file "/var/lib/pgsql/test.dump" --host "192.168.1.42" --port "5432" --username "아이디" --no-password --verbose --format=c --section=pre-data --section=data --section=post-data --column-inserts --encoding "UTF8" --schema "스키마명" "db명" /* 패스워드 없이 스키마 별로 복..

[PostgreSql] postgresql 13 확장팩 설치 [내부링크]

/* 확장팩 확인 */ select * from pg_catalog.pg_available_extensions; PostgreSQL에서는 extension이라는 기능을 제공합니다. extension을 통해서 제3자의(외부) 프로그램을 plug-in 형태로 PostgreSQL에 연동할 수 있습니다. extension을 사용해서 PostgreSQL에서 제공하지 않는 추가적인 기능을 사용할 수 있습니다. 설치하는 방법은 PostgreSQL을 yum을 통해 설치했느냐, 또는 source를 통해 설치했느냐에 따라 다릅니다. 만약 PostgreSQL을 source를 통해 설치를 했다면, source 디렉토리에 contrib 디렉토리가 있습니다. 그 디렉토리에 들어가서, 아래 명령어를 통해 설치 하시면 됩니다. 만약..

[PostgreSql] 윈도우 db백업 및 리눅스 데이터 복원 [내부링크]

리눅스 접속 su - postgres Postgresql 터미널 접속 psql -U postgres /* 사용자 계정 생성 */ create user test password 'test2021' superuser; /* 데이터 베이스 생성 */ create database test_db owner test; /* 테이블 스페이스 저정될 폴더를 먼저 생성한다.*/ mkdir -p /postgre_db/test_dat mkdir -p /postgre_db/test_idx chown -R postgrs:postgres /postgre_db /* 테이블 스페이스 생성 */ CREATE TABLESPACE test_tbl owner test LOCATION '/postgre_db/test_dat'; CREATE ..

vue + 자바 파일다운로드 [내부링크]

const form = new FormData() form.append('filepath', 'board') form.append('filename', 'test.pptx') form.append('originFileName', '1634543241310-1897687360') this.$axios({ method: 'POST', url: 'com/systemmng/file/downloadAxiosFiles.do', responseType: 'blob', headers: this.headerWeblog, data: form, params: { param1: 1, parma2: '한글', parma3: 'eng!@' } }) .then(response => { const fileName = 'test.pp..

vue Event Bus [내부링크]

우선 Vue Event Bus 사용에는 두가지 방법이 있습니다. - 직접 Event Bus를 만들고 import 해서 사용하는 방법 - Vue에 내장되어있는 Event Bus 를 이용하는 방법 import 해서 사용하는 방법 장점 : 부모-자식 사이가 아니여도 사용이 가능하다. 너무 편하다. 단점 : 너무 많이 쓰이면 후에 관리하기 힘들다(찾기 힘들다) 1. Event Bus // EventBus.js import Vue from 'vue'; const EventBus = new Vue(); export default EventBus; 2. $emit 이벤트 호출 $emit('이벤트 이름', option) option에 값을 넣어서 보낼 수 있다. HelloWorld Change Component 3. ..

material 아이콘 url [내부링크]

https://fonts.google.com/icons

[PostgreSQL] 날짜 범위 검색 [내부링크]

PostgreSQL Date & Time Function 해당 날짜의 데이터 select count(watt_max) from tbl_test_watt3_sm2ch_min where to_char(regdate, 'YYYY-MM-DD') = '2016-10-17' 소요시간 : 124초 (150만건) (하루: 20*60*60*24 = 1,728,000) 이렇게 하면 망함! 해당 날짜의 데이터 select count(watt) from tbl_test_watt_lsh where regdate >= date '2016-10-17' and regdate = current_date and regdate '2016-10-17 07:40:00' AND to_char(regdate , 'YYYY-MM-DD HH24;M..

[PostgreSQL] lock 확인,삭제 [내부링크]

Lock 테이블 확인 select t.relname,l.locktype,page,virtualtransaction,pid,mode,granted from pg_locks l, pg_stat_all_tables t where l.relation=t.relid order by relation asc; Lock 삭제 select pg_cancel_backend(pid);

테이블의 스키마와 owner 변경하기 [내부링크]

-- 특정 테이블의 owner 와 소속 schema 는 아래 명령으로 쉽게 변경할수 있습니다. ALTER TABLE 현소유자 OWNER TO 새소유자; ALTER TABLE 테이블명 SET SCHEMA 새로운_스키마명 -- 참고로 특정 유저 소유의 모든 오브젝트들을 다른 유저 소속으로 바꾸고 싶다면 아래명으로 간단히 처리할수 있습니다. REASSIGN OWNED BY 현OWNER TO 새OWNER;

[PostgreSQL] 세션에 걸려있는 프로세스 강제종료 하기 [내부링크]

DO $$ DECLARE r RECORD; BEGIN FOR r IN (SELECT pid FROM pg_stat_activity where datname = 'DB명' and client_addr = '127.0.0.1' ) LOOP EXECUTE ' SELECT pg_terminate_backend( ' || r.pid || ' )'; END LOOP; END $$; * select 문 안의 where 조건에 해당하는 쿼리를 강제종료합니다.

[ 조은글 5230호 - 우유 한 잔 ] [내부링크]

1880년 여름 미국 메릴랜드에서 있었던 일입니다. 가가호호 방문해 물건을 팔아 생계를 유지하는 가난한 고학생 젊은이가 있었습니다. 그렇게 온종일 방문판매를 다녔기 때문에 저녁 무렵에는 온몸이 지칠 대로 지쳤고 배도 고팠습니다. 하지만 주머니에는 10센트 동전 하나가 전부였습니다. 그 돈으로는 뭘 사 먹을 수도 없었습니다. '다음 집에 가서는 뭐 먹을 것을 좀 달라고 해야지.' "계십니까?" 현관문을 두드리자 예쁜 소녀가 나왔습니다. 부끄러움이 많은 젊은이는 차마 배고프다는 말은 못 하고 물 한 잔 달라고 합니다. 그러나 소녀는 젊은이가 배가 고프다는 사실을 알았고, 큰 잔 가득 우유를 담아 왔습니다. 젊은이는 그 우유를 단숨에 마셨습니다. 그러자 온몸에서 새로운 힘이 솟아나는 듯했습니다. "우윳값으로 ..

[ 조은글 5229호 - 사람이 선물입니다 ] [내부링크]

내가 행복한 사람은 남을 불행하게 만들려고 애쓰지 않습니다. 내가 불행한 사람은 남을 행복하게 할 능력이 없습니다. 어디서 태어날지 선택할 수 없지만, 어디서 죽을지 선택할 수 있습니다. 어떤 얼굴로 태어날지 선택할 수 없지만, 어떤 얼굴로 죽을지 선택할 수 있습니다. 사람은 실수하는 것이 정상이고, 신은 용서하시는 것이 정상입니다. 사랑이란, 실수하는 사람을 용서하는 것이 정상 이라는 깨달음입니다. 사랑은 사람과 하늘이 나눠 가진 성품입니다. 생각은 현실의 씨앗입니다. 절망은 희망의 뿌리입니다. 실패는 기회의 줄기입니다. 한계는 비전의 잎입니다. 끝까지 인내하면 꽃을 피웁니다. 그런데 그 꽃마저 져야 열매를 맺습니다. 인생의 목적은 열매를 맺는 삶입니다. 우리가 일을 하지만 일보다 더 중요한 것이 있습..

[ 조은글 5228호 - 그리고 그 다음에는 ] [내부링크]

이탈리아 우르바노 대학교 정문에 가면 "그리고 그 다음에는? (And after that?)" 이라는 글귀가 새겨져 있다고 합니다 그것이 새겨지게 된 이유는 16세기에 법대를 다니는 한 가난한 고학생이 청운의 꿈을 품고 공부를 하고자 했지만 가난해서 뜻을 이루기가 어려워습니다 그래서 자선 사업을 하는 유명한 할머니 한분을 찾아 갔답니다 자기의 경제적인 어려움을 호소하면서 도움을 요청했습니다 이청년의 고백을 들으면서 할머니가 물었습니다 "청년이 하려는 계획은 무엇이오?" “예, 먼저 열심히 공부해서 법대를 마쳐야겠습니다" [그리고 그 다음에는?] “대학을 졸업한 다음 에는 변호사가 되어 가난한 사람들 편에서 정의구현에 힘쓰겠습니다" [그리고 그 다음에는?] "그리고 .. 변호사 사업을 좀더 확장해서 더많은..

[ 조은글 5227호 - 임상옥과 마커스 이야기 ] [내부링크]

조선후기의 거상 임상옥은 소인은 장사를 통해 이윤을 남기지만, 대인은 무역을 통해 사람을 남긴다는 유명한 말을 남겼습니다. 그리고 재물은 흐르는 물과 같고 사람은 바르기가 저울과 같다는 말도 남겼습니다. 그러면서 물이 7부 이상 차면 모든 물이 뚫린 구멍으로 새어버리는 계영배의 교훈도 잊지 않고 스스로를 다독거려 홍경래의 난 때 거액의 자금을 지원(사실상 강탈당함) 하고도 역적으로 몰리지 않고 살아 남았습니다. 정조로부터 벼슬을 받아 부임한 고을을 자급자족 할 수 있는 고을로 탈바꿈 시키는 탁월한 재주도 발휘합니다. 솔개가 닭을 채 가는 것을 보고 자신의 운명을 다한 것을 알고서 모든 재산을 사회에 환원합니다. 서양에 임상옥과 대조되는 사람이 있습니다. 아테네에서 선박 건조를 하는 마커스는 어느날 매우 ..

[ 조은글 5226호 - 내일은 내일의 해가뜬다 ] [내부링크]

어느 여기자가 직장생활 후 얼마 안 되어 26세에 발목을 다쳐 그만두게 되자 인생이 무너지는 좌절과 낙심을 겪었다. 그러나 그녀는 마음을 다잡고 펜을 다시 잡고 소설을 쓰기 시작 했다. 생전 처음으로 쓰는 소설이어서 스토리가 제대로 이어지지 않았지만 인내하면서 소설 한 권을 쓰는 데 무려 10년이란 시간이 걸렸다. 그 원고를 가지고 3년 동안 이곳저곳 출판사를 다녔지만 풋내기가 쓴 소설을 누구도 거들떠보지 않고 읽어 보려고하지 않았고 나중에는 원고가 다 헤어져서 너덜너덜 해질 정도 였다. 어느 날 어떤 출판사 사장을 만나는데 만날 길이 없어서 출장가는 시간에 맞추어서 기차를 탈 때 붙잡고서, "사장님, 여행하는 동안 이 원고를 딱 한 번만 읽어 주세요.” 사장은 너무 간절하여 어쩔 수 없이 원고를 받아 ..

[ 조은글 5225호 - 가장 중요한 일 ] [내부링크]

어느 한 신사가 어머니에게 보내드릴 꽃다발을 주문하기 위해서 꽃 가게 앞에 차를 세웠습니다. 그런데 한 소녀가 꽃 가게 앞에 앉아 울고 있는 것이었습니다. 신사는 그 소녀에게 다가가 왜 우는지 물었습니다. 그러자 소녀가 신사에게 말했습니다. “엄마에게 드릴 꽃을 사고 싶은데 제가 가지고 있는 돈은 저금통에 들어 있는 동전 몇 개가 전부에요.” 신사는 미소를 지으면서 말했습니다. “그래? 그럼 나랑 같이 들어가자. 내가 꽃을 사줄게.” 신사는 소녀를 데리고 가게 안으로 들어가 소녀에게 꽃을 사주었습니다. 그리고 자기 어머니에게 배달할 꽃다발도 함께 주문하였습니다. 신사는 가게를 나오면서 소녀에게 집까지 태워다 주겠다고 하자 소녀는 신사에게 정말 고맙다고 말하면서 길을 안내하였습니다. 그런데 한참을 달려 도..

[ 조은글 5224호 - 인격의 가치 ] [내부링크]

사람을 판단하는 기준은 과연 무엇일까요? 과거 '링컨'대통령의 일화에서 그 해답을 얻어볼 수 있을 것입니다. '링컨' 대통령 아버지의 직업은 구두 만드는 제화공이었습니다. 그래서 당시에 귀족들은 그런 '링컨'이 대통령에 당선된 것을 몹시 못마땅하게 여겼습니다. '링컨'이 상원의회에서 대통령 취임 연설을 하려고 했을 때였습니다. 한 연로한 귀족이 '링컨'에게 다가와서 이렇게 말했습니다. "미스터 '링컨', 어쩌다 당신이 이 나라의 대통령이 되기는 했지만 예전에 당신 아버지가 우리 식구들의 구두를 만들기 위해 우리 집을 드나들곤 했다는 것을 잊지 말아주기 바라오. 또한, 여기에는 당신의 아버지가 만든 구두를 신고 있는 상원의원들이 많이 있소. 그러니 당신의 출신을 잊지 마시오." 이때 '링컨'은 취임사를 통..

[kotlin] 안드로이드 당겨서 새로고침 기능 만들기 [내부링크]

SwipeRefreshLayout을 사용하여 당겨서 새로고침 기능 구현하기 build.gradle 파일에 설정 추가후 Sync Now 버튼을 클릭하여 의존성 설치 dependencies { implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" } 사용할 간단 샘플예제 화면 미리보기 당겨서 놓으면 새로고침 처리 package cbw.example.myapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.TextView import androidx.swiperefreshlayout.widget.Swip..

ear 만들기(세션공유) [내부링크]

어플리케이션간 세션공유 war 파일을 만든후에 war 파일을 묶어서 ear 로 만들어서 배포한다. war 만들기 Jar cvf session.war *.jsp WEB-INF ear 만들기 jar cvf session.ear session2.war session.war ear 파일 만들후에 ear 파일내의 META-INF 디렉토리에 jboss-all.xml 파일에서 shared-session-config 엘리먼트를 포함해야 한다. /

[ 조은글 5222호 - 생활 속 동의보감 처방전 ] [내부링크]

01. 눈이 침침하면 결명자차를 드세요 02. 포도는 껍질까지 드세요.(골다공증 예방약) 03. 성인병 예방에 해바라기씨가 그만입니다. 04. 위장, 비장 기능이 약할 때 밤을 드세요. 05. 콜레스테롤이 걱정되면 녹차 요구르트를 드세요. 06. 스트레스 해소에는 토란줄기가 그만입니다. 07. 신장이 약한 분은 달팽이를 달여서 마시세요. 08. 소변보기가 어려울 땐 가오리가 정말 좋아요 09. 피로할 때 인삼대신 잔대(일명백삼)를 드셔보세요 10. 고혈압이 걱정일 때 뽕나무차를 마시세요. 11. 기억력 증진에 오미자가 좋습니다. 12. 마음이 불안하고 장이 나쁠 때 사과파이를 드세요. 13. 무 꿀 즙은 감기 특효약이랍니다. 14. 몸의 각종 신진대사를 돕는 다시마를 많이 드세요. 15. 천식에 비파차 ..

[ 조은글 5223호 - 멋진 인생, 자신의 삶에 너무 집착하지 말자 ] [내부링크]

삶 자체에 만 지나치게 집착하기 때문에 자신을 잃어갈수 있습니다. 자신을 믿읍시다. 자신감이 힘 입니다. 자신은 이 세상에 하나 뿐인 존재 입니다. 자기 만이 할 수 있는 일이 있습니다. 긍정적이고 적극적인 사고를 합시다. 인생을 자신의 것으로 만들고 사랑을 자신의 것으로 만듭시다. 참다운 나로 살아 갑시다. 나 만이 할 수 있는 일을 찾아 열심히 노력 합시다. 체면을 벗어 던지고 눈치를 보지 말고 내 길을 가면 되는 것 입니다. 인간적인 자신의 삶을 영위 합시다. 삶을 배우기 위해 슬픔이 필요 할 수도 있습니다. 삶을 배우기 위해 고통이 필요 할 수도 있습니다. 삶을 배우기 위해 좌절이 필요 할 수도 있습니다. 슬픔도 인생의 일부 입니다. 고통도 인생의 일부 입니다. 좌절도 인생의 일부 입니다. 슬픔을..

아파치+wildfly 연동 [내부링크]

mod_jk 컴파일 apxs 모듈설치 확인 find / -name "*apxs*" 미 설치시, 아래 명령어로 설치 yum install httpd-devel Apache Connector 설치 //wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.41-src.tar.gz wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.tar.gz gcc 가 설치 안되어 있으면 설치 컴파일러 yum install gcc 압축을 푼다 tar xvzf tomcat-connector-1.2.46.-s..

아파치 웹서버 forbidden [내부링크]

ls - Z drwxrwxr-x. root root system_u:object_r:httpd_sys_content_t apache httpd_sys_content_t 상태가 되어야 웹서비스가 외부에서 접속가능하다. Ls -Z 명령으로 확인후 안되어 있으면 아래 명령어로 변경한다. chcon -h system_u:object_r:httpd_sys_content_t ./apache Apache 소스 설치 및 구동 우선 설치 할 apache 소스는 wget 명령어 또는 winscp로 CentOS로 옮깁니다. tar -zxvf httpd-2.4.37.tar.gz로 압축을 풀면 아래와 같이 폴더가 생깁니다. httpd-2.4.37 apache 설치에는 apr과 apr-util 모듈이 필요합니다. 아래와 같이 모..

wildfly 기동 중지 [내부링크]

/* wildfly 기동 */ nohup /home/jboss/wildfly-19.0.0.Final/bin/standalone.sh -c standalone-ha.xml 1>/dev/null 2>&1 & /* wildfly 중지 */ jboss-cli.sh --controller=10.10.10.61:19990 -c command=":shutdown" /* 기동시 포트번호 변경 */ nohup ./standalone.sh -Djboss.server.base.dir=/jboss-eap-6.3/test/ -Djboss.socket.binding.port-offset=100 1>/dev/null 2>&1 & nohup standalone.sh 1>/dev/null 2>&1 & - 기존의 standalone.s..

wildfly 자동배포 [내부링크]

standalone.xml파일에 Jboss 소스자동반영 옵션 두군데 추가

mysql 계정설정및 접속방법팁 [내부링크]

mysql root 비밀번호 초기화 방법 1. mysql 기동을 종료 시킨후에 mysqld --skip-grant 2. mysql -uroot 3. use mysql 4. update user set password=password('1234') where user='root'; 5. flush privileges; root 계정에 권한부여 6. GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY '비밀번호' WITH GRANT OPTION; 7. flush privileges; 8. exit 서비스 재기동후 mysql root 계정 접속 9. mysql -u root -p 를 입력후 Enter password: 에서 비밀번호 입력후 가동 데이타베이스 생성 ro..

신규 사용자 계정 생성 및 백업 [내부링크]

/* 사용자 계정 생성 */ 1. NEWUSER 계정 생성 /* NEWUSER 테이블 스페이스 생성 */ CREATE TABLESPACE NEWUSER_TBL DATAFILE 'c:\Tibero\tibero5\database\naqs\NEWUSER_TBL_001.dtf' SIZE 10485760 AUTOEXTEND ON NEXT 10485760 LOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE ; CREATE TABLESPACE NEWUSER_IDX DATAFILE 'c:\Tibero\tibero5\database\naqs\NEWUSER_IDX_001.dtf' SIZE 10485760 AUTOEXTEND ON NEXT 10485760 LOGGI..

Temp Tablesapace에 Temp File 추가 [내부링크]

alter tablespace temp add tempfile 'C:\Tibero\tibero5\database\naqs\temp_002.dbf' size 1G autoextend on next 10m;

tbImport 특징 및 사용 시 고려 사항 [내부링크]

가. 개요 tbImport 유틸리티는 tbExport로 추출한 파일을 다른(혹은 동일한) 티베로 데이터베이스에 저장하는 기능을 수행한다. tbImport의 수행은 tbExport와 달리 데이터가 변경되거나 오브젝트가 신규 구성(혹은 재구성)되므로 다음을 고려하여 tbExport보다 신중하게 작업 시간대를 선택하여야 한다. 1. tbImport 대상 오브젝트 및 관련 오브젝트들과 연관된 업무(조회, 변경 등)가 없어야 한다. 2. tbImport 작업 이후 데이터 및 오브젝트들의 이상 여부 검증 및 조치 시간이 충분해야 한다 3. tbImport 작업 또한 자원을 많이 사용하는 무거운 업무이므로 데이터베이스 부하가 적은 시간대여야 한다. 나. tbImport 특징 및 사용 시 고려 사항 1. tbExpor..

기존에 사용자계정이 있을경우 tbimport방법 [내부링크]

/* 기존 TEST 사용자 계정 삭제후 다시 등록 */ select * from dba_data_files where tablespace_name = 'TEST_TBL'; DROP USER "TEST" CASCADE; CREATE USER "TEST" IDENTIFIED BY test2021 DEFAULT TABLESPACE "TEST_TBL" ; /* 암호변경시 명령어 */ alter user TEST identified by test2022; /* 통계생성 */ EXEC DBMS_STATS.GATHER_SCHEMA_STATS('TEST'); DROP TABLESPACE TEST_TBL INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; CREATE TABL..

시퀀스 현재값 변경하기 [내부링크]

1. 시퀀스의 현재 값을 확인 SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'TB_ZZTRACE_SQ01'; 2. 시퀀스의 INCREMENT 를 현재 값만큼 빼도록 설정 (아래는 현재값이 999999 일 경우) ALTER SEQUENCE TB_ZZTRACE_SQ01 INCREMENT BY -999999; 3. 시퀀스에서 다음 값을 가져 온다 SELECT TB_ZZTRACE_SQ01.NEXTVAL FROM DUAL; 4. 현재 값을 확인 해보면 -999999 만큼 증가 했다 SELECT TB_ZZTRACE_SQ01.CURRVAL FROM DUAL; 5. 시퀀스의 INCREMENT 를 1로 설정 한다 ALTER SEQUENCE TB_ZZTRAC..

Transaction Lock 및 오래된 SESSION 삭제 [내부링크]

select 'alter system kill session (' || sid || ',' || serial# || ');' from v$session where 1=1 and sid in ('616','773','788','793','801','818') --and status = 'RUNNING'; ; select * from v$transaction ---------------------------------------------------------------------- -- 오래동안 실행중인 SESSION 지우기 declare v_sql varchar2(2000); begin for X in ( select distinct 'alter system kill session (' || sid ||..

티베로 사용자 권한생성 [내부링크]

--db사용자 추가및 테스트 --티베로 테스트 테이블 스페이스 생성 CREATE TABLESPACE EXAM_TBL DATAFILE '/tibero_naqs/tbdata/exam_tbl.tbf' SIZE 100M AUTOEXTEND OFF EXTENT MANAGEMENT LOCAL AUTOALLOCATE; CREATE TABLESPACE EXAM_IDX DATAFILE '/tibero_naqs/tbdata/exam_idx.tbf' SIZE 100M AUTOEXTEND OFF EXTENT MANAGEMENT LOCAL AUTOALLOCATE; --사용자 추가 CREATE USER EXAM IDENTIFIED BY EXAM DEFAULT TABLESPACE EXAM_TBL; --사용자 삭제 DROP USER..

티베로 통계자료 생성 [내부링크]

/* 통계 자료 생성 */ select 'EXEC DBMS_STATS.GATHER_SCHEMA_STATS (ownname => ''' || username || ''',method_opt => ''FOR ALL COLUMNS SIZE 10'',cascade => true, no_invalidate => false);' from dba_users where username not in ('SYS','TIBERO','SYSGIS','TIBERO1','SYSCAT') ;

테이블 스페이스 계산 [내부링크]

/* 테이블 스페이스 사용량 계산 */ with t1 as ( select distinct tablespace_name from dba_tables where owner in ( 'TIBERO', 'TEST' ) ) select --ddf.tablespace_name "Tablespace Name", ddf.tablespace_name , ddf.bytes/1024/1024 "Bytes(MB)", ddf.maxbytes/1024/1024 "MaxBytes(MB)", (ddf.bytes - dfs.bytes)/1024/1024 "Used(MB)", round(((ddf.bytes - dfs.bytes) / ddf.bytes) * 100, 2) "Percent(%)", dfs.bytes/1024/1024 "..

[PostgreSQL] random 데이터 생성 [내부링크]

/* postgresql random 데이터 생성 */ SELECT LPAD(COALESCE(trunc(random() * 100000000 + 1)::text,'0'),8,'0') FROM generate_series(1,100) PGSQL에서 SELECT random(); 사용하면 0.0

[PostgreSQL] 암복화 함수 [내부링크]

/* 암호화 KEY 테이블 생성 */ CREATE TABLE NAQSCOM.ENCRYPT_KEY ( KEY_STR VARCHAR(100), CHG_DTTM TIMESTAMP ) TABLESPACE NAQSCOM_TBL COMMENT ON TABLE NAQSCOM.ENCRYPT_KEY IS '암호화 key'; COMMENT ON COLUMN NAQSCOM.ENCRYPT_KEY.CHG_DTTM IS '변경일시'; COMMENT ON COLUMN NAQSCOM.ENCRYPT_KEY.KEY_STR IS 'KEY 값'; /* 한건 인서트후 일정한 주기로 암호화키를 변경하여 보안 관리를 한다. */ /*암/복호화 KEY를 갱신한다.*/ UPDATE naqscom.encrypt_key SET KEY_STR = LPA..

[ 조은글 5221호 - 용감한 노파 ] [내부링크]

옛날 독일의 어떤 마을에서는 해마다 겨울이면 축제를 열었다. 온 마을 사람들이 꽁꽁 언 강의 얼음판 위에 천막을 쳐놓고 유흥을 즐겼다. 그날도 그런 축제의 밤이었다. 밝은 달이 두둥실 떠올라 얼음판을 비췄다. 교교한 달빛 아래 모든 마을 사람들이 흥겨워하고 있는데 오직 혼자 사는 늙은 노파 한 사람만 강둑에 있는 오막살이에 남아, 멀리 사람들을 바라보고 있었다. 노파는 남편을 오래 전에 바다에 잃고, 사랑하는 아들마저 병마에 빼앗긴 불쌍한 사람이었다. 노파는 멀리서나마 축제의 광경을 바라보면서, 남편과 아들이 살아있던 때의 행복했던 축제날을 추억했다. 그런데 그때, 갑자기 서쪽 하늘의 작은 구름이 수평선 너머로 점점 커져 피어오르는 것이 보였다. 순간 엄청난 두려움이 노파를 엄습했다. 노파는 뱃사공의 아..

ROW를 한줄로 [내부링크]

오라클에서 여러 행의 컬럼 값을 하나로 합치기 위해서는 XMLAGG(오라클 9i 이하), WM_CONCAT(오라클 10g~11g R1) 함수를 사용하였다. 오라클 11g R2 버전부터 WM_CONCAT 함수를 사용을 할 수 없으며 LISTAGG 함수를 사용해야 한다. (WM_CONCAT, XMLAGG 사용법) LISTAGG( ) 함수는 그룹 함수이기 때문에 GROUP BY 또는 PARTITION BY 절과 함께 사용해야 한다. WM_CONCAT 함수는 DISTINCT를 사용할 수 있으나, LISTAGG 함수는 사용할 수 없다. 그러나 정규식 함수를 사용하여 중복을 제거할 수 있으며 ORDER BY 절을 사용할 수 있어서 값의 정렬이 가능하다. LISTAGG([합칠 컬럼명], [구분자]) WITHIN GR..

테이블명 변경 [내부링크]

테이블명 변경 ALTER TABLE [원본 테이블] RENAME TO [바꾸려는 테이블명];

프로시저에서 실행명령어 [내부링크]

EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_TABLE';

년초,월초 [내부링크]

SELECT TRUNC(SYSDATE, 'MM') AS MON, --월초 TRUNC(SYSDATE, 'YYYY') AS YEAR, --년초 TRUNC(ADD_MONTHS(SYSDATE, -12),'YYYY') AS BEFORE_YEAR --작년초 FROM DUAL;

시퀀스값 변경 [내부링크]

select 'alter sequence ' || sequence_name || ' increment by 1000;' from dba_sequences where sequence_owner = 'USER'; select 'select ' || sequence_name || '. nextval from dual;' from dba_sequences where sequence_owner = 'USER';

SQL기초_컬럼삭제,수정,추가Comment추가 수정 삭제 등등 [내부링크]

컬럼관련 1.컬럼추가 alter table 테이블명 add ( 컬럼명 테이터타입 ) ex) alter table insp_team_assgn_dtl add ( assgn_finish_dt DATE ) 2.수정 ALTER TABLE dept MODIFY ( deptName varchar2(100) [NULL]|[NOT NULL] ); 3.삭제 ALTER TABLE dept drop column address ; 4.제약조건삭제 ALTER TABLE userTable DROP PRIMARY KEY: ALTER TABLE userTable DROP CONSTRAINT userTb_fk_userid; 5.외래키 추가 ALTER TABLE [테이블이름] ADD CONSTRAINT [외래키이름] FOREIGN ..

오라클 환경설정 파일 spfile, pfile [내부링크]

ORACLE INSTANCE 가 START UP 시에 SPFILE과 PFILE을 읽어 들어 파라미터 값을 적용시킨다. SPFILE이 있으면 SPFILE을 읽게 되며, SPFILE가 존재 하지 않으면 PFILE을 읽게 된다. 0. pfile과 spfile의 기본 경로 및 네이밍 기본적으로 pfile과 spfile은 $ORACLE_HOME/dbs/ 에 위치한다. pfile은 initdXXXX.ora 로 정의되어 있고 spfile은 spfileXXXX.ora로 저정되어 있다. 여기서 XXXX는 SID값이다. 1. spfile 사용하기 SQL> show parameter spfile 결과 값에서 VALUE 값이 현재 사용되는 spfile 이다. 만약 VALUE 값이 없다면 pfile을 사용하여 startup 된..

리눅스 오라클 sqlplus history 기능 사용하기 [내부링크]

yum install rlwrap rlwrap를 설치 후에 명령어 실행할때 앞이 붙여주고 실행하면 오라클 sqlplus에서 history 기능을 사용할수 있다. 사용 방법은 실행할 프로그램 앞에 rlwrap를 붙여주는 것인데, 좀 더 편하게 작업하기 위해서 sqlplus를 'rlwrap sqlplus'로 alias를 걸어주었다. .bashrc 나 .profile과 같은 파일 안에 아래와 같이 적어두면 적용이 된다. alias sqlplus='rlwrap sqlplus'

윈도우 서버용 오라클 SID 수정 방법 [내부링크]

윈도우 서버용 오라클 SID 수정 방법을 찾아봤지만 쉽게 찾을 수 없었다. 그래서 수정하는 방법보다 윈도우 서버에 설치된 오라클 인스턴스의 SID를 삭제하고 다시 설치하는 방법으로 했다. 물론 유닉스에 대한 방법은 설명해둔 블로거가 있었다. 그렇지만 윈도우 서버용은 설명해둔 곳이 없어서 위와 같은 방법으로 해결한 것이다. 생각하기에 SID를 변경할 수 있을 것 같은데 그 방법을 찾기 쉽지 않아 존재하는 것을 삭제하고 다시 설치한 것이다. 일단 이 방법으로 우회적으로 해결한 후 차후에 변경 방법을 알게 되었을 경우에 다시 기록할 생각이다. 윈도우 서버에 설치된 오라클 인스턴스 SID를 수정하는 방법은 두가지 과정을 통해서 했다. 가. 존재하는 인스턴스를 삭제한다. 나. 새로운 인스턴스를 설치한다. 이렇게 ..

암호화후 복호화 하기 split_part사용 [내부링크]

create extension pgcrypto; select encode(encrypt(convert_to('홍길동','utf8'),'ENC_KEY2','aes'),'hex'); select convert_from(decrypt(decode('eca7e7bfbcd093229fb08e80fb0ee27f8368409e6acd8566c9c160766f897291d8f105397cf8410af16864f4099584cb','hex'),'ENC_KEY2','aes'),'utf8') as decrypt_id; select lgn_id, pswd, to_char(now(),'yyyymmddHH24MISS') as dt, encode(encrypt(convert_to( 'user_id#' || lgn_id || '#e..

[PostgreSQL] 시간 계산하기 [내부링크]

/* 현재시간과 지난시간의 차이를 구한다 */ select now(), extract(epoch from now())::integer as currentTime, extract(epoch from to_timestamp('20210908165456','YYYYMMDDHH24MISS'))::integer as oldTime, extract(epoch from now())::integer - extract(epoch from to_timestamp('20210908171731','YYYYMMDDHH24MISS'))::integer as diffTime ; select now()::timestamp select '2021-09-08 16:54:56'::timestamp as te 시간 타입 postgresql..

리눅스 오라클 기동 [내부링크]

sqlplus를 시작하여 나오는 SQL> 프롬프트에서 인스턴스를 시작/중지할 수 있다 sqlplus '/as sysdba' startup shutdown 리스너 시작/중지 lsnrctl start lsnrctl stop

[ 조은글 5220호 - 함께 하는 여행 ] [내부링크]

저녁 무렵, 젊은 여성이 전철에 앉아 있었다. 창밖으로 노을을 감상하며 가고 있는데 다음 정거장에서 한 중년의 여인이 올라 탔다. 여인은 큰소리로 투덜거리며 그녀의 옆자리 좁은 공간에 끼어 앉았다. 그러고는 막무가내로 그녀를 밀어붙이며 들고 있던 여러 개의 짐가방을 옆에 앉은 그녀의 무릎 위에까지 올려 놓았다. 그녀가 처한 곤경을 보다 못한 맞은편 사람이 그녀에게 왜 여인의 무례한 행동에 아무런 항의도 하지 않고 그냥 앉아 있느냐고 물었다. 그러자 처녀가 미소지으며 말했다. "사소한 일에 화(禍)를 내거나 언쟁을 할 필요는 없지 않겠어요? 우리가 함께 여행하는 시간은 짧으니까요. 나는 다음 정거장에 내리거든요." 함께 여행하는 짧은 시간을 우리는 얼마나 많은 다툼과 무의미한 논쟁으로 우리의 삶을 허비하고..

리눅스 오라클 설치 [내부링크]

#pdksh 설치 파일은 yum 지원을 안해서 wget 으로 다운 rpm 으로 설치 # /usr/bin/ksh 파일이 서로 충돌 해서 --force 스위치 줌 rpm -Uvh --nodeps --force pdksh-5.2.14-30.x86_64.rpm Sys/oracle System/oracle -설치전 준비사항- Oracle 11gR2를 설치하기 전에 설치파일을 미리 준비해 두도록 한다. -설치파일 다운로드- 다운로드 경로 : http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 경로 하단에 자신의 OS에 맞는 설치파일을 받아 설치를 진행 할 수 있다 설치파일을 다운로드 받기 위해서는 ORACLE에 회원가입..

오라클 sysdba export [내부링크]

exp, imp 명령어가 가능한 환경(Oracle이 설치되어있다던지)에서 - Export exp ID/PWD@IP:PORT file=FILENAME.dmp Example) IP : 192.168.0.99 port : 1521 sid : ORA11 > exp userid/[email protected]/ORA11 file=abcd.dmp >exp system/[email protected]:1521/orcl file=gis.dmp log=gis.log full=y direct=y - Import imp ID/PWD@IP:PORT file=FILENAME.dmp Example) > imp userid/[email protected]/ORA11 file=abcd.dmp full=y Imp시..

오라클 10g설치 [내부링크]

오라클 (Oracle 10g) 설치 설치전 주의 사항 - 컴퓨터 계정명 확인하기(한글안됨) - 설치경로 한글경로 안됨 Oracle 다운로드 사이트 http://www.oracle.com/technology/software/products/database/index.html Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit) 10201_database_win32.zip http://www.oracle.com/technetwork/database/10201winsoft-095341.html (계정필요) 윈도우7 에서는 다음에 제시한 오라클 10g 버전을 추천합니다. 파일을 다운 ..

사용자의 계정의 락(lock)을 해제한다. [내부링크]

SCOTT 사용자의 계정의 락(lock)을 해제한다. SQL>alter user scott account unlock;

AIX서버 날짜타입 오류 [내부링크]

.profile 파일에 옵션 추가 # 오라클 쿼리에서 날짜 오류시 profile파일에 추가# export NLS_DATE_FORMAT=yyyymmdd ######################################## PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/usr/java7_64/bin:/sbin:. export PATH if [ -s "$MAIL" ] # This is at Shell startup. In normal then echo "$MAILMSG" # operation, the Shell checks fi # periodically. set -o vi export HOST=`hostname` PS1='[$HOST:$PW..

All_tab_comments [내부링크]

select * from all_tab_comments where comments like '%부위%'

오라클컬럼변경 [내부링크]

테이블 생성 create table test ( idx number not null; ); * 테이블 명 변경 rename after_table to before_table; * 테이블 정보 desc test; * 테이블에 addField 컬럼 추가 alter table test add(addField number(10)); -- #(추가될 COLUMN 의 위치는 지정할 수 없다. 새로운 COLUMN 은 마지막 위치에 생성된다.) * 테이블 addField 컬럼명을 modifyField 컬럼명으로 변경 alter table test rename column addField to modifyField; -- #COLUMN 의 크기를 확장할 수 있다. -- #데이타가 들어있지 않으면 COLUMN 의 크기를 ..

여러행을 하나의 컬럼으로 합치기 [내부링크]

--가상 테이블 WITH TEST_TABLE AS ( SELECT '고구려' COUNTRY, '1대' ST, '동명성왕' KING_NM FROM DUAL UNION ALL SELECT '고구려' COUNTRY, '3대' ST, '대무신왕' KING_NM FROM DUAL UNION ALL SELECT '백제' COUNTRY, '1대' ST, '온조왕' KING_NM FROM DUAL UNION ALL SELECT '고구려' COUNTRY, '2대' ST, '유리왕' KING_NM FROM DUAL UNION ALL SELECT '백제' COUNTRY, '3대' ST, '기루왕' KING_NM FROM DUAL UNION ALL SELECT '신라' COUNTRY, '2대' ST, '남해왕' KING_NM..

오라클ROLE [내부링크]

ROLE 은 권한들의 묶음이다. . ROLE 은 필요에 따라 ENABLE/DISABLE 될 수 있다. . ROLE 은 사용자뿐만 아니라 ROLE에게도 부여 될수 있으나 자신에게는 부여될 수 없다. . 두개의 ROLE이 서로에게 부여 될 수 없다. . ROLE 은 PASSWORD를 가질수 있다. . ROLE 을 사용하면 DATABASE 사용자의 권한관리를 단순화 시킨다. ROLE 사용시 혜택 - > 권한 부여 작업의 감소, 동적이 권한 관리(Role 변경시 Role 부여 받은 모든 사용자에게 갱신) , 권한의 활성화/ 비 활성화(enable, disable 가능) ROLE - ROLE 생성 CREATE ROLE name NOT IDENTIFIED; CREATE ROLE name IDENTIFIED BY p..

오라클 권한 주기 [내부링크]

오라클 권한 주기 - 검색 권한 GRANT SELECT ON 권한을줄테이블명 TO 권한을받을사용자계정; - 입력 수정 삭제 권한 GRANT INSERT, UPDATE, DELETE ON 권한을줄테이블명 TO 권한을받을사용자계정; - FUNCTION 권한 주기 GRANT EXECUTE ON 권한을줄함수명 TO 권한을받을사용자계정; SYNONYM SYNONYM 이란 테이블이나 함수명 을 다른 계정에서 접근하기 위해서 계정명.테이블명, 계정명.함수명 으로 접근 하여야 한다. 그냥 테이블명, 함수명으로 접근하기 위해 SYNONYM을 설정 한다. - 테이블 시노님 생성 CREATE SYNONYM 시노님명칭 FOR 계정명.테이블명; - 함수 시노님 생성 CREATE SYNONYM 시노님명칭 FOR 계정명.함수명; ..

Db펌프 작업예상시간 [내부링크]

--작업예상시간 select sid, serial#, sofar, totalwork from v$session_longops where opname='DATAPUMP2' -- job_name 을 대문자로 입력 and sofar!=totalwork ;

멀티업데이트 [내부링크]

MERGE INTO TB_CONTRACT_MST M USING ( SELECT CONTRACTMST_NO, MAX(CUST_CRTFC_DT) AS CUST_CRTFC_DT FROM TB_CONTRACT_MST_AUTH GROUP BY CONTRACTMST_NO ) A ON ( M.CONTRACTMST_NO = A.CONTRACTMST_NO ) WHEN MATCHED THEN UPDATE SET ETC_1 = CUST_CRTFC_DT

프로시저 호출 [내부링크]

DECLARE OUT_RETURN VARCHAR2(200); BEGIN PQS_OWN.P_ISO_TO_RESULT(1295986, 1,OUT_RETURN); DBMS_OUTPUT.put_line( OUT_RETURN); END;

프로시저 TEXT검색 [내부링크]

--프로시저 TEXT검색 SELECT * FROM USER_SOURCE WHERE 1=1 AND TYPE ='PROCEDURE' --패키지나 다른 부분을 검색 하고 싶다면 대문자로 입력 AND TEXTLIKE '%REG_DT%' --여기에 찾고 싶은 텍스트 입력 ORDER BY NAME, LINE --FUNCTION TEXT검색 SELECT * FROM USER_SOURCE WHERE 1=1 AND TYPE ='FUNCTION' AND TEXTLIKE '%REG%' ORDER BY NAME, LINE

UPDATE 여러테이블 조인 [내부링크]

MERGE /*+ USE_HASH(A B) */ INTO TN_NPQ_LAB_QRANT_ITM A USING ( SELECT DISTINCT A.LAB_RQST_NO, A.REC_SEQ, C.PRDLST_NM, C.BOT_NM FROM TN_NPQ_LAB_QRANT_ITM A, TN_NPQ_LAB_QRANT_REQST B, TN_NPQ_REQST_DETAIL C WHERE A.LAB_RQST_NO = B.LAB_RQST_NO AND B.OFF_CD = C.OFF_CD AND B.REC_NO = C.REC_NO AND A.REC_SEQ = C.REC_SEQ AND C.OFF_CD = '10' AND C.REC_NO = '17292334' ) B ON (A.LAB_RQST_NO = B.LAB_RQST_NO ..

[PostgreSQL] 트리거 disable & foreign key disable [내부링크]

ALTER TABLE naqsifh.tn_exmng_i DISABLE TRIGGER tg_n_exmng_i_ar; ALTER TABLE naqsifh.tn_exmng_i ENABLE TRIGGER tg_n_exmng_i_ar; /* 테이블에 있는 트리거 전체 disable postgresql에는 foreign key disable기능이 없다 하지만 Postgres의 참조 무결성은 트리거에 의해 구현되면 테이블에서 트리거를 비활성화 시키면 오라클에서 foreign key disable과 같은 기능을 한다. */ ALTER TABLE TN_MENU_ATCHMNFL_M DISABLE TRIGGER ALL; ALTER TABLE TN_MENU_ATCHMNFL_M ENABLE TRIGGER ALL; /* 트리거 ..

[PostgreSQL] 트리거 생성 [내부링크]

PostSQL은 트리거 생성한 후에 프로시저를 호출하여 처리한다. -- 트리거 생성 CREATE TRIGGER TG_N_MENU_ATCHMNFL_M_AR AFTER INSERT OR UPDATE ON TN_MENU_ATCHMNFL_M FOR EACH ROW EXECUTE PROCEDURE TG_PR_N_MENU_ATCHMNFL_M_AR(); -- 트리거 삭제(트리거이름 ON 테이블이름) DROP TRIGGER IF EXISTS TG_N_MENU_ATCHMNFL_M_AR ON TN_MENU_ATCHMNFL_M; -- 트리거 프로시저(FUNCTION) CREATE OR REPLACE FUNCTION TG_PR_N_MENU_ATCHMNFL_M_AR() RETURNS TRIGGER AS $$ DECLARE BE..

트리거 disable [내부링크]

ALTER TABLE naqsifh.tn_exmng_i DISABLE TRIGGER tg_n_exmng_i_ar; ALTER TABLE naqsifh.tn_exmng_i ENABLE TRIGGER tg_n_exmng_i_ar;

[PostgreSQL] 트리거 조회 [내부링크]

--foreign key 걸린테이블 목록확인 SELECT kcu.table_name AS child_table, kcu.table_schema AS child_schema, kcu.column_name AS child_column, kcu.constraint_name AS child_constraint FROM information_schema.table_constraints tc JOIN information_schema.key_column_usage kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage ccu ON ccu.constraint_name = tc.constraint_nam..

[PostgreSQL] Dblink insert,update [내부링크]

-- Drop table -- DROP TABLE naqsifh.tn_menu_atchmnfl_m; CREATE TABLE tn_menu_atchmnfl_m ( menu_id varchar(20) NOT NULL, atchmnfl_posbl_mg numeric(16, 4) NULL, del_yn bpchar(1) NOT NULL, register_id varchar(20) NOT NULL, reg_dt timestamp NOT NULL, updusr_id varchar(20) NOT NULL, mdfcn_dt timestamp NOT NULL, CONSTRAINT pk_n_menu_atchmnfl_m PRIMARY KEY (menu_id) ) -- Table Triggers create trigger t..

[ 조은글 5219호 - 화종구출 (禍從口出) ] [내부링크]

"모든 재앙은 입으로부터 나온다."는 뜻입니다. 세상의 제일 무서운 폭력은 바로 언어(言語) 입니다. 그렇기 때문에 함부로 입을 놀리거나 상대방이 듣기 싫어하는 말을 하지말아야 합니다. 맹렬한 불길이 집을 태워버리듯 말을 조심하지 않으면 결국 그것이 불길이 되어 내몸을 태우게 됩니다. 자신의 불행한 운명은 바로 자신의 입에서부터 시작됩니다. 입은 몸을 치는 도끼요, 몸을 찌르는 날카로운 칼날입니다. 어느날 공주처럼 귀하게 자라서 부엌일을 거의 안 해본 새색시가 결혼해서 처음으로 시아버지 밥상을 차리게 되었습니다. 오랜 시간이 걸려 만든 반찬은 그런 대로 먹을만 했는데, 문제는 밥이었습니다. “식사준비가 다 되었느냐?” 는 시아버지의 말씀에 할 수 없이 밥 같지 않은 밥을 올리면서 죄송하고 미안한 마음으로..

sqlplus로 오라클접속 [내부링크]

Sqlplus로 접속하기 sqlplus를 통해 오라클에 로그인하기 위한 명령어는 아래와 같다. > sqlplus [계정명]/[계정 패스워드][@] | / [AS {SYSDBA | SYSOPER | SYSASM}] ( [ ] 부분 생략 가능 ) - 원격접속이 아니고 오라클이 설치된 PC에서 직접 접속할 경우 @connect_identifier 생략가능 (ex1) - sqlplus 계정명까지만 입력하면 패스워드 입력화면으로 넘어간다. (ex2) - 또는 프로그램 실행시듯 sqlplus만 입력하고 다음 화면에서 계정명과 패스워드를 입력해도 된다. (ex3) - 패스워드에 특수문자가 있을 경우 따옴표(" ")로 묶어주어야 한다. - 오라클 설치할 때 변경하지 않았다면 초기 비밀번호는 다음과 같다. system ..

[ 조은글 5218호 - 강아지와 유산 ] [내부링크]

얼마 전 미국의 한 노인이 자기가 기르던 강아지에게 우리 돈으로 1,560억을 유산으로 물려 주었습니다. 그리고 강아지를 돌보라고 부탁한 사육사에게는 1년에 5만불 씩, 5천만원의 연봉을 주겠다고 유언했습니다 개가 죽고 난후에는 개의 유산 1,560억원 중 남은 돈을 동물보호소에 기증하도록 유언을 했습니다. 그리고 자신의 외동 아들에게는 100 만불 만을 유산으로 주라고 유언하고 서거했습니다. 100만 불은 우리 돈으로 대략 11억입니다. 그러자 아들은 너무나 분을 못 참으면서 "도대체 어떻게 내가 개보다 못합니까? 개에게는 1,560억을 주고 나에게는 10억을 주다니 이게 말이 됩니까? 판사님, 억울합니다. 바로잡아 주세요." 라며 변호사를 사서 소송을 제기했습니다. 그 젊은이에게 판사가 묻습니다. “..

오라클계정 락해제 [내부링크]

Oracle DB를 사용하던중에 암호가 생각이 안나서 이것저것 입력하다가 해당 사용자 계정이 잠겼을때....난감합니다... ORA-28000 : the account is locked --> 요런 메세지가 나오거나, 사용자가 잠겼다는 메세지가 나옴.... 오류는 사용자 계정이 Lock걸려 접근 할 수 없을때 나오는 코드. 해결 방법 저 사용자 계정과 상태 값을 확인 /as sysdba 혹은 system 계정으로 로그인 후 SELECT username, account_status, lock_date FROM dba_users; 유저 계정별 상태값이 나옴. 이상없는 유저의 상태값은 OPEN으로 잠긴 유저는 EXPIRED & LOCKED 로 나온다. 해제 방법 ALTER USER scott ACCOUNT UN..

오라클전자정부 사용자생성 [내부링크]

select * from dba_data_files ; select * from dba_tablespaces ; select * from dba_temp_files ; /*사용자 조회*/ SELECT * FROM DBA_USERS; show user; /*전자정부 테스트 테이블 스페이스 생성*/ create tablespace EGOV_DATA datafile 'C:\ORACLE_DATA\EGOV_DATA.DBF' size 10m AUTOEXTEND ON NEXT 30M default storage( initial 80k next 80k minextents 1 maxextents 121 pctincrease 80 )online; create tablespace EGOV_IDX datafile 'C:\OR..

오라클계정생성 및 백업 [내부링크]

오라클 스크립트 백업 exp userid=system/manager file='C:\temp\full_script.dmp' full=y GRANTS=Y INDEXES=Y ROWS=N CONSTRAINTS=Y TRIGGERS=Y COMPRESS=Y DIRECT=N CONSISTENT=N STATISTICS=ESTIMATE 오라클 전체 데이타 백업 exp userid=system/manager file='C:\full.dmp' full=y 오라클 전체 임포트 imp userid=system/system file='C:\full.dmp' full=y Import 절차. - DB 생성 - TableSpace 생성 - 계정 생성 및 TableSpace 접근 권한 추가. - imp 명령어를 통한 데이터 import..

Data Pump expdp/impdp Utility [내부링크]

오라클 expdp/impdp Utility *. Data Pump ------------------------- Oracle 10g의 기능인 Data Pump는 Oracle Database data와 metadata의 이동을 위한DBMS_DATAPUMP 패키지를 통하여 상당히 빠른 Data Pump infrastructure를 제공하고 있다. 기존 Oracle 9i까지 사용되던 exp, imp 유틸리티보다 더욱더 향상된 성능을 목적으로 만들어진 유틸리티다. Data Pump는 exp/imp보다 훨씬 많은 기능이 있으며, 대량의 데이터를 작업할 때 무척이나 빠르게 작업할 수 있다. 다음은 간단한 사용방법 및 샘플이다. --------------- *. expdp --------------- 1. 디렉토리 ..

로우 총건수 구하기 [내부링크]

SELECT A.*, COUNT(*) OVER () AS TOTAL_ROWS FROM TN_LAB_FEE_PRDLST_ISPT_ITM A;

열을 행으로 wm_concat [내부링크]

SELECT TO_CHAR(WM_CONCAT(X.FEE_ISPT_ITM_CD)) FROM TN_LAB_FEE_PRDLST_ISPT_ITM_D

오라클 테이블,뷰정보 [내부링크]

SELECT * FROM dba_tables WHERE TABLE_NAME = 'TC_CMMN_CODE'; SELECT * FROM dba_views WHERE VIEW_NAME = 'TC_CMMN_CODE';

테이블 스페이스 갯수 확장 [내부링크]

--테이블 스페이스 갯수 확장 select * from v$parameter where name = 'db_files'; alter system set db_files=2000 scope=spfile;

오라클 암호변경 [내부링크]

sqlplus "/as sysdba" show user 암호 설정. SQL> alter user sys identified by 암호; SQL> alter user system identified by 암호; CREATE PUBLIC DATABASE LINK LN_PL CONNECT TO USERID IDENTIFIED BY qlalfqjsgh USING 'NEWNPQS'; DROP PUBLIC DATABASE LINK LN_PL; alter user NQPS identified by qlalfqjsgh

오라클 통계생성 [내부링크]

1. 해당 스키마에 해당하는 테이블과 테이블 스페이스 조회 SQL> select owner, table_name, tablespace_name from dba_tables where owner = 'SCOTT'; OWNER TABLE_NAME TABLESPACE_NAME -------------------- -------------------- -------------------- SCOTT DEPT USERS SCOTT EMP USERS SCOTT BONUS USERS SCOTT SALGRADE USERS 2. 해당 스키마에 해당하는 테이블의 통계정보 조회 SQL> select table_name, num_rows, chain_cnt, blocks, empty_blocks as empty, avg_sp..

오라클(oracle) 락(lock) 확인 및 제거(kill) [내부링크]

-- 락걸린 테이블 확인 SELECT do.object_name, do.owner, do.object_type, do.owner, vo.xidusn, vo.session_id, vo.locked_mode FROM v$locked_object vo , dba_objects do WHERE vo.object_id = do.object_id ; --해당테이블이 락에 걸렸는지.. SELECT A.SID, A.SERIAL#, B.TYPE, C.OBJECT_NAME FROM V$SESSION A, V$LOCK B, DBA_OBJECTS C WHERE A.SID=B.SID AND B.ID1=C.OBJECT_ID AND B.TYPE='TM' AND C.OBJECT_NAME IN ('테이블명'); /* 락발생 사용자와 ..

오라클 버전확인 [내부링크]

select * from v$version

[ 조은글 5217호 - 부메랑 ] [내부링크]

구두쇠 주인이 종에게 돈은 주지 않고 빈 술병을 주면서 말했습니다. "술을 사오너라." 그러자 종이 말했습니다. "주인님! 돈도 안 주시면서 어떻게 술을 사옵니까?" 주인이 말했습니다. "돈 주고 술을 사오는 것이야 누구는 못하니? 돈 없이 술을 사오는 것이 비범한 것이지." 종이 아무 말도 하지 않고 빈 술병을 가지고 나갔습니다. 얼마 후 종은 빈 술병을 가지고 돌아와서 주인에게 내밀었습니다. "빈 술병으로 어떻게 술을 마시니?" 그때 종이 말했습니다. "술을 가지고 술 마시는 것이야 누구는 못마십니까, 빈 술병 으로 술을 마셔야 비범한 것이지요." 이 이야기는 탈무드에 나오는 이야기입니다. 인생은 주는 대로 받는다는 말이 있습니다. 콩 심은데 콩 나고 팥 심은데 팥이 납니다. 그것이 자연의 법칙입니다..

dense_rank_순위 [내부링크]

select DENSE_RANK() OVER(ORDER BY INSP_DT) AS RANK, --같은그룹은 순위가 같게 처리(순차적으로) RANK() OVER(ORDER BY INSP_DT) AS RANK2, --같은그룹은 순위가 같고 그 다음순위는 (같은순위만큼 더해서 건너뛰고 처리) ROW_NUMBER() OVER(PARTITION BY INSP_DT ORDER BY INSP_DT) as RANK3, --같은그룹끼리만 순위를 다시 매김 a.* from table_name a where rownum < 100;

테이블 복사 [내부링크]

테이블 만들면서 복사 create table 생성할테이블명 as select * from dual;

한글초성검색 [내부링크]

create or replace function fn_get_hangule_cho_name (vstr in varchar2) return varchar2 as str varchar2(2000); chostr varchar2(2000); ch varchar2(10); sch varchar2(10); ix number; maxlen number; -- /* ***************************************************************************** -- Description : 한글초성 검색 -------------------------------------------------------------------------------- -- Input Argume..

한글 가나다 초성 [내부링크]

CREATE or replace function "NAQSCOM".f_get_ganada ( p_name varchar2) return varchar2 deterministic is v_ret varchar2(10); begin v_ret := case when p_name < 'ㄱ' then substr(p_name, 1, 1) when ascii('ㄱ')

오라클 최대접속 가능 수 변경(세션수) 변경 [내부링크]

세션수 확인 select * from v$resource_limit [ORACLE] 오라클 최대접속 가능 수 변경(세션수) 변경 lsnrctl stop sqlplus "/as sysdba" SQL> show parameter spfile 위에서 value에 값이 있으면 , 없으면 SQL> alter system set processes=200 scope=spfile; SQL> shutdown immediate SQL> startup exit lsnrctl start < ※ 반드시 DB를 종료후 재 실행해야한다.> SQL>shutdown immediate init.ora 파일 수정 *.processes=200 startup ※ 과 모두 DB를 다운하고 재시작을 해야한다. 현재 프로세스 사용자수 Maximu..

DB링크 생성 및 조회 [내부링크]

'A' DB --- DB Link --→ 'B' DB (로컬) (원격지) 1. 로컬 'A' DB 의 tnsnames.ora 파일에 원격지 'B' DB 접속 정보 추가 ex) B_DB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.0.1) (PORT = 1521)) ) (CONNECT_DATA = (SID = ORA9) ) ) ※ 'B' DB 접속 정보가 올바르게 입력되었는지 확인 : tnsping 명령으로 확인할 수 있다. tnsping B_DB 2. DB Link 설정 명령 CREATE [PUBLIC] DATABASE LINK DB LINK 이름 CONNECT TO 유저명 IDENTIFIED BY 비밀번호 USI..

데이타펌프진행상태조회 [내부링크]

select * from dba_datapump_jobs ; --진행상태조회 select sid, serial#, sofar, totalwork, to_char(start_time, 'HH24:MI:SS') startt, (sofar/totalwork)*100 "complete(%)" from v$session_longops where opname='META' and sofar != totalwork ; SQL> select sid, serial#, opname, 2 to_char(start_time, 'HH24:MI:SS') startt, 3 (sofar/totalwork)*100 "complete(%)" 4 from v$session_longops 5 where totalwork > 0 ; 위의 정보..

테이블스페이스 생성조회 [내부링크]

SELECT 'create tablespace ' || TABLESPACE_NAME || ' datafile ' || '''c:\oracle_data\' || substr(file_name, instr(file_name,'/', -1)+1) || ''' size ' || BYTES/1024/1024 || 'm AUTOEXTEND ON NEXT 30M' || ' default storage(' || ' initial 80k' || ' next 80k' || ' minextents 1' || ' maxextents 121' || ' pctincrease 80' || ' )online;' as table_space FROM ( SELECT E.TABLESPACE_NAME,E.FILE_NAME,E.BYTES, ..

오라클서비스 기동 [내부링크]

각 서비스 시작/중지 1) 데이터베이스 C:\> sqlplus /nolog SQL> connect /as sysdba SQL> shutdown immediate SQL> startup C:\> sqlplus "/as sysdba" SQL> shutdown immediate SQL> startup 2) 리스너 C:\> lsnrctl start C:\> lsnrctl stop C:\> lsnrctl status C:\> lsnrctl services 3) iSQL*Plus C:\> isqlplusctl start C:\> isqlplusctl stop 4) Enterprise Manager C:\> emctl start dbconsole C:\> emctl stop dbconsole 간단한 명령어 1) ..

특정테이블만 datapump [내부링크]

--덤프 --데이터 익스포트 expdp sys/oracle dumpfile=data.dmp directory=dump logfile=data.log job_name=job_data network_link=ORA100 TABLES=TC_CMMN_D_CODE,TC_CMMN_M_CODE,TC_CMMN_QRANT_INSTT,TC_CMMN_RN_ADRES,TC_ENTRPS_UNITY,TN_CMMN_DBYHS_CL,TN_CMMN_DBYHS_CODE,TN_CMMN_ITM_PLNT_SE_CODE,TN_CMMN_LNM_RN_MTCHG,TN_CMMN_NATION_CODE,TN_CMMN_ITM_QUN_MAPNG,TN_CMMN_PRDLST,TN_CMMN_TRFCLSF,TN_CMMN_USER,TN_NPQ_REQST,TN_NPQ..

ORACLE / tablespace / 확인 / 수정 / 삭제 / 변경 / 관리 [내부링크]

[ 전체 tablespace 확인 ] select * from dba_data_files ; select * from dba_tablespaces ; [ Temp tablespace 확인 ] select * from dba_temp_files ; [ 현재 유저의 default tablespace 확인 ] select * from user_users ; ==> Defaut Tablespace로 설정된 부분을 확인 [ 유저의 default tablespace 변경 ] alter user [유저명] default tablespace [테이블 스페이스명] [ 테이블의 tablespace 변경 ] alter table [테이블명] move tablespace [테이블 스페이스명] [ tablespace 수정이나 ..

오라클설치후 환경셋팅 [내부링크]

tnsnames.ora 파일 # tnsnames.ora Network Configuration File: C:\app\vm_cbw\product\11.2.0\dbhome_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools. ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) ) ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost..

오라클 테이블스페이스 사용량 [내부링크]

--테이블 스페이스 사용량 계산 SELECT SUM(BYTES) / 1024/1024/1024 AS 전체크기_기가바이트, SUM(RESULT) / 1024/1024/1024 AS 사용용량_기가바이트 FROM ( SELECT E.TABLESPACE_NAME,E.FILE_NAME,E.BYTES,(E.BYTES-SUM(F.BYTES)) RESULT FROM DBA_DATA_FILES E, DBA_FREE_SPACE F WHERE E.FILE_ID = F.FILE_ID GROUP BY E.TABLESPACE_NAME, E.FILE_NAME, E.BYTES ); --테이블 스페이스 사용량 기준 생성 스크립트 SELECT 'create tablespace ' || TABLESPACE_NAME || ' datafil..

오라클 각종 메타데이터 조회 [내부링크]

/* 1. 해당 테이블의 기본키 정보 */ select a.table_name, b.column_name, b.position, a.status from all_constraints a, all_cons_columns b where 1=1 and a.owner = 'SMARTFARM' and a.table_name = 'TB_USER_INFO' and a.table_name = b.table_name and a.constraint_type = 'P' and a.constraint_name = b.constraint_name and a.owner = b.owner order by b.position asc ; /* 2. 해당 사용자의 테이블 리스트 및 레코드 개수 */ select table_name, n..

컬럼정보조회 [내부링크]

SELECT TABLE_NAME FROM ALL_TABLES WHERE TABLE_NAME LIKE 'TB_USER_INFO%' AND OWNER = 'SCOTT' SELECT T.TABLE_NAME AS TBL_NM , T.COLUMN_NAME AS COLS_ID , C.COMMENTS AS COLS_NM , C.COMMENTS AS NOTE , CASE WHEN T.DATA_TYPE='TIMESTAMP(6)' THEN 'TIMESTAMP' ELSE T.DATA_TYPE END AS DATA_TP_NM , CASE WHEN T.DATA_TYPE='VARCHAR' THEN T.DATA_LENGTH WHEN T.DATA_TYPE='NUMBER' THEN T.DATA_PRECISION END AS DATA_..

DATAPUMP 백업 [내부링크]

DATAPUMP 기능을 사용하기 위해서는 첫째 DIRECTORY가 설정되어 있어야한다. * 필요 권한 EXP_FULL_DATABASE IMP_FULL_DATABASE Directory 조회 SELECT * FROM DBA_DIRECTORIES; Directory 생성 및 권한 SQL> CREATE DIRECTORY DUMP AS '/oracle/dumpfile'; Directory created. SQL> GRANT READ, WRITE ON DIRECTORY DUMP TO SYSTEM; Grant succeeded. SQL> GRANT CREATE ANY DIRECTORY TO SYSTEM; Grant succeeded. SQL> SELECT * FROM DBA_DIRECTORIES; GRANT REA..

vue를 이용한 프로젝트 생성 [내부링크]

cmd 창을 실행한 후에 프로젝트를 생성할 폴더로 이동한 후에 test프로젝트를 만들어 보자. vue create test Manually select features 를 선택하여 수동으로 셋팅한다. 위와 같이 선택을 한다. 구브라우저와 호환이 필요하면 Babel을 선택한다. 익스플로러11 지원이 필요한 경우 선택후 엔터 2.x 버전을 선택후 엔터 router에서 history모드를 사용할것인지 묻는데 그냥 디폴트로 엔터 나중에 소스에서 수정할수 있다. ESLint 문법 체크 하는 건데 그냥 Standard 선택하고 엔터 저장할때 문법 체크인 Lint on save 선택하고 엔터 지금까지 설정한 환경파일을 분리해서 만들지 package.json에 통합할지 묻는데 분리해서 저장하겠다고 선택후 엔터 향후 프..

Vs Code 기본 환경 셋팅 [내부링크]

Vue를 사용하기 위해서는 VsCode 확장 패키지를 설치하여야 한다. 먼저 개발자 폰트 부터 설정하자. 코딩을 위한 개발자 폰트 설정 네이버 github.com/naver/d2codingfont GitHub - naver/d2codingfont: D2 Coding 글꼴 D2 Coding 글꼴. Contribute to naver/d2codingfont development by creating an account on GitHub. github.com 개발자 폰트를 다운 받아서 모든 사용자용으로 설치 한다. vscode를 열어서 TextEditor -> Font D2Coding ligature 입력합니다. 그리고 나서 Edit in settings.json 클릭하여 "editor.fontFamily":..

vue 개발환경 설정하기 [내부링크]

1. node 설치 https://nodejs.org/ko/download/ 다운로드 | Node.js Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 2. node 설치를 하면 npm도 같이 설치가 된다. npm으로 yarn을 설치한다 npm install -g yarn - node 설치가 잘 되었는지 확인한다. - yarn 설치가 잘 되었는지 확인한다. 3. 에디터 Tool로 Visual Studio Code를 설치한다. https://code.visualstudio.com/download Download Visual Studio Code - Mac, Linux, Windows Visual Studi..

[ 조은글 5216호 - 내 인생의 돌부리 ] [내부링크]

한 소년이 있었습니다. 화창한 날에 기분 좋게 언덕을 올라가던 소년은 길에 튀어나와 있던 돌에 걸려 넘어지고 말았습니다. “이런 돌덩이가 왜 사람들 다니는 길에 있지?” 소년은 삽으로 돌부리를 캐내기 시작했습니다. 파헤치자 점점 돌의 크기가 드러났습니다. 땅 위에 보이는 돌은 사실 큰 바위의 일부였던 것입니다. 소년은 놀랐지만 결심했습니다. “다시는 다른 사람들이 돌부리에 걸리지 않도록 파내겠어!” 소년은 분한 마음 반, 정의감 반으로 거대한 돌에 달려 들었습니다. 해가 뉘엿뉘엿 지기 시작했습니다. 소년은 삽을 놓았습니다. “안 되겠다, 포기하자.” 소년은 파놓았던 흙으로 돌이 있던 자리를 덮기 시작했습니다. 그러자 소년이 걸려 넘어졌던 돌부리도 흙에 덮여 보이지 않게 되었습니다. 소년은 중얼거렸습니다...

store 저장소 처리 [내부링크]

전역적으로 설정하여 값을 가져 가기 위해서는 store 설정을 하여야 한다. import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { memberInfo: JSON.parse(localStorage.getItem('member')), drawer: false, siteTitle: '', appBarShow: true, sb: { act: false, msg: '', color: 'error' }, user: { name: '관리자', id: '없음', img: 'https://randomuser.me/api/portraits/men/85.jpg' } }, mutations: { ge..

router 설정 [내부링크]

화면에서 메뉴 클릭시 라우터를 거쳐서 해당 페이지를 호출한다. import Vue from 'vue' import Router from 'vue-router' import axios from 'axios' Vue.use(Router) Vue.prototype.$axios = axios const apiRootPath = process.env.NODE_ENV === 'production' ? '/rice/' : '/rice/' Vue.prototype.$apiRootPath = apiRootPath axios.defaults.baseURL = apiRootPath const originalPush = Router.prototype.push Router.prototype.push = function push..

로그인시 rsa 암호화 적용하기 [내부링크]

위에서 만든 rsa 스크립트 사용방법이다. 로그인시에 암호화 한다. 로그인을 하기 위한 껍데기를 먼저 만든다. views\login\index.vue 파일을 만든다. 로그인 실체 components 파일을 만든다. components\login\login.vue 로그인 로그인 rsa 암호화 사용 방법은 만들어 놓은 js 파일을 import 한다. import RSAKey from '@/js/rsa/rsa.js' 최초 로딩시 자바 컨트롤러 호출하여 공개키를 가지고 온다. getRsaKey () { this.$axios.get('grain/mbr/axiosRsaKey.do') .then((r) => { this.pubRsaKey = r.data }) .catch((e) => { if (!e.response)..

vue에서 rsa암호화 하여 자바와 통신하기 [내부링크]

로그인시에 아이디와, 패스워드를 rsa로 암호화 하여 자바와 통신한다. 먼저 자바에서 rsa로 암호화에 필요한 공개키를 발행하여 vue단으로 넘긴다. vue에서는 공개키를 이용하여 rsa암호화 하여 자바로 보내면, 자바에서 프라이빗 키로 복호화 하여 처리한다. rsa 암호화 자바스크립트는 있는데 vue용으로 만들어진 rsa암호화 모듈이 없어서, rsa.js를 vue에서 사용할수 있도록 약간 컨버트 하였다. 소스는 총4개의 js파일이다. js\rsa 폴더를 만든후에 1. jsbn.js 파일을 만들어서 저장한다. /* eslint-disable */ const BigInteger = (function () { 'use strict' // Bits per digit let dbits // JavaScript ..

vue 폴더구조 [내부링크]

폴더구조는 대충 이렇게 잡았다. src -- assets -- components -- js -- plugins -- router -- store -- views App.vue main.js 이렇게 잡고서 vue는 컴포넌트 개념이라서 views 폴더에는 화면에 표시해 주는 껍데기만 보여주고 실제 작업은 components 폴더에 작업하여 import 하여 처리한다. js 라이브러리는 js 폴더에 모아 놓았다 plugins는 vue에서 제공하는 plugins기능을 모아 놓았다 router는 화면분기시 필요하다. store는 전역변수로 전체에서 접근이 필요할때 필요하다.

App.vue [내부링크]

main.js가 진입점이면 App.vue는 말 그대로 보여주는 모든것을 관리한다. App.vue에서 전체화면을 관리하는 프레임이라고 보면 된다. {{$store.state.siteTitle}} mdi-home {{$store.state.user.name}} {{item.title}} {{ subItem.title}} {{ new Date().getFullYear() + ' ' + siteCopyright}} {{ $store.state.sb.msg }} 닫기

엔트리 포인트 진입점 main.js [내부링크]

public폴더에 index.html 에 최초이겠지만. 실제 진입점은 main.js로 보면 된다. 기본적인것 import 한다. import Vue from 'vue' import App from './App.vue' import router from './router' import store from './store' import vuetify from './plugins/vuetify' import VuetifyDialog from 'vuetify-dialog' import 'vuetify-dialog/dist/vuetify-dialog.css' import Autocomplete from 'v-autocomplete' import 'v-autocomplete/dist/v-autocomplete.cs..

package.json [내부링크]

의존성 관리를 한다. 기본 로그인과 mvc 적용된 설정이다. { "name": "vpn", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, "dependencies": { "@mdi/font": "5.9.55", "axios": "0.21.1", "material-design-icons": "3.0.1", "typeface-roboto": "1.1.13", "v-autocomplete": "1.8.2", "vue": "^2.6.11", "vue-router": "^3.2.0", "vu..

vue.config.js [내부링크]

vue로 개발시 개발환경에서 크로스 도메인 안 생기게 작업을 할려면 vue.config.js 파일에 설정을 해줘야 한다. 프로젝트시 빌드 패스, 배포패스, 프록시 서버 설정을 해줘야 한다. module.exports = { transpileDependencies: [ 'vuetify' ], outputDir: 'c:/eGovFrameDev-3.9.0-64bit/workspace/GGM/src/main/webapp/vpn', publicPath: process.env.NODE_ENV === 'production' ? '/rice/vpn' : '/', devServer: { proxy: { '^/rice': { target: 'http://localhost:9080', ws: true, changeOrigi..

vscode 개발환경 설정 파일 [내부링크]

vscode 설치를 하면 환경설정 파일을 아래의 경로에 있다. C:\Users\cbw\AppData\Roaming\Code\User\settings.json 내 개발환경 셋팅은 아래와 같다. vscode 설치하고 환경파일을 동일하게 설정하면 다른 pc에서도 동일하게 작동한다. { "git.autofetch": true, "git.enableSmartCommit": true, "python.languageServer": "Pylance", "explorer.confirmDelete": false, "git.confirmSync": false, "editor.codeActionsOnSave": { "source.fixAll": true }, "files.autoSave": "onFocusChange", "w..

vue 다른 컴포넌트 끼리의 통신처리 [내부링크]

개별의 컴포넌트 사이에서의 데이터 전달(통신) 방법에 대해 정리하겠다. Vue는 자체적으로 이벤트와 관련된 $emit, $on 메소드를 갖고 있어, 보통 EventBus라는 이름의 Vue 객체 생성 후 해당 객체를 사용하여 서로 통신을 한다. 예제를 보자. 다음은 EventBus 생성 파일이다. - EventBus.js import Vue from 'vue'; export const BUS = new Vue(); 다음은 이벤트 호출/처리할 컴포넌트 선언 파일이다. - One.vue (이벤트 호출 컴포넌트) import { BUS } from './EventBus'; export default { name: 'One', mounted() { BUS.$emit('bus:call'); } } - TheOthe..

[ 조은글 5215호 - 거세정진 (去勢精進) ] [내부링크]

옛날 명나라 때 무림의 최고수에 등극을 하고자 하는 자가 있었다. 그런데 무술을 연마하여 대회만 나가면 늘 준우승만 하기를 수차례 하였다. 아무리 노력해도 지존의 자리에 오르지 못하게 되자 유명한 도인을 찾아가 방법을 물었다. 그 도인이 무예에 관한 비서를 한 권 주었는데 거기에는 36가지의 무예에 관한 수련법이 적혀 있었다. 그리고 책의 마지막 장에는 이러한 기술들을 반드시 去勢精進하여야 최고수의 자리에 오를 수 있다고 적혀 있었다. 그 자는 고민에 빠졌다. 무림의 고수에 등극하는 것이 평생의 소원이지만 그렇게까지 한다는 것은 받아들이기가 어려웠다. 그러나 워낙 지존에 대한 열망이 강했던지라 스스로 去勢를 하고 무예를 연마하였다. 이듬해 그는 드디어 연마한 무예로 무림의 최고수에 등극하였다. 그러나 시..

[ 조은글 5214호 - 오늘만큼은 행복하자 ] [내부링크]

링컨의 말처럼 사람은 스스로 행복해지려고 결심한 정도만큼 행복해진다 오늘만큼은 주변 상황에 맞추어 행동하자 무엇이나 자신의 욕망 대로만 하려 하지 말자 오늘만큼은 몸을 조심하자 운동을 하고 충분한 영양을 섭취하자 몸을 혹사 시키거나 절대 무리하지 말자 오늘만큼은 정신을 굳게 차리자 무엇인가 유익한 일을 배우고 나태해지지 않도록 하자 그리고 노력과 사고와 집중력을 필요로 하는 책을 읽자 오늘만큼은 남에게 눈치채지 않도록 친절을 다하자 남 모르게 무언가 좋은 일을 해 보자 정신 수양을 위해 두 가지 정도는 자기가 하고 싶지 않은 일을 하자 오늘만큼은 기분 좋게 살자 남에게 상냥한 미소를 짓고 어울리는 복장으로 조용히 이야기하며 예절 바르게 행동하고 아낌없이 남을 칭찬하자 오늘만큼은 이 하..

[ 조은글 5213호 - 孝不孝橋 (효불효교) ] [내부링크]

뼈대 있는 가문이라고 어린 나이에 시집 왔더니 초가삼간에 화전 밭 몇마지기가 전 재산이다. 정신없이 시집살이 하는 중에도 아이는 가졌다. 부엌일에 농사일 하랴 길쌈 삼으랴, 저녁 설거지는 하는 둥 마는 둥 파김치가 돼 안방에 고꾸라져 누우면 신랑이 치마를 올리는지 고쟁이를 내리는지 비몽사몽 간에 일을 치른 모양이다. 아들 둘 낳고 시부모 상 치르고 또 아이 하나 뱃속에 자리잡았을 때 시름시름 앓던 남편이 백약이 무효, 덜컥 저 세상으로 가버렸다. 유복자 막내아들을 낳고 유씨댁이 살아가기는 더 바빠졌다. 혼자서 아들 셋을 키우느라 낮엔 농사일, 밤이면 삯바느질로 십여년을 꿈같이 보내고 나니 아들 녀석 셋이 쑥쑥 자랐다. 열여섯 큰아들이 “어머니, 이젠 손에 흙 묻히지 마세요” 하며 집안 농사일을 시원시원하..

Vue 프로젝트 생성 [내부링크]

vue 최초 프로젝트 생성 vue create vpn cd vpn vuetify 플러그인 추가 vue add vuetify /* 실행 */ yarn serve

[ 조은글 5212호 - 꿈이 있는 한 절망은 없다 ] [내부링크]

1920년대말 미국은 너무나도 심각한 경제 공항에 빠졌습니다. 기업들은 도산을 하였고 사람들은 실업자가 되어 거리로 내 몰렸습니다. 이러한때 미국 뉴욕의 두재벌이 맨하탄내에 최고높은 빌딩을 짓겠다고 했습니다. 그것도 자그만치 100층보다 높게. 그 두사람은 크라이슬러사의 월터 크라이슬러와 제네럴 모터스의 제이콥 래스콥이라는 사람이었습니다. 그들은 경제공항의 타게책 일환으로 이러한 빌딩을 짓겠다고 했습니다. 실의에 빠진 실업자들을 공사 현장으로 오라고 하였고 그리고 공사를 시작 하였습나다. 착공을 할무렵엔 이미 미국의 증권가는 파산을 하고 말았습니다. 너무나도 심각한 경제공항으로 재계는 비웃기까지 하였습니다. 그러나 그는 이에 굴하지 않고 공사를 감행했습니다. 크라이슬러사 보다 61미터나 높게지은 이 건물..

[정호승] 수선화에게 [내부링크]

울지 마라 외로우니까 사람이다 살아간다는 것은 외로움을 견디는 일이다 공연히 오지 않는 전화를 기다리지 마라 눈이 오면 눈길을 걸어가고 비가 오면 빗길을 걸어가라 갈대숲에서 가슴검은도요새도 너를 보고 있다 가끔은 하느님도 외로워서 눈물을 흘리신다 새들이 나뭇가지에 앉아 있는 것도 외로움 때문이고 네가 물가에 앉아 있는 것도 외로움 때문이다 산 그림자도 외로워서 하루에 한 번씩 마을로 내려온다 종소리도 외로워서 울려퍼진다 https://youtu.be/qwKNGxCh_jE

[정호승] 봄비 [내부링크]

어느날 썩은 내 가슴을 조금 파 보았다 흙이 조금 남아 있었다 그 흙에 꽃씨를 심었다 어느날 꽃씨를 심은 내 가슴이 너무 궁금해서 조금 파보려고 하다가 봄비가 와서 그만두었다.

전자정부 스케줄링 crontab 설정 티베로에서 postgresql 연계 [내부링크]

pom.xml 의존성 추가 org.quartz-scheduler quartz 2.3.2 WEB-INF/config/egovframework/springmvc/egov-com-scheduler.xml 파일 생성 org.quartz.simpl.SimpleThreadPool 5 4 org.quartz.simpl.RAMJobStore 60000 egovProps/globals.properties 파일에 스케줄 시간 설정 # 스케줄러 매일 매시 매분 1초에 실행 scheduler.tibero.stat1.cron.expression = 1 * * * * ? 10초마다 실행 scheduler.tibero.stat2.cron.expression = 0/10 * * * * ? TestJobScheduler.java 파일..

[티베로] MS949에서 UTF-8로 DB 변경 [내부링크]

MS949(euc-kr)에서 한글의 경우는 2byte를 사용하고 UTF-8로 변경시 한글은 3byte를 사용함.(ASCII 경우(영문,숫자)는 기존대로 1byte만 사용함) ** DBMS 변경시 관련 스크립트 작성 참조(작업전 백업은 필수!!) ORACLE, Tibero만 해당됨 1. 기존 DB에서(MS949) UTF-8 캐릭터셋 사이즈를 미리 조정한다. 1-1. 스크립트 생성 SELECT 'ATLER TABLE '|| table_name ||' MODIFY('|| LOWER(column_name) ||' VARCHAR2('|| LEAST(CEIL(data_length*1.5/10) * 10, 4000) ||'));' AS sqltext FROM USER_TAB_COLUMNS WHERE data_type..

[PostgreSQL] 인코딩(encoding) 확인 [내부링크]

/* client 인코딩 */ show client_encoding; /* 서버 인코딩 확인 */ show server_encoding; /* 쿼리에서 인코딩 확인 */ SELECT * , pg_encoding_to_char(encoding) FROM pg_database ;

[PostgreSQL] odbc fdw Tibero 외부서버연결 [내부링크]

ODBC FDW 처리기 설치 및 외부 서버 연결 설정 방법 https://www.postgresonline.com/journal/index.php?/categories/85-odbc_fdw 윈도우용 odbc-fdw을 다운받아서 PostgreSQL 설치 폴더에 odbc_fdw 바이너리를 복사합니다. 티베로 odbc64비트를 설치하여 dsn에 등록합니다. odbc_fdw wrapper을 postgresql db에 설치합니다. odbc 확장패키지 설정 - CREATE EXTENSION odbc_fdw SCHEMA "public"; odbc 화장 삭제 DROP EXTENSION odbc_fdw CASCADE; odbc 등록한 dsn 이름을 등록한다. - CREATE SERVER tiberoServer FOREI..

[PostgreSQL] postgresql db_link 설정 [내부링크]

/* DB LINK 사용하기 위해서는 DB LINK EXTENSION 설치를 먼저 해야 한다. 스키마 지정은 하나만 할수 있어서 필요한 스키마에 설치후 다른 스키마에서 사용할 경우는 ALTER 명령어로 스키마를 변경해 줘야 한다. */ /* DB LINK EXTENSION 설치 */ /* 1.EXTENSION 신규 생성 */ CREATE EXTENSION IF NOT EXISTS dblink SCHEMA test; /* 2.EXTENSION 스키마 변경 */ ALTER EXTENSION dblink SET SCHEMA public; /* 3.EXTENSION 삭제 */ DROP EXTENSION dblink; /* 4. dblink_connect 원격접속 세션 연결 */ SELECT dblink_conn..

[ 조은글 5210호 - 누구나 한 가지의 특별한 재능을 가지고 있다 ] [내부링크]

시각장애인 아이가 있었습니다. 그 아이는 반에서 따돌림을 받아 늘 외롭고 힘없이 지내야 했습니다. 그러던 어느 날, 수업 중인 교실에 쥐가 한 마리 나타났는데 어디로 숨었는지 도무지 보이지 않았습니다. 그러자 선생님은 그 아이에게 그만의 특별한 청력을 사용하여 숨은 쥐를 찾아보라고 했습니다. 그 아이는 귀를 기울였고 마침내 쥐가 숨은 곳을 알아내었습니다. 쥐 소리는 교실 구석의 벽장에서 새어 나오고 있었던 것입니다. 수업이 끝난 후 선생님은 그 아이를 불러 이렇게 말했습니다. "넌 우리 반의 어떤 친구도 갖지 못한 능력을 갖고 있어. 네겐 특별한 귀가 있잖니!" 하고 그를 격려했습니다. 그 격려의 말 한마디가 이 아이의 인생을 바꾸어 놓았습니다. 그 아이는 음악을 좋아했습니다. 그의 어머니는 사고라도 날..

[ 조은글 5209호 - 解憂所 의 유래 ] [내부링크]

“버리는 것이 바로 도 닦는 것” 해우소라는 명칭을 사용한 것은 언제부터 일까? 사찰 화장실에 해우소라는 이름을 붙인 인물은 경봉스님(1892~1982)으로 알려져 있다. 한국전쟁이 끝난지 얼마 안 된 때의 일이다. 당시 통도사 극락암 호국선 원조실로 있던 경봉스님은 두 개의 나무토막에 붓으로 글자를 써서 시자에게 내밀었다. 하나는 해우소(解憂所)라고 쓰여 있었고, 다른 나무토막에는 휴급소(休急所)라고 적혀 있었다. 경봉스님은 두 나무토막을 각각 큰 일을 치르는 곳과 소변을 보는 곳에 걸라고 명했다. 해우소는 근심을 해결하는 곳, 휴급소는 급한 것을 쉬어가는 곳이라는 의미다. 이후 극락선원을 찾는 수좌와 신도들은 문패를 보고 설왕설래 말이 많자 경봉스님은 어느 날 법문을 통해 참뜻을 전달했다. “우리 극..

[ 조은글 5207호 - 고흐와 배려 ] [내부링크]

어느 날, 고흐가 창가에 앉아 지나가는 사람들을 보고 있는데, 한 사람이 물건을 포장하는 천으로 만든 옷을 입고 있는게 보였다. 그 사람의 가슴에는 포장용 천으로 사용했던 흔적이 뚜렷이 남아 있었는데 바로 천에 새겨진 글자 때문이었다. ‘Breakable (잘 깨짐)’ 그 문구를 보며 고흐는 자신의 무릎을 쳤다. “아하! 사람은 깨지기 쉬운 존재로구나!” 그리고 그 사람이 자신의 앞을 지나쳐 멀어져 가는 뒷모습을 다시 보았는데, 그의 등에도 글자가 새겨져 있었다. ‘Be Careful (취급 주의)’ 고흐는 등에 새겨진 글을 보고 다시 한번 무릎을 두드렸다. "맞아, 사람은 조심스럽게 다뤄야 하는 거야!” 우리 주변에서 가장 잘 깨지는 것은 유리병이다. 그러나 이 유리병보다도 더 약한 것이 있는데, 그것..

[ 조은글 5206호 - 디즈니의 철학 ] [내부링크]

핵심가치란 조직의 근본적이고 영원한 신념을 나타내는 것이다. 디즈니의 핵심가치는 회사의 교육과정에 잘 녹아 있다. 교관이 신입 사원에게 묻는다. “맥도널드는 햄버거를 만듭니다. 디즈니는 무엇을 만듭니까?” 신입사원은 대답한다. “사람들에게 행복을 만들어줍니다.” 교관은 다시 묻는다. “정확합니다. 디즈니는 사람들에게 행복을 팝니다. 그 사람이 누구든, 무슨 일을 하든, 피부색이 어떻든 그런 것들은 중요한 게 아닙니다. 우리는 사람들을 행복하게 해주려고 일합니다. 일을 위해 채용된 사람은 아무도 없습니다. 우리 모두는 ‘쇼’의 배역으로 캐스팅된 것입니다." 디즈니의 연수 교재엔 이런 표현도 있다. “우리는 피곤해질 수는 있어도 결코 따분해져서는 안 됩니다. 정직한 미소를 지으십시오. 그것은 우리의 내면에서..

jboss-deployment-structure.xml [내부링크]

jboss에서 배포시 jboss-deployment-structure.xml 파일을 WEB-INF 폴더에 jboss-web.xml 파일이 있는 경로에 만들어서 설정을 해야 에러 없이 jboss가 기동이 됩니다. 그냥 기동시 jboss자체에 lib버전과 충돌이 생겨서 로그파일도 안 찍히고 에러가 발생합니다.

[PostgreSQL] 시간 데이터타입 쿼리/함수 [내부링크]

POSTGRESQL에서의 시간 타입은 타 DBMS와 다른 부분이 있어 시간/날짜 데이터타입에 대한 쿼리 및 함수를 따로 정리하여 포스팅합니다. -- 날짜 시간 타입으로 캐스팅 select '20190320'::date, '2019-01-02'::date select date '2019-03-18' select to_date('01022019','MMDDYYYY'), to_date('2018-12-25', 'YYYY-MM-DD') select to_timestamp('2019-01-01 20:12:12', 'YYYY-MM-DD HH:MI:SS') -- 현재시간 날짜 구하기 select now(), current_date, current_time -- 시간 더하고 빼기 select '2019-01-01'..

[PostgreSQL] 시퀀스 생성 및 사용 [내부링크]

▷생성 CREATE SEQUENCE [seq_name] ▷nextval nextval('seq_name') ▷currval currval('seq_name') ▷값 초기화 setval('seq_name', seq_val, [true/false]) ▷삭제 DROP SEQUENCE [seq_name] 사용 예제) CREATE SEQUENCE mine_seq; SELECT nextval('mine_seq'); SELECT currval('mine_seq'); DROP SEQUENCE mine_seq; 시퀀스를 생성해놓고 바로 확인을 하기 위해 currval()을 사용하여 확인하게 되면 다음과 같은 에러가 발생하는데 ERROR: 오류: "mine_seq" 시퀀스의 currval 값이 현재 세션에 지정되어 있지 ..

자바로 PWA PUSH 만들기 [내부링크]

https://kmong.com/money-plus/gig/329800 스프링부트로 배우는 실전 PWA | 크몽 머니플러스 코딩전문님의 스프링부트로 배우는 실전 PWA, 14,000원에 크몽 머니플러스에서 만나보세요. | 자바로 PUSH 알리미 구현에 대해서 시중에 잘 나와 있지 않아서 자바로 개발이 필요한 분들을 위해서 kmong.com 자바로 PUSH 알림 기능 잘 정리된 전자책을 소개합니다. 위 링크 클릭

[ 조은글 5205호 - 108번뇌의 의미를 아시나요 ] [내부링크]

절에 가면 대개 스님들의 세납이 일흔을 훨쩍 넘기신 분들이 많습니다. 그런데 아무리 봐도 연세가 많은 것 같지 않은데 물어보면 의외로 많습니다. 하루는 큰 스님께 무례를 무릅쓰고 세납을 물었던 적이 있습니다. “스님, 올해 세수가 어떻게 되십니까?” “그건 왜 물어. 이 놈아”, “그냥요. 이리 봐도 저리 봐도 헷갈려요.”, “허허, 이 놈 봐라, 세속에서 산 세월이 20년이요. 부처님하고 산 세월이 60년이니 갈 날이 꼭 1년 밖에 남지 않았다.” 대개 스님들은 석가모니 부처님이 81세에 열반하셨으니 81세까지 사시려는 분들이 많다. 그런데 요즘은 내가 알고 있는 스님들은 부처님의 삶보다 오래 사신 분들이 많고 정정하다. “그럼 여든이시네요.” “계산도 잘 하네 이놈아.” “제가 뭐 어린애인가요? 저도..

JPA 복합키 [내부링크]

대부분의 엔티티에는 @Id 애노테이션을 한 개 사용한다. 하지만 테이블의 키가 복합키로 이뤄져 있다면 엔티티를 설계할 때에 이를 고려해야 한다. 복합키 설정 방법은 두 가지가 있다. 1 2 @Embeddable 이용하는 방법 @IdClass 이용하는 방법 cs 첫 번째 방법이 객체지향 방식에 가깝다고 한다. 두 번째 방법은 DB 방식에 가깝다고 하는데 잘 와닿지는 않는다. @Embeddable 이용 방법 다음과 같이 emp 테이블이 존재한다. emp 테이블의 키는 emp_name, emp_no 두 개의 복합키로 이뤄져 있다. 1 2 3 4 5 6 create table emp ( emp_name varchar(255) not null, emp_no integer not null, name varchar(..

[ 조은글 5204호 - 제갈량과 홍타시 ] [내부링크]

인간은 모두 한가지 이상 특기를 타고 나왔습니다. 우리가 세상에 나온 순간 이미 출세를 거죠. 왜냐하면 이미 수억분의 1의 확률을 뚫고 이 세상에 나온 것이니까요. 그런 마음 가짐이라면 하지 못할 일이 없습이다. 만약 로또보다 어려운 확률 도전에 포기했다면 이미 우리는 이 세상 사람이 아닌 것입니다. 그러기에 마음 먹기 따라 아니 똑같은 상황이라도 긍정이냐 부정이냐 바라보는 시각에 따라 결과가 달라집니다. 예를 들어 물컵에 물이 반잔이 있을 때 "이제 반잔밖에 없네" 라는 부정적 시각과 "아직 반잔이나 남아 있네" 라는 긍정적 시각이 교차합니다. 그래서 여기 긍정적 시각의 위대한 결과에 따른 사례를 소개합니다. 소개할 내용은 제갈량과 홍타시입니다. 제갈량(諸葛亮)이 위나라 군대를 맞아 오장원두에서 최후의..

기본 Java 타입과 DB 필드 매핑 [내부링크]

A.1. 개요 이 기본 매핑은 CMP Bean의 이 jeus-ejb-dd.xml에 지정되어 있지 않을 때 사용한다. 이런 경우에는 EJB 시스템은 Bean의 CMP 필드 중 Java 필드를 검색하여 Java 타입을 얻어 오고 은 다음의 각 절에 나오는 기본 매핑에 지정된 것과 같다고 여긴다. 다음의 테이블에서는 3가지의 컬럼들을 보여주고 있다. Java 필드 타입 검색을 통해 발견된 EJB CMP 필드의 종류 SQL 타입 java.sql.Types 클래스에서 정의된 일반적인 SQL 종류 DB 컬럼 타입 발견된 Java 필드 종류에 기반하여 새로운 테이블을 생성할 때 JEUS가 사용할 DB 컬럼 종류의 이름A.2. Tibero 필드 - 컬럼 타입 매핑A.7. Cloudscape 필드 - 컬럼 타입 매핑 [..

[ 조은글 5203호 - 시간 ] [내부링크]

불평등한 사회 속에서 그나마 공정하게 주어지는 것이 있다면 시간입니다. 시간은 누구나에게 똑같이 흘러가며 멈출 수도 없는 불가항력적인 것이죠. 우리는 시간 속에 살고 있지만 정작 시간에 대해서는 꽤나 무감각한 편입니다. 익숙한 것에 대해 소중함을 모른다고 해야할까요..? 인생은 1초가 모여 1분이 되고, 1분이 모여 1시간이 되고, 1시간이 모여 하루가, 이런 하루가 모여 전체 인생을 이룹니다. 이런 시간을 어떻게 쓰느냐에 따라 어떤 삶을 살았는지 결정하게 됩니다. 가장 먼저 시간을 잘 활용하려면 시간에 대해 소중함을 느끼는 것이 먼저입니다. 당신은 지체할 수도 있지만 시간은 그러하지 않을 것입니다. 낭비한 시간에 대한 후회는 더 큰 시간 낭비입니다. 시간은 인간이 쓸 수 있는 가장 값진 것입니다. 시간..

윈도우에서 포트 죽이기 [내부링크]

윈도우 cmd 창에서 netstat -a -o 먼저 명령프롬포트창인 CMD를 열어 netstat -a -o 명령어를 입력합니다. 위 사진과 같이 프로토콜 / 로컬 주소 / 외부 주소 / 상태 / PID가 주르륵 나오는데요. 저희가 필요한건 로컬주소에 0.0.0.0: ← 이거 다음 숫자인 port번호와 PID입니다. 다시 한번 위에 사진을 가져와서 제가 필요한 8080포트를 확인해보면??? 저기 빨간색 상자로 표시해둔 부분이 8080 포트가 LISTENING으로 종료되지 않고 실행되고 있었네요. 이제 PID 번호를 확인한 다음 8080 포트의 프로세스를 종료시키겠습니다. 명령어 taskkill /f /pid PID번호 를 입력했더니 프로세스 종료가 성공적으로 이루어졌습니다. 그 후 톰캣을 실행했더니 동작도..

[Querydsl] Case When 사용하기 [내부링크]

CaseBuilder를 통해 CaseWhen 문법 시작 when: 조건문 then: when절이 true일 경우 실행 otherwise: when절이 false일 경우 실행 otherwise가 끝나면 결과 물에 대한 alias(as) 적용 일반적으로는 Entity의 필드명이 자동으로 as 적용됨 하지만 CaseBuilder를 통해 계산한 결과물은 필드명이 없음 alias 하지 않으면 결과물 필드가 어떤 필드로 가야할지 명시되지 않아 오류가 발생 public List selectAuthManageList(Map searchInfo) { String searchKeyword = searchInfo.get("searchKeyword"); List tnAuthorList = queryFactory .select..

[PWA] 자바로 pwa push 알림 기능 개발하기(12) [내부링크]

이제 service 인터페이스를 상속받은 구현체를 작성하자 PwaPushServiceImpl.java 파일을 열자 package pwapush.service.impl; import java.io.IOException; import java.net.URLEncoder; import java.security.GeneralSecurityException; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; import org.jose4j.base64url.Base64; import org.jose4j.json.internal.json_simple.JSONObject; import org.jose4..

[PWA] 자바로 pwa push 알림 기능 개발하기(11) [내부링크]

3.2.5 Service interface 코딩하기 package pwapush.service; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; import org.jose4j.lang.JoseException; import pwapush.model.UserSubscriInfo; public interface PwaPushService { /* push 알림 메세지 전송 부분을 선언한다. */ void sendMessage(Map messageMap, Li..

[PWA] 자바로 pwa push 알림 기능 개발하기(10) [내부링크]

3.2.4 Controller 코딩하기 Controller파일 부터 작성하자. PwaPushController.java 열어서 아래와 같이 코딩한다. 주석으로 설명을 대신하겠다. @Controller //controller 파일이라고 정의해 주는 애노테이션이다. public class PwaPushController { //로깅을 찍기 위해서 선언해 준다. private Logger logger = LoggerFactory.getLogger(PwaPushController.class); //서비스가 기동시 생성된 객체를 주입하여 사용할수 있게 해준다. @Resource(name = "pwaPushService") private PwaPushService pwaPushService; //jpa 생성자를 주..

[PWA] 자바로 pwa push 알림 기능 개발하기(9) [내부링크]

3.2.3 MVC 패턴 클래스 파일 만들기 Mvc 패턴에 맞게 Controller를 만들자. 만드는 순서는 Controller를 만들고, 서비스 인터페이스를 만들고, 서비스 인터페이스를 상속받은 구현체를 만들고, 데이터베이스와 통신을 할수 있게 JpaRepository 상속받은 인터페이스를 만들어서 데이터베이스에 push알림 구독정보를 저장하여 관리 할수 있게 만들것이다. 이번에는 패키지와 클래스 파일을 동시에 같이 만들어 보자. 위에서는 패키지 따로 파일 따로 만들어 보았는데 같이 만들어도 된다. pwapush 패키지명에 마우스 오른쪽 버튼을 클릭하여 New->Class를 선택 Package 입력부분에 pwapush만 입력이 되어 있을텐데 여기 뒤에다가 pwapush.controller을 입력하자. N..

[PWA] 자바로 pwa push 알림 기능 개발하기(8) [내부링크]

모델 패키지를 만들자 pwapush위치에 가서 마우스 오른쪽 버튼을 클릭하여 New->Package 를 클릭하여 창이 뜨면 Name에 pwapush.model을 입력하고 Finish버튼을 클릭한다. 생성된 패키지 폴더에 가서 마우스 오른쪽 버튼을 클릭하여 New->Class 선택하여 UserSubscriInfo.java 로 Class 파일을 만든다. UserSubscriInfo.java 파일에 아래의 내용을 입력한다. package pwapush.model; import java.sql.Timestamp; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; impor..

[PWA] 자바로 pwa push 알림 기능 개발하기(7) [내부링크]

3.2.2 모델 만들기 데이터 베이스 연동하여 데이터를 주고 받을수 있는 모델을 만들자 Entity라고 하는데 DB에 테이블이라고 보면 된다. 자바에서는 ORM (Object Relational Mapping) 이다. ORM에 대해서는 간단하게 개념만 알고 넘어가자. ORM이란? ORM은 Object Relational Mapping 즉, 객체-관계 매핑의 줄임말이다. 객체-관계 매핑을 풀어서 설명하자면 우리가 OOP(Object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블 자동으로 매핑(연결)하는 것을 의미한다. 그러나 클래스와 테이블은 서로가 기존부터 호환가능성을 두고 만들어진 것이 아니기 때..

[PWA] 자바로 pwa push 알림 기능 개발하기(6) [내부링크]

3.2 자바 패키지 파일 생성 3.2.1 자바 환경설정 파일 만들기 src/main/java 밑에 pwapush에 가서 마우스 오른쪽 버튼을 클릭하여 Package 선택 Name에 pwapush.config 입력후 Finish 버튼을 클릭하여 패키지 를 생성한다. 생성된 패키지 에서 마우스 오른쪽 버튼을 클릭하여 New->Class 를 클릭하여 WebConfig.java 파일을 생성하자 WebConfig.java 파일은 환경설정 파일로 서버가 기동될때 최초로 메모리에 환경설정을 로딩하는 기능을 처리한다. WebMvcConfigure을 상속 받아서 json형식을 데이터를 사용하겠다고 설정하는 부분이다. 소스를 붙여 넣는다. package pwapush.config; import org.springframe..

[PWA] 자바로 pwa push 알림 기능 개발하기(5) [내부링크]

resource폴더에 pwa.properties 파일을 생성후에 publicKey = BNzzfdcBcThU27FcGve6F3GF6He2Fro82ZMuOLga9fukatLMlaKB6GdO-82loi6W4iGdPQZAp_4HLgST8z5of_E privateKey = yzZ8xvvhiM50HlTsDLCwiofkCyOypb-ZTkqdvpwyz7c publicKey와 privateKey를 입력한다. 이키는 pwa에서 push 알림을 보낼때 사용되는 공개키와 비밀키이다. 키는 이 프로젝트가 끝날때즘 새로운 키를 생성해야 한다. privateKey는 공개 되어서는 안되는 키이다. 제대로 따라 했다면 resource 폴더가 위와 같은 그림이 되어야 한다. build.gradle 파일을 열어서 push 기능을 만들기..

[PWA] 자바로 pwa push 알림 기능 개발하기(4) [내부링크]

resource폴더 밑에 logback-local.properties 파일을 하나 생성한다. 로그파일이 저장되는 경로를 설정한다. log.config.path=/logs/local /* 로그파일 저장경로 */ log.config.filename=local_log /* 로그파일 이름 */ resource 폴더에 logback-spring.xml 파일을 생성한다.logback-local.properties 파일에 위의 내용을 입력한다. 아래의 내용을 붙여 넣는다. ${LOG_PATTERN} ${LOG_PATH}/${LOG_FILE_NAME}.log ${LOG_PATTERN} ${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log 10MB 30 error ACCEPT DEN..

[PWA] 자바로 pwa push 알림 기능 개발하기(3) [내부링크]

src/main/resources 밑에 application.properties 파일을 yaml 형식으로 확장자를 변경한다. application.yaml로 yaml 파일은 입력할때 형식이 있다. 자릿수를 꼭 맞추어 주어야 에러가 없다.계층적으로 입력할때 2자리 스페이스를 입력후 입력을 해야 한다.yaml 형식이나 properties 에 입력하나 사용 방법은 동일한데 yaml 파일을 사용하면 중복 입력을 안해도 된다. 예를 들어 properties 파일에 다음과 같이 db접속 환경을 입력한다고 하면 이렇게 입력을 해야 한다. datasource.driver-class-name=org.h2.Driver datasource.url = jdbc:h2:mem:pwadb datasource.username = s..

[PWA] 자바로 pwa push 알림 기능 개발하기(2) [내부링크]

3장 스프링부트 프로젝트 생성 3.1 push 알리미 기능 프로젝트 생성 spring부트 실행하여 File -> New -> Spring Starter Project 위와 같이 입력후 Next DB는 테스트 하기 좋은 H2 메모리 DB를 선택 Spring Web, Lombok, 웹페이지는 Thymeleaf선택 JPA를 사용할꺼라서 Spring Data JPA 선택 Spring Boot DevTools는 개발할때 소스에 변경 사항이 있을경우 자동 재기동을 시켜주는 편리한 기능이 있어서 선택 하여 준다. Finish를 눌러 준다.

[PWA] 자바로 pwa push 알림 기능 개발하기(1) [내부링크]

2장 개발환경 셋팅 2.1 개발툴 설치 자바1.8버전, 스프링부트 준비 2.1.1 스프링부트설치 https://spring.io/tools 사이트에 들어가서 해당 운영체제에 맞는 버전을 다운로드 받아서 압축을 풀어 줍니다. 압축을 푸실때 압축푸는 경로명이 길경우에는 압축풀다가 오류가 발생하면서 안 풀리는 경우가 가끔 있습니다. 이런경우에는 반디집을 설치하여 압축을 풀면 정상적으로 풀립니다. 2.1.2 자바 설치 https://www.oracle.com/kr/java/technologies/javase-downloads.html 사이트에 들어가서 자바1.8버전을 다운받습니다. 이 책의 예제는 자바 1.8기준으로 작성하였습니다. 다운 받아서 설치 해 주시기 바랍니다.

no persistence.xml file found in project [내부링크]

no persistence.xml file found in project Window->Preferences->Java Persistence-> JPA-> Errors/warnings-> Project

[ 조은글 5201호 - 봉사 활동 ] [내부링크]

요즈음은 초중고 학교에서 봉사활동을 많이 강조합니다. 그 봉사활동은 의무화되어 진학을 위해서 의무활동 시간만큼 이수를 해야하죠. 헌혈도 봉사활동 중 하나에 포함이 됩니다. 특히 우리나라는 수혈할 피가 없어 혈핵을 수입에 의존한다고 합니다. 헌혈을 하지 않아 수석졸업생이 불합격한 사례도 있습니다. 그 사례를 소개합니다. 의과대학에 떨어진 한국인 학생의 부모가 대학 당국자를 찾아갔다. 입학이 안 될 이유가 없었기 때문이다 그들은 자식을 위해 미국으로 이민을 왔고, 자녀들도 열심히 공부를 하였다 아들은 고등학교를 수석으로 졸업했다. 그런데, 그 아들이 명문 대학교의 의과대학 입학시험에 떨어졌다 아무리 생각해도 불합격이 이해가 되지 않았다. “제 자식이 무슨 잘못이라도 저질렀습니까? “아니오. 잘못한 일은 없습..

[ 조은글 5200호 - 우리는 그렇게 혼자가 된다 ] [내부링크]

그대 인생의 마지막 20년을 함께 할 친구가 있나요? 대만에서 "미래의 노후"라는 주제로 웹 영화가 많은 네티즌의 공감을 샀다고 합니다. 영화속 줄거리는 산속에서 혼자 사는 노인에 대한 이야기를 담고 있는데, 네명의 자식들은 모두 장성해 교수가 되었거나 해외에 나가 장사를 하고 있고, 노인만 자식들이 모두 떠난 산골집에서 혼자 살아갑니다. 그러던 어느 날, 아들과 손자가 멀리서 찾아온다는 소식에 그는 정성껏 맛있는 음식들을 준비합니다. 하지만..., 곧이어 오지 못한다는 전화를 받게되고, 준비했던 음식들은 주인을 잃고 맙니다. 이 때, 창밖의 하늘마저 우중충해지고 노인은 친구를 불러 함께 식사 할 계획을 세웁니다. 하지만, 누렇게 색이 바랜 낡은 수첩을 한참 동안 뒤적거려도 함께 식사할 만한 친구를 찾지..

[PostgreSQL] postgresql 인덱스 엔티티명,테이블,인덱스이름 조회 [내부링크]

SELECT OBJ_DESCRIPTION(TABLE_NAME::regclass, 'pg_class') AS TABLE_COMMENTS, upper(table_name) as table_name, upper(constraint_name) as constraint_name from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE = 'PRIMARY KEY' AND constraint_schema = 'naqsifh' order by 1

java.security.NoSuchProviderException: no such provider: BC 에러 발생시 [내부링크]

DEBUG 21-07-31 09:48:36[http-nio-8081-exec-1] [PwaPushController:190] - /push/keyGenerater.do 호출 java.security.NoSuchProviderException: no such provider: BC at sun.security.jca.GetInstance.getService(GetInstance.java:83) at sun.security.jca.GetInstance.getInstance(GetInstance.java:206) at java.security.KeyPairGenerator.getInstance(KeyPairGenerator.java:279) at nl.martijndwars.webpush.cli.handler..

[PostgreSQL] 스키마가 다른경우 Entity 설정 [내부링크]

@Entity @Table(name="ncom_id_mstr",schema="naqscom") @Table schema 옵션을 추가한다.

[PostgreSQL] 테이블 데이터 타입별 용량산정 쿼리 [내부링크]

/* POSTGRESQL 테이블 데이터 타입별 항목크기 산정 */ with t1 as ( SELECT A.TABLENAME , A.COLUMN_NAME , A.DATA_TYPE , A.DATA_LENGTH , A.DATA_SIZE, CASE WHEN A.DATA_SIZE < 250 THEN 1 ELSE 0 END BELOW_250, CASE WHEN A.DATA_SIZE >= 250 THEN 1 ELSE 0 END OVER_250 FROM ( select TABLENAME , COLUMN_NAME, DATA_TYPE, DATA_LENGTH, ORDINAL_POSITION, CASE WHEN DATA_TYPE = 'varchar' THEN CEIL(DATA_LENGTH * 0.7) WHEN DATA_TYP..

티베로 테이블 용량산정 쿼리 [내부링크]

/* 티베로 테이블 데이터 타입별 항목크기 산정 */ WITH T1 AS ( SELECT A.TABLE_NAME , A.COLUMN_NAME , A.DATA_TYPE , A.DATA_LENGTH , A.DATA_PRECISION, A.DATA_SIZE, A.COMMENTS, CASE WHEN A.DATA_SIZE < 250 THEN 1 ELSE 0 END BELOW_250, CASE WHEN A.DATA_SIZE >= 250 THEN 1 ELSE 0 END OVER_250 FROM ( SELECT A.TABLE_NAME , A.COLUMN_NAME , A.DATA_TYPE , A.DATA_LENGTH , NVL(A.DATA_PRECISION,A.DATA_LENGTH) AS DATA_PRECISION, C..

베큠 사용 postgresql 쓰레기 데이터 정리 [내부링크]

간단 설명 베큠(Vacuum)은 PostgreSQL의 쓰레기 데이터를 정리하여 쾌적하게 청소하라는 명령인데, 쉽게 "디스크 조각 모음"이라고 생각하면된다. 베큠을 해야되는 이유 데이터는 물리적으로 디스크에 저장되고 읽어서 보여주는데, 데이터를 갱신(UPDATE) 혹은 삭제(DELETE) 시에 디스크에 있던 기존 정보를 갱신하거나 삭제하지 않습니다. 기존 정보는 변경되었다는 표시를 남기고 새롭게 디스크에 갱신(UPDATE)된 정보를 기록합니다. 삭제(DELETE) 했어도 디스크 용량은 줄어들지 않으며 갱신(UPDATE) 시에는 새로운 행이 추가되기 때문에 디스크 용량이 증가하게되는거죠. 이런 개념은 MVCC(다중 버전 동시성 제어) 구현에 따른 튜플(Tuple) 개념때문에 그렇습니다. 다시 쉽게 말하면 트..

티베로에서 PostgreSQL로 데이타 마이그레이션 이관 [내부링크]

티베로에서 postgresql로 데이타 이관하는 소스 입니다. 파이션으로 만들었습니다. 80만건 되는 데이터를 엑셀로 다운받아서 해볼려고 했는데 엑셀로 80만건 내려받는데 20분이 넘게 걸려서 포기하고 파이쎤으로 만들어 볼까 하고 만들었는데 외상예로 처리 속도가 빨라서 jdbc만 지원하는 모든 데이터 베이스 이관은 이것 하나 응용하면 끝날것 같아서 필요 하신분 있을것 같아서 소스 공개합니다. 80만건 티베로에서 postgresql로 이관시 2분도 안 걸렸습니다. 소스 로직도 간단 합니다. db접속해서 원하는 데이터 쿼리로 가져와서 그냥 sqlalchemy 라이브러리 사용해서 밀어 넣으면 끝입니다. from sqlalchemy import create_engine import sqlalchemy.types..

[PostgreSQL] da# erd 생성 [내부링크]

초기 데이터 설정 순서 1. STD_AREA 테이블 : 표준분류 체계관리 등록 SELECT * FROM STD_AREA WHERE STD_AREA_ID = '499135df-e8a3-45e2-b311-5f388506cd34'; 2. STD_DOM_GRP : 도메인 그룹등록 SELECT * FROM STD_DOM_GRP sdg WHERE STD_AREA_ID = '499135df-e8a3-45e2-b311-5f388506cd34'; 3. STD_DOM : 도메인 등록 SELECT * FROM STD_DOM sd WHERE STD_AREA_ID = '499135df-e8a3-45e2-b311-5f388506cd34'; 4. STD_DIC 테이블 : 표준단어 등록 SELECT * FROM STD_DIC sd ..

[PostgreSQL] 테이블 정의서 쿼리 [내부링크]

-- table정의서 추출 select T.table_catalog as "db명" , T.table_schema as "스키마명" , T.table_name as "테이블ID" , coalesce((select PD.DESCRIPTION from PG_STAT_USER_TABLES PS , PG_DESCRIPTION PD where PS.RELNAME = T.table_name and PS.schemaname = T.table_schema and PS.RELID = PD.OBJOID and PD.OBJSUBID = 0 ), 'NULL' ) as "테이블명" , T.ordinal_position as "컬럼순서" , T.column_name as "컬럼ID" , coalesce((select PD.DES..

[PostgresSQL] postgresql Block Size [내부링크]

postgresql block size 확인 기본은 8192 bytes다 SELECT current_setting('block_size'); PostgreSQL에서 (테이블, 스키마, 테이블 스페이스) 등의 DB 용량 조회하기 위한 SQL문이다. [데이터베이스 총 용량 확인] select datname, pg_size_pretty(pg_database_size(datname)) from pg_database; [테이블 스페이스 총 용량 확인] select spcname, pg_size_pretty(pg_tablespace_size(spcname)) from pg_tablespace; [DB의 전체 스키마 조회] select nspname from pg_catalog.pg_namespace pn; [DB의..

[ 조은글 5197호 - 교통사고와 부모님의 사랑 ] [내부링크]

아버지, 어머니, 딸 이렇게 세 식구가 모처럼의 가족여행 중에 교통사고가 났습니다. 자동차가 언덕 아래로 구르는 큰 사고였습니다. 어머니만 상처가 가벼울 뿐 아버지와 딸은 모두 크게 다쳐서 병원에 입원 해야 했습니다. 특히 딸은 상처가 깊어서 오랫동안 병원치료를 받았음에도 평생 목발을 짚고 다녀야 했습니다. 당시 사춘기였던 딸은 무엇보다도 마음의 상처가 깊었습니다. 친구들이 학교에서 체육을 할 때에도 딸은 조용히 그늘에서 그들을 구경만 했습니다. 그나마 같은 목발 신세인 아버지가 딸에게는 큰 위안이 되었습니다. 아버지도 지난 교통사고 이후 목발을 짚어야 하셨던 것입니다. 딸이 투정을 부려도 그 처지를 누구보다도 잘 아는 아버지가 나서서 말없이 받아 주었습니다. 딸에게는 아버지와 같이 공원 벤치에 나란히 ..

[ 조은글 5196호 - 노인 삶의 등급 ] [내부링크]

어느덧 칠순 고개를 넘기고나면 시간의 흐름은 급류를 탄다. 일주일이 하루 같다고 할까, 아무런 하는 일도 없이, 문안 전화도 뜸뜸이 걸려오다가 어느 날부터 인가 뚝 끊기고 만다. 이럴 때 내가 영락없는 노인임을 깨닫게 된다. 노인이 돼봐야 노인 세계를 확연히 볼 수 있다고 할까, 노인들의 삶도 가지가지이다. 노선(老仙)이 있는가 하면, 노학(老鶴)이 있고, 노동(老童)이 있는가 하면, 노옹(老翁)이 있고, 노광(老狂)이 있는가 하면, 노고(老孤)가있고 노궁(老窮)이 있는가 하면, 노추(老醜)도있다. 노선(老仙)은 늙어 가면서 신선처럼 사는사람 이다. 이들은 사랑도 미움도 놓아 버렸다. 성냄도 탐욕도 벗어 버렸다. 선도 악도 털어 버렸다. 삶에 아무런 걸림이 없다. 건너야 할 피안도 없고, 올라야 ..

[ 조은글 5195호 - 위기는 곧 기회이다 ] [내부링크]

1930년 경 미국 샌프란시스코의 한 금광. 금을 캐려는 사람들로 인해 급 성장하면서 도시가 생겨 나고 그 사람들이 먹고 자는 천막집이 수없이 늘어나 산 기슭이 커다란 천막촌으로 변해 갔습니다. 이 곳에서 천막의 천을 생산하던 스트라우스는 덕분에 돈을 많이 벌 수 있었습니다. 그러던 중 한 사람이 찾아와 군납을 알선해 줄테니 군대 에서 사용할 수 있는 천막 10만개를 제작해 달라고 하였 습니다. 스트라우스는 그 제의를 수락하여 곧 대량 제작 체제로 돌입하였고, 밤낮으로 제작한 결과 3개월 만에 약속한 전량을 생산할 수 있었습니다. 하지만, 막상 군납을 알선해 주겠다던 사람이 군납계약 을 성사시키지 못하였고 빚 더미에 앉은 스트라우스는 자살까지 결심할 정도로 괴로워 했습니다. 그러던 어느 날, 술집을 찾은..

[ 조은글 5194호 - 소통의 중요함 ] [내부링크]

소통의 중요함이 점점 더 강조되고 느껴집니다. 의사소통뿐 아니라 인간의 삶은 모름지기 소통이 그 원만한 한 생의 요체이기 때문이겠습니다. 나누고 섬기고 이해하고 배려함이 모두 소통에 의하여 이루어진다고 생각합니다. 이런 소통의 중심에 ''말''이라는 도구가 필요합니다. 소통에서 주의할 일 1. "앞"에서 할수 없는 말은 "뒤"에서도 하지 말 것입니다. 뒷말은 가장 나쁘고. 궁시렁 거림도 바람직하지 않습니다. 2. "말"을 독점하면 "적"이 많아 집니다. 적게 말하고 많이 듣도록 하십시요. 들으면 들을수록 내편이 많아집니다. 3. 목소리의 "톤"이 높아질수록 "뜻"은 왜곡됨을 잊지 마십시요. 흥분하지 마시고 낮은 톤의 목소리에 힘이 있음을 잊지 마십시요. 4. "귀"를 훔치려 하지말고 "가슴"을 흔드는..

[ 조은글 5193호 - 왕자와 목동 ] [내부링크]

영국의 한 왕자가 사냥을 나갔다가 길을 잃고 헤매게 되었습니다. 도중에 한 목동을 발견했습니다. 왕자는 그에게 길을 안내해 달라고 부탁했습니다. "안 됩니다. 저는 남의 집 양을 치는 목동인데 양 떼를 놔두고 길을 안내할 수 없습니다." 라고 목동은 거절했습니다. 월급을 물으며 월급의 3배를 줄 터이니 안내하라고 하니까, "못 합니다. 돈 때문에 저를 믿고 양을 맡겨준 분을 저버릴 순 없습니다." 하더랍니다. 참다 못한 왕자는 총을 겨누었습니다. "안내하지 않으면 죽이겠다!" 고 하니까 그제서야 한숨을 쉬면서 목동이 말했습니다. "아무리 그러셔도 전 양들을 버리지 않을 겁니다. 그러나 말로는 안내해 드리지요. 저 산을 세 번 넘은 후에 서쪽으로 계곡을 따라 20분간 가면 도로가 나옵니다." 라고 대답하더..

[PostgreSQL] 개발db 환경 셋팅 [내부링크]

윈도우 설치 기준 윈도우에 설치후 원격에서 접속할수 있게 C:\Program Files\PostgreSQL\10\data\pg_hba.conf 파일 열어서 접속 허용아이 대역을 추가한다. # replication privilege. host replication all 127.0.0.1/32 md5 host replication all ::1/128 md5 host all all 0.0.0.0/0 md5 /*여기부분 추가 */ 1. 접속 사용자 계정 생성 create user naqsifh password 'test' superuser; create user naqscom password 'test' superuser; 2. 데이터 베이스 생성 create database naqs; 3. 사용자 권한주기..

[PostgreSQL] 원격접속시 오류 발생할때 처리 [내부링크]

pg_hba.conf 파일열어서 원격접속 허용아이피 추가 개발 테스트용에는 전체 아이피 접속 허용 아래와 같이 추가 후 재기동 host all all 0.0.0.0/0 md5

Maven 환경의 톰캣 lib 배포 안될경우 에러 [내부링크]

[ERROR] Maven 환경의 프로젝트 구동시 에러 후아뚜아 : HU-A-DDU-A 아크투루스 2013. 10. 8. 19:13 이 오류는 이 오류는 maven의 dependency가 정상적으로 처리되지 못한 경우.. tomcat의 server plugin의 임시 deploy 디렉토리에 WEB-INF/lib에 jar들이 정상 배포되지 않기 때문입니다.. 해결하시는 방법은.. 개발환경 v1.0(eclipse 3.4기반)의 경우는 다음과 같이 조치하시면 되실 것 같습니다. - Project 메뉴 선택 -> Clean... 선택 후.. 프로젝트 재빌드 수행.. - 프로젝트 선택 -> context menu -> Maven -> Update Project Configuration - 프로젝트 선택 -> con..

wildfly X-Powered-By : JSP/2.3 보안이슈 해결 [내부링크]

사이에 추가한다.                                  브라우저에서 제공하는 툴 등으로 HTTP 요청/응답 헤더 정보를 조회할 수 있다. 니는 악의적인 목적으로 이용하면 보안상 큰 이슈가 될 수 있으므로 보통 헤더 정보 중에서 중요한 정보를 감출 수 있다. 아래는 HTTP 요청에 의한 응답 헤더 내용이다. Connection:closeContent-Encoding:gzipContent-Type:text/html;charset=UTF-8Date:Tue, 14 Aug 2012 15:34:02 GMTServer:ApacheTransfer-Encoding:chunkedVary:Accept-EncodingX-Powered-By:JSF/1.2 위의 정보에서 "X..

[ 조은글 5192호 - Love is Everything ] [내부링크]

다섯 명의 자식을 둔 아버지가 있었습니다. 그 중 한 명의 아들이 유독 병약하고 총명하지도 못하여 형제들 속에서조차 주눅 들어 있는 아들이 아버지는 늘 가슴 아팠다고 합니다. 어느 하루, 아버지는 다섯 그루의 나무를 사 왔습니다. 그리고 다섯 명의 자식들에게 한 그루씩 나누어 주며 1년이라는 기한을 주었지요. 가장 잘 키운 나무의 주인에게는 뭐든 원하는 대로 해 주겠다는 약속과 함께 말입니다. 약속한 1년이 지났습니다. 아버지는 자식들을 데리고 나무가 자라고 있는 숲으로 갔습니다. 놀랍게도 유독 한 그루의 나무가 다른 나무들에 비하여 키도 크고 잎도 무성하게 잘 자라고 있었습니다. 바로 아버지의 가슴을 가장 아프게 하였던 그 아들의 나무였던 게지요. 약속대로 아버지는 아들에게 원하는 것을 물었고 예상대로..

[ 조은글 5191호 - '평범'을 '특별'로 바꾸는 힘 ] [내부링크]

미국 하버드 대학의 동물학자 로버트 로젠달 박사는 들쥐의 생태를 연구하기 위해 들쥐 200여 마리를 연구소에서 키우고 있었다. 어느 여름, 세계 여행을 떠나기 위해 3개월이나 되는 긴 휴가를 냈다. 그는 여행을 떠나면서 키우던 들쥐중 50마리만 골라 그들의 머리 위에 흰 페인트를 조금씩 칠해주었다. 박사가 여행을 떠나고 들쥐를 키우던 사육사들은 몹시 궁금해졌다. “박사님이 왜 50마리만 골라 머리에 흰 페인트칠을 해놓으신 걸까?” 그러고는 나름대로 추측하기 시작했다. ‘머리에 흰 페인트칠로 표시해놓은 들쥐는 품종이 좋을 거야.’ ‘지능이 뛰어나고 영리한 것이거나 하여튼 좀 다른 것이겠지.’ 그런 생각이 들자 사육사들은 무의식으로 다른 쥐들보다 머리에 흰 페인트칠을 한 쥐들에게 좀 더 관심을 가지고 정성을..

[ 조은글 5190호 - 엘도라도의 망상 ] [내부링크]

미국의 골드러시가 시작되기 전, 온 유럽은 ‘엘도라도’의 열병으로 홍역을 치렀습니다. 스페인어 ‘엘도라도’는 ‘황금가루를 칠한 사람’이란 뜻으로 콜롬비아 인디언 마을의 전설적인 통치자를 가리키는 말입니다. 그는 축제 때가 되면 온 몸에 황금 가루를 칠한 채 축제를 주관했고, 축제가 끝난 뒤에는 호수에 들어가서 황금 가루를 씻었습니다. 그때를 맞춰 신하들은 온갖 보석과 황금으로 만들어진 물건들을 호수 속으로 던졌습니다. 그래서 그 호수의 바닥에는 온통 황금으로 가득 차 있다는 것입니다. 이 전설 같은 이야기가 유럽으로 전해진 뒤, 엘도라도는 황금 마을을 지칭하게 되었습니다. 수많은 유럽인들이 엘도라도를 찾아 남아메리카로 건너갔습니다. 그들의 행렬은 미국의 골드러시가 시작되기 전까지 이어졌지만 모두 허탕을 ..

[PostgresSQL] postgresql 백업 및 복원 [내부링크]

/* 패스워드를 파일로 등록해 놔야 한다 */ C:\Users\cbw\AppData\Roaming\postgresql\pgpass.conf 파일 내용 localhost:5432:*:postgres:postgres /* db전체백업 */ pg_dump.exe --file "D:\\temp\\invako.backup" --host "localhost" --port "5432" --username "postgres" --no-password --verbose --format=c --section=pre-data --section=data --section=post-data --column-inserts --encoding "UTF8" "invakodb" /* db전체복원 */ pg_restore.exe --h..

[PostgresSQL] 테이블의 컬럼정보확인 [내부링크]

NFORMATION_SCHEMA.COLUMNS 을 이용하여 특정 테이블의 컬럼 목록과 특정 컬럼 존재 여부를 확인해보자. 우선 PostgreSQL의 구조를 보면 알겠지만 데이터베이스 내에 Schemas 안에 여러 그룹(?) 이 존재하며 각각 테이블 목록이 존재한다. SELECT * FROM INFORMATION_SCHEMA.COLUMNS 라는 구문을 사용하면 모든 SCHEMA 안에 있는 컬럼 정보들을 가져오는데 그 컬럼 정보들은 table_catalog, table_schema, table_name, column_name, ... 말그대로 테이블 정보를 전부 가져온다. 이 구문을 이용하여 where 조건을 걸어주어 특정 테이블 정보와, 특정 테이블의 컬럼 존재 여부를 확인할 수 있다. ▷예제1) 특정 테..

조건에 따른 값 보여주기 [내부링크]

조건에 따라 다른값을 보여주는 CASE WHEN ~ END 구문에 대해 알아보자. CASE WHEN 구문을 간단하게 설명하자면 아래와 같다. CASE WHEN condition_1 THEN result_1 WHEN condition_2 THEN result_2 [WHEN...] [ELSE else_result] END 여기서 ELSE 부분 역시 생략이 가능하지만 위에서 만족하는 조건이 없으면 NULL을 반환하니 상황에 따라 뭐라도 넣어주는것이 좋을 수 있다. CASE WHEN 구문은 PostgreSQL 에서만 존재하는건 아니라서 오라클 등등에서 사용할 수 있으니 이참에 잘 알아두자. 예제1) 일반 구문 형식 SELECT CASE WHEN score IS NOT NULL THEN 'D' ELSE 'F' ..

[PostgreSQL] 다른테이블 복사하여 새로운 테이블 생성 [내부링크]

▷예제1) 다른 테이블의 구조만 복사하기 CREATE TABLE mine (LIKE othertable); ▷예제2) 다른 테이블의 구조와 데이터 복사하기 CREATE TABLE it AS SELECT * FROM othertable ▷예제3) 다른 테이블의 구조와 테이블의 모든 정보 복사하기(ft. index) create table trecord (like othertable including all); -- 추가로 데이터도 넣어주기 insert into trecord (select * from othertable)

[PostgreSQL] 데이터 있으면 update 없으면 insert [내부링크]

PostgreSQL 에서 사용하는 upsert구문에 대해 알아보자. (오라클에서는 merge into / mysql에서는 on duplicate on key update 를 사용한다.) 구문은 다음과 같다. INSERT INTO [TABLE] (COLUMN1, COLUMN2, ...) VALUES (VALUE1, VALUE2, ...) ON CONFLICT [column_name / ON CONSTRAINT constraint_name/ WHERE predicate] [DO NOTHING] [DO UPDATE SET column1 = value1, ...] 기본구문은 이런식으로 이루어져 있고 하나씩 설명하자면 ON CONFLICT column_name : 특정 컬럼명을 기준으로 체크를하며 컬럼을 여러개 ..

[PostgreSQL] 시퀀스 생성 및 사용 [내부링크]

▷생성 CREATE SEQUENCE [seq_name] ▷nextval nextval('seq_name') ▷currval currval('seq_name') ▷값 초기화 setval('seq_name', seq_val, [true/false]) ▷삭제 DROP SEQUENCE [seq_name] 사용 예제) CREATE SEQUENCE mine_seq; SELECT nextval('mine_seq'); SELECT currval('mine_seq'); DROP SEQUENCE mine_seq; 시퀀스를 생성해놓고 바로 확인을 하기 위해 currval()을 사용하여 확인하게 되면 다음과 같은 에러가 발생하는데 ERROR: 오류: "mine_seq" 시퀀스의 currval 값이 현재 세션에 지정되어 있지 ..

[PostgreSQL] Schema 관리(생성/추가/변경/삭제) [내부링크]

1. postgresql schema 구조 - schema는 object들의 논리적인 집합을 의미한다. - TABLE, VIEW, SEQUENCE, SYSNONYM, DOMAIN, FUNCTION 등의 OBJECT들로 구성된다. - SCHEMA를 사용하는 이유는 논리적집합체를 만들어 관리 편의성을 높이고 여러 사용자의 간섭없이 접속할 수 있게 한다. 2. 스키마 조회 - \dn 명령어로 조회 가능 3. 스키마 생성 (1) CREATE SCHEMA [schema_name] AUTHORIZATION [user_name] [ schema_element [ . . . ] ]; - 이름을 입력하지 않을 경우 USER의 이름을 schema 이름으로 사용한다. (pg_ 로 시작하는 이름은 스키마 이름으로 불가능) (..

[PostgreSQL] SQL 파일 실행 [내부링크]

postgres 계정에서 실행합니다. [root@localhost ~]$ su - postgres 비밀번호 입력 : [postgres@localhost ~]$ [postgres@localhost ~]$ psql -U postgres -d postgres -a -f /var/lib/pgsql/11/database.sql psql -U [database_user] -d [database_name] -a -f [sql file 절대경로] * postgres 계정으로 실행하면 관리자 권한이 없어 파일이 검색되지 않거나 찾지 못하는 경우가 많으니 postgres가 소유권을 가진 폴더로 sql 파일을 이동시켜 놓은 후 pwd로 정확한 현재 경로 확인해서 psql 명령어 실행하는게 간편하고 빠릅니다. 출처: http..

[PostgreSQL] 문자열 함수 (자르기, 붙히기, 치환 등) [내부링크]

문자열 함수 btrim : 문자열의 시작과 끝 양쪽에 지정된 문자들을 제거 char_length : 문자열의 길이를 반환 character_length : 지정된 문자열의 길이를 반환 || : 2개의 문자열을 합하여 반환 initcap : 문자열 중 첫번째 문자는 대문자로 변환하고 나머지는 소문자로 변환 length : 문자열의 길이를 반환 lower : 지정된 문자열을 모두 소문자로 변환 lpad : 지정된 문자열을 원하는 길이로 맞추는데, 이때 부족한 문자를 왼쪽에 채움 ltrim : 문자열의 왼쪽에서 지정된 모든 문자를 제거 position : 문자열에서 지정된 문자열이 존재하는 인덱스값을 반환 repeat : 문자열을 원하는 만큼 반복해서 반환 replace : 기존의 문자열을 구성하는 부분 문자..

[PostgreSQL] 사용하지 않는 인덱스 조회 및 성능 개선 [내부링크]

인덱스(Index) 혹은 색인은 테이블 설계시 많이 고민하는 부분이고 성능 향상에 많은 도움을 주고 있지만 프로그램의 설계 변경 혹은 기능 개선등 여러 상황에 따라 사용하지 않는 인덱스가 발생하게 됩니다. 여러 상황 때문에 현재는 사용하지 않는 인덱스를 찾아보기 위한 간략한 정리 내용입니다. 인덱스 구조 이해를 위한 예시 인덱스는 지정한 컬럼에 대한 매핑 정보를 가지고 있습니다. 사용하지 않는 인덱스를 찾아봐야되는 이유 보통 쿼리 튜닝을 위해 운영중인 데이터베이스에서 EXPLAIN 명령어를 많이 사용하고 필요시 인덱스 추가는 생기지만 삭제는 거의 없을거라 생각됩니다. 만약 그렇다면 극단적으로 생각했을때 오래된 프로그램 일 수록 추가된 인덱스는 많지만 삭제된 인덱스가 없다는건 불필요한 인덱스도 많을수 있다..

[PostgreSQL] 암호화 함수 사용 (pgcrypto) [내부링크]

1. 확장 모듈 설치 create extension pgcrypto; enterprisedb 계정으로 해당 모듈을 설치할 스키마 선택 후 실행. 암호화 관련 함수 생성 2. Raw encryption functions convert_to/convert_from : 문자열 변환/복원 encode/decode : 16진수 인코딩/디코딩 encrypt/decrypt : 암호화/복호화 예제) -> ENC_KEY는 실제 사용할 암호화KEY로 대체해야 함. * 암호화 : utf8로 변환한 후, 암호화키로 'aes'알고리즘을 사용하여 암호화한 후, 그 값을 16진수(hex)로 encoding함 select encode(encrypt(convert_to('홍길동','utf8'),'ENC_KEY','aes'),'hex'..

[PostgreSQL] 배열형 컬럼 다루기 [내부링크]

PostgreSQL 배열형 컬럼 선언 - 데이터 타입 선언 시 ' [] '만 붙이면 배열형 컬럼이 됨 배열형 컬럼 생성 CREATE TABLE member( id serial PRIMARY KEY, name varchar(20), age integer, hobby varchar(100)[] -- 배열형 컬럼 ); 배열형 컬럼에 데이터 추가하기 -- 배열형 데이터를 {} 안에 ","로 구분해서 입력한다. INSERT INTO member (name, age, hobby) VALUES('kim', 10, '{book, music}'); -- 데이터를 하나만 넣을 때는 위와 같이 쓴다. INSERT INTO member (name, age, hobby) VALUES('lee', 12, '{game}')..

[PostgreSQL] 슬로우쿼리를 잡아내는 3가지 방법 [내부링크]

쿼리 시간이 어느정도 느려지면, 쿼리 실행문을 로그에 남기기 위해 postgresql.conf에 설정값 추가한다. log_min_duration_statement = 5000 그리고 config를 reload 해주면 된다. SELECT pg_reload_conf(); pg_reload_conf ---------------- t (1 row) 특정 데이터베이스, 특정 유저 권한에서 발생한 슬로우쿼리만 모니터링 할 수도 있다. ALTER DATABASE test SET log_min_duration_statement = 5000; ALTER DATABASE 남긴 로그 확인 이렇게 하면, 부하를 유발하는 단일 쿼리를 파악하기 쉽다. 그러나 처리 시간은 빠르지만, 여러번 호출되서 부하를 발생시키는 쿼리 실행을 ..

[PostgreSQL] DB Lock을 줄이는 7가지 팁 [내부링크]

1. Default 값이 있는 필드를 추가하면 안된다 PostgreSQL 10이하 버전에서, Default 값이 있는 필드를 추가하면, 테이블 락이 걸릴 수 있다. 그리고 엄청 느리다. 그래서 이런 쿼리를 날리면 안된다. ALTER TABLE items ADD COLUMN updated_at timestamptz DEFAULT now(); 기본값이 없는 필드를 추가한 후, UPDATE를 날리거나 ALTER TABLE items ADD COLUMN updated_at timestamptz; UPDATE items SET updated_at = now(); 이렇게 쪼개서, UPDATE를 해주는게 좋다. ( 한번에 전체 테이블을 Update를 하면, 오래걸리니까. ) do { numRowsUpdated = e..

[PostgreSQL] DBLINK 설정 및 사용 [내부링크]

* DB LINK? - 현재 데이터베이스 세션 내에서 물리적으로 다른 곳에 위치한 데이터베이스 연결을 지원하는 확장성 모듈. - EXTENSION MODULE - extension 설치 후, 사용자 설정에 맞춰 사용하고 삭제하지 않는 이상 재설치는 불가. - 스키마 지정이 없으면 default로 public에 설치가 되므로 스키마별로 사용이 필요한 경우, ALTER로 변경하거나 삭제 후 재설치하여 사용. * DB LINK EXTENSION 설치 CREATE EXTENSION [ IF NOT EXISTS ] extension_name [WITH] [SCHEMA schema_name] [VERSION version] [FROM old_version] * DB LINK 관리 CREATE EXTENSION IF..

[PostgreSQL] 테이블 lock 조회 및 kill하기 [내부링크]

현재 수행중인 SQL 전체 조회 select datname, pid, usename, application_name, client_addr, client_port, backend_start, query_start, wait_event_type, state, backend_xmin query from pg_stat_activity; 위 쿼리 실행시 현재 DB에서 돌고 있는 SQL 전체를 조회할 수 있다. datid oid 데이터베이스oid datname name 데이터베이스 이름 pid integer 프로세스id usesysid oid 사용자고유번호 usename name 사용자이름 application_name text 응용프로그램이름 client_addr inet 접속ip client_hostname ..

[PostgreSQL] 기본 조회 명령어 및 변수 선언, 설정 [내부링크]

1) help information - psql의 명령어에 대한 정보를 얻기 위해서는 psql로 접속하여 \? 를 입력하면 명령어에 대한 정보를 얻을 수 있다. - sql에 대한 명령어 정보를 얻고 싶을 때는 \h 를 입력하면 sql명령어에 대한 정보를 얻을 수 있다. 2. database 목록 확인 - \l 명령어를 통해 서버에 접속된 database 목록을 확인할 수 있다. - database 내 relation 정보를 확인하려면 \d를 입력한다. \dt : database 내 table 조회 \d+ : relation 상세 조회 \dS : System table 조회 \dv : view 조회 \dl : Large object 조회 \di : index 조회 \df : fun..

[PostgreSQL] 계정/유저관리 [내부링크]

1. user 조회 select * from pg_shadow; postgres=# select * from pg_shadow; usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig ----------+----------+-------------+----------+---------+--------------+-------------------------------------+----------+----------- postgres | 10 | t | t | t | t | md53175bce1d3201d16594cebf9d7eb3f9d | | invako | 16384 | f |..

[PostgreSQL] database 관리(생성/추가/삭제/변경) [내부링크]

1. DATABASE 소유 - Database를 생성하기 위해서는 SUPERUSER이거나 CREATEDB 권한을 가진 USER여야 한다. - SUPERUSER는 다른 USER가 만든 DATABASE를 소유할 수도 있지만 그 외 일반 USER들은 자신이 생성한 DATABASE만 소유할 수 있다. 2. DATABASE 조회 => psql -U postgres 접속후 영문 소문자 \l 입력하여 조회 postgres=# \l 데이터베이스 목록 이름 | 소유주 | 인코딩 | Collate | Ctype | 액세스 권한 -----------+----------+--------+-------------+-------------+----------------------- comdb | com | UTF8 | en_US..

[PostgreSQL] Tablespace 생성 [내부링크]

1. TABLESPACE - DB 내의 물리적인 부분으로 실제 데이터를 저장하는 공간이다. 2. TABLESPACE 생성 생성할 폴더를 만든다. mkdir postgre_db 소유권 변경 chown postgres postgre_db postgresql 접속 # psql -U postgres psql (13.3 (Debian 13.3-1.pgdg100+1)) 도움말을 보려면 "help"를 입력하십시오. postgres=# create tablespace invako_tbl owner invako location '/postgre_db'; CREATE TABLESPACE CREATE TABLESPACE [tablespace_name]; option (1) OWNER [user_name] - 입력하여..

Postgresql 테이블스페이스 사용량 조회 [내부링크]

-- tablespace 총량 select spcname, pg_size_pretty(pg_tablespace_size(spcname)) from pg_tablespace; -- table size (index 미포함) select pg_size_pretty(pg_relation_size('table')); -- index size select pg_size_pretty(pg_relation_size('idx1')); -- total size(data + index) select pg_size_pretty(pg_total_relation_size('table1')); -- DB size 단위적용 : pg_size_pretty()

[ 조은글 5188호 - 지금(now)과 여기(here) ] [내부링크]

합천 해인사 장경판전 주련(기둥에 연이어 걸어놓은 글판)에는 “원각도량하처(圓覺度量何處)”라는 글이 새겨져 있다. “깨달음의 도량 즉 행복한 세상은 어디인가?” 라는 뜻입니다. 그 질문에 대한 답은 맞은 편 기둥에 새겨져 있습니다. “현금생사즉시(現今生死卽時)” “당신의 생사가 있고 당신이 발 딛고 있는 지금 이곳이다.” 지금 살고있는 이 순간, 이곳에 충실하라는 뜻입니다. 삶의 모든 순간은 첫 순간이면서 마지막 순간이고, 유일한 순간입니다. 지금 이 순간은 영원할 수도 있지만 마지막이 될 수도 있는 순간입니다. 평생 일만 하고 사는 바보들이 놓치고 사는 것이 지금입니다. 매 순간을 생애의 마지막인 것처럼 사십시요. 과거에 연연하지 말고, 내일 일을 오늘 걱정하지 마십시요. 어제의 비로 오늘의 옷을 적시..

[ 조은글 5187호 - 누군가를 믿는다는 것의 위대함 ] [내부링크]

미국에 사는 한국인 부부가 있다. 남자는 26살인데 운동선수다. 재능은 있지만, 아직 군대를 다녀오지 않은 상태이고, 팔꿈치 수술을 받는 등 안 좋은 일만 가득한 상황이다. 게다가 아이를 포함해 4식구이지만 월급이 100만 원 수준이라, 같은 팀의 세 선수가 함께 월세를 살 정도로 경제적으로도 힘들다. 결국 가족이 겪는 고통을 더는 볼 수 없었던 그는, 아내에게 이렇게 말한다. "한국에 돌아가자. 이젠 힘들 것 같아." 그러자 아내는 단호한 얼굴로 이렇게 응수한다. "나랑 애들 신경 쓰지 말고, 여기서 당신이 할 거 해. 당신이 처음 가졌던 꿈을 이루라고. 여기에 꿈을 이루려고 온 거잖아? 당신에게 방해된다면, 우리는 한국 가면 되니까 당신은 꿈을 포기하지 마!" 당시 아내는 건강도 안 좋은 상태였다. ..

[ 조은글 5186호 - 꼰대처럼 늙지 않는 ‘12345 법칙’ ] [내부링크]

어떤 마음으로 어떻게 행동해야 ‘어른’ 소리 들을까? “너의 젊음이 너의 노력으로 얻은 상이 아니듯, 내 늙음도 내 잘못으로 받은 벌이 아니다" 영화 은교에 등장해 유명해진 미국 시인 시어도어 루스케의 말처럼, 인간은 누구나 늙는다. 하지만 그렇다고 해서 모두 ‘성숙하게’ 늙는 것은 아니다. 마음 가는대로 거침없이 행동하고 자기 주장만 옳다고 큰소리치면 꼰대라고 손가락질 받기 십상이다. 따라서, 멋지게 늙는 법에도 요령이 필요하다. 창의경영연구소 조관일 대표는 자신의 채널 ‘조관일TV’에서 ‘매력있게 늙어가는 5가지 법칙’에 대해 이야기했다. 각 계명의 첫 음을 따 이름 붙인 ‘12345(일이삼사오) 법칙’은 다음과 같다. 1. 일부러 자주 웃어라! 저 같은 경우도 칩거하면서 하루 종일 연구만 하던 시절..

[ 조은글 5185호 - 뻐꾸기가 둥지안에서 살지않는 이유 ] [내부링크]

여러 사람들을 이기고 마지막 문제에 도전하게 된 영구. 퀴즈쇼 진행자가 마지막 퀴즈를 냈다. "마지막 문제를 맞추게 되면 총 상금 1억원을 타게 됩니다. 하지만 문제를 맞추지 못하면 여태까지 이겼던 상금 5천만원은 자동적 으로 사라지게 됩니다. 마지막 퀴즈에 도전 하시겠습니까?" 옆에 있던 아는 사람들이 포기하고 5천만원만 챙기라고 권했다. 진행자도 다시 물었다. "도전 하시겠습니까?" 그러나 영구는 과감하게 도전 하겠다고 했다. 문제가 나왔다. "다음 새들 중에서 둥지에서 살지 않는 새는 무엇입니까?" 1) 참새 2) 제비 3)뻐꾸기 4)비둘기 진행자가 문제를 내고 난 후에 다시 말했다. "지금이라도 그만 두고 여태까지 상금을 챙기셔도 됩니다." 긴장된 순간...영구가 답을 맞추겠다고 했다. "맞추지 ..

[ 조은글 5184호 - 외상 장부 ] [내부링크]

중국 당나라에 ‘송청’이라는 명의가 있었습니다. 그가 지어주는 약으로 완치가 되거나, 병의 예후가 좋았기 때문에 그를 찾는 사람들은 날로 늘어만 갔습니다. 또한 그는 돈이 없는 병자가 오면 돈을 받지 않고, 외상 장부에 이름만 올리고 치료와 약을 지어 주었습니다. 그런데 외상 장부에 이름이 가득 차면 그냥 장부를 불에 태워버리곤 했습니다. 어느 날 한 사람이 물었습니다. “선생님은 왜 치료를 해주고 약을 지어주면서, 돈을 받으려는 노력은 하지 않는 것입니까? 거기에 장부까지 태우면 영영 돈을 받지 못하여 너무 큰 손해를 보는 것이 아닙니까?” 그러자 송청은 대답했습니다. “제가 40년간 외상 장부를 태웠지만, 단 한 번도 크게 손해를 본 적이 없습니다. 물론 약값을 주지 않는 사람도 있지만, 오히려 저에..

[ 조은글 5183호 - 세상에서 가장 더러운 것 ] [내부링크]

한 사원에 고명한 수도사가 살고 있었다. 그런데 공교롭게도 그 사원에서 얼마 떨어지지 않은 거리에 매춘부의 집이 있었다. 사원은 성스러웠으나 매춘부의 집은 건달들이 쉬임없이 들락거렸다. 어느날 수도사는 매춘부를 불러다놓고 호되게 꾸짖었다. "그대는 밤낮으로 죄를 짓고 있다. 도대체 어떻게 그 죄의 대가를 받으려고 그러느냐." 가난한 매춘부는 눈물을 흘리며 참회하였다. 신에게 간절히 기도하며 용서를 빌었다. 그러나 무식하고 재주없는 이 여인은 다른 직업을 구할 수가 없었다. 사내들의 출입은 그치지 않았다. 수도사는 매춘부의 집으로 사내들이 들어갈 때마다 뜰에 돌을 하나씩 주워 모으기 시작했다. 날이 감에 따라 돌무더기가 커갔다. 하루는 수도사가 매춘부한테 돌무더기를 가리키며 질책했다. "여인아, 이 돌무더..

전자정부 표준프레임워크 3.10 [내부링크]

전자정부 표준프레임워크 3.10 셋팅

[ 노석종의 조은글 5182호 - 친구 (親舊) ] [내부링크]

학창 시절에 "세 명의 친구를 가지면 성공한 인생이다" 란 말을 들었을 때 매우 의아해 했던 기억이 납니다. 그러나 살아보니 진짜는 한 명도 어렵다는 걸 실감하게 됩니다. 친구나 벗을 지칭하는 용어는 동·서양이 다르고 한·중·일 또한 각각 다릅니다. ※ 한국은 친구(親舊) ※ 중국은 펑여우(朋友), ※ 일본은 도모다찌(友達)를 씁니다. ‘'붕(朋)’'은 봉황이 날 듯 새 떼가 함께 무리지어 나는 모습이며 '‘우(友)’'는 서로 손(又)을 잡고 돕는다는 의미입니다. 구체적으로 ‘'붕(朋)'’은 동문(同門) 수학한 벗이고 '‘우(友)'’는 동지(同志)로서의 벗입니다. 따라서 같은 스승 밑에서 공부를 함께 하고 뜻을 같이한 벗을 ‘'붕우(朋友)'’라 합니다. 예로부터 그 사람의 미래를 알고 싶으면 사귀는 벗을..

[ 조은글 5181호 - 누군가의 단점이 보이십니까? ] [내부링크]

동물들 세계에 전쟁이 일어났습니다. 사자가 총지휘관이 되었고 동물들이 사방에서 몰려들었습니다. 동물들은 서로를 쳐다보며 한심하다는 듯이 수군거렸습니다. "당나귀는 멍텅구리라서 전쟁에 방해만 될 테니 돌아가는 게 낫지." "토끼 같은 겁쟁이가 어떻게 싸움을 한다고 온 거야! 한심하군." "개미는 힘이 약해 어디다 쓰겠어?" "코끼리는 덩치가 커서 적에게 금방 들통이 나고 말걸." 이때 총지휘관인 사자가 호통을 쳤습니다. "시끄럽다. 모두 조용히 해라! 당나귀는 입이 길어서 나팔수로 쓸 것이다. 그리고 토끼는 걸음이 빠르니 전령으로 쓸 것이며, 개미는 작아서 눈에 안 띄니 적진에 게릴라로 파견할 것이고, 코끼리는 힘이 세니 전쟁 물자를 운반하는 일을 할 것이다." 지혜로운 사람은 단점을 장점으로 살려 씁니다..

jboss-web.xml [내부링크]

jbos서버를 사용시 셋팅 파일입니다. / SET SESSION false

web.xml [내부링크]

web.xml 환경설정 PortalWeb export-path /export import-path /import monitor-enabled true monitor-cycle-time 30 file-storage-time 10 cors egovframework.com.cmm.filter.SimpleCorsFilter cors /* index.jsp BASIC java.lang.Throwable /common/error.jsp 404 /common/error.jsp 500 /common/error.jsp http://www.egovframe.go.kr/tags/double-submit/jsp /META-INF/double-submit.tld 70 COOKIE

logback.xml [내부링크]

로그 설정 파일입니다. %d{HH:mm:ss.SSS} [%thread] %-5level [%logger] - %msg%n

pom.xml [내부링크]

query dsl을 생성하기 위해 plugin인에 옵션을 추가하였습니다. 주석으로 설명 달아 놓았습니다. 4.0.0 invako invako war 1.0.0 invako http://www.egovframe.go.kr The Apache Software License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0.txt 4.3.22.RELEASE 3.9.0 3.9.0 1.7.5 1.0.0-SNAPSHOT 5.5.2.Final 4.1.4 1.4.2.Final jdt_apt tobesoft http://mangosteen.tobesoft.co.kr/nexus/repository/maven-public/ mvn2 https://repo1.maven.org..

postgre ddl [내부링크]

테스트용 ddl select * from TEST_TEAM; /* 1. 팀정보 시퀀스 생성 */ DROP SEQUENCE SQ_N_TEST_TEAM_01; CREATE SEQUENCE SQ_N_TEST_TEAM_01 START 1; /* 1.테스트 테이블 팀정보 */ CREATE TABLE TEST_TEAM ( TEAM_SN NUMERIC(12) NOT NULL, TEAM_NM VARCHAR(60) NOT NULL, TEAM_DC VARCHAR(200), SORT NUMERIC(4), DEL_YN CHAR(1) NOT NULL, REGISTER_ID VARCHAR(20) NOT NULL, REG_DT TIMESTAMP NOT NULL, UPDUSR_ID VARCHAR(20) NOT NULL, MDFCN_..

마이바티스 쿼리 샘플 [내부링크]

/* selectAuthManageList */ /* 권한관리 조회 */ SELECT AUTHOR_CODE, /* 권한코드 */ AUTHOR_NM, /* 권한명 */ AUTHOR_DC, /* 권한설명 */ AUTHOR_CREAT_DE, /* 권한생성일 */ DECODE(USE_AT,'Y',1,0) AS USE_AT, /* 사용여부 */ 'N' AS DEL_STATUS, /* 삭제여부 */ '롤등록' AS BTN_ROLE /* 버튼 */ FROM COMTNAUTHORINFO WHERE 1 = 1 AND AUTHOR_NM LIKE '%'||#{searchKeyword}||'%' /* insertAuthManage */ /* 권한등록 */ /* updateAuthManage */ /* 권한수정 */

mapper-config.xml [내부링크]

마이바티스 mapper-config.xml

context-transaction.xml [내부링크]

마이바티스와 jpa를 같이 쓰기 위해서는 트랜잭션 설정이 중요합니다. 에러가 발생하였을 경우 rollback이 제대로 일어 나야 합니다. 주석으로 설명 달아 놓았습니다. 마이바티스는 트랜잭션 설정할때 귀찮으니까.. 이렇게 한줄로 select,insert,update,delete 몽땅 다 트랜잭션 설정 되게 * 로 하고 사용하는데 jpa 사용할때는 세부적으로 옵션을 설정 하여야 시스템을 좀더 효율적으로 사용할수 있습니다. jpa는 dirty check를 하여서 읽어온 Entity에 변경이 발생하였을경우 자동으로 db에 저장을 합니다. 똑같은 데이터를 snap 해서 메모리에 올려 놓고 원본과 비교해서 변경 사항이 있으면 그냥 트랜잭션이 종료 될때 의도치 않는 업데이트가 발생합니다. 그래서 select는 읽기..

context-security.xml [내부링크]

전자정부 시큐리티 관련 설정 파일입니다.

context-nexacro.xml [내부링크]

전자정부 하면 front단이 넥사크로 입니다. 넥사크로 환경 파일입니다.

context-mapper.xml [내부링크]

마이바티스에서 멀티 db 설정하기 위해서 2개의 db 설정 파일입니다. 데이터베이스트 티베로와 postgresq입니다. 티베로 db를 사용하기 위해서 tibero mapper 클래스를 만들어서 설정을 하였습니다. classpath:/egovframework/sqlmap/mapper/postgre/invako/**/*.xml classpath:/egovframework/sqlmap/mapper/tibero/invako/**/*.xml

context-jpa-repository.xml [내부링크]

jpaRepository package 경로 스캔설정 파일입니다.

context-hibernate.xml [내부링크]

주석으로 설명 달아 놓았습니다. 이해가 안가시는분은 댓글 달아 주세요. was 에 따라서 멀티 db가 조금 꼬여서 톰캣서버에서는 잘되는데 jboss에서는 되긴 되는데 조금 db연결이 꼬여서 제외 했습니다. 멀티 db 마이바티스는 잘됩니다. jpa도 톰캣서버에서는 멀티 db 잘됩니다. org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl none egovframework.invako.querydsl.config.CustomPostgreSQLDialect true true true 5

context-datasource.xml 설정 파일 [내부링크]

/* context-datasource.xml */ 멀티 DB 환경 설정 파일입니다. classpath*:/egovframework/egovProps/globals.properties

[ 조은글 5180호 - 비정한 도시에 사는 죄 ] [내부링크]

이 지구상에서 가장 ‘사회적’ 생물은 개미라고 한다. 퓰리처상을 받은 책 '개미세계의 여행'을 보면, 앞으로의 지구는 사람이 아니라 개미가 지배할 것이라는 다소 생뚱맞은 주장을 펼친다. 그 근거는 개미들의 희생정신과 분업 능력이 인간보다 더 뛰어나기 때문이라는 것이다. 실제로 개미는 굶주린 동료를 절대 그냥 놔두는 법이 없다. 그 비결이 무엇일까? 개미는 위를 두 개나 가지고 있다. 하나는 자신을 위한 ‘개인적 위’고, 다른 하나는 ‘사회적 위’다. 굶주린 동료가 배고픔을 호소하면 두 번째 위에 비축해 두었던 양분을 토해내 먹이는 것이다. 한문으로 개미 ‘의蟻’자는 벌레 ‘충虫’자에 의로울 ‘의義’자를 합한 것이다. 우리 인간의 위도 개미처럼 두 개라면 얼마나 좋을까? 그랬다면 인류는 굶주림의 고통을 몰..

Node Sass version 6.0.1 is incompatible with ^4.0.0 || ^5.0.0 [내부링크]

Failed to compile ./src/App.scss (./node_modules/css-loader/dist/cjs.js??ref--5-oneOf-6-1!./node_modules/postcss-loader/src??postcss!./node_modules/resolve-url-loader??ref--5-oneOf-6-3!./node_modules/sass-loader/dist/cjs.js??ref--5-oneOf-6-4!./src/App.scss) Node Sass version 6.0.1 is incompatible with ^4.0.0 || ^5.0.0. This error occurred during the build time and cannot be dismissed. React sass..

[조은글 5179호 - 당신은 무엇이 두려운가? ] [내부링크]

옛날에 쥐가 한 마리 살았는데 고양이를 무서워해 늘 벌벌 떨곤 했다. 보다 못한 마술사가 그를 불쌍히 여겨 고양이로 만들어 주었다. 그랬더니 이번엔 개를 보고는 무서워 쩔쩔 맸다. 마술사는 다시 한번 마술을 부려 그를 개로 만들어주었다. 그러자 이젠 표범을 무서워했다. 마술사는 또 다시 그를 표범으로 만들어주었다. 그런데 이번엔 사냥꾼을 무서워하는 게 아닌가? 이젠 마술사도 두 손 두 발을 모두 들 수밖에 없었다. 표범을 원래 쥐 모습으로 되돌려 놓고 마술사가 말했다. "내가 아무리 애를 쓴들 네 놈에겐 아무런 소용이 없어 겉을 아무리 바꾸어도 네 마음속에서 너 자신은 늘 쥐일 뿐이야." 당신은 무엇이 두려운가? 사람들은 난관에 부딪히면 문제의 원인이 무엇인지 생각하지 못하고 두렵다는 생각으로 자신을 얽..

[ 노석종의 조은글 5178호 - 희망은 절망을 몰아낸다 ] [내부링크]

일찍이 철학자 키에르케고르는 "절망이야말로 죽음에 이르는 병이다" 라고 간파하였다. 정곡을 찌르는 말이다. 얼마나 많은 사람들이 절망으로 인해 인생을 망치고 있으며 또 소중한 생명까지 잃고있는가. 아무리 현실이 어렵더라도 '절망'이라는 죽을병에는 걸리지 말아야한다. 그러나 현실은 결코 녹록치 않다. 생활전선에 위기가 닥치고 하는 일이 원하는대로 안될때, 극심한 불안과 절망에 시달리게 마련이다. 극복해 보려고 안간힘을 쓰는데도 사정은 영 달라지지 않는다. 이토록 어려운일도 이치를알면 금세 쉬워진다. '희망은 절망을 몰아낸다'는 원리가 바로 그 답인것이다. 런던의 길 한 모퉁이에서 구두를 닦는 소년이 있었다. 빚 때문에 감옥에 갇힌 아버지를 대신하여 집안살림을 꾸려나가야 했던것이다. 소년은 매일 새벽부터 밤..

[ 노석종의 조은글 5177호 - 섭리 ] [내부링크]

이승에 둘만 남으라면 친구를 택하고 저승에 둘만 가라하면 친구를 택한다. 자식이 죽으면 더 못 줘서 울고 부모가 돌아가시면 더 못 받아서 운다. 해는 달을 비추지만 달은 해를 가린다 지혜와 어리석음도 이와 같다. 태양이 지면 그때가 저녁이다. 결정은 태양이 하듯 인생도 그때를 스스로 정한다. 돈은 가치를 묻지 않는다 오직 주인의 뜻에 따를뿐, 몸이 지치면 짐이 무겁고, 마음이 지치면 삶이 무겁다 각질은 벗길수록 쌓이고, 욕심은 채울수록 커진다. 댐은 수문을 열어야 물이 흐르고, 사람은 마음을 열어야 정이 흐른다. 몸은 하나의 심장으로 살지만, 마음은 두 심장인 양심으로 산다. 친구라서 이래도 되고, 저래도 되는 게 아니라 친구라서 이래선 안 되고, 저래선 안 된다는 것을 명심해야 한다. 시리아의 북쪽에 ..

[ 조은글 5176호 - 아무리 세상이 힘들다해도 나는 괜찮습니다 ] [내부링크]

내 마음 안에는 소중한 꿈이 있고 주어진 환경에서 날마다 최선을 다하는 내 모습이 있으니 나는 괜찮습니다 아무리 세상이 불안하다 해도 나는 괜찮습니다 내 마음에 작은 촛불을 하나 밝혀두면 어떤 불안도 어둠과 함께 사라지기에 나는 괜찮습니다 아무리 큰 파도가 밀려와도 나는 괜찮습니다 든든한 믿음의 밧줄을 걸었고 사랑의 닻을 깊이 내렸으니 나는 괜찮습니다 아무리 많은 사람들이 떠나간다 해도 나는 괜찮습니다 변함없이 그들을 사랑하면서 이대로 기다리면 언젠 가는 그들이 돌아오리라는 것을 알기에 나는 괜찮습니다 아무리 많은 사람들이 나를 의심하고 미워해도 나는 괜찮습니다 신뢰와 사랑의 힘은 크고 완전하여 언젠가는 의심과 미움을 이기리라 믿기에 나는 괜찮습니다 아무리 갈 길이 멀고 험하다해도 나는 괜찮습니다 멀고 ..

[ 조은글 5175호 - 장무상망 (長毋相忘) ] [내부링크]

"오랜 세월이 지나도 서로 잊지 말자." 라는 뜻. 이 말은 秋史 金正喜의 마지막 세한도(歲寒圖) 인장으로 찍힌 말입니다. "장무상망"은 추사가 먼저 쓴 것이 아니라 2천년 전 한나라에서 출토된 와당(瓦當) 기와에서 발견된 글씨입니다. "생자필멸(生者必滅)" 이라는 말처럼 살아있는 것은 모두 쓰러지고 결국에는 사라집니다. 그러나 추사와 그의 제자 이상적과 나눈 그 애절한 마음은 이렇게 오늘도 살아서 우리를 감동시키고 있습니다. 가장 어려울 때 (제주도 유배중) 추사를 생각해 준 사랑하는 弟子에게 추사는 세한도를 주면서 요즘 말로 가볍게 영원불멸이라 하지않고 조용히 마음을 안으로 다스려 "장무상망"이라 표현했습니다. 그래서 그 애절함이 우리의 마음을 흔드는 것입니다. 세상(世上)을 살면서 오래도록 서로 잊..

[ 조은글 5174호 - 행복의 문을 여는 방법 ] [내부링크]

행복이 별건가요? 보고 싶은 사람 보고... 먹고 싶은 음식 먹고... 하고 싶은 일 하며... 즐겁고 기쁘게 살면... 그게 바로 행복인 거죠! 행복의 문을 여는 비결 오늘 당신이 만나는 사람에게 웃음을 활짝 지어도 손해 볼 것 없습니다. "고맙다"고 말해도 손해 볼 것 없습니다. "훌륭하다"라고 칭찬해도 손해 볼 것 없습니다. 함께 일하는 것이 즐겁다고 말해도 손해 볼 것 없습니다. 그렇게 말하면 그 말이 당신에게 두 배로 메아리가 되어서 돌아오기 때문입니다. 오늘 당신이 나가는 일터와 하는 일에 대해서 "감사한 마음"을 가져도 손해 볼 것 없습니다. 그 감사하는 마음이 일과 일터로부터 당신을 더 높은 곳으로 인도하기 때문입니다. 오늘 당신과 한솥밥을 먹는 가족에게 따뜻한 웃음을 보여도 손해 볼 것은..

[ 조은글 5173호 - 다리, 아빠의 사랑 ] [내부링크]

체코 어느 지방에 도개교가 있습니다. 배가 지나가면 다리를 들어올리고 평상시는 기차가 지나다니는 철로가 됩니다. 아빠는 다리 조종사로 아들과 함께 단란한 가정을 꾸려가고 있었습니다. 그런데 어느날.. 아버지는 연락을 받고 배가 지나갈 수 있도록 다리를 들어 올립니다. 그리고 기관실 안쪽으로 들어갑니다. 그런데 갑자기 예정에 없던 기차가 다가옵니다. 기차안에는 노인과 어린 아이 뿐만 아니라 추억만들기를 하는 청춘남녀 등 많은 사람들이 타고 있었습니다. 안타깝게도 기차 조종사는 접근금지 표시의 빨간 신호등을 보지 못합니다. 그래서 빠른 속도로 다리로 접근합니다. 절체절명의 위급한 순간... 그때 강가에서 낚시하던 아이가 기차가 다가오는 것을 발견합니다. 아이는 소리칩니다. 아빠 기차가 다가와요! 아빠 기차가..

[ 조은글 5172호 - 일체유심조 (一切唯心造) ] [내부링크]

인간세상의 모든 일을 인간의 마음이 들어서 짓는다는 것 어느 날, 한 부인이 가정생활을 비관하며 부처님께 간절히 기원했습니다. “부처님! 빨리 죽어서 극락에 가고 싶어요. 정말 힘들어요.” 그때 갑자기 부처님이 나타나 자비스런 목소리로 말씀하셨습니다 . “그래,살기 힘들지? 네 마음을 이해한다. 이제 네 소원을 들어줄 테니 그 전에 몇 가지 내 말대로 해보겠니?" 그 부인이 “예!” 하고 대답하자, 부처님이 말씀하시길 “얘야! 네 집안을 둘러 보니 너무 지저분한 것 같은데 네가 죽은 후 마지막 정리를 잘 하고 갔다는 말을 듣도록 집안청소 좀 할래?” 그 후 3일 동안 그녀는 열심히 집안 청소를 했고. 3일 후, 부처님이 다시 와서 말씀하셨습니다. “얘야! 애들이 맘에 걸리지? 네가 죽은 후 애들이 엄마는..

[ 조은글 5171호 - 동전의 양면 ] [내부링크]

알렉산더 대왕이 전쟁에 나갔을 때의 일이다. 적군은 아군보다 열 배나 많았고, 병사들은 '이제 삶이 끝나는가 보다' 하며 겁에 질려 있었다. 이를 보던 알렉산더 대왕은 묘안을 떠올렸다. 그는 손에 동전을 하나 들고 모두에게 말했다. "신께서 내게 계시를 주셨다. 이 동전을 던져 나는 우리의 운명을 예측하고자 한다. 만약 동전을던져 앞면이 나온다면 승리할 것이고 뒷면이 나온다면 우리는 패배할 것이다." 알렉산더 대왕은 비장한 표정으로 동전을 높이 던졌다. 숨이 멈출 것 같은 긴장의 순간, 모두는 땅바닥에 떨어진 동전을 주시했다. 동전의 문양이 번쩍이는 것을 보고 병사들은 앞면임을 확신했다. 승리의 확신에 찬 그들은 수적 열세를 극복하고 열배나 되는 적을 격파했고, 전쟁 에서 크게 승리했다. 승리를 자축하는..

전자정부 소스 자동 생성 툴 [내부링크]

전자정부 소스 자동생성 툴 메인화면입니다. jpa관련 엔티티,DTO,MAPPER, 서비스 단 만들기 귀찮아서 기본적으로 조회,등록,수정,삭제 기능까지 자동생성 툴입니다.

전자정부 eGovFramework jpa + 마이바티스 환경셋팅 [내부링크]

전자정부 3.9.0 최신버전 jpa + 마이바티스 환경셋팅 정리 egov 시큐리티 적용 실업무에 적용해서 운영하고 있는 환경 설정 입니다. 전자정부 환경 셋팅에 어려움이 있으신 분이 있으면 참조 하시기 바랍니다. 마이바티스만 사용하다가 JPA와 마이바티스 같이 한번 사용해 볼려고 셋팅하였습니다. 엔티티,DTO,mapper,repository,controller,servce 전자정부 mvc 패턴 귀찮아서 자동으로 소스까지 생성하는 기능도 vue를 이용하여 만들었습니다. 개발자의 편의를 위해서 공통으로 조회하고 등록하는 기능을 그냥 조건을 주면 자동으로 만들어 주는 자동화 툴을 적용하였습니다. 시간 날때 마다 하나씩 올려 볼까 합니다. 일단 전자정부 기본환경 설정 파일입니다. 전자정부 3.9.0 버전으로 진..

리액트 프로젝트 생성 [내부링크]

npx create-react-app my-app cd my-app npm start

티베로 DB 백업 [내부링크]

--티베로 db 전체 export tbexport USERNAME=sys PASSWORD=tibero PORT=8629 SID=tibero FILE=C:\temp\data.dmp log=C:\temp\data_exp.log FULL=y SCRIPT=y --티베로 db 전체 import tbimport username=sys password=tibero port=8629 sid=tibero file=data.dmp log=data_imp.log full=y script=y ignore=y dpl=y --티베로 db스크릿트만 Export tbexport USERNAME=sys PASSWORD=tibero PORT=8629 SID=tibero FILE=tbscript.dmp log=tbscript_exp.lo..

FORIGIN 키 비활성 [내부링크]

/* FORIGIN 키 비활성 */ ALTER TABLE TH_SGTRD_M(테이블명) DISABLE CONSTRAINT FK_H_SGTRD_M_01 (FORIGIN 키) /* FORIGIN 키 활성 */ ALTER TABLE TH_SGTRD_M(테이블명) ENABLE CONSTRAINT FK_H_SGTRD_M_01 (FORIGIN 키); /* FORIGIN 키 활성조회하여 비활성쿼리문 생성 */ SELECT 'ALTER TABLE ' || TABLE_NAME || ' DISABLE CONSTRAINT ' || CONSTRAINT_NAME || ';' AS FK_DISABLE FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME LIKE 'FK_H%' AND STATUS = 'E..

리액트 네이티브 프로젝트 만들기 [내부링크]

타입스크립트 사용 생성 npx react-native init 프로젝트명 --template react-native-template-typescript 설치시 오류가 발생시 기존에 설치된 버전 삭제하고 최신 버전으로 다시 설치하면 오류가 없어진다. npm uninstall -g react-native-cli 최신 버전 설치 npm i -g @react-native-community/cli or yarn global add @react-native-community/cli

모델5 @Embeddable [내부링크]

@Embeddable 애노테이션을 지정한 클래스를 밸류 클래스라고 합니다. 밸류 클래스란 int, double 처럼 하나의 값을 나타내는 클래스를 말합니다. 보통 주소(address)라는 값을 저장하기 위해서는 아래와 같이 String 변수에 저장하여 관리할 것입니다. package com.example.model.entity; import lombok.Getter; import lombok.Setter; import lombok.ToString; import javax.persistence.Embeddable; import java.util.Objects; @Embeddable @Setter @Getter @ToString public class Address { private String city; ..

모델4 공통 상속 [내부링크]

package com.example.model.entity.item; import com.example.model.entity.Category; import lombok.Getter; import lombok.Setter; import lombok.ToString; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter @ToString(exclude = {"categories"}) @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "DTYPE") public abstract cla..

모델3 연관관계 [내부링크]

package com.example.model.entity; import lombok.Getter; import lombok.Setter; import lombok.ToString; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Getter @Setter @ToString(exclude = {"items","parent","child"}) @Entity public class Category { @Id @GeneratedValue @Column(name ="CATEGORY_ID") private Long id; private String name; @ManyToMany @JoinTable(name= "CATE..

모델2 -연관관계 [내부링크]

package com.example.model.entity; public enum OrderStatus { ORDER,CANCEL } package com.example.model.entity; import lombok.Getter; import lombok.Setter; import lombok.ToString; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Getter @Setter @ToString @Entity public class Item { @Id @GeneratedValue @Column(nam..

모델1-기본테이블 생성 [내부링크]

package com.example.model.entity; public enum OrderStatus { ORDER,CANCEL } package com.example.model.entity; import lombok.Getter; import lombok.Setter; import lombok.ToString; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Getter @Setter @ToString @Entity public class Item { @Id @GeneratedValue @Column(nam..

엔티티 생성 및 기본 테스트 [내부링크]

package com.example.chat04; public enum RoleType { ADMIN,USER } package com.example.chat04; import javax.persistence.*; import java.util.Date; @Entity @Table(name="MEMBER", uniqueConstraints = {@UniqueConstraint(name = "NAME_AGE_UNIQUE",columnNames = {"NAME","AGE"})}) public class Member { @Id @Column(name = "ID") private String id; @Column(name = "NAME", nullable = false, length = 10) private S..

pom.xml [내부링크]

4.0.0 org.springframework.boot spring-boot-starter-parent 2.5.1 com.example ch02 0.0.1-SNAPSHOT ch02 Demo project for Spring Boot UTF-8 UTF-8 1.8 5.5.2.Final 4.4.0 1.4.2.Final org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools runtime true org.postgresql postgresql runtime org.projectlombok lombok t..

Spring Data JPA 사용 및 설정 [내부링크]

https://frontierdev.tistory.com/193 Spring Data JPA 사용 및 설정 Spring Data JPA 설정 org.springframework.boot spring-boot-starter-data-jpa 데이터 저장소로 h2 사용 com.h2database h2 1.4.200 test JDBC를 지원하고 라이브러리 추가만으로 사용 가능하므로 로컬에서 개발.. frontierdev.tistory.com

1. JPA 실습환경 셋팅 [내부링크]

1.1 스프링 부트 사이트에서 스프링부트를 다운 받아서 설치한다. 1.2 프로젝트 생성 File > New > Spring Starter Project 프로젝트명 입력 디펜던시 선택 : PostgresSQL Driver,Spring Web,Lombok,Spring Boot DevTools,MySQL Driver,Spring Data JPA Finish 버튼 클릭 1.3 데이터베이스 및 테이블 생성 MySql기준으로 테이블을 생성합니다. PostgreSQL DB는 서로 다른 2개의 데이터 베이스 테스트용으로 추가 하였습니다. 작업은 MySql기준 입니다. 1.4 MySql db를 다운받아서 로컬 pc에 설치합니다. MySql 접속후 사용자 계정을 생성합니다. /* mysql 접속 */ mysql -u ro..

Git 최초 설치후 사용법 [내부링크]

윈도우 command에서 git bash 실행 최초 설치후 git 사용자 등록 git config --global user.email "[email protected]" git config -global user.name "chu byoung woo" 깃저장소 폴더를 만든다 mkdir myapp git init

사용자 생성 [내부링크]

C:\Users\cbw>docker exec -it postgres /bin/bash root@3d939a692d63:/# ls bin boot dev docker-entrypoint-initdb.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@3d939a692d63:/# pwd / root@3d939a692d63:/# psql -U postgres psql (13.2 (Debian 13.2-1.pgdg100+1)) Type "help" for help. postgres=# create user cbw password 'cbw' superuser; CREATE ROLE pos..

Postgresql 설치 및 셋팅하기 [내부링크]

- 도커 이미지 다운로드 docker pull postgres 이미지 실행 docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=postgres -d postgres 이미지 삭제시 데이터가 날아가기 때문에 볼륨을 생성해서 데이터를 생성된 볼륨에 저장한다. C:\Users\cbw>docker volume create pgdata Pgdata 생성된 볼륨확인 - docker volume list C:\Users\cbw> docker volume list DRIVER VOLUME NAME local 77deaac01a4c3f4b09bc2e8d5d263c8939dee0f9aab5ed7b0dd71ddd6a57fd76 local 2377c4650f107de61..

Mysql 한글 인코딩 설정 [내부링크]

apt-get update && apt-get install nano vim 이제 conf 설정을 추가해줍니다. /etc/mysql/my.cnf 에 아래 내용을 추가해줍니다. #### 1. MySQL 한글 설정 (my.ini) [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' init_connect='SET collation_connection = utf8_general_ci' character-set-server=utf8 lower_case_table_names=1 [client] default-..

Docker 리눅스 서버 vi 설치 [내부링크]

-- apt-get update 한후에 필요한 유틸 설치 1. apt-get update 2. apt-get install nano 3. apt-get install vim

Mysql docker 설치 [내부링크]

Docker Hub 사이트 https://hub.docker.com docker hub 사이트에서 mysql 검색한 후에 아래 명령어로 docker image를 가지고 온다. docker pull mysql:8.0.24 - 설치 확인 docker images - Mysql 실행 docker이미지가 없으면 자동으로 다운받아서 실행까지 해줌 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name cbw-mysql -v c:\springboot\db:/var/lib/mysql mysql:8.0.24 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci - docker 실행 확인 - do..

사용자 정의 컬럼 추가하기 [내부링크]

Expressions.constantAs(bookNo, book.bookNo), Expressions.as(Expressions.constant(pageNo), "pageNo") (1) asNumber(bookNo).as(book.bookNo), asNumber(pageNo).as("pageNo"), asString() asEnum() asDate() asTime() asDateTime() asBoolean() 등등 다양하게 제공 Entity에서 선언되지 않은 필드일때와 아닐때 둘다 같은 형식으로 사용할수 있고 좀더 select 1 as bookNo 처럼 쿼리를 읽는것 같은 자연스러운 느낌을 더 받게 됩니다. 그리고 해당 타입이 어떤 타입인지 dto를 확인 안하고도 알수 있습니다. (int, long 까..

3장. Querydsl 입문 [내부링크]

Querydsl 입문, 장점, Querydsl의 종류, 구문, SQLQuery, SQLQueryFactory, JPAQuery, JPAQueryFactory, Q 타입클래스 생성 3장. Querydsl 입문 Querydsl은 미리 작성한 쿼리타입 클래스를 사용해서 쿼리를 메소드 기반으로 작성할 수 있도록 도와주는 프레임워크입니다. 문자열로 작성하거나 XML 파일에 쿼리를 작성하는 대신 Querydsl이 제공하는 메소드를 사용해서 쿼리를 작성합니다. 3.1. 장점 문자열로 쿼리를 작성하는 대신 Querydsl을 사용하여 자바코드로 쿼리를 작성하게 되면 얻을 수 있는 장점은 다음과 같습니다. n IDE의 코드 자동완성 기능을 사용할 수 있어서 보다 빠른 개발이 가능하다. n 문법적으로 잘못된 쿼리를 거의 허..

Lombok 어노테이션 [내부링크]

빌더 자동 생성 다수의 필드를 가지는 복잡한 클래스의 경우, 생성자 대신에 빌더를 사용하는 경우가 많은데요. 빌더 패턴을 직접 작성해보면 코딩량이 의외로 상당함을 깨닫게 됩니다. 이 때, @Builder 어노테이션을 사용하면 자동으로 해당 클래스에 빌더를 추가해주기 때문에 매우 편리합니다. @Builder public class User { private Long id; private String username; private String password; @Singular private List scores; } 컬렉션으로 된 필드에는 @Singular 어노테이션을 선언해주면 모든 원소를 한 번에 넘기지 않고 원소를 하나씩 추가할 수 있습니다. User user = User.builder() .id(..

티베로 db링크 [내부링크]

접속할려고 하는 클라이언트 환경파일에서 tbdsn.tbr 파일 열어서 상대방 접속 정보를 등록한다. 등록한 파일에 알리아스로 접속한다. test=( (INSTANCE=(HOST=192.168.1.18) (PORT=9027) (DB_NAME=test) ) ) test2=( (INSTANCE=(HOST=192.168.1.19) (PORT=9027) (DB_NAME=test2) ) ) tbsql sys/tibero select * from v$instance; 접속확인 티베로 db링크 생성 create public database link testuser connect to testuser identified by 'password' using 'test2'; 2. db링크 삭제 drop public data..

티베로 세션 늘리는 방법 [내부링크]

티베로 세션 늘리는 방법은 현재 버전을 기준으로 4SP1 과 5 버전의 환경변수가 조금 다르다 4SP1 버전은 디폴트로 설치시 C:\Tibero\tibero4\config 보통 이 경로에 있다(경로지정해주었을경우 는 그안에 config 폴더을 열어보자) tibero.tip 파일을 열어 보면 WTHR_PROC_CNT _WTHR_PER_PROC 4SP1 은 저 두 변수를 곱한 값이 최대 세션 이다 WTHR_PROC_CNT = 10 _WTHR_PER_PROC = 20 일 경우 최대 세션은 200개가 되는 것이다. 수정 후 에는 티베로를 재기동 한다. 5 버전도 마찬가의 경로에 위치한다 C:\Tibero\tibero4\config 폴더 안에 tibero.tip 파일을 열어 보면 MAX_SESSION_COUNT ..

JOB 등록 [내부링크]

JOB 등록 --------------------------------------------------------------------------------- declare vJobNumber number; begin dbms_job.submit( job => vJobNumber, next_date => to_date('20100106140600', 'YYYYMMDDHH24MISS'), interval => 'SYSDATE+1', what => 'begin P_EXECUTE_BIZ_CLS_DTL; end;' ); dbms_output.put_line('Job number assigned: ' || to_char(vJobNumber)); end; JOB 조회 --------------------------..

테이블 스페이스 생성 [내부링크]

SELECT 'create tablespace ' || TABLESPACE_NAME || ' datafile ''' || FILE_NAME || ''' size ' || BYTES || ' AUTOEXTEND ON NEXT 10485760' || ' LOGGING' || ' ONLINE' || ' PERMANENT' || ' EXTENT MANAGEMENT LOCAL AUTOALLOCATE' || ';' as table_space FROM ( SELECT E.TABLESPACE_NAME,E.FILE_NAME,E.BYTES, (E.BYTES-SUM(F.BYTES)) RESULT FROM DBA_DATA_FILES E, DBA_FREE_SPACE F WHERE E.FILE_ID = F.FILE_ID GROU..

forigin 키 비활성 [내부링크]

/* FORIGIN 키 비활성 */ ALTER TABLE TH_SGTRD_M DISABLE CONSTRAINT FK_H_SGTRD_M_01 /* FORIGIN 키 활성 */ ALTER TABLE TH_SGTRD_M ENABLE CONSTRAINT FK_H_SGTRD_M_01; /* FORIGIN 키 활성조회하여 비활성쿼리문 생성 */ SELECT 'ALTER TABLE ' || TABLE_NAME || ' DISABLE CONSTRAINT ' || CONSTRAINT_NAME || ';' AS FK_DISABLE FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME LIKE 'FK_H%' AND STATUS = 'ENABLED' ; /* FORIGIN 키 활성된건 조회 */ SE..

intellij IDEA 개발자 폰트 설정 [내부링크]

네이버 개발자 D2폰트를 모든 사용자용으로 설치후에 Settings 선택 Editor-> Font Font 선택 Apply 마우스로 글자 크기 변경도 같이 설정해 준다. Change font size(Zoom) with Ctril+Mouse Wheel 부분 체크후 OK 버튼으로 반영한다.

vsCode 개발자 폰트 설정 [내부링크]

코딩을 위한 개발자 폰트 설정 네이버 github.com/naver/d2codingfont naver/d2codingfont D2 Coding 글꼴. Contribute to naver/d2codingfont development by creating an account on GitHub. github.com 개발자 폰트를 다운 받아서 모든 사용자용으로 설치 한다. vscode를 열어서 TextEditor -> Font D2Coding ligature 입력합니다. 그리고 나서 Edit in settings.json 클릭하여 "editor.fontFamily": "D2Coding ligature,Consolas, 'Courier New', monospace", "editor.fontLigatures": t..

wildfly 라이브러리 오류 해결 [내부링크]

Jboss-deployment-structure.xml 파일에 기존 wildfly에서 가지고 있는 모듈폴더에 라이브러리 하고 충돌이 생겨서 안되기 때문에 wildfly에 있는 모듈 은 사용안하고 소스에 있는 라이브러리가 동작할수 있게 추가 한다. 일단 오류가 난다는것은 똑같은 종류의 라이브러리가 jboss에서 사용중이라서 소스에 있는 라이브러리와 호환이 안되서 발생하는 오류가 대부분이다. modules 폴더에 등록되어 있는 jar 파일 검색해서 그 해당파일을 제외 시키는 구문을 아래와 같이 추가 해 주면 해결된다.