2018年12月11日 星期二

[其他] outlook信件資料夾的信件不見

今天遇到有人outlook 資料夾點進去沒有信件

但還是有顯示幾封信的數字

查了一下,原來是被篩選掉了

解法 : 點擊資料夾 -> 上面選"檢視" ->  檢視設定 -> 篩選 -> 進階 -> 把裡面篩選準則都刪掉即可




ps. 之後可以到"變更檢視"套用到其他資料夾中

2018年12月7日 星期五

遠見 - 邏輯測驗

轉 : https://www.gvm.com.tw/article.html?id=53731

以下共有18道題目,前兩題分別是華爾街投資銀行的面試題目及知名的史丹佛考題,主要測你解決、分析問題的能力;後面16題則完全是考你的邏輯能力,你學生時期有沒有好好背「非P則Q」,一測就知道!

測驗方式說明

前2題請直接寫下你的做法及理由;後面16題邏輯題,則在你覺得「為真」的句子前打勾,不一定每題都有正確答案,也可能都沒有,請注意囉!

【第一題】

想像你正被綁在椅子上動彈不得,歹徒拿著一把6個槍膛全空的槍,再裝兩顆子彈進兩個緊鄰的槍膛內,並旋轉槍膛。然後對著你的腦袋扣板機一下,很幸運你還活著,這時他說再扣一次板機就放你走,你希望先旋轉後再扣或直接扣板機?為什麼?

2018年11月30日 星期五

[SQL] SQL PASS 學習


201811/29 SQL Pass

學到 :
1.null vs 空字串 vs space

2.DB 的raw log content 0 資料流解讀:
  因此可用此還原data

3.利用db log追蹤驗證下述主題的原因
查詢db log 及寫入log:
dbcc traceon 3604  ---> 允許輸出db , server level系統資訊出來

4.會使用transaction三個特點,

5.delete vs truncate

6.table variable @ vs temp table #

7.cursor vs while


2018年11月27日 星期二

[其他] Thinkpad Fn 熱鍵突然跑掉問題

今天遇到我的鍵盤最上面Fx全部失效問題

全部變成調整音量大小或調整亮度的fn 功能鍵

我想要編譯都不行...orz

一陣嘗試之後,終於發現應該是自己改到thinkpad 的功能鍵 Fn的預設定

導致他會切換預設功能變成Fn + Fx的狀態...


結論 :嘗試Fn + ESC 切換回原本狀態即可

---

參考 : 網址

舊版要進bios改

Legacy模式:表示使用热键时需要按住Fn键,然后再按相应的热键。
Default模式:表示使用热键时无需按住Fn键,直接使用即可。

2018年9月13日 星期四

[加密] Header Authentication (1) - 建立取用API Token


API Authorization 有很多方式


一般的身份驗證方式是向server發出request取得token,再拿token去呼叫server API


那第一步該如何製作取得token 的API部分, 我在網路上看到一些基本basic auth


會把帳密加密後,然後放在header傳給server, 但這樣瀏覽器按個F12檢查,就能查到


basic token,這樣就可以拿來使用....


因此,建議加入timestamp與限制期限的token來防止有心人士濫用




流程如下 :


1. 準備一組帳密 (ex. admin, 123456)


2. 把密碼跟timestamp做SHA256加密


3. 把此加密token放到header, post data 則打上帳號與timestamp, 發出request


4. server 端, 即可把拿到帳號與timestamp做一次一樣的加密來比對


如此一來,密碼本身不會洩露出來,也可以在server限制timestamp的期限,讓別人不容易使用token







2018年5月29日 星期二

[SQL] 資料庫log過大問題


近期遇到備份儘管使用差異備份依舊非常龐大

檢查之下發現,原來是因為log table

難怪差異備份沒有幫助


接下來備份log之後, 再來把該table清空,

接著遇到資料庫交易記錄檔過大,

如果需要移除交易記錄(許可下當然事先備份出來再刪除)可參考下述

[SQL] 交易記錄檔 LDF 太大 (趴兔) - 使用 DBCC Shrinkfile


這裡使用DBCC SHRINKFILE來移除


USE TESTDB
GO
ALTER DATABASE TESTDB SET RECOVERY SIMPLE WITH NO_WAIT
DBCC SHRINKFILE(TESTDB_log, 1)
ALTER DATABASE TESTDB SET RECOVERY FULL WITH NO_WAIT
GO

這樣暫時清出空間,如果再不行就要來考慮壓縮資料表了~

2018年5月23日 星期三

[NET] 程式爬文的問題 WebClient vs HttpClient vs HttpWebRequest


最近需求是用程式爬文,我遇到使用webclient解析html居然跟瀏覽器看到的不一樣

後來找到一篇文章

WebClient vs HttpClient vs HttpWebRequest

描述各自解析的不同,以及最後提供一個簡易的解決方案使用restsharp套件

這套件postman新版的也能直接產生code

可說是相當便利~


最後我是使用HttpClient來取代WebClient使用~

2018年4月19日 星期四

[C#] 判斷星期幾

星期一 ~ 星期日

var today = DateTime.Now;


if (today.DayOfWeek == DayOfWeek.Monday)

if (today.DayOfWeek == DayOfWeek.Tuesday)

if (today.DayOfWeek == DayOfWeek.Wednesday)

if (today.DayOfWeek == DayOfWeek.Thursday)

if (today.DayOfWeek == DayOfWeek.Friday)

if (today.DayOfWeek == DayOfWeek.Saturday)

if (today.DayOfWeek == DayOfWeek.Sunday)

...

2018年4月10日 星期二

[Logic] Find the unique number

題目 :
There is an array with some numbers. All numbers are equal except for one. Try to find it!

findUniq([ 1, 1, 1, 2, 1, 1 ]) === 2
findUniq([ 0, 0, 0.55, 0, 0 ]) === 0.55

-----

my ans :
 public static int GetUnique(IEnumerable<int> numbers)
  {
     var result = numbers.GroupBy(
      c => c,
      (key,g) => new { a = key, count = g.Count()})
      .Where(c => c.count == 1)
      .Select(c => c.a).Single();

     return result;
  }

2018年4月3日 星期二

[Logic] IQ Test

題目 :

Bob is preparing to pass IQ test. The most frequent task in this test is to find out which one of the given numbers differs from the others. Bob observed that one number usually differs from the others in evenness. Help Bob — to check his answers, he needs a program that among the given numbers finds one that is different in evenness, and return a position of this number.

! Keep in mind that your task is to help Bob solve a real IQ test, which means indexes of the elements start from 1 (not 0)

##Examples :

IQ.Test("2 4 7 8 10") => 3 // Third number is odd, while the rest of the numbers are even

IQ.Test("1 2 1 1") => 2 // Second number is even, while the rest of the numbers are odd


不加思索的弱code :

var list = numbers.Split(' ');
var temp = int.Parse(list[0]) % 2;
var temp2 = int.Parse(list[1]) % 2;
var count = 3;

for (int i = 2; i < list.Count(); i++)
{
var a = int.Parse(list[i])% 2;
if ( a != temp && temp == temp2 )
{
break;
}
else if ( a != temp && temp != temp2 )
{
count = 1;
break;
}
else if ( a != temp2 && temp != temp2 )
{
count = 2;
break;
}
count++;
}
return count++;

---

優雅的code :

  var nums = numbers.Split(' ').Select(n => int.Parse(n));
  var isEven = nums.Count(n => n % 2 == 0) == 1;
  return nums.Select(n => n % 2 == (isEven ? 0 : 1)).ToList().IndexOf(true) + 1;

2018年3月15日 星期四

[SQL] sql server 定期資料庫備份


定期因為容量不足,因此把原本的完整備份調整為差異備份,

因此簡單介紹一下設定備份流程


2018年3月1日 星期四

[C#] winfrom 關閉後,後台程序依舊執行中問題


之前一直遇到這樣的問題,導致同仁無法正常更新

查了一下,似乎是舊程式沒有在form表單關閉時在觸發解構相關事件

所以補上了下述,看看之後情況會部會改善

 private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
        {
            //FormClosed事件程式碼
            Dispose();
            Application.Exit();     
        }

[C#] 西元年轉民國年格式


需求是將西元年日期轉為民國格式日期,以下做個method 紀錄

ex.2017/01/31 --> 106/01/31

 public class DateHelper
    {
        /// <summary>
        /// 解析成民國時間 ex.106/01/31
        /// </summary>
        /// <param name="datetime">西元時間</param>
        /// <returns></returns>
        public static string ParseToTaiwanDate(DateTime datetime)
        {
            System.Globalization.TaiwanCalendar tc = new System.Globalization.TaiwanCalendar();

            return string.Format("{0}/{1}/{2}",
                tc.GetYear(datetime),
                datetime.Month.ToString("00"),
                datetime.Day.ToString("00"));
        }

        public static string ParseToTaiwanYearMonth(DateTime datetime)
        {
            System.Globalization.TaiwanCalendar tc = new System.Globalization.TaiwanCalendar();

            return string.Format("{0}/{1}",
                tc.GetYear(datetime),
                datetime.Month.ToString("00"));
        }

        public static string ParseToTaiwanYear(DateTime datetime)
        {
            System.Globalization.TaiwanCalendar tc = new System.Globalization.TaiwanCalendar();

            return string.Format("{0}",
                tc.GetYear(datetime));
        }
    }


[C#] 取得前一月的月初、月末日


ref :  並自行修改

DateTime FirstDay = DateTime.Now.AddMonths(-1).AddDays(-DateTime.Now.AddMonths(-1).Day+1);
 DateTime LastDay = DateTime.Now.AddDays(-DateTime.Now.Day);