' Evaluate the expression.
Private Function EvaluateExpression(ByVal expression As _
String) As Double
Dim expr As String
Dim is_unary As Boolean
Dim next_unary As Boolean
Dim parens As Integer
Dim expr_len As Integer
Dim ch As String
Dim lexpr As String
Dim rexpr As String
Dim status As Long
Dim best_pos As Integer
Dim best_prec As Precedence
' Remove all spaces.
expr = expression.Replace(" ", "")
expr_len = Len(expr)
If expr_len = 0 Then Return 0
' If we find + or - now, it is a unary operator.
is_unary = True
' So far we have nothing.
best_prec = Precedence.None
' Find the operator with the lowest precedence.
' Look for places where there are no open
' parentheses.
For pos As Integer = 0 To expr_len - 1
' Examine the next character.
ch = expr.Substring(pos, 1)
' Assume we will not find an operator. In
' that case, the next operator will not
' be unary.
next_unary = False
If ch = " " Then
' Just skip spaces. We keep them here
' to make the error messages easier to
ElseIf ch = "(" Then
' Increase the open parentheses count.
parens += 1
' A + or - after "(" is unary.
next_unary = True
ElseIf ch = ")" Then
' Decrease the open parentheses count.
parens -= 1
' An operator after ")" is not unary.
next_unary = False
' If parens < 0, too many ')'s.
If parens < 0 Then
Throw New FormatException( _
"Too many close parentheses in '" & _
expression & "'")
End If
ElseIf parens = 0 Then
' See if this is an operator.
If ch = "^" Or ch = "*" Or _
ch = "/" Or ch = "\" Or _
ch = "%" Or ch = "+" Or _
ch = "-" _
Then
' An operator after an operator
' is unary.
next_unary = True
' See if this operator has higher
' precedence than the current one.
Select Case ch
Case "^"
If best_prec >= Precedence.Power _
Then
best_prec = Precedence.Power
best_pos = pos
End If
Case "*", "/"
If best_prec >= Precedence.Times _
Then
best_prec = Precedence.Times
best_pos = pos
End If
Case "\"
If best_prec >= Precedence.IntDiv _
Then
best_prec = Precedence.IntDiv
best_pos = pos
End If
Case "%"
If best_prec >= Precedence.Modulus _
Then
best_prec = Precedence.Modulus
best_pos = pos
End If
Case "+", "-"
' Ignore unary operators
' for now.
If (Not is_unary) And _
best_prec >= Precedence.Plus _
Then
best_prec = Precedence.Plus
best_pos = pos
End If
End Select
End If
End If
is_unary = next_unary
Next pos
' If the parentheses count is not zero,
' there's a ')' missing.
If parens <> 0 Then
Throw New FormatException( _
"Missing close parenthesis in '" & _
expression & "'")
End If
' Hopefully we have the operator.
If best_prec < Precedence.None Then
lexpr = expr.Substring(0, best_pos)
rexpr = expr.Substring(best_pos + 1)
Select Case expr.Substring(best_pos, 1)
Case "^"
Return _
EvaluateExpression(lexpr) ^ _
EvaluateExpression(rexpr)
Case "*"
Return _
EvaluateExpression(lexpr) * _
EvaluateExpression(rexpr)
Case "/"
Return _
EvaluateExpression(lexpr) / _
EvaluateExpression(rexpr)
Case "\"
Return _
CLng(EvaluateExpression(lexpr)) \ _
CLng(EvaluateExpression(rexpr))
Case "%"
Return _
EvaluateExpression(lexpr) Mod _
EvaluateExpression(rexpr)
Case "+"
Return _
EvaluateExpression(lexpr) + _
EvaluateExpression(rexpr)
Case "-"
Return _
EvaluateExpression(lexpr) - _
EvaluateExpression(rexpr)
End Select
End If
' If we do not yet have an operator, there
' are several possibilities:
'
' 1. expr is (expr2) for some expr2.
' 2. expr is -expr2 or +expr2 for some expr2.
' 3. expr is Fun(expr2) for a function Fun.
' 4. expr is a primitive.
' 5. It's a literal like "3.14159".
' Look for (expr2).
If expr.StartsWith("(") And expr.EndsWith(")") Then
' Remove the parentheses.
Return EvaluateExpression(expr.Substring(1, _
expr_len - 2))
Exit Function
End If
' Look for -expr2.
If expr.StartsWith("-") Then
Return -EvaluateExpression(expr.Substring(1))
End If
' Look for +expr2.
If expr.StartsWith("+") Then
Return EvaluateExpression(expr.Substring(2))
End If
' Look for Fun(expr2).
If expr_len > 5 And expr.EndsWith(")") Then
' Find the first (.
Dim paren_pos As Integer = expr.IndexOf("(")
If paren_pos > 0 Then
' See what the function is.
lexpr = expr.Substring(0, paren_pos)
rexpr = expr.Substring(paren_pos + 1, expr_len _
- paren_pos - 2)
Select Case lexpr.ToLower
Case "sin"
Return Math.Sin(EvaluateExpression(rexpr))
Case "cos"
Return Math.Cos(EvaluateExpression(rexpr))
Case "tan"
Return Math.Tan(EvaluateExpression(rexpr))
Case "sqrt"
Return Math.Sqrt(EvaluateExpression(rexpr))
Case "factorial"
Return Factorial(EvaluateExpression(rexpr))
' Add other functions (including
' program-defined functions) here.
End Select
End If
End If
' See if it's a primitive.
If m_Primatives.Contains(expr) Then
' Return the corresponding value,
' converted into a Double.
Try
' Try to convert the expression into a value.
Dim value As Double = _
Double.Parse(m_Primatives.Item(expr).ToString)
Return value
Catch ex As Exception
Throw New FormatException( _
"Primative '" & expr & _
"' has value '" & _
m_Primatives.Item(expr).ToString & _
"' which is not a Double.")
End Try
End If
' It must be a literal like "2.71828".
Try
' Try to convert the expression into a Double.
Dim value As Double = Double.Parse(expr)
Return value
Catch ex As Exception
Throw New FormatException( _
"Error evaluating '" & expression & _
"' as a constant.")
End Try
End Function
' Return the factorial of the expression.
Private Function Factorial(ByVal value As Double) As Double
Dim result As Double
' Make sure the value is an integer.
If CLng(value) <> value Then
Throw New ArgumentException( _
"Parameter to Factorial function must be an " & _
"integer in Factorial(" & _
Format$(value) & ")")
End If
result = 1
Do While value > 1
result = result * value
value = value - 1
Loop
Return result
End Function
Minggu, 02 Agustus 2009
Evaluate string expression
Diposting oleh Vampire Site di 22.21 0 komentar
Label: .NET, MS Visual Studio .NET, Programming, VB
Evaluate string expression C#
public static double Evaluate ( string expression )
{
// That is some code instruction, is'nt it? :)
return (double) new System.Xml.XPath.XPathDocument
( new StringReader("
( string.Format("number({0})", new
System.Text.RegularExpressions.Regex(@"([\+\-\*])")
.Replace(expression, " ${1} ")
.Replace("/", " div ")
.Replace("%", " mod ") ) );
}
Diposting oleh Vampire Site di 22.19 0 komentar
Label: .NET, C#, MS Visual Studio .NET, Programming
Jumat, 31 Juli 2009
Mengurus Visa USA
From : http://www.zikri.com/2008/01/08/mengurus-visa-amerika-serikat/
....
Seperti halnya mengurus visa di semua kedutaan besar negara-negara lain, pemohon harus memulai proses dengan membuat jadwal interview. Untuk Amerika Serikat, permohonan pembuatan janji jadwal interview bisa dilakukan lewat email atau telpon (sepertinya lebih baik lewat email) (update: sekarang harus dilakukan secara online lewat situs web Kedubes AS). Lihat keterangan alamat email dan/atau nomor telpon pada situs U.S. Embassy – Jakarta di link ini. Sebutkan nama lengkap dan nomor paspor anda, sebutkan tujuan utama/jenis visa yang ingin diperoleh (kunjungan wisata, sosial, bisnis atau bahkan migran). Sebutkan pula hari/tanggal yang anda inginkan. Sepengetahuan saya, kapan pun tanggal yang anda minta selalu di-amini, kecuali tanggal tersebut adalah hari libur (termasuk hari libur nasional di Amerika Serikat). Pada tanggal tersebut, anda diminta untuk datang pagi hari jam 07.00. Beberapa orang malah sudah berdiri di tempat antrian sejak sebelum jam 6 pagi! Pintu masuknya sendiri baru mulai dibuka pada pukul 08.00. Yang perlu diingat, loket kasir tutup pukul 10.00.
Sejak akhir tahun 2005, pemerintah Amerika Serikat mengharuskan semua pemohon untuk menggunakan formulir aplikasi pendaftaran elektronik (formulir DS-156) yang diisi di situs web yang telah disediakan. Formulir ini bisa diisi pada halaman web ini. Cetak dan bawa formulir yang sudah diisi dan mendapatkan barcode dari web ini ketika anda hendak mengantri di kedutaan. Tanpa membawa paspor dan formulir, anda tidak akan dilayani. Jangan lupa pula menyertakan pas foto berukuran 5×5. Ada standar ukuran khusus yang telah ditetapkan. Jangan asal 5×5. Amannya, katakan pada studio foto tempat anda hendak membuat pas foto, bahwa anda hendak membuat visa Amerika Serikat. Jika dia tidak mengerti, tinggalkan. Cari saja studio foto yang lain. Di Jakarta banyak studio yang paham koq. Apalagi di sekitar Jalan Sabang, jelas-jelas mereka memajang tulisan “Terima pas foto visa U.S.”.
Antrian pertama yang harus dilalui di depan ini adalah antrian untuk masuk ke area ring terluar dari kedutaan. Selain akan diperiksa kelengkapan dokumen standar dan diperiksa bahwa nama anda benar-benar ada di dalam daftar pemohon, tentunya barang bawaan anda pun akan diperiksa. Demi kenyamanan anda sendiri, sangat amat tidak disarankan membawa barang-barang yang tidak perlu (termasuk jaket). Karena selain repot membawanya, anda pun akan berkali-kali melewati proses pemeriksaan.
Setelah masuk ke dalam pagar, anda akan bertemu lagi dengan antrian yang kedua. Antrian ini menuju loket kasir, di mana anda harus membayar uang administrasi. Loket kas hanya menerima pembayaran dalam bentuk rupiah. Selama ini besarnya adalah USD 100 (yang di-rupiah-kan menjadi Rp 900.000,00). Tapi yang saya baca di surat kabar beberapa waktu yang lalu, per tahun 2008 ini terjadi kenaikan biaya menjadi USD 131 (saya belum mengetahui nominalnya dalam rupiah). Diterima atau tidak diterimanya aplikasi visa anda, say goodbye to your money. Kasir akan dengan riang gembira menerima uang anda, tidak perduli apakah formulir anda lengkap atau tidak, benar semua atau masih ada salah. Kasir akan memberikan nomor regu (panggilan interview akan dilakukan secara berkelompok, beberapa orang sekaligus).
Antrian yang ketiga adalah antrian untuk memasuki ring yang lebih dalam lagi di lingkungan kedutaan. Di sini anda harus melewati metal detector. Semua barang elektronik harus ditinggalkan di meja security — tidak terkecuali flash disk! Saya yang ketika itu menggunakan safety shoes standar lingkungan pertambangan (yang di bagian depannya terdapat logam yang melindungi bagian atas jari kaki) dipaksa melepas sepatu dan secara khusus sepatunya melalui scanner. Sesekali terlihat tentara berseragam pakaian dinas lapangan lengkap berjalan mondar-mandir. Benar-benar tentara bule, berseragam loreng gurun, berwajah tegang dan dingin menyandang senjata otomatis dalam posisi standby.
Setibanya di dalam, kita kembali mengantri. Kali ini bisa duduk. Tunggu nomor kelompok anda dipanggil. Regu yang dipanggil akan memasuki sebuah ruangan. Lagi-lagi antri lagi. Duduk-duduk lagi. Di dalam terdapat beberapa loket kaca yang membatasi antara pemohon dan peng-interview. Perhatikan di sini, jika si pemohon mendapatkan kembali paspornya, itu artinya dia gagal. Jika yang diterima adalah sepotong kertas putih, itu artinya dia hampir pasti akan mendapatkan visanya (kecuali tiba-tiba ada hal luar biasa yg membuat dia gagal).
....
Diposting oleh Vampire Site di 02.59 0 komentar
Prosedur membuat passpor di Jakarta
Yang harus dipersiapkan adalah :
- Fotocopy KTP
- Fotocopy Ijazah ( untuk yang ingin melanjutkan study )
- Asli Surat Referensi Kantor Sebagai SPonsor
Penangguang jawab jika terjadi sesuatu dinegara tujuan
- Fotocopy Kartu Keluarga
# Kunjungan Pertama.( Registrasi & Administrasi )
Siapkan data-data yang dibutuhkan karena kunjungan pertama adalah cek administrasi. Beli formulir pendaftaran yang tersedia di Loket Loby lt.1 biaya = Rp.12.000 ( per-2009), Isi data pribadi anda dan data yang dibutuhkan dengan lengkap dan benar ingat lembaran untuk pengisian pasport merah ( kerja ) dan passpor hijau berbeda. setelah itu Letakan data anda pada loket yang tersedia di ruang tunggu Lt.2, Tunggu sampai nama anda dipanggil. Beberapa orang langsung menyerahkan biaya administrasi sebesar Rp.280.000 di muka.Setelah itu simpan bukti Pendaftaran anda, biasanya anda akan disuruh kembali 2 sampai 3 hari kemudian.
#Kunjungan Kedua ( Photo session & wawancara )
Bawa bukti pendaftaran anda dan data yang butuhkan dari kunjungan sebelumnya. Serahkan pada petugas pada loket yang ditentukan. tunggu panggilan untuk melakukan pemotretan, setelah itu biasanya anda diminta untuk menunggu di ruang tunggu menunggu antrian untuk melakukan wawancara. wawancara yang dilakukan bersifat standart seputar keluarga, tujuan, dan aktivitas anda. Jika data secara administratif sudah lengkap dan memeuni syarat hanya butuh waktu kurang dari 5 menit wawancara.
#Kunjungan Ketiga
Jika proses yang anda lakukan di hari sebelumnya berjalan lancar, tidak ada masalah administratif, di kunjungan ini anda hanya tinggal mengambil passpor yang anda ajukan.
Pada umumnya syarat dan ketentuan pembuatan passport disemua kantor imigrasi sama, mungkin biaya yang membedakanya, yang penting aktiv untuk mencari informasi tentang tatacara yang berlaku dimasing-masing kantor imigrasi.
Diposting oleh Vampire Site di 02.47 0 komentar
The package failed to load due to error 0xC0011008
When I was exporting/importing table using export/import wizard in SQL
2005 Client tools, the process couldn't continue and return and error :
"The package failed to load due to error 0xC0011008 "Error loading from XML. No further detailed error information can be specified for this problem because no Events object was passed where detailed error information can be stored.". This occurs when CPackage::LoadFromXML fails".
Well I think it's actually because there is something wrong about accessing the file system where the database server is running. That's why he couldn't read the XML file required to export/import data.
You must export/import the table in the database server computer (locally). It solved my problem.
Diposting oleh Vampire Site di 02.29 0 komentar
Label: SQL Server 2005
Error: "Unrecoverable build error "
Error:
"Unrecoverable build error "
Solution:
regsvr32 ole32.dll
Diposting oleh Vampire Site di 02.27 0 komentar
Label: MS Visual Studio .NET
MS Visual Studio "Error while trying to run project: unable to start debugging the binding handle is invalid"
Error:
"Error while trying to run project: unable to start debugging
the binding handle is invalid"
Solution #1:
disabling the "Visual Studio hosting process"
("Project" -> "[ProjectName] Properties..". -> "Debug" -> Disable "Enable the Visual Studio hosting process")
Solution #2:
1) Open the 'Computer Management' administration tool
2) Go to Services and Applications->Services
3) Find 'Terminal Services' in the list of Services
4) Open properties for it
I think you will find that statup type is set to 'Disabled'. Try setting it to 'Manual' (the default), and rebooting your computer.
Diposting oleh Vampire Site di 02.26 0 komentar
Label: MS Visual Studio .NET
Kamis, 30 Juli 2009
PHP Create Excel File
// nama file
$namaFile = "report.xls";
// Function penanda awal file (Begin Of File) Excel
function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}
// Function penanda akhir file (End Of File) Excel
function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}
// Function untuk menulis data (angka) ke cell excel
function xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}
// Function untuk menulis data (text) ke cell excel
function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}
// header file excel
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,
pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
// header untuk nama file
header("Content-Disposition: attachment;
filename=".$namaFile."");
header("Content-Transfer-Encoding: binary ");
// memanggil function penanda awal file excel
xlsBOF();
// ------ membuat kolom pada excel --- //
// mengisi pada cell A1 (baris ke-0, kolom ke-0)
xlsWriteLabel(0,0,"NO");
// mengisi pada cell A2 (baris ke-0, kolom ke-1)
xlsWriteLabel(0,1,"NIM");
// mengisi pada cell A3 (baris ke-0, kolom ke-2)
xlsWriteLabel(0,2,"NAMA MAHASISWA");
// mengisi pada cell A4 (baris ke-0, kolom ke-3)
xlsWriteLabel(0,3,"NILAI");
// mengisi pada cell A5 (baris ke-0, kolom ke-4)
xlsWriteLabel(0,4,"STATUS KELULUSAN");
// -------- menampilkan data --------- //
// koneksi ke mysql
mysql_connect("localhost", "root", "root");
mysql_select_db("data");
// query menampilkan semua data
$query = "SELECT * FROM nilaimhs";
$hasil = mysql_query($query);
// nilai awal untuk baris cell
$noBarisCell = 1;
// nilai awal untuk nomor urut data
$noData = 1;
while ($data = mysql_fetch_array($hasil))
{
// menampilkan no. urut data
xlsWriteNumber($noBarisCell,0,$noData);
// menampilkan data nim
xlsWriteLabel($noBarisCell,1,$data['nim']);
// menampilkan data nama mahasiswa
xlsWriteLabel($noBarisCell,2,$data['namaMhs']);
// menampilkan data nilai
xlsWriteNumber($noBarisCell,3,$data['nilai']);
// menentukan status kelulusan
if ($data['nilai'] >= 60) $status = "LULUS";
else $status = "TIDAK LULUS";
// menampilkan status kelulusan
xlsWriteLabel($noBarisCell,4,$status);
// increment untuk no. baris cell dan no. urut data
$noBarisCell++;
$noData++;
}
// memanggil function penanda akhir file excel
xlsEOF();
exit();
?>
Diposting oleh Vampire Site di 23.45 0 komentar
Label: Microsoft Office, PHP