Задать вопрос
  • В какой области ИТ вертятся самые большие деньги?

    @xydope
    Вы интернетом вообще пользуетесь? Про Microsoft, Apple, Facebook слыхали?
    Ответ написан
    Комментировать
  • Какие требования у.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++ в эдит запретить вводить какието символы?

    donkaban
    @donkaban
    Умею рисовать тени
    Вы, очевидно используете какую-то GUI библиотеку, ибо C++, как язык ни о каких "этит"'ах ничего не знвает. К сожалению все телепаты, в связи с кризисом - в отпусках.
    Ответ написан
    Комментировать
  • Как определить есть ли остаток от деления в c++?

    ErmIg
    @ErmIg
    Программист
    В C++ остаток от деления определяется оператором %. Например:
    int a = 5 % 3;
    Ответ написан
    Комментировать
  • Как определить есть ли остаток от деления в c++?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    const int a=5%2; //% - вычислить остаток от деления левого на правое
    cout<<a;

    ---------------------------------
    1
    Ответ написан
    Комментировать
  • Математика и олимпиадное программирование?

    tsarevfs
    @tsarevfs
    C++ developer
    Олимпиады это отличный бонус при поступлении в вуз. 10 класс это поздновато для начала, но попытаться стоит.
    Посмотрите на программу ЛКШ. Многие успешные олимпиадники учились там. Хорошо почитать про вещи представленные в ней (начиная с уровня D до A). Может быть полезно почитать вики за 1, 2, 3 семестр, особенно про комбинаторику, динамику, графы, поисковые структуры.
    Нужно очень много практики. Неплохим вариантом будет прорешивать задачи с acmp.ru. Количество важно. Нужно научиться делать это быстро.
    Ответ написан
    2 комментария
  • Математика и олимпиадное программирование?

    donkaban
    @donkaban
    Умею рисовать тени
    А можно задать вопрос? Спасибо. Вот это "хочу заниматься олимпиадным программированием" - это про что? Вы хобби себе выбираете? Очевидно, что это не профессия.
    Ответ написан
    3 комментария
  • Разве StringWriter унаследован от Stream?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Метод Serialize перегружен и, помимо прочего, может принимать TextWriter, от которого наследуется StringWriter.
    Ответ написан
    Комментировать
  • С чего начать школьнику 16 лет?

    @pashwrs
    с англ языка стоит начать
    Ответ написан
    Комментировать
  • На чем написать игру для Android новичку?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Предположу, что игры вы раньше не делали и под андроид не писали, следовательно за месяц вам придётся изучить немало нового. Самый маленький порог вхождения и самая большая скорость итерации у Unity. Делать игры на этом движке очень просто. Ну прям ваще просто. Для создания лабиринта «настоящий» C# вам не понадобится, можете не бояться, если знакомы с сишным синтаксисом, то проблем не будет. Если не верите, посмотрите ссылки ниже.
    С чего начать изучение Unity3D?
    Какие учебники лучше C# для начинающего?
    Мой туториал двухгодовалой давности, вроде ещё актуален
    Если нужна помощь в генерации лабиринтов или обзор алгоритмов, могу подсказать, как раз этим занимаюсь.
    Ответ написан
    Комментировать
  • Какой ЯП выбрать для Windows?

    @brickT
    Зависит от поставленных задач, но, в основном, C# для windows самый лучший выбор.
    Ответ написан
    Комментировать
  • Как не допустить чтобы меня водил за нос фрилансер/программист?

    @Evsign
    Этими вещами занимается технический директор либо проект-менеджер. А они, как правило бывшие программисты.
    Ответ написан
    Комментировать
  • Как не допустить чтобы меня водил за нос фрилансер/программист?

    Jump
    @Jump
    Системный администратор со стажем.
    Я бывал с обоих сторон баррикад.
    Самое главное -
    a)Составить хорошее техзадание. Т.е во первых четко представлять самому что нужно получить, во вторых убедится что это понимает исполнитель и понимает правильно, в третьих изложить это письменно.
    b)Выбрать хорошего исполнителя имеющего опыт. Тут советовать сложно, это на уровне чутья скорее. Отзывы смотреть, общатся.
    с)Контролировать ход дел, ненавязчиво, но постоянно. И оплачивать вовремя.

    По поводу ваших вопросов по пунктам -
    1)Не специалисту - никак. Пригласите независимого консультанта.
    2)Это уже вопрос выбора. Если специалист работал с такими проектами, то он определит корректно.
    Но проколы бывают у всех - поэтому контроль по срокам, изначально разбить проект части, привязать к срокам и контролировать выполнение. Вот тут самое сложное - бывают в ходе работ разные неожиданности, и тут надо смотреть, действительно ли столкнулись с трудностью которую нельзя предугадать, или идет намеренное затягивание сроков.
    3)Озвучивать все свои требования в ходе обсуждения, и составления ТЗ, и требовать только то что указанно в нем.

    Чаще всего проблемы бывают из за недопонимания. Заказчик представляет что это будет так, исполнитель все видит совсем по другому.
    Ответ написан
    Комментировать
  • Возможные варианты приложения для портфолио Junior Android Developer?

    maaGames
    @maaGames
    Погроммирую программы
    Сойдут любые законченные работающие приложения, на которые ушло хотя бы около недели (т.е. сложнее, чем "Хеллоу ворлд" или пузырьковая сортировка).
    Ответ написан
    5 комментариев
  • Как начать заниматься фрилансом? Как начать программировать с нуля?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Глобально правильное решение - устроиться junior на удаленке куда угодно на любых условиях (в первый ~год вам нужны не деньги а что бы вас учили), дальше по ситуации.
    По количеству предложений imho лидирует php.
    По зарплатам - или java (но в силу специфики проектов на ней, я не уверен что получится найти удаленку) или мобильная разработка ios/android (но нужны первоначальные затраты на оборудование)
    PS Можете связаться со мной если хотите, контакты в профиле. По PHP смогу помочь
    Ответ написан
    7 комментариев
  • Как начать заниматься фрилансом? Как начать программировать с нуля?

    Bandicoot
    @Bandicoot
    Вась-программист
    Учи PHP. Самый низкий порог входа во фрилансе при достаточном количестве годной работы
    Ответ написан
    2 комментария
  • Работа в IT без образования?

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

    Только не сможешь поехать работать за границу, потому что везде нужно высшее образование, хотя на самом деле не знаю точно.
    Ответ написан
    3 комментария
  • Работа в IT без образования?

    NeiroNx
    @NeiroNx
    Программист
    С современной системой образования(взятки за дипломы, зачеты) - в IT больше уделяют конкретным знаниям нежели наличии бумажек. Для этого кандидатам дают тестовые задания и определенное время на их выполнение, потом смотрят качество выполнения и затраченное время. Если выполнили качественно и в срок - то у вас есть равные шансы с остальными.
    Ответ написан
    Комментировать
  • Работа в IT без образования?

    Я без высшего образования. По специальности токарь. Работаю программистом уже 5 лет :)
    Ответ написан
    2 комментария