發表文章

目前顯示的是 1月, 2022的文章

議論報告與寫作筆記_句子結構關係

  寫申論、寫作文就像建築學的邏輯 一個句子主要目的就是去表達某一件事。 為了可以清楚敘述,作者會使用許多方法跟工具,根據建築原理來改述,像是閱讀理解或者總結(摘要)。 「同等關係」 ->在一個句子內,改述著同一個理念。通常會有「簡而言之」、「所以說」 、「也就是」、「換句話說」 我以為會下雨,但卻放晴了。 換言之,在意料之外發生了許多好事。 較具體的敘述 和 較抽象的敘述 兩句前後文透過「換言之」來相連在一起。 「對比關係」 ->列出相反情況並比較它們,通常會有「然而」、「另一方面」、「相對來看(而言)」、「但是」、「儘管/縱使」、「話雖如此」等用語。 作者會寫出邏輯相對的語句,藉由比較使文章段落的主張更加明確。 原始語句: 新竹市面積104平方公里,每平方公里有4,344人,人口密度寬鬆一些。 有對比加強主張的版本: 臺北市面積為272平方公里,每平方公里有9,127人,相比來看, 新竹市面積104平方公里,每平方公里有4,344人,人口密度相對寬鬆一些。 「因果關係」 先有原因再有結果: 通常會有「所以」、「因此」、「結果」、「於是」、「因而/從而」 我忘記帶作業,所以被責罵了。 先有結果再有原因: 通常會有「因為」、「之所以」、「理由在於」、「起因是」 我被責罵了,因為我忘記了作業 學習自: 東大特訓班2 https://superexam.pixnet.net/blog/post/558626001-%E5%BE%9E%E3%80%8C%E6%9D%B1%E5%A4%A7%E7%89%B9%E8%A8%93%E7%8F%AD2%E3%80%8D%E5%AD%B8%E6%9C%83%E6%9C%89%E6%95%88%E7%8E%87%E7%9A%84%E8%AE%80%E6%9B%B8%E6%96%B9%E5%BC%8F

LeetCode144. Binary Tree Preorder Traversal(Easy)

 問題描述:給定一個二叉樹,返回它的前序遍歷。 ans1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: vector< int > preorderTraversal(TreeNode* root) { vector< int > result; if (root == nullptr) { return result; } stack<TreeNode*> nodes; nodes.push(root); while (!nodes.empty()) { TreeNode* node = nodes.top(); nodes.pop(); result.push_back(node->val); if (node->right) { nodes.push(node->right);

T-SQL筆記31_當NOT IN遇到null欄位造成的資料筆數錯誤

圖片
  記得將null欄位都先替換為空字串再丟給not in 做匹配 才不會誤判!! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 CREATE TABLE student ( A1 nvarchar( 50 ), A2 nvarchar( 50 ), A3 nvarchar( 50 ), ); insert into student (A1,A2,A3) values ( '二班' , '林芳' , null ); insert into student (A1,A2,A3) values ( '二班' , '林蘭' , '丰采' ); insert into student (A1,A2,A3) values ( '二班' , '張清' , null ); insert into student (A1,A2,A3) values ( '二班' , '林芬' , null ); insert into student (A1,A2,A3) values ( '二班' , '吳玉' , '班長' ); insert into student (A1,A2,A3) values ( '二班' , '曾儀' , '書記' ); select * from student WHERE A3 NOT IN ( '丰采' ) -- bad select * from student WHERE ISNULL (A3, '' ) NOT IN ( '丰采' ) --good

.Net Core Web Api_筆記26_使用Angular搭配進行API存取開發(同源政策設定)

圖片
  新建好一個.net 5 web api專案 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 using System ; using System.Collections.Generic ; using System.Linq ; using System.Threading.Tasks ; namespace AngularWebApiApp.Models { public class Student { public int Id { get ; set ; } public string Name { get ; set ; } public int Age { get ; set ; } public string Sex { get ; set ; } } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 using AngularWebApiApp.Models ; using Microsoft.AspNetCore.Http ; using Microsoft.AspNetCore.Mvc ; using System ; using System.Collections.Generic ; using System.Linq ; using System.Threading.Tasks ; namespace AngularWebApiApp.Controllers { [Route("api/[controller] ")] [ApiController] public class StudentController : ControllerBase { [HttpGet("GetStudents")] public List<

C#_使用PdfSharp來實踐Pdf產生與寫入寫出

圖片
  提到C#中要處理pdf相關的資料 多半會想到iTextSharp這套Library 不過由於iTextSharp採用的是 AGPL授權 使用了也有義務要開放原始碼,否則要付費使用。 因此在執行處理到一定量會開始跑出警告 這邊覺得pdf處理第三方Library若不想付費但又要商用 可以改採用PdfSharp 本身採用的是 MIT License 至Nuget下載PdfSharp sourceforge官網釋出的範例與套件包 https://sourceforge.net/projects/pdfsharp/ 使用範例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 using System ; using System.Collections.Generic ; using System.Drawing ; using System.Linq ; using System.Text ;

T-SQL筆記30_取得特定DB(或所有DB)中tables佔有的儲存空間資訊_Cannot resolve collation conflict ... in UNION ALL operator occurring in SELECT statement column 1

圖片
 最近剛好研究一下it邦有個人發的問題 剛好有機會未來自己也會用的到 也就順帶研究並記錄了 議題就是 如何找出SQL Server 「全部」資料庫大於 2 GB 的Table 歷經千辛萬苦把這串T-SQL整理出來(其實關鍵在於怎麼跨DB陳列tables資訊) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 declare @ sql nvarchar( max ); set @ sql = '' ; --記得初始化 declare @tb_databases table (s_dbid int ,s_db_name nvarchar( 50 )) insert into @tb_databases select dbid,name FROM master.dbo.sysdatabases --select * from @tb_databases declare @RowCnt BIGINT = 0 ; set @RowCnt = ( select COUNT (*) 'RowCount' from @tb_databases) --print @RowCnt declare @IdxRound BIGINT = 1 ; --@RowCnt while @IdxRound <= @RowCnt begin --print @IdxRound declare @s_db_name nvarchar( max ); set @s_db_name = ( select s_db_name from @tb_databases where s_dbid=@IdxRound) --print @s_db_name declare @sql_tmp nvarchar( max ); set @sql_tmp = N ' selec

T-SQL筆記29_兩個字串變數比較透過varbinary_大小寫也要一致的比對方式

圖片
  可能一般直接就用字串原始值去比對了 1 2 3 4 5 6 7 8 9 DECLARE @Name1 VARCHAR ( 30 ), @Name2 VARCHAR ( 20 ); Set @Name1= 'geeks' ; Set @Name2= 'geeks' ; If @Name1=@Name2 Select 'match' else Select 'not match' ; DECLARE @Name3 VARCHAR ( 30 ), @Name4 VARCHAR ( 20 ); Set @Name3= 'geeks' ; Set @Name4= 'geeksA' ; If @Name3=@Name4 Select 'match' else Select 'not match' ; 不過會有個問題假設今天要做區分大小寫的比對會出錯 這時可以透過convert成varbinary來做比對就能強迫case sensitive 1 2 3 4 5 6 7 8 DECLARE @Name1 VARCHAR ( 30 ), @Name2 VARCHAR ( 30 ); Set @Name1= 'SQL' ; Set @Name2= 'sql' ; --select convert(varbinary(30),@Name1) --select convert(varbinary(30),@Name2) If convert (varbinary( 30 ),@Name1)= convert (varbinary( 30 ),@Name2) Select 'match' else Select 'not match' ; Ref: SQL Query to Compare Two Strings https://www.geeksforgeeks.org/sql-query-to-compare-two-strings/ TSQL function to compare two strings https://stackove

T-SQL筆記28_Union跟Union All

圖片
  在查詢中有時候我們可能會有多組子查詢 可能欄位對應都一致 但想合併為同一張資料表結果集合時候 就可以透過Union 或 Union All來達成 其中Union 會做distinct去除重複的只留唯一 Union All則不會去除重複的全部保留 1 2 3 4 5 6 7 8 9 10 11 SELECT 'B' AS COL UNION ALL SELECT 'A' AS Val UNION ALL SELECT 'B' AS Result SELECT 'B' AS COL UNION SELECT 'A' AS Val UNION SELECT 'B' AS Result Ref: What is the difference between UNION and UNION ALL https://dataschool.com/learn-sql/what-is-the-difference-between-union-and-union-all/

經得起原始碼資安弱點掃描的程式設計習慣培養(十三)_Missing Column Encryption

圖片
  接續前幾篇系列 經得起原始碼資安弱點掃描的程式設計習慣培養(一)_OWASP Top 10(十大網站安全風險)_學習寫更安全程式碼的網站推薦 經得起原始碼資安弱點掃描的程式設計習慣培養(二)_8.Insecure Deserialization :不安全的反序列化漏洞ASP.NET處理方式 經得起原始碼資安弱點掃描的程式設計習慣培養(三)_7.Cross Site Scripting(XSS)_Stored XSS_Reflected XSS All Clients 經得起原始碼資安弱點掃描的程式設計習慣培養(四)_1.Injection注入攻擊_SQL Injection)_order by 語句正確參數化套入 經得起原始碼資安弱點掃描的程式設計習慣培養(四)_2.Injection注入攻擊_SQL Injection_In語句正確參數化套入 經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header 經得起原始碼資安弱點掃描的程式設計習慣培養(六)_Path Traversal 經得起原始碼資安弱點掃描的程式設計習慣培養(七)_Code Injection 經得起原始碼資安弱點掃描的程式設計習慣培養(八)_Client DOM XSS 經得起原始碼資安弱點掃描的程式設計習慣培養(九)_Use of Cryptographically Weak PRNG(Pseudo-Random Number Generator) 經得起原始碼資安弱點掃描的程式設計習慣培養(十)_Heap Inspection 經得起原始碼資安弱點掃描的程式設計習慣培養(十一)_HttpOnlyCookies In Config 經得起原始碼資安弱點掃描的程式設計習慣培養(十二)_Data Filter Injection 可能發生的問題 將資料存於純文字會讓擁有瀏覽伺服器權限的使用者獲得機密資料。 原因 資料庫的欄位以明文形式儲存,代表如果能通到SQL server 就能輕鬆讀取資料。 將資料存入欄位時加密,既可以保密也不會有風險 。 建議 欄位加密是在SQL server 2017 以及 Azure SQL DB才問世的,如果 在使用這兩個伺服器的話,建議開起Column Encryption 來 確保在SQL server的資料是安全的。