Языки программирования lazarus и python + видео обзор

Лучшие IDE для Raspberry Pi

Raspberry Pi — это, может, и не единственный одноплатный компьютер (single-board computer, SBC) на рынке, но он, определённо, является самым популярным. Raspberry Pi пользуется огромное количество людей, он является центром экосистемы, в которую входит множество официальных и неофициальных ресурсов и изделий — от книг и дополнительного оборудования до форумов и учебных курсов. Raspberry Pi снабжён отличной, поддерживаемой в актуальном состоянии документацией. Благодаря Raspberry Pi Foundation регулярно выходят новые модели SBC, появляются и усовершенствования моделей предыдущих поколений. Raspberry Pi, учитывая его серьёзную вычислительную мощность, отлично показывает себя в роли настольного компьютера. Он подходит и тем, кто занимается программированием.

Языки программирования lazarus и python

Из этого материала вы узнаете о том, почему Raspberry Pi имеет смысл рассматривать как компьютер, подходящий для разработчика ПО. Здесь же мы поговорим о выборе интегрированной среды разработки (integrated development environment, IDE). Среди рассмотренных IDE можно найти инструменты для программирования практически на любом языке.

Почему Raspberry Pi отлично подходит в качестве настольного компьютера программиста?

Raspberry Pi, скромный одноплатный компьютер размером с кредитную карточку, скрывает в себе гораздо большую вычислительную мощь, чем кажется на первый взгляд. Так, например, хотя новый Raspberry Pi 4 и не крупнее сравнимых моделей предыдущих поколений, он несёт в себе много улучшений. В нём больше памяти, которая быстрее, чем раньше. Есть варианты с 1, 2, 4Гб RAM, а через некоторое время после выхода появился и вариант с 8Гб памяти. В Pi 4 имеется новая однокристальная система Broadcom BCM2711 и четырёхъядерный 64-битный процессор Cortex-A72 ARM v8, работающий на частоте 1,5 ГГц. В распоряжении пользователя есть пара USB 2.0-портов, два HDMI-порта, способных выводить 4K-видео, двухдиапазонный Wi-Fi-адаптер, Bluetooth 5.0 BLE. Raspberry Pi обладает всеми атрибутами нормального настольного компьютера.

Я, в качестве эксперимента, неделю, в роли настольного компьютера, пользовался Raspberry Pi с 4 Гб памяти. Я с лёгкостью справился со всеми своими обычными делами. Я писал тексты, редактировал изображения и аудиозаписи, смотрел веб-страницы, открывая кучу вкладок браузера. Raspberry Pi достойно справился с этими задачами. А если в таком же качестве использовать 8-гигабайтный вариант платы, то можно будет совершенно спокойно работать, запуская сразу много программ. При таком раскладе скорее окажется так, что работой будет перегружен процессор, но забить под завязку память, вероятно, не удастся. Для Raspberry Pi существует множество дистрибутивов Linux. Поэтому перед нами — отличный миниатюрный компьютер, который можно приспособить под решение самых разных задач. Если поставить на Pi с 4 или 8 Гб памяти какой-нибудь 64-битный дистрибутив Linux, вроде Ubuntu или Raspberry Pi OS (ранее эта ОС называлась Raspbian), можно будет на полную мощность задействовать ресурсы памяти устройства и запускать 64-битные приложения. В результате оказывается, что у программиста, который решил сделать этот компьютер рабочей машиной, есть возможность воспользоваться целой кучей IDE.

У того, что на базе Raspberry Pi можно создать отличный компьютер для программиста, есть несколько причин:

Geany: лучшая многоязычная IDE

Языки программирования lazarus и python

Geany — это нетребовательная к ресурсам и весьма функциональная IDE, пользовательский интерфейс которой, очень хорошо сделанный, основан на GTK+ и Scintilla. Это — универсальная система, поддерживающая несколько языков программирования. В частности — PHP, Java, Perl, Ruby, C++, C и C#. Geany может похвастаться множеством различных полезных возможностей. Среди них — автозавершение ввода, подсветка синтаксиса, возможность сворачивания и разворачивания блоков кода. Эту IDE, потребляющую немного системных ресурсов и дающую возможность писать на множестве языков, можно признать лучшей интегрированной средой разработки для Raspberry Pi.

Среди основных особенностей Geany можно отметить следующие:

BlueJ: лучшая IDE для Java

Языки программирования lazarus и python

BlueJ — это замечательная IDE для Java-разработчиков. Она отличается простым и удобным интерфейсом, существует её портативный вариант. Это — хороший инструмент для тех, кто занимается объектно-ориентированным программированием. BlueJ, помимо написания кода, позволяет выполнять программы. Изначально эта IDE была создана в качестве инструмента для обучения программированию Поэтому она подойдёт начинающим и опытным разработчикам. Учебное прошлое IDE видно, например, в её возможности визуализировать разные сущности и процессы вроде классов, объектов и вызова функций. А опенсорсная библиотека Pi4J из Java SE позволяет работать с аппаратным обеспечением, подключённым к компьютеру.

Среди основных особенностей BlueJ отметим следующие:

Thonny: лучшая IDE для начинающих Python-разработчиков

Языки программирования lazarus и python

Thonny — это продвинутая Python-IDE, которая хорошо подходит для новичков. Хотя пользоваться ей вполне могут и профессионалы, некоторые черты этой IDE говорят о том, что она особенно хороша для начинающих питонистов. Она даёт в распоряжение программиста возможности по пошаговому выполнению выражений, средства визуализации стека вызовов и множество других полезных мелочей. Если новичок возьмёт всё это на вооружение — он не только улучшит свои навыки Python-программирования, но и будет лучше понимать то, что происходит во время выполнения кода.

Вот главные особенности Thonny:

Ninja-IDE

Языки программирования lazarus и python

Вот главные особенности Ninja-IDE:

Greenfoot: лучшая IDE для новичков

Языки программирования lazarus и python

IDE Greenfoot основана на Java. Она ориентирована на обучение программированию. Поэтому в ней можно найти много приятных мелочей вроде системы автозавершения кода и подсветки синтаксиса. Greenfoot отличается чрезвычайно интерактивным интерфейсом, который легко освоить. Хотя этой IDE вполне могут пользоваться и опытные разработчики, она лучше всего подойдёт для, так сказать, «зелёных» программистов.

Вот основные особенности Greenfoot:

IDE Lazarus

Языки программирования lazarus и python

Отличная IDE Lazarus, которую можно запустить на Raspberry Pi, отличается кроссплатформенностью и бесплатностью. Она использует компилятор Free Pascal и прекрасно подходит для быстрой разработки. А именно, код она компилирует очень быстро, поддерживает кросс-компиляцию. Код она тоже выполняет с весьма высокой скоростью. Lazarus поддерживает анализ производительности кода. В ней имеется множество встроенных компонентов, а если их окажется недостаточно, то можно найти дополнительные компоненты в файлах пакетов Lazarus. Перед нами — хорошо документированный опенсорсный проект, поддерживающий множество языков программирования.

Среди особенностей Lazarus можно отметить следующие:

Adafruit WebIDE: лучшая браузерная IDE

Языки программирования lazarus и python

Большинство IDE нужно загружать и устанавливать. А вот Adafruit WebIDE — это интегрированная среда разработки для Raspberry Pi, основанная на веб-технологиях. Вот видеодемонстрация этой IDE. Учитывая то, что эта IDE работает в браузере, она отлично подходит для программирования на Chromebook и даже для разработки программ на планшетных компьютерах. Adafruit WebIDE может компилировать код, написанный на разных языках программирования. Среди них — JavaScript, Ruby и Python. Но то, что эта IDE работает в браузере, не значит, что она бедна возможностями. Работая с ней, код можно загружать в Git-репозиторий. Здесь даже имеется встроенный отладчик и система, упрощающая перемещение по коду.

Среди основных особенностей Adafruit WebIDE можно отметить следующие:

