По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Одноплатные компьютеры стали довольно популярными в последние десятилетия благодаря их возможности быть использованными в процессе разработки и обучения для начинающих. Одноплатный компьютер представляет собой не что иное, как одну единственную плату, но работает как полноценный компьютер, оснащенный микропроцессором, памятью и устройством ввода-вывода, а также множеством других функций. Одноплатные компьютеры изначально использовались в качестве систем демонстрации и разработки для различных отраслей промышленности. В отличие от стандартного настольного компьютера, одноплатные компьютеры обычно не зависят от слотов расширения для расширения или основных функций. Хотя существует большое количество одноплатных компьютеров, Arduino и Raspberry Pi - два самых популярных устройства. Они стали довольно популярными среди студентов и профессионалов, а также любителей и начинающих программистов. У каждой платы есть свои плюсы и минусы, и профессионалы точно знают, когда и где использовать какую плату, а когда переключаться на другую. Но программисты, которые только начинают создавать проекты, часто мучаются в выборе между ними и пытаются сделать важный выбор - какую плату изучать и использовать для своих проектов. Raspberry Pi Несмотря на размер кредитной карты, Raspberry Pi представляет собой полнофункциональный компьютер, поскольку он имеет выделенную память, графическую карту и процессор. Плата может даже работать под управлением специально разработанной версии ОС Linux. Платы были разработаны Фондом Raspberry Pi для поощрения базового обучения информатике в школах наряду с развивающимися странами. Несмотря на то, что платы были предназначены только для обучения, они стали более популярными, чем предполагалось, и использовались в таких высокотехнологичных приложениях, как робототехника, медиаплееры, эмуляторы и даже АТС Asterisk (дистрибутив под названием RasPBX). Arduino Arduino - это одноплатный компьютер, состоящий из трех основных функций. Первым является аппаратная прототипная платформа, вторым - язык Arduino и, наконец, интегрированная среда разработки (IDE) и библиотеки. Плата Arduino - это скорее микроконтроллер, а не полноценный компьютер. На плате Arduino не может работать операционная система, но код может быть написан и выполнен так, как его постоянное программное обеспечение интерпретирует. Основная функция платы Arduino - взаимодействие со вторичными устройствами и датчиками, что делает ее идеальной для проектов, которые требуют минимальной сложности и работают только на датчике или ручном вводе. Разница между Arduino и Raspberry Pi И Arduino, и Raspberry Pi закрепили свое место в индустрии одноплатных компьютеров и любимы миллионами людей во всем мире. Хотя их характеристики и их возможности различны, все зависит от того, какая плата подойдет для вашего проекта. В этой статье мы обсудим особенности Arduino и Raspberry Pi и проведем сравнение их наиболее выдающихся характеристик, чтобы помочь вам сделать выбор в пользу наилучшего одноплатного компьютера для ваших проектов. Кривая обучения Как мы уже обсуждали ранее, Pi - это больше компьютер, а Arduino, по сути, является дверью в мир программирования. В целом, Arduino гораздо легче освоить, так как он имеет гораздо более низкий барьер для входа. Если у вас мало или совсем нет знаний в области компьютеров и программирования, но вы хотите начать, Arduino - правильный выбор для вас. С другой стороны, люди с опытом работы в Unix или Linux могут легко использовать Raspberry Pi, поскольку на него можно установить специальную версию Linux, созданною для оборудования Raspberry Pi. После установки ОС это похоже на работу на любом компьютере с Linux. Простота Плата Arduino намного проще в использовании по сравнению с Raspberry Pi. Плата Arduino может быть легко сопряжена с аналоговыми датчиками и другими электронными компонентами, используя всего несколько строк кода. В противоположность этому, есть много хлопот для простого считывания входных сигналов с датчиков, поскольку для этого требуется установка нескольких библиотек и программного обеспечения для создания интерфейса между платой и датчиками и другими электронными компонентами. Кодирование в Arduino также проще, чем в Raspberry Pi, который требует знания Linux и его команд. Доступные языки программирования Одноплатный компьютер Raspberry Pi был разработан с целью побудить молодежь присоединиться к программированию. Pi в Raspberry Pi происходит от языка Python, который обозначает его использование в плате. Несмотря на это, Raspberry Pi за короткое время освоила несколько языков программирования и стала основным выбором для обширной группы программистов. Некоторые из языков, которые доступны для использования в Raspberry Pi, это Scratch, Python, HTML 5, JavaScript, JQuery, Java, C, C ++, Perl и Erlang. В случае Arduino вы встретите Arduino IDE - кроссплатформенный пользовательский интерфейс, используемый для написания и загрузки программ на плату. Он написан на языке программирования Java и помогает любому достаточно легко начать программирование Arduino. Но в высокопроизводительных проектах Arduino IDE действует как ограничение того, что можно сделать. Если вы не хотите использовать IDE, вы можете кодировать Arduino, используя язык C ++. Есть много других инструментов, доступных для начинающих и профессионалов, которые можно использовать при программировании в Arduino. Одним из таких инструментов является ArduBlock, который помогает новичкам с минимальным опытом программирования визуализировать свой код, а не печатать его, помогая им понять логику. Еще одним визуальным инструментом является Snap4Arduino, который меньше ориентирован на программирование, но больше помогает пользователю понять, как он работает, так как он создан для немного более старой аудитории. Другими языками, которые могут использоваться прямо или косвенно через внешние коммуникаторы, являются C # и Python. Сетевые возможности Сетевые возможности Raspberry значительно превосходят возможности Arduino. Raspberry Pi 3 имеет Bluetooth и возможность беспроводного подключения. Он также может подключаться к Интернету через Ethernet. Плата поставляется с 1 портом HDMI, 4 портами USB, одним портом камеры, 1 портом Micro USB, 1 портом LCD и 1 портом Display Port DSI, что делает его идеальным для множества приложений. В то же время порты Arduino не созданы для прямого подключения к сети. Даже если это возможно, потребуется дополнительный чип с портом Ethernet, что потребует дополнительной проводки и кодирования. Скорость процессора Разница в скорости процессора между Raspberry Pi и Arduino довольно очевидна и огромна, что связано с тем, что первый является полностью работоспособным компьютером, а другой - микропроцессором. Сравнивая тактовую частоту платы Arduino Uno и платы Raspberry Pi Model B, мы видим значения 16 МГц и 700 МГц соответственно. Поэтому устройство Raspberry работает в 40 раз быстрее, чем плата Arduino. Кроме того, плата Pi имеет в 128 000 раз больше оперативной памяти, чем плата Arduino с оперативной памятью 0,002 МБ. Важно помнить, что Arduino - это просто plug & play устройство и может быть включено и выключено в любое время без каких-либо повреждений. Но Raspberry Pi работает под управлением операционной системы и сам по себе является полноценным компьютером, который требует надлежащего выключения перед отключением питания. Неправильное завершение работы Raspberry Pi может повредить плату, повредить приложения и даже повлиять на скорость процессора. Ввод/Вывод (I/O) Контакты ввода/вывода на вашем одноплатном компьютере позволяют ему общаться с другими подключенными к нему устройствами. Например, если вы хотите активировать двигатель или зажечь светодиод с помощью одноплатного компьютера, вам понадобятся эти выводы ввода/вывода для выполнения этих задач. Raspberry Pi (модель 2) имеет 17 контактов ввода/вывода, а плата Arduino (Uno) - 20 контактов. Потребляемая мощность Из-за своего мощного (сравнительно) процессора плата Pi требует непрерывного источника питания 5 В и может работать не идеально при питании от батарей. Но Arduino может бесперебойно работать с аккумулятором из-за его низких требований к питанию. Хотя энергопотребление может меняться с увеличением количества подключенных устройств. Место хранения Базовая плата Arduino поставляется с хранилищем 32 КБ для хранения кода, который предоставляет платам инструкции. Этого достаточно, так как хранилище не будет использоваться для приложений, видео и фотографий. Pi, однако, не поставляется с хранилищем, но поддерживает порт micro SD, который позволяет пользователю добавлять столько памяти, сколько ему нужно. Доступность и популярность И доски Arduino, и Raspberry Pi получили признание большого числа людей со всего мира. Благодаря такой высокой популярности платы Arduino и Raspberry Pi легко доступны для покупки. Для сравнения, Arduino намного дешевле плат Raspberry Pi из-за ограниченных возможностей. Стоимость может увеличиться с платами высокого класса. Arduino против Raspberry в робототехнике и IoT Выбор правильной одноплатной системы для вашего проекта очень важен, поскольку он будет определять, насколько быстро и эффективно ваша задача будет выполнена. Хотя у плат Arduino и Raspberry Pi есть свои плюсы и минусы, выбор правильной платы будет полностью зависеть от ваших требований. Например, если ваша задача - считывать данные датчиков и реагировать на них в режиме реального времени, плата Arduino подойдет вам больше, чем Raspberry Pi. Это связано с низким энергопотреблением и низким уровнем обслуживания. Arduino идеально подходит для проектов, которые должны работать непрерывно с минимальным взаимодействием и реакцией. Отличным примером такой задачи будет запись температуры на улице и отображение ее на экране. Платы Arduino идеально подходят для начинающих, которые только делают первые шаги и не пока не стремятся создать каких-либо проектов высокого уровня. С другой стороны, Raspberry Pi следует использовать для проектов, которые являются более сложными, чем пример, упомянутый выше. Плата должна использоваться, когда необходимо выполнить несколько задач одновременно, а некоторые или все из них сложны. Например, если ваш проект регистрирует температуру в определенном районе, анализирует тренды температуры за последние недели и прогнозирует погоду на следующие несколько дней, а также принимает решение, будет ли погода оптимальной для орошения, тогда Raspberry Pi это то, что вам нужно. Проще говоря, плата Raspberry Pi предназначена для профессионалов, которые строят сложный и надежный проект, для которого требуется способность выполнять несколько задач одновременно, чего не хватает в Arduino. Обзорная таблица Виртуальная машинаDocker контейнерИзоляция процесса на аппаратном уровнеИзоляция процесса на уровне ОСКаждая виртуальная машина имеет отдельную ОСКаждый контейнер может совместно использовать ОСЗагружается в считанные минутыЗагружается в считанные секундыВиртуальные машины занимают несколько ГБКонтейнеры легкие (КБ / МБ)Готовые виртуальные машины трудно найтиГотовые док-контейнеры легко доступныВиртуальные машины могут легко перейти на новый хостКонтейнеры уничтожаются и воссоздаются, а не перемещаютсяСоздание ВМ занимает относительно больше времениКонтейнеры могут быть созданы в считанные секундыБольше использования ресурсаМеньшее использование ресурсов Итого Обе платы имеют довольно длинный список плюсов и минусов, но они отлично подойдут, если требование будет правильным. Но какими бы разными они ни казались, существует сценарий, в котором они могут работать вместе, чтобы максимизировать результаты проекта. Вы можете сравнить плату Arduino со спинным мозгом тела, который принимает мелкомасштабные решения, такие как зажигание светодиода или измерение температуры жидкости, в то время как плата Raspberry Pi - это мозг, который принимает сложные решения, такие как анализ прошлых ценностей и прогнозирование будущих ценностей. В конце концов, как мы уже говорили, плата Arduino идеально подходит для вас, если вы новичок и хотите узнать об электронике или о тех, кто имеет опыт работы с электроникой и хочет заняться простыми проектами. Raspberry Pi идеально подходит для вас, если у вас есть знания Linux и вы хотите использовать их для создания сложных сетевых электронных проектов.
img
Старый и безусловно привычный администраторам интерфейс FreePBX 12 – ой версии в прошлом – в декабре 2015 выпущена тринадцатая версия графической оболочки для Asterisk. Как идти в ногу со временем и произвести обновление с 12 на 13 версию FreePBX расскажем в статье. Обновление через WEB - интерфейс Для полного удобства в двенадцатой версии FreePBX был создан встроенный пошаговый мастер обновления. Перейдите во вкладку Admin -> 12 to 13 Upgrade Tool Перед вами откроется приветственное меню мастера обновления. Тут же, развернув выделенную на скриншоте ниже красным вкладку, вы сможете ознакомиться с новинками FreePBX 13. Для продолжения установки, нажмите Check the requirements!. Система проверит текущие версии установленных на вашей IP – АТС Asterisk модулей, и, в случае не совместимости укажет какие из них необходимо будет обновить. Имейте ввиду, для корректного обновления необходимо чтобы следующие условия были выполнены: Asterisk 11 версии или выше PHP версии 5.3.3 или выше FreePBX версии 12 Нажмите на кнопку Proceed to the upgrade process. Мастер обновления занимает 3 простых шага: На первом шаге необходимо указать информацию о пользователе FreePBX, выбрав наиболее подходящую опцию в выпадающем поле Distribution На втором шаге, мастер попросит указать ваши контактные данные, такие как: Ваше имя Название компании Номер телефона Адрес электронной почты Третьим шагом будет начато обновление дистрибутива FreePBX 12 до 13 версии. По окончанию работы мастера обновления ваша система будет готова к работе в рамках 13 версии. Обновление через консоль Если по каким-либо причинам вы не можете обновить FreePBX через пошаговый, встроенный в графический интерфейс мастер обновления, вы можете сделать это через командную строку Asterisk, то есть через CLI. Для этого, выполните указанные ниже команды: amportal a ma upgradeall amportal a m update admin set value = '13.0.0alpha1' where variable = 'version'; exit amportal a ma upgrade framework fwconsole --fix_zend fwconsole ma upgrade core fwconsole ma disable backup fwconsole ma download backup fwconsole ma install backup Рассмотрим команды поподробнее. Сразу обозначим, что fwconsole и amportal это командная прослойка между пользователем через командную строку Linux и FreePBX. Итак: ma - это короткая запись команды moduleadmin. Команда отвечает за администрирование модулей FreePBX ma upgradeall - обновление в FreePBX 12 всех имеющихся модулей m - это короткая запись команды mysql. Команда отвечает за управление базой данных через MySQL update admin set value = '13.0.0alpha1' where variable = 'version'; - обновляем версию в базе данных на 13 a ma upgrade framework - обновление фреймворка FreePBX --fix_zend - с помощью программного обеспечения Zend Guard, на момент активации ваш сервер генерирует хэш – сумму, которая хранится на сервере лицензирования. Данный хэш связывается с идентификатором инсталляции, и называется Zend ID. Данная команда урегулирует все возможные конфликты с Zend. ma upgrade core - обновление модуля Core. Обратите внимание, команда уже выполняется с помощью fwconsole ma disable backup - выключаем модуль Backup ma download backup - загружаем модуль Backup ma install backup - устанавливаем модуль Backup Если у вас имеются коммерческие (купленные) модули, то укажите так же команду fwconsole ma upgrade sysadmin Для завершения установки, укажите следующие команды: fwconsole ma upgradeall fwconsole chown fwconsole reload ma upgradeall - обновление всех модулей до актуальных версий fwconsole chown - команда устанавливает необходимые права на все файлы FreePBX fwconsole reload - перезагружаем FreePBX
img
В этой статье мы расскажем как интегрировать Python c Excel и Word, чтобы без проблем создавать автоматические отчеты. Microsoft Excel и Microsoft Word – это, без доли сомнений, две наиболее широко используемые программы как в мире бизнеса, так и в некорпоративной сфере. Они практически являются синонимами слову «работа». Как правило, не проходит и недели, чтобы мы тем или иным способом не воспользовались их преимуществами. И хотя для обычных повседневных задач автоматизация не требуется, бывают случаи, когда она может стать необходимостью. А именно, когда у вас есть множество диаграмм, рисунков, таблиц и отчетов, которые необходимо сделать, это может стать очень утомительным занятием, если все это выполнять вручную. А это не должно быть так. На самом деле существует способ создать конвейер в Python, где можно будет легко интегрировать эти программы для создания электронных таблиц в Excel, а затем передавать результаты в Word для создания отчета практически мгновенно. Openpyxl Познакомьтесь с Openpyxl, возможно, одной из самых универсальных привязок в Python, которая превращает взаимодействие с Excel буквально в прогулку по парку. Используя этот пакет, вы сможете читать и записывать все новые и старые форматы Excel, то есть .xlsx и .xls. Openpyxl позволяет заполнять строки и столбцы, выполнять формулы, создавать 2D- и 3D-диаграммы, маркировать оси и заголовки, а также имеет множество других возможностей, которые могут пригодиться. Однако здесь наиболее важно то, что этот пакет позволяет вам перебирать бесконечное количество строк и столбцов Excel, тем самым избавляя вас от всех этих утомительных вычислений и построения графиков, которые вам приходилось делать ранее самим. Python-docx А затем появляется Python-docx – пакет для Word – то же, что Openpyxl для Excel. Если вы все еще не изучили их документацию, то вам все же стоит на нее взглянуть. Python-docx – без преувеличения один из самых простых и понятных наборов инструментов, с которыми я работал с тех пор, как начал работать с Python. Он позволяет автоматизировать создание документов, автоматически вставляя текст, заполняя таблицы и отображая изображения в отчете без каких-либо усилий. Без лишних церемоний давайте создадим наш собственный автоматизированный конвейер. Запустите IDE по вашему выбору и установите следующие пакеты: pip install openpyxlpip install python-docx Автоматизация Microsoft Excel Для начала загрузим уже созданную книгу Excel (как показано ниже): workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] Затем мы пройдемся по всем строкам в нашей электронной таблице для того, чтобы вычислить и вставить значение мощности, которую мы получим, умножив ток на напряжение: for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power Как только мы сделаем это, то мы сможем использовать рассчитанные значения мощности для построения линейной диаграммы, которая будет вставлена в указанную ячейку, как показано ниже: values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') Извлечение диаграммы Теперь, когда мы построили нашу диаграмму, нам нужно ее извлечь в формате изображения для того, чтобы мы могли использовать ее в нашем отчете Word. Для начала объявим точное местоположения нашего файла Excel, а также место, куда мы хотим сохранить изображение получившейся диаграммы: input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" Затем необходимо получить доступ к таблице, используя следующий метод: operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) И далее вы можете перебрать все диаграммы в таблице (если их больше одной) и сохранить их в указанном месте: for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') passworkbook_2.Close(True) operation.Quit() Автоматизация Microsoft Word Теперь, когда у нас есть изображение диаграммы, мы должны создать шаблон документа, который представляет собой обычный документ Microsoft Word (.docx), сформированный именно так, как нам необходимо, чтобы наш отчет имел определенный тип и размер шрифта, нужное форматирование и структуру страницы. Далее, все, что нам необходимо сделать, это создать заполнители для нашего автоматизированного содержимого, то есть значений таблиц и изображений, и объявить их с переменными, как показано ниже. Внутри двойных фигурных скобок {{variable_name}} может быть объявлен любое автоматизированное содержимое, включая текст и изображения. Для таблиц вам необходимо создать таблицу с шаблонной строкой, в которую включены все столбцы, а затем вам необходимо добавить еще одну строку выше и одну строку ниже со следующими обозначениями: Первая строка: {%tr for item in variable_name %} Последняя строка: {%tr endfor %} На рисунке выше указаны следующие имена переменных: table_contents для словаря Python, в котором будут храниться наши табличные данные. Index для ключей словаря (первый столбец). Power, Current и Voltage для значений словаря (второй, третий и четвертый столбцы). Затем мы импортируем наш документ-шаблон в Python и создаем словарь, в котором будут храниться значения нашей таблицы: template = DocxTemplate('template.docx') table_contents = []for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) Далее мы импортируем изображение диаграммы, которое ранее мы создали в Excel, и создаем еще один словарь для создания экземпляров всех переменных-заполнителей, объявленных в документе-шаблоне: image = InlineImage(template,'chart.png',Cm(10))context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } И, наконец, мы отображаем отчет с нашей таблицей значений и изображением диаграммы: template.render(context) template.save('Automated_report.docx') Заключение И вот, мы получили автоматически созданный отчет Microsoft Word с числами и диаграммами, созданными в Microsoft Excel. При этом у вас есть полностью автоматизированный конвейер, который можно использовать для создания любого количества таблиц, диаграмм и документов. Исходный код программы import openpyxl as xl from openpyxl.chart import LineChart, Reference import win32com.client import PIL from PIL import ImageGrab, Image import os import sys from docx.shared import Cm from docxtpl import DocxTemplate, InlineImage from docx.shared import Cm, Inches, Mm, Emu import random import datetime import matplotlib.pyplot as plt ######## Generate automated excel workbook ######## workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') ######## Extract chart image from Excel workbook ######## input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') pass workbook_2.Close(True) operation.Quit() ######## Generating automated word document ######## template = DocxTemplate('template.docx') #Generate list of random values table_contents = [] for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) #Import saved figure image = InlineImage(template,'chart.png',Cm(10)) #Declare template variables context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } #Render automated report template.render(context) template.save('Automated_report.docx')
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59