2020年11月11日 星期三

Line的網址Debug工具,line分享過的網址換縮圖或標題

之前在社群上分享網址,分享過的網址,若遇到要換縮圖或標題,在Facebook上有網址debug工具:https://developers.facebook.com/tools/debug,但是在Line上一直沒有辦法清除cache,之前只能在分享的網址後面加上參數強迫Line分享時讀取新的縮圖或標題(ex: https://blog.com/index.html?v=2)

後來找到了Line終於出的網址debug工具,記錄如下:



把網址貼入,勾選Update Cache ,Update Image Cache 後(language不知有什麼差別,實際填入en,tw... 好像都可以),之後按下Submit即可

2020年8月31日 星期一

ajax 使用form格式post 資料

Html部分:
	

  <form id="myForm" action="getPost.php" class='col-12 col-md-5 mx-auto'>
    <div class="form-group">
      <label for="data1">Email:</label>
      <input type="email" class="form-control" id="data1" name="data1" aria-describedby="emailHelp" autocomplete required>
      <small id="emailHelp" class="form-text text-muted">請輸入E-mail</small>
    </div>
    <div class="form-group">
      <label for="data2">Password</label>
      <input type="password" class="form-control" id="data2" name="data2" autocomplete required>
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>



Jquery 部分:

$(function(){

      $( "#myForm" ).on( "submit", function(event) {

        event.preventDefault();        
        var form = $(this);
        var url = form.attr('action');

        $.ajax({
          type: "POST",
          url: url,
          data: form.serialize(), // 把form內的物件序列化.
          success: function(data)
          {
            //alert(data);

            if(data==1){
              alert('成功');
              //window.location.href='index.php';
            }else if(data == 0){
              alert('失敗');
              return false; 
            };

          }
        });       
      });

})

接收的PHP這一端,就直接以$_POST[""]接收傳過來的各個值

相關:不使用form的方式,直接用id或class讀取input的vlaue值post

2020年8月19日 星期三

希望網頁頁面限制在一個瀏覽器內只能在一個分頁中被開啟時 Storage Event 在safari上的Bug

