Monday, January 06, 2025

A new SaaS Service for business strategy creation is born - www.scopy.me

Introducing SCOPY.ME, a groundbreaking AI-powered SaaS platform designed to revolutionize business strategy development. 

By integrating advanced AI algorithms with established strategic frameworks like SWOT Analysis, PESTEL Analysis, and the BCG Matrix, SCOPY.ME enables businesses to craft comprehensive strategies in minutes, streamlining decision-making and enhancing efficiency.

SCOPY.ME's intuitive interface guides users through a structured approach, covering all essential components of a successful strategy—from defining vision and objectives to creating a roadmap and planning projects. The platform's AI-driven insights and automation capabilities analyze vast amounts of data, providing actionable recommendations and automating tasks such as data collection and report generation, thereby saving time and resources.

For more information, visit the official website at scopy.me. Explore in-depth articles and insights on the SCOPY.ME Blog, and access detailed guides and support at the SCOPY.ME Documentation Center.

Sunday, April 15, 2012

Financial Terms - Always good to know

1. NAV
a. Net Asset Value
b. The value of the mutual –fund calculated daily (sometime more)
c. Total value of fund-dividend \ num of shares issued

2.OCIC
a. Open End Investment Company
b. A type of a mutual fund

3.SEC
a. Securities and Exchange Commission

4.IRA
a. Individual retirement Account
b. Allow to set 2K $ per year in MF without tax

5.ICI
a. Investment Company Institute
b. National association of Investment companies

6. Sector-Funds
a. A type of industry to invest in
b. Technology, biomedical, etc…

7. POP
a. Public Offering Price
b. When selling a MF
c. NAV + sales charge

8. Turnover
a. When a MF invests in securities, it sells and buys
these securities if a capital gain was achieved the
share holders of the MF will be taxed and will also
pay for the buying \ selling fees
b. Tot buy + sell \ 2 * fund total holdings

9. MF – FEES
a. Management fees
actual fees on managing the fund + administration
b. Non management fees
fees for other non managing parties like custodial,
accountant, board of directors, SEC registration
fee etc…
c. 12b-1 + non 12b-1 fees
12b1 – Marketing expenses of the fund according to the SEC rules
non 12b1 – other marketing not under SEC rules
d. Fees by the investor based on arrangements with the investor's broker

10. CDSL
a. Contingent Deferred Sales Load

11. TER
a. funds Total Expense Ratio

Monday, December 12, 2011

Tel Aviv a bustling 24-hour metropolis

Tel Aviv is very different from the rest of Israel. Dubbed the 'bubble' because of its individuality, it is famed for its cosmopolitan attitudes and dubious living. Tel Aviv is both European and Asian. It is one of the few cities where west meets east. The best way to see Tel Aviv is to walk
on its many shaded streets and boulevards. A few years ago they completed the "Tayelet", or promenade from Yarkon park along the Yarkon River, to the beaches.
Tel Aviv offers a contrast between 4000 years of history and a bustling 24-hour metropolis. Starting a journey from the top, at the Azrieli Observatory in the middle of Tel Aviv, offers an opportunity to explorer Tel Aviv from the highest possible perspective. You get an incredible overview from the 49th floor. The Azrieli Observatory offers a 3D movie and an audio guide about Tel Aviv and the restaurant offers candlelight dinners. The Museum of Art in Tel Aviv is one of the biggest Museums. It holds a big amount of works and offers a representative and interesting view of Israeli art and its culture. The Museum was opened in the early 1932, before the state of Israel was founded.


Touring through Yaffo
offers many interesting experiences. Old Yaffo, with the Old Port, the markets, the restaurants and the unique atmosphere, is a real delight. Some claim that Yaffo needs an overall renovation but the charm of Yaffo is unbeatable. Don’t miss the flea market! Work your way down to the Old Port, where you can walk around on of the most ancient, yet still active, ports in the world.
Florentine neighborhood is yet another southern neighborhood which, in resemblance to
Yaffo, is charming but unable to overcome financial and social difficulties. Many cafes, bars and food joints have been opened. Visit the elaborately decorated house of Israel's most highly acclaimed poet, Haim Nachman Bialik, which is appropriately situated on Bialik Street.
Known as "the city that never stops", Tel Aviv is a late-night metropolis, which wakes
up at midnight and runs wild all night long. Roads jammed with heavy traffic and people waiting in line for a table at a bar, or admission to a night club, are common sights at the city's nightlife areas - even as late as 4am! Tel Aviv's nightlife focuses mostly on pubs, cafes and nightclubs, whose music is in one level with that on most European cities' clubs. The city gets amazingly
active every night of the week, but on weekends it's even more crowded. Major centers where
locals and visitors love to play all night are Allenby St and its surroundings. Doors to the clubs usually open at 23:00 (often cheaper before 24:00) but the parties really hit off at between 1 to 2 AM. Big parties often have reduced price tickets on sale beforehand (Shenkin St is the place to look). Dance bars start going at 23:00 and go till the last person stops dancing. Weapons of any
kind or anything that could be used as a weapon are not tolerated in clubs and security checks are mandatory, so think about what to leave at the hotel.


The best day for going out is usually Thursday, with younger crowds and longer queues. Saturdays usually host ‘after parties’ and even ‘after-after parties’. On a good weekend you can keep dancing from Thursday evening to Saturday afternoon, if you’re up to it! Tel Aviv is very much the polar opposite of Jerusalem. It is a secular, hedonistic city, more liberal in its politics than Jerusalem and a city which lives on the cutting edge of the here and now.

