Архив автора: admin

Для чего используется SIM-карта?

Почти каждый существующий сегодня сотовый телефон использует SIM-карту. «SIM» — это сокращение от модуля идентификации абонента. Без этого вы не можете делать или принимать телефонные звонки. Вы также не можете использовать интернет-данные через сотовую связь.

Вы, наверное, уже знали это, но почему ваш телефон так бесполезен без этого маленького куска металла и пластика? Просто для чего на самом деле используется SIM-карта?

Как выглядит SIM-карта

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

SIM-карты бывают разных форм и размеров. На самом деле, всего четыре размера. Самый большой из них известен как «полноразмерный» и фактически устарел. Полноразмерные SIM-карты размером 3,37 на 2,125 дюйма в основном были размером со смарт-картами доступа.

Причина этого довольно интересная. На начальном этапе технологии мобильных телефонов несколько человек использовали один телефон. Идея заключалась в том, что вы вставите свою огромную SIM-карту в телефон, когда захотите ее использовать. Поскольку карта будет проводить больше времени в вашем кошельке, чем в телефоне, большой пластиковый корпус имеет смысл.

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

Размер Micro-SIM очень популярен, и большинство телефонов используют его. Размер Nano-SIM устраняет практически весь пластиковый корпус вокруг контактов SIM-карты и, по сути, является стандартом для флагманов и смартфонов среднего класса, где внутреннее пространство чрезвычайно дорого. SIM-карты имеют физическую клавиатуру, что делает невозможным их неправильную установку.

Вот совет: не выбрасывайте рамки Mini- и Micro-SIM при получении новой SIM-карты. Если вам когда-нибудь понадобится перенести SIM-карту на другой телефон, они вам могут понадобиться!

Что делает SIM-карта?

Сотовая сеть, принадлежащая вашему поставщику услуг, это просто сеть. Они должны контролировать, кто имеет доступ к этой сети, как по соображениям безопасности, так и для того, чтобы все это работало!

Так что же такое SIM-карта? Ваша SIM-карта является картой доступа. Он содержит ваши учетные данные. Так что в этом смысле это как карта, на которой хранятся ваши имя пользователя и пароль. Вы входите в сотовую сеть с помощью SIM-карты. Ваш номер телефона — это ваша уникальная сетевая идентификация.

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

Что хранится на SIM-карте?

На SIM-карте есть информация, необходимая для аутентификации вашей учетной записи в сети. Одним из них является ICCID или идентификатор карты интегральной схемы . Это номер, который уникален для этой конкретной физической SIM-карты.

Следующий важный бит данных на SIM-карте известен как ключ аутентификации . Это криптографический ключ, используемый для подписи данных, отправляемых в сотовую сеть. Их ключ запускается через криптографическую функцию и затем сравнивается с другим вычислением, выполненным с копией ключа, хранящегося в базе данных оператора. Если они совпадают, вы попадете в сеть.

На SIM-карте также есть память, которую вы можете использовать для хранения ваших контактов и текстовых сообщений. Это довольно ограничено, однако, с большинством SIM-карт, занимающих от 64 до 256 КБ. В наши дни большинству людей лучше хранить свои контакты в собственной памяти телефона вместе с резервной копией, используя что-то вроде iCloud или свою учетную запись Google .

Контрактные и предоплаченные SIM-карты

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

В обоих случаях вы получите SIM-карту. Сами карты ничем не отличаются друг от друга. Скорее, именно как поставщик обрабатывает учетную запись, которая выделяет их. Вы можете купить предоплаченные SIM-карты с полки. Хотя во многих странах вы должны зарегистрировать покупку, используя правительственный ID и подтверждение места жительства.

Контрактным SIM-картам распределяются данные, время разговора и другие ресурсы в соответствии с вашим контрактом. Излишки добавляются к вашему счету, и в конце платежного цикла деньги списываются с вашего счета. С картами предоплаты вы обычно загружаете денежную сумму на SIM-карту или иным образом приобретаете время разговора или мобильные данные заранее.

В зависимости от того, где вы живете, некоторые контрактные телефоны могут быть заблокированы для SIM-карт только от этого поставщика. Часто это способ получить телефон с существенной скидкой, но если вам когда-нибудь понадобится использовать другую SIM-карту, возможно, во время путешествий, вы обнаружите, что она не работает! Чтобы избежать такой ситуации, обязательно ищите телефоны, продающиеся как «разблокированные».

Переключение SIM-карт

Взять SIM-карту с одного телефона и переместить ее на другой довольно безболезненно. Учитывая, что оба телефона используют одинаковый размер SIM-карты. Если другой телефон использует больший размер, вам придется использовать адаптер, чтобы он подходил для большего слота. Если SIM-карта, которую вы хотите использовать, слишком велика для целевого телефона, у вас есть два варианта.

Во-первых, сократить размер SIM-карты. Некоторые люди достаточно смелы, чтобы сделать это, используя только ножницы и какой-то шаблон. Если вы случайно врезались в схему SIM-карты, игра окончена, и вам понадобится новая. Самый безопасный способ сделать это — использовать специальный инструмент для резки SIM. Даже в этом случае вы рискуете уничтожить карту, поэтому выбирайте этот маршрут только на свой страх и риск.

Другим вариантом является переключение SIM-карт. Конечно, если вы просто выйдете и купите новую SIM-карту, с ней будет связан другой номер телефона! У каждого поставщика услуг может быть своя процедура перемещения вашего телефонного номера с одной SIM-карты на другую.

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

В наши дни популярно использовать текстовые сообщения, отправленные на определенные SIM-карты, как форму двухфакторной аутентификации. Так что теперь у нас есть нечто, известное как мошенничество с обменом SIM-карт . Где преступники находят способы передачи вашего номера телефона на SIM-карту, которую они контролируют. Дублирование SIM-карты является еще одним методом. Это, безусловно, что-то, чтобы не упустить.

Жизнь после сим-карт

SIM-карты, по крайней мере, отдельные SIM-карты больше не нужны. Мы уже наблюдаем рост eSIM или встроенной SIM- карты. Это SIM-карта, встроенная непосредственно в телефон. Эта карта является программируемой, что означает, что вы можете легко менять поставщиков или использовать несколько поставщиков одновременно.

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

eSIM делает это избыточным и превращает доступ и аутентификацию во что-то похожее на использование фиксированной широкополосной связи. Где вы просто вводите имя пользователя и пароль для доступа к данному поставщику услуг.

Лишь немногие современные телефоны имеют встроенные SIM-карты на момент написания статьи, но ситуация изменится, когда отрасль примет этот новый стандарт. У вашего следующего телефона вполне может быть, что вообще некуда положить SIM-карту, что станет концом эпохи, но, безусловно, движением к лучшему.



2019-12-26T19:42:17
Вопросы читателей

PCI Express 4 против PCIe 3: есть ли улучшение производительности?

Благодаря AMD летом 2019 года на наших компьютерах появилось новое оборудование PCI Express, которое обещает графические карты и твердотельные накопители, которые работают быстрее, чем когда-либо. Интерфейс PCI Express 4.0 предлагает удвоенную пропускную способность PCI Express 3.0 (PCIe 3), и он может сделать это для любых плат расширения, которые подключаются к вашей материнской плате. Теперь у нас есть как графические карты, так и твердотельные накопители, совместимые с PCI Express 4 (PCIe 4), доступные в магазинах. Вы можете спросить себя: обеспечивает ли PCIe 4 больше кадров в секунду при игре в игры? Это делает ваши SSD диски намного быстрее? Мы задавали себе те же вопросы, поэтому решили провести анализ производительности, в котором мы сравниваем PCIe 4 с PCIe 3

Как мы тестировали производительность PCI Express

Чтобы увидеть улучшения производительности, представленные PCI Express версии 4, мы использовали следующий тестовый компьютер:

  • Процессор: AMD Ryzen 7 3700X (8 ядер, 16 потоков, базовая тактовая частота 3600 МГц, максимальная тактовая частота 4600 МГц)
  • Материнская плата: ASUS ROG Crosshair VIII Hero (Wi-Fi)
  • Кулер: ASUS ROG Ryou 120
  • Память: RGB-память HyperX Predator DDR4 (2 x 8 ГБ, 3600 МГц)
  • Видеокарта: ASRock AMD Radeon RX 5700 XT Taichi X 8G OC +
  • Хранение: ADATA XPG Gammix S50
  • Монитор: изогнутый игровой монитор ASUS ROG Strix XG32VQ (32-дюймовый WQHD 2560 x 1440, 144 Гц)
  • Блок питания: ASUS ROG Thor 850W Platinum
  • Операционная система: Windows 10 Pro x64 с обновлением ноября 2019 года

Наша материнская плата предлагает отличный BIOS UEFI , с большим количеством опций и настроек, которые вы можете настроить. Среди них вы можете найти и установить версию интерфейса PCI Express, используемую каждым слотом на материнской плате. Чтобы сравнить PCIe 4 с PCIe 3, мы сначала запустили все следующие тесты, сначала используя PCIe 4, который является настройкой по умолчанию. Затем мы настроили UEFI BIOS для ограничения интерфейса PCI Express для графического процессора и SSD на PCIe 3.

Давайте посмотрим, какие результаты мы получили, и дает ли PCI Express версии 4 существенные улучшения по сравнению с версией 3.

PCIe 4 против PCIe 3: вы получаете больше кадров в секунду в играх?

Мы начали с тестирования производительности, предлагаемой графической картой ASRock AMD Radeon RX 5700 XT Taichi X 8G OC + во время Второй мировой войны. Мы использовали Vulkan API и настройки качества графики Ultra. Когда мы использовали PCIe 4, мы увидели небольшое увеличение количества кадров в секунду по сравнению с PCIe 3. Цифры были на 3% лучше, в зависимости от того, на какую метрику мы смотрим: минимальный FPS, средний FPS или максимальный FPS.

Battlefield V — популярная игра, требующая достаточно много аппаратных ресурсов для отображения ее наилучшего качества графики. Для этого мы использовали DirectX 12 API и настройки качества Ultra. Независимо от разрешения, 1440p или 1080p, количество кадров в секунду, которое мы имели, было немного лучше, когда мы использовали PCIe 4 по сравнению с PCIe 3. Однако улучшения были до 2% при измерении среднего количества кадров в секунду.

