• Дуров начал выплачивать гранты на разработку VPN и Proxy
    0
    Чтобы как-то вот так: Пользователь в Интернете -> [Сервер, на котором настроен прокси и cjdns в Hyperboria] -> [Телеграм нода в Hyperboria]. Извне (интернет) доступен только прокси, который умеет посылать на единственный адрес. Живых нод, кстати, по данным fc00.org колеблется от ~540 до ~570. Причем есть какие-то изолированые ноду. Соглашусь, что если есть возможность держаться подальше от самой ноды, при этом имея к ней стабильный коннект — то лучше так и сделать. В любом случае, всё это пока бесполезно, пока телеграмм ноды еще нет в Hyperboria. Хороший вариант, если люди будут поднимать такие ноды для себя и друзей, т.е. прокси будет запаролирован. Найти и заблокировать такое будет уже сложнее, особенно если каждый из таких проксей не будет обслужить клиентов слишком массово. Хотя может это и уже слишком утопично.
  • Дуров начал выплачивать гранты на разработку VPN и Proxy
    0
    Можно попробовать на ноде, смотрящей в Hyperboria поставить проксю, которая настроена на то, чтобы проксировать трафик в Hyperboria (можно вообще ограничить прокси, чтобы ходил на одну единственную ноду). А сам прокси пускай смотрит в интернет (т.е. как и все остальные прокси, которые сделаны для людей). Чем больше таких волонтеров будет — тем проще противостоять блокировке. Соглашусь с тем, что вероятнее всего нужно хорошо попиарить cjdns/Hyperboria, но почему бы и нет?
  • 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
    И сильно потом матерились те, кому он это наследие оставил?
  • Правообладатели предлагают штрафовать за инструкцию обхода блокировки на 50 тысяч рублей
    +1
    Правооладатели стараются по-прежнему петь одну и ту же песню о ценности каждой копии. Пока они от этой идеи не откажутся — война будет продолжаться. Пока правообладателям похоже проще «продавить» (то есть получить «быстрое» решение) тот или иной блокирующий, штрафующий и издевающийся иными способами над конституцией закон.
  • Правообладатели предлагают штрафовать за инструкцию обхода блокировки на 50 тысяч рублей
    0
    Кстати, если делать это сейчас и, как выше уже написали, поддержат гиганты — то «незаконная» информация может распространиться еще до принятия (хотя, я надеюсь, что такое не пройдет) закона. Нужно быть на шаг впереди!
  • Отправляем сообщения в 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 в активной разработке.
  • Электромобили и гибриды, не рано ли?
    0
    Но я думаю это то, к чему надо стремиться, верно?
  • Электромобили и гибриды, не рано ли?
    +1
    А почему тут никто не говорит про ионистры?
    А почему нельзя приехать на заправку и просто сменить батарею на другую (чтобы не ждать заряда)?
  • 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) В случаях с интерфейсами и классами тоже на самом деле все очевидно. Разница лишь в том, что у интерфейса нет реализованного метода, а у класса, от которого Вы наследуете — есть. Этим все и объясняется.