發表文章

目前顯示的是有「心得」標籤的文章

使用 homebrew 在 Mac 上安裝 mysql

圖片
圖片來源:wiki 前言     由於課程需求,需要練習SQL指令,既然要練習SQL只好找最多人在用的MySQL,這樣除錯起來比較方便XD 安裝步驟 為了極簡化安裝步驟,我們先行安裝homebrew在mac上,接著輸入以下指令  $ brew install mysql 這樣就安裝成功啦~ 基礎使用 啟用mysql.server $ mysql.server start 驗證root帳號可以使用 $ mysql -u root -p 密碼為空,什麼都不用輸入即可使用 顯示DataBases > show databases 參考文獻 1.http://chaneswin.pixnet.net/blog/post/31535983-mac-%E5%8A%A0%E8%A3%9D-mysql

Mac 開發人員必用神器 -- homebrew

圖片
圖片來源:http://brew.sh/index_zh-tw.html 前言     身為Mac 重度使用者,常常會需要去安裝有的沒有的軟體,但安裝時候安裝的步驟的真的超麻煩,有些還要去修改路徑或環境變數,更別提還有要 make install 的...,只要有了這個管理神器 -- homebrew 就可以輕鬆解決這些困擾,讓你安裝軟體減輕不少負擔。 安裝Homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 你會發現這是用ruby的環境來安裝,但mac本身內建Ruby,所以不用太擔心 基本指令 man brew    跟 brew約會 brew help    查詢使用說明 brew serach 查詢可安裝套件 brew list      列出已安裝套件 brew install 安裝套件 應用 我們來安裝git,只要輸入以下即可安裝成功 brew install git 或是安裝 mysql,只要輸入 brew install mysql 就是這麼簡單,這麼輕鬆!!! 安裝前建議先打上 brew doctor,會顯示建議的設定需求 參考文獻 1.http://brew.sh/index_zh-tw.html

[Linux] 利用 pipe 解決 fork 共用變數問題

圖片
圖片來源:https://jan.newmarch.name/ProgrammingUnix/ipc/lecture.html 目錄 一.背景知識 二.實作步驟 三.參考文獻 一.背景知識 1.Linux     Linux是一種自由和開放原始碼的類UNIX作業系統。術語Linux只表示作業系統核心本身,但通常採用Linux核心來表達該意思。Linux則常用來指基於Linux核心的完整作業系統,包括GUI元件和許多其他實用工具。由於這些支援使用者空間的系統工具和庫主要由理察·斯托曼於1983年發起的GNU計劃提供,自由軟體基金會提議將該組合系統命名為GNU/Linux[7][8],但Linux不屬於GNU計劃。 2.fork()      In  computing , particularly in the context of the  Unix  operating system and its  workalikes ,  fork  is an operation whereby a  process  creates a copy of itself. It is usually a  system call , implemented in the  kernel . Fork is the primary (and historically, only) method of process creation on Unix-like operating systems. 3.pipe     pipe() creates a pipe, a unidirectional data channel that can be used for interprocess ommunication.  The array pipefd is used to return two file descriptors referring to the ends of the pipe. pipefd[0] refers to the read e...

添加 System call(系統呼叫) 至 linux kernel (環境:Ubuntu 12.04LTS + kernel:3.13.0-32)

