Задать вопрос
  • Как программисты тренируют свою память?

    Очень просто - никак. Сила в логике: у кого логика, тому и память ненужна :-)
  • Почему Jquery не видит элемент страницы?

    Если представленный код действительно такой, то вероятно дело в кавычках. Они разные. См. id=двойная errorPopUp одинарная.
    По идее такой код вообще не должен работать.
  • React, form(method="POST"), почему после сабмита добавляет параметры в юрл?

    И что происходит в onSubmitLoginForm? Асинхронный запрос?

    Если проблема в форме, то можно от нее избавиться или не делать submit. Например, можно обрабатывать onClick кнопки (сделать type="button", вместо submit), либо отменять submit (return false; event.preventDefault();).
  • Как настроить роутинг?

    В webpack для этого нужно установить historyApiFallback = true
    или
    --history-api-fallback
  • Как импортировать typescript интерфейс из библиотеки react-widgets?

    Ленар Фаттахов: судя по всему придется сделать свой react-widgets.d.ts и экспортировать MultiselectProps.
  • Как импортировать typescript интерфейс из библиотеки react-widgets?

    Что-то я по указанным ссылкам не вижу react-widgets/lib/Multiselect. Почему именно из ветки types-2.0?

    Может нужно вот это.
  • Wepback: почему NODE_ENV environment variable is undefined?

    при воде в консоль команды NODE_ENV=development webpack выдает что "NODE_ENV"

    Это под Windiows? Вы хотели сказать SET NODE_ENV=development?
    Или export NODE_ENV=development, если под *nix.
  • Как реализовать скрытие контролов на странице?

    Код (верстку) в студию!

    По идее, если элемент имеет значение свойства Visible = false, то место на странице он занимать не будет. Скорее всего проблема в структуре страницы. Например, если кнопки находятся в ячейках таблицы, при скрытии кнопки, ячейка останется пустой. Или если родительский элемент, в котором находится кнопка, имеет фиксированную ширину, то скрытие дочерних элементов приведет к появлению пустот. Если так, то нужно скрывать родителя или менять структуру страницы, или стили.
  • Как добавить web проект в VS?

    ВэйДлин: форматирование кода PHP работает не так хорошо, как например форматирование C#. Иногда даже мешает :-) Руками приходится доделывать.

    Tab-ы ставит. Отступы в блоках if, for и т.п - да, сам не ставит.

    26uf9MShct8KLqbcc.gif
  • Как задать динамическое значение props?

    Николай Антонов: проще всего сделать компонент, в котором будет setInterval и который будет менять состояние.

    Ну или делать так:
    var dynamicData = 0;
    
    setInterval(()=>{
      dynamicData = (Math.random() * 100).toFixed(0);
      ReactDOM.render(
        <Hello test={dynamicData} />,
        document.getElementById('container')
      );
    }, 3000);
    
    var Hello = React.createClass({
      render: function() {
        return <h2>{this.props.test}</h2>;
      }
    });
    
    ReactDOM.render(
      <Hello test={dynamicData} />,
      document.getElementById('container')
    );

    но это явно не лучшее решение :-)
  • Как яндекс.маркет группирует товары?

    Обычно это делается путем создания списка сопоставлений.

    Т.е. грубо говоря есть две таблицы. В первой - список товаров. Во второй - список возможных имен со ссылкой на товары из первой таблицы.

    В случае с товарами, у них могут быть номера моделей одинаковые и можно их легко сопоставить. Может даже не потребуется хранить альтернативные названия, хотя лучше это сделать.
  • .NET приложение. Можно ли запустить Windows Forms проект в Linux?

    Я запускал ради интереса в Ubuntu и OS X. Интерфейс косячный, но работать можно. Имеет смысл с этим извращаться или нет, не могу сказать.

    Вот даже снимок нашел:
    47912efff6164a5f8c290d40980350fe.png

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

    А вот консольные приложения можно без особых проблем клепать.
  • Как корректно разделить проект на слои?

    Alina Barkova: создается экземпляр класса и вызываются нужные методы.

    public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page)
    {
      // создаем экземпляр класса ИмяКласса (имя может быть любым)
      var bl = new ИмяКласса();
      // вызываем метод GetStudents у созданного экземпляра ИмяКласса
      var students = bl.GetStudents();
      // ...
    }


    Единственное, нужно обратить внимание на модификаторы доступа:
    private - доступ только внутри класса;
    public - доступ на уровне всего приложения;
    internal - доступ внутри сборки;
    protected - доступ внутри класса плюс для всех наследников класса.

    Вам скорее всего будет достаточно использовать private и public. Можно и в public все делать, но это не очень хорошо, лучше ограничивать, чтобы не засорять "внешний мир" не нужными публичными методами/свойствами (членами).

    Чтобы методы бизнес-логики были доступны в коде контроллера, эти методы должны иметь модификатор доступа public.

    public class ИмяКласса
    {
    
      public IQueryable<Students> GetStudents()
      {
        return from s in db.Students select s
      }
    
    }


    Ссылку на db, наверное будет лучше передать через конструктор (если понадобится - понадобится, если бизнес-логика не имеет прямого доступа к объектам базы (Data Access Layer)):
    public class ИмяКласса
    {
    
      // вместо DatabaseContext использовать тот тип, который у вас имеет переменная db
      private DatabaseContext Database;
    
      // DatabaseContext - аналогично, поменять тип на свой
      public ИмяКласса(DatabaseContext db)
      {
        this.Database = db;
      }
    
      public IQueryable<Students> GetStudents()
      {
        return from s in this.Database.Students select s
      }
    
      // любые другие методы
    
    }

    В контроллере:
    public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page)
    {
      var bl = new ИмяКласса(db); // передаем в класс ссылку на текущий экземпляр db
      // получаем студентов из метода GetStudents экземпляра ИмяКласса
      var students = bl.GetStudents();
      // ...
      // остальной код
    }
  • Проблема с запуском PHP 7 на Debian 8, как решить?

    По какой инструкции? Что есть, то и нужно запускать :-)

    Если на сервере десять разных версий php-fpm, то имена у них будут разными. Четких правил тут нет. Варианты именования могут быть разными: php-fmp, php7-fmp, php-7-fpm, php7.0.1-fpm, crazyProgrammerCanGiveAnyNames :-)

    Если php7.0-fpm, то:
    service php7.0-fpm start
  • Как корректно разделить проект на слои?

    Alina Barkova: вопрос видел, но на него тоже нет ответа :-) Точнее ответ очевиден - сделайте нужные методы и передайте туда все, что требуется для поиска и сортировки. Но по идее вы уже должны были это сделать. Или вы боитесь делать методы? :-) В общем, вопрос требует уточнения, непонятно с чем именно у вас возникли проблемы. Попробуйте для начала разбить метод контроллера на небольшие части внутри контроллера, чтобы понимать, как это работает.

    public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page)
    {
      return AnyMethod(sortOrder, currentFilter, searchString, page);
    }
    
    private ViewResult AnyMethod(string sortOrder, string currentFilter, string searchString, int? page)
    {
      ViewBag.CurrentSort = sortOrder;
      ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
      ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
    
      if (searchString != null)
      {
        page = 1;
      }
      else
      {
        searchString = currentFilter;
      }
    
      ViewBag.CurrentFilter = searchString;
    
      var students = GetStudents();
    
      if (!String.IsNullOrEmpty(searchString))
      {
        students = SearchStudents(students, searchString);
      }
    
      // и далее можно сортировку аналогично вынести,
      // либо сгруппировать все, как нужно
      switch (sortOrder)
      {
        case "name_desc":
          students = students.OrderByDescending(s => s.LastName);
          break;
    
        case "Date":
          students = students.OrderBy(s => s.EnrollmentDate);
          break;
    
        case "date_desc":
          students = students.OrderByDescending(s => s.EnrollmentDate);
          break;
    
        default:  // Name ascending 
          students = students.OrderBy(s => s.LastName);
          break;
      }
    
      int pageSize = 3;
      int pageNumber = (page ?? 1);
    
      return View(students.ToPagedList(pageNumber, pageSize));
    }
    
    // NOTE: не могу быть уверен в типе (IQueryable<Students>), вам виднее, что у вас там
    private IQueryable<Students> GetStudents()
    {
      return from s in db.Students select s
    }
    
    private IQueryable<Students> SearchStudents(IQueryable<Students> students, string searchString)
    {
      return students.Where(s => s.LastName.Contains(searchString) ||  s.FirstMidName.Contains(searchString));
    }


    Вы можете создавать сколько угодно методов и классов. Ограничения только в здравом смысле :-)

    PS: Вместо ViewBag лучше использовать класс(ы) модели.
  • Как корректно разделить проект на слои?

    Alina Barkova: С чем у вас проблемы? Со ссылками, интерфейсами, наследованием? Что вы используете? Покажите упрощенный код.
  • В каком типе переменной хранить (м\ж) пол?

    abcd0x00: почему же, будет обычное условие :-) ...WHERE pass_type = FEMALE С детьми возникнут проблемы, если изначально их не разделять по гендерному признаку.

    Люди и билеты, как правило, в разных таблицах. Смешивать их нет смысла, это совсем разные структуры.

    Но даже если каким-то образом все это окажется в одной таблице, выборка будет аналогичной.

    Если типов людей немного и использовать маски, то все совсем просто:
    -- слова вместо чисел, просто для примера
    WHERE (pass_type & 'FEMALE') = 'FEMALE' -- только женщины
    WHERE (pass_type & 'FEMALE') = 'FEMALE' AND (pass_type & 'CHILD') = 'CHILD' -- дети женского пола
    WHERE (pass_type & 'FEMALE') = 'FEMALE' AND (pass_type & 'INFANT') = 'INFANT'

    Но запросы будут ресурсоемкими, особенно если данных много. Лучше так не делать или не использовать как есть.

    Для небольших баз такой вариант может быть удобным, если типов людей будет не больше 10-15 (210) и данных немного (с несколькими гигабайтам проблем точно не должно возникнуть, даже на слабом железе).

    Возможные ситуации с полами. Например, если изначально были М, Ж и пол не указан. Может потребоваться расширить этот список, сделать несколько вариантов "пол не указан". Если использовать bool, то придется добавлять дополнительное поле, которое будет содержать информацию, почему пол не указан, или переделывать в int. А в перечисления достаточно добавить нужные элементы в список и все: пол не указан, потому что гладиолус; луна находилось в неправильном месте; пользователь пьян; пользователь не дошел до выбора пола; facebook не вернул информацию о поле пользователя; пользователь отказался отвечать на вопрос и т.п. Бредовый список, но как минимум два варианта "пол не указан" в реальных условиях может быть: не выбран и null.
  • В каком типе переменной хранить (м\ж) пол?

    abcd0x00: В больших базах каждый байт на счету, нужно взвешенно подходить к проектированию. Один байт (true | false) против одного байта (0-255), ну или двух, если значений будет не хватать. Последний явно дает больше возможностей для развития. Если все станет плохо, то конечно, придется делать существенные доработки или даже новую базу. Но такого по идее быть не должно, поскольку хоть какая-то информация о проекте перед началом разработки должна быть и можно учесть многое. Мне еще ни разу не приходилось переделывать перечисления, а вот bool - да. Единственное, с масками нужно осторожней быть, не увлекаться сильно, а лучше не использоваться совсем (с большими значениями и вычислениями в больших базах можно существенно потерять в производительности).

    Со смешением физических лиц с организациями - вариант с перечислениями лучше, база будет выглядеть проще и работать быстрее. Различные вариации, когда в базе десять тысяч таблиц под разные типы, в большинстве своем, одинаковых данных, также как и невостребованные поля, - выглядят ужасно и громоздко.

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

    Если границ развития проекта никаких нет, то да, будет лучше все разделить, точнее скорее строить вертикально. Но количество подобных проектов-монстров в меньшинстве и это другой уровень, другие ресурсы. Обычно все просто. Десяток вариаций «полов» и никаких bool :-) Если СУБД позволяет, можно автоматизировать распределение хранения данных по разным признакам. Все должно быть просто и быстро.

    Строки тоже иногда используются. Это в принципе неплохо, если база небольшая и работать приходится с сырыми данными. Для небольших проектов в целом без разницы как хранить данные, переделать будет проще.