Найти в Дзене
Автора можно поддержать разовым переводом
Поддержите автораПеревод на любую сумму
Программирование на python. Наложение одного изображения на другое средствами библиотеки pillow
Доброго здоровья читателям моего канала programmer's notes. Поддерживаем канал по программированию на Python. Конечно, встроить одно изображение в другое можно просто на том основании, что благодаря библиотеке pillow у нас есть доступ к каждому пикселю изображения. Но лучше использовать всё таки средства самой библиотеки, как правило это будет быстрее. Наложить одну картинку на другую можно с помощью метода paste(). Я, кстати, о нём писал. Но пришло время познакомиться с ним ближе. Пусть у меня есть две картинки...
3 дня назад
Программирование на python. Масштабирование изображений в библиотеке pillow
Доброго здоровья читателям моего канала programmer's notes. Поддерживаем канал по программированию на Python. По графике я много чего не написал. Будем восполнять. Сегодня об изменении размеров изображения с соблюдением пропорций. Первый подход работает на уменьшение размеров изображения и использует метод thumbnail(). Он хорош для создания миниатюр, т.е. не больших изображений. Пример 1. #!/usr/bin/python3 from PIL import Image img = Image.open('./kotik.jpg', mode='r') dx = img.size[0] / 4 dy = img...
4 дня назад
Программирование на python. PyQt5 и сворачивание окна в трей
Доброго здоровья читателям моего канала programmer's notes. Подписываемся и ставим лайки. Ранее была статья, посвящённая той же теме, но для оконных приложений tkinter. Ну библиотека PyQt тем и славится, что там есть всё (как в Греции). Но я написал программу так, что бы её функциональность была такой же, как в программе на основе tkinter. Ну, а дальше уже творчество читателей. Окно программы имеет такой же внешний вид и как и окно в первой статье (см...
6 дней назад
Программирование на python. tkinter, пиктограмма в трее и модуль pystray
Доброго здоровья читателям моего канала programmer's notes. Подписываемся и ставим лайки. Сегодня продолжении большой темы tkinter. Посмотрим как можно отправлять программу в tray, т.е. переводить её в значок в правом нижнем углу экрана. Нам понадобиться модуль pystray. Установить его можно стандартным способом: pip3 install pystray. Основной принцип работы с модулем pystray: 1. Создать объект Icon и начать опрос событий пиктограммы в трее. При необходимости скрыть основное окно. 2. Обрабатывать меню пиктограммы в трее...
1 неделю назад
"Гляжу на будущность с боязнью" М.Ю. Лермонтов "Да, опять он, — скажете вы, — об искусственном интеллекте". Ну как вам сказать, не совсем, я о человеке. Написать это эссе побудила меня попавшаяся мне в Интернете заметка. Некий человек, видимо не бедный, пишет, что он подарил дочери мобильный телефон только на совершеннолетие. Дочь его, таким образом, получала важные навыки обходиться без внешних информационных систем. Важнейший навык, на случай: если что... В 19-м веке элита нашей страны формировалась в основном из дворянского сословия. Их готовили с детства. Хорошее домашнее воспитание, языки. Потом элитные учебные заведения. Помните Царскоселький лицей? После таких заведений дворяне шли на военную или гражданскую службу. Т.е. целенаправленно готовились люди для управления государством. В действительности в любой стране есть свои механизмы формирования элиты. В Советском Союзе также были механизмы, связанные и с образованием и с идеологией. В конечном итоге, правда, советская элита сдала страну в 1991 году, но это уже совсем другая история. Я подумал, а как готовить элиту страны в будущем? Какие параметры, какие критерии? И мне приходит в голову один критерий. Умение решать вопросы или просто выживать, без подключения к сети. Большинство людей в будущем станут частью глобальной информационной системы, искусственного интеллекта. Отключите их от сети и они просто умрут. А ведь сделать это в будущем можно будет просто "лёгким движением руки". Да, для воспитания новой элиты понадобится понимание руководства страны, понимание родителей, специальные школы и подготовленные учителя. Но это всё решаемые задачи. Главное, чтобы пришло осознание. Вы можете меня спросить: а к чему же вы призываете? Да я ни к чему не призываю, я отслеживаю тенденции. Человек становится придатком всемирной паутины и сам не понимает, что это катастрофа для его интеллекта. А если и осознаёт, то нет у него ни сил, ни возможностей, как это поправить и стать полноценным человеческим существом с самостоятельным интеллектом. Да, на данный момент это ещё не всегда заметно, но тенденция не меняется, а темпы ускоряются. Закончилось тысячелетнее эволюционное развитие умственных способностей человека. Что ждёт человека в ближайшие годы. Перечисляю: не умение писать тексты на естественном языке, не умение понимать сколь нибудь длинный текст на естественном языке, падение знаний иностранных языков, неумение решать простейшие логические и математические задачи, неумение самостоятельно спроектировать какой-либо объём предстоящих работ, неспособность самостоятельно разобраться в юридических делах, абсолютное непонимание политической ситуации и т.д. и т.п. Как такого человека обычно называли? Не скажу этого слова, но оно из области психиатрии. А нас, слава Богу, это не захватило. Есть в жизни счастье, есть. :) Мой канал Философия программирования Краткий обзор моего канала Базовый курс программирования на Python
2 недели назад
Реляционные базы данных и язык SQL. Подмножество DDL и объекты PostgreSQL. Часть 1.
Доброго здоровья читателям моего канала programmer's notes. Подписываемся и ставим лайки. Одним из подмножеств языка SQL является язык DDL - Data Definition Language, т.е. язык описания данных. Для чего нужен язык описания данных? Для того, чтобы создавать структуру объекта базы данных, изменять структуру объекта, а также удалять отдельные объекты. Будет серия статей, начиная с данной, описывающих объекты сервера PostgreSQL. Все объекты сервера, относящиеся к данным, можно разделить на две группы: объекты базы данных и объекты привязанные к конкретной таблице...
2 недели назад
Реляционные базы данных и язык SQL. Обобщённые табличные выражения в PostgreSQL
Доброго здоровья читателям моего канала programmer's notes. Подписываемся и ставим лайки. Сегодня рассмотрим ещё один механизм совместного использования нескольких запросов. Это обобщённые табличные выражения или Common Table Expression (CTE). Понять, что такое обобщённое табличное выражение (CTE) очень просто. Это ещё один способ объединить несколько запросов, вместе с использованием подзапросов и объединением запросов. Специальный оператор (with) позволяет объединить несколько запросов, которые могут обращаться друг к другу...
4 недели назад
Реляционные базы данных и язык SQL. Оконные функции в команде select в PostgreSQL
Доброго здоровья читателям моего канала programmer's notes. Подписываемся и ставим лайки. Хороший инструмент появился некоторое время назад в PostgreSQL. С некоторой натяжкой это можно назвать разновидностью группировки. В некоторых случаях это более удобный её вариант. 1. При использовании оконных функций всегда используется оператор over. 2. С оператором over используются не только специальные функции, но и агрегирующие функции. 3. Оператор over используется только в разделе over. Схему данных используем прежнюю (см...
1 месяц назад
Программирование на python. Библиотека tkinter и простой эмулятор командной строки
Доброго здоровья читателям моего канала programmer's notes. Подписываемся и ставим лайки. tkinter я люблю. Было ощущение, что подборка статей по этой библиотеке какая-то не полная. Я вспомнил, что когда-то я писал что-то вроде такого примтивного эмулятора терминала, используя возможнос tk.Text. Нашел, поубирал всё лишнее, чтобы одним взглядом можно было охватить программу, и решил оформить вот такой статьёй. Мне кажется задача в принципе интересная. Что-то, конечно можно усовершенствовать, но я не стал удлинять и усложнять код...
103 читали · 1 месяц назад
Почтальон звонит и звонит. Сегодня рассмотрю интересную тему, в продолжение других статей из философской подборки о программировании моего канала. Но в начале не много истории. Заниматься олимпиадным программированием мы у себя в Вузе стали ещё с середины 1995-х годов. Мы занимались и подготовкой олимпиадников и собственными олимпиадами. Остановлюсь на истории наших олимпиад. Первые олимпиады были совсем не похожи на традиционные (классические) олимпиады по программированию. Во-первых, мы допускали отсутствие входных или выходных данных. Во-вторых, мы проводили анализ текстов программ и могли дать баллы участнику, даже если его программа не работала, но было видно по её тексту чего достиг этот участник. Последнее существовало в наших олимпиадах довольно долго, правда анализ всех написанных программ мы уже не занимались. Смотрели программы, если была апелляция по результатам олимпиады. В какой-то момент нам захотелось выйти за рамки нашего университета и мы организовали первую очную олимпиаду. Участников оказалось много. И мы продолжили этот опыт. Приезжали студенты со всего нашего региона. Потом пришла идея организовывать заочную олимпиаду. Заочная олимпиада продолжалась сутки. Решения присылались по почте. Проверяли задачи мы уже по заранее заготовленным тестам, но кустарным полуручным способом: простые скрипты позволяли несколько автоматизировать процесс проверки. Обе олимпиады были праздниками и для участников и для организаторов. Ещё одна особенность наших олимпиад, которая проявилась ещё в самом начале нашего пути. Тексты программ готовились организаторами и были оригинальны. Найти такую задачу в интернете было не возможно. Всё изменил 2008-й год. Кризис привёл к тому, что Вузы перестали оплачивать командировки студентов и преподавателей. И мы остались с одной заочной олимпиадой. Долгое время всё шло хорошо, а мы совершенствовали её проведение. От ручной проверки мы ушли. Стали использовать для проверки специальные сервера, которые готовили заранее перед олимпиадой. Наконец, мы пришли к использованию сервера Яндекс.Контест. И это, конечно, было здорово. Теперь основная проблема заключалась в придумывании задач и корректной разработке тестов. Сама же олимпиада проходила чётко и результаты получались сразу после её окончания. И грянул гром. На последней олимпиаде возникло подозрение, что участник для написания программ использовал ИИ. Наказывать его никто не собирается. Дело в другом. Мы теперь не будем знать, кто писал отправляемую на проверку задачу. И это разрушает всю систему нашей заочной олимпиады. Такое ощущение, что она скоропостижно скончалась. Через год мы уже не будем уверены, что в олимпиаде соревнуются только люди. Все смыслы утеряны. Обидно. Обидно в первую очередь потому, что олимпиада по программированию является мощным средством развития именно алгоритмического мышления программиста. Значит таких специалистов будет меньше. Суть не только в олимпиаде. Теперь и задания по программированию вместо школьников и студентов будет выполнять искусственный интеллект. Исчезают инструменты не только подготовки в области программирования, но и просто интеллектуального развития, средством чего долго было программирование. Да, скажете вы, но ведь можно снова вернуться к очной олимпиаде, а проверку способностей учащихся строго проводить в аудитории. Да, разумеется, может мы и попробуем вернуться через год к очной форме. Но ведь смыслы то исчезают и для тех кто учится. Учащиеся же начнут понимать, что его интеллектуальные возможности в той или иной области, очень вероятно, не пригодятся или пригодятся в очень урезанной "кастрированной" форме. Это ещё один звоночек, сигнализирующий о том, что происходило с появлением информационных технологий, а теперь и искусственного интеллекта. Наш "почтальон" звонит не дважды, а снова и снова. Мой канал Философия программирования Краткий обзор моего канала Базовый курс программирования на Python
2 месяца назад
Программирование на языке python. Библиотека matplotlib. Несколько графиков на одном рисунке
Доброго здоровья читателям моего канала programmer's notes. Подписываемся и ставим лайки. Сегодня посмотрим на одном рисунке поместить несколько графиков со своими осями координат. Будем использовать метод subplots(). Ниже представлена программа, реализующая на одном изображении несколько графиков со своими осями координат. #!/usr/bin/python3 import math import matplotlib.pyplot as plt pi = math.pi fig, axis = plt.subplots(2,2, figsize=(10,8) ) fig.suptitle('Графики функций') x = [t for t in range(int(-7 * pi) - 1, int(7 * pi) + 1)] y = [math...
2 месяца назад
Программирование на языке Python. Библиотека pandas, экспорт данных
Доброго здоровья читателям моего канала programmer's notes. Подписываемся и ставим лайки. Данная статья является продолжением статей: статья 1, статья 2, статья 3, статья 4. Сегодня рассматриваем возможности экспорта данных из таблиц DataFrame. Экспорт осуществляется методом to_csv(). Пример #!/usr/bin/python3 import numpy as np import pandas as pd people = {'Фамилия': ['Иванов', 'Петров', 'Сидоров', 'Душечкина'], 'Год рождения': [1999, 1988, 1997, 2001], 'Зарплата': [88000.3, 65000.2, 70000.4, 75000...
2 месяца назад