Pages - Menu

2016年12月22日 星期四

ReportViwer匯出pdf 或 圖片

     每天定時傳送chart給user,雖然已經寫了前端網站要給使用者查詢,

但卻還是要發送mail…,想了半天,後端要去拉前端的chart實在太難搞了。

最後只有下面四種解法…

2016年12月8日 星期四

List的contains,類似like效果

一般我們要找集合內有沒有特定字串會用

goal.Contains("Date")
但要注意的是,這邊的Date一定要是完整的字串。不屬於like的效果。
但如果想要用like的效果,該如何做?
使用Linq的方式,
var dateFormat = goal.Where(p => p.Contains("Date"))
這樣等同使用like。會將字串內有Date的字取出。
附註:goal是一個字串集合

2016年10月19日 星期三

CSS 顯示圖片的某一個部分

懶得開修圖軟體裁切,
卻又只想顯示圖片的某一部份。

可在圖片外層包一個div。

<div style="width:900px;overflow:hidden;">
<a href='#'><img src='https://xxxxxxx" style="width:900px;margin-top:-100px"/></a>
 </div>


首頁的度估圖片就是利用此方法。因本來的圖片太小,又懶得動手放大,
直接將貼圖的寬度設為900,再利用margin-top 將圖往上移,顯示出想要的區塊

JQuery Flot Chart 設定參數

最近一直在搞圖表,就簡單紀錄一下改過得設定,
避免日後遺忘...

使用的Chart是 Flot Chart
中文教學可以參考 :這邊
API文件:API文件
基本上東西都可以從上面的連結找到,以下做個整理

2016年10月14日 星期五

LinqToExcel的VisitSubQueryExpression錯誤

要使用linq的in語法,
像是sql的
select * from AA where col in (select ….)
可以使用
var ids = {1, 2, 3};

var query = from item in context.items
            where ids.Contains( item.id )
            select item;
來做查詢。
但是一使用LinqToExcel 這樣用舊直接掛了,出現
VisitSubQueryExpression method is not implemented

第一次使用 Typescript,錯誤解決方式

前言:因為看到了Angular 2.0正式版發表,然後該語言支援Typescript,
讓我興起了來學一下好了的念頭,畢竟這也不算是新東西了。
然後就是踩雷的開始。

2016年10月12日 星期三

Blogger範本 及 貼上程式碼區塊

最近把整個改版,以前貼code的語法也不知道跑哪去了。
後來找了一下,發現到很多人用的。
來源:http://chiumog.blogspot.tw/2015/02/blog-code-block.html

CODE {
display: block; /* fixes a strange ie margin bug */
font-family: Courier New;
font-size: 8pt;
overflow:auto;
background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y;
border: 1px solid #ccc;
padding: 10px 10px 10px 21px;
max-height:200px;
line-height: 1.2em;
}


2016年10月6日 星期四

EPPLUS教學範例

本來想寫NPOI,因為最近有用到過。但後來看到黑大介紹EPPLUS
想說這個應該更好用。但最近的工作內容一直沒去碰到Excel。
所幸,有了一個需求,是要用excel的,而且問了網管,
網管說基本上office都是2010了。於是放心大膽的用下去。
在那之前先寫個測試來實做。

2016年10月5日 星期三

windows7從子資料夾列出所有桌布

前言:
         最近迷上了用動畫的人物當桌面的布景,前陣子是科幻的設計圖。
但都同一個種類,所以不用分資料夾。
        但動畫的人物一抓就是一堆,又不小心看到其他看過的喜歡人物,就分資料夾放好了。
依稀記得win7能夠直接抓資料夾底下的圖出來當桌布,
後來發現不是這麼一回事,需要改點東西。

2016年9月8日 星期四

Log4Net 發行後,找不到xml檔

科技始終來自於人類的惰性,
因為不太想要再一個一個檔案搬了,所以就直接使用了clickOnce發行。
發行最怕的是找不到他安裝到哪,所以寫了一小段程式,直接開啟LOG資料夾。

