2025年3月31日 星期一

在docker的container中,如果要連本機服務該怎麼處理

當然如果你偶實體IP可以直接使用,但如果你沒有固I,假設我要連mssql port 1276,首先可以考慮使用ngrok

ngrok tcp 1276

這樣就可以把服務讓外面來連,當然這是緩兵之計,重開機網址就會換了

今天我要講的是另外一招,可以讓容器直接連本機服務

直接把ip設定成host.docker.internal,如下面用php sqlsrv來連線

sqlsrv("host.docker.internal, 1276", [......])

就可以直接連到,注意,這招只適用於windows跟mac

linux上也不是不可以使用,只是似乎要特別設定dns解析,或者有另外的作法,這我們改天有用到在研究吧

2025年3月30日 星期日

如果我container想要docker服務一起動就開啟怎麼做

 給程式碼

// docker-compose.yml
version: "3"
services:
php:
image: namoshek/php-mssql:7.3-fpm
restart: unless-stopped # 關鍵就是這行
container_name: php
volumes:
- ./:/var/www/html
working_dir: /var/www/html
ports:
- "9000:9000"
environment:
- PHP_ENV=development
networks:
- app-network

nginx:
image: nginx:latest
restart: unless-stopped # 關鍵就是這行
container_name: nginx-proxy
ports:
- "80:80" # HTTP 端口
volumes:
- .:/var/www/html/ZHCC
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf # 自定義 Nginx 配置
working_dir: /var/www/html
depends_on:
- php
networks:
- app-network


networks:
app-network:
driver: bridge

這樣就可以在docker服務啟動後,自動把container跑起來喔,
restart還有其他設定,我記得有一個是always,但跟unless-stoped有什麼區別,有興趣可以自行研究

2025年1月6日 星期一

github actions可不可以寫funcion,試試看複合動作

就我知道github actions應該算腳本類的語法吧,在工作上遇到要連線vpn就要落落長一大堆語法,所幸問一下ai,有沒有類似function的用法,還真的有,做一下紀錄

# ./github/actions/vpn/action.yml
# 路径除了vpn其他都必须一样
name: vpn connect
description: 'vpn connect'
# description這裏不能省

inputs:
OVPN_CONFIG:
description: 'ovpn config'
required: true

# actions里面不能有env跟secrets只能透过with传入

runs:
using: "composite"
steps:
- name: Write OpenVPN config
shell: bash # shell这行必填
run: echo "${{ inputs.OVPN_CONFIG }}" > xxx.ovpn

- name: Install OpenVPN
shell: bash
run: sudo apt-get update && sudo apt-get install -y openvpn

- name: Configure OpenVPN
shell: bash
run: |
sudo openvpn --config cywang.ovpn &
sleep 10 # Wait for the VPN to establish connection
ps aux | grep openvpn
ip addr
ip route

這樣就寫好了,接著我們要來示範使用方式

jobs:
  deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
      # 因為要使用到repo裡面的檔案一定要有這行

- name: vpn connect
uses: ./.github/actions/vpn
        # 直接uses就可以使用,要注意路徑要正確
with:
OVPN_CONFIG: ${{ env.OVPN_CONFIG }}

以上就是這次的分享

2024年12月25日 星期三

前端開啟app的方式

如標題,總是會有各式各樣的需求,要請前端要能直接開啟app,直到今天我才知道關鍵字怎麼下,其實就一句話,上網查"[該app] schema url"

例如: 抖音 schema url

目前沒有找到有人整理這部分成套件,只有找到有好心人整理了各大app的schema url

https://github.com/Oct1a/TikTok-Scheme

https://github.com/WengYuehTing/url-scheme-collection

如果需求只是要開啟app那其實可以無視後面的路由,把href導到//即可

例如:location.href = "snssdk1233://"

備註:抖音有好幾種版本,都不一樣,記得確認對象再寫

在這先預祝大家工作順利不用加班,尾牙抽到大紅包,年假可以放14天~

2024年12月19日 星期四

HD鬼故事N+4集

原本以為這個系列會隨著神之工程師的退役而停止更新了,想不到最新一集來的如此之快

年關將近,隨著專案進入最後測試幾段,老闆突發奇想,希望連到正式機,以正式機數據來進行測試,故事就此開始

這想法原則上也沒什麼問題,至於要怎麼倒資料,小編身為前端工程師沒有話語權,就這樣早上九點就被告知後端關閉api,然後.....前端就放假了==

一直到中午被告知匯入資料比預想還要久,可能還要再兩三個小時,一直到三點半資料才倒完。

雖然放了將近一天的假很爽,但該吐槽還是要吐。我就問,既然知道倒資料要停機,專案又這麼趕,那為什麼要拿測試機來倒,開個新的db倒資料,倒完再把db指過去很難嗎==然後到底是怎麼倒需要這麼久,我嚴重懷疑他寫腳本去打另一套系統api,然後在寫入資料庫....算了想到就怕!