圖片
圖與內文無關 目錄 一.背景知識 二.實作步驟 三.Step by step 四.參考文獻 一.背景知識 1.Linux     Linux是一種自由和開放原始碼的類UNIX作業系統。術語Linux只表示作業系統核心本身,但通常採用Linux核心來表達該意思。Linux則常用來指基於Linux核心的完整作業系統,包括GUI元件和許多其他實用工具。由於這些支援使用者空間的系統工具和庫主要由理察·斯托曼於1983年發起的GNU計劃提供,自由軟體基金會提議將該組合系統命名為GNU/Linux[7][8],但Linux不屬於GNU計劃。 2.Linux kernel     Linux內核(英語:Linux kernel),是一種電腦作業系統內核,以C語言和組合語言寫成,符合POSIX標準,以GNU通用公眾授權條款釋出。Linux內核最早是由芬蘭駭客林納斯·托瓦茲為嘗試在自己的英特爾x86架構電腦上提供自由免費的類Unix系統而開發的。該計劃開始於1991年,林納斯·托瓦茲當時在Usenet新聞群組comp.os.minix登載貼文[7],這份著名的貼文標示著Linux內核計劃的正式開始。 3.System call (系統呼叫)     指運行在使用者空間的程序向作業系統內核請求需要更高權限運行的服務。系統調用提供了用戶程序與作業系統之間的接口。大多數系統交互式操作需求在內核態執行。如設備IO操作或者進程間通信。 二.實作步驟 各kernel版本或是本身OS的不同,在某些地方上會有些微不,例如檔案位置,檔案名稱,或是include的標頭檔不同,這部分可能就要上網找資料去惹,另外不同的 Linux 系統之間也有可能使用不同的指令, 在實作時請多留意自己的環境 ,本實作是以 Ubuntu 12.04LTS + kernel:3.13.0-32-generic 來執行。以下流程可供參,對於其他環境來說應該是大同小異的。 Kernel side 1.  下載 kernel source 2.  定義system call sys_hello(): 3. 添加 hello 目錄至 ...

GTA 5 "無法初始化DirectX 9 裝置" 解決方案

