서버의 크론탭에서 유튭의 영상에 대한 음원 다운을 20분마다 15개, 15분 마다 15개를 받도록 2개의 다운을 동시에 돌렸더니 3천개쯤 받고서 유튜브 ip제한이 걸림. 그래서 클라이언트에서 수동으로 저장하는 방법을 찾아 실행함. 가장 알려진 youtube-dl.exe의 윈도우 버전은 낮아서 cmd에서 찾지를 못함. 프로그램식으로 만든것도 있지만 목적과 맞지 않아 비슷한 yt-dlp을 사용함. 1. yt-dlp.exe을 설치(라고 쓰고 다운로드) 2. bat파일 생성 ////내용 setlocal enabledelayedexpansion REM 코드 번호와 URL을 가진 파일 이름 설정 REM 매개변수인 %1이 있다면 그것으로 REM 아니면 기본값인 input.txt로 함. REM 코드번호 tab url ..
FTP 구성이 모호해서 쉘로 직접 다운받거나 올려야 하는 경우 참고용. 1. cmd 실행 후 윈도우의 putty 설치 폴더로 이동. 2. 파일 다운로드 방법 - 명령 : pscp [리눅스계정]@[리눅스 서버 IP]:[서버의 다운 파일 경로] [PC의 다운 경로] - EX : pscp user_id@127.0.0.1:etc/temp/test.zip d:\temp\download.zip 2. 파일 업로드 방법 - 명령 : pscp [PC의 업로드 파일 경로] [리눅스계정]@[리눅스 서버 IP]:[서버의 다운 경로] - EX : pscp d:\temp\download.zip user_id@127.0.0.1:etc/temp/test.zip ----------------------------------------..
다양한 방법으로 DB의 내용을 수정할수 있다. 코드짜기가 번거러워서 My-SQL에서 바로 수정할때 사용 REPLACE(필드이름, '찾을내용', '바꿀내용') 함수 사용. SELECT * from 테이블 이름 where 필드이름="조건 값" => 내가 수정하려는 항목만 조회 되는지 확인 UPDATE 테이블 이름 SET 필드이름 = REPLACE(필드이름, '찾을 내용', '바꿀 내용') WHERE 필드이름="조건 값" => 변환 ex : UPDATE tbl_DATA subject = REPLACE(subject, '_', ' ') WHERE code="20" tbl_DATA 테이블에서 code필드의 값이 20인 모든 제목의 언더바를 공백으로 바꾸어라.
Windows server에서 apm을 설치하여 운영하다가, 웹으로 접속시 네트워크로 연결해둔 NAS에 파일쓰기가 안되는경우가 있다. cmd에서 php파일을 직접 호출한 경우에는 문제가 없이 네트워크 드라이브에 파일이 생성되기에 머리가 아프다. 웹 검색을 해보면 윈서버는 리눅스처럼 권한을 주는 부분이 없다고 한다. 다양한 해결방법중 아래 2가지를 적용하여 해결했다. 1. 서비스에 돌아가고 있는 아파치 로그온 속성이 있는데, 관리자 계정을 입력해준다. 2. 그래도 문제가 해결되지 않는다면, 네트워크 드라이브를 연결할때 "다른 자격증명을 사용하여 연결" 옵션을 체크하여 관리자 권한을 넣어줘야 한다. 다음에도 비슷한 문제가 발생한다면 이 두가지를 해보고, 그래도 안되면 다른 방법을 찾아야겠다.
DB 입력전에 바이트를 계산해야하는 경우가 발생하기도 함. var str = $("#ctrl_name").val(); //입력 컨트롤의 문자열을 가져옴. var byte = 0; for (var i=0; i 127) ? byte += 2 : byte++ ; // //(str.charCodeAt(i) > 127) ? byte += 3 : byte++ ; //utf-8 이면 이 구문으로 계산해야 함. } if( byte > 20) { alert(" 20byte 보다 큼"); return false; } 형태로 하면됨. 한글, 영어 상관없이 길이만 구한다면 str.length 의 값만 하면 됨.
DB에 레코드를 삽입하거나 업데이트 할때 원하는 시간이나 형태를 만들어 입력함. 하지만 일자의 경우 자주 사용하는 형태가 Y-m-d H:i:s 로 거의 변함이 없기에... 속성을 TimeStamp로 지정함. 그럼 기본값에 INSERT-TimeStamp 항목이 보이는데 이 항목을 선택하면 레코드가 추가될때 시간을 자동으로 입력해둔다. 만약 업데이트에도 시간을 자동으로 업데이트 하고 싶다면, 그 아래 보이는 UPDATE-TimeStamp를 체크해두면 된다. 이럼 업데이트가 있을때 시간을 자동으로 업데이트 해준다. 업데이트의 경우 주의해야 하는데, 값을 덮어써버리기 때문에 레코드가 처음 생성된 일시를 알수 없다. 또한 소스에는 업데이트할때 시간을 입력하지 않는데, 바뀌기 때문에 오류라고 생각하기 쉬울 수 있다.
윈도우에서 putty를 설치하면(아래 경로) pscp.exe 파일이 생기는데 이 파일을 이용함. C:\Program Files\iPuTTY\pscp.exe 업로드 방법 pscp d:\temp2\* test_admin@127.0.0.1:/home/testdir/log/ S/W 업로드주소 계정@주소 :다음 서버내 저장 경로 P/W 물어보면 입력 다운로드 방법(예시 로그 받기) pscp test_admin@127.0.0.1:/home/testdir/log/test_log_20220106.log d:\temp2 S/W 계정@주소 :다음 다운받으려는 파일 경로와 파일 다운로드 경로 P/W 물어보면 입력 로그파일의 겨우 여러개를 받아야 한다면 "test_log_202201*" 처럼 *을 활용하여 다운 가능함. 참고..
DB에서 초성 조회 관련 검색을 하면 가장 좋은 방법은 초성을 분리하여 따로 작성해두고 그 테이블 또는 필드만 검색을 하는게 가장 좋다고 한다. 레코드를 생성할때 부터 초성을 분리하여 생성해두는게... 당장 그럴수 없기에 강제로 조회하는 방법 중 가장 빠르게 떠오르는 방법은 아래 2가지 이다.. 1. 검색해야하는 테이블에서 해당 필드의 모든 값을 가져와서 초성만 분리하여 비교하거나, 2. 각초성을 포함한 범위의 글자 사이인지를 조회한다. 등등... 이중 2번 방법을 사용한다면 아래 조건을 신경쓰면 된다. 1. if문 또는 switch 등르로 각 초성일때를 판단하여 분기한다. 2. 만약 'ㄱ'이라면 찾고자 하는 위치가 '가' 부터 '깋' 까지의 글자인지 조회하는 쿼리를 추가한다. 3. 쌍자음의 경우 단음에..
PHP에서 넘겨받은 값이 한글 초성으로만 구성되어 있는지 확인 하는 방법. utf-8로 해야하며 euc-kr는 잘안됨. 주의 필요 1. 정규표현식 활용 preg_match('/^[ㄱ-ㅎ]+/', $text); 에서 리턴값을 확인하면 한글 초성으로만 구성되어 있는지 확인할수 있음. 공백을 포함하고 싶다면 공백만 표현식에 추가해두면 됨. 2. 글자의 코드값을 활용하는 방법 검색중에 발견한 주소로 utf-8상태의 글자를 코드값으로 분리하는 코드와 그 분리된 값을 비교하여 초성인지를 분별하는 방식. 정규식보다는 정확하지 않을까 하는 생각이 듬. UTF-8 한글 초성 추출 (PHP) - 제타위키 (zetawiki.com) UTF-8 한글 초성 추출 (PHP) - 제타위키 다음 문자열 포함... zetawiki.com
특정값을 포함하는 레코드의 수를 확인할때 사용하는 소스는 아래와 같음. $result_sub = mysql_query("SELECT count(*) FROM table_name WHERE findid='findvalue' ........ $row_sub = mysql_fetch_array($result_sub); $row_sub[0]의 값이 0인지 1인지 더 큰수인지를 확인하면 count가 끝나는 것인데 적용되지 않는다. 가장먼저 확인해야 하는 부분이 쿼리상에 오타가 있는지 확인해야한다. 작은따옴표와 큰따옴표의 수가 맞지 않는다던지 테이블이름에 오타가 있다던지 등등 그럼에도 문제가 발견되지 않는다면 php 파일의 언어셋을 확인해야 한다. 서버는 utf8인데 문서가 euc-kr이라면 언어셋이 맞지않아 DB..
기존에 작성했던 resource.php에서는 토큰에 대한 인증값 리턴이 성공과 실패 둘뿐임. 성공하면 id를 포함하여 리턴하도록 수정함. $token = $server->getAccessTokenData(OAuth2\Request::createFromGlobals()); //토큰의 정보를 가져옴 echo json_encode(array('success' => true, 'message' => 'You accessed my APIs!', 'userid' => $token['user_id'])); //리턴할때 토큰의 정보를 넣어서 전송
막상 쓰려고 하면 생각이 나지 않은.....
A테이블의 특정 데이터를 B테이블로 복사하기 위한 방법 * INSERT INTO 복사될테이블명 SELECT * FROM 복사할테이블명 WHERE 조건 ex) INSERT INTO table_b SELECT * FROM table_a WHERE id = 'ttt' * 필드의 일부만 복사하는 경우 INSERT INTO 복사될테이블명(컬럼1,2,3...) SELECT 컬럼1,2,3.... FROM 복사할테이블명 WHERE 조건 ex) INSERT INTO table_b(b_id, b_name, b_birth) SELECT a_id, a_name, a_birth FROM table_a WHERE id='ttt' 위쪽은 테이블 구조가 같아야 동작가능하고, 아래는 구조가 다르더라도 몇개만 필요할 경우 사용
기본적으론 nodejs에서는 PHP의 curl 호출을 사용할 수 없다. (외부 모듈 설치로는 가능하다는 글들이 있다.) NUGU Play 개발중 OAuth2.0 인증 개발 중 nodejs에서 curl 처럼 호출해야하는 경우가 발생하여 작업하였다. curl 처럼 사용할 수있는 몇가지 중 추가 모듈 설치 없이 사용하가능한 "request"를 활용하는 방법이다. var request = require('request'); //request 기능 var headers = { //수신처에 따라 필요한 경우 선언 'Content-Type': "application/x-www-form-urlencoded" //NUGU에서는 이값이 필요함. } //api get options. var options = { url : ..
bshaffer v1.11.1 로 테스트 중 pdo(=mysql)로 사용자 조회를 하면 실패한다. pod.php 파일의 checkPassword()에서 사용자가 입력한 값과 DB에서 조회한 값을 비교하는데, 함수에서는 암호화를 하고 테스트중인 페이지에서는 그냥 넘겨서 그런듯 하다. 추후 확장성을 위하여 리턴을 바로 하지 않고 두번 비교하도록 해서 해결함. 아래는 그 결과. $b_ch = $user['password'] == $this->hashPassword($password); if( $b_ch == true){// 기존처럼 비교하여 같다면 return $b_ch; //true 리턴 }else{ //같지 않다면 return $user['password'] == $password;//암호화 하지 않은 값..
서버를 1도 모르는데 기존 서버에 OAuth2.0 서버를 추가하면서 남기는 글 1. composer를 이용하여 서버에 OAuth2.0 설치 ( 쉘명령 : composer.phar require bshaffer/oauth2-server-php "^1.10" ) composer는 하위단의 파일의 쉽게 포함하여 사용할수 있도록 해주는 거라고 함. 2. https://bshaffer.github.io/oauth2-server-php-docs/cookbook/ 내용을 전적으로 따라함. 2-1 관련 DB를 모두 추가함. 2-2 기본값이 mysql인것인지 아니면 소스 내부에서 서버에 설치된 DB를 탐지하여 동작하는지는 모르지만, mysql에 추가해둔것을 잘 찾음. 3. cookbook 내용에 따라 server.php..
DATE_ADD 기능을 활용하여 조회함. EX : SELECT * FROM `테이블 이름` WHERE 필드명='특정값' and date필드 > DATE_ADD(now(), INTERVAL -1 HOUR) 풀이 : 현재 시간에서 1시간 이전까지의 값을 조회 HOUR는 다양한값으로 조정 가능 MICROSECOND : 마이크로초 SECOND : 초 MINUTE : 분, HOUR : 시, DAY : 일, WEEK : 주, MONTH : 월, QUARTER : 분기, YEAR : 년
1. Applications 이동. 2. 원하는 라이브 추가. 3. Stream Files 탭 이동. 4. Add 버튼을 눌러 추가함. - HLS, RTMP 등 다양한 형태가 지원가능하고 함. 5. 목록에서 아래와 같은 화살표 버튼을 찾아 추가. 5-1. MediaCaster Type을 지정함. - HLS는 applehls를 지정. - RTMP는 mpegtstcp로 보임. - 윈엠프 방송같은 경우는 shoutcast를 지정. 6. Incoming Streams 탭으로 이동 7. Status가 Active로 잘 되어 있는지 확인한다. 7-1. watting이라면 Refresh를 한번 눌러 새로고침을 해봄. 7-2. 그래도 watting이라면 5-1에서 타입 지정이 정확하게 되었나 확인 필요. 7-3. 그래..
*외부에서 접근 안된다면 해당 아이피(또는 대역) 추가하기 1. mysql이 설치된 /var/lib/mysql/ 로 이동 2. use mysql; 로 mysql 사용 시작 3. select host, user, password from user; 로 정보 보기( 버전에 따라 password 가 이름이 다른 경우가 있으니 이 경우에는 삭제) 4. 특정 IP만 접근 허용 설정 grant all privileges on *.* to ‘root’@‘192.168.56.101’ identified by ‘root의 패스워드’; 5. 특정 IP 대역만 접근 허용 설정 grant all privileges on *.* to ‘root’@‘192.168.%’ identified by ‘root의 패스워드’; 6. 다시..
- Total
- Today
- Yesterday
- php
- 크레인
- 42096
- putty
- Lego
- Windows
- 42009
- 스챔
- MySQL
- oauth2.0
- 스마트싱스
- 초성검색
- 75893
- 스피드챔피언
- 하트레이크
- 8109
- 31088
- 911
- 테크닉
- 운반트럭
- 70804
- 42098
- 레고
- 크롤러
- DB
- 페라리
- 포르쉐
- 42064
- 아이스크림
- 31073
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |