發表文章

PostgreSQL 資料庫安裝

圖片
  至 官網 下載版本13.4並執行安裝程式 將安裝目錄改成 D:\PostgreSQL\13 取消 Stack Builder 資料安裝預設目錄D:\PostgreSQL\13\data 設定資料庫管理員帳號 postgres 的密碼 預設Port為5432    資料庫安裝中 安裝完成  使用GUI工具PgAdmin連線到資料庫 開始選單 -> PostgreSQL 13 -> 點選 pgAdmin4 首次執行需設定一組pgAdmin的新密碼 (非資料庫管理員帳號 postgres 的密碼) 點選 Servers 輸入資料庫管理員帳號 postgres 的密碼,點選OK 連線成功 參考網址: PostgreSQL - 安裝教學 By Hao★

[C#] 使用Gmail發送信件

使用Gmail發送信件   using System; using System.Collections.Generic; public void SendMail(string Subject, string Body, IEnumerable ToUser) { string account = "XXX@gmail.com";//登入Mail Server的帳號 string password = "*******";//登入Mail Server的密碼 string from = "XXX@gmail.com";//實際發送信件的Mail地址 string host = "smtp.gmail.com";//發Mail的Server位置 string port = "587";//發Mail的Server位置使用的Port bool enableSsl = true;//是否啟用SSL憑證 System.Net.Mail.MailMessage MyMail = new System.Net.Mail.MailMessage(); MyMail.From = new System.Net.Mail.MailAddress(from); foreach (var i in ToUser) { MyMail.To.Add(i.ToString());//設定收件者Email } MyMail.Subject = Subject; MyMail.Body = Body; //設定信件內容 MyMail.IsBodyHtml = true; //是否使用html格式 System.Net.Mail.SmtpClient MySMTP = new System.Net.Mail.SmtpClient(host, Int32.Parse(port)); MySMTP.Credentials = new System.Net.NetworkCredential(account, password); MySMTP...

[C#] 將DataTable轉換成Html格式表格

將DataTable轉換成Html格式表格   using System.Data; using System.Text; protected string ExportDatatableToHtml(DataTable dt) { StringBuilder strHTMLBuilder = new StringBuilder(); strHTMLBuilder.Append("<table border='2px' cellpadding='5'>"); strHTMLBuilder.Append("<tr>"); foreach (DataColumn myColumn in dt.Columns) { strHTMLBuilder.Append("<td>"); strHTMLBuilder.Append(myColumn.ColumnName); strHTMLBuilder.Append("</td>"); } strHTMLBuilder.Append("</tr>"); foreach (DataRow myRow in dt.Rows) { strHTMLBuilder.Append("<tr>"); foreach (DataColumn myColumn in dt.Columns) { strHTMLBuilder.Append("<td>"); strHTMLBuilder.Append(myRow[myColumn.ColumnName].ToString()); strHTMLBuilder.Append("</td>"); } strHTMLBuilder.Append...

[C#] DataTable行列轉置

將DataTable行列轉置   using System.Data; public DataTable RevertRowToColumn(DataTable dtSource) { DataTable newDataTale = new DataTable(); //原本DataTable列數 int dtRowsCount = dtSource.Rows.Count; //原本DataTable欄數 int dtColumnCount = dtSource.Columns.Count; //將原本DataTable的第一個欄位放入轉置後的第一欄 newDataTale.Columns.Add(dtSource.Columns[0].ToString(), typeof(string)); //將原本DataTable的第一列轉置為轉置後的欄位 for (int i = 0; i < dtRowsCount; i++) { newDataTale.Columns.Add(dtSource.Rows[i][0].ToString(), typeof(string)); } //將原本DataTable的欄位列依序轉置為轉置後的每一列 //起始為1,因為原本第一列已經放置為欄位名稱,要從第二列開始跑起 for (int s = 1; s < dtColumnCount; s++) { DataRow dr = newDataTale.NewRow(); dr[0] = dtSource.Columns[s].ToString(); for (int i = 0; i < dtRowsCount; i++) { dr[i + 1] = dtSource.Rows[i][s].ToString(); } newDataTale.Rows.Add(dr); } newDataTale.TableName = "NEW_" + dtSource.TableNa...

FTP Server

圖片
用 FileZilla Server v0.9.60 架設 FTP 站 1.執行FileZilla_Server-0_9_60.exe安裝檔 參考 https://briian.com/4618/3/

[Windows] 排程輸出、輸入指令

使用情境: 因新/舊版本的Windows Server差距太大,沒辦法使用介面來操作排程匯出/匯入,所以使用 Command Line 下指令的方式來匯出/匯入 Windows 排程。 CMD 1.輸出排程 schtasks /Query /S SERVER /XML /TN 排程名稱 > 排程輸出存放路徑\排程名稱.xml 2.輸入排程 schtasks /Create /XML 排程輸出存放路徑\排程名稱.xml /TN 排程名稱 /RU 使用者帳號 /RP 使用者密碼 PowerShell 1.輸出排程 Export-ScheduledTask -TaskName 排程名稱 -TaskPath 排程路徑 | out-file 要存放路徑\檔案名稱.xml 2.輸入排程 Register-ScheduledTask -xml (Get-Content 'XML檔的位置' | Out-String) -TaskName 排程名稱 -TaskPath 排程路徑 -User 網域\使用者 –Force 參考網址:  By Hao★

DataGridView相關

1.選擇一整列 DataGridView  →  屬性 → SelectionMode → FullRowSelect  2.只能單選 DataGridView  →  屬性 → MultiSelect → False  3.禁止排序功能 For i As Integer = 0 To DataGridView1.ColumnCount-1      DataGridView1.Columns(i).SortMode = DataGridViewColumnSortMode.NotSortable Next 參考網址:  By Hao★

[VB.Net] msgbox用法

   參考網址: msgbox(彈出式訊息方塊)的用法 By Hao★

[VB.Net] 程式段行、跳行、註解

  1.段行:_(底線)   Dim FileNotExistMsg As String = "File Not Exist, Please Check !!" Dim FileNotExistMsg As String = _ "File Not Exist, Please Check !!" 2.換行:vbCrLf   Dim statusFileCheck = "FileStatus: " + vbCrLf + FileNotExistMsg 3.註解:'(單引號)   '註解 參考網址:  By Hao★

[C#] 獲取系統當前版本號

1.獲取系統版本號   Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; 2.格式化   string ver = string.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build, version.Revision.ToString("0000")); 2.不做另外處理,直接使用   string ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() 參考網址:  By Hao★

[Asp.Net] 下載指定目錄下的文件

下載指定目錄下的文件   protected void DownloadFile( string filename, string filepath) { Response.Clear(); Response.AddHeader( "Content-Disposition" , "attachment; filename=" + HttpUtility .UrlEncode(filename, System.Text.Encoding .Default)); Response.ContentType = "application/octet-stream" ; Response.TransmitFile(filepath); Response.End(); } 參考網址:  By Hao★

[C#] 查詢指定目錄下相關文件

查詢包含特定副檔名或是檔案中含有某關鍵字   using System.Text.RegularExpressions; using System.IO; private void FindFile(string dir) { DirectoryInfo Dir = new DirectoryInfo(dir); try { string filepath = ""; foreach (FileInfo file in Dir.GetFiles("*.xls"))//查詢附檔名為xls的文件 { Regex regex = new Regex(@"friend");//查詢檔案名稱中有關鍵字friend的文件 Match match = regex.Match(file.ToString()); if (match.Success) { filepath = Dir + file.ToString()); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } } 參考網址:  By Hao★

[Ext.Net] GridPanel 相關整理

隐藏列   GridPanel_1.ColumnModel.SetHidden(1, true); 參考網址:  By Hao★

[Ext.Net] GridPanel獲取選中的數據

1.判斷GridPanel中是否選中了某列   if(!GridPanel1.hasSelection()) { Ext.Msg.alert("提示", "請選擇資料!"); return; } 2.獲取選中行的數據   var record = GridPanel1.selModel.getSelected(); var ID = record.data.ID; ID為GridPanel1的Store的欄位名稱。 3.獲取GridPanel中所有的數據   var data = GridPanel1.getStore().getRange(); 可以將得到的所有數據轉換成Josn傳给後台: var Datas = []; var data = GridPanel1.getStore().getRange(); Ext.each(data, function(record) { Datas.push(record.data); }); var jsonData = Ext.encode(Datas); return jsonData; 參考網址:  Ext.Net 使用总结之GridPanel中的选中行   By Hao★

[Ext.Net] 查詢條件中, 日期時間的佈局方式

前台   <ext:CompositeField ID="CompositeField2" runat="server" FieldLabel="時間"> <Items> <ext:DateField ID="date_start" Vtype="daterange" runat="server" Flex="1"> <Listeners> <Render Handler="this.endDateField = '#{date_end}'" /> </Listeners> </ext:DateField> <ext:Label ID="Label2" runat="server" Text="~"> </ext:Label> <ext:DateField ID="date_end" Vtype="daterange" runat="server" Flex="1"> <Listeners> <Render Handler="this.startDateField = '#{date_start}'" /> </Listeners> </ext:DateField> </Items> </ext:CompositeField> 參考網址: Ext.Net 使用总结之查询条件中的起始日期   By Hao★

Oracle 恢復表中誤刪的數據

  查詢20分鐘前的資料 SELECT * FROM TableName AS OF TIMESTAMP SYSDATE - 20/1440; 查詢指定時間前的資料 SELECT * FROM TableName AS OF TIMESTAMP TO_TIMESTAMP('2020-01-01 12:10:10','YYYY-MM-DD HH24:MI:SS'); 查到後就可以把該紀錄插入表中 INSERT INTO TableName SELECT * FROM TableName AS OF TIMESTAMP SYSDATE - 20/1440 WHERE ID = '123' COMMIT; ps.1440代表一天有1440分鐘 By Hao★

[Ext.Net] GridCommand 用法

圖片
前台   <script type="text/javascript"> var prepare = function(grid, toolbar, rowIndex, record) { var EditButton = toolbar.items.get(0); var DetailButton = toolbar.items.get(1); var SendButton = toolbar.items.get(2); var CheckButton = toolbar.items.get(3); var RejectButton = toolbar.items.get(4); var InactiveButton = toolbar.items.get(5); var PDFButton = toolbar.items.get(6); if (record.data.STATUS == "S" || record.data.STATUS == null || record.data.STATUS == "") { CheckButton.setDisabled(true); RejectButton.setDisabled(true); } if (record.data.CHECK_FLAG == "C") { EditButton.setDisabled(true); SendButton.setDisabled(true); CheckButton.setDisabled(true); RejectButton.setDisabled(true); } if (record.data.INACTIVE_FLAG == "I") { ...

[Ext.Net] FileUploadField使用

圖片
前台   <ext:FileUploadField ID="FileUploadField" runat="server" FieldLabel="上傳附件" LabelAlign="Right" ButtonText="瀏覽" Icon="Attach" /> <ext:Button ID="Upload" runat="server" Text="上傳" Icon="EjectGreen"> <DirectEvents> <Click OnEvent="btnUploadFile"> </Click> </DirectEvents> </ext:Button> 後台C#   protected void btnUploadFile(object sender, DirectEventArgs e) { if (this.FileUploadField.HasFile) { string FileName = Path.GetFileName(this.FileUploadField.PostedFile.FileName); string newName = DateTime.Now.ToString(@"yyyyMMddHHmmss") + "_" + FileName; string savePath = Page.Server.MapPath("`/UploadFile/" + newName); if(!Directory.Exists(Path.GetDirectoryName(savePath))) { Directory.CreateDirectory(Path.GetDirectoryName(savePath));...

[Ext.Net] GridPanel 多選並回傳後台

圖片
後台C#   protected void btnCancel_Click(object sender, DirectEventArgs e) { X.Msg.Confirm("提示", "删除將無法恢復是否確認刪除?", new MessageBoxButtonsConfig { Yes = new MessageBoxButtonConfig {      Handler = "Ext.net.DirectMethods.Yes()", Text = "確認" }, No = new MessageBoxButtonConfig {      Handler = "Ext.net.DirectMethods.No()", Text = "取消" } }).Show(); } [DirectMethod] public void Yes() {      RowSelectionModel sm = this.gpGridPanelID.SelectionModel.Primary as RowSelectionModel; if(sm.SelectedRows.Count != 0) { string tempRowData = ""; foreach(SelectedRow row in sm.SelectedRows) {      tempRowData = tempRowData + "," + row.RecordID ; } } } 前台   <ext:Store ID="StoreID" runat="server"> <Reader> <ext:JsonReader IDProperty=...

[Ext.Net] Ext.util.Format

  Ext.grid.GridPanel提供的工具函數, 它會根據輸入的日期格式返回一個renderer函數, 之后Ext.grid.ColumnModel會利用這個renderer函數格式化表格中的日期or其他 <Renderer Fn="Ext.util.Format.dateRenderer('Y/m/d')" /> <Renderer Fn="Ext.util.Format.dateRenderer('Y/m/d H:i:s')" /> <Renderer Fn="Ext.util.Format.numberRenderer('0.000')" /> 參考網址:  Ext.util.Format腳本娃娃   forums.ext.net By Hao★

[C#] Convert Excel to PDF

  using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using Spire.Xls; namespace ToPDF { class Program { static void Main(string[] args) { string tempPath = HttpRuntime.AppDomainAppPath.ToString() + "\\Report\\"; Workbook workbook = new Workbook(); workbook.LoadFromFile(tempPath + "Sample.xlsx", ExcelVersion.Version2010); for(int i = 0; i < workbook.Worksheets.Count; i++) { workbook.Worksheets[i].PageSetup.Orientation = PageOrientationType.Landscape; workbook.Worksheets[i].PageSetup.IsFitToPage = true; } workbook.SaveToFile(tempPath + "result.pdf", Spire.Xls.FileFormat.PDF); } } } 參考網址 By Hao★

[Asp.Net] 學習筆記CommandArgument

ASP中用Button傳遞兩個職給後台的方法: 1、在CommandArgument中用逗號分隔要傳送到後台的兩個參數: <asp:GridView ID="GridViewUserScraps" ItemStyle-VerticalAlign="Top"  AutoGenerateColumns="False" Width="100%" runat="server"  OnRowCommand="GridViews_RowCommand" > <Columns> <asp:TemplateField SortExpression="SendDate"> <ItemTemplate> <asp:Button ID="btnPost" CssClass="submitButton" Text="Comment"  runat="server" CommandName="Comment"  CommandArgument='<%#Eval("ID")+","+ Eval("UserID")%>' /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> p.s. 也可以用這種 CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") + "," +  DataBinder.Eval(Container.DataItem,"UserID")%>'  2、C#後台接收到button傳遞的參數後的處理方法: protected void GridView...

[Web] Mac 安裝 Telnet

在10.12及以下版本,都有內建telnet命令,但在10.13以後,都已经取消了。 Last login: Sun Aug 11 11:44:10 on ttys000 HaoKi$ telnet -bash: telnet: command not found 打開终端機 安裝Homebrew -> /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 再輸入密碼 指令在這裡-> https://brew.sh/index_zh-tw.html HaoKi$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ==> This script will install: /usr/local/bin/brew /usr/local/share/doc/homebrew /usr/local/share/man/man1/brew.1 /usr/local/share/zsh/site-functions/_brew /usr/local/etc/bash_completion.d/brew /usr/local/Homebrew ==> The following existing directories will be made group writable: /usr/local/share/man/man3 /usr/local/share/man/man5 /usr/local/share/man/man7 ==> The following existing directories will have their owner set to HaoKi: /usr/local/share/man/man3 /usr/local/share/man/man5 /usr/local/share/man/man7 ==> The following existing directories will have ...

[Java] String 轉換 Integer

String -> Integer //將 String 轉換成 Integer public static void main(String[] args) { String str = "1234"; int intValue1 = Integer.parseInt(str); int intValue2 = Integer.parseInt("12345"); int intValue3 = Integer.valueOf("12345"); } Integer -> String //將 Integer 轉換成 String public static void main(String[] args) { int intValue = "1234"; String str1 = String.valueOf(intValue); String str2 = Integer.toString(intValue); String str3 = "" + intValue; } By Hao★

[Java] replace()、trim()

replace( ) 取代 Code: public static void main(String[] args) { String s1 = "ABC123ABC123"; String s2 = "ABC 123"; String s3 = "ABC_123"; System.out.println(s1.replace("ABC","abc")); // System.out.println(s1); System.out.println(s2.replace(" ","")); System.out.println(s3.replace("_"," ")); } 輸出: abc123abc123 ABC123 ABC 123 ABC123ABC123 trim( ) 去掉頭尾空白字元 Code: public static void main(String[] args) { String s1 = " 123 "; String s2 = " abc 123 "; System.out.println(s1. trim()); System.out.println(s2. trim()); //只會去掉前後的空白 } 輸出: 123 abc 123 By Hao★

[Java] indexOf()、lastIndexOf()

indexOf( ) Code: public static void main(String[] args) { String s1 = "ABCDEFG"; if(s1.indexOf("CDE")) //s1.indexOf("CDE") = 2 System.out.println("CDE is located at index 2"); if(s1.indexOf("Test") < 0) //s1.indexOf("Test") = -1 System.out.println("s1 not contain Test"); } 輸出: CDE is located at index 2 s1 not contain Test lastIndexOf( )  Code: public static void main(String[] args) { String s1 = "ABCDEFG_ABCDEFG"; if(s1.lastIndexOf("CDE")) //s1.lastIndexOf("CDE") = 10 System.out.println("CDE is located at index 10"); if(s1.lastIndexOf("Test") >= 0) //s1.lastIndexOf("Test") = -1 System.out.println("s1 not contain Test"); } 輸出: CDE is located at index 10 By Hao★

[Java] startsWith()、endsWith()

startsWith( ) Code: public static void main(String[] args) { String s1 = "Hello World"; if(s1.startsWith("Hello")) System.out.println("s1 starts with Hello"); if(s1.startsWith("W",6)) System.out.println("s1 starts with W at position 6"); } 輸出: s1 starts with Hello endsWith( )  Code: public static void main(String[] args) { String s1 = "Hello World"; if(s1.endsWith("World")) System.out.println("s1 ends with World"); } 輸出: s1 ends with World By Hao★

[Java] equals()、equalsIgnoreCase()

equals( ) Code: public static void main(String[] args) { String s1 = "hello"; if(s1.equals("hello")) System.out.println("s1 equals hello"); else System.out.println("s1 not equals hello"); } 輸出: s1 equals hello equalsIgnoreCase( )  Code: public static void main(String[] args) { String s1 = "hello"; String s2 = "Hello"; if(s1.equalsIgnoreCase(s2)) System.out.println("s1 equals s2"); else System.out.println("s1 not equals s2"); } //equalsIgnoreCase會忽略大小寫 輸出: s1 equals s2 By Hao★

[Linux] 執行Shell Script

設定執行權  開啟user/group/other三者的執行權限   chmod +x test.sh  如果需要只為某些使用者開權限可以用   chmod u+x test.sh #user   chmod g+x test.sh #group   chmod o+x test.sh #other  如果需要關掉權限   chmod -x test.sh 執行Shell 執行現在目錄下的Shell ./test.sh 讓Shell在背景執行 ./test.sh & 一一一一一一一一一一 $ ./test.sh & [1] 10182 [1]+ Done       ./test.sh 一一一一一一一一一一 顯示Shell中執行的步驟 csh -x test.sh bash -x test.sh By Hao★

[Linux] Shell Script 語法

#兩個『 ` 』中間為可以先執行的指令,亦可使用 $( ) set str = 'Current directory is '`pwd` echo "Output : $str" ------------------------------------------------------ Output : Output : Current directory is /Users/Project/Test By Hao★

[Linux] Shell Script "==" and "=~"

# "==" set text0 = "World" set text1 = "World" set text2 = "Hello World" set text3 = "Hello World !!" if( $text2 == $text3) then echo "$text2 == $text3" else echo "$text2 != $text3" endif if( $text0 == text1) then echo "$text0 == $text1" else echo "$text0 != $text1" endif ------------------------------------------- output: Hello World !! != Hello World !! World == World # "=~" set text1 = "World" set text2 = "Hello World" set text3 = "Hello World !!" if( $text3 =~ $text2) then echo "$text2 is $text3 Substring" else echo "$text2 not $text3 Substring" endif if( $text2 =~ text1) then echo "$text1 is $text2 Substring" else echo "$text1 not $text2 Substring" endif ------------------------------------------- output: Hello World is Hello World !! Substring World is Hello World Substring By Hao★

[Network] NS2 simulator

圖片
  #Create a simulator object set ns [new Simulator] #Define different colors for data flows (for NAM) $ns color 1 Blue $ns color 2 Red #Open the NAM trace file set nf [open out.nam w] $ns namtrace-all $nf #Define a 'finish' procedure proc finish {} { global ns nf $ns flush-trace #Close the NAM trace file close $nf #Execute NAM on the trace file exec nam out.nam &amp; exit 0 } #Create four nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] #Create links between the nodes $ns duplex-link $n0 $n2 2Mb 10ms DropTail $ns duplex-link $n1 $n2 2Mb 10ms DropTail $ns duplex-link $n2 $n3 1.7Mb 20ms DropTail #Set Queue Size of link (n2-n3) to 10 $ns queue-limit $n2 $n3 10 #Give node position (for NAM) $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right #Monitor the queue for link (n2-n3). (for NAM) $ns duplex-link-op $n2 $n3 queuePos...

[Linux] crontab 例行性工作排程

Crontab 使用說明 Linux/Unix 系統有個 crontab 程式是用來讓系統使用者自行設定需要的時間,做需要做的事情。 ex:每個星期一自動上ftp抓檔案,並備份在本機端。 要有定時裝置,記憶體內要常駐 /usr/sbin/crond 程式 一般 Linux 在開機時會自動載入,也可以到 /etc/rc.d/ 目錄下看看是否有在執行的 cron 程式指令 可以用 crontab -e 指令來編寫需要執行的 cron 指令 或 寫在一個 file 裡,再執行 crontab filename 所有使用者的 crontab 檔都會存在 /usr/spool/cron/crontab/ 下,檔名為該帳號的名稱 Cron 語法介紹 * * * * * command | | | | |       | | | | | |       要執行的命令 | | | | 星期幾(0~7) | | | 月份(1~12) | | 日期 (1~31) | 小時 (0~23) 分鐘 (0~59) 若想關閉某個命令的輸出結果,可以將輸出結果重新導向至/dev/null ex:  * * * * * command  >/dev/null 2>&1 Cron 參數特殊符號意義 *: 任何時段都接受   , : 分隔時段   - : 一段時間範圍內 /n : n=數字,每隔n單位間隔 (*/5 * * * * command 每五分鐘執行一次) Cron 指令 $ crontab FileName #要執行 crontab 指令的檔案 $ crontab -l #列出該使用者擁有的 crontab 指令 $ crontab -e #編輯該使用者的 crontab 指令 $ crontab -r #將使用者的 crontab 全部清除! By Hao★

[Linux] 檔案權限 - rwx rwx ---

- rwx rwx rwx 1 234 567 890 r : read w : write x : execute 1 : 表示檔案類型 234 : 檔案擁有者的權限 567 : 檔案所屬群組的權限 890 : 其他人的權限 檔案類型又分為 - : 一般檔案 d : 目錄 l : 符號連接檔 b : 區塊特殊檔(每次處理的單位為區塊大小) c : 字元特殊檔(每次處理的單位為字元大小) p : FIFO特殊檔(負責處理程序間的通訊功能) By Hao★

[Network] Ubuntu-18.04 安裝 ns-2.35

虛擬機 系统 : Ubuntu 18.04.1 本機系统: Windows 10 虛擬機管理器: VirtualBox 5.2.22 到下方網址下載最新版的 ns https://www.isi.edu/nsnam/ns/ns-build.html 如果還沒安裝好Ubuntu可以參考這篇-> VirtualBox Ubuntu安裝 1.更新系統         sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade 2.安裝ns所需套件 sudo apt-get install build-essential sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev   #for tcl and tk sudo apt-get install libxmu-dev libxmu-headers   #for nam sudo apt-get install ns2 sudo apt-get install -y gcc g++ make libxt-dev libx11-dev libxmu-dev 3.安裝ns tar -xvf ns-allinone-2.35.tar.gz cd ns-allinone-2.35 4.補丁(因應版本不同所產生的錯誤) wget https://raw.githubusercontent.com/zylan29/ns-expr/master/ns-allinone-2.35-bugfix.patch patch -p1 < ns-allinone-2.35-bugfix.patch ./install 5.安裝nam cd  ns-allinone-2.35/nam-1.15 sudo ./configure sudo make sudo make install 5.環境變數(好像有沒有設都不引響..!?) gedit   ~/.bashrc 在文件後端加上 # add...

VirtualBox Ubuntu安裝

圖片
本範例版本 VirtualBox 5.2.22 Ubuntu 18.04.1 版本不同的話可能有些介面不太一樣 安裝完  VirtualBox  & 下載完  Ubuntu  後開始新增虛擬機 替自己的虛擬機命名 選擇虛擬機的類型&版本 配置虛擬機的記憶體大小 替虛擬機建立虛擬硬碟  設定虛擬硬碟所分配的大小  選擇剛剛下載好的Ubuntu iso檔 虛擬光碟設定好會顯示位置&名稱  設定系統語言,安裝Ubuntu 選擇鍵盤佈局  選擇你的時區  設定使用者名稱&密碼 開始進行初始化,這邊要等上一段時間  當你關閉虛擬機時 1.儲存機器狀態->凍結虛擬機當下動作,之後啟動即可在繼續 2.傳送關機命令->如同實體電腦正常關機的動作 3.機器關機->如同實體電腦直接切斷電源 By Hao★