Не горячитесь =) Я понял, что Вы не на клиенте это делаете. Я лишь хотел поделиться какие проблемы от верстки на клиенте (ввиду начавшегося обсуждения).
Честно сказать, тоже когда-то отрисовывал именно на клиенте. Результат из этого получился примерно следующий:
1) konquerer, rekonq (похоже весь WebKit) не обрабатывают xslt. Ну и IE6 конечно же — но он мало волнует.
2) похоже что ни одна поисковая система не поддерживает такого рода страницы.
3) избыточность клиентского трафика, если гнать в клиент в виде «объектов» и не применять какую-то доп. технику.
.gitattributes хорошая штука. Можно указать какие переносы строк в каких файлах использовать. Правда это все 100% работает если Вы используете git (а не JGit — насколько я помню там еще эта штука не поддерживается — поправьте, если уже да). Разница между настройкой и .gitattributes в том, что файлик находится в репозитории и там уже тяжело ошибиться. При коммите он насильственно будет использовать нужные переводы строк, что собственно и нужно. Ошибиться довольно тяжело.
Я вот до сих пор не могу понять, можно ли в SVG вывести отформатированный текст? Т.е. задаются граница текста (например прямоугольник) и опции: выравнивание по вертикали и горизонтали.
Какова бы не была лекция, если не использовать материал на практике, то, по большому счету, смысла в лекциях нет вовсе. Надо всего лишь уметь ставить правильно задачу и искать материал для ее решения (и само решение разумеется). А лекции, какими бы они не были хорошими или плохими забудуться достаточно быстро (попробуйте вспомнить по предмету что-нибудь через неделю или месяц после экзамена). Но! Бывают люди, лекции которых слушать одно удовольствие. Бывают наоборот, люди, слушать лекции не то, что не хочется, а вообще противно. Да и как я уже сказал, бывают требования преподавателей просто дебильные (принеси конспект лекции или зачет не поставлю, заучи наизусть правило переведения из одной системы счисления в другую (привет Суздальцеву из КНИТУ-КАИ) (!)). Ну вот зачем это заставлять делать? Почему нельзя рассказать идею? Почему нельзя дать примеры и посмотреть как человек решает? ЗАЧЕМ? Вопрос остается открытым…
Самая большая ложка дегтя состоит в том, что некоторые преподы требуют для сдачи экзамена или зачета конспект лекции, написанные от руки! Слава богу, закончил универ в 2009.
Вы немного перемудрили:
1) Я думаю надо посмотреть описание языка и будет все ясно что не так. Любой оператор это: for, (do)while, using, try, foreach, if, либо [имя_типа имя_переменной = ] выражение[, [имя_типа имя_переменной = ] выражение]...;
2) В случаях с интерфейсами и классами тоже на самом деле все очевидно. Разница лишь в том, что у интерфейса нет реализованного метода, а у класса, от которого Вы наследуете — есть. Этим все и объясняется.
Нет, так как скажем лет через 10 лет любой житель скажем Северной Америки не станет прямым потомком любого живущего ныне человека скажем в Евразии (просто не успеет поколение смениться). Такой эффект наблюдается из-за того, что тем больше вглубь идем по предкам — тем больше у вас количество пра… бабушек и пра… дедушек. Например, мама всегда одна, бабушек — две, прабабушек — четыре и т. д. Тоже самое с отцами и дедушками.
Первый компьютер (не совсем мой, отец принес на лето): 80286 (частоту к сожалению не помню, что-то около 10 MHz). 1 Mb оперативной памяти. 30 Mb HDD, (были дисководы, вроде даже обоих типов 5,25, 3,5), MS DOS, TurboPascal (на котором я азы программирования изучал), av (волейбол). Было это примерно в году 1997. Мне было 11 лет на тот момент.
P.S. До этого была еще БК0010-01, который был куплен, когда мне было 4. Но на нем я ничего так и не написал, но зато прикупили с отцом дисководы, а затем жесткий диск. Периодически дома появлялся матричный принтер CM6337, который отец приносил с работы. Позже к БК успешно подключали матричный EPSON. Текстовый процессор на котором работали стал Vortex (первое время, до появления дисковода, пользовались текстовым редактором TED8). Количество игрушек, которые были на БК можно позавидовать. Включая порты на БК Prince of Persia, Goblins (представьте как это выглядело в 4 цветах).
Да, через начальную точку и длину. Такие же параметры принимает функция BinarySearch оригинального класса System.Collections.Generic.List (от которого я собственно и породил новый List).
Мне необходимо было пробегаться по определенной части массива элементов равных какому-то значению (например 4) причем в цикле и без операций сравнения на каждом шаге пробега (операции сравнения тяжеловесные, элементов в массиве много).
Было дело писал интересную надстройку над классом List C# реализующий поиск первого и последнего элементав массиве при помощи бинарного поиска (например, в массиве 0 1 2 2 3 4 4 4 5 6 первый элемент равный 4 — 5, последний индекс элемента равного 4 — 7)
using System;
using System.Collections.Generic;
using System.Text;
namespace ObfuscatedNamespace
{
public class List<T> : System.Collections.Generic.List<T>
{
public List() : base() {}
public List(IEnumerable<T> collection) : base(collection) { }
public List(int capacity) : base(capacity) { }
public int BinarySearchFirst(T item)
{
return BinarySearchFirst(0, Count, item, null);
}
public int BinarySearchFirst(T item, IComparer<T> comparer)
{
return BinarySearchFirst(0, Count, item, comparer);
}
public int BinarySearchFirst(int index, int count, T item, IComparer<T> comparer)
{
if (index < 0 || count < 0) throw new ArgumentOutOfRangeException();
if (index + count > Count) throw new ArgumentException();
if (comparer == null)
comparer = Comparer<T>.Default;
if (comparer == null) throw new InvalidOperationException();
int low = index;
if (count == 0)
return ~index;
int middle;
int len = count;
int half;
while (len > 0)
{
half = len / 2;
middle = low + half;
if (comparer.Compare(this[middle], item) < 0)
{
low = middle + 1;
len = len - half - 1;
}
else
len = half;
}
if (low >= count || comparer.Compare(this[low], item) != 0)
return ~low;
else
return low;
}
public int BinarySearchLast(int index, int count, T item, IComparer<T> comparer)
{
if (index < 0 || count < 0) throw new ArgumentOutOfRangeException();
if (index + count > Count) throw new ArgumentException();
if (comparer == null)
comparer = Comparer<T>.Default;
if (comparer == null) throw new InvalidOperationException();
int low = index;
if (count == 0)
return ~index;
int middle;
int r;
int len = count;
int half;
while (len > 0)
{
half = len / 2;
middle = low + half;
r = comparer.Compare(item, this[middle]);
if (r < 0)
len = half;
else
{
low = middle + 1;
len = len - half - 1;
}
}
if (low > 0)
{
r = comparer.Compare(item, this[low - 1]);
if (r == 0)
return low - 1;
else
return ~low;
}
else
return ~low;
}
public int BinarySearchLast(T item)
{
return BinarySearchLast(0, Count, item, null);
}
public int BinarySearchLast(T item, IComparer<T> comparer)
{
return BinarySearchLast(0, Count, item, comparer);
}
}
}
Простите, что код без комментариев и описания. Может кому-то пригодится. Возможно кто-то укажет что можно сделать лучше =)
1) konquerer, rekonq (похоже весь WebKit) не обрабатывают xslt. Ну и IE6 конечно же — но он мало волнует.
2) похоже что ни одна поисковая система не поддерживает такого рода страницы.
3) избыточность клиентского трафика, если гнать в клиент в виде «объектов» и не применять какую-то доп. технику.
Я вот до сих пор не могу понять, можно ли в SVG вывести отформатированный текст? Т.е. задаются граница текста (например прямоугольник) и опции: выравнивание по вертикали и горизонтали.
Вы немного перемудрили:
1) Я думаю надо посмотреть описание языка и будет все ясно что не так. Любой оператор это: for, (do)while, using, try, foreach, if, либо [имя_типа имя_переменной = ] выражение[, [имя_типа имя_переменной = ] выражение]...;
2) В случаях с интерфейсами и классами тоже на самом деле все очевидно. Разница лишь в том, что у интерфейса нет реализованного метода, а у класса, от которого Вы наследуете — есть. Этим все и объясняется.
P.S. До этого была еще БК0010-01, который был куплен, когда мне было 4. Но на нем я ничего так и не написал, но зато прикупили с отцом дисководы, а затем жесткий диск. Периодически дома появлялся матричный принтер CM6337, который отец приносил с работы. Позже к БК успешно подключали матричный EPSON. Текстовый процессор на котором работали стал Vortex (первое время, до появления дисковода, пользовались текстовым редактором TED8). Количество игрушек, которые были на БК можно позавидовать. Включая порты на БК Prince of Persia, Goblins (представьте как это выглядело в 4 цветах).
Позволю уточнить, что я имел ввиду UpperCamelCase.
Мне необходимо было пробегаться по определенной части массива элементов равных какому-то значению (например 4) причем в цикле и без операций сравнения на каждом шаге пробега (операции сравнения тяжеловесные, элементов в массиве много).
Простите, что код без комментариев и описания. Может кому-то пригодится. Возможно кто-то укажет что можно сделать лучше =)