LOGO
首页 网站广场 站长动态 活跃度榜 审核查询 逛逛好站 留言交流 提交申请 关于本站

站长动态

站长动态所展示的是已加入好站网成员站长文章
共同步 2387 篇博文
(每2小时更新一次)
JN
入驻第1年
我需要學習設計概論
緣由 上禮拜部落格 po 文的封面圖連我自己都覺得醜到哭 (我就不放來這邊了),加上上次和 Ivy 去誠品碰巧翻到同一本關於色彩的書,我認爲是時候開始培養一下自己對平面設計的 sense。 學習藝術的捷徑 我對藝術並不是一竅不通的,至少在音樂我還能有自信說我有我的 sense,我瞭解培養 sense 該用甚麼樣的方式。 我認爲,培養 sense 的方法就是去瞭解做出作品的技術細節,學會用更多維度去分析一個作品。以音樂舉例的話就至少包括:樂理、編曲、樂器演奏、錄音混音工程。 資源 可惜我對視覺可以算是門外漢中的門外漢,我需要從最基礎的設計概論開始學起,並試著從做封面圖的過程中慢慢實踐和感受。 我沒有受過任何和視覺設計有關的訓練,目前我找到不錯的資源是這個 Youtube 的播放清單,希望你能推薦一些啓發性的資源!
小十
入驻第1年
今天生日,生日快乐~
今天32岁生日啦,祝自己生日快乐!
JN
入驻第1年
中年危機的對策
理想的中年 如果你在這一年內有跟我聊到遠期目標的話(也可以說是夢想,但有點羞恥),那我的回答大概是: 擁有自己的小工作室,而且有電工、資訊、音樂相關的工具。 有足夠的時間陪伴我的伴侶,甚至是家庭。 收入包含三種以上的成分,包括:自己的事業、非臨時性的的兼職工作、投資收入。 其實我沒有什麼好的策略,現在的我充其量只能算是在隨便亂嘗試,尤其在程式設計的領域我不清楚有什麼門檻低、需求量大的案子可以接(相較於設計、樂器教學),不過也有可能只是我自己太嫩。 要怎麼做到? 不過,最近我有找到一些資訊讓我對自己的目標更肯定一點點,從除了不要把雞蛋放在同一個籃子(只靠領月薪過活)的另外一個角度,提供了我另外一個理由讓我堅持我的遠期目標。 資訊一 來源:老石談芯 - 我该如何应对芯片工程师的中年危机? 資訊二 參考 Brian Fetherstonhaugh 提出的職業生涯三階段制定策略: ~ 35 歲:80% 培養專長、20% 拓展 35 ~ 50 歲:80% 拓展、20% 探索 50 歲 ~:探索未知領域 來源:《深度學習的技術》 小結 中年危機的原因:過度依賴用時間換薪水,沒有累積和拓展自己的能力,在體力和學習力拼不過年輕人的時候,就可能容易被取代。 我並不像成爲那樣的人,我認爲我的目標還是有必要達成的。
JN
入驻第1年
免費去中心化同步備份神器 Syncthing | 如何跨平臺同步 Logseq
Syncthing 是去中心化的同步軟體,也就是說,它的運作方式不像是 Google Drive 這種雲端硬碟,需要一個伺服器才能運作。相反地,它的運作方式是讓需要同步的設備直接連線,所以就不像 Google Drive 一樣會有空間不足的問題嘍~ 安裝 Linux 使用 paru 從 AUR 安裝 1 paru -S sycnthing 使用 systemctl 來啓動服務 1 2 sudo systemctl enable syncthing@$USER.service sudo systemctl start syncthing@$USER.service 接著就可以到 http://localhost:8384/ 的 Web GUI。 Android App 從 F-Droid 上直接下載安裝即可。 使用方式 新增同步資料夾 點一下添加資料夾。 接著取個名字,設定一下要同步的資料夾。我這邊是打算拿來同步 LogSeq 的檔案。 在檔案版本管理這邊我選擇「變動式檔案版本控制」,以防自己手殘改錯或是刪錯東西。 Syncthing 也可以設定要忽略的檔案,我這邊就暫時先不設定。 新增同步裝置 點右下角的這串代碼可以查看自己完整的識別碼還有 QR Code。 接著在 Android App 裡面點右上角的「+」。 然後點右邊的掃描 QR Code,之後點電腦上的 QR Code,識別碼就會自動被輸入,然後就可以點右上角的確定。 回到電腦上的 Web GUI,會發現有一個新的連線請求,確認沒有問題之後就可以新增。 我這邊把需要同步的「LogSeq」打勾,其他的我就先不設定。 回到 Android App,點資料夾這邊右上角的「+」。 對應電腦上的資料輸入,然後點右上角的確認。 這時候就會自動同步了。 打開 LogSeq 的 Android App,也可以看到資料確實有被同步過來 Reference https://wiki.archlinux.org/title/syncthing#Autostarting_Syncthing
JN
入驻第1年
我的腦外資料庫 Logseq
契機 上週上臺北時候的空檔跑去誠品看書,意外看到待讀書單上的 《卡片盒筆記:最高效思考筆記術》,我當時的想法是: 這本書的主要概念跟這邊不太相關我就不特別提。 關鍵是,書中有提到的數位工具的其中之一是 Obsidian,它的核心功能是「雙向連結」。但我其實不太愛再把自己的重要資料依賴在非開源的軟體,於是才找到類似功能(並且更強大)的 Logseq。 核心功能 而使用 Logseq 大約一個禮拜之後,我覺得最棒的是它鼓勵把所有的想法都先記錄在當日日記,之後再透過連結的方式去整理自己寫下來的東西。這麼一來,我有任何的點子都能馬上記錄下來,不必擔心我要把它歸在哪個類別或是加上什麼 Tag。 我可以在一天的最後再來整理這些我記錄下來的東西,並且給他們適合的標籤或連結。例如我可以把所有我想要在這禮拜分享給你的資訊標上「九弄之一」,然後我就可以在寫九弄之一這篇文章的底下看到所有的連結。 連結圖 還有另一個很 Fancy 的功能是:Logseq 會用圖像化的方式顯示所有文章之間的連結。 我還在摸索! 沒意外的話我會持續使用 Logseq 來記錄生活和建構我的腦外資料庫,而我其實也還一直摸索怎麽才能發揮 Logseq 更多的價值,等到時機成熟我會再寫文章分享的!
JN
入驻第1年
把資料存在 Google 雲端很可靠?大錯特錯!
他所有的資料都拿不回來了,只因爲遠端看診拍的照片 2021 年二月,Mark 發現兒子的生殖器官發炎腫脹。那時正是 Covid-19 大流行的時候,所以他的妻子用他的 Android 手機對著他的兒子的鼠蹊部拍了幾張近距離、高解析度的照片,並且傳送到她的 iPhone,爲的是隔天的線上看診。如此一來,醫生就能夠在看診前事先收到這些照片。隔天,醫生根據這些照片開了抗生素做爲處方,沒過多久他兒子就痊癒了。 Mark 的噩夢才剛開始,他的 Google 帳號遭到停權,這十幾年累積的通訊錄、Email、行事曆、雲端硬碟、備份、照片,全部都無法存取,甚至所有他在其他平臺用 Gmail 註冊的帳號也因爲沒有辦法接收驗證碼而無法使用。之所以會這樣,是因爲 Google 根據他手機內的幾張照片判定他涉及兒童性剝削,並且已經通報給美國警方。Mark 也在這個時候就向 Google 提出申訴,但都沒有得到有效的回覆。 美國警方便開啓調查,毫無疑慮,警方認爲沒有足夠跡象表明 Mark 涉及犯罪。在 Mark 的清白被證明之後,他詢問警方是否可以也把這個結果通知 Google,協助他拿回這個帳號。 警方的回應是:「你要自己去跟 Google 講,我什麼都幫不了你」。Mark 再次向 Google 提出申訴,並且附上警方的調查報告。即便他附上了警方的調查結果報告,但 Google 還是始終維持他們原本的決定。 其實,在他兩個月收到 Google 的通知的時候,他的帳號就已經被永久刪除了。 這不是個案,但 Google 一點也不在乎 Google 在 2021 年判定了超過 60 萬起兒童性剝削案件,並且停權了超過 27 萬個帳號。我們不知道 Google 的準確率有多高,但如果我們假設準確率有 99% 好了,那 2021 就有 270,000 * 0.01 = 2700 個帳號被誤判,這 2700 個帳號的所有資料就這樣莫名其妙的不見了欸! 站在 Google 的角度,他們在全球有幾十億個帳號,就算他們損失的這幾千個用戶使用的都是付費帳號,對他們的影響還是微不足道。更別說,究竟有多少人是付費使用 Google 的服務的。對他們來說,他們這麼大的公司無法承受任何被捲入有關兒童性剝削或其他違法事件的風險。再者,僱用人類好好地處理這些爭議案件,所花費的成本遠高於這麼做帶來的效益。Google 根本就管不到那幾萬幾千個小蝦米用戶的權益。 你完全有可能遇到類似的狀況 Google 能停權帳號的理由不是只有性剝削,其他像是版權侵犯、散佈假消息都有可能讓你的帳號被停權。你可能會覺得你不會去做那些事情,但你能保證你在 Google Drive 上的每一個檔案、Gmail 裡面的每一封信、Google Map 上的每一則留言都不會被 Google 的 AI 判定是違反使用條款的內容嗎?或甚至,如果今天 Google 無緣無故就把你的帳號刪除了,你也只能任他們宰割,一點反抗的力氣都沒有。 你可以說我的說法是陰謀論,但未雨綢繆只會有好處沒有壞處。而且,我認爲 Google 非常高的機率在一、二十年內隕落,你終究有一天要離開 Google 的。 提早做好準備,未來的某一天你會感謝你自己。 你可以怎麽自保 現在就到 Google Takeout 把你的所有資料一次拿回家。 如果你真的不幸 Google 帳號掛掉了,至少你還可以撈出一些東西。 使用其他的雲端服務。 請謹記:其他的公司也有可能面臨像 Google 一樣的情況,而且這邊還沒談到隱私的問題。 把資料自己同步備份到好幾個地方。 在你意外需要這些資料的時候,你有機會拿到稍微新一點點的版本。 同步到好幾個地方的原因是:避免其中一個備份打不開之類的風險(例如硬碟壞掉)。 同步工具推薦:Syncthing 用自己的 NAS 或租雲端主機架一個自己的雲端服務。 Reference https://news.yahoo.com/dad-took-photos-naked-toddler-142928196.html https://wiwi.video/w/neGsd8fPHZmjChwTLvAKru
JN
入驻第1年
過去兩個月發生的事情
過去兩個月發生的事情 整體來說,我覺得我已經告別了前一陣子那低靡1的狀態。現在的我活得很有目標,覺得很多事情想做,時間卻不夠用,也覺得自己過得蠻幸福的,除了收入和居住不太理想(但不是我能控制的)。 要具體說做了什麼事的話大概是: 重新架了自己的部落格,並且發了 5 篇文。 Link: https://blog.giveanornot.com 自己的聯絡資訊頁面(link-in-bio)。 Link: https://bio.giveanornot.com 確定了退伍後過一段時間會再上台北工作的計畫。 好好地整理、回顧 100-days-of-code 的失敗原因和收穫。 Reference: 從 100 天挑戰到失敗:原因、成效、價值 刪掉 Instagram、Facebook 的手機 App,也幾乎不使用了,對此我的感受是非常正面的。 承上,開始使用 RSS 來接收資訊,補上零碎時間沒東西看的需求,但同時又不是一直接收不重要的資訊或廣告。 Reference: 不要再被演算法控制了!用 RSS 奪回主控權,超方便就看到自己想看的東西! 開始在 LeetCode 上以一天 4 題左右的頻率刷題。 Reference: LeetCode 開始喜歡看書,來台南之後大約看了 5 本書,並且覺得看書是一種耍廢。 我有了另外一半,他叫 Ivy2。 上個週末去了臺北一趟,見了一輪平常見不太到的朋友。這似乎值得我整理之後再分享。 在 2022 年底,我因為一段感情結束,加上未來極度不確定又不可控,陷入一段滿長時間的低潮。 ↩︎ 2026 年的 JN:後來我們分開了。 ↩︎
JN
入驻第1年
如何設定反向代理?在同一台主機同時跑好幾個服務(Nginx Proxy Manager / Reverse Proxy)
今天我要教你如何使用 docker & docker-compose 來設定好一個 reverse proxy server,而且還有一個漂漂亮亮的 GUI! 安裝 安裝 docker & docker-compose 我這邊 server 的 OS 是 Ubuntu 20.04,所以用 apt 來安裝。 1 2 3 sudo apt update sudo apt install docker.io sudo apt install docker-compose 把目前的 user 加到 docker user group 中(這樣才不用一直用 sudo 來下 docker 的指令)。 1 2 3 sudo groupadd docker sudo usermod -aG docker $USER newgrp docker 來跑個 Hello World 來確認一下,如果像下面畫面這樣的話就代表 docker 已經成功安裝。 1 docker run hello-world 安裝 Nginx Proxy Manager 建立一個資料夾並在底下建立 docker-compose.yml。 1 2 3 mkdir docker/nginx-proxy-manager -p cd docker/nginx-proxy-manager vim docker-compose.yml 1 2 3 4 5 6 7 8 9 10 11 12 13 ## docker-compose.yml version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt 接著就可以用 docker-compose 啓動並讓他在背景執行。 1 docker-compose up -d 初始設定 打開放火牆 如果你是租雲端主機,記得去把 port 80、81、443 都打開!(我這邊使用的是 Oracle Cloud) 80 和 443 是 HTTP 和 HTTPS;81 則是用來進入 Web GUI。 設定 Nginx Proxy Manager 確定防火牆沒問題的話就可以直接從瀏覽器到 <你的 ip>:81,進入 Nginx Proxy Manager 的管理頁面。 預設的帳號密碼是: Email: admin@example.com Password: changeme 第一次登入就會要求你修改帳號密碼。 點進 Hosts -> Proxy Hosts 就能看到目前的 Proxy 狀況,這邊還沒設定當然是什麼都沒有。 設定 DNS 這邊我們把 domain 和所有 subdomain 指到主機上。我的 domain 是在 NameCheap 買的,請到你購買 domain 的地方設定。 這時候我們就能透過 domain 訪問主機,而不是輸入 IP。接著再以剛剛改好的帳號密碼登入。 第一個 Proxy Host 接著我們來設定第一個 proxy 指向 Nginx Proxy Manager,也把 SSL 還有憑證處理好,這樣才能確保連線是 HTTPS 的。 成功登入了之後進到 Host -> Proxy Host,點 Add Proxy Host。 我這邊把 proxy.giveanornot.com 代理到 localhost:81(也就是現在的這個 proxy manager)。 在這邊選 Request a new SSL Certificate 的話,Nginx Proxy Manager 就會根據我們設定的 Domain 自動幫我們申請、更新憑證。怎麼樣,超方便的吧! 完成之後點 Save。如果設定都正確的話,直接到 proxy.<你的 domain>,就會看到 proxy manager 的登入畫面。這時候網址列有顯示鎖頭,代表說現在的連線是有經過 HTTPS 加密的。 初始設定到這邊完成,我們就可以開始使用了! 外部連結 接著我們來設定外部連結的 proxy,我以我自己在 Netlify 上的部落格爲例。 這邊記得要順便更新 blog 的預設網址,以及 Netlify 的 custom domain。 設定完成後我們就也可以透過 proxy 瀏覽部落格了。 首頁、重新導向 但是,在這個時候如果到 giveanornot.com,你會發現首頁還沒有被設定好。 我這邊想要把 bio.giveanornot.com 指到我放在 GitHub Pages 的 Link In Bio,並且把首頁 giveanornot.com 自動導向 bio.giveanornot.com。 graph LR U(User)--->|Request| A A[giveanornot.com] --->|Redirect| B[bio.giveanornot.com] B --->|Proxy| C[GitHub Pages]一樣我們新增一個 Proxy Host 並且取得憑證。 然後到 Hosts -> Redirect Hosts 新增,把 giveanornot.com 導到 bio.giveanornot.com。 也要記得在 GitHub Pages 這邊新增 custom domain。 此時到 giveanornot.com 的時候就會被自動導向 bio.giveanornot.com。 代理到主機上的其他 docker container 接這我們來設定 server 上其他服務的 proxy,我這邊以一個 httpd 來示範,你可以把 httpd 換成是你其他任何的 container。 把 httpd 加到 Nginx Proxy Manager 的網路裡面(我這邊用的是 portainer)。 然後新增一個 Proxy Host,這邊的 hostname 就輸入 container name(docker ps 可以查詢)。 這樣就可以透過代理存取 server 上的其他服務了! 至於非容器化的服務嘛……目前沒有找到好的解決方法:( References https://nginxproxymanager.com/guide/#quick-setup
JN
入驻第1年
從 100 天挑戰到失敗:原因、成效、價值
100 Days Of Code Challenge 在 這一篇文章 裡面有提到,我在 2021 的 11/08 開始一個爲期 100 天的挑戰。這個挑戰的目標是連續寫 100 天的 code,並且在這期間內成功找到一份滿意的工作。 結果是,這個挑戰只持續到 Day 48。 失敗的原因不僅僅是入伍時間一延再延打亂原本的計劃而已;更多的是我在遭遇變故後,心理一直處在一個不健康的狀態,而我沒有能力發現並有效的處理。在意識到自己失敗後,糟糕的心理狀態,加上當時其他的壓力來源,我無法有效的去面對、檢視、檢討這個挑戰。於是,逃避成了我當時的唯一選擇。不回頭看這個挑戰、不碰任何跟 coding 相關的東西、不去想求職和自我成長的事情——這些是我在那個狀態下,非常消極,但也有效能夠讓我過得比較舒服的方法。 沒有把大目標拆成具體的小目標也是失敗的原因之一。我能很明顯地感覺到:在 Day 27 取得 freeCodeCamp 的 backend certification 後,我失去了一大部分的動力。更準確地說,是少了完成證書裡每一個項目之後,所獲得的那種回饋感。而少了題目的指引,對於接下來要寫什麼也是越來越迷茫。在這種不知道寫什麼 & 回饋感驟降的狀態,挑戰會失敗似乎也是一件合情合理的事情。 失敗了,但獲得的不只是失敗 失敗不代表這次的挑戰一點價值都沒有。事實上,「失敗」只是用來描述沒有達成原本目標的的負面詞彙。也就是說:就算是只差 1% 就成功,只要沒有達到 100% ,都算是失敗。既然如此,我是不是可以反過來說:1% 的失敗,是 99% 的「成功」。 回頭看看我這 48 天做到的事情,最大的項目莫過於取得 freeCodeCamp 的 backend certification。如果我當初把目標設定在取得這個證書,那我這次的挑戰是一次大成功誒!而且,在取得證書的過程、以及拿到證書以後的到 day 48 的這段期間,我還解決了很多以前不曾解決過的問題。 當然我不是想要用把目標拉得很低這種方式來騙自己很成功。只不過,我不想因爲失敗掩埋了那些成果。畢竟,爲了得到那些我也是整整花了 48 天。因此,在這段期間所獲得的任何小結果,無論是失敗的或是成功的,我都應該把它們好好的整理、保存。因爲,那些是我接下來想做任何東西的重要參考資料來源。 花了 48 天換到的 48 天換取一個失敗的結果絕對不是浪費時間。如果把我用到、學到的技術和工具全部列出來,其實還是有點壯觀的。 完成的項目 freeCodeCamp Backend Certification Microservices Timestamp Microservice Request Header Parser Microservice URL Shortener Microservice File Metadata Microservice Web Apps Image search Voting App Book Trading Club Pinterest Clone Nightlife Coordination App Chart the Stock Market express-mongoose-oauth-boilerblate 漢堡! 失敗的項目 Cocktail Hublemon 學會使用的 Library Express.js Vue.js Chart.js Passport.js socket.io axios Bootstrap Sequelize Mongoosee vue-masonry-css 學會使用的軟體、技術 Git PostgreSQL MongoDB NGINX Redis Docker SSH Reverse Tunnel 學會使用的服務 GitHub Heroku AWS EC2 Yelp API Youtube API OAuth(GitHub, Google, Facebook) 整理、放下、解脫 從 Day 49 到現在的每一天,我一直都活在沒有完成挑戰的罪惡感中,因爲我不想承認我的失敗。只有當我下定決心,決定好好地回顧一下到底發生了什麼事情的時候,那膨脹已久的恐懼泡沫才會消除。在我能夠好好面對之後,才能把那些我需要的撿回來、好好地裝箱,我也才能安心地讓這件事情徹底地離開我的思緒。也因爲如此,我才能再開始開始下一個挑戰,不再原地踏步。
JN
入驻第1年
臺科大學長告訴你:四技推甄面試完全攻略
今天我要跟你分享我 2017 年(民 106)在臺科大資工系的推甄面試,並且成功順利錄取的經驗。 這篇會以我自身的經驗出發,和大家分享這次面試經驗的流程、自己的經驗、以及如果可以回到那個時候,我會希望我當時能知道的事情。 臺科大資工系的面試有什麼流程和項目? 我們先來看看臺科大資工系的官網怎麽說: 其中有三個重點: 面試地點在資工系辦進行(但其實是系辦旁的會議室) 面試共有兩站,各五分鐘 不能使用電腦以及投影機 而整體流程則是: 系辦簽名報到 等待 20 分鐘 面試第一站 等待 5 到 10 分鐘 面試第二站 面試結束 有大致的概念之後,接下來再來詳細看看各個階段,以及分別要注意什麼吧~ 六個階段的注意事項 當天報到之前 當天早上的準備工作也是非常重要!好好的規劃的話可以降低突發狀況的機率,也就比較不會緊張啦。我這邊分成 食、衣、行、帶,四個項目: 食 當天按照平常的飲食習慣就可以了,如果平常沒有習慣吃早餐的話不必特別吃,但就建議帶一點高熱量的小零食在身上以防萬一;如果你被安排在下午的話,午餐可以稍微不要吃那麼飽。不過,飲料和水分就適量少攝取一點,避免緊張一直想跑廁所,但如果天氣很熱的話也要小心不要中暑啦 >< 衣 當天的服裝我會建議以 半正式、整潔、樸素即可,我當時有看到一些同學穿正裝打領帶,我覺得是沒有必要甚至有點突兀的。其實資工系並沒有非常在意面試者的服裝,只要不要讓人感覺到太隨便或是太奇怪就可以了。 如果你不清楚所謂的半正式是什麼的話,我會建議以休閒襯衫、素色褲子爲主。鞋子不是很重要,皮鞋、運動鞋、帆布鞋其實都可以,只要不要太高調就好。 另外,頭髮會亂的,鬍渣之類的要記得整理,表示你對面試的重視,也是基本的禮貌。 行 如果你像我一樣不住在臺北或對臺北不熟悉的話,一定要事先規劃好當天如何前往資工系系辦! 我會建議坐臺鐵或是高鐵,因爲下車之後往月臺 高鐵 9 車、臺鐵 11 車的方向,有可以直達捷運的出口。 客運轉運站離捷運站有點距離也容易迷路,除非有自信可以找到路否則不建議! 出了臺鐵、高鐵 B3 出口之後對面就是捷運入口,直接逼悠遊卡或一卡通就可以進站,這時候錢不夠的同學請往左手邊去售票機儲值。 進站之後坐紅線(淡水信義線)往象山方向 => 中正紀念堂轉車 => 直接到走到對面等車 => 綠線(松山新店線)往新店方向 => 公館站下車 => 出 2 號出口。 上電扶梯出站後可以逼卡租 YouBike(要事先註冊綁卡,或者到櫃員機),然後騎進臺大在鹿明堂右轉;或是直走羅斯福路過圓環後左轉到臺科大門口還車(記得再逼卡)。如果不幸沒有車或是下大雨的話也可以走路,大約走 10 分鐘就到了~ 進校門後經過圖書館就可以左轉進 T4 大樓一樓穿堂,烏龜池對面就是電梯,上 5 樓就到資工系辦嘍! 我建議可以比規定的 20 分鐘前再提早 10~30 分鐘去報到,多的時間可以休息一下熟悉環境、逛一下校園、或是看一下小抄,讓自己不會那麼緊張 >< 帶 要帶的東西其實不多: 身份證件(報到用) 悠遊卡(坐車、YouBike) 小抄、考古題(在等的時候可以看) 就這樣!其他就是你平常出門會帶什麼就帶什麼就好了。 另外要提醒的是,除非你有非常特別的理由,不然不需要另外再帶資料給教授看。一來是教授其實面試你沒有什麼時間可以看,二來是發資料的過程也會消耗你不少寶貴的時間。 等待第一站的 20 分鐘 報到完之後,除非你剛好就是各個時段的前幾個,不然一定能遇到面試完出來的人——巴上去問他們問題。裡面有多少教授、誰是白臉誰是黑臉、教授都問了什麼問題……什麼都好。雖然不一定每個人都願意回答你,但儘可能地蒐集到更多資訊對你肯定是有利的。其餘時間可以看看自己帶的資料,在腦袋整理一下等等要說的東西,然後等待你的名字被叫到。 第一站 第一站在大會議室進行,主要是讓教授跟你聊聊天看看你這個人的 學經歷、基本能力、應答能力 ,具體的內容包括: 自我介紹 英文口試 數學口試 專題、經歷 提問 會議室的樣子是四張長桌圍起來,你坐一張,其他大約 68 位教授坐另外三張,整體大約是下面這張圖的 23 倍大。 自我介紹 這個階段要做的是用一到一分半左右的時間讓教授認識你,而重點只有一個:請只說和資工系有關的事情;家庭背景、成長經驗、你的其他興趣什麼的教授一點都不想知道。你該說的是: 你的經歷中有什麼和資工有關聯的地方 你的高中專題做了什麼,過程又是如何,有沒有遇到什麼困難? 你有過什麼其他和資工相關的活動 爲什麼選擇資工系(如果你不是資訊科畢業的話) 我來舉個例子: 各位教授好,我是 OOO,畢業於 OO 學校電子科。我在高中的時候最喜歡的科目是微處理機和單晶片實習,在單晶片實習的課程裡我學會了如何使用 C 語言去控制 8051,也是在這個時候我發現比起硬體、電路,我更喜歡電腦和寫程式,這也是我選擇資工系的原因。 我的專題也和 8051 和 C 語言相關,是用 8951 和兩個 8x8 LED 矩陣做的遊戲機,其中讓我花最多時間的是理解和學習如何使用計時器中斷。 最近在嘗試的事情是想要透過 Wi-Fi 和 ESP8266 控制房間的電燈。目前遇到的難題是:網路上的範例有提到 HTTP Server,但還不清楚那是什麼東西,目前還在慢慢的研究。 以上是我的自我介紹,謝謝各位教授。 當然你的經歷可能沒有這麼精彩,你可以在專題的部分用非常多的篇幅,大約控制在 200 字左右即可。這裡我想特別提醒大家:不用害怕自己做的成果很失敗就不敢說。事實上,不過你有多厲害多屌,在教授的眼中都是小兒科,教授想看到的是: 你遇到困難的時候,你是怎麽試圖解決問題、怎麽尋找有用的資訊,而你在這個過程又有什麼收穫。這是資工系非常需要的一種能力——自學。 英文口試 英文也是資工系重要的能力之一,幾乎所有的說明文件都是用英文寫的。 我當年面試的時候,桌上擺著一張紙,上面有一句英文,口試的內容就是把那句話翻譯成中文。我不太記得那句英文是什麼了,但我記得是有包含 database system 的一句被動句。其實不難,只要你能好好地用通順的中文說出這句話的意思就可以了。 萬一你真的遇到不認識的單字,請大方地說你不太確定某個字的意思,然後把剩下的部分翻譯完畢就好了。 數學口試 在這個階段,教授會問你一個數學問題,通常是排列組合或是機率的問題。因爲你手上不會有紙筆,所以不會是太複雜的問題,主要是想知道你的數學觀念對不對。我當時被問的問題是: 丟兩個骰子,同樣點數的機率是多少 這裡的評分不是只有答對或答錯兩種,和上面一樣,教授想知道你的策略是什麼。這時候你能做的最壞的表現是直接說你不會,或是沉默不語,然後說了一個錯誤的答案。 你不需要一聽到題目就知道如何解題,你需要做的是:你正在想什麼,就同時也說出來。 即便你一開始的策略錯了也沒關係,你可以說你覺得你的想法錯了,然後再開始一個新的策略。通常來說,如果教授聽到你的思路,而你卻一直卡關的話,教授通常都會好心推你一把的。 專題、經歷 到了這個階段,其實這裡就是讓教授和你聊聊天,讓教授有更充足的資訊能夠給你打一個分數。教授通常會針對你的專題還有經歷提問,而你就也按照實際的情況回答就好了,切忌說謊。你可以在自我介紹的時候埋一些短時間說不清楚的事情(線頭),吸引教授的好奇心。而這個階段也是最難準備,最能夠看出你的專題有沒有認真做、你到底有沒有料的階段。 提問 最後教授還可能會問一個問題: 你有什麼想問的問題嗎? 這時候其實就是教授沒梗了,但還是要禮貌地完成面試,如果前面聊得很多的話教授可能不會問這個問題,時間到了面試結束。 這個問題的答案就是:任何你想問的都可以問。當然我的意思不是說可以去問教授有幾個小孩、名下有幾棟房子;但只要任何和資工、學校、今天的面試沾的上一點點邊的都可以問。當然儘量避免網路上很簡單就能找到答案的問題,而這個問題通常也不太會大幅度影響你的分數(除非你很沒禮貌)。我這邊列幾個可以問的問題: 請問大一的課會有早八嗎? 請問剛剛那題數學的正確解答是什麼? 請問我在暑假這段期間可以先自己學什麼東西嗎? 請問大一的計算機程式設計具體課程內容是什麼 我對人工智慧很有興趣,請問教授可以給我一些指引或是建議嗎? 我在專題遇到的問題,請問教授有什麼比較好的解決方案嗎? 如果你想不太到問題的話,可以到 臺科大資工系課程地圖 看一下,你一定可以從這裡面找到你還不懂的東西。 如果沒有意外的話,在你回答出:「沒有問題了,謝謝教授」的時候,第一站在這裡就會結束了。結束的時候請記得禮貌和教授問候,如果有移動到會議室的物品的話也請記得歸位,然後就可以先到外面稍作休息。 第二站前的 5 到 10 分鐘 剛從大會議室走出來,你的心臟肯定還跳得很快。不管你剛剛的表現如何,那都已經是確定的事情,不是你能改變的。 如果讓剛剛的表現影響到你接下來的狀況的話就不好了。你要做的事情是:把自己的注意力放在準備第二站。 你可以看看自己帶的考古題,或是問問從第二站出來的同學他們被考了什麼問題。事實上,第二站能考的問題不多,有非常大的機率你會被問到一模一樣的問題。如果你多問一些同學的話,很有可能就被你問到要拿來考你的那個問題了。所以,儘量在這段短短時間獲得更多資訊,不僅可以提高你對問題的把握度,還能讓你把注意力從剛剛的表現轉移到接下來的第二站。 面試第二站 第二站的主軸是技術面試,也就是考你的專業知識如何。這邊分成兩個階段:自我介紹、白板題。 自我介紹 這邊的自我介紹目的是讓教授瞭解你的背景如何,這樣教授才能挑選適合你的題目。這邊教授不會和你聊你的專題如何,所以篇幅不必太長,只要簡短地敘述自己的背景、專長、經驗,大約在 30 秒到 1 分鐘即可,才不會白白浪費後面的答題時間。 白板題 這裡才是第二站的重頭戲! 這邊教授可能會根據你的長項給你一個題目,請你在白板上作答。 既然是資工系,這邊的題目就是寫程式,通常不會太複雜,只是測驗你有沒有基礎的程式設計能力而已,所以也不會限定你要用什麼語言、什麼方式。我這邊舉幾個題目的例子: 請在白板寫出一段輸出九九乘法表的程式。 請在白板寫出一段輸入爲 N ,輸出費氏數列前 N 項的程式。 請在白板寫出一段輸入爲 N ,輸出 N 的所有因數。 請在白板寫出一段輸入一個矩陣 M,輸出 M 的轉置矩陣的程式。 聽到問題之後,你對地方有一些地方可能還不太清楚,請教授解釋你不清楚的地方是完全沒問題的。請一定要在確認對題目沒有任何問題了,再開始著手解決問題。 與第一站一樣,你有可能需要時間思考,請你邊思考邊把你的想法說出來。 就算你最後無法寫出正確答案,你也還能讓教授知道你還是有程式設計的能力,只是卡在某個關卡而已。 寫完答案的時候,記得順著自己的程式檢查一下,也順便看看有沒有什麼沒加分號、括號的小問題,確定沒有問題之後就可以完成作答。如果有問題的話教授可能會在這個時候告訴你,請你修正你的答案。 這邊提供幾個可以找到題目練習的地方: Zero Judge Codewars LeetCode 如果作答完還有時間的話,教授可能會考你第二題。我當年就被考了一個「請在白板上畫出除五的同步計數器」,可能因爲我是電子科吧……所以如果你不是資訊科的話,還是建議複習一下數位邏輯會比較好。 面試結束 恭喜你撐過了這次的面試!這時候就可以放鬆了。如果你有其他學校要面試的話,就請儘量提早到下一個面試地點;如果沒有的話就可以留在學校休息一下,認識一下其他來面試的同學,他們很有機會會是你之後的同學。也可以到校園裡面走走,看一下教室長什麼樣子、吃看看學餐如何也是不錯的選擇! 重點整理 最後這邊再幫大家統整和補充一下幾個重點: 事先準備 規劃當天的行程、交通方式、衣服怎麽穿;準備好當天要帶的東西;瞭解一下學校或系上的課程和規定,這些都是絕對可以事先就確定並且準備好的。如果因爲這些事情沒做好的話一定會大大影響當天的狀態。 把握必拿的分數 自我介紹、專題探討都是一定會遇到的環節,如果沒有把握好這個部分的話就太可惜了。請一定要事先寫好稿、多順過幾次,也要想想教授可能會問的問題,被問到了要怎麼回答。說話的時候的速度如何、重點該擺在哪裡,這些也一定要事先想好和練習。 提高自己的勝率 資工系能考的題目雖然變化很多,但其實能考的概念不多,只要多做題目就能夠抓到其中的套路。當你把所有類型的題目都做過一次之後,你就會發現那些題目都有類似、可以參考的概念。隨著做過的題目越來越多,就能夠有越多的概念可以參考,解新的題目也就會越來越輕鬆。所以,請多做考古題、多做一些題目讓自己能夠有更高的機率可以會回答出正解。 台風 好的台風能讓教授能整個對談的過程更舒服,教授也能更專注在你說的事情上,也或多或少提高教授對你的認同度。如果你的經歷做得不錯,卻因爲沒辦法好好表達,而被另一個經歷普通但是能和教授侃侃而談的同學比下去,那不是非常的不甘心嗎?所以,不必對教授非常的畢恭畢敬也不要太吊兒郎當。自然、有自信、肯定、沒有冗言贅字,這樣的語氣無論是誰,都會覺得跟你對談是一件舒服的事情。 練習 “Repetition is the mother of skill” - Tony Robbins 如果你怕你表現得不好,那就多做幾次,直到你能夠輕鬆應付爲止;如果一道題你解不出來,那就多做幾道類似的題目,直到你能成功解答。你可以對著自己錄影,看看從別人的視角你的表現如何;也可以找幾個同學互相面試,看看彼此有什麼地方需要改進的。總之,重複和練習,這是兩件絕對不會背叛你的事情。 總結 以上是從一個資工系學生的角度,想要給大家的一些建議,也是我希望我當年就能知道的事情。 祝大家都能順利推甄上想要的學校和科系!
JN
入驻第1年
如何快速地把檔案傳到另外一台電腦上(不用經過雲端硬碟)
如何快速地把檔案傳到另外一台電腦? 隨身碟 這大概是最直覺的作法,不過你必須先找得到你的隨身碟。 如果你很順利地找到你的隨身碟,接下來還要把隨身碟插到電腦 -> 把檔案複製出來 -> 卸載隨身碟 -> 再把隨身碟插到另一台電腦 -> 終於拿到檔案,而且這還不考慮 USB 平均要插 3 次才會成功。 所以除非是要傳非常大的檔案,否則我覺得還是太麻煩了。而且手邊不見得會有 USB 3.0 以上的隨身碟和孔可以用,如果退回到 USB 2.0 的速度的話只有 480Mbps 以下(通常是有 200Mbps 就偷笑了)。 AirDrop 不得不說 AirDrop 是真的非常好用,不過限制也很明顯,那就是傳送和接收端兩邊必須都要是 Apple 的裝置才可以。 雖然也有像是 ShareDrop 這種類似 AirDrop 的服務,不過這類的服務大多是建立在區域網路或是 Wifi 直連上,也就是說,這類方式的另一個限制,就是傳送和接收端兩邊必須要在同一個地方或是在同一個網域內才行。 雲端硬碟 / 通訊軟體 / Email 這幾個服務我覺得比較類似就擺在一起討論了 基本上這些方式都需要登入,甚至要下載特定的軟體,有些也有檔案大小的上限,而且他們本來就不是被設計來傳輸檔案的,所以用起來都會有些彆扭的地方。另外這類服務大多數都會把檔案留在他們的伺服器上,如果你是要傳一些比較敏感的資料(比如說證件、文件翻拍),你有辦法安心的使用嗎? Send Anywhere 其實 Send Anywhere 是蠻好用的服務,你只要選擇好你要傳的檔案後,你就會得到一串數字(登入才能使用連結),然後在另一台電腦上一樣到 Send Anywhere 上輸入剛剛得到的那串數字之後,你就能在另外一台電腦接收到檔案。 不過 Send Anywhere 還是有缺點,就是還是必須要打開瀏覽器才能使用,有些進階功能還需要登入甚至收費。另外其實 Firefox 也曾經提供類似的服務,不過後來爲了防止被用來傳送有害的內容就結束服務了。或許 Send Anywhere 有一天也有可能步上 Firefox Send 的後塵,那麼到時候我們就必須再尋找下一個替代方案了。 SCP / FTP 假如你傳送或接收端的其中一邊是只能使用文字界面的伺服器的話,那你的選擇大概就只有這兩個了。 使用 SCP 的話你需要先在伺服器上設定好 SSH Server,這問題不大,麻煩的是每次要傳東西的時候你都必須要打很長的指令,而且其中還包括像是 IP 和路徑這種超級容易打錯的東西,所以我每次用 SCP 的時候都至少要試兩、三次才會成功。 1 scp -i ~/.ssh/private_key localfile remote_host:/path/remote_file 至於 FTP 的話,架 FTP Server 相比上面的方法都還要麻煩很多,除非是需要讓很多人一起存取檔案的情況,否則 FTP 完全不會是一個好的方法。 救世主 - Croc 廢話不多說,直接上圖 圖片裡面的左邊是我的本機,右邊是我的一台 VPS(伺服器)。我從我的本機傳送了一整個資料夾的內容到 VPS 上只需要各打一行指令就完成了!(雖然只有一個檔案) 發送端在確定發送之後會得到由一個數字和三個英文單字組成的通關密語,在接收端上輸入那段通關密語之後就能接收到檔案,就是這麼簡單! How it works? Croc 使用的是中繼的伺服器來傳輸檔案,也就是你需要一台伺服器來負責轉發傳輸的檔案,不過 Croc 預設就是使用官方提供的伺服器,所以你不用擔心需要自己架一台中繼伺服器啦!你可能會擔心官方的伺服器會不會有一天突然掛掉或是有資安的疑慮,其實架設 Croc 的中繼伺服器也很簡單,這部分 小惡魔 - AppleBOY 已經寫過一篇文章 說明得很清楚了,建議大家可以去他那邊參考。 優點 不需要自己架設任何伺服器也不需要 port 轉發 使用非常容易 使用 PAKE 點對點加密 支援跨平台(Windows, Linux, MacOS) 支援一次傳送多個檔案 意外中斷後可以接續傳輸 優先使用 IPv6 可以使用代理伺服器 Android 上有 第三方 App 限制 傳輸和接收端必須都能正常連接網路 傳輸速度受外網速度限制 不過這兩點都是可以透過自己架 Croc 的中繼伺服器就解決的,我自己是想不太到有其它的缺點了啦。 安裝 官方其實已經有現成的腳本了,你只需要一行指令就能安裝: 1 curl https://getcroc.schollz.com | bash 如果你是用的是 MacOS 的話也可以透過 Homebrew 來安裝: 1 brew install croc 而我現在用的是 Manjaro(基於 Arch Linux),Croc 已經收錄在 Pacman 裡了: 1 sudo pacman -S croc 如果是在 Android 的話我會推薦使用這個 第三方 App。 使用方法 使用方法非常簡單,首先你要在兩邊都安裝好 Croc,接著你只需要在要傳送檔案的那台電腦上輸入 croc ,然後後面接上你要傳送的檔案或者是資料夾,接著他會問你是不是要把這個檔案傳出去,這裡我們直接 Enter 就可以確認,然後你就會得到一個由一個數字和三個英文單字組成的通關密語,就像這樣: 1 2 3 4 5 6 7 $ croc testfile Did you mean to send 'testfile'? (Y/n) Sending 'testfile' (0 B) Code is: 1704-tiger-ticket-report On the other computer run croc 1704-tiger-ticket-report 然後到要接收檔案的那台電腦上輸入 croc,然後後面接上剛剛在另一台電腦得到的通關密語,接著他會問你是不是要接收這些檔案,一樣直接 Enter 確認,就能成功接收到檔案了: 1 2 3 4 5 $ croc 1704-tiger-ticket-report Accept 'testfile' (0 B)? (Y/n) Receiving (<-118.169.227.146:44682) 100% |████████████████████| ( 0/ 1B, ) 你可能會覺得那串通關密語還是太長太難打了,別擔心,這個通關密語是可以自己設定的,只要在傳送的時候加一些參數就可以設定,像是這樣: 1 2 3 4 5 6 $ croc send --code jnyiunn testfile Sending 'testfile' (0 B) Code is: giveanornot On the other computer run croc giveanornot 不過通關密語至少要六個字母或數字,太短的話會直接被拒絕: 1 2 $ croc send --code 12345 testfile 2021/09/25 14:08:48 code is too short 參考資料 以上就是 Croc 的安裝和使用的方法,其實 Croc 還有更多的進階用法,不過我從來都沒有使用過,有需要的話也可以到下面這幾個地方參考: https://github.com/schollz/croc https://schollz.com/blog/croc6/ https://blog.wu-boy.com/2021/02/share-files-between-two-computer-using-croc-tool/ 圖片來源 https://imgflip.com/memegenerator https://unsplash.com/photos/HONJP8DyiSM https://www.xiaoyao.tw/2018/09/LINE-alone-Group.html
JN
入驻第1年
解決部署 Discord.js Bot 到 Heroku 時報錯
錯誤現象 部署 Discord.js Bot 到 Heroku 時報錯: Web process failed to bind to $PORT within 60 seconds of launch 造成原因 當 Heroku 的 app 啓動時,Heroku 會幫你綁一個 port 給你,但你的 bot 並沒有在監聽任何一個 port,對應不上就出錯了。 解決方法 在 node 的專案根目錄新增一個檔案 Procfile 。 在 Procfile 加入下面這一行(如果你的 bot 啓動的指令不同的話也請在這裡一併修改)。 1 worker: npm start 把更動推上 Heroku 回到 Heroku,進到 App > Resources Tab 然後關閉 web 並且把 worker 打開。 這時你的 Bot 應該會重新啓動並且正常運作。
JN
入驻第1年
寫出好的推甄書面備審資料的 5 個重點
今天我要來跟你分享推甄的備審資料到底要怎麼寫,有哪些重點要注意,以及有哪些資源可以利用。 我會以推資工系爲目標出發,主要針對資電、電機類群爲目標,但我想這篇對推工科的學弟妹們都會有幫助。 自我介紹 小弟 2017 年(民 106)應屆畢業,參加統測爆運氣拿了 651 分,推甄錄取臺科大資訊工程系。後來才得知當年該系分發最低錄取分數只有 639.75 ,所以其實我直接登記分發就能上了,不過當年資電群的專業科目比較簡單(也反映在當年最低錄取分數),爲了求保險我還是花錢跑臺北面試一趟了。 以下就是我經歷大學四年後,回頭看看我當年寫的備審資料之後,很多我希望我能夠早點知道的事情。 正文開始 我會說大學的推甄其實很像是去公司面試職缺,都是拿履歷(備審資料)去跟你的主管(教授)換面試的門票。而看你履歷、和你面試的人就是你未來會修到他們的課的那些教授,既然如此,好好想想他們平常都喜歡看怎麼樣的東西就很重要了。 雖然你也是透過網路找到這篇文,但我覺得網絡上很多備審相關的分享看起來很厲害,但我覺得很熱門的那幾篇文章對推資工系來說或許有點不適用(有的甚至還是實體書面的攻略)。而且,你以爲你找到那些是稀世寶典,其實大家都找到一樣的這些資源,寫出來的東西都一樣,教授一次看了好幾十份一樣的東西其實早就疲勞了。 備審要準備哪些東西? 我直接到 第二階段報名系統【練習版】 查看到底需要上傳哪些東西。其實都還蠻貼心的,該寫哪些東西都已經列出來給你了,除非你的經歷很特殊,不然應該都不用煩惱要寫什麼。 其中大部分人的(一)、(二)項應該都不必自己再處理,所以我們接下來就聚焦討論(三)的各個項目。 專題製作學習成果或專業實習科目實習報告 這一項主要是放大家在高二、高三的時候做的專題,或是你一位大神,也可以在這裡放小論文、科展或甚至實習的經驗,總之就是放你在高中這三年做過的最大成果,也會是評分的重點項目。 我想在上專題課的時候,老師就應該會要求大家要寫專題計劃書、報告(結案)書,其實就算你原封不動交上去也不會有太大的問題,畢竟重點還是你的作品如何(笑)。不過,如果你自認作品不如人的話也可以試著修改一下內容,讓整體看起來更完整一些。我認爲論文的結構和內容很值得參考(畢竟教授也是常常在看論文)。 論文可以到 Google Scholar 搜尋,這是 Google 的學術文章搜尋引擎。 一般論文的結構大致如下: 摘要 前言 背景知識及相關研究 研究方法 實驗步驟 實驗結果 結論 未來展望 附錄 當然這是相對完整的論文的結構,大家可以自己斟酌刪減或是增加小項。下面解說一下各個章節要寫哪些東西。 摘要 把你這一整個報告書的內容濃縮,讓讀者可以在一開始對你的專題有一些基礎概念,大概知道瞭解一下 3 點: 爲什麼要做這個專題 怎麼做的 做得如何 如果有時間的話可以整理一下 code 推到 GitHub 上,雖然教授很高機率不會點進去看,但至少也能讓教授知道你會用 Git。 Git 對於資工系來說幾乎是必學的工具之一 前言 寫你爲什麼會想做這個專題,動機是什麼?想解決什麼問題? 背景知識及相關研究 如果你的專題有用到比較少見的硬體或技術,或是用了哪些函式庫,都可以在這裡提及。參考的研究結果、資料也都在這邊解釋。但如果是 Arduino 開發板或是 C 語言這種大家幾乎都有概念的東西則可以選擇省略。 研究方法 這邊是你計劃(但其實就是最終)得到的實作方法,在概念上你怎麽做到的,可以畫一些圖來輔助說明。 例如:這個系統的模組如何互相溝通 實驗步驟 這邊記錄你實作的詳細過程和參數,像是用了哪些資料、設定了哪些參數、電路圖長怎麼樣、甚至是電源用的是多少伏特都可以記錄在這裡。 實驗結果 很簡單,把跑出來的結果貼上來,看看跟你預期的結果有沒有相符,有沒有新的發現。 結論 跟摘要差不多,但著重在達成了什麼成就。 未來展望 這次專題有哪邊做得不滿意,或是這次專題做完發現可以再去研究的新題目。 附錄 所有引用的參考資料,或是太大的表格等等不適合直接放在內文的資料。 自傳及讀書計劃 自傳和讀書計劃其實是同一件事情,差別只是已經發生了還是未來才會發生。這邊的重點是絕對不要把無關的事情寫進來,無關的事情就是和你要申請的科系無關的事。 自傳 拜託,拜託不要再寫什麼「我來自OOO的家庭、從小生活XXXX、爸爸總跟我說¥%&#(&*……」。 教授根本不關心你家裡怎麼樣,你跟這個科系的關聯才是重點。 教授根本不關心你家裡怎麼樣,你跟這個科系的關聯才是重點。 教授根本不關心你家裡怎麼樣,你跟這個科系的關聯才是重點。 可以考慮從爲什麼你會選擇你高中的科系開始(如果你是讀高職),或是這個領域的啓蒙。寫寫你在學習這些東西的時候得到哪些成就、遇到什麼困難、如何解決它們。 或是,可以考慮在這邊的開頭列出一些自己的 Highlight,讓教授一眼就可以知道你的背景是怎麼樣。 其實也可以花一點篇幅寫寫專題的內容,寫寫報告書中沒有寫的–你做專題之後心理上得到的成長和感受。 這邊篇幅其實不設限,畢竟教授不會花非常多心思看這邊,我會覺得大約 7、800 字就很足夠了(聽起來很多但其實寫起來就會發現不難)。 讀書計劃 這邊比起自傳就重要多了,不過大家都不知道怎麽寫,常常都是寫什麼「增進實作能力」、「加強英文能力」。如果都是寫這些空泛的東西的話我會覺得有點可惜,其實這邊有很多東西可以寫的。 爲什麼會寫出空泛的東西?其實就是對未來會碰到的東西沒有什麼概念。 那要怎麽有概念?除了有學長姐可以問以外,這邊有三個資源推薦給大家: 臺科大資工系課程地圖 每個系上應該都有類似的資料,告訴你你的必修課程有哪些,要往某個領域發展的話該選哪些課。極度建議先去找找每個領域的入門課程稍微看一下,看看自己喜不喜歡這些東西,稍微看過的話應該就會對自己未來該學什麼東西有一些概念了。 假設你對人工智慧有興趣,下面這張截圖就幫你把該修的課都列出來了: freeCodeCamp.org Youtube Channel 這個組織有非常多免費、完整的初心者教學,你可以配合 1. 看看你對哪些課程比較有興趣 【密技】台灣軟體業業界現況詳解、軟體工程師指南 若你是就業導向的話,這篇巴哈的文也很值得稍微看一下,雖然對高中畢業的你來說有點遙遠,不過,看得更遠的話下一步會走得更踏實一點。 至於英文能力,資工系平常需要看大量的英文的資料,班上有好幾個同學本來看不太懂英文,最後都有能力直接看英文的說明文件,這方面不必太擔心。聽力的部分我推薦看看 Youtube 上的程式教學,除了專有名詞需要花時間收悉一下,其實不會有太艱深難懂的地方。而且就算聽不太明白,看圖說故事也能理解個 6、7 成,不至於會有很大的挫折感。只有口說平常會比較少用到,需要你另外規劃一下。 另外,其實不妨可以給自己設一個目標,有了目標也會比較清楚該如何做。雖然有點老掉牙,但如果放一個符合 SMART 原則 的目標在這裡的話會提升不少說服力。 競賽獲獎或證照證明 這邊相對簡單,大部分的人就是把該掃描的掃描一下貼一貼就好了,除非你有比較特別的獎項就要排版強調一下。 強烈建議:可以做一個表格或目錄在第一頁讓教授可以一眼就知道你得過什麼獎(不會有教授花時間看你一張一張掃描的圖檔的) 社團參與及學校幹部 這邊主要的目的是向教授展現你的問題解決能力、人際溝通能力、以及團隊合作能力,在這邊寫與申請科系無關的成就的話意義不大。 建議可以以事件爲主題來寫,可能是你如何帶領你的夥伴完成一個的目標;可能是夥伴們吵架你怎麽處理(這很常見);或是你的團隊在遭遇困難的時候是怎麽解決的。 其它學習成果 這邊放你曾經做過的小 project 或是一些小玩具,只要簡單列出用途和用到的技術就可以了,如果時間很充裕的話才考慮寫得像專題一樣。 重點整理 以我成爲資工人四年的資歷猜想資工系教授會喜歡看的備審資料大概是什麼樣子,整理出幾個原則: 包含大學的課程內容 用詞精確,並參考使用專業用詞代替 多使用條列的方式,並稍微填充讓資訊密度不至於太高 不要寫教授可能覺得無關的事 特別的美工非必要,簡單排版順眼即可 (可選)若有條件可以用英文寫 最後附上一張評分標準給大家參考 如果要說一個大原則,大概就是讓教授覺得你已經是個資工人,或至少讓他們覺得你對資工是有點 sense ,寫出來的東西和他們平常看的東西不會差太多。雖然很矛盾的是:你就是想要成爲一個資工人才想進這個系。 TL;DR 如果要用一句話總結的話: 用他們的語言,說他們的事情,拿他們的分數 資工 Bonus 如果大家覺得 Word 其實沒那麼好用的話,其實可以試試用最近在很流行的 MarkDown 來寫文章。用 MarkDown 寫文章的話,排版會變得很輕鬆,就像我這篇文章也是用 MarkDown 寫的,你只要要先花 10 分鐘就可以學會怎麽用 MarkDown 來排版了。 這邊有 NiceCode 的 影片教學 也有很多的工具可以直接把 MarkDown 轉成 PDF(而且還可以選不同格式),或是如果你偷懶不想要在電腦上裝軟體的話可以試試在 HackMD 編輯然後直接列印成 PDF 檔 XD。
JN
入驻第1年
消失的七個月
100 天的挑戰 去年的 11/08,我在舊的部落格發起「100 days of code 挑戰」,大致上是我要連續寫 100 天的 code,直到我找到工作爲止。在那之後,我每天花至少四個小時在寫 code 這件事情上。 倒下、沉淪 在挑戰開始的十天內,我遭遇了重大變故;二十天左右的時候確定自己不會如期入伍。 終於在約莫跨年前後、100 天接近過半的時候,生理出現警訊,隨之而來的是長達半個月的嚴重情緒低落。在這段時間我完全不碰寫 code 的事情,我嘗試用做我喜歡做的事情來消耗時間只是不過在大部分的日子,我喜歡的事情根本不足以消耗一整天這麼長的時間,剩下的時間如果沒有朋友陪我的話,要嘛在哭,不然就是在沉迷交友軟體。在這一切事情發生的同時,我還要一邊爲了搬離那時候的住處整理家當,非常的焦慮。 逃避 回到臺中後的生活,只能以廢一個字來描述,但那也是過得很舒服的一段日子。偶爾還是會有不好的事情打擾思緒。我也要特別感謝一位女性摯友的相挺,絕對是值得一提再提的一段經歷。 再次的生活改變 3/29 內政部開獎,幾個禮拜後收到徵集令,4/19 進入成功嶺成爲替代役男。在新訓期間徵選上原民會,之後又分發到臺南市原民會。相較於操到不行的消防役,還有被分發到山區或是離島,或是原本抽中的海軍陸戰隊(在屏東服役),我是幸運得不可思議。 然而,我依然沉迷在交友軟體,因爲有份執著是不能浪費住在臺南,可以在這裡到處玩玩的機會,只是我並沒有認識的朋友待在臺南。雖然幾乎每個週末都有如願在臺南、高雄走走,我的心理狀況比起在臺中的那段時間並沒有比較好,一個禮拜需要釋放一次情緒是我的生活。 新生活 就是上個月的事情,我擁有了穩定、高品質的陪伴,足夠我戒掉交友軟體,也更徹底地離開 Facebook、Instagram(雖然有其他原因)。我開始在 Mastodon 上記錄我的生活,也開始想要碰碰鍵盤打打 code,心理狀態也足夠好,讓我能夠規劃退伍後的日子,而不是純粹的感到焦慮而已。 新部落格 我原本是想把原本部落格的主題換掉,但意外發現 Wowchemy 這套還不錯的系統,就決定砍掉重練,也決定稍微調整一下我對部落格的使用方式。 我決定不再像以前一樣把部落格定位在傳授知識、技術,而是更專注在我的生活的收穫——也許是記錄我怎麽做出一個作品、怎麼解決一個問題、Debugging 的過程、也有可能是我生活純粹的體悟。這也是我會考慮在 Mastodon 上寫東西的理由,我希望部落格上的內容不是爲寫而寫,而是從生活的記錄中,去蕪存菁得到的,那些最有價值的經驗。 僅以這張圖紀念這七個月 GitHub 上綠綠的五十天和黑黑的七個月 希望一切如願都上正軌。
Debug
入驻第1年
使用 pprof 对 Go 程序进行分析优化
前言 在生产环境中,偶尔会发生 Go 程序 CPU 暴增的现象,排除某时段并发大的场景外,通过监控面板看不到程序是因为什么原因导致的,Go 语言原生就提供了工具 pprof,Google 对于 pprof 的解释就是一个用于可视化和分析数据的工具。 通过使用 Go pprof 可以对程序的 CPU性能、内存占用、Goroutine wait share resource、mutex lock 做剖面分析,我们可以使用该工具收集运行时的程序性能指标,从而分析出程序中是否由于代码编写不合理导致存在不合理的资源占用情况,从而对程序进行优化用来提升其性能。 功能 Go pprof 提供了以下五种不同维度观测其程序的功能: CPU Profiling:CPU 性能分析,按照指定时间采集监听其 Go 程序 CPU 的使用情况,可以确定 Go 程序在哪个程序段中占用 CPU 耗时长; Memory Profiling:内存性能分析,用来分析程序的内存堆栈区使用情况,用来检测是否存在内存泄漏; Block Profiling:Goroutine 等待共享资源阻塞分析; Mutex Profiling:互斥锁分析,用来报告共享资源使用互斥锁的竞争的情况; Goroutine Profiling:协程性能分析,用来报告对当前运行时的 Goroutine 操作及数量。 使用 Go pprof 工具的使用也是比较简单快捷的,可以使用runtime/pprof包生成一个 profile 文件,网上也有很多的教程,这里不再过多描述了,详细可以看下包提供的函数,上面介绍了使用方法。 目前我们主要使用的是net/http/pprof包,启动一个独立端口号 http 程序单独用来 Go 程序的分析,搭配着 graphviz 组件来可视化程序来分析数据,使用起来也是比较方便的: 第一步,将net/http/pprof包引用到程序中,建议直接放在程序入口处 main.go 文件 1 2 3 import ( _ "net/http/pprof" ) 第二步,若本身是一个 http 的程序,不需要此步骤,若不是 http web 程序或者不想将对应信息暴露在外网,可以单开一个 http web 程序用来专门监听服务: 1 2 3 4 5 6 7 func main() { // 程序逻辑代码 go func() { _ = http.ListenAndServe(":8848", nil) }() } 第三步,运行主程序,访问 pprof 界面: 1 2 3 4 5 6 7 8 9 10 11 http://127.0.0.1:8848/debug/pprof/ # 主界面 http://127.0.0.1:8848/debug/pprof/allocs # 所有过去内存分配的采样 http://127.0.0.1:8848/debug/pprof/block # 导致同步阻塞的堆栈跟踪 http://127.0.0.1:8848/debug/pprof/cmdline # 当前程序的命令行的完整调用路径 http://127.0.0.1:8848/debug/pprof/goroutine # 所有当前 Goroutine 的堆栈跟踪 http://127.0.0.1:8848/debug/pprof/heap # 活动对象的内存分配的采样 http://127.0.0.1:8848/debug/pprof/mutex # 争用互斥锁持有者的堆栈跟踪 http://127.0.0.1:8848/debug/pprof/profile # CPU 配置文件 http://127.0.0.1:8848/debug/pprof/threadcreate # 创建新 OS 线程的堆栈跟踪 http://127.0.0.1:8848/debug/pprof/trace # 当前程序执行的跟踪 后缀加上 ?debug=1 可以可视化查看对应描述,不加就可以下载成 profile 文件,使用 pprof 命令可视化查看对应数据。 第四步,使用 go tool pprof -http=:6001 profile 命令查看分析程序。 分析 上图是针对 CPU 使用做的采集可视化,箭头越粗、方块越大就代表着对应的操作消耗 CPU 大,可以看到占用 CPU 最多的操作就是 json 的序列化和反序列化操作。 同理对应的内存性能、Goroutine 阻塞的分析都可以看出对应的操作。 总结 使用 go pprof 工具可以分析解剖程序运行性能问题,可以快速定位生产环境中遇到的问题,并作出优化或者 fix bug,最后祝大家不会写出 bug code,程序稳定、头发永在。 关注微信公众号,第一时间获取最新内容,让我们一起变得更强!Debug客栈:订阅本站· 文章归档· 我的项目· 友情链接· 我的使用· 飞湾计划· 摄影展集· 我的主页
Debug
入驻第1年
Git 常用命令汇总
常规操作 git push origin test 推送本地分支到远程仓库 git rm -r --cached 文件/文件夹名字 取消文件被版本控制 git reflog 获取执行过的命令 git log --graph 查看分支合并图 git merge --no-ff -m '合并描述' 分支名 不使用Fast forward方式合并,采用这种方式合并可以看到合并记录 git check-ignore -v 文件名 查看忽略规则 git add -f 文件名 强制将文件提交 Git 创建项目仓库 git init 初始化 git remote add origin url 关联远程仓库 git pull git fetch 获取远程仓库中所有的分支到本地 忽略已加入到版本库中的文件 git update-index --assume-unchanged file 忽略单个文件 git rm -r --cached 文件/文件夹名字 (. 忽略全部文件) 取消忽略文件 git update-index --no-assume-unchanged file 拉取、上传免密码 git config --global credential.helper store 分支操作 git branch 创建分支 git branch -b 创建并切换到新建的分支上 git checkout 切换分支 git branch 查看分支列表 git branch -v 查看所有分支的最后一次操作 git branch -vv 查看当前分支 git branch -b 分支名 origin/分支名 创建远程分支到本地 git branch --merged 查看别的分支和当前分支合并过的分支 git branch --no-merged 查看未与当前分支合并的分支 git branch -d 分支名 删除本地分支 git branch -D 分支名 强行删除分支 git push origin --delete 分支名 删除远程仓库分支 git merge 分支名 合并分支到当前分支上 暂存操作 git stash 暂存当前修改 git stash apply 恢复最近的一次暂存 git stash pop 恢复暂存并删除暂存记录 git stash list 查看暂存列表 git stash drop 暂存名(例:stash@{0}) 移除某次暂存 git stash clear 清除暂存 回退操作 git reset --hard HEAD^ 回退到上一个版本 git reset --hard commitId 回退到某个版本 git checkout -- file撤销修改的文件(如果文件加入到了暂存区,则回退到暂存区的,如果文件加入到了版本库,则还原至加入版本库之后的状态) git reset HEAD file 撤回暂存区的文件修改到工作区 标签操作 git tag 标签名 添加标签(默认对当前版本) git tag 标签名 commitId 对某一提交记录打标签 git tag -a 标签名 -m '描述' 创建新标签并增加备注 git tag 列出所有标签列表 git show 标签名 查看标签信息 git tag -d 标签名 删除本地标签 git push origin 标签名 推送标签到远程仓库 git push origin --tags 推送所有标签到远程仓库 git push origin :refs/tags/标签名 从远程仓库中删除标签 远程仓库 git remote -v查看远程仓库地址 git remote show origin查看远程仓库详情信息 查看某个 commit 提交属于哪个分支 git branch -l --contains <commit_id> 本地分支 git branch -r --contains <commit_id> 远程分支 git branch --all --contains <commit_id> 所有分支 关注微信公众号,第一时间获取最新内容,让我们一起变得更强!Debug客栈:订阅本站· 文章归档· 我的项目· 友情链接· 我的使用· 飞湾计划· 摄影展集· 我的主页
Debug
入驻第1年
PWA 渐进式Web应用程序
简介 PWA是Progressive Web App的简称,是谷歌提出的新型Web技术,并由W3C及谷歌来推广这项技术,其主要目的是为了提升用户对网站原生使用体验,同时又能节省对网站的开启速度。 在我们国内,类似于PWA的技术可以简单地理解为微信主导的小程序,不过小程序的使用需要进行微信小程序前端重构开发,而渐进式Web应用程序开发只需要运用现代Web API以及传统渐进式式策略来构建网站的方式。 特点 由于这项技术是谷歌提出的,目前谷歌系的浏览器都支持PWA, 官方说有三个特点,分别是: 可靠 - 即使在不稳定的网络环境下,也能瞬间加载并展现 体验 - 快速响应,并且有平滑的动画响应用户的操作 粘性 - 像设备上的原生应用,具有沉浸式的用户体验,用户可以添加到桌面 而我感觉使用这个技术最大的特点就是将网站缓存下来,开启网站只需要0.3秒之内,使得网站加载速度异常地快,同时对用户非常友好,增添其用户交互性。 应用 近期对网站进行了PWA升级,只是用一个简单的插件就实现了对网站的APP转化,在开启我的网站的同时,在搜索栏会有加号提醒添加至桌面,如下图: 若是对我的网站感兴趣,可以点击按钮安装PWA,不用安装APP即可获取本站服务,若是手机用户可以在出现的将此页面发送至桌面来进行订阅。 功能 离线和缓存 Service Worker 这项技术主要是解决JS单线程问题,为了减少对浏览器网页开启峰值,页面加载问题。 浏览器中的 javaScript 都是运行在一个单一主线程上的,在同一时间内只能做一件事情。随着 Web 业务不断复杂,我们逐渐在 js 中加了很多耗资源、耗时间的复杂运算过程,这些过程导致的性能问题在 WebApp 的复杂化过程中更加凸显出来。 什么是 Service Worker Service Worker 有以下功能和特性: 一个独立的 worker 线程,独立于当前网页进程,有自己独立的 worker context。 一旦被 install,就永远存在,除非被手动 unregister 用到的时候可以直接唤醒,不用的时候自动睡眠 可编程拦截代理请求和返回,缓存文件,缓存的文件可以被网页进程取到(包括网络离线状态) 离线内容开发者可控 能向客户端推送消息 不能直接操作 DOM 必须在 HTTPS 环境下才能工作 异步实现,内部大都是通过 Promise 实现 Web存储 选择正确的存储机制对于本地设备存储和基于云的服务器存储都非常重要。 良好的存储引擎可确保以可靠的方式保存信息,并减少带宽和提升响应能力。正确的存储缓存策略是实现离线移动网页体验的核心构建基块。 存储分类分为:数据模型、持久化、浏览器支持、事务处理、同步/异步。 强黏贴用户 将站点添加至屏幕 为了吸引并留住用户,不仅仅自己网站需要比较高质量的文章,良好的交互,还需要一些营销手段增强网站的曝光度,提升与用户的交互。 如果用户对你的网站比较感兴趣,最好的方式将站点添加到主屏幕,不但可以省去用户开启浏览器的操作,提高其转化率,这样就可以对用户强黏贴了。 消息通知 使用 service worker 的功能之一:通知 (notification),它允许服务器向用户提示一些信息,并根据用户不同的行为进行一些简单的处理。 用户自动登录 账户是网站必不可少的组成部分。账户体系的存在,可以让网站给用户提供分级服务,同时网站也能够通过收集用户行为实现精准推送。但账号的存在将使得用户不得不多出一步登录的步骤,要知道根据“漏斗模型”理论,从起点到终点,每个环节都会产生用户的流失,依次递减。因此想办法省去烦人的账号密码输入过程,不但能提高用户体验,也能够提高网站转化率。 记住网站传统密码形式; 凭证管理,第三方登陆验证。 网络安全 Web安全; 使用SSL 即 Https; 同源策略; 典型的安全漏洞; CSP(内容安全策略)。 详细内容请移步查看:https://lavas.baidu.com/pwa/web-security/introduction 参考文章 什么是PWA | PWA 文档| Lavas 简单介绍一下Progressive Web App(PWA) 渐进式Web 应用(PWA) | MDN 讲讲PWA - 前端学习- SegmentFault 思否 Progressive Web Apps 关注微信公众号,第一时间获取最新内容,让我们一起变得更强!Debug客栈:订阅本站· 文章归档· 我的项目· 友情链接· 我的使用· 飞湾计划· 摄影展集· 我的主页
Debug
入驻第1年
浅析悲观锁与乐观锁
在关系型数据库中,悲观锁与乐观锁是解决资源并发场景的解决方案,接下来将详细讲解一下这两个并发解决方案的实际使用及优缺点。 首先定义一下数据库,做一个最简单的库存表,如下设计: 1 2 3 4 5 6 CREATE TABLE `order_stock` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `oid` int(50) NOT NULL COMMENT '商品ID', `quantity` int(20) NOT NULL COMMENT '库存', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; quantity代表着不同商品 oid 的库存,接下来 OCC 及 PCC 使用此数据库进行演示。 乐观锁 OCC 它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。在提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事务又修改了该数据。如果其他事务有更新的话,正在提交的事务会进行回滚。 即“乐观锁”认为拿锁的用户多半是会成功的,因此在进行完业务操作需要实际更新数据的最后一步再去拿一下锁就好。这样就可以避免使用数据库自身定义的行锁,可以避免死锁现象的产生。 1 UPDATE order_stock SET quantity = quantity - 1 WHERE oid = 1 AND quantity - 1 > 0; 乐观并发控制多数用于数据争用不大、冲突较少的环境中,这种环境中,偶尔回滚事务的成本会低于读取数据时锁定数据的成本,因此可以获得比其他并发控制方法更高的吞吐量。 悲观锁 PCC 它可以阻止一个事务以影响其他用户的方式来修改数据。如果一个事务执行的操作读某行数据应用了锁,那只有当这个事务把锁释放,其他事务才能够执行与该锁冲突的操作。 这种设计采用了“一锁二查三更新”模式,就是采用数据库中自带 select ... for update 关键字进行对当前事务添加行级锁先将要操作的数据进行锁上,之后执行对应查询数据并执行更新操作。 1 2 3 4 BEGIN SELECT quantity FROM order_stock WHERE oid = 1 FOR UPDATE; UPDATE order_stock SET quantity = 2 WHERE oid = 1; COMMIT; MySQL还有个问题是select ... for update语句执行中所有扫描过的行都会被锁上,这一点很容易造成问题。因此如果在MySQL中用悲观锁务必要确定走了索引,而不是全表扫描。 悲观并发控制主要用于数据争用激烈的环境,以及发生并发冲突时使用锁保护数据的成本要低于回滚事务的成本的环境中。 OCC 和 PCC 优缺点 OCC 优点及缺点 【优点】 乐观锁相信事务之间的数据竞争(data race)的概率是比较小的,因此尽可能直接做下去,直到提交的时候才去锁定,所以不会产生任何锁和死锁; 可以快速响应事务,随着并发量增加,但会出现大量回滚出现; 效率高,但是要控制好锁的力度。 【缺点】 如果直接简单这么做,还是有可能会遇到不可预期的结果,例如两个事务都读取了数据库的某一行,经过修改以后写回数据库,这时就遇到了问题; 随着并发量增加,但会出现大量回滚出现。 PCC 优点及缺点 【优点】 “先取锁再访问”的保守策略,为数据处理的安全提供了保证; 【缺点】 依赖数据库锁,效率低; 处理加锁的机制会让数据库产生额外的开销,还有增加产生死锁的机会; 降低了并行性,一个事务如果锁定了某行数据,其他事务就必须等待该事务处理完才可以处理那行数据。 References 【MySQL】悲观锁&乐观锁 LearnKu 浅析乐观锁与悲观锁 维基百科 悲观并发控制 && 乐观并发控制 关注微信公众号,第一时间获取最新内容,让我们一起变得更强!Debug客栈:订阅本站· 文章归档· 我的项目· 友情链接· 我的使用· 飞湾计划· 摄影展集· 我的主页
Debug
入驻第1年
Gource 版本可视化工具 使用手册
Gource 是一款版本控制可视化的工具,使用这个工具可以将自己的 Git 提交的代码包括对 Mercurial,Bazaar 和 SVN 的内置日志生成可视化支持。Gource 还可以解析由多个第三方工具为 CVS 存储库生成的日志。 提交的代码按照时间轴的顺序动态显示出来,可以使你的工作过程以动画的形式显现,并且 Gource 这个工具可以显示出来不同用户对一个代码库进行同一时间内的修改操作。 官方网站:https://gource.io/ 常用命令 在这里我列举几个经常使用到的命令,PS:你需要先进入到对应项目目录中去,这个很重要,要不然会提示该目录下没有 log 记录。 1 2 3 4 5 6 7 gource # 使用Gource查看版本历史 gource -f -1280×720 # 设置分辨率大小 gource -s 0.5 # 每天以0.5秒的速度播放 gource -o 1.mp4 # 将版本动画导出到 1.mp4 文件中 gource -s 0.1 -o 2.mp4 # 每天以0.1秒的速度导出到 2.mp4 文件中 gource -f -b red # 将背景设置为红色 gource --title “Gource” # 为gource设置title 基本命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 ➜ ~ gource -help Gource v0.51 Usage: gource [options] [path] 用法: gource [选项] [路径] Options: -h, --help 帮助 -WIDTHxHEIGHT, --viewport 设定窗口大小 -f, --fullscreen 全屏显示 --screen SCREEN 画面编号 --multi-sampling 启用多重采样 --no-vsync 禁用垂直同步 --start-date 'YYYY-MM-DD hh:mm:ss +tz' 从日期和可选时间开始 --stop-date 'YYYY-MM-DD hh:mm:ss +tz' 停在某个日期和可选时间 -p, --start-position POSITION 从某个位置开始(0.0-1.0 or 'random') --stop-position POSITION 停在某个位置 -t, --stop-at-time SECONDS 在指定的秒数后停止 --stop-at-end 在日志结尾处停止 --dont-stop 在日志结束后继续运行 --loop 在日志末尾循环 -a, --auto-skip-seconds SECONDS 如果没有任何反应,则自动跳至下一个条目 持续几秒钟(default: 3) --disable-auto-skip 禁用自动跳过 -s, --seconds-per-day SECONDS 每天以秒为单位的速度(default: 10) --realtime 实时播放速度 --no-time-travel 如果提交时间是过去的时间请使用上一次提交的时间 -c, --time-scale SCALE 更改模拟时间范围(default: 1.0) -e, --elasticity FLOAT 节点弹性(default: 0.0) --key 显示文件扩展名 --user-image-dir DIRECTORY 包含要用作头像的图像的目录 --default-user-image IMAGE 默认用户图像文件 --colour-images 使用单色图像 -i, --file-idle-time SECONDS 时间文件保持空闲(default: 0) --max-files NUMBER 最大文件数或0(无限制) --max-file-lag SECONDS 提交的最大时间文件可能会出现 --log-command VCS 显示VCS日志命令(git,svn,hg,bzr,cvs2cl) --log-format VCS 指定日志格式(git,svn,hg,bzr,cvs2cl,custom) --load-config CONF_FILE 加载配置文件 --save-config CONF_FILE 使用当前选项保存配置文件 -o, --output-ppm-stream FILE 将PPM流输出到文件 ('-' for STDOUT) -r, --output-framerate FPS 输出帧率(25,30,60) PATH可以是受支持的版本控制目录,日志文件,Gource配置文件或用于读取STDIN的'-'。 如果省略,则gource将尝试从当前目录生成日志。 要查看完整的命令行选项,请使用 “-H” 关注微信公众号,第一时间获取最新内容,让我们一起变得更强!Debug客栈:订阅本站· 文章归档· 我的项目· 友情链接· 我的使用· 飞湾计划· 摄影展集· 我的主页
Debug
入驻第1年
Linux Tree 树状目录显示工具 使用手册
Tree 命令以树状形状列出目录的内容的一个工具,你时常在 Github 中常看到一些开源项目会将自己的项目目录展现出来,这篇文章的背景图就是展现的开源项目 Laravel 中 app 目录的树状图,接下来介绍一下基本使用语法。 基本语法 1 tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...] 常用命令 1 2 3 4 5 6 7 8 9 10 11 tree --help 显示帮助信息 tree -d 只显示目录 tree -L n 只显示第n层目录 tree -l 遵循像目录这样的符号链接 tree -f 打印每个文件的完整路径前缀 tree -x 只保留在当前文件系统上 tree -L 级下降深层级目录 tree -R 达到最大等级时重新运行树 tree -P 模式只列出符合给定模式的文件 tree -I 模式不要列出与给定模式匹配的文件 tree -o 文件名输出到文件而不是标准输出 基本命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 [➜ ~ tree --help usage: tree [-acdfghilnpqrstuvxACDFJQNSUX] [-H baseHREF] [-T title ] [-L level [-R]] [-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes] [--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset] [--filelimit[=]#] [--si] [--timefmt[=]<f>] [--sort[=]<name>] [--matchdirs] [--ignore-case] [--fromfile] [--] [<目录列表>] ------- 上市选项 ------- -a 列出所有文件。 -d 仅列出目录。 -l 跟随目录等符号链接。 -f 打印每个文件的完整路径前缀。 -x 仅保留在当前文件系统上。 -L 级别仅下降级别级别的目录。 -R 当达到最大目录级别时,重新运行树。 -P 模式仅列出与给定模式匹配的那些文件。 -I 模式不列出与给定模式匹配的文件。 --ignore-case 模式匹配时忽略大小写。 --matchdirs 在-P模式匹配中包括目录名称。 --noreport 在树列表的末尾关闭文件/目录计数。 --charset X 将charset X用于终端/ HTML和缩进线输出。 --filelimit# 不要使包含超过#个文件的dirs下降。 --timefmt <f>根据<f>格式打印和格式化时间。 -o filename 输出到文件而不是stdout。 ------- 文件选项 ------- -q 将不可打印的字符打印为'?'。 -N 按原样打印不可打印的字符。 -Q 引用双引号的文件名。 -p 打印每个文件的保护。 -u 显示文件所有者或UID号。 -g 显示文件组所有者或GID号。 -s 打印每个文件的大小(以字节为单位)。 -h 以更易于理解的方式打印尺寸。 --si 与-h类似,但以SI单位使用(1000的幂)。 -D 打印上次修改或(-c)状态更改的日期。 -F 附加'/','=','*','@','|'或按ls -F的'>'。 --inodes 打印每个文件的索引节点号。 --device 打印每个文件所属的设备ID号。 ------- 排序选项 ------- -v 按版本字母顺序对文件进行排序。 -t 按上次修改时间对文件排序。 -c 按上次状态更改时间对文件排序。 -U 不排序文件。 -r 颠倒排序顺序。 --dirsfirst 在文件之前列出目录(-U禁用)。 --sort X 选择排序:名称,版本,大小,mtime,ctime。 ------- 图形选项 ------- -i 不打印缩进线。 -A 打印ANSI线图形缩进线。 -S 使用CP437(控制台)图形缩进线打印。 -n 始终关闭着色(-C替代)。 -C 始终打开着色。 ------- XML / HTML / JSON选项 ------- -X 打印树的XML表示形式。 -J 打印树的JSON表示形式。 -H baseHREF打印出以baseHREF作为顶层目录的HTML格式。 -T 字符串用字符串替换默认的HTML标题和H1标头。 --nolinks 关闭HTML输出中的超链接。 ------- 输入选项 ------- --fromfile 从文件中读取路径(。= stdin) ------- 其他选项 ------- --version 打印版本并退出。 --help 打印用法和此帮助消息并退出。 -选项处理终止符。 展示效果 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ➜ app tree . ├── Console │ └── Kernel.php ├── Exceptions │ └── Handler.php ├── Http │ ├── Controllers │ │ ├── Auth │ │ │ ├── ForgotPasswordController.php │ │ │ ├── LoginController.php │ │ │ ├── RegisterController.php │ │ │ ├── ResetPasswordController.php │ │ │ └── VerificationController.php │ │ ├── Controller.php │ │ └── IndexController.php │ ├── Kernel.php │ └── Middleware │ ├── Authenticate.php │ ├── CheckForMaintenanceMode.php │ ├── EncryptCookies.php │ ├── RedirectIfAuthenticated.php │ ├── TrimStrings.php │ ├── TrustProxies.php │ └── VerifyCsrfToken.php ├── Providers │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ ├── BroadcastServiceProvider.php │ ├── EventServiceProvider.php │ └── RouteServiceProvider.php └── User.php 7 directories, 23 files 关注微信公众号,第一时间获取最新内容,让我们一起变得更强!Debug客栈:订阅本站· 文章归档· 我的项目· 友情链接· 我的使用· 飞湾计划· 摄影展集· 我的主页

© 2026 好站网HaoZhan.wang 1.5 版权所有

苏ICP备19065220号-4    萌ICP备20269980号    茶ICP备2026050346号
本站数据    2026年报    版本历史    关于本站