Shadow of the Tomb Raider — выдающаяся игра с визуальной точки зрения качества. Мы протестировали его, используя DirectX 12, TAA (временное сглаживание) и самые высокие предустановки качества графики. Результаты наших тестов были практически идентичны, независимо от того, использовали ли мы разрешения 1440p или 1080p и PCIe 4 или PCIe 3. Как ни странно, максимальный FPS был выше на PCIe 3, поэтому кажется, что переключение с PCIe 3 на PCIe 4 не не имеет никакого эффекта.

The Division 2 от Tom Clancy предлагает инструмент для сравнительного анализа, который выводит только средний FPS. Используя DirectX 12 и предустановку качества графики Ultra, мы получили такое же количество кадров в секунду при использовании разрешения 1080p с PCIe 4 и PCIe 3. В 1440p PCIe 4 выдавал на 4% больше кадров в секунду, чем PCIe 3.

Metro Exodus — одна из последних игр с высокими требованиями к оборудованию. Полученные нами результаты были неубедительными, и мы не заметили каких-либо улучшений при использовании PCIe 4 вместо PCIe 3.

Мы также тестировали ASRock AMD Radeon RX 5700 XT Taichi X 8G OC + в Fortnite, которая не является требовательной, но очень популярной. Реализация Fortnite DirectX 12 находится на стадии бета-тестирования, и результаты со временем изменятся. Мы заметили улучшение среднего числа FPS до 44% в разрешении 1080p и до 27% в разрешении 1440p.

Мы перешли к Apex Legends, еще одной популярной онлайн-игре Battle Royale. Мы использовали самые высокие настройки качества графики, и результаты, которые мы измерили, снова оказались неубедительными. В этой игре не было значимого влияния при переходе с PCIe 3 на PCIe 4.

За исключением Fortnite, мы не заметили значительных улучшений в количестве кадров в секунду, воспроизводимых в играх. В большинстве игр частота кадров увеличивается на 4% при использовании PCIe 4 вместо PCIe 3. В некоторых играх нет разницы между двумя версиями PCIe.

PCIe 4 против PCIe 3: загружаются ли игры быстрее?

Мы протестировали видеокарту ASRock AMD Radeon RX 5700 XT Taichi X 8G OC + с тестом 3DMark PCI Express. Этот тест измеряет пропускную способность, доступную для графической карты через интерфейс PCI Express. Его результат говорит нам о средней достигнутой пропускной способности и, таким образом, дает приблизительное представление о том, как быстро игры могут передавать данные во время загрузки. Когда мы настроили нашу материнскую плату на использование PCI Express 4, видеокарта имела доступ к средней пропускной способности 23,25 ГБ / с. Ограничение интерфейса PCI Express до Gen 3 означало, что доступная пропускная способность упала до 14,31 ГБ / с. Другими словами, использование PCIe 4 означает, что графическая карта может получить на 39% большую пропускную способность по сравнению с PCIe 3.

Наличие графической карты, поддерживающей PCI Express 4, означает, что вы можете быстрее загружать игры, в которые играете.

PCIe 4 против PCIe 3: Windows 10 загружается быстрее?

Чтобы узнать, ускоряет ли PCIe 4 загрузку Windows 10, мы использовали BootRacer . Наш тестовый компьютер имел одинаковое время запуска независимо от того, настроили ли мы SSATA-накопитель ADATA XPG Gammix S50 на PCIe 4 или PCIe 3.

PCIe 4 против PCIe 3: данные записываются и читаются быстрее на диске?

Мы загрузили и запустили CrystalDiskMark, эталон, который может измерять производительность SSD при чтении и записи данных, как случайных, так и последовательных. Измерения показали, что, хотя случайная передача данных не сильно пострадала, последовательная передача данных значительно лучше, когда вы используете PCIe 4 вместо PCIe 3 для SSD-накопителя. Скорость последовательного чтения данных была до 61% быстрее, в то время как скорость последовательной записи данных была до 46% быстрее.

Наличие твердотельного накопителя PCI Express 4 значительно повышает скорость последовательной передачи данных: от 46% для скорости записи до 61% для скорости чтения.

PCIe 4 улучшает производительность по сравнению с PCIe 3?

Вот что вы получаете, когда используете PCIe 4 вместо PCIe 3:

  • Вы получаете более быстрое время загрузки в играх
  • Копирование и перемещение больших файлов в Windows 10 быстрее

Однако, когда вы играете в игры, это не влияет на количество кадров в секунду, которое вы получаете. Только в нескольких названиях вы можете увидеть улучшения до 4%. Кроме того, Windows 10 не загружается быстрее при использовании PCIe 4 вместо PCIe 3.

Вы купили оборудование PCIe 4?

Если вы потратили деньги на видеокарту PCIe 4 или твердотельный накопитель, какова была ваша основная причина для этого? Стоило ли оно того в вашем конкретном случае? Мы хотели PCIe 4, потому что, да, в некоторых ситуациях это означает большую производительность. Однако это также означает дополнительные расходы. Прежде чем закончить, расскажите нам свою точку зрения на эту тему в комментарии ниже.



2019-12-25T18:20:36
Вопросы читателей

Многопроцессорный модуль Python с примерами

1. Многопроцессорная обработка Python — цель