Jerusalem Old City Tour
The Old City of Jerusalem is a real must-see, being home to sites of key religious significance, including the Temple Mount, the Western (Wailing) Wall, the Church of the Holy Sepulchre, the Dome of the Rock and al-Aqsa Mosque. You can easily spend a full day here: place a prayer between the cracks of the huge stones that make up the Western Wall, browse the stalls in the narrow streets of the Old City bazaar, and visit the site of Jesus’ crucifixion. This will probably be your main tourist sightseeing day on your visit to Israel.

Dead Sea Tour
The Lowest Point on Earth is one special place to visit. If you need to chill out, and especially
if you’re feeling rundown, the Dead Sea is the ideal place in Israel to visit. Bring your newspaper along for that picture opportunity, smother some of that mineral rich Dead Sea mud on and then float on your back in the warm, salty sea. Just avoid diving in!


Diving in Eilat
A lot of divers don't notice the most special and beautiful spots when they lay underneath their
noses. So here are 2 diving spots:
- Dolphin Reef: It’s an ecological site unique in Israel and
throughout the world where visitors can enjoy a natural atmosphere, magical
views, together with the unusual opportunity of meeting and observing dolphins
in their natural habitat.
- The University: This site name has been given due to its location
along the beach of the interuniversity institute in Eilat. The underwater view
in this spot is one of the beautiful, which includes corals inhabitants that
worth seeing.

Tel Aviv Some useful information

Weekends: Thursdays, Fridays and Saturdays

Food and Drink
Looking for restaurants in Tel Aviv, you should know that eating must not necessarily be expensive, and cheap food must not be fast food. As in many Middle East cities street food is very popular and should not be mixed up with fast food. It may not sound the most civilized way to eat but it’s a very common one. The most popular street food is falafel which is served within a pita.

things you should do:

  • Azrieli Observatory - Overview from the 49th floor
  • The Beaches – White sand, blue sea and plenty of sun
  • Old Yaffo – A unique city with 4000 years history
  • Nightlife – Endless spots for all tastes
  • Neve Tzedek – Museums, shop, restaurants
  • Tel Aviv Museum of Art – Israeli Art
  • Ha-Carmel Market – hustle bustle market of Tel Aviv’s most vibrant market.
  • Bauhaus Architecture – Stroll through the streets and see Bauhaus architecture.
  • Park Ha-Yarkon – outdoor activities and greenery
  • Suzanne Dellal Centre – Israeli and International artists

Monday, July 04, 2011

HTTP HEAD and OPTIONS

There are 2 other HTTP methods which are a part of a URI:

- HEAD: Retrieve a metadata-only representation
- OPTIONS: Check which HTTP methods a particular resource supports

HEAD:
- making a call to a resource to fetch metadata without downloading an entire collection
- a client can use HEAD to check if a resource exists, to find out other information about the resource without fetching it's entire representation. So we have the same functionality like a HTTP GET but now the call does not fetch data.

OPTIONS:
- The OPTIONS method lets the client to discover what it's allowed to do to a resource. The response to an OPTIONS request contains the HTTP Allow header, which lays out the subset of the uniform interface this resource supports.

E.g. : Allow: GET, HEAD

That means that the client can send a GET and HEAD request to this resource but the resource does not support any other methods - effectively, this resource is read-only.

Normal RESOURCE:


Advanced RESOURCE:

PUT vs. POST Creation Paradigm

To create a new “thing” shall I use PUT or POST?

There is a clear answer for this question:

- If the client is responsible for creating the ID of the “thing” use a PUT
E.g: “./users/roni” <- roni is unique and given by the client -this is a new URI!

- If the server is responsible for creating the ID of the “thing” use a POST
E.g. “./users/” and as a post key/value the client transfers username=roni and prob. to id would be an auto generated number.


The “thing” retrieval pattern

use GET and not POST

Why not POST?
–Overloaded POST: the not-so-RESTful pattern

–It’s overloaded because a single HTTP method is being used to signify any number of non-HTTP methods.

–By using POST it will happen very easy that we implement an RPC service. In a RPC service we are using post and the Action is one of it’s parameters: ”/orders?action=delete&id=13” That’s not REST!

it's as easy as that

GET vs. POST Retrieving Paradigm

To retrieve a “thing” from a Resource we have 2 options:

–The HTTP GET options:
•GET ./order/221
•GET ./order?id=221

–The HTTP POST option:
•POST /order
–id = 221 [key value] … add as much as you need!

RESTful from a conceptional view - Part 1

REST (Representational State Transfer) for 1 slide:

  • Web Services expose their data and functionality through resources identified by a unique URI
  • Uniform Interface Principle: Clients interact with resources through a fix set of verbs
    Example:
    - GET – read
    - PUT – update
    - DELETE – remove
    - POST – create
  • Multiple representations for the same resource
  • Hyperlinks model resource relationships and valid transfer state transitions for dynamic protocol description and discovery





Wednesday, March 02, 2011

a custom serialization test

works pretty fast

using System;
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;

namespace serializationtest
{
internal enum SerializedType : ushort
{
ByteArray = 0,
Object = 1,
String = 2,
Datetime = 3,
Bool = 4,
//SByte = 5, //Makes no sense.
Byte = 6,
Short = 7,
UShort = 8,
Int = 9,
UInt = 10,
Long = 11,
ULong = 12,
Float = 13,
Double = 14,

CompressedByteArray = 255,
CompressedObject = 256,
CompressedString = 257,
}

internal class Serializer
{
public static byte[] Serialize(object value, out SerializedType type, uint compressionThreshold)
{
byte[] bytes;
if (value is byte[])
{
bytes = (byte[])value;
type = SerializedType.ByteArray;
if (bytes.Length > compressionThreshold)
{
bytes = compress(bytes);
type = SerializedType.CompressedByteArray;
}
}
else if (value is string)
{
bytes = Encoding.UTF8.GetBytes((string)value);
type = SerializedType.String;
if (bytes.Length > compressionThreshold)
{
bytes = compress(bytes);
type = SerializedType.CompressedString;
}
}
else if (value is DateTime)
{
bytes = BitConverter.GetBytes(((DateTime)value).Ticks);
type = SerializedType.Datetime;
}
else if (value is bool)
{
bytes = new byte[] { (byte)((bool)value ? 1 : 0) };
type = SerializedType.Bool;
}
else if (value is byte)
{
bytes = new byte[] { (byte)value };
type = SerializedType.Byte;
}
else if (value is short)
{
bytes = BitConverter.GetBytes((short)value);
type = SerializedType.Short;
}
else if (value is ushort)
{
bytes = BitConverter.GetBytes((ushort)value);
type = SerializedType.UShort;
}
else if (value is int)
{
bytes = BitConverter.GetBytes((int)value);
type = SerializedType.Int;
}
else if (value is uint)
{
bytes = BitConverter.GetBytes((uint)value);
type = SerializedType.UInt;
}
else if (value is long)
{
bytes = BitConverter.GetBytes((long)value);
type = SerializedType.Long;
}
else if (value is ulong)
{
bytes = BitConverter.GetBytes((ulong)value);
type = SerializedType.ULong;
}
else if (value is float)
{
bytes = BitConverter.GetBytes((float)value);
type = SerializedType.Float;
}
else if (value is double)
{
bytes = BitConverter.GetBytes((double)value);
type = SerializedType.Double;
}
else
{
//Object
using (MemoryStream ms = new MemoryStream())
{
new BinaryFormatter().Serialize(ms, value);
bytes = ms.ToArray();
type = SerializedType.Object;
if (bytes.Length > compressionThreshold)
{
bytes = compress(bytes);
type = SerializedType.CompressedObject;
}
}
}
return bytes;
}

private static byte[] compress(byte[] bytes)
{
using (MemoryStream ms = new MemoryStream())
{
using (DeflateStream gzs = new DeflateStream(ms, CompressionMode.Compress, false))
{
gzs.Write(bytes, 0, bytes.Length);
}
ms.Close();
return ms.ToArray();
}
}

private static byte[] decompress(byte[] bytes)
{
using (MemoryStream ms = new MemoryStream(bytes, false))
{
using (DeflateStream gzs = new DeflateStream(ms, CompressionMode.Decompress, false))
{
using (MemoryStream dest = new MemoryStream())
{
byte[] tmp = new byte[bytes.Length];
int read;
while ((read = gzs.Read(tmp, 0, tmp.Length)) != 0)
{
dest.Write(tmp, 0, read);
}
dest.Close();
return dest.ToArray();
}
}
}
}

public static object DeSerialize(byte[] bytes, SerializedType type)
{
switch (type)
{
case SerializedType.String:
return Encoding.UTF8.GetString(bytes);
case SerializedType.Datetime:
return new DateTime(BitConverter.ToInt64(bytes, 0));
case SerializedType.Bool:
return bytes[0] == 1;
case SerializedType.Byte:
return bytes[0];
case SerializedType.Short:
return BitConverter.ToInt16(bytes, 0);
case SerializedType.UShort:
return BitConverter.ToUInt16(bytes, 0);
case SerializedType.Int:
return BitConverter.ToInt32(bytes, 0);
case SerializedType.UInt:
return BitConverter.ToUInt32(bytes, 0);
case SerializedType.Long:
return BitConverter.ToInt64(bytes, 0);
case SerializedType.ULong:
return BitConverter.ToUInt64(bytes, 0);
case SerializedType.Float:
return BitConverter.ToSingle(bytes, 0);
case SerializedType.Double:
return BitConverter.ToDouble(bytes, 0);
case SerializedType.Object:
using (MemoryStream ms = new MemoryStream(bytes))
{
return new BinaryFormatter().Deserialize(ms);
}
case SerializedType.CompressedByteArray:
return DeSerialize(decompress(bytes), SerializedType.ByteArray);
case SerializedType.CompressedString:
return DeSerialize(decompress(bytes), SerializedType.String);
case SerializedType.CompressedObject:
return DeSerialize(decompress(bytes), SerializedType.Object);
case SerializedType.ByteArray:
default:
return bytes;
}
}
}
}

Friday, December 31, 2010

DB Design consideration

 Is easily to update – either in real time, or in monthly batches.
 Permits ad hoc drill down queries and reports
 Allows you to store an unlimited amount of data about any object
 Permits you to add fields without redoing the whole database.
 Makes it easy to modify the data and to retrieve information
 Makes it easy to develop and carry out personalized communications.
 Permits the inclusion of business rules in the database design.

http://www.crm2day.com/editorial/EpVkEkkylZNkorRHLx.php

Thursday, December 23, 2010

How To: Sending email over Power Shell

$EmailFrom = "your@email.com"
$EmailTo = "destination@email.com"
$Subject = "Your subject goes here"
$Body = "the body info which usually will a parameter with gathered info."
$SMTPServer = "smtp.email.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("user", "pwd");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

links for virtualization architectures

A great overview of tools and links for virtualization architectures


http://www.chriswolf.com/?page_id=93

Wednesday, December 22, 2010

How To: Add Context Menu Registry

I found to today a small utility to scan and visualize my harddisc (http://www.steffengerlach.de/freeware/). in the installation folder i found the following code to add a program to the registry:

save the content in a *.reg file to execute it:

ADD:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Scan_Content]
@="Scan Content"

[HKEY_CLASSES_ROOT\Directory\shell\Scan_Content\command]
@="C:\\Program Files\\Scanner\\Scanner.exe \"%1\""

[HKEY_CLASSES_ROOT\Drive\shell\Scan_Content]
@="Scan Content"

[HKEY_CLASSES_ROOT\Drive\shell\Scan_Content\command]
@="C:\\Program Files\\Scanner\\Scanner.exe \"%1\""


REMOVE:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\Directory\shell\Scan_Content]

[-HKEY_CLASSES_ROOT\Directory\shell\Scan_Content\command]


[-HKEY_CLASSES_ROOT\Drive\shell\Scan_Content]

[-HKEY_CLASSES_ROOT\Drive\shell\Scan_Content\command]

Sunday, December 19, 2010

How To: Versioning Builds With TFS 2010

http://www.richard-banks.org/2010/07/how-to-versioning-builds-with-tfs-2010.html

by Richard Banks

how to Office Developers is called No-PIA

This sample shows how to use the C# 4.0 features called COM Interop, omitting ref, indexed properties and Named and Optional Parameters to create a C# application that communicates with Microsoft Office. C# developers have traditionally had to write relatively verbose code in order to access Microsoft Office applications such as Word or Excel. New C# 4.0 features make it much simpler to call Office APIs.

Consider this declaration for a Microsoft Office method used in this sample:

void PasteSpecial(ref object IconIndex = null, ref object Link = null,
ref object Placement = null, ref object DisplayAsIcon = null,
ref object DataType = null, ref object IconFileName = null,
ref object IconLabel = null);

As you can see, this method takes a fairly large number of parameters. In C#, developers have traditionally had to fill out each parameter, even though the developers of this call had intended to simplify its use by supporting optional parameters. In C# 4.0, the new support for named and optional parameters allows the developer to specify only the parameters of interest, and to take default values for the other parameters:

word.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);

In the call to the PasteSpecial method the Link and DisplayAsIcon parameters are explicitly named, and set to the value true. All the other parameters default to values specified internally by the developers of the Office API, as shown in the above signature.

You can create your own calls that support named and optional paramters. Consider this example:

public void M(int x, int y = 5, int z = 7) { }

In this method, the parameters y and z are assigned default values. Calls to this method might look like this:

M(1, 2, 3); // ordinary call of M
M(1, 2); // omitting z – equivalent to M(1, 2, 7)
M(1); // omitting both y and z – equivalent to M(1, 5, 7)
M(1, z: 3); // passing z by name
M(x: 1, z: 3); // passing both x and z by name
M(z: 3, x: 1); // reversing the order of arguments

A new dynamic feature in C# 4.0 makes Office much easier for C# developers to use. Types used in Office are now presented to C# developers as if they were declared with the type dynamic. Here is the traditionally way to set a Cell property:

((Excel.Range)excel.Cells[1, 1]).Value2 = "ID";

In C# 4.0 developers can now write code that looks like this:

X1.Cells[1, 1].Value = "ID";

A feature called Index Properties allows us to simplify the call further, so that it looks like this:

xl.Cells[1, 1] = "ID";

A final feature of interest to Office Developers is called No-PIA. Primary Interop Assemblies are generated from COM interfaces and provide helpful type support at design time. At runtime, however, they increase the size of your program, and can cause versioning issues. The No-PIA feature allows you to continue to use PIAs at design but omit them at runtime. The C# compiler will bake the small part of the PIA that a program actually uses directly into its assembly. You will no longer need to include PIA's in the distribution of your programs.


// Copyright © Microsoft Corporation.  All Rights Reserved.
// This code released under the terms of the
// Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)
//

using System;
using System.Collections.Generic;

using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;

public class Account
{
public int ID { get; set; }
public double Balance { get; set; }
}

public class Program
{
static void Main(string[] args)
{
var checkAccounts = new List<Account> {
new Account {
ID = 345,
Balance = 541.27
},
new Account {
ID = 123,
Balance = -127.44
}
};

DisplayInExcel(checkAccounts, (account, cell) =>
{
// This multiline lambda will set
// custom processing rules.
cell.Value = account.ID;
cell.Offset[0, 1].Value = account.Balance;

if (account.Balance < 0)
{
cell.Interior.Color = 255;
cell.Offset[0, 1].Interior.Color = 255;
}
});

var word = new Word.Application();
word.Visible = true;
word.Documents.Add();
word.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
}

public static void DisplayInExcel(IEnumerable<Account> accounts,
Action<Account, Excel.Range> DisplayFunc)
{
var xl = new Excel.Application();

xl.Workbooks.Add();
xl.Visible = true;
xl.Cells[1, 1] = "ID";
xl.Cells[1, 2] = " Balance";
xl.Cells[2, 1].Select();
foreach (var ac in accounts)
{
DisplayFunc(ac, xl.ActiveCell);
xl.ActiveCell.Offset[1, 0].Select();
}

xl.Range["A1:B3"].Copy();
//xl.get_Range("A1:B3").Copy();

xl.Columns[1].AutoFit();
xl.Columns[2].AutoFit();
}
}

Thursday, December 16, 2010

ThreadSafeCache class in C#



using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Collections.ObjectModel;

namespace Caching
{
public class ThreadSafeCache<T1, T2>
{
static ReaderWriterLockSlim rwlock = new ReaderWriterLockSlim();
private const int DoNotTimeOut = 0;
private Dictionary<T1, T2> mCache = new Dictionary<T1, T2>();

public bool ContainsKey(T1 key)
{
bool result = false;
rwlock.EnterReadLock();
try
{
result = mCache.ContainsKey(key);
}
finally
{
rwlock.ExitReadLock();
}
return result;
}

public T2 this[T1 index]
{
get
{
T2 result;
rwlock.EnterReadLock();
try
{
result = mCache[index];
}
finally
{
rwlock.ExitReadLock();
}
return result;
}
set
{
rwlock.EnterWriteLock();
try
{
mCache[index] = value;
}
finally
{
rwlock.ExitWriteLock();
}
}
}

public void Add(T1 key, T2 value)
{
rwlock.EnterWriteLock();
try
{
mCache.Add(key, value);
}
finally
{
rwlock.ExitWriteLock();
}
}
public void AddOrIgnore(T1 key, T2 value)
{
rwlock.EnterWriteLock();
try
{
if (!mCache.ContainsKey(key))
mCache.Add(key, value);
}
finally
{
rwlock.ExitWriteLock();
}
}
public void AddOrReplace(T1 key, T2 value)
{
rwlock.EnterWriteLock();
try
{
if (!mCache.ContainsKey(key))
mCache.Add(key, value);
else
mCache[key] = value;
}
finally
{
rwlock.ExitWriteLock();
}
}
public bool Remove(T1 key)
{
bool result = false;
rwlock.EnterWriteLock();
try
{
result = mCache.Remove(key);
}
finally
{
rwlock.ExitWriteLock();
}
return result;
}

public void Clear()
{
rwlock.EnterWriteLock();
try
{
mCache.Clear();
}
finally
{
rwlock.ExitWriteLock();
}
}

public ReadOnlyCollection<T1> Keys
{
get
{
ReadOnlyCollection<T1> result;
rwlock.EnterReadLock();
try
{
result = new ReadOnlyCollection<T1>(new List<T1>(mCache.Keys));
}
finally
{
rwlock.ExitReadLock();
}
return result;
}
}
}
}

Monday, December 13, 2010

High Availability

Availability is traditionally measured according the percentage of time that the system is available to its end users.

Therefore, 100 percent availability means that the system is available all of the time and there is no downtime. However, achieving 100 percent availability is virtually impossible. Too many technical and human factors are involved for that to be a realistic possibility. Even so, by utilizing technology and creating a suitable operating environment, very high levels of availability are achievable. The highest practical measure of availability is typically expressed as “five nines” or 99.999 percent. The percentage of availability can be calculated using the following formula:

Percentage of availability = ((total elapsed time – sum of downtime)/total elapsed time)

The percentage of system availability equals the total elapsed time minus the sum of the system downtime. This result is then divided by the total elapsed time.

Let’s take a little deeper look at what this means in a practical sense. A year has a total of 8,760 hours (24 hours per day × 365 days per year = 8,760 hours). Therefore, an availability of 8,760 hours over a year would be 100 percent uptime as you can see in the following equation:

100 = ((8,760 – 0)/8,760) × 100

A much more common scenario is for a system to have a regular period of downtime every month. For many organizations this might be as little as eight hours of downtime in every month, or essentially two hours per week. This downtime might be the result of planned system maintenance such as system backup procedures. Two hours of downtime per week or eight hours per month results in 98.9 percent availability, as the following formula illustrates:

98.9 = ((8,760 – (8 × 12)/8,760)) × 100

Many organizations don’t achieve that level of availability. However, when expressed as a measure of nine, 98.9 percent isn’t even two nines, as the base level of availability is lower than 99 percent. While one nine may not seem like a high level of availability, for many organizations one day of downtime per month would be perfectly adequate.

However, many businesses are running critical lines of business and e-commerce applications where one nine of availability is not enough. These organizations require three nines or even five nines of availability. So how much actual downtime is associated with these levels of availability? Table 1-1 gives you an idea of the amount of downtime that is permitted with each increasing level of “nines.”
Number of Nines and Downtime





































Number of NinesPercentage AvailabilityDowntime per YearDowntime per MonthDowntime per Week
Two nines99.0%3.65 days7.30 hrs1.68 hrs
Three nines99.9%8.76 hrs43.8 mins10.1 mins
Four nines99.99%52.6 mins4.38 mins1.01 mins
Five nines99.999%5.26 mins26.28 secs6.06 secs


The above table shows how each increasing nine level of availability requires significant decreases in downtime. While reaching two nines of availability can be accomplished with a total of 1.68 hours per week of downtime, five nines of availability is only slightly more than five minutes of downtime per year.

Five minutes of downtime per year is an impressive and difficult number to achieve. Another important factor to remember is that the costs and operational disciplines increase substantially with each successive level of availability. Achieving these higher levels of availability cannot be accomplished using technology only. Creating a highly available environment requires a combination of several factors.

Tuesday, November 23, 2010

Developer Tools & Platforms Performance [from support.microsoft.com]

http://support.microsoft.com/default.aspx?scid=kb;EN-US;974348 - great stuff ms.

Note: This article discusses a scenario that may be addressed by Microsoft Advisory Services.

Microsoft Advisory Services is an hourly fee-based, consultative support option that provides proactive support beyond your break-fix product maintenance needs. This is a remote, phone-based support option that includes working with the same technician for assistance with issues like product migration, code review, or new program development. This service is typically used for shorter engagements, and is designed for developers and IT professionals who do not require the traditional onsite consulting or sustained account management services that are available from other Microsoft support options. This article also provides some self-help resources for this scenario.

For additional information on Microsoft Advisory Services, including on how to engage, refer to this Microsoft web page:
http://support.microsoft.com/default.aspx?pr=AdvisoryService


Microsoft can provide Performance Tuning services for your software solutions, Microsoft development technologies and platforms such as Common Language Runtime (CLR) framework, Internet Information Server (IIS), developer tools like Visual Studio.NET, and other Microsoft Software Development related tools and solutions. Example includes:
IIS/ASP performance diagnostics and tuning, such as CPU spikes and slow user experience.
CLR performance debugging, profiling, detailed analysis, and architectural best practices.
Team Foundation Server performance issues, such as Work Item Tracking, Source Control, Reporting, and Server Responsiveness.


Below is a list of self-help resources for this scenario. These resources may also be used by Microsoft Support Engineers during an Advisory Services engagement.

IIS 6 Performance Forum

A forum aimed at sharing ideas, techniques for optimizing IIS performance.
http://forums.iis.net/1037.aspx (http://forums.iis.net/1037.aspx)

IIS 7 Performance Forum

Discussion on how to effectively tweak IIS 7 to resolve issues related to performance.
http://forums.iis.net/1050.aspx (http://forums.iis.net/1050.aspx)

PAG Performance Testing Guide

This guide shows you an end-to-end approach for implementing performance testing. Whether you are new to performance testing, or looking for ways to improve your current performance testing approach, you will find insights that you can tailor for your specific scenarios.
http://msdn.microsoft.com/en-us/library/bb924375.aspx

PAG Improving .NET Application Performance and Scalability

This guide provides end-to-end guidance for managing performance and scalability throughout your application life cycle to reduce risk and lower total cost of ownership. It provides a framework that organizes performance into a handful of prioritized categories where your choices heavily impact performance and scalability success.
http://msdn.microsoft.com/en-us/library/ms998530.aspx

Optimizing Performance of Database Access in IIS

This document provides some "best practices" for optimizing database access.
http://msdn.microsoft.com/en-us/library/ms525484.aspx

ASP.NET Performance Monitoring and When to Alert Administrators

Discusses which performance counters are most helpful in diagnosing stress and performance issues in Microsoft ASP.NET applications, what thresholds should be set in order to alert administrators to problems, and other resources that can be used to monitor the health of an ASP.NET application.
http://msdn.microsoft.com/en-us/library/ms972959.aspx

Designing Scalable IIS Applications

This guide provides design considerations for performance and scalability.
http://msdn.microsoft.com/en-us/library/ms525522.aspx


Scaling Strategies for ASP.NET Applications

This MSDN article discusses scaling requirements for ASP.NET applications.
http://msdn.microsoft.com/en-us/magazine/cc500561.aspx?pr=blog

Tools for Optimizing Performance

This document lists brief descriptions of performance-optimizing tools and how to access them.
http://msdn.microsoft.com/en-us/library/dd328379.aspx

Design and Configuration for Performance (ASP.NET)

This topic discusses design, configuration, compilation, and memory options available to improve the performance of a Web application.
http://msdn.microsoft.com/en-us/library/ms227998.aspx


ASP.NET Performance Articles

This document provides a listing of articles that can be used to improve and montior the performance of your applications.
http://msdn.microsoft.com/en-us/library/44e5wy6k(VS.85).aspx

Troubleshooting a Performance Issue with Failed Request Tracing and appcmd in IIS 7

This blog post discusses how to troubleshoot a performance issue in IIS 7.
http://blogs.msdn.com/tess/archive/2008/08/19/troubleshooting-a-performance-issue-with-failed-request-tracing-and-appcmd-in-iis7.aspx

BTess's "Performance Issues and Hangs"

List of blog postings regarding performance issues.
http://blogs.msdn.com/tess/archive/tags/Performance+issues+and+hangs/default.aspx

How to View What ASP.NET Requests Are Doing at Runtime

This blog post discusses a tool with a User Interface that allows you to choose a process and thread and see the managed call stack at that point in time that can be run on IIS 6.0.
http://blogs.msdn.com/webtopics/archive/2009/05/05/how-to-view-what-asp-net-requests-are-doing-at-runtime-on-iis-6-0.aspx


Troubleshooting System.OutOfMemoryExceptions in ASP.NET

This blog post discusses how to troubleshoot OutOfMemoryExceptions in ASP.NET.
http://blogs.msdn.com/webtopics/archive/2009/05/22/Troubleshooting-System.OutOfMemoryExceptions-in-ASP.NET.aspx


Javascript Resources
Profiling Script with the Developer Tools

This page provides an introduction to script profiling, which can be used to identify and resolve performance-related issues.
http://msdn.microsoft.com/en-us/library/dd565629(VS.85).aspx

JScript Debugger in Internet Explorer 8

This blog post provides information on how to use the JScript debugger

http://blogs.msdn.com/jscript/archive/2008/03/13/jscript-debugger-in-internet-explorer-8.aspx

Improved Productivity Through Internet Explorer 8 Developer Tools

This blog post focuses on the developer tools available for Internet Explorer 8.
http://blogs.msdn.com/ie/archive/2008/03/07/improved-productivity-through-internet-explorer-8-developer-tools.aspx

IE + JavaScript Performance Recommendations - Part 1

This blog post discusses ways to improvie performance of JavaScript.
http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx


IE + JavaScript Performance Recommendations - Part 2: JavaScript Code Inefficiencies

This blog post discusses how to avoid JavaScript code inefficiencies.
http://blogs.msdn.com/ie/archive/2006/11/16/ie-javascript-performance-recommendations-part-2-javascript-code-inefficiencies.aspx

IE + JavaScript Performance Recommendations - Part 3: JavaScript Code Inefficiencies

This blog post focuses on specific inefficiencies related to closures and object-oriented programming.
http://blogs.msdn.com/ie/archive/2007/01/04/ie-jscript-performance-recommendations-part-3-javascript-code-inefficiencies.aspx

Performance Optimization of Arrays - Part 1

This blog post discusses how to improve performance of Array operations
http://blogs.msdn.com/jscript/archive/2008/03/25/performance-optimization-of-arrays-part-i.aspx

Performance Optimization of Arrays - Part II

This blog post continues the discussion on how to improve performance of Array operations.
http://blogs.msdn.com/jscript/archive/2008/04/08/performance-optimization-of-arrays-part-ii.aspx

Performance issues with "String Concatenation" in JScript

This blog post focuses on how to improve the performance of string concatenations in JScript.
http://blogs.msdn.com/jscript/archive/2007/10/17/performance-issues-with-string-concatenation-in-jscript.aspx

Eval is Evil - Part 1

This blog post provides alternative solutions to the use of the Eval method.
http://blogs.msdn.com/ericlippert/archive/2003/11/01/53329.aspx (http://blogs.msdn.com/ericlippert/archive/2003/11/01/53329.aspx)

Eval is Evil - Part two

This blog post continues the discussion of alternate solutions to the Eval method.
http://blogs.msdn.com/ericlippert/archive/2003/11/04/53335.aspx (http://blogs.msdn.com/ericlippert/archive/2003/11/04/53335.aspx)


Networking Resources
How to capture network traffic with Network Monitor

The purpose of this article is to provide you with the information needed to capture network traffic from a local area network using Microsoft's Network Monitor.
http://support.microsoft.com/kb/148942

Fiddler PowerToy - Part 1: HTTP Debugging

Learn how to use the Microsoft Fiddler HTTP debugger when developing and testing Web applications and clients.
http://msdn.microsoft.com/en-us/library/bb250446(VS.85).aspx

Fiddler PowerToy - Part 2: HTTP Performance

Learn how to build a faster Web site using the Microsoft Fiddler HTTP Debugger.
http://msdn.microsoft.com/en-us/library/bb250442(VS.85).aspx (http://msdn.microsoft.com/en-us/library/bb250442(VS.85).aspx)

Part 2: TCP Performance Expert and General Trouble Shooting

This blog discusses TCP Performance Expert and General Troubleshooting skills.
http://blogs.technet.com/netmon/archive/2007/01/26/part-2-tcp-performance-expert-and-general-trouble-shooting.aspx (http://blogs.technet.com/netmon/archive/2007/01/26/part-2-tcp-performance-expert-and-general-trouble-shooting.aspx)

TCP Analyzer Expert: Make Your Network Run Faster

This blog post focuses on how to use the TCP Analyzer Expert.
http://blogs.technet.com/netmon/archive/2009/06/30/tcp-analyzer-expert-make-your-network-run-faster.aspx (http://blogs.technet.com/netmon/archive/2009/06/30/tcp-analyzer-expert-make-your-network-run-faster.aspx)


Tools Resources
Fiddler Web Debugging Proxy

Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. This document discusses use of the tool.
http://www.fiddlertool.com/fiddler/

AjaxScope

Ajax View enables developer to see and control the behaviors of their web applications on user's desktops. This page discucess how tu use this tool.

http://research.microsoft.com/en-us/projects/ajaxview/

Microsoft Network Monitor

Tool to allow capturing and protocol analysis of network traffic.
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=983b941d-06cb-4658-b7f6-3088333d062f (http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=983b941d-06cb-4658-b7f6-3088333d062f)

Debugging tools for Windows

You can use Debugging Tools for Windows to debug drivers, applications, and services on systems that are running Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, or Windows Server 2008.
http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)

DebugDiag

The Debug Diagnostic Tool (DebugDiag) is designed to assist in troubleshooting issues such as hangs, slow performance, memory leaks or fragmentation, and crashes in any Win32 user-mode process.
http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en (http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en)

neXpert Performance Tool

Discussion On Using Fiddler and neXpert To Identify and Fix Web Performance Issues.
http://blogs.msdn.com/nexpert/ (http://blogs.msdn.com/nexpert/)

Strace
STRACE is a socket/SSL tracer designed to generate LOG for Internet Explorer.

http://www.microsoft.com/downloads/details.aspx?familyid=F5EC767F-27F2-4FB3-90A5-4BF0D5F4810A&displaylang=en (http://www.microsoft.com/downloads/details.aspx?familyid=F5EC767F-27F2-4FB3-90A5-4BF0D5F4810A&displaylang=en)

HTTPReplay
HTTPREPLAY is a SOCKTRC plugin allowing to analyze and replay HTTP traffic.

http://www.microsoft.com/downloads/details.aspx?familyid=d25ba362-c17b-4d80-a677-1faff862e629&displaylang=en&tm

Design Resources
Designing for Add-on Performance

Blog post describing how to improve add-on performance with Internet Explorer.
http://blogs.msdn.com/ie/archive/2008/04/04/designing-for-add-on-performance.aspx

Performance Considerations in Internet Explorer

This page provides links and tips for getting extra performance from DHTML, Script, Web Servers, ActiveX Controls, Java Applets, and Plugins.
http://msdn.microsoft.com/en-us/library/ms533021(VS.85).aspx

Faster DHTML in 12 Steps

This article describes how using some DHTML features can affect performance more than others, and it presents tips that will help your pages perform faster.
http://msdn.microsoft.com/en-us/library/ms533019(VS.85).aspx (http://msdn.microsoft.com/en-us/library/ms533019(VS.85).aspx)

Building High Performance HTML Pages

This article presents some tips on how you can get the most performance out of your pages.
http://msdn.microsoft.com/en-us/library/ms533020(VS.85).aspx

Frequent Flyers: Boosting Performance on DHTML Pages

This blog post discusses how to get better performance from your Dynamic HTML pages.
http://msdn.microsoft.com/en-us/library/bb264005(VS.85).aspx

Asynchrony: Loved Your Performance

This article discusses how to improve performance with asynchrony.
http://msdn.microsoft.com/en-us/library/bb263994(VS.85).aspx

Building ActiveX Controls for Internet Explorer

This article covers features of Windows Internet Explorer that a developer writing Microsoft ActiveX Controls should take into account when targeting Internet Explorer as a container.
http://msdn.microsoft.com/en-us/library/aa751970(VS.85).aspx


Memory Leak Resources
Understanding and Solving Internet Explorer Leak Patterns


This article discusses how to troubleshoot and resolve memory leaks.
http://msdn.microsoft.com/en-us/library/bb250448(VS.85).aspx


General Resources
Learn Internet Explorer

A series of topics designed to teach Internet Explorer programming.
http://msdn.microsoft.com/en-us/ie/aa740473.aspx

Measuring Browser Performance: Understanding issues in benchmarking and performance analysis

This document explains the various browser and network components and how each piece can impact performance when benchmarking
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=cd8932f3-b4be-4e0e-a73b-4a373d85146d


IE8 Performance

Blog post discussing the performance changes in Internet Explorer 8.
http://blogs.msdn.com/ie/archive/2008/08/26/ie8-performance.aspx

Common Issues in Assessing Browser Performance

This blog post focuses on performance with a discussion around some of the issues impacting browser performance testing and the techniques that you can use to effectively measure browser performance.
http://blogs.msdn.com/ie/archive/2009/01/23/common-issues-in-assessing-browser-performance.aspx


How to improve browsing performance in Internet Explorer

This article describes how to improve browsing performance in Internet Explorer.
http://support.microsoft.com/kb/153790

How to optimize Internet Explorer

This article describes how to reset or optimize Internet Explorer 7.
http://support.microsoft.com/kb/936213

How to troubleshoot Internet Explorer issues in Windows Vista and in Windows XP

This article discusses how to troubleshoot possible issues that you may experience when you use Windows Internet Explorer 7 or Windows Internet Explorer 8 on a computer that is running Windows Vista.
http://support.microsoft.com/kb/936215

Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use (http://go.microsoft.com/fwlink/?LinkId=151500) for other considerations.

Tuesday, November 16, 2010

nServiceBus Licenses

really cool projects

******************************

NHibernate is licensed under the LGPL v2.1 license as described here:

http://www.hibernate.org/license.html

NHibernate binaries are merged into NServiceBus allowed under the LGPL license terms found here:

http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt

******************************


LinFu is licensed under the LGPL v3 license as described here:

http://code.google.com/p/linfu/

LinFu binaries are merged into NServiceBus allowed under the LGPL license terms found here:

http://www.gnu.org/licenses/lgpl-3.0.txt

******************************


Iesi.Collections binaries are merged into NServiceBus allowed under the license terms found here:

Copyright © 2002-2004 by Aidant Systems, Inc., and by Jason Smith.

Copied from http://www.codeproject.com/csharp/sets.asp#xx703510xx that was posted by JasonSmith 12:13 2 Jan '04

Feel free to use this code any way you want to. As a favor to me, you can leave the copyright in there. You never know when someone might recognize your name!

If you do use the code in a commercial product, I would appreciate hearing about it. This message serves as legal notice that I won't be suing you for royalties! The code is in the public domain.

On the other hand, I don't provide support. The code is actually simple enough that it shouldn't need it.

******************************


Fluent NHibernate is licensed under the BSD license as described here:

http://github.com/jagregory/fluent-nhibernate/raw/master/LICENSE.txt

Fluent NHibernate binaries are merged into NServiceBus allowed under the terms of the license.

******************************


Autofac is licensed under the MIT license as described here:

http://code.google.com/p/autofac/

Autofac binaries are linked into the NServiceBus distribution allowed under the license terms found here:

http://www.opensource.org/licenses/mit-license.php

******************************

Spring.NET is licensed under the Apache license version 2.0 as described here:

http://www.springframework.net/license.html

Spring.NET binaries are merged into NServiceBus allowed under the license terms found here:

http://www.apache.org/licenses/LICENSE-2.0.txt

******************************


Antlr is licensed under the BSD license as described here:

http://antlr.org/license.html

Antlr binaries are merged into NServiceBus allowed under the license terms described above.

******************************


Common.Logging is licensed under the Apache License, Version 2.0 as described here:

http://netcommon.sourceforge.net/license.html

Common.Logging binaries are merged into NServiceBus allowed under the LGPL license terms found here:

http://www.apache.org/licenses/LICENSE-2.0.txt

******************************


StructureMap is licensed under the Apache License, Version 2.0 as described here:

http://structuremap.github.com/structuremap/index.html

StructureMap baries are linked into the NServiceBus distribution allowed under the license terms found here:

http://www.apache.org/licenses/LICENSE-2.0.txt

******************************


Castle is licensed under the Apache License, Version 2.0 as described here:

http://www.castleproject.org/

Castle binaries are linked into the NServiceBus distribution allowed under the license terms found here:

http://www.apache.org/licenses/LICENSE-2.0.txt

******************************


Unity is licensed under the MSPL license as described here:

http://unity.codeplex.com/license

Unity binaries are linked into the NServiceBus distribution allowed under the license terms described above.

******************************


Log4Net is licensed under the Apache License, Version 2.0 as described here:

http://logging.apache.org/log4net/license.html

Log4Net binaries are linked into the NServiceBus distribution allowed under the license terms described above.

******************************


TopShelf is licensed under the Apache License, Version 2.0 as described here:

http://code.google.com/p/topshelf/

TopShelf binaries are merged into NServiceBus as allowed under the license terms described here:

http://www.apache.org/licenses/LICENSE-2.0.txt

******************************


SQLite is in the public domain as described here:

http://www.sqlite.org/copyright.html

SQLite binaries are linked into the NServiceBus distribution allowed under the license terms described above.

******************************


Rhino Mocks is licensed under the BSD License as described here:

http://www.ayende.com/projects/rhino-mocks.aspx

Rhino Mocks binaries are merged into NServiceBus allowed under the license terms described here:

http://www.opensource.org/licenses/bsd-license.php

Shared Cache - .Net Caching made easy

All information about Shared Cache is available here: http://www.sharedcache.com/. Its free and easy to use, we provide all sources at codeplex.

Facebook Badge