2014年12月18日 星期四

露點溫度 dewPoint 計算

描述: C:\Users\Lin\Desktop\dewpoint_equation_dewpoint_temperature_00.png

Private Function DewPoint_1(byval T as double ,byval H as double ) as double
  DewPoint_1 = ((H/100) ^ (1/8) ) * ( 112 + (0.9 * T)) + 0.1 * T -112
End Sub
'


There is an easier formula for Dew Point Temp (measured in degrees C) -

Using your example 17.06 degrees C and 31% RH
=((31/100)^(1/8))*(112+(0.9*17.06))+0.1*17.06-112
Result -0.28384 celsius





簡易近似法
當知道乾球溫度、而相對濕度大於50%時,露點可以用下列的公式求得,其誤差值僅為 ±1℃。

Private Function DewPoint_2(byval T as double ,byval H as double ) as double
    DewPoint_2 = T- ( (100-RH) / 5 )
End Sub













露點計算[編輯]
知道相對濕度以及實際氣溫時,露點可以透過以下公式求得近似值:
描述: 
T_d = \frac {b\ \gamma(T,RH)} {a - \gamma(T,RH)}
當中的描述: \gamma則是:
描述: 
\gamma(T,RH) = \frac {a\ T} {b+T} + \ln (RH/100)
溫度 描述: T 和露點 描述: T_d 單位為攝氏、相對濕度 描述: RH 為百分比,描述: ln 則代表自然對數。常數 描述: a 描述: b分別是:
描述: a = 17.27
描述: b = 237.7
此公式是基於 Magnus-Tetens 近似法( Magnus-Tetens Approximation),當中把飽和水氣壓視為溫度的函數。[2]此方法僅在以下範圍時有效:
0描述: T < 60
1% < 描述: RH < 100%
0描述: T_d < 50
ln的底數為e=2.718281...其實ln就等於log e
Private Function DewPoint_3(byval T as double ,byval H as double ) as double
   Dim r_T_RH as double
   r_T_RH =   17.27 * T / ( 237.7 + T)  + ln(H/100)
   DewPoint_3 =( 237.7 * r_T_RH ) / ( 17.27 -  r_T_RH )   
End Sub


2013年8月16日 星期五

亂數建立

http://msdn.microsoft.com/zh-tw/library/system.random.aspx
只要建立單一 Random 物件,而不要建立多個物件,就可以避免這個問題。
為了改善效能,請建立一個 Random 物件,以便在一段時間內產生許多亂數,而不要重複地建立新的 Random 物件來產生一個亂數。

不要一直new Random 要不然抓到的直都會一樣
for i = 0 to 10
 Dim rand As New Random
 num=rand.Next(100, 200)
next
......
這樣 會抓到重複的值
'==========
 Dim rand As New Random
for i = 0 to 10
 num=rand.Next(100, 200)
next

2012年9月19日 星期三

WCF IIS 架設

剛寫好的 WCF 要架設到 IIS 上面 ,發生以下的錯誤

搜尋了google 試了很多方法,最後找到正確的問題
完整的錯誤訊息是:
HTTP 錯誤 404.3 - Not Found 因為延伸組態的問題,而無法提供您要求的網頁。 如果此網頁是指令碼,請新增處理常式。 如果應下載檔案,請新增 MIME 對應。 詳細的錯誤 InformationModule StaticFileModule。
當 [Windows Communication Foundation HTTP 啟動] 未在 [控制台] 中明確設定時,就會發生這個錯誤訊息。 若要進行這項設定,請移至 [控制台],按一下視窗左下角的 [程式集]。 按一下 [開啟或關閉 Windows 功能]。 展開 [Microsoft .NET Framework 3.5.1],並選取 [Windows Communication Foundation HTTP Activation]。

重新安裝好後即可正常執行



還有一些沒遇到的,以後也可以參考這裡



2012年5月14日 星期一

SQLite for PC , for mobile

首先到
下載ADO.net  for sqlite
SQLiteBrowser

在PC 上面操作是沒有什麼問題!


 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim filename As String = Application.StartupPath + "\Test.db3"
        If Not File.Exists(filename) Then
            SQLite.SQLiteConnection.CreateFile(filename)
        End If


        Dim oConn As New SQLiteConnection("Data Source=" + filename)
        Try
            oConn.Open()
            '執行SQL指令
            Dim zSQL As String = vbNullString
            Dim zWord As String = vbNullString
            Dim zDeno As String = vbNullString
            Dim oCmd As SQLiteCommand = Nothing
            zSQL = "CREATE TABLE  IF NOT EXISTS coffees (  F1 TEXT PRIMARY KEY,  F2 TEXT );"
            oCmd = New SQLiteCommand(zSQL, oConn)
            oCmd.ExecuteNonQuery()




            For i = 0 To 4
                zWord = "1234" + CStr(i)
                zDeno = "5678"
                zSQL = "INSERT INTO coffees (F1,F2) VALUES ('" & zWord & "','" & zDeno & "')"
                oCmd = New SQLiteCommand(zSQL, oConn)
                oCmd.ExecuteNonQuery()
            Next


            Label1.Text = "Data inserted ready!!!"
            oCmd.Dispose()
            oConn.Close()
        Catch ex As Exception
            Label1.Text = ex.Message
        End Try
    End Sub

在mobile 
要參考C:\Program Files (x86)\SQLite.NET\bin\CompactFramework\SQLite.Interop.066.DLL
不過在這邊卻踢到鐵板,看了一下錯誤訊息,就自己複製了一個DLL把檔名改成
System.Data.SQLite.dll結果就可以了

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim mypath As String = System.IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase.ToString)
        mypath += "\Test.db3"


        If Not File.Exists(mypath) Then
            SQLiteConnection.CreateFile(mypath)
        End If


        Dim oConn As New SQLiteConnection("Data Source=" + mypath)
        Try
            oConn.Open()
            '執行SQL指令
            Dim zSQL As String = vbNullString
            Dim zWord As String = vbNullString
            Dim zDeno As String = vbNullString
            Dim oCmd As SQLiteCommand = Nothing
            zSQL = "CREATE TABLE  IF NOT EXISTS coffees (  F1 TEXT PRIMARY KEY,  F2 TEXT );"
            oCmd = New SQLiteCommand(zSQL, oConn)
            oCmd.ExecuteNonQuery()


            For i = 0 To 1000
                zWord = "1234" + CStr(i)
                zDeno = "5678"
                zSQL = "INSERT INTO coffees (F1,F2) VALUES ('" & zWord & "','" & zDeno & "')"
                oCmd = New SQLiteCommand(zSQL, oConn)
                oCmd.ExecuteNonQuery()
            Next


        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try


以上兩個code是參考別人網站的,在mobile操作時,要把SQLite.Interop.dll直接複製到mobile裡面。
小歐參考網站



2012年2月6日 星期一

VB.net 建立Access (資料庫 被 鎖定 )


 Private Sub CreateMDB(ByVal Filename As String)
     
        If Not File.Exists(Filename) Then
            Try
                Dim MyCtlog As New ADOX.Catalog
                MyCtlog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Filename + ";Jet OLEDB:Engine Type=5")
                Dim connection As ADODB.Connection = DirectCast(MyCtlog.ActiveConnection, ADODB.Connection)

                If (Not IsDBNull(connection)) Then
                    connection.Close()
                    ' MyCtlog.ActiveConnection = Nothing
                    ' MyCtlog = Nothing
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        End If
    End Sub

2012年2月4日 星期六

MS - SQL 設定 自動 遞增

以前在寫 資料庫的時候都是 下語法
雖然google  都先查到 http://www.1keydata.com/tw/sql/sql.html
不過我比較喜歡去    http://webdesign.kerthis.com/sql/sql_syntax
自動遞增語法
http://webdesign.kerthis.com/sql/sql_auto_increment


CREATE TABLE customers
(
  C_Id INT PRIMARY KEY IDENTITY,
  Name varchar(50),
  Address varchar(255),
  Phone varchar(20)
);
SQL Server預設會由1開始逐列自動遞增(2,3,4...)。
不過您也可以替IDENTITY欄位指定一個起始值與遞增量,語法如下:
將IDENTITY改成「IDENTITY(起始值,遞增量)」
雖然說下語法是滿方便的一件事情,不過要從 SQL Server Management Studio去設定
因為沒摸過找了一下,可能因為太簡單,網路上都沒有說,所以就自己摸索







2012年1月17日 星期二

第一天玩 joomla 的會員功能...Gmail 寄不出去

開發環境
XP SP3
Xampp (C:\xampp\....安裝路徑)



C:\xampp\php.ini裡面的 加入 extension=php_openssl.dll 


害我搞半天,他乃乃的雄,三更半夜搞我,你當我明天不用上班喔


http://www.joomla123.com.tw/site-manage/send-joomla-mail-by-gmail-smtp.html
原廠網址


郵件模式:SMTP

寄件地址: somebody@gmail.com
發件人 名稱:somebody
SMTP認證:
SMTP Security: SSL
SMTP Port: 465
SMTP 用戶名: somebody@gmail.com
SMTP 密碼:**********
SMTP 主機:smtp.gmail.com