Сегодня в этой статье по Python мы увидим многопроцессорную работу с Python. Кроме того, мы рассмотрим пакет и структуру многопроцессорной обработки в Python. Кроме того, мы обсудим класс процесса в Python Multiprocessing, а также получим информацию о процессе. Чтобы это произошло, мы заимствуем несколько методов из модуля многопоточности. Наряду с этим мы изучим блокировку и пул класса Python Multiprocessing.

Итак, давайте начнем.

 

2. Что такое многопроцессорная обработка Python?

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

Итак, теперь перейдем к Python Multiprocessing, это способ повысить производительность путем создания параллельного кода. Производители процессоров делают это возможным, добавляя больше ядер к своим процессорам. В многопроцессорной системе приложения разбиваются на более мелкие подпрограммы для самостоятельной работы. Взгляните на однопроцессорную систему. Учитывая несколько процессов одновременно, он пытается прерывать и переключаться между задачами. Как бы вы себя чувствовали, будучи единственным шеф-поваром на кухне с сотнями клиентов? Вы должны были бы выполнять все обычные задачи от выпечки до замеса теста.

 

а. Пакет многопроцессорной обработки Python

Многопроцессорная обработка в Python  — это пакет, который мы можем использовать с Python для порождения процессов с использованием API, который очень похож на модуль потоков . Благодаря поддержке как локального, так и удаленного параллелизма, он позволяет программисту эффективно использовать несколько процессоров на данном компьютере. Прежде чем мы сможем объяснить вам это, давайте рассмотрим пример пула — объекта, способа распараллеливания выполнения функции по входным значениям и распределения входных данных по процессам. Это параллелизм данных (создайте из этого модуль и запустите его):

from multiprocessing import Pool

def f(x):

return x*x

with Pool(5) as p:

print(p.map(f,[1,2,3]))

 

Хотите узнать, сколько ядер у вашей машины? Попробуйте метод cpu_count().

>> import multiprocessing

>>> multiprocessing.cpu_count()

 

б. Структура многопроцессорной системы Python

Так из чего состоит такая система? У нас есть следующие возможности:

  • Мультипроцессор — компьютер с несколькими центральными процессорами.
  • Многоядерный процессор — один вычислительный компонент с более чем одной независимой фактической единицей обработки/ядрами.

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

 

3. Класс многопроцессорного процесса Python

Давайте сначала поговорим о классе Process в Python Multiprocessing. Это абстракция для настройки другого процесса, позволяющая родительскому приложению контролировать выполнение. Здесь мы наблюдаем методы start() и join(). Давайте сначала возьмем пример.

import multiprocessing

from multiprocessing import Process

def testing():

print("Объектов")

def square(n):

print("Число квадратов в ",n**2)

def cube(n):

print("Количество кубиков в ",n**3)

if __name__=="__main__":

p1=Process(target=square,args=(7,))

p2=Process(target=cube,args=(7,))

p3=Process(target=testing)

p1.start()

p2.start()

p3.start()

p1.join()

p2.join()

p3.join()

print("Мы закончили")

 

Мы сохранили на нашем рабочем столе, а затем дважды запустили из командной строки.

Давайте разберемся с этим фрагментом кода. Process() позволяет нам создать экземпляр класса Process. start() говорит Python начать обработку. Но тогда, если мы позволим этому быть, это потребляет ресурсы, и мы можем исчерпать их в более поздний момент времени. Это потому, что он позволяет процессу оставаться бездействующим и не завершаться. Чтобы избежать этого, мы вызываем метод join(). При этом нам не нужно убивать их вручную. Присоединение останавливает выполнение текущей программы до завершения процесса. Это гарантирует, что программа ожидает завершения p1 и затем завершения p2. Затем он выполняет следующие операторы программы. И последнее: аргумент ключевого слова args позволяет нам указать значения передаваемого аргумента. Кроме того, цель позволяет нам выбрать функцию для выполнения процесса.

 

4. Получение информации о процессах

 

а. Получение идентификатора процесса и проверка работоспособности

Мы можем захотеть получить ID процесса или одного из его дочерних элементов. Мы также можем захотеть узнать, жив ли он еще. Следующая программа демонстрирует эту функциональность:

import multiprocessing

from multiprocessing import Process

import os

def child1():

print("Child 1",os.getpid())

def child2():

print("Child 2",os.getpid())

if __name__=="__main__":

print("Parent ID",os.getpid())

p1=Process(target=child1)

p2=Process(target=child2)

p1.start()

p2.start()

p1.join()

alive='Yes' if p1.is_alive() else 'No'

print("Is p1 alive?",alive)

alive='Yes' if p2.is_alive() else 'No'

print("Is p2 alive?",alive)

p2.join()

print("Мы закончили")

 

В многопроцессорной среде Python каждый процесс занимает свое собственное пространство памяти для запуска независимо. Завершается, когда целевая функция завершается выполнением.

 

б. Получение названия процесса

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

import multiprocessing

from multiprocessing import Process, current_process

import os

def child1():

print(current_process().name)

def child2():

print(current_process().name)

if __name__=="__main__":

print("Parent ID",os.getpid())

p1=Process(target=child1,name='Child 1')

p2=Process(target=child2,name='Child 2')

p1.start()

p2.start()

p1.join()

