[bash]變數

新增一個變數
t2=gg
echo $t2

在~/.bashrc中新增一個變數
export LC_CTYPE="zh-TW.UTF-8"

 

發表於 Linux系統, 程式設計 | 發表迴響

[Sublime] SFTP同步遠端資料夾

參考網址:一起唱DoReMi

使用Sublime[官網]可以很輕鬆地和遠端伺服器的資料夾同步,

首先記得下載Sublime SFTP的套件[下載]。

 

除了到官方網站下載,另外也可以透過sublime的內建指令安裝

最後搜尋SFTP即可完成安裝!

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

[mysql]mysql 不同條件count ,多條件count()及行列加總

參考網址:程式人生 https://www.796t.com/content/1550942407.html

用途:統計各欄次數

mysql total time lse case from pre div clas

 

create table abc(A int,B int)

Select A,count(B) as total from ABC group by A
Select A,count(B) as total1 from ABC where B > 30 group by A
Select A,count(B) as totlal2 from ABC where B > 20 group by A

.

如何合並這三個查詢?
得到一個查詢結果:
A,total,total1,total2

答:

Select A,
count(B) as total,
sum(case when B > 30 then 1 else 0 end) as total1,
sum(case when B > 20 then 1 else 0 end) as total2 
from ABC group by A
查詢該項目(i1)在該班級該性別的參賽人數
select sum(case when i1='v' then 1 else 0 end) as c1,
       sum(case when i2='v' then 1 else 0 end) as c2,
       sum(case when i3='v' then 1 else 0 end) as c3,
       sum(case when i4='v' then 1 else 0 end) as c4,
       sum(case when i5='v' then 1 else 0 end) as c5

from player where gov_code='701' and player_sex=2

行列加總

行加總:計算該行有多少v
select sum(case when i1='v' then 1 else 0 end) as c1,
       sum(case when i2='v' then 1 else 0 end) as c2,
       sum(case when i3='v' then 1 else 0 end) as c3
from player where gov_code='701' 


列加總:計算該列有多少v
select (s1+s2+s3+s4+s5) as ss from
(select 
    (case when i1='v' then 1 else 0 end) as s1,
    (case when i2='v' then 1 else 0 end) as s2,
    (case when i3='v' then 1 else 0 end) as s3
from player where player_id=1) as abc

 

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

[bootstrap]側邊欄

參考網址:CWC 可收放及響應式的「側邊導覽列」

範例程式中有使用jquery
為了程式的相容性,想將jquery改成純javascript
 

 
//  展開/收合按鈕
$(document).ready(function() {

    $("#collapse").on("click", function() {

        $("#sidebar").toggleClass("active");
        $(".fa-align-left").toggleClass("fa-chevron-circle-right");
    })
})

參考https://stackoverflow.com/questions/18880890/how-do-i-toggle-an-elements-class-in-pure-javascript
改成
 

function tg()  {
	//alert('bbb');    

	const toggleClass = (el, className) => el.classList.toggle(className);
	//$("#sidebar").toggleClass("active");
	toggleClass(document.getElementById('sidebar'),'active');

	//目前無法改
	//$(".fa-align-left").toggleClass("fa-chevron-circle-right");
	//toggleClass(document.getElementById('fa-align-left'),'fa-chevron-circle-right');
	//alert('aaa');
} 

可以收展,但icon無法改,先這樣囉

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

[mysql]如何對MySQL資料庫中的資料進行實時同步

參考網址:https://www.juduo.cc/club/3579790.html

https://tknl45.pixnet.net/blog/post/241768457

主從搭建 – 部署流程(Master Slave Replication )
https://ithelp.ithome.com.tw/articles/10267651

 

https://tw511.com/a/01/15779.html

slave一直法順利登入master
原因是mysql的安全機制
用telnet 192.168.1.9 3306 會發現被拒絕,無法連入
端口3306在我的Ubuntu服務器上似乎已關閉
 

問題在於服務器僅在內部進行偵聽。

/etc/mysql/my.cnf刪除行bind-address 127.0.0.1解決了該問題。

較新版本的Ubuntu(≥16.04)在/etc/mysql/mysql.conf.d/mysqld.cnf中可能有此行。

 

用phpmyadmin建立主從架構

 

一些錯誤情況的處理方法
https://xdeath.tw/read.php?14

 

網管人
https://www.netadmin.com.tw/netadmin/zh-tw/technology/12B7B6D6D2F7428085C43CA313D02E93?page=3

 

https://ssorc.tw/211/%E8%B3%87%E6%96%99%E5%BA%AB%E5%90%8C%E6%AD%A5-mysql-%2B-replication/
註2
slave上會有兩個檔master.info與relay-log.info
如果slave 當機或stop時,重新啟動後,會去讀取這兩檔,繼續從上次中斷點開始未完成的備份

註3
如果資料還是沒有同步的話,可能是slave沒有設定成功,可刪掉相關設定檔,重新設定。
cd /var/lib/mysql
rm -f *-bin.*
rm -f master.info

註4
其它指令
mysql> show processlistG

mysql> show master logsG

