Pull to refresh
65
0
Даниил Горбенко @daniilgorbenko

Python Developer

Send message

Смысл есть писать одно и тоже. Каждый человек объясняет по своему, поэтому кому-то будет понятнее из вики взять, а кому-то эту статью прочитать.
Плюс какие-то моменты могут быть не учтены (либо объяснены не достаточно внятно) в вики, а в другой статье может быть описано по-другому, более понятно
Это тоже самое, что сказать "зачем писать статьи по фреймворкам, если есть документация и исходный код?". Чтоб было понятно и больше материала собиралось.

Интересно!
Но... Хотелось бы увидеть программную реализацию алгоритма.

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

Картинка - просто кликбейт, за это извиняюсь!
Про вывод учту) Сначала думал, делать вывод под каждой строчкой с принтом, но потом решил оставить всё же блоками
В следующий раз постараюсь аккуратнее сделать!

Да, совершенно верно:

>>> import sys
>>> a = "hello!"
>>> b = "hello!"
>>> a is b
False
>>> a = sys.intern("hello!")
>>> b = sys.intern("hello!")
>>> a is b
True

Но для этого необходимо явно интернировать строки

Все примеры писал сам, проверял и запускал
Статья — это не перевод, это мой список библиотек, которые я посчитал интересными, которыми пользовался/пользуюсь сам
Если вы хотите запустить Manim, то вам надо через консоль зайти в папку с проектом и запустить: manim -pql main.py PointWithTrace
Под linux, к сожалению, не проверял. Только под win тестировал.
Можно еще написать часть кода, требующую больших вычислений, на том же Cython. Скорость числовых вычислений может вырасти в несколько сотен раз. Это тоже как один из вариантов ускорения там, где не получится использовать numpy.
Да, действительно. На будущее учту. Постараюсь больше картинок добавлять, чтобы было более наглядно видно, как работают алгоритмы.
Сама идея таких алгоритмов мне кажется удивительной. Буквально в пару десятков строчек кода можно сделать что-то, что будет выглядеть как живое (формально) и будет обладать каким-никаким простейшим разумом (коллективным). И при этом будет неплохо справляться с поставленной задачей.
Не совсем так. В примерах не было ни одной строчки написано на чистом Си. У Cython синтаксис больше python, чем С.
поэтому я и написал отчаянные питонисты
Отчаянные питонисты всё еще ждут появления многопоточности с использованием всех ядер, чтоб уже наконец-то начать использовать потоки по полной…
пример смешной, но жизненный
иногда бывает наоборот
человек не знает, что и как ответить, но, начиная размышлять, приходит к ответу
это больше касается джунов, так как они могут знать какие-то вещи, но в голове нет четкой структуры, как эти вещи взаимосвязаны друг с другом, и им надо просто больше стараться говорить
Никогда не понимал собеседования, на которых любят ходить по одному и тому же порочному кругу «решил задачу->пошел дальше->решил задачу->пошел дальше->» без какой-либо конкретики
У них там как будто какого-то чайника попросили «составь план проведения собеседования», а он такой
# PERFECT ALGORITHM
def sobesedovanie(chelovek, number_sobesedovaniya):
	if number_sobesedovanya < 7:
		reshai_zadachy(chelovek, number_sobesedovaniya)
		sobesedovanie(chelovek, number_sobesedovaniya+1)
sobesedovanie("Иван", 1)

Посмотрел ваш блог, интересно получилось. Некоторые вещи и подходы (особенно с моментом очных встреч и с тестированием на небольших практических задачах) для себя подчеркнул.
Создать exe довольно просто
Для этого я просто создал отдельный файл в проекте (назвал его my_setup.py)
И поместил туда следующий код:
import os
name_proj = "test_eel"
noconsole = "" # ставим "" - если нужна консоль, " --windowed " - если не нужна 
onefile = " --onefile " # указываем, что exe должен быть упакован в один файл
if __name__ == "__main__":
    cmd_txt = f'python -m eel main.py front {onefile} {noconsole} --name {name_proj}'
    os.system(cmd_txt)

По итогу у вас должна создаться папка dist с .exe файлом, его можно запускать (тестил только на вин 10)
см. так же тут
А вообще я запускал программу на разных пк, но на всех них стоял google chrome. Вам нужно смотреть, чтобы в eel.start('index.html', mode=«chrome», size=(760, 760)) параметр mode принимал значение того браузера, который есть на стороннем пк. Если не уверены, что там стоит chrome, то стоит сделать mode=«default».
Самым большим плюсом, почему я вообще посмотрел в сторону именно EEL, я бы выделил то, что есть возможность легко разделить логику приложения от графической оболочки. То есть я пишу back на python, так как это мой основной язык, и мне не очень хочется лезть в JS, а другой человек делает всю верстку и логику графической части приложения. И задачи, которые решал python, можно было легко решить при помощи уже готовых библиотек, вместо того, чтобы переписывать эти библиотеки на другой язык.
А так да, конечно, можно использовать другие связки, которые вы описали выше, но они не всегда подходят для конкретных задач.
Это больше похоже на обычное десктопное приложение, где пользователь выполняет роль и клиента и сервера (но при этом полноценно используется html, css и js для графики, а не фреймворки). Но главный плюс такого подхода, что вы можете легко отделить графическую часть от логики приложения. То есть, вы можете написать приложением таким образом, как в статье, но при желании затем разъединить логику python кода от html, css, js, тогда у вас получится полноценное веб-приложение. И по итогу вам не надо будет мучаться, чтобы переписывать код клиента или сервера, так как можно будет заменить вызов функций, обернутых @eel.expose на вызов API.

Information

Rating
Does not participate
Location
Краснодар, Краснодарский край, Россия
Date of birth
Registered
Activity

Specialization

AI Developer
Lead
Python
PostgreSQL
Machine learning
Big data
Neural networks
Math modeling
Algorithms and data structures
Applied math
Golang