
Илья
01.02.2017
11:16:35
Кто нибудь может подсказать как в C# Xamarin Forms (XAML) организовать смену страниц приложения с использованием паттерна MVVM?

Alex
01.02.2017
11:21:11
как организовать доступ к файловой системе на сервере, чтобы запросы выстраивались в очередь и не мешали друг другу?

Artem
01.02.2017
11:23:05

? Райзя ?
01.02.2017
11:23:30

Google

Alex
01.02.2017
11:26:06
есть веб приложение для работы с файлами в гитовом репозитории. и если два или больше человек полезут, к примеру, пуллить один и тот же каталог, возникнет Access denied

? Райзя ?
01.02.2017
11:26:50
наркоманский гит

Alex
01.02.2017
11:27:43
ну вот, к примеру:
Error type LibGit2Sharp.LibGit2SharpException. Message Could not open 'c:/Saved repositories/public/BDD2/.git/FETCH_HEAD': The process cannot access the file because it is being used by another process.
это 10 человек полезли одновременно

Летучая
01.02.2017
11:28:54
пилишь такой очередь
пришел запрос — исполняешь
если что-то ещё выполняется, все остальные кладешь в очередь
и дальше типа запрос выполнился — снимаем последний
сорян за кэпство
с либгит2шарп не работал

Gid
01.02.2017
11:31:18

Artem
01.02.2017
11:32:05
Веб-Приложение на чем?

anton
01.02.2017
11:33:23

Artem
01.02.2017
11:34:58
если на asp mvc, самый примитивный способ -
public class GitController : Controller
{
private static readonly object syncRoot = new object();
public ActionResult Git()
{
lock (syncRoot)
{
//do action
}
return ..smt
}
}

Alex
01.02.2017
11:35:55

Artem
01.02.2017
11:36:04
не принципиально
но доступ получится эксклюзивный. т.е. в каждый момент времени, врнутри блока lock{} будет один поток.

Google

Artem
01.02.2017
11:37:24
А сервер сам сложит запросы в очередь и т.п.
точнее они будут доходить до лока, ждать синхронизации. Очередность не гарантируется (т.е. не факт, что тот, кто первый пришел начал ждать, первый получил доступ)

Alex
01.02.2017
11:39:00
о, спасибо! а то думал MQ надо прикручивать

Artem
01.02.2017
11:43:03
Ну вообще надо разобраться почему падает LibGit2Sharp
как мне кажется не должно

Alex
01.02.2017
11:45:32
Та потому что не предназначено для того, чтобы в 10 тредов что-то делать и мне кажется это логично. Это как если 10 человек будут одновременно пользоваться одним блокнотом и ручкой

Андрей
01.02.2017
12:04:23
Всем привет. Может кто сталкивался с таким? В форме есть checkBox
<div class="form-group">
<label for="isCompletionSuccessfull">Успешное завершение:</label>
<input type="checkbox" id="isCompletionSuccessfull" name="isCompletionSuccessfull"/>
</div>
CheckBox передается в Action как параметр
public IActionResult SomeAction(..., bool isCompletionSuccessfull, ...)
И его значение всегда false, не зависимо от того чекнут он или нет. В чем причина?

anton
01.02.2017
12:07:34
а как ты его в экшн отправляешь?

Андрей
01.02.2017
12:09:10
<button type="submit" class="btn btn-primary">Закрыть</button>
за пример была взята эта глава http://metanit.com/sharp/aspnet5/7.8.php

Friedrich
01.02.2017
12:12:16

Artem
01.02.2017
12:12:43

anton
01.02.2017
12:13:06

Alex
01.02.2017
12:16:21
Так и есть

Friedrich
01.02.2017
12:17:17
Винда ничо не лочит, лочат программы.
Всего-то надо правильные флаги в API передавать, и не будет лочить.
(разве что антивирус какой)

anton
01.02.2017
12:17:50


Андрей
01.02.2017
12:17:51
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<form enctype="multipart/form-data" role="form" method="post" asp-controller="Events"
asp-action="CloseMyEventFormHandler" asp-route-id="@Model.EventId">
<h3>Закрыть задание:</h3>
<div class="form-group">
<label for="comment">Комментарий</label>
<textarea class="form-control" id="comment" name="comment" rows="5"></textarea>
</div>
<div class="form-group">
<label for="isCompletionSuccessfull">Успешное завершение:</label>
<input type="checkbox" id="isCompletionSuccessfull" name="isCompletionSuccessfull"/>
</div>
<div class="form-group">
<label for="file">Прикрепить документ:</label>
<input type="file" id="file" name="file" multiple />
</div>
<button type="submit" class="btn btn-primary">Закрыть</button>
</form>
</div>
</div>
</div>

Google

anton
01.02.2017
12:18:07


Андрей
01.02.2017
12:20:05

anton
01.02.2017
12:23:54
Да. работает абсолютно все кроме чекбоксов
а попробуй её через HtmlHelper во вьюшке сделать..
емнип, у чекбокса на самом деле 3 состояния (checked, unchecked и undefined) и хелпер на самом деле еще hidden input создает, что бы это разрулить

Андрей
01.02.2017
12:24:26

Alex
01.02.2017
12:30:18

Андрей
01.02.2017
12:30:45

anton
01.02.2017
12:32:17

Андрей
01.02.2017
12:36:18

Alex
01.02.2017
12:37:07

anton
01.02.2017
12:39:57

Alex
01.02.2017
12:40:34
руками. после того, как сделал Pull с помощью libgit2sharp

anton
01.02.2017
12:41:55
что то я запутался. сорри :)
а The process cannot access the file because it is being used by another process. у тебя ругается когда N человек пулл делают?

Friedrich
01.02.2017
12:45:26
В смысле, у них есть кнопка, они её нажимают, и сервер запускает десять копий git pull в один каталог.
@proutorov я угадал?

Alex
01.02.2017
12:46:51
Да)

Friedrich
01.02.2017
12:47:06
Это безумие!

Google

anton
01.02.2017
12:47:13
отобрать кнопку!
самое простое - делаешь лок, помнишь о локе, проверяешь лок прежде чем запустить еще один пулл. ну и можно фидбеком юзеру обратно возле кнопки сказать о том, что уже кто то пуллит

Alex
01.02.2017
12:48:04
Да, буду локи юзать, всем спасибо)

Artem
01.02.2017
12:57:30

Alex
01.02.2017
13:00:29
да. но на каждый реквест создаётся отдельный тред. если я правильно понял вопрос

Artem
01.02.2017
13:00:47
это раз. Еще минус способа, который я написал в том, что в случае ресайклинга, если мы говорим про IIS, у тебя будет момент, когда приложение висит в двух экземплярах

Admin
ERROR: S client not available

Alex
01.02.2017
13:04:21
не-не такого нету и не предвидится пока)

Artem
01.02.2017
13:07:28
не-не такого нету и не предвидится пока)
Ну про ресайклинг, в силе остается. На самом деле я тебе предложил костыль. Сам решай, нужен он тебе или нет. Если надо побороть вопрос с ресайклингом, можешь посмотреть на Mutex например https://msdn.microsoft.com/ru-ru/library/bwe34f1k(v=vs.110).aspx

Alex
01.02.2017
13:24:53
welcome to the club

Алексей
01.02.2017
13:32:37
?О! Тут наверно много нас из того веселого чата))) welcome as well

anton
01.02.2017
13:42:16
что за тот веселый чат? :)

Alex
01.02.2017
13:42:46
этот наверное) https://join.skype.com/uIrC5zKMhMxb

anton
01.02.2017
13:43:29
хм, в коем то веке зашел на upwork, посмотреть халтурку
а там:

Alex
01.02.2017
13:43:38
но там унылые флудеры распугали некоторых умных людей

anton
01.02.2017
13:43:40
что за сексизм? и расизм

Reckit
01.02.2017
13:45:03
наверное не хотят много тратиться

Google

Летучая
01.02.2017
13:45:30
Самое главное требование
если ты суперкрутой спец, но мужик и белый, то тебя не возьмут

Ilya
01.02.2017
13:47:53

anton
01.02.2017
13:50:05
смотрите что питонисты себе позволяют..
https://github.com/squeaky-pl/japronto

Ilya
01.02.2017
13:58:20
странный чарт

Илья
01.02.2017
14:30:30
Конструктор может быть асинхронным? (Task)
Что делать если мне в конструкторе надо выполнить асинхронную функцию?

Дмитрий
01.02.2017
14:31:52

anton
01.02.2017
14:31:56
конструктор асинхронным быть не может
но ты можешь сделать асинк статик метод, который будет возвращать новый экземпляр

Дмитрий
01.02.2017
14:32:30
и возвращать созданный проинициализированный корректным образом объект

anton
01.02.2017
14:37:25
как-то так:
public class Foo
{
string greeting = string.Empty;
public async static Task<Foo> BuildFooAsync(string name)
{
return new Foo(name);
}
private Foo(string name)
{
this.greeting = $"hello #{name}";
}
}

Илья
01.02.2017
14:41:01

? Райзя ?
01.02.2017
14:42:26
https://github.com/Real-Serious-Games/C-Sharp-Promise
поясните за библиотеку плиз. И будут ли нужны таски с ней?

Дмитрий
01.02.2017
14:49:09
Ты хоть сам понял что сказал? :D
Прекрасно понял.
Вон даже пример привели.
Ещё внутри BuildFooAsync добавить для нового объекта foo вызов какого-нибудь асинк-метода - и будет полный комплект.

Илья
01.02.2017
14:49:58
Ладно я уже разобрался. Спасибо. Пожалуй статичный метод подойдет.
Будет как в паттерне фабрика. :D

anton
01.02.2017
14:53:01
но оно там может быть в их DLL какой-нибудь
Эта группа больше не существует