Pull to refresh
41
0
Антон @ostapbender

User

Send message
Плюс-минус секунда в Compile-Time погоды не сделают.
Не пойму, накой чёрт я должен писать «using System.Linq;» в каждом файле, где использую Linq?

В VB.NET есть что-то в стиле «Solution-Wide Imports» (Imports — аналог using из C#). Ужос аццкий. Никогда не поймешь, почему вдруг у тебя вместо одного класса появляется совершенно неожиданный его однофамилец.
Если локализация в стиле «Server-Side Generation...», переведенное как «Серверное поколение...», то ну ее нафиг.
Попытки писать в псевдофункциональном стиле на PHP.
А поподробней можно? Я, помнится, ровно месяц проработал в некоем госучреждении — занималось оное злектронными паспортами — и спешно оттуда уволился, так и не получив положенной мне заработной платы в размере 6000 рублей. Месяца хватило.
Где ж тут про переменные сказано?
Очередной DI-контейнер, вид сбоку. Да и еще с туманными перспективами:
...we don’t yet know whether or when we will ship this

(отсюда).

Хотя утипизация довольно интересна там.
Почитайте "Совершенный Код" МакКоннела — 7 параметров максимум (просто потому, что человек не в состоянии удерживать в кратковременной памяти более семи объектов). 5 параметров — вполне себе. 3 — идеально.
Пытался. Хабр не проглотил расцвеченный кусок кода.
И не веб-сервер. У меня, например, рантайм ASP.NET хостится внутри NT-службы (которая, формально, веб-сервером стала ровно после того, как в ней появился AppDomain ASP.NET'а).

...А asmx только в iis

Ошибаетесь. Читайте, например, про System.Web.Hosting.ApplicationHost
Тип System.Char хранит Code Unit'ы в UTF-16. Для символов в кодировке BMP один объект класса Char представляет ровно один символ текста. А вот для символов, закодированных в, например, Supplementary Plane, каждый символ будет либо High, либо Low Surrogate (возможно, не все варианты перечислил, но идея должна быть ясна). Об этом даже в MSDN сказано:

Most Unicode characters can be represented by a single Char object, but a character that is encoded as a base character, surrogate pair, and/or combining character sequence is represented by multiple Char objects. For this reason, a Char structure in a String object is not necessarily equivalent to a single Unicode character.

Так вот если взять и просто перевернуть все char'ы в строке, то в результате получится неверная UTF-16 строка.

Выход из положения выглядит примерно так:

static string Reverse4(string source)
{
return new string(new List<char>(ReverseImpl(SurrorgateAwareStringEnumerable(source))).ToArray());
}

static IEnumerable<T> ReverseImpl<T>(IEnumerable<T> source)
{
Stack<T> stack = new Stack<T>();
foreach(T value in source)
stack.Push(value);

return stack.ToArray();
}

static IEnumerable<char> SurrorgateAwareStringEnumerable(string source)
{
for(int i = 0; i < source.Length; ++i)
{
if(char.IsSurrogate(source[i]))
{
yield return source[i];
yield return source[++i];
} // if
else
yield return source[i];
} // for

yield break;
}
Жутковато :) Вот вам навскидку три варианта (сравните условие в for в Reverse2 с вашим), ни один из которых, однако, до конца верным не является:

using System;
using System.Diagnostics;
using System.Text;

namespace StringReversal
{
class Program
{
static void Main()
{
Console.WriteLine(Reverse1("Hello world!"));
Console.WriteLine(Reverse2("Hello world!"));
Console.WriteLine(Reverse3("Hello world!"));

Debug.Assert(Reverse1("Hello world!") == Reverse2("Hello world!") &&
Reverse2("Hello world!") == Reverse3("Hello world!"));
}

static string Reverse1(string source)
{
char[] chars = source.ToCharArray();
Array.Reverse(chars);

return new string(chars);
}

static string Reverse2(string source)
{
StringBuilder builder = new StringBuilder(source);
for(int i = 0; i < source.Length / 2; ++i)
{
char temp = builder[i];
builder[i] = builder[source.Length - i - 1];
builder[source.Length - i - 1] = temp;
} // for

return builder.ToString();
}

static string Reverse3(string source)
{
return
source.Length > 0
? source[source.Length - 1] + Reverse1(source.Substring(0, source.Length - 1))
: string.Empty;
}
}
}

Были ещё вопросы совсем простые (как инвертировать строку?)

Ой ли? Не такой уж он и простой, этот вопрос. Вот вы как эту задачу решили?
Стоило бы указать, что такие приседания необходимы только в том случае, когда тип проекта сайта — "ASP.NET Web Site". Для "ASP.NET Web Application" всей этой беготни с регистрацией пользовательских элементов управления не требуется.

Про вот такое, кстати, знали?

Control control = ParseControl("<asp:Label id=\"label1\" runat=\"server\" />"); ?

Все приватные поля страницы не будут видны если взять тип через this.GetType().

И это хорошо. Нечего на них извне смотреть.

Мне он нужен, я его использую.

Покажите уже, как вы его используете.
А можно узнать, зачем такое вообще понадобилось?
Хорошо поставлено.

Самая муторная часть в этом всем — это те самые кумулятивные скрипты. Писать их очень напрягает (меня, по крайней мере, — ну не люблю я DDLщину), вечно что-то да забудешь. Я уже пару месяцев размышляю о том, в каком виде я хотел бы иметь средство, облегчающее миграцию схемы БД. Пока до дао и просветления далеко, но в RoR есть интересные идеи.

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity