• Лисп или хаскел?

    @ZloyEngineer
    Сначала Lisp для погружения в ФП, желательно не оригинальный, а какой-нибудь из его диалектов, например, Scheme как, на мой взгляд, наиболее академичный. Потом Haskell для получения практических навыков.

    Господам же, рассуждающим о непрактичности Хаскеля, могу посоветовать отказаться от образа мышления "если я что-то не умею, то это сделать нельзя в принципе". Хаскель имеет свое практическое применение в реальной жизни не менее, чем, например, Python. Единственная проблема -- это достаточно высокий порог входа в язык. Высокий для канадского лесоруба, решившего закончить недельные курсы и стать высокооплачиваемым программистом. Что же касается программистов среднего уровня или чуть ниже, то для них Хаскель дает возможность писать быстрые, устойчивые программы, тратя существенно меньше времени, чем на той же Java. Я говорю о реальных программах, а не о задачках с олимпиад о раскладывании монеток по кучкам, о программах в 200+ строк на Хаскеле, что в переводе на С++/Java 2000+ строк.
    Ответ написан
    Комментировать
  • Как ограничить обращения с ip?

    @ZloyEngineer
    Можно, модуль recent.
    Ответ написан
    Комментировать
  • Почему на больших mkv присутствует "рябь"?

    @ZloyEngineer
    Это откровенный брак транскодирования. А тот кто рипал или не смотрел что делает, или использовал ламповый монитор при контроле результатов транскодирования.

    Размер файла не показатель качества кодирования, например, для HD в кодеке h.264 8-10 Гб для полноценного фильма -- нормально, а если зажать видео в mpeg2, то 8-10 Гб -- очень мало, как раз такие кляксы вылезают, либо москитная сетка, зависит от настроек используемых при кодировании denoise фильтров.

    Есть еще вариант: фильм в оригинале SD не лучшего качества, его попытались перекодировать в HD. Тут какой кодек не используй, какие фильтры ни используй -- плохое SD ни как не станет HD.
    Ответ написан
    Комментировать
  • Существует ли возможность применить AGC фильтр для звука при воспроизведении видео под linux?

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

    Тем ни менее, более-менее поджать совсем уж граничащий с браком динамический диапазон и нормализовать звук можно, например, с помощью dynaudnorm фильтра для ffmpeg'a. Некоторые "задумки" режиссера потеряются, но как я понял у вас как раз и проблемы с этими задумками и вы хотите от них избавиться.
    Ответ написан
    Комментировать
  • Копируется ли состояние при каждой операции над монадой состояния в Haskell?

    @ZloyEngineer
    Пример, что вы привели на питоне -- это stack, а не state.

    Монада State не предоставляет функциональности стека, она лишь предоставляет возможность хранения некой переменной. С точки зрения человека с головой набитой императивными тараканами это выглядит как полное копирование. Тем ни менее это не так и все зависит от программиста, нужно ли ему таскать за собой весь список или нет решает сам программист.

    Например, stack-пример, приведенный выше можно реализовать (используя классическую императивную реализацию) с помощью State монады так:

    import Control.Monad.State
    
    pop :: State [a] a
    pop = do
      h <- head <$> get
      modify tail
      return h
    
    push :: a -> State [a] ()
    push = modify . (:)
    
    print $ runState (mapM_ push [1 :: Int ,2,3,4]>>pop) []


    Тем ни менее ленивые вычисления с слабые на голову конструкторы сильно меняют логику выполнения программы, если смотреть с классической императивной позиции.
    Ответ написан
    Комментировать