Обзор Beelink T45 с Windows и Linux, а также настройка ограничения мощности BIOS


Компания Beelink расширила линейку мини-ПК на базе Gemini, добавив T45. Это мини-ПК с пассивным охлаждением, который, по сути, является дополненным J45, поскольку снова используется чуть более старый процессор Intel Pentium J4205 Apollo Lake, представляющий собой четырехъядерный/четырехпоточный процессор 1,50 ГГц с тактовой частотой 2,60 ГГц и Intel HD Graphics 505.

T45 представляет собой мини-ПК в стиле «NUC», физически состоящий из цельнометаллического (и на удивление довольно тяжелого) прямоугольного корпуса размером 119 x 119 x 17,7 мм (4,69 x 4,69 x 0,70 дюйма), он составляет чуть меньше половины толщины корпуса J45 и очень похож по размеру на более ранние модели AP34 и AP42 от Beelink. На передней панели есть только синий светодиодный индикатор питания, а на задней находятся кнопка питания, разъем питания, два порта HDMI, порт Gigabit Ethernet и разъем для наушников. На правой стороне есть пара портов USB 3.0, а на левой стороне еще пара портов USB 3.0 и полноразмерный слот SD.

Полные спецификации включают в себя:

T45 поставляется с 2242 M.2 SSD (512 ГБ в данном устройстве) с предустановленной Windows 10 Home (версия ОС 1903, сборка 18362.356) вместе с 8 ГБ припаянной оперативной памяти DDR3.

В коробке вы получите монтажный кронштейн с винтами для крепления устройства за монитором вместе с парой кабелей HDMI, адаптером питания (не показано на рисунке ниже), руководством и сервисной картой:

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

После полного обновления Windows до версии 1909 сборка ОС 18363.535 мы запустили наш стандартный набор инструментов для тестирования производительности, чтобы посмотреть на производительность под Windows:

и сравнить с другими мини-ПК на базе Intel:

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

Тем не менее, при сравнении T45 с J45 с аналогичной спецификацией результаты значительно ниже и более соответствуют процессору Celeron N3350 / N3450.

Кроме того, мы также провели тесты Geekbench 4 и получили в одноядерном тесте балл 1538, многоядерном — 4011 и OpenGL 5436:

Затем мы сократили раздел Windows и создали новый раздел объемом 100 ГБ, чтобы можно было установить Ubuntu с двойной загрузкой и использовать Ubuntu 18.04.3 ISO:

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

linuxium@T45:~$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
linuxium@T45:~$
linuxium@T45:~$ uname -a
Linux T45 5.0.0-37-generic #40~18.04.1-Ubuntu SMP Thu Nov 14 12:06:39 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
linuxium@T45:~$
linuxium@T45:~$ inxi -Fc0
System:    Host: T45 Kernel: 5.0.0-37-generic x86_64 bits: 64 Console: tty 0 Distro: Ubuntu 18.04.3 LTS
Machine:   Device: desktop System: AZW product: Gemini T45 serial: N/A
           Mobo: AZW model: Gemini T45 serial: N/A UEFI: American Megatrends v: APL34502 date: 10/23/2019
Battery    hidpp__0: charge: N/A condition: NA/NA Wh
           hidpp__1: charge: N/A condition: NA/NA Wh
CPU:       Quad core Intel Pentium J4205 (-MCP-) cache: 1024 KB
           clock speeds: max: 2600 MHz 1: 2566 MHz 2: 2422 MHz 3: 2419 MHz 4: 2487 MHz
Graphics:  Card: Intel Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Graphics Controller
           Display Server: X.Org 1.20.4 driver: i915 Resolution: 1920x1080@60.00hz
           OpenGL: renderer: Mesa DRI Intel HD Graphics 505 (Broxton) version: 4.5 Mesa 19.0.8
Audio:     Card Intel Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster driver: snd_hda_intel
           Sound: Advanced Linux Sound Architecture v: k5.0.0-37-generic
Network:   Card-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller driver: r8169
           IF: enp1s0 state: up speed: 1000 Mbps duplex: full mac: 84:39:be:9c:06:d8
           Card-2: Intel Wireless 3165 driver: iwlwifi
           IF: wlp2s0 state: down mac: 94:e6:f7:9c:3c:3b
Drives:    HDD Total Size: 512.1GB (1.9% used)
           ID-1: /dev/sda model: SSD_512G size: 512.1GB
Partition: ID-1: / size: 98G used: 9.2G (10%) fs: ext4 dev: /dev/sda5
RAID:      No RAID devices: /proc/mdstat, md_mod kernel module present
Sensors:   System Temperatures: cpu: 58.0C mobo: N/A
           Fan Speeds (in rpm): cpu: N/A
Info:      Processes: 253 Uptime: 46 min Memory: 1470.5/7820.0MB Client: Shell (review-tests.sh) inxi: 2.3.56
linuxium@T45:~$
linuxium@T45:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.8G     0  3.8G   0% /dev
tmpfs           783M  1.9M  781M   1% /run
/dev/sda5        98G  9.2G   84G  10% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1        96M   75M   22M  78% /boot/efi
tmpfs           782M   20K  782M   1% /run/user/121
tmpfs           782M   56K  782M   1% /run/user/1000
/dev/loop0       89M   89M     0 100% /snap/core/7270
/dev/loop1       55M   55M     0 100% /snap/core18/1066
/dev/loop2       43M   43M     0 100% /snap/gtk-common-themes/1313
/dev/loop3      150M  150M     0 100% /snap/gnome-3-28-1804/67
/dev/loop4      4.2M  4.2M     0 100% /snap/gnome-calculator/406
/dev/loop5       15M   15M     0 100% /snap/gnome-characters/296
/dev/loop6      1.0M  1.0M     0 100% /snap/gnome-logs/61
/dev/loop7      3.8M  3.8M     0 100% /snap/gnome-system-monitor/100
tmpfs           782M     0  782M   0% /run/user/0
linuxium@T45:~$
linuxium@T45:~$ lsblk -a
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0    7:0    0  88.5M  1 loop /snap/core/7270
loop1    7:1    0  54.4M  1 loop /snap/core18/1066
loop2    7:2    0  42.8M  1 loop /snap/gtk-common-themes/1313
loop3    7:3    0 149.9M  1 loop /snap/gnome-3-28-1804/67
loop4    7:4    0     4M  1 loop /snap/gnome-calculator/406
loop5    7:5    0  14.8M  1 loop /snap/gnome-characters/296
loop6    7:6    0  1008K  1 loop /snap/gnome-logs/61
loop7    7:7    0   3.7M  1 loop /snap/gnome-system-monitor/100
sda      8:0    0   477G  0 disk 
├─sda1   8:1    0   100M  0 part /boot/efi
├─sda2   8:2    0    16M  0 part 
├─sda3   8:3    0   376G  0 part 
├─sda4   8:4    0   864M  0 part 
└─sda5   8:5    0   100G  0 part /
linuxium@T45:~$
linuxium@T45:~$ sudo lshw -C cpu
  *-cpu
       description: CPU
       product: Intel(R) Pentium(R) CPU J4205 @ 1.50GHz
       vendor: Intel Corp.
       physical id: 38
       bus info: cpu@0
       version: Intel(R) Pentium(R) CPU J4205 @ 1.50GHz
       slot: SOCKET 0
       size: 2424MHz
       capacity: 2600MHz
       width: 64 bits
       clock: 100MHz
       capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts md_clear arch_capabilities cpufreq
       configuration: cores=4 enabledcores=4 threads=4
linuxium@T45:~$
linuxium@T45:~$ sudo lshw -C memory
  *-firmware
       description: BIOS
       vendor: American Megatrends Inc.
       physical id: 0
       version: APL34502
       date: 10/23/2019
       size: 64KiB
       capacity: 5056KiB
       capabilities: pci upgrade shadowing cdboot bootselect socketedrom edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer acpi usb biosbootspecification uefi
  *-memory
       description: System Memory
       physical id: 30
       slot: System board or motherboard
       size: 8GiB
     *-bank:0
          description: DIMM DDR3 Synchronous
          product: 123456789012345678
          vendor: ABCD
          physical id: 0
          serial: 1234
          slot: ChannelA-DIMM0
          size: 2GiB
          width: 16 bits
     *-bank:1
          description: DIMM DDR3 Synchronous
          product: 123456789012345678
          vendor: ABCD
          physical id: 1
          serial: 1234
          slot: ChannelB-DIMM0
          size: 2GiB
          width: 16 bits
     *-bank:2
          description: DIMM DDR3 Synchronous
          product: 123456789012345678
          vendor: ABCD
          physical id: 2
          serial: 1234
          slot: ChannelC-DIMM0
          size: 2GiB
          width: 16 bits
     *-bank:3
          description: DIMM DDR3 Synchronous
          product: 123456789012345678
          vendor: ABCD
          physical id: 3
          serial: 1234
          slot: ChannelD-DIMM0
          size: 2GiB
          width: 16 bits
  *-cache:0
       description: L1 cache
       physical id: 36
       slot: CPU Internal L1
       size: 224KiB
       capacity: 224KiB
       capabilities: synchronous internal write-back
       configuration: level=1
  *-cache:1
       description: L2 cache
       physical id: 37
       slot: CPU Internal L2
       size: 2MiB
       capacity: 2MiB
       capabilities: synchronous internal write-back unified
       configuration: level=2
linuxium@T45:~$
linuxium@T45:~$ free -mh
              total        used        free      shared  buff/cache   available
Mem:           7.6G        1.2G        1.4G        277M        5.1G        5.9G
Swap:          2.0G        256K        2.0G
linuxium@T45:~$
linuxium@T45:~$ sudo lshw -C network
  *-network
       description: Ethernet interface
       product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:01:00.0
       logical name: enp1s0
       version: 0c
       serial: 84:39:be:9c:06:d8
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169 duplex=full firmware=rtl8168g-2_0.0.1 02/06/13 ip=xxx.xxx.xxx.xxx latency=0 link=yes multicast=yes port=MII speed=1Gbit/s
       resources: irq:22 ioport:e000(size=256) memory:91204000-91204fff memory:91200000-91203fff
  *-network
       description: Wireless interface
       product: Wireless 3165
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:02:00.0
       logical name: wlp2s0
       version: 81
       serial: 94:e6:f7:9c:3c:3b
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=iwlwifi driverversion=5.0.0-37-generic firmware=29.1044073957.0 latency=0 link=no multicast=yes wireless=IEEE 802.11
       resources: irq:129 memory:91100000-91101fff
linuxium@T45:~$
linuxium@T45:~$ dmesg | grep "MMC card"
linuxium@T45:~$
linuxium@T45:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 8087:0a2a Intel Corp. 
Bus 001 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 006: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 004: ID 10d5:55a4 Uni Class Technology Co., Ltd 
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
linuxium@T45:~$
linuxium@T45:~$ lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge [8086:5af0] (rev 0b)
00:02.0 VGA compatible controller [0300]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Graphics Controller [8086:5a84] (rev 0b)
00:0e.0 Audio device [0403]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster [8086:5a98] (rev 0b)
00:0f.0 Communication controller [0780]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Trusted Execution Engine [8086:5a9a] (rev 0b)
00:12.0 SATA controller [0106]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller [8086:5ae3] (rev 0b)
00:13.0 PCI bridge [0604]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #1 [8086:5ad8] (rev fb)
00:13.1 PCI bridge [0604]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #2 [8086:5ad9] (rev fb)
00:13.2 PCI bridge [0604]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #3 [8086:5ada] (rev fb)
00:13.3 PCI bridge [0604]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #4 [8086:5adb] (rev fb)
00:15.0 USB controller [0c03]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI [8086:5aa8] (rev 0b)
00:1b.0 SD Host controller [0805]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series SDXC/MMC Host Controller [8086:5aca] (rev 0b)
00:1c.0 SD Host controller [0805]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series eMMC Controller [8086:5acc] (rev 0b)
00:1f.0 ISA bridge [0601]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface [8086:5ae8] (rev 0b)
00:1f.1 SMBus [0c05]: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller [8086:5ad4] (rev 0b)
01:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 0c)
02:00.0 Network controller [0280]: Intel Corporation Wireless 3165 [8086:3165] (rev 81)
linuxium@T45:~$

Интересно, что драйвер Ethernet похож на J45 тем, что T45 использует по умолчанию модуль r8169. Однако, он использует другую версию «mac» с прошивкой «rtl8168g-2_0.0.1» и поэтому не имеет тех же проблем, что и J45, и работает как положено.

После мы провели стандартные тесты Phoronix Test Suite, и результаты можно сравнить с результатами предыдущего тестирования на других мини-ПК:

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

Запускаем «sbc-bench», представляющий собой небольшой набор различных тестов производительности ЦП, ориентированных на производительность сервера, «glmark2» из стандартных репозиториев, являющихся эталоном для OpenGL (ES) 2.0, некоторые реальные временные тесты для компиляции, архивирования и разархивирования ядра Linux mainline v5.2, ‘iozone’ также из стандартных репозиториев, который является инструментом для тестирования файловой системы, и, наконец, ‘Octane 2’, который является тестом JavaScript и был запущен в Chrome.

Краткое изложение результатов каждого из вышеуказанных тестов производительности в сравнении с ранее протестированными мини-ПК, представлено следующим образом:

Низкая производительность T45, которая была замечена в Windows по сравнению с J45, также наблюдается и в тестах Linux.

Для прямого сравнения с Windows мы также протестировали Geekbench 4:

Результаты Ubuntu несколько лучше, чем у Windows (1579 против 1538 и 4282 против 4011).

Для тестирования в реальных условиях мы воспроизвели видео в Edge, Chrome и Kodi в Windows, а также в Firefox, Chrome и Kodi в Ubuntu. Результаты были несколько хуже, чем на других мини-ПК, и в следующих таблицах обобщены тесты и результаты для каждого из веб-браузеров, Kodi в целом и Kodi, воспроизводящих определенные видео:

Мы также заметили, что как Edge, так и Chrome запускались медленно при использовании YouTube и чувствовали себя неуверенно.

Наконец, на обеих ОС мы установили и запустили тест UNIGINE Heaven:

Windows 10 (слева) и Ubuntu 18.04 (справа)

и результаты показывают, что T45 будет предлагать очень ограниченную игровую производительность.

Пропускная способность сетевого подключения была измерена в Ubuntu с помощью ‘iperf’:

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

  • Выключен — 0,7 Вт
  • Выключен — 0,7 Вт (Windows)
  • BIOS * — 11,8 Вт
  • Меню загрузки — 11,3 Вт
  • В режиме ожидания — 11,5 Вт (Windows) и 9,1 Вт (Ubuntu)
  • Процессор в напряжении — 17,3 Вт (Ubuntu)
  • Воспроизведение видео ** — 18,6 Вт (4K в Windows) и 17,6 Вт (1080p в Ubuntu)

* BIOS (см. Ниже)

** Показатели мощности колеблются, поэтому значение является средним показаниями для средней и низкой мощности.

Наконец, настройки BIOS частично видны и разблокированы, и краткий обзор доступен в следующем видео:

Как упоминалось ранее, T45 представляет собой устройство без вентилятора, основанное исключительно на пассивном рассеивании тепла. Он использует массивный радиатор, покрывающий почти всю плату:

Обратите внимание, что этот радиатор также охватывает SSD-накопитель M.2, а это означает, что его необходимо удалить и повторно применить термопасту при доступе к SSD-накопителю M.2 по любой причине.

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

Хотя на нижней стороне корпуса есть предупреждение:

что устройство становится горячим. Во время тестирования максимальная температура, которую мы зафиксировали на верхней части устройства, составляла 53,5 ° C:

было не комфортно держать его, чтобы в ставить / вынуть USB и т. д.

Однако охлаждение, похоже, работает, поскольку максимальная температура ядра процессора, зарегистрированная во время тестирования, составляла 68 ° C:

несмотря на то, что температура в помещении составляла 30,0 ° C, поскольку это был жаркий день, а температура наружного воздуха достигала 42 ° C (107,6 ° F).

В течение 20 минут мы воспроизводили видео VP9 в Kodi с Ubuntu, и внутренняя температура не поднималась во время воспроизведения, оставалась управляемой и достигла пика 65 ° C, учитывая, что температура в помещении теперь упала до 24,8 ° C , температура поверхности устройства при измерении составила 49,0 ° С:

(обратите внимание на 15 пропущенных кадров при открытии и снятии скриншота)

Из-за относительно низкой производительности по сравнению с J45 мы более внимательно посмотрели на BIOS. В разделе «Конфигурация управления питанием процессора для T45» для параметра «Максимальное состояние пакета C» установлено значение «C0», а для параметра «Power Limit 1 Power» установлено значение 6 Вт:

что также может быть подтверждено HWiNFO:

Сравним с настройками в BIOS J45:

где «Максимальное состояние пакета C» установлено на «PC2», а «Power Limit 1 Power» установлено на 10 Вт.

Мы решили попробовать установить T45 «Power Limit 1 Power» на 10 Вт:

Производительность сразу улучшилась:

с улучшением Passmark с 1000,2 (отметка CPU 1808,7) до 1308,7 (отметка CPU 2319,5), Cinebench R15 со 118 кбайт до 161 сб и Fire Strike с 296 до 498.

Мы перезапустили Octane, который улучшился с 11951 до 12413 и Geekbench 4, где показатель одноядерного теста остался прежним в 1538, но показатель многоядерного изменился с 4011 до 4648:

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

сейчас играет отлично:

Интересно, что не было никаких наблюдаемых тепловых последствий, так как внешняя температура устройства и внутренние температуры оставались подобными тем, которые были зафиксированы ранее. Максимальная температура ядра ЦП за это короткое время тестирования составила 64 ° C:

тогда как температура окружающей среды в помещении составляла 25,4 ° С, а температура поверхности устройства составляла 49,8 ° С.

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

Octane улучшился с 11333 до 13397, немного улучшился показатель одноядерности Geekbench 4 — с 1579 до 1596, а показатель многоядерности — с 4282 до 5020:

Компиляция ядра Linux улучшена более чем на 20%

real    28m23.356s
user    79m56.520s
sys    11m23.354s

в

real    22m22.993s
user    59m55.605s
sys    9m15.328s

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

теперь воспроизводится относительно неплохо, только с редким пропуском кадра:

И видео с YouTube в Firefox, которое было недоступно для просмотра с разрешением 1440p при 30 кадрах в секунду, теперь воспроизводилось без задержек и пропусков кадров:

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

Нам хотелось бы поблагодарить Beelink за предоставление T45 для обзора. В настоящее время он продается у различных реселлеров мини-ПК, таких как AmazonGearBestAliexpress, или  GeekBuying, по цене около 240 $ за протестированную конфигурацию.

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

Оригинал статьи вы можете прочитать здесь.

0 0 vote
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments