原來可以這麼寫(3) : 關於我的工作流程

來開始交代一周一次的功課了XD
希望技術部落格可以一周一篇文章, 提升更多的技術含量
記錄自己一天比一天更佳進步的軌跡

關於trello

trello 是很多Team會用到的一個工具,可以用來管理專案與任務安排
它真的是一個真的很方便以及很有幫助的工具
我的前一份工作和現在這一份都有用到這個trello

一開始進入公司的時候 我發現到他們trello 有 進行中, Todo , 完成後請檢察等等的分類, 然後用tag作專案上的分類, 用了一陣子之後發現他們這樣的管理方式真的很不錯

所以就應用在我的side project 管理上
不過我個人也對這樣的部分做了一個調整: 加入了一個研究中的list
畢竟做為小小工程師而言, 作side project 的目標除了是興趣與證明自己的實力以外
也是還要將一些新的東西應用與練習的麻~ 好幫助自己真的可以越來越進步

於是就來分享看看我這個trello 的 template 喔: https://trello.com/b/PFi72D78/r567tws-template

歡迎用我的template去管理你們的專案~
如果有甚麼改進的建議或管理好方法歡迎來告訴我喔

Composer scripts

本周也學到composer 可以在composer.json 裡面寫一些指令, 可以在安裝後,更新後或者安裝前,更新前可以寫command 執行

至於這裡就有豐富關於此的內容,這裡我就不贅述:https://docs.phpcomposer.com/articles/scripts.html

我看到這個的想法是: 哇以後那些php的初始專案就可以不用這麼麻煩了耶, 只要下載後, composer install 或 composer update , 就可以使用了……

我是一個很懶的工程師,也很不喜歡背來背去那些指令, 況且每次都要google 一下把指令們copy & paste , 真的很麻煩

有了這個東西,方便多了, 不用跑 cp .env.example .envphp artisan key:generage

不過也發覺, 原來我還不懂composer XDDDD
但還好啦, composer 就是一種工具, 有用到就會自然學到了
script 技巧 GET !!!!

接到新任務- rust 真的有點看不懂

最近接到新任務, 就是一個可以幫營運單位整理資料夾的任務, 好讓營運單位可以上傳整個資料夾, 而這個資料夾的整理, 是需要戴上資料庫的id , 而營運單位會給我們他們的原檔案, for example : 他們給我們a.mp3 ,我要幫他們找到資料庫 a.mp3 的資料id (例如 10), 那我就要幫他們a.mp3檔案複製存成 media/in/10/10.mp3

它其實真的很簡單: 就是先資料庫連線取得要被整理出來的id 到底是哪些, 然後就做檔案的管理這樣就好(而且我下午還有些時間被抓去開會, 討厭, 沒辦法專心寫程式)

至於程式碼之後我再補這樣 XD (雖然後來我們討論流程這個部分又改了ㄎㄎ 總之這段程式不會用到實務)

https://github.com/r567tw/office/tree/master/move_audio_files

我用python , 用了一個下午時間就寫完了, 隔天我還去找了python 有沒有那種.env 這種東西, 把env 導入我這個小小小程式, 也是不到幾小時的時間

因為還有時間, 我就想說來改寫成rust 的版本, 剛好前幾天在超級簡單的看rust 的東西, 發現…. rust 真的有點看不懂, 那個連結 mysql 的範例…. 感覺有點不好懂…. 需要一段時間我才能將python 語法轉換過去。不過 反倒golang 的範例就沒有那麼難懂….

不知道是不是因為rust 比較底層的關係呢?

後記: 來分享我目前的吃飯工具們好了~

  • vscode:寫程式慣用的編輯器
  • sourceTree
  • Tableplus(偶爾會用workbench)
  • Skype
  • Slack
  • AWS
  • Postman
  • Chrome
  • Spotify
小君曰: 最近我家的PM常常有事沒事來找我, 說: 沒事, 專案(Server / API)還好好的.....

原來可以這麼寫(2):好久沒寫文章了

哈哈,  原本想說可以一個禮拜寫一篇技術文章的

但就是「懶」,所以到現在才出所謂的第二篇….

