FLAMEc隨手記

一陣風飄過~~~

0%

最近跟老闆開會~~~

老闆似乎很擔心AI發展!??????????

原因是老闆小孩小六就學phyton,然後學到用AI寫phyton……..

聽描述大概很厲害!!

我本身也有稍微用AI找資料~~~基本是用chatgpt…

在查找一些問題的時候先問一下AI有時候有奇效!!!

比較下真的能節省時間!!!!!!!!!

但是實際使用後有種感覺…

小功能小程式大概能產生出來~~~

但是大程式和複雜問題大概就不太對了…

比如說一些時間差攻擊問題?

感覺上就是可能可以靠AI產生局部程式碼或局部功能程式碼~~~

但是整合還是需要人力吧?

但是…最近工作上剛好要補上一下網頁後台程式…

先不說是php、asp、nodejs等後台規格(nodejs沒實作過不太確定)~~~

我自己覺得後台程式碼比較像(雷同),至少我碰到的都差沒很大!!!

直覺上就是問AI都有可能產生一部份可用程式碼的狀況!!

根據一些經驗來看,感覺上可能會被AI影響更大~~~

其他部分真的可以透過AI減少開發時間!!!!!!!!

但是還沒到複製貼上就結束狀況~~~

不過也許我問AI方式有點不對…再試試!! 只是說說感覺~~~

最近因為工作上需要~

陸續碰到PHP和ASP .net core的後端程式~

先從PHP聊聊~~~

這次碰到的是一個後端紀錄使用資料的需求,

由於時間很少,兩天內要完成大半,所以沒時間研究最新架構直接就上了,

所以就是簡單語法加上mysql直接做完,

然後碰到mysql換到mssql狀況,就在想下次要用PDO等可以跨資料庫的做。

然後少用專有語法,會影響移植啊!!!!

然後碰到asp .net core的專案!!!

因為後端程式跑掉了,時間又不夠,就只好看看了,順便學學。

MVC架構會讓使用者一開始就碰到很多東西,

相比寫單HTML來說,有複雜的架構,也可以說分的很細,

目前感想就是不會碰到資料庫語法…和資料庫可以用程式產生這樣XD

有用到的基本都是C#的語法,網頁部分語法和PHP有異曲同工之妙,差不多…

一樣也是先有一個基礎的以後任何程式都能差不多建一個,

可能是我後端碰到的不夠多,目前看起來都很像。

還有一些AWS相關的操作

asp .net core 需要用aws toolkit來push到aws對應帳號的對應docker上吧,

因為那個執行個體不是我建的,但是應該是一個docker無誤XD

建執行個體當然是在aws控制台上操作後就行,然後就是push上去了。

最新又碰到一個網頁從EC2執行個體搬到另一個執行個體的需求

這次碰到的複雜得多,aws ec2上如果是建了centos、ubuntu等系統個體,

可以設定產生key ssh,並抓取pem,這很重要,只能在這時候抓,以後就不能抓了…

如果搞不見大概要重新產生key!!!

然後這和上述asp .net core的docker不一樣,至少我沒有登入過…

centos、ubuntu都可以透過抓下來的pem登入,

然後卡了一個專案是thinkPHP框架,搞了一陣子才發現整個複製就可以了,

php laravel應該也是類似,

最後卡在https無法連線,結果是執行個體沒開啟對應port,所以我apache2再怎樣設都沒用XD

最近用xampp做了一個簡單的php網頁,

剛好碰到將網頁移動到iis系統上狀況,

於是碰到mysql和mssql使用上差異~

連接到mysql如下~

1
2
3
4
5
6
7
8
9
10
$server_name = 'localhost';
$username = 'flamec';
$password = '123456789';
$db_name = 'test';

$conn = new mysqli($server_name, $username, $password, $db_name);

if ($conn->connect_error) {
die('資料庫連線錯誤:' . $conn->connect_error);
}

連接到mssql如下~

1
2
3
4
5
6
$connectionInfo = array( "Database"=>$db_name, "UID"=>$server_name, "PWD"=>$password );
$conn = sqlsrv_connect( $server_name, $connectionInfo);

if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}

語法都差不多,但結果尚有點差異~
mysql的select~~~

1
2
3
4
5
6
7
8
9
$sql = "SELECT * FROM testtable";
$result = $conn->query($sql); //1

if ($result->num_rows > 0) { //2
// 输出数据
while($row = $result->fetch_assoc()) { //3
print_r($row);
}
}

mssql的select~~~

1
2
3
4
5
6
7
8
9
10
$sql = "SELECT * FROM testtable";
$result = sqlsrv_query($conn, $sql); //1

if($result === false) { //2
die(print_r(sqlsrv_errors(), true));
}

while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) { //3
print_r($row);
}

最主要差異就是上面註解1~3的地方~~~

其他大部分相同~~~

但是有些mysql語法mssql不支援,比如limit…

如果要讓兩邊方便切換可以減少使用,就能快速切換~~~

最近因為工作上需要研究了Asp .Net Core Razor~~~

個人之前剛用過php舊寫法,對於網頁呈現方式看起來還可以~~~

但是偏偏找不到起始頁面到底是從哪裡設定的0.0…

網路上有許多說法…

有在專案屬性中設定,有右鍵選單指定?

可能是版本關係都不能用~!!

我目前是使用VS2022,舊專案應該也是用相去不遠版本產生的!!!

經過各種查詢和開專案測試…確認如下!!!

  1. 預設會執行index頁面,副檔名很多,可能是cshtml或.razor…

  2. 實際指定情況是@page,如沒有加字串應該就是用檔名,如home.cshtm的狀況下@page大概就等於@page “/home”

  3. 設定預設執行哪邊請用@page “/“,如果有index頁面請對index設定其他@page “/其他值”,避免有兩個預設頁面出錯

以上大概是今天研究成果,感覺上進度大大增加XDD

知道從哪邊開始就是不一樣~~~~~~~~~~~

今天又碰到爬樓梯的問題~~~

是leetcode的題目,題目如下(直接複製的):

You are climbing a staircase. It takes n steps to reach the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

之前也碰過但沒詳細研究為什麼這樣會對!!!

這次就要把整個過程記下來避免忘記~~~

網路上常看到說要爬到n-1步和n-2步加起來~~~

也沒細說為什麼…後來我靈光一閃是這樣的XD

因為我們只能走1步或2步~~~

所以當我們到達第N樓梯的時候~~~最後一步只有兩種可能!!!

踏上N樓梯的最後一步只有兩種狀況 跨一步 和 跨兩步

所以我們只需要知道跨一步有幾種可能和跨兩步有幾種可能,加起來就是答案~~~

因為最後步伐不同所以不會有重複情況!!

然後往回推~~~最後跨一步有幾種可能也是一樣!!

最後跨一步也是由 走一步 和 走兩步 可能和計算出來~~~

同理最後跨兩步也是一樣~~~

用這樣解法逆推到一開始就會得到答案!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int climbStairs(int n) {
if( n < 3 )
{
return n;
}

std::vector<int> nstep(n,0);
nstep[0] = 1;
nstep[1] = 2;

for(int i = 2; i < n; i++)
{
nstep[i] = nstep[i - 1] + nstep[i - 2];
}

return nstep[n - 1];
}

上面這方法可以將nstep存起來,重複使用!