在實作希望網頁頁面限制在一個瀏覽器內只能在一個分頁中被開啟時使用了以下的方法(參考自此
		
// Broadcast that you're opening a page.
  localStorage.openpages = Date.now();
  var onLocalStorageEvent = function(e){
  
      if(e.key == "openpages"){
          // Listen if anybody else is opening the same page!
          localStorage.page_available = Date.now();
      }

      if(e.key == "page_available"){
          alert("您已在其他分頁開啟過此頁面");
          return false;
      }

  };
  
  window.addEventListener('storage', onLocalStorageEvent, false);

以上的方法在chrome、firefox等瀏覽器上皆可正常運作,但是在safari上會有問題,警告會在第一個分頁就跳出
目前有被回報為safari的bug -> Storage events are fired for the same tab 

暫時可解的方法是在function內加上!document.hasFocus(),如下 (參考自此

上述解法還是有問題,目前尚未找到有效解決方式

2020年5月26日 星期二

【Linux】如何停止正在運行的crontab排程工作 to see and stop current running crontab tasks.

當 crontab排程已開始執行時,可透過以下方式找出執行緒並將運行中的排程停止

經由下面的語法可讓主機目前執行的排程工作可以容易閱讀
ps -o pid,sess,cmd afx | egrep -A20 "( |/)cron( -f)?$"
運行上面程式後會看到類似下面的畫面
1108  1108 cron
4288  1108 \_ CRON
4289  4289     \_ /bin/sh -c /path/to/my/crontab/accesscronjob.php
4290  4289         \_ /bin/bash /path/to/my/crontab/accesscronjob.php
.
.
.

第一欄是PID、第二欄位是Session ID、第三欄則是被排程啟動執行的程式。
若要刪除已經被排程啟動正在運行中的程式,可以藉由Session ID來kill所有相關的排程運行程式。

所以如下圖,若要停止正在運行的accesscronjob.php可以透過pkill語法來kill他的session ID "4289",如下
pkill -s 4289
參考網址

【PHP】關於$_SERVER['HTTP_HOST']在crontab上會失效的問題 Cron Job $_SERVER issue

在使用crontab排程時,因為程式內使用到了$_SERVER['HTTP_HOST']來擷取網址段,因而發生錯誤。

當時既透過網址執行時 $_SERVER['HTTP_HOST'] 可以正確取得域名,但是當相同一段程式透過crontab排程運行時,$_SERVER['HTTP_HOST']就無法成功讀取且會判斷為空值。

搜尋網路似乎還是有其他方法取代,先行紀錄之後再做研究。

2020年5月1日 星期五

【Unity3D】已經製作成prefab但是還留在Scene場境上的物件,可以刪除也可以disable

在unity上已經製作成prefab但是還留在Scene場境上的物件,可以直接刪除也可以選擇disable,讓物件在scene上消失,以防之後可能還會需要叫出來調整。

刪除或disable都可以

把物件disable的方式是  在Hierarchy視窗上點遠物件後,在inspector標籤下面物件名稱前的checkBox取消打勾即可(如下圖)。



取消打勾後物件就會從Scene上消失了。
要讓物件出現只要再把checkBox打勾就可以了

【Unity3D】使用OnTriggerEnter偵測碰撞並destroy物件時要注意的小地方

在語法上使用OnTriggerEnter語法偵測碰撞時,下列語法可以同時destroy自己跟與自身碰撞的物件

private void OnTriggerEnter(Collider other)
    {
        Destroy(gameObject); //當自己跟其他物件相撞時,destroy自己
        Destroy(other.gameObject); //同時也destroy其他物件
    }

這樣的方式在某些狀況下會有一點小問題,如下: 
譬如是射擊遊戲類的型態,當對面很多敵人物件飛過來時,
敵人物件通常也是做成prefab物件,所以裡面的基本元素是相同的來源。

那麼在遊戲畫面上兩個相同的基本元素也有可能相碰,這時使用上面的語法就會有一點矛盾的地方,也就是說當兩個相同的敵方元素相碰,會執行第一段destroy自己,然後再執行下一段destroy碰撞自己的其他物件,但是碰撞自己的其他物件其實也就是上一段已經destroy的同一個物件,這樣可能就會產生error。

在這種情況下只要不在這個物件上加上RigidBody Commpont就可以了,只要把RigidBody加在自己發射的飛彈上,讓飛彈碰撞到敵方物件時,摧毀自己也摧毀敵方。 這樣就可以避免上述的矛盾錯誤。

來源自:Unity tutorial:create with code live Week 3 | Session 4 - Spawn Animals at Intervals - April 9, 2020

9am PST 影片內 49分10秒處的說明

2020年4月29日 星期三

【Unity3D】的授權版本差異

Unity的授權分為personal、Plus和Pro三種版本,使用Personal版本功能上雖大致相同,但是還是有些差異,主要差異有下列兩點。

一、在遊戲開始的啟動畫面(Splash Screen)上一定會顯示Unity的商標
二、當年營收超過100,000美元,就必須購買Plus版本,超過200,000美元則必須購買Pro版本

除此之外還有一些細部限制

【Unity3D】Input.GetKey, Input.GetKeyUp, Input.GetKeyDown 三者的差別


Input.GetKey : 一直按著按鍵也會觸發動作,譬如連發的機關槍
Input.GetKeyUp : 會在按下按鍵然後放開按鍵後觸發一次,然後就不再觸發
Input.GetKeyDown : 會在按下按鍵的當下觸發一次,然後就不再觸發



【Unity3D】在沒有鍵盤或是觸控的裝置上 無法使用Input.GetKey的情況下可以使用GetButton

在沒有鍵盤或是觸控的裝置上
無法使用Input.GetKey的情況下可以使用GetButton來操控定義了ButtonName的虛擬按鍵

Returns true while the virtual button identified by buttonName is held down.

2020年3月25日 星期三

【css】使用display flex時圖片高度會拉高的問題

當某容器(.container)使用display:flex屬性且容器高度為100%時,發現內部的<img>標籤圖檔高度也會自動延伸拉高為100%,只要在.container上加上下面標註的兩個屬性就可修正


.container{ 
width: 970px;
height: 100%;
display: flex;
align-items:flex-start;
align-content:flex-start;
}

2020年3月23日 星期一

關於jquery使用on('click')然後append出來的按鈕的dom操作無法作用問題. click to append buttons cannot access with dom.

狀況:按鈕上使用on('click')函式想要在點擊後append出一個按鈕

html內有一個class為btn的案鈕
<a href="#">test button</a>

在script內加入以下語法

$('.btn').on('click',function(e){
    e.preventDefault();
    $('body').append("<a href='#' class='btn'>append a button</a>");
})


原本是希望點擊第一個btn能夠append出第二個btn,點擊第二個btn能夠appedn出第三個btn ...... 依序下去.

但實際運行時append出來的按鈕點擊時卻沒有反應,必須把上面標注的那段on click改為如下:

$(document).on('click', '.btn', function(e) {
    e.preventDefault();
    $('body').append("<a href='#' class='btn'>append出來的按鈕</a>");
})


因為append出來的btn按鈕不在一開始就load進來的dom上,所以點擊沒有作用。
把on click往上拉到在文件內點擊class為btn的所有按鈕,這樣就可行了

2020年3月18日 星期三

網站安裝免費ssl憑證後,仍然被瀏覽器判斷為連線不安全的原因

網站安裝免費ssl憑證後,仍然被瀏覽器判斷為連線不安全的原因可能有三點

一、憑證安裝有問題
二、SSL證書到期(免費的憑證有效期可能只有三個月,需再自己手動更新)
三、網站內有設定外連結的元素(如:css, js, img),連結是設定http://

一般安裝了證書還顯示不安全的,大概都屬於第三點,狀況類似如下:

假設網站內有一張圖片是連結外部網站,圖片的src為
<img src="http://xxxx.com/images/pic.jpg">
如果自己網站這邊有安裝ssl憑證,上面紅字部分的外連結元素就可能被瀏覽器判斷為不安全連線,只要把http://改為https:// 或是把圖檔放在自己的空間然後以相對連結帶入即可。

以上的狀況也適用於css, js 等資源的引用

2020年3月17日 星期二

css的transition在android chrome瀏覽器上的問題css background image with transition problem on android chrome

使用css設定transition時
background image的屬性在android的chrome瀏覽器會遇到錯誤的狀況,記錄如下

遇到的錯誤狀況是在使用jquery針對被點擊的按鈕執行addClass跟removeClass的動作時
如果增加的class內有設定改變background image,在android的chrome上會顯示不出來

主要原因在於下面標示的部分:

transition: all .3s ease-in-out;
-webkit-transition: all .3s ease-in-out;

只要把all屬性改為明確指定屬性,就不會出現錯誤狀況,如下:

transition: opacity .3s ease-in-out;
-webkit-transition: opacity .3s ease-in-out;