多型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字元提示命令,然後輸入下面的指令:

  • pip install requests

 

   然後就會出現安裝的畫面開始安裝,今天我用爬蟲博客來網路書店作範例,輸出暢銷書排行榜書籍資訊,暢銷書排行榜的網址是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。

02.PNG

 

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

01.PNG

 

    然後在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) 人氣()

 

部落格50K大關

本部落格已經破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) 人氣()

 

Walter_lewin_head

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.在檔案總管裡面報表專案裡面報表的地方按滑鼠右鍵,選擇加入新的報表

01

1.2

 

 

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

1.3


 
4.填入伺服器和資料庫的名稱,按下確定後回到剛才選取資料來源的畫面,點擊下一步。

 

5.這裡輸入查詢字串,可以使用查詢產生器或直接輸入SQL語法就好,你可以先打開SQL Server Management後把SQL語法複製貼上過來。
 

1.5

 


6.選取報表類型,這裡示範最簡單的表格式,選取表格式以後按下一步。 

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

使用Visual Studio建立RDLC報表教學

         上次教大家怎麼安裝建立rdlc報表的相關套件,今天將繼續教大家建立rdlc報表檔案,上一篇教學請點下面連結:

Visual Studio Reporting Service相關套件安裝教學

 

          今天來要教大家如何建立一個rdlc報表檔案。 

        在要新增報表的檔案按滑鼠右鍵來加入一個新的項目,然後找到報表這個項目,輸入檔名以後按新增。用報表精靈也可以,但我比較習慣直接新增報表不用報表精靈,這裡就不做報表精靈的教學了。

04

 

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

05

      

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

05_B

 

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

06

 

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

07

 

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

 

沒認真經營還人氣竄升的教學部落格

 

Walter_Lewin_May_16,_2011_talk_at_MIT

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,然後選取[延伸模組]>>[管理延伸模組]。

00

 

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

01

 

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

02

 

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

03

    

     到這裡安裝RDLC   Designer就完成了,就可以在Visual Studio中新建rdlc報表檔案。

 

 

安裝NuGet套件教學

波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()

   大家好,我是波羅希夏普,好久沒有更新部落格了,我最近找到新工作了,現在正在做報表專案,過去我就有做過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) 人氣()