[.net]ashx開啟PDF或是下載PDF

1.開啟用這樣的content-type

    context.Response.AppendHeader("Content-Disposition", "inline ; filename=" & System.Web.HttpUtility.UrlEncode(dt.Rows(0).Item("DocumentName"), System.Text.Encoding.UTF8))

用 inline

2.下載使用的content-type

context.Response.AppendHeader("Content-Disposition", "attachment; filename=" & System.Web.HttpUtility.UrlEncode(dt.Rows(0).Item("DocumentName"), System.Text.Encoding.UTF8))

用attachment

[javascript]找出網址列的參數
function getParameterByName(name, url) {
            if (!url) url = window.location.href;
            name = name.replace(/[\[\]]/g, "\\$&");
            var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
            results = regex.exec(url);
            if (!results) return null;
            if (!results[2]) return '';
            return decodeURIComponent(results[2].replace(/\+/g, " "));
        }

用法

ver id=getParameterByName("id");

[docker][mssql]建立Sql server 套用台灣時區,調整欲設定序
 docker run --name testSQL1 -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=密碼' -e 'TZ=Asia/Taipei'  -e 'MSSQL_COLLATION=Chinese_Taiwan_Stroke_CI_AS' -p 1433:1433 -d mcr.microsoft.com/mssql/server

-e ‘TZ=Asia/Taipei’

-e ‘MSSQL_COLLATION=Chinese_Taiwan_Stroke_CI_AS’

加入這兩個就可以了

如果要讓外部的bak可以隨意的進出該container

 sudo docker run --name sqlserver_1 -v /mnt/mssql:/mnt/files  -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=1234Abcd' -e 'TZ=Asia/Taipei' -e 'MSSQL_COLLATION=Chinese_Taiwan_Stroke_CI_AS' -p 1433:1433 -d mcr.microsoft.com/mssql/server

本機的 /mnt/mssql就會直通裡面的/mnt/files

修正,定序要宣告在前面

 sudo docker run --name sqlserver_1 -v /mnt/mssql2022:/mnt/files -e 'MSSQL_COLLATION=Chinese_Taiwan_Stroke_CI_AS' -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=1234Abcd' -e 'TZ=Asia/Taipei'  -p 1433:1433 -d mcr.microsoft.com/mssql/server:2022-latest

注意符號,Linux用 『'』、Windows用『"』

這樣才會吃到這個宣告,建立完成好像要修改就…沒救了

官網上寫的如下,沒成功過

sudo /opt/mssql/bin/mssql-conf set-collation

下面這招試過也沒用

/opt/mssql/bin/sqlservr --force-setup -q Chinese_Taiwan_Stroke_CI_AS
[nodejs][ftp-srv]登入按照帳號設定目錄

自己看不解釋

ftpServer.on('login',async (data, resolve, reject) => {
        var resultL;

        strSQL = "SELECT * FROM xxxxxxxxx WHERE aaaaaa='" + data.username + "' AND bbbbbbb='" + data.password + "'";
        resultL = await querySQL(strSQL);

        if (resultL.rowsAffected > 0) {
            return resolve({ root: resultL.recordset[0].StartupPath });
        } else {
            reject({});
        }

新增查詢方式

const querySQL = () => {
    return new Promise((resolve, reject) => {
        sqlA.Query(strSQL, (error, results) => {
            if (error) {
                return reject(error);
            }
            return resolve(results);
        });
    });
};
[nodejs]讓SQL乖乖的照順序執行

自己看自己抄,不解釋了,因為我也不會


var sql = require("./Class/mssql.js")


let sqlA = new sql();




//result=Query(strSQL);

//result = queryDb(strSQL).then((data) => { return data });


function funcB(int) {
    return new Promise(function (resolve, reject) {
        console.log(int);
    });
}




const queryPromise1 = () => {
    return new Promise((resolve, reject) => {
        sqlA.Query("SELECT TOP 1 * FROM FTP_UserAccount", (error, results) => {
            if (error) {
                return reject(error);
            }
            return resolve(results);
        });
    });
};

const queryPromise2 = () => {
    return new Promise((resolve, reject) => {
        sqlA.Query("SELECT TOP 1 * FROM FTP_Error_Log", (error, results) => {
            if (error) {
                return reject(error);
            }
            return resolve(results);
        });
    });
};

const queryPromise3 = () => {
    return new Promise((resolve, reject) => {
        sqlA.Query("SELECT TOP 1 * FROM code_d", (error, results) => {
            if (error) {
                return reject(error);
            }
            return resolve(results);
        });
    });
};


async function sequentialQueries() {
    funcB(1);
    try {
        const resultA = await queryPromise1();
        const resultB = await queryPromise2();
        const resultC = await queryPromise3();

        // here you can do something with the three results

        console.log(resultA);
        console.log(resultB);
        console.log(resultC);
    } catch (error) {
        console.log(error)
    }
    funcB(2);
}



sequentialQueries();

參考來源

Ubuntu 編輯排程

檢視

sudo crontab -l

編輯

sudo crontab -e

說明

# ┌───────────── 分鐘   (0 - 59)
# │ ┌─────────── 小時   (0 - 23)
# │ │ ┌───────── 日     (1 - 31)
# │ │ │ ┌─────── 月     (1 - 12)
# │ │ │ │ ┌───── 星期幾 (0 - 7,0 是週日,6 是週六,7 也是週日)
# │ │ │ │ │
# * * * * * /path/to/command

範例

# 每天早上 8 點 30 分執行
30 08 * * * aaa.sh --your --parameter

# 每週日下午 6 點 30 分執行
30 18 * * 0 aaa.sh --your --parameter

# 每週日下午 6 點 30 分執行
30 18 * * Sun aaa.sh --your --parameter

# 每年 6 月 10 日早上 8 點 30 分執行
30 08 10 06 * aaa.sh --your --parameter

# 每月 1 日、15 日、29 日晚上 9 點 30 分各執行一次
30 21 1,15,29 * * aaa.sh --your --parameter

# 每隔 10 分鐘執行一次
*/10 * * * * aaa.sh --your --parameter

# 從早上 9 點到下午 6 點,凡遇到整點就執行
00 09-18 * * * aaa.sh --your --parameter

參考來源

ubuntu 自動開機啟動
sudo vim /lib/systemd/system/rc-local.service

請將下列三行添加至最尾處

[Install] 
WantedBy=multi-user.target
Alias=rc-local.service

存檔後

sudo vim /etc/rc.local
#在這添加要開機自動執行的腳本或命令

可執行權限

sudo chmod +x /etc/rc.local
sudo systemctl enable rc-local
sudo service rc-local start && sudo service rc-local status

如果顯示失敗,多半是啟動文件錯誤,啟動文件前面要加上

#!/bin/sh -e
# @file /etc/rc.local

後面要加上

exit 0

重開測試

sudo reboot