По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Привет, сегодня расскажем что такое база данных и SQL. У современных баз данных куча нюансов - погнали разбираться. Представь - собираешь ты деньги на подарок корешу, и записываешь на бумажке, кто сколько скинул. Табличка с денежками организована, разделена по именам и сумме долга, и имеет удобную структуру - ну вот оно, это и есть база данных! Ага, теперь, перемещаемся в цифровое пространство и заводим целый эксель файл для этого дела. Стало удобнее, можно редактировать, сортировать и даже данные удалять! Круто! Но достаточно ли этого для роста этой базы данных? Нет. Со временем данных становится так много, что админам приходится связывать их друг с другом, а тут одним эксель файлом уже не обойтись. Представим, решили вы сделать свой аналог ютуба, как будете хранить инфу о пользователях? Список юзеров, там, каналы, кто на что подписан, лайки и вот это все. Сложить это все в одну таблицу? Будет неудобно и медленно работать. Очевидно, надо разделить сущности на несколько таблиц - юзеры, каналы и видосы: Теперь свяжем данные между собой и добавим информацию о том, кто создал канал, и на каком канале залили видео. Ага, получились связанные таблицы. Связанные, от слова связь. А связь, это по-английски relation. А в айти тусовке они так и называются - реляционные базы данных, и это один самых распространенных типов баз данных. Еще есть нереляционные базы данных, о них подробнее можно прочитать в этой статье про NoSQL. Уф, ну теперь с данными стало гораздо удобнее работать, и мы избежали большой таблицы с повторяющимися строчками, разбив все на несколько табличек. Такой процесс еще называется нормализацией, когда мы избавляемся от избыточных данных. Ну и как раз для этого мы ввели в каждой таблице специальное поле - ID, которое идентифицирует каждую запись. Этот айди называется Primary Key, он же “первичный ключ”. А в таблице которая будет на него ссылаться, он будет называться Foreign Key, или по-русски “внешний ключ”. Нырнем в детали и поговорим про типы связей между таблицами. Первый тип называется “Один-ко-многим” или “многие-к-одному” (One-to-Many или Many-to-One). В нашем примере, у каждого видео может быть только один канал, где оно выложено, но на одном канале может быть много видео, поэтому в двух последних строках ID канала у нас повторяется, верно? Отношения «один-ко-многим» также можно рассматривать как отношения «многие-к-одному», в зависимости от того, с какой стороны вы на это смотрите. Второй тип связей называется “один-к-одному” (One-to-One) - классические табличные отношения. Вообще, это редко используемый тип связи, обычно его делают для безопасности. Это как если на нашем аналоге ютуба, мы разрешили бы создавать только один канал одному пользователю и в таблице с каналами ID создателя не могло повторяться. Такое себе, согласен? В таком случае вообще можно было бы обойтись и одной таблицей. Ну и третий тип связей, это “многие ко многим” (Many-to-many). Это когда у нас появляется промежуточная таблица связей, которая как бы соединяет два отношения “один ко многим”, которые мы обсудили в начале разбора типов связей. Давайте сделаем таблицу с лайками балалайками, где будем хранить ID пользователей и ID видео, к которым они поставили лайк: А вот так они связан: каждый пользователь может поставить лайк каждому видео. Теперь вопрос - а где все это хранить? Не в экселе же. И тут на сцену выходит термин СУБД, она же система управления базами данных - это программа, которая позволяет создавать, редактировать и администрировать реляционную базу. Ну и для управления всей этой петрушкой используется язык структурированных запросов, SQL (Structured Query Language) эскюэль или сиквел, как иногда его называют за рубежом. Он очень простой и понятный, вот смотри - чтобы найти названия всех видео с одного канала, нам нужно выполнить следующий запрос: SELECT name FROM videos WHERE channel_id = 201 То есть мы буквально говорим: выбери (SELECT) имена из (FROM) таблицы видео, где (WHERE) айдишник (ID) канала равен 201. Если вы хотите взять данные из нескольких таблиц и объединить результат, то нужно использовать в запрос параметр JOIN (от английского соединить). Вот такая упрощающая жизнь админам аналогия с разговорным языком. Так, SQL конечно позволяет добавлять, удалять и изменять данные и сами таблицы. Но важно не забывать про схему базы данных (Database schema), которая служит для описания структуры таблицы, ее полей и ограничений. Прикол в том, что если вам потребуется добавить или убрать столбец в таблице, то это изменение коснется вообще всех данных в таблице, таким образом если мы добавляем новый столбец, то он теперь будет присутствовать в каждой строке. Окей, а для чего вообще нужны ограничения? Для целостности твоих данных. Помнишь мы рассказали про первичный и внешний ключ? Так вот, благодаря им мы можем удостовериться, что в таблицу не попадет запись, которая ссылается на несуществующий айдишник. Или различные ограничения полей, которые не дадут записать дублирующие или пустые данные в нашу базу (Not NULL и Unique). И еще: транзакции. Эта штука, которая позволяет как бы склеить несколько SQL запросов в один. Ну вот представь такую задачку: вставить данные в первую таблицу, а во второй указать ID вставленной записи. Если ты делаешь это без использования транзакций, а во время второго этапа у тебя отвалится интернет, то первая запись попадет в базу, а вторая нет. Ага, появляется интернет, и ты с улыбкой на лице идешь снова выполнить эти запросы, только на этот раз получишь ошибку, что такая запись уже есть, ибо первая то уже в базе! А в случае использования транзакций, при получении ошибки, мы откатимся до того момента, который был до начала транзакции. А еще все эти радости помогают реляционным БД (базам данных) соответствовать так называемым требованиям ACID, которые нужны для сохранности данных - это очень важно в банковской отрасли, или любой другой, где целостность и сохранность данных супер важны. Давай разберемся с аббревиатурой: Atomicity — атомарность, или же проще говоря, непрерывность: это как раз про транзакции, которые мы обсудили только что. Либо операция выполняется целиком, либо никак. Consistency — согласованность: данные, записываемые в таблицу должны соответствовать всем выставленным правилам и ограничениям, помнишь, мы говорили про первичный и внешний ключи, а также про уникальность? Isolation — изолированность: если вы гоняете тонну транзакций одновременно, они не должны пересекаться и влиять друг на друга. Это очень важно для высоконагруженных баз Durability — надежность: если мы получили подтверждение, что транзакция выполнена, то значит наши данные в сохранности, даже если после этого произошел сбой. Ну и в качестве примеров таких баз данных назовем: Microsoft SQL Server, Oracle Database, MySQL, MariaDB и PostgreSQL.
img
Cisco CUBE (Cisco Unified Border Element) - контролер граничных сессий (SBC) от компании Cisco. В статье мы поговорим о том, как настроить так называемый SIP Forking, который позволяет отправить SIP сигнализацию на несколько устройств сразу. В примере мы покажем, как настроить SIP Forking на CUBE для записи видео – звонков, например, для последующего анализа системой записи. Что мы имеем Интегрированное приложение Cisco Unified Border Element (далее CUBE) является частью программного обеспечения маршрутизатора CISCO2911, параметры которого приведены ниже: Cisco CISCO2911/K9 (revision 1.0) with 483328K/40960K bytes of memory. Processor board ID ABCDEFAAAAA 3 Gigabit Ethernet interfaces 6 Serial interfaces 1 terminal line 2 Channelized E1/PRI ports 1 Virtual Private Network (VPN) Module DRAM configuration is 64 bits wide with parity enabled. 255K bytes of non-volatile configuration memory. 32K bytes of USB token usbtoken0 (Read/Write) 255744K bytes of ATA System CompactFlash 0 (Read/Write) Prerequisites Перед началом нужно выполнить следующие условия: маршрутизатор сконфигурирован в качестве CUBE; версия Cisco IOS 15.2(1) или выше; видео – звонок устанавливается по схеме SIP-to-SIP; используется адресация версии IPv4; ключевые составляющие вызова проходят через CUBE, включая SIP – сигнализацию и медиа - потоки; в рамках устанавливаемого видео – вызова не происходит транскодирования с высокой нагрузкой; не используется SRTP (Secure Real-time Transport Protocol); Схема следующая: Настройка Для настройки CUBE необходимо подключится к серверу по протоколу Telnet и ввести следующие логин и пароль: UserName: merionet Password: ****** Переходим в режим конфигурации: enable configure terminal У нас 192.168.0.2 – IP – адрес системы записи, а 192.168.0.3 - адрес CUCM. В разделе voice service voip, необходимо добавить IP – адрес системы записи и CUCM в список «доверенных» IP – адресов и указать прочие опции, как указано ниже: voice service voip ip address trusted list ipv4 192.168.0.2 255.255.255.255 ipv4 192.168.0.3 255.255.255.255 address-hiding mode border-element media flow-around allow-connections sip to sip fax protocol t38 version 0 ls-redundancy 0 hs-redundancy 0 fallback none sip asymmetric payload full early-offer forced midcall-signaling passthru g729 annexb-all video screening Создаем media profile recorder, в котором необходимо указать тэг dial – peer, который смотрит в сторону системы записи. Помимо этого, необходимо создать профиль для записи видео с опциями, которые указаны ниже. Оба профиля записи указываются в настройке media class: media profile recorder 100 media-recording 114 ! media profile video 455 monitor-ref-frames h264-packetization-mode 0 ref-frame-req rtcp retransmit-interval 50 retransmit-count 4 ref-frame-req sip-info ! media class 3 recorder profile 100 video profile 455 Теперь, на входящем и исходящем dial – peer указываем созданный ранее media class: dial-peer voice 123 voip destination-pattern 114 rtp payload-type cisco-codec-video-h264 112 session protocol sipv2 session target ipv4:192.168.0.2 voice-class sip options-keepalive voice-class codec 1 offer-all media-class 3 dtmf-relay rtp-nte no vad ! dial-peer voice 124 voip destination-pattern 1402$ // маршрут в сторону PBX rtp payload-type cisco-codec-video-h264 112 session protocol sipv2 session target ipv4:192.168.0.3 session transport tcp voice-class codec 1 offer-all voice-class sip options-keepalive up-interval 100 down-interval 50 retry 6 voice-class sip bind control source-interface GigabitEthernet0/1 voice-class sip bind media source-interface GigabitEthernet0/1 media-class 3 dtmf-relay rtp-nte no vad Сохраняем конфигурацию: copy running-config startup-config
img
Консольные файловые менеджеры Linux могут быть очень полезны в повседневных задачах, при управлении файлами на локальном компьютере или при подключении к удаленному. Визуальное представление каталога помогает быстро выполнять операции с файлами и папками и экономит нам время. В этой статье мы рассмотрим некоторые из наиболее часто используемых файловых менеджеров консоли Linux, их функции и преимущества. GNU Midnight Commander Midnight Command, которую часто называют просто MC, и является одним из лучших файловых менеджеров, обсуждаемых в этой статье. MC поставляется со всеми видами полезных функций, кроме копирования, перемещения, удаления, создания файлов и каталогов, вы можете изменять права доступа и владельца, просматривать архивы, использовать его в качестве FTP-клиента и многое другое. Для установки Midnight Commander вы можете использовать следующие команды: sudo apt install mc #[Debian/Ubuntu] sudo yum install mc #[CentOS/RHEL] sudo dnf install mc #[Fedora] Ranger Console File Manager Ranger является еще одним лучшим выбором, если вы ищете консольный файловый менеджер. Он имеет vim-подобный интерфейс, предварительный просмотр выбранного файла или каталога, поддержку мыши в закладках и вид со вкладками. Для установки рейнджера используйте следующие команды: sudo apt install ranger #[Debian/Ubuntu] sudo yum install ranger #[CentOS/RHEL] sudo dnf install ranger #[Fedora] Cfiles Fast Terminal File Manager Cfiles - это быстрый файловый менеджер терминала, написанный на C и использующий библиотеку ncurses, похожий на Ranger, и он также использует сочетания клавиш vi. Он имеет несколько зависимостей, таких как cp, mv, fzf, xdg-open и другие. Несмотря на то, что он легкий, его установка требует еще нескольких шагов. Чтобы установить cfiles, сначала вам нужно установить инструменты разработки, используя следующие команды: sudo apt-get install build-essential #[Debian/Ubuntu] sudo yum groupinstall 'Development Tools' #[CentOS/RHEL 7/6] Затем клонируйте репозиторий cfiles и установите его, используя следующие команды: git clone https://github.com/mananapr/cfiles.git cd cfiles gcc cf.c -lncurses -o cf sudo cp cf /usr/bin/ #Или скопируйте куда-нибудь себе в $PATH Vifm Console File Manager Vifm - еще один файловый менеджер на основе командной строки, использующий интерфейс curses. Он копирует некоторые особенности из mutter. Если вы являетесь пользователем vim, вам не нужно изучать новый набор команд для работы с vifm. Он использует одинаковые сочетания клавиш, а также имеет возможность редактировать несколько видов файлов. Как и другие консольные файловые менеджеры, он имеет две панели, поддерживает автозаполнение. Он также поддерживает различные виды для сравнения файловых деревьев. Также с ним вы также можете выполнять удаленные команды. Чтобы установить Vifm используйте следующие команды: sudo apt install vifm #[Debian/Ubuntu] sudo yum install vifm #[CentOS/RHEL] sudo dnf install vifm #[Fedora] Nnn Terminal File Browser Nnn - самый быстрый консольный файловый менеджер в нашем списке. Хотя он имеет меньше возможностей по сравнению с другими файловыми менеджерами, он чрезвычайно легок и наиболее близок к настольному файловому менеджеру по тому, что вы можете получить на консоли. Простое взаимодействие позволяет новым пользователям легко привыкнуть к терминалу. Чтобы установить nnn, вы можете использовать следующие команды: sudo apt install nnn #[Debian/Ubuntu] sudo yum install nnn #[CentOS/RHEL] sudo dnf install nnn #[Fedora] Lfm Last File Manager Lfm или Last File Manager - консольный файловый менеджер на основе curses, написанный на Python 3.4. Может использоваться с одной или двумя панелями. В нем есть несколько полезных функций, таких как фильтры, закладки, история, VFS для сжатых файлов, древовидная структура и прямая интеграция с командой поиска, утилитой grep, командой df и другими инструментами. Также доступны кастомные темы. Установить Lfm можно при помощи следующих комманд: sudo apt install lfm #[Debian/Ubuntu] sudo yum install lfm #[CentOS/RHEL] sudo dnf install lfm #[Fedora] sudo pacman -S lfm #[Arch Linux] Вы также можете установить Lfm используя pip sudo pip install lfm lf – List Files Lf – "List files" - файловый менеджер командной строки, написанный на Go, вдохновленный Ranger. Первоначально он был предназначен, чтобы заполнить пробелы недостающих функций, которые были у Ranger. Некоторые из основных особенностей lf: Это кроссплатформенность - Linux, OSX, Windows (только частично); Один двоичный файл без каких-либо зависимостей во время выполнения; Низкий объем памяти; Конфигурация с помощью команд оболочки; Настраиваемые сочетания клавиш. Чтобы установить lf, просто загрузите сборку, связанную с бинарными файлами для вашей ОС, со страницы релизов lf. WCM Commander Последней в нашем списке является WCM Commander, которая является еще одним кроссплатформенным консольным файловым менеджером. Авторы WCM Commander намеревались создать кроссплатформенный файловый менеджер, который имитирует функции Far Manager. Он имеет встроенный терминал, встроенный текстовый редактор и средство просмотра, подсветку синтаксиса, виртуальную файловую систему и очень быстрый пользовательский интерфейс. Поддержка мыши также включена. Пакет для каждой ОС можно найти на странице загрузки WCM. Заключение Это была наша короткая презентация о некоторых ведущих файловых менеджерах консоли Linux. Если вы думаете, что мы пропустили одну или понравились некоторые из них больше, пожалуйста, поделитесь своими мыслями в комментариях.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59