Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 294 сообщений
Cообщения с меткой

новые функции - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

Новые возможности C#, которые можно ожидать в ближайшее время

Вторник, 27 Июня 2017 г. 07:53 (ссылка)





В апреле 2003-его года был выпущен C# 1.2 и с тех пор все версии имели только major версию.

И вот сейчас, если верить официальной страничке roslyn на github, в работе версии 7.1 и 7.2.



Для того, чтобы попробовать версию 7.1 необходимо установить pre-release Visual Studio. Скачать ее можно скачать с официального сайта



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







Далее я хочу рассказать о понравившихся мне новых фичах языка.



Асинхронный Main (планируется в версии 7.1)



В наше время очень часто встречаются программы, которые почти полностью асинхронные.

До сих пор Main мог быть void или int. И мог содержать в себе аргументы в виде массива строк. Сейчас добавятся несколько новых перегрузок:



public static Task Main();
public static Task Main();
public static Task Main(string[] args);
public static Task Main(string[] args);


Так как CLR не поддерживает асинхронные entrypoints, то компилятор сам создает boilerplate code (то есть автоматически вставляет какой-то дополнительный код, который позволяет привести void к Task)

Примерно такой код будет сгенерирован компилятором:



async Task Main(string[] args) {
// здесь какой-то ваш код
}
// этот метод сгенерируется «за кулисами» автоматически
int $GeneratedMain(string[] args) {
return Main(args).GetAwaiter().GetResult();
}


Я как и многие ожидал этот функционал еще в 7-ой версии языка.



Литерал default (планируется в версии 7.1)



У Visual Basic и у C# возможности примерно одинаковые. Но в самих языках есть определенные различия.

Скажем у C# есть null, а у VB.NET есть Nothing. Так вот, Nothing может конвертироваться в любой системный тип, представляя собой значение по умолчанию для этого типа. Понятно, что null этого не делает. Хотя, значением по умолчанию вполне может быть и null.



Сейчас уже есть и применяется выражение default(T).

Рассмотрим пример его применения. Допустим, что у нас есть метод, который принимает массив строк в качестве параметра:



void SomeMethod(string[] args)
{

}


Можно выполнить метод и передать ему значение массива строк по умолчанию так:



SomeMethod(default(string[]));


Но зачем писать default(string[]), если можно просто написать default?



Вот, начиная с C# 7.1 и можно будет пользоваться литералом default.

Что еще можно будет с ним сделать, кроме как передать значение по умолчанию в метод?

Например, его можно использовать в качестве значения необязательного параметра:



void SomeMethod(string[] args = default)
{

}


или инициализировать переменную значением по умолчанию:



int i = default;


А еще можно будет проверить не является ли текущее значение значением по умолчанию:



int i = 1; 
if (i == default) { } // значением по умолчанию типа int является 0
if (i is default) { } // точно такая же проверка


Что нельзя будет сделать? Следующие примеры того как литерал default использовать нельзя:



const int? y = default;  
if (default == default)
if (default is T) // оператор is нельзя использовать с default
var i = default
throw default
default as int; // 'as' может быть только reference тип


Readonly ref (планируется в версии 7.2)



При отправке структур в методы в качестве by value (по значению) происходит копирование объекта, что стоит ресурсов. А иногда бывает необходимость отправить только значение ссылочного объекта. В таком случае разработчики отправляют значение по ссылке ref для того, чтобы сэкономить память, но при этом пишут в комментариях что значение изменять нельзя. Особенно часто это происходит при математических операциях с объектами vector и matrix.

Понятный пример того что нас ждет:



    static Vector3 Add (ref readonly Vector3 v1, ref readonly Vector3 v2)
{
// так нельзя!
v1 = default(Vector3);

// и так нельзя!
v1.X = 0;

// так тоже нельзя!
foo(ref v1.X);

// а вот теперь нормально
return new Vector3(v1.X +v2.X, v1.Y + v2.Y, v1.Z + v2.Z);
}


Эта функция пока что в состоянии прототипа, но я уверен в ее необходимости.