距離通過工作試用期也已經超過一個月了,我覺得工作上還算是得心應手,進度都在掌握中,也很喜歡目前的工作狀態,只是….我好想接新專案啊…..

在家工作心得

之前,因為疫情關係,我們公司試行了在家工作。老實說,這是我人生第一次在家工作。第一次的時候,還沒有待滿一個月…第一次,好慌、好亂….完全不知道在做什麼

但是,等我慢慢熟悉專案與產品、進度也漸漸掌握起來了,第二次試行、第三次試行,搞清楚自己目前的戰鬥位置、狀況,突然覺得,在家工作好棒啊,甚至有點享受、開心!只要我進度在掌握中就好拉,也確實,我也漸漸掌握好專案的進度XD

可惜,台灣疫情控制實在太好了,之前公司試行在家工作的制度就這樣無疾而終。

我好想要繼續在家上班啊…

結論:在家上班的前置工作與預備真的要做好

Mysql function/trigger

在做搜尋API這個功能時,因為原有資料庫欄位的設計限制與需要,欄位存了HTML標籤,但這反而造成我們在搜尋類似‘p’這種關鍵字時,會變成所有的資料都被回傳,形同沒有搜尋….  那時還算菜… 同事後來找到一個解法,就是新增新的欄位,利用Mysql function 的功能,再加上trigger , 可以在每次資料庫有異動時,新的欄位可以放入沒有html標籤的原資料,從而在API開發上,搜尋這個新的欄位,就可以克服這個問題

我以為只有oracle 資料庫有這種trigger 功能,因為我以前有在學校上課有修過這個oracle資料庫的課,所以對這個略知一二,但沒想到Mysql 也有這樣的功能,於是花了一點時間重新複習,把以前上課的回憶都找回來了啊… 而網路上,也有幫忙去除html 標籤的現成function,  配合trigger 的onupdate & oninsert , 再配合sql 語法將現在線上資料的html標籤去除,  真的是一個不錯的方案….不過如果你知道有更好的方式解決,歡迎告訴我&交流~

windows docker  問題

因為公司產品有使用到docker, 另外我在公司配備的是 windows電腦 (好想要被配備mac啊~~),於是在某次午休回來時,發現為什麼我的API 會出現問題?明明token , 程式都沒什麼問題啊… 後來我發現好像原來是docker 在windows休眠之後醒來後, docker內部container的時間會和外部window 不是一樣的,因為我的專案有調用到aws的api , 在時間不sync的情況下當然api就出錯了…. 我記得有搜尋到某篇文章說怎麼解決那個問題,好像到window設定什麼東西的….  總之,那是之前遇到的,我也不知道我那時的紀錄丟到哪了,現在我寫文章的時候一直找不到XD  但我說一下我的解法:因為文章裡面交代得實在太麻煩了,於是我決定:重開docker 大法 哈哈哈

Laravel env 問題

我在開發時候,有時候調用一些env的資料, 後來發現, 為什麼都調用不到… 經查詢後發現,原來是因為執行了php artisan config:cache的指令關係…. 詳細可以看看這篇文章:https://learnku.com/laravel/t/3362/laravel-use-env-to-read-the-environment-variable-null

結論:媽的,坑….好拉, 對不起,我沒好好認真看文件所以犯蠢….

Laravel 的queue 和玩玩 graphQL

剛好專案有用到, laravel 的queue 功能, 我預計之後為這個寫一篇專屬文章筆記一下這個, 以後面試可以大膽說用到queue了哈哈

然後因為進度超前及在掌握中,有一些空閒的時間,研究一下之前開發者還沒研究出來的GraphQL, 我裝了rebing/graphql-laravel, 原來,graphQL 是這個樣子…..  在這段時間,比起之前對graphQL有更多更深入的認識了, YA ~

小君曰:真的很久沒寫文章了

原來可以這麼寫(1):新工作第一週

去年的12月,我從上一間公司離職。其實,一月是打算好好去玩~

突然覺得自己韓國去得真是很好的時候,不然可能回來就要自行隔離幾天了XD

想知道韓國旅遊心得的可以到我的樂在信仰中喔:https://r567tw.tw/2020韓國之旅/

然後二月就是各種找工作、思考要做那些工作…..然後各種的無聲卡、拒絕、邀請進去…。

有一家做博弈的接案公司最誇張,其實我本來就沒打算做博弈了,去面試也只是想說「以戰養戰」的態度、寫寫題目,看看有沒有需要再精進的…(是說這間在話術上也很厲害,在頁面其實沒有看到博弈,他們也說他們不標榜自己是博弈,只是接案剛好有大部分都是接博弈的……),然後我就隨意地寫寫,甚至幾題我是空白沒寫,想說記起來回家研究怎麼寫會更好…結果超好笑的是下禮拜居然還發給我錄取通知….(到底有多缺人Xd)

還有一間是說我們「氣不合」,這個理由真的很靠杯,雖然我也知道面試這種事其實與技術能力沒有太大關聯,技術能力只是代表你能帶多少籌碼,最重要的還是面試官喜不喜歡你麻~ 但直接用「談論起來氣不合」這種直白的理由真的會覺得很不尊重面試者,這間公司的名稱就不公佈了,想知道可以私訊~

總之三月之後正式工作,進入了一間大型傳統機構,薪水上蠻滿意的。不過我想先等三個月培訓期度過了在公開自己在哪裡好了,不然培訓期沒過真的會很好笑很尷尬XD

不過我覺得是時候應該要好好記錄工作上的筆記與東西了,畢竟有紀錄有籌碼,這樣下次在跳、再找也更有話可以嘴,同時也是一種回顧自己進步的軌跡的概念~

有一句話我很喜歡:「Don’t Prove; Improve」連結

話不多說,這個系列的文章就叫做「原來可以這麼寫」,紀錄我看前輩、同事的code的筆記、以及一些工作上學到的新概念、新技術~然後後面的標題可以自行發揮創意,像這週就比較沒創意:新工作第一週!

(1) 原來可以直接創造一個class…

trait TraitA {
     public    function   HelloWorld(){
           echo'Hello World';
      }
}
trait TraitB {
   public   function   HELLOTWO(){
       echo'hELLO tWO ';
    }
}
$helper = new class {
      useTraitA,TraitB;
};;
$helper->HelloWorld();

 

(2) ‘<=>’ 運算子

這個很少遇到,沒寫道真的不會記得~

他會比較兩邊的值,然後會回傳0,1,-1

至於規則可以參考:https://www.php.net/manual/zh/language.operators.comparison.php

 

(3) filter_var

https://blog.xuite.net/coke750101/networkprogramming/57002113-PHP+filter_var%28%29+%E5%87%BD%E6%95%B8Filter+%E5%87%BD%E6%95%B8

 

(4) AWS

1. ECR: 類似aws方提供的docker hub
2. KMS: 加解密服務
3. Lambda : 微服務的部分
(5) 匿名函數
“`
$gifts->sort(fn($a, $b) => $b->created_at <=> $a->created_at)->values()
// 越後面的日子就會排越前面~
“`
小君曰:這能這個系列應該會是週更,但有可能會是月更,阿不管啦,我想寫就寫啦XD

厭世工作筆記系列-各種無聊環境設定

前言

最近工作了一段時間,覺得有些東西需要紀錄筆記一下也分享給各位在網路上的開發者。也是一個非常無聊的筆記啦xd 我稱之為「厭世工作系列」,以後會非常不定期之輸出。這文章的主題是環境的架設,適用於mac os, 如果工作常用mac os 開發測試的話可以參考一下…

sudo 不用密碼

有時候我們執行命令會需要root的權限,當然你可以使用sudo susu來事先變成root 操作,但我這個人就是懶嘛~不想每次sudo 都要輸入密碼,所以我在網路上找到這個solution.
– 首先,下sudo visudo 這個指令
– 之後就會進入一個文件,這裡通常預設適用vim編輯器編輯文件,請按i鍵進入編輯模式,之後在最底下加入&lt;&lt;username&gt;&gt; ALL=(ALL) NOPASSWD: ALL *注意:這裡的username 請輸入你自己的帳號名稱,如果不知道的話可以先使用whoami是先查詢。
– 之後命令前加入sudo 都不會再問你密碼囉xdddd 當然這是一個很危險的舉動就是了,記得不要亂下rm -rf這個指令喔XD

