воскресенье, 7 декабря 2008 г.

Get Image from HTTP URL - .NET, ASP.NET

Overview:
Create image object and save it into file by URL.

Depending on your needs it can be two solutions:


Solution 1 - when you need to make some manipulations with the image object (resize, crop, etc) before saving to disk:
1. get Stream from URL using WebRequest class
2. Create Image object from stream using System.Drawing.Image.FromStream method
3. Make manipulations with image object
3. Save image to file on disk using System.Drawing.Image.Save method


Solution 2 - when you need to get image from Url and just save it to disk as-is.
1. get Stream from URL using WebRequest class
2. Create new file and stream for it
3. Get data from Webrequest's stream in binary format and put this data into file stream.

Below is the full code for each of the solutions


Code for solution 1:

using System.Net;
using System.IO;

public bool getImageByUrl(string url, string filename)
{

WebResponse response = null;
Stream remoteStream = null;
StreamReader readStream = null;
try
{
WebRequest request = WebRequest.Create(url);
if (request != null)
{
response = request.GetResponse();
if (response != null)
{
remoteStream = response.GetResponseStream();

readStream = new StreamReader(remoteStream);

System.Drawing.Image img = System.Drawing.Image.FromStream(remoteStream);

if (img == null)
return false;

// YOUR CODE HERE: make manipulations with the image object


// save image to disk
img.Save( filename, System.Drawing.Imaging.ImageFormat.Jpeg );
img.Dispose();
}
}
}
finally
{
if (response != null) response.Close();
if (remoteStream != null) remoteStream.Close();
if (readStream != null) readStream.Close();
}

return true;
}


code for solution 2

public static bool saveImageByUrlToDisk(string url, string filename, out string imageType)
{
imageType = "";

WebResponse response = null;
Stream remoteStream = null;
StreamReader readStream = null;
try
{
WebRequest request = WebRequest.Create(url);
if (request != null)
{
response = request.GetResponse();
if (response != null)
{
remoteStream = response.GetResponseStream();


// analyze image type, image extension
string content_type = response.Headers["Content-type"];

imageType = content_type;

if (content_type == "image/jpeg" || content_type == "image/jpg")
{
imageType = "jpg";
}
else if (content_type == "image/png")
{
imageType = "png";
}
else if (content_type == "image/gif")
{
imageType = "gif";
}
else
{
imageType = "";

return false;
}


readStream = new StreamReader(remoteStream);

Stream fw = File.Open(filename, FileMode.Create);

//
byte[] buf = new byte[256];
int count = remoteStream.Read(buf, 0, 256);
while (count > 0)
{
fw.Write(buf, 0, count);

count = remoteStream.Read(buf, 0, 256);
}

fw.Close();
}
}
}
finally
{
if (response != null) response.Close();
if (remoteStream != null) remoteStream.Close();
}

return true;
}

пятница, 28 ноября 2008 г.

Write Image to Response.OutputStream - ASP.NET

read an image from disk and write it out to the Response.Outputstream.


public void ProcessRequest(HttpContext oContext, string sFileName)
{

string sPath=oContext.Server.MapPath(".");
try
{
if (sFileName.Length <1) { return; }
System.Drawing.Image oImg = System.Drawing.Image.FromFile(sPath + sFileName,true);
oImg.Save(oContext.Response.OutputStream,ImageFormat.Jpeg);
oImg.Dispose();
}
catch (Exception e) { oContext.Response.Write(e.Message); }

}

среда, 12 ноября 2008 г.

Format strings - .NET

.NET Format String 101

"I see stuff like {0,-8:G2} passed in as a format string. What exactly does that do?" -- Very Confused String Formatter

The above format can be translated into this:

"{[,][:]}"

argument index: This represent which argument goes into the string.

String.Format("first = {0};second = {1}", "apple", "orange");

String.Format("first = {1};second = {0}", "apple", "orange");

gives the following strings:

"first = apple;second = orange"

"first = orange;second = apple"

alignment (optional): This represent the minimal length of the string.

Postive values, the string argument will be right justified and if the string is not long enough, the string will be padded with spaces on the left.

Negative values, the string argument will be left justied and if the string is not long enough, the string will be padded with spaces on the right.

If this value was not specified, we will default to the length of the string argument.

String.Format("{0,-10}", "apple"); //"apple "

String.Format("{0,10}", "apple"); //" apple"

format string (optional): This represent the format code.

Numeric format specifier is available here. (e.g. C, G...etc.)
Datetime format specifier is available here.

Enumeration format specifier is available here.

