[utf-8]「帶 BOM 的 UTF-8」和「無 BOM 的 UTF-8」有什麼區別

參考網址:itread01

BOM——Byte Order Mark,就是位元組序標記

UTF-8不需要BOM來表明位元組順序,但可以用BOM來表明編碼方式。字元"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF。所以如果接收者收到以EF BB BF開頭的位元組流,就知道這是UTF-8編碼了。

UTF- 8編碼的檔案中,BOM佔三個位元組。如果用記事本把一個文字檔案另存為UTF-8編碼方式的話,用UE開啟這個檔案,切換到十六進位制編輯狀態就可以看到開 頭的FFFE了。

發表於 程式設計 | 發表迴響

[php]Google reCAPTCHA 之使用,我不是機器人!

參考網址:ntu Google reCAPTCHA v2與v3之使用

微源科技 PHP Google reCAPTCHA 驗證教學

發表於 程式設計 | 發表迴響

[php]如何從 PHP 中的陣列中刪除元素

參考網址:DelftStack

  1. 使用 unset() 函式從 PHP 陣列中刪除一個元素 此函式不會更改索引值。索引值與以前相同。
  2. 使用 array_splice() 函式從 PHP 中的陣列中刪除一個元素 array_splice 函式將自動為鍵重新索引。
  3. 使用 array_diff() 函式從 PHP 中的陣列中刪除一個元素 此函式不會更改陣列元素的索引。

實作後發現array_diff()會將索引值做一些改變,卻也不是從0開始,可用shuffle()讓索引值重整。

 

發表於 程式設計 | 發表迴響

兩位數字unicode

參考網址:Unicode 字符百科

数字十一句号 ⒒

带圆圈数字十一 ⑪

带圆括号数字十一⑾

反白带圆圈数字十一⓫

其中带圆圈数字可以支援到50 ㊿
其它的似乎只能到20

 

 

發表於 程式設計 | 發表迴響

[SVG]對戰表程式產生的svg檔,用inkscape打開時,內的文字會變成一行

       把 <tspan>內的sodipodi:role="line" 這一行刪掉就可以了

發表於 程式設計 | 發表迴響

[Inkscape]官網鍵盤和滑鼠參考

參考網址:https://inkscape.org/zh-hant/doc/keys.html#idm596

發表於 程式設計, 軟體使用 | 發表迴響

[sublime]編輯svg tag 要領

參考網址:https://www.itread01.com/content/1549431727.html

ctrl+/ 註解

Ctrl+Shift+K(shhift+del) 刪除整行 下面的文件會上移

remove_tag: shift+ctrl+;刪除包裹的html標籤(phpstorm: ctrl + shift + del) 所在行留空

雙敗淘汰改成單敗淘汰
將最上面的svg 和最下面的 /svg 註解
找到中間有許多text的地方 留第一行並註解掉,以下全部刪除
其它文件中的text全刪
這樣的做法最上頭的那一個直線會不見(有需要再補囉!)

發表於 程式設計 | 發表迴響

[sport]d3.js與SVG,同場加映「正接多邊形」、「對戰表製作」

參考網址:

一直以來,對戰表的產生總是無法順利完成。看到SVG檔的結構,突發奇想,為什麼要跟樹狀結構硬拼呢?
既然有人可以做出樹狀結構的SVG檔了,就直接拿它來用,只要把資料庫中的人名接上去,就可以完成對戰表了。
感謝ren1244寫出這麼好用的程式,並大方分享。

雙敗淘汰圖形產生器


台部落 用d3.js+svg繪製圓內接正多邊形

it鐵人賽 D3.js新手開發基本圖表

網頁直接編輯環境 https://jsfiddle.net/

文字跟隨曲線排列 [D3]用 D3.js 畫出 SVG 基本圖形 – 文字 text

文字直排 SVG 研究之路 (8) – text 文字

HTML dir Attribute 與 CSS writing-mode  writing-mode: tb 文字直排 

SVG 完整教學 31 天

Is it possible to import svg shapes in d3.js?

getBBox() https://www.zhangxinxu.com/github/demo-Snap.svg/demo/basic/Element.getBBox.php 返回元素的边界框描述

儲存檔案時,要把svg放在div中。

D3.js API 中文手册

svg平移、放大、縮小

 

 

發表於 程式設計 | 發表迴響

[wsl]讓遠端可以瀏覽本機wsl的網頁