Одним из предлагаемых вариантов является использование ключевого слова in вместо ref readonly



    static Vector3 Add (in Vector3 v1, in Vector3 v2)
{
return new Vector3(v1.X +v2.X, v1.Y + v2.Y, v1.Z + v2.Z);
}


Почему in, ведь ref readonly понятнее? А потому что in короче.



Методы интерфейсов по умолчанию (планируется в версии 8.0)



Эти методы мы увидим не так скоро.

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

Уже само понятие реализации в интерфейсе звучит довольно странно.

Хотя у Java 8 есть методы интерфейсов по умолчанию, и разработчики использующие C# тоже захотели себе подобный функционал.

Этот функционал позволит автору API изменить код метода для всех уже существующих реализаций интерфейса.

На примере должно быть понятно.

Допустим у нас есть такой вот интерфейс у которого метод SomeMethod содержит реализацию:



interface IA
{
void SomeMethod() { WriteLine("Вызван SomeMethod интерфейса IA"); }
}


Теперь создадим класс, которые реализует интерфейс:



class C : IA { }


И создадим экземпляр интерфейса:



IA i = new C();


Теперь мы можем вызвать метод SomeMethod:



i.SomeMethod(); // выведет на экран "Вызван SomeMethod интерфейса IA"


Предположительные имена кортежей (планируется в версии 7.1)



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



Пример:

Вместо того, чтобы писать (f1: x.f1, f2: x?.f2) можно просто написать (x.f1, x?.f2).

Первый элемент кортежа в таком случчае получит имя f1, а второй f2

Сейчас же кортеж стал бы неименнованным (к элементам которого можно обратиться только по item1, item2 ...)



Предположительные имена особенно удобны при использовании кортежей в LINQ



// c и result содержат в себе элементы с именами f1 и f2
var result = list.Select(c => (c.f1, c.f2)).Where(t => t.f2 == 1);


Отрицательные стороны

Основным недостатком введения этого функционала является совместимость с C# 7.0. Пример:



Action y = () => M();
var t = (x: x, y);
t.y(); // ранее был бы выбран extension method y(), а сейчас будет вызвана лямбда


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

Собственно, уже сейчас Visual Studio при использовании 7.0 предупреждает, что

Tuple element name 'y' is inferred. Please use language version 7.1 or greater to access an element by its inferred name.


Полный код примера:



class Program
{
static void Main(string[] args)
{
string x = "demo";
Action y = () => M();
var t = (x: x, y);
t.y(); // ранее был бы выбран extension method y(), а сейчас будет вызвана лямбда
}

private static void M()
{
Console.WriteLine("M");
}
}

public static class MyExtensions
{
public static void y(this (string s, Action a) tu)
{
Console.WriteLine("extension method");
}
}


Если вы используете .NET 4.6.2 и ниже, то для того чтобы попробовать пример вам необходимо установить NuGet пакет System.ValueTuple
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/331554/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Maksimych

Голосование за комментарии?

Среда, 10 Декабря 2014 г. 17:22 (ссылка)

Это цитата сообщения ValeZ Оригинальное сообщение



Подумал я и решил - будем делать. 


Мельчаем мы, уже и комментарий ленимся написать - проще "лайкнуть". Раньше в базе данных на один пост в среднем было 3 комментария, теперь один комментарий на три поста:)



 Вопросов несколько есть (они не к вам, а просто вслух)



1) Сильно ли надо хранить лайки в комментариях больше чем неделю? Наверное через неделю, если неделю никто не лайкал комментарий - то уже не так и важно, кто лайкал? Если не хранить - то сделать можно в десять раз быстрее, чем хранить.



2) Лучший комментарий топика? Или просто рейтинг комментариев к топику по убыванию числа лайков?



3) Роботов будут лайкальщиков делать. Как есть роботы, комментирующие все сообщения подряд, а наипаче новых пользователей. Ложка дегтя - и сразу руки опускаются качать бочку меда. Процентов 90 сил уходит у разработчиков на ограничение прыти 0,001 процента "самых умных" (в плохом смысле слова) пользователей. 



