반응형

괜히 rename  인스톨 했네..

 

mv 원본 파일명 바꾸파일명 쓰면 끝

 

ex) mv docker-compse.yml backup-docker-compse.yml

 

 

반응형
반응형

쉘은 사용자의 명령을 받아

파일 시스템 탐색, 프로그램 실행 및 장치와 상호 작용과 같은 작업을 수행,실행 할 수있는 인터프리터입니다.

 

BASH는 Linux 쉘

 

.bashrc 파일은 사용자가 새 셸을 열 때마다 실행되는 셸 스크립트입니다.

 

/ -name .bashrc 찾기

이 명령을 실행시  세 가지 결과가 반환됩니다.

  • /etc/skel/.bashrc
  • /home/gary/.bashrc
  • /root/.bashrc

/etc/skel/.bashrc                   파일은 시스템에 생성 된 새로운 사용자의 홈 폴더에 복사됩니다.

/home/gary/.bashrc              gary 사용자가 쉘을 열 때마다 사용되는 파일이고

/roor/.bashrc                           루트가 쉘을 열 때마다 사용

 

root 로 이동해서 

 

vi  .bashrc

파일 끝에 다음 명령을 입력하십시오.

echo $ USER 님 안녕하세요

:wq  

로 저장하고 나옴

 

터미널 창에서 아래 실행

source  .bashrc

결국 쉘 실행할 때 마다 명령어 실행한다고 생각하면 되겠다.

 

 

반응형
반응형

집 pc WOL 로 키는것도 구찮아서

무료 클라우드 서버를 활용 

프로젝트 막바지라 잉여로움 ㅎㅎ

 

아마존은 무료가 1년이라고 하는데 오라클은 평생이라고 함 

접속해보니 예전 인스턴스가 있어서 .. 기억도 안나서 다 지워버림 ㅋㅋㅋㅋ

 
인스턴스 생성 할때 
키를 다운받아 둔다 공용키 말고 
다운 받은 ssh.key 로 ssh 접속
 
관리자 권한으로 계정 변경
sudo su 
 

apt update -y && apt upgrade -y

apt install nodejs -y
apt install npm -y
 
nvm 설치
nvm install v18
 
설치 후 
node -v 
확인 하면 18 버전으로 변경 (nvm 에 맞게)
 
도커 설치
apt install docker.io -y && apt install docker-compose -y
 
도커 설치 확인
docker -v
docker-compose -v
 
기본 개발 환경 설치 완료
 
오라클 무료계정  메모리 부족 하드 디스크를 메모리로 활용 할 수 있게  .. swap 
 
dd if=/dev/zero of=/swapfile bs=128M count=32
 
만들어진 스왑 파일 읽기 쓰기 가능하게 퍼미션 변경
chmod 600 /swapfile
 
스왑 영역 설정 
mkswap /swapfie
 
스왑 적용
swapon /swapfile
 
스왑 적용 확인 위해
free  
하단 swap 영역 확인 
 
재부팅 되도 스왑 계속 적용 할 수 있도록 ~~ 세팅
vi  /etc/fstab
 
방화벽 설정 오픈
iptables -I INPUT 5 -i ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
 
방화벽 적용 확인
iptables --list 

 

 

영상 참고
 
도커 등 열린 포트 확인
 
반응형
반응형

사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질.

 

객체 사용 방법이 동일하다는 것은 동일한 메소드를 가지고 있다는 뜻이다.

 

타이어를 상속하는 금호 타이어와 한국 타이어가 있다.

두 타이어는 (부모) 메소드를 동일하게 가지고 있다고 할 수있다.

부모 메소드를 오버라이딩하고 있다면 타이어 메소드 호출 시 오버라이딩된 메소드가 호출된다.

 

오버라이딩된 내용은 두 타이어가 다르기 때문에 실행 결과가 다르게 나온다. 

이런것을 다형성이라 한다.

public class Tire{
	//method
    public void roll(){
    	System.out.println("회전 합니다");
    }
}
public class HanTire extends Tire{
	//Override method
    
    @Override 
    public void roll(){
    	System.out.println("한국 타이어 회전 합니다");
    }
}
public class kumhoTire extends Tire{
	//Override method
    
    @Override 
    public void roll(){
    	System.out.println("금호 타이어 회전 합니다");
    }
}
public class Car{
	//필드 선언
    public Tire tire;
    
    //method
    public void run(){
    	//tire 필드에 대입된 객체의 roll() 호출
        tire.roll();
	}

}
public class CarExample{
	public static void main(String[] args){
    	//car Object Create
        Car myCar = new Car();
        
        //tire 객체 장착
        mycar.tire = new Tire();
        mycar.run();
        
        //HanTire 객체 장착
        mycar.tire = new HanTire();
        mycar.run();
        
        //KumhoTire 객체 장착
        mycar.tire = new KumhoTire();
        mycar.run();        
    }
}

 

CarExample 실행 결과 

회전 합니다.

한국 타이어 회전 합니다

금호 타이어 회전 합니다

 

 

 

반응형
반응형

자바는 문자열 리터널이 동일하다면  String 객체를 공유하도록 설계됨

String name1= "아이유";
String name2="아이유";

위와 같다면 변수에는 동일한 String 객체의 번지가 저장
(같은 힙 영역)

하지만 new  연산자로 직접 String 객체 생성하면

String name1 = new String("아이유");
String name2 = new String("아이유");

서로 다른 String 객체의 번지를 가지게 된다.
(사로 다른 힙 영역)

테스트 코드
String name1 = "아이유";
String name2 ="아이유";
String name3 = new String("아이유");

name1 == name2 // 결과 : true
name1 == name3 // 결과 : false

하여 내부 문자열 비교할 경우는
String 객체의 equals()  메소드를 사용한다.

boolean result = name1.equals(name3);

요로퀘 ~ ㅋㅋ

자바 문자열 비교 간단정리 끝


반응형
반응형
Cannot-load-driver-class-com.mysql.cj.jdbc.Driver

위 오류 발생하면서 스프링 부트 실행 안됨 ;;;

 

결론 그래들 리프레쉬 ( gradle )

그래들 탭 젤 왼쪽 상단 누르면 다시 받으면서 해결됨

 

 

 

오류 사항들 정리

 

 

테스트 코드에는 

runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'

로 되어 있었는데 

집 로컬  mysql  로 되어 있음

 

위 주석 처리 후

 

implementation 'mysql:mysql-connector-java'

마이에스큐엘 추가 

 

뭔가 라이브러리 교체가 안되는거 같음 

해서 위 방법으로 리프레쉬 후 정상 작동 확인

 

 

 

전체 설정 참고

 

plugins {
    id 'org.springframework.boot' version '2.7.3'
    id 'io.spring.dependency-management' version '1.0.13.RELEASE'
    id 'java'
}

group = 'org.zerock'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'mysql:mysql-connector-java'

    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    //runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'


    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testCompileOnly 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'

}

tasks.named('test') {
    useJUnitPlatform()
}

 

반응형
반응형

String day ="202208"
// 로 날짜가 넘어올때 자동으로 마지막 날짜 계산

Stirng day1 = day.substring(0,4)
Stirng day2 = day.substring(4,6)


LocalDate tempLastDay = LocalDate.parse(day1+"-"+day2+"-"+"01");
// 2022-08-01

LocalDate monLastDay = tempLastDay.withDayOfMonth( tempLastDay.lengthOfMonth());
// 2022-08-31

//최종변환
Timestamp endDateTime = Timestamp.valueOf(monLastDay.atTime(23,59,59));
// 2022-08-31T23:59:59



JPA 에서 날짜 검색은 참 어렵다. 할께 많네


반응형
반응형

repository 만들고 JpaSpecificationExecutor 상속 받아

제공하는 findAll()메서드에서 사용한다.

참고 URL : groti.tistory.com/49

jpa는 알고 나면 쉬운거 같다..

근데 그냥 쿼리 쓰는게 더 편해 ㅠㅠ

반응형
반응형

검색어는 입력

이름이던 사번이던 부서던. 넘어오면 OR 로 붙여서 검색

 

SELECT NAME FROM 테이블 WHERE 1=1

	AND ( 
		(UPPER(사번) LIKE '%' || UPPER('최') || '%')OR 
		(UPPER(성명) LIKE '%' || UPPER('최') || '%') OR
  	            (UPPER(부서) LIKE '%' || UPPER('최') || '%') 
              )
반응형
반응형

소스 트리 사용하면 push 할때 https 로 하면 자꾸 오류가 발생

 

그래서 ssh 방식으로 연결했다.

 

 

더보기

ssh public 키 만드는 방법은 너무 많아서 아래 스샷 이나 링크로 참조 하세요

출처 https://happysalmon.tistory.com/3

 

https://happysalmon.tistory.com/3

 

 

----------------------    소스트리 연결 방법 시작    --------------------------

 

도구 > 옵션 > 일반에서 생성한 키 위치 

SSH private.ppk 위치와 

SSH 클라이언트는 Putty / plink 로 설정한다.

 

clone 선택 후 

SSH 주소 넣고 탐색

ssh 주소 읽기

읽어오면 아래 처럼 Git 저장소 아이콘 나온다

목적지 경로에 로컬에 저장하고 싶은 경로 입력하면 End

 

 

반응형

+ Recent posts