• В каком типе переменной хранить (м\ж) пол?

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

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

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

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

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

    abcd0x00: дети вроде как люди, на них bool не хватит :-) Можно городить множество полей и хранить все отдельно, но для этого придется делать большую работу. Если заранее учитывать, то тратить время в пустую. Практика показывает, что М и Ж бизнесу мало, и заранее неизвестно, что понадобится. В молодости гендерные bool приходилось меять. Разделением тоже как-то занимался - идиотизм полный, ибо делить можно бесконечно. Вот так бывало нужно отправить в API пол человека, у тебя для этого десять полей: пол, возраст, обращение и т.п. с портянкой условий, а в API всего одно числовое или строковое значение.

    Лучше перечислений для подобной задачи еще ничего не придумали :-) Хранение бесполезных точных данных, типа возраста, не имеет смысла, если эти эти данные понадобятся только для одноразового определения является человек ребенком и в какую возрастную группу он попадает (портянка условий) и для прочих разделений.
  • Почему преобразуются имена доменов выходном html?

    Самый простой вариант - спросить у админа :-)

    А если хочется самостоятельно поковыряться, то: web.config, маршруты в коде (по умолчанию RouteConfig), вспомогательные методы, которые формируют адрес (если есть переопределенные или собственные). Проще сделать поиск по файлам проекта и попытаться найти имя хоста, которое добавляется. Аналогичным образом проверить файлы на сервере.

    Клиентский код может заменять. Для проверки этой версии достаточно отключить JavaScript в браузере.

    Файрвол подобными вещами заниматься не должен.
    DNS заменой HTML не занимается.
    CDN может, если используется.

    Если адреса совсем левые, то проверить сервер и себя на наличие вирусов.
  • В каком типе переменной хранить (м\ж) пол?

    abcd0x00: true, false, null - но гибкости не будет. Зачастую, помимо М и Ж, могут возникнуть дети, младенцы, и как было сказано, разделение на юридических, физических лиц и т.п. Так что проще сразу использовать перечисления, чтобы потом не пришлось переделывать :-)
  • В каком типе переменной хранить (м\ж) пол?

    Я обычно делаю так :-)

    bool - однозначно нет.

    На уровне БД можно хранить маленькие числа, типа byte, smallint или еще что-то типа этого.
  • Как компилировать scss в разные файлы с помощью webpack?

    Возможно extract-text-webpack-plugin.
    Что-то типа:
    new ExtractTextPlugin({filename: '[name].css'});
    И скорее всего с chunks придется повозиться.
  • Как интерпретировать this в данном примере?

    Александр Дегтярев: функция getBoilTime находится в контексте window.

    Её можно поместить в контекст текущего экземпляра объекта (через this):
    this.getBoilTime = function() { ...
    Тогда код может быть таким:
    function CoffeeMachine(power) {
      this.waterAmount = 0;
    
      var WATER_HEAT_CAPACITY = 4200;
    
      this.getBoilTime = function() {
          console.log('this', this);
          return self.waterAmount * WATER_HEAT_CAPACITY * 80 / power;
        }
    
      function onReady() {
        alert( 'Кофе готово!' );
      }
    
      this.run = function() {
        console.log('run', this);
        setTimeout(onReady, this.getBoilTime());
      };
    
    }
    
    var coffeeMachine = new CoffeeMachine(100000);
    coffeeMachine.waterAmount = 200;
    coffeeMachine.run();

    onReady() в данном случае остается в контексте window. Это тоже можно изменить, при необходимости.
  • Как настроить Rewrite в Nginx?

    John Doe: универсальность будет сложной. Нужна строгость.

    Если возможно, что имя страницы будет содержать числа, то придется прописывать исключения. Это не разумно. Проще запретить использовать числа.

    Как вариант, если год точно будет из нашего тысячелетия и стабильно содержит четыре числа, то можно и это использовать, у заказчика будет меньше шансов указать подходящее под шаблон число :-)

    rewrite ^/news/(20(\d{2}))/(\d{1,2})$ /news/?year=$1&month=$2? break;


    или еще строже, с 2000 по 2030 и месяц строго два числа:

    rewrite ^/news/(20([0-3]{1})(\d{1}))/(\d{2})$ /news/?year=$1&month=$2? break;


    На уровне кода можно сделать проверку по базе url, тогда адреса можно будет любые использовать. Но это плохое решение, в плане производительности. Хотя, если кешировать, в принципе можно, если адресов не сильно много (скажем в пределах 1 000 - 10 000), но насколько это хорошо еще от сервера будет зависеть.

    Для данного примера достаточно одну страницу сделать и перенаправлять туда все запросы:
    rewrite ^/news/(.*)$ /myrewriter.php?path=$1? break;

    В коде myrewriter.php проверять path по базе и направлять куда следует, или загружать и выводить нужную страницу.
  • Как настроить Rewrite в Nginx?

    Сделать строже правило:
    Сейчас (.*) - все или ничего
    А нужно что-то типа (\d+) - обязательно должно быть числом

    Месяц тоже нужно учесть. Примерно так:
    rewrite ^/news/(\d+)/(\d+)$ /news/?year=$1&month=$2? break;


    Если месяца может не быть, то можно сделать либо два отдельных правила, либо собрать все в одно. Но чем проще, тем лучше (надежней).
  • Microsoft Bot Framework ругается на символ $ в дефолтном коде, почему?

    Потому что кто-то (не будем показывать пальцем) насильно заставляет переходить на новые версии продуктов, предлагая писать несовместимый код, причем уже не первый раз :-)

    return message.CreateReplyMessage(String.Format("You sent {0} characters", length));
  • Из-за чего появляется ошибка 500?

    LiptonOlolo: в Visual Studio все может компилироваться и работать нормально, и также нормально работать в IIS, но под Linux все может быть иначе.

    В Visual Studio используется .NET Framework 2.0/3.5? (как на сервере) Если нет, то можно попробовать переключить проект на .NET Framework 2.0/3.5 и посмотреть, будет он работать с подключенными сборками или нет. Если не будет, то нужно подключить сборки для .NET Framework 2.0/3.5, либо сервер обновить до .NET 4.0/4.5 (лучше всего обновить сервер).

    Mono (проект) местами недоделанный, либо работает не так, как .NET Framework. И хотя все может функционировать одинаково в системах Windows и Linux, все равно придется адаптировать проект под Mono. Более явно указывать ссылки на зависимые сборки, типы. Менять стилистику и логику кода.

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

    Сообщения об ошибках Mono выдает частенько не в тему, так что особо смотреть на них не стоит.
  • Из-за чего появляется ошибка 500?

    LiptonOlolo: Я вижу, что не ниже 4.0: https://documentation.devexpress.com/#AspNet/Custo...

    Если по совместимости с Visual Studio судить, то для ASP.NET 2.0 потребуется версия v2012 или ниже.
  • Из-за чего появляется ошибка 500?

    LiptonOlolo: DevExpress.RichEdit.v15.2 точно под ASP.NET Version: 2.0 должна работать?
  • Из-за чего появляется ошибка 500?

    LiptonOlolo: нужно понять в чем проблема. Упростить содержимое (например, взять web.config из чистого проекта), включить отображение деталей ошибок (customErrors mode="Off", debug=true, в файле конфигурации сайта Apache добавить MonoDebug=true). Затем постепенно добавлять содержимое из проблемного web.config и смотреть, когда сломается.

    В Xamarin Studio запускается проект? На первом этапе обычно сборок не хватает. Нужно явно добавлять ссылки в проект, в Xamarin Studio должны быть об этом уведомления.
  • Из-за чего появляется ошибка 500?

    LiptonOlolo: почему библиотеки не в папке /bin? Почему страница с текстом ошибки не Mono? Почему не включено отображение ошибок (<customErrors mode="Off" />)?

    И не совсем понимаю, почему не нужно класть Web.cofing с проектом? Что это означает? Файл конфигурации должен присутствовать. Ссылки на сборки в Web.cofing не добавляются (сборки лежат в папке /bin, прописаны в файле проекта на уровне среды разработки, в файле конфигурации могут быть только ссылки на службы и параметры/правила использования подключенных библиотек).

    Рекомендую попробовать локально собрать и запустить проект в Xamarin Studio, это не гарантирует работу сайта на сервере, но может позволить выявить некоторые специфичные для Mono ошибки, которые не свойственны для родной среды ASP.NET.
  • Из-за чего появляется ошибка 500?

    Чтобы сервер отдавал сообщения об ошибках, следует отключить пользовательскую обработку в глобальном web.cofing (там где установлен mono, в нужной версии .net): /etc/mono/4.5/web.config, добавить секцию customErrors с mode="Off". Аналогично в web.config сайта (судя по снимку, так и есть). Запускать сайт с включенным режимом отладки (MonoDebug=true).

    Через что работает ASP.NET? mod_mono или fastcgi? Какие версии ПО используются?
    ASP.NET вообще работает, с какой-нибудь простой страничкой? Веб-сервер правильно настроен, без ASP.NET нормально отвечает?
  • Зачем нужна отладка с брейкпоинтами?

    akubintsev: нет же никакой боли :-) Как раз написано, что без точек останова придется извращатья, что может привести к появлению еще большего числа ошибок, засорению вывода, поломке глаз и необходимости прыгать туда-сюда :-)
  • Как получить все каталоги в массив и пройтись по ним аналогом foreach?

    uaf0x:
    site_name="toster.ru"
    
    // -maxdepth 0 - только текущий уровень
    // -type d - только папки
    find /var/www/framework/assets/$site_name/* -maxdepth 0 -type d | while read -r path; do
      name="$(basename $path)" // имя папки, без пути
      parent="$(dirname $path)" // путь родительской папки
    
      if [[ "$name" = "anyfolder" ]]; then
        // меняем имя на _anyfolder
        mv "$path" "$parent/_$name"
      fi
    done