Это копия, сохраненная 1 августа 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>2072473 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Исходник: https://dumpz.org/bASGKD8cCFDf
>Потом останавливаюсь и понимаю что минуты 3 я думал о том как буду работать с ее кодом, заржал в голос.
Ну ты конечно тормоз, че тут думать инсталишь лабу и готово.
Как переписать генератор в обычный цикл?
a += [{ } for b, c, d in zip(b0, c0, d0) ]
Как-то так?
for for b, c, d in zip(b0, c0, d0):
__a += [{ }]?
Словарь из генератора в список добавляется? Или я что-то путаю?
Седня иду с подругой и думаю как создать функцию где на вход будет мой хуй, а возвращать она будет сосание.
>>2087174 →
Он странный, не так ли?
Аноны, кто-нибудь может пояснить как вытащить при помощи панды лаг автокорелляции выше significance level?
Ну на глазок тут можно накинуть около 750, начерновую сойдет, но может есть какой-то готовый инструмент.
Да, но лучше с append.
>Как переписать генератор в обычный цикл?
>a += [{ } for b, c, d in zip(b0, c0, d0) ]
Объясни своими словами, что он вообще должен делать?
Мне показалось, что это такой способ наплодить словарей по длине наименьшей из трех итераблей. Более очевидный подход будет корявее.
Не ответ на твой вопрос, но что тебе на самом деле нужно, это иде с поддержкой sql. Изменять запросы под изменение задач очевидно, лучше, но не так удобно, поэтому ты и корчишься.
Там нетривиальные запросы можно и на чистом sql написать, а orm для крудов оставить
Можно ли из коробки префоркнуть эвентлуп в отдельном процессе в который имеется возможность скидывать определенные таски, если известно, что они не юзают совместные ресурсы или нужно костылить свое решение?
>Можно ли из коробки
>или нужно костылить свое
Ты уверен, что существуют только эти два варианта?
Я имею ввиду есть ли что-то что можно за 10-20 минут собрать из готовых компонентов или нужно писать менеджмент IPC
Нашел, самое время на 3.9 обновится
https://docs.python.org/3/library/asyncio-task.html#running-in-threads
Я третий назвал, собрать из готовых компонентов за 10-20 минут. Или ты к слову "костылить" придраться хочешь?
И давно ты питонист?
С самого начала были варианты из серии run_in_executor, где ты можешь как в отдельном треде, так и в отдельном процессе что-то запускать.
И этим даже пользовались, чтобы запускать традиционные функции. То есть тут просто несколько более удобный и менее многословный вариант.
И он всё-таки для других целей, чем тут спрашивали, тут история о том, как обходить блокировки, с которыми штатные примитивы асинкио не справляются. Это в первую очередь блокировки из-за файловой системы и вот подобные кейсы.
Задачу надо подробнее описывать, тогда можно будет какое-нибудь решение предлагать. В общем случае никак. В частных тысячи вариантов. Например, сделать задачу, которая обрабатывает другие задачи, и кормить её через PrimrityQueue, или как-то так она называется.
IndexError: index 0 is out of bounds for axis 0 with size 0
Можно как-то получить именно этот элемент, чтобы подебазить его? В логи его записать или что-то ещё?
Нашел вот такое решение:
код программы
k = ord(msvcrt.getch()) #считываем код клавиши
if k == 27: # если клавиша Esc
sys.exit() # завершаем программу
Но программа не закрывается. Что не так делаю?
А не, заработало. В IDE не работало, а после компиляции все норм.
Да просто input() захуячь.
Спасибо, но какая-то херня.
s1 = array([31], dtype=int64)
>>>s1[0]
IndexError: index 0 is out of bounds for axis 0 with size 0
>>>s1.item(0)
IndexError: index 0 is out of bounds for axis 0 with size 0
У меня есть двумерный массив.
При помощь np.where я получаю массив s1, где указаны позиции строк, удовлетворяющих условию.
Пытаюсь извлечь нужное значение - ошибка.
Пытаюсь сконевертировать массив в список и взять нужный элемент s1.tolist()[0] - то же ошибка.
list index out of range
Что за херня?
Кто может на двачовом описать процесс взаимодействия Nginx + Flask app?
В ногинске пишешь proxy_pass 127.0.0.1:7654; #а лучше ::1:7654, потому что короче, но это если ипв6 включен
Запускаешь фласку на 7654 порту.
Всё.
Может быть условие where не срабатывает ни для одного значения в массиве и в результате ты получаешь пустой массив? Чел...
Не знаю, чел(
Numpy такой формат выдаёт.
Да не, я о принципах работы. Типа от двачера Васи на Nginx пришел запрос в порт 7654 итд.
Двачер вася делает запрос на Nginx. Nginx делает запрос во внутренней сетке на приложение в зависимости от настроек. Все.
Но проблема в том, что негде брать эти слова, есть только один сервис через который можно тянуть это все по АПИ, но он платный.
Как так может быть. 2021 году, а таких вещей до сих пор нет.
Если бы все это было, то не было бы заказа для тебя.
Так заплати и сделай. Сам лошара, что не проверил.
Да я бы и спарсил в наглую, но сайтов нигде нормальных нет, есть PyDictionary, окей, там возьмем перевод, есть speechr_recognition, окей тут возьмем аудио, но где взять транскрипцию.
>5к испанских слов с транскрипцией
Качаешь словарь (книгу). Там есть и транскрипция и перевод и уточнение значения.
В плане голоса присмотрись к синтезатором речи от Яндекса (на нейронках). Дешево и оч качественно.
https://ideone.com/YKyAW3
Если запускать код в idle, то этого не происходит.
Какой же я долбоеб. Вопрос снят.
Вызывается при сборке мусора при завершении скрипта. В интерактивном режиме ты какбе сидишь внутри выполняющегося скрипта, там ничего не уничтожается неявно.
есть функция, на входе она принимает объект X
есть также другая функция, которая принимает в себя объекты типа X и возвращает значение Y, того же типа что и X (значение Y определяется вторым аргументом функции, пусть будет Z)
я пытаюсь сделать так, чтобы при одинаковых X и разных Z составить список всех получившихся Y
все Z я засунул в список
получается так:
for Z in Z_list:
Y = func(X, Z)
собственно, в чем проблема:
после первого же Z, у меня дефолтное значение переменной X становится равным Y. то есть у меня получается что: после первого цикла Y = func(X, Z_list[0]), после второго Y = func(func(X, Z_list[0]), Z_list[1]) и тд.
почему так происходит и как это исправить??
Ты где-то обосрался и носишь ссылки на объекты вместо создания новых или мутируешь изначальный объект.
По описанию не скажешь, надо смотреть код.
Уже написали тебе.
Каким образом ты создаёшь объект Y, когда его возвращаешь?
Если у тебя код вида
def func(X, Z):
____Y = X
____Y.some_property = Z
____return Y
то ты в нём меняешь объект X, Y это ссылка на объект X, а не новый объект.
Тебе надо явно создавать новый объект и копировать в него нужные данные из X.
Кто тебе мешает SQLite использовать как хранилище для ключ-значение? Можешь использовать https://pypi.org/project/sqlitedict/ или написать свой костыль.
Можешь юзать LevelDB, если не лень пердолиться - https://plyvel.readthedocs.io/en/latest/index.html
Ну, или какой-нибудь https://tinydb.readthedocs.io/en/latest/ (если ты говноед).
Да, понял, спасибо.
Читаю пока про Celery, но как я понял ему нужен брокер сообщений, а мне бы по простому всё в памяти аппы подержать, без зависимостей.
Проще лучше накати селери или rq.
Для них по сути то только редис один нужен.
Меньше времени потратишь.
Через запятую типа
del a, b, c ?
Или каждую отдельно надо удалять?
Ты это мог в консольке набрать быстрее, чем на вопрос на двач напечать
1274x698, 0:48
path = r'C:\Users\username\Downloads\filename.png'
im = Image.open(path.encode(), "r")
pix = im.load()
size = im.size
w, h = size[0], size[1]
color_space = [0]
for x, y in zip(range(w), range(h)):
if x % 10 == 0:
R = pix[x, y][0:-1][0]
G = pix[x, y][0:-1][1]
B = pix[x, y][0:-1][2]
RGB = R + G + B
if (color_space[-1] == 0) or (color_space[-1] != RGB):
color_space.append(RGB)
как это сделать красиво математически я не ведаю. т.е. чтобы линия уходила строго в противоположенный угол. принципиально менять ничего нельзя. с меня тонна нефти
быстрофикс
Вычисляю значение элемента внутри функции - ошибка.
Вычисляю то же самое за пределами функции - всё нормально.
Брезенхем же.
ну это классика
Код кинь
вангую у тебя внутри возвращается ебалда на типе листа в листе и тебе надо penis[0]
Вот, пожалуйста, безупречный алгоритм, первая точка переходит в первую, последняя в последнюю.
Цикл по короткой грани считаю идеологически более правильным, потому что при цикле по длинной грани у некоторых точек будет одинаковая координата, так что получатся не точки, а полосочки.
scheduler = sched.scheduler(time.time, time.sleep)
scheduler.enter(delay=6, priority=1, action=set_webhook, argument=(mssg,))
t = threading.Thread(target=scheduler.run)
t.start()
Код записи в БД дает следующую ошибку:
SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 140181074405184 and this is thread id 140181047572224.
Внимательно прочитал про threading и как обычно ЯННП. Что надо поменять в коде запуска так, чтобы появилась возможность писать в БД?
Что значит почти? У меня по диагонали, у тебя нет.
>SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 140181074405184 and this is thread id 140181047572224.
Ты передаешь обьект либы/орм как аргумент? Если да то это хуевая практика, нужно передавать первичный ключ и вытаскивать уже внутри таски обьект по ключу если его не удалили к этому времени.
a, b = next(generator)
Важно учесть, что когда ты оборачиваешь генератор в список, он все отгенерит в момент формирования списка и никакого next у него уже не будет.
> likes = models.ManyToManyField(User, related_name='sharticle_likes', blank=True)
> dislikes = models.ManyToManyField(User, related_name='sharticle_dislikes', blank=True)
Вопрос - обрабатывать, поставил ли пользователь лайк/дизлайк (и соответственно, будут ему доступны эти элементы, если он уже нажал) будет лучше во вьюшках или на фронте?
Есть подвыборки одинакового размера, чьи индексы хранятся отдельно. В одной из подвыборок на определённом положении/индексе есть нужное значение z1.
Мне нужны все значения, которые "больше": т.е. либо они принадлежат к той же выборке, но их индекс больше, либо они принадлежат к следующим выборкам (индекс, тут уже роли не играет).
Т.е. по сути на выходе нужен кортеж с индексом выборки и индексом значения, которое будет "больше".
Твоя схема предусматривает, что пользователь может поставить одновременно лайк и дизлайк одной статье.
Если оставаться в рамках привычных моделей джанги, то тебе нужно поле
like_status = models.ManyToMany('User', through='LikeStatusModel')
class LikeStatusModel(models.Model):
____user = models.ForeighKey('User', ....)
____article = models.ForeighKey('Article', ....)
____status = models.CharField(max_length=6, blank=True, null=True)
значение поля status - это лайки-дизлайки. Надо подумать, какое поле делать, я бы забайтоёбствовал и закодировал всё в Int, чтобы 0 это без отметки, 1 это лайк, 2 это дизлайк и в таком духе. Но можно на базе CharField сделать.
Но если разгонять перформанс, то нужно уже сложнее накручивать.
У тебя основная задача как работает, с тредами или через asyncio? То есть каким образом ты в принципе хочешь контролировать, какой статус у задачи?
В случае asyncio ты можешь работать с aiohttp, в случае тредов наверное через flask. Через aiohttp я подобное делал, довольно удобно, надо просто запускать чуть в другом режиме
Смотри про TCPSite и appication runners
https://docs.aiohttp.org/en/stable/web_advanced.html#application-runners
Что-то подобное делают и с фласком, но это если через треды, я никогда так не делал.
Фейспалм, я забыл. Теперь уже так. Установил, пока нормальная тема, спасибо.
О! Спасибо, подумаю над твоим вариантом
vscodium есть
Ну ему бы хотелось делать .append(1).append(2).append(3)
Я не смог ему ответить, потому что просто воспринимаю это как данность и пользуюсь extend, если надо добавить больше одного элемента.
Но может вы знаете научный ответ на этот вопрос?
>Но может вы знаете научный ответ на этот вопрос?
Гвидон не захотел
https://mail.python.org/pipermail/python-dev/2003-October/038855.html
Как дела в питоне?
Слышал он по всем параметром ахуенен и язык на котором хочется писать писать и еще раз писать.
Перекатываться?
машин лернинг на питоне хуярит как шлюха
дикая просто вещь.
но вот схуяли ты взял что машин лернинг это интересно?
машин лернинг это набор нахуй научных методов с задротскими формулами, которым ты скармливаешь данные.
на выходе получаешь РСА 0,2356985, ПСЖ 56985325, ОКР 0,2565895
пиздец как интересно,.
Ну да, хуета.
Казалось интересным, но видимо ошибся.
Так а что на счет моего вопроса по перекату с джавы?
Куда мне за год проще вкатиться?
Ха-ха, ловко ты его попустил
Как на шинде скриптом менять PATH на всю систему, чтобы было на всех командных оболочках
Хочется менять системный интерпретатор пистона на тот что сидит в usb-памяти (pypy3) для собственного удобства
Зачем?
Если у меня заебись работа где я могу заниматься чем хочу и носить гордое имя айтишника?
Просто денежек и самореализации хочется.
бля вопросительный знак забыл
У меня есть два массива, мне надо вычленить из них те элементы, который удовлетворяют условию.
b1 = (array([1, 2], dtype=int64), array([369, 127], dtype=int64), array([0, 0], dtype=int64))
b2 = (array([2], dtype=int64), array([142], dtype=int64), array([1], dtype=int64))
def do_this_faggot(first_list, second_list):
r_list=[]
for a1, a2, b1, b2 in zip_longest(first_list[0], first_list[1], second_list[0], second_list[1]):
print("============")
print("combination")
print((a1, a2, b1, b2))
print("============")
try:
if a1 == b1 and a2 < b2:
print("============")
print("Element is added")
print((a1, a2, b1, b2))
print("============")
r_list.append((a1, a2, b1, b2))
else:
print("============")
print("Element is not added")
print((a1, a2, b1, b2))
print("============")
except:
print("============")
print("Element is not added due to None")
print((a1, a2, b1, b2))
print("============")
continue
print("=============================================")
print("Results")
print(r_list)
print("=============================================")
return r_list
Результат:
============
combination
(1, 369, 2, 142)
============
============
Element is not added
(1, 369, 2, 142)
============
============
combination
(2, 127, None, None)
============
============
Element is not added
(2, 127, None, None)
============
=============================================
Results
[]
=============================================
Где-то ошибка, и по идее список не должен ббыть пустым, потому что есть комбинация удволетовряющая условию:
(2, 127, 2, 142)
У меня есть два массива, мне надо вычленить из них те элементы, который удовлетворяют условию.
b1 = (array([1, 2], dtype=int64), array([369, 127], dtype=int64), array([0, 0], dtype=int64))
b2 = (array([2], dtype=int64), array([142], dtype=int64), array([1], dtype=int64))
def do_this_faggot(first_list, second_list):
r_list=[]
for a1, a2, b1, b2 in zip_longest(first_list[0], first_list[1], second_list[0], second_list[1]):
print("============")
print("combination")
print((a1, a2, b1, b2))
print("============")
try:
if a1 == b1 and a2 < b2:
print("============")
print("Element is added")
print((a1, a2, b1, b2))
print("============")
r_list.append((a1, a2, b1, b2))
else:
print("============")
print("Element is not added")
print((a1, a2, b1, b2))
print("============")
except:
print("============")
print("Element is not added due to None")
print((a1, a2, b1, b2))
print("============")
continue
print("=============================================")
print("Results")
print(r_list)
print("=============================================")
return r_list
Результат:
============
combination
(1, 369, 2, 142)
============
============
Element is not added
(1, 369, 2, 142)
============
============
combination
(2, 127, None, None)
============
============
Element is not added
(2, 127, None, None)
============
=============================================
Results
[]
=============================================
Где-то ошибка, и по идее список не должен ббыть пустым, потому что есть комбинация удволетовряющая условию:
(2, 127, 2, 142)
Numpy
Ладно, спасибо за старание, но это все равно плохой код и разбираться мне в нем западло.
Меня смущает, что ты лезешь в программирование.
Проблема понятная: тебе нужны все комбинации элементов, а ты получаешь не все.
>Меня смущает, что ты лезешь в программирование.
Спасибо за беспокойство, но оставь свои смущения при себе.
Я пришёл с вопросом в соответствующий тред, не хочешь или не знаешь как на него ответить - не трать, ни своё, ни моё время.
Спасибо.
Я тебе уже ответил... Был бы ты программист нахуй, ты бы посмотрел, что именно ты передаешь в свои first, second list... Ты зипуешь списки разной длины, ты видишь, что получаются None, но ты все равно просираешься в тред и хамишь мне... Я не вижу предпосылок получить на этом наборе данных то, что ты хочешь.
А я тебя помню, пидораса, был тут уже такой. Сначала глупые вопросы, потом хамство.
>Ты зипуешь списки разной длины, ты видишь, что получаются None, но ты все равно просираешься в тред и хамишь мне...
Вот так и можно было сразу ответить, а не тешить своё чсв.
Спасибо.
>>090396
> Сначала глупые вопросы,
Для этого тред и создан.
Не видел тут вывески, что только для синьоров с 10+ годами опыта.
>потом хамство.
Я нормально спросил. Не можешь ответить по существу - не отвечай.
А мнение быть кому программистом или нет, я не спрашивал. Оставь при себе, пожалуйста.
ты понимаешь что разбираться в чужом коде тяжелее? Ты его уже написал, ты в своей проблеме по умолчанию можешь проссать лучше здешнего мимокрокодила, которому придётся минут 5 на это потратить.
Это немного невежливо - озадачивать большой, но банальной проблемой. Если бы ты реально пытался её решить, ты бы упёрся в простой вопрос
Спасибо, сформулировал практически то, что я хотел сказать, только не так токсично.
Добавлю, что залетая с проблемой нужно писать, какую именно задачу ты решаешь, а не просто "у меня код должен выдавать такое, а не выдает". Вот это реально неуважение, как будто алгоритм я сам должен додумывать.
Подразумевается, что это работает целочисленно, то есть если введенное число не является факториалом чего-либо, то функция ничего не вернет?
Тоже написал.
Вот, держи, забыл про ввод числа пользователем.
>*games, sep = ', '
между двух строк ай лайк геймс + геймслист, разделенный запятыми+ точка?
Да-да, я уже понял твою проблему.
Нет, нельзя, включи мозг: sep относится к функции print в целом.
Анон, ну ХЗ что у тебя там.
Тебе фактически нужна БД. Можно использовать внешнюю БД, можно хранить данные в текстовых файлах, в sqlite, в json, yaml и других. Или прикрутить что-нибудь.
Мне кажется, в первом варианте можно где-нибудь в json хратить. Удобно и скрипту работать, и человеку влезть в него легко при необходимости.
Самый простой вариант - .env файл в корне проекта на самой виртуалке, в репозиторий не заливай, а то сеньоры опустят, переменные из которого ты подгружаешь в свое приложение через os.getenv. Идеально подходит для хранения секретов типа токенов и прочей хуйни
Циклом итерируйся по int-овым циферкам и еще свое говно. За тебя код никто писать тут не будет
ищи*
.values_list('your_field', flat=True)
Ему же еще менять это нужно и как я понял не руками.
UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-10: ordinal not in range(128)
В строке вида:
print(Fore.RED + f'\u041e\u0448\
Понимаю что проблема с кодировкой, но тут два вопроса, почему другой подобный код у меня работает нормально а этот файл ему не понравился? И второй как её решить?
https://ideone.com/kbO8T4
Почему когда запускаю вручную через терминал, то работает, а когда через докер, то контейнер запускается, но локалхост:9000 не работает?
Спасибо, заработало.
Я знаю, что так не делается, но почему?
>для проверки идей
вот это
Стартап же начинают с рисками, никто не уверен что все будет збс. На питоне можно очень быстро написать демо и в целом стартануть, скорость разработки ебейшая и относительно недорого выходит. А потом если все и разрастается, то просто влом переписывать на го бывает. Да и есть вообще такое правило - не оптимизировать пока терпимо работает.
к оцениваемой модели поле мэнитумэни что то типа reactions, кароче мэнитумэни к модели юзера и у джанги в мэнитумэни есть что то типа through=..., можно определить модель через которое это отношение будет строится, так вот туда пихаем что то типа
Reaction(model):
VALUE_LIKE = ':D' это чойсы кароч
VALUE_DISLIKE = '>:('
- user = foreignkey(user)
- publication = foreignkey(publication)
- value = charfield(choices=чойсы сюда
насчет валидации - на бэке обязательно должен быть какой то механизм, еще у модели reaction просто в meta unique_together=('user', 'publication') а дальше зависит от политики, которую ты хочешь. Например если тебе нужно чтобы пчел мог поменять неудобное мнение ты просто в круде /reactions/ делаешь put реквест и относительно моделек делаешь create_or_update, а если нужно чтобы юзер мог только один раз рейтануть и не мог поменять мнение - у тебя экшон для создания реакции, post и если юзер уже реагировал возращаешь 400 already exists что то типа того
Есть же, кстати, всякие pypy и numba для быстрой работы.
Поставил из исходников, вроде установилось теперь у меня две версии, но pip кривой, требует ssl. Как это вообще можно исправить, возможно ли без сборки скачать python 3.7 с нормальным pip?
Поздравляю, ты изобрел монолит! А если в случае с пистоном, то там GIL, и можно параллельно работать только с помощью процессов и тогда начинается ебля IPC
>Поставил из исходников
Удаляй. Делай python -m venv venv, активируй его, и устанавливай пипом любую версию, какую хочешь.
Я понимаю, пользователи центоса могли и не слышать, но это New in version 3.3.
https://docs.python.org/3.6/library/venv.html
И что я там нового найду?
> It also creates a bin (or Scripts on Windows) subdirectory containing a copy/symlink of the Python binary/binaries (as appropriate for the platform or arguments used at environment creation time). It also creates an (initially empty) lib/pythonX.Y/site-packages subdirectory (on Windows, this is Lib\site-packages).
Создается симлинк (или копируется на шинде) на системный питон, который будет юзать системную же стандартную либу и свою собственную site-packages для установок.
>или копируется
Ну вот, скопировал, а потом эту копию обновил. Ты считаешь так нельзя? В пепе, мне кажется, про это было, и я так делал.
Ты что-то не то несёшь.
Вопрос, наверное, о том, как поставить себе в систему 3.8, скажем, если у тебя стоит 3.6.
Вот через pip ты этого не сделаешь. В убунте надо добавлять репозитории, которые "dead snakes".
На тот момент, когда ты venv создаёшь, у тебя уже фактически версия питона зафиксирована, весь venv завязан жёстко на то, какая версия у тебя.
Это не один файл заменить, нужно нормальное готовое окружение, и уже на эти окружения и можно заводить венвы для получения разных версий. Ты какую-то норкоманию придумал.
Ставишь нужный питон, от его имени уже делаешь venv
Примерно так:
>sudo add-apt-repository ppa:deadsnakes/ppa
>sudo apt-get update
сейчас не проверял. Но точно из deadskakes, в общем загугли.
И будут тебе последние питоны стабильные. У меня убунта, предлагает 3.10 уже сейчас доставить.
Не, я сейчас думаю, что это был pypy и я его просто в венве распаковал, а дальше он сам умеет забрать на себя python в активированном окружении. В общем-то, не важно. Дискуссию-то устроили на 10 постов, а тому анону на центосе этот ответ так единственным и остался.
Что скажете за tinydb?
А с какой целью? use-case какой?
И что из себя словари представляют?
Json/pickle, всякие attr+cattr или pydantic.
Можно в постгрес сохранять.
В докер засунь.
Разве? У меня лежит где-то редис под шинду, юзаю его как кэш для парсеров. Это один экзешник, запустил и работает. В общем-то, так он работает и на других ос.
Да, я сейчас глянул, вроде оно https://github.com/microsoftarchive/redis/releases/tag/win-3.0.504
Запускается redis-server redis.windows.conf, этих двух файлов достаточно.
И что там поменялось важного?
А есть правило сразу делать заебись, а не сначала писать лагучее говно на псевдоязыке, а потом забивать хуй на оптимизацию, как это всегда и происходит? За что сейчас проградристам вообще платят?
>Дискуссию-то устроили на 10 постов, а тому анону на центосе этот ответ так единственным и остался.
Бесполезным, потому что так ты не поставишь.
Погуглил, предлагают собирать из исходников.
Дельный совет анону, сноси этот центос, ставть Винду версия ubuntu 20.04 вполне себе годна. Там это реально очень просто делается..
Да всё там соберется нормально под центось, просто надо читать инструкцию и гуглить по обстановке, а не хуяк-хуяк и заработало.
В убунте бы делаешь хуяк-хуяк, и у тебя всё работает. В освободившееся время ты читаешь инструкции по более полезным вещам.
Такое тоже знать и уметь полезно.
>А есть правило сразу делать заебись
нету такого правила, бизнесу нахуй оно не нужно, заказчик всегда хочет новых фич побольше и побыстрее
>а не сначала писать лагучее говно на псевдоязыке
по будет сначала не особо лагучим, поэтому заебись, потом, конечно, через какое-то время будет тормознее становится, но если к этому времени проект доживет - можно думать о переписывании отдельных модулей на чем-нибудь побыстрее. Или как ты хотел? По твоему заебись въебать кучу времени и денег на написание той же хуйни только чуть пободрее, чтобы потом стартап провалился как 99.9% других? Ты долбоёб!
>забивать хуй на оптимизацию, как это всегда и происходит?
Если так происходит, значит так надо, схуяли ты решил что ты умнее всех?
>За что сейчас проградристам вообще платят?
В аутсорсинге и аутстафинге за наебывание клиентов, ты так пишешь, как будто не работал никогда, вкатун чтоли?
Лол - за что сейчас вообще программистам платят. Посмотри на фронтенд, там джуна так ебут нодой, всякими сборщиками, сасами-лесами и прочей залупой, что на выходе обычный блог с текстом выходит более тяжелый, чем полноценный сайт со свистоперделками (поиск, логин, админка, лайки, карта с драг энд дропом) лет 5 назад.
Вот уж если кого и пинать за тормоза и говнокод, то явно не питонистов.
Потому что ТЗ надо смотреть. Если в ТЗ написано - оптимизируешь. Не написано - "хуяк, хуяк и в продакшн".
Есть строка байт по типу: b"\xff\xd8\xff\xe0" - как декодировать ее в строку?
(почему-то вместо b'\x89PNG' пришла вот эта фигня, хз как ее правильно конвертировать)
Это жпег. Зачем в строку?
Вот чтобы у меня такой код не валился.
class Pidor:
pass
pidor1 = Pidor()
pidor2 = Pidor()
pidor3 = pidor1 + pidor2
Спасибо, сорян, слишком рано написал на двач, метод add решил все проблемы. Господи, до чего же охуенный язык!
1 - Написано что мне 16 лет, закончил школу, нигде не учусь.
2 - ⦁I have experience with Aiogram,Selenium,bs4 also in other built-in modules like,os,sys,time,json,math, etc.
⦁I have experience with Django, I also plan to develop towards Back-End development.
⦁ I have experience with ORM, more specifically SqlAlchemy and Peewee and also have experience with SQL
⦁Knowledge of HTML/CSS - SASS/SCSS / Bam Methodology, JS/React
⦁My knowledge of english is pre-intermediate/intermediate.
⦁Experienced with controlling version like Git.
⦁Knowledge of OOP, three main principles and why they are needed.
⦁I know basic algorithms like sorting, graph traversal, binary search, etc
Соври что тебе 18
Софт скиллы укажи
Добавь Гитхаб с пет проектами
Бля и заплати 300 рублей какому-нибудь англюсику, у тебя английский текст очень коряво выглядит.
Появилась необходимость работать со спарком. А как вобще код то проверять, писать и тестировать? Ну вот есть сервис спарка, я ж ёбана не буду в текстовом редакторе никсов код бахать. А удалённо вроде нельзя запустить, спарк разворачивать локально тоже чот сложно. По идее библиотека sparkа должна сама уметь на локальном запускать? Чото я нихуя непонял короче
На мой взгляд написано очень много всего, посмотри резюме других ребят, сократи свое до нескольких строчек, оставь только самое важное, то в чем ты уверен на 100%. Вот пара примеров как сокращать:
"experienced with controlling version like Git." можно сократить до одного слова - git.
"Knowledge of OOP, three main principles and why they are needed." можно сократить до OOP.
Вообще тебе что, сочинение задали на литературе написать что ты хуйню всякую растягиваешь? И так далее.
Мимо пару лет нанимал.
так это в каждой вакансии указывают как требование даже у мидлов, херка не увидит слова и подумает что ты не осилил гит за 5 лет столичного опыта.
Я про английский, а не гит, лолка. Он написал что сам контролировал версии, как гит, а не использовал системы контроля версий.
Может лучше пет проектов ещё наделай да английский подтяни? В 16 лет вряд ли куда-то возьмут, но на такой вопрос неплохие знания. Хотя может учиться где-то и нужно.
бтв, requests не могу использовать, работаю с чужим апи, а у него анальные требования и немного своеобразный HTTP
Я знаю как запретить трейсинг в эксплицитно импортируемые модули, но не знаю что делать, когда модуль импортируетя автоматически как базовый.
Поверхностный гуглеж не нашел решения.
>BaseHandler.http_error_default
>This method is not defined in BaseHandler, but subclasses should override it if they intend to provide a catch-all for otherwise unhandled HTTP errors. It will be called automatically by the OpenerDirector getting the error, and should not normally be called in other circumstances.
>req will be a Request object, fp will be a file-like object with the HTTP error body, code will be the three-digit code of the error, msg will be the user-visible explanation of the code and hdrs will be a mapping object with the headers of the error.
клянусь богом, urllib это самое уродливое что есть в сраном питоне
но ведь оно не вернёт http.client.HTTPResponse.
Представь, что кто-то хочет защитить свой сайт от питонистов, возвращая 400 на нормальных запросах
причём у OpenerDirector нет параметра context через который задаётся ssl/tls, здесь я чешу голову просто
__rq = urllib.request
__rq.HTTPDefaultErrorHandler = urllib.request.HTTPHandler
в ответе возвращается None если такой финт делаю
class __unhandle(urllib.request.HTTPDefaultErrorHandler):
def http_error_default(self, req=None, fp=None, code=None, msg=None, hdrs=None): return '1234'
__rq = urllib.request
__rq.HTTPDefaultErrorHandler = __unhandle
крч если не криво делать то тут можно превратить параметры в нормальный http.client.HTTPResponse вместо 1234, и тогда норм
но это буквально дописывание языка за его авторов
бля не
class __unhandle(urllib.request.HTTPErrorProcessor):
def http_response(self, request, response): return response
def https_response(self, request, response): return response
__rq = urllib.request
__rq.HTTPErrorProcessor = __unhandle
вот так заебись
И я буду очень благодарен, если кто-нибудь поймет, про что я и скинет ее.
Я такого сам не делал, но тут я уверен делается обычный запрос к беку в котором прописываются все фильтры, бек обрабатывает их, чтобы в запросе к бд все ровно было и возвращает нужные данные
Я сделал пару пет проектов, не уровня Хеллоу Ворлд, да, с английским у меня траблы. Но я думаю скорее всего из-за возраста и не зовут никуда. Учиться я не могу, нужно зарабатывать, пока подрабатываю в реале + иногда заказы на фрилансе делаю.
Берется копеечная хуитка за 2-3 бакса, там можно запустить микропитон - нищереализация питона на голом железе, на борту есть вайфай-блютус и место под файлы. И возможность подключить мильйон всяких примочек.
Я прям удивлен, что это вот так себе существует и прошло мимо меня. По старинке думал, что там какие-то асмы-си и анальная олимпиада.
А оно вон оно как.
https://www.youtube.com/watch?v=r8V2JZ9WJw8
Звучит все нормально, но я должен пройтись по характеристикам ВСЕХ товаров в категории и вытащить из них значения характеристик. Мне кажется если в категории 2-3к товаров и много запросов, то загнется бд.
Тебе не сразу товары показывают, а пачками, достаточно первые 10/25/50 вытащить указав лимиты, а потом оффсетом смещать. Да и с индексами все и так быстро будет.
Что будет если обвешаться такими штуками как вассерман карманами?
Еще раз скажу, допустим там стоит фильтр на бренды. Он показывает все бренды в этой категории, не только первой пачки.
>>092811
Спасибо, но это не то. Я понимаю как применять фильтры, но я не понимаю как вытащить характеристики из товаров категорий. У категории должны быть характеристики, но должны ли у категории быть значения характеристик?
Характеристика: бренд. Значение характеристики: samsung.
P.S. вытащить значения характеристик я смог, но я не считаю это оптимальным путем.
В чем суть вопроса я так и не понял? Есть у тебя эндпоинт для товаров и в квери параметрах просто указываешь ?brand=Sumsung, потом на беке достаешь все квери параметры, видишь бренд указан, значит из бд достаешь только самсунг, делаешь пагинацию нужнаю тебе на 10,20,50 и все, в чем проблема то?
Может ты имеешь ввиду что фронт должен с бека получать список брендов например? Тогда есть несколько решений, смотря нужно ли тебе что-то поворотливое и сложное делать или простое решение в лоб
Могу криптой оплатить
Ты прав, помню что в исключении был resp который я через перезаписанные функции взялся возвращать
Но мне так лаконичнее, обойтись без дублирования кода в обрабоке исключений (как я уже допилил). Я ж оперирую в зависимости от http тела, к чему мне коды.
Второе, конечно.
>#!/usr/bin/env python3
Ещё и в тушке версию проверь.
Напрямую задаётся только сустемный шелл.
взялся проверять и чёта магия какая-то
https://ideone.com/07JLOO
><__main__.F object at 0x153ea4e596d8>
как джва превращается в ОБЪЕКТ?
бля стоп, я self забыл
Если не боишься в лутце завязнуть, то валяй, он намного полнее.
пакман? суй питон? реально?
Во-первых, все удаленно работает отлично.
Любимая фича - поднять удаленный сервер джупитера, подключиться к порту через браузер и дрочить датафреймы в нем. Естественно, основной код в .py файлах.
Да, Спарк разворачивать сложно.
Поэтому берешь Линукс/wsl2/докер, накатываешь анаконду и Pyspark из канала Conda-Forge, плюс 8/11 жабу.
Выбираешь конду как интерпретатор в пичарме, и вуаля.
На Винде дополнительные зависимости, ебля с винутилс, мб хадуп и вроде тормознутее, так что нахуй винду.
Мимо работал с Pyspark.
Почему всё ставится а это говно нет?
File "/usr/local/lib/python3.7/urllib/request.py", line 649, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: SSL is required
----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/fa/5a/6dcdddeaa0ddc0bd331fdd1bc8696d9650ede0cb014083716976174eb4b8/dotenv-0.0.1.tar.gz#sha256=04006132a48e301a40b5bc3e8ea0d667a68981f277bb1785af0f8b9f7958e278 (from https://pypi.org/simple/dotenv/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement dotenv (from versions: 0.0.1, 0.0.2, 0.0.4, 0.0.5)
ERROR: No matching distribution found for dotenv
Кажется разобрался, надо вот так было:
pip install python-dotenv
И нахуя разрабы так делают? Откуда я должен знать что это говно с префиксом python- нужно?
Папа пришел нахуй. Всем сидеть, всем лежать
1. Есть кеш, запросы как правило пойдут к нему
2. Есть полнотекстный поиск, если надо то будет он на каком-нибудь Elastic а не на мускле
3. Есть индексы в БД нахуй. Индексы эффективны епта в том числе и для выражений BETWEEN а не только для единичных значений
Хочу из ETL макаки стать дата-инженером, че мне в питоне уметь надо?
Данные в таблицу добавляются строго в конец? Если да, то я мог бы начать сверять с конца таблицы,. Использую postgresql
Почему эта залупа не выдает адекватное приближение 3 степени?
На первом пике - приближение квадратным уравнением, на третьем - кубическим, выглядит как бред.
Плотность точек примерно равномерная, то есть нет такого, что кубическая кривая проходит через мульен точек из-за их дикой концентрации.
Если у тебя там не терабайты, то я бы просто хуярил временную таблицу с одним ключевым элементом, а потом одним запросом можно получить разницу.
Хотя это
> которые не занеслись в базу по каким-то причинам
надо решать в тот же момент, а не постфактум искать чо там не прошло.
Есть два результата функции np.where, которая выдаёт массив из 3х одномерных массивов не одинаковых по длине.
Что-то типа:
res 1 = [(array([0], dtype=int64), array([67], dtype=int64), array([0], dtype=int64)), (array([0], dtype=int64), array([71], dtype=int64), array([0], dtype=int64)), (array([0], dtype=int64), array([71], dtype=int64), array([0], dtype=int64)), (array([0], dtype=int64), array([67], dtype=int64), array([0], dtype=int64)), (array([0], dtype=int64), array([81], dtype=int64), array([0], dtype=int64))]
============
res2 = [(array([0], dtype=int64), array([71], dtype=int64), array([1], dtype=int64)), (array([0, 0], dtype=int64), array([83, 84], dtype=int64), array([1, 0], dtype=int64)), (array([0], dtype=int64), array([71], dtype=int64), array([1], dtype=int64)), (array([0], dtype=int64), array([77], dtype=int64), array([1], dtype=int64)), (array([0, 0], dtype=int64), array([83, 84], dtype=int64), array([1, 0], dtype=int64))]
Мне для каждого результата по сути нужно только два массива из трёх, которые надо сравнить друг с другом, после чего оставить только те, что удовлетворяют условию res1[0] == res2[0] and res1[1] <= res2[1] .
Как наиболее эффективно это сделать? Я думал использовать itertools для всех возможных комбинаций, а потом отфильтровать по условию, но на паре примеров получается, что, во-первых, не совсем правильно, во вторых, медленно работает.
Как это можно наиболее эффективно и быстро сделать?
Я не могу хуярить что-либо в бд, скрипт должен работать с любым загрузчиком и любой таблицей изолировано от них
Нумпай это питон лишь с очень большой натяжкой. Это говно нарушает питоний дзен как только можно, поэтому я бы вопросы про нумпаю встречал пассивной агрессией. Молодца.
Универсально.
Но тут проблема в следующем:
res1[4] = (array([0], dtype=int64), array([81], dtype=int64), array([0], dtype=int64))
res2[4] = (array([0, 0], dtype=int64), array([83, 84], dtype=int64), array([1, 0], dtype=int64))
Массив массивов во втором случае содержит не 1 элемент, а список.
И мне в таком случае надо проверить все комбинации,
Т.е, т.е., например, res1[4][0] с res2[4][0][0] и res2[4][0][1].
И точно так же второй массив res1[4][1] с res2[4][1][0] и res2[4][1][1]
Может у numpy есть готовое решение?
Кто какие шрифты юзает в Linux? Или сидите на дефолтных?
В БД есть статья с заголовком "Собираем квантовый генератор случайных чисел". Если в параметр поиска передать отдельные слова "генератор" или "собираем" или последовательность "собираем квантовый" то есть те слова, что стоят рядом в заголовке то Article.objects.filter(header__icontains=search_query) отрабатывает на ура. Но если передать слова, которые есть в заголовке, но не стоят рядом %%i.e. собираем генератор", то такой метод поиска ничего не найдет. Как правильно сделать поиск? Вариант со сплитом параметра поиска в отдельные слова и поиск по ним кажется слишком колхозным, ведь точно в джанге есть решение, ведь есть?...
Для этого есть специализированные поисковые движки, искаропки только вот так наивно.
Никогда не видел, что бы такой херней занимались. Можешь фильртовать кс сначала по одному слову, а потом отфильтрованный по второму и тд. Но это говно какое то, есть elasticsearch для нормальных людей.
Можно ли повторить элементы списка N раз в виде
[1,2,3,1,2,3,1,2,3...] ?
Спасибо.
У меня есть список, стоящий из кучи имен и фамилий. 'Имя Фамилия'. Мне нужно посчитать сколько раз встречается в списке ИМЯ "Петя". Я пишу count "Петя", но поиск дает 0 результат. Что логично, ведь "петя" в списке всегда идет совместно с фамилией. Как решить мою задачу? Это делается через count или существует другой способ. Нагуглить не получилось, листал кучу таблиц с операторами к спискам и ничего не нашел. Я ебанат, да
count не подходит, потому что он считает только полное совпадение.
Попробуй так:
sum([1 for value in my_list if "Петя" in value])
>я очень тупой
У тебя всё получится.
>response = HttpResponse(zip_io.getvalue(), content_type='application/x-zip-compressed; charset=utf-8')
>response['Content-Disposition'] = 'attachment; filename=files.zip'
Через тесты сделал запрос на роут, получил байтовую строку с юникод-символами в шестнадцатеричной
>b'PK\x03\x04\x14\x00\x00\x00\x08\x00\x88\xa8\xedR\x08\...."
Но как только дело доходит до запроса с фронта или обычного запроса через постман - вся эта хуйня из нормальной байтовой строки превращается в мешанину из полетевшей кодировки:
>DM�`�<��@�� �M��1�A
Как правильнее передать файл на фронт?
1) Вроде всё позабыл, стоит снова её всю проштудировать? Или уже есть варианты получше на русском?
2) Что делать потом, чтобы опять не заглохло дело? Пет-проекты? Учить джангу и sql для бэкенда?
Отвалилось
Эту не читал, сорри.
Ммм ну я был в твоем положении, спросил совета у знакомого программиста, и он сказал попытаться в дата сайнс, ну и вот я вкатился.
Я понимаю твои чувства, тебе стоит понять, для начала, чего ты хочешь и что тебе интересно.
У тебя после проработки книги не возникло даже одной идеи для пет-проекта? Печально тобой быть.
Ну напиши блог текстовый с админкой на Питоне. Калькулятор, To Do лист, бот для тг. Совсем идей нет? Пока будешь писать поймешь какие либы и фреймворки нужны.
Я эту прочитал и ебанул на фрилансе проектец за 300 баксов, но до этого я знал перл и пхп.
До сих пор чувствую эту вкатунскую неуверенность, но лень углубляться. Сейчас сместился в баш и го, там тоже попасусь и сделаю какие-то проекты, но питон что-то нихуя не становится fluent.
Вообще, после перла все языки кажутся какими-то каличными, жаль, что он умер.
Пол-года как. Но надо сказать, что я в принципе всегда увлекался матстатом и имел интерес к области и какой-то опыт. Ну и что мне работу предложил знакомый, который счел, что я талантлив. Так что тут быстрый вкат обусловлен тоже знакомствами, по собесам не ходил.
Ну вообще, мое мнение, что вкатываться нужно туда, где интересно, просто у меня есть опыт (не как у программиста) в геймдеве, и мне было совершенно по боку, из-за чего дико выгорал.
Что ты подразумеваешь под инструментами? Библиотеки? Панду, Нампай, Сайпай, Статсмоделс, Пиплот для визуализации. Айдишники? Ну использую Пайскриптер, пробовал Спайдер, но не увидел пока необходимости переходить. Другие языки? R для рассчетов некоторых особо длинных использовал. Немного знаю СКЛ, но самую базу, не использовал в практике, мне кажется, СКЛ нужен сугубо для больших БД либо биологии/физики.
>Сотыгу делаешь?
Сорри, вообще не понимаю о чем ты!
С кириллическим синтаксисом.
Подскажите, как принято писать на питоне, все в одном файле или классы, например, раскидывать по файлам отдельным?
Например, мой скрипт будет писать в БД. Создать отдельный класс для БД и все коннекты и функции записи и чтения запихнуть туда, а из основного файла просто вызывать?
Как в жабах на каждый пук отдельный файл не надо, но если прям дохуя, то можно на пару отдельных разбить по смыслу.
То есть, если у меня в одном файле куча классов это норм?
Чет не могу к такому привыкнуть, не удобно же
разбивается обычно по назначению
типа в одном файле у тебя логика, во втором объекты, в третьем еще какой функционал
никто не мешает конечно насрать всё в одном файле
но это неудобно
так можешь хоть по файлу на класс делать но это тоже шиза
то есть если ты сделаешь по файлу на класс то тупо нахуй запутаешься и будешь срать импортами как не в себя , лол
Хм, спасибо за ответ. А что конкретно делает конда и джупитер? Конда удалёный интпретатор?
for x,z in zip(list1, list2) переписать в виде for x,y, z in zip(enumerate(list1), list2) ?
Спасибо
Для больших проектов, для распространяемых пакетов.
Никогда, этот бойлерплейт все раздувает в три раза а профиты очень сомнительные. Лучше уж тогда на джаве кудахтать.
Когда начинаешь думать "бля, а что это за объект приходит"
Да.
[code]from random import randint
def dice():
return randint(1,6)
a = int (input('number from 1 to 6 = '))
if a == dice():
print ('you lose')
else:
print('you win')
print ('dice =', dice())[/code]
на выходе получаю
number from 1 to 6 = 5
you win
dice = 4
ЧЯДНТ?
если делаю это не используя создание отдельной функции, то всё работает как надо
from random import randint
dice = randint(1,6)
a = int (input('number from 1 to 6 = '))
if a == dice:
print ('you win')
else:
print('you lose')
print ('dice =', dice)
А каким образом можно закрепить первый результат dice чтобы он потом вывелся в самом конце?
Спасибо, сработало.
да заебали вы с зондами, 10 обычная винда, более стаильная чем предыдущие.
если тебя зонды волнуют то поставь лтсб или че там еще есть за урезки
главное бля ходишь со смартом который тебя так ебет зондами что если ты увидел дилдо в посте на дваче то тебе блядь реклама самотыков спамит а тут в винде че то испугался каких то зондов.
винде вообще похуй по сути, там все зонды это гугл хром ну или твой акк майкрософт, никто не запрещает сидеть под автономным аккаунтом или же под левым, зареганным на фейкомыло
Anaconda - менеджер зависимостей + виртуальные окружения + альтернативная библиотека пакетов.
https://anaconda.org/conda-forge/pyspark
Нужно чтобы разные версии пакетов не мешали друг другу.
Отличие от других в том, что она управляет не только питоньими зависимостями, но и библиотеками на других языках.
Можешь поставить вручную все. Тут например описывается пердоленье со спарком на винде.
https://naomi-fridman.medium.com/install-pyspark-to-run-on-jupyter-notebook-on-windows-4ec2009de21f
Jupyter Notebook - это удаленный интерпретатор + веб-интерфейс + свои свистоперделки вроде ячеек, красивого вывода. Проще самому попробовать.
Клиент у тебя в браузере, а сервер может быть как локально, так и где-то удаленно крутиться, лишь бы был доступ к нужному адресу и порту.
А старые что превратились в тыкву?
Тебе же ничего не мешает сидеть на неподдерживаемой 7, некоторые норкоманы и на хр сидят.
Не надо ничего собирать.
Заходим на https://www.python.org/downloads/
Там есть список веток, смотрим 3.8, например. Там есть release schedule - PEP569 https://www.python.org/dev/peps/pep-0569
Видим 3.8.10: Monday, 2021-05-03 (final regular bugfix release with binary installers)
Это последний полноценный релиз в эту ветку, есть установщик. Дальше выкладывают только фиксы безопасности в исходниках, это нужно для поддержки легаси, никаких фич там нет.
На лето выкатываешься, а потом усиленно вкатываешься по 26 часов в сутки за два месяца?
Значит это очень потешный крупный сайт, если он валится от запросов с одной пеки и не имеет защиты от дудоса
Никак не чилю - либо шарюсь в кодах, либо пытаюсь отдыхать в постоянной тревоге за нехватку денежных средств.
Оно, спасибо.
зачем ты шаришся в кодах?
почему не работаешь например на стройке?
и почему не чиллишь, пацан? лето же!
Принято маленькие буквы и подчеркивания. Имена классов в кемелкейсе.
Вообще, поставь себе линтер, он будет тебе бухтеть по офф. стилю.
Что за кемелкейс?
И что за линтер? Юзаю пичарм. Туда, как доп.модуль/плагин можно что-то поставить?
В пичарме должно быть искаропки. Подчеркивает и есть аннотация, что не так.
В раных языках разная традиция, сложившаяся исторически.
В принципе так иногда делают. Даже в стандартной библиотеке такое есть, модуль logging например. И ещё другое есть.
Проблемы тогда, когда ты ебашишь с кем-то совместно. Вы работаете с одним кодом, при этом один в одном стиле называет, другой в другом. А это не очень удобно.
Хотя не то, чтобы уникальная история, такое много в каком коде встречается на разных платформах.
У меня снейк_кейс ассоциируется с низкоуровневым байтоебством, а конкретно с сишечкой. Конечно это плохо, когда нет единой стилистики, но для кода на языке высокого уровня кэмел кейс это стандарт на сегодня.
хаха. расскажи мне сказку дядя. лето красное пропела оглянуться не успела, как зима глядит в окно..
За день изучения джанги создал простенький E-Commerce в соло, там дофига багов, тестов нет, но прям супер изи с одной докой в руках. Что люди умудряются годами изучать в Django or Aiogram, там же все просто как два пальца об асфальт, шок.
Хех, тащемта любой фреймворк на любом языке для опытного чела не проблема освоить за пару недель. Культ знания фреймворков это чисто пориджевский тренд, возникший в эпоху массового вката.
О, можешь про него подробнее рассказать?
>Хех, тащемта любой фреймворк на любом языке для опытного чела не проблема освоить за пару недель.
Это классический Даннинг-Крюгер.
Документация на Джанго это 2000 страниц. Две тысячи! Конечно, там не всё нужно. Правда не всё там изложено.
Но полноценное знание фреймворка подразумевает понимание многих тонкий вещей, надо что-то самому специально ломать, тренироваться на задачах, чтобы понимать слабые места, практики использования осваивать и т.п.
Ну давай запили мне сервис на 10 тысяч челобек с несколькими бд, к которым нужно обращаться параллельно + вставка и обновление данных в реальном времени + все пользователи должны лицезреть обновления в таблицах/диаграммах с возможностью вносить изменения. Изи, хуле.
Ты неправильные примеры приводишь. Само собой, бывают задачи, которые долго реализовывать, как бы хорошо ты фреймворком и языком не владел.
Знание инструмента значит, ты делаешь какую-то задачу быстро и хорошо, который "двухнедельник" делает долго, мучительно и коряво.
На самом деле такого дохрена. Одна Django ORM чего стоит, со своими запросами, миграциями и другом. И куча других вещей.
Ну я за месяц джангу освоил и запилил первый сервис (опыта коммерческой разработки до этого не было). Даже джанга ненужна по итогу, всё на ДРФ переписал (и в будущем видимо придётся на фастапи переписывать). Другое дело, что сейчас нет понимания, моё это или не моё, т.к. "простенько в соло" запилить и долбоёб сможет. А нормально запилить, с редисом, селери, ювикорном и асинхронщиной хуй ты за месяц разберёшься в соло и без чужой помощи.
При модификации всегда надо лочить, ну и при чтении соответственно смотреть, не модифицирует ли сейчас данные другой поток.
>джангу освоил
ты мою колбасу за щеку освоил ;3
не удивлючь если ты вообще не въебываешь как работают сессии, миграции, мб даже мидлвари какие
>Даже джанга ненужна по итогу, всё на ДРФ переписал
на дрф без джанги?
Охуенный фреймворк, конечно можно запилить говно с какой нибудь статьи и решить, что ты изучил джанго, но на самом деле в фреймворке ебанутая масса охуительных фич "из коробки", но про них нужно знать и нужно знать как их комфортно пользовать. Что вообще значит годами изучать? Никто же не сидит годами читая доку. Разбираемся с возможностями по мере необходимости, узнаем что-нибудь новое спустя несколько лет после знакомства, блядь, очевидно же
А в каком смысле смотреть? Разве если данные модифицируются под локом, то другой поток не подождет пока операция закончится?
Смотреть как раз значит, что все операции чтения данных расшаренного объекта ты заворачиваешь в залоченную секцию
Я тоже петух охуевший, езжу по встречке, ссу на других за невозможность ездить нормально и не мешать мне.
>>096698
А я вот не люблю кэмел-кейс, вообще прямо отвратительно, вот заебись когда у тебя классы большой буквой, с заглавной такие типо важные очень штуки, а методы и переменные маленькие скромные с бледной кожей и тонкими ручками.
Просто как не пишу на чем то с кэмел-кейсом - какой то бардак выходит визуально, в питоне код ровные полосочки одинаковой высоты а с кэмелкейсом буквы сКаЧуТ.Как.ебаНутые, есще этиПереходыВместоНормальнойЧерточкиКотораяКакПробелНоВсеРавноНеПробел. ИМХО_глазам_как_то_проще.
Спасибо, решил вот пет монолитом написать, убедился что много слишком ебалова в питоне с асинхронностью и потоками, как то с микросервисами проще кажется.
>ты мою колбасу за щеку освоил
Очко своё напряги, а то сквозит на весь тред.
>не удивлючь если ты вообще не въебываешь как работают сессии, миграции, мб даже мидлвари какие
Так вы же сами выше кудахтаете, что джанга это хуйня, за 2 недели можно освоить. И зачем мне понимать, как работают хуки в промежуточном слое, если логика прописана в классах типа django.contrib.sessions.middleware.SessionMiddleware и т.п. Что там с миграциями и сессиями разбираться, makemigrations и migrate сложно понять, что делают?
>на дрф без джанги?
На голом дрф, через сериализаторы и контроллер, ну прикрутил ещё сваггер и адфс настроил для вин-аутентификации.
>Охуенный фреймворк, конечно можно запилить говно с какой нибудь статьи и решить, что ты изучил джанго, но на самом деле в фреймворке ебанутая масса охуительных фич "из коробки", но про них нужно знать и нужно знать как их комфортно пользовать.
А я как будто это не знаю, спасибо копетан. Я и написал выше, что свой говносервис первый написал за месяц, тупо читая книгу, оф доки и доки расширении. Сейчас пишу второй сервис для работы с олап-кубами, и пока только с логикой сервиса ебусь 3 неделю. Но это просто я же тупой пральна, а сеньоры с харкача конечно за 2 дня сделают, и сами сервак развернут и задеплоят.
>методы и переменные маленькие скромные с бледной кожей и тонкими ручками
Мое ебало, когда вижу подобный мелкокод
Есть кароче слой хранилища, там скл и носкл бд + хранилище прямо в оперативе. Хотел что бы оно было доступно всем потокам и корутинам тоже. У меня сейчас в одном потоке апиха, в другом сервер вебсокетов, далее еще хочу воркеров накинуть каких-нибудь. Чтобы все это могло работать как отдельные сервисы в одном кластере, но минуя брокер сообщений и хттп запросы, чтобы не сериализировать джсоны постоянно.
А, ну тогда да, разноси это говно по разным процессам. Иначе забажит какой-нибудь вебсокетный код и пизда всему сразу
А что там такого уникального в этой джанге, чего не было бы в любых других фреймворках на любых других языках? Роутер? Мидлвари? ORM и шаблонизатор из коробки? Если ты имел когда-нибудь дело с одним фреймворком, считай ты имел дело со всем такими же.
ЕМНИП все писались кипятком от джанговской админки и прочего contrib-а. Причем в то же самое время ещё больше писались кипятком с рельсы, где было ещё больше батареек и ещё больше удобства
Ну вот такой способ быстро сайт наговнякать, большинство сетевых ресурсов не исполняют какую-то сложную логику же, для того и нужно
>Нормальные апи можно собирать
Если тебе только апи нужно, то ебошишь FastAPI и не извращаешься с синхроностью самой джанги
Меня прост удивил местный шизик, который считает что изучение джанги это пипец какое достижение, ведь там столько сложных вещей типа ORM, лол.
А вообще сегодня никто не рендерит страницы шаблонизаторами на бэке. Сегодня модно JAM-stack, изоморфный код и serverless-аппы
Как ты себе представляешь несколько вебсокетов, крутящихся в одном потоке одновременно?
Так есть же библиотеки?
упд синнхроный кодинг я понимаю, асиннхронный, когда код выполняется поочереди, дискретно, но в итоге получается континум выполнения проги, так?
Смотри, тхреады, это как человек сел посрать, и давит длинную колбасу, пока не досрёт следубшая не полезет. А асинхронн, это как кролик ебанный какойнибудь, с паузами высирает, но разные какахи. Ну и сооствественно надо учитывать что у одного срущего, может быть несколько жоп.
Тогда уж лучше пусть человек будет процессом. Если он срет, а потом блюёт - то это синхронное выполнение, а если одновременно и срет и блюёт то это асинхронное. Добавим второго человека уже будет мультипроцессинг
>Мне просто нужно при пост запросе отправлять сообщение всем вебсокет клиентам.
Так и что сложно переписать такое простое приложение? Делай отдельными сервисами: отдельно апи и отдельно сервер вебсокетов.
У меня эрекция нахуй от одной мысли о создателе пайтона.
Ну вроде я верно понял тогда. А как быть с тредом?
Сел посрать - тред. Типо оболочка да?
Срет - это процесс.
Если срет и блюет, это типо асиннхронщина. Если сначал срет, потом блюет это синхроннщина.
Если добавить нового чела, то будет второй процесс да?
А можно двух людей обернуть в тред? И внутри треда делать треды?
>block_dispatch_list = [column[indices] for column in dispatch_list]
dispatch_list - это двумерный массив режимов работы оборудования, indices - вектор содержащий индексы указывающие на номер в некотором списке оборудования
на 3.х питон не нашёл документации на конструкцию column[], а это точно служебное слово, такой переменной в коде у меня нигде нет. Кстати если просто вбить в гугл "column for column in" то 70% ссылок ведёт на доки pandas или на описания dataframe у которого синтаксис вообще другой, кекус.
На 2.7 питон нашёл использование row[], и теперь думаю что в block_dispatch_list копируются колонки из dispatch_list только с номерами из indices. Верно?
>а это точно служебное слово, такой переменной в коде у меня нигде нет.
Так вот же!
>for column in dispatch_list
А вся конструкция целиком называется генератором списков. (или нет, я на самом деле не знаю, как на русский переводится)
https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions
Эта сахарок для циклов, генерирующих списки. Разворачивается в
block_dispatch_list = []
for column in dispatch_list:
___block_dispatch_list.append(column[indices])
ап
Процесс это инстанс запущенной программы. У него есть собственное виртуальное адресное пространство, набор открытых файловых дескрипторов, ему можно посылать сигналы.
Поток это выполнение процессором команд, которое может быть прервано и продолжено системным планировщиком. Каждому потоку необходим собственный стэк, через который будут передаваться аргументы для подпрограмм и адреса для вызвращения из подпрограмм. Так же в стеке сохраняется контекст исполнения (по сути все содержимое регистров процессора) при приостановке потока. При возобновлении контекст восстанавливается из стэка. Память для стэка выделяется в адресном пространстве процесса.
У процесса есть как минимум один главный поток, но он может создать себе дополнительные. Создание потоков дешевле создания процессов, но все равно достаточно дорогое, так как требует память под стэк.
В голове еще остались знания питуна, только с ООП беда, еще немного из анаконды есть в голове(флешбеки из библиотек).
Скажите, что прочитать/посмотреть, а так же где найти задания по питуну и конде?
Под анакондой я имею ввиду библиотеки типа тензорфлоу, матплотлиб и тп
да, датасайнс, да математику знаю
Пожалуйста, не писайте на меня
Не, мне там рест не нужен пока. Вьюшка передает обратно срендеренный HTML. Потом думаю на Vue + GraphQL переехать
ПОЧЕМУ НЕЛЬЗЯ ПИСАТЬ КОД КАПСОМ?
1. Знает несколько ЯП в одной и той же области применения
2. Имеет ИТ вышку
3. Юзает пайтон фуллтайм как основной язык и никуда не собирается при этом
4. Работает в индустрии, а не в науке
Сколько вас таких бедных?
Как я себе это представляю.
Я ставлю цель, и по пунктам реализую ее. Думаю должна быть модульность. То есть модули сделаны в виде процедурного стиля. Потом как-то на основах ООП все собирается и уже реализуется как-то в одном конфигурационном файле в декларативном стиле. Верно я понял?
тут уже мои полномочия всё
ну начни с визуализации , линейная регрессия, нормализации, РСА, тнсе, дбскан, там этой хуйни как говна за баней короче
обучение с учителем, без учителя и все такое прочее
а потом переходи на нейросети, сверточные, реккурентные и всё такое, пасан. я сам то в этой хуйне нихуя не понимаю
>Имеет ИТ вышку
это вообще дичь чисто для зумеров, ит вышки не существовало наверное до 2017 или позже.
так что ит вышки наверное еще и нет ни у кого.
То, чему учили скажем в 2010 это блядь эвм на перфокартах, это уже устарело лет 8 назад
то есть даже зумерок, который закончил вуз в 2014 там ит вышка уровня бейсика и эвм
Давай не будем. Я почему такие критерии привел - матерый питонист может получиться только при несоблюдении как минимум одного из них. Других я до сих пор за 10 лет не видел ни ирл, ни в интернетах.
1) Знаю пистон и ГОвно
2) Заканчиваю заочку
3) ГОвно только для пары сервисов было, остальное пистон
4) Беттинг
Го это не их той же оперы вообще. Ну говорю же. Попробуй другое что-нибудь, пистон забросишь нахрен.
Ты не разберёшься, пока не дойдешь до прикладных задач (а их у пистона очень немного).
https://stackoverflow.com/questions/46701063/why-doesnt-python-have-switch-case
Как сосётся?
В 3.10 будет, рассасывайся обратно.
А в чем его критическая необходимость, по-твоему? Есть куча других способов.
>В 3.10 будет, рассасывайся обратно.
Там какая-то адовая наркомания, до сих по не вкурил.
Вообще, великий Гуидо, когда питона воспитывал, хотел сделать так, чтобы любой смышлёный человек без инженерной подготовки мог его читать и на нём писать.
А в итоге, любой язык программирования со временем превращается в С++, надо вкуривать долго и конкретно.
Кстати согласен, что switch не нужен, если язык поддерживает удобный else if, как elif в питоне, то получается эквивалентная конструкция очень легко читаемая.
>это вообще дичь чисто для зумеров, ит вышки не существовало наверное до 2017 или позже
Это ты просто зумер, для которого до 2017 года была какая-то другая эпоха, когда мамонты по улицам бродили, а бородатые программисты на счётах от них дубинами отбивались.
Всегда в нормальных местах учили вполне современным вещам. Это фреймворки каждые три года меняются, базовые принципы же сохраняются очень долго.
Но я не буду участвовать в сраче "вышка нинужна", говори что хочешь.
Ору, подвезут в октябре 2021. До этого надо было сосать и говорить "почему ита нинужна". Кстати, принципиально не будешь юзать свич, когда появится или прогнешься?
А как же принцип ридабилити каунтс? Не могли же они взаимоисключающие параграфы в свой манифест засунуть? Лол, не язык, а просто какой-то набор анти-паттернов.
Это и нинужно в большинстве случаев, просто пиздануто из си, где оно хорошо ложилось на концепцию переносимого ассемблера.
Юзать скорее всего не буду, потому что пока оно просочится в мейнстрим, я уже укачусь на другие языки, скорее всего.
Зочем тогда питон? Я пытаюсь понять с 2013 года и не могу. Даже пишу на нем периодически один проект (который не я начал, естественно). Язык вкатывальщиков, учоных и сисодменов.
1. Удобнее читать
2. Не надо изобретать велосипед, если if elif кажется вдруг неудобным (иначе бы switch и не придумывали)
> Язык вкатывальщиков, учоных и сисодменов.
Примерно так и есть. Ещё всякие там автоматизации-ETL-дата процессинги.
Не вижу смысла впихивать любой язык во все возможные ниши.
Не знаю как в питоне сделают, в норм языках можно ещё и несколько условий сделать на каждый кейс, ифами это может чудовищно выглядеть.
>1. Удобнее читать
У тебя отступы для этого.
>иначе бы switch и не придумывали
А четкое понимает зачем это нужно есть?
Просто предъявлять претензии без обоснования своей позиции так себе занятие. Я вот не вижу как switch-case удобней читать.
>>098475
>можно ещё и несколько условий сделать на каждый кейс
Вложенный цикл. Ничего необычного и разницы с обычным if нет.
> ифами это может чудовищно выглядет
А может выглядеть точно так же.
Не, я понимаю, если бы вы реальную функцию приводили в пример, но "ну так выглядит лучше" - это совсем не то. Вот нахера было в принт засовывать скобки - вот это я не понимаю. Нахера сейчас отсекать кучу народу от новых веток и потом пилить четвертого питона заставляя всех переучиваться так же как со 2 на 3 - тоже непонятно. Там Гвидо мог бы сразу новый язык писать - какого-нибудь ужика или глиста.
К примеру я написал 3 модуля, они должны работать параллельно. К примеру каждый из них работает в своем контейнере, соответсвенно GIL у всех свой. А если я создам некий управляющий процесс, который будет запускать эти скрипты через subprocess.call ? Я так понимаю они запускаются в отдельных потоках, но что на счет гила?
А что насчет гила? Они сами по себе.
Но в целом это делается не так, а через очереди. Ты в главной хуйне пихаешь задачи в очередь, а воркеры уже автономно оттуда забирают.
Может ты просто никогда не писал switch-case? Другим почему-то не нужно доказывать его полезность, он есть практически везде и используется.
>Вложенный цикл
Это называется вложенный велосипед
>А может выглядеть точно так же.
Но там, где if выглядит "точно так же", никому и не приходит в голову юзать switch. Во всех остальных случаях он выглядит чудовищно.
Насчет переучивания - это просто персональная эволюция диктатора Гвидона, скоро допилят до нормального языка общего назначения.
А что вместо пистона? Руби мертв, шарподжавы слишком громоздкие, пыха для дебилов как и питон
>Вот нахера было в принт засовывать скобки - вот это я не понимаю.
А я как раз понимаю, это необходимо было делать.
У тебя print это функция, соответственно ты можешь работать с ним, как с функцией, обвязки вокруг делать, передавать как параметр куда-нибудь, параметры более хитрым образом передавать и т.п.
Оператор print был таким конкретным сктиптовым легаси, который обязательно надо было выпиливать.
Самая лажа была с юникод-строками, вот там они протупили конкретно. Во втором питоне юникод-строки должны были начинаться с u"строка", а в третьем питоне все строки стали юникодными (это тоже очень правильно), но они запретили синтаксис u"строка".
И стало в принципе невозможным делать совместимые программы, если у тебя юникод. print как функцию ты мог и во втором питоне делать, и подавляющее большинство другого. Но не строки.
Это пиздец как убивало. Несколько лет потребовалось, чтобы потом они разрешили использовать префикс u в третьем питоне, когда это уже перестало быть настолько актуальным.
>Нахера сейчас отсекать кучу народу от новых веток и потом пилить четвертого питона заставляя всех переучиваться так же как со 2 на 3 - тоже непонятно
Четвёртого питона не планируется. В питон добавляют какой-то функционал, но обратная совместимость сохраняется, только модули чистят некоторые, но медленно и предупреждая заранее.
Но питон, конечно, становится очень сложным. Его придумывали как простой язык для не инженеров, а с каждым релизом становится всё сложнее и сложнее, что освоить может только профессиональный программист с серьёзной подготовкой.
>Но там, где if выглядит "точно так же", никому и не приходит в голову юзать switch.
Приходит, в основном его только так и использовали, тогда, когда лучше if-else.
Если посмотреть код на C/C++, то там на практике в большинстве случаев у каждого непустого case будет break. А это полная аналогия с if-else.
If-else не делали, потому что другие традиции по скобкам и отступам в C/C++ были.
switch-case дополнительные возможности даёт тогда, когда ты в каком-то case делаешь часть работы, в следующем продолжаешь для более общего случая. Но это редкие случаи, очень запутанная логика и вообще грязный код.
>Другим почему-то не нужно доказывать его полезность
Ну теперь понятно почему ты сам не понимаешь зачем он нужен. Просто везде он есть, значит "ну, наверное, нужен". Миллионы мух, ведь не могут ошибаться.
>Это называется вложенный велосипед
К чему это ты? Как у тебя вложенный цикл switch отличается от такого же с if? Тут вообще никакой разницы нет и быть не может.
>никому
Кому "никому"? Ты все посты тут от имени каких-то "всех" пишешь, но конкретики ни в аргументах, ни в использовании так и не привел.
Вообще спор о том какая традиция лучше, а именно спор о тррадициях, а не о функционале считаю пустым.
>>098517
>У тебя print это функция, соответственно ты можешь работать с ним, как с функцией, обвязки вокруг делать, передавать как параметр куда-нибудь, параметры более хитрым образом передавать и т.п.
Ну так сам принт в скобки и зажимай. Зачем аргумент зажимать?
>Четвёртого питона не планируется. В питон добавляют какой-то функционал, но обратная совместимость сохраняется, только модули чистят некоторые, но медленно и предупреждая заранее.
Это сейчас не планируется. А к 2025 найдут опять неисправимую уязвимость,решат что пришло время и под этим соусом переделают половину синтаксиса.
>Не вижу смысла впихивать любой язык во все возможные ниши.
Ты забываешь о том, что язык это платформа.
Питон это не только синтаксис, это ещё большая библиотека в коробке, много сторонних библиотек, удобный pip и venv, сообщество и документация. Почему не питон, когда можно и на питоне?
>Это сейчас не планируется. А к 2025 найдут опять неисправимую уязвимость,решат что пришло время и под этим соусом переделают половину синтаксиса.
Этого явно уже не будет.
Питон эволюционирует так же, как и многие другие технологии. На начальном-среднем этапах какая-то гибкость есть, чем дальше, тем более индустриальная технология, более консервативное сообщество, потому что язык системообразующий.
Сейчас очевидно, что питон уже один из самых основных языков ИТ индустрии. И чем дальше, тем больше. 10 лет назад всё-таки другая ситуация была.
Поэтому новой ветки не будет. Скорее просто придумают новый язык по мотивам питона, это будет закономерно. Уверен, что произойдёт когда-нибудь, противоречий в языке накопилась масса.
Раби жив, как цой. Серьезно, там уже всё придумали, он типа жабы для веба теперь, только не такой душный.
Выучил верстку(html и css) и понял что это хуйня говняная с еблей мардижинами у блоков и стилизированием текста. Короче сумасшедшая хуйня, я не знаю как там можно 500 макетов сверстать и не сойти с ума. Короче решил в бек пойти. Питон норм вариант? Говорят что легкий для новичков. Ну хз. Вот выучу я питон с джанго и фласком и sql, а дальше как? На фрилансе заказы искать чтобы портфолио забить? И потом вофис когда норм портфолио соберется? Подскажите пожалуйста.
И да. Начал учить ЖС, он мне в беке бесполезен будет? Мне закончить с ним посоветуете и сразу пойти на питон или как?
а дальше как?
NICAQUE
На фрилансе видел на питоний веб только готовых специалистов на живой проект.
>К чему это ты? Как у тебя вложенный цикл switch отличается от такого же с if? Тут вообще никакой разницы нет и быть не может.
Switch не нужен вложенный цикл, можно просто добавить условий на один и тот же кейс. А вот if (вложенный_цикл) выглядит как хуйня. Почему цикл вообще? Давай рекурсию юзать, нахрен этот синтаксический сахар?
Вот до чего верстка доводит, на людей бросается.
>Приходит, в основном его только так и использовали, тогда, когда лучше if-else.
Ну вот смотри как в руби используют:
case item.class.name
when "Meeting"
item.start_time
when "Payment", "InsurancePayment"
item.paid_at
end
А если там целая куча этих вариантов? Как это будет на ифах и вложенных циклах?
какой в жопу цикл, вы о чём, аноны?
На условном языке, switch:
switch letter:
____case 'a': do_a(); break;
____case 'b':
____case 'c': do_bc(); break;
____case 'd': do_d();
____case 'e': do_e(); break;
90% кода реально это возможности a-b-c, и они полностью перекладываются на одномерный if-else
if letter == 'a':
____do_a()
elif letter == 'b' or letter == 'c':
____do bc()
Единственный минус, это letter в каждом условии явно указываешь, но зато добавляется дополнительная гибкость, можно более сложные проверки делать, чем в case.
А вот случай d-e уже сложнее, требуется вложенный if-else и немного коряво это будет. Но таких случаев не так много.
Полный аналог switch можно сделать с помощью цикла, может это анон имел в виду. Тогда будет
for _ in range(1):
____if letter == 'd':
________do_d()
____if letter == 'e':
________do_e():
________break
То есть тут не цикл, конечно, тут просто цикл ради оператора break.
какой в жопу цикл, вы о чём, аноны?
На условном языке, switch:
switch letter:
____case 'a': do_a(); break;
____case 'b':
____case 'c': do_bc(); break;
____case 'd': do_d();
____case 'e': do_e(); break;
90% кода реально это возможности a-b-c, и они полностью перекладываются на одномерный if-else
if letter == 'a':
____do_a()
elif letter == 'b' or letter == 'c':
____do bc()
Единственный минус, это letter в каждом условии явно указываешь, но зато добавляется дополнительная гибкость, можно более сложные проверки делать, чем в case.
А вот случай d-e уже сложнее, требуется вложенный if-else и немного коряво это будет. Но таких случаев не так много.
Полный аналог switch можно сделать с помощью цикла, может это анон имел в виду. Тогда будет
for _ in range(1):
____if letter == 'd':
________do_d()
____if letter == 'e':
________do_e():
________break
То есть тут не цикл, конечно, тут просто цикл ради оператора break.
>case item.class.name
>when "Meeting"
>item.start_time
>when "Payment", "InsurancePayment"
>item.paid_at
>end
Чем это хуже чем
_item = item.class.name
if _item == 'Meeting':
____ item.start_time
elif _item in ['Payment', 'InsurancePayment]:
____ item.paid_at()
Ну вот такой список вариантов. Реально, не вижу разницы.
Реально проблемой было, что оператора := не было до 3.8, это был персональный бзик Гвидо, но его переломали в этом и вроде как сломали этим. Без возможностей := действительно многое превращается в ад, в два раза больше строк. Ну не очень часто, но бывает такое.
Дело не в оверхеде, читать противно.
>>098592
Хуже тем, что надо знать, что switch не существует, когда это уже давно де-факто стандарт. Плюс If открывает ненужные возможности и заставляет читать всё от начала до конца, не вхуярили ли там какое-то ещё условие вместо обычного соответствия item чему-то. Когда видишь switch, сразу интуитивно понятно, что мы проверяем одну конкретную вещь, которую сверху написали.
По-моему, ты на ходу придумываешь какие-то нелепые придирки. В каждом языке вагон всякого говна и ничего, как-то блять читают.
Ну так-то всё придирки, да, можно и на перфокартах. Я просто заебался понимать, почему питон такой, почему в нем всё не как у людей.
И никакого бугурта.
Мимо 300ккк-нс джун
ап, пояснтие за архитектуру на пистоне.
Вот ты главный велосипедист, я этот вариант даже не упоминал, потому что он самый ебанутый.
я учился в 2000 году в универе, у нас БЫЛИ МАГНИТЫНЕ ДИСКЕТЫ на 3 мегабайта, чел.
ты щас даже не сможешь написать приложение чтобы оно занимало меньше 3х мегабайт
>БЫЛИ МАГНИТЫНЕ ДИСКЕТЫ на 3 мегабайта
Это что за дискеты такие? На полтора помню были, но на три?
На сишечке напишешь, почему нет?
1,44 Mb были.
ОФФТОП. Аноны, я чота походу совсем запарился и не соображаю. Решаю тут задачку для школьников и не могу справиться.
Уравнение касательной, проведённой к графику функции y=sin(x-Pi)+1 в точке его пересечения с осью ординат, имеет вид.
1) y = x+1; 2) y = x-1; 3) y =- x-1; 4) y =1- x.
Правильный вариант: 4.
Мои рассуждения https://imgur.com/bhyPnff
Гляньте, пожалуйста, кто шарит.
Ты сложно решаешь же. Надопросто понять геометрический смысл переменных.
Вот у тебя y=sin(x-Pi)+1
Что значит +1? Что весь график будетвыше на 1. То что было в y=0, то станет y=1, то, что было y=0.2, станет y=1.2.
Что значит -Pi? Что график сдвинется на Pi влево. Что было x = pi, то станет х=0, что было х=10pi, станет х=9pi.
Базовый график был y=sin(x)
Берёшь картинку, двигаешь график, и получается, что ось оординат пересечётся в точке, которая была x = Pi, y = 0 (можно посчитать любую из них, но и так видно), а стала x = 0, y = 1. Касательная к ней, соответственно, будет
y=-x (потому что график в этом месте падает под 45°
и +1
x = -x+1
Прочитал твои рассуждения, ты вычислил, где она пересекается с осью абсцисс (y=0 => ось x), а ось ординат — это ось y (x = 0)
Лох прет - не окучишь ты, так другие.
Так что если тебя не напрягает моральная сторона вопроса, то почему бы и нет, лол.
Я тоже чето таких не припоминаю.
>Нормально ли это, подумываю отказаться, но с другой стороны деньги хорошие предлагают.
Попробуй, не получится — вернёшь им деньги, скажешь, что ты неподходящий учитель для их детища.
> вернёшь им деньги, скажешь, что ты неподходящий учитель для их детища.
Не надо так делать и кодировать в себе неудачника.
Причём родители будут плохо думать из-за этого.
Если не получится за несколько раз, то надо просто отказаться, сказать, что тебе кажется, что неэффективно занятия идут и тебе проще с профессиональными программистами, чем со школьниками. Или родители сами откажутся.
>>098918
Ты будь готов, что у тебя люди будут непонимать совсем такие вещи, которые вроде бы очевидны. И тебе надо думать не над лутцем, а над тем, как сделать так, чтобы они это поняли.
Вот банально такие вещи, что такое цикл или функция.
Люди не алгоритмы, формальным описанием они не программируются. Крутым программистом тебе не нужно быть, теме надо уметь учить, это разные вещи.
Не было. Как дед говорю, который пользовался дискетами.
Там в теории были, но ни стандартные дискеты, ни дисководы такой формат не поддерживали.
То есть технология допускала, но реализовано массово этого не было.
бля,это не я учить собрался,я прост не могу наебывать. нужно переадресовать твой коммент тому, кто учить собрался.
алсо я бы может и рад учить, но у меня такой бзик что я не могу учить за бабки чему -то , если сам в этом не шарю на 100%.
а шарить в птионе на 100% это надо дрочить лет 5 минимум еври дей разные задачи, что нереально.
>>098987
я тоже пользовался, вроде 3 мб были. Хотя ХЗ, может припарил уже. но насколько помню были на 3 и на 1,5. на 3 блатные считались
вот нашел даже большего обьема
>вот нашел даже большего обьема
Вот если бы ты у себя на антресоли нашёл такие, тогда бы да. Но их не было и нет в постсовке.
Обоссывание высшего уровня, от самого. И ещё такой - вот вам костыль, но эй, осторожнее с этим, а то аттакеры смогут вызвать любой метод! Вот это я понимаю продуманный язык, лаконичный, ничего лишнего, лол.
Анон что-то путает, время переписало воспоминания.
Ни разу не видел сам 2.88, хотя слышал тогда, что такие существуют и даже искал по-возможности, меня такие штуки интересовали.
Зашёл сейчас на амазон, там продают очень много дискет, несколько сотен предложений. Отсмотрел первые 10 страниц, то есть 150 предложений, там в основном 3.5 по 1.44 и 720кб, реже 5-ти дюймовые дискеты. Ни одного варианта на 2.88 не вижу. Может где-нибудь есть, но это что-то единичное.
То есть такие дискеты и у американцев были в статусе очень большой экзотики, тогда как 1.44 самый массовый продукт.
>алсо я бы может и рад учить, но у меня такой бзик что я не могу учить за бабки чему -то , если сам в этом не шарю на 100%.
>а шарить в птионе на 100% это надо дрочить лет 5 минимум еври дей разные задачи, что нереально.
Чтобы учить программированию противопоказано знать слишком круто. Тебе просто сложно будет обучать.
Это вообще разные скиллы.
Ученик - это как твоя программа на незнакомом языке. Ты чего-то написал, а оно не работает, и ты не понимаешь, почему не работает. И начинаешь костылять, вставлять отладочную печать на каждой строке и т.п. жуть.
Ученику ты показываешь что-то, просишь сделать что-то подобное, а он не может. Только методом тыка пытается. И ты не понимаешь, в чём его проблема.
Ты правильно сомневаешься в том, что ты сможешь учить. Но проблема не в нехватке понимания, а в том, что ты не понимаешь, как учить кого-то чему-то. И своих задач не понимаешь, такое ощущение.
А ученику с тобой сложно, потому что тебе вроде как очевидно, а ему нет.
Тому ученику, которому дебри нужны, репетитор скорее всего не нужен, он сам научится по книгам.
Я бы хотел кстати попробовать кого-нибудь порепетировать. Как такие предложения найти? И ты вкатунов учить собираешься, или школьников-студентов?
Вкатунов бы, пожалуй, не очень хотел.
(на жабу решил забить, т.к. там слишком дохуя разных альтернатив нужных по одной и той же теме, в том же спринге и около того с десяток разных видов одних только ORM, я ебал все это учить чтоб потом завалиться на собеседовании об какое-нибудь говно, которое скипнул)
С чего начать? Вот открыл книжку лутца, а там воды больше чем в моем дипломе по финансам. Просто ебаный океан блядь.
Дайте гайдлайн по книжкам и че там начиная от основ, заканчивая джангой, тестированием и прочему говну. Я вроде так понял что алгоритмы у патлатого на ютубе, это ладно. Че по остальному?
можно даже не книжки, можно даже курсы какие-нибудь не инфобизнесменские тока
На самом деле это один ебовейший кирпич, тома в переводной.
Алсо, сюрприз, такой кирпич не один, лол.
Но книга хорошая, хоть и старая, в ней реально много всего. В питоновских книжках очень большой перекос в сторону ньюфажеских, которые покрывают небольшую часть для хоть какого-то использования. А попродвинутее мало, Лутц это одна из них.
а вообще, есть ли смысл вкатываться в пайтон без мат бэкграунда?
Я уже всю математику забыл к херам, максимум могу простенькие алгоритмы сложность подсчитать, и то там математика особо не нужна, чисто на рефлексах понятно где логарифм, а где степень, а где что-то среднее.
Я так понял, в пайтон идут только для машинлернинга и дата саенс? В джангу крудить никак не устроишься из-за того что пайтон легче чем энтерпрайз языки? Я вроде видал несколько вакансий даже в моем мухосранске на макака-круд работу, но из-за того что язык легче, таких макак будет больше конкурентов, да?
Язык не легче, он максимально ебанутый, тупо хайп идёт и всё.
Язык не легче, у него более ясный и "красивый-четкий" синтаксис. Имеется в виду не легче js, php и прочего из мира веба.
>более ясный и "красивый-четкий" синтаксис
Неконсистентный с самим собой и намеренно нарушающий общепринятые конвенции других языков.
Я как нубик говорю, который видел пыху (когда на фрилансе пыхтел), пытался в js, видел джаву (в книжечке и на курсах), видел плюсы у друга.
Питон это такой ЯП, на чей код ты смотришь и можешь почти все понять сразу - вот здесь цикл, вот здесь условие, вот здесь функция, сравнения, переменные и прочее. В начале это прям дикая завлекалочка для вкатуна.
Сейчас я делаю так: загружаю таблицу в другой csv-файл, и каждую строку из первого файла ищу во втором. Короче, медленно. Можно ли быстрее?
Использую python (можно bash)
Только это. Для профессиональной разработки чего-либо - абсолютно непригоден, хотя некоторые умудряются. Медведя тоже можно научить ездить на велосипеде.
Сколько файлы весят? Можно пожертвовать памятью если влезет весь файл все строки из первого файла сохранить в множество (set), потом проверка каждой строки будет за O(1) вместо O(n)
Прототипирование + не забывай что к Питону прибегают ученые и математики (которые как бе не программисты, но иногда и им надо).
спасибо, анон, попробую. На размер файлов ограничений нет, ну думаю порядка ~10к строк
Бля, спасибо, анон!
>Прототипирование
Всегда прикалывало это слово. Такие с умным видом произносят, как будто реально бывает так, что сначала делают на питоне из расчёта, что потом будут переписывать на java/c#.
ЛОЛ, нет, конечно, фантастика. Бывает иногда, что сделают на одной платформе, потом упираются в производительность и переписывают на другую, полностью или частично, но это другое всё-таки.
Почему другое?
Про словари
>Обоссывание высшего уровня, от самого.
чем плохо-то? Кроме аргумента "там рядом перечислен другой вариант с возможным выстрелом в ногу" что-то можешь привести?
Про второй способ - ну какой же яп без способа выстрелить в ногу. Да и выстрелить вряд ли получится - если программист в курсе гетаттра, то очень вероятно, что знает и про то, как защититься от уязвимости такой. Например, способом, описанным на твоем же скрине.
>https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ваша ссылка сдохла
>потом упираются в производительность
На пистоне можно упереться в производительность или на мат операциях или когда монолит делаешь, для среднего проекта распиленная на микросервисы архитектура нормально подходит. Потом если нагрузка возрастает и девопс начинает приносить жирные счета можно переписать часть системы на что-то более производительное.
Легче сразу на чем-то другом писать.
>>099196
>>099134
Кажется я потерял остатки уважения к этому языку, когда сам попробовал им воспользоваться. До этого отказывался от мысли, что такой инвалид может быть популярным языком, который везде и всюду суют, думал - ну мало ли какая причуда, значит были на то причины. Но нет, оказалось, не было. Просто главный дезигнер тешил своё эго, а вы теперь попробуйте на этом ехать.
>Легче сразу на чем-то другом писать.
Не легче, по скорости разработки ему нет равных, особенно если вы стартап пилите, где фичи нужно каждый спринт по фиче выливать. Для MVP это очень важные качества, так же быстро только на рубях можно.
Вот на рубях и надо. Змеиного уродца всегда можно сбоку заюзать, если уж так нужен ML, AI и все такое.
Что значит "таблица"? эксель что ли?
Делаешь df1 = pd.read_csv("file1.csv"), df2 = pd.read_excel("file2.xlsx"). Нарезаешь столбцы как тебе надо. Можешь даже создать столбцы типо df1['source'] = "file1". И сделать потом pd.concat([df1.drop('source'), df2.drop('source')]).drop_duplicates(keep=False, subset=df1.columns.drop('source')).
Сомневаюсь, что профи среди них больше, чем на любой другой ЯП. Может ещё заколебаешься фильтровать. Разве что под обучение набрать, таких да, пруд пруди.
>Сомневаюсь, что профи среди них больше, чем на любой другой ЯП
Причем тут другие ЯП если мы про руби и питон говорили? Тебе конкретную задачу назвали под которую питон подходит, MVP для мест, где скорость разработки важна. У рубей в еще в середине десятых проблемы были.
А, ну лол. Если сейчас как в 2013 - значит всё норм. Не помню, чтобы у кого-то были проблемы. Просто нет хайпа и всё. Все, кто хотят - находят работы и работников. А что за проблемы в середине десятых, если там как раз самый подъем был?
>А, ну лол. Если сейчас как в 2013 - значит всё норм.
Кроме того, что с каждый годом идет падение
>А что за проблемы в середине десятых, если там как раз самый подъем был?
Тогда уже начала падать популярность, дроп вакансий произошел с задержкой
Язык одного фреймворка из которого спиздили киллер фичи в другие фреймворки, типа той же джанги. Как поняли, что можно быстро говнякать сайты на других языках с более широким профилем применения так свалили туда. Да и питонячий асинкио выстрелил в то время, как руби мог только срать тредами с GIL.
А можешь рассказать (если знаешь) почему Питон выбрали всякие ученые, математики и прочие люди в науки и около нее для своих моделей и мат. расчетов?
Меньше шансов выстрелить себе в ногу + простое написание либ с сишным бекендом
>Да и питонячий асинкио выстрелил в то время, как руби мог только срать тредами с GIL.
Чего там выстрелило, когда оно появилось всего лишь 3 года назад? Ещё даже заюзать мало кто успел, наверное.
Дед, async/await вышел еще в 2015, 6 лет прошло уже, а еще год до этого можно было через декораторы делать. Аiohttp уже в 2016 релизнулось.
Все равно нафиг не нужен для веб-дрисни, а другое в сравнении с руби и не обсуждается.
Руби вообще труп. Сначала отвалились рельсы, он зацепился ещё каким-то чудом в области девопс, а теперь его оттуда выпизднул го.
>Все равно нафиг не нужен для веб-дрисни
Ну вот захотел я найти асинхронный клиент для amqp
Есть это, не обновляется с 2020 года и поддерживает только дропнутые версии рубей
https://github.com/ruby-amqp/amqp
Есть банни, но там по треду на коннект, что вместе с GIL убивает производительность.
>it maintains its own I/O activity loop in a separate thread, one per connection.
>а другое в сравнении с руби и не обсуждается
Потому что для другого руби не нужны и там нет нужных либ
Просто объясни зачем тебе RabbitMQ на руби, если там есть sidekiq? Сложно это понять. Ну типа разве что там какая-то олдовая кодовая база, которую надо перевести на языкнейм, в данном случае пистон.
Не знаю чо там отвалилось у вас, я на нем работаю 8 лет и всё ок, основные гемы обновляются регулярно, новых сотрудников дохуя влилось за последний год. Хз, сравнить с питоном не могу, профессионально им не занимался, но то, с чем столкнулся в побочном проектике - неприятно удивило меня.
>Просто объясни зачем тебе RabbitMQ на руби, если там есть sidekiq?
>сравнивать бекграунд процессинг и брокер сообщений
Ты серьезно сейчас?
Я не вижу особой разницы, объясни мне. Практическую, не вакуумную желательно. Вот эту статью прочитал:
https://stanko.io/rabbitmq-is-more-than-a-sidekiq-replacement-b730d8176fb
>If you are a business, or have a $1000 spare, you can resolve this issue by buying a Sidekiq Pro license which ensures that a job gets executed and comes with other niceties. Personally, I find this price tag too steep (especially since it's recurring) for small/personal projects which lead me to look for alternatives.
Вопрос: а ты уверен, что все перечисленные фичи вообще нужны в small/personal projects?
А вот это уже заставляет задуматься:
>There are some features that are missing in Rabbit, like cron jobs and unique jobs, but they can be added by the clients.
Сron jobs and unique jobs - это вот то, что юзается в проде постоянно.
Как обычно, компромиссы. Если б RabbitMQ был так нужен, его либы были бы свежими как sidekiq.
Не, ну ты серьёзно?
Брокер сообщений позволяет соединять кучу разных микросервисов которые могут быть сделаны на совсем разных платформах.
Если внутри монолитного приложения работать, то да, внешний сервис не очень нужен.
>Я не вижу особой разницы, объясни мне.
sidekiq корректнее сравнивать с celery, которая может использовать кролика как бекенд. А сам кролик может использоваться просто как брокер сообщений между любыми сервисами на любых языках, лишь бы формат соблюдали.
Вот недавно у меня была интеграция со сторонним продуктом, они как раз предоставляли свою очередь реббита, так как нужно было иметь персистентную очередь. Можно это как канал связи для RPC юзать, очень много кто на этом микросервисы строит.
Насчёт трупа спорно, по крайней мере на ХХ количество вакансий по слову "ruby" примерно такое же, как и по "django", меньше, но немного. И на джанго из этих много нерелевантных, где только текст вроде "иметь опыт с каким-нибудь из фреймворков вроде django/flask/aiohttp".
По слову "python", конечно, разница уже десятикратная.
Мне кажется тут уже их архитектура вокруг реббита построена, поэтому и так, наверное так удобнее и привычнее им было делать на джаве какой-нибудь. Я с рубями таких сервисов и не встречал. Обычные API и вебхуки везде.
Тебе нужно отослать сообщение на сторонний сервис и иметь гарантию, что оно останется в очереди до востребования, даже если сам сервис лежит, что делать будешь?
Мы же не обсуждаем с очередью или без. Почему это должен быть именно реббит, а не другая очередь + API - малопонятно. Зависит от решаемой задачи в конце концов.
Ну найди тогда хоть один клиент для очередей на руби, к которому можно прикрутить любой другой язык и который может работать асинхронно не через треды, это тупиковый путь.
*все межсервисные сообщения
>>099817
Тогда взаимодействие переезжает на другую ноду кластера, у реббита все хорошо с реплецируемостью
https://www.rabbitmq.com/clustering.html
Оно синхронное
Видишь, ещё фейловер надо накручивать. Короче, это пустой холивар без конкретики. Доебаться можно много до чего, руби от этого не перестает быть эффективным для решения своей основной задачи - "быстро наговнякать веб", как выше сказано. Пистон со всем обилием библиотек всё равно выглядит как инвалид в этом плане и причина почему его юзают в вебе - потому что из него стреляют как из пушки по воробьям по всем задачам сейчас, от юзерлевел-скриптинга до дата майнинга. Удобство необязательно, главное чтоб питонодети имели широкие возможности.
>Доебаться можно много до чего, руби от этого не перестает быть эффективным для решения своей основной задачи - "быстро наговнякать веб", как выше сказано.
И зачем выбирать руби, если он не эффективен по I/O? С питоном можно дольше жить перед тем, как придется переписывать проект и даже потом можно переписать частями, так как он позволяет эффективно реализовывать микросервисную архитектуру и постепенно подменять компоненты.
Как я понял из твоих слов на руби ты монолиты пишешь и придется все заново переписывать, если перфоманса перестанет хватать, а не только критически важные компоненты для начала.
А если твой сервис с очередью на руби упадёт? Да мало ли чего упасть может.
Но смысл в том, что благодаря таким инструментам ты можешь делать сложные проекты с разными сервисами. Можешь писать нужные задачи на нужных языках, или, скорее, подключать уже готовые решения, написанные на других языках.
В современном мире глупо завязываться во всём на один язык.
Да блин, ты так говоришь, будто это всё нельзя на руби. Именно так и работает, просто без реббита. Что за эффективность по I/O для добавления задачи в очередь? Миллисекунды выгадать хочешь или что?
>Как я понял из твоих слов на руби ты монолиты пишешь и придется все заново переписывать
Нет смысла начинать разработку сразу с микросервисов, с ними будет больше проблем, чем профитов. Не понял почему нужно будет "заново переписывать" что-то. Вынеси критическую часть и живи дальше.
>>099887
>В современном мире глупо завязываться во всём на один язык.
Предлагаю не завязываться на пистон.
>Что за эффективность по I/O для добавления задачи в очередь?
Оверхед на смену треда каждого треда при любом запросе, хоть в базу, хоть на прослушивание очереди.
Не, у меня либа одна позволяет выполнять только 2 операции над её объектом:
сохранить в файл
получить байтаррей
Мне нужен промежуточный вариант, где я получаю RAW байты файла, как в момент записи, но в переменную. Т.е. без записи на диск.
С байтарреями не знаком, что-то с ними ничего не получается сделать.
Ну это чушь, нет никакого значимого оверхеда от синхронного выполнения этих действий. Асинхронщина в рамках одного запроса - максимум приятный бонус (если есть чего распараллелить и если это не создаст дополнительных проблем), но уж точно не решающий фактор в выборе инструментов. Больше времени будешь с питоном ебстись.
>Ну это чушь, нет никакого значимого оверхеда от синхронного выполнения этих действий.
Ну тупые люди, асинхронные инструменты придумывают зачем-то. Ты настолько сросся со своим стеком, стал некомпетентен во всем остальном.
Не для этого их придумывали, лолка. Большинство обычных user flow - синхронны по сути, там нечего параллелить. В ноде это было с самого начала, чет не взлетело.
> Большинство обычных user flow - синхронны по сути, там нечего параллелить
Даже поход в базу и на сторонюю апиху от асинхронности выигрывают
Нода довольно хорошо взлетела, именно благодаря асинхронности. На ней много чего делали. Потом её поджали другие платформы, тот же питон.
С нодой проблема в том, что там асинхронность больше на коллбэках, куча библиотек на это завязано, а сейчас это не модно, можно async/await. Тут уже сложнее, не так нативно. Сам язык JS говно и npm помойка, тоже против играют.
Но если смотреть сейчас, то вакансий на ноду намного больше, чем на руби или на джанго.
>>099926
> Больше времени будешь с питоном ебстись.
Нет такой проблемы у питона, самый лучший язык. Но есть проблема в производительности. То же переключение задач в asyncio на самом деле довольно дорогая операция, о каком-то крутом хайлоаде можно забыть.
Но в остальном всё хорошо и те проблемы, которые были в середине десятых, решены. Поэтому питон и полетел вверх.
>Т.е. без записи на диск.
Создай временный файл в /tmp/
Как он вообще на диске выглядит, с чего ты взял, что он не точно такой же байтаррей?
>С байтарреями не знаком, что-то с ними ничего не получается сделать.
А что ты с ними хочешь сделать?
>Создай временный файл в /tmp/
Тоже как вариант, но контейнер засрётся со временем.
>Как он вообще на диске выглядит, с чего ты взял, что он не точно такой же байтаррей?
На диске там просто байты. Я пробовал переводить байтаррей в байты, но boto3 ругался на него.
>А что ты с ними хочешь сделать?
Я хочу взять файлик и несохраняя его на диск отправить в S3.
>Я хочу взять файлик и несохраняя его на диск отправить в S3.
s3 же можно подмонтировать в виде файловой системы. Просто сделай так и сохраняй файл на неё. Если не хочешь, то какие ещё есть у s3 интерфейсы?
У boto3 два метода - аплоад файл и аплоад файл-лайк обджект.
Файл мне не нравится т.к. на диск записывать надо, поэтому и пытаюсь понять как мне получить файлобджект.
чел ты мудак, я тебе сразу сказал про stringio
Это копия, сохраненная 1 августа 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.