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

    Посмотрите Change Data Capture.

    А вообще, почему требование именно в синхронизации? Может, стоит смотреть в одну и ту же базу в обоих случаях?
    Ответ написан
    6 комментариев
  • Возможно ли сделать switch case по регулярному выражению?

    @Sing303
    bool IsMatch(string someString)
    {
        var patterns = new[]
        {
            "someExpr1",
            "someExpr2",
            "someExpr3"
        };
    
        return patterns.Any(pattern => Regex.IsMatch(someString, pattern));
    }


    Читабельнее чем case или if, сразу видно по каким pattern`ам ищутся совпадения.
    Any не будет проверять все patterns, выйдет при первом найденном и вернёт true

    А чтобы сделать так, как вы ходите, вот оно:
    var someStr = "someValue";
    switch (true)
    {
        case Regex.IsMatch(someStr, "somePattern1")
            // do...
            break;
        case Regex.IsMatch(someStr, "somePattern2")
            // do...
            break;
        case Regex.IsMatch(someStr, "somePattern3")
            // do...
            break;
    }

    Это будет, предположительно, работать с C#7, который ещё не вышел.

    Для вашего случая можете попробовать что-то такое
    void Main()
    {
        var fileNameList = new List<string> { "fileNameOne", "fileNameTwo" };
        foreach (var fileName in fileNameList)
        {
            var fileAction = FileActions.FirstOrDefault(x => Regex.IsMatch(fileName, x.Key));
            if (fileAction.Key != null)
                fileAction.Value(fileName);
        }
    }
    
    IDictionary<string, Action<string>> FileActions = new Dictionary<string, Action<string>>
    {
        { "somePatternOne", SomeActionOne },
        { "somePatternTwo", SomeActionTwo }
    };
    
    void SomeActionOne(string fileName) { /* Do... */ }
    void SomeActionTwo(string fileName) { /* Do... */ }


    Если код парсинга для каждого файла значительно отличается и кода много, вместо методов можно использовать классы (полиформизм)
    Ответ написан
    3 комментария
  • Велосипед "ORM" для автоматизации. Следует ли продолжать и в каком направлении? Интересно ли?

    trevoga_su
    @trevoga_su
    1 - Полезно ли это будет хоть кому-то кроме меня?
    нет, но для тебя это может стать вполне приемлемым инструментом, если отточишь до блеска.

    2 - В каком направлении двигаться и в чем косяки такого способа работы с базой?
    твой косяк в том, что ты пишешь сам не понимая чего и называешь это все очень громкими именами, такими как ORM
    при этом ты все смешал в кучу и я не вижу тут никакой ORM
    я вижу попытку написать 1001 никому не нужный билдер запросов

    ORM должна работать на основе паттернов, таких как ActiveRecord или DataMapper, получать объекты моделей, а не просто stdClass и транслировать эти объекты обратно в базу:

    data-mapper.gif

    вот эти все дрочи
    Model::data(array("status"=>2))->where(array("id"=>2))->update();
    они никому не нужны. потому что реальные запросы гораздо более сложны, чем выборка по одному условию where. есть запросы, которые просто невозможно уложить в билдеры. ты же делаешь акцент на билдеры, а должен делать на ORM. Вот тебе пример data mapper класса. для его работоспособности используется простой билдер, но сложный sql пишется руками. и практически всегда возвращаются не просто объекты, а объекты моделей, ассоциируемые с этим data mapper. Обрати внимание, что почти в каждом методе вызываются
    return parent::result2objects(...);
    return parent::findModelListByParams($params);
    return parent::findModelByParams($params);


    т.е. ORM всегда отдает реальные доменные объекты, а не просто stdClass.
    Ответ написан
    Комментировать
  • Как в jQuery выбрать все элементы, которые идут друг за другом?

    $('h1').prevAll('img').wrapAll('<div class="group"></div>');
    $('h1').nextAll('img').wrapAll('<div class="group"></div>');

    Или тоже самое
    var $h1 = $('h1'), methods = ['prevAll', 'nextAll'];
    methods.forEach(function(method) {
    	$h1[method]('img').wrapAll('<div class="group"></div>');
    });
    Ответ написан
    Комментировать
  • Можно ли использовать EntityFramework только в Class Library?

    Не можна, а нужно! В этом заключается трех уровневая архитертура.
    Т.е. у нас есть некий фронтенд, бизнес логика и некий репозиторий, который работает с базой(и не только). Наружу сторчий только его интерфейс и мы понятия не имеем что там: Entity Framework, ADO.Net или т.п.
    Ответ написан
    4 комментария
  • SQL-запрос. Как связать данные из трех таблиц?

    rpsv
    @rpsv
    делай либо хорошо, либо никак
    SELECT a.Region,  COUNT(b.id) as cities, COUNT(c.id) as languages
    FROM country AS a
    	INNER JOIN city AS b ON a.Code = b.CountryCode
    	INNER JOIN countrylanguage AS c ON a.Code = c.CountryCode
    GROUP BY country.Region

    А вообще связывание лучше по идентификаторам делать
    Ответ написан
    2 комментария
  • Web fullstack разработчик - реальность или вымысел?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    "fullstack web разработчик это реальность или вымысел?"
    "И как по вашему мнению лучше развиваться начинающему специалисту"

    Не задаваться глупыми вопросами. Фуллстак это НЕ начинающий специалист. Учиться прийдется долго и тяжело. К тому моменту, когда этот вопрос будет для вас иметь смысл чуть больший, чем банальное любопытство, вы сможете ответить сами себе.
    Ответ написан
    Комментировать
  • Может ли произойти обрыв связи в момент записи нескольких товаров в БД?

    muhammad_97
    @muhammad_97
    PHP-разработчик
    Используйте транзакции
    Ответ написан
    Комментировать
  • Может ли произойти обрыв связи в момент записи нескольких товаров в БД?

    27cm
    @27cm
    TODO: Написать статус
    Может ли произойти обрыв связи в момент записи нескольких товаров в БД?

    Может.

    Если да, то как этого можно избежать?

    На 100% никак не избежать. Уборщица всегда может случайно выдернуть сервер из розетки.

    И стоит ли предусматривать "обработку" таких ситуаций?

    Используйте механизм транзакций. Тем самым вы гарантируете, что либо все запросы будут выполнены, либо ни один. Придётся либо отказаться от MyISAM, либо самому реализовывать механизм транзакций на уровне кода приложения (скорее всего, плохая идея), либо смириться и оставить всё как есть.
    Ответ написан
    Комментировать
  • Как округлить число в javascript?

    @Niomin
    Руками :) Из коробки сможет округлить или до десятых, или до единиц в нужную сторону (вверх, вниз, математически).
    function myRound(number) {
      var decimal = number - Math.floor(number);
      if (decimal > 0.01) {
        return number + 0.5;
      }
      return number;
    }

    Ну или что там нужно.
    Ответ написан
    Комментировать
  • Как округлить число в javascript?

    можно так:
    function round(x) {
      var t = Math.floor(x);
      return (t === x) ? t : t + 0.5;
    }
    Ответ написан
    Комментировать
  • ООП головного мозга?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    Когда вы пишете лабораторку или собственный маленький проектик, то можете делать как вам угодно.
    А теперь представьте себе ситуацию когда в команде программистов вы написали класс с публичными переменными, а потом подошел руководитель проекта и сказал что на каждое присваивание переменной надо делать запись в лог-файл. Теперь все программисты, которые пользовались вашим классом, вместо работы переписывают код с переменных на сеттеры.

    Советую почитать "Совершенный код", чтобы не задавать подобные вопросы.
    Ответ написан
    2 комментария
  • Как реализовать прием-передачу текста через сокет не закрывая и не открывая его каждый раз заново?

    Vindicar
    @Vindicar
    RTFM!
    Погоди, сначала разберемся в логике работы соединения. Есть как минимум два варианта работы:
    А) Односторонний запрос-ответ, или ведущий-ведомый (то, что реализовано в приведенном коде). Т.е. клиент(ведущий) шлет запрос, получает ответ от ведомого, и либо закрывает соединение, либо шлёт еще запрос. Так работает HTTP, к примеру.
    Б) произвольный порядок. И клиент, и сервер могут послать сообщение другой стороне в произвольный момент, но другая сторона не обязана отвечать немедленно. Так обычно работают IM-системы.

    Для второго варианта работы логика будет примерно такой:
    1. Установить соединение
    2. Ждать, пока не появятся принятые данные, не поступят сообщения для отправки или не будет получен сигнал об остановке.
    3. Если получен сигнал остановки, см. п. 11.
    4. Проверить, есть ли принятые данные, если нет, см. п. 7.
    5. Принять данные и разобрать их формат, преобразовав их в сообщения.
    6. Обработать принятые сообщения, например сгенерировать событие.
    7. Проверить, есть ли сообщения на отправку, если нет, см. п. 10.
    8. Сформировать данные для отправки.
    9. Отправить данные.
    10. См. п. 2
    11. Закрыть соединение.

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

    Реализовать такую логику можно следующим образом: создаешь отдельный поток обработки соединения, который в цикле выполняет шаги 2-10. Этот поток должен предоставлять метод для постановки сообщения в очередь на отправку, и событие для реакции на принятые сообщения*.
    В этом случае твоя основаная программа стартует этот поток, подписывается на его события, и дергает его метод отправки по мере надобности. Таким образом можно разделить код работы с сетью и GUI.

    * Еще пригодится служебная мелочь, вроде команды на остановку потока и закрытие соединения, проверку наличия ошибок и тд. В простейшей программе без этого можно обойтись.
    Ответ написан
    3 комментария
  • Почему из базы MySQL самопроизвольно удаляются записи?

    Melkij
    @Melkij
    PostgreSQL DBA
    MyISAM

    баланс на моем сайте

    Сделайте мне это развидеть.

    Это безотносительно проблемы. Хранить данные и нетранзакционное хранилище - взаимоисключающие вещи. Используйте единственное транзакционное хранилище в mysql - innodb. И добавьте внешние ключи.

    Несколько маловероятно, что это непосредственная проблема, в штатном режиме даже myisam выборочно строки терять не должен так, что это заметил только конкретный пользователь. Более вероятна реакция mysql "аааа, таблица повреждена, я буду говорить только с админом". Впрочем, я давно уже не работал с myisam в продакшене, может и такое поведение тоже характерно.
    А вот FK в режиме restrict вполне поможет от странных запросов.
    Ответ написан
    Комментировать
  • Как в Visual C# взять столбик из MySQL таблицы, вывести его в нужном виде и не только?

    Neuroware
    @Neuroware
    Программист в свободное от работы время
    В целом ничего сложного в задаче не вижу, для начала нужно понять как разместить данные в mySQL.
    В такой постановке задачи достаточно создать на каждый параметр по столбцу и делать селект из базы одной строки с параметрами.
    Начать можно с отсюда
    Ответ написан
    2 комментария
  • Где ошибка в коде на С++?

    @MiiNiPaa
    b[i]=... А чему равняется i здесь?
    Ответ написан
    Комментировать
  • Что лучше для REST API подхода?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1. Берите то что знаете
    2. Всегда можно проиграть

    20 000 в сутки

    Это как бы не такие уж и большие нагрузки. Всего-то 4 реквеста в секунду, если принять в расчет распределение пользователей (что все 20К будут сидеть днем, то есть часов 12, и генерить в среднем 10 запросов к API).

    Такую нагрузку спокойно переносит что угодно, даже PHP со своей умирающей модель.
    Ответ написан
  • Как перевести число в строку без потери формы?

    Если задача именно избавиться от экспоненциальной формы, то подойдет такое решение
    string formatted = String.Format("{0:F20}", value);
    Ответ написан
    Комментировать
  • Как повысить доступность (отказоустойчивость) БД имея 2 физических сервера?

    @mureevms
    с AlwaysON можно обойтись без использования СХД, или СХД нужен в любом случае?

    Можно, для AlwaysON СХД не нужен. Технология гораздо лучше костыльного (как я считаю) Faiover Cluster средсвами самого MSSQL. Рекомендую именно AlwaysON.
    Буквально на днях поднимал кластер по технологии AlwaysON. При выходе из строя одного из серверов, даже если всего два сервера в кластере, база доступна и сервис работает.
    Но есть еще ограничение, кроме Enterprise редакции MSSQL необходимо наличие AD и настроенная фича Faiover Cluster на всех хостах с MSSQL сервером. Обращаю внимание, что фича ОС Faiover Cluster и Faiover Cluster средсвами самого MSSQL разные вещи.
    Ответ написан
    5 комментариев