• linux command よく使うやつ (centos)

    コマンドは書き換えてからコピーできる 特定の文字列 […]

    コマンドは書き換えてからコピーできる

    特定の文字列含むファイルを検索するコマンド

    特定の文字列含むファイルを拡張子指定で検索するコマンド

    ディレクトリ(strage)を除外して特定の文字列(admin)含むファイルを拡張子指定で検索するコマンド

    記号を含む文字を検索する

    サブディレクトリ以下の特定ファイルを一括して削除する

    ファイル名で指定ディレクトリ以下を検索

    日付で検索する (10日以内に編集)

    ディレクトリを除外して日付で検索する (3日以内に編集)

    ディレクトリを除外して時間で検索する (2時間以内に編集)

    更新日順に表示する

    更新日順にディレクトリを除外して表示する

    • find -type f はファイルのみを対象とする
    • find -print0 は検出されたファイルのフルパスをNULLキャラクターで分割して出力する
    • xargs -0 もしくは xargs --null 入力ストリームの分割はNULLキャラクターを用いる
     
    特定の日に更新したファイルを見つける
     find . -type f -name "*.php" -newermt "2020-09-25"
    

    一括変更 (今いるディレクトリの )

    ファイル移動 、名前変更

    コピー A to B

    viエディタに行番号

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <input class="tarminal-copy" type="text" value="echo &quot;set number&quot; >> ~/.exrc">
    <input class="tarminal-copy" type="text" value="echo &quot;set number&quot; >> ~/.exrc">
    
    

    全てのphpが755に、htmlは644になる

    ローカルのファイルをリモートにアップロード
    # -a オプションでアスキー転送 (デフォルトはバイナリ転送)

    FTPserver : ftp.exzample.daa.jp
    FTP account : daa.jp-user

  • github 鍵ペアを作ってsshでつなぐまで

    アカウントを作って、メール認証まで済んでいるとこと […]

    アカウントを作って、メール認証まで済んでいるとことから

    鍵を置くディレクトリに移動する

    鍵ペアを作る

    コマンドを実行するとパスフレーズの入力を求められます。
    ここは何も入力せずそのままエンターキーで進みます。

    Linuxの場合はパーミッションを変える必要がある

    同じ場所に config ファイルを作る

    ファイルの中身 ↓

     Host github github.com
     HostName github.com
     IdentityFile ~/.ssh/id_rsa_github
     User git 
    

    GitHubに公開鍵を追加する
    1.GitHubにログインし、右のユーザーアイコンから「Settings」へ移動します。
    2.左のメニューの「SSH and GPG keys」へ移動します。
    3.緑の「New SSH key」ボタンをクリックします。
    4.Titleには秘密鍵を持つPCが判別できる名前を
    5.Keyには先ほど作った鍵ペアの公開鍵を中身をコピーして貼り付けます。

    GitHubとのSSH接続を確認する
    下記コマンドで接続を確認します

    うまくいくとこうなる

    Hi ginzo-proton! You've successfully authenticated, but GitHub does not provide shell access.
    
  • 公開Webサイトから画像を抽出,相対パスに従って保存,zipでダウンロード

    webページの画像を一括でダウンロードできます 画 […]

    webページの画像を一括でダウンロードできます

    画像はページの相対パスに従ってディレクトリが作成され,その中に保存されます

    画像一括ダウンロード

  • 読み込み時に実行されるscriptの実行順

    jQuery(function ($) { // […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    jQuery(function ($) {
    // その他の処理
    $(window).on("load", function() {
    // 画像等全て読み終えた時の処理
    var h = $('.color-v img').height();
    console.log(h);
    });
    });
    $(function () {
    //DOM構築後実行 画像等は待たない
    $('header').append("$(fnction)");
    });
    $(document).ready(function () {
    //DOM構築後実行 画像等は待たない
    $('header').append("ready");
    });
    document.addEventListener('DOMContentLoaded', function () {
    //最初の HTML 文書の読み込みと解析が完了したとき
    $('header').append("addEventListener");
    });
    window.addEventListener('load', function() {
    $('header').append("window addEventListener");
    });
    // 特定の要素を読み込んでから実行
    const MAX_RETRY_COUNT = 10; //待ち時間上限
    var retry_counter = 0;
    var set_interval_id = setInterval(findTargetElement, 1000);
    function findTargetElement() {
    retry_counter++;
    // 要素がMAXリトライ値になっても見つからない場合、インターバルを削除
    if(retry_counter > MAX_RETRY_COUNT ) {
    clearInterval(set_interval_id);
    }
    // 読み込みを待つ要素名
    var diff_container_elements = document.getElementsByClassName('new_pl_9');
    if(diff_container_elements.length > 0) {
    clearInterval(set_interval_id);
    // ここにやりたい処理を書く
    }
    }
    </code>
    <code> jQuery(function ($) { // その他の処理 $(window).on("load", function() { // 画像等全て読み終えた時の処理 var h = $('.color-v img').height(); console.log(h); }); }); $(function () { //DOM構築後実行 画像等は待たない $('header').append("$(fnction)"); }); $(document).ready(function () { //DOM構築後実行 画像等は待たない $('header').append("ready"); }); document.addEventListener('DOMContentLoaded', function () { //最初の HTML 文書の読み込みと解析が完了したとき $('header').append("addEventListener"); }); window.addEventListener('load', function() { $('header').append("window addEventListener"); }); // 特定の要素を読み込んでから実行 const MAX_RETRY_COUNT = 10; //待ち時間上限 var retry_counter = 0; var set_interval_id = setInterval(findTargetElement, 1000); function findTargetElement() { retry_counter++; // 要素がMAXリトライ値になっても見つからない場合、インターバルを削除 if(retry_counter > MAX_RETRY_COUNT ) { clearInterval(set_interval_id); } // 読み込みを待つ要素名 var diff_container_elements = document.getElementsByClassName('new_pl_9'); if(diff_container_elements.length > 0) { clearInterval(set_interval_id); // ここにやりたい処理を書く } } </code>
     
    
    
    
      jQuery(function ($) {
      // その他の処理
        $(window).on("load", function() {
        // 画像等全て読み終えた時の処理
          var h = $('.color-v img').height();
          console.log(h);
        });
      });
    
        $(function () {
          //DOM構築後実行 画像等は待たない
          $('header').append("$(fnction)");
        });
    
        $(document).ready(function () {
          //DOM構築後実行 画像等は待たない
          $('header').append("ready");
        });
    
        document.addEventListener('DOMContentLoaded', function () {
          //最初の HTML 文書の読み込みと解析が完了したとき
          $('header').append("addEventListener");
        });
    
        window.addEventListener('load', function() {
             $('header').append("window addEventListener");
        });
    
    
    // 特定の要素を読み込んでから実行
      const MAX_RETRY_COUNT = 10;  //待ち時間上限
      var retry_counter = 0;
      var set_interval_id = setInterval(findTargetElement, 1000);
       function findTargetElement() {
          retry_counter++;
          // 要素がMAXリトライ値になっても見つからない場合、インターバルを削除
          if(retry_counter > MAX_RETRY_COUNT ) {
              clearInterval(set_interval_id);
          }
                                                              // 読み込みを待つ要素名
          var diff_container_elements = document.getElementsByClassName('new_pl_9');
          if(diff_container_elements.length > 0) {
              clearInterval(set_interval_id);
              // ここにやりたい処理を書く
    
          }       
       }
    
     
    実行順

    addEventListener

    window addEventListener

    $(fnction)

    ready

    $(window).on

  • MYSQL直前の日曜日は何日か

    SELECT CURDATE() , DATE_F […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    SELECT CURDATE() ,
    DATE_FORMAT(ADDDATE(NOW(), 0), "%w") AS today,
    CASE 0 -- 月曜にしたければ1
    WHEN DATE_FORMAT(ADDDATE(NOW(), 0), "%w") THEN ADDDATE(CURDATE(), 0)
    WHEN DATE_FORMAT(ADDDATE(NOW(), -1), "%w") THEN ADDDATE(CURDATE(), -1)
    WHEN DATE_FORMAT(ADDDATE(NOW(), -2), "%w") THEN ADDDATE(CURDATE(), -2)
    WHEN DATE_FORMAT(ADDDATE(NOW(), -3), "%w") THEN ADDDATE(CURDATE(), -3)
    WHEN DATE_FORMAT(ADDDATE(NOW(), -4), "%w") THEN ADDDATE(CURDATE(), -4)
    WHEN DATE_FORMAT(ADDDATE(NOW(), -5), "%w") THEN ADDDATE(CURDATE(), -5)
    WHEN DATE_FORMAT(ADDDATE(NOW(), -6), "%w") THEN ADDDATE(CURDATE(), -6)
    END AS start_week -- 直前の日曜日
    </code>
    <code> SELECT CURDATE() , DATE_FORMAT(ADDDATE(NOW(), 0), "%w") AS today, CASE 0 -- 月曜にしたければ1 WHEN DATE_FORMAT(ADDDATE(NOW(), 0), "%w") THEN ADDDATE(CURDATE(), 0) WHEN DATE_FORMAT(ADDDATE(NOW(), -1), "%w") THEN ADDDATE(CURDATE(), -1) WHEN DATE_FORMAT(ADDDATE(NOW(), -2), "%w") THEN ADDDATE(CURDATE(), -2) WHEN DATE_FORMAT(ADDDATE(NOW(), -3), "%w") THEN ADDDATE(CURDATE(), -3) WHEN DATE_FORMAT(ADDDATE(NOW(), -4), "%w") THEN ADDDATE(CURDATE(), -4) WHEN DATE_FORMAT(ADDDATE(NOW(), -5), "%w") THEN ADDDATE(CURDATE(), -5) WHEN DATE_FORMAT(ADDDATE(NOW(), -6), "%w") THEN ADDDATE(CURDATE(), -6) END AS start_week -- 直前の日曜日 </code>
    
    
     SELECT CURDATE() , 
     DATE_FORMAT(ADDDATE(NOW(), 0), "%w") AS today,
    CASE 0  -- 月曜にしたければ1
     WHEN DATE_FORMAT(ADDDATE(NOW(), 0), "%w")  THEN ADDDATE(CURDATE(), 0)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -1), "%w") THEN ADDDATE(CURDATE(), -1)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -2), "%w") THEN ADDDATE(CURDATE(), -2)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -3), "%w") THEN ADDDATE(CURDATE(), -3)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -4), "%w") THEN ADDDATE(CURDATE(), -4)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -5), "%w") THEN ADDDATE(CURDATE(), -5)
     WHEN DATE_FORMAT(ADDDATE(NOW(), -6), "%w") THEN ADDDATE(CURDATE(), -6)
    END AS start_week -- 直前の日曜日
    
    
  • wordpress 管理画面が重たい

    $ top ←メモリ使用量 mysql php-f […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code></code>
    <code></code>
    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    $ top ←メモリ使用量
    mysql
    php-fpm ← 複数ある
    mysql&gt; show variables like 'table_definition_cache';
    +------------------------+-------+
    | Variable_name | Value |
    +------------------------+-------+
    | table_definition_cache | 1400 |
    +------------------------+-------+
    mysql&gt; show variables like 'performance_schema';
    +--------------------+-------+
    | Variable_name | Value |
    +--------------------+-------+
    | performance_schema | ON |
    +--------------------+-------+
    # vi /etc/my.cnf
    [mysql.d]
    # 以下を追記
    table_definition_cache = 400
    performance_schema = 0
    #vi /etc/php-fpm.d/www.cnf
    pm = static
    pm.max_children = 2
    pm.max_requests = 500
    # service php-fpm restart
    $ top ←メモリ使用量 mysql php-fpm ← 複数ある mysql&gt; show variables like 'table_definition_cache'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | table_definition_cache | 1400 | +------------------------+-------+ mysql&gt; show variables like 'performance_schema'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | performance_schema | ON | +--------------------+-------+ # vi /etc/my.cnf [mysql.d] # 以下を追記 table_definition_cache = 400 performance_schema = 0 #vi /etc/php-fpm.d/www.cnf pm = static pm.max_children = 2 pm.max_requests = 500 # service php-fpm restart
    $ top   ←メモリ使用量
     mysql
     php-fpm ← 複数ある
    
    mysql&gt; show variables like 'table_definition_cache';
    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | table_definition_cache | 1400  |
    +------------------------+-------+
    
    mysql&gt; show variables like 'performance_schema';
    +--------------------+-------+
    | Variable_name      | Value |
    +--------------------+-------+
    | performance_schema | ON    |
    +--------------------+-------+
    
    # vi /etc/my.cnf
    
    [mysql.d]
    # 以下を追記
    table_definition_cache = 400
    performance_schema = 0
    
    #vi /etc/php-fpm.d/www.cnf
    
    pm = static
    pm.max_children = 2
    pm.max_requests = 500
    
    # service php-fpm restart
    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code></code>
    <code></code>

     

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code></code>
    <code></code>

    https://autovice.jp/articles/104

  • モーダルを閉じさせない、コードを書いて開く、コードで閉じる(Bootstrap)

    $(‘#nameModalCenter’).on( […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    $('#nameModalCenter').on('hide.bs.modal', function (e) {
    // 閉じられる前のイベント、XでCloseとBackDropもこれでキャッチできる
    $('#name_modal_close').click( function() {
    // これは閉じない
    return false;
    jQuery(document).on('click', '#name_modal_close', function() {
    // これは閉じる(というか、閉じてからここに来る)
    return false;
    </code>
    <code> $('#nameModalCenter').on('hide.bs.modal', function (e) { // 閉じられる前のイベント、XでCloseとBackDropもこれでキャッチできる $('#name_modal_close').click( function() { // これは閉じない return false; jQuery(document).on('click', '#name_modal_close', function() { // これは閉じる(というか、閉じてからここに来る) return false; </code>
    
    
      $('#nameModalCenter').on('hide.bs.modal', function (e) {
         // 閉じられる前のイベント、XでCloseとBackDropもこれでキャッチできる
    
      $('#name_modal_close').click( function() {
        // これは閉じない
        return false;
    
      jQuery(document).on('click', '#name_modal_close', function() {
        // これは閉じる(というか、閉じてからここに来る)
        return false;
    
    
    

    jQueryでモーダルを開く,閉じる

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    $('#nameModalCenter').modal();//modalを出す
    $('#nameModalCenter').modal('hide'); //閉じる
    </code>
    <code> $('#nameModalCenter').modal();//modalを出す $('#nameModalCenter').modal('hide'); //閉じる </code>
    
    
     $('#nameModalCenter').modal();//modalを出す
    
     $('#nameModalCenter').modal('hide'); //閉じる
    
    
    
  • ファイルを配列に読み込む

    filename = ‘ファイルのフルパス’ # […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    filename = 'ファイルのフルパス'
    # ファイルを配列に読み込む
    with open(filename, "r", encoding="utf-8") as f:
    lastline = f.readlines()
    #こうすると配列の最後の要素のみ取り出せる
    lastline = f.readlines()[-1]
    filename = 'ファイルのフルパス' # ファイルを配列に読み込む with open(filename, "r", encoding="utf-8") as f: lastline = f.readlines() #こうすると配列の最後の要素のみ取り出せる lastline = f.readlines()[-1]
    filename = 'ファイルのフルパス'
    
    # ファイルを配列に読み込む
    with open(filename, "r", encoding="utf-8") as f:
        lastline = f.readlines()
    
       #こうすると配列の最後の要素のみ取り出せる
        lastline = f.readlines()[-1]
    
    
    
    
    
    
    
    
  • dropboxへファイルアップロード

    【Dropbox】開発用アプリの作成とアクセストー […]

    【Dropbox】開発用アプリの作成とアクセストークンの取得

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    import dropbox
    import os
    dropbox_access_token="ながいアクセストークン"
    # アップロード先のパス,すでにファイルが有ると失敗する
    dropbox_path="/csv/tmp.csv"
    computer_path= r"/var/www/py_873/csv/tmp.csv"
    client = dropbox.Dropbox(dropbox_access_token)
    client.files_upload(open(computer_path, "rb").read(), dropbox_path)
    print("アップロード完了:{}".format(computer_path))
    import dropbox import os dropbox_access_token="ながいアクセストークン" # アップロード先のパス,すでにファイルが有ると失敗する dropbox_path="/csv/tmp.csv" computer_path= r"/var/www/py_873/csv/tmp.csv" client = dropbox.Dropbox(dropbox_access_token) client.files_upload(open(computer_path, "rb").read(), dropbox_path) print("アップロード完了:{}".format(computer_path))
    import dropbox
    import os
    
    
    dropbox_access_token="ながいアクセストークン"
    # アップロード先のパス,すでにファイルが有ると失敗する
    dropbox_path="/csv/tmp.csv"
    computer_path= r"/var/www/py_873/csv/tmp.csv"
    
    client = dropbox.Dropbox(dropbox_access_token)
    
    client.files_upload(open(computer_path, "rb").read(), dropbox_path)
    print("アップロード完了:{}".format(computer_path))
    
    
  • selenium ワンタイムパスワード,崩し文字とかでもログインする

    chrome プロファイル指定して起動–ログインセ […]

    chrome プロファイル指定して起動–ログインセッション保持
    たいていは一度きりなのでクッキーに保存すれば次回からログインしなくていい

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    driver.get(url)
    mail = driver.find_element(By.ID, "login_handle") # 次に進むボタン
    mail.clear()
    mail.send_keys("じぶんのあかうんと") #入力
    element = driver.find_element(By.CSS_SELECTOR, '.ar-button_medium_1i9SB [type="ar-button_medium_1i9SB"]') #複数ある
    element.click()
    # passwordという名前の要素が見つかるまで1秒間待機
    password = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.NAME, "password")))
    password.clear()
    chkbox = driver.find_element_by_name('rememberMe')
    # チェックボックスが非選択の状態を確認
    if not chkbox.is_selected():
    # 非選択の場合はJavaScriptでクリックする
    driver.execute_script("arguments[0].click();", chkbox)
    password.send_keys("じぶんのぱすわーどとか") #パスワード入力
    element = driver.find_element(By.ID, "signInSubmit") # ログインボタン
    element.click() # button click
    #''' ワンタイムパスワードが必要な場合
    # otpCodeという名前の要素が見つかるまで1秒間待機
    otpCode = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.NAME, "otpCode")))
    otpCode.clear()
    saveScreen() # <a href="https://ultimai.org/?p=2276">画面キャプチャの関数呼び出し</a>
    #ワンタイムパスワード入力
    time.sleep(25) # 25s待ってるあいだにワンタイムパスワードを自分で'onetime.txt'にコピペ
    # ファイルを読み込んで一行取得
    with open('./env/onetime.txt') as f:
    for line in f:
    otpCode.send_keys(line) #ワンタイムパスワード入力
    chkbox = driver.find_element_by_name('rememberDevice')
    # チェックボックスが非選択の状態を確認
    if not chkbox.is_selected():
    # 非選択の場合はJavaScriptでクリックする
    driver.execute_script("arguments[0].click();", chkbox)
    element = driver.find_element(By.ID, "auth-signin-button") # ログインボタン
    element.click()
    driver.get(url) mail = driver.find_element(By.ID, "login_handle") # 次に進むボタン mail.clear() mail.send_keys("じぶんのあかうんと") #入力 element = driver.find_element(By.CSS_SELECTOR, '.ar-button_medium_1i9SB [type="ar-button_medium_1i9SB"]') #複数ある element.click() # passwordという名前の要素が見つかるまで1秒間待機 password = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.NAME, "password"))) password.clear() chkbox = driver.find_element_by_name('rememberMe') # チェックボックスが非選択の状態を確認 if not chkbox.is_selected(): # 非選択の場合はJavaScriptでクリックする driver.execute_script("arguments[0].click();", chkbox) password.send_keys("じぶんのぱすわーどとか") #パスワード入力 element = driver.find_element(By.ID, "signInSubmit") # ログインボタン element.click() # button click #''' ワンタイムパスワードが必要な場合 # otpCodeという名前の要素が見つかるまで1秒間待機 otpCode = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.NAME, "otpCode"))) otpCode.clear() saveScreen() # <a href="https://ultimai.org/?p=2276">画面キャプチャの関数呼び出し</a> #ワンタイムパスワード入力 time.sleep(25) # 25s待ってるあいだにワンタイムパスワードを自分で'onetime.txt'にコピペ # ファイルを読み込んで一行取得 with open('./env/onetime.txt') as f: for line in f: otpCode.send_keys(line) #ワンタイムパスワード入力 chkbox = driver.find_element_by_name('rememberDevice') # チェックボックスが非選択の状態を確認 if not chkbox.is_selected(): # 非選択の場合はJavaScriptでクリックする driver.execute_script("arguments[0].click();", chkbox) element = driver.find_element(By.ID, "auth-signin-button") # ログインボタン element.click()
    driver.get(url)
    
    
    mail = driver.find_element(By.ID, "login_handle") # 次に進むボタン
    mail.clear()
    mail.send_keys("じぶんのあかうんと")  #入力
    
    element = driver.find_element(By.CSS_SELECTOR, '.ar-button_medium_1i9SB [type="ar-button_medium_1i9SB"]') #複数ある
    element.click()
    
    # passwordという名前の要素が見つかるまで1秒間待機
    password = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.NAME, "password")))
    password.clear()
    
    chkbox = driver.find_element_by_name('rememberMe') 
    # チェックボックスが非選択の状態を確認
    if not chkbox.is_selected():
        # 非選択の場合はJavaScriptでクリックする
        driver.execute_script("arguments[0].click();", chkbox)
    
    password.send_keys("じぶんのぱすわーどとか")   #パスワード入力
    element = driver.find_element(By.ID, "signInSubmit") # ログインボタン
    element.click()         # button click
    
    #''' ワンタイムパスワードが必要な場合
    # otpCodeという名前の要素が見つかるまで1秒間待機
    otpCode = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.NAME, "otpCode")))
    otpCode.clear()
    
    saveScreen()  # 画面キャプチャの関数呼び出し
    
    #ワンタイムパスワード入力
    time.sleep(25) # 25s待ってるあいだにワンタイムパスワードを自分で'onetime.txt'にコピペ
    # ファイルを読み込んで一行取得
    with open('./env/onetime.txt') as f:
        for line in f:
          otpCode.send_keys(line)   #ワンタイムパスワード入力
    
    chkbox = driver.find_element_by_name('rememberDevice') 
    # チェックボックスが非選択の状態を確認
    if not chkbox.is_selected():
        # 非選択の場合はJavaScriptでクリックする
        driver.execute_script("arguments[0].click();", chkbox)
    
    element = driver.find_element(By.ID, "auth-signin-button") # ログインボタン
    element.click() 
    
    

    スクリーンショット関数化,画像ファイルが複数

  • ファイルを読み込んで一行取得, 別のファイルに追記

    # ファイルを読み込んで一行取得 with ope […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    # ファイルを読み込んで一行取得
    with open('./csv/url.txt') as f:
    for url in f:
    driver.get(url)
    element = driver.find_element(By.ID, "productTitle")
    productTitle = element.text
    element = driver.find_element(By.CSS_SELECTOR, ".a-price-whole") #複数ある
    price = element.text
    price = price.replace(",", "") #カンマ除去
    with open('csv/tmp.csv', 'a') as f:
    writer = csv.writer(f)
    writer.writerow([productTitle, price])
    print(productTitle)
    # ファイルを読み込んで一行取得 with open('./csv/url.txt') as f: for url in f: driver.get(url) element = driver.find_element(By.ID, "productTitle") productTitle = element.text element = driver.find_element(By.CSS_SELECTOR, ".a-price-whole") #複数ある price = element.text price = price.replace(",", "") #カンマ除去 with open('csv/tmp.csv', 'a') as f: writer = csv.writer(f) writer.writerow([productTitle, price]) print(productTitle)
    
    # ファイルを読み込んで一行取得
    with open('./csv/url.txt') as f:
        for url in f:
    
            driver.get(url)
    
            element = driver.find_element(By.ID, "productTitle")
            productTitle = element.text
    
            element = driver.find_element(By.CSS_SELECTOR, ".a-price-whole") #複数ある
            price = element.text
            price = price.replace(",", "")  #カンマ除去
    
            with open('csv/tmp.csv', 'a') as f:
                writer = csv.writer(f)
                writer.writerow([productTitle, price])
                print(productTitle)
    
    
    
  • chrome プロファイル指定して起動–ログインセッション保持

    import os from selenium i […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    import os
    from selenium import webdriver
    from selenium.webdriver import ChromeOption
    # chrome プロファイル指定
    userdata_dir = 'UserData' # カレントディレクトリの直下に作る場合
    os.makedirs(userdata_dir, exist_ok=True)
    options = webdriver.ChromeOptions()
    options.add_argument('--user-data-dir=' + userdata_dir)
    options.add_argument("--headless")
    options.add_argument("--no-sandbox")
    options.add_argument('--blink-settings=imagesEnabled=false') #画像を読み込まない
    #WEBブラウザの起動
    driver = webdriver.Chrome(options=options)
    import os from selenium import webdriver from selenium.webdriver import ChromeOption # chrome プロファイル指定 userdata_dir = 'UserData' # カレントディレクトリの直下に作る場合 os.makedirs(userdata_dir, exist_ok=True) options = webdriver.ChromeOptions() options.add_argument('--user-data-dir=' + userdata_dir) options.add_argument("--headless") options.add_argument("--no-sandbox") options.add_argument('--blink-settings=imagesEnabled=false') #画像を読み込まない #WEBブラウザの起動 driver = webdriver.Chrome(options=options)
    import os
    from selenium import webdriver
    from selenium.webdriver import ChromeOption
    
    # chrome プロファイル指定 
    userdata_dir = 'UserData'  # カレントディレクトリの直下に作る場合
    os.makedirs(userdata_dir, exist_ok=True)
    options = webdriver.ChromeOptions()
    options.add_argument('--user-data-dir=' + userdata_dir)
    
    options.add_argument("--headless")
    options.add_argument("--no-sandbox")
    options.add_argument('--blink-settings=imagesEnabled=false')  #画像を読み込まない
    
    #WEBブラウザの起動
    driver = webdriver.Chrome(options=options)
    
    
  • seleniumでページャーをクリックしながらループ

    while 1: #対象要素 →Pager Nex […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    while 1:
    #対象要素 →Pager Next アクティブページ .Pager__link Pager__link--active
    element = driver.find_element(By.CSS_SELECTOR,".Pager__link--active")
    # 親要素
    element = element.find_element_by_xpath('..')
    # その次のli要素
    element = element.find_element_by_xpath('following-sibling::li')
    # 子要素のaタグがあるか
    if len(element.find_elements_by_class_name("Pager__link--disable")) > 0 :
    break
    else:
    element = element.find_element(By.CSS_SELECTOR,".Pager__link")
    # の次の要素の子要素のaをクリック
    element.click()
    getInsert() #関数実行
    while 1: #対象要素 →Pager Next アクティブページ .Pager__link Pager__link--active element = driver.find_element(By.CSS_SELECTOR,".Pager__link--active") # 親要素 element = element.find_element_by_xpath('..') # その次のli要素 element = element.find_element_by_xpath('following-sibling::li') # 子要素のaタグがあるか if len(element.find_elements_by_class_name("Pager__link--disable")) > 0 : break else: element = element.find_element(By.CSS_SELECTOR,".Pager__link") # の次の要素の子要素のaをクリック element.click() getInsert() #関数実行
    while 1:
        #対象要素 →Pager Next アクティブページ .Pager__link Pager__link--active
        element = driver.find_element(By.CSS_SELECTOR,".Pager__link--active")
        # 親要素   
        element = element.find_element_by_xpath('..')
        # その次のli要素
        element = element.find_element_by_xpath('following-sibling::li')
        # 子要素のaタグがあるか
        if len(element.find_elements_by_class_name("Pager__link--disable")) > 0 :
            break
        else:
            element = element.find_element(By.CSS_SELECTOR,".Pager__link")
            # の次の要素の子要素のaをクリック
            element.click()
            getInsert()  #関数実行
    
    
  • seleniumでMySQLにInsert

    import mysql.connector co […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    import mysql.connector
    conn = mysql.connector.connect(
    host="localhost",
    user="user_name",
    password="password",
    database="amazon"
    )
    # カーソルを取得
    cursor = conn.cursor()
    #要素を取得しながらDB insert
    def getInsert():
    # otpCodeという名前の要素が見つかるまで1秒間待機
    WebDriverWait(driver, 2).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".Product")))
    elements = driver.find_elements_by_class_name('Product')
    for element in elements:
    # 要素内のテキストを取得
    # element_text = element.text
    Product__title = element.find_element_by_class_name("Product__title").text
    Product__priceValue = element.find_element_by_class_name("Product__priceValue").text
    Product__priceValue = Product__priceValue.replace(",", "") #カンマ除去
    Product__priceValue = Product__priceValue.replace("円", "")
    # データ挿入のクエリ
    insert_data_query = """
    INSERT INTO product (productTitle, price) VALUES (%s, %s)
    """
    # データ挿入
    price_data = (Product__title, Product__priceValue)
    cursor.execute(insert_data_query, price_data)
    # 変更を確定
    conn.commit()
    print(Product__title)
    ## 要素を取得する処理 とか
    getInsert() #関数実行
    import mysql.connector conn = mysql.connector.connect( host="localhost", user="user_name", password="password", database="amazon" ) # カーソルを取得 cursor = conn.cursor() #要素を取得しながらDB insert def getInsert(): # otpCodeという名前の要素が見つかるまで1秒間待機 WebDriverWait(driver, 2).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".Product"))) elements = driver.find_elements_by_class_name('Product') for element in elements: # 要素内のテキストを取得 # element_text = element.text Product__title = element.find_element_by_class_name("Product__title").text Product__priceValue = element.find_element_by_class_name("Product__priceValue").text Product__priceValue = Product__priceValue.replace(",", "") #カンマ除去 Product__priceValue = Product__priceValue.replace("円", "") # データ挿入のクエリ insert_data_query = """ INSERT INTO product (productTitle, price) VALUES (%s, %s) """ # データ挿入 price_data = (Product__title, Product__priceValue) cursor.execute(insert_data_query, price_data) # 変更を確定 conn.commit() print(Product__title) ## 要素を取得する処理 とか getInsert() #関数実行
    import mysql.connector
    
    conn = mysql.connector.connect(
        host="localhost",
        user="user_name",
        password="password",
        database="amazon"
    )
    
    # カーソルを取得
    cursor = conn.cursor()
    
    
    #要素を取得しながらDB insert 
    def getInsert():
       # otpCodeという名前の要素が見つかるまで1秒間待機
        WebDriverWait(driver, 2).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".Product")))
        elements = driver.find_elements_by_class_name('Product')
        for element in elements:
        # 要素内のテキストを取得
            # element_text = element.text
            Product__title = element.find_element_by_class_name("Product__title").text
            Product__priceValue = element.find_element_by_class_name("Product__priceValue").text
            Product__priceValue = Product__priceValue.replace(",", "")  #カンマ除去
            Product__priceValue = Product__priceValue.replace("円", "") 
    
            # データ挿入のクエリ
            insert_data_query = """
            INSERT INTO product (productTitle, price) VALUES (%s, %s)
            """
            # データ挿入
            price_data = (Product__title, Product__priceValue)
            cursor.execute(insert_data_query, price_data)
            # 変更を確定
            conn.commit()
            print(Product__title)
    
    
    ## 要素を取得する処理 とか
    
     getInsert()  #関数実行
    
    
    
  • selenium,要素を取得

    # タグ名が「a」要素の中で最初に見つけた要素を取 […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    # タグ名が「a」要素の中で最初に見つけた要素を取得
    element = driver.find_element(By.TAG_NAME, "a")
    # 検索テキストボックスの要素をname属性値(name="q")から取得
    element = driver.find_element(By.NAME, "q")
    element = driver.find_element(By.CSS_SELECTOR, ".Product") #ループできない
    element.click() #クリックはできる
    # aタグ内の文字列がが"Gmail"の要素を取得
    element = driver.find_element(By.LINK_TEXT, "Gmail")
    elements = driver.find_elements_by_class_name('Product') #ループできる
    # listになると直にfind_elementsできない、回して一要素を取り出すか、find_elementで取得する
    for element in elements:
    elem_p1 = element.find_element_by_class_name("rax-view-v2") #直下の子要素
    elem_p2 = elem_p1.find_elements_by_class_name("rax-view-v2") # 2つある
    elem_p3 = elem_p2[1].find_elements_by_tag_name("div") #2番目の子要素たち
    一番最初に見つかった要素 element.find_element_by_class_name
    リストで取得 element.find_elements_by_class_name
    # タグ名が「a」要素の中で最初に見つけた要素を取得 element = driver.find_element(By.TAG_NAME, "a") # 検索テキストボックスの要素をname属性値(name="q")から取得 element = driver.find_element(By.NAME, "q") element = driver.find_element(By.CSS_SELECTOR, ".Product") #ループできない element.click() #クリックはできる # aタグ内の文字列がが"Gmail"の要素を取得 element = driver.find_element(By.LINK_TEXT, "Gmail") elements = driver.find_elements_by_class_name('Product') #ループできる # listになると直にfind_elementsできない、回して一要素を取り出すか、find_elementで取得する for element in elements: elem_p1 = element.find_element_by_class_name("rax-view-v2") #直下の子要素 elem_p2 = elem_p1.find_elements_by_class_name("rax-view-v2") # 2つある elem_p3 = elem_p2[1].find_elements_by_tag_name("div") #2番目の子要素たち 一番最初に見つかった要素 element.find_element_by_class_name リストで取得 element.find_elements_by_class_name
    # タグ名が「a」要素の中で最初に見つけた要素を取得
    element = driver.find_element(By.TAG_NAME, "a")
    
    # 検索テキストボックスの要素をname属性値(name="q")から取得
    element = driver.find_element(By.NAME, "q")
    
    element = driver.find_element(By.CSS_SELECTOR, ".Product") #ループできない
    element.click()  #クリックはできる
    
    # aタグ内の文字列がが"Gmail"の要素を取得
    element = driver.find_element(By.LINK_TEXT, "Gmail")
    
    elements = driver.find_elements_by_class_name('Product')  #ループできる
    # listになると直にfind_elementsできない、回して一要素を取り出すか、find_elementで取得する
    
    for element in elements:
        elem_p1 = element.find_element_by_class_name("rax-view-v2")   #直下の子要素
        elem_p2 = elem_p1.find_elements_by_class_name("rax-view-v2")  # 2つある
        elem_p3 = elem_p2[1].find_elements_by_tag_name("div")        #2番目の子要素たち
    
    一番最初に見つかった要素 element.find_element_by_class_name
    リストで取得           element.find_elements_by_class_name
    

    取得とか待機処理など

  • スクリーンショット関数化,画像ファイルが複数,文字列内に変数展開

    def saveScreen(last_top): […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    def saveScreen(last_top):
    # f'文字列{変数}文字列'
    FILENAME = os.path.join(os.path.dirname(os.path.abspath(__file__)), f'image/screen{last_top}.png')
    # SeleniumからJavaScriptを実行 画像のサイズ取得
    w = driver.execute_script("return document.body.scrollWidth;")
    # h = 1200
    h = driver.execute_script("return document.body.scrollHeight;")
    driver.set_window_size(w,h) # set window size
    driver.save_screenshot(FILENAME)
    #呼び出し
    saveScreen(last_top)
    def saveScreen(last_top): # f'文字列{変数}文字列' FILENAME = os.path.join(os.path.dirname(os.path.abspath(__file__)), f'image/screen{last_top}.png') # SeleniumからJavaScriptを実行 画像のサイズ取得 w = driver.execute_script("return document.body.scrollWidth;") # h = 1200 h = driver.execute_script("return document.body.scrollHeight;") driver.set_window_size(w,h) # set window size driver.save_screenshot(FILENAME) #呼び出し saveScreen(last_top)
     def saveScreen(last_top):
        # f'文字列{変数}文字列'
        FILENAME = os.path.join(os.path.dirname(os.path.abspath(__file__)), f'image/screen{last_top}.png')
        # SeleniumからJavaScriptを実行 画像のサイズ取得
        w = driver.execute_script("return document.body.scrollWidth;")
        # h = 1200 
        h = driver.execute_script("return document.body.scrollHeight;")
        driver.set_window_size(w,h) # set window size
        driver.save_screenshot(FILENAME) 
    
    #呼び出し
     saveScreen(last_top)
    
  • Python3 ログを取る

    import logging logging.ba […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    import logging
    logging.basicConfig(filename='log/example.log', encoding='utf-8', level=logging.DEBUG)
    import logging logging.basicConfig(filename='log/example.log', encoding='utf-8', level=logging.DEBUG)
     import logging
    
     logging.basicConfig(filename='log/example.log', encoding='utf-8', level=logging.DEBUG)
    
    

    【Python3】loggerを使ってログをファイルに出力したりちゃんと扱ったりする|yucco

  • 都道府県 / 州 / 郡 woocommerce

    翻訳ファイルの修正 WooCommerceの日本語 […]

    翻訳ファイルの修正

    WooCommerceの日本語ファイル
    /wp-content/languages/plugins/woocommerce-ja.mo

    woocommerce-ja.po が編集用のファイルなので、このファイルをダウンロード

    翻訳ファイルの編集ソフト「Poedit」 をインストール
    書き換え後に ファイル MOにコンパイル → woocommerce-ja.mo をアップして上書き

  • javascript オブジェクト 追加、結合

    let obj4= {age: 10, weigh […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    let obj4= {age: 10, weight: 20};
    obj4 = {...obj4, ...{name:'ichiro', height:199} }
    obj4['tel'] = 9494;
    console.log(obj4);
    {age: 10, weight: 20, name: 'ichiro', height: 199, tel: 9494}
    </code>
    <code> let obj4= {age: 10, weight: 20}; obj4 = {...obj4, ...{name:'ichiro', height:199} } obj4['tel'] = 9494; console.log(obj4); {age: 10, weight: 20, name: 'ichiro', height: 199, tel: 9494} </code>
    
    let obj4= {age: 10, weight: 20};
     
    obj4 = {...obj4, ...{name:'ichiro', height:199} }
    obj4['tel'] = 9494;
    
    console.log(obj4);
    
    
    {age: 10, weight: 20, name: 'ichiro', height: 199, tel: 9494}
    
  • [Vue.js, JavaScript]クリックされた要素本体を取得

    $eventというがネイティブな変数 <a […]

    $eventというがネイティブな変数

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    <a @click.prevent="show_after(post.id,$event)" >
    show_after(post_id, event){
    console.log(event.target);
    $(event.target).prev().find('span.hidden').removeClass('hidden');
    }
    </code>
    <code> <a @click.prevent="show_after(post.id,$event)" > show_after(post_id, event){ console.log(event.target); $(event.target).prev().find('span.hidden').removeClass('hidden'); } </code>
    
      <a @click.prevent="show_after(post.id,$event)" >
    
      show_after(post_id, event){
          console.log(event.target);
          $(event.target).prev().find('span.hidden').removeClass('hidden');
      }
    
  • laravel8 クエリービルダー サブクエリ 複数条件 算術演算 groupBy複数 orderBy DESC混在 生のSQL chank

    サブクエリ 変数はたいていグローバル化しないと渡せ […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    サブクエリ
    変数はたいていグローバル化しないと渡せない
    $ranks_tags = DB::table('ranks_tags')->where('label',$this->range_w);
    DB::table('post_tags as p')->select(
    DB::raw( //この中の''は1セット。最初と最後のみで全体を囲む
    'p.fave_id , p.tag_id, f.name , f.cnt_cheer , s.before_cnt_cheer
    , f.cnt_cheer - s.before_cnt_cheer AS incre_cheer
    , f.cnt_post, s.before_cnt_post
    , f.cnt_post - s.before_cnt_post AS incre_post
    , cnt_share
    , s.id as ranktag_id'
    )
    )
    ->LeftJoin( 'tags as t' , 'p.tag_id' ,'t.id')
    ->LeftJoin( 'faves as f', 'p.fave_id','f.id')
    ->LeftJoinSub($ranks_tags, 's', function ($join) {
    $join->on('s.tag_id' , 'p.tag_id' );
    $join->on('p.fave_id' , 's.fave_id');
    })
    ->groupBy('p.tag_id' , 'p.fave_id' , 'incre_cheer' , 'ranktag_id' )
    ->orderBy('p.tag_id' ,'asc')
    ->orderBy('incre_cheer' ,'DESC')
    ->orderBy('cnt_post' ,'DESC')
    ->limit(999999)
    // ->toSql(); ←素のSQL文を書き出せる
    ->chunk( $this->max_lows, function ($tag_fave) {
    foreach ($tag_fave as $key => $row) {
    // DB::table('tags')
    // ->where('id', $tags->id)
    // ->update(['created_at' => $this->ranges['day']]);
    var_dump($key, $row );
    }
    return false; //← これで終わる
    });
    </code>
    <code> サブクエリ 変数はたいていグローバル化しないと渡せない $ranks_tags = DB::table('ranks_tags')->where('label',$this->range_w); DB::table('post_tags as p')->select( DB::raw( //この中の''は1セット。最初と最後のみで全体を囲む 'p.fave_id , p.tag_id, f.name , f.cnt_cheer , s.before_cnt_cheer , f.cnt_cheer - s.before_cnt_cheer AS incre_cheer , f.cnt_post, s.before_cnt_post , f.cnt_post - s.before_cnt_post AS incre_post , cnt_share , s.id as ranktag_id' ) ) ->LeftJoin( 'tags as t' , 'p.tag_id' ,'t.id') ->LeftJoin( 'faves as f', 'p.fave_id','f.id') ->LeftJoinSub($ranks_tags, 's', function ($join) { $join->on('s.tag_id' , 'p.tag_id' ); $join->on('p.fave_id' , 's.fave_id'); }) ->groupBy('p.tag_id' , 'p.fave_id' , 'incre_cheer' , 'ranktag_id' ) ->orderBy('p.tag_id' ,'asc') ->orderBy('incre_cheer' ,'DESC') ->orderBy('cnt_post' ,'DESC') ->limit(999999) // ->toSql(); ←素のSQL文を書き出せる ->chunk( $this->max_lows, function ($tag_fave) { foreach ($tag_fave as $key => $row) { // DB::table('tags') // ->where('id', $tags->id) // ->update(['created_at' => $this->ranges['day']]); var_dump($key, $row ); } return false; //← これで終わる }); </code>
    
        サブクエリ
        変数はたいていグローバル化しないと渡せない
    
        $ranks_tags = DB::table('ranks_tags')->where('label',$this->range_w);
    
            DB::table('post_tags as p')->select(
                DB::raw(   //この中の''は1セット。最初と最後のみで全体を囲む
                'p.fave_id , p.tag_id, f.name , f.cnt_cheer , s.before_cnt_cheer
                , f.cnt_cheer - s.before_cnt_cheer AS incre_cheer 
                , f.cnt_post, s.before_cnt_post
                , f.cnt_post - s.before_cnt_post AS incre_post
                , cnt_share
                , s.id as ranktag_id'
                )
            )
            ->LeftJoin( 'tags as t' , 'p.tag_id' ,'t.id')
            ->LeftJoin( 'faves as f', 'p.fave_id','f.id')
            ->LeftJoinSub($ranks_tags, 's', function ($join) {
                $join->on('s.tag_id' , 'p.tag_id' );
                $join->on('p.fave_id' , 's.fave_id');
            })
            ->groupBy('p.tag_id' , 'p.fave_id' , 'incre_cheer' , 'ranktag_id' )
            ->orderBy('p.tag_id' ,'asc')
            ->orderBy('incre_cheer' ,'DESC')
            ->orderBy('cnt_post' ,'DESC')
            ->limit(999999)
            // ->toSql(); ←素のSQL文を書き出せる
            ->chunk( $this->max_lows, function ($tag_fave) {
                foreach ($tag_fave as $key => $row) {
                    // DB::table('tags')
                    //     ->where('id', $tags->id)
                    //     ->update(['created_at' => $this->ranges['day']]);
                    var_dump($key, $row );
    							
    			}
                return false; //← これで終わる
    		});
    
  • wsl2 Apache バーチャルホスト設定

    Windowsのhosts ファイルに追加 172 […]

    Windowsのhosts ファイルに追加

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    172.25.29.190 sample.org
    </code>
    <code> 172.25.29.190 sample.org </code>
     
      172.25.29.190       sample.org
    
    

    ※↑ipアドレスはUbuntu起動時のもの、127。0。0.1 ではないことに注意

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    <VirtualHost *:80>
    ServerAdmin webmaster@sample.org
    ServerName sample.org
    ServerAlias sample.org
    DocumentRoot /var/www/web/public
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/web/public>
    AllowOverride All
    Options All
    Require all granted
    </Directory>
    </VirtualHost>
    </code>
    <code> <VirtualHost *:80> ServerAdmin webmaster@sample.org ServerName sample.org ServerAlias sample.org DocumentRoot /var/www/web/public ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/web/public> AllowOverride All Options All Require all granted </Directory> </VirtualHost> </code>
    
    
    <VirtualHost *:80>
        ServerAdmin webmaster@sample.org
        ServerName sample.org
        ServerAlias sample.org
        DocumentRoot /var/www/web/public
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
       <Directory /var/www/web/public>
            AllowOverride All
            Options All
            Require all granted
        </Directory>
    </VirtualHost>
    
    
    
  • ページを遷移する前に unloadイベント

    window.addEventListener(‘ […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    window.addEventListener('beforeunload', (event) => {
    event.preventDefault();
    // このページを去る前にローカルストレージを削除;
    localStorage.removeItem('interValId');
    });
    </code>
    <code> window.addEventListener('beforeunload', (event) => { event.preventDefault(); // このページを去る前にローカルストレージを削除; localStorage.removeItem('interValId'); }); </code>
    
       window.addEventListener('beforeunload', (event) => {
            event.preventDefault();
            // このページを去る前にローカルストレージを削除;
            localStorage.removeItem('interValId');
        });
    
    
  • lalavel8 サブクエリー (クエリビルダー)

    $sql = “SELECT ←普通のSQL文 F […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    $sql = "SELECT ←普通のSQL文
    FROM
    WHERE " ;
    DB::table('app_user_user AS uu')
    ->select( ~ ~
    ) ->leftJoin( DB::raw("( $sql ) AS sc ") , 'uu.id', '=', 'sc.user_id')
    </code>
    <code> $sql = "SELECT ←普通のSQL文 FROM WHERE " ; DB::table('app_user_user AS uu') ->select( ~ ~ ) ->leftJoin( DB::raw("( $sql ) AS sc ") , 'uu.id', '=', 'sc.user_id') </code>
    
     $sql = "SELECT ←普通のSQL文
     FROM
     WHERE " ; 
     
    
     DB::table('app_user_user AS uu')
            ->select( ~ ~ 
    
        ) ->leftJoin( DB::raw("( $sql  ) AS sc ") , 'uu.id', '=', 'sc.user_id')
    
    
    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    $juhuku = DB::table('issuers')
    ->orWhere(function($query) {
    $query->where('tel', $this->tel[$this->j])
    ->where('user_id', '!=', $this->user_id);
    })
    ->orWhere(function($query) {
    $query->where('email', $this->email[$this->j])
    ->where('user_id', '!=', $this->user_id);
    })->exists() ;
    </code>
    <p>
    <br><br>
    <code>
    select exists(
    select * from `issuers`
    where (
    `tel` = '230-0234-5432'
    and `user_id` != 4604
    )
    or (
    `email` = 'izumo@reqw.wer'
    and `user_id` != 4604)
    ) as `exists`
    </code>
    </p>
    <code> $juhuku = DB::table('issuers') ->orWhere(function($query) { $query->where('tel', $this->tel[$this->j]) ->where('user_id', '!=', $this->user_id); }) ->orWhere(function($query) { $query->where('email', $this->email[$this->j]) ->where('user_id', '!=', $this->user_id); })->exists() ; </code> <p> <br><br> <code> select exists( select * from `issuers` where ( `tel` = '230-0234-5432' and `user_id` != 4604 ) or ( `email` = 'izumo@reqw.wer' and `user_id` != 4604) ) as `exists` </code> </p>
    
    	$juhuku = DB::table('issuers')
    		->orWhere(function($query) {
    			$query->where('tel', $this->tel[$this->j])
    			->where('user_id', '!=', $this->user_id);
    		})
    		->orWhere(function($query) {
    		$query->where('email', $this->email[$this->j])
    		->where('user_id', '!=', $this->user_id);
    	})->exists() ;
    
    



    select exists( select * from `issuers` where ( `tel` = '230-0234-5432' and `user_id` != 4604 ) or ( `email` = 'izumo@reqw.wer' and `user_id` != 4604) ) as `exists`

  • localStorage 配列の保存方法

    そのまま保存するとデータ構造が書き換えられて配列が […]

    そのまま保存するとデータ構造が書き換えられて配列がcsv形式になってしまう。

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    localStorage.setItem('stockoutData', JSON.stringify(stockoutData)); //保存
    let stockoutData = localStorage.getItem('stockoutData'); //取得
    let stockouts = JSON.parse(stockoutData); //変換
    </code>
    <code> localStorage.setItem('stockoutData', JSON.stringify(stockoutData)); //保存 let stockoutData = localStorage.getItem('stockoutData'); //取得 let stockouts = JSON.parse(stockoutData); //変換 </code>
    
    localStorage.setItem('stockoutData', JSON.stringify(stockoutData)); //保存
    
    let stockoutData = localStorage.getItem('stockoutData'); //取得
         let stockouts = JSON.parse(stockoutData);  //変換
    
    
  • wordpress マルチサイト サブディレクトリ 表示されない

    投稿記事に過去1ヶ月よりも前の日付があると出てこな […]

    投稿記事に過去1ヶ月よりも前の日付があると出てこないので、SQL文で一括で昨日とかにする

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    update `wp_posts` set post_date='2022-01-01 12:12:12'
    ,post_date_gmt = '2022-01-01 03:12:12'
    </code>
    <code> update `wp_posts` set post_date='2022-01-01 12:12:12' ,post_date_gmt = '2022-01-01 03:12:12' </code>
    
    update `wp_posts` set post_date='2022-01-01 12:12:12'
    ,post_date_gmt = '2022-01-01 03:12:12'
    
    
  • Notice: ob_end_flush(): failed to send buffer of zlib output compression

    対処方法 # vi /etc/php.ini __ […]

    対処方法

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    # vi /etc/php.ini
    _________________________
    zlib.output_compression = Off ← こうする
    _________________________
    # systemctl restart httpd
    </code>
    <code> # vi /etc/php.ini _________________________ zlib.output_compression = Off ← こうする _________________________ # systemctl restart httpd </code>
    
     # vi /etc/php.ini
    _________________________
    
     zlib.output_compression = Off ← こうする
    _________________________
     # systemctl restart httpd
    
    

    透過的なページ圧縮を行うかどうかを指定します。

    Onを指定した場合、ブラウザが”Accept-Encoding: gzip”または”deflate”ヘッダを送信する際に、ページが圧縮されます。

  • WSL2でUbuntuの初回起動時に0x800701bcが出る

    Linux カーネル更新パッケージのダウンロード […]


    Linux カーネル更新パッケージのダウンロード

    手順 4 – Linux カーネル更新プログラム パッケージをダウンロードする

    最新のパッケージをダウンロードします。

    x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ
    をいれてたぶん解決。

  • has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

    「CORSポリシーによってブロックされています:要 […]

    「CORSポリシーによってブロックされています:要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。」
    ヘッダーがないのはフロント側ではなく、サーバー側のこと

    サーバー側のファイルの先頭にこれを書くだけでいい

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    <php
    header('Access-Control-Allow-Origin: *');
    </code>
    <code> <php header('Access-Control-Allow-Origin: *'); </code>
    
    
    <php
      header('Access-Control-Allow-Origin: *');
    
    
  • URLパラメータ、クエリストリングの書き換え

    //URL書き換え var anker = 1; […]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    //URL書き換え
    var anker = 1;
    var issuer_no = 1;
    history.replaceState('','','?issuer_no='+issuer_no + '&bank_no=' + bank_no + anker);
    </code>
    <code> //URL書き換え var anker = 1; var issuer_no = 1; history.replaceState('','','?issuer_no='+issuer_no + '&bank_no=' + bank_no + anker); </code>
    
    //URL書き換え
        var anker = 1;
        var issuer_no = 1;
        history.replaceState('','','?issuer_no='+issuer_no + '&bank_no=' + bank_no + anker);
    
    
  • Trying to get property ‘default_payment_method’ of non-object

    users → stripe_idがnullでなけ […]

    users → stripe_idがnullでなければ登録に失敗する

  • javascript 日付文字列の日付フォーマットを変更する

    2021-07-26 → 2021年7月26日 v […]

    2021-07-26 → 2021年7月26日

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    var datestr = "2021-07-26";
    var date = Date.parse(datestr);
    var date = new Date(date);
    format = date.getFullYear() + '年';
    format +=( date.getMonth() + 1 ) + '月';
    format += date.getDate() +'日';
    console.log(format);
    </code>
    <code> var datestr = "2021-07-26"; var date = Date.parse(datestr); var date = new Date(date); format = date.getFullYear() + '年'; format +=( date.getMonth() + 1 ) + '月'; format += date.getDate() +'日'; console.log(format); </code>
    
    
    var datestr = "2021-07-26";
    var date = Date.parse(datestr);
    var date = new Date(date);
    
      format = date.getFullYear() + '年';
      format +=( date.getMonth() + 1 ) + '月';
      format += date.getDate() +'日';
      
      console.log(format);
    
  • laravel非ログインならユーザー登録を出さない

    管理画面用ならばデフォルトの逆なので、ログインユー […]

    管理画面用ならばデフォルトの逆なので、ログインユーザーのみが新規登録出来るようにする

    [./app/Http/Middleware/RedirectIfAuthenticated.php]

    Plain text
    Copy to clipboard
    Open code in new window
    EnlighterJS 3 Syntax Highlighter
    <code>
    foreach ($guards as $guard) {
    if($_SERVER['REQUEST_URI'] == '/register' ) {
    // 会員作成なら
    if (Auth::guard($guard)->check()) {
    return $next($request);
    }else{
    //ログインしてなければリダイレクト
    return redirect(RouteServiceProvider::HOME);
    }
    }else{
    if (Auth::guard($guard)->check()) {
    //ログイン中ならtrue
    return redirect(RouteServiceProvider::HOME);
    }
    }
    }
    </code>
    <code> foreach ($guards as $guard) { if($_SERVER['REQUEST_URI'] == '/register' ) { // 会員作成なら if (Auth::guard($guard)->check()) { return $next($request); }else{ //ログインしてなければリダイレクト return redirect(RouteServiceProvider::HOME); } }else{ if (Auth::guard($guard)->check()) { //ログイン中ならtrue return redirect(RouteServiceProvider::HOME); } } } </code>
    
    
    foreach ($guards as $guard) {
        
        if($_SERVER['REQUEST_URI'] == '/register' ) {
            // 会員作成なら
            if (Auth::guard($guard)->check()) { 
                return $next($request);
            }else{
                //ログインしてなければリダイレクト
                return redirect(RouteServiceProvider::HOME);
            }
        }else{
            
            if (Auth::guard($guard)->check()) { 
                //ログイン中ならtrue
                return redirect(RouteServiceProvider::HOME);
            }
        }
    }