LINUX.ORG.RU

Из верстальщика в backend.Слишком много вопросов.

 ,


0

5

Работаю верстальщиком в небольшой конторе, плюс немного знаю JS(плагин подключить, обработчик написать, в тонкости не вдавался). Как хобби, взялся за программирование, выбрал Python где-то два года назад. За это время поднатаскался с базами данных, даже десктоп пробовал писать на tkinter, делал парсеры. Приступил к Flask, написал небольшой сайт с авторизацией(использовал session). Планирую дальше развиваться в вебе, а именно на backend. Что мне делать дальше: изучать Django или попробовать что-то другое(другой язык)? Популярность Python только растет, но и появились .Net Core, Golang, Rust и др. Насколько эти варианты лучше/хуже, у меня есть сомнения в дальнейшем развитии с Python. Python не идеален. Пока я увидел его следующие проблемы: сложная поддержка от версии к версии(от 2 к 3), скорость работы программ. Не за горами Python 4. Какая там будет совместимость с 3 версией, не придется переписывать части кода и не ухудшится скорость работы? А wasm на Python реален или только на компилируемых языках возможен?


Ответ на: комментарий от anonymous

Мы ещё в школе пытались переименовывать .mdb в .com, сойдёт? ;) Зачем вообще глупостями такими заниматься, всё равно на никсах вообще похрен, какое у файла имя — программам похер, с каким дескриптором работать, хоть с виртуальным…

mertvoprog
()
Ответ на: комментарий от mertvoprog

Зачем вы из убунты делаете nix это я понимаю хотите нишу занять за место настоящих создателей те же pkg это data.xz если deb открыть архиватором , мне кажется не надо заниматься лишними тело движениями

anonymous
()
Ответ на: комментарий от mertvoprog

И работают вечно, ага?

Практически да, а что? Соотношение времени работы к времени запуска стремится к бесконечности.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Какая ещё бубунта, какой nix, Вы о чём вообще? GNU/Linux — единая ОС, а дистрибутивы — это васянские ZverCD-сборочки.

mertvoprog
()
Ответ на: комментарий от mertvoprog

gnome-screenruler creates a helper method Kernel.loop (with 2 arguments), overriding system-wide Kernel.loop (with 0 arguments), and that system-wide method is used when loading gems - which results in this error.

Отличная идея манкипатчить Kernel (типа глобальный неймспейс). Что может пойти не так? Если чо переименуем loop в zaloop.

bread
()
Ответ на: комментарий от WitcherGeralt

На ней можно написать всё, что ты можешь написать на SQL.

Но оно же сложнее любых процедурных диалектов SQL. И никто не понимает этот ужос кроме специально обученных питонщиков. А для круда с тремя таблицами как-то избыточно.

bread
()
Ответ на: комментарий от leave

Я говорю, что однопоточная «асинхронщина» (в бэкенде) это дичь. Но, учитывая ЦА ноды, мультитрединг им лучше не показывать

А кому его надо показывать? Говоделам делокерам, которые делают по 1к тредов и удивляются чо это оно тормзит?

crutch_master ★★★★★
()
Ответ на: комментарий от leave

Это по-прежнему однопоточная хрень, на которой пытаются делать сложные вещи.

Зачем тебе многопоточная хрень? Чтобы делать что?

crutch_master ★★★★★
()
Ответ на: комментарий от mertvoprog

Единственное оправдание отсутствию мультитрединга — когда среднее количество одновременных запросов не превышает количество ядер

Это оправдано всегда, когда вся работа потока сравнима с работой по переключению его контекста.

crutch_master ★★★★★
()
Ответ на: комментарий от mertvoprog

Ну вот как ни странно, Мы понимаем с первого раза многих нервотиков

Не мы, а вы.

Может, дело всё же в понималке?

Ну ты уже почти понял, да.

r_asian ★☆☆
()
Ответ на: комментарий от dem

Дублирование… Виндузятникам и ведроидщикам это привычное дело.

mertvoprog
()
Ответ на: комментарий от bread

Будто в каком-нибудь JS конфликтов с глобальным неймспейсом не бывает, ага. Практика писать void 0 вместо undefined у особенно параноидальных девелоперов не просто так пошла. А в сишечке и вовсе неймспейсов нету, хехе.

mertvoprog
()
Ответ на: комментарий от mertvoprog

Не знаю как там принято в js, а в данном случае ничего не мешало буратинам сделать свой Sruler.loop. В итоге они к этому и пришли, но в стиле сишки: Kernel.sruler_loop. А разработчики рубей вообще не при чем (ну кроме того, что они дали приматам опасную бритву).

bread
()
Ответ на: комментарий от bread

А надо как в жабке, чтобы вообще понятия глобального скоупа не было?

mertvoprog
()
Ответ на: комментарий от mertvoprog

Да хотя бы рассылалка уведомлений или любая другая херня, которая работает с вебсокетом, например. Соединений дохерища, а работы мало.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от crutch_master

рассылалка уведомлений

Ну ясно — хэллоуворлд ;) А впрочем, в мире Ъ-микросервисов всё хэллоуворлды…

mertvoprog
()
Ответ на: комментарий от WitcherGeralt

В джанге при этом даже как таковых планов нет ORM асинхронным делать.

Можешь пояснить для чего нужен асинхронный ORM? Типа отправил запрос в базу данных, выполняешь какой-то код, поступает сигнал о том, что запрос выполнился, переключаешься на код, который работает с результатом запросов.

dicos ★★
()
Ответ на: комментарий от dicos

Именно так.

Значимая часть обработки запроса — это время работы БД. Пока БД делает свою часть работы, Web API может не делать ничего, а может начать обрабатывать другие запросы.

WitcherGeralt ★★
()
Ответ на: комментарий от mertvoprog

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

Не пойму твою мысль. Чем по-твоему независимые асинхронные воркеры хуже тредпула?

Так-то они заведомо лучше.

WitcherGeralt ★★
()
Ответ на: комментарий от Princesska

Каким образом там выполнение «нативное», когда под капотом тот же самый V8?

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Значимая часть обработки запроса — это время работы БД. Пока БД делает свою часть работы, Web API может не делать ничего, а может начать обрабатывать другие запросы.

А как обрабатываются в асинхронных ОРМ транзакции: создание, завершение, откат транзакции? Логически транзакция это сихронная вещь.

dicos ★★
()
Ответ на: комментарий от dicos

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

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Тема провокационная. Хейтеры мало понимают в том, что хейтят, слушать ничего не хотят. Типичные лор срачи)

menangen ★★★★★
()
Ответ на: комментарий от mertvoprog

Ненужно никакое взаимодействие, воркеры будут шарить максимум сессии. Но они это в любом случае будут делать, ибо нужно дублирование.

оверхедом на независимые процессы

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

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Ненужно никакое взаимодействие

В хеллоувроте не нужно, потом понадобится ;)

А от асинхрона всё равно никуда не уйдёшь

Но асинхрон-то многопоточности/многопроцессности никак не касается. Его и в одном потоке делать можно, эвентлупом. Собственно, JS без новомодных костылей только так и работает.

ядра не должны простаивать на блокировках

А почему они будут простаивать, если тредов намного больше, чем ядер?

юзабельного многопоточного асихрона кроме Go так никуда и не завезли

Ну так надо это исправлять. Или мигрировать на Go ;) Многие концепты сначала были лишь в одном-двух языках, но потом расползлись по мейнстриму.

mertvoprog
()
Ответ на: комментарий от mertvoprog

потом понадобится

Инстансы вообще ничего друг о друге знать не должны, иначе с архитектурой что-то не так.

тредов намного больше, чем ядер

Хех, в дворники, оптимизатор хренов. Процессы у него жрут…

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

ничего друг о друге знать не должны

Идеальный мирок функциональщиков, ага. Реальность чуть другая ;)

жрут

При чём тут это? Речь о простое ядер.

mertvoprog
()
Ответ на: комментарий от mertvoprog

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

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Не будут ядра простаивать при асинхроне вообще, если нагрузка будет соответствующая

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

кеш вымывать

С чего бы, если у них память в основном общая? Ведь если общей памяти мало, то и профита особого перед независимыми процессами нет.

mertvoprog
()
Ответ на: комментарий от mertvoprog

Будут, если асинхрон однопоточный

Я охреневаяю с твоей памяти, товарищ золотая рыбка. Речь была про запуск воркеров, разумеется по одному на ядро.

С чего бы, если у них память в основном общая?

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

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Просто нужно 100500 ядер. Асинхрон это затычка для бедных. Изначально вообще никаких воркеров там не предполагалось, всю эту срань придумали для одноядерного проца дабы не подвисать на IO. А хипсторы сделали из этого религию. Асинхрон маздай!

anonymous
()
Ответ на: комментарий от dicos

Ты имеешь ввиду корутину?

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

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Речь была про запуск воркеров, разумеется по одному на ядро.

Асинхронность-то при чём?

он за чем-то сходит в бд

Ну вот хотя бы обращения к БД стоит кэшировать. Особенно если БД на другом хосте. Впрочем, кэширование — это в общем случае тоже задача БД, ну или ОС :3

сверху ещё дофига памяти выделится на тонну абстракций

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

Вымывать будет на ура

Если воркеры дохрена чего делают, и процессорного кэша не хватает, то вымывать будет по-любому — хоть потоками, хоть процессами. А если не делают, то треды лучше.

mertvoprog
()
Ответ на: комментарий от mertvoprog

Асинхронность-то при чём?

Так они будут асинхронно обрабатывать по нескольку одновременных запросов каждый.

Если воркеры дохрена чего делают, и процессорного кэша не хватает, то вымывать будет по-любому — хоть потоками, хоть процессами

По процессу на ядро. Чего там будет вымывать? В случае с «сильно большим» чем количество ядер количеством потоков у тебя одним стеком всё вымывать будет, уж не говоря про то, что я выше сказал, да ещё и потоки будут мигрировать.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.