• Как по ВПН соединить две сети с одинаковым поддиапазоном 192.168.0.1/24?

    ValdikSS
    @ValdikSS
    С OpenVPN это сделать сравнительно легко — у него имеется встроенное средство переназначения сетей.

    --client-nat args
            This pushable client option sets up a stateless one-to-one NAT rule on packet addresses (not ports), and is useful in cases where routes or ifconfig settings pushed to the  client  would
            create an IP numbering conflict.
    
            Examples:
    
                client-nat snat 192.168.0.0/255.255.0.0
                client-nat dnat 10.64.0.0/255.255.0.0
    
            network/netmask  (for  example  192.168.0.0/255.255.0.0) defines the local view of a resource from the client perspective, while alias/netmask (for example 10.64.0.0/255.255.0.0) defines
            the remote view from the server perspective.
    
            Use snat (source NAT) for resources owned by the client and dnat (destination NAT) for remote resources.
    
            Set --verb 6 for debugging info showing the transformation of src/dest addresses in packets.


    А с другими типами — использовать ядерное переназначение через iptables/nftables: DNAT/SNAT, NETMAP.
    Ответ написан
    Комментировать
  • Как правильно снять бекап с контроллера домена?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Вот вам ссылка на рекомендации изготовителя (Microsoft). Там - целый раздел, ссылка ведет на первую статью раздела. Если испытываете трудности с английским, то эти рекомедации переведены (как-то) и на русский язык.
    Резюме:
    1. встроенного средства архивирования Windows для резервного копирования и восстановления AD достаточно, но в плане удобства использования коммерческие решения лучше;
    2. одиночные контроллеры домена, не несущие других функций, восстанавливать нецелесообразно: никакой уникальной информации на них нет, и куда лучше просто добавить в AD новый КД с другим именем;
    3. берегитесь средств снятия и восстанвления образов диска, не поддерживающих AD специально, как средства резервного копирования и восстановления, такие средства безопасно использовать только в системе с ровно одним КД в лесу (по крайней мере - для физических КД, с виртуальными полегче - многие гипервизоры поддерживают идентификатор VM, а AD обучена правильно реагировать на его смену - но можно нарваться); однако при нужде использовать их можно - надо только отдельно копировать и восстанавливать до подключения в сеть Состояние системы.
    Ответ написан
    1 комментарий
  • Какие есть альтернативы Macromedia Flash в сфере геймдев?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне кажется что флеш был уникален тем что сочетал в себе сразу 3 вещи. И среду разработки. И язык разработки. И плагин рендеринга векторной графики в браузере.

    Дизайнер который решил заниматься флешем просто его устанавливал и получал себе возможность создавать свой креатив сразу. Если брать JS то надо искать среду в которой можно рисовать векторную графику и анимировать ее. Есть ли такая среда - я не знаю.

    В прошлом были истинно программистиские решения такие как Java Applets но они не взлетели как раз
    именно по причине того что были ориентированы на программиста а не на дизайнера. Дизайнеру
    и в страшном сне не присниться писать java-код.

    Если смотреть в сторону Unity то там вроде-бы можно сделать многое. Но там чорт-пойми какая лицензия
    и создатели Unity закручивают гайки постоянно. А если ты - "вкатыш" в эту технологию то ты как-бы
    интуитивно ищешь нечто свободное и либеральное к использованию. Желательно - opensource.
    Ответ написан
    2 комментария
  • Как отклонить соединение при 10 и более запросов TTL 58?

    karabanov
    @karabanov
    Системный администратор
    Устанавливаешь ipset (возможно уже установлен) и добавляешь список:
    sudo ipset -N BANNED_IP nethash

    Добавляешь правила:
    # Отбрасываем пакет если TTL 58 и IP есть в списке BANNED_IP
    sudo iptables -A INPUT -m ttl --ttl-eq 58 -m set --match-set BANNED_IP src -j DROP
    
    # Надо как-то добавлять IP отвечающие критериям в список BANNED_IP, для этого
    # Добавляем кастомную цепочку RATE-LIMIT
    sudo iptables -N RATE-LIMIT
    
    # Если TTL 58 передаём пакет на обработку в цепочку RATE-LIMIT
    sudo iptables -A INPUT -m ttl --ttl-eq 58 -j RATE-LIMIT
    
    # Если количество пакетов не превышает 2 в секунду, то пропускаем
    sudo iptables -A RATE-LIMIT -m limit --limit 2/second -j ACCEPT
    
    # Когда лимит превышен добавляем в лог запись об этом событии
    sudo iptables -A RATE-LIMIT -j LOG --log-prefix "LIMIT_EXCEEDED: "
    
    # Затем добавляем IP в список BANNED_IP
    sudo iptables -A RATE-LIMIT -m ttl --ttl-eq 58 -j SET --add-set BANNED_IP src
    
    # Не обязательно, но отбрасываем пакет
    sudo iptables -A RATE-LIMIT -j DROP


    Посмотреть, кто попался sudo ipset list BANNED_IP
    Удалить из списка если надо sudo ipset del BANNED_IP <Забаненый IP>

    Проверить, что работает sudo ping -i 0,1 -t 58 <IP сервера>
    Посмотреть лог tail -F /var/log/syslog | grep LIMIT_EXCEEDED
    Или так dmesg | tail | grep LIMIT_EXCEEDED

    PS
    Себя только не забань. Убедись, что при любом раскладе ты сможешь подключиться к серверу по IPMI или физически присутствуя рядом с ним с монитором и клавиатурой.
    Ответ написан
    1 комментарий
  • Можно-ли скачать видео с YouTube используя DevTools?

    Есть такая «секретная» ссылка: www.youtube.com/get_video_info?video_id=XXXXXX
    Вместо XXXXXX подставьте хэш видео, который в ссылке на ролик, типа youtu.be/BWCiWZtrWXU после слеша.

    По этой (первой) ссылке вернутся URL-encoded данные. Распакуйте их и возьмите параметр url_encoded_fmt_stream_map. Его значение опять надо распаковать как URL-параметры. И из результата вытащить параметр url – это ссылка на единый скачивабельный видеофайл.

    Например, в консоли браузера:
    function getUrlParams(search) {
        let hashes = search.slice(search.indexOf('?') + 1).split('&')
        let params = {}
        hashes.map(hash => {
            let [key, val] = hash.split('=')
            params[key] = decodeURIComponent(val)
        })
    
        return params
    }
    var s = '------'; // здесь длиннющая строка из ответа /get_video_info
    var a = getUrlParams(s);
    var b = getUrlParams(a.url_encoded_fmt_stream_map);
    console.log(b.url); // эту ссылку открываем в браузере - это скачиваемый видеофайл


    Очень надеюсь, что вы покопаетесь в этих данных более подробно, разберётесь, как получать прямые ссылки на скачиваемые файлы во всех форматах и размерах, которые предлагает YouTube, и напишете короткий материал на Хабр по результатам, а также опубликуете gist с рабочим кодом для консоли браузера.
    Ответ написан
    3 комментария
  • Выбор cms для заметок сис.админа?

    @apheyhys
    Попробовал все. Пользуюсь https://boostnote.io/.
    Разметка с помощью Markdown. Дистрибутивы есть под все платформы.
    Основное удобство в очень быстром составлении заметки, вставке скриншота. Очень активная поддержка и полная бесплатность.
    Это просто записная книжка, но если вам нужен доступ с любого компьютера, то выложите базу данных на Dropbox, например.
    Ответ написан
    Комментировать
  • Не могу понять кое-что про замыкание. Можете помочь?

    bobrovskyserg
    @bobrovskyserg
    Более разумно вопрос звучит так: почему последнее значение i?
    Потому что это - переменная замыкания, и она хранится в специальном месте, одном на всех:
    print(acts[0].__closure__)
    print(acts[1].__closure__)
    print(acts[0].__closure__[0].cell_contents)


    Изменить ситуацию можно, например, так:
    def makeActions():
        acts = []
        for i in range(5):
            def f(x, a=i):
                return a ** x
            acts.append(f)
        return acts

    или даже так (сам не знал, что с лямбдами работает)
    acts.append(lambda x, a=i: a ** x)
    Ответ написан
    2 комментария
  • Не могу понять кое-что про замыкание. Можете помочь?

    vittly
    @vittly
    Оптимизатор, любитель удалять лишний код
    В массиве acts лежат по-сути одинаковые лямбды - каждая захватила себе в замыкание переменную i и возвращает ее удвоенное значение. Последним значением i было 4. Соответственно любая из лямбд возвращает 16. На переменную надо смотреть как на область памяти, для переменной i - это одна и таже область, из какой бы лямбды вы к ней не обращались
    Ответ написан
    2 комментария
  • Как переквалифицироваться из эникейщика в программиста?

    zolt85
    @zolt85
    Программист
    Всем привет, это снова я.
    Молодой человек! Вам 23! ВСЕГО! А Вы уже как я, по-старчески, ворчите. Я таких как Вы, вижу ежедневно. Сейчас поясню. В моем городе туго с программистами, хотя город молодежный, продвинутый (в Томске я живу). Мы постоянно ищем людей, сейчас в сторону удаленных разработчиков уже смотрим, потому что на собеседования приходят такие как Вы. Не в плане опыта, а в плане запросов. 23 года, опыта никакого нет, но нужно мне минимум 40 тыр. Родной! За что? Пойми, чтобы понять какой-ты как разработчик, с тобой нужно поработать пару месяцев, а в среднем первый "выхлоп" от тебя будет только через полгода. Поэтому такой мой Вам совет, если хотите развиться как разработчик, стисните зубы, объясните все жене, и идите джуниором. Лучше в Java или C#. Набирайтесь опыта. В нашей сфере работодатели в основном адекватные и видят, когда от Вас уже есть толк. И не стесняются повышать ЗП.

    Удачи Вам!
    Ответ написан
    13 комментариев
  • Нужен web сервер, прозрачно читающий статические файлы в zip-архиве как страницы. Нет такого на примете?

    AlexXYZ
    @AlexXYZ Автор вопроса
    O Keep Clear O
    Кое-что нашлось:

    Вспомнилось, что war-архив - это самый, что ни на есть настоящий zip-архив. Один из легковесных серверов для такого типа файлов - tomcat. Получить war можно так:

    b4f5ec51f9a345e5a9bb26dcf408ca0c.png

    Результат выглядит так (слева список страниц-справок):

    6528b843dc3e43b2987bfda3412ea6b1.png

    Несколько настроек для tomcat:

    93f66412ad814acf8c6e66fc2730af21.png

    Такие наборы файлов у меня возникли после работы с "zim wiki desktop" и "adobe captivate". Спасибо за внимание.
    Ответ написан
    Комментировать
  • Совет в изучении ООП JavaScript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как быстро врубиться в ООП в JS:

    Все объекты. У объектов есть конструктор и прототип. Создание нового объекта - копирование прототипа в новый экземпляр объекта и вызов конструктора. В качестве контекста вызова конструктора будет использоваться экземпляр объекта. Конструктор - просто функция которая по умолчанию возвращает контекст вызова, но вы можете там сделать return и вывести любую херню.

    Важно понимать что прототип копируется. То есть если вы создали 10 инстансов одного типа, потом поменяли прототип, например добавив метод), то у первых 10-ти инстансов этих методов не будет, а у новых - будет.

    Наследование - просто объявляете тип со своим прототипом. В силу некоторых особенностей от некоторых типов не так то легко отнаследоваться без кастылей (например от массива).

    Для упрощения работы в ES2015 новый синтаксис для объявления объектов своих типов.

    Принципы ООП такие же как и везде, единственное что для инкапсуляции стоит еще про модули почитать так как в JS (как и в некоторых других языках) нет модификаторов доступа.
    Ответ написан
    Комментировать
  • Как вы управляете своей базой знаний? Какие инструменты для этого используете?

    djQuery
    @djQuery
    "Кодируем помаленьку" ("Сказка о Тройке")))
    Для сохранения информации из веба использую плагин для FF ScarpBook. Древовидная структура, тэги.

    Для списка дел - GoogleCalendar.

    Справочник, который всегда под рукой - Evernote ( + соответствующие плагины для браузера).

    Чтобы отложить для "прочтения на потом" - Instapaper.

    При закачке софта/вареза сопутствующую информация сохраняю в mht и полученный файл затем храню вместе с софтом.
    Ответ написан
    Комментировать
  • Дети и интернет: как контролировать?

    saboteur_kiev
    @saboteur_kiev Куратор тега Компьютерные сети
    software engineer
    > p.p.s. Понимаю, что нужно детей воспитывать, а не давать чаду айфон 6+ по принципу "чем бы дитя не тешилось...". Но как это сделать в мире, где вокруг одни гаджеты и интернет со всеми вытекающими последствиями?

    Вы сами все понимаете. Важно не то, что ребенок увидит, а как он оценивает увиденное. Приоритеты и критичность оценки должны в нем воспитать, причем чем раньше тем лучше - к пубертатному возрасту, в идеале, родитель должен из наставника превращаться в старшего друга, а к 20-22 годам, просто в друга.

    P.S. Неплохо подкидывать ребенку правильные ресурсы, в которых он будет чаще находить полезные и для него и с вашей точки зрения ответы. Но при попытке спрятать или скрыть другие источники, вы промотивируете его именно их и искать.
    Просто поясняйте где информация более качественная и ПОЧЕМУ.
    Ответ написан
    Комментировать
  • Как сохранить html-страницу сайта без искажений?

    @romanmd86
    Opera 12.17 -> .mht (web archive)
    Ответ написан
    Комментировать
  • Есть ли разница в размере трафика rsync при соединении через "rsyncd-rsync" или "rsync-ssh" и почему?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    С точки зрения механизма работы rsync разницы нет. На стороне второго сервера запускается процесс rsync'a, который делает всё тоже самое, что и rsyncd.
    ssh в данном случае обеспечивает шифрование всего трафика, авторизацию и прочие плюшки. В том числе и сжатие трафика, если оно включено (ну и если трафик вообще реально пожать).
    Так что трафика будет меньше, нагрузка на проц будет выше. С точки зрения возможностей - всё одинаково.

    Rsyncd удобен тогда, когда не хочется авторизовывать машины по ssh (которые бэкапы сливают, например). Но тогда файлы по дороге украсть могут -=)
    Ответ написан
    4 комментария
  • Какие язык, компилятор, среда подойдут для разработки небольшого приложения под windows?

    @artnazarov
    Lazarus (www.lazarus.freepascal.org/) + Synapse, lNet и т.п. wiki.freepascal.org/Networking/ru

    Плюсы:
    Визуальная RAD IDE,
    компактный бинарник (выставляем необходимые оптимизации. )
    кроссплатформенность,
    очень быстро компилируется
    Ответ написан
    Комментировать
  • Какие язык, компилятор, среда подойдут для разработки небольшого приложения под windows?

    valemak
    @valemak
    Фрилансер
    В сторону AutoIt посмотрите.

    Лёгкий basic-подобный ЯП, как раз для написания небольших утилит под Windows.
    Ответ написан
    Комментировать
  • Что подарить гику, увлекающемуся электроникой?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Осциллограф
    Ответ написан
    Комментировать
  • Книгу по Javascript?

    megamops
    @megamops
    1. Флэнаган, 6-е издание. Самая лучшая и правильная книга. Лидирует с огромным отрывом от всех остальных, вместе взятых. На русском пока не было и неизвестно, будет ли вообще: издательство «Символ», которое собиралось её выпускать, накрывается медным тазом.

    2. Крокфорд, бывает по-русски в сносном переводе.

    3. По желанию — Стефанов.

    4. Книга Резига лично мне не понравилась; по-моему, автор дудит в какую-то свою дуду и извращает высокие идеалы истинного JavaScript. Впрочем, это моё субъективное впечатление.

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

    А если кто-нибудь вам советует книги русских авторов — не водитесь больше с этими людьми, а то заразитесь от них и умрёте (как специалист) в страшных профессиональных мучениях.

    Что касается онлайн-учебников и прочих ресурсов в Интернете — там 5 % пользы и 95 % говна. Их можно читать, только если вы уже умеете сами отличать говно от пользы. Иначе — см. предыдущий абзац.
    Ответ написан
    1 комментарий