2018年2月27日 星期二

CentOS 7 Minimal 版本基本設定

安裝環境為 Oracle VM VirtualBox
=============================================
  設定開機啟動網卡
=============================================
/etc/sysconfig/network-scripts
vi ifcfg-enp0s3
# edit ONBOOT=yes   <-- 改為 yes
=============================================
  更新系統及常用套件
=============================================
更新系統:yum -y update
常用套件:yum install vim wget net-tools epel-release
=============================================
  時區設定
=============================================
# Timezone
查看所有時區:
# timedatectl list-timezones
設定時區區域:
# timedatectl set-timezone Asia/Taipei
與NTP server同步:
# timedatectl set-ntp yes
=============================================
  安裝 telnet
=============================================
yum install telnet-server.x86_64
yum install telnet.x86_64
yum install xinetd.x86_64
yum install xinetd

安裝完成後,將xinetd服務加入開機自啟動:
# systemctl enable xinetd.service
將telnet服務加入開機自啟動:
# systemctl enable telnet.socket
最後,啟動以上兩個服務即可:
# systemctl start telnet.socket
# systemctl start xinetd(或service xinetd start)
如果還不能Telnet關閉防火墻
systemctl start firewalld.service #啟動firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動

* 注意: 使用 PuTTY SSH 連線 telnet
====================================
  增加使用者
====================================
adduser e1
passwd e1
=============================================
安裝網路設定命令工具(非必要)
=============================================
#系統設定套件 - setup 工具包
yum -y install setuptool
#系統設定套件 - 服務套件
yum -y install ntsysv
#系統設定套件 - 網路管理
yum -y install system-config-network-tui
#系統設定套件 - 防火牆設定
yum -y install system-config-firewall-tui
#系統設定套件 - 安全性設定
yum -y install system-config-securitylevel-tui

=============================================
立即手動更新所有預先安裝的軟件
yum -y update
自動執行指令
yum -y install cronie
yum -y install yum-cron

systemctl start crond
systemctl start yum-cron
==============================================

2017年10月19日 星期四

Dapper 查詢結果轉 DataTable

手上某專案使用了GrapeCity的Spread for WinForm,使用Dapper查詢資料,得到結果後使用 foreach 方式一筆一筆填入。資料不大的話就相安無事,執行速度也可以接受。但是,就是有支關鍵的WinFom為了快速顯示,使用了DataAdapter轉DataTable,只好 Google Dapper 和 DataTable 的資料,並沒有查到可以直接轉出到DataTable,在下運氣好,在日本的某個論壇有個專家解了,方式如下,請放煙火後享用。

dt = new DataTable();
dt.Load(db.ExecuteReader(sql, new { })); 

2017年3月5日 星期日

[VisualBox] 無法共用剪貼簿

VisualBox 是 Oracle 佛心來給眾生免費使用的虛擬主機程式,就像是 MS 的 Hyper-V 功能一樣。一直使用這個軟體二、三年了,作測試或是作開發環境都很正常,但 VisualBox 無法共用剪貼簿的問題困擾我好久,算是這個問題不大,心裡就是湊合著用就用,等到每次要用到剪下、貼上時嘴巴就哼個二聲,說這個軟體真爛。

而昨天我就真的認真了,直接上 Stack overflow 找答案,原來只要安裝 Guest Additions CD 就可以啟用「共用剪貼簿」了,Guest Additions CD 的映像檔就在以下的第二張圖哦,請安心服用。

image

 

image

2017年2月22日 星期三

[VBA] 自動化產生圖表 (Chart)

實際運作擷圖

VGA-Chart

第一次在部落格中記錄 VBA 程式,因為最近有個需求,來源是客戶每週有個重要任務:整理公司的生產統計資料並產生多種不同圖表於 Weekly review會議中報告,而這些圖表包含有 Pie、Line圖等。
客戶久而久之發現整理這些資料很花時間,重覆性很高,聽別人說有 Excel VBA ,可以將原本手動的工作改為程式處理,以後只要執行程式就可以自動產生出圖表。沒錯,這個客戶的觀念非常正確,Excel VBA 就是這樣好用,如果你是Excel的重度使用者,常常有一些計算或是統計的任務或許可以考慮將這些工作交由程式處理,以自動化的方式處理。那你省下來的時間呢?當然是去作更重要的事情啦!
image 

以下是這次 VBA 的部份程式,我擷取部份精華下來作為記錄也分享給大家。
image
image
第1部份:原始資料(Raw data) 產生樞紐分析表
'=====================================================
'2.Create Pivot table
'=====================================================
'Where do you want Pivot Table to start?
StartPvt = shtName & "!" & Range("A2").Address(ReferenceStyle:=xlR1C1)
'Create Pivot Cache from Source Data
Set pvtCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=SrcData)
'Create Pivot table from Pivot Cache
Set PT = pvtCache.CreatePivotTable(TableDestination:=StartPvt, TableName:="PivotTable" & shtName)
  