Custom Numeric format specifier is available here. (e.g. 0. #...etc.)

Custom formatting is kinda hard to understand. The best way I know how to explain something is via code:

int pos = 10;

int neg = -10;

int bigpos = 123456;

int bigneg = -123456;

int zero = 0;

string strInt = "120ab";

String.Format("{0:00000}", pos); //"00010"

String.Format("{0:00000}", neg); //"-00010"

String.Format("{0:00000}", bigpos); //"123456"

String.Format("{0:00000}", bigneg); //"-123456"

String.Format("{0:00000}", zero); //"00000"

String.Format("{0:00000}", strInt); //"120ab"

String.Format("{0:#####}", pos); //"10"

String.Format("{0:#####}", neg); //"-10"

String.Format("{0:#####}", bigpos); //"123456"

String.Format("{0:#####}", bigneg); //"-123456"

String.Format("{0:#####}", zero); //""

String.Format("{0:#####}", strInt); //"120ab"

While playing around with this, I made an interesting observation:

String.Format("{0:X00000}", pos); //"A"

String.Format("{0:X00000}", neg); //"FFFFFFF6"

String.Format("{0:X#####}", pos); //"X10"

String.Format("{0:X#####}", neg); //"-X10"

The "0" specifier works well with other numeric specifier, but the "#" doesn't. Umm... I think the "Custom Numeric Format String" probably deserve a whole post of it's own. Since this is only the "101" post, I'll move on to the next argument in the format string.

zeros (optional): It actually has a different meaning depending on which numeric specifier you use.

int neg = -10;

int pos = 10;

// C or c (Currency): It represent how many decimal place of zeros to show.

String.Format("{0:C4}", pos); //"$10.0000"

String.Format("{0:C4}", neg); //"($10.0000)"

// D or d (Decimal): It represent leading zeros

String.Format("{0:D4}", pos); //"0010"

String.Format("{0:D4}", neg); //"-0010"

// E or e (Exponential): It represent how many decimal places of zeros to show.

String.Format("{0:E4}", pos); //"1.0000E+001"

String.Format("{0:E4}", neg); //"-1.0000E+001"

// F or f (Fixed-point): It represent how many decimal places of zeros to show.

String.Format("{0:F4}", pos); //"10.0000"

String.Format("{0:F4}", neg); //"-10.0000"

// G or g (General): This does nothing

String.Format("{0:G4}", pos); //"10"

String.Format("{0:G4}", neg); //"-10"

// N or n (Number): It represent how many decimal places of zeros to show.

String.Format("{0:N4}", pos); //"10.0000"

String.Format("{0:N4}", neg); //"-10.0000"

// P or p (Percent): It represent how many decimal places of zeros to show.

String.Format("{0:P4}", pos); //"1,000.0000%"

String.Format("{0:P4}", neg); //"-1,000.0000%"

// R or r (Round-Trip): This is invalid, FormatException is thrown.

String.Format("{0:R4}", pos); //FormatException thrown

String.Format("{0:R4}", neg); //FormatException thrown

// X or x (Hex): It represent leading zeros

String.Format("{0:X4}", pos); //"000A"

String.Format("{0:X4}", neg); //"FFFFFFF6"

// nothing: This is invalid, no exception is thrown.

String.Format("{0:4}", pos)); //"4"

String.Format("{0:4}", neg)); //"-4"

In summary, there are four types of behaviour when using this specifier:

Leading Zeros: D, X

Trailing Zeros: C, E, F, N, P

Nothing: G

Invalid: R,

Now, that we've gone through the valid specifiers, you can actually use this in more than just String.Format(). For example, when using this with Byte.ToString():

Byte b = 10;

b.ToString("D4"); //"0010"

b.ToString("X4"); //"000A"



DateTime.ToString, Format


DateTime.ToString() Patterns

All the patterns:

0 MM/dd/yyyy 08/22/2006
1 dddd, dd MMMM yyyy Tuesday, 22 August 2006
2 dddd, dd MMMM yyyy HH:mm Tuesday, 22 August 2006 06:30
3 dddd, dd MMMM yyyy hh:mm tt Tuesday, 22 August 2006 06:30 AM
4 dddd, dd MMMM yyyy H:mm Tuesday, 22 August 2006 6:30
5 dddd, dd MMMM yyyy h:mm tt Tuesday, 22 August 2006 6:30 AM
6 dddd, dd MMMM yyyy HH:mm:ss Tuesday, 22 August 2006 06:30:07
7 MM/dd/yyyy HH:mm 08/22/2006 06:30
8 MM/dd/yyyy hh:mm tt 08/22/2006 06:30 AM
9 MM/dd/yyyy H:mm 08/22/2006 6:30
10 MM/dd/yyyy h:mm tt 08/22/2006 6:30 AM
10 MM/dd/yyyy h:mm tt 08/22/2006 6:30 AM
10 MM/dd/yyyy h:mm tt 08/22/2006 6:30 AM
11 MM/dd/yyyy HH:mm:ss 08/22/2006 06:30:07
12 MMMM dd August 22
13 MMMM dd August 22
14 yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK 2006-08-22T06:30:07.7199222-04:00
15 yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK 2006-08-22T06:30:07.7199222-04:00
16 ddd, dd MMM yyyy HH':'mm':'ss 'GMT' Tue, 22 Aug 2006 06:30:07 GMT
17 ddd, dd MMM yyyy HH':'mm':'ss 'GMT' Tue, 22 Aug 2006 06:30:07 GMT
18 yyyy'-'MM'-'dd'T'HH':'mm':'ss 2006-08-22T06:30:07
19 HH:mm 06:30
20 hh:mm tt 06:30 AM
21 H:mm 6:30
22 h:mm tt 6:30 AM
23 HH:mm:ss 06:30:07
24 yyyy'-'MM'-'dd HH':'mm':'ss'Z' 2006-08-22 06:30:07Z
25 dddd, dd MMMM yyyy HH:mm:ss Tuesday, 22 August 2006 06:30:07
26 yyyy MMMM 2006 August
27 yyyy MMMM 2006 August

The patterns for DateTime.ToString ( 'd' ) :

0 MM/dd/yyyy 08/22/2006

The patterns for DateTime.ToString ( 'D' ) :

0 dddd, dd MMMM yyyy Tuesday, 22 August 2006

The patterns for DateTime.ToString ( 'f' ) :

0 dddd, dd MMMM yyyy HH:mm Tuesday, 22 August 2006 06:30
1 dddd, dd MMMM yyyy hh:mm tt Tuesday, 22 August 2006 06:30 AM
2 dddd, dd MMMM yyyy H:mm Tuesday, 22 August 2006 6:30
3 dddd, dd MMMM yyyy h:mm tt Tuesday, 22 August 2006 6:30 AM

The patterns for DateTime.ToString ( 'F' ) :

0 dddd, dd MMMM yyyy HH:mm:ss Tuesday, 22 August 2006 06:30:07

The patterns for DateTime.ToString ( 'g' ) :

0 MM/dd/yyyy HH:mm 08/22/2006 06:30
1 MM/dd/yyyy hh:mm tt 08/22/2006 06:30 AM
2 MM/dd/yyyy H:mm 08/22/2006 6:30
3 MM/dd/yyyy h:mm tt 08/22/2006 6:30 AM

The patterns for DateTime.ToString ( 'G' ) :

