Posts

Thread safe rotate index.

Sometimes you may need a rotation thread safe index. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections.Concurrent; using System.Threading; namespace ConsoleApplication12 { class Program { static void Main(string[] args) { Console.WriteLine("Init value = Int32.MaxValue - 10"); RotatorIndex.Init = Int32.MaxValue - 10; Thread thread1 = new Thread(new ThreadStart(ThreadMethod)); Thread thread2 = new Thread(new ThreadStart(ThreadMethod)); thread1.Start(); thread2.Start(); thread1.Join(); thread2.Join(); Console.WriteLine("Init value = - 10"); RotatorIndex.Init = - 10; thread1 = new Thread(new ThreadStart(ThreadMethod)); thread2 = new Thread(new ThreadStart(ThreadMethod)); thread1.Start(); thread2.Start(); ...

Localized type conversion

If you need a DateTime or double convertion depending on system localization here are some examples: Date to string DateTime dt = new DateTime(2012, 06, 13, 17, 50, 00); string date_US = dt.ToString(new CultureInfo("en-US").DateTimeFormat); string date_GB = dt.ToString(new CultureInfo("en-GB").DateTimeFormat); string date_PL = dt.ToString(new CultureInfo("pl-PL").DateTimeFormat); string date_RU = dt.ToString(new CultureInfo("ru-RU").DateTimeFormat); Console.WriteLine("date_US = {0}", date_US); Console.WriteLine("date_GB = {0}", date_GB); Console.WriteLine("date_PL = {0}", date_PL); Console.WriteLine("date_RU = {0}", date_RU); /* date_US = 6/13/2012 5:50:00 PM date_GB = 13/06/2012 17:50:00 date_PL = 2012-06-13 17:50:00 date_RU = 13.06.2012 17:50:00 */ String to date date_US = "6/13/2012 5:50:00 PM"; date_GB = "13/06/2012 17:50:00"; date_PL = "2012-06-13 17:50:00"; d...

SSH

Recently I was thinking of SSH support in my TCExecutor application. I've found some 3rd party libraries which support SSH.... but... I think I'll try to implement it on my own... Here are some specs: The Secure Shell (SSH) Protocol Assigned Numbers - RFC 4250 The Secure Shell (SSH) Protocol Architecture - RFC 4251 The Secure Shell (SSH) Authentication Protocol - RFC 4252 The Secure Shell (SSH) Transport Layer Protocol - RFC 4253 The Secure Shell (SSH) Connection Protocol - RFC 4254

TCExecutor v0.0.1 released

Image
TCExecutor - Telnet Command Executor C# open source project is released in version 0.0.1 Thanks to TCExecutor you can add communication/configuration layer to your application in just four steps: Create TCExecutor object Define commands Hook up your code to commands events (TCExecutor is multithread/multiconection application remeber that your code must be threadsafe) Start TCExecutor listener. Commands style: > command1  subcommand1 ... subcommandN param1=X1 ... paramN=XN  ARGV1...ARGVN Features: Adds network communication layer to your application Supports multiple connections. For each connection separate session is established. Commands can be defined at your application startup. Each command has separate event to which you can connect to. Each command has a short and long help string which helps end user to navigate through available options. Next releases features: Enable SSH connections to the TCExecutor. Add simple user autentication...

Nikon D40 Intervalometer

Image
Is it possible to create time lapse pictures with Nikon D40... yes... You can find results here: result1 result2 You are a software engineer... you can do anything... it is just a matter of time ;)

C# Custom Performance Counters - First Performance Counter

Image
Table of content: I. C# Custom Performance Counters - Introduction II. C# Custom Performance Counters - First Performance Counter 1. Creating a custom Performance Counters and Performance counters category. You can create your own Performance category and Performance counters. To achieve this goal you can use Visual Studio tools, or .NET System.Diagnostics objects. In this post I’ll describe counters and category creation in a code using using System.Diagnostics; First of all you need to make a counters collection: CounterCreationDataCollection collection = new CounterCreationDataCollection(); Then you need to create performance counter CounterCreationData counter = new CounterCreationData(); counter.CounterName = "CountsPerSecond"; counter.CounterHelp = "CountsPerSecond"; counter.CounterType = PerformanceCounterType.RateOfCountsPerSecond32); collection.Add(counter); And place it into the category. As the category type you can use SingleInstance and M...

C# Custom Performance Counters - Introduction

Image
Table of content: I. C# Custom Performance Counters - Introduction II. C# Custom Performance Counters - First Performance Counter 1. Introduction There is a moment in software engineer life when it is time to check application performance. At this certain point you will ask yourself “How can I do it?”. Answer is not simple because you can do it in a very different way. You can of course find any 3 rd party application which will measure some things for you. You can make some kind of log file and insert some performance data to it, or you can use .NET System.Diagnostics namespace. In this article I’ll focus on System.Diagnostics. I’m not saying it is the best approach, I’ll just describe some elements of it and you can decide if it suits your needs or not. 2. Where I can find Performance counters in Windows. In Windows you can find some predefined performance counters. Just open Control Panel -> Administrative Tools -> Performance There you can find some predefined count...