?

Log in

Stream and Encoding

Mar. 6th, 2011 | 11:21 am

Извините, не удержался:

http://www.c-sharpcorner.com/UploadFile/psingh/web_proxy11162005001036AM/web_proxy.aspx

Хотел сэкономить время, но понял что лучше бы написал сам с нуля... столько лолов и ламерства в этих нескольких строчек кода...

Вот например отправка строки в сокет:

_buffer = new Byte[message.Length + 1]; // O M G!!! откуда он это выдумал вообще???
int length = _encoding.GetBytes(message, 0, message.Length, _buffer, 0); // Супер
socket.Send(_buffer, length, 0);

А как бы написали эти строки вы?

А как вам это? Кто какую опасность видет?

String strRetPage = null;
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, rBytes);
while (rBytes > 0)
{
rBytes = IPsocket.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, rBytes);
}

Link | Leave a comment | Share

Why no vars on fields?

Jan. 28th, 2009 | 01:58 pm

http://community.livejournal.com/advanced_csharp/12815.html

Link | Leave a comment | Share

Футбол и я

Jan. 24th, 2009 | 03:46 pm

Строчка новостей на каком-то сайте: Английский «Арсенал» предлагает «Зениту» уже 15 миллионов фунтов за Аршавина.
15 миллионов, вдумайтесь, это 678 миллионов рублей, это больше чем пол миллиарда! Это 170 двушек по самым раздутым на пузыре ценам в Петербурге, это 1000 (тысяча!) иномарок по 20 килобаков. Но Зенит водит носом уже наверно пол года. Не хотят продавать. А знаете, что это значит? Это значит, что за единицу времени Зенит заработает на Аршавине гораздо больше! А знаете какие зарплаты у футболистов? Эта информация давно и многократно обнародовалась, можете проверить: большинство популярных футболистов России получает более 1 млн. €/год, 3 333 333 р в месяц, т.е. отличная квартира каждый месяц, которую можно сдавать и получать еще бабло, причем пассивное. Через год карьеры в основном составе Зенита - 12 квартир, каждая приносит доход по, допустим, 30 кило, и того 360 киборублей в месяц пассивно до конца жизни всего за год шпыняния колобка по травке. Да лучше бы они надбавку нашим пенсионерам платили, Читать дальше про мои взгляды на этоCollapse ) 

Link | Leave a comment {1} | Share

Implicit Static Ctor

Jun. 20th, 2008 | 09:16 am

Казалось бы от порядка объявления филдов ничего серьёзного не зависит... но вот пример "на
основе событий из жизни"

	class Program {

		readonly static Program _instance = new Program();
		readonly static List _instances = new List();

		public Program() {
			_instances.Add(this);
		}

		static void Main(string[] args) {
			Console.WriteLine("Hello!");
		}
	}


К счастью он решается достаточно легко, а вот в следующем примере уже придётся писать статический конструктор самому.

	class Side {
		readonly static Side Left = new Side(Right);
		readonly static Side Right = new Side(Left);

		public Side(Side otherSide) {
			if (otherSide == null) throw new ArgumentNullException();
			OtherSide = otherSide;
		}

		public Side OtherSide {get; private set;}
	}

Link | Leave a comment {3} | Share

string.IsNullOrEmpty performance

Jun. 5th, 2008 | 07:59 pm

Есть идеи в чем проблема? Неужели системные функции не инлайнятся?

class Program
{
const int i = 200000000;
static void Main()
{
Console.Write("TestString: ");
var s = Console.ReadLine();

bool _;

var sw = Stopwatch.StartNew();
for (var j = 0; j < i; j++)
_ = s == null || s.Length == 0;

Console.WriteLine(sw.ElapsedMilliseconds);

sw = Stopwatch.StartNew();
for (var j = 0; j < i; j++)
_ = string.IsNullOrEmpty(s);

Console.WriteLine(sw.ElapsedMilliseconds);
}
}

Link | Leave a comment {14} | Share

Problem Y2038 has you

Jan. 20th, 2008 | 12:13 pm

Оказывается далёкие страхи устрашают уже сейчас...
Захожу я по привычке на translate.ru какое то слово глянуть, и получаю фигу:

Cookies object error 'ASP 0200 : 80004005'
Out of Range 'Expires' attribute
/include/cookies.asp, line 45
The date and time given for 'Expires' precedes Jan 1, 1980 or excedes Jan 19, 2038, 3:14:07 GMT.

Вот чем печально ставить большие даты на куки. Больше всего, как я понимаю, попадает мир Linux. Ипотечные калькуляторы уже падают, хотя некоторые додумылись поменять максимальную дату с 30 лет на 25. Вся беда в том что (new DateTime(2038, 1, 19, 3, 14, 7) - new DateTime(1970, 1, 1)).TotalSeconds == int.MaxValue.

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

Link | Leave a comment | Share

Net Framework 2.0 SP1

Jan. 18th, 2008 | 09:20 pm

Вот так вот ставим апдейты, ставим неглядя, но набрёл тут на подробный список KB по пресловутой теме: Net Framework 2.0 SP1
Впечатляет один лишь размер страницы, читать такое интересно, особенно когда находишь знакомые места, которые в своё время мучил, однако всё конечно не осилил.

http://support.microsoft.com/?id=945757

Link | Leave a comment | Share

DirrectoryInfo.GetFiles(string mask) bug

Nov. 20th, 2007 | 08:17 pm

Кто-нибудь работал с файлом в System.IO? Что это за отстой? Бага в .Net?

DirectoryInfo Pligon {get;}

Poligon.GetFiles();
[0]: {~.snippet}
[1]: {~temp.fuck}
Poligon.GetFiles("~?*.*");
[0]: {~.snippet}
[1]: {~temp.fuck}
Poligon.GetFiles("~??*.*");
[0]: {~.snippet}
[1]: {~temp.fuck}
Poligon.GetFiles("~??*.*.*");
[0]: {~.snippet}
[1]: {~temp.fuck}

Link | Leave a comment {2} | Share

String.Format reefs

Oct. 10th, 2007 | 08:15 pm

It's very nice joke:

string.Format("{0}", null);
throws exception "value can not be null";

but

object e = null;
string.Format("{0}", e);
return empty string...

I already know reason, but wonna you were filled with it ;)

static void Main()
{
object obj = null;
FuckMe(null);
FuckMe(obj);
}

Output:
Do not pass me null dirrectly!!
Ye! it's beter

Link | Leave a comment {6} | Share

Local Value Types inside anonymous methods - how it works?

Oct. 4th, 2007 | 01:41 pm
location: Office

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

internal delegate void DelegateVoid();

class SomeClass
{
public void SomeMethod()
{
int someCounter=1;

SomeEvent = delegate
{
someCounter++;
Console.WriteLine(someCounter);
};
}

public event DelegateVoid SomeEvent;
public void OnSomeEvent()
{
if (SomeEvent != null) SomeEvent();
}
}

class Program
{
static void Main(string[] args)
{
SomeClass test = new SomeClass();
test.SomeMethod();
test.OnSomeEvent();
}
}

Как показывает рефлектор, созданный анонимным методом класс содержит в себе обычный филд…

private sealed class <>c__DisplayClass1
{
// Fields
public int someCounter;


Это наводит на мысль о том, что если я дерну событие внутри тестового метода, локальный филд не проапдейтится…
public void SomeMethod()
{
int someCounter=1;

SomeEvent = delegate
{
someCounter++;
Console.WriteLine(someCounter);
};

OnSomeEvent();
Console.WriteLine(someCounter);
}
2
2

Но это не так… в чем же магия? Шаренный стек? И что происходило бы с многопоточностью?
Поведение вполне ожидаемое разработчиком, но не понятно как они это сделали =) без IL необойтись…

Link | Leave a comment {3} | Share