본문 바로가기

개발자 일지120

[ibatis]SELECT 결과가 이상할 때(remapResults 사용하기) -실무에서 ibatis 사용시 SELECT 쿼리 콘솔 결과와 실제 애플리케이션 출력 결과가 다른 문제를 발견하였다. -이 문제를 해결하기 위한 remapResults라는 아이바티스 xml 속성을 알아본다. 프로젝트가 오래된 시스템이라 아직도 ibatis를 사용한다. 사실 xml에 작성하는 쿼리들의 기본적인 속성들은 알아도 모르는 속성들이 상당히 많다. 대표적으로 어제 알게된 remapResults라는 속성... 쿼리... 위처럼 false로 잡혀 있었는데 이게 왜 잡혀있는지 궁금해하지 않았음에 반성한다ㅜㅜ 일단 발생한 문제는 다음과 같다. 메뉴를 클릭하면 조회할 데이터 리스트를 불러온다. 그때 저 위의 getList라는 이름의 쿼리를 사용한다. 그리고 리스트 위에 엑셀 다운로드 버튼이 있는데 이것을 클릭.. 2021. 4. 23.
[인프런]파이썬 알고리즘 기초 문법 정리2 -파이썬의 기초적인 문법과 새로 알게된 문법 등을 정리한다. -인프런의 김태원님 파이썬 강의를 학습한 내용을 간단하게 정리한다. 문자열과 내장함수 파이썬은 문자열과 관련한 여러가지 내장함수가 있다. 문자를 대문자료 표현, 소문자로 표현, 문자 안의 특정 값 찾기, 문자 길이 찾기 등 여러가지 함수가 있으니 기본적인 건 다 익혀둬야 할 것 같다. msg="It is Time" print(msg.upper()) #IT IS TIME print(msg.lower()) #it is time tmp=msg.upper() print(tmp.find('T')) #1 (T라는 문자 찾아 인덱스 번호 반환) print(tmp.count('T') #2 (T라는 문자 개수 반환) print(msg[:2]) #It (처음부터.. 2021. 4. 18.
[인프런]파이썬 알고리즘 기초 문법 정리1 -파이썬의 기초적인 문법과 새로 알게된 문법 등을 정리한다. -인프런의 김태원님 파이썬 강의를 학습한 내용을 간단하게 정리한다. 변수와 출력 등 변수 대입 방법과 출력 방법 등을 아래와 같이 정리하였다. a,b=10,20 #a=10, b=20과 같은 의미 print(type(a)) #a의 타입을 알려준다(int) c=10.5 print(type(c)) #c의 타입을 알려준다(float) d='student' print(type(d)) #d의 타입을 알려준다(str) a,b,c = 1,2,3 print(a,b,c, sep=',') #1,2,3이라는 결과가 나옴. sep은 separator의 약자로 출력값 사이에 원하는 sep을 넣을 수 있음 #end로 내려쓰기를 띄어쓰기로 바꾸기(결과는 1 2 3) pri.. 2021. 4. 11.
[토비의 스프링 vol.1]1장 오브젝트와 의존관계 -토비의 스프링 3.1 vol.1의 1장을 정리 및 실습한다. 1장은 스프링 관심 대상인 오브젝트 설계와 구현, 동작원리 등을 dao 예제를 통해 설명하려고 한다. 개인적으로 토비의 스프링은 시도할 때마다 새롭게 뭔가 보이는게 있어서 좋은 것 같다. 디자인패턴을 조금 공부하고 나니(아직 맛보기 수준이지만..) 좀 더 이해가 깊어진 것 같기는 하다. 이 책은 간단하게 요약하면 나중에 봤을 때 항상 뭔 흐름인지 헷깔리고 실제로 너무 좋은 내용이 많아서 쌩요약보다는 좀 길더라도 적절하게 요약했다. 나중에 책 대신에 차근차근 빠르게 읽을 수 있을 정도로만 요약헀다. 1.1 초난감 DAO 사용자 정보를 JDBC API를 통해 DB에 저장하고 조회하는 간단한 DAO를 아래와 같이 만든다. 1.1.1 User DAO.. 2021. 4. 9.
[파이썬 기초] XSS(Cross-Site Scripting) 개념 및 방어 방법 -보안공격인 XSS(Cross-Site Scripting)에 대해 알아보고 이를 파이썬에서 막는 방법을 살펴본다.-CSRF(Cross-Site Request Forgery)와의 차이점을 간단하게 살펴본다.-생활코딩 파이썬 강의를 바탕으로 학습 및 보충학습 하였다.-파이썬은 3.9.2 ver를 사용한다.XSS란? 가장 흔한 보안 공격 중 하나로 공격자가 웹사이트에 스크립트 태그()를 사용하여 쿠키탈취나 특정 코드를 실행하여 공격하는 보안 공격을 말한다. 학습 중 CSRF(Cross-Site Request Forgery)라는 보안 공격이 생각나서 차이점을 찾아보았다. CSRF의 개념 및 XSS와 CSRF 차이점  CSRF는 해석하면 사이트 간 요청 위조이다. 사용자가 자신의 의지와 무관하게 공격자가 의도한 .. 2021. 4. 4.
[파이썬 기초]함수,모듈 작성법 및 활용 -함수를 작성하는 방법과 모듈을 작성하는 방법을 학습한다. -함수,모듈로 이전에 만든 웹어플리케이션 예제를 리팩토링 해본다. -생활코딩 파이썬 강의를 바탕으로 학습 및 보충학습 하였다. -파이썬은 3.9.2 ver를 사용한다. 함수 사용법 파이썬에서 함수 작성법은 다음과 같다. def 함수명(): 코드... 평균값을 구하는 함수를 작성하면 다음과 같다. func.py #평균을 구하는 함수 def average(a,b,c): s=a+b+c r=s/3 return r #합을 구하는 함수 def plus(a,b): return a+b #pi값 pi = 3.14 #평균값 출력 print(average(10,20,30)) def라는 키워드는 함수의 시작을 의미한다. average() 함수를 예로 살펴보면, 함수명.. 2021. 3. 28.
[파이썬 기초]form 데이터 전송 및 처리방법(CRUD-Delete) -HTML form태그를 이용하여 파이썬 애플리케이션이 데이터를 받아서 처리하는 방법을 알아본다. CRUD중 Delete를 구현한다. -생활코딩 파이썬 강의를 바탕으로 학습 및 보충학습 하였다. -파이썬은 3.9.2 ver를 사용한다. (이전 파이썬 포스팅 예제와 연결되니 참고 부탁드립니다) CRUD의 마지막인 Delete를 만들어본다. Delete는 os.remove 함수로 간단하게 만들 수 있다. Delete 버튼 만들기 우선 delete버튼을 만드는데 delete버튼을 a태그를 통한 링크 방식으로 만들면, 누군가 링크를 공유한 경우 그 사람들도 delete를 할 수 있는 보안 문제가 발생하기 때문에 form 방식으로 다음과 같이 만든다. index.py 일부 if 'id' in form: pageI.. 2021. 3. 24.
[파이썬 기초]form 데이터 전송 및 처리방법(CRUD-Update) -HTML form태그를 이용하여 파이썬 애플리케이션이 데이터를 받아서 처리하는 방법을 알아본다. CRUD중 Update를 구현한다. -생활코딩 파이썬 강의를 바탕으로 학습 및 보충학습 하였다. -파이썬은 3.9.2 ver를 사용한다. (이전 파이썬 포스팅 예제와 연결되니 참고 부탁드립니다) 목록의 데이터를 클릭하여 목록제목과 내용을 업데이트하는 방법을 알아본다.create버튼 옆에 update버튼을 만드는데, WEB이라는 메인페이지로 이동하면 update버튼이 안보이고 목록을 클릭하면 update버튼이 보이도록 분기처리한다. update 버튼 만들기 index.py 일부 form = cgi.FieldStorage() #a태그 클릭시 id값에 따른 pageId 분기처리 if 'id' in form: pa.. 2021. 3. 24.
[디자인패턴]빌더 패턴(Builder Pattern) -객체를 생성하는 패턴 중 하나인 빌더 패턴(Builder Pattern)을 알아본다. -빌더 패턴 이전에 객체를 생성하는 가장 일반적인 패턴인 점층적 생성자 패턴, 자바빈 패턴을 먼저 알아본다. -이번 포스팅은 기계인간 John Grib님의 블로그를 많이 참고하여 학습하였다.(출처는 아래에 표시) 빌더 패턴이란? 객체를 생성하는 방법은 여러가지가 있는데, 일반적으로 생성자에 인자를 넣어 인스턴스를 생성하는 방법이나 setter를 이용하는 자바빈 패턴을 많이 사용한다. 빌더패턴은 이런 패턴들의 단점을 좀 더 개선한 방법이다. 우선 빌더 패턴을 소개하기 전에 점층적 생성자 패턴, 자바빈 패턴을 소개한 후, 이들의 단점을 개선한 빌더 패턴을 마지막으로 소개한다. 점층적 생성자 패턴 생성자를 통한 인스턴스 생.. 2021. 3. 21.
[파이썬 기초]form 데이터 전송 및 처리방법(CRUD-Create,Read) -HTML form태그를 이용하여 파이썬 애플리케이션이 데이터를 받아서 처리하는 방법을 알아본다. CRUD중 Create, Read를 구현한다. -생활코딩 파이썬 강의를 바탕으로 학습 및 보충학습 하였다. -파이썬은 3.9.2 ver를 사용한다. (이전 파이썬 포스팅 예제와 연결되니 참고 부탁드립니다) form을 통해서 데이터를 입력하고 submit(제출,전송)하는 방법을 알아본다. form은 HTML의 주요태그로 내부의 input,textarea 등의 태그에 입력된 값을 서버쪽으로 전송해주는 기능을 한다. 이를 통해 CRUD의 Create, Read를 구현한다.(Read는 이미 구현되어 있기에 Create만 구현한다) 다음 예제는 index.py 화면에 create버튼을 만들고, 버튼을 클릭하면 for.. 2021. 3. 21.
[파이썬 기초]반복문(for,range,while) 및 반복문 활용 -파이썬의 반복문(for,range,while)에 대해 학습한다. -반복문을 활용하여 예제 화면의 서브타이틀(서브메뉴)를 반복문으로 뽑아본다. -생활코딩 파이썬 강의를 바탕으로 학습 및 보충 학습하였다. -파이썬은 3.9.2 ver를 사용한다. 반복문이란 프로그래밍에서 조건문(if)과 함께 가장 대표적인 문법이다. 특정 로직이나 명령 등을 여러 번 실행해야 한다면 여러 번 코드를 써주는 것이 아니라 반복문을 통해 자동적으로 반복되도록 해주는 문법이다. 대표적으로 for,while이 있으며 파이썬에는 range()라는 함수가 존재한다. 반복문 예제 예제는 아래와 같다. #for문을 사용한 list for value in ['kim','park','yoon']: #kim park yoon print(valu.. 2021. 3. 19.
[리눅스 기초]리눅스 디렉토리 구조 -리눅스의 디렉토리 종류 및 구조에 대해 알아본다. -생활코딩의 리눅스 강의를 바탕으로 학습 및 보충학습하였다. -ubuntu 12.10을 사용하였다. 리눅스에서는 루트 디렉토리(/)를 기준으로 트리형태로 여러 디렉토리가 존재한다. 디렉토리의 종류와 성격마다 명령어, 파일들이 분류되어 있다. 이는 리눅스가 파일시스템표준안(Filesystem Hierachy Standard, FHS)을 따르기 때문이다. FHS에 맞게 명령어와 파일들이 적절한 디렉토리에 잘 정리가 되어 있다. 표준안은 강제성이 없기 때문에 현재 일부 리눅스 시스템은 FHS를 잘 따르지 않는다고 한다. 현재는 자주 안 쓰이는 디렉토리들도 있고 필수적으로 쓰이는 디렉토리들도 있는데 알아야 하는 디렉토리들을 정리한다. /(root) 가장 최상위.. 2021. 3. 18.
[파이썬 기초]데이터타입 - list, 기타 컨테이너 타입(튜플,딕셔너리) -파이썬 데이터 타입인 컨테이너 타입 중 하나인 list에 대해 알아보며, 기타 다른 컨테이너 타입도 간단하게 알아본다. -공식 문서와 강의 학습을 함께 하였다. -생활코딩 파이썬 강의를 바탕으로 학습 및 보충학습 하였다. -파이썬은 3.9.2 ver를 사용한다. 파이썬에는 크게 다음과 같은 타입이 있다. 문자열 타입 숫자 타입 : 정수(int), 실수(float), 복소수(complex) 컨테이너 타입 : 리스트(list), 튜플(tuple), 딕셔너리(dictionary) 여기서는 컨테이너 타입에 대해 집중적으로 알아보려고 한다. 리스트(list) 변수 하나에는 하나의 값이 존재할 수 있다. 한 변수에 2개 이상의 값을 담기 위해서는 컨테이너 타입을 사용해야 한다. 여기서는 컨테이너 타입 중 list.. 2021. 3. 16.
깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy)의 이해 -자바에서 객체를 복사하는 두 가지 방법에 대해 알아본다. 디자인패턴 중 프로토타입 패턴을 학습하면서 깊은 복사, 얕은 복사의 개념이 나왔다. 이 기회에 제대로 알아볼 생각으로 글을 쓴다. 대충 알고 있었는데 예시를 작성하며 내부 동작 등을 제대로 파악해보려고 한다. 얕은 복사와 깊은 복사의 개념 얕은 복사(Shallow Copy)란 객체의 실제 값이 아닌 참조값(주소값)을 복사하는 것이다. 반면 깊은 복사(Deep Copy)란 참조값이 아닌 인스턴스를 새로 복사하여 아예 실제값을 복사하는 것이다. 밑의 예제로 설명하는 것이 더 이해가 쉽기 때문에 바로 예제로 들어간다. 얕은 복사(Shallow Copy) 우선 Fruit이라는 클래스를 다음과 같이 만든다. Fruit.java public class Fr.. 2021. 3. 15.
[파이썬 기초]open() 함수로 파일 읽기 -파이썬 index.py 내부의 내용을 파일로 따로 만들어 open() 함수로 읽어본다. -생활코딩 파이썬 강의를 기반으로 학습 및 보충학습하였다. -파이썬은 3.9.2 ver를 사용한다. 현재 index.py라는 파일은 다음과 같다. #!Python print("Content-Type: text/html") print() import cgi form = cgi.FieldStorage() #a태그 클릭시 id값에 따른 pageId 분기처리 if 'id' in form: pageId = form["id"].value else : pageId = 'welcome' print(''' WEB HTML CSS JavaScript {title} The World Wide Web (abbreviated WWW or .. 2021. 3. 15.
[파이썬 기초]제어문 - 조건문(if)과 논리연산자(and,or) -파이썬에서 조건에 따라 명령을 해석하는 조건문에 대해 알아본다. -논리연산자 and,or에 대해 알아본다. -생활코딩 파이썬 강의를 기반으로 학습 및 보충 학습하였다. -파이썬은 3.9.2 ver를 사용한다. 조건문 사용 방법 및 예제 조건문이란 조건에 따라 원하는 코드를 수행할 수 있도록 해주는 문법이다. Java 등의 언어에서 그렇듯이 파이썬도 if가 기본적인 조건문 명령어이다. 차이점은 else if인데 else if는 elif라고 표현한다. 예제를 보면 더 쉽게 이해된다. 예제는 아이디가 'kim'이면 Hello Kim을 출력하고 kim이 아니면 Who are you?를 출력하는 간단한 프로그램이다. 우선 입력값을 받는 방법에 대해 먼저 알아야 한다. 다음과 같이 사용한다. user_id = i.. 2021. 3. 14.
[파이썬 기초]데이터타입-Boolean다루기 -파이썬에서 Boolean 타입에 대해 알아본다. -생활코딩 파이썬 강의를 학습 및 보충 학습하였다. -파이썬은 3.9.2 ver를 사용한다. Boolean 문법 사용방법 파이썬 역시 True,False 등의 불리언(Boolean) 타입이 있다. 사용법은 다음과 같이 한 번에 정리하였다. #비교 연산자(Comparision operator) print(1==1) #True print(1 파이썬 – os.path 모듈 ◎ os.path는 파일 경로를 생성 및 수정하고, 파일 정보를 쉽게 다룰 수 있게 해주는 모듈. os.path.abspath(path) 현재 경로를 Prefix로 하여 입력받은 경로를 절대경로로 바꿔서 반환합니다. >>> abspath('tmp' devanix.tistory.com 위 블로.. 2021. 3. 14.
[리눅스 기초]쉘 스크립트(Shell Script) 개념 및 사용법, 컴파일 언어와 인터프리터 언어의 차이점 -리눅스의 쉘 스크립트에 대해 알아본다. -생활코딩의 리눅스 강의를 바탕으로 학습 및 보충 학습하였다. -ubuntu 12.10을 사용하였다. 쉘 스크립트란? 쉘 스크립트(Shell Script)는 쉘로 하는 프로그래밍이라고 볼 수 있다. Java나 C언어 처럼 조건문, 반복문 등의 일반적인 프로그래밍 문법을 사용할 수 있다. 그러나 컴파일 방식이 아닌 인터프리터를 통한 스크립트 방식이라는 차이점이 있다. 컴파일 언어와 인터프리터 언어의 차이점을 대충 알고 있어서 이 기회에 한 번 정리해본다. 컴파일 언어 스크립트 언어 컴파일러를 거쳐서 기계어로 번역한 후 한 번에 실행(번역 후 실행) 인터프리터가 코드를 한줄 한줄 해석하며 실행(번역하며 실행) 컴파일을 하기 위해 변수 선언 등의 제약사항이 많음 변수를.. 2021. 3. 14.
[리눅스 기초]I/O Redirection 개념 및 사용법 -리눅스의 I/O Redirection의 개념과 사용법을 알아본다. -생활코딩의 리눅스 강의를 바탕으로 학습하였다. -ubuntu 12.10을 사용하였다. I/O Redirection이란? 직역하는대로 Input/Output의 재방향(화)이다. 입력과 출력의 기본적인 방향을 바꿔 입력값을 모니터 출력(기본출력)이 아닌 파일에 출력하여 저장하거나 파일값을 출력하는 등 입출력 방향을 재설정할 수 있다. 리눅스의 기본 입출력은 다음과 같다. 표준입력(stdin: 키보드) 표준출력(stdout: 모니터) 표준에러(stderr: 모니터) 즉, 기본적으로 키보드의 표준입력값은 모니터에 출력된다. 또한 에러 역시 모니터에 기본적으로 출력된다. I/O Redirection 명령어를 사용하면 이런 표준값들을 변경하여 다.. 2021. 3. 12.
[파이썬 기초]URL 쿼리스트링(Query String) 가져오기 -URL의 쿼리스트링(Query String) 값을 가져오는 방법을 알아본다. -생활코딩의 파이썬 강의를 바탕으로 학습하였다. -파이썬은 3.9.2 ver를 사용한다. 쿼리스트링이란? URL의 뒤에 입력 데이터를 함께 제공하는 가장 단순한 데이터 전달 방법이다. 웹개발에서 데이터를 요청하는 방식 중 대표적인 것이 GET방식과 POST방식인데, 주로 GET방식으로 데이터를 요청할 때 쓰이는 방법이다. URL주소뒤에 물음표(?)를 붙이고 key1=value1&key2=value2...방식으로 데이터를 요청한다. 예를 들어 다음과 같은 URL을 가정해보자. https://roadofdevelopment.tistory.com?category=python&category=1 이 경우라면 category=pytho.. 2021. 3. 12.