0 MM/dd/yyyy HH:mm:ss 08/22/2006 06:30:07

The patterns for DateTime.ToString ( 'm' ) :

0 MMMM dd August 22

The patterns for DateTime.ToString ( 'r' ) :

0 ddd, dd MMM yyyy HH':'mm':'ss 'GMT' Tue, 22 Aug 2006 06:30:07 GMT

The patterns for DateTime.ToString ( 's' ) :

0 yyyy'-'MM'-'dd'T'HH':'mm':'ss 2006-08-22T06:30:07

The patterns for DateTime.ToString ( 'u' ) :

0 yyyy'-'MM'-'dd HH':'mm':'ss'Z' 2006-08-22 06:30:07Z

The patterns for DateTime.ToString ( 'U' ) :

0 dddd, dd MMMM yyyy HH:mm:ss Tuesday, 22 August 2006 06:30:07

The patterns for DateTime.ToString ( 'y' ) :

0 yyyy MMMM 2006 August

Building a custom DateTime.ToString Patterns

The following details the meaning of each pattern character. Not the K and z character.

d Represents the day of the month as a number from 1 through 31. A single-digit day is formatted without a leading zero
dd Represents the day of the month as a number from 01 through 31. A single-digit day is formatted with a leading zero
ddd Represents the abbreviated name of the day of the week (Mon, Tues, Wed etc)
dddd Represents the full name of the day of the week (Monday, Tuesday etc)
h 12-hour clock hour (e.g. 7)
hh 12-hour clock, with a leading 0 (e.g. 07)
H 24-hour clock hour (e.g. 19)
HH 24-hour clock hour, with a leading 0 (e.g. 19)
m Minutes
mm Minutes with a leading zero
M Month number
MM Month number with leading zero
MMM Abbreviated Month Name (e.g. Dec)
MMMM Full month name (e.g. December)
s Seconds
ss Seconds with leading zero
t Abbreviated AM / PM (e.g. A or P)
tt AM / PM (e.g. AM or PM
y Year, no leading zero (e.g. 2001 would be 1)
yy Year, leadin zero (e.g. 2001 would be 01)
yyy Year, (e.g. 2001 would be 2001)
yyyy Year, (e.g. 2001 would be 2001)
K Represents the time zone information of a date and time value (e.g. +05:00)
z With DateTime values, represents the signed offset of the local operating system's time zone from Coordinated Universal Time (UTC), measured in hours. (e.g. +6)
zz As z but with leadin zero (e.g. +06)
zzz With DateTime values, represents the signed offset of the local operating system's time zone from UTC, measured in hours and minutes. (e.g. +06:00)
f Represents the most significant digit of the seconds fraction; that is, it represents the tenths of a second in a date and time value.
ff Represents the two most significant digits of the seconds fraction; that is, it represents the hundredths of a second in a date and time value.
fff Represents the three most significant digits of the seconds fraction; that is, it represents the milliseconds in a date and time value.
ffff Represents the four most significant digits of the seconds fraction; that is, it represents the ten thousandths of a second in a date and time value. While it is possible to display the ten thousandths of a second component of a time value, that value may not be meaningful. The precision of date and time values depends on the resolution of the system clock. On Windows NT 3.5 and later, and Windows Vista operating systems, the clock's resolution is approximately 10-15 milliseconds.
fffff Represents the five most significant digits of the seconds fraction; that is, it represents the hundred thousandths of a second in a date and time value. While it is possible to display the hundred thousandths of a second component of a time value, that value may not be meaningful. The precision of date and time values depends on the resolution of the system clock. On Windows NT 3.5 and later, and Windows Vista operating systems, the clock's resolution is approximately 10-15 milliseconds.
ffffff Represents the six most significant digits of the seconds fraction; that is, it represents the millionths of a second in a date and time value. While it is possible to display the millionths of a second component of a time value, that value may not be meaningful. The precision of date and time values depends on the resolution of the system clock. On Windows NT 3.5 and later, and Windows Vista operating systems, the clock's resolution is approximately 10-15 milliseconds.
fffffff Represents the seven most significant digits of the seconds fraction; that is, it represents the ten millionths of a second in a date and time value. While it is possible to display the ten millionths of a second component of a time value, that value may not be meaningful. The precision of date and time values depends on the resolution of the system clock. On Windows NT 3.5 and later, and Windows Vista operating systems, the clock's resolution is approximately 10-15 milliseconds.
F Represents the most significant digit of the seconds fraction; that is, it represents the tenths of a second in a date and time value. Nothing is displayed if the digit is zero.
: Represents the time separator defined in the current DateTimeFormatInfo..::.TimeSeparator property. This separator is used to differentiate hours, minutes, and seconds.
/ Represents the date separator defined in the current DateTimeFormatInfo..::.DateSeparator property. This separator is used to differentiate years, months, and days.
" Represents a quoted string (quotation mark). Displays the literal value of any string between two quotation marks ("). Your application should precede each quotation mark with an escape character (\).
' Represents a quoted string (apostrophe). Displays the literal value of any string between two apostrophe (') characters.
%c Represents the result associated with a c custom format specifier, when the custom date and time format string consists solely of that custom format specifier. That is, to use the d, f, F, h, m, s, t, y, z, H, or M custom format specifier by itself, the application should specify %d, %f, %F, %h, %m, %s, %t, %y, %z, %H, or %M. For more information about using a single format specifier, see Using Single Custom Format Specifiers.


References

http://blogs.msdn.com/kathykam/archive/2006/03/29/net-format-string-101-C_2300_-strings.aspx


http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

воскресенье, 9 ноября 2008 г.

Capture a Screen Shot - .NET (C#)

This code demonstrates how to get a screen shot of the entire desktop, or a particular window, using .NET (and a few API functions).

References:
http://www.developerfusion.com/code/4630/capture-a-screen-shot/

суббота, 8 ноября 2008 г.

Upload file - acces denied - ASP.NET

Problem:
It shows error during uploading the file :

Access to the path 'C:\Inetpub\vhosts\mysite.com\httpdocs\inbox\picture.jpg' is denied.

the code is like this:

string filename=File1.PostedFile.FileName;

try
{
File1.PostedFile.SaveAs(Server.MapPath(filename));
}


solution:

Grant ASP.NET write access to the folder:
right click the actual folder in file explorer and allow EVERYONE to write to this folder.


Description:

ASP.NET is not authorized so save files in temp folder (defined by tempPath parameter). Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via , the identity will be the anonymous user (typically IUSR_{MACHINENAME}) or the authenticated request user.

To grant ASPNET (in the case of IIS 5) or NETWORK SERVICE (in the case of IIS 6) or other needed account write access to a folder, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the needed account, and check the boxes for the desired access.

references:

How to upload a file to a Web server in ASP.NET by using Visual Basic .NET:
http://support.microsoft.com/default.aspx?scid=kb;en-us;323245

ASP.NET Impersonation:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsent7/html/vxconimpersonation.asp

суббота, 4 октября 2008 г.

Use font style in datagridview columns

Change font style in datagridview columns for column header or column

for ColumnHeader

this.dataGridView1.ColumnHeadersDefaultCellStyle.Font =
new Font(this.dataGridView1.ColumnHeadersDefaultCellStyle.Font, FontStyle.Bold);



for column


this.dataGridView1.Columns[0].DefaultCellStyle.Font =
new Font(this.Font, FontStyle.Bold);

пятница, 3 октября 2008 г.

Dream IT Company

Критерии

Итак, обсуждаем критерии:

* Возможность профессиональной и творческой самореализации
* Мотивация - почему вам хочется работать круглосуточно ;-)
* Карьерный рост
* Профессиональное развитие, обучение и развитие персонала
* Стабильность компании
* Корпоративная этика и культура, ценности
* Комфортная инфраструктура
* Наличие баланса между личной жизнью и работой
* Здоровый микроклимат в коллективе
* Организация и зрелость процесса работы-разработки
* Технологии разработки
* Система управления, топ-менеджмент
* Миссия, видение будущего, лидерство на рынке

Возможность профессиональной и творческой самореализации
Компания предоставляет каждому сотруднику возможность профессионально развиваться, каждый сотрудник имеет шанс применить свои умения и навыки в непростых, но увлекательных проектах, с использованием новейших технологий, реализовывать самые смелые профессиональные замыслы и карьерные стремления.

* доступ к интересным проектам (то ли высоко-технологичным, инновационным, то ли масштабным, то ли полезным людям)
References: Developers.Org.Ua, Конкурс проектов (”dream job”)
* возможность применить знания, навыки и опыт на тех проектах, где это максимально эффективно
* определенная свобода в принятии решений, возможность рисковать и отвечать за результат

Мотивация

* признание сотрудников и их ценности для компании
o есть ли программы Rewards and Recognition, по каким критериям награждают сотрудников
* справедливость существующей системы вознагражения
o совпадает ли зарплата у стариков и новичков, при прочих равных условиях (компетенция и производительность совпадает)
o совпадает ли зарплата в рамках разных департаментов и подразделений, при прочих равных условиях
* наличие системы управления мотивацией и производительностью
o зависит ли зарплата от уровня компетенции
o зависит ли бонус от производительности
* адекватный компенсационный пакет
o зарплата (среднерыночная+)
o есть ли программы участия в прибыли
+ для акционерных компаний акции
+ для частных - эмулирующая их модель
o набор нефинансовых благ
+ медицинская страховка ($500+)
+ набор услуг, которыми могут пользоваться сотрудники. Example: Google: возможность пользоваться прачечной, химчисткой, автомобильным сервисом, SPA-центром. А также питание, массаж и бесплатное медицинское обслуживание на рабочем месте.
# массаж, медицинский кабинет
# ведение СПД, финансовые консультации
# юридические консультации по личным вопросам
# сопровождение страховых выплат по медстраховке
# кредитование
* безпроцентный кредит на покупку машины, квартиры, либо бланковый
* погашение процентов по существующему банковскому кредиту

Карьерный рост

Лучшие работодатели ставят перед собой задачу выявления и удержания перспективных и талантливых сотрудников уже сегодня, в то время как остальные компании считают необходимым задуматься над этой проблемой только в течение ближайших 3-5 лет. 90% компаний лучших работодателей уделяют большее внимание политикам и процедурам формирования кадрового резерва и выявления работников с высоким потенциалом. Основным критерием выявления таких работников, помимо оценки результатов текущей деятельности непосредственным руководителем, является личный вклад работника в финансово-экономические результаты компании

* наличие системы карьерного планирования (четко прописанного плана для каждого сотрудника, согласованного обеими сторонами)
* возможность меж-проектных или -офисных ротаций
* формирование кадрового резерва

Профессиональное развитие, обучение и развитие персонала

В своем стремлении предвидеть и спрогнозировать ситуацию, лучшие работодатели ориентированы на обучение профессиональным навыкам, которые могут потребоваться работнику (а значит, и компании) в дальнейшем для его будущей роли в организации, в то время как остальные компании ориентированы при обучении сотрудников на настоящие потребности организации. Лучшие работодатели вкладывают в обучение и развитие своих сотрудников в два раза больше по сравнению с остальными компаниями.

* тренинги по специальности, минимум 10 часов в год
* подписка на периодику, инфо порталы
* внутренняя библиотека технической литературы
* доступ к конференциям по специальности

Стабильность компании

* TBD

Корпоративная этика и культура, ценности

* ценности, насколько им реально соответствуют
* соблюдение всех договоренностей
o своевременная выплата зарплаты
* прозрачность в принятии решений
* порядочность, справедливость
* эффективная внутренняя коммуникация
* качественные корпоративные мероприятия
* справедливая система вознагражения
* решения принимаются в пользу сотрудника в случае возникновения ситуации, не предвиденной контрактом или внутренними политиками

Комфортная инфраструктура