4) Рейтинг лучших комментариев за день - неделю - сутки и тп?



5) Высылать ли на почту "ваш комментарий лайкнули?"? Для сообщений не высылаем, быть может и там надо? А если роботы? Высылать только лайки от друзей?



6) Слово какое выбрать? Лайкать - на языке вероятного противника, нравится - часто не к месту. Ну не "Класс" же?



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

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
ValeZ

Голосование за комментарии?

Вторник, 09 Декабря 2014 г. 14:14 (ссылка)


Подумал я и решил - будем делать. 



Мельчаем мы, уже и комментарий ленимся написать - проще "лайкнуть". Раньше в базе данных на один пост в среднем было 3 комментария, теперь один комментарий на три поста:)



 Вопросов несколько есть (они не к вам, а просто вслух)



1) Сильно ли надо хранить лайки в комментариях больше чем неделю? Наверное через неделю, если неделю никто не лайкал комментарий - то уже не так и важно, кто лайкал? Если не хранить - то сделать можно в десять раз быстрее, чем хранить.



2) Лучший комментарий топика? Или просто рейтинг комментариев к топику по убыванию числа лайков?



3) Роботов будут лайкальщиков делать. Как есть роботы, комментирующие все сообщения подряд, а наипаче новых пользователей. Ложка дегтя - и сразу руки опускаются качать бочку меда. Процентов 90 сил уходит у разработчиков на ограничение прыти 0,001 процента "самых умных" (в плохом смысле слова) пользователей. 



4) Рейтинг лучших комментариев за день - неделю - сутки и тп?



5) Высылать ли на почту "ваш комментарий лайкнули?"? Для сообщений не высылаем, быть может и там надо? А если роботы? Высылать только лайки от друзей?



6) Слово какое выбрать? Лайкать - на языке вероятного противника, нравится - часто не к месту. Ну не "Класс" же?



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


Метки:   Комментарии (141)КомментироватьВ цитатник или сообщество
ValeZ

Видео - все творим, всё новое!

Четверг, 10 Апреля 2014 г. 15:49 (ссылка)


Добрый день, дорогие друзья!



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



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



А вот первое видео, которое  опубликовано через новый механизм







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


Метки:   Комментарии (145)КомментироватьВ цитатник или сообщество
Demchenko_Tatyana

Внедорожник 2014 Toyota Kluger будет запущен в Австралии

Вторник, 21 Января 2014 г. 11:43 (ссылка)


Модель внедорожника 2014 Toyota Kluger дебютировала в последние годы на Североамериканском международном автосалоне. Kluger является австралийской версией успешной модели, которая будет предлагаться местным дилерам в марте.http://modernlady.su/avtoledi/4774-vnedorozhnik-20...det-zapuschen-v-avstralii.html


внедорожник тойота (250x187, 12Kb)
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
ValeZ

Новая игра в тематическую группировку дневников

Вторник, 17 Декабря 2013 г. 21:47 (ссылка)


Идея крайне заманчивая - найти все дневники, посвященные данной тематике, но не через поиск, а в некотором каталоге или списке.



Были самые разные попытки это решить, разной степени удачности (все неудачные). Давайте попробуем еще один вариант?



----------------



Итак, берем сложную "тематику" дневников - дневники с авторскими текстами. Я не знаю толком даже что это такое за дневники, знаю только, что они всегда тут в комментариях требуют себе каких-то особых условий, господдержки, пенсий и бесплатных обедов:)



Игра такая - давайте выберем десяток "дневников с авторскими текстами", я им от себя выдам через новый механизм такие "бейджики" с правом раздавать их другим дневникам из категории "авторских". Люди они активные, общительные - пойдут распространять. А мы будем работать в двух направлениях:



1) Выдавать им господдержку и бесплатные обеды, ну то есть создавать какую-то правда отдельную страничку авторских прекрасных дневников



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



------------------



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



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



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



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



------------------



Итак, назовите 10 дневников на liveinternet.ru про которые можно сказать - "это дневник из категории - авторские тексты"


