hxxp://www.thegioioto.com.vn
Trang web tiếng Việt về ôtô
Friday, June 30, 2006
Thursday, June 29, 2006
KeyLogger Preview
hxxp://www.securityfocus.com/infocus/1829
khá hay, nói rất chi tiết về các loại KeyLogger và cách phòng tránh.
khá hay, nói rất chi tiết về các loại KeyLogger và cách phòng tránh.
Wednesday, June 28, 2006
Tham khảo thêm
http://www2.sys-con.com/ITSG/virtualcd/Dotnet/archives/0104/brown/index.html
WMI on WindowsXP Embedded
1
http://support.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.windowsxp.embedded&tid=95dabda4-8776-4305-a108-80ff45d24dd4&p=1
2
http://msdn.microsoft.com/chats/transcripts/mobileembedded/05_0810_dn_emb.aspx
3.
http://www.derkeiler.com/Newsgroups/microsoft.public.windowsxp.security_admin/2003-03/2572.html
4.
http://www.pcreview.co.uk/forums/archive/forum-171.php
WMI on WindowsXP Embedded
1
http://support.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.windowsxp.embedded&tid=95dabda4-8776-4305-a108-80ff45d24dd4&p=1
2
http://msdn.microsoft.com/chats/transcripts/mobileembedded/05_0810_dn_emb.aspx
3.
http://www.derkeiler.com/Newsgroups/microsoft.public.windowsxp.security_admin/2003-03/2572.html
4.
http://www.pcreview.co.uk/forums/archive/forum-171.php
Một vài lưu ý khi làm với Image trên .Net (cont)
3. Điều chỉnh các thông số trước khi save : dùng để điều chỉnh Quality của ảnh, v.v.... giúp giảm size của ảnh
Listing 1: Rotating a Bitmap Image
private int _totalRotation = 0;
private void btnRotateCW_Click
(object sender, System.EventArgs e)
{
// Rotate image clockwise (90)
if (pbox.Image != null)
{
_totalRotation += 90;
pbox.Image.RotateFlip(
RotateFlipType.Rotate90FlipNone);
pbox.Invalidate();
}
}
private void btnRotateCC_Click
(object sender, System.EventArgs e)
{
// Rotate image counter-clockwise (270)
if (pbox.Image != null)
{
_totalRotation -= 90;
pbox.Image.RotateFlip(
RotateFlipType.Rotate270FlipNone);
pbox.Invalidate();
}
}
Listing 2: Saving a Bitmap Image
private string _origFileName = null;
private void btnSave_Click
(object sender, EventArgs e)
{
if (_origFileName == null)
return;
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "JPG Files (*.jpg)|*.jpg";
dlg.FileName = _origFileName;
if (dlg.ShowDialog() == DialogResult.OK)
{
pbox.Image.Save(dlg.FileName,
ImageFormat.Jpeg);
}
}
Listing 3: Locating an ImageCodecInfo object
private ImageCodecInfo GetImageCodec(string mimeType)
{
ImageCodecInfo[] codecs
= ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo codec in codecs)
{
if (String.Compare(codec.MimeType,
mimeType, true) == 0)
{
return codec;
}
}
return null;
}
Listing 4: Saving an image using encoder parameters
private string _origFileName = null;
private Bitmap _origBitmap = null;
private ImageCodecInfo jpgCodec = null;
private void btnSave_Click
(object sender, EventArgs e)
{
if (_origFileName == null)
return;
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "JPG Files (*.jpg)|*.jpg";
dlg.FileName = _origFileName;
if (dlg.ShowDialog() != DialogResult.OK)
return;
// Ready to save the image
while (_totalRotation < 0)
_totalRotation += 360;
_totalRotation %= 360;
if (_totalRotation == 0 && !cboxQuality.Checked)
{
// No parameters, so just save image.
_origBitmap.Save(dlg.FileName,
ImageFormat.Jpeg);
}
else
{
if (jpgCodec == null)
jpgCodec = GetImageCodec("image/jpeg");
// Determine required number of parameters
int paramSize = udQuality.Enabled ? 1 : 0;
if (_totalRotation != 0)
paramSize ++;
EncoderParameters encoderParams
= new EncoderParameters(paramSize);
if (_totalRotation != 0)
{
// Create transformation parameter
EncoderValue rValue
= EncoderValue.TransformRotate90;
if (_totalRotation == 180)
rValue = EncoderValue.TransformRotate180;
else if (_totalRotation == 270)
rValue = EncoderValue.TransformRotate270;
EncoderParameter tParam
= new EncoderParameter(
Encoder.Transformation,
(long)rotateValue);
encoderParams.Param[paramSize-1] = tParam;
}
if (udQuality.Enabled)
{
// Create quality parameter
EncoderParameter qParam
= new EncoderParameter(
Encoder.Quality,
(long)udQuality.Value);
encoderParams.Param[0] = qParam;
}
// Save the image using encoder settings
_origBitmap.Save(dlg.FileName,
jpgCodec, encoderParams);
}
}
Listing 1: Rotating a Bitmap Image
private int _totalRotation = 0;
private void btnRotateCW_Click
(object sender, System.EventArgs e)
{
// Rotate image clockwise (90)
if (pbox.Image != null)
{
_totalRotation += 90;
pbox.Image.RotateFlip(
RotateFlipType.Rotate90FlipNone);
pbox.Invalidate();
}
}
private void btnRotateCC_Click
(object sender, System.EventArgs e)
{
// Rotate image counter-clockwise (270)
if (pbox.Image != null)
{
_totalRotation -= 90;
pbox.Image.RotateFlip(
RotateFlipType.Rotate270FlipNone);
pbox.Invalidate();
}
}
Listing 2: Saving a Bitmap Image
private string _origFileName = null;
private void btnSave_Click
(object sender, EventArgs e)
{
if (_origFileName == null)
return;
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "JPG Files (*.jpg)|*.jpg";
dlg.FileName = _origFileName;
if (dlg.ShowDialog() == DialogResult.OK)
{
pbox.Image.Save(dlg.FileName,
ImageFormat.Jpeg);
}
}
Listing 3: Locating an ImageCodecInfo object
private ImageCodecInfo GetImageCodec(string mimeType)
{
ImageCodecInfo[] codecs
= ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo codec in codecs)
{
if (String.Compare(codec.MimeType,
mimeType, true) == 0)
{
return codec;
}
}
return null;
}
Listing 4: Saving an image using encoder parameters
private string _origFileName = null;
private Bitmap _origBitmap = null;
private ImageCodecInfo jpgCodec = null;
private void btnSave_Click
(object sender, EventArgs e)
{
if (_origFileName == null)
return;
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "JPG Files (*.jpg)|*.jpg";
dlg.FileName = _origFileName;
if (dlg.ShowDialog() != DialogResult.OK)
return;
// Ready to save the image
while (_totalRotation < 0)
_totalRotation += 360;
_totalRotation %= 360;
if (_totalRotation == 0 && !cboxQuality.Checked)
{
// No parameters, so just save image.
_origBitmap.Save(dlg.FileName,
ImageFormat.Jpeg);
}
else
{
if (jpgCodec == null)
jpgCodec = GetImageCodec("image/jpeg");
// Determine required number of parameters
int paramSize = udQuality.Enabled ? 1 : 0;
if (_totalRotation != 0)
paramSize ++;
EncoderParameters encoderParams
= new EncoderParameters(paramSize);
if (_totalRotation != 0)
{
// Create transformation parameter
EncoderValue rValue
= EncoderValue.TransformRotate90;
if (_totalRotation == 180)
rValue = EncoderValue.TransformRotate180;
else if (_totalRotation == 270)
rValue = EncoderValue.TransformRotate270;
EncoderParameter tParam
= new EncoderParameter(
Encoder.Transformation,
(long)rotateValue);
encoderParams.Param[paramSize-1] = tParam;
}
if (udQuality.Enabled)
{
// Create quality parameter
EncoderParameter qParam
= new EncoderParameter(
Encoder.Quality,
(long)udQuality.Value);
encoderParams.Param[0] = qParam;
}
// Save the image using encoder settings
_origBitmap.Save(dlg.FileName,
jpgCodec, encoderParams);
}
}
Một vài lưu ý khi làm với Image trên .Net (cont)
2. Class Để Resize một Bitmap
can found at: hxxp://www.codeproject.com/csharp/imageresize.asp
khá đơn giản và dễ hiểu.
can found at: hxxp://www.codeproject.com/csharp/imageresize.asp
khá đơn giản và dễ hiểu.
Một vài lưu ý khi làm với Image trên .Net
1. Khi cần gửi một Bitmap thẳng qua Client, nhất thiết là phải gửi mảng byte[], ta dùng đoạn code sau:
// we have an Image or Bitmap object already, named imageNeedToSend
MemoryStream ms = new MemoryStream();
imageNeedToSend.Save(Stream, System.Drawing.ImageFormat)
the MemoryStream class has a method to return a ByteArray.
ms.ToArray()
// we have an Image or Bitmap object already, named imageNeedToSend
MemoryStream ms = new MemoryStream();
imageNeedToSend.Save(Stream, System.Drawing.ImageFormat)
the MemoryStream class has a method to return a ByteArray.
ms.ToArray()
Kiểm tra xe trước khi đi xa
Kiểm tra dầu động cơ, dầu thắng, bánh ....
hxxp://www.vnexpress.net/Vietnam/Oto-Xe-may/2006/06/3B9EB40D/
hxxp://www.vnexpress.net/Vietnam/Oto-Xe-may/2006/06/3B9EB40D/
Tuesday, June 27, 2006
Monday, June 26, 2006
Cười với Vova - cont
Giờ học tiếng Pháp hôm đó có 1 giáo viên đến dự giờ nên cô giáo rất run. Cô vừa viết lên bảng một từ tiếng Pháp và hỏi:
- Em nào có thể nói cho cô biết nghĩa của từ này không?
Đúng lúc đó thì cô làm rơi viên phấn xuống đất. Lúc cô cúi xuống nhặt thì ông thầy ngồi lẩm bẩm câu gì đó. Vova vội giơ tay xung phong trả lời.
- Mời em Vova, từ này là gì?
- Dạ, thưa cô nghĩa là "mông to quá" ạ!
- Ngồi xuống, 1 điểm. Cô giáo tức giận nói
- Lần sau nếu không biết thì đừng có nhắc bài nhé!. Vova quay sang hầm hừ nói với ông thầy ngồi cạnh!
- Em nào có thể nói cho cô biết nghĩa của từ này không?
Đúng lúc đó thì cô làm rơi viên phấn xuống đất. Lúc cô cúi xuống nhặt thì ông thầy ngồi lẩm bẩm câu gì đó. Vova vội giơ tay xung phong trả lời.
- Mời em Vova, từ này là gì?
- Dạ, thưa cô nghĩa là "mông to quá" ạ!
- Ngồi xuống, 1 điểm. Cô giáo tức giận nói
- Lần sau nếu không biết thì đừng có nhắc bài nhé!. Vova quay sang hầm hừ nói với ông thầy ngồi cạnh!
Cười với Vova - cont
Bé Vôva vào lớp 1. Để buổi đi học đầu tiên của các cháu được hứng thú, cô giáo bắt đầu bằng trò chơi đố vui.
Cô nghĩ đến cái bàn, rồi đặt câu hỏi :
- Đố các em, trong nhà ta có cái gì bằng gỗ, có 4 chân?
Bé Vôva nhanh nhảu:
- Cái ghế ạ
Cô gật gù, ừ, cái em nghĩ cũng được đấy, nhưng mà câu trả lời của cô là cái bàn. Rồi cô đố tiếp, lần này cô nghĩ đến con mèo:
- Đố các em, trong nhà ta nuôi con gì có 4 chân mà các em hay vuốt ve nó?
Bé Vôva vẫn là người nhanh nhất:
- Thưa cô, con chó ạ.
- Ừ cũng được đấy, cô nói, em giỏi lắm, nhưng cái câu trả lời của cô là con mèo cơ.
Bé Vôva xin phép cô ra câu đố:
- Đố cô, cái gì mà đàn ông hay giấu trong quần lâu lâu lấy ra sử dụng, dài dài, tròn tròn , đầu đỏ đỏ...
Chưa nói hết câu, cô giáo đã nổi giận ngắt ngang:
- Vôva, sao em dám ăn nói bậy bạ như vậy
Nước mắt lưng tròng, bé Vôva thút thít trả lời:
- Cái mà cô nghĩ cũng được đấy, nhưng câu trả lời của em là những que diêm cơ...
Cô nghĩ đến cái bàn, rồi đặt câu hỏi :
- Đố các em, trong nhà ta có cái gì bằng gỗ, có 4 chân?
Bé Vôva nhanh nhảu:
- Cái ghế ạ
Cô gật gù, ừ, cái em nghĩ cũng được đấy, nhưng mà câu trả lời của cô là cái bàn. Rồi cô đố tiếp, lần này cô nghĩ đến con mèo:
- Đố các em, trong nhà ta nuôi con gì có 4 chân mà các em hay vuốt ve nó?
Bé Vôva vẫn là người nhanh nhất:
- Thưa cô, con chó ạ.
- Ừ cũng được đấy, cô nói, em giỏi lắm, nhưng cái câu trả lời của cô là con mèo cơ.
Bé Vôva xin phép cô ra câu đố:
- Đố cô, cái gì mà đàn ông hay giấu trong quần lâu lâu lấy ra sử dụng, dài dài, tròn tròn , đầu đỏ đỏ...
Chưa nói hết câu, cô giáo đã nổi giận ngắt ngang:
- Vôva, sao em dám ăn nói bậy bạ như vậy
Nước mắt lưng tròng, bé Vôva thút thít trả lời:
- Cái mà cô nghĩ cũng được đấy, nhưng câu trả lời của em là những que diêm cơ...
Cười với Vova - from UDS
Cô giáo hôm nay mặc áo mới, trên ngực thêu hoa hồng. Thấy các học sinh chăm chú nhìn, cô giáo rất vui, hỏi: "Thế các em có biết hoa hồng sống bằng gì ko?"
Vôva trả lời: "Thưa cô bằng sữa ạ" Cô giáo đỏ mặt đuổi Vôva ra đứng hành lang.
Thầy hiệu trưởng đi ngang thấy Vôva vật vờ ở ấy, hỏi đầu đuôi sự tình rồi nói: "Vôva em nhầm rồi, hoa hồng sống bằng phân và nước tiểu"
Vôva lầm bầm:"Em đâu biết rễ nó dài đến thế"
Vôva trả lời: "Thưa cô bằng sữa ạ" Cô giáo đỏ mặt đuổi Vôva ra đứng hành lang.
Thầy hiệu trưởng đi ngang thấy Vôva vật vờ ở ấy, hỏi đầu đuôi sự tình rồi nói: "Vôva em nhầm rồi, hoa hồng sống bằng phân và nước tiểu"
Vôva lầm bầm:"Em đâu biết rễ nó dài đến thế"
Học tiếng Anh tại hội Việt - Mỹ
Có một ông người Việt và một ông Tây đi đụng phải nhau, ông người Việt thấy thế bàn xin lỗi:
- I'm sorry
- I'm sorry, too - ông Tây lịch sự đáp lại
- I'm sorry, three - ông người Việt trả lời
Ông Tây nghe vậy thấy lạ quá bèn hỏi:
- What are you sorry for?
- I'm sorry five - ông người Việt trả lời
Ông Tây nghe vậy bực quá:
- Shit!
- Seven - ông người Việt đáp lại tỉnh queo.
- I'm sorry
- I'm sorry, too - ông Tây lịch sự đáp lại
- I'm sorry, three - ông người Việt trả lời
Ông Tây nghe vậy thấy lạ quá bèn hỏi:
- What are you sorry for?
- I'm sorry five - ông người Việt trả lời
Ông Tây nghe vậy bực quá:
- Shit!
- Seven - ông người Việt đáp lại tỉnh queo.
Thursday, June 22, 2006
Scancode Map example
Trong ví dụ sau ta sẽ bỏ đi phím delete trên numpad và swap phím delete gần nút phím End với phím Scroll Lock
http://photos1.blogger.com/hello/86/9387/1024/swapKey.jpg
http://photos1.blogger.com/hello/86/9387/1024/swapKey.jpg
Dùng Scancode Map
Cái này dùng để định nghĩa map các phím trên keyboard
Ví dụ: khi user nhấn nút a thì các map này chỉnh lại thành phím b
Dùng HKEY_LOCAL_MACHINE nếu muốn toàn bộ hệ thống (mọi user) đều dùng map này ngược lại dùng CURRENT_USER để chỉ chỉnh cho user hiện tại
Step1: vào
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layout
Step2: Add thêm Value Scancode Map có kiểu là REG_BINARY
Xem ví dụ sau để hiểu cách thêm vào
00 00 00 00 00 00 00 00 02 00 00 00 1d 00 3a 00 00 00 00 00
Trong ví dụ trên:
+ Tám cặp số "00" là bắt buộc phải có, tiếp đến là số
mapping ("02") ta sẽ định nghĩa, kế đến là phím đầu tiên
1D 00 là phím LCtrl sẽ thay thế cho phím 3A 00 là phím CapsLock, 4 cặp số "00" sau cùng là bắt buộc.
Lưu ý: Nếu muốn swap hay phím phải làm:
Swap phím 1 -> phím 2 và swap phím 2 về lại phím 1
Step 4: Restart hay Log Off
Chi tiết để tham khảo và lấy list các key code tại:
hxxp://www.microsoft.com/whdc/device/input/w2kscan-map.mspx
Ví dụ: khi user nhấn nút a thì các map này chỉnh lại thành phím b
Dùng HKEY_LOCAL_MACHINE nếu muốn toàn bộ hệ thống (mọi user) đều dùng map này ngược lại dùng CURRENT_USER để chỉ chỉnh cho user hiện tại
Step1: vào
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layout
Step2: Add thêm Value Scancode Map có kiểu là REG_BINARY
Xem ví dụ sau để hiểu cách thêm vào
00 00 00 00 00 00 00 00 02 00 00 00 1d 00 3a 00 00 00 00 00
Trong ví dụ trên:
+ Tám cặp số "00" là bắt buộc phải có, tiếp đến là số
mapping ("02") ta sẽ định nghĩa, kế đến là phím đầu tiên
1D 00 là phím LCtrl sẽ thay thế cho phím 3A 00 là phím CapsLock, 4 cặp số "00" sau cùng là bắt buộc.
Lưu ý: Nếu muốn swap hay phím phải làm:
Swap phím 1 -> phím 2 và swap phím 2 về lại phím 1
Step 4: Restart hay Log Off
Chi tiết để tham khảo và lấy list các key code tại:
hxxp://www.microsoft.com/whdc/device/input/w2kscan-map.mspx
Wednesday, June 21, 2006
Diable AutoRun CD
Step1: Run/ regedit
Step2: Go to ->HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services>Cdrom->
Step3: Change AutoRun ValueData to 0
Step4: Restart again.
Step2: Go to ->HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services>Cdrom->
Step3: Change AutoRun ValueData to 0
Step4: Restart again.
Không thể Debug trong VS .Net
Unable to debugging
hxxp://www.gotdotnet.com/community/messageboard/Thread.aspx?id=239063
hxxp://www.gotdotnet.com/community/messageboard/Thread.aspx?id=239063
Tuesday, June 20, 2006
Backup links
Game Mahjong Escape
hxxp://rapidshare.de/files/21139890/escaping.rar.html
Password: estrange
Link ve hook tren C#
hxxp://www.codeproject.com/csharp/GlobalSystemHook.asp
hxxp://www.codeproject.com/csharp/GlobalSystemHook.asp
hxxp://www.codeproject.com/csharp/globalhook.asp
hxxp://www.codeproject.com/info/search.asp?cats=3&cats=5&searchkw=keyboard+hook&Submit1=Search&author=&sd=15+Nov+1999&ed=20+Jun+2006
hxxp://rapidshare.de/files/21139890/escaping.rar.html
Password: estrange
Link ve hook tren C#
hxxp://www.codeproject.com/csharp/GlobalSystemHook.asp
hxxp://www.codeproject.com/csharp/GlobalSystemHook.asp
hxxp://www.codeproject.com/csharp/globalhook.asp
hxxp://www.codeproject.com/info/search.asp?cats=3&cats=5&searchkw=keyboard+hook&Submit1=Search&author=&sd=15+Nov+1999&ed=20+Jun+2006
.NET Framework Solutions: In Search of the Lost Win32 API
If you've begun programming using Microsoft's .NET Framework, you've discovered a lot of new and improved functionality. But, more than likely, you've also discovered a lot of missing functionality. Indeed, a third of the functions supported by the old Win32 API are not yet supported by .NET. Although you may not at first notice the loss of Win32 API functionality in .NET, the more you program, the more you'll realize how essential it is. As a programmer, you will not want to do without these solutions.
.NET Framework Solutions: In Search of the Lost Win32 API is one more thing you can't do without: a complete guide to your options for dealing with the functionality missing from .NET. As you'll learn, some functions are handily situated within Visual Basic or C#. In most cases, however, you'll need to access the old Win32 API from the .NET Framework. This is demanding work, but this book makes it easy, walking you through every step and paying special attention to the work of managing memory manually-the most error-prone part of the process. The topics covered inside are as varied as the missing functionality: direct hardware access, low-level security control, certain aspects of OS access, support for multimedia and utilities, and DirectX. You also get hard-to-find information on COM access, plus a collection of examples-dealing with DirectX and the MMC Snap-ins-that unite COM and Win32 access in especially illuminating ways.
.NET Framework Solutions: In Search of the Lost Win32 API is one more thing you can't do without: a complete guide to your options for dealing with the functionality missing from .NET. As you'll learn, some functions are handily situated within Visual Basic or C#. In most cases, however, you'll need to access the old Win32 API from the .NET Framework. This is demanding work, but this book makes it easy, walking you through every step and paying special attention to the work of managing memory manually-the most error-prone part of the process. The topics covered inside are as varied as the missing functionality: direct hardware access, low-level security control, certain aspects of OS access, support for multimedia and utilities, and DirectX. You also get hard-to-find information on COM access, plus a collection of examples-dealing with DirectX and the MMC Snap-ins-that unite COM and Win32 access in especially illuminating ways.
Maximizing .NET Performance
Maximizing .NET Performance will focus on providing developers and architects with information on performance characteristics of various aspects of the .NET Framework. In addition to providing high-level material on achieving software with good performance characteristics, the books aims to enhance readers’ knowledge of the design and implementation of the Framework, and to provide the tools and techniques to allow readers to conduct their own investigation into performance problems.
The dominant feature of this book will be the systematic analysis of performance relating to key Framework topics like remoting, garbage collection, and threading. Rather than a ‘tips and tricks’ approach, the book aims to provide a detailed exploration of each topic, and explore the ‘whys’ and ‘by how much’ aspects (with actual benchmark results) of performance that are often overlooked.
Author Information
Nicholas J. Wienholt - Nicholas J. Wienholt is a Windows and .NET consultant based in Sydney, Australia. He has worked on a variety of IT projects over the last decade, ranging from numerical modeling of beach erosion to financial and payroll systems. Career highlights include the highly successful NSW State Rail Passenger Information Display System (PIDS) project, and the Mobile Number Portability (MNP) system. Nick was also responsible for the design and implementation of the messaging layer for Concentrics Pty Ltd, a network provider to Australian telecommunication companies. Nick is the co-founder and president of the Sydney Deep .NET User group, writes technical articles for Pinnacle Publishing and the Microsoft Developer Network, and is a keen participant in .NET related newsgroups.
Table of Contents
Chapter 1: .NET Framework Performance
Chapter 2: Investigating Performance
Chapter 3: Class Design and Implementation
Chapter 4: Strings, Text and Regular Expressions
Chapter 5: Collections
Chapter 6: Language Specifics
Chapter 7: Garbage Collection and Object Lifetime Management
Chapter 8: Exceptions
Chapter 9: Security
Chapter 10: Threading
Chapter 11: IO and Serialization
Chapter 12: Remoting
Chapter 13: Unmanaged Code Interoperability
Chapter 14: The Common Language Runtime
Chapter 15: Solving Performance Problems
Appendix A: Performance Measurement Framework for .NET
Links: hxxp://tinyurl.com/zxhyt
The dominant feature of this book will be the systematic analysis of performance relating to key Framework topics like remoting, garbage collection, and threading. Rather than a ‘tips and tricks’ approach, the book aims to provide a detailed exploration of each topic, and explore the ‘whys’ and ‘by how much’ aspects (with actual benchmark results) of performance that are often overlooked.
Author Information
Nicholas J. Wienholt - Nicholas J. Wienholt is a Windows and .NET consultant based in Sydney, Australia. He has worked on a variety of IT projects over the last decade, ranging from numerical modeling of beach erosion to financial and payroll systems. Career highlights include the highly successful NSW State Rail Passenger Information Display System (PIDS) project, and the Mobile Number Portability (MNP) system. Nick was also responsible for the design and implementation of the messaging layer for Concentrics Pty Ltd, a network provider to Australian telecommunication companies. Nick is the co-founder and president of the Sydney Deep .NET User group, writes technical articles for Pinnacle Publishing and the Microsoft Developer Network, and is a keen participant in .NET related newsgroups.
Table of Contents
Chapter 1: .NET Framework Performance
Chapter 2: Investigating Performance
Chapter 3: Class Design and Implementation
Chapter 4: Strings, Text and Regular Expressions
Chapter 5: Collections
Chapter 6: Language Specifics
Chapter 7: Garbage Collection and Object Lifetime Management
Chapter 8: Exceptions
Chapter 9: Security
Chapter 10: Threading
Chapter 11: IO and Serialization
Chapter 12: Remoting
Chapter 13: Unmanaged Code Interoperability
Chapter 14: The Common Language Runtime
Chapter 15: Solving Performance Problems
Appendix A: Performance Measurement Framework for .NET
Links: hxxp://tinyurl.com/zxhyt
Thursday, June 15, 2006
Link về Fiat Siena 1.5 HL của mình
đang gặp khó khăn trong việc điều khiển xe mới nên phải tìm hiểu về cách thức vận hành của nó, cũng như cách bảo dưỡng. Tui nghĩ chắc cũng không khó với người thích tìm tòi như tui.
Links
Links
Tuesday, June 13, 2006
Chuyện cười - Chế nhạo đàn bà
Chế tạo đàn bà
Ông vua xe hơi, Henry Ford sau khi chết được đưa lên thiên đàng. Tại cổng thiên đàng có Thánh St' Peter chờ sẵn để đón Ford.
Vừa gặp Ford, Thánh Peter cho biết: Ford hồi còn sống, ngươi đã làm nhiều việc công ích cho xã hội, như sáng chế phương pháp làm việc dây chuyền cho kỹ nghệ xe hơi làm thay đổi cả thế giới. Với thành quả như vậy, ngươi sẽ được một ân huệ là có thể chuyện trò với bất cứ ai ở thiên đàng này.
Suy nghĩ vài giây, Ford xin được gặp Thượng Đế. Thánh Peter dẫn Ford đến gặp Thượng Đế. Vừa gặp Thượng Đế, Ford hỏi ngay:
- Thưa Ngài, lúc ngài chế tạo ra đàn bà, ngài đã suy nghĩ gì?
Thượng Đế nghe xong bèn hỏi lại:
- Ngươi hỏi như vậy là ý gì?
Ford liền trả lời:
- Trong sáng chế của ngài có quá nhiều sơ sót. Phía trước thì bị phồng lên, phía sau thì bị nhô ra. Máy thường kêu to khi chạy nhanh. Tiền bảo trì và nuôi dưỡng quá cao. Thường xuyên đòi hỏi nước sơn mới. Cứ đi 28 ngày là lại bị chảy nhớt và không làm việc được. Chỗ bơm xăng và ống xả lại quá gần nhau. Đèn trước thì quá nhỏ. Tiêu thụ nhiên liệu thì nhiều kinh khủng khiếp.
Thượng Đế nghe qua liền bảo:
- Ngươi hãy đợi một chốc lát để ta xem lại bản thiết kế.
Ngài bèn cho gọi toàn bộ kỹ sư thiết kế và cơ khí trên thiên đàng lại để xem lại quá trình, sau một thời gian họ đã trình lên cho Thượng Đế bản báo cáo. Xem xong, ngài bèn phán rằng:
- Những lời ngươi vừa nói hoàn toàn đúng, bằng sáng chế của ta thật có nhiều sai sót, nhưng nếu tính trên phương diện kinh tế thì hiệu quả thị phần lại rất cao: Có gần 98% đàn ông trên thế giới xài sản phẩm do ta chế tạo, trong khi chỉ chưa đầy 10% đàn ông xài sản phẩm của ngươi.
(theo ngoisao.net)
Ông vua xe hơi, Henry Ford sau khi chết được đưa lên thiên đàng. Tại cổng thiên đàng có Thánh St' Peter chờ sẵn để đón Ford.
Vừa gặp Ford, Thánh Peter cho biết: Ford hồi còn sống, ngươi đã làm nhiều việc công ích cho xã hội, như sáng chế phương pháp làm việc dây chuyền cho kỹ nghệ xe hơi làm thay đổi cả thế giới. Với thành quả như vậy, ngươi sẽ được một ân huệ là có thể chuyện trò với bất cứ ai ở thiên đàng này.
Suy nghĩ vài giây, Ford xin được gặp Thượng Đế. Thánh Peter dẫn Ford đến gặp Thượng Đế. Vừa gặp Thượng Đế, Ford hỏi ngay:
- Thưa Ngài, lúc ngài chế tạo ra đàn bà, ngài đã suy nghĩ gì?
Thượng Đế nghe xong bèn hỏi lại:
- Ngươi hỏi như vậy là ý gì?
Ford liền trả lời:
- Trong sáng chế của ngài có quá nhiều sơ sót. Phía trước thì bị phồng lên, phía sau thì bị nhô ra. Máy thường kêu to khi chạy nhanh. Tiền bảo trì và nuôi dưỡng quá cao. Thường xuyên đòi hỏi nước sơn mới. Cứ đi 28 ngày là lại bị chảy nhớt và không làm việc được. Chỗ bơm xăng và ống xả lại quá gần nhau. Đèn trước thì quá nhỏ. Tiêu thụ nhiên liệu thì nhiều kinh khủng khiếp.
Thượng Đế nghe qua liền bảo:
- Ngươi hãy đợi một chốc lát để ta xem lại bản thiết kế.
Ngài bèn cho gọi toàn bộ kỹ sư thiết kế và cơ khí trên thiên đàng lại để xem lại quá trình, sau một thời gian họ đã trình lên cho Thượng Đế bản báo cáo. Xem xong, ngài bèn phán rằng:
- Những lời ngươi vừa nói hoàn toàn đúng, bằng sáng chế của ta thật có nhiều sai sót, nhưng nếu tính trên phương diện kinh tế thì hiệu quả thị phần lại rất cao: Có gần 98% đàn ông trên thế giới xài sản phẩm do ta chế tạo, trong khi chỉ chưa đầy 10% đàn ông xài sản phẩm của ngươi.
(theo ngoisao.net)
Cười chút vậy mà
Tại một trại giam nữ trại trưởng đi nhận tiếp tế về khoe:
- Chị em ơi tôi muốn báo cho chị em 2 tin: một tin vui và một tin buồn
- Nói tin vui trước đi sau rồi hay nói tin buồn
Nữ trại thông báo:
- Tin vui là: chúng ta được tiếp tê rất nhiều " Dưa Chuột Tươi Và To"
Cả phòng giam như tức nước vỡ bờ reo lên vui sướng. Chị em hỏi:
- Thế tin buồn là gì?
- Tin buồn là: Tất cả các quả dưa đều bị thái lát hết rồi
- Chị em ơi tôi muốn báo cho chị em 2 tin: một tin vui và một tin buồn
- Nói tin vui trước đi sau rồi hay nói tin buồn
Nữ trại thông báo:
- Tin vui là: chúng ta được tiếp tê rất nhiều " Dưa Chuột Tươi Và To"
Cả phòng giam như tức nước vỡ bờ reo lên vui sướng. Chị em hỏi:
- Thế tin buồn là gì?
- Tin buồn là: Tất cả các quả dưa đều bị thái lát hết rồi
Monday, June 12, 2006
www.kitco.com
Trang Web về giá vàng thế giới
Đổi đơn vị:
ounce = 28.35 g
1 Lượng (tael) = 37.4999 g
Giá vàng tại đổi ra lượng là = giá vàng tính bằng ounce * 28.35 / 37.4999
hay gần đúng là: giá vàng thế giới * 1.322751
Đổi đơn vị:
ounce = 28.35 g
1 Lượng (tael) = 37.4999 g
Giá vàng tại đổi ra lượng là = giá vàng tính bằng ounce * 28.35 / 37.4999
hay gần đúng là: giá vàng thế giới * 1.322751
Saturday, June 10, 2006
19 helpful tools for USB stick
http://rapidshare.de/files/22592975/19MiniToolsForUSB.rar.html (10 MB)
Pass unrar: vietdown.org
Thursday, June 08, 2006
Auto Update Application
Làm thế nào để tạo được chương trình có khả năng tự kiểm tra và update. Chỉ cần làm theo các hướng dẫn trong bài viết sau trên codeproject là chương trình của bạn đã có khả năng tự nâng cấp.
Link: Code Project
Link: Code Project
Wednesday, June 07, 2006
Tuesday, June 06, 2006
Make Magazine
ALL OTHER ISSUES | PDF
Vol 1
http://rapidshare.de/files/5380263/vol1.pdf
41MB
Vol 2
http://rapidshare.de/files/5381284/vol2.pdf
42.6MB
Vol 3
http://rapidshare.de/files/5411478/Vol3.rar
44MB
Vol 4
http://rapidshare.de/files/12657789/makeMag_Vol4.rar
44MB
Vol5
http://rapidshare.de/files/12651841/makeMag_Vol5.rar
56.87MB
http://rapidshare.de/files/21949779/MakeMag_Vol6_.rar
27.46MB | PDF
Các magazine về điện tử để các thợ vọc có thể táy máy.
Multi-threaded file download manager - by Shailen Sukul
Introduction
A few months ago, my lovely wife was downloading her lecture notes from her university website, and I noticed that she had to manually click on every file to save it to the hard disk.
I also noticed that all the hyperlinks were on the same page, and the documents she was downloading were either Word documents or PowerPoint presentations.
Right then, a little light bulb went on in my head, and I decided to build her a file download utility. The requirements were simple:
* I should be able to point to a web page and filter URLs on it. For example, "*.doc" should give me a collection of URLs that have .doc at the end of the link.
* From the list of available files, I should be able to select the files I want to download.
* I should be able to download my selected files simultaneously.
* I should be able to nominate the number of simultaneous threads for download.
* I should be able to cancel a download at any point in time.
* I should be informed of the download status of each selected file.
* I do not want to re-download files that I have downloaded before.
Code Project Link
3 Loại Timer trên .Net
Gồm 3 loại timer: System.Windows.Form.Timer, System.Timers.Timer và System.Threading.Timer. Tạm thời chưa nắm được sự khác nhau và cách dùng của các timer này.
Link on MSDN
Link on MSDN
Monday, June 05, 2006
Kiểm tra năm nhuần
Đk năm nhuần, một năm là năm nhuần khi thoả 1 trong hai điều sau:
- chia hết cho 4 và không chia hết cho 100
- chia hết cho 400
Code
if (( nam % 4 == 0 && nam % 100 !=0) ||
(nam % 400 == 0))
{
return 0; // la nam nhuan
}
else
{
return 1;// khong phai la nam nhuan
}
- chia hết cho 4 và không chia hết cho 100
- chia hết cho 400
Code
if (( nam % 4 == 0 && nam % 100 !=0) ||
(nam % 400 == 0))
{
return 0; // la nam nhuan
}
else
{
return 1;// khong phai la nam nhuan
}
Mạng Nơron - Using .Net
1. Overview
Solution Architect: "We have a new project. We need to develop a brain tumor recognition system. I hope you can do that?"
Dumb (And Lazy) Programmer: "No. Oh, probably yes - let me search whether I can I get a component or library for that"
Code Project Link
Rất đáng để xem và nghiên cứu làm theo.
Solution Architect: "We have a new project. We need to develop a brain tumor recognition system. I hope you can do that?"
Dumb (And Lazy) Programmer: "No. Oh, probably yes - let me search whether I can I get a component or library for that"
Code Project Link
Rất đáng để xem và nghiên cứu làm theo.
Regex của .Net
The 30 Minute Regex Tutorial
By Jim Hollenhorst
Learning .NET Regular Expressions with Expresso
Did you ever wonder what Regular Expressions are all about and want to gain a basic understanding quickly? My goal is to get you up and running with a basic understanding of regular expressions within 30 minutes. The reality is that regular expressions aren't as complex as they look. The best way to learn is to start writing and experimenting. After your first half hour, you should know a few of the basic constructs and be able to design and use regular expressions in your programs or web pages. For those of you who get hooked, there are many excellent resources available to further your education.
Link on codeproject
Ghi chú về bài viết trên: giới thiệu về Regular Expression của .Net, một công cụ rất mạnh để kiểm tra xem một string có thuộc về một mẫu định trước nào hay không. Ví dụ: số điện thọai, email, hay nhập ngày tháng năm. Trong bài viết có giới thiệu về Expresso 2.1
By Jim Hollenhorst
Learning .NET Regular Expressions with Expresso
Did you ever wonder what Regular Expressions are all about and want to gain a basic understanding quickly? My goal is to get you up and running with a basic understanding of regular expressions within 30 minutes. The reality is that regular expressions aren't as complex as they look. The best way to learn is to start writing and experimenting. After your first half hour, you should know a few of the basic constructs and be able to design and use regular expressions in your programs or web pages. For those of you who get hooked, there are many excellent resources available to further your education.
Link on codeproject
Ghi chú về bài viết trên: giới thiệu về Regular Expression của .Net, một công cụ rất mạnh để kiểm tra xem một string có thuộc về một mẫu định trước nào hay không. Ví dụ: số điện thọai, email, hay nhập ngày tháng năm. Trong bài viết có giới thiệu về Expresso 2.1
Subscribe to:
Posts (Atom)