• Почему Entity Framework создает новые ключи?

    @mayorovp
    А вы случайно не переименовывали соответствующие поля в модели?

    В любом случае, вы всегда можете принудительно указать требуемые названия полей либо через атрибуты, либо через маппинг, либо через конвенции.
    Ответ написан
    Комментировать
  • Возможно ли получить stack-strace другого потока в С#.NET 3.5?

    @mayorovp
    Нет.
    Ответ написан
    Комментировать
  • Как узнать почему.NET служба долго запускается?

    @mayorovp
    В 2012й студии есть встроенный профайлер, скрывающийся в меню ANALYZE. Из сторонних - можно использовать dotTrace.

    В любом случае, прежде всего лучше переписать службу так, чтобы она могла запускаться как консольный процесс. Если еще и вывод лога в консоль добавить - то многие вещи можно будет увидеть визуально.
    Ответ написан
    4 комментария
  • Как индексировать динамических сайтов?

    @mayorovp
    Простите, а что на этих страницах вообще индексировать-то? Текста ноль.
    Ответ написан
  • Как отловить события WebBrowser в программе .net?

    @mayorovp
    Вам хочется очень странного, и что-то в вашей программе, определенно, лишнее: либо WebBrowser, либо остальная программа :) В первом случае - изучайте XAML, все что вы пытаетесь сделать в WebBrowser можно сделать и на нем. Во втором случае - создайте веб-приложение на ASP.NET и открывайте его в обычном браузере.
    Ответ написан
  • Почему не отправляется форма?

    @mayorovp
    Открывайте инструменты разработчика в браузере, переходите на вкладку "Сеть" - и посмотрите все запросы, которые браузер делает.

    Особое внимание, во-первых, запросу к самому скрипту (что ему передается на вход и что он возвращает). Во-вторых, поставить обработчик, который стоял там раньше - и сравнить с во-первых. В-третьих, обратить внимание на любые неуспешные запросы.

    PS ошибку я уже нашел, но не скажу, в чем она. Научитесь отлавливать запросы к серверу. Если найдете отличие, но не поймете, что там происходит - подскажу.
    Ответ написан
  • Как подружить async.js и express.js ?

    @mayorovp
    Э... подумайте еще раз, что вы делаете. Первый раз вы сначала выполняете свои запросы - а только потом вообще начинаете слушать подключения от браузера! Разумеется, у вас ничего не получается.

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

    Вам же надо сначала получить запрос от браузера - то есть app.get должна стоять первой строчкой. Потом надо сделать несколько запросов - то есть внутри должен быть вызов async.parallel. И только в самом конце должен быть вызов res.send. Я думаю, теперь вы сами сможете правильно собрать эту матрешку.
    Ответ написан
    Комментировать
  • Сайт вместо приложения- реально?

    @mayorovp
    Очень даже реально. Под все платформы существуют браузеры, поддерживающие современные стандарты - а значит, особых проблем не будет. Но для написания сайта надо уметь писать сайты, это - основная трудность.

    Также для мобильных устройств очень желателен малый расход трафика - с этим также придется по-возиться.
    Ответ написан
    Комментировать
  • Получаю xml по url, как сохранить содержимое в новый xml файл, только чтобы структура не нарушилась?

    @mayorovp
    По первому варианту - что означает "нарушается структура"? Не должна она нарушаться при посимвольном копировании. Однако, тут возможны проблемы с кодировками. Нужную кодировку надо определять либо по ContentType - либо по декларации xml.

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

    --

    Теперь как надо сохранять xml. Вариант первый - просто побайтово. Используйте stream напрямую, не оборачивая его в StreamReader - а для записи используйте FileStream.

    Вариант второй - загрузить поток в XmlDocument или XDocument на выбор, а потом сохранить.
    Ответ написан
    Комментировать
  • Как получить данные из стандартных команд 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. А вот тут все не просто сложно, а невозможно. Невозможно взять неизвестную заранее утилиту, и сделать то же самое, что она делает, не запуская ее при этом. Поэтому вам надо определиться - либо ваша программа умеет выполнять фиксированный список действий - либо ей можно передать любую команду, но она будет запускать дочерние процессы. Возможен и промежуточный вариант - есть действия, которые программа может выполнять сама, а для выполнения других будут запускаться дочерние процессы.
    Ответ написан
    Комментировать
  • Не работает $.ajax через GET в на всех версиях Internet Explorer?

    @mayorovp
    Извиняюсь за пустую придирку, но почему вы не написали url: '/search/test'? Откуда эта любовь к абсолютным ссылкам там, где можно без них обойтись?
    Ответ написан
  • C# webview. Как запустить веб клиент в обход прокси?

    @mayorovp
    Надо добавить не "эти строки", а "эту строку". Конкретно, выключает использование прокси строка request.Proxy = null; - вам надо найти все места, где создаются запросы, и добавить аналогичную строчку в каждое. Говорю "аналогичную" - потому что имя переменной (которое request) может отличаться.

    Кстати, запросы могут создаваться не только через WebRequest - но и через WebClient.

    ---

    К счастью, на самом деле эта задача не требует даже перекомпилировать программу заново. Надо взять файл конфигурации для программы (для программы foo.exe он будет называться foo.exe.config), и сделать в нем следующее:
    <configuration>
      <system.net>
        <defaultProxy enabled="false" />
      </system.net>
    </configuration>


    Но тут надо помнить, что если какие-то разделы в этом файле уже есть, то надо их объединить с приведенными выше, а не дублировать. Так, корневой элемент configuration в этом файле наверняка уже будет - новый дописывать не надо.

    Подробности по декларативной настройке использования прокси-сервера - тут.

    ---

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

    @mayorovp
    Извиняюсь, что пишу не в тему - но что это вообще за шаманство такое?
    $whatPage = trim(strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['whatpage']))));
    $idUser = trim(strip_tags(htmlspecialchars(mysql_real_escape_string($_POST['idu']))));


    Переменная $whatPage никогда не выводится обратно - и ее экранировать не надо. Переменная $idUser выводится в контексте javascript, причем без кавычек - наверное, это число. Ну так и приведите его тип к числовому, который экранировать уже не надо. (Да и с $whatPage можно поступить так же для спокойствия):
    $whatPage = (int)$_POST['whatpage'];
    $idUser = (int)$_POST['idu'];


    PS по теме вопроса - какая кодировка у файла скрипта, какую кодировку ожидает PHP - и какой Content-Type отдает сервер? Совпадают ли эти три значения?

    И еще глупый вопрос: чему равна переменная $whatPage? Не может ли быть, что ошибка в другом месте, а скрипт ничего не выводит из-за неверного значения этой переменной (скажем, "3" или "1a")?
    Ответ написан
    4 комментария
  • C# или ActionScript?

    @mayorovp
    Возможность доступа из сети. Открыл браузер, ввел адрес - и вот она программа. HTML5 + ASP.NET, думаю решают это запросто.
    Ни разу не аргумент: нельзя сравнивать серверный язык с клиентским. Если нужен именно C# - то надо смотреть в сторону Silverlight или Unity. Однако, Silverlight использует другую стандартную библиотеку - а Unity вообще другой компилятор.

    Возможность быстро считать (наши программы расчетные). Мне кажется, что ActionScript (а видимо Flash) тут проигрывает .NET. Не уверен, тесты сам лично не делал.
    Сделайте тесты, чтобы быть уверенным.

    Возможность "рисовать" интерфейс, делать его нестандартным. Думаю, XAML, HTML + CSS - отличный выбор.
    Здесь графический редактор, конечно, выигрывает у языка общего назначения :) Но стоит напомнить начальнику про разные размеры мониторов у разных пользователей. Flash умеет в лучшем случае масштабировать картинку, остальное - через боль.

    С недавнего времени заинтересовала кроссплатформенность. Чтобы программы запускались на Android, iOS. Чувствую, что с ActionScript это будут особенные грабли.
    Flash на андроидах не поддерживается ни дефолтным браузером, ни хромом - Action Script, соответственно, тоже. Про другие браузеры не знаю, но этих достаточно.
    Ответ написан
    Комментировать
  • Как запустить Task после его выполнения?

    @mayorovp
    Я немного не понял, вам надо запускать задачи последовательно или параллельно? А если параллельно - то обрабатывать результаты сразу или вместе?

    1. Последовательный запуск:
    private async void OnlyLike()
    {
        for (var i=0; i<5; i++)
            TextBox.Text += await VK.NakrytkaLike(KeyAntigateTextBox.Text);
    }


    2. Параллельный запуск, обработка всех результатов вместе
    private async void OnlyLike()
    {
        var tasks = Enumerable.Range(0, 5).Select(i => VK.NakrytkaLike(KeyAntigateTextBox.Text));
        foreach (var result in await Task.WhenAll(tasks))
            TextBox.Text += result;
    }


    3. Параллельный запуск, обработка результатов сразу же:
    private async void OnlyLike()
    {
        TextBox.Text += await VK.NakrytkaLike(KeyAntigateTextBox.Text);
    }
    
    private void StartButton_Click(object sender, RoutedEventArgs e)
    {
        for (var i=0; i<5; i++)
            OnlyLike();
    }


    Выбирайте что нравится. И не бойтесь использовать async/await - оно создано для упрощения кода, а не для усложнения :)

    UPD

    Последовательный запуск на фреймворке 4.0:
    public void OnlyLike()
    {
        var scheduler = TaskScheduler.Current ?? TaskScheduler.FromCurrentSynchronizationContext();
        Task task = TaskEx.FromResult(false);
        var text = KeyAntigateTextBox.Text;
        for (var i=0; i<5; i++) {
            task = task.ContinueWith(_ => {
                var LikeTurbo = VK.NakrytkaLike(text);
                LikeTurbo.ContinueWith(_ => {
                     TextBox.Text += LikeTurbo.Result;
                }, scheduler);
                return LikeTurbo;
            }, TaskContinuationOptions.ExecuteSynchronously).Unwrap();
        }
    }
    
    ...
    
    public static class TaskEx {
        public static Task<T> FromResult<T> (T result) {
            var tcs = new TaskCompletionSource<T>();
            tcs.SetResult(result);
            return tcs.Task;
        }
    
        public static Task<T> Unwrap<T>(this Task<Task<T>> task) {
            var tcs = new TaskCompletionSource<T>();
            task.ContinueWith(_ => {
                if (task.IsCanceled) tcs.SetCancelled();
                else if (task.IsFaulted) tcs.SetException(task.Exception);
                else task.Result.ContinueWith(innerTask => {
                    if (innerTask.IsCanceled) tcs.SetCancelled();
                    else if (innerTask.IsFaulted) tcs.SetException(task.Exception);
                    else tcs.SetResult(innerTask.Result);
                }, TaskContinuationOptions.ExecuteSynchronously);
            }, TaskContinuationOptions.ExecuteSynchronously);
            return tcs.Task;
        }
    }


    Выглядит многословно, но на самом деле - ничего сложного. В цикле задачи ставятся в очередь одна за другой при помощи конструкции task = task.ContinueWith(...).Unwrap(). Здесь Unwrap() - это функция, позволяющая дождаться выполнения дочерней задачи, фактически простой распаковщик монады Task Task T -> Task T.

    Внутри такого цикла находится, фактически, старый код метода OnlyLike() - за тем исключением, что теперь он еще и возвращает ту задачу, которую создал (это нужно, чтобы дождаться ее выполнения). Здесь я позволил себе небольшое ускорение - поскольку я написал return LikeTurbo - каждая следующая итерация цикла будет ждать лишь предыдущей задачи VK.NakrytkaLike - но не будет ждать вывода на экран предыдущих результатов. Если важно именно дождаться вывода результатов - то надо возвращать не LikeTurbo, а результат ContinueWith.

    Также тут очень важно расположение вызова TaskScheduler.FromCurrentSynchronizationContext(); Поскольку в момент исполнения прошлой задачи мы можем находиться в любом контексте - то ориентироваться на текущий контекст нельзя. Нужный нам планировщик задач следует сохранить при входе в метод (на будущее: его нужно _всегда_ сохранять _только_ при входе в метод!)
    Ответ написан
  • Как из генератора сделать зарядное устройство?

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

    PS если написать один и тот же вопрос 10 раз - ответ на него не изменится.
    Ответ написан
    Комментировать
  • Что делать с ошибкой 501?

    @mayorovp
    "JSONP" - это не тип возвращаемых данных, а протокол вызова. Он использует тэг <script> для выполнения запроса к серверу - а обработка ошибок загрузки скрипта реализована не во всех браузерах. Поэтому наиболее надежным способом будет задать тайм-аут для запросов.
    Ответ написан
  • Как в коде узнать про гиперпотоковость?

    @mayorovp
    Насколько я понимаю, дело не в HyperThreading - а в числе одновременно исполняемых потоков. В этом плане HyperThreading и "честные" многоядерные процессоры ничем не отличаются. Так что можете использовать функцию GetMaximumProcessorCount.

    msdn.microsoft.com/en-us/library/windows/desktop/d...

    PS а вообще, забудьте про устаревшие технологии. Сейчас в телефоны по 4 ядра ставят.
    Ответ написан
    Комментировать
  • Как избежать окна авторизации при ajax запросе?

    @mayorovp
    Чтобы окошка не было, сервер не должен передавать заголовок WWW-Authenticate после неудачной попытки (то есть при наличии заголовка Authorization от клиента).
    Ответ написан
    Комментировать
  • Как убрать модальное окно, при краше приложения?

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