Я бы посоветовал прочитать любую из книг, дающих начальные знания, необходимые для того, что бы начать писать (синтаксис, сахар и т.п.). А затем начать реализовывать небольшие реальные задачи из жизни. В начале это будет медленно и коряво с огромными мучениями, но уже через пару недель все станет на много лучше.
Не зацикливайтесь на advanced главах книг, если что-то в них не понимаете. Всё что пишут функторами/монадами/стрелками и т.п., всё тоже самое можно написать и без них. Если вы не понимаете монады, то это не потому, что монады -- это сложно, а потому, что у вас, скорее всего, не достаточно опыта в функциональном программировании и вы еще не достаточно адаптировались. Монады -- это просто, это даже очень просто, вы их не понимаете не потому что тупой, а потому что у вас не достаточно базовых знаний/навыков/опыта. Это как пытаться объяснять теорему Пифагора ребенку, который не знает что такое умножение.
Еще есть книга на викибукс: https://upload.wikimedia.org/wikipedia/commons/2/2... Книга подкупает тем, что каждая глава, посвященная той или иной концепции, начинается с пары абзацев, где честно и просто рассказывают о концепции как она есть на самом деле, и только затем начинают размазывать и разжевывать, иногда забредая очень далеко от сути.
Глава об оптимизации устарела, в том смысле, что так как там описано тоже можно, но c ghc 7.8 большинство источников проблем с GC всплывает уже при беглом просмотре дампа ghc -ddump-simpl.
Тема ByteString Lazy <-> Strict не раскрыта почти, а взаимодействие внутри этой связки решает большинство затруднений, возникающих у начинающих писать программы для жизни. Ни слова о монадах Binary и Serialize, которые позволяют в программе быстро уйти от всей грязи реальной жизни и начать кодировать логику в чистом стиле.
Ну и рассказов о ленивости и слабых на голову данных не может быть мало. Я понимаю, что говорить не о чем, два абзаца и все сказано, но для программистов с императивным прошлом (для них написана книга?) -- это один из камней преткновения, который мешает дальнейшему продвижению в реальный мир.
В остальном же замечательная книга, показывающая направления дальнейшего движения.
Тоже думал об этой проблеме. Руки не дошли реализовать, но мысли были попытаться обмануть браузер и пользователя, подсунув им "статичный" файл. То есть, допустим, принимаем тот же ts-поток от камеры getstream'ом или ffmpeg'ом, транскодируем его в WebM-формат налету и пишем все в пайп файловой системы/unix-сокет или т.п. Трансляция сама в виде тега видео со ссылкой на webm-файл. Web-сервер при запросе файла отдает, то что сейчас транскодер пишет в локальный пайп/сокет. Размер файла в заголовке ответа указывается на пару дней вперед (битрейт потока примерно известен), так же добавляем "не кешировать" в заголовок, браузер по мере получения файла начинает его играть.
Получается что браузер играет, как он думает, статичный файл, пользователь думает, что смотрит онлайн трансляцию. Через пару дней, браузер выедает всю оперативную память. Вопрос найдется ли зритель, который будет смотреть 2 дня трансляцию не закрывая браузер. Но для таких можно и javascript'ом раз в 4-6 часов делать "перезапрос" файла с сервера.
Если говорить о базовом ПО, на котором все это будет работать, то для принятия и транскодирования потоков от источников -- ffmpeg, для отдачи веб-клиентам -- nginx и его mod_rtmp (так кажется называется). Надо будет немного кода написать, но возможно есть уже готовые сборки, но и их все равно надо будет допиливать. Ключ для гугла: ffmpeg, nginx, rtmp. Если хочется чистый http клиентам отдавать, то у ffmpeg'а есть ffserver, который может по http отдавать получаемые потоки, авторизацию к нему можно прикрутить через авторизацию на акселерирующем прокси, тем же nginx.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Не зацикливайтесь на advanced главах книг, если что-то в них не понимаете. Всё что пишут функторами/монадами/стрелками и т.п., всё тоже самое можно написать и без них. Если вы не понимаете монады, то это не потому, что монады -- это сложно, а потому, что у вас, скорее всего, не достаточно опыта в функциональном программировании и вы еще не достаточно адаптировались. Монады -- это просто, это даже очень просто, вы их не понимаете не потому что тупой, а потому что у вас не достаточно базовых знаний/навыков/опыта. Это как пытаться объяснять теорему Пифагора ребенку, который не знает что такое умножение.
Еще есть книга на викибукс: https://upload.wikimedia.org/wikipedia/commons/2/2... Книга подкупает тем, что каждая глава, посвященная той или иной концепции, начинается с пары абзацев, где честно и просто рассказывают о концепции как она есть на самом деле, и только затем начинают размазывать и разжевывать, иногда забредая очень далеко от сути.