linux find 사용기

Linux 2018. 8. 23. 11:49
SMALL

리눅스에서 파일 검색을 하기 위한 명령어 find를 소개합니다.

저는 리눅스 상에서 주로 개발해서 자주 사용하는 명령어 입니다.



명령어 : find 파일 찾을 위치 지정 -name 찾을 파일 이름

    ex  : find ./ -name aaa.txt


위에 ex를 설명해드리면 ./(현재 폴더 부터, 하위 폴더 포함) aaa.txt 파일을 찾아줘!!! 입니다.




다음으로 파일 내부 문자열을 검색하는 명령어 grep 입니다.


사실 grep은 여러군데서 사용하고 있는 것이기 때문에, 파일 내부 문자열 검색만을 위해서 쓰이고 있지는 않습니다.

grep의 man을 보시면 -print lines matching a pattern 으로 나와있어요.


이번 포스팅에서는 grep을 통해서 파일 내부의 문자열을 검색해서, 

찾고자 하는 문자열과 동일한 문자열을 가진 파일을 찾아주는 것으로 


명령어 : grep -r "찾을 문자열" ./*

     ex : grep -r "aaa" ./*

        

위의 ex를 설명드리면 ./(현재 폴더 아래 모든 파일에서) aaa라는 문자열이 있는지 찾아라!! 하위 디렉토리 모두에서(-r) 입니다.

여기서 r은 recursive 의미입니다.



출처: http://ngee.tistory.com/83 [ngee]

LIST

'Linux' 카테고리의 다른 글

리눅스 명령어 모음  (0) 2015.06.24
리눅스 파일 찾기 (파일명 검색)  (0) 2015.06.24
linux 파일만들기, 파일옮기기,이동,복사하기  (0) 2015.03.19
ubuntu apt 패키지 삭제  (0) 2015.03.17
linux hdd mount 하기  (0) 2015.03.16
블로그 이미지

SeoHW

,
SMALL


 left와 top 값을 0 으로 주시면 됩니다.





<script language=javascript>


function popConcert(){ 
   noticeWindow  = window.open('http://nibr.go.kr/exhibit/reserve_imsi/reserve_guide.jsp','bluesky','width=700,height=760,top=0,left=200,scrollbars=yes' );
noticeWindow.opener = self;
}
</script>

LIST
블로그 이미지

SeoHW

,
SMALL

select box disabled 하기 선택안되게하기



네임 접근

$("select[name=네임]").attr("disabled", true);


ID접근

$("#아이디").attr("disabled", true);



다시 활성화 하고싶을시


$("#아이디").removeAttr("disabled"); 


하시면 됩니다^^

LIST
블로그 이미지

SeoHW

,
SMALL
@Controller 
@Controller
public class restClassName{

  @RequestMapping(value={"/uri"})
  @ResponseBody
  public ObjectResponse functionRestName(){
      //...
      return instance
   }
}

@RestController 

@RestController
public class restClassName{

  @RequestMapping(value={"/uri"})
  public ObjectResponse functionRestName(){
      //...
      return instance
   }
}
  @ResponseBody 가 기본적으로 적용됩니다@RestController 에서는요~


LIST

'Spring&mybatis(ibatis)' 카테고리의 다른 글

ibatis 태그 지원 목록입니다  (0) 2018.11.12
mybatis 기호 비교 등등  (0) 2018.10.26
mybatis order 속성사용  (0) 2018.10.26
a child container failed during start 에러  (0) 2018.09.27
Srping Hello 예제  (0) 2015.03.30
블로그 이미지

SeoHW

,
SMALL

SELECT TRIG.TRIGGER_NAME "Trigger",

               TRIG.STATUS "Status",

               ALLO.STATUS "Validation",

               TRIG.TABLE_NAME "Table",

               TRIG.TABLE_OWNER "Table Owner"

          FROM SYS.ALL_OBJECTS ALLO,

               SYS.ALL_TRIGGERS TRIG

         WHERE ALLO.OBJECT_TYPE   = 'TRIGGER'

               AND ALLO.OBJECT_NAME   = TRIG.TRIGGER_NAME

               AND ALLO.OWNER         = TRIG.OWNER

        order by TRIG.TRIGGER_NAME asc;



하면


모든 테이블의 트리거가 출력됩니다



트리거의 삭제, 활성화, 비활성화

  • 삭제

    • DROP TRIGGER trigger-name;
  • 비활성화

    • ALTER TRIGGER trigger-name DISABLE;
  • 활성화

    • ALTER TABLE trigger-name ENABLE;
  • 특별한 테이블에 대한 모든 트리거의 활성/비활성화

    • ALTER TABLE students ENABLE ALL TRIGGERS;
    • ALTER TABLE students DISABLE ALL TRIGGERS;


LIST
블로그 이미지

SeoHW

,
SMALL

ORA-02292 에러는 현재 삭제할려는 테이블의 데이타가 다른 테이블의 데이타의 PK값일 경우에 생긴다.

 

쉽게 말하자면 A값을 없앨려면 먼저 B값을 없애야 한다는 거다.

 

첨에 헤매었는데 이걸 대처할려면 일단 삭제할 데이타에 대한 쿼리를 PL/SQL에 실행시켜 본다

 

그럼

 

21:57:43 Error: ORA-02292: 무결성 제약조건(TMYUGA.SYS_C0036932)이 위배되었습니다- 자식 레코드가 발견되었습니다

이런식으로 에러가 뜬다. SYS_C0036932 값을 소중히 카피한다.

 

그런 다음에 아래 쿼리를 실행한다. 토시하나 바꾸지 말고 사용하자..

 

select CONSTRAINT_NAME, TABLE_NAME, R_CONSTRAINT_NAME
from user_constraints
where CONSTRAINT_NAME = 'SYS_C0036932' 

 

이런식으로 쿼리를 던지면 삭제해야 할 데이타의 테이블 명이 보인다.

 

그 테이블에 데이타를 유심히 살펴보면 삭제해야할 데이타 값이 살짝히 보인다. 그걸 삭제하고 진짜 지우려는 데이타를 삭제하면 만사 OK



출처: http://hclee2575.tistory.com/43 [순수한 소년의 스토리]

LIST
블로그 이미지

SeoHW

,

ORM, JPA Hibernate 란?

Java 2018. 3. 16. 17:49
SMALL

ORM, JPA, Hibernate란?

ORM (Object Relational Mapping) 무엇인가?

RDB 테이블을 객체지향적으로 사용하기 위한 기술입니다. RDB 은 객체지향적 (상속, 다형성, 레퍼런스, 오브젝트 등)으로 접근하기 쉽지 않습니다.

때문에 ORM을 사용해 오브젝트와 RDB 사이에 객체지향적으로 다루기 위한 기술입니다.


 


JPA (Java Persistence API) 무엇인가?

ORM 전문가가 참여한 EJB 3.0 스펙 작업에서 기존 EJB ORM이던 Entity Bean JPA라고 바꾸고 JavaSE, JavaEE를 위한 영속성(persistence) 관리와 ORM을 위한 표준 기술입니다. JPA ORM 표준 기술로 Hibernate, OpenJPA, EclipseLink, TopLink Essentials과 같은 구현체가 있고 이에 표준 인터페이스가 바로 JPA입니다.


 


HIBERNATE 무엇인가?

Boss에서 개발한 ORM(Object Relational Mapping) 프레임워크 입니다.


장점

Hibernate는 특정 클래스에 매핑되어야 하는 데이터베이스의 테이블에 대한 관계 정의가 되어 있는 XML 파일의 메타데이터로 객체관계 매핑을 간단하게 수행시킵니다.

Hibernate를 사용하면 데이터베이스가 변경되더라도 SQL 스크립트를 수정하는등의 작업을 할 필요가 없습니다.

애플리케이션에서 사용되는 데이터베이스를 변경시키고자 한다면 설정파일의 dialect 프로퍼티를 수정함으로서 쉽게 처리할 수 있습니다.

Hibernate MySQL, Oracle, Sybase, Derby, PostgreSQL를 포함한 많은 데이터베이스를 지원하며 POJO기반의 모델과도 원활하게 동작합니다.


 


 


JPA를 쓰는가?

1. 기존 SQL 중심적인 개발시 불편하다

-       쿼리가 변경되면 이에따른 프로그램 소스 DTO객체의 변경도 불가피하게 일어난다

-       데이터를 가져와 객체지향적으로 관계를 Mapping하는 일이 매번 일어난다.

!!SQL의존적인 개발이 이루어진다.


 


2. 객체-관계 간 모델 불일치

관계형 데이터베이스에는 로우와 컬럼의 2차원 형태로 데이터가 저장된다. 데이터 관계는 외래키foreign key 형태로 표현된다. 문제는 도메인 객체를 관계형 데이터 베이스로 저장할 때 발생한다. 애플리케이션의 객체는 로우와 컬럼 형태가 아니다. 도메인 객체는 객체의 상태를 속성(변수)으로 가지고 있다. 그래서 도메인 객체 그대로 관계형 데이터베이스에 저장할 수가 없다. 이러한 불일치를 객체-관계 간 임피던스 불일치object-relational impedance mismatch라고 합니다.


 


3. 상속 불일치

상속은 객체 세계에서는 지원하지만, 관계형 스키마에서는 지원하지 않는다. 상속은 모든 객체지향 언어, 특히 자바에서 바늘과 실처럼 뗄 수 없는 특징입니다. 안타깝게도 관계형 스키마에는 상속 개념이 없습니다. 회사에서 임원과 직원의 예를 들어보면. 임원 개인도 회사의 직원이죠. 이 관계를 데이터베이스에서 표현하는 것은 테이블 간 관계 수정이 필요해서 쉽지 않습니다. 상속 없이 현실 세계의 문제 상황을 표현하는 것은 매우 복잡한 일입니다. 그런데 데이터베이스는 상속 관계와 같은 형태를 알지 못하지요. 이것을 해결할 간단한 방법은없지만, 문제를 풀 수 있는 몇 가지 접근법이 있습니다. 이 접근법은 다양한 클래스-테이블class-to-table 전략을 사용합니다.


4. 관계와 연관 관계의 불일치

1. SQL 중심적인 개발의 문제점

 - field 하나추가시  쿼리도 바꿔야하고  VO도 바꿔야되고 ...

 - SQL에 의존적인 개발을 피하기 어렵다.

 - 객체답게 모델링 할수록 매핑 작업만 늘어난다


 


장점

-       객체지향적으로 데이터를 관리할 수 있기 때문에 비즈니스 로직에 집중 할 수 있으며,

객체지향 개발이 가능합니다.

-       테이블 생성, 변경, 관리가 쉽다. (JPA를 잘 이해하고 있는 경우) 로직을 쿼리에 집중하기 보다는

객체자체에 집중 할 수 있습니다.

-       빠른 개발이 가능합니다.


 


단점

-       어렵다. 장점을 더 극대화 하기 위해서 알아야 할게 많습니다.

-       잘 이해하고 사용하지 않으면 독이될수도 있습니다.

-       성능상 문제가 있을 수 있다.(이 문제 또한 잘 이해해야 해결이 가능합니다.



 


 


JPA, HIBERNATE  Architecture










 

 


 


 


 


 

 



 



 


 



출처 http://www.libqa.com/wiki/769


LIST
블로그 이미지

SeoHW

,
SMALL

문제

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

제한사항
  • N의 범위 : 100,000,000 이하의 자연수

제가 작성한 답

import java.util.*;


public class Solution {

public int solution(int n) {

int answer = 0;

        int length = (int)(Math.log10(n)+1);

            

int k = 0;

for(int i =0; i<length; i++)

{


k++;

String answer1 = String.valueOf(n).substring(i,k);

answer += Integer.parseInt(answer1);

}

return answer;

}

}

LIST
블로그 이미지

SeoHW

,
SMALL

개발자가 가장 미치는 상황중 하나는

 

내꺼에선 잘되는데 서버에 올리는 포팅만 하면 안되는 상황일 것이다.

 

그중 대표적인것중 하나가

 

ORA-01861: 리터럴이 형식 문자열과 일치하지 않음 

ORA-01861: literal does not match format string 

 

바로 이 에러...

 

 

toad나 sqlgate 에선 잘만되는게 서버에만 올리면 안되는 미치는 상황이다.

 

일단, 원인은 TO_DATE와 TO_CHAR의 함수에 날짜형식을 지정하지 않았을 때

 

기본값으로 지정되는 형식이 달라서 그렇다.

 

TO_DATE('2014-01-01', 'YYYY-MM-DD') 이런식으로 쓰는데 두번째 인수인 'YYYY-MM-DD'를

 

생략해버리면 환경에 따라 서로 다른값이 지정되므로 최악의 경우

 

TO_DATE('2014-01-01', 'DD-MON-RR')  이런식으로 기본값이 들어가며 실행되는 경우가 생겨서 

 

위와같은 ORA-01861 오류가 생기는 것이다.

 

 

 

물론 최선의 해결책은 TO_DATE와 TO_CHAR를 쓸 때에는 항상 데이터형식을 지정하는 것이지만,

 

개발이라는게 어찌그리 되는가? 분명 어딘가에서는 빼먹기 마련인데,

 

빼먹은것이 서버에 올라갈때까지 발견 안된다는건 너무 위험한 상황이다.

 

 

게다가 저 에러는 뷰 내부나 저장프로시저 내부에서 빼먹어도 에러가 난다!

 

 

한마디로 내 소스 전체에서 TO_DATE나 TO_CHAR로 전체검색 한다고 찾아지는 문제가 아니란 의미.

 

그러므로 서버 환경을 내 로컬환경에도 맞춰서(!!) 서버에서 나는 에러는 나도 나는 상황이

 

더 좋은 개발환경이라고 생각된다.

 

 

 

그러니 한번이라도 서버에 sqlplus로 접속을 해서

 

SELECT * FROM nls_session_parameters WHERE PARAMETER LIKE '%DATE%' OR PARAMETER LIKE '%LANG%'; 

 

이 쿼리를 한번 날려서 서버가 어떤값들이 사용되고 있는지 알아내자.

 

 

 

서버 sqlplus로 접속하기 어렵다면,

 

저쿼리를 실행하는 프로그램을 짜서 서버에 포팅해서 실행해 버리자.

 

아무튼 그런식으로 서버 환경값을 다 알아낸 다음에

 

내 환경도 서버랑 같게 맞춘다.

 

 

 

여기서 주의할것은 NLS_DATE_FORMAT 값 한개만 맞춘다고 되는게 아니라

 

NLS_LANGUAGE, NLS_DATE_LANGUAGE 까지 총 3개 전부 맞춰야 한다. 

 

 

 

일단 토드에서도 서버랑 같은 에러가 나는것이 속편함으로

 

토드 실행 후에 

 

ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-RR';

ALTER SESSION SET NLS_DATE_LANGUAGE = 'AMERICAN'; 

 

이런식으로 한번 쿼리를 (물론 저 값을은 서버값으로 맞춘다)  날린다음에

 

오류가 나는 쿼리를 실행해보면 서버에서 나던 오류가 내 토드에서도 나는것을 확인할 수 있다.

 

 

 

아에 세션 전체나 접속환경차원에서 저값을 고정시키는 방법도 있지만

 

그 방법은 검색하면 나온다....... 하지만

 

TO_CHAR, TO_DATE의 두번째 인수를 항상 지정하는 버릇을 들이기 위해서라도

 

나는 일부러 고정하지 않고 있다.

 

출처 : https://m.blog.naver.com/PostView.nhn?blogId=jeemin5&logNo=220141590502&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

LIST
블로그 이미지

SeoHW

,
SMALL

oracle in 사용예시입니

SELECT

                     *

                     FROM TN_test

                where FN_member =  '14111417002560' 

                AND fn_lectureseq =  '13181' 

                AND FN_DELETEYN = 'N'

                AND FN_APPSTATE in('1','2','5')

FN_APPSTATE 이 1,2,5  인것만 뽑아오는 것입니다


NOT IN 사용 예시 입니다

SELECT

                     *

                     FROM TN_test

                where FN_member =  '14111417002560' 

                AND fn_lectureseq =  '13181' 

                AND FN_DELETEYN = 'N'

                AND FN_APPSTATE not in('1','2','5')

FN_APPSTATE 1,2,5 아닌것만 뽑아오는 예시입니다

LIST
블로그 이미지

SeoHW

,