2020年12月24日 星期四

如何下載 新版 facebook 非公開的私人影片

如何下載 新版 facebook 非公開的私人影片

FB並沒有加密是能夠下載的,原本舊版的介面更容易直接切手機板就能下載了,現在新版的禁止了,但是還能夠下載,需要第三方軟體。

jdownloader:https://jdownloader.org/download/index

載好之後我們就開始吧~
(之前看過有人在質疑這個軟體的安全性,這個軟體是開源的有問題會被看到的)

記得先打開這個軟體在開始以下步驟,打開之後會自動掃描剪貼簿

步驟

  1. 改為手機板頁面
    先把你的網址 www.facebook.com 改成 m.facebook.com 強制切成手機板
    如果影片的連結跳掉了,再重新用手機板介面點出來就好

  2. 按右鍵 檢視網頁原始碼
    進去之後按CTRL+A把全部的原始碼都複製

  3. 回到Jdownloder的介面下載

這時候已經發現他自動掃描出很多東西,上面點一下依照容量排序


這裡就能找出最大容量的,也就是我們要下載的影片


按右鍵啟動下載就會開始下載了

2020年11月24日 星期二

かと思うほど

かと思うほど

社團上看別人發問的問題,關於這個句子怎麼翻譯

よくこんな汚い部屋に住んでいられるものだと思うほど散らかっている家に住んでいる人がいます

查了一下發現 かと思うほど 這個語法並不是固定的語法,是組起來的所以沒有成套的介紹可以看,翻譯覺得很卡,就順手理了一下怎麼翻比較順。

最小化系統

看到不懂的總之先把可以變成一個東西的東西變成一個,簡單的擊破之後當作公式帶進去就解決了。

夢かと思うほど嬉しかったです

  • 簡直就像做夢一樣般的開心
  • 開心到讓人覺得就像在作夢一般

ネイティブかと思うほど英語が上手な人がいる

  • 簡直就像母語者一樣般的英文厲害的人
  • 有英文厲害到讓人覺得像母語者般的人

Aかと思うB人がいる

  • 簡直就像A一樣般B的人
  • 有B到讓人覺得像是A般的人

本番

A よくこんな汚い部屋に住んでいられるものだ

怎麼可能在這麼髒的房間裡住下阿!
(星號是ものだ,看情況自己替換更嚴重的詞彙)

B 散らかっている家に住んでいる

住在雜亂不勘的家

よくこんな汚い部屋に住んでいられるものだと思うほど散らかっている家に住んでいる人がいます

直接套上面公式會卡卡的,看前後文狀況發揮自己的想像力加減字。

  • 有[住在雜亂不勘的家]到讓人覺得像是[怎麼可能在這麼髒的房間裡住下阿]般的人
  • 有人家裡雜亂不堪到,讓人佩服怎麼能在這麼髒的房間裡住下阿。

2020年11月7日 星期六

edge瀏覽器 因為應用程式的並列設定不正確 無法啟動

edge瀏覽器 因為應用程式的並列設定不正確 無法啟動

這真的是微軟在搞事,不給重新安裝測試了好多方法才弄好

無法方法

  • 安裝各種 C++ 可轉發套件
  • 電腦王阿達的重新安裝方法(新版Win10不給你刪除)

最後解法

參考自這一篇如何下載egde離線安裝包 https://www.techtantri.com/zh-tw/how-to-reinstall-microsoft-edge-browser/

可以不用點進去接下來會說要幹嘛
簡單來說呢先到這個微軟的網站下載最新版離線安裝包
https://www.microsoft.com/en-us/edge/business/download

它會讓你選版本,要一路選到最後才能按下載。

載好之後直接開來安裝,不過不知道為何]閃一下就消失了。

OK然後這樣就修好了…

2020年10月21日 星期三

筆電 WIFI突然消失 裝置管理員驚嘆號 重裝也無效

筆電 WIFI突然消失 裝置管理員驚嘆號 重裝也無效
===

無線網卡的型號是 Intel(R) Wireless-AC9560 ,估計應該是通病。

事情發生在我朋友身上,他公司筆電的WIFI突然消失不見了,這我也曾經遇過但是忘記怎麼怎麼解決了,繞了好大一圈才好。

為什麼會消失的原因跟我是一樣的,就是在測試AP的時候不斷地拔差有線網路,然後突然無線網卡就消失不見了。

進管理員看也是驚嘆號,各種重新安裝驅動、解除驅動重裝、更新驅動,都無效,最後的解決的辦法居然只是"強制關機"然後再開機。重開機沒用一定得關機才有用。

估計是踩到韌體內的BUG了,導致重新開機雖然電腦是重開了但是並沒有斷掉無線網卡的供電,所以那張卡本身並沒有真正重啟。

我之前也遇過那一次我不記得怎麼解決了,記得我也測試了很多辦法,最後沒辦法只好插外接天線先撐著用,然後過幾天自己好了,現在想想應該是因為我關機過了,所以它好了。


2020年9月15日 星期二

を食べたい が食べたい を好き が好き 的差別

を食べたい が食べたい を好き が好き 的差別

先說最簡單的結論
這兩個詞標準的用法是が、を是屬於近代演變而來的講法。
本篇內容是參考自最底下的參考連結,我把GOOGLE前幾頁相關的都看過了,取一些覺得最有用的例子貼上來,並依照我自己的理解打成成這篇文章。其中例句是取自那些網站的。

原始意義

  • 「Aが食べたい」 重點在我要A這個東西,BC不要,我就選A。
  • 「Aを食べたい」 重點在你要對A做什麼,吃掉丟掉,我選吃。

意思是排他的限定,別的不要我就要這個。用於你當下你要「什麼」。
比如說服務生問你要點什麼菜,那妳回答
ケーキが食べたい
「Aが食べたい」 重點在我要A這個東西,BC不要,我就選A。

意思專注在後面的動詞上。用於當下回答別人你要怎麼「處理」。
比如說有人問你,你想對這個蛋糕做什麼。
ケーキを食べたい
「Aを食べたい」 重點在你要對A做什麼,吃掉丟掉,我選吃。

衍伸意義(近代日語)

  • 「が食べたい」 積極,表示當下的強烈欲望。(短句)
  • 「を食べたい」 平淡,多用於表示客觀說明和敘述。(長句)
最初為什麼要講”を食べたい”我是沒有查到原因,不過我猜可能單純只是懶癌發作,沒思考就直接把”を食べる”照搬過來吧。講的人太多擴散到一定程度,漸漸也成為標準了。不過僅限於口語,書寫不會這樣用。因為是演化而來的所以意思有可能會因人而異。
を比較常被用到長句上。帶有說明和敘述的語境。
おいしいラーメンを食べたいなら、ここがおすすめです。
就不會有が那麼強烈,「現在、就是、只要」吃拉麵,的這種語境。

主語問題

が 其實還有第二個作用是提示主語,也就是這件事情是誰做的。
前面的動詞吃,因為不會涉及到第二個人所以沒有這個問題。
舉個例子吧,先從簡單沒問題的來
君が好き
這個很常見,想必大家也都沒有疑惑的很直覺的就是知道是「我喜歡你」。

那如果再加一點東西進來,當後面的詞涉及兩個人的時候怎麼辦呢?
君が好きな人
如果把它當作是主語就變成
”君が”好きな人(「你」喜歡的人)
如果把他當做好き的對象 (例句1的思維拿過來用)
”君が好き”な人(「喜歡你」的人)
這就剛尬了,如果是不常用且複雜的句子,就有可能有人會搞混想成另一個意思。
(註:因為這個例句不算複雜不會搞混有正解,多數日本人會先想到前者的意思)

為了解決這個問題,可以把它說成を。
君を好きな人 (「喜歡你」的人)
這下沒有「是不是主語」的干擾,就很直覺的是「喜歡你的人」這樣了。
順帶一提這還有一個解,把N5學的こと加上就好了。
君のことが好きな人 (喜歡你的人)

有點混亂最後統整一下
  • 君のことが好きな人 (喜歡你的人)
  • 君を好きな人 (喜歡你的人)

  • 君が好きな人 (「你」喜歡的人)
  • 君の好きな人 (你喜歡的人)

  • 君が好き (我只喜歡你一個)
  • 君のことが好き (我喜歡你)

  • 君が僕の好きな人 (你是我喜歡的人)
  • 僕の好きな人は君だ (我喜歡的人是你)

反例-只能用を

這邊介紹一個反利只能用を的例子,主因是這個動詞的特性導致的。
我想殺了他
私は彼を殺したいです
這邊只能用を的原因,一樣可以套剛剛的情境。
「想對他”做什麼”」
因為仇恨呀什麼的,導致想對他”做OO”。
用が的話,重點會變成是「他」不是其他人我就是要選他。
也就是當有人問你,在這些人裡面你要選擇殺誰
(私は)彼が殺したいです
此時這用法才會成立。不過因為基本不會發生,所以沒人會這樣講。

然後這裡也有主語的問題,如果沒有前後文只有單一一個句子。
彼が殺したいです
就搞不清楚那個が到底是怎麼回事,是不是主語。
第一直覺可能會覺得你中間是不是漏講了。
彼が (OOを) 殺したいです


參考

2020年9月7日 星期一

日文 一A馬上就B 相關文法統合說明

日文 一A馬上就B 相關文法統合說明

整理了<一A馬上就B>的相關文法,主要是寫下關鍵情境,這不是教科書上面會寫明白的事情,通常只能自己體悟。
關鍵情境這是我自己學習的方法,意思是指這個文法用在樣的情境下非常的合適,並不是說一定只能只能放這個文法,而是這個文法最適合。直接把關鍵情境背下來效率最高了,一看到這個文法馬上聯想到這個情境而不是對應的中文解釋。關鍵情境可以是中文例句,也可以是你腦袋的小故事,總之讓你能夠深入情境的描述。
像背單字一般直接死背文法的中文解釋,很多時候換一個情境可能就不適合了即便中文是適合的,導致很多學習文法的文不知道該怎麼學,換了一個例句為什麼就錯了?或是發生哪種文法正確、意思能夠傳達,卻錯誤的窘況。
舉個中文的例子。嗎? 和 呢? 的問題。
請問我可以拿這個東西呢?
你先會先疑惑一下,然後,歐他是外國人。然後能理解他的意思。
直接背下關鍵情境可以讓你更自然的把文法融入到日文腦裏面去,直接進入二階知識裡面去,可以避開一定程度的不自然句子,當妳需要用的時候很自然會說出口了。其實就是模擬學母語的情況拉,沒有對應的翻譯,純粹靠關鍵場景來感知。

參考資料

關於例句的部分,並不是我自己原創的參考以下兩個來源。
以下正文開始。


が早いか

動辞形+が早いか
チャイムが鳴るが早いか、生徒たちは教室を飛び出していった。

解釋

剛剛一A就馬上B。

關鍵場景

主要是形容當下那個<迫不及待>的場景,已經等很久了就等著打鐘了。

や / や否や

動辞形+や
動辞形+や否や
タバコを吸うや否や、火災報知器が鳴り響いた。

解釋

A之後幾乎與此同時B
剛剛A立刻就B

關鍵場景

前後的句子會有關聯感,因為A而意外發生B這樣的事實,的這種語境。
翻譯雖然應該翻作一抽菸火災警報器就立刻響了,但背後的語境帶有,因為抽菸才導致警報器響的這種連結。
雖然並不是全部例句都帶有這種屬性,也那種沒辦法用這個方式解釋的例句,而是有這種語境的句子一定就選這個詞。

そばから

動辞形+そばから
動た形+そばから
覚えたそばから忘れていく。

解釋

剛剛A就馬上B

關鍵場景

關鍵在<反覆相殺>,這件事情反覆發生而且是相殺關係。
相殺是日文,意旨互相抵消的意思。
背單字的時候常常剛記住過不久又馬上忘記。
媽媽做好飯兒子馬上就吃掉了。
這些情境都是A增加,B馬上抵銷。而已並不是指這一次而已,而是發生很多次了所以用上這個文法。

なり

動辞形+なり
彼はコーヒーを一口飲むなり、吐き出してしまった。
彼は家を出るなり、母親に呼び止められた。
その男は私と目が合うなり、追いかけてきた。

解釋

剛A就立刻B
一A就B

關鍵場景

才剛做完A,就發生完全在預想外的B。
發生的那件事是你完全沒想到的突發事件,不按牌理出牌,讓人傻眼的感覺。
通常只用說講別人,不會用來敘述自己的事情。
為什麼會這樣是因為後面要接意志文
  1. 一個人有意識的做讓你感到意外的事情,多半就是你感到問號,這人在幹嘛的情境。
  2. 如果是第一人稱,就變成你自己都知道自己的意志文要做什麼了,又要怎麼感到意外呢。
但並不是所有情況都是必須第三人稱。意外的意志行為也可以是第一人稱的。
帰宅するなり真っ先にベッドにダイブした。
我一回家就倒在床上了。這可以解釋成自己也沒想到,只是躺一下結果就意外睡著了。或是原本沒打算要去躺,只是不知道為什麼意外的回到家後覺得很累,就跑去躺了。
私はその知らせを聞くなり、すぐさま家を飛び出した
急忙地出門是意志行為,但是是因為聽到某個消息導致的意外行為。
這種情況就是,行為本身是意志行為自己想做的,但是是因為意外導致這個行為出現的。如果直接按照中文的方式思考,這個地方很容易出錯,解釋本身不帶這個語境。

たとたん

動た形+たとたん
国の母に電話を掛けた。母の声を聞いた途端、涙があふれて来た。
家出た途端雨強まってきた。

解釋

剛剛A的那一剎那就B

關鍵場景

才剛做完的A的那一剎那就發生意外的B。
不是不按牌理出牌讓人傻眼的意外,就是單純阿怎麼會這樣的意外。
這是因為後接非意志文,就是敘述事實的句子,所以整體給人的感覺會是客觀的阿怎麼會這樣。
比起なり,這可以用來說自己,而且多了剎那有那種在講那個當下的情境。

かと思うと/かと思うたら

句子+かと思うと/かと思うたら
赤ちゃんは笑ったかと思ったら、急に泣き出した。

解釋

原本以為A卻B
才剛A而已沒想到卻B

關鍵場景

才剛A而已馬上就發生與預想相反的意外B。
只能用來說別人。

か~ないかのうちに

[動辞形]+か [ない形]+かのうちに
チャイムが鳴るか鳴らないかのうちに、学生は教室を出て行った。

解釋

剛A馬上立刻B。

關鍵場景

強調那個馬上立刻。

次第

ます形+次第
授業が終わり次第、事務所に来てください。
社長が着き次第、会議を始めます。

解釋

A一結束後馬上做B。

關鍵場景

商業場合,比較正式的用法。

2020年9月6日 星期日

河內塔 C++範例代碼 非遞迴詳細解說

河內塔 C++範例代碼 非遞迴詳細解說

玩法與規則

河內塔的玩法與規則詳細可以簡單看一下這一篇,裡面也有三階如何破關的演示。
https://sites.google.com/a/g2.nctu.edu.tw/unimath/2017-11/Hanoi

非遞迴解解法

再來直接進入主題,這個解法是直接看規則得出來的可能跟其他正規的解法不太一樣。
首先把這三個柱子分成 0 1 2 編號,並且制定的一些規則。
這張圖先看一眼,下面會解說上面的含意。

移動相關的說明

先說明移動的規則,這也是整個代碼最核心的部分。
以下的說明如果提到 無法移動 就是違反這些規則了。
  1. 只能把小的疊在大的上面
    遊戲本身的規則。不一定要差1,可以把1疊到3上面。
  2. 不要重複上一步驟
    這很直覺的別做沒有意義的行為,犯傻進入無限迴圈。

發牌

指從 [0柱] 移動到 [1柱] 或 [2柱] 的意思。
具體移動到哪個一個依據下面的情況 ,依據階層有不同的順序。
階層指的時候一開始的時候玩幾個盤子。
先發哪一柱會影響最後完成的柱在哪裡。依照底下規則可以保證完成柱在[2柱]
  • 奇數階層:每一次發牌的時候優先發[2柱]
  • 偶數階層:每一次發牌的時候優先發[1柱]
如果無法移動才發到另一柱,比如說奇數階層的時候,發牌無法發到2柱,那就往1柱發。
然後這裡有一點要注意的規則
  • <收牌>後不可以再<發牌>
