proglibrary | Technologies

Telegram-канал proglibrary - Библиотека программиста | программирование, кодинг, разработка

77044

Все самое полезное для программиста в одном канале. Список наших каналов: https://t.me/proglibrary/9197 Учиться у нас: https://proglib.io/w/a32a0d94 Обратная связь: @proglibrary_feedback_bot По рекламе: @proglib_adv Прайс: @proglib_advertising

Subscribe to a channel

Библиотека программиста | программирование, кодинг, разработка

📯Внимание всем отважным героям и искателям приключений!

«Библиотеки Программиста» с гордостью представляет новую захватывающую игру — «Битва с Драконом». Выберите своих персонажей и сразитесь с древним Крылатым Ужасом Бурлопиворогом в эпическом поединке!

Мы предлагаем вам взять под свой контроль хитроумного изобретателя или ловкого вора.

💎Победителей ждет почет, уважение и награда! Итак, кто осмелится бросить вызов Бурлопиворогу? Начните свою «Битву с Драконом»!

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🔂 Наиболее популярные стратегии снижения рисков деплоя или обновления сервисов: наглядная демонстрация от ByteByteGo (Alex Xu)

🔧 Мульти-сервисный деплой: одновременное обновление нескольких сервисов. Просто в реализации, но сложно управлять зависимостями и откатывать изменения.
🔧 Сине-зеленый деплой: подразумевает два одинаковых среды — стейджинг (синяя) и продакшен (зеленая). После тестирования в стейджинге, пользователи переключаются на нее, и она становится продакшеном. Удобна для отката, но может быть «дорогостоящей».
🔧 Канареечный деплой: постепенное обновление сервисов для небольших групп пользователей. Более экономична и легко откатывается, но требует тестирования в продакшене и мониторинга.
🔧 A/B тестирование: разные версии сервисов работают в продакшене для разных групп пользователей. Эффективно для тестирования новых функций, но требует контроля, чтобы избежать случайного деплоя функций.

#вопросы_с_собесов

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

📚 Напоминаем про наш полный курс «Самоучитель по Python для начинающих»

Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!

🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля — книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП — инкапсуляция и наследование
🐍 Часть 19: Основы ООП — абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Напоминаем про два новых канала для Python-разработчиков 👨‍🏫

В них мы:
🔸тренируемся на практических задачах
🔸отвечаем на популярные вопросы с собеседований
🔸проверяем свои знания

Подписывайтесь:
👉Библиотека собеса по Python — тут мы готовимся к интервью
👉Библиотека задач по Python — тут решаем задачи, проходим тесты и изучаем код

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

💡Развитие протоколов API в 2023 году: по мотивам статьи Alex Xu в блоге Postman

В PDF-файле — обзорная демонстрация, а в статье вас ждет подробный взгляд на шесть самых популярных протоколов API с акцентом на преимущества и проблемы каждого:

1️⃣ REST
2️⃣ Webhooks
3️⃣ GraphQL
4️⃣ SOAP
5️⃣ WebSocket
6️⃣ gRPC

💬 Какой используется в вашем проекте? Делитесь в комментариях мыслями по данной теме👇

#проектирование_систем

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🤔 Размышления о 18 годах работы в Google

Google давно ушла от своей миссии «Упорядочить мировую информацию и сделать ее универсально доступной и полезной» к погоне за краткосрочными колебаниями курса акций.

Почему так произошло и можно ли это исправить? Читайте перевод статьи-откровения Ian Hickson, который проработал в Google 18 лет.

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Pattern Guru - канал по паттернам программирования.

Знаешь как работает Singleton?

Используешь шаблон Fabrica?

Можешь сам написать Decorator?

Понимаешь что такое Best Practices?

Всё это и не только мы разбираем у нас в канале.

Подписывайся: @highloadmicro

Реклама. Киренкина Марина Дмитриевна, ИНН 345702417736. Erid 2VtzqvSLi6D

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🔂 4 наиболее часто используемых типов очередей на одной диаграмме: наглядная иллюстрация от ByteByteGo (Alex Xu)

1️⃣Простая очередь FIFO. Следует принципу First In First Out — первым пришел, первым ушел. Все новые элементы добавляются в конец очереди. Когда элемент удаляется из очереди, удаляется элемент, который находится в начале очереди, то есть добавленный первым.

💡Применение: отправка уведомления по электронной почте пользователям каждый раз, когда получаем ответ о платеже. Письма будут отправляться в том же порядке, в котором поступили ответы о платежах.

2️⃣Круговая очередь или кольцевой буфер. Ее последний элемент связан с первым элементом. Вставка происходит в начале очереди, а удаление — в конце.

💡Применение: управление аудиоданными в реальном времени, где кольцевой буфер может использоваться для временного хранения аудиоданных перед их обработкой. 

3️⃣Очередь с приоритетами. Каждый элемент имеет определенный приоритет, и элементы обрабатываются в порядке их приоритета, а не в порядке их добавления.

💡Применение: система управления задачами в компании. Задачи могут иметь различный уровень срочности, и мы хотим, чтобы более срочные задачи обрабатывались в первую очередь.

4️⃣ Двухсторонняя очередь. Вставка и удаление могут происходить как в начале, так и в конце очереди. Двухсторонняя очередь поддерживает как FIFO, так и LIFO (Last In First Out — последним пришел, первым ушел), поэтому мы можем использовать ее для реализации структуры данных стека.

💡Применение: навигация в веб-браузере. Пользователь переходит по различным веб-страницам, и браузер должен запоминать историю этих переходов, чтобы пользователь мог вернуться на предыдущие страницы или перейти обратно вперед.

#вопросы_с_собесов

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🛠 Обзор GitHub на некоторые из наиболее интересных функций и изменений Git (обзор от OpenNET)

▫️В команду git repack добавлены опции "--filter" и "--filter-to", позволяющие выполнить переупаковку репозитория c учётом заданного фильтра объектов, и при необходимости перенести в отдельное место объекты, не удовлетворяющие заданному фильтру.

▫️Например для оставления в репозитории блобов, размером менее 1 МБ, и выносом в отдельный репозиторий остальных крупных объектов, можно выполнить:

$ git init --bare ../backup.git
$ git repack -ad --filter='blob:limit=1m' \
--filter-to=../backup.git/objects/pack/pack


▫️Инициализация репозитория при помощи частичного клонирования позволяет работать с неполной копией репозитория, корректно обрабатывая обращения к отсутствующим объектам (при обращении к отсутствующим объектам, они на лету будут загружаться по мере необходимости).

$ git clone --filter=tree:0 git@github.com:git/git.git


▫️Добавлена возможность работы (git repack --max-cruft-size) с несколькими pack-файлами с информацией о недостижимых объектах (cruft packs), на которые в репозитории отсутствуют ссылки (не ссылаются ветки или теги).

▫️Добавлено распознавание попыток выполнения двойной отмены коммита через git revert и учёт этого факта при формировании сообщения об отмене

$ git revert --no-edit HEAD >/dev/null
$ git revert --no-edit HEAD >/dev/null
$ git log --oneline
a300922 (HEAD -> main) Reapply "fix bug"
0050730 Revert "fix bug"
b290810 fix bug


▫️Разрешено совместное использование опций "--rfc" и "--subject-prefix". Например, для формирования письма с префиксом "[RFC PATCH bpf-next]" в теме сообщения можно указать:

$ git format-patch --subject-prefix="PATCH bpf-next" --rfc


▫️В команде git log разрешено указание заполнителя "%(decorate)" для показа имён связанных веток при определении формата при помощи опции "--format", например:

$ git log --format='%cr%(decorate) (%h) %s'


#новости #инструменты

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

📌 То, что зацепило на это неделе:

🤯 Как сооснователя Сэма Альтмана уволили с поста СЕО, а затем вернули обратно: разбор истории.
🤩 Dota 2 стала образовательной дисциплиной по стратегии в Филиппинском университете.
🤩 DALL-E 3 заработала в Paint для всех пользователей Windows 11.

🔸 Опубликован выпуск IDE Qt Creator 12.0, предназначенной для создания кроссплатформенных приложений с использованием Qt.
🔸 Представлен релиз PHP 8.3. Новая ветка включает ряд новых возможностей, а также несколько изменений, нарушающих совместимость.
🔸 Доступен выпуск Git 2.43. О новых фичах на русском читайте здесь.
🔸 Состоялся релиз Firefox 120. Новый выпуск поддерживает операцию Copy Link Without Site Tracking, позволяющую скопировать URL выбранной ссылки, предварительно вырезав из него опции, которые используются для отслеживания переходов. Читайте подробнее об этой и многих других фичах на русском.
🔸 В репозитории PyPI выявлено около 5000 оставленных в коде секретов и 8 вредоносных обфускаторов.

