• Verilog - в чем отличия?

    @ont0shko
    Отличия языков в уровнях абстракции.

    verilogvhdl1.gif

    На уровне вентилей Verilog имеет все из коробки, язык от туда и начинался, в то время как для VHDL была разработана VITAL. В результате они сравнились по возможностям.

    С описанием алгоритмов и поведенческих моделей, они справляются оба, тут дело вкуса и действительно наличия лицензии. Verilog зачастую идет как основной язык, в то время VHDL - опция. Куча софта на входе желают видеть Verilog или производные из него. В плане FOSS решений есть icarus verilog и GHDL, однако последний вроде как встал.

    Уровень системы, тут конечно VHDL вырывается в перед. Аля Паскаль( и его родители ) система пользовательских типов, все из коробки, ребята давайте тип сделаем фукнции к нему напишем, операторы определим, лучше день потерять потом за пять минут до лететь. Куда там C-подобному Verilog'у без структур данных, тяжко. Однако SystemVerilog такое С++ из мира Verilog. Вот вам Typedef, Enum, Union, Struct, Class. Правда SV - это другой язык и к нему опять нужна лицензия.

    Я начинал с VHDL, он такой строгий и прям в строгости держит, сейчас перебираюсь на Verilog, SystemVerilog.
    Ответ написан
    1 комментарий
  • Создание класса, как он работает?

    | - это операция побитовое ИЛИ
    4 | 5 | 6 == 7 все верно
    4 = 100
    5 = 101
    6 = 110
    ==> 111 = 7

    То есть вы создаете объект "c" класса SomeClass, в который передается результат этой операции.
    Ответ написан
    Комментировать
  • Что можно реализовать на Arduino?

    a_volkov1987
    @a_volkov1987
    Инженер-схемотехник
    У вас есть 32-0.5кб на код, 2кб оперативки и 1кб энергонезависимой памяти.
    Сколько кода у вас влезет - сложно сказать, все зависит от того, на чем и как вы будете писать программу.
    Можете отказаться от бутлоадера и программирования на wiring и перейти на чистый си с разработкой кода в Keil, например. Это будет более правильно. Правда потребуется внешний программатор, но это не проблема - можно собрать, можно купить.
    Ответ написан
    Комментировать
  • Восстановление роутера после сбоя при обновлении, есть шанс?

    @makyo
    Здравствуйте, однажды мой маршрутизатор под прошивкой OpenWRT превратился в кирпич. Я разобрал его, подключился через UART с помощью Raspberry PI, можно и просто через переходник UART, как удобней. Ну в общем через терминал и восстановил.

    ИМХО: найдите UART на плате, посмотрите что пишет при загрузке; есть 3.3V и 5V напряжение, чаще первое

    Вот ссылка reverse engineering serial ports в помощь, удачи

    P. S. UART на TP-LINK TL-MR3020
    04e2fe5c85cf4f8b9f1631a3e52737ba.jpg
    Ответ написан
    1 комментарий
  • Сеть для домашнего облачного датацентра - инет от нескольких 100Мбит/с -1Гбит/с каналов от разных провайдеров с агрегацией каналов и резервированием?

    @sergrok
    Правильный, но малореалистичный сценарий:
    1) регистрируем себе автономную систему (AS) и /24 сетку PI-адресов.
    2) ставим роутер типа Cisco ASR 1k с линейной карточкой на несколько портов (для аплинков провайдеров). Или вместо карточки свитч типа catalyst 3850
    3) на ASR настраиваем BGP-пиринг с каждым провайдером

    Как я понимаю задача сводится к раздаче видеоконтента. Можно рассмотреть более простой вариант с DNS round robin на PA-адресах провайдеров.
    Ответ написан
    8 комментариев
  • Какие книги есть для не начинающего питониста?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    в Питоне же специализации есть какие-никакие
    проще всего - найдите ресурс, откуда скачиваете эти по списку и пройдитесь по содержанию интересно-неитересно

    "для всех" можно порекомендовать
    978-5-97060-384-0-new_270_369__100.jpg
    см. на английском содержание, выходит 15 января
    и, возможно,
    IntrotoProgrammingInPython.jpg ( не могу найти развернутое содержание, но тоже выходит летом на русском)

    полезно тематически:
    scraping
    multiprocessing
    и паттерны
    раз, два
    ну и по сетям, думаю, тоже всем нужно, вот неплохая
    51A3TTw0qUL._SX404_BO1,204,203,200_.jpg

    в тех же темах, где Питон применяют типа NumPy, Scikit-Learning или NTLK - книг еще больше, но там прокачка будет посложнее

    по Django - Flask книг тоже полно, по Pyramid поменьше, но тоже есть
    Ответ написан
    Комментировать
  • Как бороться с Ddos атаками на VDS?

    opium
    @opium
    Просто люблю качественно работать
    судя по всему говно атака школьного уровня
    оптимизируйте сайт чтобы он мог держать такой онлайн
    Ответ написан
    Комментировать
  • Как средствами С++ находить и нажимать кнопку на веб странице?

    JPascal
    @JPascal
    В прошлом систем администратор, сейчас программист
    Посмотри в сторону Selenium для C++.
    Вот репка, в ней по ходу есть все что нужно.
    https://github.com/digination/cpp-webdriver
    Ответ написан
    Комментировать
  • Как бороться с Ddos атаками на VDS?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    Эффективно - никак. От серьёзного ddos-а защититься на vds не получится (да и хостер раньше вырубит).

    От школьников можно отбиваться при помощи набора правил к fail2ban или любым другим эмпирическим способом во время атаки.
    Ответ написан
    Комментировать
  • Почему Python multiprocessing нестабилен?

    @nirvimel
    Хорошо, что вы указали в тегах Windows, это все объясняет. Под Windows нет простого способа "раздвоиться" процессу при вызове multiprocessing.Process, поэтому осуществляется очень сложная эмуляция этого поведения. При этом функция target выдирается из модуля, запускается в отдельном интерпретаторе, а все параметры сереализуются передаются и десереализуются перед вызовом target, при этом инициализация модуля в новом интерпретаторе выполняется частично (инициализируется только глобальный контекс). Подробнее об этом, например, тут, есть еще одна очень хорошая статья где подробно рассмотрен этот механизм, но сейчас не найду ссылку.

    Коротко о том, как готовить multiprocessing под Windows:
    1. Разделять процессы (вызов multiprocessing.Process()) как можно раньше в коде.
    2. По возможности избегать инициализации любых ресурсов и глобальных переменных до разделения. Учитывайте, что этот код выполняется во всех процессах независимо и может давать кучу сторонних эффектов.
    3. Не передавать через args никаких сложных объектов с "поведением" (кроме объектов из самого multiprocessing, он сам знает как их правильно передавать), только голые данные (примитивы или объекты состоящие только из примитивов), которые сериализуются без сторонних эффектов.
    4. Создавать дочерние процессы один раз, и на протяжении всего времени работать с ними посредством обмена сообщениями через Pipe/Queue. Не порождать новые процессы в цикле вычислений в момент "когда понадобятся".
    5. Queue при попытке записи/чтения может блокировать процесс, если при этом происходит запись/чтения в/из нее в другом процессе. (Думаю, именно это и происходит в коде в вопросе).
    6. Лучше использовать Pipe, который в худшем случае блокирует один процесс, а не все, как Queue.
    7. При создании процесса можно передавать ему два Pipe (input одного + output другого), в вызывающем процессе хранить соответствующие им коннекторы и только при помощи их общаться с дочерним процессом.
    8. Можно не делать process.join(), а просто читать результаты из output Pipe, они прочтутся только после того как попадут туда, что дальше будет происходить с процессом уже не важно (можно поставить return после записи в Pipe в дочернем процессе).
    Ответ написан
    4 комментария
  • Как организовать длинную WiFi сеть под землей?

    Jump
    @Jump
    Системный администратор со стажем.
    Все делается очень просто.
    Во первых никаких репитеров!
    Берется нужное количество WiFi точек доступа (роутеров) они размещаются равномерно по длине тоннеля.
    Соединяются они обязательно по проводу. в одну сеть, на всех кроме одной отключен DHCP.
    Настройки у всех одинаковые - SSID, пароль, метод аутентификации.
    Это можно сделать с любыми даже самыми бюджетными точками.
    Ответ написан
    2 комментария
  • Как правильно печатать unicode символы в файл на питоне?

    @nirvimel
    with open(path, 'w+') as f:
          f.write(json.dumps(data, indent=2, ensure_ascii=False).encode('utf-8'))
    Ответ написан
    2 комментария
  • Как правильно печатать unicode символы в файл на питоне?

    GavriKos
    @GavriKos
    Попробуйте так:
    def SaveJson(filename, value):
        outfile = codecs.open(filename, 'w', "utf-8")
        str = json.dumps(value, ensure_ascii=False, indent=4)
        outfile.write(str)
        outfile.close()


    Во втором питоне работает.
    Ответ написан
    Комментировать
  • Понятие процессора в параллельном программировании?

    @vilgeforce
    Раздолбай и программист
    Есть package, если я не путаю термин. Это - физическая хреновина, которая втыкается в плату. Именно ее вы называете "процессором" в вопросе. В package может быть много вычислительных ядер, 2,4,8,16 и так далее. И параллельно работают именно ядра: каждое ядро независимо от другого в тот же момент может выполнять свою часть задачи.
    Ответ написан
    Комментировать
  • Толковая книга по unix и сетям?

    Olej
    @Olej
    инженер, программист, преподаватель
    При чём здесь вообще Макконел?
    По ссылке:
    1000401777.jpg
    Книги Стивенса (все!) - это лучшее, что есть по сетевому программированию и программированию UNIX вообще. Написано до 1999 года, но позже ничего лучшего написано не было.
    Ответ написан
    4 комментария
  • Как на основе расстояния Левенштейна вывести промежуточные слова?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Достаточно для каждого элемента массива запоминать последовательность действий - "как мы сюда попали". Например, в виде строки с 4 командами - "вставили символ X", "удалили символ X", "заменили X на Y" (X и Y могут совпадать).
    Если вторая строчка была "ABCD", то массив, соответствующий начальному состоянию D2, будет выглядеть так:
    {"","iA","iAiB","iAiBiC","iAiBiCiD"} - это команды, переводящие пустую строку в различные начальные подстроки этой второй строки.
    По мере пересчёта массивов строки будут удлиняться, и в итоге мы получим некоторую строку с командами, переводящими строку1 в строку2. Например, для перевода ASTRA в STARKA это может быть "dArSSrTTiArRRiKrAA".
    Дальше можно выполнить несколько первых команд и игнорировать остальные. Увеличивая число выполненных команд, получим промежуточные строки: ASTRA, STRA, STARA, STARKA
    Ответ написан
    Комментировать
  • Картинка из картинок.Как сделать??

    @Mercury13
    Программист на «си с крестами» и не только
    Простейший вариант…
    1. Для каждой малой картинки выбрать «средний» цвет.
    2. Уменьшить исходное изображение до M×N px, и в каждый пиксель вместо сплошного цвета подставить ту картинку, которая больше всего подходит по цвету.

    Алгоритм можно совершенствовать — например, подставлять одну из 10 наиболее подходящих, а если в радиусе, скажем, 30 единиц есть куда больше 10 картинок — брать их все. А можно ещё использовать метод коррекции ошибок Флойда-Стейнберга (наиболее удачный метод при переводе картинок в N цветов)
    Ответ написан
    3 комментария
  • Python 3.4 как закодировать строку в UCS2?

    @zedxxx
    >>> import binascii
    >>> binascii.hexlify('Привет!!!'.decode('cp866').encode('utf-16-be'))
    '041f04400438043204350442002100210021'
    >>>
    Ответ написан
    5 комментариев