• Что делать с воровством контента?

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

    Не факт. Если постараться, исходный контент можно сделать копией.

    Что с этим делать?

    Как минимум, сообщить об этом поисковикам. Может отреагируют и добавят злодея в какой-нибудь черный список.
  • Чем плох enum в C#?

    Oxoron: например, если из enum нужно делать строку и формат строки не позволяет использовать имена элементов перечисления. В таких случаях придется делать дополнительные методы преобразования элементов перечисления в строки. Чтобы не делать, проще использовать константы. Из последнего, могу вспомнить вот такой пример, где я решил использовать константы, чтобы не городить лишних методов. Хотя программистам, которые будут использовать код, это может доставить определенные неудобства, потребуется больше знаний, с перечислением было бы удобней. Но с другой стороны, им (программистам) придется лезть в глубь кода и, без соответствующих знаний, наличие удобных enum-ов вряд ли чем-то поможет, а вот лишний метод или лес условий, напротив, может усложнить разбор кода. В данном случае, это нижний уровень, на верхнем программисты с этими константами не встретятся.

    Еще вариант, когда неизвестно, какие значения могут быть. Чтобы не ограничивать перечислениями, удобней использовать константы. Если использовать перечисления, то код может получиться совсем сложным, бесполезно сложным.

    В случае с публичными проектами, константы упрощают процесс сохранения обратной совместимости между различными версиями продукта. Например, если изначально использовать перечисление, а потом вдруг выяснится, что объект, для которого создано перечисление, может иметь абсолютно любые значения, то придется заменять перечисление. Это будет сложно сделать. Потребуется делать большие перестановки в коде и при этом нужно будет сохранять совместимость со старыми версиями продукта и, что не мало важно, удобство использования (кода). Конечно, можно повесить «мягкий» Obsolete и сделать перегрузку методов, если это возможно, а потом удалить мусор через пару десятков версий. Или превратить перечисление в класс с константами и сделать из него псевдо-enum. Или вообще забить на всё и выпустить абсолютно новую серию продукта; или, что еще хуже, переделать все под старшей версий и потом сказать, что так и был. Кому это понравится? :-) С константами такие ошибки исключены, ну разве что с типами данных можно прогадать.

    Перечисления нужно использовать в местах, где точно известно, что кроме Male и Female никого больше быть не может, а если и может, то их количество несущественно. Ну и еще для битовых значений, если это уместно. В глубинах кода, куда простой смертный программист не сунется, использование обычных констант позволит сохранить хорошее соотношение гибкости и удобства использования.

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

    Хотя нет, пока писал, пришел к потенциально опасной фишке перечислений – автоматическая индексация. Если не контролировать это, то можно получить серьезные логические ошибки при изменении структуры перечислений (например, если добавить элемент в начало или середину). Хотя сам никогда не рассматривал это как проблему. Обычно, если требуется запись значений перечислений, например, в базу в виде чисел, то я жестко определяю правила, проставляю значения вручную и пишу инструкцию, как это делать. В коде всегда стараюсь использовать элементы перечисления из перечислений, а не их числовые значения. Но не факт, что в большом проекте, где много людей, все будут делать аналогично.

    Вот пример:
    public enum Sex { Male, Female }
    Кто-нибудь может написать такой код, полагая, что ноль – это Male:
    if (sex == 0) 
    {
      return "Мужик!";
    }
    else
    {
      return "Нет, не мужик";
    }

    А потом, бац:
    public enum Sex { None, Male, Female }
    И всё! Мужик больше не мужик :-) Пока заметят проблему, может много чего произойти (в коде и данных).
  • Как лучше однократно объединить несколько БД в одну?

    Я бы предпочел повозиться с числовыми индексами (зафиксировать в большой базе и поменять значения ключей в маленькой, потом объединить), чтобы все было "ровно". Но я сдвинутый на всю голову перфеционист :-)

    Проще всего сделать рядом GUID-ы (или новый числовой счетчик) и обновить связи (кодом).
  • Чем плох enum в C#?

    Впервые слышу :-)

    Другое дело, что иногда бывает удобней использовать константы или статичные read-only свойства.
  • C# выводит какую то ошибку, как исправить?

    поставьте английскую студию

    Точнее английский *.NET Framework*.

    Еще можно переводить русские тексты об ошибках на английский и гуглить, если *Google* сам не предложит варианты на английском :-)
  • Почему после выполнения INSERT отсутствуют данные в таблице?

    Возможно файл базы перезаписывается после каждой перекомпиляции программы. Можно отключить в свойствах файла (выбрать файл в VS и на панели свойств указать, что с ним делать при построении).

    В самой Visual Studio, вроде как должен быть быть не тот файл базы, который использовала программа (в папке bin).

    SCOPE_IDENTITY в запросе не нужен, т.к. ExecuteNonQuery.

    Данные в запрос лучше передавать параметрами:
    this.query.CommandText = "insert into wort (deutch, russich) values (@deutch, @russich)";
    this.query.Parameters.Add("@deutch", SqlDbType.NVarChar).Value = deutch_wort
    this.query.Parameters.Add("@russich", SqlDbType.NVarChar).Value = rissich_wort


    Про дубликаты, без схемы таблицы сложно сказать.
  • Подскажете алгоритм шифрования?

    Шифрование китайским языком? :-)

    2wu

    Все же, если данные зашифрованы, их лучше в виде массива байт передавать, т.к. при преобразовании в текст они могут сломаться.
  • Есть ли книги по C#, в которой подробно рассказывается о работе с XML или Json?

    Почему или :-) И с тем и с другим нужно уметь работать.

    JSON проще. По идее проблем особых быть не должно.
    Json.NET

    С XML чуть сложнее, много всяких классов и методов существует. Самый простой - XmlDocument, подойдет для работы с небольшими объемами данных. Еще можно XDocument использовать, но он может быть непонятным, XmlDocument вроде бы должен быть проще.

    Еще можно использовать xml-сериализацию для классов. Может упростить разбор XML, но тоже только для небольших объемов годится. Со сложной структурой придется повозиться.
  • Могу ли я создать текстбоксы в зависимости от запроса?

    Руками :-)

    Если WebForms, то:
    this.Controls.Add(new TextBox { ID = "MyTextBox", Text = "Значение из базы"});

    Лучше добавлять на не страницу, а PlaceHolder или Panel, чтобы проще было найти.

    Динамические элементы нужно создавать всегда, после каждого PostBack, чтобы восстанавливалось состояние и можно было получить доступ к элементам программно.

    В MVC просто "нарисовать" на странице HTML:
    for(int i = 1; i<=3;i++)
    {
      <input type="text" name="textBox[]" value="значение из модели, которые было получено из базы" />
    }

    В WebForms, в принципе, кроме религии, ничто не запрещает делать аналогично :-)
  • Как правильнее вставить в JS код длинный блок html кода?

    Матвей Мамонов: это тоже не проблема. Количество строк значения не имеет, HTML может и одной строкой быть записан.

    Если меню будет скрыто на странице, то после авторизации, если какие-то пункты меню должны быть недоступны для пользователя, то это тоже можно сделать JavaScript-ом, при обработке данных answ.

    Если все совсем сложно, то можно использовать получение HTML. Наверное лучше вынести панель пользователя в отдельный файл, который сможет подключаться к страницам и выводить необходимые данные, а такжеиспользоваться в качестве результата успешной авторизации в асинхронном режиме.

    Т.е., при загрузки страницы сайта, если пользователь авторизован, страница может содержать примерно такой код:
    if($isUser)
    {
      // показываем панель пользователя
      require_once "./userpanel.php"; 
    }
    else
    {
      // панель гостя
      require_once "./guestpanel.php"; 
    }

    Если пользователь не авторизован, то при AJAX авторизации, код страницы (к которой делается ajax-запрос) может быть похожим:
    // код проверки пользователя
    // ...
    
    // вывод результатов
    if($isUser)
    {
      // панель пользователя
      require_once "./userpanel.php"; 
    }
    else
    {
      // сообщение об ошибке
      require_once "./error.php"; 
    }


    Этот вариант будет проще, если панель пользователя сложная или часто меняется.
  • Как правильнее вставить в JS код длинный блок html кода?

    Матвей Мамонов: и какие с этим могут быть проблемы? :-)
    $('#photo').atr('src', answ.photo);
    $('#nickname').html(answ.nickname);
    // и т.п.


    Можно без id, использовать атрибуты data-*, сделать что-нибудь более универсальное, чтобы много кода не приходилось писать.

    Если пользователь авторизован, то на страницу можно передавать JSON-данные в скрытое поле, такие же, как при авторизации. ИJavaScript-ом проверять данные в этом скрытом поле и если информация есть, выводить нужные блоки.
  • Как реализовать выполнение очереди комманд в дочернем потоке?

    Артем Иванцов: слишком сложно, я предлагаю проще :-)

    Без пауз и проверок состояний потоков. Примерно так:
    var commands = new List<byte[]>();
    for(var i = 0; i <= commands.Count - 1; i++)
    {
      _port.Write(commands[i], 0, commands[i].Length);
      commands.Remove(commands[i]);
      i--;
    }

    Чем проще и больше контроля, тем меньше глюков.

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

    А если делать кучу потоков, то проблемы неизбежны.
  • Много ли людей пользуется виджетами авторизации на сайтах?

    Много. Это просто и удобно. Для пользователя делов на пару кликов, а при входе на целый один клик. Количество новых пользователей обычно увеличивается.

    Но не все поставщики OAuth отдают нужные данные, главным образом email. В таких случаях все равно приходится, при создании учетной записи пользователя через социалку, отдельно запрашивать у него email и прочие необходимые данные.

    Скорее всего не пригодится, но если что, то под .NET у меня есть библиотека с готовыми клиентами для многих популярных поставщиков OAuth. На сайте можно посмотреть, как это работает.

    Для работы с API различных служб, без авторизации по OAuth вообще не обойтись.
  • Как реализовать выполнение очереди комманд в дочернем потоке?

    Коллекция команд, запуск циклом. После завершения выполнения команды, она удаляется из очереди. Когда команд в коллекции не остается, процесс останавливается. При добавлении новой команды - запускается вновь.

    Если все будет последовательно, то проблем особых возникнуть не должно (с удалением из коллекции).