'在新的PivotTable上設置欄位
With PT
'欄
    .PivotFields("Region").Orientation = xlRowField
'資料
    .PivotFields("NO").Orientation = xlDataField
'可以設定各欄位的顯示與否
    With .PivotFields("Page Two.RMA Region")
        .PivotItems("(blank)").Visible = False
    End With
End With
'建立樞紐分析表會顯示出其命令列, 關掉它
Application.CommandBars("PivotTable").Visible = False
第2部份:樞紐分析表轉為 Pie 圖表
'=====================================================
'3.Create Chart
'=====================================================
Set objChart = Charts.Add
With objChart
    .ChartType = xlPie
    .SetSourceData Source:=Sheets(shtName).Range, PlotBy:=xlColumns
    .Location Where:=xlLocationAsObject, Name:=shtName
End With
'Chart 定位, 大小
With ActiveChart.Parent
    .Left = 200
    .Top = 50
    .Width = 450
    .Height = 350
End With
'DataLabel 及 Title
With ActiveChart
    .HasTitle = True
    .ChartTitle.Text = "By Region"
    .ApplyDataLabels xlDataLabelsShowPercent
    .SeriesCollection(1).DataLabels.NumberFormat = "##0.00%"
End With
第3部份:Pie 圖表匯出到 PowerPoint,以下這段程式碼是由 G 大神來的
Sub ChartsToPresentation()
' Set a VBE reference to Microsoft PowerPoint Object Library
Dim PPT As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim PresentationFileName As Variant
Dim SlideCount As Long
Dim iCht As Integer
' Reference existing instance of PowerPoint
Set PPApp = GetObject(, "Powerpoint.Application")
' Reference active presentation
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewSlide
For iCht = 1 To ActiveSheet.ChartObjects.Count
' copy chart as a picture
ActiveSheet.ChartObjects(iCht).Chart.CopyPicture _
Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
' Add a new slide and paste in the chart
SlideCount = PPPres.Slides.Count
Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutBlank)
PPApp.ActiveWindow.View.GotoSlide PPSlide.SlideIndex
With PPSlide
' paste and select the chart picture
.Shapes.Paste.Select
' align the chart
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True
End With
Next
' Clean up
Set PPSlide = Nothing
Set PPPres = Nothing
Set PPApp = Nothing
End Sub

完整程式及測試檔案
https://drive.google.com/open?id=0B0pY4dpq6q9WZVZtZ21fbWNfMEU

2017年2月20日 星期一

[FB] 粉絲專頁管理員

剛在 FB 上花了十分鐘找不到粉絲專頁管理員的設定,趕快記下來免得下回又找不到了。

image

2016年7月1日 星期五

Access 2007 開啟時只顯示表單

客戶需求:
一般使用者進入 Access 2007 只顯示表單(Form),將資料表隱藏起來,並且無法直接存取資料表(Table)。避免一般使用者直接更改資料表內容。

經過 Google 查詢國內外的資料,確認只要加上以下的 code 於VBA程式碼,再重新啟動就看不到表單之外的資料。那開發人員或是管理者呢?處理方式為開啟Access檔案時,按下 Shift 鍵就會跳過以下程序。

Sub SetStartupProperties()
Const DB_Text As Long = 10
Const DB_Boolean As Long = 1
    ChangeProperty "StartupForm", DB_Text, "首頁"  ‘修改為啟動表單頁
    ChangeProperty "StartupShowDBWindow", DB_Boolean, False
    ChangeProperty "StartupShowStatusBar", DB_Boolean, False
    ChangeProperty "StartupMenuBar", DB_Boolean, False
    ChangeProperty "AllowShortcutMenus", DB_Boolean, False
    ChangeProperty "AllowBuiltInToolbars", DB_Boolean, False
    ChangeProperty "AllowFullMenus", DB_Boolean, False
    ChangeProperty "AllowBreakIntoCode", DB_Boolean, False
    ChangeProperty "AllowSpecialKeys", DB_Boolean, True
    ChangeProperty "AllowBypassKey", DB_Boolean, True
   
    DoCmd.ShowToolbar "Ribbon", acToolbarNo
    DoCmd.ShowToolbar "Status Bar", acToolbarNo
    DoCmd.NavigateTo "acNavigationCategoryObjectType"
    DoCmd.RunCommand acCmdWindowHide
   
End Sub

Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
    Dim dbs As Object, prp As Variant
    Const conPropNotFoundError = 3270

    Set dbs = CurrentDb
    On Error GoTo Change_Err
    dbs.Properties(strPropName) = varPropValue
    ChangeProperty = True

Change_Bye:
    Exit Function

Change_Err:
    If Err = conPropNotFoundError Then ' 找不到屬性。
     Set prp = dbs.CreateProperty(strPropName, _
     varPropType, varPropValue)
     dbs.Properties.Append prp
     Resume Next
    Else
     ' 未知的錯誤。
     ChangeProperty = False
     Resume Change_Bye
    End If
End Function