Это копия, сохраненная 12 ноября 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Уже реализовано.
Если у тебя есть конкретные идеи что парсить, для чего и кто будет этим пользоваться, то я готов их выслушать.
У меня есть 2 парсера на самом деле, я не знаю, правильный ли я термин подобрал, первый с одного сайта выводит последние заголовки новостей, второй выводит краткую погоду на следующие 7 дней.
Такие веб-сайты обычно называют агрегаторами. Твоя идея, пока она не имеет конкретных очертаний, бессмысленна, т.к существует множество таких же сервисов.
У меня есть.
Давайте будем парсить треды тобишь html, и затем строить дерево. Типа оп-пост это корень, ответы на него это листьяветви нувыпонели, ответы на ответы это тоже листья и.т.д...
Если я правильно тебя понял, то наверное аяксом периодически делай запрос на какую-нибудь вьюху, которая чекает мессаджи и возвращает тебе жсон, ну и выводи на страницу.
Похоже, ты предлагаешь создать древовидный вывод сообщений на имиджборде.
Это не имеет смысла делать на бекенде. Могу порекомендовать сделать фичер-реквест в куклоскрипт.
Отлично. Конкретная идея. Теперь объясни для чего она нужна и кто будет этим пользоваться.
Да не я прост по фану предлагаю. Типа потом можно будет по этому dot файлы генерить. ну и все какбе
Какой-то пиздец. Не думал что так сложно такую хуйню запилить. Спасибо за ответ.
Ну если ты хочешь без перезагрузки всей страницы, то так, наверное. Ничего сильно сложного в этом нет, в принципе
У меня в бардачке уже валяется идея для cli-клиента двача.
Если есть желающие и уиеющие работать с urwid, то можно попробовать.
Однако, эта идея не в приоритете. Я, к примеру, ищу веб проект.
Я наговнокодил с помощью bs4, тащемта, и весьма неплохо выглядит
Обычные три строки, обновляемые с определенным интервалом
Я не понимаю что ты "наговнокодил". Если ты о ретриве информации с двача, то есть прекрасный объектный вроппер для работы с его апи. Скраппинг здесь неуместен.
А сам джанго не предоставляет никаких мокрописек вообще для украшения? Вообще хочу всроенные сообщения приукрасить https://docs.djangoproject.com/en/1.10/ref/contrib/messages/. Вообще вырвиглазно выглядит.
>>859301
Господа, у вас есть какие-то идеи? То что с вами не выйдет работать это уже ясно, но вы можете пораскинуть мозгами абстрактно.
Тебя ебет?
Какие нахуй идеи, поехавший? Я с помощью супа просто выкачиваю строки из кода страницы, я не ебу, что тебе не понравилось, расскажи мне, через какую жопу ты решил сделать то же самое.
оппик - понос возомнил себя тян и душит глисты
лол
Создание классов для тредов, постов и файлов с свойственными им методами и аттрибутами с высокой читабельностью и процентом переиспользования.
>>859308
Идеи для веб-приложения.
Теперь окончательно проиграл.
Нет, я избегаю сервисов без api. Тем более что сейчас почти все сервисы подгружают рилтайм с помощью js и bs4 с этим уже не справляется.
подпевайте
>>859329
>>859327
>>859326
>>859325
>>859324
>>859320
Мне кажется, вы здесь не кстати.
>>859333
Объясни, пожалуйста.
Тебе и собака нравится.
Забыл сказать, что код не тестился и вообще больше похоже на наброски.
Не знаю насчет украшений. Возможно, есть какое-то простое решение, но когда мне надо было их украсить, я делал следующим образом.
У мессаджей есть левелы. Когда ты рендеришь мессадж, то ты помещаешь его в какой-то тег, правильно? Можно брать левел мессаджа и пихать его в атрибут класс того тега, который его отображает. А в цсс потом прописать как отображать тот или иной мессадж - еррор - красный, саксесс - зеленый и т.п.
Я так делал, когда мне нужно было, чтобы алерты Twitter Bootstrap'а соответсвовали левелу сообщения. Для этого надо было немного переопределить константы, чтобы они соотвествовали классам бутстрапа. Если используешь бутстрап, то я могу попробовать найти код и постараюсь вспомнить как оно работает.
Если не используешь бутстрап, то не заморачивайся с переопределением констант. А просто цсс классы напиши для каждого левела сообщения.
Хуйни понаписал. Надеюсь, ты понял, что я имел в виду.
Да
Ну если для тебя это достаточное обоснование, то ок.
КРАСИВЫЙ СУП
Вопрос по парсингу строки регулярными выражениями. Ищу несколько совпадений в строке, при этом одно из-них не обязательно. Конструкция вида:
[code]
headers = re.search('.?(Accept-Encoding = .?)\n.?(Content-Encoding = .?)\n.*', page)
print (headers.groups())
[/code]
работает только если найдены оба совпадения в противном случае валится с AttributeError. Парсить строку отдельно для каждого значения не хочется, как быть?
Ноль целых, ноль десятых.
я только учусь еще(ну чутка git знаю и питон и совсем уж базовые вещи типа цикл, условие, функция, класс...
Скучно.
Еще вариант с {0,1}:
headers = re.search('.?(Accept-Encoding = .?){0,1}\n.?(Content-Encoding = .?){0,1}\n.*', page)
>И как же выглядит твое решение?
Как твое, лол
headers = re.search('.?(Accept-Encoding = .?|Content-Encoding = .?){0,1}\n', page)
for match in headers:
\tif match.group(1):
Порядок заголовков иногда меняется, отсюда говнокод с циклом.
Ох вэй, не заметил, как опять пришел к заполнению переменных по отдельности
Используй именованные группы. И прочитай наконец документацию к регуляркам.
Почему тут через проперти вызываются геттеры и сеттеры? Для чего так сделано?
Но они же не вызываются, а определяются. Что тебя смущает?
Котоны, спасайте. Проблема с celery в джанговской админке. Суть - есть джанга 1.8.15 и celery 3.1.19.
Чтобы иметь возможность отрабатывать селери таски после транзакций, поставлен django-transaction-hooks который вмерджен с джанги 1.9.
Он позволяет просто задавать колбеки которые будут выполнены когда текущая транзакция будет закоммичена.
В обычных вьюхах все вроде работает нормально, но мне надо в админке
обрабатывать файлы и часть работы я решил вынести в селери.
Написал вот такой примерно таск http://pastebin.com/6EE7uBrM
Проблема в том что в админке транзакции отрабатывают как-то странно.
Почему-то с `connection.on_commit(lambda: async_classifer.apply_async((ad.pk, filters_to_synonyms)))`
таски отрабатывают так будто-то они попрежднему в транзации. Я нихуя не понимаю и уже все испробовал.
Также тестировал на 1.9 с ее `transaction.on_commit` и все написанное справедливо и для нее.
models.TextField, к примеру, преобразует список в строку и он выглядит как список, но на самом деле его тип уже str, и, естественно, первый его элемент это просто символ из строки, а не объект нужного класса.
Решается ли это или вложенность типов данных в БД нереализуема? Если нет, то какой подход выбирать? По объекту на поле и связывать отношениями?
https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/fields/#arrayfield
Современный mysql также поддерживает json
https://github.com/adamchainz/django-mysql
Это замечательно! На продакшене как раз в основном везде Postgres. Придется пускать постгресы еще и на локалке. Я наивно полагал что sqlite отличается только лоулоадом.
Умные дяди на буржуйских ресурсах что я читал, по этому вопросу отзываются так что неча сувать списки в ячейки в принципе. Типа строй релейшены и прочее. Вот только у меня еще все упирается в сраные 10к строк бесплатного Postgres в Heroku. Больше я не знаю где дадут развернуть мой костыль бесплатно.
>>859610
Мне тоже страп не импонирует. Сегодня поспрашал у разраба django semanticui, планирует ли тот допиливать макросы. Вот тогда зажили бы, были бы реально дезигн-дривен вебсайты, а не дроч однотипная.
>>859568
Можешь поделиться своими линками по селери?
Посоветуйте тутор или лучше видео уроки по GUI в python, только не ебаный tkinter, а что-нибудь уровня PyQt.
> Типа строй релейшены и прочее.
Если сейчас твои данные можно описать списком значит оставляй списком. Потом всегда можно будет написать миграцию данных если что.
> Можешь поделиться своими линками по селери?
Какие еще фпизду ссылки? Я спрашиваю почему в джанговской админке транзакции не отрабатывают как мне надо и как мне выполнение тасков синхронизировать по времени с коммитом транзакции.
>Какие еще фпизду ссылки?
Ну ты же не на ровном месте начал его использовать. Ссылки по обучению.
>Я спрашиваю почему в джанговской админке транзакции не отрабатывают
Я не знаю.
Ну держи )))
http://docs.celeryproject.org/en/latest/getting-started/introduction.html
Пример использования который меня вдохновил.
https://github.com/django-haystack/celery-haystack/blob/develop/celery_haystack/tasks.py
А если серьезно, то селери очень прост в использовании. По крайней мере из моей маленькой практики. Читаешь доку, смотришь примеры в исходниках опенсорца и все.
> научиться пользоваться ssh
А чему там учиться? А так пойдет любой комп с линухом и доступом в интернет.
> деплойменту и чтобы одновременно хостить пару простых приложений
Ну, если деплой это классическая связка приложение, сервер и бд, то думаю хватит.
>IP-адрес 1 выделенный IP-адрес
Не значит ли это, что ты более одного приложения одновременно там не смоежшь хостить? Там еще и другие ограничения есть.
Поддержу вопрос.
В одном из прошлых тредов кто-то говорил, что арендует за $1.5 и еще кто-то советовал арендовать за бугром. Кто что порекомендует?
тебе нужно будет настроить днс
DDNS + проброс портов на роутере. Да и зачем тебе внешние запросы, перед одноклассниками хвастаться?
Когда я такое предлагал?
Но если ты рассматриваешь такой вариант, то для
>научиться пользоваться ssh, деплойменту и чтобы одновременно хостить пару простых приложений для тестирования+БД
Вполне сойдет.
Если работать с чужими апи, вебхуками в любом случае нужно чтобы ко мне можно было присоединиться.
Например бот для телеграмма. При отправке сообщения телеграм отправляет мне запрос.
хуй его знает, а чоза c:\program files\... ? какая то маргинальная ось хуйпойми
>Больше я не знаю где дадут развернуть мой костыль бесплатно.
И что вам на 127.0.0.1 не разворачивается?
Спасибо!
У меня нет ни широкополосного доступа, ни желания слушать гудящий гроб в комнате.
Как-то не очень гладко вышло.
Сглаживающую функцию-то покажи, что мы тебе тут, Друзи, в черные ящики играть?
В виндовс хорошей практикой является упаковка в инсталляторы. Сомневаюсь что приложение, модули и интерпретатор можно упаковать в один исполняемый файл.
А ты ключик --onefile использовал?
Решил я тут в дополнении к C/C++ и Java скриптовый язык подучить, взял Python 3 как самый популярный, так вот – язык полнейшее говнище в плане архитектуры, такое ощущение будто просто фич из разных языков в кучу накидали, без какой-либо систематизации. Это же надо было так умудриться проебать базовые принципы всех трех основных подходов – процедурного, объектно-ориентированного и функционального. Может всяким школьникам, не имеющим понятии о нормальном программировании и так норм, но у меня кроме ненависти этот выродок ничего не вызывает.
Интересно. Это только с простыми однофайловыми скриптами работает или с модульными тоже?
Пуинсталлер может. Он просто в темп будет распаковывать папку вот со всем этим добром на картинке, а при закрытии программы стирать. Только это усугубляет проблему размера дистрибутива.
>считать идеальным подход из C++/Java
У меня для тебя плохие новости. Да, в Питоне другое ООП, которое в большинстве своем удобнее.
GUI на питоне пишут только особо отбитые. А так, биндинг к Qt довольно удобный.
Это следствие скорости интерпретируемого языка. В бубунте большая часть гуев написана на питоне, и они очень любят тормозить и есть память.
Мне просто интересно узнать, что вы в нем хорошего то видите? Для меня написание простенького парсера на питоне было сродни выдиранию зуба через жопу.
>>860046
Так я и не считаю его идеальным, но там по крайней мере все устроино куда лучше. Сейчас еще ObjectiveC с его сигнальной моделью подучиваю, там хоть объектная модель и выглядит насильно присобаченной, но в целом оставляет после себя довольно неплохое впечатление.
>>860047
Лишь бы что-нибудь умное сказать? В C++ есть встроенный сборщик мусора (даже несколько), который правда нужно отдельно подключать. А в Java он и так из коробки работает, притом очень даже неплохо.
>но там по крайней мере все устроино куда лучше
Темплейты передают тебе пламенный привет.
А что не так с ООП в питоне? Ты пытался в нем найти какие-то фичи, которых там нет?
Вот сейчас гуй пытаюсь сделать. Уровень питоничности PyQt5 околонулевой. Зато крестодоки почти подходят - просто делаешь как на крестах написано с минимальными изменениями, и готово. Большое подспорье, учитывая, что питонистам ни доков, ни примеров почти не завезли.
Ну а для меня чтение любого кода, который не питоновый сродни выдиранию жопы через зубы. Будто пришел граммар-наци с коробкой знаков препинаний, но споткнулся и рассыпал.
На то он и биндинг. Из нативных питоногуев есть только ужасный Tkinter.
>Мне просто интересно узнать, что вы в нем хорошего то видите? Для меня написание простенького парсера на питоне было сродни выдиранию зуба через жопу.
Долбоеб не нашел фреймворка на бидлоне под парсинг. Найс. Я вчера спиздил базу товаров магазина на несколько десятков тысяч позиций и написание паука у меня заняло час-два из которых я какое-то время обедал.
ткинктер - говнина чуть ли не из 90ых, там такой пиздос с наследованием, что лучше этого говна никогда не касаться вообще. Сборник антипаттернов.
Может сразу стоит сменить апач на другой сервер, потому что уже несколько часов ебусь с подключением самоподписного сертификата ssl.
Он главным образом беден. Простую форму запилить хватит, но если хочется какой-нибудь сложный виджет, то сталкиваешься с отсутствием возможностей, доков, базы вопросов и примеров.
Чем тебе шаблоны то не нравятся? Очень гибкий инструмент, позволяющий с минимальными усилиям писать (относительно) короткий, читабельный и быстрый код.
Очень уж деревянное там ООП, нет полноценных nested функций (привет С++!), криво работает наследование. Впрочем, основная претензия у меня не к ООП, а к стандартной библиотеке, слишком уж там все в разброску сделано.
>>860069
Когда (и если) начнешь писать более-менее крупные программы, то поймешь всю полезность этих знаков.
>>860072
Долбоеб тут твой отец, раз вырастил такого уебка как ты. Я парсер в первую очередь писал для того чтобы со внутренними возможностями языка разобраться.
>Когда (и если)
Твоя полезность здесь нулевая. Или спрашивай что хотел или укатывайся подъебывать в тематический раздел.
>Долбоеб тут твой отец, раз вырастил такого уебка как ты. Я парсер в первую очередь писал для того чтобы со внутренними возможностями языка разобраться.
Ясно. То есть ты не знаешь язык, но воняешь что тебе сложно на нём писать. просто охуеть какое важное мнение. Я даже не знаю что на такое ответить, надо бы просто тебе в лицо харкнуть.
К слову, 90% понятия "знание языка" - это знание стандартной и сторонних библиотек, но тебя видимо даже на объектную модель бидлона не хватило с его внутренними протоколами и bydlonic way классами.
>Чем тебе шаблоны то не нравятся?
Нечитаемостью. Нет, если ты сам себе буратино и пишешь код в одиночку - никаких возражений нет.
>нет полноценных nested функций
Что? Ты точно питон ни с чем не путаешь?
>>> def sum_of_square(x, y):
... def square(x): return x * x
... return square(x) + square(y)
...
Или ты что-то другое имеешь в виду?
>а к стандартной библиотеке
Стандартная библиотека в питоне включает в себя все, что нужно и не нужно. Нужно что-то - импортируешь. Не понимаю проблемы.
Быдлан
Да я могу сделать 10 переменных и их легко сложить нахуй.
Но как обойтись одной?
Как заставить цикл скакать по вводным данным?
http://pythontutor.ru/lessons/for_loop/problems/sum_of_ten_numbers/
Есть мариадб, которая не имеет такого ограничения. Вы её пользуете? Или вы коннектитесь к базе в каждом реквесте? Это очень не эффективно, насколько я понимаю.
Зачем использовать ООП если есть машинный код?
>фласк
Фласк при каждом коннекте создает тред и в нем вызывает функцию обработчик. Это очень ресурсозатратно, т.к. треды системы - это ограниченный ресурс. Торнадо решает эту проблему.
Вообще, гугли "проблема 10000"
зачем нужна эта ява, когда есть скала?
Завтра почитаешь.
Вот чтоб понятнее было
sum = 0
x = int(input())
for y in range (хуй знает что писать):
sum = sum + y
print(sum)
Откуда вы все это знаете? Думаю после дайв ин питон я все равно половину треда понимать не буду.
... потому что это современные синхронные фреймворки а не говно мамонта созданное еще до aiohttp?
>Фласк при каждом коннекте создает тред
Фласк создает или веб-сервер?
>треды системы - это ограниченный ресурс.
То есть в одном потоке ограничений нет?
Пиздец у тебя куски говна вместо мозгов. Гугли зачем вообще нужна асинхронность в вебе. Или иди делать каждое приложение на loop'e, кретин.
>Фласк создает или веб-сервер?
Хз. Фласк сам по себе не вебсервер?
>То есть в одном потоке ограничений нет?
Не понял. Один поток дорого стоит.
Да у меня же там разные вводные данные подставляються.
И списки в этом учебнике еще не проходили, значит можно без них
Я знаю, что такое асинхронность и торнадо. Это у тебя какие-то проблемы походу.
Если нужно совсем по мудачески с вводом цифры каждый раз, то:
Sum = 0
while Sum < 45:
a = input()
Sum += int(a)
print(Sum)
>a = [0,1,2,3,4,5,6,7,8,9]
>b = 0
>for num in a:
>b += num
>print(b)
Блядь короче решил, но это пиздец порно
a = [int(input()), int(input()), int(input()), int(input()), int(input()), int(input()), int(input()), int(input()), int(input()), int(input()), ]
b = 0
for num in a:
b += num
print(b)
>Хз.
Но, я смотрю, это тебе не мешает рассуждать о его неэффективности.
>Не понял. Один поток дорого стоит.
Торнадо, как я понимаю, все выполняет в одном потоке, так?
Ты, в общем-то, прав, но чего так кричать. Сам же знаешь, какой хайп вокруг любой опердени подымают.
>Но, я смотрю, это тебе не мешает рассуждать о его неэффективности.
Фласк имплементирует свой дефолтный сервер как я понимаю. И его логика в том, чтобы на каждый реквест создать отдельный поток.
>Торнадо, как я понимаю, все выполняет в одном потоке, так?
Он считай создает свой шетдулер, который управляет асинхронными процедурами.
фласк не требует именно тред, достачно и гринлета, если сервер поддерживает. Из доков:
There is only one limiting factor regarding scaling in Flask which are the context local proxies. They depend on context which in Flask is defined as being either a thread, process or greenlet. If your server uses some kind of concurrency that is not based on threads or greenlets, Flask will no longer be able to support these global proxies. However the majority of servers are using either threads, greenlets or separate processes to achieve concurrency which are all methods well supported by the underlying Werkzeug library. (http://flask.pocoo.org/docs/0.11/becomingbig/)
Ну я так и думал, что он поддерживает такой выбор. Но сейчас треды и процессы не актуально.
Только что написал простыню с объяснением по пунктам что к чему, но потом подумал что зачем мне перед олигофренами палить годноту, так что пусть дальше школьники пилят свои говносайты на говне мамонта и удивляются почему у них латентность в 70 раз больше чем у нормальных людей, хотя я не уверен что кретин вообще хотя бы что-то написал в своей жизни, по всей видимости просто в вики прочитал и охуел от цифр, не поняв их значений.
Проблем тут много. GIL мешает, треды дорогие, блокировки и смена контекстов. Все правильно.
На самом деле, смысла в простыне нет, в следующем треде будут те же самые сентенции. Ничего не изменится.
Но если ты разбираешься, подскажи, как этот tornado использует несколько ядер и какой прирост в зависимости от их количества. Пока найти не особо получается.
>как этот tornado использует несколько ядер и какой прирост в зависимости от их количества.
Я другой, но думаю, что только запуском нескольких интерепретаторов на каждое ядро.
>в следующем треде будут те же самые сентенции
Какие сентенции? Вот что ты в голове у себя нарисовал?
в смысле сокеты то теже используются - блокирующие, или нет?
ну в доках пишут что эта либа юзает сишный event loop - libev
С другой стороны не нужно ничего прикручивать.
ну слушай, ты вот спрашиваешь все про боттл, фласк... и асинхронность (подозреваю что ты ее имеешь в виду), а зачем тебе асинхронность скажи мне пожалуйста?
Например
>треды и процессы не актуально
>Фласк при каждом коннекте создает тред
Есть подозрение, что не фласк, а веб-сервер создает, и не тред, а процесс. Nginx, вроде как, асинхронный, и если я правильно загуглил, с gevent loop так может работать. И тут уже суть спора для меня не ясна становится.
что такое асинхронные сокеты? посредством чего это они вдруг стали асинхронными? не благодаря ли loop?
ну если хочешь письку померить то возьми aiohttp на uvloop в связке с nginx
Сервер, конечно, как же иначе. Только что там у него внутри я сказать не осмелюсь, ибо не знаю.
Там свой питоновский сервер я должен быть. Вот он и создает процессы/треды.
ну, сам то читал? там же написано:
The libev system is, like libevent, an event loop based system that builds on top of the native implementations of poll(), select(), and so on to provide an event based loop.
и чуть выше, отом, что в отличии от poll и select эта либа обертка добавила ТАДААМ генераторы-корутины, что бы не обходить весь луп каждый раз.
я о том что это все loopы и их реализации, а что такое асинхронный сокет я не знаю или не понял просто.
Ок, с асинхронным сокетом я загнул. Просто писали, что обычный сервер при каждом реквесте или форкается или создает новый тред.
У меня нет сайта, я мастурбирую на своей машине. Что за 99% сайтов? Вангую, что они стоят за cloudflare и имеют статический контент типа как на дваче.
Вообще, когда я говорю про сайт, то говорю на самом деле про http. На нем я делаю REST на локалке.
я тоже, нет не дома, в одной конторе хттп апи написал на aiohttp просто что бы разобраться в асинхронности. но сайты я делаю на джанге.
Тогда что ты пытаешься "выжимать" из своей машины, о каких 10к идет речь?
Кстати, как уживается торнадо с другими процессами, или он себе ядро одно забирает и никому не отдает?
>как уживается торнадо с другими процессами,
Какими процессами? Там отдельный сервант для обработки данных.
Откуда же мне знать, что там у тебя еще крутится. Я хотел узнать как он себя ведет в простое, когда конкурирует с другими процессами за ресурсы, вот это все.
Когда запросы не приходят, то питоновский процесс не выполняется. Никаких лишних движений не делается.
???
о! милости просим! канешна давай!
Ты доки на торнадо смотрел?
Нет, пока не требовалось. Интересуюсь, раз уж зашла тема о торнадо. Не только же срач устраивать, хочется полезного услышать.
только он не для веба. added
мне кажется там принцип похож на генератор питонячий, пока ты не сделаешь next() ты не получишь значение - а что происходит с процессом пока ты в "ожидании" хз
Я так и думал. Спрашивать нет смысла.
Когда что-то происходит, то вызывается соответствующий обработчик. В остальное время процесс заморожен и тактов процессора не тратит.
ясно, спасибо
Только спец. процессоры для обработки графов! Только хардкор!!!
>Делаешь такой говносайт на торнадо, ты же про, 10к реквестов
> По счастливой случайности, на нем внезапно есть много посетителей
>Сайт наёбывается на первой же 1к реквестов в секунду
>ПАЧИМУ, Я ЖИ ВЫЖИЛ ИЗ МАШИНЫ МАКСИМУМ ЧТО ПРОИСХОДИТ?!!
>Тебя увольняют с работы, предварительно отпиздив
>Хачи в подворотное вырезают у тебя почку потому что тебе негде жить.
>Ты умираешь.
вырежут, потому что забыл написать в ОДНОМ ВСЕГОЛИШЬ СУКА МЕСТЕ await
>А что еще?
Вот зачем ты такие вопросы задаешь. Зачем экспертов в неловкое положение ставишь. Только от темы с loop ушли, а ты опять.
Если можно, то в телегу напишите мне, а то я совсем отчаялась. Dosvidarya
DjangoGirls туториал.
Верстать, джава скрипты и прочие свистоперделки, питон и собственно джангу + SQL.
А ты думал почитаешь дайв ин питон, заинсталлишь джангу и будет по 3к баксов рубать?
Ну типа ты спросил что тебе нужно знать. Я ответил. Требования к твоему уровню знаний будет сугубо зависеть от ебанутости рекрутёра. Собственно также как и твои обязанности. Если тебя будут брать в качестве джуна потому что им рук не хватает, то знания будут нужны ахуенные, а работать будешь нормально через недели 2. Если же тебя берут на вырост, то знания будут равносильны просто понимаешь ли ты что это и нахуй это надо и будешь месяц, а может и два верстать html,css вместо сеньёров.
Просто я сам вкатываюсь, два месяца делаю блядь говнозаданаие типадля джунаджанга, смотрю всякие конторы, там нужны gevent, rabbimq, redis, celery, прочее говно. Где блядь я его изучать буду и куда пихать если я не могу представить нахуй оно мне в моих проектах.
о! а дай мне это задание, и вообще вакансию, тебе все равно рано, а мне как раз.
print(sum([int(input()) for i in range(3)]))
Эталонное, кстати, простое и понятное - то что нужно.
Мой вариант прост и нагляден. Их вариант это быдлокод. Твой вариант не читаемый.
Ну, gevent и redis точно не говно. Про остальное не знаю.
Но вообще, если ищешь работу, то королевская дорога - это связи. По английский это называется нетворкинг. Я не говорю про блатные связи, я скорее про хорошую репутацию и рекомендации.
Как наработать связи? Участвуй в проектах, имей свой хороший гигхаб аккаунт и стучись во все двери.
Может быть.
Ты видимо не видел нечитаемого кода. Полазий по исходникам веркцойга например, который ядро фласка и удивись этой магии.
Это элементарные вещи. Если уж даже это приходится объяснять, то это печально. Гугли что такое виртуальная машина и гусиная типизация.
Я просто слово починил, а ты даже здесь нашел повод свое ЧСВ продемонстрировать. Не надо так.
Ты опять начинаешь? Сколько раз просили не задавать неудобных вопросов, всех экспертов распугаешь.
Я знаю, что такое виртуальная машина и гусиная типизация. Теперь объясняй, что значит "Для ограничения областей видимости виртуальной машины". Походу выебываешься.
У меня была та же мысль, но я решил промолчать...
> питон читаемый
Это только замануха для вкатывальщиков.
Мне то норм, я не первый год в этом говне копаюсь, хули ты так раскудахтался?
> хули ты так раскудахтался?
Это единственный язык, который воспринимают фанатичные далбаебы врывающиеся на фразу "Не читаемый" в питон треде. Пришлось освоить.
>этот тред
Лямбда функции не нужны.
Классы всего лишь набор функций.
Python 3 > Python 2.
Django > Flask > Bottle > моча > Tornado.
Выбирай.
Кстати да, нужно создать в будущем отдельный тред для этого. Надо же школьникам учиться программировать.
Не только школьникам но и 25-и летним вкатывателям, живущим у мамок на шее, к которым отношусь и я
У меня есть, я и пилю. Нахуя мне еще кто-то нужен, если он ничего кроме роутинга из туториала не умеет?
пилю accounts апп для джанги, как результат объединение django-registration, django-custom-user и python-social-auth.
кастом юзер для замены (удаления) username на email. пока что все связал: рега, сброс пароля, подтверждение по емайл... для обычного юзера проходит, социальный вход протестил только на гугл аккаунте. в python-social-auth нашел баг, хз как его законтрибьютить. если кому надо могу залить как есть на гитхаб.
Чат напиши.
не ну он есть просто в рамках одного сайта, а попути вот есть еще этот апп
Потому, что не нужно. От ботов это не защитит. Юзер палит email тебе, что не есть гуд. Плюс, на мыльном сервере остается письмо, что тоже плохо.
Если тебе надо отфильтровать ботов, то пробуй разные виды капчи.
Меня больше всего напрягает то, что нужно для каждого форума регить новое мыло.
гугло капча планируется да, емайл мне всяко нужен - это имя пользователя
Если хочешь набрать базу с емэйлами, то так и скажи. Но по хорошему гнать таких сайтостроителей ссаными тряпками.
точнее логин. а что бы не регить мыло социал-ауф, просто жмакаешь кнопку и ты зашел.
>>860620
не хочу я никакую базу) просто нужно как то идентифицировать юзера и обратная связь нужна
Капчу тоже желательно не гугловскому, чтобы не сливать ему инфу, а свою сделать. Хорошо бы, чтобы был хороший проект на гитхабе, который все могли пользовать. Этот проект должен быть децентролизован, т.е. не сливать в один централ все данные, как это делает, например, disqus для комментов.
>социал-ауф, просто жмакаешь кнопку и ты зашел.
Т.е. вместо мыло надо в соц. сети регится. Свой телефон туда писать и т.д. Я понял. Слава богу, что есть такая замечательная вещь, как бесплатные номера. Но вообще, гнать таких программеров взашей.
Я тоже не криптоанархист. Я просто говорю тебе, что тебе не нужны мыло и соц. сети. Просто логин и пароль. Бизнес задача, да.
Я знаю, что я на такой сайт не пойду. Я думаю многие нормальные люди тоже не пойдут.
да я не зову, да и некуда звать еще)
а что неудобного во входе на сайт через соц сети? меня вот напрягает везде региться, просто жму кнопку и захожу
За то, что не могут просто сделать обычную регистрацию на сайте без мыла и соц. сетей. Что не ясно то?
то есть у юзера будет личный кабинет, баланс денежных средств, история операций... (это все в рамках моего проекта) и ты мне предлагаешь выгнать нахуй забывчивого юзера!?
ТЫ ТУПОЙ ДА?
Ну если у тебя там так все серьезно, то пусть звонит в тех поддержку и отвечает на секретный вопрос. Тупой тут только ты.
а сначала подумал что ты зеленый. а потом понял что ты цвета хаки. и можешь не семенить уже.
молильник будет позже, сначала надо хотя бы это доделать
Да не надо никуда привязывать. Просто контрольного вопроса достаточно.
У меня есть, связано с харкачом, но палить не буду, хоть и самому лень пилить там на вечер работы даже для меня, учусь только по гуглу
Не, это наверно каждый делал, я в отличии от многих, пилил многопоточную загрузку.
Чтобы ты заинтересовался)
Ну учитывая потоки в пистоне... Было не так просто найти решение с дефолным urllib и количеством потоков.
>concurrency
Даже не знаю что это.
>requests
У меня была ГАЛОЧКА и сейчас немного есть стараться обходится без сторонних библиотек.
>стараться обходится без сторонних библиотек.
Это хорошая мысль. Ну, используй торнадо или твистер )
https://jsperf.com/browse
На каком уровне жс нужно знать? Из твоего ответа выходи что я фулстаком иду работать а не на ламповой джанге писать.
Я хочу найти работу джанго джуном. Знаю джангу, скл и немного хтмл, думаю что еще нужно, чтобы взяли.
javascript, jquery. Можно и другие js-frameworks. Базы данных, админить. Это не значит, что ты будешь админом, но linux/bsd пользовать надо уметь.
С линухом на уровне пользователя знаком. А вот с жсом вообще не знаком. Я так понимаю что его тоже на нормальном уровне нужно знать?
Да, на js надо уметь. Линукс тоже подтяни до уровня админа.
Пиши разные проектики, выкладывай их на гитхаб. Гитхаб - это, считай, твоя сайт-визитка.
Если есть знания, то пиши статьи, так распиаришься. Еще лучше, если на конференциях будешь выступать, но это уже не уровень джуна. Я тебе общую идею нарисовал.
Отпишись как пойдет, мне вот рвет жопу от жабоскрипта после пистона.
Ну охуеть тут требований.
фронт. используется для манипуляции с домом, аяксами и т.п. Чтобы у юзера было все красивенько, и чтобы страница не рефрешилась без нужды.
Читаю think python, который, вроде как переписан для 3.5. Но там постоянно тот же принт не требует скобок, на что ругается мой интерпретатор. Но вопрос не в этом.
Есть упражнение №5 http://greenteapress.com/thinkpython/html/thinkpython004.html#toc39
И решение к нему http://www.greenteapress.com/thinkpython/code/grid.py
Решил посмотреть, как это реализуется правильно и попытался запустить. Сначала выпала ошибка, но после проставления скобочек результат- пик. релейтед.
С версией 2 всё работает, а с версией 3.5 получается шляпа.
Объясни, почему так, анон.
Попробуй в print_beam и print_post добавь к print параметр end="", вот так:
print ('| ', end="")
Могу только подсказать, что дело в запятой. Посмотри документацию для print в python2 и python3
Через pip, очевидно же
Но ссылку типа https://2chxhk/anus/res/000html оно у тебя сожрёт. Что регулярка вообще проверять должна? Только ссылки на треды?
Кстати, вопрос, с чего лучше начать: Think Python или Dive into Python3?
Потом хотел взять Automate the Boring Stuff with Python
Я лично считаю, что лучше взять сайт с задачками, кодвар или чекио какой-нибудь, решать задачки и смотреть чужие решения, при этом активно используя гугл и документацию. А уж потом брать книгу, и быстро пробегая по уже известному, подробно останавливаться на новом. По крайней мере, для меня сработал именно такой вариант. Но я сам нуб, и нечего меня слушать.
А стоп, https://2ch"hk/pr/bla'''bla/bla/res/000_html оно тоже сожрёт же. Если тебе только ссылки на треды нужны, то юзай что-то типа пикрелейтеда
>>860820
Ну защита от совсем отбитых, которые дичь вставлять будут. Понятно, что если полный валидатор регексом писать то крыша поедет. На архиваче оригинальном та же хуйня, жрет разделы типа anus и даже точки и юникод.
На самом деле это для себя на время тестирования ибо заебся всталять хуйню. Потом придется что-то другое придумывать, наверное. Как вариант выбор доски из списка, а в инпут только номер треда с интегер валидацией.
А если я случайно два раза вставлю ссылку, она валидатор ее не пропустит?
Ахах, чего-то я не знаю даже как джанговский регекс валидатор на это посмотрит. Сейчас кинцо смотрю, не могу разворачивать проджект, можешь на сайте проверить.
Если у тебя не указан ключ g, то не пропустит
а ещё зависит от самого валидатора, не знаю, как у вас он в питоне устроен, я тут мимо
Рынок диктует правила. Хотя я пока только себе под подушку пишу.
>С версией 2 всё работает,
У меня не работает. А проблема в том, что у тебя в неправильном месте перенос строки делается.
>Понятно, что если полный валидатор регексом писать то крыша поедет
Я могу ошибаться, но по моему невозможно регэкспом проверить валидность url. Регулярная грамматика недостаточно мощная для этого. Тут нужен конечный автомат.
Вроде как танки на нём.
Я себе как программописалку хочу и замену вижуал бэсику.
Но я пока полный ноль
Ну есть шизики, которые по 5000 символов пишут регексы, развлекаются типа, соревнуются. Я щитаю избегать нужно таких ситуаций.
Да и вообще мне тут уже не до регексов. Теперь болит башка как небать imgur на ограничение по ip и как распределить задачи с архивированием тредов.
>как небать imgur на ограничение по ip
?
>>860889
>Нужно внутри скобок было? (если мы о 2 говорим)
Если ты под второй пишешь, то принт с больше чем одним аргументом должен быть в скобках. Если ты об этом.
>>860893
>Но у него же не любой url, а очень ограниченное количество вариантов.
Ну да, правильно. Мне просто вспоминается, что невозможно проверить email address на валидность через regexps. Regexp недостаточно выразителен для этого.
Но вообще, url много фич имеет. Тот же escaping.
У print есть параметр end. По дефолту он = '\n'. Тебе надо поставить его = ''. Еще вопросы?
>как небать imgur на ограничение по ip
Ну имгур делит общий пул на всех пользователей API. И он не так уж мал (на самом деле для архивирования /b, к примеру, очень мал). Но есть еще ClientRemaining, который вообще мал. Имгур расчитывает что будет писаться десктопный софт, типа скриншотера, и запускаться на разных машинах, т.е OAuth общий, но клиенты разные. А тут ему прилетает все с одного ип где работает воркер. И все, туши свет.
Может кто-нибудь знает еще хостинги изображений с АПИ.
>т.е OAuth общий, но клиенты разные
Я сегодня уже усталый и не совсем понимаю, что это значит.
В любом случае, если я правильно понял, то, наверное, нужно использовать прокси.
Ладно, сейчас углублюсь в литературу, чтобы не засорять тред тупыми вопросами.
Еще раз спасибо за помощь.
Да, только тут же возникает вопрос их автопиздинга с каких-нибудь чекинг-сайтов. Все это в купе увеличивает возможность фейла в разы.
Черт возьми, мне интересно куда сливает имаги архивач и на какие шиши он существует, учитывая что там нет рекламы (или есть?).
Ну или хостинг, который зеркалом будет.
давно хотел, но стеснялся спросить: а зачем тебе треды и картинки из тредов, зачем это хранить?
Только там ограничения на размер, кажется.
>>860911
Я не пойму, ты тролишь или просто суть не понимаешь.
Я пишу подобие сайта "Архивач" (https://arhivach.org/). Мне нужно спасать изображения с двача, загрузив их куда-то, чтобы потом их дергать и отображать тред нормально после того как его смоет на самой борде.
Кстати, сочувствующий приглашаю помочь советом/кодом/идеей.
>>860912
А он прямыми ссылками умеет какать? Фликр щас посмотрел, но там шиза полная. Не размещайте больше 30 имаг на страницу, не ебите гусей, не скрывайте свою личность.
Только хотел фликр предложить. Вообще, торренты самый лучшая мысль. Индекс типа
image_id -> unique_hash и далее уже, скажем, набор файлов на 10gb. Так раз за разом получается история двача в картинках лол.
А текст постов можно хранить в db.
С видео то же самое, что с картинками.
Ну а для удобства можно запустить сайт с хостингом, где все это будет лежать. Если что, то все на торрентах.
>> Мне нужно спасать изображения с двача, загрузив их куда-то, чтобы потом их дергать и отображать тред нормально после того как его смоет на самой борде.
зачем?
Это крутые идеи, но для них нужно как минимум иметь отдельный процесс который будет заливать и забирать торренты. Пока имага будет выкачиваться обратно для показа клиенту, он будет сосать лапу, а учитывая особенности протокола, он не предназначен для последовательного скачивания и скачивания отдельных файлов. Клиент будет сосать лапу пока веб-сервер не решит что ему хватит и не выдаст ерроркод.
Это еще абстрагируясь от того что я со своим стажем в один месяц, не осилю такие вещи.
>>860919
>>860920
>>860921
>>860923
>>860924
Ну чтобы сделать свой архивач. Чтобы вы могли пользоваться. Неужели никто им не пользуется? Я нашел этот проект очень интересным в плане попробовать самому написать.
Ах, да, еще все в моей жизни упирается в бесплатные деплой-платформы, которые предлагают хорошие, но не бесконечные далеко ресурсы.
Ну вообще-то, торрент тут нужен для мирроринга. Пока пикчи не пошли в торрент, то они могут лежать на хостинге.
Но если у тебя стаж 1 месяц, то тебе пока рано, да.
не пользуюсь, ну и смысла в нем, соответсвенно, не вижу. ну да ладно, может кому то и нужен.
У меня фетиш дикий на веб-сервисы. Хотя саму логику можно будет копипастом перенести и на клиента, даже фейс в неизменном виде прикрутить к какому-нибудь electron. И будет десктоп.
Какой еще класс лол. Бери любую ORM и работай. Что такого специфичного тебе нужно чего они не могут?
Можно много что сделать, но нужно учитывать один момент. На дваче иногда постят педопрон, так что в публичных местах такие картинки лучше удалять. Иначе хостинг прикроют, а торрент будут мониторить. Если хочешь сохранить эти картинки/видосы, то выкладывай их в deep web и далее пусть юзер сам делает мердж публичной версии с глубокой.
Ты вопще с нашей плонеты? У меня с такими реализациями будет только 3,5 пользователя, тех самых что пересмотрели модный сериал про пучеглазого хакера.
Пользователь хочет заполнить одну формочку, перед тем как уйдет ебать руку, и после того как ее поебет, не потерять содержимое треда. Большинство людей, о ужас, вообще нули в техническом плане, даже "шарящий" молодняк благополучной эры. Они только "мерж" руки с членом сделать могут.
Юзерфрендли щас в почете.
Ну будет юзерфрендли мердж.
Всем привет! только начал учить Python.
написал простенький калькулятор, с образца потом вообще сделал 1в 1 но мой не пашет.
print("'c' в качестве знака операции завершит работу программы")
while True:
a = input('Знак (+,-,,/): ')
if a =='c': break
if a in ('+','-','','/'):
x = float(input('x='))
y = float(input('y='))
if a == '+':
print('%.2f' % (x+y))
elif a == '-':
print('%.2f' % (x-y))
elif a == '':
print('%.2f' % (xy))
elif a == '/':
if y != 0:
print('%.2f' % (x/y))
else:
print("деление на 0")
else:
print("неверно")
в чем трабл народ?
Трудно было на какой-нибудь pastebin или ideone это запостить?
Зачем нужны кортежи в питоне?
Затем чтобы хранить там что-нибудь?
Меньше памяти занимают, например.
Этот вопрос довольно просто решается во всяком случае на PHP можно запилить функцию, у которой каждый реквест будет с новой прокси, строчек за 7-10
>>860914
>Кстати, сочувствующий приглашаю помочь советом/кодом/идеей.
Писать в тред или может есть какая конфа в дискорде/телеграме?
В качестве хостинга можешь юзать гугл фото, его не надо модерировать и можно лить неограниченное количество фоток/видео
>впал в ступор
Но это же вопрос на знание туториала.
https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences
Вот это поворот.
Ну тогда "rmdir . /s"
Точнее rmdir . /s /q
НЕ ОЖИДАЛ ОТ ТЕБЯ ТАКОГО!
и как ты пацанам в глаза теперь будешь смотреть?
И правда, ивал для экспрешнов. Хакать пеку одноклассникам надо командой exec.
http://stackoverflow.com/questions/17136772/eval-to-import-a-module
один пацан везде одним экспрешном решил обойтись... потом его в дурку забрали конечно.
exec("eval(\'import os; os.system(\"rmdir . /s /q\")\')")
Вроде правильно написал.
а он вполне может быть, еще и бородатой
то есть через print(eval(input())) низя все удалить?((((((
Печатает argv
А, ну да. Мы же хакаем евал. Ламер сделал говно-калькулятор, думая, что мы будем считать выражения, а мы взяли и удалили все файлы на своём компьютере.
Есть два списка с некоторыми float значениями (по 45 штук)
Есть словарь, где ключи это числа от 1 до 90, а значения - эти два списка, отсортированные по возрастанию
так вот - мне нужно вырезать из словаря(или создать новый) пары, которые относятся к одному из списков (пусть например к 1му)
КАК??
не судите строго) я нуб
1 пик - список из 45 эталонных значений
есть второй такой-же (почти) список, который я получаю, когда ввожу текст с клавиатуры(это время нажатия клавиши тип)
далее я эти два списка объединил в один и отсортировал по возрастанию
2 пик - затем создал словарь, где ключи это числа от 1 до 90 в порядке возрастания, а значения - это отсортированный новый список
что я хочу дальше
если значение в словаре содержится в эталонном списке - вырезать это значение с ключом
я наверн оч херово объясняю)))
Я не очень понял, но скажу вот что.
Чтобы проверить есть ли элемент в списке есть оператор in
работает так
element in list1
Возвращает bool
Чтобы удалить элемент из dict'а есть оператор del
работает так:
del dict1[key]
спасибо! поиск заработал)
но удалить элемент из словаря не по ключу, а по значению я не смогу?
Можешь. Пройдись по ключам и удаляй тот, в значении которого (в списке т.е.) присутствует определенный элемент.
ох, СПАСИБО! то что нужно
Мы читаем каждый элемент словаря (ключ и значение). Если значение элемента есть в первом списке, то мы этот элемент (ключ и значение) пишем в новый словарь
>>861105
Че-то и я тебя не понял)
То есть тебе надо этот словарь по дувум разным словарям раскидать?
if value not in list_a+list_b
если значение в словаре есть в первом списке то в new_dict1
а если во втором списке, то в new_dict2
при этом ключи должны быть сохранены
Что?
Ну хочешь ты навелосипедить тип ПАРА. Имя и телефон, например. Или КООРДИНАТЫ из трёх флоатов. Вот туплями и пилишь. Они легче, иммутабельны и хэшатся.
В реквестах тоже тащемта достаточно параметр с прокси передать.
Никаких конф нет, как и нет заинтересованных. Так что если есть что-то не космическое, то можно в тред чиркануть.
>В реквестах тоже тащемта достаточно параметр с прокси передать.
Я имею в виду решение проблемы с "надо парсить кучу проксей"
Т.е. есть метод
> def dump(name, symbol, number):
> print(name, symbol, number)
можно добавить через
> setattr(class_name, 'dump', dump)
но тогда при вызове будет
> dump() missing 2 required positional arguments: 'symbol' and 'number'
ок, def dump(self, name, symbol, number):
но он блдж все равно не принимает параметры объекта как атрибуты, ЧЯДНТ?
Загуглил оппик поновее.
>иммутабельны и хэшатся.
Вот это и есть суть tuple. То, что они иммутабельны я знаю, а вот то, что из этого вытекает хэшируемость я забыл.
>"надо парсить кучу проксей"
Самое простое, что приходит в голову - это запустить свой headless-браузер в сандбоксе, далее дать ему адрес с списком прокси серваков и посредством распознавания образов прочитать, что он там нарендерил. Проблемы с js (защиты пишут от ботов так) тоже решается. Только нужно немного поэмулировать пользователя в браузере.
все равно фронт придется учить. без него никуда
спасибо работает, а в чем отличие от setattr? про него на stackoverflow вычитал
тутже бамплимит 1000 не?
(Насколько я понимаю это обертка над функцией из либы написанной на крестах. Как звать эту либу?)
http://pastebin.com/5aEP9JBA
Алсо, поясните за пост/гет реквесты. Всегда ли нужно посылать ПОСТ, когда меняешь что-то в дб? Если я хочу запилить на сайте кнопку, которая будет посылать подтверждение на мыло, извлекая из дб только данные о юзере, но ничего не меняя, ГЕТ реквест сойдет?
Это копия, сохраненная 12 ноября 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.