반응형

CSS3 gives us the ability to create rounded corners with the border-radius property. But as you might already know, this new feature is not recognized in Internet Explorer 8 (IE8) and its earlier versions. So when you apply CSS3 Border Radius to an element, it still appears as a box with pointed tips.

 

 

You may find a lot of different advice on the Internet suggesting you ignore IE8. You wish you could do so. But if you’re working on a website for a government institution or a bank, you may not have a choice. You still have to make the website look as nice as it does in modern browsers, which includes the ability to apply CSS3 Border Radius.

If you really have to make your website IE8-ready, while being able to use the CSS3 feature, we have just the tip for you.

CSS3Pie

CSS3Pie is a kind of polyfill for CSS3 decorative features. Aside from CSS3 Border Radius that we’re going to discuss in this article, CSS3Pie also supports Box Shadow and Gradients, though it’s limited to the Linear Gradient type.

Download CSS3Pie (here). Put it inside your project directory – I placed it in the css folder. As you can also see from the screenshot below, I’ve created one stylesheet as well as one HTML file.

 

 

Open the stylesheet in code editor and set one of the elements in the HTML file with rounded corners, like so:

1
2
3
4
5
6
7
8
.border-radius {
    height: 100px;
    width: 100px;
    background-color: #2ecc71;
    -webkit-border-radius: 50px;
    -moz-border-radius: 50px;
    border-radius: 50px;
}

As the element’s width and height are both 100px, and the border-radius is set to 50px, the element will become a circle:

 

 

In IE8, as we expect, it would still be a square (sigh), but don’t worry.

 

 

To enable the rounded corner effect, insert this line: behavior: url(css/pie.htc);, like so.

1
2
3
4
5
6
7
8
9
.border-radius {
    height: 100px;
    width: 100px;
    background-color: #2ecc71;
    -webkit-border-radius: 50px;
    -moz-border-radius: 50px;
    border-radius: 50px;
    behavior: url(css/pie.htc);
}

Note that the file path in url()has to be either an absolute path or relative to the HTML file. You can also add this line in a separate file.

You may have a stylesheet that is designated for Internet Explorer. You can put behavior: url(css/pie.htc); within that file, but ensure that it’s declared within the same CSS selector, like so.

1
2
3
4
/* declared in ie.css */
.border-radius {
    behavior: url(css/pie.htc);
}

Refresh the page in IE8. The rounded corner should now come into effect (ta-da!). It should work in IE7 as well.

 

 

Troubleshooting

Internet Explorer may behave unexpectedly. If this does not work (maybe the rounded corner does not take effect, or the selected element has disappeared), adding the position and zoom property should solve the problem:

1
2
3
4
5
6
7
<style>
.border-radius {
    behavior: url(<?php echo get_template_directory_uri() ;?>/css/pie.htc);
    position: relative;
    zoom: 1;
}
</style>

Using CSS3 Pie in WordPress

You have finished putting your website in HTML form. You also utilize pie.htc in the website to enable CSS3 in IE8. At this stage, you are ready to transform the website into a functioning WordPress theme. In this case, as WordPress is dynamic, where pages may serve in different level URLs, we have to specify an absolute path.

You can either change the path in CSS like this:

1
2
3
4
5
.border-radius {
    behavior: url(http://localhost/{website}/wp-content/themes/{the_theme}/css/pie.htc);
    position: relative;
    zoom: 1;
}

Or add internal styles in the header.php, this way:

1
2
3
4
5
6
7
<style>
.border-radius {
    behavior: url(<?php echo get_template_directory_uri() ;?>/css/pie.htc);
    position: relative;
    zoom: 1;
}
</style>

Final Thought

Having cool things such as CSS3 Border Radius work in IE8 is fascinating, and CSS3Pie makes that happen, while giving us one less reason to hate IE8.

반응형

'웹프로그래밍 > CSS' 카테고리의 다른 글

Background-size for IE7,8  (0) 2015.04.24
CSS3 구조선택자  (0) 2015.04.24
CSS 동위선택자, 상태선택자  (0) 2015.04.24
CSS 속성선택자  (0) 2015.04.24
텍스트 줄바꿈 처리 word-break, white-space  (0) 2015.04.09
반응형
find 라는 명령으로, 디스크에 저장된 각종 파일/디렉토리를 검색할 수 있습니다.


파일 찾기 (파일명 검색)


현재 디렉토리에서, pl 확장자를 가진 모든 파일 찾기
find -name '*.pl'

(현재 디렉토리 밑의 하위 디렉토리까지 다 찾습니다.)


루트에서부터, 즉 전체 하드에서, pl 확장자를 가진 모든 파일 찾기
find / -name '*.pl'



전체 하드 디스크에서, 파일명이 ab 로 시작하는 모든 파일 찾기
find / -name 'ab*'



전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
find / -name '.bash*'



전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
+ ls 명령 형식으로 출력
find / -name '.bash*' -ls

뒤에 -ls 라는 옵션을 붙이면 됩니다.




디렉토리명 찾기


전체 하드 디스크에서, 디렉토리 이름이 et 로 시작하는 모든 디렉토리 찾기
find / -name 'et*' -type d


주의! 옵션 순서를 바꾸면 에러가 납니다.

 

반응형
반응형

개요

VirtualBox를 설치하면 기본적으로 기본 머신 폴더가 C:\Users\사용자명\VirtualBox VMs 가 된다. 여기서는 이 폴더를 D:\VirtualBox VMs 로 옮겨보겠다. (단순히 폴더만 옮기면 VM이 제대로 작동하지 않게 된다.)

방법

만약 VM이 하나도 없는 상태라면 "설정 변경" 문단부터 진행하면 된다.

VM 정리

폴더 복제
  • 탐색기에서 C:\Users\사용자명 으로 이동 --- VirtualBox VMs 폴더 선택 --- 복사( Ctrl+C )
  • 탐색기에서 D:\ 로 이동 --- 붙여넣기( Ctrl+V )

이동하지 않고 복사한 이유는 잘못되었을 때 원상복구하기 위해서이다.

VM 목록에서 제거
  • VirtualBox 실행
  • 왼쪽 VM 목록에서 VM 우클릭 --- 삭제(R)
  • "가상 머신 목록에서 다음 가상 머신을 삭제합니다:" --- [지우기만 하기]

VM 우클릭 --- 삭제(R)를 반복하여 모든 VM을 목록에서 제거한다.

하드디스크 vdi 삭제
  • 파일(F) --- 가상 미디어 관리자(V)...

하드디스크 목록에 있는 모든 vdi를 삭제한다. 단, 하드디스크 vdi를 삭제하려면 먼저 그에 딸린 스냅샷 vdi를 모두 삭제해야 한다.

  • "가상 미디어 관리자" --- .vdi 파일 선택 --- 왼쪽 삼각형 눌러 펼침
  • 스냅샷 .vdi 선택 --- [삭제(E)]
  • "미디어 목록에서 하드디스크 C:\Users\jmnote\Virtual Vms\CentOS 6\Snapshots\{98e76e54-32c1-462e-aa35-40bfa1234567}.vdi을(를) 삭제하시겠습니까?" --- [삭제]
  • "가상 하드디스크 C:\Users\jmnote\Virtual Vms\CentOS 6\Snapshots\{98e76e54-32c1-462e-aa35-40bfa1234567}.vdi의 저장소 유닛을 삭제하시겠습니까?" --- [삭제]
  • 하드디스크 .vdi 선택 --- [삭제(E)]
  • "미디어 목록에서 하드디스크 C:\Users\jmnote\Virtual Vms\CentOS 6\CentOS 6.vdi을(를) 삭제하시겠습니까?" --- [삭제]
  • "가상 하드디스크 C:\Users\jmnote\Virtual Vms\CentOS 6\Snapshots\CentOS 6.vdi의 저장소 유닛을 삭제하시겠습니까?" --- [삭제]

삭제를 반복하여 목록에 있는 모든 vdi 삭제

  • [닫기(L)]

설정 변경

기본 머신 폴더 설정 변경
  • 파일(F) --- 환경 설정(P)
  • "VirtualBox - 설정" --- 일반 --- 기본 머신 폴더(M): D:\VirtualBox VMs --- [확인]
VM 추가
  • Oracle VM VirtualBox 관리자 --- 머신(M) --- 추가(A)...
  • 새 VM폴더(D:\VirtualBox VMs)인지 확인
  • 하위 폴더에 있는 .vbox 파일 선택 --- [열기(O)]

머신 추가를 반복하여 모든 VM 등록

테스트 및 기존 파일 삭제
  • VM 1개 선택 --- [시작(T)]
이상 없으면 VM 종료
  • 탐색기에서 C:\Users\사용자명 로 이동 --- VirtualBox VMs 폴더 삭제

 

반응형
반응형

Conditional comments with IE

Since Internet Explorer 5, conditional comments have been used to show or hide extra content from Internet Explorer.

The syntax

The example below will add a CSS style sheet only if the browser viewing the page is IE6:

<!--[if IE 6]>
    <link rel="stylesheet" type="text/css" href="ie6.css" />
<![endif]-->

Any HTML that appears between the IF statement will be added to the document if viewed using the specified version of Internet Explorer.

You can use the following names to identify versions of Internet Explorer:

Name Description
IE All versions of Internet Explorer less than version 10
IE 5, IE 6, IE 7, IE 8, IE 9 Only the version mentioned

You can also use the following modifiers:

Name Description
lt All versions less than
lte All versions less than or equal to
gt All versions greater than
gte All versions greater than or equal to

Expressions can be combined as follows:

Name Example Description
Not !(IE 6) Not Internet Explorer 6
And (gt IE 6)&(lt IE 9) Greater than Internet Explorer 6 and less than Internet Explorer 9
Or (IE 7)|(IE 8) Internet Explorer 7 or Internet Explorer 8

The following example will add some JavaScript to all versions of Internet Explorer less than version 8:

<!--[if lte IE 8]>
    <script type="text/javascript" src="ie.js"></script>  
<![endif]-->

Exclude Internet Explorer

As well as including code for Internet Explorer, you can also hide code from Internet Explorer:

<!--[if !IE]><!-->
    <div>You are not using Internet Explorer (less than version 10)</div>
<!--<![endif]-->
Notice the syntax difference when excluding Internet Explorer
Internet Explorer 10 does not support conditional tags, and behaves like other non-IE browsers

If-else statements

You can combine the comments to make if-else style statements:

<!--[if IE]>
    <div>You are using Internet Explorer (less than version 10)</div>
<![endif]-->
<!--[if !IE]><!-->
    <div>You are not using Internet Explorer, or using IE version 10</div>
<!--<![endif]-->

 

반응형

'웹프로그래밍' 카테고리의 다른 글

Huzy TOOLS 를 시작.  (0) 2024.01.02
한 도메인으로 접속하게 하기 (www 자동 붙이기)  (0) 2016.05.25
MySQL 수정  (0) 2014.06.28
웹폰트 완벽 사용법? (woff, eot)  (0) 2014.03.08
XE 템플릿 구문  (0) 2014.02.18
반응형
레이스토어에 앱을 등록하기 위한 페이지

https://play.google.com/apps/publish/

   

로그인

   

Google Play에 Android앱을 출시 클릭

   

제목 입력

APK 업로드 버튼 클릭

   

프로덕션으로 첫 번째 APK 업로드 클릭

   

   

   

   

   

왼쪽 메뉴의 스토어 등록정보 클릭

   

순서대로 드래그앤 드롭하여 이미지를 추가하면 됩니다.

   

모든 항목 작성 후

상위의 저장 버튼 클릭

   

왼쪽의 가격 및 배포 클릭

배포 방법 선택, 배포 대상 국가, 동의사항 체크 >

저장

   

   

   

   

오른쪽 상단의 출시 준비를 이 앱을 출시로 변경합니다.

   

출시됨으로 상태가 변경됨

   

상단의 Google Play스토어에서 보기 옆의 삼각 느낌를 클릭하면

방금 출시한 경우 몇 시간 정도 걸릴 수 있다는 메시지가 나옵니다.

왼쪽 메뉴의 모든 애플리케이션 아이콘 클릭

   

스토어 등록정보에서

Google Play 스토어에서 보기를 클릭하면 아직 등록정보가 없어서 에러메시지가 나옵니다.

출시 완료 후 1시간~3시간 정도 지나야 확인이 가능합니다.

   

   

출시는 되었지만 확인하려면 시간이 걸립니다.

출시완료!

   

   

마켓 등록 완료!

출시 1시간 후 PlayStore에서 출시된 앱이 확인 되었습니다.

https://play.google.com/store/apps/details?id=kr.codedragon.android.hashshare

 

출처 : http://codedragon.tistory.com/94

반응형
반응형
MyISAM과 달리 InnoDB 테이블들은 매우 안정적이며, 왠만해서는 데이터 파일이 깨어지는 경우는 거의 경험하지 못했다.
하지만, 데이터 파일이 깨어진다면 어떻게 해야 할까 ?. DBMS 벤더를 불문하고 손상된(깨어진) 데이터 파일을 복구한다는 것은 쉽지 않은 문제이며 위험도 크다.
이런 비 정상적인 현상은 어느 DBMS에서나 발생할 수 있는 현상이며, 이를 위해서 우리는 데이터베이스를 그렇게 열심히 백업하고 있었던 것이다.
만약, 백업마저도 복구가 안 된다면, 결국 지금의 깨어진 데이터 파일이라도 어떻게든 복구를 해야 한다.
하지만, InnoDB myisamchk와 같은 별도의 복구 도구를 제공하지 않는다.
손상된 InnoDB 테이블의 복구는 우선 MySQL을 기동시켜서 데이터를 덤프(mysqldump, SELECT INTO OUTFILE…)를 받는 것이 유일한 방법이다.
하지만, InnoDB Boot-up 과정에서 여러 가지 체크 및 정리 작업들을 하게 되는데, 이 중에서 하나라도 문제가 있을 경우 시작이 되지 않는다. (MySQL이 시작도 안 되는데 어떻게 덤프를 받지? ㅠㅠ)
그래서 MySQL의 설정 옵션 중에서 "innodb_force_recovery" 라는 설정 변수를 제공하고 있다
아래와 같이 MySQL의 설정 파일(my.cnf, my.ini)에 설정하면, 이 설정 값에 의해서 InnoDB에게 어떤 체크나 정리 작업을 건너뛰어야 할지를 알려 줄 수 잇다.

## 0 ~ 6까지의 값 중에서 하나를 설정 (0은 정상 상태인 경우이며 그 이상의 경우 강제 복구모드에 해당됨)
innodb_force_recovery = 1


기본 설정 값은 "0" 인데, 이는 InnoDB에게 모든 체크와 정리 작업을 정상적으로 실행하도록 명령하는 것이다.

그 이외의 설정 값은 모두 비 정상적인 상황을 위한 설정 값이며, 일반적인 서비스 환경에서는 사용하면 안 된다.
또한 "0"이 아닌 그 이외의 값을 설정하게 되면, InnoDB는 복구 모드라고 가정하고 SELECT 이외의 데이터를 변경하는 SQL들은 모두 처리를 거절해 버린다.


각 설정값별 복구 내용과 방식을 간단히 살펴보자. 

·         1 ( SRV_FORCE_IGNORE_CORRUPT )
데이터 파일의 손상된 페이지가 발견되어도 무시하고 MySQL을 기동시킨다.  일단 MySQL이 기동되면, SELECT * FROM tbl_name; 명령문을 실행하여 데이터를 덤프하여 다시 적재하거나 다른 데이터베이스로 이전하는 것이 좋다. 이 때, 손상된 인덱스 레코드와 페이지는 모두 건너뛰게 된다. (, 무시해 버리므로 데이터를 잃게 된다.)
에러 로그 파일에 "Database page corruption on disk or a failed "라고 출력되는 경우, 대부분 이 케이스인데 이는 테이블 스페이스의 페이지가 손상되어서 발생하는 문제이다. 이 경우에는 이 모드로 MySQL의 기동 후, mysqldump SELECT INTO OUTFILE...을 이용하여 덤프 및 재 적재가 가능하다.

·         2 ( SRV_FORCE_NO_BACKGROUND )
InnoDB의 여러 가지 Background thread들 중에서 Main thread를 시작하지 않고 MySQL을 기동시킨다. InnoDB의 경우 트랜잭션과 동시성 향상(MVCC)을 위해서 Undo 정보를 보존하게 되는데, Undo 정보는 변경되기 전 데이터를 가지게 된다. 이러한 Undo 정보는 여러 가지 상황에 맞춰서 적절한 시점에 삭제가 되어야 하는데 이 작업을 Main thread가 처리한다 (이 작업을 Purge라고도 부른다.). 그런데 만약 MySQL 의 시작 과정에서 InnoDB가 이러한 Purge 작업 중 오류를 발생시킨다면, MySQL의 기동 시에 Main thread를 시작시키지 않기 때문에 Purge 작업 중의 오류를 피할 수 있게 되므로, 일단 MySQL을 시작시킬 수는 있게 된다. Undo 정보는 InnoDB의 시스템 테이블 스페이스에 관리되기 때문에, 이 경우에는 전체 데이터베이스를 덤프 받은 후 다시 MySQL 서버를 구성해야 한다.

·         3 ( SRV_FORCE_NO_TRX_UNDO )
MySQL을 종료하던 시점에 만약 진행 중인 트랜잭션이 있었다면, MySQL은 그냥 단순히 그 Connection을 강제로 끊어 버리게 된다. 그 이후 별도의 정리 작업은 진행하지 않게 된다. MySQL은 종료되었지만, 진행 중이던 트랜잭션의 정리 작업은 하지 않게 되는 것이다. MySQL이 다시 시작하게 되면, InnoDB 엔진은 트랜잭션 로그(Redo log라고도 함)를 읽어서 다시 처리 해주고(이 작업을  Roll forward라고 함), 최종적으로 어떤 트랜잭션이 완료되지 않고 Connection이 종료되었는지 판단 후, 그 트랜잭션들은 InnoDB 엔진이 Rollback을 시키게 되는데, 만약 Undo 영역이나 다른 관련된 데이터들이 손상된 경우에는 Rollback 처리를 해줄 수 없게 되는데, 이 경우에 사용하는 복구 모드이다. 이 경우에는 사실은 Rollback되어야 하지만, 실제 데이터 파일에는 그 데이터가 남아 있을 수 있다. (이 부분은 Binary log Application의 로그를 통해서 수동으로 보완해 주거나 무시하는 방법밖에 없다.)

·         4 ( SRV_FORCE_NO_IBUF_MERGE )
MySQL InnoDBINSERT, UPDATE, DELETE 등의 데이터 변경 작업으로 발생하는 인덱스 변경 작업들을 상황에 따라서 즉시 실행할 수도 또는 나중에 처리하도록 지연시킬 수 도 있다. 이렇게 나중에 처리하도록 지연시키기 위해서는 변경 내용을 어딘가에 기록해 두어야 하는데, 그 용도로 사용되는 버퍼가 "Insert Buffer"이다. Insert Buffer의 내용은 언제 데이터 파일에 병합(Merge)될지 알 수 없다. MySQL을 종료해도 병합되지 않을 수 있는데, 만약 MySQL이 재 시작 되면서 Insert Buffer의 손상을 감지하게 되면 Insert Buffer의 병합 작업이 실패하고 MySQL이 기동하지 못하게 된다. 이 경우 사용할 수 있는 강제 복구 모드이다. (이 경우에는 테이블 통계 정보 갱신을 유발하는 작업들을 해서는 안 된다. 주로 DDL이나 ANALYZE 명령 등). Insert Buffer는 실제 데이터와 관련된 부분이 아니라 인덱스에 관련된 부분이라 테이블을 덤프 후 다시 적재하면 처리될 수도 있고, 아니면 단순히 "ALTER TABLE tbl_name ENGINE=InnoDB;" 명령만으로 해결될 수도 있다.

·         5 ( SRV_FORCE_NO_UNDO_LOG_SCAN )
복구 모드 3 ( SRV_FORCE_NO_TRX_UNDO )의 처리와 비슷하며, 이 모드에서는 Undo 로그를 완전히 무시하고 완전히 종료되지 않은 트랜잭션(COMMIT/ROLLBACK되지 않은)을 모두 COMMIT된 것으로 처리해 버린다.  또한 이 모드에서는 Undo 로그를 전혀 참조하지 않는 형태로 강제 복구 시킨다.

·         6 ( SRV_FORCE_NO_LOG_REDO )
이것은 MySQL 서버가 재 시작되기 전 가장 뒤에 발생한 체크 포인트 이후의 모든 트랜잭션을 버리고 복구 시키는 모드이다. 당연히 Redo 로그를 참조하지 않으므로 Roll forward라는 작업도 하지 않고 강제 복구시키게 된다. Redo 로그가 손상된 경우 이 모드로 강제 복구가 가능하다.

여기서 설명된 강제 복구 모드는 그 설정 값이 높아질수록 손실되는 데이터가 많아지기(복구 가능한 데이터가 적어지기) 때문에, 가능한 강제 복구 모드를 낮은 것(1 -> 2 -> 3 ->4 -> 5 -> 6)부터 시도해 볼 것을 추천한다.

아래 내용은 HighPerformanceMySQL 블로그에서 발췌한 내용을 번역한 것인데, 같이 참조하면 좋을 듯 하다.
InnoDB 테이블이 손상되는 경우는 상당히 희박
Double write, Checksum 그리고 기타 Validation 로직들과 버그 보완으로 인해서, 실제로 MyISAM에 비해서 InnoDB 테이블 스페이스 및 데이터 파일은 상당히 안정적이다.

대부분의 손상은 인덱스에서 발생
많은 사람들이 경험하는 InnoDB 데이터 파일의 손상은 80~90% 정도가 InnoDB 인덱스 (Secondary index)에 발생한 손상인 경우이며, 이 경우에는 단순히 ALTER TABLE 또는 데이터 덤프 및 재 적재만으로 해결된다. 복구 모드 "1 ( SRV_FORCE_IGNORE_CORRUPT )" 참조.

이 이외의 InnoDB 테이블의 문제점들의 경우는 덤프 및 적재
이 이외의 복잡한 형태의 장애에 대해서는, (아주 심한 경우가 아니라면)데이터베이스 전체를 덤프하고 다시 적재하는 것으로 해결될 수 있다. 하지만, 가장 최근의 백업에 Binary log Replay (재 실행)해주는 것보다 빠를지는 상황을 적절히 판단해서 결정하는 것이 좋을 듯 하다.


이래도 저래도 안 되는 경우에는(대표적으로 InnoDB의 시스템 테이블 스페이스가 손상된 경우) 아래 URL의 도구를 참조하는 것도 도움이 될 수 있을 듯 하다.
(사용해 본 경험이 없어서, 얼마나 작동할지는 잘 모르겠다.)

 

반응형
반응형
백업
MySQL 데이터를 백업하는 방법은 크게 물리적 백업과 논리적 백업이 있다. 

1. 물리적 백업
 - 물리적 백업은 MySQL DB의 물리 파일을 백업하는 것이다.
 - 장점
  + 물리적 백업은 속도가 빠르며 작업이 단순하다.
 - 단점
  + InnoDB의 물리적 파일은 상응하는 논리 백업에 비해 상당히 크다.
  + 데이터 복구시에 문제가 발생할 소지가 있으면 문제발생시 원인파악 및 해결이 어렵다.

2. 논리적 백업
 - 논리적 백업은 mysqldump 혹은 기타 툴을 이용해서 SQL문을 갖는 텍스트 파일을 생성하는 것이다.
 - 장점
  + 논리적 백업은 데이터를 검토할 수 있다.
  + 복원작업이 수월하며, 물리적 백업에 비해 복원시 데이터 손상을 막아주며, 문제 발생시 원인 파악및 해결하기가 수월하다. 
 - 단점
  + 백업/복원시 시스템 리소스를 더 많이 소모한다. (물리적 백업은 파일 copy만 하면 되니까!!!)
  + 부동 소수점 데이터의 백업&복원시 데이터 정확성을 잃게 될 수 있다.

3. mysqldump 사용법
 $ mysqldump -u[userId] -p[password] --all-databases > dump.sql  // 서버에 있는 모든 것의 논리 백업 생성
 $ mysqldump -u[userId] -p[password] --databases [DB명] > dump.sql // 특정 데이터베이스만의 논리 백업 생성
 $ mysqldump -u[userId] -p[password] [DB명] [테이블명]

 
- 기타 옵션
   -A, --all-databases : 모든 DB 덤프
   -B, --databases : 특정 DB를 덤프

   --opt : 버퍼링을 비확성화 하고, 많은 데이터를 덤프에 있는 소량의 SQL구문에 기록해 더효율적으로 동작하다록 한다.
   --allow-keywords, --quote-names : 예약어를 사용하는 테이블을 덤프하고 복원할 수 있게 한다.
   --lock-alltables : 전역적으로 일관된 백업을 만들도록 "FLUSH TABLES WITH READ LOCK"을 사용한다. 
   --tab : "SELECT INTO OUTFILE"로 파일을 덤프하여, 덤프 및 복원 속도가 매우 빠르다.
   -d, --no-data :  데이터는 제외하고 스키마만 덤프
   -t, --no-create-info : 스키마는 제외하고 

4. dump 파일 복원 방법
 - mysql -u [userId] -p [password] [DB명] < dump.sql
 - mysql 접속한 후 아래의 명령 실행
     mysql> source dump.sql

 

출처 : http://dimdim.tistory.com/entry/MySQL-%EB%B0%B1%EC%97%85-%EB%B0%8F-%EB%B3%B5%EA%B5%AC 


 

반응형
반응형

php에서는 copy함수를 이용하여 간단하게 파일을 복사하거나 unlink(또는 delete)함수로 파일을 삭제할 수 있습니다. 이 두 함수는 복사, 삭제에 성공할 경우 true를, 실패하면 오류 코드 메시지를 표시하므로 함수 앞에 @를 붙여 보안 유효성을 높여 주도록 합니다.

bool copy ( string $source , string $dest [, resource $context ] ) (PHP 4, PHP 5)

 copy(원본 파일명, 복사 파일명);
 unlink(삭제 파일명);

대상 파일이 이미 존재하면 덮어 쓰는 점에 주의가 필요합니다. 다음은 파일 복사 예제입니다.

예제 (ex #1

 <?php
 
// test.php파일을 복사본 test.php.bak로 만듭니다.
 
$oldfile 'test.php'
// 원본파일
 
$newfile 'test.php.bak'
// 복사파일

 // 실제 존재하는 파일인지 체크...
 
if(file_exists($oldfile
)) {
      if(!
copy($oldfile$newfile
)) {
            echo 
"파일 복사 실패"
;
      } else if(
file_exists($newfile
)) {
            echo 
"파일 복사 성공"
;
      }
 }
 
?>


다음은 파일 이동 예제입니다.

예제 (ex #2

 <?php
 
// test.php파일을 test.txt로 만듭니다.
 
$oldfile 'test.php'
// 원본파일
 
$newfile 'test.txt'
// 복사파일

 // 실제 존재하는 파일인지 체크...
 
if(file_exists($oldfile
)) {
      if(!
copy($oldfile$newfile
)) {
            echo 
"파일 복사에 실패하였습니다."
;
      } else if(
file_exists($newfile
)) {
            
// 복사에 성공하면 원본 파일을 삭제합니다.
            
if(!@unlink($oldfile
)){
                 if(@
unlink($newfile
)){
                      echo 
"파일이동에 실패하였습니다."
;
                 }
            }
      }
 }
 
?>


단순히 파일이름만 변경 원할 경우 rename함수를 이용하면 됩니다. 이 함수는 파일(또는 폴더)의 이름을 변경합니다. 성공하면 true를, 실패하면 false를 반환합니다.

bool
rename ( string $oldname , string $newname [, resource $context ] ) (PHP 4, PHP 5)

예제 (ex #3

 <?php
 
// dir1 폴더를 dir2폴더로 이름을 변경합니다.
 
if(rename("dir1","dir2"
)){
     echo 
"이름 변경 성공"
;
 }

 
// file1.php을 file2.php로 이름을 변경합니다.
 
if(rename("file1.php","file2.php"
)){
     echo 
"이름 변경 성공"
;
 }
 
?>


단순히 copy, unlink함수를 이용하지 않고, fopen함수로 표현이 가능합니다. 다음이 그 좋은 예입니다.

예제 (ex #4

 <?php
 
// test.php파일을 복사본 test.php.bak로 만듭니다.
 
$oldfile 'test.php'
// 원본파일
 
$newfile 'test.php.bak'
// 복사파일

 
if(file_exists($oldfile
)) {
      
$data file_get_contents($oldfile
);
      
$fp fopen($newfile'w+'
);
      if(
is_resource($fp
)){
            
fputs($fp$data
);
      }
      
fclose($fp
);
 }
 
?>


예제 (ex #5

 <?php
 
// test.php파일을 복사본 test.php.bak로 만듭니다.
 
$oldfile 'test.php'
// 원본파일
 
$newfile 'test.php.bak'
// 복사파일

 
if(file_exists($oldfile
)) {
     
$fold fopen($oldfile,'r'
); 
     if(
is_resource($fold
)){
            
$fnew fopen($newfile,'w+'
); 
            
$len stream_copy_to_stream($fold,$fnew
); 
            
fclose($fold
); 
            
fclose($fnew
); 
     }
 }
 
?>

 

 

출처 : http://blog.habonyphp.com/62#.VS3Qm2ccS70

 

반응형

'웹프로그래밍 > PHP' 카테고리의 다른 글

PHP에서 csv로 저장시 연락처 0 삭제 방지  (0) 2015.10.23
정규식 정리  (0) 2015.06.14
PHP + jQuery AJAX Upload  (0) 2015.04.10
PHP XML CDATA Parsing  (0) 2015.04.10
PHP DOMDocument getting Attribute of Tag  (0) 2015.04.10

+ Recent posts