Фото

История развития языка C#


Изучите преимущества и особенности языка C#. История, недостатки и преимущества Си Шарп в одном месте. Узнайте всё о языке программирования C sharp

C# — молодой, но широко используемый язык программирования, относящийся к Си-семейству. В данной статье мы рассмотрим его особенности, преимущества и недостатки, а также области применения, чтобы помочь разработчикам определить, насколько он подходит их потребностям.

Вы только начинаете свой путь в программировании и ещё не определились с выбором первого языка? Или, возможно, вы уже освоили некоторые навыки и сейчас решаете, как продолжить развитие? В таком случае вы наверняка слышали о языке программирования C#, который часто называют «Си-шарп». В данной статье мы предоставим вам всю необходимую информацию, чтобы вы смогли оценить, насколько этот язык подходит именно вам.

 

Особенности языка Си Шарп

А что же означает само название C#? В термине C Sharp слово «шарп» имеет свою символическую значимость. Знак «#» (читается как «диез» в музыкальной нотации) означает повышение звуковой высоты на полтона. С другой стороны, название «C#» происходит от «эволюционной цепочки» C → C++ → C++++(C#), где символ «#» составлен из четырёх знаков «+».

Исследуем язык C#: продукт, признанный Microsoft

История развития C# началась в 1993-2001 годах, когда группа инженеров компании Microsoft под руководством Андерса Хейлсберга и Скотта Вильтаумота разработала его как язык программирования для создания приложений на платформе Microsoft.

В 2000 году Microsoft представила промышленные версии новых технологий и решений для обмена сообщениями и данными, а также для разработки интернет-приложений. Была запущена платформа .NET, которая объединила несколько языков программирования, что было новинкой для того времени.

Одним из ключевых нововведений платформы .NET была технология ASP.NET (Active Server Pages), предназначенная для создания серверных веб-приложений с возможностью взаимодействия с базами данных. Специально для ASP.NET был разработан язык программирования C#, который стал основным языком разработки на этой платформе. Более того, сама технология ASP.NET была полностью написана на C#.

Сравнение с другими языками программирования

C# имеет синтаксис, похожий на C, и в этом отношении он близок к C++ и Java. В качестве объектно-ориентированного языка C# унаследовал многое от Java и C++. Как и Java, C# изначально был разработан для веб-приложений, и около 75% его синтаксических возможностей схожи с Java. C# также называют «очищенной версией Java». Еще 10% возможностей он заимствовал у C++, а 5% — у Visual Basic. Оставшиеся 10% — это уникальные идеи разработчиков. Благодаря объектно-ориентированному подходу C# позволяет создавать крупные, но гибкие, масштабируемые и расширяемые приложения.

Си Шарп давно уже поддерживает множество полезных функций, таких как:

  • Инкапсуляция,
  • Наследование,
  • Полиморфизм,
  • Перегрузка операторов,
  • Статическая типизация.

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

В сравнении с другими языками, C# относительно молод, но уже прошел долгий путь. Первая версия языка была выпущена вместе с Microsoft Visual Studio .NET в феврале 2002 года. На текущий момент последняя версия — C# 8.0, которая была выпущена в сентябре 2019 года вместе с .NET Core 3.0.

Роль платформы .NET в разработке на C#

Когда говорят о C#, часто имеют в виду технологии, предоставляемые платформой .NET, такие как Windows Forms, WPF, ASP.NET и Xamarin. И наоборот, при упоминании .NET часто подразумевают C#. Однако, хотя эти понятия связаны, они не должны быть тождественными. C# был специально создан для работы с фреймворком .NET, но сама платформа .NET имеет более широкий контекст.

Билл Гейтс однажды заявил, что .NET — это лучшее, что создала компания Microsoft, и у него есть весомые основания для такого мнения. Фреймворк .NET представляет собой мощную платформу для разработки приложений. Вот несколько ключевых особенностей:

  • Поддержка различных языков. Основа .NET — общеязыковая среда исполнения Common Language Runtime (CLR), что позволяет использовать несколько языков программирования. Помимо C#, поддерживаются VB.NET, C++, F# и другие диалекты, связанные с .NET, такие как Delphi.NET. Код, написанный на любом из этих языков, компилируется в сборку на общем промежуточном языке CIL (Common Intermediate Language) — своего рода «ассемблер» платформы .NET. Это позволяет создавать модули приложения на разных языках.
  • Богатая библиотека классов. .NET предоставляет единую библиотеку классов для всех поддерживаемых языков. Независимо от того, разрабатываем ли мы текстовый редактор, чат или сложный веб-сайт на C#, мы всегда используем библиотеку классов .NET.
  • Разнообразие технологий. CLR и базовая библиотека классов — это основа для целого набора технологий, доступных разработчикам при создании различных типов приложений. Например, для работы с базами данных есть технологии ADO.NET и Entity Framework Core. Для создания графически насыщенных приложений есть WPF и UWP. Для более простых графических приложений используются Windows Forms. Для мобильной разработки — Xamarin. Для веб-разработки — ASP.NET и т.д.

Таким образом, платформа .NET играет важную роль в разработке на C#. Когда говорят о C#, часто имеют в виду технологии, такие как Windows Forms, WPF, ASP.NET и Xamarin, предоставляемые платформой .NET. В то же время платформа .NET включает в себя гораздо больше, чем просто C#.

Билл Гейтс называл .NET одним из лучших созданий Microsoft, и есть весомые основания для такого утверждения. Фреймворк .NET представляет собой мощную платформу для разработки приложений. Вот несколько ключевых аспектов:

  • Поддержка нескольких языков. .NET базируется на общеязыковой среде выполнения Common Language Runtime (CLR), что позволяет использовать различные языки программирования. Помимо C#, в .NET поддерживаются VB.NET, C++, F# и другие языки, связанные с платформой. Это дает разработчикам гибкость выбора языка в зависимости от их предпочтений и требований проекта.
  • Библиотека классов. .NET предоставляет единую библиотеку классов, которая предлагает широкий набор функциональности для разработки приложений. Благодаря этому разработчики могут использовать готовые компоненты и решения, ускоряя процесс разработки и повышая эффективность.
  • Разнообразие технологий. .NET предлагает различные технологии и инструменты для создания разных типов приложений. Например, для веб-разработки доступны ASP.NET и ASP.NET Core, для создания настольных приложений — Windows Forms и WPF, а для разработки мобильных приложений — Xamarin. Это позволяет разработчикам выбирать подходящую технологию в зависимости от требований и целей проекта.
 

 

.NET Framework и .NET Core: различия и развитие

В течение длительного времени развитие .NET осуществлялось под названием .NET Framework, преимущественно как платформы для Windows. Однако, начиная с 2019 года, разработка этой платформы была прекращена, и последней версией стала .NET Framework 4.8.

В 2014 году Microsoft представила альтернативную платформу — .NET Core, которая заменила устаревший .NET Framework. .NET Core был разработан с целью объединить возможности .NET Framework и добавить новую функциональность. Важно отметить, что .NET Framework ориентирован преимущественно на Windows, в то время как .NET Core — кроссплатформенное решение.

Таким образом, важно понимать различия между .NET Framework и кроссплатформенным .NET Core, которые предоставляют разные наборы возможностей и подходы к разработке приложений.

Преимущества языка C#:

  • Поддержка большинства продуктов Microsoft: C# тесно интегрирован с различными продуктами Microsoft, что облегчает разработку приложений для платформы Windows.
  • Бесплатность некоторых инструментов. Для небольших компаний и индивидуальных разработчиков доступны бесплатные инструменты, такие как Visual Studio, облачная платформа Azure, Windows Server и другие.
  • Фиксированный размер типов данных. Наличие фиксированного размера типов данных, таких как 32-битные int и 64-битные long, обеспечивает «подвижность» языка и упрощает программирование, поскольку вы всегда точно знаете, с какими данными работаете.
  • Автоматическая сборка мусора. Благодаря механизму автоматической сборки мусора большинство разработчиков не нужно беспокоиться о высвобождении памяти. Среда выполнения Common Language Runtime (CLR) самостоятельно управляет сборкой мусора и очисткой памяти.
  • Синтаксический сахар. C# предлагает множество удобных конструкций, называемых «синтаксическим сахаром», которые облегчают чтение и написание кода. Эти конструкции не влияют на процесс компиляции.
  • Низкий порог вхождения. Синтаксис C# имеет схожие элементы с другими языками программирования, что делает его более доступным для новичков и облегчает переход от других языков.
  • Поддержка множества операционных систем. С использованием Xamarin, на C# можно создавать программы и приложения для различных операционных систем, включая iOS, Android, MacOS и Linux.
  • Рыночный спрос. Сегодня во многих регионах есть большое количество вакансий для C#-программистов, что открывает широкие возможности для карьерного роста.

Недостатки C#:

  • Ориентированность на платформу Windows. Язык C# имеет приоритетную ориентацию на платформу Windows, что может ограничивать его применение в других операционных системах.
  • Лицензионная стоимость для крупных компаний. Хотя C# доступен бесплатно для небольших фирм, индивидуальных программистов, стартапов и учащихся, приобретение лицензионной версии для крупных компаний может стать значительной финансовой затратой.

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

Сколько времени потребуется для освоения C#

C# отлично подходит для новичков, так как его изучение и понимание относительно просты. В интернете можно найти множество онлайн-школ, предлагающих обучение C# в течение периода от 1 до 6 месяцев. Кроме того, существуют экспресс-курсы, которые позволяют начинающим освоить основы языка всего за несколько дней. Если у вас уже есть опыт работы с C, C++ или Java, изучение C# будет гораздо проще и быстрее.

Востребованность C# на рынке разработки

C# продолжает удерживать свою позицию в рейтинге наиболее востребованных языков программирования на рынке разработки. Начиная с интереса разработчиков для платформы Windows, C# расширил свою сферу применения и научился работать на различных операционных системах, таких как Mac OS, Linux, iOS и Android. Открытый доступ к коду платформы также позволил снять большинство ограничений на использование C#, что привело к активному развитию и расширению его применения. Он рекомендуется как один из основных языков для разработчиков в любой области.

Язык C# обладает мощным и универсальным инструментарием, позволяющим решать широкий спектр задач. На нём часто разрабатываются веб-приложения, игры, мобильные приложения для Android и iOS, а также программы для платформы Windows. Благодаря обширному набору инструментов и средств, возможности разработки на C# практически не имеют ограничений. Хотя другие языки программирования также могут решать эти задачи, некоторые из них более узкоспециализированы, требуют дополнительных инструментов сторонних разработчиков, в то время как C# предлагает более быстрое, простое и ресурсно-эффективное решение широкого спектра задач.

В отношении зарплаты программистов, работающих на C#, статистика Хабр.Карьеры показывает, что она обычно варьируется от 60 до 200 тысяч рублей, со средней зарплатой около 100 тысяч рублей.

Таким образом, платформа .NET — неотъемлемая часть разработки на C# с разнообразными инструментами и ресурсами, которые помогают разработчикам создавать мощные и эффективные приложения.
 

Перспективы будущего C#

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

 

Источник:   blog.geekbrains.by

 



Фото

История языка программирования C


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

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

Создание языка C

Предшественники языка C

История языка C начинается с разработки языка B, который был создан Кеном Томпсоном в Bell Labs в конце 1960-х годов. Язык B, в свою очередь, был основан на языке BCPL (Basic Combined Programming Language), разработанном Мартином Ричардсом. BCPL был создан для написания компиляторов и операционных систем, и его простота и эффективность стали основой для будущих разработок. BCPL предоставил программистам мощные инструменты для работы с памятью и ресурсами системы, что стало важным шагом в эволюции языков программирования.

Разработка языка C

В начале 1970-х годов Деннис Ритчи и Брайан Керниган в Bell Labs начали работу над улучшением языка B. Они стремились создать язык, который был бы более мощным и гибким, сохраняя при этом простоту и эффективность. В результате этих усилий в 1972 году появился язык C. Основной целью разработки языка C было создание инструмента, который позволял бы эффективно писать системное программное обеспечение, такое как операционные системы и компиляторы. Язык C быстро завоевал популярность благодаря своей универсальности и мощным возможностям.

Основные особенности языка C

Язык C был разработан с учетом следующих ключевых особенностей:

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

Развитие и стандартизация

Публикация "The C Programming Language"

В 1978 году Деннис Ритчи и Брайан Керниган опубликовали книгу "The C Programming Language", которая стала основным руководством по языку C. Эта книга, часто называемая "K&R" по именам авторов, сыграла ключевую роль в популяризации языка и его стандартизации. "K&R" не только описала синтаксис и семантику языка, но и предложила множество примеров и практических рекомендаций, что сделало ее незаменимым ресурсом для программистов.

ANSI C и ISO C

В 1983 году Американский национальный институт стандартов (ANSI) начал работу по стандартизации языка C. В 1989 году был опубликован стандарт ANSI C, также известный как C89. В 1990 году этот стандарт был принят Международной организацией по стандартизации (ISO) и стал известен как ISO C. Стандартизация языка C позволила создать единые правила и рекомендации для разработчиков, что способствовало улучшению качества и совместимости программного обеспечения.

Развитие стандартов C

С тех пор язык C продолжал развиваться, и были выпущены новые стандарты:

  • C99: В 1999 году был принят стандарт C99, который добавил новые возможности, такие как новые типы данных (например, long long int), новые функции стандартной библиотеки и улучшения в синтаксисе. C99 также включил поддержку новых возможностей для работы с массивами и указателями, что сделало язык еще более мощным и гибким.
  • C11: В 2011 году был принят стандарт C11, который включил новые возможности многопоточности, улучшения в работе с памятью и другие усовершенствования. C11 также добавил поддержку атомарных операций и улучшил возможности работы с многопоточными программами, что стало важным шагом в развитии языка.
  • C18: В 2018 году был принят стандарт C18, который в основном включал исправления ошибок и уточнения предыдущих стандартов. C18 не добавил значительных новых возможностей, но улучшил стабильность и совместимость языка, что сделало его еще более надежным инструментом для разработки программного обеспечения.

Влияние на другие языки программирования

Языки, вдохновленные C

Язык C оказал значительное влияние на разработку многих других языков программирования. Вот некоторые из них:

  • C++: Разработанный Бьярне Страуструпом в начале 1980-х годов, C++ расширяет C, добавляя объектно-ориентированные возможности. C++ сохранил многие особенности C, такие как синтаксис и управление памятью, но добавил классы, наследование и полиморфизм, что сделало его мощным инструментом для разработки сложных приложений.
  • Objective-C: Этот язык, разработанный Брэдом Коксом и Томом Лавом в 1980-х годах, добавляет объектно-ориентированные возможности к C и используется для разработки приложений для macOS и iOS. Objective-C сочетает в себе мощь C с гибкостью объектно-ориентированного программирования, что сделало его популярным выбором для разработки приложений под платформы Apple.
  • Java: Разработанный Джеймсом Гослингом и его командой в Sun Microsystems в середине 1990-х годов, Java заимствует синтаксис и многие концепции из C и C++. Java была разработана с учетом кроссплатформенности и безопасности, что сделало ее популярным выбором для разработки веб-приложений и корпоративного программного обеспечения.
  • C#: Разработанный Microsoft в начале 2000-х годов, C# также заимствует многие идеи из C и C++, но ориентирован на разработку приложений для платформы .NET. C# сочетает в себе мощь C++ с простотой и удобством использования, что сделало его популярным выбором для разработки приложений под Windows и другие платформы.

Влияние на системное программное обеспечение

Язык C также сыграл ключевую роль в разработке системного программного обеспечения. Операционные системы, такие как UNIX и Linux, были написаны на C, что обеспечило их портативность и эффективность. Многие компиляторы, интерпретаторы и другие системные утилиты также были разработаны на C. Благодаря своей мощности и гибкости, C стал основным инструментом для разработки системного программного обеспечения, что сделало его незаменимым для программистов, работающих в этой области.

Заключение

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

 

Источник:   sky.pro

 



Фото

Установка FTP-сервера на Ubuntu


    Попробуйте настроить FTP-сервер по этой инструкции — я расскажу, как установить FTP-сервер на Ubuntu 25.04, настроить сервер vsftpd и подключить защищённое FTP-соединение простым способом. 

 

Установка VSFTPD

 

VSFTPD прост в установке — он доступен в стандартных репозиториях Ubuntu. Откроем терминал и выполним следующую команду:

    sudo apt install vsftpd -y
 

Запуск и настройка автозагрузки VSFTPD

 

После установки запустим VSFTPD:

    sudo systemctl start vsftpd
 

Совет: для настройки автозагрузки VSFTPD при запуске системы выполните команду   sudo systemctl enable vsftpd

 

Проверка состояния VSFTPD

 

После запуска службы проверим ее состояние:

    sudo systemctl status vsftpd
 

В выводе отобразится текущий статус службы VSFTPD. Если она запущена корректно, мы увидим сообщение, что VSFTPD активен и работает (Active: active (running)).

Пример вывода sudo systemctl status vsftpd:

    ● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2024-06-23 14:35:26 UTC; 2h 15min ago
     Main PID: 12345 (vsftpd)
     Tasks: 1 (limit: 4915)
     Memory: 1.3M
     CGroup: /system.slice/vsftpd.service
             └─12345 /usr/sbin/vsftpd /etc/vsftpd.conf
 

Настройка файрвола для FTP

 

Если на сервере включен файрвол, следует открыть порты для FTP, чтобы обеспечить доступ к серверу.

В примере используем UFW (Uncomplicated Firewall). Команды далее могут отличаться в зависимости от вашего брандмауэра.

1. По умолчанию FTP использует порты 20 и 21 (TCP-трафик), а также диапазон 30000-31000 (пассивный режим FTP). Чтобы открыть их, выполним команды:

    sudo ufw allow 20/tcp
    sudo ufw allow 21/tcp
    sudo ufw allow 30000:31000/tcp
 

2. Перезапустим файрвол для применения изменений:

    sudo ufw reload
 

3. Убедимся, что правила файрвола применены корректно:

    sudo ufw status
 

Пример вывода sudo ufw status:

    Status: active

To                         Action      From
--                         ------      ----
20/tcp                     ALLOW       Anywhere
21/tcp                     ALLOW       Anywhere
30000:31000/tcp            ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere
 

Настройка FTP-сервера в Ubuntu

Основная настройка

 

Конфигурационный файл VSFTPD находится в директории /etc/vsftpd.conf. Чтобы его отредактировать, можно воспользоваться любым текстовым редактором, например nano:

    sudo nano /etc/vsftpd.conf
 

Для обеспечения безопасности и эффективности работы сервера изменим конфигурационный файл VSFTPD в соответствии с настройками.

1. Отключим анонимный доступ, заменив значение параметра anonymous_enable на NO:

    anonymous_enable=NO
 

2. Для разрешения входа на сервер локальным пользователям установим значение параметра local_enable на YES:

    local_enable=YES
 

3. Разрешим команды записи. Чтобы пользователи могли загружать файлы на сервер, установим значение параметра write_enable на YES:

    write_enable=YES
 

4. Настроим права доступа для новых файлов, создаваемых пользователями. Их автоматическое назначение осуществляется с помощью параметра local_umask. Значение 022 позволяет владельцу файла записывать, читать и выполнять, а всем остальным — читать и выполнять:

    local_umask=022
 

Набор прав состоит из трех цифр:

  • первая — права владельца,
  • вторая — права группы владельца,
  • третья — права остальных пользователей.

Каждая из них может принимать значения:

  • 0 — нет прав;
  • 1 — выполнение;
  • 2 — запись;
  • 3 — запись и выполнение;
  • 4 — чтение;
  • 5 — чтение и выполнение;
  • 6 — чтение и запись;
  • 7 — чтение, запись и выполнение.

Новые файлы и директории будут создаваться с правами, которые исходят из полного набора (777) за вычетом значений local_umask. Например, маска 022 означает набор прав 755.

 

5. Включим отображение приветственных сообщений при входе в директории:

    dirmessage_enable=YES
 

Для настройки текста сообщений следует перейти в интересующую директорию и создать в ней файл .message. Когда пользователь будет переходить в данную директорию, он будет получать сообщение, текст которого указан в файле.

 

6. Для корректной работы файрвола установим использование порта 20 для передачи данных:

    connect_from_port_20=YES
 

7. Чтобы ограничить пользователей их домашними директориями, установим значение параметра chroot_local_user на YES:

    chroot_local_user=YES
    allow_writeable_chroot=YES
 

Параметр allow_writeable_chroot используется, чтобы разрешить запись в домашнюю директорию пользователя при использовании chroot_local_user=YES.

 

8. Зададим корневую директорию для каждого пользователя:

    user_sub_token=$USER
    local_root=/home/$USER/ftp
 

9. После внесения всех изменений сохраним файл (Ctrl+O в nano), закроем редактор (Ctrl+X в nano) и перезапустим службу VSFTPD для применения изменений:

    sudo systemctl restart vsftpd
 

Тестирование VSFTPD

 

1. Проверим корректность применения настроек. Для начала создадим тестового пользователя:

    sudo adduser testuser
    sudo passwd testuser
 

2. Создадим необходимые директории и настроим на них права:

    sudo mkdir -p /home/testuser/ftp/upload
    sudo chown nobody:nogroup /home/testuser/ftp
    sudo chmod a-w /home/testuser/ftp
    sudo chown -R testuser:testuser /home/testuser/ftp/upload
 

3. Добавим пользователя в список пользователей VSFTPD:

    echo "testuser" | sudo tee -a /etc/vsftpd.userlist
 

4. Подключимся к серверу с учетными данными тестового пользователя и убедимся в возможности загружать файлы в директорию /upload. Можно использовать любой FTP-клиент, в рамках инструкции будем пользоваться FileZilla.

 

Настройка часового пояса

 

Чтобы сервер использовал локальное время, откроем конфигурационный файл VSFTPD и установим параметр use_localtime на YES:

    use_localtime=YES
 

Настройка логов

 

Для настройки логирования перейдем в конфигурационный файл VSFTPD и включим логирование всех FTP-транзакций:

    xferlog_enable=YES
    xferlog_std_format=YES
 

Параметр xferlog_std_format позволяет использовать стандартный формат логов.

Также следует указать корректный путь к файлу логов (обычно /var/log/vsftpd.log):

    xferlog_file=/var/log/vsftpd.log
 

Настройка PAM-сервиса

 

PAM (Pluggable Authentication Modules) — это система аутентификации, используемая в UNIX-подобных ОС, включая Linux. PAM позволяет администраторам настраивать политику аутентификации для различных приложений и служб. Для этого используется набор модулей, которые могут быть включены и настроены по мере необходимости. 

Для использования PAM необходимо предварительно включить его в файле /etc/vsftpd.conf.

1. Откроем файл /etc/vsftpd.conf:

    sudo nano /etc/vsftpd.conf
 

2. Отредактируем строку pam_service_name:

    pam_service_name=vsftpd
 

Для дальнейшей настройки сервиса PAM в VSFTPD следует внести изменения в файл /etc/pam.d/vsftpd. Внутри него — инструкции, которые PAM использует для управления аутентификацией пользователей при подключении к FTP-серверу. 

3. Откроем файл конфигурации PAM для VSFTPD:

    sudo nano /etc/pam.d/vsftpd
 

4. Настроим параметры аутентификации в соответствии со списком:

auth    required    pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
auth    required    pam_shells.so
auth    include     common-auth
account include     common-account
session include     common-session
 
  • auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed — отказывает в доступе пользователям из файла /etc/vsftpd.ftpusers.
  • auth required pam_shells.so — проверяет, что оболочка пользователя разрешена.
  • auth include common-auth — включает общие правила аутентификации.
  • account include common-account — включает общие правила управления учетными записями.
  • session include common-session — включает общие правила управления сеансами.
 

5. Создадим файл списка пользователей:

    sudo nano /etc/vsftpd.ftpusers
 

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

6. Перезапустим службу VSFTPD:

    sudo systemctl restart vsftpd
 

Создание пользователей

 

Для создания нового пользователя на сервере выполним команду:

    sudo adduser ftpuser
 

Далее следует ввести пароль для нового пользователя и несколько дополнительных данных (имя, номер телефона и прочее). Можно оставить эти поля пустыми, нажав Enter.

Для назначения или изменения пароля пользователя нужно выполнить команду sudo passwd ftpuser, ввести новый пароль и подтвердить его.

Настройка домашних папок

1. Создадим домашнюю папку пользователя:

    sudo mkdir -p /home/ftpuser/ftp 
 

2. Домашний каталог пользователя должен быть защищен от записи, чтобы соблюсти требования безопасности VSFTPD:

sudo chown nobody:nogroup /home/ftpuser/ftp
sudo chmod a-w /home/ftpuser/ftp
 

3. Далее создадим папку, в которую пользователь сможет загружать файлы, и настроим права доступа:

sudo mkdir -p /home/ftpuser/ftp/upload
sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp/upload
sudo chmod -R 0755 /home/ftpuser/ftp/upload
 

Настройка анонимного или только авторизованного доступа

VSFTPD поддерживает доступ как анонимных, так и авторизованных пользователей. Для настройки политики следует внести изменения в конфигурационный файл.

Анонимный доступ

Если нам нужно разрешить анонимный доступ к FTP-серверу, следует указать для параметра anonymous_enable значение YES в конфигурационном файле /etc/vsftpd.conf:

    anonymous_enable=YES
 

Авторизованный доступ

Чтобы разрешить доступ к FTP-серверу авторизованным пользователям, укажем для параметра local_enable значение YES:

    local_enable=YES
 

Разрешение / запрет доступа по SSH

Все настройки доступа к серверу по SSH находятся в конфигурационном файле /etc/ssh/sshd_config. В нем описываются разрешающие и запрещающие правила.

Для разрешения или запрета доступа к серверу по SSH группе пользователей следует указать в конфигурационном файле одну из следующих строк соответственно:

    AllowGroups ftpusers
    DenyGroups ftpusers
 

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

    AllowUsers ftpuser
    DenyUsers ftpuser
 

Группа ftpusers и пользователь ftpuser указаны в качестве примера.

 

Для применения новых правил перезапустим службу SSH:

    sudo systemctl restart ssh
 

Порядок правил, указанных в конфигурационном файле SSH, имеет важное значение в определении политики доступа пользователя. Например, первым указано правило, запрещающее пользователям группы ftpusers доступ по SSH, а затем указано правило, разрешающее доступ пользователю ftpuser1 (входящему в группу ftpusers). 

В таком случае у пользователя ftpuser1 будет доступ к серверу по SSH. При установке этих правил в обратном порядке, пользователь ftpuser1 не получит доступ по SSH.

Настройка SSL/TLS

Обеспечение безопасности FTP-соединений может обеспечить SSL/TLS-протокол.  

1. Создадим директорию,  в которой будут храниться SSL-сертификаты и ключи:

    sudo mkdir /etc/ssl/private
 

2. Создадим самоподписанный сертификат:

 sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem

Ключ будет действителен в течение 10 лет.

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

 

3. Для использования созданного сертификата откроем конфигурационный файл VSFTPD:

    sudo nano /etc/vsftpd.conf
 

4. Внесем в него изменения в соответствии со следующим списком:

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
 
  • rsa_cert_file и rsa_private_key_file — указывают путь к сертификату и приватному ключу.
  • ssl_enable=YES — включает SSL.
  • allow_anon_ssl=NO — запрещает анонимный доступ через SSL.
  • force_local_data_ssl=YES и force_local_logins_ssl=YES — требуют использование SSL для всех данных и логинов локальных пользователей.
  • ssl_tlsv1=YES, ssl_sslv2=NO, ssl_sslv3=NO — включают TLSv1 и отключают устаревшие SSLv2 и SSLv3.
  • require_ssl_reuse=NO — отключает требование повторного использования SSL-сессий.
  • ssl_ciphers=HIGH — устанавливает использование только сильных шифров.
 

5. После внесения изменений сохраним файл и перезапустим службу VSFTPD:

    sudo systemctl restart vsftpd

При установке SSL/TLS-сертификатов подключение через FTP-клиенты осуществляется стандартным путем.

 

Проверка подключения к серверу через FTP-клиент

 

Теперь FTP-сервер настроен и готов принимать безопасные соединения от клиентов.

Популярные программы, позволяющие подключаться к FTP-серверам, — FileZilla, WinSCP, FAR Manager, Total Commander, Midnight Commander и Cyberduck. Далее будем использовать наиболее известный кроссплатформенный FTP-клиент — FileZilla.

Для его установки в Ubuntu выполним команду:

    sudo apt-get install filezilla

Для подключения к FTP-серверу следует заполнить поля Хост (IP-адрес сервера), Имя пользователяПароль и нажать на кнопку Быстрое соединение. После подключения к FTP-серверу в правой части окна появится список директорий, доступных для данного пользователя.

 

 

Заключение

 

Настройка и управление FTP-сервером с использованием VSFTPD позволяет обеспечить надежную и безопасную передачу файлов. Следуя руководству вы сможете эффективно настроить FTP-сервер, реализовать защиту соединения через SSL/TLS и управлять доступом пользователей.



Фото

История Ассемблера


Ассемблер (англ. «Assembler») — это низкоуровневый язык программирования, который представляет собой промежуточное звено между машинным кодом и высокоуровневыми языками программирования.

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

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

 

Пример кода на ассемблере. 

 

    Начинают изучение программирования обычно с вывода на экран строки «Hello, world!». В языке программирования Python для этого достаточно одной команды:

                print("Hello, World!")

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

          .MODEL SMALL
          .STACK 100h
          .DATA
          HelloMessage DB 'Hello, World!',13,10,'$'
         .CODE
         START:
         mov ax,@data
         mov ds,ax
         mov ah,9
         mov dx,OFFSET HelloMessage
         int 21h
        mov ah,4ch
        int 21h
        END START

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

Кратко про процессоры и машинный язык

    Для более полного понимания языка ассемблера начнем с основ работы процессора и того, на каком языке можно общаться с ним.

 

Схематическое изображение уровня языков программирования.

    Процессор представляет собой электронное устройство, которое, несмотря на свою маленькую размерность сегодня (раньше процессоры занимали целые залы), не обладает способностью понимать слова или цифры. Его реакция основана исключительно на двух уровнях напряжения: высокий уровень соответствует «1», а низкий уровень — «0». Таким образом, каждая команда процессора представляет собой последовательность нулей и единиц: «1» — это импульс, а «0» — его отсутствие.

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

    Например, в архитектуре Intel 8088 инструкция 0000001111000011B представляет операцию сложения двух чисел, в то время как 0010101111000011B выполняет вычитание.

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

    Поэтому был разработан язык ассемблера, в котором операции обозначаются буквами и сокращениями английских слов, отражающих суть команды. Например, команда mov ax, 6 означает: «переместить число 6 в регистр AX».

Основы ассемблера

Ниже приведена таблица с примерами машинного кода, соответствующими инструкциями на ассемблере и их описаниями:

 

История создания ассемблера

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

 

ЭВМ ENIAC на электронных лампах.

    Проблема была решена, когда ЭВМ научились хранить программы в памяти. В 1950 году была разработана первая программа-транслятор, которая переводила программы, написанные на понятном человеку языке, в машинный код. Эта программа была названа программой-сборщиком, а язык программирования получил название «ассемблера» (от английского слова «assembler» — сборщик). Впервые этот термин стал использовать английский учёный Морис Уилкс (Maurice Wilkes).

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

Как устроен язык ассемблер

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

 

Код ассемблера из кодов операций и операндов.

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

Операции в языке ассемблера имеют мнемоническую форму, что делает их удобными для запоминания:

  • ADD — сложение (от англ. addition);
  • SUB — вычитание (от англ. subtraction);
  • MUL — умножение (от англ. multiplication) и так далее.

Регистры и ячейки памяти получают символические имена, например:

  • EAXEBXAXAH — имена для регистров;
  • mem1 — имя для ячейки памяти.

Пример команды сложения чисел из регистров AX и BX:

add ax, bx

И вот команда вычитания чисел из регистров AX и BX:

sub ax, bx

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

Некоторые из них:

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

Не думайте, что ассемблер — это просто набор инструкций процессора с удобной записью для программиста. Это полноценный язык программирования, на котором можно реализовать циклы, условные операторы, процедуры и функции.

Вот пример ассемблерного кода, который выводит на экран цифры от 1 до 10:

   section .text global _start _start: mov ecx,10 mov eax, '1'
   label1: mov [num], eax mov eax, 4 mov ebx, 1 push ecx
   mov ecx, num
   mov edx, 1
   int 0x80
   mov eax, [num] sub eax, '0' inc eax add eax, '0' pop ecx loop label1
   mov eax,1
   int 0x80
   section .bss num resb 1
 

Почему для разных семейств процессоров нужен свой ассемблер

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

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

Кому и зачем нужен язык ассемблера?

    Ассемблер, даже по нашему примеру «Hello, World!», показывает, что он не так удобен для разработки, как языки высокого уровня. Большие программы на этом языке уже никто не пишет, но есть области, где он становится незаменимым: 

  1. Разработка встроенных программ для микроконтроллеров. Микроконтроллеры устанавливаются в системах сигнализации, пультах управления, датчиках, бытовой технике, модемах и других устройствах. Микроконтроллеры даже используются в робототехнике и спутниковых навигационных системах. Память у них ограничена, поэтому ассемблер идеально подходит для их программирования, так как каждая его команда транслируется в одну команду в двоичном коде. Это позволяет определить время выполнения программы и объем памяти, необходимый для ее хранения, исходя из исходного текста программы.
  2. Написание драйверов устройств и некоторых компонентов операционных систем, например, ядра или загрузчика. Некоторые любительские операционные системы, такие как MenuetOS и KolibriOS, полностью написаны на ассемблерном коде. Его также можно найти и в программах для игровых приставок и мультимедийных кодеков.
  3. Реверс-инжиниринг — обратная разработка программ. Область используется для понимания работы программ и их алгоритмов в случаях, когда исходный код не доступен по каким-либо причинам. Этим занимаются антивирусные компании, исследующие вирусы и трояны, создатели драйверов и операционных систем, а также просто любопытные люди. Кроме того, компьютерные злоумышленники также активно используют реверс-инжиниринг для взлома программ, поиска уязвимостей, написания вирусов, генерации ключей и прочих противоправных действий.

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

 

Востребованность программистов на ассемблере в 2025

    Программисты на ассемблере востребованы, хотя на веб-сайтах по поиску работы, вероятнее всего, вы не найдете вакансий с заголовками «Требуется программист на ассемблере». Зато там много объявлений, которые требуют знание языка в дополнение к языкам высокого уровня, таким как C, C++ или Python. Вакансии могут быть связаны с реверс-инженерингом, компьютерной безопасностью, разработкой драйверов и программ для микроконтроллеров/микропроцессоров, а также системным программированием и другими областями.

    Предлагаемая заработная плата обычно соответствует стандартам сферы информационных технологий и может варьироваться от 80 до 300 тыс. руб. в зависимости от уровня квалификации и опыта кандидата.

 

Стоит ли начинать изучение программирования с языка ассемблера

    Нет, такой подход не рекомендуется. На это есть несколько причин:

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

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

 

Источник: blog.skillfactory.ru

 

 



Фото

MiniDLNA - домашний медиасервер


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

   

    Сервер minidlna можно установить как на устройства под управлением Windows, так и под управлением Linux. Сервер очень нетребователен к ресурсам. 

    Для домашнего медиасервера не нужна высокая производительность, но для передачи видео в высоком разрешении и работы с несколькими сетевыми подключениями компьютер должен соответствовать ряду требований:

  • минимум двухъядерный процессор с частотой от 1 ГГц;
  • 4 ГБ ОЗУ для стабильной работы.

    Minidlna можно установить например на свой ноутбук или же стационарный компьютер, и потом наслаждаться просмотром  своих файлов на любом устройстве в домашней сети.

    В данной статье мы подробно рассмотрим установку minidlna на Ubuntu Linux.

    DLNA (Digital Living Network Alliance) — набор стандартов, которые позволяют передавать и воспроизводить в реальном времени фото, видео и аудио файлы по домашней сети. Поддерживается проводная (Ethernet) и беспроводная (Wi-Fi) связь.

Как установить и настроить MiniDLNA в Ubuntu

 

 

1. Обновление системы

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

    sudo apt update && sudo apt upgrade

Это позволит обновить списки ваших пакетов и установить последние версии установленных пакетов.

2. Установка MiniDLNA

Репозитории Ubuntu по умолчанию включают пакет MiniDLNA, поэтому установить его очень просто. Для установки MiniDLNA используйте следующую команду:

    sudo apt install minidlna

После выполнения этой команды MiniDLNA будет загружена и установлена в вашей системе.

3. Настройка MiniDLNA

Следующий шаг — настроить MiniDLNA для распознавания ваших медиафайлов и их передачи на ваши устройства. 

 Редактирование файла конфигурации

    Файл конфигурации MiniDLNA находится по адресу /etc/minidlna.conf. Вам нужно будет отредактировать этот файл, чтобы указать расположение ваших медиафайлов и настроить другие параметры.

Откройте файл конфигурации с помощью текстового редактора, такого как nano:

    sudo nano /etc/minidlna.conf

Здесь нужно прописать пути к нашим коллекциям и снять комментарии с ряда строк.

# Путь к папке с медиа-файлами
media_dir=A,/mnt/raid_md0/Yandex/Music
media_dir=P,/mnt/raid_md0/Yandex/Foto_and_Video
media_dir=V,/mnt/raid_md0/Kino
# Путь к папке для хранения базы данных и кэша обложек альбомов
db_dir=/var/cache/minidlna
# Путь к папке с лог-файлами
log_dir=/var/log/minidlna
# Имя DLNA-сервера, отображаемое клиентом
friendly_name=My_MiniDLNA
# Автообнаружение новых файлов
inotify=yes

И сохраняем (Ctrl +O).

   В файле конфигурации найдите строки, начинающиеся с media_dir. Вы можете указать различные типы мультимедиа (аудио, видео, изображения), добавив к пути к каталогу префиксы AV, или P.
     Измените значение frendly_name на своё - так будет отображаться имя сервера на клиентах.
Для того, чтобы сервер мог обнаруживать новые файлы параметру inotify необходимо установить значение yes.

4. Запуск и включение MiniDLNA

     После настройки MiniDLNA вам нужно запустить службу и включить её запуск при загрузке.

Запустите службу MiniDLNA с помощью:

    sudo systemctl start minidlna

Чтобы включить автоматический запуск MiniDLNA при загрузке, используйте:

    sudo systemctl enable minidlna

5. Сканирование медиафайлов

    После запуска службы MiniDLNA просканирует ваши медиафайлы и создаст базу данных. Вы можете запустить сканирование вручную, выполнив:

    sudo minidlnad -R

    Эта команда восстанавливает всю базу данных мультимедиа. Процесс может занять несколько минут в зависимости от размера вашей медиатеки.

6. Проверка состояни MiniDLNA

Вы можете проверить состояние службы MiniDLNA, чтобы убедиться, что она работает правильно:

    sudo systemctl status minidlna

Эта команда предоставляет информацию о том, активен ли MiniDLNA и есть ли какие-либо потенциальные проблемы.

 

 

7. Доступ к MiniDLNA с устройств

    Теперь, когда MiniDLNA запущен, вы можете получить доступ к своим медиафайлам с любого устройства, поддерживающего DLNA, в вашей сети. Просто откройте медиаплеер на своём устройстве и найдите указанное вами имя сервера. Ваши медиафайлы должны быть доступны для потоковой передачи.

8. Решение некоторых проблем

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

    sudo ufw allow 1900/udp && sudo ufw allow 8200/tcp

    - Если папки на minidlna отображаются пустыми, то необходимо проверить права доступа к папкам:

    sudo chown -R minidlna:minidlna /path/to/media

    В Ubuntu рекомендуется папку с медиафайлами minidlna вынести за пределы домашнего каталога пользователя.
Возможности у minidlna проиндексировать файлы в /home/%user% нет. И это правильно. Поэтому и нужно вынести медиатеку из домашнего каталога, например в /home/MediaFiles и дать полные права доступа к этой папке:

    sudo mkdir /home/MediaFiles
sudo chmod -R 777 /home/MediaFiles

    - Возможно есть опечатки в файле конфигурации, необходимо еще раз проверить файл и перезапустить сервер:

    sudo systemctl restart minidlna

    MiniDLNA — это мощный, но простой инструмент для потоковой передачи медиафайлов по вашей сети. Следуя этому руководству, вы установили и настроили MiniDLNA в Ubuntu. Теперь вы можете наслаждаться медиафайлами на любом совместимом устройстве в вашей сети. Благодаря простой настройке и минимальному обслуживанию MiniDLNA — отличный выбор для потоковой передачи домашних медиафайлов.



Фото

Как читать excel-файлы (xlsx) при помощи Python


.xlsx – это расширение документа Excel, который может хранить большой объем данных в табличной форме. Более того, в электронной таблице Excel можно легко выполнять многие виды арифметических и логических вычислений.

 

Иногда программистам требуется прочитать данные из документа Excel. В Python для этого есть множество различных библиотек, например, xlrdopenpyxl и pandas. Сегодня мы поговорим о том, как читать excel-файлы (xlsx) при помощи Python, и рассмотрим примеры использования различных библиотек для этих целей.

Для начала
Для проверки примеров этого руководства потребуется какой-нибудь файл Excel с расширением .xlsx, содержащий какие-либо исходные данные. Вы можете использовать любой существующий файл Excel или создать новый. Мы создадим новый файл с именем sales.xlsx со следующими данными:

sales.xlsx

Sales Date Sales Person Amount
12/05/18 Sila Ahmed 60000
06/12/19 Mir Hossain  50000
09/08/20 Sarmin Jahan 45000
07/04/21 Mahmudul Hasan 30000

Этот файл мы и будем читать с помощью различных библиотек Python в следующей части этого руководства.
  

Чтение Excel-файла с помощью xlrd

    Библиотека xlrd не устанавливается вместе с Python по умолчанию, так что ее придется установить. Последняя версия этой библиотеки, к сожалению, не поддерживает Excel-файлы с расширением .xlsx. Поэтому устанавливаем версию 1.2.0. Выполните следующую команду в терминале:

       pip install xlrd == 1.2.0

       После завершения процесса установки создайте Python-файл, в котором мы будем писать скрипт для чтения файла sales.xlsx с помощью модуля xlrd.

Воспользуемся функцией open_workbook() для открытия файла xlsx для чтения. Этот файл Excel содержит только одну таблицу. Поэтому функция workbook.sheet_by_index() используется в скрипте со значением аргумента 0.

Затем используем вложенный цикл for. С его помощью мы будем перемещаться по ячейкам, перебирая строки и столбцы. Также в скрипте используются две функции range() для определения количества строк и столбцов в таблице.

Для чтения значения отдельной ячейки таблицы на каждой итерации цикла воспользуемся функцией cell_value() . Каждое поле в выводе будет разделено одним пробелом табуляции.

   

import xlrd

# Open the Workbook
workbook = xlrd.open_workbook("sales.xlsx")

# Open the worksheet
worksheet = workbook.sheet_by_index(0)

# Iterate the rows and columns
for i in range(0, 5):
    for j in range(0, 3):
        # Print the cell values with tab space
        print(worksheet.cell_value(i, j), end='\t')
    print('')

Запустим наш код и получим следующий результат.

       

Чтение Excel-файла с помощью openpyxl

    Openpyxl – это еще одна библиотека Python для чтения файла .xlsx, и она также не идет по умолчанию вместе со стандартным пакетом Python. Чтобы установить этот модуль, выполните в терминале следующую команду:

pip install openpyxl

После завершения процесса установки можно начинать писать код для чтения файла sales.xlsx.

Как и модуль xlrd, модуль openpyxl имеет функцию load_workbook() для открытия excel-файла для чтения. В качестве значения аргумента этой функции используется файл sales.xlsx.

Объект wookbook.active служит для чтения значений свойств max_row и max_column. Эти свойства используются во вложенных циклах for для чтения содержимого файла sales.xlsx.

Функцию range() используем для чтения строк таблицы, а функцию iter_cols() — для чтения столбцов. Каждое поле в выводе будет разделено двумя пробелами табуляции.

import openpyxl

# Define variable to load the wookbook
wookbook = openpyxl.load_workbook("sales.xlsx")

# Define variable to read the active sheet:
worksheet = wookbook.active

# Iterate the loop to read the cell values
for i in range(0, worksheet.max_row):
    for col in worksheet.iter_cols(1, worksheet.max_column):
        print(col[i].value, end="\t\t")
    print('')

Запустив наш скрипт, получим следующий вывод.

 

Чтение Excel-файла с помощью pandas

    Если вы не пользовались библиотекой pandas ранее, вам необходимо ее установить. Как и остальные рассматриваемые библиотеки, она не поставляется вместе с Python. Выполните следующую команду, чтобы установить pandas из терминала.

pip install pandas

    После завершения процесса установки создаем файл Python и начинаем писать следующий скрипт для чтения файла sales.xlsx.

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

Функция DataFrame() используется для чтения содержимого нашего файла и преобразования имеющейся там информации во фрейм данных. После мы сохраняем наш фрейм в переменной с именем data. А дальше выводим то, что лежит в data, в консоль.

import pandas as pd

# Load the xlsx file
excel_data = pd.read_excel('sales.xlsx')
# Read the values of the file in the dataframe
data = pd.DataFrame(excel_data, columns=['Sales Date', 'Sales Person', 'Amount'])
# Print the content
print("The content of the file is:\n", data)

После запуска кода мы получим следующий вывод.

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

Заключение

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

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



Фото

Выпуск MaxRadio2 версии 1.2.0


          Состоялся новый релиз MaxRadio2 версии 1.2.0. Это проигрыватель  онлайн радиостанций. Программа работает прямо из трея. Радиостанции разбиты по категориям. Имеется редактор плейлиста, с возможностью добавлять и удалять радиостанции. 

Cкачать MaxRadio2

Что нового в MaxRadio2 версии 1.2.0: 

  • Заблокирован запуск дубликата программы, теперь запустиь две копии программы одновременно невозможно. При попытке такого запуска появиться сообщение, что программа уже запущена
  • Обновлён встроенный плейлист радиостанций
  • Добавлена возможность переключения между используемыми библиотеками (Qt и BASS). В линукс по умолчанию используется библиотека Qt, в Windows соответственно BASS.
  • Исправлены мелкие недочеты.

    Программа написана на языке программирования C++, с использованием фреймворка Qt 6.5.3. Имеются версии MaxRadio2 для операционных систем семейства Linux (deb пакет), Windows, а также открытый исходный код программы. Для скачивания имеются только 64 разрядные сборки программы.

Узнать больше и скачать...



Предыдущая     1 2 3 4