參考來源:https://askubuntu.com/questions/147241/execute-sudo-without-password

懶得改etc/host

我目前的公司是個接案公司,有點麻煩每次增加一個專案都要在etc/host 加入一個網址,然後還要去vhost 改指定到什麼目錄之類的,超級麻煩~所以我就用了我很喜歡的python 語言做了小小自動化script,很臨時寫的,應該還有優化與進步的空間xd

程式碼在這裡:https://github.com/r567tw/office/tree/master/httpd_related

addproject.py 就是主要可以編輯etc/host 和vhost的檔案,而且可以事先寫一個template.txt作為模板加入,之後重啟這個apache! 讚!懶人做法XD

然後如果想更自動的話還可以在自己的bashprofile或zshrc加入alias 像是alias addproject="sudo python /&lt;&lt;to file path&gt;&gt;/add_project.py",以後就下addproject這個指令就好啦!省了幾個步驟呢!

mac 重灌小知識

剛進新公司,第一台電腦實在是很爛!說真的,我第一次覺得mac 怎麼可以被搞成這麼慢,常常動不動「發脾氣」,打個字都還會有小圈圈lag一下,這樣寫code實在不夠暢快! 所以和公司申請換新電腦,恰巧有公司同事離職,我可以使用他的電腦~~然後因此get 到mac 蟲灌新技能!其實也沒什麼了不起,上網查也就有、這是apple 內建的。先在準備開機的時候看到那個loading 條時狂同時按command + R 為什麼有時候要狂按呢。因為有時候會不成功,能遇到“工具程式”可遇不可求啊! 然後呢“先格式化磁碟”,我真的不知道要事先做這個步驟,害我卡關許久,然後你才“重新安裝mac os”。

聽說可以做開機碟或者啟用time machine 會更好用?!

php 多版本教學

有時候網站開發每個適用的php版本不盡相同,所以要在自己的電腦安裝多版本的php,這裡適用的是mac os,我覺得有個網路的文章實在寫得很不錯,我這裡只是簡單重述他的步驟啦!先上:https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions

  • 先裝好Homebrew,這裡我就不贅述了,homebrew 是個mac 開發者好東西!/usr/local/etc/httpd/httpd.conf
  • sudo apachectl stop &amp;&amp; sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2&gt;/dev/null 先拿掉原生mac os apache 的連結,已確認我們連的apache 是用brew 的
  • brew install httpd 裝apache囉
  • sudo brew services start httpd
  • 修改/usr/local/etc/httpd/httpd.conf 這個檔案,文章裡面有寫,其中開啟rewrite 、改port號、改username、改主目錄等等
  • sudo apachectl -k restart 重啟apache 讀入httpd.conf 的新設定囉
  • brew install php@&lt;&lt;version&gt;&gt; 請安裝你要安裝的php version
  • 所有的php ini 檔都在 /usr/local/etc/php/&lt;&lt;version&gt;&gt;/php.ini
  • brew unlink php@7.2 &amp;&amp; brew link --force --overwrite php@5.6
  • php -v 確認一下版本
  • 接下來是選擇性,但我很建議繼續下去,就是下載這文章作者寫的script, sphp
curl -L https://gist.githubusercontent.com/rhukster/f4c04f1bf59e0b74e335ee5d186a98e2/raw > /usr/local/bin/sphp
chmod +x /usr/local/bin/sphp
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
  • 之後你就使用sphp 這個指令爽爽用囉,例如sphp 7.0

學習 magento

新公司是用magento開發電商網站的公司,讓我有點小小吃不消,因為magento的學習曲線真的蠻陡的,相較於我喜歡的laravel來看,laravel 易上手且容易看得懂,所以對於magento有點又愛又恨,為什麼愛呢,因為也深感佩服他真的能作為電商網站開發的方案,設計真的有點讓我驚豔甚至日後可以學習應用,其中eav-modal 讓我們可以自定義商品的attribute, 另外使用xml配置,容易複寫與增加客製化的模組,有點與zend framework 的概念有點像,可惜我只有寫過laravel,對於其他框架的理念還沒有那麼熟吧!這是我的功課。 為自己加油啦!