Search Results for '프로그래밍/프로그램 팁 관련'


249 posts related to '프로그래밍/프로그램 팁 관련'

  1. 2021/01/08 비쥬얼스튜디오코드/VSCode/Visual Studio Code - 필수 익스텐션 설지
  2. 2020/12/18 시놀로지 - Synology NAS - admin 비밀번호 초기화 방법 - 간단
  3. 2020/12/02 유튜브 동영상 모바일 반응형 처리 스크립트
  4. 2020/12/02 날짜의 요일 구하기
  5. 2020/08/24 워드프레스 - Installation failed: 워드프레스 컨텐츠 디렉토리(wp-content)를 확인할 수 없습니다.
  6. 2020/08/12 안드로이드 ADB 비행기모드 On/Off
  7. 2020/06/26 텔레그램 봇 생성 방법
  8. 2019/12/10 제주 산간지방 우편번호 정리
  9. 2019/11/11 ADB를 통해 USB 테 더링을 활성화 3
  10. 2019/10/30 화이트 도메인 스팸 차단 리스트 / 도메인 설정
  11. 2019/10/30 정규표현식 제목에 특수문자 정리하는 정규식
  12. 2019/04/01 페이지 접속시 자동으로 한번만 새로고침 하기
  13. 2019/04/01 동영상 사이트 주소 정규식
  14. 2019/03/25 홈페이지 쇼핑몰 최적화 방법
  15. 2019/03/22 php코드의 에러를 알려주는 사이트
  16. 2019/03/22 검색엔진최적화(seo) 필수 메타태그
  17. 2019/03/22 if, else 를 줄이는 방법
  18. 2019/02/19 스토어팜 찜하기 링크 주소
  19. 2018/10/08 그누보드 영카트 서브도메인 접속 방법
  20. 2018/10/01 2차 도메인 서브도메인 .htaccess 처리 하기
  21. 2018/09/27 데이터의 크기
  22. 2018/09/27 2017-07이나 2017-7을 정규식으로 표현할 경우
  23. 2018/09/27 기본 정규식 이해
  24. 2018/08/13 그누보드 조건에 맞게 출력하기 - 모바일,관리자,PC,메인
  25. 2018/08/03 파일질라 새로 설치시 기존 환경설정, 개인설정 이전 방법
  26. 2018/08/03 화이트 도메인, 실시간 스팸 차단 리스트(메일 보내기 허용)
  27. 2018/08/03 SEO 사이트맵 제작 프로그램
  28. 2018/08/03 도메인 변경 및 http 를 https 로 이동하는 방법
  29. 2018/08/03 네이버 클로버 tts
  30. 2018/07/25 PHP session expires 헤더의 비밀!
01. Material Theme
IntelliJ에서도 가장 인기 있던 Material Theme가 VSCode에도 있습니다.

02. Material icon theme
Visual Studio Code 에서 직관적인 아이콘으로 변경됩니다.

03. Prettier
VScode에서는 2가지의 Formatter가 가장 많이 사용되는데 2가지가 있습니다.
Prettier가 코드를 강제적으로 변경을 시킨다면 Beautify는 좀더 자유롭게 놔두는 편입니다.
Prettier가 짜증 날 수도 있습니다.

04. bracket pair colorizer
Bracket Pair Colorizer 는 코드에서 사용되는 괄호를 짝을 맞추어 다르게 해주어 직관적으로 괄호의 범위를 알 수 있도록 도와주는 확장 도구이다. 

05. Indent-rainbow
이 확장은 텍스트 앞의 들여 쓰기를 각 단계에서 4 가지 색상으로 번갈아 표시합니다.

06. Auto rename tag 
태그의 이름을 바꾸면 쌍을 이루는 닫힘 태그의 이름이 자동으로 바뀝니다.

07. CSS PEEK
css를 html 에서 금방 찾을수 있도록 도와줌 , ctrl 키를 누른채 클릭하면 css파일로 이동됨

08. HTML CSS SUPPORT
html 에서 css의 자동완성을 이용할 수 있다

09. LIVE SERVER
css, html 을 수정해 저장하면 Live로 변경되는것을 확인 할 수 있다.

