Задать вопрос
  • Что делать когда из команды уходит team lead?

    @vayho
    Вставать на его место с кратным повышением зп, это же очевидно.
    Ответ написан
    Комментировать
  • Почему в БД вставляется одна и та же копия данных?

    GavriKos
    @GavriKos
    Не сильно в теме, но скорее всего вам надо строку с созданием запроса ("SQLiteCommand insertSQL = new SQLiteCommand") поместить тоже в цикл. Скорее всего метод Add не отработает, когда все данные уже добавлены.
    Ответ написан
    1 комментарий
  • Как организовать переключение страниц?

    И снова здрасвуйте)

    Через DataTemplate.
    ca7d023527ee48df99b38064468021cd.png

    В зависимости от того что будет в data context будуть использоватся разные контролы.
    Ответ написан
    2 комментария
  • Unity ошибка IndexOutOfRangeException: Array index is out of range?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    Размер массива posX и posY - не задан.
    Итерирование по массиву enemy вообще какое то странное. Уверены что условие ==?
    Ответ написан
    3 комментария
  • AdBlock зачем ты так?

    Denormalization
    @Denormalization
    Из-за класса adv очевидно. Нужно поменять его на другой, менее "рекламный"
    Ответ написан
    2 комментария
  • Почему С++ вдруг стал выдавать ошибки и не дает запустить готовый проект или создать новый?

    @tr1ck1 Автор вопроса
    Проблема решается следующим образом:
    Заходим в папку C: \Users\AppData\Local\Microsoft\VisualStudio\12.0 и удаляем или переименовываем папку ComponentModelCache. После чего все работает отлично.
    Ответ написан
    Комментировать
  • Есть ли ресурсы где смогут конструктивно (и не очень) отозватся о написанном проекте?

    artemgapchenko
    @artemgapchenko
    По поводу ресурсов я ничего не скажу, да и подозреваю, что нет таких - просмотреть код проекта дело не быстрое, а не быстрые задачи обычно требуют оплаты.

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

    Изучайте книги по выбранной тематике (неплохой способ выбрать хороший учебник - посмотреть отзывы на Amazon, там обычно очень подробно расписывают как плюсы, так и минусы), изучайте документацию по выбранной технологии, и пишите-пишите-пишите. Написали - посмотрели, проанализировали. Как оно работает, понятно ли структурирован код, можно ли будет его в последствии расширить? Нужно ли его вообще будет потом расширять, или же это компонент, который будет написан один раз, и потом не будет изменяться? Какие-то из рекомендаций, указанных в книгах/документации, окажутся вредными - вы и сами это впоследствии поймёте, наткнувшись на проблемы, вызванные этими рекомендациями.
    Подпишитесь в Твиттере на известных в вашей среде людей (тут я ничем помочь не могу, известных Android-программистов знаю, а по вебу помочь не смогу), они обычно подкидывают много интересной пищи для размышления.
    Поищите подкасты по выбранной технологии, начните смотреть видео с конференций, подпишитесь на Хабре на нужные топики.
    Ещё хороший способ понять чего не хватает - походить по собеседованиям (в вашей ситуации он, правда, слабо применим, так как город по вашим словам небольшой). Я таким образом нашёл несколько тем, в которых я "плаваю", и которые при этом очень нужны в реальной работе.
    На гитхабе можно найти хорошие проекты, посмотреть как они структурированы, как происходит работа над проектом, какова структура коммитов, и так далее.
    Ещё потенциально полезная тема - еженедельные дайджесты вроде такого, в которых расписываются текущие тенденции. Подпишитесь и читайте.

    Главное при этом - постоянно анализировать входящую информацию, учиться отделять зёрна от плевел, и тогда всё у вас получится.

    P.S. Ну и да, фриланс как способ постепенного совершенствования навыков тоже хорош. Начинайте с простых заданий - где-то что-то допилить, и потихоньку-полегоньку переходите на более сложные проекты.
    Ответ написан
    2 комментария
  • Как снять ограничения с Amazon S3 bucket'а?

    Попробуйте написать в саппорт.
    Ответ написан
    Комментировать
  • Как настроить NAT loopback на Mikrotik без конкретного указания внешнего адреса?

    @Stealth13
    А я опытом поделиться хотел.
    Задачка была, наверное, банальная: надо было сделать проброс портов на Микротике на внутренние ресурсы сети, но так, чтобы на эти внутренние ресурсы сети можно было заходить по интернетовскому доменному имени Микротика как из интернета, так и внутри сети. Обычный проброс портов "в лоб" работает только для обращений из интернета. При обращении внутри локальной сети по внешнему доменному имени получаем обломс. В интернетах нашлось 2 решения: одно - прописать на DNS Микротика "Static DNS" domain.name -> Внутренний_IP_адрес_ресурса, и тогда все обращения по доменному имени внутри сети будут направляться на этот внутренний ресурс. Но это не подходит, когда внутренних ресурсов несколько, а не один, ведь "Static DNS" мы можем написать только для одного ресурса. Второе решение - Hairpin NAT, описанное в Wiki wiki.mikrotik.com/wiki/Hairpin_NAT . Однако с ним тоже проблемы, если внешний IP адрес является динамическим и часто меняется (с доменным именем от dyndns, например). В Hairpin NAT, описанном в Wiki, в правилах NAT необходимо указывать внешний IP, что неприемлемо, когда он часто меняется. Поразмыслив, я придумал следующее "идеальное" решение, объединившее оба способа в один:

    /ip dns static
    add address=192.168.88.1 name=myname.dyndns.org

    /ip firewall nat
    add action=masquerade chain=srcnat comment="defconf: masquerade" out-interface=ether1-gateway (это стандартный маскарадинг, обычно присутствующий в конфигурации по умолчанию)

    add action=dst-nat chain=dstnat comment=RDP dst-address-type=local dst-port=3389 protocol=tcp to-addresses=192.168.88.2
    add action=masquerade chain=srcnat dst-address=192.168.88.2 dst-port=3389 out-interface=bridge-local protocol=tcp src-address=192.168.88.0/24
    (по 2 таких строчки на каждый порт-форвардинг)

    Т.е. прописываем в статический DNS сопоставление доменному имени внутреннего IP адреса роутера (а не внутреннего ресурса!). Любой клиент внутри сети будет попадать на роутер по доменному имени.
    Прописываем по 2 правила для каждого форвардинга - одно для маппинга, второе для маскарадинга. Таким образом мы избавляемся от необходимости непременно указывать внешний IP адрес в правилах NAT, который у нас часто меняется.

    Такой подход проверен и успешно работает в моей сети. Он более универсален, чем описанные ранее, поэтому я решил поделиться опытом, может кому пригодится.
    Ответ написан
    2 комментария
  • Как сделать проброс портов в Mikrotik при обращении из локалки?

    EvilMan
    @EvilMan
    Маскардинг не работает в вашем случае. Добавляйте явное правило SNAT для таких пакетов.
    В общем, всё выглядит примерно так.
    1. LAN client -> Mikrotik, 192.168.0.100:4555 -> 1.2.3.4:87 (на роутере у этого пакета будет in-interface ether2, так как пакет действительно прилетел из локальной сети) - если в правиле указано сопоставление пакета по входящему интерфейсу для dst-nat (логичнее предположить, что он у вас указан как ether1), то никакого перенаправления не будет. Либо заводите два правила, либо не проверяете для перенаправляемых пакетов входящий интерфейс, а только адрес назначения, протокол и порт. Двигаемся дальше.

    2. Mikrotik -> LAN server, 192.168.0.100:4555 -> 192.168.0.2:87 (output-interface ether2) - Победили перенаправление и пакеты теперь успешно улетают в локалку после замены адреса назначения (в том-то и суть dst-nat). Но что будет дальше? Локальный сервак получает перенаправленный через роутер пакет и отвечает на него напрямую в обход роутера.

    3. LAN server -> LAN client, 192.168.0.2:87 -> 192.168.0.100:4555 - Это ответный пакет от сервера. Но клиент ожидает пакеты с адресом источника 1.2.3.4, а не эти, и отбрасывает их. Либо молча, либо явно с посылкой ICMP-сообщения.

    Вот такие дела. Отсюда решение. Правила ната на микротике.
    1. Правило для проброса портов из интернета:
    chain = nat/prerouting,
      input-interface = ether1, 
      dst-ip = 1.2.3.4, 
      protocol = tcp, 
      dst-port = 87, 
      action = dst-nat, 
      dst-nat-address = 192.168.0.2, 
      dst-nat-port = 87.

    2. Правило для проброса портов из локалки:
    chain = nat/prerouting
      input-interface = ether2, 
      dst-ip 1.2.3.4, 
      src-ip = 192.168.0.0/24, 
      protocol = tcp, 
      dst-port = 87, 
      action = dst-nat, 
      dst-nat-address = 192.168.0.2, 
      dst-nat-port = 87.

    3. Правило для source-nat, чтобы ответные пакеты сервера так же пошли через роутер:
    chain = nat/postrouting,
      output-interface = ether2, 
      dst-ip = 192.168.0.2, 
      src-ip = 192.168.0.0/24, 
      protocol = tcp, 
      dst-port = 87, 
      action = src-nat, 
      src-nat-address = 192.168.0.1

    Вот как-то так. Можно, кстати, пакеты из локалки в локалку метить в цепочке FORWARD и уже на основе метки делать src-nat.
    Ответ написан
    7 комментариев