雅虎香港 搜尋

搜尋結果

  1. 由於 Solar2D 算是相對冷門的軟體,透過官方範例學習也是相當重要的。 讀者可自行尋找所需的範例,本系列文章不重覆說明這些範例。 點選 New Project 即可建立新的專案: 在這個例子中,我們建立 blank (空白) 應用程式,這種專案不會有額外的樣板程式碼,由程式人自行加入所需的程式碼。 如果讀者想用其他類型的專案也可以,基本上只是起始的樣板程式碼略有不同,但都可以事後再修改。 回到本文的範例程式,由於此專案有多個檔案,我們將完整的專案範例放在 這裡 ,讓讀者更容易追蹤程式碼,本文僅節錄部分內容。 以程式碼來說,Solar2D 專案主要有三個檔案: main.lua :主程式的起始點. config.lua :專案設定檔.

    • 前言
    • 建立 npm 套件
    • 標準寫法:使用 async 和 Await
    • 替代寫法:使用 Promise
    • 結語

    在本文中,我們假定讀者知道 JavaScript 語法,也使用過 Node.js 運行環境。如果沒寫過 JavaScript,最好先到這裡熟悉一下 JavaScript 的語法。如果沒用過 Node.js,可以到這裡看一下相關資料。 在本文中,我們會撰寫第一個 Puppeteer 爬蟲程式,以熟悉 Puppeteer 爬蟲撰寫的方式。

    NPM 套件以單一資料夾為中心,程式碼和相依套件都放在一起,不會影響系統檔案。參考以下指令快速建立 NPM 套件: 如果 Node.js 程式只是要自用,只要用上述指令就可以快速建立 NPM 專案。如果是要對外發佈的 Node.js 程式,最好修改一下 package.json,修正元資料和 NPM 指令。 使用以下指令安裝 Puppeteer: 由於我們在運行 Puppeteer 程式時,會相依於 Puppeteer 套件,故要用 --save參數指定運行時期相依性。 除了預設的 puppeteer 套件外,Puppeteer 官方團隊還提供替代性套件。這是因為預設套件會包入整個 Chronium,比較肥大。替代性套件移除 Chronium,由外部提供瀏覽器。使用外部瀏覽器的話,就沒有原本...

    Node.js 的 I/O 皆為非同步的,在程式撰寫上較為困難。為了簡化 Puppeteer 爬蟲程式的撰寫,Puppeteer 的物件皆以 promise 包裝,並搭配 async / await 模式來寫。因此,Node.js 最好用 7.10 以上的版本 (參考這裡)。7.10 是西元 2017 年 5 月發佈的,離目前 (西元 2019 年 10 月) 已經三年多,應該不需要刻意守在那麼舊的版本。 我們第一個範例根據 Puppeteer 官方範例改寫。由於程式不長,我們直接把程式碼列出來,待會會逐步講解。 由於我們使用 async / await 模式來撰寫爬蟲,我們把整段程式包在一個 async 函式中。這個函式只是一段程式碼區塊,不需要名稱,所以我們結合 IIFE模式,用以下區塊...

    在前一節中,我們使用 async / await模式寫 Puppeteer 爬蟲,這是 Puppeteer 官方團隊所建議的模式。但 Puppeteer 函式的回傳值多以 promise 包裝,其實不一定要用該模式來寫程式。在本節中,我們將同一隻程式用 promise 改寫,以下是改寫後的程式碼: 由於這兩隻程式做相同的事,我們就不逐行講解,讀者可以相互比較一下。 此程式的關鍵是 promise 的 then() 函式的 chaining 模式。藉由 then()chaining 模式,我們可以用類似同步性程式的方式逐一寫爬蟲的動作。 這個模式的重點在於傳接參數到下一個 then() 函式的過程。有些步驟是固定的,像是 puppeteer.launch() 函式會回傳一個用 promise ...

    在本文中,我們分別用 async / await 模式和 promise 的 then()chaining 模式來寫同一隻 Puppeteer 爬蟲。前者是官方推薦的模式,後者則是替代性的寫法。由於第一個模式比較直覺,寫起來也比較短,應該優先採用。第二個模式的範例就留給對 JavaScript 的 promise 有興趣的讀者參考。

  2. 高階 API 提供一些抽象的物件,像是 Promise、Supply、Channel 等,程式設計者不需擔心底層的虛擬機器實作,可專心在撰寫共時性程式上。 低階 API 則提供較為傳統的共時性物件,包括 Thread 和 Lock (即 mutex) 等。 除非有特別的理由,應優先使用高階 API。 本文介紹高階 API。 附註. Perl 6 已經正式更名為 Raku,我們沿用新的名稱來稱呼這個語言。 Promise 是 R 執行共時性程式區塊的基本單位,在別的語言也稱為 Future。 建立 Promise. 以下範例啟動一個 Promise: my $p = Promise.start({ say "Hello from a Promise" ; }); await $p;

  3. 開源教學. Java 程式設計. 使用 HashMap 物件. Java 映射. 贊助商連結. 前言. 映射 (map) 是基於鍵值對 (key-value pair) 的非線性容器。 HashMap 是 Java 的映射 ( Map) 中常用的實作品。 該實作品是基於雜湊表 (hash table)。 此實作的基本操作是常數時間 (constant-time performance)。 除了 HashMap 外,還有同樣使用雜湊表的 Hashtable 。 後者和前者的差別在於後者有多執行緒安全性 (thread-safe)。 如果沒有要寫多執行緒程式,使用 HashMap 即可。 建立 HashMap 物件. 在預設情形下,Java 不會自動引入映射。

  4. 前言. 由於 Lua 是動態型別語言,不需要像 Java 等語言,利用子型別 (subtyping) 來達到多型的效果,使用內建的語法機制即可達到相同的效果。 在本文中,我們從 Lua 的角度來看一些和多型相關的議題。 Duck Type. 像 Lua 等動態型別語言較為靈活,程式設計者不需要在意物件的型別 (type),只需符合公開的方法即可。 如下例: local Duck = {} Duck. __index = Duck. function Duck:new() self = {} setmetatable ( self, Duck) return self end function Duck:speak() print ( "Pack pack" )

  5. Extended Pascal. 這個標準 ( ISO 10206) 承襲了原有的 Pascal 標準。 但真正實作這個標準的 Pascal 編譯器不多,所以這個標準不太重要。 Object Pascal 是 Turbo Pascal 和 Delphi 所用的 Pascal 方言。 由於 Delphi 是目前最成功的商業 Pascal 開發環境,所以現在的 Pascal 大抵上都以這個 Pascal 方言為準。 雖然 Object Pascal 曾經有標準化提案,但最後沒有發展成真正的國際標準。 Pascal 實作品. 語言標準只是文件,真正決定語言特性的是其實作品。

  6. 前言. Lua 不是一個主流的語言,不過還蠻常見的,主要用於遊戲引擎 (game engines) 和其他軟體的腳本語言 (scripting language)。 本文的目的在說明 Lua 的特性及這些特性對 Lua 社群的影響。 Lua 是內嵌語言. Lua 最重要的概念在於 Lua 是一種內嵌語言 (embedded language),而不是大而全的通用型腳本語言,如 Python 或 Ruby。 對於 Python 或 Ruby 等主流語言來說,會有一個主要的實作品 (implementation) 加上標準函式庫 (standard library),不足的再由第三方套件 (third-party packages) 加強其功能。

  1. 其他人也搜尋了