如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2020年12月22日

不同程式語言的Else If整理

作者: Fred F.M. Wang (FW知識瑣記) 日期:2020-12-22

 

大多數程式程式語言在條件式有著類似的結構,只有少數程式語言略有不同,其中"else if"的差異如下 :

大多數都是 "else if" : Java, C#, Swift, Objective-C, Go, Javascript, Rust, C++, Pascal


elseif : PHP (PHP用else if也可以)  -- else跟if黏在一起

ElseIf : VB, VBA, AutoIT  -- else跟if黏在一起

ELSE-IF : COBOL  -- else跟if中間加橫槓-

elsif : Ruby  -- else少了e再跟if黏在一起

elif : Python -- else少了se再跟if黏在一起

 

筆者需要開發與維護不同程式語言的系統,在寫else if時特別容易搞混,希望未來的程式語言發明者盡量遵循通用的語言結構,不要再搞出自己的一套特殊的語法,否則,對我們這種跨語言的工作者相當困擾。

 

 

2020年12月19日

"其實醫學系..."網文感想

作者: Fred F.M. Wang (FW知識瑣記) 日期:2020/12/19

 

"其實醫學系..."網文感想

因為自己女兒念醫學系所以頗同意這篇Dcard的網文"其實醫學系..."

1.醫學生和一般科系學生最大的差別是:醫學生通常是比較會考試的...
感想:這是一定的。比較會考試通常都比較會念書,但是比較會念書不一定比較會考試,能考上醫學系的通常在高中都是校排前1~2%的學生,當然念書與考試的能力都相對其他同學強。

2.醫學系課程不需要聰明人,只需要努力的人...
感想:基礎醫學的課程都是"背多分",知道五學分的課(病理學)要背多少病嗎? 寄生蟲學要背上百的寄生蟲拉丁學名? 只是記憶力好的人背起來會輕鬆一點點。

3.醫學生個性:都是很執著的,很強的,比較低調保守內斂些...
感想:如果沒有很執著把很多知識背起來,大概就畢不了業,低調是因為再聰明還是會被教授電,內斂是因為書怎麼念都念不完只能躲起來念書。

4.醫師帳面上相對是比較好賺的,但也很辛苦...
感想:除了唸書要念得很辛苦外,工作時間比一般人多兩三倍,且連續工作三十幾小時以上是必要的,犧牲許多休閒時間,與家人與朋友相處的時間,所以要想輕鬆,自由地賺大錢就不要當醫生。 

大學考生選擇申請的科系前可以思考一下,特別是考的不錯的考生,決定自己是否選擇申請醫學系,筆者提供下面的思考方向,選擇自己未來進入的職業可以根據"經濟","能力","興趣"此三面向思考, 

第一,選擇可以滿足自己未來經濟需求或經濟期望的職業,

第二,選擇自己能力可及的職業,

第三,選擇自己有興趣的職業。最佳的選擇則是三者的交集。

因此,醫師這個行業在滿足經濟需求應該是沒問題的。但是,如果第二點的"能力"無法達到,例如有人連年重考還是考不上,有些人好不容易考上了,但是念不來,這樣就無法繼續下去。而第三點的"興趣"可以支持你在這個職業做上三十年甚至四十年,是讓你可以"樂在工作"的要素。

  對醫學系有興趣的人也可以看看 1. 蓋瑞醫師, 醫學系在幹嘛?

2 一葉草的白袍手札, 讀醫學系之前要知道的事,醫學生要背多少書?

2020年12月16日

老闆希望公司作業電子化,上司請您負責的業務範圍電子化的規劃,您要如何進行?

作者: Fred F.M. Wang (FW知識瑣記) 日期:2020/12/16

    老闆希望公司作業電子化,上司請您負責的業務範圍電子化的規劃,您要如何進行?


一 了解現況

    您負責的業務範圍已經電子化的部分有哪些? 使用甚麼系統? 使用此系統的哪些模組(功能)?

 哪些尚未電子化?


二 了解問題

    2.1 您負責的業務範圍,目前發生甚麼問題? 效率不佳? 是否符合上司的期望? 可以跟同事或

主管聊聊他們建議哪些作業要優先電子化。

    2.2 目前已經電子化的部分哪些功能不佳或不方便使用? 可以跟同事或主管聊聊現在系統他

們使用上有甚麼問題? 有甚麼要改善的建議?

    2.3 您負責的業務範圍,制訂了哪些制度規範與流程? 


三 上面整理出來後,再跟軟體開發商談 ?

   3.1 現有系統不好用的部分,能不能改善? 需要額外的花費修改系統嗎?  需要多少費用?

   3.2 想要電子化的作業,現有系統有沒有功能可以滿足? 如果有,要花多少錢導入?  如果沒有

是否可以另外付費開發? 估計需要多少費用?

 

    注意,如果已經有現行系統,則優先找現行系統的廠商討論,非不得以不要換掉現行系統或

另外導入另一個廠商的系統,造成系統轉換或系統整合所需更龐大的成本。如果沒有現行系統

,則應詢問同業採用哪些廠商的系統,作為導入的參考廠商。另外,跟軟體廠商討論時,最好

能協同企業內部負責的IT同仁一起參與,才能了解除了功能面外,還可能增加的其他成本,如

作業系統,資料庫軟體或硬體成本。最好請廠商提供一份電子化建議書/報告。


最後,根據上面整理一份報告,提供給主管。

 

 

2020年12月9日

各類惡意軟體,網路攻擊的專有名詞整理備忘

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2020/12/9

各類 惡意軟體專有名詞 :
 
Malware 惡意軟體
 
是電腦病毒,匿蹤軟體,間諜軟體,電腦蠕蟲,特洛伊木馬等軟體的統稱。
 
Computer Virus 電腦病毒
 
是一種在人為或非人為的情況下產生的、在用戶不知情或未批准下,能自我複製或運行的電腦程式;電腦病毒往往會影響受感染電腦的正常運作,或是被控制而不自知,電腦正常運作僅盜竊資料、或者被利用做其他用途等用戶非自發啟動的行為。(維基百科)
 
第一個非實驗室的電腦病毒出現在1982年,是一個執行於Apple II系統,稱為Elk Cloner病毒的電腦病毒
 
Rootkit 匿蹤軟體
 
一種隱藏其他程式行程的軟體,今天,Rootkit一詞更多地是指被作為驅動程式,載入到作業系統核心中的惡意軟體。因為其代碼執行在特權模式(系統管理員級的root權限)之下,從而能造成意料之外的危險。後來Rootkit也被駭客用在入侵和攻擊他人的電腦系統上,電腦病毒、間諜軟體等也常使用Rootkit來隱藏蹤跡。(維基百科)
 
Spyware 間諜軟體
 
一種用來侵入用戶電腦,在用戶沒有許可的情況下有意或者無意對用戶的電腦系統和隱私權進行破壞。
間諜軟體採用一系列技術來紀錄用戶的個人資訊,例如鍵盤錄製、錄製用戶存取Internet的行為,以及掃描用戶電腦上的檔案。間諜軟體的用途也多種多樣,從盜竊用戶的網上帳戶(主要是銀行信用卡帳戶)和密碼到統計用戶的網路行為意作為廣告用途。一些間諜軟體統計用戶存取的網站並且不斷在用戶電腦上彈出廣告窗口,但是更多間諜軟體搜集用戶的密碼資訊以侵占用戶的財產。(維基百科)
 
Worm 電腦蠕蟲
 
一種與電腦病毒相似,是一種能夠自我複製的電腦程式。 與電腦病毒不同的是,電腦蠕蟲不需要附在別的程式內,可能不用使用者介入操作也能自我複製或執行。電腦蠕蟲未必會直接破壞被感染的系統,卻幾乎都對網路有害。(維基百科)
 
Trojans 特洛伊木馬簡稱木馬
 
木馬程式在電腦領域中指的是一種後門程式,是駭客用來盜取其他用戶的個人訊息,甚至是遠端控制對方的電子裝置而加密製作,然後通過傳播或者騙取目標執行該程式,以達到盜取密碼等各種資料資料等目的。和病毒相似,木馬程式有很強的隱秘性,會隨著作業系統啟動而啟動。(維基百科)
 
Ransomware 勒索軟體,又稱勒索病毒
 
勒索軟體其與其他病毒最大的不同在於手法以及中毒方式。其中一種勒索軟體僅是單純地將受害者的電腦鎖起來,而另一種則系統性地加密受害者硬碟上的檔案。(維基百科)

Adware 廣告軟體

是一個附帶廣告的電腦程式,以廣告作為盈利來源。部分廣告軟體以廣告為目的,例如會不斷彈出「電腦網路」或「系統效能低落」等廣告。許多使用者未經詳查,便會不慎地經由同意免費軟體的最終用戶授權協定,而安裝了以廣告為目的的廣告軟體。也可以由其他人安裝在別人的電腦上,有時甚至並未經其許可。有的會自動執行,雖然大部分對電腦無害,但通常這類程式經常在系統中造成惱人效果,並多少會影響使用者使用電腦。 這類軟體通常經由與特定免費軟體搭配分別安裝。廣告軟體也經常與間諜軟體串連起來安裝。(維基百科)

Logic Bomb 邏輯炸彈

可視為電腦病毒的一種,為一種嵌入在正常軟體中並在特定情況下執行的惡意程式碼。這些特定情況包括更改檔案、特別的程式輸入序列、特定的時間或日期等。惡意程式碼可能會將檔案刪除、使電腦主機當機或是造成其他的損害。(維基百科)

DNS Changer - DNS劫持軟體

這是由愛沙尼亞一家叫Rove Digital的公司研發的惡意軟體,它會通過修改計算機的DNS設置,指向他們自己的伺服器來感染電腦。通過這種方法,用戶在瀏覽網頁的時候就會被插入廣告 (維基百科)

下面是一些常見的攻擊手法

Phishing 網路釣魚

是一種企圖從電子通訊中,透過偽裝成信譽卓著的法人媒體以獲得如用戶名稱、密碼和信用卡明細等個人敏感資訊的犯罪詐騙過程。(維基百科)

Zombie computer 殭屍電腦
指接入網際網路受惡意軟體感染後,受控於駭客的電腦。其可以隨時按照駭客的命令與控制(C&C, command and control)指令展開阻斷服務(DoS)攻擊或傳送垃圾資訊。通常,一部被侵佔的電腦只是殭屍網路裡面眾多中的一個,會被用來去運行一連串的或遠端控制的惡意程式。一般電腦的擁有者都沒有察覺到自己的系統已經被「殭屍化」,就仿佛是沒有自主意識的殭屍一般。(維基百科)

Zero-day vulnerability 零時差攻擊(零日攻擊)

一種利用電腦還沒有修補程式的安全漏洞進行的駭客攻擊手法。(維基百科)

Denial-of-service attack(DoS) 阻斷服務攻擊

是一種網路攻擊手法,其目的在於使目標電腦的網路或系統資源耗盡,使服務暫時中斷或停止,導致其正常用戶無法存取。
當駭客使用網路上兩個或以上被攻陷的電腦作為「殭屍」向特定的目標發動「阻斷服務」式攻擊時,稱為分散式阻斷服務攻擊(distributed denial-of-service attack,簡稱DDoS攻擊)。(維基百科)


APT(Advanced Persistent Threat)先進持續性威脅

 使用複雜精密的惡意軟體及技術針對特定目標,利用期系統中的漏洞,長時間保持高隱蔽性地持續監控特定目標,並從其獲取資料。通常由某些人員精心策劃,針對特定的目標。其通常是出於商業或政治動機,針對特定組織或國家,隱匿而持久的電腦入侵過程。(維基百科)

Cross-site scripting(XSS) 跨站腳本攻擊

是一種網站應用程式的安全漏洞攻擊,是代碼注入的一種。它允許惡意使用者將程式碼注入到網頁上,其他使用者在觀看網頁時就會受到影響。這類攻擊通常包含了HTML以及使用者端手稿語言。(維基百科)

 

其他 : 啟動磁區病毒,位元強盜,跨領域病毒巨集病毒VPNFilter,社交工程, SQL Injection, 跨站請求偽造Cross-site request forgery(CSRF)Clickjacking,CC攻擊, XML External Entity Injection(XXE), Command Injection, 中間人攻擊(MitM), DNS Tunneling

參考1: 知名病毒及蠕蟲的歷史年表

參考2: 常見攻擊手法 - nat.gov.tw

參考3 : 駭客攻擊手法新趨勢
 


2020年12月8日

電腦個案 : 電腦變得超慢,開機過程與開機後都很慢,檢查與解決

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2020/12/8

筆者最近遇到一台電腦運作變得超慢,開機過程與開機後都很慢,怎麼辦? 

這台電腦開機槽是SSD,近一年買的CPU i7, 記憶體與主機板使用的規格都蠻不錯的。原本開機很快,一般運作也很快。前兩天突然變慢。 下面是我檢查的程序 :

一 電腦病毒

直覺是中了電腦病毒,經過掃毒程式掃過完全沒有發現有問題,檔案也沒有被鎖住勒索,除了慢運作都正常。

