• Какие файлы можно удалить из папки Debug?

    Nipheris
    @Nipheris Куратор тега C#
    Во-первых для дальнейшего использования программы вам нужно скомпилировать ее в конфигурации Release. Какие дефолтовые настройки стоят для каждой из конфигураций можно посмотреть в файле проекта.

    *.pdb это не странные файлы, а отладочная информация, если я не ошибаюсь, в Release конфигурации они по-дефолту не создаются. Если все таки они есть - можете спокойно их удалять.
    .vshost.exe.* - это файлы помощника студийного дебаггера. Для самостоятельной работы программы они также не нужны.
    .exe.config - потребность в этом файле зависит от того, что в нем написано. Если не понимаете, что там - лучше оставить его и поставлять с программой (там, например, могут быть редиректы версий сборок).
    *.xml - если это не ваши xml-ки, то обычно это автосгенеренная документация. Если у вас приложение, а не библиотека, можете убрать их из поставки.

    Насчет остального должны знать сами. А вообще, изучайте инструмент, которым пользуетесь, если уже дошли до этапа поставки приложения (если конечно у вас не лабораторка там :) )
    Ответ написан
    Комментировать
  • Какие файлы можно удалить из папки Debug?

    @dmitryKovalskiy
    программист средней руки
    Просто сделайте Build в конфигурацию Release. Или Publish если доступна эта кнопка
    Ответ написан
    Комментировать
  • Как получить значение из textarea?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Ответ написан
    Комментировать
  • Насколько развито коммьюнити C#?

    opium
    @opium
    Просто люблю качественно работать
    А зачем ему комунити есть же мсдн
    сказать честно мсдн был мой первый опыт хорошей и всепокрывающей локальной документации, в эру когда интернет стоит по 6 рублей за мегабайт 99 процентов ответов про си# я находил в мсдн
    Ответ написан
    2 комментария
  • Как реализовать алгоритм вывода из бд многоуровневого меню?

    Rema1ns
    @Rema1ns
    и так сойдет
    через рекурсивную функцию по родителю, которая будет проверять наличие чилдренов и выводить их
    Ответ написан
    6 комментариев
  • ASP.NET MVC сможет ли тягаться?

    ArthurGurinovich
    @ArthurGurinovich
    Согласен со sitev_ru. Платформа .NET одна из самых мощных.
    Самое главное преимущество и оно же недостаток - это то, что платформа платная.
    Конечно много продуктов бесплатны, но в целом на поддержание такой платформы тратятся огромные деньги, что не скажешь об open source проектах. Это позволяет самой платформе быстро развиваться, быть стабильной, поддерживаемой. Саппорт работает отлично - поддержка клиентов на высоком уровне. Огромное сообщество разработчиков, очень много учебного материала, очень много готовых (шаблонных) решений.
    Возможности, которые предоставляет платформа позволяют сделать практически всё, что связано с web-разработкой.
    Если говорить о поиске работы, то .NET конечно имеет гораздо больше предложений чем все остальные.
    Ответ написан
    2 комментария
  • ASP.NET MVC сможет ли тягаться?

    @sitev_ru
    sitev.ru - мой блог ...
    Думаю, что он мощнее их всех вместе взятых )
    Ответ написан
    2 комментария
  • Каков алгоритм создания бота для OK.ru?

    svfat
    @svfat
    ☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺
    Я предполагаю, что ok.ru распознает бота, который будет оперировать только http-запросами для спама сообщениями (если бы это было не так, они бы погрязли в спаме). Предлагаю сразу разбираться и использовать что-то типа Selenium Webdriver. Со стороны это будет выглядеть как будто пользователь открывает браузер, авторизуется, переходит на определенную страницу и т.д.

    Практический плюс в том, что разобравшись с Selenium и поиграв с ботами, сможете писать автотесты для реальных web-приложений.
    Ответ написан
    6 комментариев
  • Как написать бота для выставления счета?

    Neuroware
    @Neuroware
    Программист в свободное от работы время
    Не нужно костылей, у QIWI есть API
    Ответ написан
    4 комментария
  • Чем плох enum в C#?

    GavriKos
    @GavriKos
    Возьмите пиво и допросите своих коллег - пусть альтернативу предлагают. Ничем enum не плох - удобная вещь.
    Ответ написан
    1 комментарий
  • Насколько "живучие" БД?

    DevMan
    @DevMan
    Помимо самих файлов БД, СУБД еще ведет лог транзакций, который (если не убит) используется при восстановлении.
    Ну а в целом, для решения таких проблем используются бекапы/репликация.
    Ответ написан
    Комментировать
  • Нужно ли использовать структуры в C#?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вы должны получить не процент (именно незначительный прирост если он вообще будет, в чем я лично сомневаюсь) от производительности а удобства при разработке и поддержке приложения.
    Ответ написан
    5 комментариев
  • Как "по-умному" объеденить 2 таблицы?

    Используйте UNION:
    SELECT t1.id, t1.date, t1.name, 'wall' AS `type` FROM `tbl1` AS `t1`
    UNION ALL
    SELECT t2.id, t2.date, t2.event AS `name`, 'events' AS `type` FROM `tbl2` AS `t2`
    ORDER BY `date` DESC
    LIMIT 20
    Ответ написан
    Комментировать
  • Как подключить к веб-приложению (ASP.NET MVC 4) БД MySql?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Необходимо скачать и установить Connector/Net.

    Работать также как и с любыми другими базами в .NET.

    Основные классы:
    • MySqlConnection - для подключения к базе;
    • MySqlCommand и MySqlDataAdapter - формирование запросов и получение данных.

    Подробности можно найти в документации.
    Ответ написан
    Комментировать
  • Какие требования у.NET при стандартной сериализации?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Чтобы класс можно было сериализовать, необходимо пометить его атрибутом [Serializable].
    [Serializable]
    public class MyClass 
    {
    }

    Атрибут [Serializable] также должны иметь все типы, которые включены в класс. Если у какого-то из типов не будет этого атрибута, то при попытке выполнить сериализацию, возникнет исключение. Это минимум, что необходимо.

    Для двоичной сериализации используется класс BinaryFormatter.
    // данные, которые будем сериализовать
    var data = new List<int> { 1, 2, 3 };
    
    // выполняем сериализацию 
    // в MemoryStream (можно в любой Stream)
    var bf = new BinaryFormatter();
    var m = new MemoryStream();
    bf.Serialize(m, data);
                
    // курсор потока переводим в начало, т.к. мы работали с потоком выше
    // если открывать новый поток, то это делать не обязательно
    m.Position = 0;
    // выполняем десериализацию данных из MemoryStream
    var result = (List<int>)bf.Deserialize(m);
    
    // выводим результат в консоль
    result.ForEach(itm => Console.WriteLine(itm));


    Если в объекте попадется тип, который не помечен атрибутом [Serializable], то можно реализовать в классе интерфейс ISerializable. Либо сделать для этого типа отдельный класс, реализующий интерфейс ISerializable. При этом, не забывая про атрибут [Serializable], который обязательно должен присутствовать.

    При реализации интерфейса ISerializable, в классе нужно определит метод GetObjectData, который будет подготавливать данные для сериализации. А также реализовать перегрузку конструктора для принятия сериализованных данных.
    public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
    {
      if (info == null)
      {
        throw new ArgumentNullException("info");
      }
      info.AddValue("Ключ", "Значение");
      info.AddValue("Ключ2", this.ИмяСвойства); 
      // и т.д.
    }
    
    // конструктор
    protected ИмяКласса(SerializationInfo info, StreamingContext context)
    {
      if (info == null)
      {
        throw new ArgumentNullException("info");
      }
      this.Свойство = info.GetValue("Ключ", typeof(типДанных));
      this.ИмяСвойства = (string)info.GetValue("Ключ2", typeof(string));
      // и т.д.
    }

    Часто спрашивают, как сериализовать Dictionary<TKey, TValue>. На основе всего выше изложенного, можно сделать вот такой класс:
    [Serializable]
    public class MyDictionary : Dictionary<string, object>, ISerializable
    {
    
      public MyDictionary() { }
    
      protected MyDictionary(SerializationInfo info, StreamingContext context)
      {
        if (info == null)
        {
          throw new ArgumentNullException("info");
        }
        int count = info.GetInt32("Count"); // получаем число элементов
        for (int i = 0; i < count; i++) // перебираем элементы
        {
          // получаем ключ и значение по индексу элемента
          string key = info.GetString(String.Format("ItemKey{0}", i));
          object value = info.GetValue(String.Format("ItemValue{0}", i), typeof(object));
          // добавляем элемент в себя
          this.Add(key, value);
        }
      }
    
      public void GetObjectData(SerializationInfo info, StreamingContext context)
      {
        if (info == null)
        {
          throw new ArgumentNullException("info");
        }
        // перебираем все элементы коллекции
        int i = 0;
        foreach (KeyValuePair<string, object> item in this)
        {
          // добавляем отдельно ключ и значение
          info.AddValue(String.Format("ItemKey{0}", i), item.Key, typeof(string));
          info.AddValue(String.Format("ItemValue{0}", i), item.Value);
          i++;
        }
        // запоминаем, сколько всего элементов
        info.AddValue("Count", this.Count);
      }
    }

    Пример использования:
    // выполняем сериализацию коллекции
    var data = new MyDictionary();
    data.Add("Key", "Value");
    data.Add("Key2", "Value2");
    data.Add("Key3", 123);
    
    var bf = new BinaryFormatter();
    var m = new MemoryStream();
    bf.Serialize(m, data);
    
    // выполняем десериализацию
    m.Position = 0;
    var result = (MyDictionary)bf.Deserialize(m);
    
    // выводим результат
    foreach (var item in result)
    {
      Console.WriteLine("{0} = {1}", item.Key, item.Value);
    }

    Посмотреть в .NET Fiddle, как это работает.
    Ответ написан
    Комментировать
  • Алгоритмический вопрос от будущего C#.NET-джуниора. С чего начать исследование?

    viktorvsk
    @viktorvsk
    Зачем однокоренные слова? Вы будете считать, что follow и followership - одинаковые слова? Тогда можете взять что-нибудь готовое из fuzzy matching, например. Или, если хочется по алгоритмам - самому реализовать нахождение расстояние Левенштейна, или что-то похожее простое.

    Но, как по мне, логичнее было бы сначала посторить по непосредственным словам (в книге X слово follow употребляется 123,234 раз)

    И так на каждое слово. А уже потом, на основании этих данных, придумать новую задачу. Например, найти самый часто употребляемый корень.
    Ответ написан
    4 комментария
  • Как встроить форму входа на сайт с другого сайта?

    @RJs45
    В любом случае, форма целевого сайта имеет action и набор полей. Посмотрите, какой action у той формы логина и какие поля. Затем на своем сайте напишите форму типа этой:
    <form action="[action из той формы]">
      <input type="text" name="[name из той формы]" />
      <input type="password" name="[name из той формы]" />
      <submit name="[name из оригинальной формы]" value="[аналогично]">
    </form>
    Ну, если там еще есть поля либо атрибуты у формы (например, method, enctype), то их тоже продублируйте.
    Не прокатит только если на том сайте при логине проверяется с какого сайта пришел запрос.
    Ответ написан
    1 комментарий
  • Как получить данные из стандартных команд cmd.exe в своем приложении на C#, не вызывая подпрограммы?

    @mayorovp
    У вас путаница в мыслях... Во-первых, "подпрограмма" - это в C# синоним метода. Если вы используете winforms - то вы уже используете кучу подпрограмм :) А то, чего вы хотите избежать, называется "внешняя программа" или "дочерний процесс".

    Во-вторых, рефлексия возможна только в отношении программ на платформе .NET - а перечисленные вами программы являются нативными. Разумеется, рефлексия в их отношении невозможна. По той же причине бесполезно из декомпилировать - все равно вам надо будет писать то же самое на другом языке.

    В-третьих, ping, tracert и netsh не являются командами cmd.exe. Команды cmd.exe - это echo, if, call, set, goto, for и т.д., а то, что вы перечислили - это системные утилиты.

    Теперь по вопросу.

    ping. Имеется вот этот класс: msdn.microsoft.com/en-us/library/system.net.networ... Ни разу с ним не работал, но выглядит удобным.

    tracert. Используйте тот же класс, указав Ttl в PingOptions.

    netsh. Тут все сложнее. Дело в том, что эта программа - обертка для кучи разных настроек, находящихся в совершенно разных местах. Если вам нужно получать данные - то попробуйте поискать их в msdn.microsoft.com/en-us/library/system.net.networ... Если их там нет - гуглите. Главное - гуглите без ключевого слова netsh.

    etc. А вот тут все не просто сложно, а невозможно. Невозможно взять неизвестную заранее утилиту, и сделать то же самое, что она делает, не запуская ее при этом. Поэтому вам надо определиться - либо ваша программа умеет выполнять фиксированный список действий - либо ей можно передать любую команду, но она будет запускать дочерние процессы. Возможен и промежуточный вариант - есть действия, которые программа может выполнять сама, а для выполнения других будут запускаться дочерние процессы.
    Ответ написан
    Комментировать
  • Как лучше хранить телефонный номер в БД?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    "Обожаю" такие вопросы.
    Начнем с того - сколько у Вас номеров в базе, что Вам актуальна экономия места?
    По теме - строки.
    Ответ написан
    12 комментариев
  • Какие фичи вы бы хотели видеть в умном доме если бы он у вас был, или если он у вас есть?

    opium
    @opium
    Просто люблю качественно работать
    Я пожил в куче мест и понял что 90% проблем решает дублирование выключателей у двери и кровати + ключ на выключение света на выходе.
    Ответ написан
    Комментировать