* комфортный регулируемый стул (от $200)
* качественный плоский монитор 17-21 дюйм с высоким разрешением
* климат контроль (кондиционирование + вентиляция + климат)
* достаточно большое рабочее пространство стола (1.2 х 1.2)
* достаточно большое пространство вообще (10 sq.m. per person)
* настольный телефон с гарнитурой для длительных разговоров
* продвинутая внутренняя АТСка, с голосовой почтной, и т.д.
* поддержка работы из дому (work environment, VoIP support)
* достаточно тихий системный блок. И качественный при этом
* изба-читальня, (софа, журнальный столик)
* комнаты отдыха с
o игровыми приставками
o креслами-качалками
o диванами для поспать
* наличие кухни с
o привозной водой, чаями, кофем, напитками (соки-пиво)
o подножным кормом (орехи, печеньки, и др. джанк фуд)
* большой кафетерий для полноценных тусовочных обедов
* спортзона на территории компании
o душевая, желательно финская сауна с ведром-душем
o бильярд, пинг-понг, настольный хоккей, баскетбол
o тренажеры, беговые дорожки, мячи, и всякая хрень
* More: “Идеальный офис для программиста”, (c) Developers.Org.Ua

Наличие баланса между личной жизнью и работой

Даже работая в компании мечты (особенно работая в такой компании) важно не превратиться в выжатый лимон, чтобы оставались силы и время на родных, друзей, родину, хобби, любовь и табун детей. Зрелось компании заключается в умении планировать и распределять силы так, чтобы кризисы требующие переработок не возникали

* отсутствие сотрудников на работе во внеурочное время.
* есть ли переработки. Если есть, согласовываются ли они с сотрудником, или являются “добровольно-принудительными”. Оплачиваются ли?

Здоровый микроклимат в коллективе

* Попросите показать счастливые лица вокруг, способные помогать, сопереживать и вдохновлять друг друга
* Попросите о возможности после интервью случайно выбрать сотрудника компании и поговорить с ним 5 минут

Организация и зрелость процесса работы-разработки

* применение лучших практик, стандартизация
* эффективная реализация внутренних процессов
o удобные и понятные политики и процедуры работы
o удобные внутренние корпоративные системы
* эффективность внедрения внутренних систем, политик и процедур работы

Технологии разработки

* наличие стратегии технологического развития компании, согласованность тактических программ и отдельных ИТ-проектов с этой стратегией
* наличие всего нужного софта в лицензионном виде
* использование новейших технологий в работе

Система управления, топ-менеджмент

* наличие внятной корпоративной стратегии, ее последовательная реализация, структурированность бизнеса и распределение зон ответственности, адекватная и понятная наемным менеджерам система оценки их деятельности
* высокая оценка высшего руководства работниками (репутация топ-менеджмента)
* тесная обратная связь между высшими руководителями и работниками компании
* личные ценности руководителей и ценности компании совпадают
* отношении руководства компаний к персоналу

Миссия, видение будущего, лидерство на рынке

* миссия заслуживающая уважения, смысл жизни
* есть ли у компании видение будущего, которое известно сотрудникам
* есть ли стратегический план развития и выполняется ли он успешно
* является ли компния лидером на рынке (входит в топ-10 по рейтингам)


References:
http://www.globallogic.com.ua/globallogic/index.php?option=com_content&task=view&id=4633&Itemid=78

среда, 24 сентября 2008 г.

Unknown problems with Dataset in .NET

DataSet object generated by Wizard started to show Exception while opening it in Designer:
key cannot be used in specified...


Also it is impossible to create new Dataset with TableAdapters..

The only solution found:

remove folders Visual Studio in these folders:
1. c:\Documents and Settings\%CurrentUser%\Application Data\Microsoft\
2. c:\Documents and Settings\%CurrentUser%\Local Settings\Application Data\Microsoft\

суббота, 20 сентября 2008 г.

Что из себя представляет корпоративная социальная сеть?

// http://www.intranetno.ru/faq/social-structure/

Корпоративное социальное ПО может иметь различные наборы функций, включая инструменты для коммуникаций, совместной работы и управления контентом. Однако, практически во всех системах есть 2 основных элемента: профайл и домашняя страница.

Профайл - это публичная страничка о сотруднике, на которой обычно размещена его фотография, информация о его должности, функциональных обязанностях, контактная информация, личные данные (интересы), опубликованный им контент (блог, фото, видео), а также его "друзья" - коллеги, с которыми он работает и/или дружит. Профайлы позволяют узнавать больше о людях, которые работают в компании и находить друзей с общими интересами.



Персонализированная домашняя страничка - это персональная страничка, которая доступна только хозяину и которую он настраивает под себя. Подразумевается, что это стартовая страничка, с которой сотрудник начинает свой рабочий день. Поэтому на нее он обычно выводит обновляемую информацию, например, актуальные задачи, запланированные на сегодня мероприятия, новости компании, RSS-обновления по проектам. Эта страничка, как правило, состоит из блоков - виджетов, которые можно как угодно комбинировать и настраивать.



Кроме этих основных элементов, корпоративные социальные сети обычно включают в себя:
- форумы
- блоги
- вики
- социальные закладки
- хостинги файлов, фото, аудио, видео
- рейтинги, голосования, опросы
- внутреннюю почту
- поиск людей и контента

Что собой представляют Корпоративные порталы?

// http://www.intranetno.ru/faq/portals/

Корпоративные порталы настолько многофункциональны и разнообразны, что под термином "корпоративный портал" могут понимать совершенно разные вещи. От сайта на котором выкладываются новости компании и файлы до платформы, интегрирующей корпоративные данные и приложения.

Итак, в самом навороченном варианте:

Корпоративный портал (EIP = enterprise information portal) - это вэб-интерфейс для каждого сотрудника компании ко всему хозяйству, которое он использует по работе.


Как правило, корпоративные порталы внедряются в сравнительно крупных компаниях, в которых используется несколько бизнес-приложений и большое количество корпоративного контента, который хранится в разных местах.

Чтобы мозг сотрудника не взорвался в такой обстановке, для него создается персонализованный удобный сайт, с помощью которого он может взаимодействовать со всеми корпоративными приложениями, данными и другими сотрудниками.

Например, человек приходит на работу, открывает такой сайт. Один раз вводит логин и пароль. И сразу видит свою почту, сегодняшние задачи, отчет по продажам из CRM, неоплаченные счета из ERP, корпоративные новости и у кого из коллег сегодня день рожденья.

Если раньше порталы фокусировались на контенте, то сейчас преобладает тенденция ориентации на людей. Порталы становятся похожими на социальные сети - с профайлами сотрудников, тэгами, RSS-подписками, закладками, блогами, форумами и другими социальными инструментами.

Порталы часто используются и для взаимодействия с внешними контрагентами - партнерами и клиентами, которые с помощью портала могут не только почитать новости компании, но и, например, сделать заказ или поучаствовать в обсуждении проекта. Портал может включать в себя внешний сайт компании или интегрироваться с ним.

Портал, как правило, устанавливается на собственный вэб-сервер компании, но появляются уже и SaaS решения. Основными технологиями, которые позволяют порталам делать свое дело являются XML и Портлеты.

Какие функции выполняют корпоративные порталы?

// http://www.intranetno.ru/faq/portal-functions/

Вот основные функции корпоративных порталов:

1. Безопасный, персонализированный доступ к данным
(в т.ч. с рабочего места, удаленно, и с мобильных устройств)

2. Поиск, систематизация и разметка корпоративных данных из разных источников (внутренних и внешних)

3. Хранение данных
(в БД портала могут храниться документы, данные из заполненных форм, файлы ...)

4. Управление RSS-потоками
(Чтение ленты новостей или оповещений о действиях сотрудников)

5. Управление документами и файлами
(например контроль версий документов, контроль доступа к файлам)

6. Управление бизнес процессами
(например, портал подсказывает сотруднику порядок действий для утверждения документов)

7. Публикация контента самими сотрудниками

8. Создание сайтов
(например сайта подразделения или сайта какого-то проекта)

9. Управление знаниями = knowledge management
(порталы часто содержат базу взаимосвязанных страничек, создаваемых самими пользователями, на которых можно найти решение для своей задачи, не отвлекая при этом коллег. Для это часто используется технология Вики)

10. Совместная работа
(портал может как предоставлять интерфейс к корпоративному органайзеру, так и содержать свои инструменты для совместной работы)

11. Корпоративные коммуникации
(мессенджер, форумы, блоги, комментарии)

12. Создание корпоративных сообществ
(т.е. построение дружеских связей между сотрудниками)

13. Интеграция бизнес-приложений
(в паре с серверами приложений порталы служат для создания единой интеграционной платформы предприятия)

14. Единая точка аутентификации пользователя
(Вместо того, чтобы логиниться в каждое приложение отдельно, пользователь вводит логин и пароль только для входа в портал)

Что такое Социальное ПО и зачем оно нужно?

// http://www.intranetno.ru/faq/social/

Идея Социального ПО (которое иногда называют Enterprise 2.0) - это использование технологий обычных социальных сетей для бизнеса.

Социальное ПО может быть как надстройкой для корпоративной системы, так и самостоятельной системой, включающей функции для управления контентом и совместной работы.

Какие функции выполняют корпоративные социальные сети?

1. Знакомят сотрудников друг с другом.
Особенно в больших компаниях сотрудники часто не знают кого как зовут, кто чем занимается и к кому обратиться по определенному вопросу. В корпоративной социальной сети у каждого сотрудника есть профайл с его именем, должностью, функциональными обязанностями. По этим профайлам можно искать и находить нужного человека.

2. Разрушают иерархические границы
Обычно высокопоставленные руководители не светят свой email и ICQ, и их телефон постоянно занят. Поэтому связь между отдаленными ступеньками иерархической лестницы практически отсутствует. Из-за этого верхи и низы живут, как-бы, в разных мирах. Социальная сеть дает возможность легко обратиться напрямую к любому вышестоящему сотруднику. А для начальства - это удобный способ получить обратную связь и взглянуть на мир более реально.

3. Создают сообщество (команду)
Чем больше компания, тем меньше сотрудник к ней привязан. Он не знает, какие цели у компании и кто с ним рядом работает. Социальные сети поощряют сотрудников публиковать информацию о себе, о своих интересах для того, чтобы люди со схожими интересами внутри компании сходились и устанавливали связи. Неформальные связи привязывают сотрудников друг к другу (а значит и к компании) и дают причину "ради чего я здесь работаю?", что способствует созданию единой команды с общей целью.

4. Предоставляют социальные инструменты для совместной работы
Что это за инструменты?

- Инструменты для публикации контента
(блоги, файлохранилища, wiki, галлереи, видеосервисы)
Социальное ПО позволяет легко публиковать текст, документы, файлы, мультимедиа, которые используются для совместной работы. В традиционных системах возможность публикации контента обычными пользователями очень ограничена. Следует заметить, что большое внимание в социальных системах уделяется Авторству. Т.е. очень важным аттрибутом любого контента является его автор.

- Инструменты для обсуждения
(форумы, блоги, комментарии, отзывы)
Практически любой элемент контента в социальном ПО может быть откомментирован. Это позволяет собирать полезнейшую информацию по всей компании. Например, традиционная CRM система в основном сфокусирована на том, чтобы сотрудник саппорта не имел лишнего доступа к карточке клиента, за которую отвечает продажник. А социальная система, наоборот, поощряет сотрудников саппорта дополнять (комментировать) информацию по клиенту, что может быть очень полезно для продаж.

- Инструменты для организации контента
(тэги, закладки, рейтинги)
Социальное ПО дает возможность каждому сотруднику присваивать тэги, рейтинговать любые элементы контента. В результате при поиске или мониторинге определенного вопроса, сотрудники получают более релевантную и важную информацию.