p2.join()

print("Мы закончили")

 

Как видите, метод current_process() дает нам имя процесса, который вызывает нашу функцию. Посмотрите, что происходит, когда мы не присваиваем имя одному из процессов:

import multiprocessing

from multiprocessing import Process, current_process

import os

def child1():

print(current_process().name)

def child2():

print(current_process().name)

if __name__=="__main__":

print("Parent ID",os.getpid())

p1=Process(target=child1)

p2=Process(target=child2,name='Child 2')

p1.start()

p2.start()

p1.join()

p2.join()

print("Мы закончили")

Что ж, модуль многопроцессорной обработки Python присваивает номер каждому процессу как часть его имени, когда мы этого не делаем.

 

5. Многопроцессорная блокировка Python

Как и многопоточный модуль, многопроцессорная обработка в Python поддерживает блокировки. Процесс включает в себя импорт Lock, его использование, выполнение чего-либо, а затем освобождение. Давайте взглянем.

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

from multiprocessing import Process, Lock

lock=Lock()

def printer(item):

lock.acquire()

try:

print(item)

finally:

lock.release()

if __name__=="__main__":

items=['nacho','salsa',7]

for item in items:

p=Process(target=printer,args=(item,))

p.start()

 

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

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

 

6. Класс многопроцессорного пула Python

Этот класс представляет пул рабочих процессов; его методы позволяют переложить задачи на такие процессы. Давайте рассмотрим пример (Создайте модуль и запустите его).

from multiprocessing import Pool

def double(n):

return n*2

if __name__=='__main__':

nums=[2,3,6]

pool=Pool(processes=3)

print(pool.map(double,nums))

 

Мы создаем экземпляр пула и создаем процесс с 3 работниками. map() отображает функцию double и повторяемость для каждого процесса.

Другой метод, который возвращает нам результаты наших процессов в пуле, — это метод apply_async().

from multiprocessing import Pool

def double(n):

return n*2

if __name__=='__main__':

pool=Pool(processes=3)

result=pool.apply_async(double,(7,))

print(result.get(timeout=1))

 

Итак, все это было в многопроцессорной обработке Python. Надеюсь, вам понравится наше объяснение.

 

7. Вывод — многопроцессорная обработка Python

В этой статье по многопроцессорности Python мы обсудили полную концепцию многопроцессорности в Python. Кроме того, мы рассмотрели пул многопроцессорных процессов Python, блокировку и процессы. Теперь у вас есть представление о том, как использовать ваши процессоры в полной мере.



2019-12-25T06:55:16
Python

Переменная SELECT INTO в MySQL

Описание: в этой статье вы узнаете, как использовать переменную SELECT INTO в MySQL для хранения результатов запроса в переменных.

 

Синтаксис переменной SELECT INTO в MySQL

Чтобы сохранить результат запроса в одной или нескольких переменных , используйте синтаксис переменной SELECT INTO:

SELECT

c1, c2, c3, ...

INTO

@v1, @v2, @v3,...

FROM

table_name

WHERE

condition;

 

В этом синтаксисе:

  • c1, c2 и c3 — это столбцы или выражения, которые вы хотите выбрать и сохранить в переменных.
  • @ v1, @ v2 и @ v3 — это переменные, в которых хранятся значения из c1, c2 и c3.

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

Если запрос не возвращает строк, MySQL выдает предупреждение об отсутствии данных и значение переменных остается неизменным.

Если запрос возвращает несколько строк, MySQL выдает ошибку. Чтобы запрос всегда возвращал максимум одну строку, используйте условие LIMIT 1, чтобы ограничить результирующий набор одной строкой.

 

Примеры переменной SELECT INTO в MySQL

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

Переменная SELECT INTO в MySQL

 

Пример одной переменной SELECT INTO в MySQL

Следующий оператор получает город клиента с номером 103 и сохраняет его в переменной @city:

SELECT

city

INTO

@city

FROM

customers

WHERE

customerNumber = 103;

 

 

Следующий оператор отображает содержимое переменной @city:

SELECT

@city;

 

Пример нескольких переменных SELECT INTO в MySQL

Чтобы сохранить значения из списка выбора в несколько переменных, вы разделяете переменные запятыми. Например, следующий оператор находит город и страну клиента с номером 103 и сохраняет данные в двух соответствующих переменных @city и @country:

SELECT

city,

country

INTO

@city,

@country

FROM

customers

WHERE

customerNumber = 103;

 

Следующий оператор показывает содержимое переменных @city и @country:

SELECT

@city,

@country;

 

Переменная SELECT INTO в MySQL

 

Пример нескольких строк SELECT INTO в MySQL

Следующая инструкция вызывает ошибку, потому что запрос возвращает несколько строк:

SELECT

creditLimit

INTO

@creditLimit

FROM

customers

WHERE

customerNumber > 103;/

 



Вот вывод:

Error Code: 1172. Result consisted of more than one row

 

Чтобы исправить это, вы используете следующее предложение LIMIT 1:

SELECT

creditLimit

INTO

@creditLimit

FROM

customers

WHERE

customerNumber > 103

LIMIT1;

 

В этой статье вы узнали, как использовать синтаксис переменной SELECT INTO в MySQL для хранения результата запроса результата в одной или нескольких переменных.



2019-12-25T06:02:32
База данных MySQL

Домашний Сервер: Часть 5 – Установка и настройка Plex Media Server в контейнере LXC Proxmox-VE

  1. Домашний Сервер: Часть 1 – Предисловие, аппаратная и софтовая начинка
  2. Домашний Сервер: Часть 2 – Установка системы виртуализации Proxmox
  3. Домашний Сервер: Часть 3 – Внутренний DNS сервис на BIND9 или свои доменные имена в локальной сети
  4. Домашний Сервер: Часть 4 – Настройка Transmission daemon в контейнере LXC Proxmox-VE
  5. Домашний Сервер: Часть 5 – Настройка Plex Media Server в контейнере LXC Proxmox-VE (вы тут)

 

Предисловие

Ну вот мы и добрались до самого медиасервиса с помощью которого можно просматривать свою медиатеку.

Познакомился я с Plex еще лет пять назад, тогда он был проще, но позволял делать все, что необходимо.

Кратко, что такое Plex? — По сути это медиа «комбайн» или центр управления, с помощью которого вы можете удобно хранить, искать и воспроизводить свой медиа контент и это не только фильмы или сериалы, это могут быть изображения и музыка. Командой Plex выпущены приложения для различного типа устройств, чтобы можно было начать смотреть фильм дома на большом экране и досмотреть например его в дороге.

Источник: www.plex.tv

 

Кстати недавно Plex запустил собственный бесплатный потоковый сервис с поддержкой рекламы.

Источник 5 dec 2019 (ENG): www.flatpanelshd.com

 

И еще, вы знали, что Plex поддерживает VR?

Т.е. если у вас нет большого экрана, но есть VR, вы можете создать себе свой собственный виртуальный кинотеатр. Правда есть пара нюансов =)

www.plex.tv/virtual-reality

 

Можно принять участие в переводе Plex

https://www.transifex.com/plex-1/plex-web/

 

P.S.

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

Установка Plex Media Server

В первую очередь необходимо развернуть отдельный LXC контейнер для медиасервера.

Подробно мы это разобрали в статье: Домашний Сервер: Часть 3 – Внутренний DNS сервис на BIND9 или свои доменные имена в локальной сети

Также для Plex Media Server понадобится доступ к месту хранения скачанных медиа файлов фильмов и сериалов, делаем по аналогии с Torrent качалкой

Мы разобрали это в статье: Домашний Сервер: Часть 4 – Настройка Transmission daemon в контейнере LXC Proxmox-VE

По итогу получаем финальный конфиг LXC контейнера для Plex в Proxmox-VE

 

cat /etc/pve/lxc/102.conf

 

#*) plexmediaserver

#*) snmpd

#*) nginx

arch: amd64

cores: 4

hostname: PLEX

memory: 2048

mp0: /rpoolz/data,mp=/mnt/data

nameserver: 192.168.88.7 192.168.88.1

net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=52:60:C0:78:C1:71,ip=dhcp,type=veth

onboot: 1

ostype: debian

rootfs: local-zfs:subvol-102-disk-0,size=8G

searchdomain: gregory-gost.ru

swap: 2048

unprivileged: 1

 

Запустим контейнер и перейдем к установке и настройке Plex Media Server

 

Проверяем смонтированную папку

 

ls -l /mnt/

total 1

drwxrwxrwx 4 nobody nogroup 4 Sep 25 23:14 data

 

Видим нужную нам папку, все хорошо, продолжаем.

 

Обновляем контейнер и устанавливаем дополнительные утилиты

 

apt update && apt full-upgrade -y

 

apt install net-tools curl apt-transport-https

 

Разработчики Plex любезно предоставляют полноценный репозиторий для обновлений через APT.

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

Источник (ENG): Enable repository updating for supported Linux server distributions

 

 

В этой статье рассматривается процесс установки в контейнере Debian: DEB-based distros (Debian, Ubuntu, etc.)

По ссылке разработчиков Plex, также присутствует инструкция добавления репозитория для RPM-based distros (Fedora, CentOS, etc.)

 

Скачиваем и устанавливаем ключ от репозитория

 

curl https://downloads.plex.tv/plex-keys/PlexSign.key | apt-key add -

 

Создадим файл источника для установки и обновлений.

 

nano /etc/apt/sources.list.d/plexmediaserver.list

 

# Plexmediaserver

deb https://downloads.plex.tv/repo/deb public main

 

Обновляем репозитории

 

apt update

 

Подготовка завершена, устанавливаем Plex Media Server

 

apt install plexmediaserver

 

При окончании установки появится запрос замены файла репозитория.

Я рекомендую оставить вариант по умолчанию. Т.е. не заменять файл репозитория созданный нами, на файл предлагаемый пакетом Plex

 

Файл настройки "/etc/apt/sources.list.d/plexmediaserver.list"

==> Файл, созданный вами или сценарием.

==> Также, файл в пакете, предоставленный сопровождающим пакета.

Что нужно сделать? Есть следующие варианты:

Y или I : установить версию, предлагаемую сопровождающим пакета

N или O : оставить установленную на данный момент вермию

   D    : показать различия между версиями

   Z    : запустить оболочку командной строки для проверки ситуации

