• WildData: легкий фреймворк доступа к данным
    0
    Почитал мат. часть. Да, похоже что нужно ввести метод, который проверяет поддерживается ли определенный тип обёрткой или нет. Спасибо за замечание, учту!
  • WildData: легкий фреймворк доступа к данным
    0
    Я использовал Expressions по следующим причинам:
    1) компилируется минимум и функции просты до безобразия. Все, что можно не компилировать — не компилируется. Кроме того, кроме компиляцию создаются ещё некоторые вспомогательные структуры для конструирования как встроенных во фрейморк, так и кастомных запросов. Сгенерированные функции проверять каждый раз решарпером — думаю это лишнее, остальной код проверить конечно же можно.
    2) их всего три и вряд ли предвидится больше.
    3) не хочется никаких лишних действий кроме как использовать репозиторий и передать ему модель (в том числе унаследовать и добавить функции).
    4) в силу природы отложенной инциализации репозиториев разогрев будет сущим пустяком по времени (я не думаю, что за один запрос будет использовано более 10 репозиториев).
  • WildData: легкий фреймворк доступа к данным
    0
    Спасибо! Посмотрел пока мельком — то чего не хватало когда писал (превращение в SQL подобное с Select/Where писал сам и в данный момент в этой части кода пока не очень все нравится. Посмотрю подробнее.
  • WildData: легкий фреймворк доступа к данным
    0
    Посмотрел, да похоже, но концепция ближе к EF всё-таки.
  • WildData: легкий фреймворк доступа к данным
    –1
    Не совсем. Все-таки в интерфейсы оберток можно добавить любые методы, в реализациях выкинуть NotSupportedException, если СУБД по тем или иным причинам не поддерживает тип. Те интерфейсы которые объявлены в проекте будут использоваться одинаково, вне зависимости от того, какая реализация под капотом.
  • WildData: легкий фреймворк доступа к данным
    0
    Я перечислил классы DbConnection/DbCommand. Да, через DbProviderFactory можно получить DbConnection, а через него DbCommand и т.д. Но я говорю вот о чем: в случае скажем с PostgreSQL не приводя DbDataReader к NpgsqlDataReader (http://www.npgsql.org/api/Npgsql.NpgsqlDataReader.html) невозможно получить например NpgsqlTimeSpan (функция NpgsqlDataReader.GetInterval). TimeSpan сейчас еще не поддерживается фреймворком. Но это как раз является причиной использования конкретных реализаций.
  • WildData: легкий фреймворк доступа к данным
    0
    Спасибо! Хорошая идея!
  • WildData: легкий фреймворк доступа к данным
    0
    Обновил readme.
  • WildData: легкий фреймворк доступа к данным
    0
    Благодарю! Вы правы, readme стоит обновить. Столько всего хотелось сделать, что до него руки так и не дошли пока…
  • Сделано в МТИ: система контроля версий Gitless
    0
    git checkout мягко пытается вернуть состояния рабочей копии к состоянию последнего коммита в текущей ветке.
    git checkout никак не связан с разрешением конфликтов и никогда не предоставляет такой возможности (попросту говоря этой командой нельзя перевести git в состояние неразрешенных конфликтов.
  • Сделано в МТИ: система контроля версий Gitless
    +7
    Команды git checkout и git reset делают всё-таки разные вещи.
    То, что предлагается делать при помощи git reset --hard можно сделать и при помощи git checkout -f (git clean -xfd в случае необходимости).
    Для команды git reset --hard выбран почему-то один из частных случаев использования, который совпадает (или почти совпадает) с git checkout -f. Кроме того, команда не предназначена и никогда не используется для манипуляции с файлами, по крайней мере в таком режиме (soft/hard/mixed).

  • История языков программирования: C# — впереди планеты всей
    0
    SCOPE (Structured Computing Optimized for Parallel Execution) или как он теперь называется — U-SQL. Код исполняется в кластерах Cosmos.
  • Зачем программисту знать алгоритмы
    0
    Кстати, припоминаю сейчас парочку кандидатов которые вели себя именно как пуп земли. К счастью, я их не взял. За мысль спросить про предыдущее место работы и отзывы о коллегах и начальниках спасибо! Будем спрашивать.
  • Зачем программисту знать алгоритмы
    0
    Насчет стресса — я это понимаю — пытаюсь подбодрить, подсказать в конце концов, не дать сдаться сразу. Как на интервью оценить умение работать в команде, я, честно говоря, не знаю. По технологии я тоже гоняю в первую очередь. Предпочту взять человека, который пускай чего-то не знает по технологиям, но делает правильные шаги к решению. Критический случай — когда не знает ничего по технологии, но такое бывает редко. Впрочем, как правило, и на задаче такие ничего предложить не могут.

    Стресс обычно бывает только на первых интервью, с каждым новым интервью стресса меньше и меньше. Первые интервью в жизни как правило провальные. Дальше — лучше.
  • Зачем программисту знать алгоритмы
    0
    Обычно на собеседовании даю решать задачки (помимо технических вопросов на понимание конкретной области). Я не использую задачи на знания "специализированных" алгоритмов (сортировка, бинарный поиск, графы, деревья и т. п.). Алгоритмы знаю (достаточное количество).

    Задачи вовсе необязательно должны отвечать на вопрос "а где это применяется на практике?". Цель задач не в этом. Цель такого род задач оценить насколько хорошо кандидат умеет мыслить, каким образом кандидат пытается подойти к решению, насколько хороши навыки владения тем или иным языком программирования, как кандидат проверяет правильность своего решения. Удобство задач в том, что они миниатюрны (одно предложение в большинстве случаев).

    Если взглянуть на набор задач, которые обычно предлагают на собеседовании то можно заметить, что эти задачи в основном нацелены на то, чтобы проверить знает ли кандидат о существовании того или иного алгоритма и правильно ли он его может применить (вызвав, например, библиотечную функцию).

    Важно также помнить, что интервью — это именно оценка кандидата, т. е. реальное положение вещей может несоответствовать оценке. Но за час беседы с человеком эту оценку нужно дать.

    Со статьей согласен (хотя может, наверное, показаться обратное). Имел проект (на C#), который достался "в наследство" и вроде бы и люди не глупые его делали и давно уже не студенты (не в обиду студентам), но когда внутри цикла foreach по одной коллекции проверяется принадлежность к другой при помощи метода Contains. Только этот метод является методом-расширением для интерфейса IEnumerable, становится как-то невесело, нерадужно и печально.
  • Зачем программисту знать алгоритмы
    +3
    И сильно потом матерились те, кому он это наследие оставил?
  • Отправляем сообщения в Telegram из C#
    +4
    Спасибо за библиотеку и статью. Единственное, что бросается в глаза — это то, что async-методы не имеют суффикса Async. Синхронные варианты функций хотелось бы тоже иметь.
  • Процедурно генерируемые карты мира на Unity C#, часть 2
    0
    Вы случайно не старой доброй Populous: The Beginning вдохновлялись? Вы потом это будете как-то использовать помимо статей? Планируете ли, например, писать что-то на базе идеи «безграничной» карты?
  • Как у Аськи лицо менялось: визуальная эволюция интерфейса ICQ
    +1
    Называлось это iserverd. Сайт жив до сих пор: iserverd.khstu.ru/russian. Не знаю насколько сейчас работоспособно, но номер версии с момента моей последней компиляции не поменялся. Было это лет 7 назад. Через официальный клиент не пробовал, но пробовал через Miranda. Тогда ощущения переполняли ) Я же общался сам с собой. Писал сообщения с 1-знака «1» на 1-знак «2» =) Собирал ради того, чтобы просто посмотреть.
  • Интеграция Team Foundation Services с Git и другие новые возможности
    0
    Я имел ввиду, что еще пару дней назад он был совсем другой
  • Интеграция Team Foundation Services с Git и другие новые возможности
    +1
    Смотрите как преобразился их сайт.
  • Релиз GitLab 4.0 и GitLab CI
    +1
    Присоединяюсь к вопросу. Ведь исходники есть. Travis CI в активной разработке.
  • Easyweb — XSLT-движок для веба
    0
    Не горячитесь =) Я понял, что Вы не на клиенте это делаете. Я лишь хотел поделиться какие проблемы от верстки на клиенте (ввиду начавшегося обсуждения).
  • Easyweb — XSLT-движок для веба
    –2
    Честно сказать, тоже когда-то отрисовывал именно на клиенте. Результат из этого получился примерно следующий:
    1) konquerer, rekonq (похоже весь WebKit) не обрабатывают xslt. Ну и IE6 конечно же — но он мало волнует.
    2) похоже что ни одна поисковая система не поддерживает такого рода страницы.
    3) избыточность клиентского трафика, если гнать в клиент в виде «объектов» и не применять какую-то доп. технику.

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

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

    Вы немного перемудрили:
    1) Я думаю надо посмотреть описание языка и будет все ясно что не так. Любой оператор это: for, (do)while, using, try, foreach, if, либо [имя_типа имя_переменной = ] выражение[, [имя_типа имя_переменной = ] выражение]...;
    2) В случаях с интерфейсами и классами тоже на самом деле все очевидно. Разница лишь в том, что у интерфейса нет реализованного метода, а у класса, от которого Вы наследуете — есть. Этим все и объясняется.
  • Через 3000 лет у всех людей будет общий предок, живущий сегодня
    +2
    Нет, так как скажем лет через 10 лет любой житель скажем Северной Америки не станет прямым потомком любого живущего ныне человека скажем в Евразии (просто не успеет поколение смениться). Такой эффект наблюдается из-за того, что тем больше вглубь идем по предкам — тем больше у вас количество пра… бабушек и пра… дедушек. Например, мама всегда одна, бабушек — две, прабабушек — четыре и т. д. Тоже самое с отцами и дедушками.
  • Я не могу написать бинарный поиск
    0
    Но ведь операция ~ естественным образом отражает отрицательные числа в неотрицатальные и наоборот. Причем сопоставления однозначное с обоих сторон.
  • Я не могу написать бинарный поиск
    0
    Все-таки не соглашусь.

    Позволю уточнить, что я имел ввиду UpperCamelCase.
  • Я не могу написать бинарный поиск
    0
    Да, через начальную точку и длину. Такие же параметры принимает функция BinarySearch оригинального класса System.Collections.Generic.List (от которого я собственно и породил новый List).
    Мне необходимо было пробегаться по определенной части массива элементов равных какому-то значению (например 4) причем в цикле и без операций сравнения на каждом шаге пробега (операции сравнения тяжеловесные, элементов в массиве много).
  • Я не могу написать бинарный поиск
    +1
    Каюсь, простите, не так часто пишу комментарии…
  • Я не могу написать бинарный поиск
    +3
    Но все-таки в C# CamelCase, поэтому лучше BinarySearch.