- Инструменты для контроля и мониторинга
(Персональные RSS-потоки)
Подписавшись на персональную RSS ленту по какому-либо сотруднику, в которой появляются оповещения о всех активностях сотрудника, его руководитель или коллега по проекту может контролировать, что происходит.

Articles about Microsoft Office SharePoint

http://www.intranetno.ru/news/4551/

Корпоративные Порталы

// http://www.intranetno.ru/portal/

39
Microsoft Office SharePoint
Microsoft Office SharePointСистема управления корпоративным контентом и совместной работы, которую можно использовать в качестве корпоративного портала. Имеет множество расширений и интегрированных систем. Тесно интегрирована с MS Office и MS Exchange. Может поставляться как вэб сервис [edit]


33
IBM WebSphere Portal
IBM WebSphere PortalРешение для построения корпоративного портала, бизнес-мэшапов и SOA-платформы. Предоставляет избыточную функциональность для совместной работы и управления контентом для организации любого размера. Отлично интегрируется с другими системами IBM [edit]


26
Oracle WebCenter Suite
Oracle WebCenter SuiteПортальная платформа для совместной работы, управления контентом, управления бизнес-процессами, интеграции бизнес данных и приложений. Включает Enterprise 2.0 фичи, такие как вики, блоги, форумы, RSS. [edit]


23
QSOFT: Корпоративный портал
QSOFT: Корпоративный порталРешение для создания корпоративного портала на движке 1С-Битрикс:Управление сайтом. Содержит новости, справочники, базу знаний, календарь, форумы, блоги, подписки, профайлы... Поставляется с набором готовых дизайнов и не требует от пользователя специальных навыков и знаний. [edit]


23
SAP NetWeaver Portal
SAP NetWeaver PortalПортал для интеграции приложений SAP, приложений других производителей, баз данных, источников корпоративного контента (структурированного и нет), внешнего вэб-контента. Основан на открытых стандартах и вэб-сервисах, поддерживает технологии J2EE и .NET [edit]


22
RedDot CMS
RedDot CMSПортальное решение для корпоративных коммуникаций, интеграции ИТ инфраструктуры и управления корпоративным контентом. Отличается интерактивным интерфейсом [edit]


20
PayDox
PayDoxВэб-система документооборота с функциями для корпоративного портала. Содержит файловый архив, форумы, инструменты для управления документами и совместной работы. Хорошо интегрирована с MS Office. Отечественная разработка [edit]


20
Drupal
DrupalПопулярнейшая open-source CMS система для создания порталов и сообществ. Отличается богатой функциональностью, высокой безопасностью, большой библиотекой расширений, системой совместной публикации, поддержкой Open ID [edit]


19
Salesforce Content
Salesforce ContentSaaS сервис для управления корпоративным контентом интегрированный с Salesforce CRM. Основан на социальных инструментах, таких как тэги, rss-подписки, рекомендации, рейтингование. Предназначен для взаимодействия как внутри компании, так и с партнерами и клиентами. [edit]


19
JBoss Portal
JBoss PortalБезопасный и производительный open-source корпоративный портал. Предоставляет платформу для интеграции контента и приложений. Содержит инструменты для совместной работы и управления бизнес-процессами [edit]

Resources - полезный софт для ИТ компаний

http://www.livebusiness.ru

Виртуальный офис
Управление проектами
CRM и HelpDesk
Редакторы документов
Календари и Органайзеры
Бизнес Email
Wiki и Порталы
Файлохранилища
Вэб конференции
Вэб презентации
Мессенджеры и VoIP
wimax
WiMax интернет

Корпоративные порталы
Wiki системы
Социальное ПО

Wiki на корпоративной службе

Wiki на корпоративной службе

// http://www.pcweek.ru/themes/detail.php?ID=112325


Технология Wiki открывает отличные возможности по использованию контента, совместной работе над ним и его редактированию через Интернет. Организации берут ее на вооружение, чтобы повысить производительность труда, улучшить взаимодействие между сотрудниками и сократить объем электронной почты.

Вот только торопиться с развертыванием Wiki в корпоративной сети не стоит. Сначала необходимо предпринять ряд мер, чтобы упростить процесс реализации и свести к минимуму риск ошибок. Для успешного завершения такого проекта следует выполнить три действия.
Шаг 1. Убедитесь, что ИТ-инфраструктура может справиться с Wiki

Когда принципиальное решение об использовании Wiki принято, в первую очередь следует удостовериться, что развернутая на предприятии система пригодна для этой технологии. Если предполагается применение Web-платформы, данный шаг обязательно должен предусматривать проверку сетевой безопасности и политики блокирования Web-сайтов и программ, включая AOL, Instant Messenger, Skype и социальные сети. Некоторые организации запрещают своим сотрудникам пользоваться такими приложениями, и эти ограничения могут помешать применению в корпоративной сети систем наподобие Wiki. Необходимо также убедиться, что на сервере имеется достаточно места для хранения информации. Если же его не хватает, можно воспользоваться средствами хостинга Wiki на других серверах.

Кроме того, ИТ-отделу следует тщательно изучить два важнейших вопроса -- защиты данных и мобильности. С учетом множества попыток взлома данных, которые были зарегистрированы за прошедший год, крайне важно следить, чтобы любое вновь устанавливаемое приложение -- и Wiki здесь не исключение -- было не менее защищенным, чем все другие ресурсы организации. В каждом подразделении наверняка есть собственная конфиденциальная информация, которую нужно закрывать паролем от несанкционированного доступа сотрудников.

При выборе технологии Wiki и ее развертывании не стоит забывать и о мобильности пользователей. Для получения информации сегодня сплошь и рядом применяются сотовые телефоны или карманные компьютеры, так что сотрудникам наверняка захочется пользоваться такими устройствами и для извлечения сведений из корпоративной Wiki.
Шаг 2. Пересмотрите внутренние корпоративные правила с прицелом на использование Wiki

Реагируя на стремительное распространение блогов в Интернете, многие организации уже выработали правила ведения таких электронных дневников. То же самое следует предпринять и в отношении Wiki. Выбрав технологию Wiki, которая лучше всего соответствует потребностям организации, первым делом следует четко определить политику работы с ней и довести до сведения всех пользователей, что информация здесь носит сугубо конфиденциальный характер. Поэтому хотя Wiki и упрощает общение, правила остаются неизменными. Ведь новая система является корпоративной, и содержащийся в ней контент ни в коем случае не должен выноситься за пределы рабочей среды. И, наконец, политика использования Wiki не должна ограничиваться тем, какие области сайта доступны конкретному сотруднику или подразделению. В дополнение к этому необходимо определить, какие разделы Wiki открыты внешним пользователям, а какие видны только внутренним.
Шаг 3. Стимулируйте участие сотрудников в системе Wiki

Как только технология Wiki будет выбрана и внутренняя корпоративная политика выработана, настанет черед последнего шага -- убедить сотрудников пользоваться новой системой для общения. Здесь очень важно учесть, что разные возрастные группы подходят к этому вопросу неодинаково. Поколение Y имеет довольно солидные навыки обращения с современными технологиями и склонно быстро воспринимать все происходящие в них изменения. А вот поколения Х и дети бэби-бума вряд ли сразу ухватятся за Wiki -- здесь не обойтись без дополнительного стимулирования и обучения. Так что ИТ-отделу придется разрабатывать план приобщения к новинке колеблющихся сотрудников.

Во-первых, классы изучения Wiki дадут пользователям шанс познакомиться с новой системой, что называется, из первых рук и задать вопросы. Во-вторых, ИТ-сотрудники вполне могут обучить премудростям Wiki начальников различного ранга, чтобы затем они смогли руководить внедрением системы в своих подразделениях и следить за соблюдением правил работы в ней. В результате у ИТ-отдела появятся “свои люди” в подразделениях, помогающие разбираться с Wiki на месте и тем самым снизить нагрузку на ИТ-специалистов.

Хотя первые шаги на этом пути и могут занять массу времени, они вполне себя окупят, так как помогут сотрудникам органично вписать технологию Wiki в свой рабочий процесс. Да и в ИТ-отдел будет поступать меньше вопросов по новой системе. А если всё сделать правильно, внедрение корпоративной Wiki-системы позволит сэкономить время, снизить потоки корпоративной электронной почты и воспрепятствовать снижению производительности труда, если такоовая угроза у вас возникнет.

Tools - управление проектами

По оценкам компании Gartner, рынок ПО управления проектами и систем Enterprise 2.0 для маленьких команд и компаний сейчас бурно развивается, и лидера на нем нет. Есть много игроков, которые предлагают отличные решения:

1. Basecamp
лидер в task management, управлении только задачами, только онлайн

2. OpenText
и другие корпоративные вики-системы для корпоративного знания

3. Jira+Confluence
для программистов, нет онлайн решения

4. Zoho Projects - как SaaS/PaaS платформа для небольших команд

5. Google Sites / Google Apps как решение для некоммерческих проектов

6. MS Sharepoint - может стать лидером ПО для сотрудничества и управления проектами, но пока что цена внедрения очень высока: нужно серьезное дотачивание продукта в каждом случае.

7. Новые проекты и продукты: Central Desktop, LongJump, 5PMWeb и другие - судить о которых лучше по их развитию, нежели по функциональным возможностям.

-- comindwork
http://www.comindwork.ru

References
http://webplanet.ru/knowhow/soft/postnikov/2008/08/27/comindwork.html

Microsoft Live Labs

// http://internetno.net/2007/10/25/ms-live-labs-review/

для придумывания всего нового у Microsoft есть т.н. лаборатория, которая так и называется Windows Live Labs.

Logo_Listas_Thumbnail
Listas — это сервис для создания, управления и шаринга списков, заметок и избранных ссылок. Подразумевается, что при помощи сервиса удобно формировать списки покупок, собираться на различные мероприятия и т.д. К созданию списков можно подключать большое число участников, а специальная система оповещения не даст вам пропустить свежие изменения в созданных вами списках. Для более удобной работы со списками и закладками установите тулбар (только для IE) — с его помощью особенно удобно добавлять в ваши списки данные с открытых страниц.

Logo_Deepfish_ThumbnailDeepdish — это мобильный браузер от Microsoft, который работает под Windows Mobile. Основной фишкой браузера создатели считают новый для браузеров MS принцип рендеринга страниц. Сначала загружается уменьшенная копия сайта, привью, а потом в фоновом режиме увеличивается детализация элементов. Максимальная детализация выводится при выборе пользователем какой-либо части страницы. Именно такая технология рендеринга уже реализована в мультиплатформенном браузере Opera Mini, однако, если точно такое решение будет установлена на каждом новом Windoqws Mobile устройстве, то наступит золотой век мобильного браузинга.

2007-10-24_220439

Photosynth — технология автоматического анализа множества фотографий для воссоздания искусственной 3D-модели мира:

Суть технологии заключается в том, что берутся все возможные фотографии мира, анализируются, и затем сопоставляются похожие и на основе всех этих данных строится полная и трёхмерная модель мира. По-крайней мере, той его части, которая была когда-либо сфотографирована. То есть, вы можете посмотреть на Лувр со всех сторон. Увеличить любой его участок - потому что он сфотографирован с любым возможным зумом тысячи раз, а сопоставление уже сделано. И т.п. И все это - автоматически. Никаких тегов и человеческого вмешательства.


Seadragon — проект компании Microsoft, который призван изменить саму концепцию представления многочисленных пользовательских данных на одном экране вне зависимости от того, огромная ли это плазма на всю стену или 3’’ экран мобильного телефона.

Нам же, простым пользователям остается только набраться терпения и немного подождать пока эти головокружительные разработки станут частью нашей жизни, проникнут в игровые приставки, телевизоры и мобильные телефоны.