Записи с тегом «век-живи-век-учись»

Нумерация записей коллекции средствами LINQ

27.11.2011 12:25 / Артём Волк / 156 просмотров / ...

Для получения индекса элемента коллекции в LINQ существует специальная версия метода Select():

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_Indexing
{
	class Program
	{
		static void Main(string[] args)
		{
			var data = new string[] { "First", "Second", "Third" };

			var dataWithIndex = data.Select((x, index) => new
			{
				Index = index,
				Title = x
			});

			foreach (var item in dataWithIndex)
			{
				Console.WriteLine("{0} {1}", item.Index, item.Title);
			}
		}
	}
}

Разбиение длинной команды на строки в командной строке Windows

27.08.2011 14:28 / Артём Волк / 336 просмотров / ...

В *nix'овских оболочках разбить длинную команду можно с помощью «\»:

ls \
-l

В Windows используется другой символ («^»):

C:\tools\curl\curl.exe ^
--request POST -d "{\"login\": \"user1\", \"password\": \"user1\" }" ^
http://example.com/auth/login/

В качестве примера — обращение к условному REST API.

Значение по умолчанию для select'а в ASP.NET MVC

29.07.2011 17:34 / Артём Волк / 436 просмотров / ...

Иногда возникает необходимость добавить в выпадающий список (<select />) ещё один пункт с пустым атрибутом value и примерно таким текстом: «выберите, пожалуйста, значение». Обычно такой пункт размещается в выпадающем списке первым. Специально для этого случая существуют специальные версии методов Html.DropDownList() и Html.DropDownListFor(), которые позволяют указать текст этого <option>'а следующим образом:

<%: Html.DropDownListFor(m => m.MyModelField, Model.ListOfOptions, "— не выбрано") %>

Массив массивов в PROGMEM для микроконтроллеров AVR

11.06.2011 11:39 / Артём Волк / 803 просмотра / ...

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

Особенно понравился доступ к массивам не так: a[2], а вот так: 2[a] (это работает для любых массивов в C) :)

смотреть код...

Extension-методы для DataRow и DataTable

04.03.2011 20:21 / Артём Волк / 504 просмотра / ...

Долгое время использовал такую конструкцию если нужно было получить данные из нетипизированного DataRow:

var temp = Convert.ToInt32(row["SomeField"]);

В случае, когда нужно было обработать nullable-поля, то использовался вот такой метод:

/*
 * Taken from: http://stackoverflow.com/questions/209160/nullable-type-as-a-generic-parameter-possible
 */
public static Nullable<T> GetValueOrNull<T>(DataRow row, string key) where T : struct
{
	object columnValue = row[key];

	if (!(columnValue is DBNull))
		return (T)columnValue;

	return null;
}

...

int? temp = GetValueOrNull<int>(row, "SomeField");

Оказалось, что есть более простой способ с использованием extension-метода Field<>():

int temp = row.Field<int>("SomeField");

Для класса DataTable есть свой набор полезных расширений

Встроенный String.Format() в inline-тегах ASP.NET

09.05.2010 15:52 / Артём Волк / 943 просмотра / ...

В одном скринкасте заметил интересный трюк.

Вместо такой записи:

<%= DateTime.Now.ToString("g") %>

можно написать:

<%= "{0:d}", DateTime.Now %>

А вместо:

<%= String.Format("Текущая дата: {0:d}, можно использовать числа, например: {1:0.#####}", DateTime.Now, Math.PI) %>

можно написать:

<%= "Текущая дата: {0:d}, можно использовать числа, например: {1:0.#####}", DateTime.Now, Math.PI %>

Трюк работает как для ASP.NET MVC так и для ASP.NET WebForms начиная с версии 2.0. Первоисточник в официальной документации пока не найден.

Небольшая оптимизация sprintf()

13.11.2009 21:59 / Артём Волк / 670 просмотров / ...

С помощью специальной записи строки формата можно немного укоротить запись вызова функции sprintf(). Например, вместо:

echo sprintf('Страница %d/%d (а всего страниц %d)', $current, $total, $total);

Можно использовать:

echo sprintf('Страница %1$d/%2$d (а всего страниц %2$d)', $current, $total);

Оператор присваивания в PHP

30.10.2009 0:29 / Артём Волк / 761 просмотр / ...

Результатом выражения присваивания является присваиваемое значение, что позволяет в некоторых случаях значительно сократить код.

читать дальше...