就是說你發的時候要檢查一下,上一步有沒有收過牌
不管是從 [1柱] 或 [2柱] 收回來的都算。

收牌

指從 [1柱] 或 [2柱] 移動到 [0柱] 的意思。

組牌

當 [1柱] 和 [2柱] 最頂層的絕對差值等於1的時候,把小的疊到大的上面去。


核心算法

有了前面的理解之後接下來是如何解題的算法,如果你把它看懂了可以嘗試實際去玩玩,我也建議實際玩過幾輪再開始寫,可以更深刻的理解。照著下面的規則走,可以走出最少步驟。

最少步數

最小步數是 2的N次方-1,如果是只玩3層那就是 2的三次方-1=7,依此類推。
知道最多走幾步,也就是什麼時候結束,這可以用來設置迴圈上限。

條件

總共就分3個條件走,其中只要有任一個條件成立,移動完畢,就回頭重第一個條件重新跑過。
  1. 發牌
  2. 組牌
  3. 處理1柱和2柱
前兩個很容易,只要注意有沒有採到移動的規則就好。
第三個比較麻煩一點以下詳細說明
先知道當前1柱和2柱最層的大小,兩個大小的差值是基數還有偶數
基本這個數會大於1因為步驟2組起來了,但也有等於1的時候 (如底下實例中的第[10]步)
發生在組牌的時候正好踩到移動的限制,重複上一步驟。
如果差值是奇數
  • 把1柱和2柱中,小的那個收回0柱。
  • 如果上面步驟重上一步,複無法移動,則把大數收回。
如果差值是偶數
  • 把小的疊到大數上
  • 如果上面步驟重複上一步,無法移動,則把大數收回。
就照這幾個條件一直走下去,可以破關了。

實際演示

這是跑出來的實際步驟,可以對照著看上面的規則。
[0] 4, 3, 2, 1,
[1]
[2]
[step:0]--------init
---------------------------
[0] 4, 3, 2,
[1] 1,
[2]
[step:1]--------發牌
---------------------------
[0] 4, 3,
[1] 1,
[2] 2,
[step:2]--------發牌
---------------------------
[0] 4, 3,
[1]
[2] 2, 1,
[step:3]--------組牌
---------------------------
[0] 4,
[1] 3,
[2] 2, 1,
[step:4]--------發牌
---------------------------
[0] 4, 1,
[1] 3,
[2] 2,
[step:5]--------牌值差雙
---------------------------
[0] 4, 1,
[1] 3, 2,
[2]
[step:6]--------組牌
---------------------------
[0] 4,
[1] 3, 2, 1,
[2]
[step:7]--------發牌
---------------------------
[0]
[1] 3, 2, 1,
[2] 4,
[step:8]--------發牌
---------------------------
[0]
[1] 3, 2,
[2] 4, 1,
[step:9]--------牌值差單
---------------------------
[0] 2,
[1] 3,
[2] 4, 1,
[step:10]--------牌值差單
---------------------------
[0] 2, 1,
[1] 3,
[2] 4,
[step:11]--------牌值差雙
---------------------------
[0] 2, 1,
[1]
[2] 4, 3,
[step:12]--------組牌
---------------------------
[0] 2,
[1] 1,
[2] 4, 3,
[step:13]--------發牌
---------------------------
[0]
[1] 1,
[2] 4, 3, 2,
[step:14]--------發牌
---------------------------
[0]
[1]
[2] 4, 3, 2, 1,
[step:15]--------組牌
---------------------------


程式碼解析

基本上就是把上面的文字寫成代碼而已,可以注意看if else的階層,判斷邏輯會比較清楚。
        for (int i = 0; i < step_min; ++i) {
            int step = i+1;
            // 發牌
            if (sent()) {
                print("發牌", step);
            // 組牌
            } else if (defrag()) {
                print("組牌", step);
            } else {
                int diff = abs(p[1] - p[2]);
                // 牌值差雙
                if (diff % 2 == 0 and adju_even()) {
                    print("牌值差雙", step);
                }
                // 牌值差單
                else if (diff % 2 == 1 and adju_odd()) {
                    print("牌值差單", step);
                } else {
                    throw "沒有動作";
                }
            }
        }
代碼可以參考我的github
https://github.com/hunandy14/Hanoi