參考網址:stackOverFlow

net.bat
 

Powershell -Command Start-Process powershell -ArgumentList '-File d:\0_as\wsl\net.ps1' -Verb runAs 
REM pause

 

net.ps1
 

$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';

if( $found ){
  $remoteport = $matches[0];
} else{
  echo "The Script Exited, the ip address of WSL 2 cannot be found";
  exit;
}

#[Ports]

#All the ports you want to forward separated by coma
$ports=@(80);


#[Static ip]
#You can change the addr to your ip config to listen to a specific address
#$addr='0.0.0.0';
$addr='192.168.1.11';
#$addr='192.168.2.14';
$ports_a = $ports -join ",";


#Remove Firewall Exception Rules
iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' ";

#adding Exception Rules for inbound and outbound Rules
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP";

for( $i = 0; $i -lt $ports.length; $i++ ){
  $port = $ports[$i];
  iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr";
  iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport";
}

pause

 

發表於 Linux系統, Windows系統 | 發表迴響

[sport]s12編組方式(800公尺8個跑道塞12人)

s12編組方式(800公尺8個跑道塞12人) by sairwolf@gmail.com 110.12.19
人數<=12 1-8依45367821編排,9-12依成績快慢編排。
人數>12且<=24
13==>6+7
14==>7+7
15==>7+8
16==>8+8

17==>8+9
18==>8+10
19==>8+11
20==>8+12

21==>9+12
22==>10+12
23==>11+12
24==>12+12

人數>24 的部分依<=12人的編排方式即可
//S形編組 800公尺塞12人
//傳入$source原始一維陣列
function oos_organize_s12($source)  {      
    $group=(int)((count($source)+11)/12);

    //排好後code_update()再調組
    
    //print_r($source);
    if(count($source)>24)  {
        for($j=($group-1);$j>=2;$j--)  {
            $point=count($source)-12;
            //$b_half
            //echo "$j<br>";
            $ss[$j] = array_splice($source,$point);
            //print_r($ss[$j]);                
        }

    }
    //print_r($source);

    $cs=count($source);
    for($i=0;$i<count($source);$i++)  {
        if($cs>=13 and $cs<=16) { //用S形編組
            if(($i/$group)%2==0)  {
                $ss[$i%$group][(int)($i/$group)]=$source[$i];
                //echo $i."==>[".($i%$group)."][".(int)($i/$group)."]".$ss[$i%$group][(int)($i/$group)]."<br>";
            }
            else  {
                $ss[($group-1)-($i%$group)][(int)($i/$group)]=$source[$i];
                //echo $i."==>[".(($group-1)-($i%$group))."][".(int)($i/$group)."]".$ss[($group-1)-($i%$group)][(int)($i/$group)]."<br>";
            }
        }else if($cs>=17 and $cs<=24) { 
            if($i<8)  //第0組先塞滿8人
                $ss[0][$i]=$source[$i];
            else if($i>=20)  //20以後塞第0組
                $ss[0][$i-12]=$source[$i];
            else  //其它的塞第1組
                $ss[1][$i-8]=$source[$i];        
        }else { //用S12編組
            $ss[(int)($i/12)][$i%12]=$source[$i];
            //echo $i."==>[". (int)($i/12) ."][". $i%12 ."]".$ss[(int)($i/12)][$i%12]."<br>";                
        }

    }
    //print_r($ss);
    
    //971001修正為45367821
    //跑道12345678==>01234567
    //名次56123478==>45012367
    //名次75312468==>64201357
    for($i=0;$i<$group;$i++)  {
        $ss_d[$i][0]=$ss[$i][7];
        $ss_d[$i][1]=$ss[$i][6];
        $ss_d[$i][2]=$ss[$i][2];
        $ss_d[$i][3]=$ss[$i][0];
        $ss_d[$i][4]=$ss[$i][1];
        $ss_d[$i][5]=$ss[$i][3];
        $ss_d[$i][6]=$ss[$i][4];
        $ss_d[$i][7]=$ss[$i][5];

        $ss_d[$i][8]=$ss[$i][8];
        $ss_d[$i][9]=$ss[$i][9];
        $ss_d[$i][10]=$ss[$i][10];
        $ss_d[$i][11]=$ss[$i][11];
    }
    
    
    return $ss_d;
    
}  //function oos_organize_s12

 

發表於 程式設計 | 發表迴響