// 에드센스
반응형

 

반응형

'프로그램 > 일거리' 카테고리의 다른 글

카페24등 쇼핑몰에 오늘출발 표기하는 방법  (2) 2024.09.25
반응형
  1. 어떤 물류 시스템을 사용하는지 확인

셀메이트,이지어드민,사방넷 등등... 혹은 카페24 자체 물류

2. 재고전산 프로그램을 api로 연동 혹은 excel,csv등을 자동으로 처리하는 매크로 제작

3. 기본 호스팅 프로그램 ( 월 5천 ~ 무제한 3.3만 ) 대여

4. 호스팅 프로그램에 1 or 2 에서 작업한 내용물을 기입

5. 4에서 제작한 iframe을 원 카페24 소스코드에 기입, 여기서 post Message등을 써야함( 높이계산 )

타 도메인에선 높이계산 하라면 도메인이 안맞아서 크로스 도메인 이슈를 포스트 메시지로 해결

6. 실시간 혹은 30분 단위로 오늘출발 표시 가능

이런 과정이 복잡하다면 관련 업체를 사용하는 것도 가능.

카페24 내의 이런 시스템을 넣고 싶으시면 쪽지나 메일 주세요~

반응형

'프로그램 > 일거리' 카테고리의 다른 글

간판 견적 계산기  (0) 2024.10.07
반응형
<?
exit;
include "./inc/attr_db.php";

class MultiCurl{
    public $maxConn = 10; # 최대 요청 수
    public $activeConn = 0; # 현재 처리 중인 요청 수

    function data($urls=[],$method=''){ # method 부분으로 response값 넘김
        $header = ['User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36'];
        $ch = curl_init();                                 //curl 초기화
        curl_setopt($ch, CURLOPT_HEADER, 1); // 요청 헤더 설정
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    //요청 결과를 문자열로 반환
        $str = curl_exec($ch);
        curl_close($ch);

        preg_match('/set-cookie: ably-anonymous-token=(.*?);/',$str,$cookie);
        $cookie = $cookie[1];

        $header = [
            'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36',
            'X-Anonymous-Token: '.$cookie,
        ];

        $mh = curl_multi_init();
        $options = [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
            CURLOPT_HTTPHEADER => $header
        ];

        for ($i = 0; $i < $this->maxConn; $i++) {
            if (!empty($urls)) {
                $url = array_shift($urls);
                $ch = curl_init($url);
                curl_setopt_array($ch, $options);
                curl_multi_add_handle($mh, $ch);
                $this->activeConn++;
            }
        }

        do {
            while (curl_multi_exec($mh, $running) === CURLM_CALL_MULTI_PERFORM) ;

            while ($info = curl_multi_info_read($mh)) {
                $ch = $info['handle'];
                $response = curl_multi_getcontent($ch);

                if( $method ){
                    $this->${'method'}($response);
                }

                curl_multi_remove_handle($mh, $ch);
                curl_close($ch);
                $this->activeConn--;

                if (!empty($urls)) {
                    $url = array_shift($urls);
                    $ch = curl_init($url);
                    curl_setopt_array($ch, $options);
                    curl_multi_add_handle($mh, $ch);
                    $this->activeConn++;
                }
            }
        } while ($running || !empty($urls));

        curl_multi_close($mh);
    }

    function ably_soldout($data){ # 에이블리 품절
        $res = json_decode($data,1);
        $is_sale = $res['goods']['is_soldout']?'N':'Y';
        echo $res['goods']['sno'].'_'.$is_sale.'<br>';
        ob_end_flush();
        flush();
    }
}

$a = time();

$sql = "SELECT
            a.index_no,
            a.goods_idx,
            a.view_url,
            a.gcode,
            b.gname
        FROM
            inshop_market_goods AS a JOIN
            shop_goods AS b ON a.goods_idx = b.index_no
        WHERE b.isopen_jp = '2' AND
            b.isshow_jp = 'Y' AND
            a.view_url != '' AND
            a.view_url REGEXP '.*a-bly.*'
        LIMIT
            0,500
";
$arr_row = $sona_db->query($sql)->fetch_all(MYSQLI_ASSOC);
$urls = [];
foreach($arr_row as $row){
    $urls[] = 'https://api.a-bly.com/webview/goods/'.$row['gcode'].'/';
}

$MultiCurl = new MultiCurl();
$MultiCurl->data($urls,'ably_soldout');

echo time()-$a;
?>
반응형

'프로그램 > PHP' 카테고리의 다른 글