System.Diagnostics.Process.Start("explorer.exe", AppDomain.CurrentDomain.BaseDirectory)
想得很美好,後來發現log4Net的xml檔沒有複製過去,不然就是安裝時變成manifest 的副檔名,無法讀取。解決方法請參考下面。

2016年9月7日 星期三

Linq使用Find找不到 Contains 的解決方式

最近使用Dapper,越用越順手,但今天突然發現一個問題。
以前用 List 可以使用 Find 然後 用 Contains 去尋找相等的字串
(e.g.
Dim _par As savePar = linePar.Find(Function(p) p.LineNo.Contains(RbChecked.Text))
)
但今天怎麼用都用不出來,都是找不到Contains 的關鍵字

2016年8月26日 星期五

LinqtoExcel使用class對應不到excel

前言:
       單純讀取excel的好物,最簡單的使用方式,可參考demo 大大的說明
備忘我卡了老半天不知道是為了什麼的錯誤…

NPOI 複製sheet

前言:
        反正就突然用到了這個東西。就當備忘了。

2016年8月24日 星期三

2016年8月17日 星期三

SignalR安裝

上次裝完後,到現在要重新開發一個新的專案。
然後就又卡關了…
讓我深刻的感覺到筆記的重要性(暈),
網路上的教學一般都是做聊天室,我這邊主要是透過signalR,主動通知網頁做資料的更新(因為再做監控系統,一直load資料庫,效能不太好)。
哪天再把整個監控架構寫成文章了,不知何年何月何日。

2016年8月12日 星期五

Dapper for VB.net(動態欄位取值)

以前一直用自己寫的code撈資料,丟給datatable,在將值撈出來。
前鎮子看到Dapper,不用不知道,用了之後我都在想把我先前寫的code丟去旁邊了。
強型別的好處,當你寫過MVC的人就會知道。
Dapper詳細的介紹可以參考下面幾位大大的說明,
在此不多說,因為同事他看不懂C#,為了讓他日後接手,所以寫應用程式必須用VB。
而網路上Dapper for VB.net 的語法不是很多,所以備忘一下。
mrkt的程式學習筆記
黑暗執行緒
國外寫的C#對應VB.net

程式的同步(Synchronous)與非同步(Asynchronous)的差別

說真的,每次碰到這個都會忘記我到底寫的是非同步還是同步。
實在是很難記。因為這個的解釋,常常跟中文搞混(該說中文博大精深嗎…)。
中文,同時進行(這我們常常當作是同步),但其實是相反的。
同時進行應該是『非同步』,按部就班才是『同步』。
補充:非同步的英文簡寫通常為 async 。

2016年8月10日 星期三

SQLserverCLR-Trigger建立、部屬 快速使用備忘錄(二)

上一篇有寫到如何建立,
但畢竟沒辦法一次就到位,如果你真的能夠一次就寫好,完全不用Debug。
可以讓我拜你為師嗎orz
以下是修改CLR的方式、CLR連接本機資料庫,CLR Tcpclient連線。

SQLserverCLR-Trigger建立、部屬 快速使用備忘錄(一)

CLR簡介:
CLR 中執行的程式碼稱為 Managed 程式碼。 CLR 提供程式執行所需的各種功能及服務,包括 just-in-time (JIT) 編譯、配置及管理記憶體、強制使用型別安全性、例外處理、執行緒管理及安全性。
利用 Microsoft SQL Server 中裝載的 CLR (稱為 CLR 整合),您能夠以 Managed 程式碼撰寫預存程序、觸發程序、使用者定義函式、使用者定義型別及使用者定義彙總。 因為 Managed 程式碼在執行前會編譯成原生程式碼,所以在部分案例中可大幅提升效能。
Managed 程式碼使用程式碼存取安全性 (CAS)、程式碼連結及應用程式定義域,以防止組件執行某些作業。 SQL Server 使用 CAS 協助保護 Managed 程式碼,並防止損害作業系統或資料庫伺服器。
本節的目的是僅提供以 SQL Server CLR 整合進行程式設計快速入門所需的足夠資訊,並未包含廣泛資訊。 如需詳細資訊,請參閱您所使用之 SQL Server 版本的《SQL Server 線上叢書》版本。(摘錄自 微軟

2016年7月22日 星期五

CSS position

太久沒寫css有幾個觀念快忘光了…
補強一下

2016年7月21日 星期四

IEEE754 十六進位轉浮點數

上次有寫到 16進位轉浮點數 的程式寫法。
這次來探討,用手如何計算…

2016年7月20日 星期三

MSSQL 判斷是不是連續數字

在論壇碰到有人問一個問題,
『查詢同一廠商同一料號,如果連續五次無退貨資料就顯示,
但是如果有退貨資料次數就需要重新計算』
這個用到了『判斷是不是連續整數的』用法。

jquery Datatable Ver 1.10 隔行換色

老牌子JQuery的Datatable,雖然我目前都直接用easyUI的datagrid
但如果沒有要用其他東西只要表格的話,我就會直接用datatable了。
今天剛好要用到隔行換色,但找了一下,似乎是版本問題,所以怎麼跑,都沒改。

2016年7月15日 星期五

ASUS VivoStick 使用AD認證,登入網路

灌完win10 pro版本後,有個怪問題。再登入畫面的時候,網路連線一直沒法自動連線。(因為只有wifi)。

2016年7月13日 星期三

ASUS VivoStick 進入BIOS

新出的電腦棒,開箱市面上很多就不上圖了
會要進去bios是因為公司用的需要上到pro版,才能用AD認證。

2016年7月7日 星期四

Ducky 鍵盤拆解,Filco 換軸 紀錄

前因,因為颱風來襲跑去麻豆儲糧,順便外帶火鍋回來吃。
然後........火鍋湯溢出來,我的Ducky鍵盤就遭殃了。
雖然緊急搶救,但還是看的到下面鐵板的部分黏黏的...
於是.....拆解開始。

2016年7月5日 星期二

清除itunes專輯喜好程度

備忘一下,看到itunes裡面的專輯喜好程度,一直無法清除。
就像這樣..
我通常就只有看喜好程度阿阿阿阿.......
給我個灰色的做啥。
拜了拜Google大神,發現這篇
疑,他的怎麼有這個可以選。

2016年7月1日 星期五

MSSQL設定或歸零自動編號(auto_increment)

如果複製資料表資料的話,
到新的db上,會發生此問題。
此時需重新設定識別碼
此語法有三個參數
tableName :資料表名稱
RESEED : 功能名稱(不可變)
newSeed :要設定的識別碼數字

語法

DBCC CHECKIDENT ('tableName', RESEED, NewSeed)


2016年6月27日 星期一

Modbus RTU通訊(1)

前陣子都是寫單純的rs232或rs485的資料讀取(丟個指令,然後收資料)
,或I/O控制,
modbus的通訊,一年多前寫過,然後最近測的時候,完全忘光。
最後終於弄出來,紀錄一下…方便 抄寫 記憶
基本的序列埠開啟關閉就不說了,
如果有不清楚的請自行google。

2016年6月24日 星期五

小說佳句感想(一)

從高中開始看小說,看到現在也奔三的人了,歲月阿。
以前就有習慣把從小說看到的句子摘錄下來,最近重看一本小說『重生之神級敗家子』,
看到一個不錯的句子,想了想,就乾脆來寫個文章紀念第一篇好了。

2016年6月20日 星期一

16進位轉浮數點的方法(VB.net/C#)

最近收到一台儀器要抓裡面的資料,
然後他輸出是16進位,要轉成浮點數。

這邊的簡單算試需要自己去確認是 Big Endian 還是 Little Endian
傳 412C5757進去計算會得出 浮點數

vb.net

    Function Dec3(n As String)
        Dim num As UInt32 = UInt32.Parse(n, System.Globalization.NumberStyles.AllowHexSpecifier)
        Dim floatVals As Byte() = BitConverter.GetBytes(num)
        Dim f As Single = BitConverter.ToSingle(floatVals, 0)
        Return f

    End Function

C#
        String hexString = "43480170";
        uint num = uint.Parse(hexString, System.Globalization.NumberStyles.AllowHexSpecifier);
        Byte[] floatVals = BitConverter.GetBytes(num);
        float f = BitConverter.ToSingle(floatVals, 0);

        Console.WriteLine("float convert = {0}", f);

2016年5月20日 星期五

Google Chrome,前端(javascript)除錯方法

Chrome瀏覽器簡易除錯方式,
本篇圖片眾多,請小心服用。

2016年5月18日 星期三

將chart 轉圖表列印 使用e.Graphics.DrawString

沒想到會有自己手動刻報表的時候,使用winform開發,
要列印報表。需加上chart,本來想使用rdlc作為列印的工作,
但他的chart太陽春了,很多功能做不到,只好拿原本的mschart轉成圖片後塞進去。
刻的過程,通常會寫在printDocument.printPage裡面
先寫幾個常用到的。
1.計算title字串的寬度有多少,把width改成height就是高度了。
e.Graphics.MeasureString(title,New Font("Arial", 24.0F, FontStyle.Bold), e.MarginBounds.Width).Width
2.使用字型的大小去算高度
dim ypos as integer = New Font("Arial", 16.0F, FontStyle.Underline).GetHeight
3.劃線:
先建立筆的顏色、寬度。再來是實線的長度、虛線的長度。
指定線條的種類為自訂,也可以設定實線、虛線
傳入自己設定的虛線陣列。
畫出
Dim LinePen As New Pen(Color.Black, 1)
Dim lineDash As Single() = {10, 2}  '實線長度、虛線長度(loop)
LinePen.DashStyle = Drawing2D.DashStyle.Custom
LinePen.DashPattern = lineDash
e.Graphics.DrawLine(LinePen, New Point(e.MarginBounds.Left, yPos), New PointF(e.MarginBounds.Right, yPos))

4.建立字串\t,拿來對齊使用,vb需使用vbtab,如果在c#可直接使用\t即可。
os:為了讓同事能夠維護只能乖乖寫VB,言下之意就是我遲早會勞跑XD
e.Graphics.DrawString(String.Format("Cpk製程能力總和指數:{0}\t{1}", txtCpk.Text, txtCpkLv.Text).Replace("\t", vbTab), New Font(dg.Font, FontStyle.Bold), Brushes.Black,e.MarginBounds.Left + 261, yPos)
string.format("{1}{0}{2}{0}",a,vbTab,2,vbTab)

5.畫datagrid標題列
For Each GridCol As DataGridViewColumn In dg.Columns
                            e.Graphics.FillRectangle(New SolidBrush(Color.LightGray), New Rectangle(CInt(arrColumnLeft(iCount)),
                                                    iTopMargin, CInt(arrColumnWidth(iCount)), iHeaderHeight))                            e.Graphics.DrawRectangle(Pens.Black, New Rectangle(CInt(arrColumnLeft(iCount)), iTopMargin,
                                                                               CInt(arrColumnWidth(iCount)), iHeaderHeight))

                            e.Graphics.DrawString(GridCol.HeaderText, GridCol.InheritedStyle.Font,
                                                  New SolidBrush(GridCol.InheritedStyle.ForeColor),
                                                  New RectangleF(CInt(arrColumnLeft(iCount)), iTopMargin,
                                                                 CInt(arrColumnWidth(iCount)), iHeaderHeight), strFormat)
                            iCount += 1
                        Next


6.將chart轉成圖檔
'將chart轉成圖檔
            dataChart.DrawToBitmap(bmp, New Rectangle(0, 0, dataChart.Width, dataChart.Height))
            e.Graphics.DrawImage(DirectCast(dest_bmp, Image), e.PageBounds.Left + 20, yPos)

2016年5月17日 星期二

MsChart基本參數設定

很久很久沒用,寫網頁都直接用flotchart了。
偏偏這次是寫winForm只好拿mschart出來刻了。
有幾個重點的備註一下。
在做chart的時候有發現,控制項跟裡面的區域沒有塞滿。
後來才發現是auto的關係,現在強制指定變成95跟94,這是百分比。
要讓X軸從0開始,要設定最小 minimum=0,不然都是從1開始

       dataChart.Series("Series1").Points.Clear()
        dataChart.ChartAreas.Clear()
        dataChart.ChartAreas.Add("ChartArea1")
        Dim arrWT As Decimal() = CommonHelp.GetTypeStd(txtStd.Text)
        Dim intWT_std = arrWT(0), intWT_T = arrWT(1)
        Dim ChtLSL = intWT_std - intWT_T, ChtTGT = intWT_std, ChtUSL = intWT_std + intWT_T
        Dim chartMin = chartRange(intWT_T)(0), chartMax = chartRange(intWT_T)(1)
        '設定MainCht
        With dataChart
           
            .Series("Series1").MarkerStyle = MarkerStyle.Circle
            .ChartAreas(0).AxisX.MajorGrid.Enabled = False
            .ChartAreas(0).AxisY.MajorGrid.Enabled = False
            .ChartAreas(0).AxisX.MajorTickMark.Enabled = False
            .ChartAreas(0).AxisY.MajorTickMark.Enabled = False
            .ChartAreas(0).AxisX.LabelStyle.ForeColor = Color.Black
            .ChartAreas(0).InnerPlotPosition.Auto = True
            .Legends.Clear()
            '最大、最小
            .ChartAreas(0).AxisY.Minimum = ChtLSL - 20
            .ChartAreas(0).AxisY.Maximum = ChtUSL + 20

            '把圖表駔標的左右兩邊空白去除
            .ChartAreas(0).AxisX.IsMarginVisible = True
            .ChartAreas(0).AxisY.IsMarginVisible = True

            'X軸最大的資料點總數
            .ChartAreas(0).AxisX.Maximum = 100
            'X軸從0開始
            .ChartAreas(0).AxisX.Minimum = 0
            .ChartAreas(0).AxisX.Interval = 10

            '塞滿mschart
            .ChartAreas(0).Position.Width = 95
            .ChartAreas(0).Position.Height = 90
            ''Y軸標籤
            'first row are dummy labels to suppress axis numberics
            '.ChartAreas(0).AxisY.CustomLabels.Add(30, 40, "", 0, LabelMarkStyle.LineSideMark)
            .ChartAreas(0).AxisY.CustomLabels.Add(ChtLSL, ChtLSL + 1, "LSL(" & ChtLSL.ToString & ")")  'LSL
            .ChartAreas(0).AxisY.CustomLabels.Add(ChtTGT, ChtTGT + 1, "TGT(" & ChtTGT.ToString & ")")  'TGT
            .ChartAreas(0).AxisY.CustomLabels.Add(ChtUSL, ChtUSL + 1, "USL(" & ChtUSL.ToString & ")")  'USL
            .ChartAreas(0).AxisY.LabelAutoFitStyle = LabelAutoFitStyles.None

            'Set series chart type
            .Series("Series1").ChartType = SeriesChartType.Point
            ''加橫線
            For LineRow As Integer = 1 To 3
                Dim sl1 As StripLine = New StripLine
                sl1.BackColor = Color.Black
                sl1.StripWidth = 0.25
                Select Case LineRow
                    Case 1
                        sl1.IntervalOffset = ChtLSL
                    Case 2
                        sl1.IntervalOffset = ChtTGT
                    Case 3
                        sl1.IntervalOffset = ChtUSL
                End Select
                .ChartAreas(0).AxisY.StripLines.Add(sl1)
            Next
        End With

2016年5月11日 星期三

Sublime Text 3 ,加入右鍵選單

初步的安裝請先參考保哥的文章:這裡
由於習慣了在文件上按右鍵,開啟文件,然後Sublime沒有這個功能,
只好手動自己加了。
首先執行Regedit
路徑為:
image0001
在shell底下建立機碼(此名稱能隨自己意思更換),
但再底下的就必須取名為Command。
再來將值修改成檔案的路徑位置
image0004
記得要加上%1(數字)。好了之後現在按右鍵,就會出現選項了。
但前面沒有icon,沒辦法一眼辨認出來。所以繼續加上ico來用。
在剛剛命名的地方加上 字串值,取名為Icon
數值內容就直接抓你ico的位置。
image0003
完成收工

2016年5月6日 星期五

C# regex 正規表示法,懶人版

最近又需要正規表示法,查了之後才發現,要寫一長串阿…
寫成function方便使用。前面丟『來源字串』,後面丟『規則』。
回傳List<string>。
可使用toArray 轉成陣列後,假如前後有『, 』,可使用 trim(‘,') ,將前後的『,』刪除。

2016年4月25日 星期一

SQLserver日期加總

看到有人問個很好玩的問題,
userA  3min30sec
userB 8min20sec
userC 30sec
算總和

2016年4月24日 星期日

EasyUI datagrid detail 多明細連動,使用onExpandRow

如果只是主表下面拉一層明細(onExpandRow),easyui的官方網站就有介紹了。參考
如果要拉兩層明細,同樣也有介紹( nested subgrid)。參考
但由於第一次寫的時候是使用onExpandRow,懶得重改,就一頭下去了...


2016年4月21日 星期四

moment 筆記

一個javascript專門拿來轉日期時間用的函式庫
來源:moment

2016年4月7日 星期四

ASP.NET Web API 文件產生器-swagger

基本建置,請參考 K大所寫的網站
這邊紀錄一些,我所碰到的其他問題。
在本機測試都正常沒問題,但發行到IIS就一直冒出500的網頁錯誤。

2016年3月11日 星期五

VB 字串16位元轉二進位及其他常用轉換

如果有再跟機器溝通,撈取資料,常常會面臨各種轉換。
但永遠只會用一次後就忘了。此篇作為筆記待日後查詢。

2016年3月10日 星期四

監看Linq、Sql parameter 的方法

以往要看linq所產生的語法要麻是用第三方軟體,
不然就準備開 SQL Server  Profiler,看到底丟過去的是哪些資料。
剛在論壇亂逛時發現有人提供了一套不錯的軟體,省眼力、快速、方便。
不用再看Sql server profiler了,說真的我看不懂。
ExpressProfiler

2016年3月9日 星期三

Excel下拉選單圖片

某個下午接到電話,問說有沒有辦法做下拉圖片選單,雖然我是MES跟他要問的問題關係沒很大。找了一下發現要直接在下拉選單上面直接拉圖片沒辦法,excel做不到(web可以沒問題,我很想跟他說我幫你改弄成web畫面好了),只能使用折衷的方案,前面選擇文字後,後面帶出圖片。
參考網址:Here

2016年2月26日 星期五

Visual Stdio 2015 順手參數設定

個人比較常用的快捷鍵,以後有再慢慢增加了。
不過基本這三個就很好用。
 名稱 快捷鍵
 編輯,註解選取範圍 Ctrl+Q
編輯,取消註解選取範圍 Ctrl+W
 編輯,選取目前文字 Ctrl+Num 1
 這個說明一下,只適用於游標移過去後,會反白的單字,
字串沒辦法使用,當然要使用滑鼠點兩下也行,只是不太順手,改到一半還要去摸滑鼠。

2016年2月16日 星期二

使用Flot selection以及axlabel導致圖面縮小

來源:Flotchart
API文件:文件
當需要對圖表放大時,會載入jquery.flot.selection.js
但同時又想要使用axislabel顯示單位。
造成的情況,本來不知道是axislabel所導致,因先前使用沒有任何問題。

原始圖

圖面縮小


2016年1月14日 星期四

ajax傳值給web api,加號被吃掉.

公司的產線剛好就好死不死的存在資料庫的名稱就叫做 1-,1+,2-,2+
前輩這樣弄,小弟也只能乖乖照他的方式。