По умолчанию сохраняется текущая версия файла настройки.

*** plexmediaserver.list (Y/I/N/O/D/Z) [по умолчанию N] ?

 

Дожидаемся окончания процесса установки и запуска.

Проверяем запущен ли Plex

 

service plexmediaserver status

 

Если видим то, что ниже, значит все хорошо.

 

Active: active (running)

 

Сервер Plex будет работать по IP адресу контейнера.

WEB интерфейс запущен на TCP порту 32400 и еще необходимо указать дополнительный путь /web/

 

netstat -nltp4

tcp        0      0 0.0.0.0:32400           0.0.0.0:*               LISTEN      27590/Plex Media

 

Откроем в браузере свой сервер набрав IP адрес и порт. У меня IP контейнера 192.168.88.8

192.168.88.8:32400/web/

gost-plex-1
 

После входа, Plex запросит вашу Учетную запись. Если у вас её нет, то будет необходимо пройти простую процедуру регистрации. Благо есть возможность заходить через учетные записи Google или Facebook.

После входа вас вернет на локальный сервер.

gost-plex-2
Вводное информационное окно

Далее необходимо выполнить первичную настройку Локального Сервера

 

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

 

Установка и настройка nginx

 

Т.к. у нас есть DNS, реализуем вход по доменному имени, например у меня plex.gregory-gost.ru

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

Сравните, что удобнее, понятнее и привычнее?

192.168.88.8:32400/web/

или

plex.gregory-gost.ru

 

Для этого используем реверс прокси.

Ставим nginx, останавливаем, удаляем базовый сайт «hello world» и добавляем свои настройки.

 

apt install nginx

 

service nginx stop

 

rm /etc/nginx/sites-enabled/default

 

nano /etc/nginx/nginx.conf

 

error_log               /var/log/nginx/error.log crit;

pid                     /var/run/nginx.pid;

worker_rlimit_nofile    8192;

timer_resolution        100ms;

include                 /etc/nginx/modules-enabled/*.conf;



events {

        multi_accept    on;

        accept_mutex    off;

        use             epoll;

}



http {

        include         /etc/nginx/mime.types;

        include         /etc/nginx/fastcgi.conf;

        default_type    application/octet-stream;



        sendfile        on;

        tcp_nopush      on;

        tcp_nodelay     on;



        #ssl_session_cache      shared:SSL:10m;

        #ssl_session_timeout    10m;



        include         /etc/nginx/conf.d/*.conf;



}

 

nano /etc/nginx/conf.d/plex.conf

 

upstream plex_backend {

        server          127.0.0.1:32400;

        keepalive       32;

}



server {

        listen          80;

        server_name     plex.gregory-gost.ru;



        send_timeout    100m;



        gzip            on;

        gzip_vary       on;

        gzip_min_length 1000;

        gzip_proxied    any;

        gzip_types      text/plain text/css text/xml application/xml text/javascript application/x-javascript image/svg+xml;

        gzip_disable "MSIE [1-6].";



        client_max_body_size 100M;



        proxy_http_version 1.1;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "Upgrade";



        proxy_redirect off;

        proxy_buffering off;



        location / {

                if ($http_x_plex_device_name = '') {

                        rewrite ^/$ http://$http_host/web/index.html;

                }

                proxy_pass http://plex_backend;

        }



}

 

Запускаем nginx и проверяем вход по доменному имени

 

service nginx start

 

Установка плагина Kinopoisk

 

Plex поддерживает различные плагины, которые немного упрощают жизнь. Для того, чтобы фильмы в библиотеке обрабатывались корректно и метаданные по ним скачивались на Русском языке можно и не ставить данный плагин. Plex умеет по умолчанию работать с The Movie Database (TMDb) и подгружает русские названия с описанием и постеры от туда. Правда рейтинг также берется с TMDb.

Благо есть «в нашем селении» способные умельцы. Уважаемый amirotin разработал плагин, который парсит метаданные с Кинопоиска.

С декабря 2019 года, amirotin перестал заниматься плагином и его поддержку на себя взял ziemenz.

 

Возможности плагина:

 

    1. Загрузка рейтингов для фильмов

 

    • Kinopoisk

 

    • Rotten Tomatoes

 

    • IMDb

 

    • The Movies Database

 

 

  • Источники рецензий на фильмы

 

    • Kinopoisk

 

    • Rotten Tomatoes

 

 

  • Загрузка трейлеров фильмов

 

  • Загрузка дополнительных материалов (сцены, интервью)

 

  • Загрузка английских имен актеров

 

  • Приоритет локализованных обложек фильмов

 

  • Поддержка прокси-серверов (http, sock5)

 

 

Я надеюсь, что данный плагин не является нарушением авторских или каких-либо других прав компании ООО «Яндекс» (владеет Кинопоиском с 15 октября 2013 г.) т.к. это не коммерческий софт

У себя, я использую Релизную версию плагина 2.0.1 от 29 февраля 2020 г.: Стабильный релиз v2.0.1

Инструкция для других OS(Windows, MacOS, FreeBSD, FreeNAS, QNAP, ): https://github.com/amirotin/Kinopoisk.bundle

Новая страница с исходниками плагина: https://github.com/ziemenz/Kinopoisk.bundle

Переходим в папку с плагином, скачиваем и распаковываем

cd /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Plug-ins/

 

wget https://github.com/ziemenz/Kinopoisk.bundle/archive/v2.0.1.tar.gz

 

tar xvzf v2.0.1.tar.gz

 

Переименовываем папку т.к. она содержит лишнее «2.0.1»

 

mv Kinopoisk.bundle-2.0.1 Kinopoisk.bundle

 

Даем права для Plex Media Server на папку

 

chown -R plex:plex Kinopoisk.bundle/

 

Финальный вариант работающего Plex Media Server

gost-plex-6
Скриншот Web интерфейса Plex Media Server

 

Некоторые настройки Plex Media Server

 

Покажу некоторые настройки, которые у меня установлены для Plex Media Server.

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

Для фильмов Кинопоиск 2.0

Для сериалов The Movie Database т.к. плаин Кинопоиска пока не умеет работать с сериалами.

Изображения кликабельны:

 

TV Приставки и приложения для просмотра

 

И еще, немного затронем то, на чем все это великолепие можно смотреть!

Я использую на текущий момент:

 

    1. Xiaomi Mi Box S (MDZ-22-AB) Global Version — Использую на текущий момент. Все устраивает полностью, Android TV с приложением Plex, удобный Bluetooth пульт. (5 990 руб. на дату написания статьи в магазине Xiaomi. На Ali дешевле.)

 

    1. Raspberry Pi 3B+ с LibreELEC 9.2.0 — Установлен скрипт Plex с автозапуском. Пока единственный нормальный Custom по опыту. В целом задачи решает, но не так удобен, как Mi Box S на Android TV. Я писал статью по использованию: Домашний Медиа-плеер: LibreELEC(Kodi) на Raspberry Pi 3B+. Но планирую заменить на какой-нибудь Smart Box

 

 

Что еще можно использовать?

 

    1. Google Chromecast Ultra — Собственно плеер на Android TV от самого Google, функции аналогичные Mi Box S, но нет в комплекте Bluetooth пульта.

 

    1. Nvidia Shield TV 2019 — Обновленная «приставка» от Nvidia. С пультом, аналог Mi Box S и Google Chromecast Ultra, но дороже (13 990 руб. на дату написания статьи в магазине Nvidia)

 

    1. Nvidia Shield TV Pro 2019 — Более прокачанная версия «шилда» причем Plex Media Server уже встроен в этот медиаплеер, что конечно сомнительно всего 16Гб места, часть из которого занимает система. Даже с учетом возможности подключения HDD/SSD. (17 590 руб. на дату написания статьи в магазине Nvidia)

 

    1. Другие китайские или Российские(российско-китайские?) приставки на базе простого Android, CoreELEC, Android TV, др. — Ценники начиная от 1 500 руб. (Ugoos, H96, X96, X88, Movix Pro и т.д. и т.п.)

 

    1. Приложение PlexApp (офф версия требует PlexPass) — Есть, как для iOS так и для Android. Ставится на любой планшет, смартфон и т.д.Присутствует на некоторых Smart TV, тут вам нужно изучить набор приложений для вашего телевизора.

 

    1. Raspberry Pi и его аналоги на базе Kodi. Домашний Медиа-плеер: Raspbian + Kodi + плагин Plex на Raspberry Pi 3 B+

 

 

На февраль 2020:

Если хотите нормальные UHD(«4K» Ultra HD 2160p) с HDR и Автофреймрейтом, то смотрите в сторону Ugoos AM6+ или Pro, Nvidia Shield TV 2019 Pro

Для FHD(Full HD 1080p) Xiaomi Mi Box S побюджетней.

 

Если что-то забыл, пишите в комментариях, добавлю 🙂

 

Заключение

 

На этой радостной ноте предлагаю, закончить свое повествование по реализации Домашнего медиа сервера. Мы своего добились, фильмы и сериалы качаются на раз-два, просмотр доставляет одно удовольствие, ПК не захламлен кучей фильмов.

Возможно существуют и альтернативы Plex-у, в виде каких-то DLNA клиентов или даже тот-же Kodi, но все они не так удобны и проработаны, что дает очевидный выбор в пользу Plex. Даже при наличии различного рода сервисов, которые избыточны для домашнего локального просмотра, Plex их не навязывает и они не заметны. Это позволяет использовать его с комфортом.

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

А вам дорогие читатели находить новые решения, использовать все самое лучшее и делиться впечатлениями!

 

В рамках цикла «Домашний сервер» планирую еще две статьи

    1. The Dude — мониторинг девайсов в домашней сети.
    1. FreePBX (Asterisk) — IP телефония.

А вот реализация Домашнего IoT пойдет в отдельный цикл, чтобы было проще ориентироваться в дальнейшем. Посмотрим будет ли интерсено читателям )

    1. openHAB 2 — домашний IoT.

 

Благодарю за ваше время!

Всего хорошего на просторах Интернета 😉

 

UPD: 29.02.2020

Изменен источник и инструкция для плагина Kinopoisk.

 

Установка и настройка Openwrt на TP-LINK

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

В первом повествовании не будем вдаваться во многие тонкости. Рассмотрим, как прошить роутер и настроить сеть через веб-интерфейс на примере TP-Link TL-WR740N v.5.

Читать