mysql> purge master logs to 'xxxxx-bin.004' # 刪除xxxxx-bin.004之前的log檔資料

測試過程中用到的指令
GRANT FILE ON *.* TO 'backup'@'120.116.xx.xx' IDENTIFIED BY 'passwd';
GRANT REPLICATION SLAVE ON *.* TO 'backup'@"120.116.xx.xx" IDENTIFIED BY 'passwd';

https://tyeydy.com/mysql-command-create-user/
CREATE USER 'backup'@'120.116.xx.xx' IDENTIFIED BY 'passwd';
GRANT FILE ON *.* TO 'backup'@'120.116.xx.xx';
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'120.116.xx.xx';
FLUSH PRIVILEGES;

show variables like 'server_id';
show master status;
主從搭建 - 部署流程(Master Slave Replication )
[mysqld]
server-id=2
master-host=sa.xxx.xxx
master-host=125.228.xx.xx
master-user=backup
master-password=passwd
master-port=3306
master-connect-retry=60
replicate-do-db=ns

change master to master_user='backup',master_password='passwd',master_host='192.168.1.9',master_log_file='mysql-bin.000003',master_log_pos=157,get_master_public_key=1;

change master to master_user='backup',master_password='passwd',master_host='sa.xx.xx',master_log_file='mysql-bin.000003',master_log_pos=157,get_master_public_key=1;
Slave_IO_Running: Connecting

create user 'backup'@'%' identified by 'passwd';
grant replication slave on *.* to 'backup'@'%';
change master to master_user='backup',master_password='passwd',master_host='192.168.1.9',master_log_file='mysql-bin.000007',master_log_pos=3530,get_master_public_key=1;

https://www.est.idv.tw/%E4%BD%BF%E7%94%A8phpmyadmin%E5%BB%BA%E7%AB%8B-mysql-replication-%E4%B8%BB%E5%BE%9E%E5%82%99%E6%8F%B4/

https://blog.csdn.net/weixin_39864101/article/details/113582490
测试时发现之前库不一致时我在主库里面添加一张表,而从库没有那个库,导致从库 slave 会报错,执行这个命令后重启从库就可以跳过这个错误。

#SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 跳过一个事务

 

發表於 Linux系統, 程式設計 | 發表迴響

[mysql]消除Warning: Using a password on the command line interface can be insecure的提示

參考網址:https://www.cnblogs.com/realcp1018/p/8808821.html

基於安全性的考量執行資料庫復原時使用
mysql -uroot -pxxxxxx demo <demo.sql 指令時會出現如標題的錯誤

解決方法:

因为mysql命令读取配置文件的顺序为/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf,所以可以将账号密码写入~/.my.cnf中,这样执行时只需要指定-u参数即可,注意此文件权限建议设置为600。

# ~/.my.cnf示例:
[client]
user=root
password=<你的密码>
# 上述的[client]也可以替换为[mysql]

 

發表於 Linux系統, 程式設計 | 發表迴響

[sport]mysql + jeditable / 點擊編輯 / 資料庫表單 / 範例

參考網址:https://izo.tw/jeditable/

有時候我們會懶得登入phpmyadmin,
於是我們是可以製作一個前台的 MYSQL 管理表單,即點即編
就是設置『點擊修改表單』的功能啦。
我們需要運用到jQuery的jeditable,去製作一個PHP的頁面。

https://blog.xuite.net/kb8.gyes/free/27183210#

之前一直在想用jQuery,將mysql顯示在網頁上的表格資料,用不換頁的方式,進行修改與刪除,但是弄了好久,只有完成新增與刪除,沒有做到修改的功能,後來找到一個好用的UI,

名叫:Jeditable,下載點在此:

http://www.appelsiini.net/projects/jeditable;

大概實作一下:

先做出一個檔案:1.php

在<body></body>中加入底下標籤:

<div class="edit" id="div_1">Dolor</div>
<div class="edit_area" id="div_2">Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat.</div>

接著命名第二個檔案:1.js

加入底下的script:

$(document).ready(function() {
     $('.edit').editable('save.php', {
         indicator : 'Saving…',  
         tooltip   : 'Click to edit…'
     });
     $('.edit_area').editable('save.php', {
         type      : 'textarea',    //輸入欄位的種類為textarea
         cancel    : '取消修改',
         submit    : '確認修改',
         indicator : '<img src="img/indicator.gif">',
         tooltip   : 'Click to edit…'
     });
});

參數解說一下:

editable('xxx.php'):xxx.php這個檔案為用來進行修改欄位之後,進行將資料存入mysql的php頁面

indicator:正在儲存中,要顯示給使用者看的文字訊息,也能用圖片的方式

tooltip:當滑鼠經過其上方時,要顯示的提示訊息

cancel:表單上代表取消鈕的動作

submit:表單上代表送出鈕的動作

而當按下確認修改鈕之後,將會POST兩個變數給save.php這個頁面

id=您要修改的該筆資料的識別碼&value=要修改的值

嗯,沒有錯,一個變數的名稱就是id,另一個就叫value

而如果想取不一樣的變數名稱的話,請加入底下有色的兩行

$(document).ready(function() {
     $('.edit').editable(save.php', {
         id   : 'elementid',
         name : 'newvalue'
     });
});

所以save.php的頁面可以這樣寫:

###############################

$id $_POST['id'];

$value $_POST['value'];

//如果有改變數名稱請改成底下

//

//$id $_POST['elementid'];

//$value $_POST['newvalue'];

  

//將$_POST['id']用explode函式拆解為$field和$id兩個變數

list($field$id) = explode('_'$id);

  

//mysql query

mysql_query("UPDATE tb_category SET $field='$value' WHERE cId='$id'");

  

//將值傳回前端

echo $value;

 

#############################

 

而如果輸入的欄位是選單鈕的話,就要加入底下有顏色的程式:

 

$('.editable').editable('save.php', {
     data   : " {'E':'Letter E','F':'Letter F','G':'Letter G', 'selected':'F'}",
     type   : 'select',
     submit : 'OK'
});

解說一下參數

data:"{'選項一的值':'選項一在表單上顯示的名稱','選項二的值':'選項二在表單上顯示的名稱'......,'selected':'選項一的值'}",

type:'select',  //輸入的欄位為選單

其中的selected就是選單預設選取的項目

而如果不想用data的方式的話,也可以改成這樣:

$('.editable').editable(save.php', {
     loadurl : 'json.php',
     type   : 'select',
     submit : 'OK'
});

而json.php的樣子是長這樣:

###############################
 $array['E'] =  'Letter E';
$array['F'] =  'Letter F';
$array['G'] =  'Letter G';
$array['selected'] =  'F';
print json_encode($array);

###############################

要修飾外觀時,可以加入底下這個:

$('.editable').editable(save.php', { 
     cssclass:'cellcolor'  //cellcolor為css檔案中的樣式名稱

     style   : 'display: inline' //顯示的方式

      });

 

參數:
https://www.tad0616.net/modules/tad_book3/html.php?tbdsn=306
 

1.method:傳輸方法,可用post或put
2.callback:指定送出資料後要執行的函數
3.name:設定欄位name名稱
4.id:設定欄位id名稱
5.submitdata:額外要送出的資料
6.type:欄位類型,可用text、textarea、select
7.rows:textarea的列高
8.cols:textarea的欄寬
9.height:欄位高度,其值可為:auto、none或指定高度(單位為px)
10.width:欄位寬度,其值可為:auto、none或指定寬度(單位為px)
11.loadurl:在欄位中載入指定連結之內容
12.loadtype:載入連結之請求類型,可為GET或POST
13.loadtext:載入額外資料時要呈現的文字
14.loaddata:擷取編輯內容前要傳送的額外參數
15.data:預設值
16.indicator:儲存時的顯示內容,可用HTML
17.tooltip:提示說明
18.event:jquery事件,如:click或dblclick
19.submit:送出的按鈕文字
20.cancel:取消的按鈕文字
21.cssclass:要套用的class名稱,是套到該元件的上一層。
22.style:直接指定style樣式,是套到該元件的上一層。
23.select:true 或 false,當選擇文字被標記時
24.placeholder:空值時,要呈線的內容
25.onblur:該元件不在焦點上時,要進行的動作:cancel、submit、ignore或function

 

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

[HTML]title標籤換行的方法

參考網址:https://www.796t.com/content/1547495108.html

用轉義符實現換行(&#10)、(&#13)、(&#xd)
<a   href="#" title="第一行&#10;第二行">title換行</a>

 

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

[WSL]從 Microsoft Store 安裝 WSL 1.0 版

參考網址:https://blog.miniasp.com/post/2022/11/25/Useful-tool-WSL-1-0

以下從該網站節錄:

只要 Windows 10 version 2004 and higher (Build 19041 and higher) 就可以裝,但我的 Windows 10 已經是 20H2 且版本號為 10.0.19045.2251 了耶,這理論上應該可以成功安裝吧!
 

最後,我是從 Windows Command Line 官方部落格的 The Windows Subsystem for Linux in the Microsoft Store is now generally available on Windows 10 and 11 文章,才得知原來 Windows 10 還要額外安裝 KB5020030 才行,這才是成功安裝的關鍵啊!

如果你是 Windows 11 的話,要安裝 KB5019157 才行!

最後,我是直接從 Microsoft Update Catalog 網站,查找 KB5020030 關鍵字,才找到可以下載的檔案。

wsl.exe –install就可以安裝了(cmd需要用系統管理員權限執行)
預設會裝ubuntu最新版

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

sftp drive 透過sftp模擬網路磁碟機

參考網址:https://www.nsoftware.com/sftp/drive/download.aspx

An easy-to-use utility that mounts remote file systems as Windows drives via SFTP. Once connected, you can browse and work with files as if they were stored on your local machine. Learn more about the features included in each edition here.

試用後發現程式似乎不穩定,在oat環境中的win10執行不成功
RaiDrive比較穩定
https://sp.idv.tw/wp/index.php/2019/02/17/301/

https://www.raidrive.com/

發表於 軟體使用 | 發表迴響