10. PHP Intelephense
문서, 작업 영역, 기본 제공 생성자, 메서드 및 함수에 대한 자세한 서명 도움 오류 허용 구문 분석기를 통해 열린 파일에 대한 여러 구문 분석 오류 진단 및 자동 정렬해준다
Shift + Alt + F (Windows), Shift + Option + F (MAC)

기타 : Kite
AI기반 코드 자동 완성 툴 Kite 는 VS Code에서 빠르고 똑똑하게 코딩할 수 있게 도와주는 AI를 기반으로한 무료 코드 자동 완성 '툴' 입니다.
2021/01/08 12:23 2021/01/08 12:23
시놀로지 나스 admin 비밀번호를 잊어버린경우 초기화가 가능하다.

사용자 삽입 이미지

위 Reset (이라는 텍스트가 보인다 ) 약 3초 정도 신호음이 1번 울릴때까지 눌러준다 삐 소리가 나면 바로 빼준다.

이후 다시 시놀로지 로그인 페이지를 열고 아이디 admin 비밀번호 공백으로 두고 로그인 한다 . 이후 새 관리자 비밀번호를 넣으면 끝 !
2020/12/18 11:41 2020/12/18 11:41
view.skin.php / item.form.skin.php 등  뷰 파일에서 처리 


<script type="text/javascript">
      $(window).resize(function(){resizeYoutube();});
      $(function(){resizeYoutube();});
      function resizeYoutube(){ $("iframe").each(function(){ if( /^https?:\/\/www.youtube.com\/embed\//g.test($(this).attr("src")) ){ $(this).css("width","100%"); $(this).css("height",Math.ceil( parseInt($(this).css("width")) * 480 / 854 ) + "px");} }); }
</script>


스크립트 추가
2020/12/02 15:55 2020/12/02 15:55
 # 자바스립트(JS)
var week = ['일', '월', '화', '수', '목', '금', '토'];
var dayOfWeek = week[new Date('2016-07-28').getDay()];
return dayOfWeek;
new Date('2016-07-28').getDay(); // 요일 별 인덱스 번호를 반환.
# PHP
$week = array("일","월","화","수","목","금","토"); 
echo ($week [date('w', strtotime($day))]);
date('w', strtotime($day)); // 요일 별 인덱스 번호를 반환.
2020/12/02 15:35 2020/12/02 15:35
Installation failed: 워드프레스 컨텐츠 디렉토리(wp-content)를 확인할 수 없습니다.

위 오류는 퍼미션 문제입니다.


root 폴더에 wp-config.php
파일을 수정하면 
require_once(ABSPATH . 'wp-settings.php'); 


아래


if(is_admin()) {
    add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
    define( 'FS_CHMOD_DIR', 0751 );
}


추가
2020/08/24 14:38 2020/08/24 14:38
adb shell settings put global airplane_mode_on 1
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE
adb shell settings put global airplane_mode_on 0
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE
adb shell settings put global airplane_mode_on 1; am broadcast -a android.intent.action.AIRPLANE_MODE —ez state true

// 최초진입시
adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS;
adb shell input keyevent 19;
adb shell input keyevent 23;
adb shell input keyevent 22;
adb shell input keyevent 23;

// 끄기 // 켜기
adb shell input keyevent 23;input keyevent 22;input keyevent 23;

// 아래는 shell input keyevent 번호값
0 -->  "KEYCODE_UNKNOWN" 
1 -->  "KEYCODE_MENU" 
2 -->  "KEYCODE_SOFT_RIGHT" 
3 -->  "KEYCODE_HOME" 
4 -->  "KEYCODE_BACK" 
5 -->  "KEYCODE_CALL" 
6 -->  "KEYCODE_ENDCALL" 
7 -->  "KEYCODE_0" 
8 -->  "KEYCODE_1" 
9 -->  "KEYCODE_2" 
10 -->  "KEYCODE_3" 
11 -->  "KEYCODE_4" 
12 -->  "KEYCODE_5" 
13 -->  "KEYCODE_6" 
14 -->  "KEYCODE_7" 
15 -->  "KEYCODE_8" 
16 -->  "KEYCODE_9" 
17 -->  "KEYCODE_STAR" 
18 -->  "KEYCODE_POUND" 
19 -->  "KEYCODE_DPAD_UP" 
20 -->  "KEYCODE_DPAD_DOWN" 
21 -->  "KEYCODE_DPAD_LEFT" 
22 -->  "KEYCODE_DPAD_RIGHT" 
23 -->  "KEYCODE_DPAD_CENTER" 
24 -->  "KEYCODE_VOLUME_UP" 
25 -->  "KEYCODE_VOLUME_DOWN" 
26 -->  "KEYCODE_POWER" 
27 -->  "KEYCODE_CAMERA" 
28 -->  "KEYCODE_CLEAR" 
29 -->  "KEYCODE_A" 
30 -->  "KEYCODE_B" 
31 -->  "KEYCODE_C" 
32 -->  "KEYCODE_D" 
33 -->  "KEYCODE_E" 
34 -->  "KEYCODE_F" 
35 -->  "KEYCODE_G" 
36 -->  "KEYCODE_H" 
37 -->  "KEYCODE_I" 
38 -->  "KEYCODE_J" 
39 -->  "KEYCODE_K" 
40 -->  "KEYCODE_L" 
41 -->  "KEYCODE_M" 
42 -->  "KEYCODE_N" 
43 -->  "KEYCODE_O" 
44 -->  "KEYCODE_P" 
45 -->  "KEYCODE_Q" 
46 -->  "KEYCODE_R" 
47 -->  "KEYCODE_S" 
48 -->  "KEYCODE_T" 
49 -->  "KEYCODE_U" 
50 -->  "KEYCODE_V" 
51 -->  "KEYCODE_W" 
52 -->  "KEYCODE_X" 
53 -->  "KEYCODE_Y" 
54 -->  "KEYCODE_Z" 
55 -->  "KEYCODE_COMMA" 
56 -->  "KEYCODE_PERIOD" 
57 -->  "KEYCODE_ALT_LEFT" 
58 -->  "KEYCODE_ALT_RIGHT" 
59 -->  "KEYCODE_SHIFT_LEFT" 
60 -->  "KEYCODE_SHIFT_RIGHT" 
61 -->  "KEYCODE_TAB" 
62 -->  "KEYCODE_SPACE" 
63 -->  "KEYCODE_SYM" 
64 -->  "KEYCODE_EXPLORER" 
65 -->  "KEYCODE_ENVELOPE" 
66 -->  "KEYCODE_ENTER" 
67 -->  "KEYCODE_DEL" 
68 -->  "KEYCODE_GRAVE" 
69 -->  "KEYCODE_MINUS" 
70 -->  "KEYCODE_EQUALS" 
71 -->  "KEYCODE_LEFT_BRACKET" 
72 -->  "KEYCODE_RIGHT_BRACKET" 
73 -->  "KEYCODE_BACKSLASH" 
74 -->  "KEYCODE_SEMICOLON" 
75 -->  "KEYCODE_APOSTROPHE" 
76 -->  "KEYCODE_SLASH" 
77 -->  "KEYCODE_AT" 
78 -->  "KEYCODE_NUM" 
79 -->  "KEYCODE_HEADSETHOOK" 
80 -->  "KEYCODE_FOCUS" 
81 -->  "KEYCODE_PLUS" 
82 -->  "KEYCODE_MENU" 
83 -->  "KEYCODE_NOTIFICATION" 
84 -->  "KEYCODE_SEARCH" 
85 -->  "TAG_LAST_KEYCODE"
adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS & adb shell input keyevent 19 & adb shell input keyevent 23 & adb shell input keyevent 4

비행기모드 설정
adb shell settings put global airplane_mode_on 1
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true

비행기모드 해제
adb shell settings put global airplane_mode_on 0
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false

다른방법(토글)
adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS
adb shell input keyevent 23
adb shell input keyevent KEYCODE_TAB
adb shell input keyevent 23
adb shell input keyevent 3
2020/08/12 09:45 2020/08/12 09:45
텔레그램 메신저는 여러 플랫폼에서 사용가능한 메신저 입니다.

가장큰 장점으로 API가 공개되어 다른 프로그램 과 연동이 가능하고  정부에서 대화 내용등을 요청 하더라도 협조를 안한다는점

지금부터 봇을 만드는 방법을 약식 정리 합니다.

01. 채팅창에 /newbot 명령어를 입력하고 전송버튼을 눌러주세요.


03. 텔레그램 봇 이름을 입력합니다.
이름이 _bot 으로 끝나야함

04. 다시 이름을 입력 합니다. 통상 위 이름_bot 과 동일하게 입력 합니다.


05. API 토큰 크드 확인

Done! Congratulations on your new bot. You will find it at t.me/y_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
961*675**:AAFRNiz-ZIsEvyA58n1Vfa***
Keep your token secure and store it safely, it can be used by anyone to control your bot.
For a description of the Bot API, see this page: https://core.telegram.org/bots/api

위 내용 메모장 복사

06. t.me/y_bot  부분을 클릭하고 [ 시작] 을 눌러 봇 채팅을 활성화 시킨후 브라우저를 열고 아래 주소 호출 

https://api.telegram.org/bot토큰 값/getUpdates
예) : https://api.telegram.org/bot961*675**:AAFRNiz-ZIsEvyA58n1Vfa***/getUpdates


위 주소를 호출하면 정보를 확인할수 있음

참고로 채널을 열어서 채널에 봇을 추가하고 여러명이서 봇 메세지를 함께 받을수 있다.








2020/06/26 11:11 2020/06/26 11:11
제주
63000 ~ 63644 
인천광역시 중구 무의동
22386 ~ 22388
인천광역시 강화군
23004 ~ 23010
인천광역시 옹진군
23100 ~ 23116
인천광역시 옹진군 
23124 ~ 23136
충청남도 당진시 석문면 난지도리
31708
충청남도 태안군 근흥면 가의도리
32133
충청남도 보령시 오천면 녹도리
33411
경상북도 울릉군
40200 ~ 40240
경상남도 사천시 신수동
52571
경상남도 통영시 용남면
53031 ~ 53033
경상남도 통영시 
53089 ~ 53104
전라북도 군산시 옥도면 개야도리
54000
전라북도 부안군
56347 ~ 56349
전라남도 영광군, 목포시
57068 ~ 58762
전라남도 신안군 임자면
58800 ~ 58806
전라남도 신안군 증도면 병풍리
58809
전라남도 신안군 압해읍
58817 ~ 58818
전라남도 신안군 압해읍 가란리
58826
전라남도 신안군
58828 ~ 58866
전라남도 진도군 조도면
58953 ~ 58958
전라남도 완도군 
59137 ~ 59145
전라남도 완도군
59149 ~ 59170
전라남도 보성군 벌교읍 장도리
59421
전라남도 고흥군 도양읍 시산리
59563
전라남도 고흥군 봉래면 사양리
59568
전라남도 여수시 화정면 여자리
59650
전라남도 여수시 경호동
59766
전라남도 여수시 화정면 개도리
59781
전라남도 여수시 화정면 개도리
59783
전라남도 여수시
59785 ~59790
2019/12/10 23:49 2019/12/10 23:49
ConnectivityManager.setUsbTethering(boolean enable)은 Android 4.3에서 호출 됩니다.
adb shell su -c service call connectivity 34 i32 1 USB 테 더링을 켭니다.
adb shell su -c service call connectivity 34 i32 0 USB 테 더링을 끕니다.
다른 Android 버전의 경우 Android 버전 당 34다음 setUsbTethering 아래처럼 바꿔 사용할수 있습니다.
4.4.4: 34
5.1.0: 30
6.0.1: 30
7.0.0: 33
2019/11/11 15:56 2019/11/11 15:56
https://spam.kisa.or.kr/white/sub1.do

이메일서버 등록하면 끝 !
2019/10/30 15:14 2019/10/30 15:14
제목에 특수문자 정리하는 정규식
[한글, 숫자, 영어, <>/,.%&-"' ] 딱 이문자들만 허용!
더 추가하고 싶은 문자 있으면 [대괄호] 안에 추가 하면 됩니다.
php 예제 
$subject = preg_replace("|([^가-힣0-9a-zA-Z\s<>\(\)\[\]\"\'.,/&%:-])|u", " ", $subject);
2019/10/30 15:08 2019/10/30 15:08
<?php
if (!$_COOKIE['reload']) {
 setcookie("reload",time()+60*60*24); // 하루동안만..
 echo "<meta http-equiv='Refresh' CONTENT='0'; URL=".$_SERVER['PHP_SELF']." />";
 }
?>
페이지 접속시 자동으로 한번만 새로고침 리로드 하기
2019/04/01 11:29 2019/04/01 11:29
카카오팟 영상 정규식
 
https?:\/\/|www\.)play-tv.kakao.com\/channel\/[0-9]+\/(livelink|cliplink)\/([A-Za-z0-9]+
 
트위터 정규식
 
http(s)?:\/\/(.*\.)?twitter\.com\/(\w+)\/?status\/(\w+)
 
비메오 정규식
 
https?:\/\/|www\.)vimeo.com\/([A-Za-z0-9]+
 
데일리모션 정규식
 
https?:\/\/www\.)dailymotion.com\/video\/([A-Za-z0-9]+
 
유튜브 정규식
 
https?:\/\/www.youtube.com\/watch\?v=([a-zA-Z0-9\-_]+
 
인스타그램 정규식
 
https?:\/\/www\.)?instagram\.com(\/p\/\w+\/?
 
2019/04/01 11:27 2019/04/01 11:27
PageSpeed Tools > Insights 

웹페이지를 자동으로 분석해서 이미지, 자바스크립트, CSS 등 최적화된 파일을 제공합니다.
https://developers.google.com/speed/pagespeed/insights/?hl=ko

DevTools 에서 사용하면 편합니다. 
Online JavaScript/CSS/HTML Compressor 
JavaScript, CSS, HTML 압축
http://refresh-sf.com
http://gnustudy.com/bbs/board.php?bo_table=sitelink&wr_id=26
2019/03/25 09:43 2019/03/25 09:43
http://phpcodechecker.com/

2019/03/22 11:35 2019/03/22 11:35
소용없다! 필요있다 라는 주제로 인터넷에서 돌고 돌아지만 지금은 인정할수 밖에 없는 메타태그 인것 같습니다
검색엔진최적화 seo에 첫걸음인것 같습니다

기본적으로 많이 사용되는 메타태그

1 <meta name="robots" content="index, follow"> 
: 검색 로봇이 문서와 링크를 모두 긁어 가라는 뜻
2 <meta name="description" content="사이트 설명글"> 
: 내 사이트 콘텐츠 설명글!
3 <meta name="keywords" content="태그">  
: 내 사이트에 주요 콘텐츠! 예) 맛집,게임
4 <meta name="Author" content="작성자">
: 사이트 운영자 이름,명칭
5 <meta name="title" content=""> 
: 사이트 타이틀 이름
2019/03/22 11:34 2019/03/22 11:34
if (isset($sql)) {
    // $sql가 있을 경우
    $sql1 = $sql;
} else {
    // $sql가 없을 경우
    $sql1 = "no";
}

 소스가 일반적입니다. 이렇게 사용하면 대략 5줄을 작성하게되는데

$sql1 = isset($sql) ? $sql : "no";

이런 식으로 5줄을 1줄로 줄일 수 있습니다.
2019/03/22 11:30 2019/03/22 11:30
http://storefarm.naver.com/main/callback/login?__targetUrl=%2Fmain%2Fsubscription%2Fsubscribe%2F386131&__method=POST&isAdultCheck=false

위 빨간색 부분만 변경해서 사용하면 됩니다.


2019/02/19 15:06 2019/02/19 15:06
그누루트의 shop.config.php 파일에 제일 하단에 추가

//도메인이 www.sigongschool.com 이면 쇼핑몰 루트 인덱스가 작동하도록... 
if($_SERVER['HTTP_HOST'] == "www.sigongschool.com") { 
$default['de_root_index_use'] = 1; 
}
2018/10/08 12:47 2018/10/08 12:47
.htaccess 파일로 계정내에 rewrite를 설정하시면 원하시는 2차도메인으로 연결이 가능합니다.
 
subdomain.my.com  2차도메인을 subdomain 명의 디렉토리로 연결하실 경우 www폴더 하위에 .htaccess파일을 아래와 같이 설정해보시기 바랍니다.
 
==================.htaccess 파일 예=========================
RewriteEngine On
RewriteBase /
RewriteCond $1 !^(subdomain)/
RewriteCond %{HTTP_HOST} ^subdomain\.my\.com [NC]
RewriteRule ^(.*) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.my\.com(.*) /$1/$2 [L]
===========================================================
2018/10/01 13:58 2018/10/01 13:58
8 bit (비트) 1 byte 
1024 byte (바이트) 1 kilobyte 
1024 kilobyte (킬로바이트) 1 megabyte 
1024 megabyte (메가바이트) 1 gigabyte 
1024 gigabyte  (기가바이트) 1 terabyte 
2018/09/27 19:05 2018/09/27 19:05
2017-07을 정규식으로 표현하면  아래와 같이 됩니다.
[0-9]{4}-[0-9]{2}
이때 [ ]사이에 있는 0-9는 0부터 9를 포함한 0,1,2,3,4,5,6,7,8,9중 하나의 문자가 있어야 한다는 뜻이고 
{수}는 그러한 앞의 조건에 맞는 문자가 그 수만큼 연속으로 있어야 한다는 뜻입니다.
그럼 
2017-7을 정규식으로 표현하면
[0-9]{4}-[0-9]{1,2}  
위와 같이 됩니다.
{1,2}는 1~2개 만큼 연속으로 있어야 한다는 뜻입니다. 
2018/09/27 19:02 2018/09/27 19:02
기본 정규식 이해
  정규식(Regular Expression)은 문자열의 패턴을 기술하는 일종의 미니 언어로, 텍스트 처리 작업이 많은 웹 프로그래밍에서는 필수적인 기능이라고 할 수 있다. 루비에서는 정규식 리터럴이 신택스 레벨에서 지원되기 때문에, 정규식의 사용이 무척 편리하다. 루비에서 정규식은 다음과 같은 방법으로 선언된다.
 >> /Perl/
 => /Perl/
 
 정규식은 /.../ 의 형태로 작성되는데, 위의 정규식은 Perl이라는 텍스트를 인식하는 패턴이다. 정규식을 사용하면, 주어진 텍스트의 일부를 치환하는 것이 가능하다.
 >> “Perl is cool. I like Perl!”.sub(/Perl/, “Ruby”)
 => “Ruby is cool. I like Perl!”
 
위의 코드에서 문자열의 sub 메소드는 원래 문자열에서 /Perl/패턴에 일치하는 첫 번째 부분을 Ruby로 치환해 주고 있다. 문자열에서는 패턴이 일치하는 모든 부분을 Ruby로 치환하고 싶다면, gsub 메소드를 사용한다.
 >> “Perl is cool. I like Perl!”.gsub(/Perl/.”Ruby”)
 => “Ruby is cool. I like Ruby!”
 
하나의 정해진 문자열이 아니라 특정 패턴을 인식하는 정규식을 작성하는 것도 가능하다. 다음은 Perl 문자열과 PHP 문자열을 동시에 매칭하는 정규식이다.
 >> /P(erl|HP)/
 => /P(erl|HP)/
 
정규식에서 | 는 or의 의미를 가진다.
 >> “Perl is cool. I like PHP!”.gsub(/P(erl|HP)/, “Ruby”)
 => “Ruby is cool. I like Ruby!”
 
특정 문자 그룹을 매칭하고 싶다면 [...] 패턴을 사용할 수 있다.
 >> “innvation”.sub(/[aeiou]/, “*”)
 => “*nnvotaion”
 >> “innovation”.gsub(/[aeiou]/, “*”)
 => “*nn*v*t**n”
 
[...] 패턴에는 문자의 범위를 사용할 수도 있다.
 >> “The password is 9428.“.gsub(/[0-9]/,”*”)
 => “The password is ****.”
 
[...] 안에서 처 번째로 사용된 문자가 ^라면, 역패턴이 매칭된다.
 >> “I love Seoul!”.gsub(/[^a-zA-Z]/,”*”)
 => “I*love*Seoul*”
 
 
. 는 모든 문자를 매칭하는 패턴이다. . 하나의 문자를 매칭하게 된다.
 >> “Ruby is cool.”.sub(/.ool/,”fun”)
 => “Ruby is fun”
 
특정 패턴이 반복되는 것을 매칭할 때는 + or * 이 사용된다. + 는 특정 패턴이 1회 이상 반복하는 것을 매칭하고, * 는 특정 패턴이 0회 이상 반복하는 것을 매칭한다.
 >> “Ruby is coooool.”.sub(/o+/, “oo”)
 => “Ruby is cool.”
 
만약 하나 이상의 문자가 반복되는 패턴을 인식하려면, 괄호를 사용할 수 있다.
 >> “1001001001888”.sub(/(001)+/, “”)
 => “1888”
 
앞서 설명한 정규식을 조합해서 사용할 수 있다.
 >> “The password is 9428.”.sub(/[0-9]+/,”*”)
 => “The password is *.”
 
정규식이 텍스트의 치환에만 사용되는 것은 아니다. 주어진 문자열이 특정 패턴을 가지고 있는지 아닌지를 테스트하는 것도 정규식의 중요한 용도 중의 하나이다.
>> “A year has 365 days.” =- /[0-9]+/
=> 11
 위에서는 문자열의 =- 연산자를 이용하여 해당 문자열에 숫자가 있는지 없는지를 테스트하고 있다. =- 연산자는 문자열의 몇 번째 인덱스에서 패턴매칭이 일어났는지를 리턴한다. 만약 패턴 매칭에 실패하면 nil이 리턴된다. 루비에서는 nil과 false외의 모든 값은 true로 인식되기 때문에, =- 연산자는 조건문에서 사용될 수 있다.
 
>> if “A year has 365 days.” =- /[0-9]+/
>>      puts “There is a number in the starting!”
>> end
There is a number in the starting!
=> nil
 
=- 연산자로 문자열의 패턴을 인식하는 경우, 괄호를 사용하여 패턴이 매칭된 부분을 읽어들일 수 있다.
  >> if “A year has 365 days.” =- /[0-9]+/
  >>      put $1
  >> end
  365
  => nil
 
 위에서는 /[0-9]+/ 패턴에 매칭된 문자열이 $1 변수에 저장되고 있다. 만약 패턴에서 두 개 이상의 괄호가 사용된다면, 각 괄호에 의해 매칭된 문자열이 차례로 $1, $2, $3, … 변수에 저장된다.
 
  >> if “210.163.138.100” =- /([0-9]+)\. ([0-9]+)\. ([0-9]+)\. ([0-9]+)/
  >>     puts $1
  >>     puts $2
  >>     puts $3
  >>     puts $4
  >> end
 210
 163
 138
 100
 => nil
 
위의 정규식에서 \. 패턴은 실제의 . 문자를 매칭하고 있다.
2018/09/27 19:02 2018/09/27 19:02
1. 멤버만 출력

<?php if ($is_member) { ?>
내용
<?php } ?>


2. 관리자만 출력

<?php if ($is_admin) { ?>
내용
<?php } ?>

3. 모바일 내용과 PC 내용 분리

<?php if(G5_IS_MOBILE) {?>
모바일 내용
<?php } ?>
<?php if(!G5_IS_MOBILE) {?>
피씨내용
<?php } ?>

<? if($is_mobile){?> 
모바일 일때 
<? }else{ ?> 
피시일때 
<? } ?>





2018/08/13 13:23 2018/08/13 13:23
파일질라를 삭제하고 새로 설치 하게 될 경우 기존의 연결 된 FTP의 정보들을 백업해서
새로 설치한 파일질라에 그대로 가져와서 사용할 수 있습니다.
백업 방법은 아주 간단합니다. 아래와 같이 파일질라에서 파일->내보내기 메뉴를 이용해서 가능합니다.

1.
사용자 삽입 이미지

2. 
사용자 삽입 이미지

3. 
사용자 삽입 이미지

복원 방법도 마찬가지로 파일질라의 파일->가져오기 메뉴를 이용해서 백업한 설정 정보를 가져올 수 있습니다.


4. 
사용자 삽입 이미지
5.
사용자 삽입 이미지

위와 같이 기존 설정을 내보내기, 가져오기 기능을 사용하면
이전에 사용하던 FTP의 정보와 개인설정까지 모두 그대로 사용할 수 있습니다.
2018/08/03 19:21 2018/08/03 19:21
https://spam.kisa.or.kr/integration/main.do

화이트 도메인설정하고
실시간 스팸 차단 리스트
메일 보내기 허용할때 다음 사이트에서 설정해주시면 됩니다.
2018/08/03 11:46 2018/08/03 11:46
사용자 삽입 이미지


보통 사이트맵 제작을 위해 웹서비스를 이용하시는데요
설치형으로 간단하게 filter 기능 및 spider 기능이 사용가능한 프로그램 소개합니다.
http://g-mapper.co.uk/sitemap-generator.aspx 
 
에서 설치받아 사용하시면 됩니다.
2018/08/03 11:20 2018/08/03 11:20
header 를 이용하는 방식과 javascript 를 이용하는 방법을 안내합니다.
방식은 PHP 페이지 최상단에서 위치해야 정상 작동하며, 강력하게 작동합니다.
javascript는 페이지 상단이 아니어도 작동하지만, javascript를 제한한 경우에 작동하지 않습니다.
1. header location 이용
<?php
if($_SERVER['HTTPS'] != "on"){
    $ssl_port = "";  //  443 포트를 사용하지 않는경우에 이용할 포트번호 입력
    if ($ssl_port == "") { 
        $redirect_URL = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    } else {
        $redirect_URL = "https://".$_SERVER['HTTP_HOST'].":".$ssl_port.$_SERVER['REQUEST_URI'];
    }
    header("Location: ".$redirect_URL);
}
?>
2. javascript 이용
<?php
if($_SERVER['HTTPS'] != "on"){
    $ssl_port = "";  //  443 포트를 사용하지 않는경우에 이용할 포트번호 입력
    if ($ssl_port == "") { 
        $redirect_URL = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    } else {
        $redirect_URL = "https://".$_SERVER['HTTP_HOST'].":".$ssl_port.$_SERVER['REQUEST_URI'];
    }
    echo "<script type=\"text/javascript\">\n";
    echo "<!--\n";
    //echo "location.href = '". $redirect_URL ."';\n";  // 현재창으로 전송
    echo "parent.location.href='". $redirect_URL ."';\n";  // 부모창으로 전송
    echo "//-->\n";
    echo "</script>\n";
}
?>
2018/08/03 11:08 2018/08/03 11:08
<?php
$client_id = "";
$client_secret = "";
$txt = $_GET['txt'];
if(!$txt) $txt = '텍스트 파라미터를 입력 바랍니다.';
$encText = urlencode($txt);
$postvars = "speaker=mijin&speed=0&text=".$encText;
$url = "https://openapi.naver.com/v1/voice/tts.bin";
$is_post = true;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, $is_post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars);
$headers = array();
$headers[] = "X-Naver-Client-Id: ".$client_id;
$headers[] = "X-Naver-Client-Secret: ".$client_secret;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);
if($status_code == 200) {
  header("Content-type: audio/mpeg");
  header("Content-Transfer-Encoding: binary");
  header('Pragma: no-cache');
  header('Expires: 0');
  echo $response;
} else {
  echo "Error 내용:".$response;
}



문제는 1일 1만자 입니다.
2018/08/03 11:06 2018/08/03 11:06
PHP 세션에선 다음과 같은 상황을 방지하기 위해, 웹페이지의 캐시 설정을 제어할 수 있는데요. 
1. 회원정보 수정 페이지에서 로그아웃. 
2. 뒤로가기시 로그아웃된 상태임에도 불구하고 브라우저의 캐시된 회원정보 수정 페이지가 보여지는 문제. 
이를 해결 하기 위해 세션 페이지는 캐시를 남기지 않도록, `session_cache_limiter('nocache');` 형태의 설정을 사용하죠. 
이때 브라우저의 HTTP header 에는 다음 헤더가 추가됩니다. 
``` 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
``` 
만료일 헤더 값은 현재 날짜보다 이전 날짜로만 지정하면 되는데... 왜 1981년일까요? 
그 비밀은 해당 코드를 작성한 개발자인 Sascha Schumann 의 생일이 1981년 11월 19일 이라고 하네요.  
PHP 에도 이런 재밌는 사실이 숨겨져 있네요. :) 
--- 
# 참고 
http://stackoverflow.com/questions/8194481/why-is-expires-1981 
https://github.com/php/php-src/blob/df845a9155f0dbe7041f66e00f6625fa77c6521d/ext/session/session.c#L1140 
http://php.net/manual/en/function.session-cache-limiter.php 
--- 
# 추가 팁 - Laravel 에서 웹페이지 캐시를 비활성화하는 코드 
https://gist.github.com/ibin79/fe46acfd29571d3b627322430cb2e830
2018/07/25 21:33 2018/07/25 21:33