Задать вопрос
  • Удаленное подключение по ssh к железке?

    @Fixid Куратор тега Linux
    Из простого, но не бесплатного.
    1. Берете самый дешевый VPS.
    2. На железке делаете autossh до VPS
    3. На клиенте подключаетесь или к определенному внешнему порту VPS или просто заходите в систему и подключаетесь к локальному порту по ssh
    4. Пользуетесь железкой

    Гуглите Обратный ssh тунель
    MShNx.png

    P.S. вчитался в вопрос. Вам не нужен VPS, достаточно обратного туннеля до вашего сервера. На сервере будете подключаться через localhost
    Ответ написан
    1 комментарий
  • Есть ли разница между горутинами и await в C#?

    Tyranron
    @Tyranron
    Несмотря на то, что эти инструменты созданы для решения одних и тех же проблем, делают они это по-разному, как под капотом, так и в плане предлагаемых абстракций. Потому нельзя сказать что async/await в C# - это "просто обертка над горутинами".

    Горутины в Go - это концепция stackful coroutines (под капотом) + CSP (в абстракциях). Каждый раз, когда мы создаём горутину, под неё выделяется отдельный стек вызовов для её собственных нужд. При этом, когда происходит паника, то stack unwinding (размотка стека вызовов) происходит только в пределах этой горутины и не покидает границ её стека. Стек горутины полностью отвязан от стека её создания/вызова, потому горутина не может возвращать результат. Любое общение между горутинами выполняется либо посредством каналов, либо какой-то общей памяти.

    async/await в C# (то есть, Task'и) - это концепция stackless coroutines (под капотом) + futures (в абстракциях). Код с async/await'ами компилятор превращает в определенную стэйт-машину с yield point'ами. У них нет отдельного стека, они выполняются в том же стеке что и вызывающий их код. Соотвественно, есть возможность словить exception'ы (аналог panic'и) возникающие внутри асинхронного Task'а прямо в запускающем его коде. Так как выполнение идёт на том же стеке - Task нормально может возвращать результат и мы его можем считать в вызывающем коде без дополнительных примитивов/инструментов.

    При этом, если мы запустим Go с GOMAXPROCS=1, то мы получим однопоточный асинхронный код в Go (по умолчанию он многопоточный). Также и в C# мы можем выполнять Task'и как на одном потоке, так и на thread pool, получая аналогичные Go гарантии рантайма.

    С точки зрения абстракций/использования - это уже вкусовщина. Кому как больше нравится. У futures лучше дизайн в плане composability (их эргономичнее join'ить и select'ить), но они вынуждают писать везде async и await. У горутин надо постоянно городить чехарду с синхронизацией (попробуйте сделать аналог await для произвольной горутины), но если эту чехарду прятать под капот (как обычно и делают), то код вообще выглядит полностью синхронным и программисты радуются.
    Ответ написан
    4 комментария
  • Как устроиться на нормальную работу в такой ситуации?

    @stratosmi
    На работу на full time едва ли возьмут(армия и ограничения по времени для 16-17 летних).

    Фирме нужна прибыль. Не когда нибудь через год, когда ты в армию пойдешь.
    А прямо сейчас.
    Будут рады взять хотя бы на год.
    Фирме нужно хоть сколько то прибыли - будут рады и на неполный рабочий.

    Если ты действительно соображаешь.

    Учиться в ВУЗе - нет средств, а в ССУЗах меня печалит "уровень" образования(учусь в лучшем ССУЗе своей области, знаю о чем говорю).

    Не важно для подавляющего большинства программистов - ВУЗ не нужен.

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

    Не стоит вариться только в собственном соку.
    Для развития нужна работа в хорошей фирме в оффлайне (не удаленка)
    Ответ написан
    2 комментария
  • Как организовать паттерн "репозиторий" с возможностью переключаться на разные СУБД, а именно в c#?

    @chibitko
    Нужно было использовать ORM - это уже и Generic Repository и Unit Of Work.
    Например Entity Framework. Используя EF Code First и разные Entity Configurations (в общем случае достаточно одних), можно легко решить вашу задачу переключения между БД, меняя строку подключения и DB-провайдер.
    И не будет проблем с JOIN.
    Не нравится EF - используйте Dapper.net, легкая и быстрая ORM, на ней целый stackoverflow работает
    Ответ написан
    Комментировать
  • Go IDE

    akzhan
    @akzhan
    Вот и появился JetBrains Gogland.
    Ответ написан
    Комментировать
  • Зачем каждый диод подключать на отдельный резистор?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Если включить все диоды параллельно через один резистор, то ток ограниченный резистором будет делиться между всеми включенными диодами. Т.е. яркость будет плавать в зависимости от количества включенных диодов.
    Ответ написан
    Комментировать
  • Какой стек технологий учить для написания собственных кросс-платформенных приложений?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Unity/C#
    2. NWJS, PhoneGap / HTML, CSS, JS
    Ответ написан
    Комментировать
  • Черным по белому или белым по черному?

    Я использую f.lux, чтобы в том же браузере белый цвет глаза не резал.

    Каждые 15 минут делаю перерыв на 10 секунд (перевожу взгляд, разминаю пальцы), каждые 40 — перерыв на 2 минуты, встаю и разминаюсь. Во-первых, глазам отдых, во-вторых, кровь в тазу не застаивается, для мужчин это важно. Помогает мне с этим Workrave, рекомендую.

    Ну и теперь к этому набору присоединится solarized, который порекомендовал degorov, за что ему спасибо.

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

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

    @EvgenyEvgeny
    Раз
    Два
    или наоборот. Мне больше нравится второй. Просто визуально. Функционально они очень похожи. Они как Trello, только 2.0. Жира хороша, если у вас до десяти человек в команде, потом будет дороговато.
    Ответ написан
    1 комментарий
  • Сложная бизнес-логика. Как всё учесть?

    @nirvimel
    Несколько банальных принципов ООП (применительно к вашему проекту):
    Сущности, которых касается определенный запрос, должны быть либо унаследованы от одного класса, либо реализовывать один интерфейс (в дополнение к другим интерфейсам), который имеет методы управления этими сущностными, необходимые для реализации этого запроса.
    Запросы также должны быть сгруппированы в дерево классов или наследовать набор интерфейсов. Сущности могут взаимодействовать не с конкретными классами запросов, а с общими интерфейсами, которых не так много, как различных запросов.
    То же самое с realtime обработчиками и, вообще, с любыми элементами логики.
    Ответ написан
    1 комментарий
  • Где лучше ставить ограничения?

    unitby
    @unitby
    Знать о себе и своем поведении должна сущность.
    Ибо методы доступа могут быть разные и базу Вы можете мигрировать
    Ответ написан
    Комментировать
  • Логирование через синглтон?

    @veitmen
    Приветствую.
    LogManager.GetCurrentClassLogger()
    Использовать следует тогда, когда вы хотите использовать отдельный логгер для каждого класса и имя логгера будет совпадать с именем класса.
    Пример правильного использования:
    namespace MyNamespace
    {
      public class MyClass
      {
        private static Logger logger = LogManager.GetCurrentClassLogger();
      }
    }

    Далее всегда используете в своем классе для логирования logger.
    Подробнее тут: https://github.com/NLog/NLog/wiki/Tutorial#creatin...

    Если вы хотите сделать общий класс логирования и везде его использовать, то сделайте статический класс Logger, в нем реализуйте нужные вам методы логирования, которые будут использовать NLog. Т.е. примерно так:
    namespace MyNamespace
    {
      public static class MyClass
      {
        private static Logger logger = LogManager.GetLogger("MyCoolLogger");//или упомянутый GetCurrentClassLogger()
    
       public static void Debug(string message){
          logger.Log(message);
       }
    ...
      }
    }

    Собственно так используете:
    Logger.Debug("Hello!");
    Это простое решение, но я бы не советовал его использовать.

    Я бы советовал использовать отдельный логгер для каждого класса, это BestPractise. Это позволит вам проще ориентироваться в логах, т.к. каждый логгер будет указывать на свой класс.
    Ответ написан
    Комментировать
  • Время жизни объекта, если передали ссылку его поля в статический класс?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Будет. Ссылка идёт не на поле объекта, а на объект, который когда-то лежал в этом поле. После чистки останется только объект d. Вот если бы в d при конструировании была ссылка на b, как на "родителя", то b бы тоже остался.
    Ответ написан
    Комментировать