圖片
字樣"無法初始化DirectX 9 裝置" 我相信不少玩家都有遇到這個問題 然後試了千種方法依然無解,這種問題實在很惱人 例如:重新安裝GTA5. 重灌DirectX. 重灌顯示卡的驅動程式. 重灌OS .......等 總之,後來我在Steam討論區上找到了個超簡易的方法 即可解救芸芸眾生,當上看到可行的時候,真的莫名感動O__________Q 請依照以下步驟: 1.按下鍵盤上的 " windows + R " 2.接著輸入" regedit " 3.在下面找到 HKEY_LOCAL_MACHINE>SOFTWARE>MICROSOFT>DIRECT3D>DRIVERS 4.將 SoftwareOnly 更改為 0 5.享受遊戲 這樣還不行的朋友,我們只好再多研究研究,畢竟我的作業環境已經很不理想了 電腦配備:windows8 64位元 + 顯示卡 AMD R9-270 不是最多人使用的windows7 也不是最新版本的windows 8.1 同時也是最多問題而且無解的A卡((通常網上對於顯卡的解決方案都是對N卡有效 所以你也要是不行就多找找法子或是提出問題吧 記得提問時最好附上自己的作業環境 因為大部分的問題都與之息息相關 解決方法也會有所改變

GTA V "Unable to initialize DirectX 9 Device" solution

圖片
Hi there! I believe this question has been annoyed somebody for a while But, you can follow the step below the paragraph . Accroding to this solution, http://steamcommunity.com/app/271590/discussions/0/611703709830024441/#p2 "we have to get in registry editor and browse to  HKEY_LOCAL_MACHINE>SOFTWARE>MICROSOFT>DIRECT3D>DRIVERS and change SoftwareOnly to 0. Direct3D Accelleration was enabled and BAM in game" Make sure you have to do is: Click windows + R >> type "regedit" >> find HKEY_LOCAL_MACHINE>SOFTWARE>MICROSOFT>DIRECT3D>DRIVERS >> change SoftwareOnly to 0 It worked for me. I wish you can enjoy game with me.

利用NS2軟體模擬各種TCP版本_實作篇(二)

圖片
2.環境建置 A.安裝好Linux環境 這一步的話我就不多贅述了,網路上頗多教學的,例如什麼,如何安裝Ubuntu. Fedora. centos......等, B.安裝好NS2 之前就先拍好影片了,就不多說什麼 C.測試環境安裝正確 其實影片後半段就有了啦... 敝人龜毛了點又多講這段 打開terminal 輸入ns 前面出現%之後 輸入nam 都安裝正確的話會出現這個畫面喔>.= D.本次實驗基本指令 到指定資料夾底下編譯要的檔案與TCP版本 EX:ns filename.tcl tcp_version 編譯沒有問題會出現此圖 開啟新的terminal 輸入gnuplot 在方才編譯好的資料夾底下輸入圖中指令 輸入正確指令且繪製成功的圖表 本次實驗原始碼就上 柯志亨老師的網站找就好 <===超多東西可學的 3.結果圖與分析 A. 觀察TCP Tahoe congestion windows的變化 圖 A-1 Tahoe的CWND變化圖 從A-1圖中我們可以看到TCP的Congestion window的值會呈現週期性的重複變化。TCP Tahoe 開始執行時,先由slow-start(SS)開始,CWND超過ssthresh時進入擁塞避免(CA)階段。由於傳送到網路上的丟包不斷增加,當超出允許能傳送到網路上的個數時,路由器開始使用Drop-Tail演算法將資料包丟掉。當封包遺失時,TCP Tahoe會將ssthresh設為發現封包遺失時的一半,接著將CWND的值設為1。Tahoe重新進入slow-start階段。 B. 觀察TCP Reno congestion windows的變化 圖 B-1 Reno的CWND變化圖 如圖B-1所示,當偵測到封包遺失時,Reno會將ssthresh和CWND的值設為先前CWND值的一半。因此在重送遺失的封包後,TCP Reno會由CA階段開始。由於結束Fast recovery後,Reno的CWND由先前CWND值得1/2開始增加,所以得到的平均吞吐量較Tahoe佳,可由下圖得知。 圖 B-2 Tahoe 與Reno平均吞吐量比較圖 ...

利用NS2軟體模擬各種TCP版本_背景知識篇(一)

圖片
封包運作情況 目錄 1.背景知識 2.環境建置 3.結果圖與分析 4.參考文獻 1.背景知識 A.壅塞控制     一般而言, TCP 的壅塞控制機制主要可分為 slow-start 、 Congestion avoidance 、 Fast retransmission 、 Fast recovery 與 Timeout retransmission 五個階段: 1.   slow-start :也叫做指數增長期,傳送初期或者封包遺失 重傳時整個連線類似於從零開始的狀態,會以指數的方式增長,每收到一個 ACK( 經過一個 RTT) , cwnd 就提升一倍。 2.   Congestion avoidance :當 cwnd 超過 sstresh , TCP 就進入壅塞避免期,在此期間每經過一個 RTT 時間, cwnd 的值才會增加一個 segment ,(一個 segment 通常指一個 MTU 大小)以避免 cwnd 增加太快而導致封包遺失。此時的 cwnd 以線性的方式增加。 3.   Fast restrasmission :當 TCP 源端收到到三個相同的 ACK 副本時,即認為有數據包丟失,則源端重傳丟失的數據包,而不必等待 RTO 超時。同時將 ssthresh 設置為當前 cwnd 值的一半,並且將 cwnd 減為原先的一半。 4.   Fast recovery :當 " 舊 " 數據包離開網路後,才能發送 " 新 " 數據包進入網路,即同一時刻在網路中傳輸的數據包數量是恆定的。如果發送方收到一個重覆的 ACK ,則認為已經有一個數據包離開了網路,於是將擁塞視窗加 1 。 5.   Timeout retransmission :當 RTO 計時器時間滿了之後,就會重新傳送新的封包。 B.TCP Tahoe TCP 早期的版本, Tahoe 具備 TCP 基本架構,包括慢啟動、壅塞避免、重傳狀態。 TCP 在 Tahoe 這版本中加入了快速重傳 (Fast retransmit) 的方法。快速重傳機制是依據重複 (Duplicate) ACKs 作為重送封包的機制,當收到 3 個重複 ...