#чтопроисходит

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🤩 Ребята из Honeypot продолжают снимать замечательные доки про языки программирования, популярные технологии, библиотеки и инструменты. Из последнего — Ruby on Rails.

Ruby on Rails (Rails) — один из самых обсуждаемых полнофункциональных фреймворков, который за 20 лет превратился из «сумасшедшей идеи» в ключевой инструмент в мире веб-разработки. Основатель Rails, датский программист Давид Хейнемейер Ханссон, известный как DHH, является одной из самых спорных и влиятельных фигур в сообществе. Он рассказывает о том, как Rails развивался и менялся.

Вас ждут интервью с ключевыми фигурами Rails, которые делятся историей языка и фреймворка, страстью, противостоянием и зрелостью, наступившей после выпуска Rails 3.0.

📌 Другие доки:
📺 React.js
📺 Prometheus
📺 Kubernetes: часть 1 & часть 2
📺 Vue.js
📺 GraphQL
📺 Elixir
📺 Ember.js

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

👁Помогите «Библиотеке программиста» лучше узнать свою аудиторию

Друзья, мы хотим делать для вас самый лучший контент — и для этого нам нужно узнать вас получше.

Пожалуйста, ответьте на несколько вопросов — это не займет у вас много времени, но поможет нам делать более полезные и интересные посты!

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🤷‍♂️ «Питомцы vs Скот»: 99% вашей работы в итоге выбросят, но это и сделает вас профи

Раньше в DevOps, когда каждый сервер был уникален и имел свое имя (как домашний питомец), админы уделяли много внимания каждому серверу. Если сервер падал, его восстанавливали (лечили больного питомца).

Современный подход к серверам больше похож на управление стадом скота: если один сервер выходит из строя, его заменяют новым. Это стало возможным благодаря развитию облачных технологий.

Может разработчикам тоже стоит изменить свое отношение к коду и проектам? Вместо того чтобы относиться к каждой строке кода, как к домашнему питомцу (с бесконечными рефакторингами и заботой), нужно принять, что большая часть кода со временем станет ненужной и будет заменена.

Это поможет избежать выгорания, ведь ты осознаешь, что твоя работа — это решение текущих задач бизнеса.

И хоть с 99-ю процентами автор загнул (хотя кто знает) , это весьма любопытная аналогия. https://sider.ai/lp/linkReader?source=lr&p1=vision&p2=lp

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🛠 Как проектировать REST API: полезные советы для разработчика

1. Используйте существительные во множественном числе для обозначения коллекций.

# Хорошо
GET /products
GET /products/{product_id}

# Плохо
GET /product/{product_id}


2. Не добавляйте ненужные пути в структуру URL-адресов.

# Хорошо
GET /v3/application/listings/{listing_id}

# Плохо
PATCH /v3/application/shops/{shop_id}/listings/{listing_id}


3. Не добавляйте .json или другие расширения к URL-адресу.

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

# Хорошо
GET /things returns:
{ "data": [{ ...thing1...}, { ...thing2...}] }

# Плохо
GET /things returns:
[{ ...thing1...}, { ...thing2...}]


5. Не возвращайте структуры map. Вместо этого используйте массивы объектов, чтобы избежать проблем при работе с типизированными языками и не усложнять обработку данных.

# Хорошо
GET /things returns:
{
"data": [
{ "id": "KEY3", "foo": "bat" }
]
}

# Плохо
GET /things returns:
{
"KEY3": { "id": "KEY3", "foo": "bat" }
}


6. Используйте строки для всех идентификаторов.

# Хорошо
{ "id": "123" }

# Плохо
{ "id": 123 }


7. Добавляйте префиксы к идентификаторам. Это улучшает читаемость API и помогает различать разные типы идентификаторов.

8. Не используйте 404 для обозначения "not found". Вместо этого рекомендуется использовать другие коды ошибок, чтобы точно указать на отсутствие ресурса.

9. Будьте последовательными. Несоответствие в схемах и структурах может вызвать путаницу и усложнить работу с API.

10. Используйте структурированный формат ошибок. Это облегчает отладку и обработку ошибок на разных уровнях системы.

11. Обеспечьте механизмы идемпотентности. Это важно для предотвращения дублирования операций в условиях нестабильной сети.

12. Используйте строки ISO8601 для временных меток. Строковое представление времени более читаемо и удобно для работы.

👉 Подробнее

#проектирование_систем

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🔤 Азбука SQL в примерах. Часть 1. Создаем базу данных и первую таблицу

С помощью этого короткого руководства в трех частях вы создадите базу данных, добавите в неё записи, а затем выполните несколько запросов для их обработки. В первой части мы узнаем, что скрывается за тремя буквами SQL и начнем двигаться к поставленной цели.

🔗 Читать статью
🔗 Зеркало

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

📰❌ 10 признаков фейковой вакансии

Как понять, что с вакансией что-то не так? Разбираемся в этой статье!

Читать статью

#почитать

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

⚛️ 45 вопросов для подготовки к собеседованию по React

Чтобы успешно пройти собеседование на позицию React-разработчика, важно хорошо понимать основные концепции, принципы и смежные технологии этой библиотеки.

В статье невозможно охватить все вопросы, которые могут задать на собеседовании, однако мы рассмотрим ответы на наиболее распространенные из них.

🔗 Читать статью
🔗 Зеркало

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

👨‍🎨 Искусство промтинга: введение в Midjourney

📝 Сейчас мало просто уметь писать правильные промты, но важно также знать некоторые хитрости каждого ИИ-помощника. Markus Wallén из 14islands подготовил подробное руководство по Midjourney, в котором рассказал, как начать работу и как создать идеальный промт, чтобы максимально использовать возможности нейросети.

🧰 В статье он разобрал структуру промтов и их атрибуты, а также показал примеры сгенерированных картинок. Прочитав статью, вы научитесь контролировать стилизацию или реализм изображения, а также соотношение сторон, разнообразие генерируемых композиций и многое другое.

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🤔 Уже лет 50, со времен выхода первого издания «Языка программирования Си» Кернигана и Ритчи, известно, что «числа с плавающей запятой» одинарной точности имеют размер 32 бита, а числа двойной точности — 64 бита. Существуют ещё и 80-битные числа расширенной точности типа «long double».

🧰 Эти типы данных покрывали почти все нужды обработки вещественных чисел. Но в последние несколько лет, с наступлением эпохи больших нейросетевых моделей, у разработчиков появилась потребность в типах данных, которые не «больше», а «меньше» существующих, потребность в том, чтобы как можно сильнее «сжать» типы данных, представляющие числа с плавающей запятой.

👨‍💻 Лучший способ разобраться в деталях — самостоятельно поработать с такими числами. Автор исследует самые популярные форматы чисел с плавающей запятой, создает с использованием некоторых из них простую нейронную сеть и наблюдает за тем, как она работает.

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Подборка лучших статей «Библиотеки программиста» за ноябрь: сохраняй в заметки, чтобы не пропустить #самыйсок

🗺️ Дорожная карта Go-разработчика в 2023 году
🧑‍💻 6 карьерных советов программисту
⚖️ 25 курсов, книг и подкастов для развития критического мышления
🐍🎨 Генерация красивых QR-кодов с помощью Python
🔈16+ лучших нейронок для синтеза речи
FAQ по трудоустройству: разбираем самые популярные вопросы
👨‍💻 7 типов «сложных» разработчиков
Дорожная карта DevOps-инженера в 2023 году
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
👀 6 способов привлечь внимание работодателя
🤖📜 Искусственный интеллект: краткая история
🔤 Азбука SQL в примерах (часть 1 + часть 2)
🔢 Как научиться решать сложные задачи
🏆 Самые популярные языки программирования 2023
📰❌ 10 признаков фейковой вакансии
🏃 Самоучитель по Go для начинающих (часть 1 + часть 2)
⚛️ 45 вопросов для подготовки к собеседованию по React
🐍 5 задач для подготовки к собеседованию по Python
🐍🤖✍️ Документирование кода и проектов на Python с помощью ChatGPT

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🏆 Самые популярные языки программирования 2023

Популярность ЯП зависит от нескольких факторов. Мы разобрались с ними, составили сводный рейтинг и обсудили особенности, преимущества, недостатки и причины популярности каждого языка. Заходите и читайте👇

🔗 Читать статью
🔗 Зеркало

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🧠Полезные каналы по Data Science

Напоминаем про наши каналы по Data Science, в которых мы готовимся к собеседованиям проверяем себя на практических задачках — специально для специалистов по Data Science и тех, кто хочет ими стать👨‍🏫

Подписывайтесь:
👉Библиотека собеса по Data Science — тут мы готовимся к интервью
👉Библиотека задач по Data Science — тут решаем задачи, проходим тесты и изучаем код

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

Чёрная Пятница в Практикуме заканчивается 30 ноября. Выберите любой курс до 30.11 и учитесь на 20% дешевле. На курсах вас будут ждать:

— YandexGPT, который объяснит всё в любое время дня и ночи;
— интерактивный учебник, собранный на основе реальных задач специальности;
— команда сопровождения, которая поможет, подбодрит и увлечёт.

Чёрная Пятница в Практикуме — время карьерных перспектив!

→ Выбрать курс

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

👨‍🏫Полезные каналы по Go

Напоминаем, что «Библиотека программиста» запустила два канала специально для Go-разработчиков и тех, кто хочет ими стать.

Подписывайтесь:
👉Библиотека собеса по Go — тут мы готовимся к интервью
👉Библиотека задач по Go — тут решаем задачи, проходим тесты и изучаем код

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

❗️Мы запускаем серию исследований — и вы можете нам в этом помочь!

«Библиотека программиста» выпустит несколько статей, в которых мы проведем полноценные исследования.

Помогите нам выбрать интересные темы: может быть, вы давно хотели узнать, как изменилась зарплата у тех, кто релоцировался? Или гадаете, сколько лет нужно, чтобы стать миддлом?

Присылайте интересующие вас темы в комментарии — интересные мы возьмем в работу и поделимся с вами результатами 💙

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🥷Это путь воина

Напоминаем, что «Библиотека программиста» запустила два новых канала специально для специалистов по C++ и тех, кто хочет ими стать👨‍🏫

Подписывайтесь:
👉Библиотека собеса по C++ — тут мы готовимся к интервью
👉Библиотека задач по C++ — тут решаем задачи, проходим тесты и изучаем код

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🤖 «Генеративный ИИ для начинающих» — новый курс от Microsoft, который включает 12 уроков от Microsoft Cloud Advocates. Каждый урок охватывает ключевые аспекты принципов генеративного ИИ и разработки приложений и включает:

☑️ Видеообзор темы
☑️ Текстовая лекция
☑️ Jupyter Notebook с примерами кода
☑️ Задание для самостоятельной работы
☑️ Ссылки на полезные ресурсы

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🤖 Напоминаем, что у нас есть еженедельная email-рассылка, посвященная последним новостям и тенденциям в мире искусственного интеллекта.

В ней:
● Новости о прорывных исследованиях в области машинного обучения и нейросетей
● Материалы о применении ИИ в разных сферах
● Статьи об этических аспектах развития технологий
● Подборки лучших онлайн-курсов и лекций по машинному обучению
● Обзоры инструментов и библиотек для разработки нейронных сетей
● Ссылки на репозитории с открытым исходным кодом ИИ-проектов
● Фильмы, сериалы и книги

👉Подписаться👈

Читать полностью…

Библиотека программиста | программирование, кодинг, разработка

🤔 Переосмысление привычных нам уровней разработчиков (junior, middle, senior)

Автор делится видением уровней разработчиков, в которых главный критерий разделения — способность решать проблемы. По его классификации 2-й и 4-й уровни дают предсказуемый результат эффективным способом, отличается только сложность решаемой проблемы:

1️⃣ Простое решение проблем случайным образом
2️⃣ Простое решение простых проблем
3️⃣ Решение сложных проблем случайным образом
4️⃣ Простое решение сложных проблем

По сравнению с классическим набором уровней эти уровни:

☑️ Более прозрачны
☑️ Измеримы
☑️ Соотносятся с опытом
☑️ Соответствуют ожиданиям

👉 Подробнее о каждом уровне с примерами читайте в статье

Читать полностью…
Subscribe to a channel