Blob 物件

了解 Blob 是什麼以及如何使用它 網頁瀏覽器實作了 Blob 物件,它可以負責存儲數據。 Blob 代表「二進制大型物件」,它是不透明的一組字節。 Blob 可用於許多用途。 它們可以從網路內容中創建,可以保存到磁盤中,或從磁盤中讀取。它們是 FileReader API 中使用的 File 的基礎數據結構,例如。 Blob 可以使用通道消息 API 在 Web Workers 和 iframe 之間進行傳遞,也可以使用推送 API 從服務器傳遞到客戶端。 Blob 也可以使用 URL 來引用。 您可以提取存儲在 Blob 中的文本(或字節),並且 Blob 甚至可以直接存儲在 IndexedDB 中,同樣可以從那裡檢索出來。 查看我的 IndexedDB 教程 Blob 是一種重要的數據類型需要理解。 可以通過以下方式創建 Blob: 使用 Blob() 構造函數 使用 Blob.slice() 實例方法從另一個 Blob 中創建 構造函數接受一個值的數組。即使只有一個要放入 Blob 中的字符串,也必須將其包裹在數組中。 例如: const data = new Blob(['Test']) 您不需要放入 [String] 值。您可以傳遞: 字符串 ArrayBuffer ArrayBufferView 其它 blobs Blob 构造函數接受可選的第二個參數,它代表 MIME 類型:...

blog-goals

選擇您的博客目標 您可以開始一個博客的原因有很多。每個人的抱負、動力和起點都不一樣。 您想找一份工作 博客的一個目標可能是幫助您找到第一份工作。 假設您正在為初級前端開發人員的面試做準備。您正在學習技術並進行實驗,也許還在跟隨網上課程,並記錄您所學到的一切。 我認為這有以下三個好處: 增強您的學習力 建立您的線上形象 訓練您的技術文檔和解釋能力 當您接近面試並發送申請時,公司會注意到您有一個網站。他們會發現您擅長解釋技術,知道如何溝通,並且肯定了解您的專長。 這絕對是優於其他沒有網站的求職者的一個巨大優勢。 您想獲得加薪或更好的工作 如果您已經有一份工作,您可能想提升職業發展,獲得更好的薪水,或者轉向您感興趣的領域。 擁有一個博客,使您在您想要從事的領域成為一個專家,絕對是一個巨大的加分項。 您可以在目前的公司利用您的博客重新定位自己為高級開發人員。 您的同事會尊敬您以及您的文章,並把您視為該領域的權威。 您想要獲得更好/更多的客戶 如果您對獲得一份工作不感興趣,並且更喜歡做獨立的自由職業者,擁有一個博客對您來說可能會帶來意想不到的改變。 我在剛開始我的技術生涯時就親身經歷了這種情況。 我通過在自由職業網站上找到工作開始我的職業生涯。在很多情況下,競爭對手是世界各地更有經驗的自由職業者,有時他們所在地的生活成本更低,他們能夠以相對較低的價格提供相同的服務。 我開設了一個關於我專攻的主題的博客,這是一個使用我的母語意大利語撰寫的開源CMS,並且來自意大利的人們開始認可我作為一個專家。他們更願意支付更高的價格,以與一位以他們的語言溝通、在他們的時區工作並且是該國少數專家之一的人合作。 我的博客起到了關鍵作用,因為人們會搜索他們知道他們需要幫助的主題 - 並找到我。 有一段時間,我甚至能夠拒絕一些客戶的提案,因為我有太多的需求。我可以選擇那些我認為對我的業務更有利和更有趣的客戶。 您想展示您的專業知識 不論是找工作還是自由職業客戶,一個常見的好處就是:博客可以幫助您展示您的專業知識,讓其他人了解您所知道的東西。 有些人天生更善於展示自己的能力。 有時候,根據文化和認知,我們甚至可以認為他們比實際上更有能力。 其他一些人則不太願意,可能是因為內向或害羞。 撰寫博客是展示您專業知識的絕佳方式,即使您並不天生愿意公開展示。 這是因為與在YouTube上使用視頻展示自己的樣貌相比,撰寫博客的閾值要低得多。 您想記錄自己的學習 博客的一項偉大目標可能是記錄您的學習。也許您現在對於在就業市場上更具競爭力並不感興趣,或者您只是想寫寫您的愛好。 博客是您所學一切的一個很好的記錄。 比如說,我記憶力很差,有時我只是創建一篇博客文章來記住我是如何讓某個東西運行的。 以前我會在電腦上的一個應用程序上寫筆記,但現在我通常會寫博客文章,因為我意識到通過在互聯網上發布我的筆記,我可以幫助其他人。 您想結構化自己的思緒並且學到更多 在學校時,我最擅長的學習方法是為一個主題製作詳細的筆記。 然而,我只為我感興趣的科目製作筆記,這反映了我為什麼在某些課程中表現得好而在其他課程中表現得不好。 您可以使用博客來更好地學習。 我是博客學習的支持者,因為這能起到事半功倍的效果。 我通過博客學習一個主題,同時也幫助其他人。 當我寫一篇新博客文章時,我被迫為這個主題創建一個思維導圖,並在寫作之前試圖結構化它。 通過這種方式,我比閱讀一本書或者觀看一個課程而不進行有組織的筆記更多地學到東西。而且作為一個附帶的好處,我最終會得到一篇可以發布的新博客文章。 您想更擅長解釋事物 博客的一個巨大好處是,隨著時間的推移,您將變得更擅長解釋事物。 您會更少想當然地看待事物,並從聽眾的角度思考,而不僅僅是寫一大堆字以被認為是一個專家。 這將在您的職業生涯和個人成長方面對您有很大幫助。 您想發展自己的受眾 擁有自己的博客的一個巨大好處是,隨著時間的推移,您將開始建立自己的受眾。 和許多事情一樣,您投入的時間越多,您的受眾很可能就越多。 人們可能會認識您。記住您的名字。您不會變得出名(除非有個別情況),但這也可能不是您想要的。 這不是一個受眾的目的。坦率地說,我看到很多開發人員在涉及市場推廣時表示懷疑。 一個受眾是測試您的想法的一個絕佳場所。受眾可以幫助您弄清楚某些問題。受眾是您的一群人,是信任您並可以幫助您提升至下一個水平的人。 您想表達自己 博客不一定需要成為達到目標的手段。 我最喜歡的博客是那些創造力和表達的遊樂場,特別是在編程和計算機等方面。 博客是有關您過去所有創意項目的記錄。 您自己的創意中心。

blog-seo

我每天寫了兩年的部落格文章,這是我對於SEO學到的5件事情 從2018年1月25日開始,在我35歲生日前一天,我開始了我的部落格之旅。 在這篇部落格文章中,我打算告訴你五件有關SEO的事情,這些事情你可能還不熟悉。 SEO技巧一:不要擔心SEO 如果你在網路上閱讀如何吸引更多讀者到你的部落格的方法,你會發現SEO是其中一個經常被提到的事情。 大多數時候,你會看到人們談論關鍵字和關鍵字工具。 我們喜歡工具,所以我們開始使用它們,花了很多時間從免費工具中獲得最大價值。 對吧?錯了。 我得坦白,我從來沒有使用過關鍵字工具。我目前也不使用,而且我發現只是想到它就讓我覺得無聊。 我最不想做的事情就是讓自己無聊,並把我的部落格當成一份工作。 在寫部落格文章之前要先研究關鍵字的想法讓我覺得寫部落格變成了一份工作。而我不喜歡工作。 SEO技巧二:建立連結是選用的 除了關鍵字研究之外,SEO圈子中常常出現的另一個事情就是建立連結。 我確實收到了很多要求我連結到某個網站的郵件,要求我連結到某個特殊設計的關於我提到的某件事情的圖表,這些都有點煩人。 我相信這是有效的,因為連結仍然是搜索引擎使用的重要指標之一,但你真的想要花時間去煩擾他人嗎? 我從來沒有按照要求添加任何連結。無論是免費的還是付費的,我從未要求連結。 如果你作為一名開發者考慮建立所有相互連結的網站網絡,這件事情已經被做過了,而且谷歌也對此采取了相應的措施。即使你沒有被發現,這也是一場骯髒的遊戲。 並且連結必須來自於與你想要排名的特定領域相關且權威的網站。你可以創建一個廚房食譜部落格,然後從一個編程部落格中添加連結,但真正有效的是一個大型的食譜部落格連結到小型的食譜部落格。 最初,為其他網站創建內容是實現這一目標的一種方式。大型網站總是需要新鮮的內容,通過加倍努力創建內容(為你的網站和其他網站),你可以為未來幾年打下基礎。 我做到了這一點,好處是我能夠為現有的受眾提供與我熱情相關的相關內容。這與通過發送連結請求來垃圾郵件或者不斷發送網站請求截然不同。 SEO技巧三:寫幫助人們的東西 與其思考關鍵字和建立連結,我通常思考問題。 人們有哪些問題?你可以整天考慮可能的問題,但最好的辦法是讓人們告訴你。 現在,我向我的電子郵件訂閱者詢問他們最重要的問題或他們正在努力解決的問題,但你也可以在其他地方找到這些信息。在我的領域中,我喜歡一個地方,那就是Twitter。 其他領域可能在部落格文章評論或YouTube視頻評論中有相同的信息。你只需要觀察,找到適合你領域的好點子。 然後寫一篇解決這個問題的文章。 我非常喜歡的一種方式是講述我遇到的問題以及如何解決它們。 例如,我正在寫一個應用程式,我需要處理日期。我不得不在Google上搜索一個特定的主題,這引導我查看10個網站以尋找正確和最新的答案。我花了30分鐘的時間,現在我可以再花10分鐘將答案寫成一篇部落格文章。 一篇快攻的文章。 SEO技巧四:長度並不重要,重要的是解決問題 重要的是解決人們的問題。谷歌和SEO專家稱之為用戶意圖。 我看到SEO人士喜歡建議你寫3000字以上的文章才能在谷歌上排名。如果他們的目標是打消你繼續寫作的動力,那這是一個很好的建議。他們稱之為長篇內容。一旦你完成了幾篇3000字的文章,你就會很難找到開始寫下一篇的動力。 現在,作為一個非SEO人士,但作為一個做事情並觀察什麼有效的人,我絕對可以說,如果你用一篇4行的部落格文章解決了一個人的問題,谷歌會感謝你並通過向你發送更多有同樣問題的人來幫助你。 他們使用自己的算法能夠知道一個人是否找到了他們需要的答案。這是谷歌的工作。他們的工作就是通過提供他們正在尋找的完美內容來解決人們的問題。 如果你能做到這一點,谷歌會幫助你。 當然,並不是你的博客上的每一篇文章都能解決一個問題。那樣會變得無聊。但如果你有解決問題的文章,你會注意到,這些文章將得到更多的訪問者。 當然,並不是每篇文章都必須很小,如果對你來說長篇內容是最好的,那就使用長篇內容。 SEO技巧五:這需要很長的時間,你必須玩耐心等待的遊戲 通過觀察過去幾年中許多人進入並離開我的領域的情況,我觀察到了一個可能很明顯的模式。 最初充滿熱情,內容質量和頻率達到了最佳狀態。幾個月後,人們開始放棄,慢慢地。這不是一個重大的決定,但內容開始不那麼頻繁,不那麼有趣,也沒有固定的頻率。 你不需要每天發文,也不需要每週發文,但我喜歡有明確時間表的部落格/網站。比如,每兩週我們發布一篇文章。對我來說很好。 但一個月發文三篇,然後五個月沒有發文?不太好。當然,這可能是我的問題,但我喜歡事物有規律的節奏。 我知道這很難,因為最初你看不到任何結果。我知道這一點,因為我正在創建不同主題的新部落格,它們很慢地從接近零的水平上升。 你每天都會被誘惑將它視為失敗。 你如何解決這個問題呢?通過從事你熱愛的項目。 如果你寫關於你的熱情的內容,你永遠不會失去熱情,因為你正在創建自己的一小塊互聯網領域,你做到了,你讓它變得美麗,現在它也為每個人提供,即使沒有人出現,它依然存在。 你會覺得它很美麗。就像製造出一個木頭蘑菇,或者雕刻出你自己的湯匙。 當人們發現他們覺得你的作品非常出色時,這將成為每天無盡的喜悅來源。

blog-still-relevant

網誌仍然有價值嗎? 這是一個合理的問題。在社交媒體和大型平台主導的今天,網誌仍然有價值嗎? 小角色能在互聯網上找到一些空間嗎?我們已經有太多的網站了嗎? 首先,我們永遠不會擁有太多的網站。每100個人中只有不到1個人創建內容。這是媒體消費的一個規律:每個有1億人口的國家有大約100個電視或廣播電台,報紙也是如此。 互聯網也是如此。如果你開始創建內容,並且做得好,最終你的內容將浮出水面,你將會成功。成功對你來說意味着什麼就是什麼。 這對於在YouTube上創建視頻、撰寫播客和網誌當然也是可能的。 那麼,為什麼你應該開始寫網誌而不是製作視頻呢?這是一個選擇。我們不能都擅長製作視頻,我們也不能都有適合播客的聲音。同樣地,我們也不能都擅長寫作。 但如果你碰巧喜歡寫作,並且喜歡在互聯網上擁有自己的一小塊空間,那麼創建一個網誌可能就是你在尋找的東西。

blogging-3-half-years

#關於寫部落格三年半的心得 自2018年1月起,我開始每天寫部落格。這已經是很長一段時間了,大約三年半。 是什麼讓我持續下去呢? 有一件事我喜歡開玩笑地說,那就是我被這個部落格困住了。 我寫了這麼久,已經無法停下來了。 我會討厭在隔天醒來時問自己:「我到底在幹嘛????」我已經持續進行中,我希望這三年半能變成五年、十年、二十年。 有些日子寫起來非常容易。我只需要做些事情,然後找到值得分享的內容。也許那天我能找到十個值得分享的事情。 有些日子就很難。我只想寫一些讓我興奮的事情,否則就會感覺像是在工作。 但最終我不能只寫我感興趣的內容。有時候我會跳到一些與我主要從事的網頁開發工作無關的話題,比如我的深入探索Arduino、電子學或者Swift。 當然,這些也都與編程相關。也有時候我會寫一些跟這篇文章一樣的後設文章,更關於寫部落格而非編程本身。 但我也覺得我不能一直寫關於JavaScript。或者我可以?也許。也許不。 也許有一天我會突然停下來,走向其他事情。 但不是今天。

Bower,瀏覽器套件管理工具

Bower 定義自己為一個瀏覽器套件管理工具,它是一個強大的工具,用於管理項目資源:JavaScript、CSS 和圖片。 警告:本文章可能已經過時,並且可能不反映最新的技術狀態 Bower 定義自己為一個瀏覽器套件管理工具,它是一個強大的工具,用於管理項目資源:JavaScript、CSS 和圖片。在這裡,我只會講解 JavaScript,因為這是我主要使用的場景。 讓我們開始,第一步安裝 Bower。 npm install bower -g 現在,在你的項目根目錄(也就是你將要執行 bower 的地方)或者你的主目錄中,創建一個名為 .bowerrc 的檔案,並進行一些自定義。例如在這裡,我們告訴 Bower 將套件安裝在子目錄 javascript/components 中,並使用名為 ‘bower.json’ 的檔案來儲存它的資料。 { "directory" : "javascript/components", "json" : "bower.json" } bower.json 檔案與 npm 在 Node.js 中的 package.json 檔案是一樣的,只不過它是用於資源的。 讓我們從一些常用的東西開始,例如 jQuery,將它添加到你的項目中。 你可以透過以下命令來安裝它: bower install --save jquery 然後在你的 HTML 代碼中引用這個新安裝的套件: <script src="javascript/components/jquery/jquery.js"></script> –save 選項告訴 Bower 將這個項目添加到 bower.json 檔案中,這樣以後重建相同的套件結構就變得容易,就像使用 NPM 在 Node.js 中一樣。 一旦這個套件被安裝,要升級到新版的 jQuery 就非常容易: bower update jquery Bower 專案在他們的伺服器上維護了一個流行套件的清單,所以你可以輕鬆安裝它們。這裡你可以找到一個清單,按照流行程度排序。...

C 中的 typedef 關鍵字

介紹 C 中的 typedef 關鍵字 在 C 語言中,typedef 關鍵字允許您定義新的類型。 從內建的 C 類型開始,我們可以使用以下語法創建自己的類型: typedef existingtype NEWTYPE 我們所創建的新類型通常按照慣例用大寫表示,以便更容易區分,並立即將其識別為類型。 例如,我們可以定義一個名為 NUMBER 的新類型,其類型為 int: typedef int NUMBER 一旦這樣做,您就可以定義新的 NUMBER 變量: NUMBER one = 1; 現在您可能會問:為什麼?為什麼不只使用內建的 int 類型呢? 嗯,typedef 與兩個內容相加時非常有用:枚舉類型和結構體。

C 中的布林值

介紹如何在C中使用布林值 C 最初並不原生支援布林值。 C99 是在 1999/2000 年發布的版本,引入了布林型別。 不過,要使用它,你需要匯入一個標頭檔,所以我不確定我們是否可以技術上稱之為 “原生”。無論如何,我們確實有一個 bool 型別。 你可以像這樣使用它: #include <stdio.h> #include <stdbool.h> int main(void) { bool isDone = true; if (isDone) { printf("完成\n"); } isDone = false; if (!isDone) { printf("未完成\n"); } } 如果你在編寫 Arduino 程式,你可以使用 bool 而不需要包含 stdbool,因為 bool 是一個有效且內建的 C++ 資料型別,而Arduino 語言則是基於 C++。 在純 C 中,記得要 #include <stdbool.h>,否則你在宣告和使用 bool 變數時會遇到一堆錯誤訊息: ➜ ~ gcc hello.c -o hello; ./hello hello.c:4:3: error: use of undeclared identifier 'bool' bool isDone = true; ^ hello....

C 全域變數

介紹 C 全域變數 在C 變數和類型文章中,我介紹了如何使用變數。 在這篇文章中,我想提到全域變數和區域變數之間的差異。 區域變數是在函式內部定義的,它僅在該函式內部可用。 像這樣: #include <stdio.h> int main(void) { char j = 0; j += 10; printf("%u", j); //10 } j 在 main 函式之外是不可用的。 全域變數是在任何函式之外定義的,如下所示: #include <stdio.h> char i = 0; int main(void) { i += 10; printf("%u", i); //10 } 全域變數可以被程式中的任何函式存取。存取不僅限於讀取變數的值:該變數可以被任何函式更新。 因此,全域變數是我們在函式之間共享相同資料的一種方式。 與區域變數不同的是,變數分配的記憶體在函式結束時被釋放,而全域變數只有在程式結束時才被釋放。

C 列舉型別

由 typedef 和 enum 關鍵字我們可以定義一個只能有某些值的型別。 這是 typedef 列舉型別的語法: typedef enum { //...values } TYPENAME; 所創建的列舉型別通常是大寫。 以下是一個簡單的例子: typedef enum { true, false } BOOLEAN; C 語言已經內建了 bool 型別,所以這個例子並不實用,但是你可以了解到這個概念。 另一個例子是定義星期幾: typedef enum { monday, tuesday, wednesday, thursday, friday, saturday, sunday } WEEKDAY; 這是一個使用這個列舉型別的簡單程式: #include <stdio.h> typedef enum { monday, tuesday, wednesday, thursday, friday, saturday, sunday } WEEKDAY; int main(void) { WEEKDAY day = monday; if (day == monday) { printf("It's monday!"); } else { printf("It's not monday"); } } 列舉型別中的每個項目都會被對應到一個整數。所以在這個例子中,monday 對應到 0,tuesday 對應到 1,以此類推。...