python db tunnel  (0) 2023.10.17
crontab error log 따로 지정  (1) 2023.10.10
에이블리 리뷰 가져오기  (0) 2023.10.05
php 암호화 복호화  (0) 2023.09.26
php 자동응답기 만들기  (0) 2023.02.08
반응형
        <fieldset class="c-fieldset">
            <legend>이미지</legend>
            <table class="c-table w100 border">
                <tr>
                    <th width='100'>목록</th>
                    <td>
                        <div style="display:flex; justify-content: space-between; align-items: center;">
                            <input type="file" name="list_img" id="list_img" accept="image/*" class="preview-img" onchange="product.preview();">
                            <? if ($imgs['list_img']) { ?>
                                <img onclick="product.zoom()" src="<?= $config['imgPath'] ?>/product/<?= $data['index_no'] ?>/<?= $imgs['list_img'] ?>" style="width:100px; max-height:100px; object-fit:contain;">
                            <? } ?>
                        </div>
                    </td>
                </tr>
                <? for ($i = 1; $i <= 6; $i++) { ?>
                    <tr>
                        <th width='100'>상세<?= $i ?></th>
                        <td>
                            <input type="file" name="img<?= $i ?>" id="img<?= $i ?>" accept="image/*" class="preview-img" onchange="product.preview();">
                            <img onclick="product.zoom()" src="<?= $config['imgPath'] ?>/product/<?= $data['index_no'] ?>/<?= $imgs['img' . $i] ?>" style="width:100px; max-height:100px; object-fit:contain;">
                        </td>
                    </tr>
                <? } ?>
            </table>
            <style>
                #dropArea {
                    height: 200px;
                    border: 2px dashed #ccc;
                    text-align: center;
                    line-height: 200px;
                }

                #dropArea.on {
                    border-color: red;
                }
            </style>
            <br>
            <div id="dropArea">이미지 드래그 업로드</div>
            <script>
                // 드래그 앤 드롭 이벤트 처리
                var dropArea = document.getElementById('dropArea');

                dropArea.addEventListener('dragover', function(e) {
                    e.preventDefault();
                    dropArea.classList.add('on');
                });
                dropArea.addEventListener('dragleave', function(e) {
                    e.preventDefault();
                    dropArea.classList.remove('on');
                });
                dropArea.addEventListener('drop', function(e) {
                    e.preventDefault();

                    // 파일명 기준으로 정렬
                    var files = Array.from(e.dataTransfer.files).sort((a,b)=>a.name.localeCompare(b.name));
                    var i = 0;
                    for (file of files) {
                        var newFileList = new DataTransfer();
                        newFileList.items.add(file);
                        if (i == 0) {
                            var id = "list_img";
                        } else {
                            var id = "img" + i;
                        }
                        document.getElementById(id).files = newFileList.files;

                        i++;
                    }

                    product.preview();
                });
            </script>

        </fieldset>
반응형
반응형
    <div id="countdown">03.00</div>
    <div id="txt"></div>

    <script>
        (async () => {
            let time = 3;
            await countDown(time);
            console.log('test');

            // 화면에 표시하는 함수를 정의합니다.
            function countDown(time) {
                return new Promise(async (resolve, reject) => {
                    var len = time * 100 + 1;
                    for (let i = 0; i <= len; i++) {
                        time -= 0.01;

                        // 남은 시간이 0보다 작으면 0으로 설정합니다.
                        time = Math.max(time, 0);

                        var seconds = time.toFixed(2);
                        var formattedTime = seconds.padStart(5, '0');

                        document.getElementById('countdown').innerText = formattedTime;

                        await new Promise((succ) => setTimeout(succ, 10));
                    }

                    resolve();
                });
            }
        })();
반응형
반응형

https://gahyun-web-diary.tistory.com/152

반응형
반응형

엑셀은 다양한 함수를 제공하여 데이터 처리와 분석을 용이하게 할 수 있는 강력한 도구입니다. 아래에는 엑셀에서 유용한 몇 가지 함수를 추천해 드리겠습니다:

  1. SUM (합계):
    • SUM: 범위 내 숫자의 합계를 계산합니다.
    • 예시: =SUM(A1:A5)는 A1부터 A5까지의 값의 합계를 반환합니다.
  2. AVERAGE (평균):
    • AVERAGE: 범위 내 숫자의 평균을 계산합니다.
    • 예시: =AVERAGE(B1:B10)는 B1부터 B10까지의 값의 평균을 반환합니다.
  3. MAX 및 MIN (최대 및 최소):
    • MAX: 범위 내 숫자 중 가장 큰 값을 반환합니다.
    • MIN: 범위 내 숫자 중 가장 작은 값을 반환합니다.
    • 예시: =MAX(C1:C8)는 C1부터 C8까지의 값 중 최대값을 반환합니다.
  4. IF (조건문):
    • IF: 지정한 조건을 평가하고 참 또는 거짓에 따라 다른 결과를 반환합니다.
    • 예시: =IF(D1>10, "크다", "작거나 같다")는 D1의 값이 10보다 크면 "크다"를, 그렇지 않으면 "작거나 같다"를 반환합니다.
  5. VLOOKUP (수직 검색):
    • VLOOKUP: 지정된 값을 검색하고 해당 값과 연관된 다른 열의 값을 반환합니다.
    • 예시: =VLOOKUP(E1, A1:B10, 2, FALSE)는 E1의 값과 일치하는 A1부터 B10 범위의 값을 찾고, 해당 행의 두 번째 열 값을 반환합니다.
  6. CONCATENATE (문자열 연결):
    • CONCATENATE: 여러 문자열을 결합하여 하나의 문자열을 생성합니다.
    • 예시: =CONCATENATE(F1, " - ", G1)는 F1과 G1의 값을 하이픈으로 구분하여 결합합니다.
  7. COUNT (개수 세기):
    • COUNT: 지정된 범위 내의 숫자나 값의 개수를 세어 반환합니다.
    • 예시: =COUNT(H1:H20)는 H1부터 H20까지의 값 중 숫자나 텍스트 값의 개수를 반환합니다.
  8. IFERROR (에러 처리):
    • IFERROR: 다른 함수의 결과가 에러일 때 대체값을 반환합니다.
    • 예시: =IFERROR(1/0, "에러 발생")는 1을 0으로 나누려고 할 때 에러가 발생하면 "에러 발생"을 반환합니다.
반응형
반응형

import sshtunnel
import pymysql

# SSH 서버의 주소와 인증 정보
ssh_host = ''
ssh_port = ''
ssh_username = ''
ssh_password = ''

# MySQL 서버의 주소와 인증 정보
mysql_host = ''
mysql_port = ''
mysql_username = ''
mysql_password = ''

# SSH 터널링을 설정
tunnel = sshtunnel.SSHTunnelForwarder(
    (ssh_host, ssh_port),
    ssh_username=ssh_username,
    ssh_password=ssh_password,
    remote_bind_address=(mysql_host, mysql_port),
)
tunnel.start()

# MySQL에 연결
conn = pymysql.connect(
    host='127.0.0.1',
    user=mysql_username,
    password=mysql_password,
    db='',
    port=tunnel.local_bind_port,
    cursorclass=pymysql.cursors.DictCursor
)

cursor = conn.cursor()

반응형

'프로그램 > PHP' 카테고리의 다른 글

php multi curl  (0) 2024.05.30
crontab error log 따로 지정  (1) 2023.10.10
에이블리 리뷰 가져오기  (0) 2023.10.05
php 암호화 복호화  (0) 2023.09.26
php 자동응답기 만들기  (0) 2023.02.08
반응형
// 오류 발생 시 오류 로그에 기록
function logError($message) {
    global $errorLogFile;
    $timestamp = date('Y-m-d H:i:s');
    $logMessage = "[$timestamp] $message\n";
    file_put_contents($errorLogFile, $logMessage, FILE_APPEND | LOCK_EX);
}

// PHP 오류 핸들러 설정
set_error_handler(function ($errno, $errstr, $errfile, $errline) {
    $error_message = "Error ($errno): $errstr in $errfile on line $errline";
    logError($error_message);
    // 원래 오류 핸들러로 돌아가도록 true 반환
    return false;
});

// 예외 발생 시 오류 로그에 기록
set_exception_handler(function ($e) {
    $error_message = "Exception: " . $e->getMessage() . " in " . $e->getFile() . " on line " . $e->getLine();
    logError($error_message);
});
반응형

'프로그램 > PHP' 카테고리의 다른 글

php multi curl  (0) 2024.05.30
python db tunnel  (0) 2023.10.17
에이블리 리뷰 가져오기  (0) 2023.10.05
php 암호화 복호화  (0) 2023.09.26
php 자동응답기 만들기  (0) 2023.02.08
반응형
<?
exit;
$a = get('https://m.a-bly.com',1);

//print_r($a);

preg_match('/set-cookie: ably-anonymous-token=(.*?);/',$a,$tmp);
$key = $tmp[1];

print_r($a);

function get($url,$header='',$key=''){

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36');

    if( $key ){
        $customHeaders = array(
            'cookie: ably-jwt-token='.$key.';',
        );
        curl_setopt($ch,CURLOPT_HTTPHEADER,$customHeaders);
    }

    if( $header){
        curl_setopt($ch, CURLOPT_HEADER, 1);
    }

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

?>
반응형

'프로그램 > PHP' 카테고리의 다른 글

python db tunnel  (0) 2023.10.17
crontab error log 따로 지정  (1) 2023.10.10
php 암호화 복호화  (0) 2023.09.26
php 자동응답기 만들기  (0) 2023.02.08
php 소스 암호화 사이트  (0) 2014.12.01

+ Recent posts