По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Нужно просмотреть текст внутри двоичного файла или файла данных? Команда Linux strings извлечет и выведет на терминал биты текста, которые называются "строками". Linux полон команд, которые могут выглядеть как решения в поисках проблем. Команда strings одна из них. Так, зачем же она нужна? Есть ли похожая команда, которая перечисляет строки для печати из двоичного файла? Давайте вернемся назад. Двоичные файлы, такие как программные файлы, могут содержать строки читаемого человеком текста. Но как мы их видим? Если использовать cat или less, то, скорее всего, зависнет окно терминала. Программы, предназначенные для работы с текстовыми файлами, не могу обрабатывать исполняемые файлы, содержащие непечатаемые символы. Большая часть данных в двоичном файле нечитабельна и не могут быть выведены в окно терминала каким-либо образом, так как нет знаков или стандартных символов для представления двоичных значений, которые не соответствуют буквенно-цифровым символам, знакам пунктуации или пробелам. В совокупности они называются "печатаемыми" символами. Остальные - "непечатаемые" символы. Поэтому попытка просмотра или поиска текстовых строк в двоичном файле или файле данных является проблемой. И вот здесь на помощь спешит strings. Он извлекает строки печатаемых символов из файлов, чтобы другие команды могли использовать эти строки без необходимости контактировать с непечатаемыми символами. Использование команды strings На самом деле нет ничего сложного в этой команде: просто передаем команде название файла. Как пример, мы попробуем просмотреть содержимое исполняемого файла jibber с помощью strings. strings jibber На скриншоте ниже список строк, извлечённых из указанного файла: Установка минимальной длины строки По умолчанию, команда strings ищет строки, содержащие четыре и более символов. Чтобы изменить значение по умолчанию используется ключ –n. Имейте ввиду, что чем короче минимальная длина, тем больше шансов получить на выводе бесполезного материала. Некоторые двоичные значения имеют то же числовое значение, что и значение, представляющее печатаемый символ. Если два из этих числовых значений находятся рядом в файле, а минимальная длина, равна двум, эти байты будут отображаться как строки. Чтобы установить длину строки равной двум, используйте следующую команду: strings -n 2 jibber Теперь у нас на выводе есть строки, длина который равна двум и более символам. Учтите, что пробел тоже считается печатаемым символом. Ограничение вывода команды strings командой less Чтобы ограничить объем выведенной информации вывод команды strings можно передать команде less, а затем прокруткой просматривать всю информацию: strings jibber | less Теперь мы видим список, выводимый командой less, где начало списка отображено первым: Использование strings с файлами объектов Обычно исходный код программ компилируется в файлы объектов. Они в свою очередь связаны с файлами библиотек, чтобы создать исполняемый файл. У нас есть файл объектов jibber, давайте посмотрим, что в нем: jibber.o | less Данные выводятся в таблице по 8 колонок, каждая из строк которой заканчивается на букву “H”. В данном примере у нас SQL запрос. Но если прокрутить ниже, то можно заметить, что форматирование не относится ко всему файлу. Думаю, интересно видеть разницу между текстовыми строками файла объектов и конечного исполняемого файла. Поиск в конкретной области файла Скомпилированные программы имеют различные области, которые используются для хранения текста. По умолчанию, strings ищет текст во всем файле. Это так же, как если бы вы использовали параметр -a (all). Для поиска строк только в инициализированных, загруженных разделах данных в файле используйте параметр -d (data). strings -d jibber | less Если нет особой причины, то вполне можно обойтись значением по умолчанию. Вывод номера строки Иногда бывает необходимо узнать точное смещение, расположение строки в файле. В этом нам поможет ключ –o (offset). strings -o parse_phrases | less В данном случае номера строки показаны в восьмеричной системе. Для получения значений в других системах исчисления, достаточно использовать опцию –t, а затем передать нужный ключ: d (десятичная система), x (шестнадцатеричная) или o (восьмеричная). Опция –t с ключом o равнозначна запуску команды strings с ключом –o. strings -t d parse_phrases | less Теперь номера строк показаны в десятичной системе: strings -t x parse_phrases | less А тут в шестнадцатеричной: Вывод управляющих символов Команда strings принимает знаки табуляции и пробела, как часть строки, игнорируя при этом символ начала новой строки - /r или возврата каретки - /r. Чтобы включить их отображение нужно добавить ключ –w. strings -w add_data | less Ниже мы видим пустую строку. Это результат работы управляющих символов: либо символа новой строки, либо символ возврата каретки. Мы не ограничены только файлами Мы можем использовать строки с любым, что есть или может создать поток байтов. С помощью этой команды мы можем просмотреть содержимое оперативной памяти (RAM) нашего компьютера. Нам нужно использовать >sudo, потому что мы получаем доступ /dev/mem. Это символьного файл устройства, в котором хранится изображение оперативной памяти компьютера. sudo strings /dev/mem | less В списке не все содержимое оперативной памяти, а лишь то, что команда strings смогла извлечь. Поиск нескольких файлов сразу Маски можно использовать для выбора групп файлов для поиска. Символ * обозначает нуль и больше символов, а символ «?» означает любой отдельный символ. Можно также указать в командной строке множество имен файлов. Мы будем использовать маску для поиска всех исполняемых файлов в каталоге /bin. Поскольку список будет содержать результаты из многих файлов, будет использоваться параметр -f (имя файла). Имя файла будет напечатано в начале каждой строки. Затем можно просмотреть файл, в котором была найдена данная строка. Затем передадим результаты через grep и выведем строки, содержащие слово "Copyright": strings -f /bin/* | grep Copyright Мы получаем упорядоченный список с об авторских правах каждого файла в каталоге /bin, с именем файла в начале каждой строки. Команда strings распутана Команда strings – это не какая-то тайная команда. Это обычная команда Linux. Он делает выполняет конкретные задачи и делает это очень хорошо. Это еще один из преимуществ Linux, и действительно мощных в сочетании с другими командами. Когда вы видите, как он может оперировать двоичными файлами и другими инструментами, такими как grep, начинаете по-настоящему ценить функциональность этой слегка непонятной команды.
img
Frontend-разработчики — ключевая IT-профессия: фронтендеры отвечают за создание интерфейсов сайтов и приложений, которые привлекают внимание конечных пользователей по всему миру. В этой статье мы расскажем, что должен уметь фронтенд-разработчик, сколько получают такие специалисты и откуда взять опыт в этой сфере. Прежде всего, кто такой frontend-разработчик? Frontend-разработчик — это специалист, задачей которого является создание пользовательского интерфейса (UI) и пользовательского опыта (UX) для веб-сайтов или приложений. Проще говоря, frontend-разработчик отвечает за проектирование и создание визуальной части веб-сайтов и приложений. Сюда входят макеты, графика, текст и другие визуальные элементы, составляющие дизайн, а также код, который обеспечивают правильную работу всего этого. Что вообще означает Frontend? Frontend сайта, также называемый клиентской стороной или, в более широком смысле, пользовательским интерфейсом (UI), относится к тем частям сайта или приложения, которые видны пользователям и с которыми они могут взаимодействовать. Это всем нам знакомые кнопки, макеты, меню, формы обратной связи. Backend же, или серверная часть, относится к тем частям сайта, которые не видны конечному пользователю. Они управляет данными, которые обеспечивают работу сайта и отслеживают такие элементы, как учетные записи пользователей и историю. Несмотря на то, что фронтенд и бэкэнд противопоставляют, они тесно взаимодействуют друг с другом, обеспечивая правильную работу веб-страниц и приложений. Какие задачи решает фронтенд-разработчик? Frontend-разработчика можно назвать художником, который делает веб-сайты и приложения красивыми и плавно работающими. Для этого они используют различные языки программирования, инструменты и технологии. Основные обязанности фронтенд-разработчика включают: верстку — создание структуры и визуального оформления веб-страниц с использованием HTML и CSS. Программирование — реализацию интерактивности и динамического поведения веб-страниц с использованием JavaScript. Оптимизацию производительности — фронтенд-разработчики заботятся о том, чтобы веб-страницы загружались быстро и эффективно. Кроссбраузерную и кроссплатформенную совместимость — фронтенд-разработчики уделяют внимание тому, чтобы их код корректно отображался на различных браузерах и устройствах. Работу с фреймворками и библиотеками — использование различных инструментов, таких как React, Angular, или Vue.js, упрощающих разработку сложных пользовательских интерфейсов и обеспечивающих повторное использование кода. Frontend-разработчики часто работают в тесном сотрудничестве с дизайнерами, backend-разработчиками и другими специалистами по разработке, чтобы на сайте или в приложении все выглядело хорошо и работало слаженно. Что должен уметь фронтенд-разработчик? Хотя наличие формального образования может быть полезным для получения работы, следует отметить, что многие frontend-разработчики являются самоучками или приобретают свои знания на онлайн-курсах, например, Merion Academy, или на практике. В любом случае важно, чтобы вы могли продемонстрировать свои знания и умения с помощью портфолио и уверенного практического опыта. Ниже расскажем про ключевые навыки, которыми необходимо овладеть: Знание HTML, CSS и JavaScript: для успешной фронтенд-разработки необходимо хорошо разбираться в этих основных технологиях. Эти языки составляют основу frontend-разработки, и в создании пользовательских интерфейсов без них никуда. Знание фреймворков и библиотек: знание React, Angular и Vue.js, может оказаться полезным при разработке более сложных веб-приложений. Эти инструменты — база для создания отзывчивых, интерактивных и масштабируемых интерфейсов, которые так нравятся пользователям. Опыт работы с отзывчивым дизайном: frontend-разработчики должны уметь создавать веб-сайты и приложения, которые классно выглядят и легко работают на различных устройствах — смартфонах, планшетах, ПК. Это обеспечит пользователю позитивное восприятие продукта вне зависимости от девайса, которым он пользуется. Понимание основ дизайна: frontend-разработчик должен иметь насмотренность и понимать основы типографики, теории цвета и верстки. Эти навыки очень важны для создания интерфейсов, которые будут не только красивыми, но и удобными. Понимание кроссбраузерной совместимости: для frontend-разработчика очень важно, чтобы продукты, которые он создает, работали без сбоев в различных браузерах. Обеспечение корректной работы интерфейса в различных браузерах является важнейшей составляющей frontend-разработки. Верстка и frontend-разработка — одно и то же? Хоть верстальщик и фронтенд-разработчик выполняют различные задачи, у них есть много общих черт. Оба специалиста работают над созданием веб-интерфейсов и взаимодействуют с дизайнерами и backend-разработчиками. Оба они должны обладать хорошим пониманием HTML и CSS, а также знанием основ JavaScript. Важные навыки для обеих профессий — умение работать в команде, понимание принципов отзывчивого дизайна, владение инструментами контроля версий, такими как Git. Но все же нельзя говорить, что эти профессии идентичны. Frontend-разработчики в большей степени специализируются на пользовательской части сайта или приложения. Frontend-разработчики глубже понимают принципы пользовательского опыта и дизайна, и могут обеспечить интуитивную, простую в использовании и визуально привлекательную фичу на сайте или в приложении, которая зацепит пользователя. Основное различие между верстальщиком и фронтенд-разработчиком заключается в уровне сложности выполняемых задач. Верстальщик занимается преобразованием статического дизайна в код, в то время как фронтенд-разработчик работает над созданием динамических и интерактивных элементов веб-сайта с использованием языков программирования. Успешные фронтенд-разработчики часто стремятся расширять свои знания и умения в соответствии с требованиями индустрии, и они могут специализироваться в конкретных областях, таких как мобильная разработка, анимация интерфейсов, или работа с определенными фреймворками. Что объединяет верстальщика и фронтенд-разработчика Несмотря на то что верстальщик и фронтенд-разработчик выполняют различные задачи, у них есть много общих черт. Оба специалиста работают над созданием веб-интерфейсов и взаимодействуют с дизайнерами и backend-разработчиками. Они оба должны обладать хорошим пониманием HTML и CSS, а также знанием основ JavaScript. Важными навыками для обеих профессий являются умение работать в команде, понимание принципов отзывчивого дизайна и владение инструментами контроля версий, такими как Git. Основные различия между верстальщиком и фронтенд-разработчиком Основное различие между верстальщиком и фронтенд-разработчиком заключается в уровне сложности выполняемых задач. Верстальщик занимается преобразованием статического дизайна в код, в то время как фронтенд-разработчик работает над созданием динамических и интерактивных элементов веб-сайта с использованием языков программирования. Верстальщики фокусируются на "видимой" части веб-сайта, обеспечивая точное воплощение макетов дизайнеров в коде. Они также следят за тем, чтобы сайт корректно отображался в различных браузерах и на различных устройствах. Фронтенд-разработчики, с другой стороны, сосредотачиваются на создании интерактивности и функциональности веб-сайта. Они используют JavaScript и его фреймворки для разработки интерактивных элементов, таких как слайдеры, выпадающие меню, формы и другие. Как стать фронтенд-разработчиком? Чтобы стать хорошим специалистом, потребуется время и преданность делу. Поэтому лучше всего изучить все аспекты будущей профессии, прежде чем начать свой путь. Что бы мы посоветовали: Изучите основы: начните с онлайн-курса Merion Academy Frontend-разработчик с нуля. Затем испытайте полученные навыки на практике, создав несколько собственных проектов. Займитесь самообразованием: после того, как вы прошли курсы фронтенд-разработчика, не бросайте учиться. Существует множество образовательных программ по фронтенд-направлению — выберите ту, которая соответствует вашим способностям к обучению, бюджету, требованиям к работе, о которой вы мечтаете. Общайтесь и набирайтесь опыта: начните искать проекты для совместной работы, общайтесь с другими разработчиками, посещайте встречи и конференции, ищите наставников. Нетворкинг играет неоценимую роль в трудоустройстве! Сколько зарабатывают фронтенд-разработчики? Фронтенд-разработчики в России на сегодняшний день могут рассчитывать на зарплаты в весьма широком диапазоне. Разумеется, оплата зависит от навыков, опыта и уровня квалификации конкретного специалиста. Согласно hh.ru, заработная плата по вакансии фронтенд-разработчик может колебаться от 100 000 до 600 000 рублей и даже более в месяц. На уровень зарплаты влияет и грейд, и регион работы, а также любые дополнительные навыки — знание языков программирования, основ дизайна и даже маркетинга. Таким образом, фронтенд-разработчики в России имеют возможность получать действительно конкурентоспособные заработные платы, особенно если они совершенствуют свои навыки, следят за трендами в отрасли и стараются учиться новому. Не бойтесь экспериментировать и постоянно развиваться. Фронтенд-разработка — это не только профессия, но и постоянный поток на стыке технологий, дизайна и творчества.
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