多型Polymorphism在物件導向程式語言的意思是一件事物有多種不同樣貌,就好像面積的計算會因為不同形狀有不同算法,三角形是底乘以高除以2,長方形是長乘以寬。有關於多型的觀念可以看看下面這篇文章:
多型Polymorphism
下面我將使用物件導向的抽象Abstract和介面Interface搭配多型Polymorphism來實作面積計算,使用的程式為C#。抽象的意思是對於要描述的東西找到共通必要的元素,介面則是像日常生活中不同的電腦產品,有相同的規格,像是USB。有關於抽象和介面的觀念介紹可以看一下這2篇文章:
抽象Abstract
介面Interface
使用抽象Abstract實作面積計算
public abstract class Shape
{
public abstract int Area(int x,int y);
}
public class Square:Shape
{
public override int Area(int x, int y)
{
return x * y;
}
}
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
存取子(accessors) get & set
存取子(accessors) get & set在程式設計中很常用到,可以用來對特定的數值做一些處理。其中get的意思相當於「提供」,而set的意思相當於「設定」。
下面我寫一個程式,設定學生的成績,當學生的成績小於60分時自動加到60分,這時候就可以運用存取子(accessors) get & set,程式語法如下:
class Student
{
private int grade;
public int Grade
{
get
{
return grade;
}
set
{
if (value < 60) { grade= 60; }
else { grade=value; }
}
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
用遞迴函式撰寫費式(Fibonacci)數列使用C#
費式數列的特性式是後面的數字等於前面2個數字的加總,在學習程式語言的遞迴函式時,費式數列是一個很好的題目。用遞迴函式撰寫費式數列並不難,使用C#來撰寫費式數列,輸入要列出費式數列到第幾項的程式如下:
static void Main(string[] args)
{
Console.WriteLine("請輸入一個數字:");
string max = Console.ReadLine();
int range = 0;
int.TryParse(max, out range);
for(int i=1;i<=range;i++)
Console.Write(Fibo(i)+"\t");
}
private static int Fibo(int n)
{
if (n <= 0)
return -1;
else if (n == 1 || n == 2)
return 1;
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
傳值呼叫、傳址呼叫和傳出呼叫的基本概念介紹
傳值呼叫(Call By Value):傳值呼叫為複製記憶體,在副程式宣告變數改變數值不會影響到主程式宣告的變數,這2個各自擁有獨立的記憶體空間。
傳址呼叫(Call By Reference):傳址呼叫為共用記憶體,在副程式宣告變數改變數宣告的變數,因為他們是共用記憶體。們是共用記憶體。
傳出呼叫(Call By Output):傳出呼叫也是共用記憶體,和傳址呼叫的差別在於傳出呼叫的變數使用前不須要給初始值。
下面的影片介紹了有關於傳值呼叫和傳址呼叫的不同,使用的是VB程式語言,大家可以參考看看:
傳值呼叫介紹(資料來源:薛志瑋Youtube頻道)
傳址呼叫介紹(資料來源:薛志瑋Youtube頻道)
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
初學者必看!網路爬蟲使用Python並輸出CSV檔
上一次教大家怎樣使用Python做網路爬蟲,在把這些資訊爬下來以後有可能有需要輸出成CSV檔,今天就繼續教大家怎麼把網路爬蟲下來的資料輸出成CSV檔。還沒看過上一篇的人請先看完上一篇再閱讀這一篇,請點下面連結:
初學者必看!網路爬蟲的簡單範例使用Python
跟上次一樣,網路爬蟲的網站是暢銷書排行榜,網址是:https://www.books.com.tw/web/sys_saletopb/books
輸出成CSV檔,首先最前面要引用csv套件,輸入下面程式:
import csv
接下來是命名輸出檔案的名稱,輸入下面程式:
with open('books.csv', 'w', encoding='utf-8', newline='') as csv_file:
上面的這行程式是把輸出檔案命名為book.csv。再來就要輸出文字到檔案裏面,先輸出標題如下:
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['排名', '書名', '作者', '價錢', '連結'])
這時候執行程式,就會把文字寫入到book.csv檔案裏面,打開檔案就是這樣的結果:
排名,書名,作者,價錢,連結
然後就要把爬到文字寫入到檔案中,要寫在For迴圈裏面,連同原本For迴圈的程式如下:
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
初學者必看!網路爬蟲的簡單範例使用Python
現在有很多人都在學網路爬蟲,我過去工作也是有網路爬蟲的經驗,那時候我是使用C#,而網路爬蟲比較好的方法是用Python程式,最近我就學了Python,也成功爬蟲了一些東西,在這裡我分享一個簡單的網路爬蟲給大家。
這個程式會使用到BeautifulSoup,在撰寫爬蟲程式之前要先做安裝的動作。先開啟cmd字元提示命令,然後輸入下面的指令:
然後就會出現安裝的畫面開始安裝,今天我用爬蟲博客來網路書店作範例,輸出暢銷書排行榜書籍資訊,暢銷書排行榜的網址是https://www.books.com.tw/web/sys_saletopb/books/,BeautifulSoup安裝完成以後打開Python的編輯器,輸入以下的程式:
import requests
from bs4 import BeautifulSoup
url ="https://www.books.com.tw/web/sys_saletopb/books/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
info_items = soup.find_all('li', 'item')
for item in info_items:
number=item.find('div','stitle').text.strip()
bookname=item.find('div','type02_bd-a').a.text.strip()
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
C#主控台應用程式引用app.config參數
用C#寫主控台應用程式是沒有web.config的,這時候如果要使用可以自行修改的參數和引用連線字串,那就要使用app.config。
首先要先在專案中新增項目,在新增項目中選取一般>>應用程式組態檔來新增app.config。

要從app.config引用連線字串,在NuGet套件就要安裝System.Configuration.Manager如下圖:

然後在app.config裡面撰寫的內容如下
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="myDB" connectionString="Data source = 填入MSSQL Server路徑; initial catalog = 填入資料庫名稱; User ID=使用者名稱;Password=密碼 " providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="displayText" value="成功連線" />
</appSettings>
</configuration>
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
物理研究所畢業為何投入程式設計工作
我是一個工作多年的程式設計師,資歷5~6年,我大學讀中原大學物理系,研究所讀輔仁大學物理所,其實面試的時候很多家公司都會問:「為什麼學物理畢業後寫程式?」
其實我讀研究所的時候就有寫程式,研究所寫的程式現在業界幾乎用不到了,因為那是寫Fortran,我讀研究所的時候因為就業需要,自己有自學業界用的到的程式JAVA和C#,然後畢業以後就投入程式設計的工作。
程式設計的工作做了這麼多年,覺得寫程式很有趣,也做得不錯。換領域並沒有很困難,重點是看你有沒有心,讀研究所學到了自學的能力,雖然研究所做的研究當然是和現在的工作沒有關係,但是在那時候學到的自學方法還是對工作有幫助,自己上網找資料,自己找書來學習,不見得一定要本科系畢業才能做程式設計的工作。
程式設計的工作不一定就一定要本科系的人才可以做,只要有心好好學習,非本科系的人也一樣可以勝任的。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

本部落格已經破5萬人次瀏覽
這幾天沒有關注部落格,結果部落格瀏覽人次已經突破5萬人好幾天了,今天才知道,在這裡謝謝大家的支持,我的部落格會持續更新,今年應該會分享一些MIT開放式課程物理課的學習心得,敬請期待。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
利用 aspnet_regiis 加密 web.config
用系統管理員身分 開啟 cmd.exe 務必記得要用系統管理員開啟
cd C:\Windows\Microsoft.Net\Framework\v2.0.50727
aspnet_regiis -pef connectionStrings "專案路徑"
aspnet_regiis -pef appSettings "專案路徑"
注意專案路徑要記得打"才正確
* 若出現 'aspnet_regiis' 不是內部或外部命令,可執行的程式或批次檔
先確認iis上專案的Framework版本
cd C:\Windows\Microsoft.Net\Framework\該版本的資料夾
若為v4.0.30319
cd C:\Windows\Microsoft.Net\Framework\v4.0.30319
應該就成功了
---------------------------------------
解密的部分
aspnet_regiis -pdf "connectionStrings" "專案路徑"
aspnet_regiis -pdf "appSettings" "專案路徑"
引用自 https://blog.uwinfo.com.tw/auth/article/choco/401
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
大家好,我是站長波羅,部落格已經一段時間沒有更新了,主要還是因為最近在忙工作,我連周六的時間都還在看一些程式設計的書或是加班,所以我就一段時間沒有更新這個部落格了。現在我的工作是做VB.NET,有空的話我也會再寫一點有關於VB.NET的文章,也請大家多多留言支持喔,謝謝。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

MIT的Lewin教授他的開放式課程非常有趣,我看了以後受益良多(圖片來源:維基百科)
從五專考插大就已經開始看開放式課程
最近我的程式設計部落格人氣竟然比旅遊部落格人氣還要高,真是讓人感到不可思議,我這個部落格寫的東西我是覺得很無聊,應該不太會有人看,想不到會有這麼多人看,而且這還是在我沒認真經營的情況下還能有好成績,這才真的是讓人感到訝異。
因為部落格人氣好,所以我最近決定要把重心放到我的這個程式設計部落格了,而我將要先寫一些開放式課程的文章。
其實我早從五專時期考插大就開始看開放式課程了,我那時候上網看到MIT開放式課程,其中Walter Lewin講授的物理課非常有趣,我那時候考插大在讀物理,就有在看開放式課程的物理課,後來我考上的中原大學,也是繼續上網看MIT開放式課程。本來開放式課程只有國外幾個知名的大學院校,後來國內也開始有一些開放式課程,我就愈看愈多,覺得非常有趣,我看了一些物理課程,也有看通識課程,覺得收穫很多。
最近我會先介紹一些開放式課程的物理課,這些都是我過去有看過,非常推薦在學務裡的人看,如果你覺得物理很難,怎麼讀都讀不懂,我想很多人都跟你一樣,但現在網路上有很多資源,看一看這些我推薦的物理課程,你會收穫非常多,近期我就會推薦一些相關的物理課程,除了MIT開放式課程以外,那時候我看清大的量子物理也很有心得,敬請大家期待我的文章。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
C#少見的存取修飾詞 - internal、 protected internal
之前我就跟大家介紹過封裝(Encapsulation) 的觀念,有介紹了三個常見的存取修飾詞,就是public、private、protected。其實C#除了這3個存取修飾詞以外,還有2個少見的存取修飾詞,那就是internal、 protected internal。
internal:存取範圍是相同組件(Assembly)都可以使用,簡單來講其實就是相同的dll都可以使用
protected internal:除了相同組件(Assembly)都能使用之外,還有其子類別都可以存取。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
String.length() 與 String.getBytes().length的差異
面試時我遇過的一個常見的考題,String.length() 與 String.getBytes().length差異在哪裡呢?
這是JAVA語法,兩者都是算字串長度
String.length():每個字元不管中文或英文長度都算1
String.getBytes().length:中文字元每個長度算2,英文字元每個長度算1
給要面試程式設計的朋友參考
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
使用Visual Studio報表專案建立RDL報表
1.在Visual Studio中建立報表,可以使用報表專案新增報表,或是在網頁專案新增報表,在這裡教大家怎麼用報表專案建立報表rdl檔
2.在檔案總管裡面報表專案裡面報表的地方按滑鼠右鍵,選擇加入新的報表


3.進入報表精靈設定資料來源,如果已經有共用資料來源的話可以選已經有的共用資料來源,可以跳過下一個步驟,還沒有資料來源的話這邊就新建一個,類型選SQL Server,然後點擊編輯。

4.填入伺服器和資料庫的名稱,按下確定後回到剛才選取資料來源的畫面,點擊下一步。
5.這裡輸入查詢字串,可以使用查詢產生器或直接輸入SQL語法就好,你可以先打開SQL Server Management後把SQL語法複製貼上過來。

6.選取報表類型,這裡示範最簡單的表格式,選取表格式以後按下一步。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
使用Visual Studio建立RDLC報表教學
上次教大家怎麼安裝建立rdlc報表的相關套件,今天將繼續教大家建立rdlc報表檔案,上一篇教學請點下面連結:
Visual Studio Reporting Service相關套件安裝教學
今天來要教大家如何建立一個rdlc報表檔案。
在要新增報表的檔案按滑鼠右鍵來加入一個新的項目,然後找到報表這個項目,輸入檔名以後按新增。用報表精靈也可以,但我比較習慣直接新增報表不用報表精靈,這裡就不做報表精靈的教學了。

然後就會出現這個畫面,這是一個空的rdlc,我們要在裡面新增內容。

在報表資料視窗的資料集裡面按滑鼠右鍵後加入資料集,然後就會出現這個畫面,如果之前在專案裡面都沒有新增任何資料集,這時候還沒有資料來源可以選擇,我們需要新增一個資料集,點選新增按鈕。

然後選擇資料連接,可以選擇現有的資料庫或是新增一個連接。

如果選擇新增的話會出現下面這個畫面,可以選取資料庫或是附加一個資料庫檔案,然後按確定。

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
沒認真經營還人氣竄升的教學部落格

Walter Lewin教授講解物理十分有趣,最近我打算在我的部落格來放一些他的物理影片(圖片來源:維基百科)
最近我這個教學部落格人氣很不錯,現在已經破4萬人次瀏覽了,並且每天也都有超過一百人次瀏覽,這算是很好的人氣,因為這個部落格其實我並沒有很認真經營,結果真想不到人氣可以這麼高,而且這個部落格都是在寫一些電腦教學的無聊文章,通常這種部落格人氣要好很困難,這種內容看的人應該比較少,結果想不到我這個部落格最近人氣竟然比我的旅遊部落格還要高,讓人感到不可思議。
其實我是有運用一些SEO的方法,讓部落格人氣上升,但我實在也沒想到我最近這麼少發表新文章,部落格還可以這麼,最近甚至還一天的瀏覽人次破200人,讓人不禁思考假如我認真經營的話人氣會升到多少呢?不過這種問題想想就好,我可以用一些閒暇時間來經營我的部落格,但是我還是要上班,不可能花很多時間經營我的部落格,真的要靠部落格來賺錢那也是很困難的事情,要累積很長的時間,不過我設立這個部落格是完全沒有想到要賺錢的,因為這是程式教學部落格,這並不是一個比較能夠讓大眾接受的部落格,教大家寫程式看的人會比較少,若是想要賺錢應該寫寫別的主題,我的旅遊部落格就是在寫一些大家會感興趣的主題。
雖然真的用認真經營到看這個部落格賺錢不太可能,但我想既然人氣不錯,我可以多花一點時間在這個部落格,我其實最後一個學歷並不是資訊科系,我是輔仁大學物理所畢業,而大學是中原大學物理系,我過去看過很多的開放式教學影片,最近本人突發奇想覺得可以寫寫物理相關的主題,對物理有興趣的朋友近期可以密切關注我的部落格。我過去是很喜歡MIT Walter Lewin的物理教學影片,而且我其實都還有持續在看Walter Lewin的Youtube頻道,他真的是MIT很有名的教授,非常會教物理,喜歡物理的朋友可以期待一下,我考慮會把一些Walter Lewin的影片做個中文摘要,希望大家會喜歡,如果有任何想要我發表的物理相關主題也可以留言給我喔。
最後附上我的旅遊部落格連結,請大家也多支持我的旅遊部落格:
在波羅的海航行
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
Visual Studio Reporting Service相關套件安裝教學
Reporting Service是分析資料庫資料很好用的工具,工作上有可能會需要用到,今天就來教大家如何安裝Visual Studio裡面的RDLC Report Designer。我使用的Visual Studio版本是2019,但是舊版本我相信步驟也應該是大同小異。之後我會在部落格教大家如何建立報表檔案,想要學Reporting Service的人請密切注意我的部落格。
安裝RDLC Report Designer套件教學
建立報表需要安裝RDLC Report Designer。首先一開始打開Visual Studio,然後選取[延伸模組]>>[管理延伸模組]。

然後進到管理擴充功能的視窗,選取[Microsoft RDLC Reader Designer]點下載。

在最下面會出現訊息,要把所有Visual Studio的視窗關閉後開始進行安裝,這裡就把Visual Studio整個關閉,就會開始安裝程式了。

然後就會看到Installer視窗開始跑,就等到他跑完,中間會出現詢問數位簽章憑證就按確認就好了。

到這裡安裝RDLC Designer就完成了,就可以在Visual Studio中新建rdlc報表檔案。
安裝NuGet套件教學
波羅、希夏普2020 發表在 痞客邦 留言(1) 人氣()
大家好,我是波羅希夏普,好久沒有更新部落格了,我最近找到新工作了,現在正在做報表專案,過去我就有做過Reporting Service,而這一次做 Reporting Service還是花了很多時間學習,現在也做得有一點心得了。最近我將撰寫和Reporting Service相關的文章,敬請期待。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
在程式中善用using自動釋放資源,而不需手動關閉
上次跟大家介紹在ASP.NET中如何引用Web.Config裡面的連線字串,大家可以看這篇文章:
ASP.NET 使用C#引用Web.Config的 connectionString教學
請大家先看完我的上一篇文章以後再來看我這篇文章,延續上一篇我所寫的程式,上次我在程式的最後面加上 cmd.Dispose()和conn.Close()來釋放資源,這個動作其實在C#中是可以自動化執行的,只要你使用using就可以了,在SqlConnection和SqlCommand做實例化的地方使用using,在程式執行完以後就會自動關閉釋放資源,上次資料庫的程式就改成像下面這樣:
string sql = @"Select * from Guestbooks"; //這裡輸入要執行的TSQL
using(SqlConnection conn = new SqlConnection(cnstr))
{
conn.Open();
using(SqlCommand cmd = new SqlCommand(sql, conn))
{
SqlDataReader dr = cmd.ExecuteReader();
.
.
.
}
cmd.Dispose();
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()