Code::Blocks: лучшая IDE для начинающих C++-программистов

Языки программирования lazarus и python

IDE Code::Blocks ориентирована на C++. Это — бесплатный, опенсорсный, кроссплатформенный проект. Эта IDE поддерживает множество компиляторов, таких, как Clang, Visual C++ и GCC. Это — мощная, но, в то же время, простая и удобная среда разработки. Среди её возможностей — подсветка синтаксиса, автозавершение ввода, поддержка плагинов, возможность работы с блоками кода. Тут имеется интеллектуальный отладчик, с помощью которого удобно искать причины программных ошибок. Хотя эта IDE была создана для разработки на C++, в список поддерживаемых ей языков входят ещё C и Fortran.

Вот её главные особенности:

Итоги

Хотя на рабочих столах программистов обычно встречаются компьютеры, работающие под управлением macOS, Linux и, что там говорить, даже Windows, Raspberry Pi при решении многих задач выглядит на их фоне вполне достойно. Это — отличный вариант второго компьютера. На базе Raspberry Pi можно сделать «песочницу» для всяких экспериментов, эта система вполне может стать и первым компьютером, скажем — для ребёнка, который учится программировать. Существует огромное количество различных IDE, которые позволяют использовать Raspberry Pi для написания кода на практически любом языке программирования. Среди этих IDE есть самые разные проекты — от универсальных, до узкоспециализированных. А некоторые IDE уже встроены в операционные системы, устанавливаемые на Raspberry Pi.

Пользуетесь ли вы Raspberry Pi в качестве рабочей машины программиста?

Источник

Реферат и презентация на тему «Правила работы в среде Lazarus и Phyton»

Выбранный для просмотра документ Правила работы в среде лазарус и питон.docx

Python не требует явного объявления переменных, является регистро-зависим (переменная var не эквивалентна переменной Var или VAR — это три разные переменные) объектно-ориентированным языком.

Во первых стоит отметить интересную особенность Python. Он не содержит операторных скобок (begin..end в pascal или <..>в Си), вместо этого блоки выделяются отступами : пробелами или табуляцией, а вход в блок из операторов осуществляется двоеточием. Однострочные комментарии начинаются со знака фунта «#», многострочные — начинаются и заканчиваются тремя двойными кавычками «»»»».
Чтобы присвоить значение пременной используется знак «=», а для сравнения —
«==». Для увеличения значения переменной, или добавления к строке используется оператор «+=», а для уменьшения — «-=». Все эти операции могут взаимодействовать с большинством типов, в том числе со строками. Например

>>> sample = [1, [«another», «list»], («a», «tuple»)] #Список состоит из целого числа, другого списка и кортежа
>>> mylist = [«List item 1», 2, 3.14] #Этот список содержит строку, целое и дробное число
>>> mylist[0] = «List item 1 again» #Изменяем первый (нулевой) элемент листа mylist
>>> mylist[-1] = 3.14 #Изменяем последний элемент листа
>>> mydict = <«Key 1»: «Value 1», 2: 3, «pi»: 3.14>#Создаем словарь, с числовыми и целочисленным индексами
>>> mydict[«pi»] = 3.15 #Изменяем элемент словаря под индексом «pi».
>>> mytuple = (1, 2, 3) #Задаем кортеж
>>> myfunction = len #Python позволяет таким образом объявлять синонимы функции
>>> print myfunction(list)
3

Вы можете использовать часть массива, задавая первый и последний индекс через двоеточие «:». В таком случае вы получите часть массива, от первого индекса до второго не включительно. Если не указан первый элемент, то отсчет начинается с начала массива, а если не указан последний — то масив считывается до последнего элемента. Отрицательные значения определяют положение элемента с конца. Например:

>>> mylist = [«List item 1», 2, 3.14]
>>> print mylist[:] #Считываются все элементы массива
[‘List item 1’, 2, 3.1400000000000001]
>>> print mylist[0:2] #Считываются нулевой и первый элемент массива.
[‘List item 1’, 2]
>>> print mylist[-3:-1] #Считываются элементы от нулевого (-3) до второго (-1) (не включительно)
[‘List item 1’, 2]
>>> print mylist[1:] #Считываются элементы от первого, до последнего
[2, 3.14]

rangelist = range(10) #Получаем список из десяти цифр (от 0 до 9)
>>> print rangelist
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for number in rangelist: #Пока переменная number (которая каждый раз увеличивается на единицу) входит в список…
# Проверяем входит ли переменная
# numbers в кортеж чисел (3, 4, 7, 9)
if number in (3, 4, 7, 9): #Если переменная number входит в кортеж (3, 4, 7, 9).
# Операция « break » обеспечивает
# выход из цикла в любой момент
break
else :
# « continue » осуществляет «прокрутку»
# цикла. Здесь это не требуется, так как после этой операции
# в любом случае программа переходит опять к обработке цикла
continue
else :
# « else » указывать необязательно. Условие выполняется
# если цикл не был прерван при помощи « break ».
pass # Ничего не делать

if rangelist[1] == 2:
print «The second item (lists are 0-based) is 2»
elif rangelist[1] == 3:
print «The second item (lists are 0-based) is 3»
else :
print «Dunno»

# arg2 и arg3 — необязательые аргументы, принимают значение объявленное по умолчни,
# если не задать им другое значение при вызове функци.
def myfunction(arg1, arg2 = 100, arg3 = «test»):
return arg3, arg2, arg1
#Функция вызывается со значением первого аргумента — «Argument 1», второго — по умолчанию, и третьего — «Named argument».
>>>ret1, ret2, ret3 = myfunction(«Argument 1», arg3 = «Named argument»)
# ret1, ret2 и ret3 принимают значения «Named argument», 100, «Argument 1» соответственно
>>> print ret1, ret2, ret3
Named argument 100 Argument 1

# Следующая запись эквивалентна def f(x): return x + 1
functionvar = lambda x: x + 1
>>> print functionvar(1)
2

Язык Python ограничен в множественном наследовании в классах. Внутренние переменные и внутренние методы классов начинаются с двух знаков нижнего подчеркивания «__» (например «__myprivatevar»). Мы можем также присвоить значение переменной класса извне. Пример:

class My class :
common = 10
def __init__(self):
self.myvariable = 3
def myfunction(self, arg1, arg2):
return self.myvariable

# Следующий класс является наследником класса My class
# наследуя его свойства и методы, ктому же класс может
# наследоваться из нескольких классов, в этом случае запись
# такая: class Otherclass(Myclass1, Myclass2, MyclassN)
class Otherclass(Myclass):
def __init__(self, arg1):
self.myvariable = 3
print arg1

>>> classinstance = Otherclass(«hello»)
hello
>>> classinstance.myfunction(1, 2)
3
# Этот класс не имеет совйтсва test, но мы можем
# объявить такую переменную для объекта. Причем
# t эта переменная будет членом только class instance.
>>> classinstance.test = 10
>>> classinstance.test
10

def somefunction():
try :
# Деление на ноль вызывает ошибку
10 / 0
except ZeroDivisionError:
# Но программа не «Выполняет недопустимую операцию»
# А обрабатывает блок исключения соответствующий ошибке «ZeroDivisionError»
print «Oops, invalid.»

Внешние библиотеки можно подключить процедурой « import [libname]», где [libname] — название подключаемой библиотеки. Вы так же можете использовать команду « from [libname] import [funcname]», чтобы вы могли использовать функцию [funcname] из библиотеки [libname]

import random # Импортируем библиотеку «random»
from time import clock # И заодно функцию «clock» из библиотеки «time»

randomint = random.randint(1, 100)
>>> print randomint
64

Работа с файловой системой

Python имеет много встроенных библиотек. В этом примере мы попробуем сохранить в бинарном файле структуру списка, прочитать ее и сохраним строку в текстовом файле. Для преобразования структуры данных мы будем использовать стандартную библиотеку «pickle»

myfile = file(r«C:\text.txt», «w»)
myfile.write(«This is a sample string»)
myfile.close()

myfile = file(r«C:\text.txt»)
>>> print myfile.read()
‘This is a sample string’
myfile.close()

# Открываем файл для чтения
myfile = file(r«C:\binary.dat»)
loadedlist = pickle.load(myfile)
myfile.close()
>>> print loadedlist
[‘This’, ‘is’, 4, 13327]

Условия могут комбинироваться. 1

>>> lst1 = [1, 2, 3]
>>> lst2 = [3, 4, 5]
>>> print [x * y for x in lst1 for y in lst2]
[3, 4, 5, 6, 8, 10, 9, 12, 15]
>>> print [x for x in lst1 if 4 > x > 1]
[2, 3]
# Оператор «any» возвращает true, если хотя
# бы одно из условий, входящих в него, выполняется.
>>> any(i % 3 for i in [3, 3, 4, 4, 3])
True
# Следующая процедура подсчитывает количество
# подходящих элементов в списке
>>> sum(1 for i in [3, 3, 4, 4, 3] if i == 3)
3
>>> del lst1[0]
>>> print lst1
[2, 3]
>>> del lst1

Глобальные переменные объявляются вне функций и могут быть прочитанны без каких либо объявлений. Но если вам необходимо изменить значение глобальной переменной из функции, то вам необходимо объявить ее в начале функции ключевым словом « global », если вы этого не сделаете, то Python объявит переменную, доступную только для этой функции.

def myfunc():
# Выводит 5
print number

def anotherfunc():
# Это вызывает исключение, поскольку глобальная апеременная
# не была вызванна из функции. Python в этом случае создает
# одноименную переменную внутри этой функции и доступную
# только для операторов этой функции.
print number
number = 3

def yetanotherfunc():
global number
# И только из этой функции значение переменной изменяется.
number = 3

Преимущества Pytho n

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

В связи с этим вы можете писать свои собственные модули для Python на C или C++

В стандартныx библиотеках Python вы можете найти средства для работы с электронной почтой, протоколами
Интернета, FTP, HTTP, базами данных, и пр.

Скрипты, написанные при помощи Python выполняются на большинстве современных ОС. Такая переносимость обеспечивает Python применение в самых различных областях.

Python подходит для любых решений в области программирования, будь то офисные программы, вэб-приложения, GUI-приложения и т.д.

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

Источник

Урок 1. Система программирования LAZARUS

Урок из серии «Программирование в среде Lazarus для школьников»

Среда программирования Lazarus в школьном курсе информатики используется сравнительно недавно.

Уроки предназначены для учащихся 10 классов и всех тех, кто хочет самостоятельно освоить Lazarus.

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

В заключении вы можете посмотреть видеоурок, из которого узнаете о различиях проектов Lazarus и Delphi.

Языки программирования lazarus и python

Скачать последнюю версию Lazarus вы можете по ссылке —//sourceforge.net/projects/lazarus/files/

Краткая справочная информация

Lazarus — среда быстрой разработки программного обеспечения для компилятора Free Pascal, аналогичная Delphi.

Данный проект базируется на оригинальной кроссплатформенной библиотеке визуальных компонентов Lazarus Component Library (LCL).

Кроссплатформенное программное обеспечение — это программное обеспечение, работающее более чем на одной аппаратной платформе и/или операционной системе.

Free Pascal — это компилятор языков Pascal и Object Pascal, работающий под Windows, Linux, Mac OS X, FreeBSD, и другими ОС.

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

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

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

Процесс создания приложения можно разделить на следующие этапы:

1. Создание проекта. В результате на экране появляется пустая форма (окно будущего приложения).

2. Создание графического интерфейса проекта — расположение необходимых элементов, задание размеров, изменение свойств;

3. Написание программного кода, который определит, что будет делать ваша программа.

4. Отладка программы.

Чтобы познакомится с основными инструментами среды разработки, запустим среду программирования.

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

Пуск => Все программы => Lazarus => Lazarus.

При этом запускается оболочка создания приложений, называемая интегрированной средой разработки IDE (Integrated Development Environment). На экране появиться набор окон.

Языки программирования lazarus и python

Вы видите все основные инструменты среды разработки Lazarus:

1. Окно формы — окно будущего приложения.

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

3. Окно Инспектор объектов, содержащее файлы проекта и окно со вкладкой Свойства, в котором вы будете настраивать свойсктва помещенных на форму объектов.

4. Окно Редактор исходного кода, в котором вы будете писать программный код.

Дадим появившимся окнам краткую характеристику.

Главное окно. Здесь располагаются меню, панель инструментов и палитра компонентов.

Языки программирования lazarus и python

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

Невизуальные компоненты видны только на первом этапе создания приложения — при редактировании.

Главное окно остается открытым все время работы IDE. Закрывая его, вы, тем самым, закрываете Lazarus и все открытые в нем окна.

Инспектор объектов содержит четыре страницы

Языки программирования lazarus и python

На первой странице «Свойства» постоянно отображаются все доступные свойства выбранного компонента. В левой колонке содержится список всех свойств выделенного в данный момент компонента, в правой — значения свойств.

Значения свойств можно менять еще до запуска проектируемой программы. Например, для будущего окна вашего приложения (формы) свойство Name имеет значение Form1. Для изменения имени достаточно изменить его в Инспекторе объектов.

На второй странице «События» находятся возможные обработчики событий для выбранного компонента. В левой колонке расположены названия события, в правой — соответствующие процедуры.

Окно Редактора кода. На момент первого запуска оно имеет заголовок Unit1.

Языки программирования lazarus и python

В окне Редактор исходного кода вы будите писать программный код программы, и само окно очень похоже на обычный текстовый редактор. Для удобства при редактировании текста программы строки пронумерованы, предусмотрено выделение цветами:

Текст программы разбивается на части — процедуры и функции.

Основную работу программист производит именно здесь.

Проектировщик форм. У каждого Windows-приложения должно быть хотя бы одно окно.

Lazarus при первом запуске автоматически предлагает пользователю новый проект, открывая пустую форму под названием Form1, и назначает его главным окном.

Языки программирования lazarus и python

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

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

В этом уроке мы познакомились с основными инструментами разработки программ. В следующем уроке мы напишем свою первую программу.

Задание для самостоятельного выполнения

1. Скачать и установить на своем домашнем компьютере среду программирования Lazarus по указанной в начале урока ссылке.

2. Посмотреть видеоурок: «Lazarus. Ввод в курс дела», из которого вы узнаете о различиях проектов Lazarus и Delphi.

Источник

Видео

5 ХУДШИХ языков программирования, которые не стоит учить!

5 ХУДШИХ языков программирования, которые не стоит учить!

Лучшая IDE для Python!

Лучшая IDE для Python!

Java против Python | Какой язык программирования выбрать в 2022

Java против Python | Какой язык программирования выбрать в 2022

Учим python за 7 часов! Уроки Python Полный курс обучения программированию на python с нуля

Учим python за 7 часов! Уроки Python Полный курс обучения программированию на python с нуля

Какой язык программирования учить в 2022?

Какой язык программирования учить в 2022?

Объектно ориентированное программирование в Python за 10 минут!

Объектно ориентированное программирование в Python за 10 минут!

7 языков программирования для Хакера | Какой язык программирования учить в 2022? | UnderMind

7 языков программирования для Хакера | Какой язык программирования учить в 2022? | UnderMind

Создаем свой ЯЗЫК ПРОГРАММИРОВАНИЯ. Лексер, Парсер, Абстрактное синтаксическое дерево (AST)

Создаем свой ЯЗЫК ПРОГРАММИРОВАНИЯ. Лексер, Парсер, Абстрактное синтаксическое дерево (AST)

Ruby vs Python || Сравнение и какой язык программирования выбрать?

Ruby vs Python || Сравнение и какой язык программирования выбрать?

Учим Python за 1 час! #От Профессионала

Учим Python за 1 час! #От Профессионала
Поделиться или сохранить к себе:
Добавить комментарий

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