Как стать автором
Обновить
8
0
Антон Подавалов @apodavalov

Разработчик

Отправить сообщение
Не горячитесь =) Я понял, что Вы не на клиенте это делаете. Я лишь хотел поделиться какие проблемы от верстки на клиенте (ввиду начавшегося обсуждения).
Честно сказать, тоже когда-то отрисовывал именно на клиенте. Результат из этого получился примерно следующий:
1) konquerer, rekonq (похоже весь WebKit) не обрабатывают xslt. Ну и IE6 конечно же — но он мало волнует.
2) похоже что ни одна поисковая система не поддерживает такого рода страницы.
3) избыточность клиентского трафика, если гнать в клиент в виде «объектов» и не применять какую-то доп. технику.

После коммита нет конечно же =). Но гарантирует, что в будущем таких ситуаций не будет. Использую всегда в своих проектах.
.gitattributes хорошая штука. Можно указать какие переносы строк в каких файлах использовать. Правда это все 100% работает если Вы используете git (а не JGit — насколько я помню там еще эта штука не поддерживается — поправьте, если уже да). Разница между настройкой и .gitattributes в том, что файлик находится в репозитории и там уже тяжело ошибиться. При коммите он насильственно будет использовать нужные переводы строк, что собственно и нужно. Ошибиться довольно тяжело.
В ASCII (так как она совместима со всеми кодировками или практически со всеми) используя символы с кодами 0..127
По кривой как раз сейчас не интересует. Интересует именно форматированный вывод. Если можно, поделитесь, пожалуйста, примером.
А вот еще хороший пример.

Я вот до сих пор не могу понять, можно ли в SVG вывести отформатированный текст? Т.е. задаются граница текста (например прямоугольник) и опции: выравнивание по вертикали и горизонтали.
Так я и сам тоже преподавал — такой же принципа придерживался =)
Какова бы не была лекция, если не использовать материал на практике, то, по большому счету, смысла в лекциях нет вовсе. Надо всего лишь уметь ставить правильно задачу и искать материал для ее решения (и само решение разумеется). А лекции, какими бы они не были хорошими или плохими забудуться достаточно быстро (попробуйте вспомнить по предмету что-нибудь через неделю или месяц после экзамена). Но! Бывают люди, лекции которых слушать одно удовольствие. Бывают наоборот, люди, слушать лекции не то, что не хочется, а вообще противно. Да и как я уже сказал, бывают требования преподавателей просто дебильные (принеси конспект лекции или зачет не поставлю, заучи наизусть правило переведения из одной системы счисления в другую (привет Суздальцеву из КНИТУ-КАИ) (!)). Ну вот зачем это заставлять делать? Почему нельзя рассказать идею? Почему нельзя дать примеры и посмотреть как человек решает? ЗАЧЕМ? Вопрос остается открытым…
Самая большая ложка дегтя состоит в том, что некоторые преподы требуют для сдачи экзамена или зачета конспект лекции, написанные от руки! Слава богу, закончил универ в 2009.
*извиняюсь вот так должно быть [имя_типа имя_переменной = ] выражение[, [имя_переменной = ] выражение]...;
По поводу строки:
int i = int j = 0;

Вы немного перемудрили:
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 цветах).
Но ведь операция ~ естественным образом отражает отрицательные числа в неотрицатальные и наоборот. Причем сопоставления однозначное с обоих сторон.
Все-таки не соглашусь.

Позволю уточнить, что я имел ввиду UpperCamelCase.
Да, через начальную точку и длину. Такие же параметры принимает функция BinarySearch оригинального класса System.Collections.Generic.List (от которого я собственно и породил новый List).
Мне необходимо было пробегаться по определенной части массива элементов равных какому-то значению (например 4) причем в цикле и без операций сравнения на каждом шаге пробега (операции сравнения тяжеловесные, элементов в массиве много).
Каюсь, простите, не так часто пишу комментарии…
Но все-таки в C# CamelCase, поэтому лучше BinarySearch.
Было дело писал интересную надстройку над классом 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);
        }
    }
}

Простите, что код без комментариев и описания. Может кому-то пригодится. Возможно кто-то укажет что можно сделать лучше =)

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность