• Как создать 2 openvpn на одном физ.сервере?

    @Konkase
    создать аналогичный первому конфиг файл, но в настройках указать другой порт. И запустить
    openvpn --config newconfig.ovpn
    Ответ написан
    3 комментария
  • Как правильно передать айди объeкта в ссылку?

    darqsat
    @darqsat
    PM
    Вариант 1:
    Добавляешь к своему обьекту два атрибута:
    - draft = bool
    - draft_created = datetime

    При открытии формы на создание обьекта ты уже создаешь его в базе с датой и значением True. В таком случае у тебя будет ID. Везде где мусор не нужен, можно отфильтровать по draft = False. А что бы не засорить базу, можно раз в какой то периуд времени проходить скриптом вызванным cron джобой и удалять всё что draft=True и дата создания вчера.

    Вариант 2:
    Загружаешь файлы без привязки к проекту, но хранишь список их айдишников на форме. И когда будешь создавать обьект, пройдешься по файлам и проставишь им айдишники.
    Ответ написан
    Комментировать
  • Как происходит адресация в памяти?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    1) это нулевые адреса. Нужно смотреть, что у вас в документации по этим адресам. Возможно, таблица прерываний
    2) ваша формула смещает адреса по 64 байта, начиная с нулевого. Шестьнадцатеричное 0x40 = 64 десятичному!
    3) в зависимости от контроллера, может быть адресация прямая, а может быть и через трансляцию через блок MMU, тогда нужно смотреть, в какой момент и с какими настройками трансляции адресов работает MMU
    4) всегда нужно помнить о типе разрядности обращения. В классическом случае обращение *unsigned char и *unsigned int или *unsigned short могут иметь совершенно разные эффекты. Смотреть документацию, обычно пишут тип регистра и его разрядность!
    5) некоторые контроллеры имеют как полноценные битовые регистры, так и битовые поля, отмапированные, для удобства программиста на адреса. Например 32-х разрядный регистр может иметь в памяти 32 8-битных регистра мапированные на биты основного регистра.

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

    Ocelot
    @Ocelot
    WGM12 равен трём.
    (1 << WGM12) равно 0b00001000 (единица, сдвинутая на три бита влево)
    TCCR1B |= (выражение) это побитовое или, устанавливает в единицу те биты регистра TCCR1B, которые у правого операнда равны единице, а остальные не трогает. Например:
    TCCR1B = 0b10101010;
    TCCR1B |= 0b00001111;
    теперь TCCR1B будет равен 0b10101111;
    Ответ написан
    3 комментария
  • В чем смысл работы побитово с десятичными цислами?

    @res2001
    Developer, ex-admin
    Используют доступ к битам, обычно, для хранения и проверки некоторого набора флагов. Т.е. каждый бит некоторой переменной является флагом, если бит равен 1 - флаг выставлен, если 0 - сброшен.
    Результат функции getbits можно интерпретировать как логический признак - выставлен определенный флаг или нет. В этом случае вызов getbits можно спрятать за макросами, которые будут подставлять соответствующие параметры в getbits в зависимости от того какой флаг проверяется.
    То же самое можно решить и структурой с битовыми полями, в этом случае компилятор возьмет на себя всю работу с битами. Результат при этом будет примерно тем же, что и в случае ручного манипулирования битами.
    Ответ написан
    Комментировать
  • Как дебажить код под МК?

    @pfg21
    ex-турист
    берешь контролер прошиваешь в него и дебажишь.
    протеус однако не всё симулировать смогёт.
    Ответ написан
    6 комментариев
  • Как дебажить код под МК?

    @n12eq3
    в студии есть симулятор. при правильном использовании стопвотча и брейкпоинтов можно проимитировать достаточно сложные внешние воздействия за исключением протоколов обмена
    Ответ написан
    Комментировать
  • Динамическое выделение памяти для массива, в чем ошибка?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    1) Realloc принимает размер ожидаемой памяти, ты суёшь ему просто 2.
    2) После этого ты пишешь в какую-то рандомную память.
    3) Ты в функцию передаешь одинарный указатель. Чтобы это работало и указатель менялся, надо передавать двойной. То есть, после выхода из функции, если у тебя был реаллок, в твоём буфере всё равно мусор.
    4) Перевыделять каждый раз второй буфер не нужно.
    5) копировать из одного буфера в другой не нужно. Достаточно буферы свопнуть(поменять местами через третью переменную).
    Ответ написан
    7 комментариев
  • Определение длины какой угодно строки, без заранее опредленного размера массива?

    @res2001
    Developer, ex-admin
    Выделяете динамически первоначальный размер памяти, читаете в него заданное количество символов (по размеру буфера), если конца строки не было, делаете resize буферу, дочитываете, проверяете конец строки и т.д.
    Можно читать по 1 символу и сразу его проверять на конец строки, но память при этом так же нужно увеличивать при необходимости. Медленнее скорее всего не будет, т.к. стандартная библиотека делает буферизацию по умолчанию, т.е. фактически все равно будет читаться не по 1 байту.
    Ответ написан
    Комментировать
  • Python Django junior?

    sim3x
    @sim3x
    Для того чтоб устроиться на работу - нужно ходить на собеседования и получать офферы
    Ответ написан
    5 комментариев
  • Авторизация в джанге по апи из другого сервиса?

    tumbler
    @tumbler Куратор тега Django
    бекенд-разработчик на python
    Если "сторонний сервис" - это какая-нибудь социальная сеть, то для нее должно быть много документации. Ключевое слово - OAuth.
    Если "сторонний сервис" под собственным контролем, то опять же Oauth (надо пилить на обоих сервисах) или другие способы. Ключевики: SSO - Single Sign-On, CAS - Central Authentication Service.
    Ответ написан
    Комментировать
  • Как получить последнюю запись для диапазона ID в Django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Operation.object.filter(patient_id__in=patients_id).order_by('id').last()
    Ответ написан
    Комментировать
  • Как сделать кнопку для перехода по ссылке?

    Xuxicheta
    @Xuxicheta
    инженер
    че за наркомань тут у вас
    <li v-for="message in message_list" :key="message.id">
            {{ message.message_text }}
            <a  :href="`http://127.0.0.1:8000/api/mark_read/id=${message.id}`">Check</a>
    </li>
    Ответ написан
    Комментировать
  • Как использовать vue js + django?

    lavezzi1
    @lavezzi1
    data - всегда функция возвращающая объект.

    var app3 = new Vue({
      el: '#app-3',
      data() {
        return {
          seen: true
        }
      }
    })
    Ответ написан
    2 комментария
  • Есть ли разница между двумя функциями?

    @Mercury13
    Программист на «си с крестами» и не только
    1. Будьте осторожны, перед нами динамический массив, сделанный расширением стека. Не на всех компиляторах есть, плюс стек ограничен парой мегабайт.
    Нормализацию размера лучше сделать shift %= size;
    Подпрограмма работает с локальной переменной и всё, что она делает, идёт на экран и больше никуда.
    (вообще стоит разделять обработку и вывод!)
    Время работы size.

    2. Сдвигаем на один элемент нужное количество раз. Время работы shift·size.

    3. Как за size «на месте»…
    квоПрох := НОД(shift, size)
    для i = [0..квоПрох)
      i1 := i
      tmp := a[i]
      вечный цикл
        i2 := (i1 + shift) % size
        если i2 = i
          прервать вечный цикл
        a[i1] := a[i2]    
        i1 := i2
      a[i1] := tmp
    Ответ написан
    Комментировать
  • Есть ли разница между двумя функциями?

    @res2001
    Developer, ex-admin
    Ваша функция работает делает свое дело за 1 проход по массиву, второй вариант - за shift проходов - сложность O(N) и O(N*shift) соответственно. Во втором случае скорость зависит от величины сдвига, что очень плохо для такого алгоритма.

    Циклический сдвиг массива "на месте" реализуется с помощью трех операций revers (операция изменения порядка элементов на противоположный):
    1.весь массив делится на 2 массива в точке сдвига (условно, без выделения памяти)
    2.revers первой части
    3.revers второй части
    4.revers всего массива
    Встречал на stackoverflow реализацию на Си.
    Работает за 2 полных прохода с операциями swap по массиву - O(2*N), но каждая операция тяжелее чем в ваших вариантах. Но быстродействие не зависит от величины сдвига и не требует дополнительной памяти, что может быть важно при работе с массивами большой размерности.
    UPD: вспомнил, этот способ был описан в книге Бентли "Жемчужины программирования"!
    Ответ написан
    Комментировать
  • Есть ли разница между двумя функциями?

    Adamos
    @Adamos
    Мы же говорим о С++, судя по вашим тегам, а не о С, правда?
    В С++ логичнее сделать класс-обертку массива, который при обращении к его элементам будет производить элементарную арифметику пересчета индекса. А не колупаться в памяти, как будто вы на калькуляторе программируете.
    Ответ написан
    Комментировать
  • Есть ли разница между двумя функциями?

    myjcom
    @myjcom Куратор тега C++
    не изобретайте велосипед)))
    библиотека STL
    используйте std::vector
    и std::rotate

    определение и пример
    en.cppreference.com/w/cpp/algorithm/rotate
    Ответ написан
    Комментировать
  • Как дать права на запуск программы из под админа обычному юзеру на win 10?

    @feanor7
    Системный администратор
    runas читайте внимательно
    правильно:
    1. запустить комануду в cmd: runas /user: /savecred 'path'
    2. командная строка спросит пароль, вы вводите его
    3.эту команду вы прописываете в ярлык - пароль больше не запрашивается благодаря аргументу savecred.
    4. Профит
    Ответ написан
    4 комментария
  • Для чего реально применяются структуры?

    @bbkmzzzz
    Для логической группировки данных в одной сущности, когда возможности классов избыточны, например, результат запроса в БД.
    Ответ написан
    3 комментария