Метки:   Комментарии (239)КомментироватьВ цитатник или сообщество
ValeZ

Лента всех понравившихся мне (или тебе) сообщений

Понедельник, 09 Сентября 2013 г. 16:44 (ссылка)

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

Искать такую ссылку - в своей ленте друзей.

like_lenta (700x229, 62Kb)

Чужие "понравилось" в таком виде смотреть нельзя. Тут ведь может быть некоторая конфиденциальность. Хотя, конечно, есть еще и галочка "понравилось друзьям" в общей ленте друзей. Как думаете об этом?

Метки:   Комментарии (99)КомментироватьВ цитатник или сообщество
ValeZ

Записи со списком дел + улучшения массовой закачки фото

Четверг, 05 Сентября 2013 г. 19:11 (ссылка)


Настроение - облегчение и радость глаз, как после первого этапа генеральной уборки



Две новости есть для вас - хорошая и хорошая.



1) Нашел я тут пару месяцев назад дневник одной пользовательницы, которая в своих записях блога составляет список день на какой-то период и потом, редактируя, вычеркивает сделанные дела. И как-то мне эта идея так понравилась, что решили такую деятельность облегчить.



Теперь, если ввести в тексте записи последовательность [ затем пробел и потом ], то это превратиться в пункт списка дел (ну вернее так уже давно, просто раньше никто об этом не знал). И можно прямо в записи пометить себе, что надо:



739_todo_edit (437x79, 4Kb)



получится











И потом, чтобы пометить, что сделано - просто кликнуть на чекбоксик, ничего не редактируя. И сервер запомнит, перечеркнет и все будут видеть, что это дело - сделано.



2) С расширенным загрузчиком новости еще лучше:



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



loader_button (317x134, 6Kb)



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



PS этой возможности еще надо день-другой отлежаться, оттестироваться, чтобы пользоваться и только радоваться. А пока осторожнее:)


Метки:   Комментарии (80)КомментироватьВ цитатник или сообщество
ValeZ

И еще раз - как искать друзей

Понедельник, 12 Февраля 2013 г. 00:37 (ссылка)

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

ribbon (700x326, 70Kb)

Итак, теперь можно в верхней форме с фильтрами на этой странице указывать - какое минимальное количество друзей должно подписаться на дневник для того, чтобы он попал в эту ленту. По умолчанию это значение 5. Казалось бы - мнение аж пятерых друзей должно совпасть, много. Оказывается, что нет. Я, при своем небольшом списке друзей, даже со значением "минимум 7" получаю 246 кандидатов, "минимум 10" - уже около 100. Каждый подберет под себя сам, количество отобранных - отображается.

Ищите - и найдете. Я еще с десяток нашел людей, которые, по какой-то ошибке, не читал.

Проблема осталась - хочется отсеивать, лучше в один клик и без перегрузки страницы - людей из этой ленты. Тех, кто размещает рекламу. Тех, кого точно никогда не добавите. Да, впрочем, многим этого же хочется и при просмотре ленты друзей. Но там проще - нажал "Удалить из друзей" и удалил. А тут они не в списке друзей, и если только в игнор-список добавить. Но тогда человек не сможет комментарий написать и личное сообщение отправить. Наверное и не страшно это, если рекламу в своем дневнике размещает человек? Да, наверное будет там ссылка "Добавить в игнор". Добавил - и сообщения этого человека не светятся больше в "ленте друзей друзей". А пока - пойду сделаю это в настройках вручную и буду дальше искать интересное и интересных.

Метки:   Комментарии (70)КомментироватьВ цитатник или сообщество
Ромка1984

Gmail вводит новую функцию

Пятница, 04 Мая 2012 г. 12:18 (ссылка)


Gmail вводит новую функцию



1336118818_gmail (350x250, 12Kb)Почтовый сервис Gmail предложил своим пользователям новую функцию - перевод писем, который возможен в случае, если сообщение пришло на иностранном языке.



Для этого используется технология Google Translate. В течение нескольких дней функция станет доступна всем владельцам почтовых ящиков Gmail.

Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<новые функции - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda