Как-то только в текстовом виде раньше попадалось. Пророческая, однако штука! «...где грядущее страны тупо смотрит из проломленной стены»
среда, 26 августа 2015 г.
Е. Лукин, «Вот оплот сепаратизма — детский сад...»
Как-то только в текстовом виде раньше попадалось. Пророческая, однако штука! «...где грядущее страны тупо смотрит из проломленной стены»
понедельник, 24 августа 2015 г.
На стыке Delphi и .NET
В процессе работы наступил на интересные грабли, причём разбираться, что это
и как с ним бороться, пришлось весь день.
Итак, есть у нас код на Delphi, который вызывает код на .NET. Чтобы этот вызов стал возможен, из .NET наружу торчит общедоступный интерфейс
Разгадка проста. Пустая строчка по какой-то неясной мне причине автоматически преобразуется в
Судя по всему, это не новость для тех, кто пишет на .NET. В C# имеется несколько вещей, потенциально пригодных для этого. Например, можно проверить, не является ли строчка пустой, либо
Вот такая интересная штука.
Итак, есть у нас код на Delphi, который вызывает код на .NET. Чтобы этот вызов стал возможен, из .NET наружу торчит общедоступный интерфейс
IDotNetWorker
(на самом деле он называется по-другому, но для примера пусть будет так). В
интерфейсе есть функция примерно такого плана: public int CoolFunction(string arg)
{
if (arg == "")
{
return 1;
}
return 0;
}
Как показало тестирование, если в Delphi получить интерфейс и вызвать эту
функцию с параметром, равным пустой строке, то она не вернёт 1, как можно было
бы предположить. Вместо этого она упадёт со страшным грохотом и причину придётся
искать довольно долго, особенно если происходит это в службе Windows (как в
нашем случае).Разгадка проста. Пустая строчка по какой-то неясной мне причине автоматически преобразуется в
null
. При попытке сравнить его с пустой строкой вылетает
исключение.Судя по всему, это не новость для тех, кто пишет на .NET. В C# имеется несколько вещей, потенциально пригодных для этого. Например, можно проверить, не является ли строчка пустой, либо
null
. if (string.IsNullOrEmpty(arg))
{
return 1;
}
Или проверить, не является ли строчка null
и, если является, задать ей значение
по умолчанию. string myString = arg ?? "Значение по умолчанию";
Эта конструкция представляет собой аналог тернарного оператора, специально заточенный
под проверку на null
: string myString = (arg != null) ? arg : "Значение по умолчанию";
Вот такая интересная штука.
воскресенье, 16 августа 2015 г.
Ижевск: из весны в лето
На выходных почистил телефон от снимков, сделанных в весенне-летний период.
Склеил несколько панорам. Вот, собственно, выкладываю.
понедельник, 10 августа 2015 г.
Т. Силиг, «Разрыв шаблона. Как находить и воплощать прорывные идеи»
Введение
В Оксфорде существовал «однословный экзамен». Студент получает слово и должен по его мотивам за три часа написать сочинение.Абсолютно всё — каждое слово — даёт возможность максимально использовать знания, чтобы подстегнуть фантазию.
Есть устойчивое убеждение, что идеи дёшевы. Это обесценивает значение творчества и это неправильно. Идеи не дёшевы — они бесплатны. И вместе с тем удивительно ценны.
понедельник, 3 августа 2015 г.
Тоже человек
На восьмой год батиниты Кабира и Дурбана отказались от Истины, отреклись от Сокровенной Тайны, сказав: если человечество и впрямь разучилось убивать, значит, оно достойно того, чтобы быть убитым; а мы тоже люди.То, что человек — это звучит гордо, знают все. Даже те, кто никогда не читал пьесу Горького «На дне», откуда эти слова взяты. Я, например, не читал.
Г.Л. Олди, «Путь меча»
Спорить с этой сентенцией тяжело ввиду её очевидности. Ведь и в самом деле человек существо активное, воодушевлённое и переполненное энтузиазмом. Он трудится, работает, самоотверженно преодолевает трудности, достигает вершин. Ну, по крайне мере, пытается достигнуть. Конечно, препятствия перед ним появляются, но он их мужественно превозмогает.
Подписаться на:
Сообщения (Atom)