Задать вопрос
Делаю всякое :)
Контакты

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (14)

Лучшие ответы пользователя

Все ответы (37)
  • Удалённая работа в зарубежной компании — какие есть подводные камни?

    gdt
    @gdt
    Программист
    Работаю удалённо, получаю в валюте, всё ок. Если компания грамотная - то даже в текущей ситуации (пока что) все проблемы можно решить. Проблемы с получением валюты есть только у тех банков, которые попали под санкции, в других банках всё работает. Конечно, на работу людей из РФ сейчас стали принимать гораздо меньше из-за рисков (понятно каких я надеюсь), но в целом всё ещё предлагают - с начала марта 2-3 предложения получил, из которых одно достойное (не хуже, чем у меня сейчас).
    Как говорится, стучите - и вам откроют, дорогу осилит идущий и тд и тп. Не слушайте никого, во всем мире полно как идиотов, так и вполне адекватных людей, которые будут к вам относится нормально вне зависимости от национальность.

    Как происходит перевод оклада.
    Чаще всего оформиться в штат в зарубежную компанию сложно, поэтому открывается ИП, и заключается контракт на услуги консультанта. В банке создаете валютную сделку, туда прикрепляете контракт (как основание для получения денег). Затем раз в учетный период (месяц) вы выставляете счет своей компании, в котором прописываете сумму, оговорённую в контракте, этот счёт отправляете в компанию и в банк. Компания отправляет деньги, они идут обычно несколько дней, когда доходят - вы получаете уведомление от банка, что на ваш транзитный счёт упала валюта. Тут начинается валютный контроль - специально обученные люди смотрят ваш контракт, инвойс (счёт) и перевод, если всё совпадает - получаете свою валюту (с новыми правилами 80% сразу превращаются в рубли). Не совпадает - пишут чего не хватает, компания делает доп документы, отправляете в банк, всё получается.

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

    P. S. По упрощенке ИП платит 6% налога + 1% на сумму свыше 300000р (есть ещё другие обязательные взносы, но они идут в вычет, если всё вовремя платить, так что всё равно выходит 6%). В РФ в ФОТ штатских сотрудников отчисления занимают больше 30%.
    Ответ написан
    2 комментария
  • Как менять цвет при наведении на контрол?

    gdt
    @gdt
    Программист
    Вот так работает:
    <ControlTemplate x:Key="TestButtonTemplate" TargetType="Button">
        <Border Background="{TemplateBinding Background}"
                BorderThickness="0"
                CornerRadius="5"
                Height="{TemplateBinding Height}"
                Width="{TemplateBinding Width}">
            <ContentControl Foreground="{TemplateBinding Foreground}"
                            Content="{TemplateBinding Content}"
                            VerticalAlignment="Center"
                            HorizontalAlignment="Center"
                            FontSize="{TemplateBinding FontSize}"
                            FontFamily="{TemplateBinding FontFamily}"/>
        </Border>
    
        <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Red" />
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>


    Лениво разбираться в причинах, но наверное вам нужно менять свойства самого контрола, раз вы на них биндитесь в Border
    Ответ написан
    Комментировать
  • Как исправить ошибку - длинный путь к файлу?

    gdt
    @gdt
    Программист
    Длина того фрагмента пути из сообщения 193 символа, а в Windows существует ограничение длины пути в 260 сиволов, так что если длина пути до папки "Тест сцен" превышает 66-67 символов (в зависимости оттого, учитывается ли null в конце) - вам придётся переместить репозиторий на уровень выше.
    Вот похожие проблемы:
    * https://github.com/microsoft/MixedReality-WorldLoc... - решилось перемещением проекта в корень диска
    * https://github.com/microsoft/MapsSDK-Unity/issues/51 - тут рекомендуют включить поддержку длинных путей в git командой git config --system core.longpaths true

    Вот тут на Хабре есть один из вариантов решения.
    Ответ написан
    1 комментарий
  • Как убрать async, если не нужон, но требует?

    gdt
    @gdt
    Программист
    Во-первых, используйте .GetAwaiter().GetResult() если вам нужно получить результат синхронно.
    Во-вторых, ваш дедлок это хрестоматийный пример, примерно как детский мат. Дело в том, что вы не указали .ConfigureAwait(false) в своём асинхронном вызове, это значит, что CLR будет ждать освобождения вызывающего потока, чтобы продолжить выполнять код после await. Однако вызывающий поток уже бесконечно занят ожиданием завершения вашего асинхронного метода там, где вы получаете Result - вот вам и типичный deadlock.
    Таким образом, вам нужно либо добавить .ConfigureAwait(false) к вашему асинхронному вызову (это приведет к необходимости выполнять дальнейшие изменения в UI через диспетчер, Dispatcher.Invoke в WPF), либо запустить свой код в контексте синхронизации, отличном от того, который используется в UI - самый простой способ это вообще не использовать контекст - выполнить свой код внутри Task.Run:
    Task.Run(async() => html = await browser.GetSourceAsync());

    Или
    private async Task<string> GetHTMLFromWebBrowser()
    {
        return await browser.GetSourceAsync();
    }
    
    ....
    
    Task.Run(async() => html = await GetHTMLFromWebBrowser());

    .ConfigureAwait() в таком случае не нужен, т. к. без контекста синхронизации он ничего не делает.
    Ответ написан
    Комментировать
  • C++ Как сделать постоянный вывод, и только тогда, пользователь что-то выполнить ввод в цикле?

    gdt
    @gdt
    Программист
    Вы не указали операционную систему. Если у вас linux (или что-то подобное) - вот тут есть решение при помощи select.

    В общем случае вы можете запустить отдельный поток, который в цикле выводит то, что вам нужно, и проверяет был ли установлен ивент (WaitForSingleObject, с таймаутом 0). В главном потоке создаёте ивент (CreateEvent), ждёте как обычно _getch, когда символ введён - используете SetEvent чтобы сигнализировать об этом второму потоку, также есть функция ResetEvent - чтобы сбросить ивент после обработки (чтобы можно было в цикле после следующего введённого символа его ещё раз установить). Это уже для windows.

    Ну и да, _getch это ни разу не C++, а голый C.
    Ответ написан
    Комментировать