Pingshian Yu

I'm

關於我

軟體工程師

具有超過 3 年的 Python 開發經驗。
具有超過 2 年的 Django Web 框架開發經驗。

  • 姓名: 游秉憲
  • 生日: 1992-01
  • 專長: Python, Django, JS, Vue
  • 城市: 臺灣, 臺北

技能

  • Backend
    • Django, Flask
    • FastAPI, Django-restframework
  • Frontend
    • HTML, CSS, JS, JQuery, Bootstrap
    • Vue.js

  • Docker
  • Git Flow
  • Nginx
  • Ubuntu

  • AWS
  • Linode

  • airlines, hotels, rail APIs
  • cwa weather opendata
  • linebot
  • notion

  • Draw.io
  • Figma
  • Postman
  • Pycharm, Vim, VS Code

  • Data Process: Pandas, Numpy, Openpyxl
  • Web Crawler: Selenium, BeautifulSoup

簡歷

- 積極追求 DevOps、設計模式和系統設計的學習機會,促進持續的技能發展。
- 每日參與代碼重構和主動的日誌管理,必要時為團隊成員提供支持。
- 利用異步網路爬蟲優化產品從合作夥伴網站同步,提升效率。
- 致力於維護準確的測試用例,以確保網絡應用程式的代碼可靠性。
- 與跨功能部門有效合作,設計和開發必要的系統。

學歷

2011 - 2017

國立臺灣大學社會工作學系

工作經歷

軟體工程師

山富旅遊 • 2021-09 ~ 現在

  1. 使用 Django 和 FastAPI Python Web 框架設計和開發公司的官方網站。
  2. 建立 API 連接,採用同步和異步方法優化數據檢索和處理。
  3. 管理日誌收集,主動解決問題,修復錯誤,增強功能,以確保網站的無縫運行。
  4. 致力於撰寫全面的技術文檔,記錄系統架構、代碼庫和項目的其他關鍵方面,供參考和未來開發之用。

(派遣) 軟體測試工程師

聯發科 • 2021-02 ~ 2021-06

  1. 精通開發測試軟體和專業工具,以提升品質保證流程。
  2. 對測試用例進行深入分析,產生全面的測試報告供評估和決策。
  3. 在撰寫技術文件方面展現熟練能力,確保專案細節和規格文件清晰明瞭。

資訊部專員

芥菜種會 • 2019-12 ~ 2021-02

  1. 使用 SQL 從多個部門的資料庫中提取資料。
  2. 利用 Python 的 pandas 開發高效的報告生成腳本。
  3. 收集並記錄來自各部門的需求,並將其與合作夥伴公司溝通,積極監控開發進度。
  4. 促進新系統的整合,提供用戶問題支援,並優化日常運作程序。

Portfolio

  • All
  • LineBot
  • Web

Tools

LineBot

GPT Chatbot

LineBot

Tools QR CODE

LineBot

GPT Chatbot QR CODE

LineBot

Articles

LeetCode Weekly Contest 369 第 2 題 2918. Minimum Equal Sum of Two Arrays After Replacing Zeros

# 題目敘述:

給兩個含有正整數的陣列 nums1, nums2,要求把所有 0 用正整數取代,如果取代後兩個陣列總和無法相等,就回傳 -1;如果可以,就回傳最小的總和。

# 想法:

回傳 -1 的條件是其中一個陣列的和 + 0 的數量大於另一個陣列的和,且另一個陣列沒有 0。原因是題目要求把 0 用正整數取代,所以至少要把 0 都用 1 取代,則第一個陣列的和會變成 total1 + zeros,如果這個和比另一個陣列的和大,那兩者就沒有機會相等了。
由題目的 sample 1 可以知道,結果是由 total 比較大的陣列決定的 (nums2 = [6,5,0]) ,所以可以把題目簡化成 找兩個陣列中 total + zeros 大的。

# 上code:
class Solution:
def minSum(self, nums1: List[int], nums2: List[int]) -> int:
total1, total2 = sum(nums1), sum(nums2)
zero_1, zero_2 = nums1.count(0), nums2.count(0)

if ((total1 + zero_1 > total2 and zero_2 == 0)
or (total2 + zero_2 > total1 and zero_1 == 0)
):
return -1

return max(total2+zero_2, total1+zero_1)

LeetCode Weekly Contest 368 第1, 2 題 Minimum Sum of Mountain Triplets

給一個正整數陣列求最小 (i, j, k) 的和,(i, j, k) 須滿足以下兩個條件:
1. i < j < k
2. nums[i] < nums[j] and nums[k] < nums[j]
第一題的編號是 2908,直接依照題目給的條件寫三層迴圈就能通過了。時間複雜度 O(n³)。

第二題 nums.length 10⁵ 這樣寫會TLE,要用 Prefix Min 的做法,時間複雜度 O(n)。

因為 i < j < k,就是整個數列依序取三個數出來,假設有一個解是 (l, pivot, r),分別在 2, 5, 8 的位置:


如果 (l, pivot, r) 要是最小,l 一定要是 pivot 之前所有數中最小的,r 也是一樣,會是 pivot 之後的所有數中最小的那個。然後再從 i = 0 開始找有最小值的 pivot 就可以了。

min_l 是 pivot 左邊的最小值陣列,min_r 是 pivot 右邊的最小值陣列,min_l[i] 代表到第 i 個為止最左邊的值,min_r[i] 代表從右邊數回來第 i 個為止最小的值。找法是 nums[0] 和 nums[len(nums)-1] 分別是 min_l 和 min_r 的最小值,接著每個 nums[i] 都跟 min_l[i-1] 和 min_r[i+1] 比哪個比較小,比較小的那個就是 min_l 或 min_r [i] 的值。

做完這兩個陣列之後再遍歷一次 nums 找符合題目要的 mountain triplets 最小值就行了。

aiohttp + FastAPI + BeautifulSoup 測試

Photo by Hitesh Choudhary on Unsplash

background: 平常網路上搜尋到的爬蟲(加上自己常常寫的)都是在 local 直接跑,本來如果使用 requests + BeautifulSoup 放上去 FastAPI 也能跑的很正常,但就是……慢、慢、還是慢……

有找到一些資料,像是 FastAPI-aiohttp-example,但看了很久還是不太懂,而且還有使用 aioresponses 來 mock/fake web requests in python aiohttp package ,以及 collections.abc 的 Coroutine 抽象class,完全看不懂啊啊啊啊啊啊啊… 所以不才小弟我想寫個簡單例子方便理解😂 順便做做實驗XD

Notion API with FastAPI (Releasing Daily Leetcode Problem Page’s Public Link)

Recently, I joined a Discord server that encourages its members to solve a LeetCode problem every day, though participation isn’t mandatory. While I don’t manage to solve one every single day, I make it a point to do so on weekdays. However, I encountered some difficulty when it came to copying and pasting the public URLs of Notion pages from a database into the Discord server. I thought it was a trivial task. To simplify this process, I decided to create a Notion API connection with a Linebot that can automatically provide me with the Notion page public link.

Contact

Location:

Taipei, Taiwan

Line:

Loading
Your message has been sent. Thank you!