Linux:Ubuntu 14.04
1.安裝samba
$ sudo apt-get samba
2.設定使用者登入samba的密碼
$ sudo smbpasswd -a youraccount
我使用與登入系統相同的帳號來登入samba,先輸入root的密碼,再輸入兩次youraccount密碼。
3.設定分享資料夾權限
假設你要分享的資料夾是 /home/youraccount/movie,則
$ cd /home/youraccount
$ mkdir movie
$ sudo chmod 755 movie
如果是其他位置的資料夾,要看有沒有權限存取,否則分享後看得到,但可能無法讀寫。
4.設定samba config
$ sudo gedit /etc/samba/smb.conf
加入以下設定
//----------add in to smb.conf as below----------//
[movie]
comment=favory movie
path=/home/youraccount/movie
browseable=yes
writable=yes
read only=no
force user=youraccount
force group=youraccount's group
create mode =0777
directory mode=0777
//--------------------end--------------------//
6.重啟samba服務
$ sudo service smbd restart
7.從windows端存取samba分享的movie資料夾
開啟檔案總管,在網址列打入\\ubuntu's ip\movie\
理論上這樣就成功囉~
參考:
鳥哥 SAMBA
程式寫的好,要飯要到老
2018/03/29
2013/12/20
VMware Bridged類型網卡不通
小弟在本機上先安裝了virtual box,並自動產生了virtual box所需的網路橋接裝置-->VirtualBox Host-Only Network,
其後又安裝了另外一套VMware workstation,並在VMware下建立了Guest OS(Fedora),
在GuestOS的Network Connection當中,設置為Bridged,以便於網路上的其他主機能直接存取Fedora,
Fedora的network settingk則是使用static ip的方式,
剛開始使用一切都正常,直到有天關機後再開啟,才發現Fedora無法對外連線,
但是VMware底下的其他Guest OS 只要是使用NAT的方式都能正常連線,唯獨bridge有問題,
查了一下才發現原理是這樣的--->
VMware安裝完後,會生成三個網路橋接裝置,分別為VMnet0,VMnet1,VMnet8(詳細請自己搜尋),
其中Bridged模式走的是VMnet0,此橋接裝置會將Guest OS的網卡導到Host實體機器的網卡上,
但是若實體機器有多張網卡時,則會依照設定值決定導到哪一張實體網卡上,
設定值有兩種:Automatic or 某一張實體網卡,
我在VMware安裝完後從未進來設定過,其預設值為Automatic,
But!!!VMware 將 VirtualBox Host-Only Network 也當作是實體網卡!!!
所以導致Fedora or Guest OS 不管怎麼修改設定,都無法連到真正的實體網路~~~><~~~
所以,解決方法就是
1.進入VMware Network Editor->點選VMnet0-->下方WMnet Information-->在Bridged to的下拉式選單中選擇一張實體網卡!
或是
2.右方的 Automatic Settings內,將VirtualBox Host-Only Ethernet Adapter的勾選取消,Bridged to的下拉選單仍維持 "Automatic"
搞定,收工!
ref: VMWare虛擬機Bridged類型網卡ping不通的原因和解決辦法
其後又安裝了另外一套VMware workstation,並在VMware下建立了Guest OS(Fedora),
在GuestOS的Network Connection當中,設置為Bridged,以便於網路上的其他主機能直接存取Fedora,
Fedora的network settingk則是使用static ip的方式,
剛開始使用一切都正常,直到有天關機後再開啟,才發現Fedora無法對外連線,
但是VMware底下的其他Guest OS 只要是使用NAT的方式都能正常連線,唯獨bridge有問題,
查了一下才發現原理是這樣的--->
VMware安裝完後,會生成三個網路橋接裝置,分別為VMnet0,VMnet1,VMnet8(詳細請自己搜尋),
其中Bridged模式走的是VMnet0,此橋接裝置會將Guest OS的網卡導到Host實體機器的網卡上,
但是若實體機器有多張網卡時,則會依照設定值決定導到哪一張實體網卡上,
設定值有兩種:Automatic or 某一張實體網卡,
我在VMware安裝完後從未進來設定過,其預設值為Automatic,
But!!!VMware 將 VirtualBox Host-Only Network 也當作是實體網卡!!!
所以導致Fedora or Guest OS 不管怎麼修改設定,都無法連到真正的實體網路~~~><~~~
所以,解決方法就是
1.進入VMware Network Editor->點選VMnet0-->下方WMnet Information-->在Bridged to的下拉式選單中選擇一張實體網卡!
或是
2.右方的 Automatic Settings內,將VirtualBox Host-Only Ethernet Adapter的勾選取消,Bridged to的下拉選單仍維持 "Automatic"
搞定,收工!
ref: VMWare虛擬機Bridged類型網卡ping不通的原因和解決辦法
2013/11/21
[MFC] TreeCtrl使用問題
前提:TreeCtrl需帶有 "Check Boxes"屬性
問題一:
OnInitDialog時,在treectrl內新增item後,需要將此項目的checkbox勾選,但是SetCheck卻無效?
回答一:
若要在初始化時期就設定treectrl's check box狀態,且在UI上表現出來,需在設定check box前,重新設定一次tree ctrl屬性!
若是在OnInitDialog以後的function內設定treectrl's check box,則無此問題。
問題二:
當勾選/取消溝選Tree上任一Item後,要如何自動選擇目前的Item,而非總是選擇第一個Item?
回答二:
需要在Click事件動手腳!
方法1:
方法2:
方法1知道原理的朋友,歡迎留言解釋一下,感恩!
問題一:
OnInitDialog時,在treectrl內新增item後,需要將此項目的checkbox勾選,但是SetCheck卻無效?
回答一:
若要在初始化時期就設定treectrl's check box狀態,且在UI上表現出來,需在設定check box前,重新設定一次tree ctrl屬性!
若是在OnInitDialog以後的function內設定treectrl's check box,則無此問題。
BOOL TestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//TODO:
mTreectrl.ModifyStyle( TVS_CHECKBOXES, 0 );
mTreectrl.ModifyStyle( 0, TVS_CHECKBOXES );
//在這之後新增的item就可以設定check box為有勾選狀態
HTREEITEM hCurItem = mTreectrl.InsertItem("Test");
mTreectrl.SetCheck(hCurItem,true);
}
問題二:
當勾選/取消溝選Tree上任一Item後,要如何自動選擇目前的Item,而非總是選擇第一個Item?
回答二:
需要在Click事件動手腳!
方法1:
void TestDlg::OnNMClickTree(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此加入控制項告知處理常式程式碼
*pResult = 0;
//不正當寫法
//copy from OnTvnSelchangedTree
LPNMTREEVIEW pNMTreeView = reinterpret_cast(pNMHDR);
// pNMTreeView->ptDrag; //此point無法直接換算取得目前點擊的Item
CPoint pt;
pt.x = pNMTreeView->ptDrag.y; // 此point位置無法理解.
pt.y = pNMTreeView->itemNew.lParam; // 此point位置無法理解.
HTREEITEM hCurItem = mTreectrl.HitTest(pt);
if(hCurItem == NULL)
return;
//CString szText = mTreectrl.GetItemText(hCurItem);//驗證用,非必須.
mTreectrl.SelectItem(hCurItem);
}
方法2:
void TestDlg::OnNMClickTree(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此加入控制項告知處理常式程式碼
*pResult = 0;
//正常寫法
CPoint pt;
GetCursorPos(&pt);
mTreectrl.ScreenToClient(&pt);
HTREEITEM hCurItem = mTreectrl.HitTest(pt);
if(hCurItem == NULL)
return;
//CString szText = mTreectrl.GetItemText(hCurItem);//驗證用,非必須.
mTreectrl.SelectItem(hCurItem);
}
方法1知道原理的朋友,歡迎留言解釋一下,感恩!
2013/08/29
[VC]GDI+繪圖
上次寫了一個GDI+做漸層效果,今天要再用就忘了一些步驟,所以把整個流程寫上來。
Step1.在stdafx.h中加入GDI+的Header file
Step2.在CWinApp中加入成員變數
Step3.至此,你的程式即可開始使用GDI+囉~
Step4.程式結束前,需釋放GDI+資源,請在CWinApp::ExitInstance()中加入:
以小弟需求來說--->漸層<---以下程式碼請參考:
ref:CodeProject_GDI+
ref:MSDN_GDI+
Step1.在stdafx.h中加入GDI+的Header file
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
Step2.在CWinApp中加入成員變數
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
在CWinApp::InitInstance()中初始化GDI+資源
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Step3.至此,你的程式即可開始使用GDI+囉~
Step4.程式結束前,需釋放GDI+資源,請在CWinApp::ExitInstance()中加入:
GdiplusShutdown(gdiplusToken);
以小弟需求來說--->漸層<---以下程式碼請參考:
/*****MyClass.h*****/
class CMyClass:public CWnd
{
DECLARE_DYNAMIC(CMyClass)
public:
CMyClass();
virtual ~CMyClass();
protected:
afx_msg void OnPaint();
private:
Gdiplus::PointF m_gdiPoint1,m_gdiPoint2;
Gdiplus::Color m_gdiColor1,m_gdiColor2;
};
/*****MyClass.cpp*****/
CMyClass::CMyClass()
{
vm_gdiPoint1 =PointF(0,0);
vm_gdiPoint2 =PointF(0,18);
vm_gdiColor1 =Color(255,255,255);
vm_gdiColor2 =Color(0,0,0);
}
void CMyClass::OnPaint()
{
CPaintDC dc(this);
CRect rcBar;
GetClientRect(&rcBar);
//GDI+
Gdiplus::LinearGradientBrush gdiBrush(m_gdiPoint1,m_gdiPoint2,m_gdiColor1,m_gdiColor2);
Gdiplus::RectF gdiRc((Gdiplus::REAL)rcBar.left,(Gdiplus::REAL)rcBar.top, (Gdiplus::REAL)rcBar.Width(),(Gdiplus::REAL)rcBar.Height());
Graphics grThis(dc.m_hDC);
grThis.FillRectangle( &gdiBrush, gdiRc);
}
ref:CodeProject_GDI+
ref:MSDN_GDI+
訂閱:
文章 (Atom)