3 步驟就能獲得工程師必備的 GitHub 帳號!

註冊 GitHub 帳號流程:GitHub 官方網站首頁
註冊 GitHub 帳號流程:GitHub 官方網站首頁
GitHub 官方網站

這是一篇註冊 GitHub 的教學文,由於筆者不是個愛註冊帳號的人(不想要 Email 信箱有多刪一封信的可能存在),因此筆者習慣先了解網站或工具的必要性再決定要不要註冊,所以在我們開始註冊前先簡單介紹一下 GitHub。

GitHub is how people build software

GitHub 主要有兩個核心用途:

也就是說,只要你的需求有符合以上其中一項,就可以考慮使用 GitHub。而 GitHub 根據第一個核心用途,延伸出許多便於開發者管理專案跟與他人協作的功能,像是建立專案(Repository, A.K.A repo)、將完成的功能發送貢獻請求 …


什麼是網站效能?資料庫的查詢會影響效能嗎?

什麼是網站效能?

一個網站的顯示速度與效能有關,如果網站效能不佳,則網站的使用性就會變差。雖然效能可以靠硬體補足,但還是要避免寫出拖慢效能十倍甚至百倍的程式碼。

效能問題

學習順序

ActiveRecord 和 SQL 是效能盲點的最大問題

Rails 的優點在於開發速度快,但相對的效能較差。而 ActiveRecord 將 SQL 的操作抽象化,是第一大效能盲點所在。因為開發者很容易沈浸在他所帶來的高速開發上,而忽略效能盲點直到上線時大爆炸。😱

N + 1 Query

N + 1 Query 是資料庫效能頭號殺手。因為 ActiveRecord 的 association(關聯性)功能很方便,故容易寫出下面樣子的程式碼:

# Ruby# User Model
class User < ApplicationRecord
end
# Post Model
class Post < ApplicationRecord
belongs_to :user
end
# Posts Controller
class PostsController < ApplicationController
def index
@posts = Post.all
end
end
# Views
<% @posts.each do |post| %>
<%= post.user.name %>
<% end %>

在 Views 中讀取 post.user.name 的值會造成 N + 1 Qurery(1次 Post 查詢 + N 次的關聯資料查詢)的問題產生。

Image for post
Image for post
N + 1 Query log

解決方式 => 可以使用 includes 方法來減少不必要的資料庫查詢:

# Rubyclass PostsController < ApplicationController
def index
@posts = Post.includes(:user)
end
end


print method, puts method, p method 三者有什麼差別?!

Image for post
Image for post
這是我印照片的方法 ❤️

寫程式的時候,很常在終端機 (Command Line) 中使用 irb (interactive ruby) 印出資訊來查看結果。我最常使用的方法是 puts method 和 p method,但有時候用 puts method 會印不出東西,我就會換用 p method,其實這樣的狀況發生不少次就是我自己對這些常用方法處於一知半解的狀態,所以我想簡單的了解一下這些常用方法。

在查找文件的過程中也發現一個我沒有使用到的 print method,因此這篇將紀錄關於 print method, puts method, p method 分別是什麼?彼此的差別在哪裡?

什麼是 print method、puts method、p method

會印出內容物、印出的東西為連續排列(視覺可讀性較差)、回傳值為 nil。

puts 是 …


Image for post
Image for post
這個有驚嘆號的東西會動耶!(+d Spin|スピン コマ)

我一開始是在 Stack Overflow 查找 String 的 reverse method(將字串內容反置的方法)時,看到下面的回覆:


屬於我的 Blog 起手式

Image for post
Image for post
我要建立一個什麼樣的修煉場呢?!

今年三月底,我從零開始學習程式語言,這五十個日子裡的某一天,一位非本科轉職工程師成功的前輩 Sandy 分享她為什麼開始寫 Blog 時提及:

大腦最主要的功用是思考,不是記憶。

在聽到這句話之前,我的狀態就像一堆線互相纏繞且混亂,但這句話就像可愛的線頭在對我說「嘿!我在這 🙌」,我看到解除我目前混亂狀態的方法,這就是促使我決定寫 Blog 的最初原因。

簡單說一下我個人的狀況,因為是從零開始學習的完全新手,所以會有許多練習程式碼的檔案、手繪筆記、電子檔筆記和寫 code 過程中報錯或踩雷的螢幕截圖,這樣四散各處的紀錄方式除了靠記憶力回想外也需要花時間翻找才能夠二次利用。另外,這些看似很大量的紀錄實際上並無法明確量化自己目前的學習程度。因此我希望透過前輩 Sandy 分享的寫 Blog 紀錄方式來達成下列目標:

然而,凡事都有個 ‘ BUT ’!

我並非是擅長完整紀錄的人,所以從決定要寫 Blog 到開始敲起鍵盤後,十分痛苦,寫 Blog 的時刻大概是我使用 delete 鍵最多次的時候⋯⋯,接著再內容根本產出不完全的狀況下就氣餒的把草稿刪除,就這樣輪迴了好幾回⋯⋯

有動機並不代表行動能夠完整傳達我所期望的

為了停止這樣的惡性輪迴,我重新審視自己為什麼要做這件事情,我寫 Blog 的最主要的目的是什麼呢?既然決定要寫 Blog,那麼就先把羞恥心暫且放一邊去。寫 Blog 是給自己釐清觀念的時間並重視內容的正確性,以利日後的二次利用。

在釐清目的後,我決定給自己設定目標,每日一篇文章,不論長短,在有限的時間內完成釐清、整理並紀錄的過程,養成自己每日產出的習慣。

最後,我要引用我很喜歡的 Iku 先生所說過的一段話作為起手式的收尾:

「辛いときこそ思いきり動け!」

儘管寫長文字的紀錄對我而言是痛苦的⋯⋯ ‘ BUT ’!就從今天開始修煉!

Chao Wu

blog_stories = 4; ( blog_stories >= 10 ) ? ‘Congratulation! Level up!’ : ‘Keep fighting! Chao Wu!’

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store