另一則故事

在近期這個專案有個聊天室的功能,後端非常有自信的說要做即時聊天必須用websocket,這功能在這專案中算是有一定複雜性的,所以讓主力工程師來負責,然後他跟我說,ws連是連了,但是功能是告訴你有新的訊息,實際的訊息資料,必須打api去要....然後我問是哪位後端負責這功能的,當我聽到姓名後只能說,真不塊是你啊!那是一位我曾經同一個功能要跟他來來回回三四次次,連前端需要code這麼基本的需求都還要我們三催四請,我就問你們都用laravel了,為什麼不直接寫成middleware跟route group就好==哎

另另一則故事

我想歲末年終大家最期待的就是尾牙了吧,公司也非常大方開放員工帶眷屬一起同樂,只是眷屬的車資不輔助.....我忍了,然後今年特別收到消息,公司大佬要跨就與大家一起同樂,所有員工必須喝酒,然後眷屬坐一桌,員工為了方便敬酒坐一桌.....

後來通話了我才知道,不是車資不輔助,是單人車資輔助有上限400人民幣,小編家做uber到高鐵就要800塊了不豪小,來回1600,高鐵車資1400,就算我搭捷運去餐廳,我一個人車資就不夠請了,最省的方法就是不能喝酒,然後開車載家人去,但是說強迫要喝酒...然後攜帶眷屬不能跟眷屬不能同桌又是哪招....真的不知道要從哪開始吐槽了

以上三篇短篇故事,同樣是做夢夢到,如有雷同,肯定是雷同的啦

2024年12月10日 星期二

vue開發上的小坑,vFor的item不能當vModel

簡而言之我在程式碼裡面這樣寫

UserCard(v-for="data in datas", v-model="data")
UseCard是我自製的component,因為裡面會牽涉到改動,所以不太適合用props的方式傳進去,所以用model的方式來傳,開發上還沒啥問題,不過打包卻會爆出以下錯誤
v-model cannot be used on v-for or v-slot scope variables because they are not writable

上網查了一下,用v-for拆出來的物件,該物件不能放到v-model裡面進行修改,那怎麼辦呢?
很簡單,跟著v-for傳出來的還有index,用它來指向原物件就可以了
UserCard(v-for="(_data, index) in datas", v-model="datas[index]")

沒想到用vue這麼多年還有這麼一個小坑沒採過,記錄一下@@收工下班!

2024年12月9日 星期一

HD鬼故事N+3集

在年初搞出大事件的神級工程師(詳閱鬼故事第N集),據以往跟他配合的工程師爆料,他從來沒在管衝突的,一但有衝突就是直接用自己的程式碼蓋過去。大概就是以下情況

情境一:
大學長要過~~你們這群菜雞瞎逼逼什麼,全部閃開!

情境二:
哪有什麼衝突,小朋友在小打小鬧而已!

這些對已經待上個把月的工程師來說,雖然痛苦,但都習以為常了。你問我老闆為什麼不火他!他把DB刪了都沒事,這種小事對他來說跟搔癢差不多吧!

然而,就在最近來了個“產品”,我是不知道他產什麼品,但他感覺一來就想搞點事,這又是另一個故事了,有機會再談。

總之昨天又發生這件事,熟知版控的朋友一定知道,如果不好好解衝突,上線的功能極有可能會壞掉。想當然爾,有了一個會議,重點這會議沒有找該神級工程師開,而是找功能壞掉,負責的另外兩位工程師,一部分對話訊息如下:

產品:這事挺嚴重的,下次再發生,老闆可能會懲處。

....你跟他們兩個說意思是懲處他們嗎?言下之意是肇事者撞爛了建築,應該要告建商為什麼建造不夠穩固嗎?我都不知道要從何開始吐槽了

正當我們以為事情就這樣告一段落時,當晚我們就收到神級工程師要離職的消息。雖然有些驚訝(畢竟他待了十年)但也擋不住嘴角上揚,正當我們要開香檳時,就看到他無預警地退群了,沒有留下任何交代......

沒有人知道發生了什麼,也不知道未來會如何,更沒有好好交接(幹你到是好好交接啊!)

到底是被罵了鬧脾氣離職,還是產品大大跟他說了些什麼,沒有人知曉,唯一知曉的是,丞相起風了,要變天了!


更新一下

現在每天都聽到後端工程師在喊說需要通靈,需要知道更多資訊,當初神工程師的對話紀錄,叫運營配置的參數,什麼都能拿來作為通靈的素材....哎~

再更新一下

據說老闆早就想火神之工程師了,原因是他很貴,終於動手的時候,神工程師在離職前把機器帳號密碼都換掉了......跟公司最後成功交易到300萬人民幣....真讓人羨慕啊==不瞞大家說,小編出社會第一份工作就這樣想過了,可惜一直都沒那膽識。不過coco都拿了交接態度還這樣真是.....