二 Windows更新

Windows 10更新常常出包,會不會是最近12/4日的windows update搞的鬼? 我將12/4日的更新還原,結果還是一樣。

三 SSD碟

再下來,會不會是SSD碟的問題,這台電腦使用威剛的SSD,因此到威剛官網下載SSD檢測軟體,檢查也沒有異樣,檢測軟體顯示此SSD壽命也還很長,另外,SSD碟使用的空間只約四分之一,沒有將滿,空間不足的問題。

四 傳統硬碟

這台電腦搭配一顆Seagate硬碟,使用硬碟檢測軟體檢測,果然找到此顆硬碟的異常,移除此硬碟後系統就恢復正常了。

結論 : 

電腦開機時會偵測所有與電腦連接的周邊設備,包含內置SSD,磁碟,外接磁碟,鍵盤,滑鼠等等,偵測過程如果特定設備有些故障,電腦會以較長的時間持續嘗試與該設備連接。

開機後會載入各內置與外接儲存體的目錄區資訊,此時如果有任何一個儲存槽目錄區異常,也會因為系統嘗試讀取到發生錯誤的區塊,造成運作時的緩慢。

當然,電腦還有很多可能造成操作緩慢的原因,僅提供上面幾點的基本檢查,供大家參考。

 


PHP解決錯誤訊息 "preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead"的方法

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2020/12/8

Codeigniter 搭配PHP 5.5版時,前端程式(View)送出(Submit)表單資料到後台程式(controller)

時發生錯誤訊息  core\Security.php : "preg_replace(): The /e modifier is deprecated, use 

preg_replace_callback instead"


錯誤的程式 : \system\core\Security.php 

錯誤的行: line 152, 153

$str = preg_replace('~&#x(0*[0-9a-f]{2,5})~ei', 'chr(hexdec("\\1"))', $str);

return preg_replace('~&#([0-9]{2,4})~e', 'chr(\\1)', $str);


原因 : /e 修飾符在PHP 5.5中已經棄用, 要用preg_replace_callback()取代


查到PHP官網的解釋

/e修飾符在PHP 5.5已不推薦使用會產生Warning, 在PHP 7已經移除, 因為它很容易產生安漏

洞,可以使用preg_replace_callback()取代

   

官網說明內容如下 (ref : https://www.php.net/manual/zh/reference.pcre.pattern.modifiers.php)

因此Codeigniter系統的 \system\core\Security.php程式中line 152, 153

$str = preg_replace('~&#x(0*[0-9a-f]{2,5})~ei', 'chr(hexdec("\\1"))', $str);

return preg_replace('~&#([0-9]{2,4})~e', 'chr(\\1)', $str);


要改寫成

$str = preg_replace_callback('~&#x(0*[0-9a-f]{2,5})~i', function($m){ return chr(hexdec($m[1])); }, $str);

return preg_replace_callback('~&#([0-9]{2,4})', function($m){ return chr(hexdec($m[1])); }, $str);


如此問題就解決了。


2020年12月3日

資訊安全規劃前應考量的幾個問題

作者: Fred F.M. Wang (FW知識瑣記) 日期:2020/12/3

資訊安全如同保險,越多的資訊安全機制需要投入越高的成本,企業無法無限制地投入資源,因此,資訊安全規劃前應優先考量下面幾個問題 :

1. 哪些是最需要保護的? 

從價值面來思考,對組織價值最高的應優先保護,並採取最高的保護層級。包含 : 商業機密,組織核心的技術等。或從可能的損失來思考,哪些資料或設備被破壞或竊取損失最大。

另外,也可能從竊取者的角度思考,哪些是竊取者有興趣或可以得到利益的。

2. 要防範的對象與要阻擋的管道?  

找到可能的資安漏洞,包含內部或外部人士都可以透過特定管道或方式造成破壞或資料的竊取,而這些破壞與竊取的管道是甚麼? 

3. 組織可投入的成本有限,只能執行有限的防護時,其他漏洞的備援機制是甚麼? 

最高等級的防火牆設備或資訊安全防護系統,成本很高,不是所有組織能夠負擔的,如果無法購買較高等級的防火牆設備與防護系統,應該考慮要怎樣做可以讓可能的損失最小,或回復時間最短。


 


2020年11月28日

整理Python網路探勘/網路爬蟲程式庫 for 網頁讀取與解析

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2020/11/28

 

pycURL

pycURL 是功能強大的python的url套件,用c語言寫的,速度很快,比urllib和

httplib都快, 使用cURL(libcurl),讀取網路上的文件。

ref: pycurl.io 

ref: Python的pycurl包用法簡介

ref: 如何使用python執行curl命令

urllib

urllib.request 是一個用來從URLs (Uniform Resource Locators)取得資料的

Python模組。它提供一個了非常簡單的介面能接受多種不同的協議, urlopen

 函數。也提供了較複雜的介面用於處理一些常見的狀況,例如:基本的

authentication、cookies、proxies等等,這些都可以由handler或opener物件操

作。

ref: 如何使用urllib套件取得網路資源

BeautifulSoup

Beautiful Soup是一個Python套裝,功能包括解析HTML、XML文件、修復含有

未閉合標籤等錯誤的文件(此種文件常被稱為tag soup)。這個擴充包為待解

析的頁面建立一棵樹,以便提取其中的資料,這在網路資料採集時非常有用。 

ref:[Python爬蟲教學]7個Python使用BeautifulSoup開發網頁爬蟲的實用技巧

ref: Python 使用 Beautiful Soup 抓取與解析網頁資料,開發網路爬蟲教學

ref2: 輕鬆學習 Python:透過解析 HTML 擷取網站資料

ref3: 以 requests 搭配 beautifulsoup4 或 pyquery 套件實踐網站爬蟲

ref: Youtube 爬蟲基礎教學 (Python Scraping 教程)

PyQuery

PyQuery是Python仿照jQuery的嚴格實現。語法與jQuery幾乎完全相同

ref: PyQuery的用法

ref: Python 使用 pyquery、R 語言使用 rvest

ref: 劉純睿(阿吉) - 比美麗的湯更美麗: pyquery - PyConTW2017

requests

是一個Python第三方庫,處理URL資源特別方便(處理一般需求)

ref: requests

ref: 以 requests 與 lxml 套件實踐網站爬蟲

selenium

可模擬瀏覽器執行

ref: 以 selenium 套件實踐網站爬蟲

ref: 從 Python 與 R 語言使用 Selenium WebDriver 操控瀏覽器

ref: [ Selenium ] 偽造身份進行網路爬蟲

Scrapy

Scrapy是一個Python編寫的開源網絡爬蟲框架。它是一個被設計用於爬取網

路數據、提取結構性數據的程序框架。

ref: [爬蟲筆記] Python Scrapy 爬蟲教學:實作PTT資料爬取

ref: Youtube Scrapy 爬蟲教學

ref: Python爬蟲新手筆記

ref: Python 網頁爬蟲入門實戰

 

2020年9月7日

PHP程式設計: PHP程式如何將圖片放入excel檔案中 Using PHPExcel

作者: Fred F.M. Wang (FW知識瑣記) 日期:20200907

PHP程式中可以使用PHPExcel讀取製作好的Excel樣板,根據條件動態寫入資料,產生新的Excel檔案,用於產生Excel報表檔。

如果要根據不同條件放入不同的簽名圖片檔要怎麼做?

可以參考下面範例 : 

// 主程式

$objPHPExcelOut = PHPExcel_IOFactory::load($outfilepath); // $outfilepath寫入的Excel檔案路徑

$PHPExcelWriter = PHPExcel_IOFactory::createWriter($objPHPExcelOut, "Excel2007");

….

<寫入資料>

.....

 $row = 30;

 $signcol = "E";

 $offsetX = 27;

 $offsetY = 10;    

// 寫入簽名檔

 $this->addSignImage($objPHPExcelOut,$signcol,$row,$offsetX,$offsetY);



/* *****  副程式:寫入簽名檔 ***** */

private function addSignImage($objPHPExcelOut,$column,$row,$offsetX,$offsetY) {

    $signimgfile = dirname($_SERVER["SCRIPT_FILENAME"]) . "<圖片來源檔案路徑>";   

// <圖片來源檔案路徑與檔名> 例如"/files/shipinf/templates/image_imqsign.png"     

    $gdImage = imagecreatefrompng($signimgfile);    

    

// 保持PNG圖片背景透明

    imagealphablending($gdImage, false);  // 關閉 alpha 渲染

    imagesavealpha($gdImage, true); // 並設置 alpha 標誌以在保存 PNG 圖像時保存完整的 

alpha 通道資訊

    

    $objDrawing = new PHPExcel_Worksheet_MemoryDrawing();                

    $objDrawing->setName("signimage");

    $objDrawing->setDescription("signimage");

    $objDrawing->setImageResource($gdImage);      

$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG);

    $objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);

    $objDrawing->setCoordinates($column.$row);    // 圖片左上角放置在哪個儲存格的位置

    $objDrawing->setHeight(390);   // 設定圖片高度(寬度會等比例變寬)

    $objDrawing->setOffsetX($offsetX);  // 向左位移幾個像素

    $objDrawing->setOffsetY($offsetY); // 向下位移幾個像素

    $objDrawing->setWorksheet($objPHPExcelOut->getActiveSheet());        

}




2020年8月20日

[輸入判斷] PHP判斷前端Checkbox欄位是否勾選

作者: Fred F.M. Wang (FW知識瑣記) 日期:20200820

 PHP程式接收前台網頁輸入的值,比較容易發生錯誤的是checkbox欄位,不像其他類型的輸入欄位

可以單純用$_POST['<field name >']接收輸入值那麼簡單。


前端的一個checkbox輸入欄,如果沒有勾選,則該表單submit後,後台PHP處理程式無法接收到此欄位的內容,因此判斷checkbox輸入欄是否有勾選,要用

isset($_POST['<field name >'])來判斷,如下面範例:


前端HTML

<form action="getcheckbox.php" method="post">

     Only Weekend<input type="checkbox" name="wkend" value="weekendonly">

     <input type="submit" value="submit">

</form>


後端PHP

<?php

$wkend = false;

if(isset($_POST['wkend'])) {

    $wkend = true;

    echo "weekly only checked";

} else {

    echo "Not check weekly only";    

}

?>

 

 

2020年7月31日

PHP二維key-value陣列根據特定欄位內容去除重複資料

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2020-7-31

PHP一維陣列要移除重複的內容,很簡單只要使用array_unique函式即可

例如 :

$input = array("green", "red", "green", "blue", "red");

$result = array_unique($input);

結果$result內容為array( "green", "red", "blue");


二維的key-value陣列要根據特定欄位內容移除重複,要如何處理?


下面是多維(key-value)陣列 :  

items[0][“fieldname1”] = …;

items[0][“fieldname2”] = …;

items[0][“fieldname3”] = …;

items[0][“fieldname4”] = …;

items[0][“fieldnamen”] = …;


items[1][“fieldname1”] = …;

items[1][“fieldname2”] = …;

items[1][“fieldname3”] = …;

items[1][“fieldname4”] = …;

items[1][“fieldnamen”] = …;

….


要去除上面陣列 fieldname1, fieldname2, fieldname3欄位內容相同的item, 程式如下 :  


$new_items = array();

$keys = array();

if(!empty($items)) {

    foreach($items as $key => $rec) {

       $reckey = array($rec["fieldname1"],$rec["fieldname2"],$rec["fieldname3"]);

       if(!in_array($reckey,$keys)) {

           $keys[] = $reckey;

           $new_items[] = $rec;    

       }        

    }    

}

$items = $new_items;

2020年7月20日

PHP程式解決記憶體不足的錯誤 "Allowed memory size of ... bytes exhausted"

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2020/7/20

PHP程式執行時發生下面錯誤
Fatal error: Allowed memory size of ... bytes exhausted (tried to allocate ... bytes) in  ….
表示是可用記憶體已耗盡。
可透過兩種方法解決 :
1、修改php.ini
例如 : memory_limit = 128
這種方法需要重啟web服務器。

2、在程式中使用ini_set函數修改設訂選項值
例如 : ini_set ('memory_limit', '128M')

如果一直加大記已體還解決不了問題,那麼可能程式中發生幾種無限耗用資源的情況
1 無窮的迴圈 : 迴圈中持續分配記憶體,例如增加陣列大小
2 無窮的遞迴程式 : 遞迴程式沒有寫好結束的條件。

3 使用了過大的陣列或過多的變數 (註 : 程式中不再用到陣列或變數,可使用unset()或$var = null釋放記憶)

好好檢查程式吧!

2020年7月2日

各大學人工智慧,機器人相關系所與學分學程 (包含大學,科大,研究所等)

作者: Fred F.M. Wang (FW知識瑣記) 日期:2019-09-30 最近修訂:2023-3-20

研究所博士班
 
 
研究所碩士班(一般生) 


研究所碩士班(在職進修)


大學
 
科技大學

學分學程

相關文章