프로그래밍458 PHP 파일 업로드와 다운로드 만들기 PHP 에서 간단히 파일 업로드와 다운로드를 구현해 봅니다. 파일 업로드 할때는 파일명 중복 방지와 파일명을 추측해서 다운로드 하는 것을 방지하기 위해 랜덤하게 파일명을 만들어서 서버에 저장합니다. 보안을 위해서는 파일 업로드 위치를 웹루트 밖에 하는것이 좋습니다. 파일 정보를 데이터베이스에 저장할 때도 파일을 구분할 파일 아이디를 예측 가능하지 않게 만들어서 다운로드시 사용합니다. 보안을 위해서는 다운로드 프로그램에 권한이 적용되면 더 좋습니다. 전체 예제 파일은 글 하단에 첨부하여 두었습니다. 1. 파일정보를 저장할 테이블 구조- 데이터베이스는 캐릭터셋 utf8, collation은 utf8_general_ci 로 만들었습니다. CREATE TABLE upload_file ( file_id VARCH.. 2018. 4. 21. Oracle Open 백업 하기(Hot backup) Oracle 백업은 닫힌 백업(Close Backup)과 열린 백업(Open Backup) 으로 나눌 수 있습니다. 닫힌 백업은 Oracle 데이터베이스를 완전히 종료한후 필요한 파일을 백업하는 방법입니다. 열린 백업은 데이터베이스가 실행중에 백업을 할 수 있는 방법 입니다. 여기에서는 Oracle의 열린 백업을 하는 방법을 알아보겠습니다. 환경은 Windows에서 Oracle XE 11g 로 테스트 하였습니다. 일단 열린 백업을 하기 위해서는 데이터베이스가 아카이브 모드로 동작하고 있어야 합니다. 아카이브 모드로 설정하는 것은 "Oracle Archive Mode 설정하기" 를 참조하세요. 1. 백업 대상이 되는 파일- 데이터 파일 : 실제 데이터가 저장되는 파일 입니다.- 컨트롤 파일 : 데이터베이스.. 2018. 4. 21. Oracle Archive Mode 설정하기 Oracle은 데이터 복구를 위해 데이터베이스에 대한 모든 변경사항을 redo 로그 파일에 적어둡니다. redo 로그 파일에 변경정보를 적어서 보관하는데, 두 가지 방법을 사용할 수 있습니다. 아카이브 로그 모드(Archive Log Mode)와 노 아카이브 로그 모드(No Archive Log Mode)입니다. 노 아카이브 로그 모드는 오라클 설치시 기본 설정으로 몇 개의 redo 로그 파일을 돌려 쓰는 방식입니다. 즉, 일정 갯수의 파일에 저장된 정보 외에 이전 정보는 사라지게 됩니다. 아카이브 로그 모드는 redo로그 파일을 모두 사용하여 처음 파일에 덮어쓰기전에 이전 파일을 다른 곳에 복사해 두는 방식입니다. 그러므로 모든 로그 정보가 보존됩니다. 현재 데이터베이스의 로그 모드를 확인해 보고, 변.. 2018. 4. 21. Subclipse의 History에서 변경 파일 목록 복사하기 Eclipse에서 SVN 플로그인으로 Subclipse를 사용중입니다. 변경된 사항을 확인하기 위해서 Team -> Show History 를 사용합니다. Revision을 클릭하면 하단에 변경된 파일 목록이 나옵니다. 이 파일 목록은 복사가 되지 않습니다. 변경된 파일 목록만을 따로 텍스트 파일로 저장하는 방법을 알아 보겠습니다. 상당의 Revision을 마우스 오른쪽 키로 클릭합니다. 팝업 메뉴에서 "Generate ChangeLog..." 을 클릭합니다 Output format: 에서 "svn log with affected paths" 를 선택합니다. Save to: 는 Clipboard를 선택하면 텍스트 파일에 붙여넣기 하면 됩니다. 파일로 저장할 수도 있습니다. 하단 Preview:에 내용이 .. 2018. 4. 21. Windows에서 TOMCAT에 개발용으로 SSL 적용하기 사이트에 SSL을 적용하려면 인증기관으로부터 인증서를 발급받아 웹서버에 설치해야 합니다. 개발용으로 자신이 인증기관이 되어 인증서를 발급하여 Tomcat에 적용하는 방법을 알아봅니다. 1. openssl 설치하기 키와 인증서를 만들기 위해서 openssl을 설치합니다. 다음 사이트에서 자신의 PC에 맞는 파일을 다운 받습니다. 이 글에서는 윈도우에서 테스트하므로 openssl-0.9.8k_X64.zip 파일 다운로드 받았습니다. https://code.google.com/archive/p/openssl-for-windows/downloads 다운 받은 파일은 압축을 풀어서 적당한곳에 복사해두면 됩니다. 여기에서는 D:\util\openssl-0.9.8k_X64 에 설치하였습니다. D:\util\opens.. 2018. 4. 21. SSL 동작 방식을 간단히 알아보기 SSL 은 웹서버와 브라우저 간의 통신을 암호화 해서 중간에 누가 가로채더라도 내용을 알 수 없게 해줍니다. SSL이 적용되면 https:// 를 사용하여 웹서버에 접근하게 됩니다. 원래 여러가지 기술들이 작용하는 것이라 복잡하므로 기술적인 부분은 제외하고 개념적인 SSL 동작 방식을 간단히 알아보겠습니다. 그래도 미리 알아 두어야 할 것들이 많습니다. 1. SSL과 TLS SSL(Secure Sockets Layer)와 TLS(Transport Layer Security)는 같은 것이라고 할 수 있습니다. SSL은 TCP/IP 암호화 통신에 사용되는 규약으로써 넷스케이프에서 만들었습니다. SSL 3.0 버전부터는 IETF에서 표준으로 정해서 TLS 1.0이 되었습니다. 하지만 아직도 그냥 SSL이라고 .. 2018. 4. 21. 도메인 이전시 기존 도메인의 모든 URL을 새 도메인으로 리다이렉트하기 Servlet 을 사용하는경우 도메인 이전시에 기존 도메인의 즐겨찾기 되어 있는것과 같은 어떤 URL에서 접근하더라도 새 도메인으로 리다이렉트하는 방법을 알아봅니다. 사이트 도메인이 변경되면 기존 도메인은 새로운 도메인으로 리다이렉트 되도록 하는게 일반적입니다. 이때 영구 이전을 나타래는 301 HTTP 응답코드를 사용하는게 좋습니다. 이때 보통은 index 페이지에만 리다이렉트 처리를해서 이전 도메인만으로 들어오면 리다이렉트 되지만 사이트내의 특정 페이지들을 즐겨찾기 해두고 사용하던 곳은 페이지를 찾지 못하는 상황이 됩니다. Servlet 을 사용하는 경우 Filter 를 사용하여 어떤 URL의 요청이 들어오더라도 새 도메인으로 리다이렉트 되도록 만들어 보겠습니다. 1. 요청을 특정 URL로 리다이렉트.. 2018. 4. 21. 파이썬 웹프로그래밍 - 장고(Django) 데이터베이스 API 사용하기 이 글은 앞의 글 "파이썬 웹프로그래밍 - 장고(Django) 튜토리얼 1(MySQL, MariaDB 연동)" 에 이어집니다. 대화식 Python Shell 에서 Django 데이터베이스 API를 테스트 해봅니다. 명령창을 열어서 앞에서 만든 샘플 프로젝트의 src 폴더에 들어가서 다음 명령을 실행합니다. D:\workspace\mysite\src\python manage.py shell 단순히 python만 실행하여 쉘을 띄우지 않는 이유는 manage.py 에 설정된 DJANGO_SETTINGS_MODULE 환경변수를 사용할 수 있게 하기 위해서 입니다. 이 환경에는 샘플 프로젝트에서 만든 데이터베이스 연결정보 객체 정보를 바로 사용할 수 있습니다. 1. 모델 임포트하고 Question 객체 생성하기.. 2018. 4. 21. 아크로에디터 열(Column) 단위 편집기능 사용하기 일반적으로 텍스트를 복사/붙여넣기 하기 위해서 영역을 지정할 때 행 단위로 선택을 하게 됩니다. 마우스로 드래그 해서 선택하거나, 키보드의 Shift + 화살표 키를 사용합니다. 프로그램 개발일을 할때 다루게 되는 데이터들 중 각 행의 모양이 일정해서 동일 열의 데이터를 변경하는 작업이 종종 있습니다. 이럴경우 행이 아닌 열을 선택하여 작업을 할 수 있습니다. 아크로에디터에서는 Alt 키를 누른 상태에서 마우스로 드래그하거나 Ctrl + B 키를 눌러 열 편집 상태로 들어간 다음 Shit + 화살표 키 를 사용하면 열을 선택할 수 있습니다. 열 편집 상태에서 빠져나오려면 Ctrl + B 키를 다시 한 번 누릅니다. 위 이미지는 SQL 쿼리에서 테이블 명만을 선택한 것입니다. 열 편집 기능을 적용할 수 있.. 2018. 4. 20. 윈도우즈 10 설치 안되는 드라이버 업데이트 숨기기 Windows 10에서 업데이트 확인을 하면 다운로드는 되고 설치대기중 상태여서 설치를 하여도 설치가 되지 않고 계속 보이는 드라이브 업데이트가 있습니다. 이러한 업데이트를 숨기는 방법을 알아 봅니다. 다음 URL에서 필요한 파일을 다운로드 받을 수 있습니다. "Windows 10에서 드라이버 업데이트가 임시로 다시 설치되지 않도록 하는 방법" 이 페이지는 기본적으로 새로운 드라이브를 업데이트 했는데, 업데이트 설치후 문제가 생길 경우 장치 드라이버를 이전것으로 돌리는 방법을 제공합니다. 아래 쪽으로 스크롤하다보면 "업데이트 표시 또는 숨기기" 문제 해결사 패키지를 지금 다운로드 하십시요. 라는링크가 있습니다. 이 링크를 클릭하여 파일을 다운로드 받습니다. 다운로드 받은 파일은 wushowhide.dia.. 2018. 4. 20. 아크로에디터에서 FTP로 원격 문서 편집하기 아크로에디터는 FTP로 원격 서버에 연결하여 문서를 편집할 수 있습니다. 요즘은 대부분이 일반 FTP가 아닌 SFTP를 사용해서 SFTP 를 지원하지 않는 아크로에디터의 활용성이 좀 떨어지기는 하지만 아직도 유용하게 사용됩니다. 1. FTP 작업창 열기 - 메뉴에서 "보기 -> 작업 창(W) -> FTP" 를 선택합니다. 2. FTP 사이트를 추가합니다. - FTP 작업창이 열렸습니다.- 호스트(H) 선택상자 옆의 "계정 관리" 아이콘을 클릭하여 "FTP 호스트" 창을 엽니다.- "새 호스트" 버튼을 클릭하여 "새 호스트 이름" 입력창을 띄워 호스트 이름을 입력합니다. - "FTP 호스트" 창에서 나머지 정보를 입력하고 "저장" 버튼을 눌러 정보를 저장합니다.- 호스트 주소, 사용자, 비밀번호, 포트 정.. 2018. 4. 20. Apache PDFBox 라이브러리를 사용해서 PDF 파일 만들기 Apache PDFBox 라이브러리를 사용해서 PDF 파일을 생성하는 방법을 알아보겠습니다. 간단히 이미지 그리기, 글 쓰기, 라인 그리기 기능을 알아 봅니다. 예제는 스프링 프레임웍을 사용하는 웹프로그램으로 작성했습니다. PDFBox 는 Java 라이브러리이므로 Java 애플리케이션에서 사용할 수 있습니다. Apache PDFBox 공식 사이트는 https://pdfbox.apache.org/ 입니다. 현재 최신 버전은 2.0.8 입니다. 1. PDFBox를 사용하기 위해서 pom.xml 파일에 의존성을 추가합니다. org.apache.pdfbox pdfbox 2.0.8 2. 문서를 생성하고, 다운로드하기 - PDDcoument 객체의 save() 메소드에 출력 스트림을 인자로 주어 출력합니다. // .. 2018. 4. 20. Servlet/jsp, PHP, Javascript로 리다이렉트하기(HTTP 응답코드 지정) 웹프로그램시 사이트의 도메인이 바뀌거나 어떠한 조건에 의해 특정 페이지로 리다이렉트를 해야할 경우가 있습니다. 이번에는 Servlet/jsp, PHP, Javascript, HTML meta 태그등을 사용하여 리다이렉트를 하는 방법을 알아 봅니다. 리다이렉트시 나타나는 HTTP 응답코드는 301, 302, 200 등이 있을 수 있습니다. 301은 영구적으로 URL이 변경되었음을 나타내는 응답코드이고, 302 는 일시적으로 URL이 변경되었음을 나타내는 것입니다. 자바스트립트나 메타 태그를 이용하여 리다이렉트하면 응답코드가 200이 나옵니다. 정상적인 요청에 대한 응답과 동일합니다. 자바스크립트를 이용한 리다이렉트는 검색로봇이 페이지 수집을 하는데 크롤링을 어렵게 하는 경우가 있다고 합니다. 자주 사용하는.. 2018. 4. 20. 이클립스에서 동일 문자열을 다중파일에서 찾아 모두 바꾸기 이클립스에서 프로젝트내의 모든 파일에서 동일한 문자열을 찾아서 바꾸는 방법을 알아보겠습니다. 여러파일에서 찾아서 바꾸기를 수행하는 방법을 두 가지가 있습니다. 첫 번째는 찾는 것과 동시에 바꾸기를 실행하는 방법이고, 두 번째는 일단 찾은 다음에 필요하면 바꾸기를 실행하는 방법입니다. 1. 찾기와 동시에 바꾸기를 실행하는 방법 - 메뉴에서 "Search" -> "File..." 를 선택합니다. - 찾을 문자열과 찾을 파일 패턴을 입력합니다. Containing text: File name patterns (separated by comma): *.php 이 예제 에서는 php파일(*.php)의 meta 태그에서 charset을 euc-kr로 변경해 봅니다. - 하단의 "Replace..." 버튼을 누릅니다.. 2018. 4. 20. 유틸리티 클래스의 정적 메소드로 커스텀 EL 함수 만들기 jstl의 functions EL 함수는 jsp 페이지에서 간편하게 사용할수 있는 fn:replace(), fn:length(), fn:substring() 등의 함수를 제공합니다. 기본적으로 제공되는 기능외에 다른 기능들이 필요하다면 정적 메소드를 가지는유틸리티 클래스를 만들고, 이 정적메소드를 호출하는 커스텀 EL 함수를 만들어서 사용할 수 있습니다. 예제의 전체소는 글 하단에 첨부되어 있습니다. 1. 테스트용 정적 메소드 예제로 만들어 볼 StrUtil 클래스의 replaceAll() 함수는 그냥 String 객체의 replaceAll() 함수를 호출하도록 되어 있습니다. package com.tistory.pentode; public class StrUtil {public static String.. 2018. 4. 20. 이전 1 ··· 11 12 13 14 15 16 17 ··· 31 다음