Это копия, сохраненная 16 марта 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Укрощяем интерпретируемового змея. Спрашиваем. Бугуртим. Вкатываемся.
Советуйте.
мимо-джава-довен не палится
Читай ту скупс оф джанго, там тебе все пояснять.
если код на питоне на данном этапе только интерпретируется,
каким образом большие системы согласуют код с новыми версиями питона ?
Джава-червь в треде, всем опасаться.
Ребята не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то. Это не Чикатило и даже не архивы спецслужб. Сюда лучше не лезть. Серьезно, любой из вас будет жалеть. Лучше закройте тему и забудьте что тут писалось. Я вполне понимаю что данным сообщением вызову дополнительный интерес, но хочу сразу предостеречь пытливых - стоп. Остальные просто не найдут.
>каким образом большие системы согласуют код с новыми версиями питона ?
блять ты наркоман диванный?
про какие блять системы ты спрашиваешь??
Если проект к примеру написан с использованием фичей питона 3.4, далее выходит питон 3.5 с новыми фичами и проект внезапно продалжает работать ибо обратно совместимы, а вот если ты воспользуешься новыми фичами из 3.5, то на 3.4 уже не запустишь без правки или лапши из трай-ексептов
только пытаюсь вкатиться, прочел первые 100 страниц книжки
автор постоянно пишет про изменения в вызовах функций
про перенос функций в разные модули
и приводит пример кода, которы на 2.6.х питоне еще работает а на 3+ уже нет
Найди последнее издание залупца, где путон 3, и читай.
Оно даже на рашкианском языке есть, если тебе критично.
Но нахуй надо программировать, когда не можешь читать тех. литературу на инглише.
В общем пока можешь не запариваться "совместимостями" и "крупными системами", а просто учись кодить. В будущем будешь легаси жрать и не париться, если вкатишься
Я щас нахуй уже с ума сойду. У меня потек питон. Никогда бы блядь не подумал, что такое может случиться. Если подробнее, то течет парсер. Вот основная часть http://pastebin.com/g7WajibW . Вот еще кусок http://pastebin.com/JiwjxctF . Пробовал заюзать memory_profiler. Юзал так:
python -W ignore -m memory_profiler manage.py update_apps | grep --perl-regexp "MiB.*?\d\.[1-9]"
В результате получаю: http://pastebin.com/rhmcevt7
По выдаче видно, что потребляемая память постоянно растет. Какого хуя строка типа for screenshot_data in app_data['screenshots'] может отожрать пол мегабайта? Или я не верно интерпретирую ? Почему потом эта память не освобождается? Программа работала 7-10 минут. Помогай анон или я ебнусь.
А почему сразу потек? 50 мегабайт это немного. До каких пределов разрастается память?
Основной механизм сбора мусора в питоне - это подсчет ссылок. Когда на объект никто не ссылается, он уничтожается. Сборщик мусора извлекает только циклы из ссылок. Если ты видишь у себя в коде такие циклы, можно их разбить, используя копирование значений, модуль weakref и присваивая None более ненужным объектам. Мало ли, итерация цепляется за итерацию.
В джанговских проектах сборщик вообще можно отлючить ради производительности (как это сделано в инстаграме).
У меня на хостинге парсер сжирает ~300 мб и падает из-за нехватки памяти.
>Сборщик мусора извлекает только циклы из ссылок
Вот это не понял. От слова вообще
Ну вообще код слишком простой, чтобы в нем проявлялось что-то вроде бага в управлении памятью. Зачастую дерьмо случается с базой, точнее с ORM. Насколько я знаю, у джанговского ORM есть кэш, а ты как раз картинки прямо в базу сохраняешь. Чего лучше кстати не делать, для хранения статических файлов во фреймворке есть отдельные сущности.
> Вот это не понял. От слова вообще
Если объект А хранит ссылку на объект Б и наоборот, то счетчик ссылок у А и Б всегда больше нуля. А что если А и Б больше не нужны? Подобные ситуации периодически находит и исправляет сборщик мусора. Сборщика можно не дожидаться, и разрушить цикл самому, но этого почти никогда не требуется.
На haskell.org много интересных примеров.
Как твоя мамашка течет при виде моего богатыря.
Сайт аддонов для факрфокса вроде как на джанге
Довен, иди py2 код на py3 запусти - ни в одну сторону не совместим. Одна из причин почему съебал в скалу
Очень нравится питон, но грустно от такой хуйни становится.
нихуя ты сравнил! твоей скале сколько лет уебок!? посмотрим как ты запоешь когда выйдет хотя бы один люто мажорный релиз. совместимость питона, учитывая насколько он распростаннен и сколько лет уже существует, можно блять всем в пример ставить.
да и съебвл ты на скалу потому что ты скорее всего не программист, а так на коньках вышел покататься, вангую, скоро еще куда нибудь съебешь, например нахуй с этого треда.
>Одна из причин почему съебал в скалу
А вторая заставляют писать на говне мамонта вместо трешки?
http://pastebin.com/g7WajibW 117 строка
> while not last_page_reached:
Если там длинная пагинация, то сборщик мусора будет вызван только по выходу из цикла, а объекты нагенерённые в цикле останутся жить в куче до конца итерации.
Лечицца просто - логика которая лезет в интернет requests оборачивается в генератор, а потом делаешь типо search_page=
Но это вообще первое что бросилось в глаза, мб у тебя там где-то форк бомба спрятана
Питон.
И нахуй ты заговорил?
Питон.
Да, но это метод не класса, а метакласса.
class Meta:
def __new__(cls, name, bases, dict):
print("My class is creating!")
class Clazz(metaclass=Meta):
....
Ну когда тебе нужно семейство разнородных сущностей, каждая из которых описывается классом, но у них есть что-то общее (что именно - определяется методами метаклассов).
Например, когда какие-то атрибуты классов-потомков должны учитывать атрибуты классов-предков, ты можешь в методе метакласса обойти дерево наследования, собрать трейты и присвоить своему ёба-классу.
Я когда ОРМку свою делал (малой был) - использовал эти метаклассы, чтобы можно было половину полей описать в базовом классе, а потом в наследнике не повторяться.
регистрация, валидация и вообще разруливание потомков, в моем случае "плагинов"
Хм, а чому gc начинает работать после выхода из цикла? Или после выхода из итерации? Просто у тебя в одном случае сказано цикл, а во втором итерация. Ведь каждая новая итерация обновляет значение каждой переменной и старый объект gc должен удалить. Или это специфика вызова requests в цикле?
из цикла, из цикла. это специфика реализации циклов в питоне.
Алсо, почему gc будет вызван в конце всего цикла? Это же глупо. В конце каждой итерации, да.
«Некоторые небиологи говорят, что они влились в новый вид. Но биологи знают, что такого в природе не бывает: виды могут только расходиться».
Ну не бывает гибридов в мире языков программирования, не-бы-ва-ет и точка.
>всё время при разработке ушло на обеспечение совместимости и снижение потребления памяти, а не на оптимизацию специфичных нагрузок
Всё как всегда кароч
Так пайтон один хуй не про производительность под такими нагрузками. Его хватает для 95% компаний. А дропбокс, яндекс диск и прочие это уже 5%
Не уверен, что правильно тебя понял. Получилось вот так http://pastebin.com/CdnyakZ3 . Ты это имел ввиду?
Пытался сделать общий файл для настроек, и файл с особенными настройками для типа продакшена, в итоге ImportError: No module named 'bookstore.settings.settings_global'; 'bookstore.settings.settings_global' is not a package
В __init__.py написал
from .settings_global import *
Я всегда после startproject ебашу такую структуру
.
projectname
__init__.py
settings
__init__.py
base.py
local.py
development.py
production.py
urls.py
wsgi.py
manage.py
requirements.txt
Там, где был settings.py, появилась директория settings. В ней определена базовая конфигурация в base.py и остальные под каждое окружение. В остальных первой строчкой пишешь from .base import *. В manage.py SETTINGS_MODULE выставляешь как projectname.settings.local. local.py добавляешь в gitignore.
я в таких случаях делаю так:
project
settings.py
settings_local.py
settings_deploy.py
в settings.py определяю все переменные с дкфолтовыми значениями и в конце:
try:
from .settings_local import
except ImportError:
pass
try:
from .settings_deploy import
except ImportError:
pass
settings_deploy.py живет только на деплое.
ну а в джанге другая техника с настройками приложения...
ctype, pdict = cgi.parse_header(self.headers['content-type'])
...
elif ctype == 'application/x-www-form-urlencoded':
length = int(self.headers['content-length'])
postvars = urllib.parse.parse_qs(self.rfile.read(length), keep_blank_values=1)
В итоге в переменной postvars оказывается словарь, где пара ключ-значение это имя_формы-значение формы. Например форма с полями логин и пароль передает такие значения:
{b'password': [b'passwd'], b'username': [b'testusername']}
очевидно что все строковые данные это байтовая строка. Конечно, я могу используя for и if где нужно развернуть все это в строки нормального вида (utf-8 офк), но есть ли элегентное решение, мне не нужно их вытаскивать на этом этапе, мне просто нужно чтобы они из строк вида b'somestring' превратились в 'string'?
>>мне не нужно их вытаскивать на этом этапе, мне просто нужно чтобы они из строк вида b'somestring' превратились в 'string'
при конвертации в любом случае придется обращаться к объекту, поэтому
>> я могу используя for и if где нужно развернуть все это в строки
Напиши бота для телеграма.
Обучение это не линейный процесс. Сегодня ты читаешь две главы в день и ничего толком не можешь повторить не подсматривая, но уже через пару месяцев ты не заметишь как пишешь сам.
Годно.
HTML
Юмор достойный шэринга.
ты у мамки наркоман штоле? а просто отнаследовать базовые поля?
Хотя ты щас скажешь, что твой __new__ метакласса разворачивал таблицы в БД. Ну ок, наркоман ты ебаный
Это шутка была, проверка того факта, что тред кто-то читает :3
Все нужные пакеты установлены, и всё равно пилит ошибку "can't find '__main__' module in ''" при запуске какого-либо скрипта
Да есть Pycharm, просто думал какой-нить легковесный редактор прозапас поставить. Не судьба
Накалил твоей мамаше за обе щеки.
>can't find '__main__' module in ''" при запуске какого-либо скрипта
Тогда тебе стоит научится гуглить.
Мне просто не хочется писать громадный цикл. Как-то можно это через лямбду сделать? Вообще где нормально почитать про них, а то везде как_нарисовать_сову. jpg
Нет, просто на твой тупой вопрос всем похуй.
На сервере всё висит через & флаг, хуй узнаешь что за ошибки в случае чего.
А как делать простой лог ошибок в файл то? Не понимаю я, как везде написано, кучу кода непонятного.
Ну и что мне писать чтобы автоматически ловить все ошибки в файл?
import logging
LOG_FILENAME = '/tmp/logging_example.out'
logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
Этого достаточно? Или что-то еще надо написать?
ну блять, так бы и написал что нужно преобразовать словарь, а то понаписал какой то хуйни никому не впившейся... лямбды блять...
вот, держи епта http://pastebin.com/WzJSL0Dc
не помню, смотреть надо
Пока вижу такой вариант: каждый час скрипт по крону делает запрос (прошу анона помочь с парсером жсона от макаки), схороняет линку в файл, через час делает снова и сравнивает линку с линкой в файле, если линка не отличается, то скрипт нихуя не выполняет, если отличается, то срёт мне в телеграм. Что я еще забыл?
навроде все чотко расписал ебана, только я бы крон выкинул нахуй, да и синхронность тоже нахуй бы выкинул... а захуярил бы потипу такого чонеть http://pastebin.com/AWCnzsa2 внатуре
ну а джсон то хули там парсить? хотя я не видел макакин джсон может там пиздец чурокобес накалялкал.
Бля, понял, у меня есть скрипт бота, в котором есть листенер, который слушает все сообщения, ебать и реагирует на них. Крон надо для того, чтоб запускать отдельный скрипт, который нехуя не слушает, а только выполняет команду на отослать меседж. Если я ебану шедулер в главный скрипт бота, то он перестанет слушать сообщения, а будет только страдать хуйней (выполнять действия по расписанию), поэтому пезда нахуй.
По поводу жсона, ты только взгляни на этот пиздец ебаный: http://2ch.hk/vg/index.json (М)
r[0]['zalupa']['konya'][1]['abu']['pidaras']['privet']['thread']['url']
или можно это как-то покороче хуйнуть?
дак я тебе отдельным скриптом и написал, сразу и шедулер и скачиватель и телего-отсылатель епта, а твой бот лишь ловит на ебало сообщения от него и отдельно чалится ежжи
а насчет джсона, ну хули ебать, видел и по монструозней, главное что бы он валидный был.
> а насчет джсона, ну хули ебать, видел и по монструозней, главное что бы он валидный был.
http://jsonviewer.stack.hu/#http://2ch.hk/vg/index.json
Пиздец, нехуя не въеду как вытягивать тред по теме или по тегу.
ага вижу, json.loads() тоже хуй показывает json.decoder.JSONDecodeError: Expecting ',' delimiter
ну хуй знает как то надо его править, я ебанусь)
В шаблоне есть такая конструкция
{% for value in value_list %}
<a href="{{value.slug}}">{{value.name}}</a>
{% endfor %}
Как сделать, чтобы после этой строчки <a href="{{value.slug}}">{{value.name}}</a> выводилась запятая, а если это последняя строчка, то запятая не выводилась?
В гугле банят? https://stackoverflow.com/questions/837237/django-template-for-loop-last-iteration
Хуйли спасибо, гуглом учись пользоваться, ебанат.
Написал прогу на кудахтере, IDLE, пытаюсь запустить на Андроиде (qpython3) выдает такую шляпу.
Как лечить, что делать? На компе все работает на ура
Есть(будет, правда) один сайт на фласке, потребуется хранить приличное кол-во фоточек, гугл мягко намекнул, что БД(Postgre) для этого не стоит юзать, а лучше всего файловую систему использовать.
Так вот вопрос:
Как это лучше организовать, какая структура должна быть? (Есть юзеры, они выкладывают от своего имени фото)
Идея такая сейчас у меня:
Создавать под каждого юзера папку, адрес папки и подпапок схоронять в БД и потом юзать. Но мне это кажется немного не торт.
я бы сделал так:
картинке генерить хеш, в бд хранить путь, структура директорий:
images
--uploaded
----16022017
------34j5gjkhsdbjh345fjkh.jpg
------123f44w35e45e45jkh.jpg
------...
----17022017
------...
--thumbnails
----34j5gjkhsdbjh345fjkh_100x50.jpg
----34j5gjkhsdbjh345fjkh_200x100.jpg
----123f44w35e45e45jkh_100x50.jpg
----123f44w35e45e45jkh_200x100.jpg
----...
картинки и превью отдавать memcached или redis
И подскажи модули, без знания которых невозможно стать джуном.
Ты то, пёс, хули подвязался, пропал нахуй отсюда.
имя файла может быть помойкой, а так взял и переменовал в уникальную, корректную последовательность, алсо генерить лучше с помощью uuid
Нашел только по XPath с помощью Selenium, но, думаю, есть легче решения.
Хуй знает, что там на странице. Но у меня есть xpath и есть имя класса в котором хранится линка на картинку. Дело за малым - её вытащить, а я не ебу как. ГЕТ возвращает ХТМЛ.
ну хуй знает, в чем проблема то? напиши селектор для тега img и все
response = urllib.request.urlopen('URL')
html = response.read()
soup = BeautifulSoup(html, 'lxml')
deta = soup.find('a', class_='твой класс').get('href')
помнится, так делал: открываешь в хроме девконсоль, находишь элемент, правой кнопкой на элементе и в меню выбираешь copy xpath или типа того, не помню точно - это и будет готовый селектор для xpath
Вместо сотни строк html кода я хочу сделать что-то вроде
{% include 'post_detailed.html' with post=post %}
{% include 'disqus_comments.html %}
и потом версткой/настройкой каждого такого модуля заниматься в отдельном файле.
Вопрос: это нормальный подход? Относительно быстродействия, учитывая, что все это еще обертывается в base.html -> джанга для каждой страницы загружает и открывает 4 файла/шаблона.
нормально. шаблонизатору пофиг при таком ничтожном количестве файлов.
ну там можно в метод выбоки элемента бьютифулсупа этот селектор вставить или какой ты там либой пользуешься... все они, в основной своей массе, надстройка над lxml, а в lxml точно можно выбрать элемент посредством xpath
Кодировкопроблемы. Где-то у тебя не ютф8.
Даун, у меня респонс кривой или ты в глаза ебешься? Вот тебе пикрил нормальный респонс из консоли. Команды те же.
Сёма, плиз.
>>927697
сталкивался с такой проблемой, бро! ide нехочет нормально работать с одним монитором, кажется это связано с джавой... поставил 2 монитора и все нормально, но иногда глючит. подумываю третий монитор поставить.
Через exception'ы? Тогда какие? Или что-то другое?
ну я разобрался уже, ну. да, я долбоёб. всё?
Ну он больше похож на реальный, я это имел ввиду, лол.
Слыш, я твое вставил к себе, норм работает.
Еще такой вопрос: насколько хуйовая идея юзать try / except часто?
>>927757
Антуаны, можете пояснить, почему у меня
soup = BeautifulSoup(response.content, 'html.parser')
возвращает пикрелейтед вместо нормального
очевидно он про парсинг разной инфы с сайтов, учитывая вопросы выше
Няша, он тебе как бы намекает, что страница не статичная, а данные на ней подтягиваются при помощи ajax-a, смотри в браузере что там джава-скрипто-говно делает, ищи api енд-поинты сайта и дальше можно дергать при помощи requests и парсить json данные
если повезет и не присядешь на бутылку
> Еще такой вопрос: насколько хуйовая идея юзать try / except часто?
Ну, используй пореже.
А вообще есть такое понятие, как good way/path. Берёшь на сколько можно большой блок кода и обкладываешь его одним try.
try:
code
code
...
code
except ex1:
handler1()
except ex2:
handler2()
...
except exN:
handlerN()
Вот основной вопрос, что хочу спросить: Книга Лутца "Изучаем Python" является технически-практическим чтивом, или чисто лекторный материал "что откуда"? Т.е. я бы хотел читать эту книгу в местах где не могу прогать, где нет компа (на работе, где угодно), подойдёт ли она для этого? И Можно ли сразу параллельно читать того же Лутца, но "Программирование на питоне"?
Ты пичарм поставил коммерческий, на сайте есть комьюнити едишн бесплатная.
Лутц нормально, если до этого в жизни не программировал, а так читай и кодируй после того как прочел, нужно опыт кодинга получать.
Палю годноту newcoder.io
>Книга Лутца
Просто туторил по особенностям и библиотекам языка.
>>927806
Какой вопрос - такой ответ.
>Посоны, посоветйуте литературы по тому, как писать всякие парсеры на питоне.
http://shop.oreilly.com/product/0636920034391.do
> Еще такой вопрос: насколько хуйовая идея юзать try / except часто?
Это нормальная практика для питона, вроде как http://stackoverflow.com/a/11360880/5201699
Спасибо за пояснение. Иными словами проще в данном вопросе использовать selenium и тратить в 50 раз больше времени на исполнение говноскрипта
>словами проще в данном вопросе использовать
Ну, на самом деле different. Иногда сайт выдает годный json, с хорошей структурой, который можно за раз распарсить и получить нужные данные, а иногда говнище-дерьмище за три тыщи.
Открой dev-tools в браузере на нужной странице, выбери "XHR" и посмотри что там летает, а дальше уже действуй.
Это вообще похоже на какую-то защиту.
Сбрось интернет соединение, чтобы получить другой IP (если они у тебя динамические). И в скриптах всегда прикидывайся настоящим браузером, устанавливая соответствующий User Agent. Как здесь http://pastebin.com/t31ZsMji
Держи скрин, как посмотреть заголовки http и запросы, которые надо делать
там же можешь посмотреть ответ который прилетаетэто именно то что тебе нужно
дальше давай сам
Пробовал и с работы и из дома. Результат один. Этот http://pastebin.com/t31ZsMji скрипт разумеется не исполняется
>>927816
очевидно для заколачивания гвоздей атомным реактором, как в данном случае
Ну, Антон!!!
Ну ебана рама.
Сообщение выше посмотри, там всё что нужно чтоб решить твою задачу.
Да я понял, запостил это, не обновив тред. Думаю тот антуан, кого это интересовало изначально справится.
Я столкнулся с печальной проблемой. Необходимо сделать скрины объявлений с авито. При этом приходится совершать лишнее действие - масштабировать окно браузера в соответствии с размерами элемента, в котором и находится нужная информация. Если это не сделать скриншот получается правильного размера (соответствует размеру необходимого элемента), но та его часть, что не влезла на экран оказывается черного цвета (год назад со старыми версиями seleniuma и огнелиса без гекодрайвера такой хуйни не было). Можно ли сделать это как-то проще и быстрее?
http://dumpz.org/2497079/
Пиздец шапка протухшая
Можешь скриншотить всю страницу, а потом обрезать картинку по координатам элемента.
так кто-то мешает новую составить?
почитал шапку и чото нихлоя не понял твоих претензий на тухлость.
Ну ка объяснись!
Ннна нахуй нака
>на сколько можно большой блок кода и обкладываешь его одним try.
Ага, а потом долго тупишь и ищешь что же именно у тебя не работает.
Анончи,короч нужно поменять местами четные и нечетные элементы строки,я тут как обычно наговнокодил и и зашел в тупик,так что помогите!
так и было изначально, но сейчас не работает
Лол. Ты походу сложнее преобразования ввода raw_input в число ничего и не писал.
Хуйню ты сказал какую-то.
Интересуют такие темы как:
-Общие понятия на пальцах.
-Асинхронность, поточность и процессность в разных ситуациях.
-GIL. Сюда же, какие операции блокирующий IO, какие нет, что это значит и как определять.
-Возможность использования асинхронного кода внутри обычных синхронных фреймворков (например внутри видов синхронных MVC веб-фреймворков).
-Современный asyncio.
-Асинхронный веб.
-Положняк по старым подходам: gevent greenlet tornado twisted. Живо ли оно и нужно ли.
-Все прочее что сможет родить коллективный разум.
Думаю это можно будет добавить в гайд шапки и информация пригодится многим.
а как эта хрень должна работать в зависимости от того четное ли количество элементов или нет?
не там короч сначала делятся на два списка четных и не нечетных значений,а затем как то через цикл они меняются местами.Вообщем хуй знает,я сам до конца не ебу.Можешь предложить свой вариант.
Такие мысли вставить некуда, если честно.
Так и задумано. Хочешь оставить - from itertools import zip_longest.
Отвечу только по тому что знаю.
> -Асинхронность, поточность и процессность в разных ситуациях.
> какие операции блокирующий IO, какие нет, что это значит и как определять.
Вот это всё к питону непосредственно не относится, можно спокойно взять литературу или гайды по сокетам и почитать их. Там будет и про блокирующее/неблокирующее IO, и про то, как распределять IO по потокам и процессам.
Если очень кратко:
- асинхронность - выполнение множества задач в одном потоке. Бонусы: нет затрат на переключение контекста ОС и процессора при переходе от задачи к задаче. Минусы: псевдопараллельность.
- потоки и процессы соответственно переключаются медленнее, но могут выполняться действительно параллельно (на разных ядрах, процессорах, машинах).
Блокирующая операция блокирует выполнение инструкций в потоке до тех пор, пока операция не закончится. Неблокирующая операция вернет управление потоку как можно скорее. Результат работы операции можно будет узнать позже.
> GIL
Означает, что в каждый момент времени лишь один поток может исполнять байт-код питона. Такая же гарантия распостраняется и на расширения, написанные на Си. Последние, однако, могут GIL отдать. GIL существует из-за недостатков управления памяти в CPython. Убрать GIL из CPython очень сложно из-за двух требований: обратная совместимость и сохранение производительности одно- и двух- поточных приложений.
Из-за GIL ты не используешь потоки для увеличения производительности, когда пишешь под CPython. Только для работы с IO. Иные реализации питона GIL не имеют (PyPy).
> например внутри видов синхронных MVC веб-фреймворков
В основном не требуется.
Во-первых, синхронные MVC фреймворки в продакшене сидят за веб-серверами вроде nginx и apache. Веб-серверы очень хорошо оптимизированны и подают задачи на твои скрипты только в крайнем случае, когда нет ничего проще, а если подают, то делают это более-менее оптимально, так что в MVC-скриптах не нужно самостоятельно решать, что обрабатывать сейчас, а что потом. Во-вторых, оптимизировать синхронные MVC фреймворки - задача неблагодарная, поскольку задержка в ответе главным образом формируется за счет задержек в сети.
Из своего скромного опыта я бы сказал, что работа с очень большой нагрузкой - это на 80% решения в архитектуре сети: множество серверов за балансировщиком нагрузки, кеширование, CDN.
Отвечу только по тому что знаю.
> -Асинхронность, поточность и процессность в разных ситуациях.
> какие операции блокирующий IO, какие нет, что это значит и как определять.
Вот это всё к питону непосредственно не относится, можно спокойно взять литературу или гайды по сокетам и почитать их. Там будет и про блокирующее/неблокирующее IO, и про то, как распределять IO по потокам и процессам.
Если очень кратко:
- асинхронность - выполнение множества задач в одном потоке. Бонусы: нет затрат на переключение контекста ОС и процессора при переходе от задачи к задаче. Минусы: псевдопараллельность.
- потоки и процессы соответственно переключаются медленнее, но могут выполняться действительно параллельно (на разных ядрах, процессорах, машинах).
Блокирующая операция блокирует выполнение инструкций в потоке до тех пор, пока операция не закончится. Неблокирующая операция вернет управление потоку как можно скорее. Результат работы операции можно будет узнать позже.
> GIL
Означает, что в каждый момент времени лишь один поток может исполнять байт-код питона. Такая же гарантия распостраняется и на расширения, написанные на Си. Последние, однако, могут GIL отдать. GIL существует из-за недостатков управления памяти в CPython. Убрать GIL из CPython очень сложно из-за двух требований: обратная совместимость и сохранение производительности одно- и двух- поточных приложений.
Из-за GIL ты не используешь потоки для увеличения производительности, когда пишешь под CPython. Только для работы с IO. Иные реализации питона GIL не имеют (PyPy).
> например внутри видов синхронных MVC веб-фреймворков
В основном не требуется.
Во-первых, синхронные MVC фреймворки в продакшене сидят за веб-серверами вроде nginx и apache. Веб-серверы очень хорошо оптимизированны и подают задачи на твои скрипты только в крайнем случае, когда нет ничего проще, а если подают, то делают это более-менее оптимально, так что в MVC-скриптах не нужно самостоятельно решать, что обрабатывать сейчас, а что потом. Во-вторых, оптимизировать синхронные MVC фреймворки - задача неблагодарная, поскольку задержка в ответе главным образом формируется за счет задержек в сети.
Из своего скромного опыта я бы сказал, что работа с очень большой нагрузкой - это на 80% решения в архитектуре сети: множество серверов за балансировщиком нагрузки, кеширование, CDN.
У вас ШГ.
ну да.
Последовательность неизвестна, так же как и искомый символ.
Строка примерно такого вида:
TYUKLDSGDKgdsjgklndsbkMKDSKGD^ и в данном случае нужно найти j, т.к. она встречается 1 раз(для примера)
Строка в файле 1.txt. Там 1000 букв написанных разным регистром. Нужно найти ту, что встречается только один раз/
Ебать ты заебал. Я тебе показал как индекс вычислить. Тебе показать, как строки перебрать в файле и найти индексы?
Вернее, как вычитать строку из файла и найти индекс?
Какая то у тебя маняасиронность.
Евентлуп нихуя не асинхронность а одна из разновиднлстей реализации, причем хуевая.
Тот же самый сервлет 3.1 позволяет писать асинхронный неблокирующий код через футуры и опционалы. Но никакого евентлупа там нет. Да и многопоточного кода там нет.
Короче я хз как в пейтоне но в явке многопоточность из конкуренси, например
Бля. Недописал.
Например форкджоунпул можно использовать в любом месте с потокобезопасными типами коллекциями и либами.
Ну и сами ЕЕ и спринг предлагают решать подобные задачи либо контейнерами с пулами бинов, либо месадж архитектурой.
Мимо ява примат
Впрочем я готов послушать про новинки языка связанные с многопоточностью. Про потокобезопасные типы, синхронизацию и гринтреды.
Все тот же примат
Спасибо.
>>928025
>>928026
>>928027
Это такая специальная олимпиада? Здесь мы пытаемся понятным языком выяснить что к чему в конкурентном программировании. Что ты хотел сказать не ясно.
То что ты олигофрен ебаный.
В твоем питухоне нет в стандартной либе конкуренси, в отличии от нормальных языков.
Пиздуй сасай реактив.
https://www.packtpub.com/all?search=python&offset=0&rows=48&sort=ss_cck_field_date_of_publication+desc
Хуя припекло!
Есть такой post_save метод http://ideone.com/zGgwan
Проблема в том что он срабатывает только при повторном сохранении в админке. Т.е. когда добавляешь статью первый раз, он не генерирует тайтл, а когда снова нажимаешь в админке сэйв, все замечательно срабатывает. Подскажите, как исправить?
Я тебе выше показал как - через string.index('bukva')
сколько щас примерно такую снять стоит?
в мухосранске
чтобы была крашеная блонди, но крепкие сиски
Думай, иначе ты ничему не научишься малышь.
“Learn X in Y minutes - Python 3” - Ультрагоднота. Прочтите перед тем как начать читать книжки ниже. Подойдет как новичкам, так и старичкам и гуру которым нужно вспомнить синтаксис.
https://learnxinyminutes.com/docs/ru-ru/python3-ru/
> так и старичкам и гуру которым нужно вспомнить синтаксис
> гуру
> вспомнить синтаксис
не все на одном языке дрочат, когда на другом много пишешь может и подзабыться что-то.
>кукарику
То есть по теме тебе сказать нечего?
Для кого я писал три поста на полстраницы?
Ни один пиздонист даже не понял о чем я писал?
У нас тут локальный мемчик рождается я смотрю.
>С телефона ведь тоже можно учиться.
Что значит "учиться"? Читать книжки? Писать код?
В любом случае, эффективность нулевая, т.к. на телефон не предназначен ни для первого, ни для второго.
Да хоть онаниста можешь загуглить. Телефон предназначен для коммуникации. Его формат не подходит для программирования.
Открой документацию по любому модулю и IDE рядом. И сравни насколько быстро ты напишешь код на компьютере и телефоне, если конечно напишешь.
Желаю большой удачи данному формалисту из виртуальной реальности.
Пошел на хуй, короче, утёнок.
Жабораб же, у них это норма
0################
#####00##########
#################
######0##########
#################
суть в том что у нуля тоже случайная позиция должна быть,а не только в конце или начале строки
генерируется строка решеток или других символов,затем некоторые символы заменяются на другие.Вот так как то.
ну это главное.
Есть джва компьютера: локальная машина, на которой веду работу над проектом и удаленный сервер.
Задача: перенести файлы проекта на сервер и пулить изменения с помощью гитхаба.
Есть проект, который заливаю на гитхаб, но там есть файл со всякими API ключами и остальной ересью, который не желательно палить публично (config.py, который импортится в главный файл с кодом). Я создаю репозиторий на гитхабе, заливаю туда проект с чистым конфиг файлом, где вместо моих ключей стоят пустые строки. Дальше я клонирую эту репу себе на сервер, где будет крутится этот проект. Но для того, чтобы он там завёлся, нужны ключи в конфиге. Я редактирую файл с конфигом, подставляя свои ключи на сервере, но при следующем git pull сыпятся ошибки конфликта. Как это всё правильно организовать, подскажите?
Так это ж не бесплатно.
Вариантов несколько:
1. Конфиг добавляешь в гитигнор и держишь два разных конфига (в репо пустой, а локально заполненый).
2. Перед пулом делаешь "git checkout ." (точка нужна). После пула заново редактируешь конфиг.
3. На битбакете можно приватный репо сделать, если тебе одному с ним работать.
> 3. На битбакете можно приватный репо сделать, если тебе одному с ним работать.
Заебись, спасибо!
Насколько известно мне, для креденшиалсов используются переменные окружения. Можешь написать скрипт, который будет их устанавливать каждый раз, либо в пушарме можешь выставить их для интерпретатора.
Вать машу, щито такое, неужели никто не в курсе, м?
Есть такой post_save метод http://ideone.com/zGgwan
Проблема в том что он срабатывает только при повторном сохранении в админке. Т.е. когда добавляешь статью первый раз, он не генерирует тайтл, а когда снова нажимаешь в админке сэйв, все замечательно срабатывает. Подскажите, как исправить?
Самая мякотка в тестовом задании
Че-то дохуя они хотят в тестовом задании.
> От 30 000 руб.
>Полный рабочий день • Можно удаленно
>Знание методологий: gitflow, TDD.
> От 30 000 руб.
Угу, потому сюда и вбросил. У меня тоже знатно бомбануло
https://www.facebook.com/groups/MoscowDjango/permalink/1551150828247217/
хз, если они делают действительно что-то интересное, то почему бы и нет? Хотя экономить на ФОМ в такой ситуации опасно - был такой вот увлеченный сениор который проект тянул, а потом жена родила или там дом сгорел и деньги срочно понадобились и придется ребятишкам зубы обломать.
Там в коментах кто-то уже правильно написал, что риски должен нести инвестор, а исполнитель должен получать нормальную зарплату, а не по итогам.
>делают действительно что-то интересное
Интернет-магазин - там интересного в принципе ничего быть не может, заманить нормального спеца можно только деньгами.
> Там в коментах кто-то уже правильно написал, что риски должен нести инвестор, а исполнитель должен получать нормальную зарплату, а не по итогам.
Не читал комменты, но с мнением соглашусь. Уточню что дело даже не в рисках, а в том что они экономят на ФОМ высоко-классных специалистов. Т.е. такой специалист как-бы сам им еще доплачивает за работу. Т.е. в моем понимании контора не смогла заинтересовать инвесторов достаточно чтобы привлечь достаточно денег и "крайними" хочет сделать разработчиков.
>Интернет-магазин - там интересного в принципе ничего быть не может
Ну мало ли что они там хотят сделать.
import sys, datetime
sys.stderr = open('C:/MyShadowLogs/stderr/'+datetime.datetime.now().strftime("%Y%m%d_%H%M")+'_stderr.log','w')
sys.stdout = open('C:/MyShadowLogs/stdout/'+datetime.datetime.now().strftime("%Y%m%d_%H%M")+'_stdout.log','w')
Вставить в начале скрипта
@
Создать папки C:/MyShadowLogs/stderr, stdout
@
PROFIT
Познакомь? Особенно с симпатичной, особенно у нас в ДВ-ебенях
Полгода-год. Лучше бы переписал пистоныча на асме и сделал бы из него ОС, лол. Я бы пользовался, особенно на всяких эмбеддедах, да и дома вполне.
На асме нереально для меня будет. Буду хуярить всё на юлии, похуй что работу не найду, буду продавать конечные продукты дабы избежать автозашквара. Хотя по идее когда я подучу юлию, у меня всё равно будет шанс работать на питоне? Читал о ней что там питоний синтаксис, а либы для юлии пишутся на самой юлии (но сначала, конечно же, сам питон, по нему есть нормальные курсы)
Чому? Юлия для реалтайма позиционируется.
http://julialang.org/
Там есть маня-бенчмарки. Скорость выше всего живого и неживого. Неужели врут?
Второй амазон с таким подходом они вряд ли создадут.
>Programming with FOM The Fluid Object Mapper (FOM) serves the same purpose as an Object Relational Mapper (ORM) in the context of traditional ...
?
бля, я дебил, фот же,
Вы ничего не понимаете. В РФ бизнес по определению создаётся эксплуататорами которые ни в хуй не ставят вообще никого из работников. Даже больше. Очень сложно выжить тем кто хоть немного честно в нём хочет работать. И выходит так, что эти все пидорасы нанимают работников таким образом, чтобы ему ещё и хуй заплатить, а возможно даже ещё и получить с него побольше нихуя работнику не дав. А всё почему. Потому что все взаимозаменяемы, если что - можно взять и послать кого угодно нахуй без особых проблем и поставить на его место другого. При этом на работодателя, по моему, нет вообще никаких рычагов давления, точнее на всяких пидоров которые слишком много себе позволяют. Этот неебись тест с зп 30к - лишь жалкое следствие из того о чём я сообщаю. Могли бы они заплатить 5к и заставлять вас работать по 25 часов в секунду - они бы делали и так.
Только проверка синтаксиса. Это один из минусов языков с динамической типизацией - работа по оптимизации кода ложится на программиста, а не компилятор/интерпритатор.
Т.е len будет вычислятся каждый раз несмотря на то что в памяти уже есть его результат?
Зависит от того, что len(что-то). Так как в Пистоне все объект, то все зависит от реализации объекта. Для некоторых объектов len(объект) может быть статическим и разницы с a=len(объект) никакой не будет, а если len(объект) каждый раз что-то вычисляет, то стоит запдуматься, что это наверное неспроста и запоминание какого-то значения может привести к неожиданным последствиям.
Насколько я знаю, да.
Да, не учел - объект может сам запомнить что его уже считали и может прост вернуть закешированное значение. Например какой-нибудь кверисет из БД.
Берем простейший случай с иммутабельным строго определенным объектом, кортежем например, от которого len всегда один и тот же.
tup=(1, 2, 3)
len(tup)
len(tup)
vs
tup=(1, 2, 3)
a=len(tup)
a
Ну че ты, ну, не питонист чтоле, сука?
Intel(R) Core(TM) i5-4250U CPU @ 1.30GHz 1,90GHz
10 000 000 x=len(tup) 1.70499992371 sec
10 000 000 x=a 1.05599999428 sec
Разница значительно меньше чем я ожидал.
Пердоля, съеби в /s.
Think Python. Есть на русском.
python228 -m pip install ...
{'response': {'count': 7, 'items': [132, 223, 3231, 234, 5352, 23434, 2323]}}
Мне надо получить массив items.
Ну это первое с чем нужно разобраться.
- со всяким может случиться...
- со всяким, да не со всяким. Вот со мной это почему-то не случилось, и с Баклажаном не случилось, а с тобой случилось!
Задача:
http://pythontutor.ru/lessons/sets/problems/sets_intersection/
Даны два списка чисел. Найдите все числа, которые входят как в первый, так и во второй список и выведите их в порядке возрастания
Данные на вход:
1 3 2
4 3 2
Решение:
a = set([int(j) for j in input().split()]) & set([int(j) for j in input().split()])
print(a)
Вопрос:
Каким образом организовать вывод числе в множестве в порядке возрастания? Они идут рандомно все. Пробовал пользоваться функцией min, он почему-то очень странно считает двухзначные числа. Пробовал sorted(), но тоже фигня какая-то получается. В интернете есть решения, но они тоже нифига не сортируют.
Итак, джедаи-питонисты, покажите вашу силу и помогите юному падавану.
Вау, благодарю.
На том сайте разработчики решили так:
print(*sorted(set(input().split()) & set(input().split()), key=int))
Конечно бред какой-то, учитывая, что функцию sorted() и sort() они не показывали и даже не упоминали. Еще и звездочка в начале перед функцией, что это вообще такое. Херня короч, твое решение даже лучше, анон.
>Пробовал пользоваться функцией min, он почему-то очень странно считает двухзначные числа. Пробовал sorted(), но тоже фигня какая-то получается.
Пробовал пользоваться функцией min, он почему-то очень странно считает двухзначные числа. Пробовал sorted(), но тоже фигня какая-то получается.
тому що у тебя строки, а не числа
а не, ашыпса
Это со стэковерфлоу, няша.
....m = hashlib.md5()
....m.update(string.encode('utf-8'))
....return m.hexdigest()
Пасаны, надо конвертнуть строку в md5. Всё правильно делаю?
шептанул
кажися да
AttributeError: 'dict' object attribute 'update' is read-only
Из-за чего при mydict.update({99:'zzz'}) такая ошибка может появляться ?
В консоли всё ок
mydict={}
mydict.update({1:999})
а то же самое в программе, когда вставляю туда переменные int и int, выдаёт ошибку
зато треды какие, загляденье
Есть же.
Смотреть в гугл, копать там же.
Платиновый вопрос
micropython
>макака-формошлеп
Андрей, когда закончишь скролить свои двочи и доделаешь уже сайт.
3 неделю ждём уже, ну. Пришлось уже отследить твой трафик и писать в этот itt this thread
Подскажите куда гуглить и/или как делать.
Пользую джангу, надо из формы отправлять данные в модель.
Как? Поверхностный гугленг грит бери modelForm и хуярь, это оно?
Ясно. Я с 2014 скролю и не особо рад.
Хотя нашел немного культурной годноты на двоще, например bbng
Тут есть крутые аноны и полезная инфа.
А-ля ищущий обрящет.
Только форма её подачи не каждому подойдёт.
Я вот зачастую в ридонли сижу.
Заебись описание, все было хорошо, потом что-то сломалось и теперь ничего не работает. Во времена работы быдлоадмином манагеры в 99% случаев так и описывали проблему.
Описание проблемы, что текстовые поля не фокусятся, я не знаю почему. Я не знаю копать в какую сторону, сказал, что через js текст туда добавляется, а также, что это за форма. Никаких манипуляций, кроме как дописывания пару строк js я ничего не делал.
сажа приклеилась
Спасибо.
Это могучий интерпретатор гладит обезьянку-кодира?
Юзаю функцию os.mkdir('...') в начале файла - всё создаётся, как только вставляю эту функцию в свой код(дальше куда-нибудь, в другие функции) - всё нахуй, она вроде как работает, вроде как файл создаёт(не крашится, Exception`ов не вылазит), но папку то не создаёт, втф!?
Оно перескакивает в другую рабочую директорию, но какого хуя?!
Поясните ньюби, плавно выходящему на тропу собесов, что нужно знать джуну?
Как так, антош? Одна единственная функция юзается, os.mkdir() и всё, пути больше не трогаю, пиздец.
описался, и все говном кидают. А я до сих пор понять не могу, где я обосрался
Директория в которой оно создаёт файл
> /home/andrei
Директория в которой я работаю
> /home/andrei/Documents/Programming/Python/Orangery/application (прямо тут лежит файл из которого функция запускается)
Функция которой создаю папку
> os.makedirs('users_data/{0}/'.format(session['username']))
Хз, должно работать.
Попробуй тогда полный путь передать:
>current_dir = os.path.dirname(os.path.abspath(__file__))
>full_path = os.path.join(current_dir, 'users_data', '{0}'.format(session['username']))
> os.makedirs(full_path)
Спасибо, большое спасибо.
В общем, есть ли зарекомендовавшие себя лекции по питону? Чтоб включил на телеке, сел рядом с ноутом и попёр будто ты сидишь в аудитории с живым преподом.
в видео он просто положил статик внутри приложения, и еще один внутри джанго. И так и сяк, но мой пнг файл не видит.
Спасибо.
Полно на ютюбе. Но рекомендую pythontutor.
Если совсем далек от computer science, то можешь просмотреть курс cs50 Гарварда, отлично объясняют с основ.
Не слишком далёк, но интересные лекции почему бы не посмотреть. Спасибо.
Просто смотрю сейчас ЭТО https://www.youtube.com/watch?v=xhoX3-NdM9k&list=PLi6h7nTANKP8-xJhyUcEKysGs_91syMIS
Это такой пиздец...
Хуй с ним с картавым мерзким голосом, но блядь, она же вообще к лекции не готовилась, просто словно Ваньку Ерохина вызвали к доске рассказать "как решить %уравнение"
Вот уж действительно, пиздец.
Нужно чтобы программа записывала в текстовый файл ОДНУ И ТУ ЖЕ СТРОЧКУ N РАЗ И СОХРАНЯЛА ЕГО, больше ничего не требуется, помогите пожалуйста
Есть один бложик, на котором я испытываю всякого рода извращения и ставлю эксперименты. Но вот пришло время использовать в качестве реального бложика до этого там были статейки в стиле Lorem ipsum kak horow.
Что я уже сделал:
-модель поста с полем под бэкграунд
-если бг не указана, берется первая картинка поста, накладывается фильтр и используется в качестве бг
-если бг нет, то используется дефолтная
-прикрутил комментарии от disqus
-прикрутил счетчики просмотров/комментариев, из этого сделал раздел featured posts
-добавил возможность добавлять в текст поста картинки (через markdown и последующую обработку)
-сами статьи пишутся на markdown.
-для этого самого markdown использую редактор - https://github.com/lepture/editor
На чем запнулся:
Хочу вставить модное оформление кода - выбрал piramid. Ок, поставил, но тут, внезапно, появилась проблема: тегу с кодом нужно давать аттрибут типа code-language, чтобы он применял соответствующее оформление.
Как это решить?
1) После написания поста брать размеченый редактором текст, выводить html и добавлять в нем? Минусы: читабельность, потом не поредактируешь
2) Добавить свои кнопки в редактор? Минусы: куча времени на изучение работы редактора + получится ли.
3) Анон знает лучшее решение
Инфы по этой теме в интернетах не нашел
Да блджад, я не погромист, когда-то что-то знал, но сейчас ничего, вот вообще изи, а я не могу допереть, помохи
Как можно короче написать?
1. Регулярной \D удаляешь всё что не цифра.
2. re.findall разбивает цифры на тройки
3. Джоинишь через тире.
Использовать питон 3
Используйте long
def foo(string, n):
s = string
s = s.replace('-','').replace(' ','')
print(s)
result = []
while s:
result.append(s[:n])
s = s[n:]
return '-'.join(result)
>>928981
>>929017
>>929084
>>929509
>>929614
>>929717
>>929722
>>929912
>>928479
>>928366
Убейтесь нахуй, вкатывальщики, у вас багуля в днк
Сука. я 3 раза засыпал, когда пытался посмотреть эту хуйню.
>>929921
Я, наверное, неправильно объяснил. Это всё работает когда len() % 3 == 0. Номера могут быть разной длины.
т.е для len() % 3 == 0 выход ###-###-###,
для len() % 3 == 2 выход ###-###-##,
len() % 3 == 1 выход ###-###-##-##,
Одной регуляркой тут не обойтись, но если есть более просто решение с регулярками, хотелось бы увидеть
ты хочешь, чтобы последним элементом не могла быть одна цифра?
добавь в начале проверку на количество и остаток, отрежь от конца 4 цифры, разбей их. Остальное - как в коде выше.
Был бы ты синор-памидор написал бы на кложуре, так то ты простой мидл с петаном.
Вот эти, вроде ничего https://www.youtube.com/watch?v=5V7XG1mGiHc&list=PLlb7e2G7aSpTTNp7HBYzCBByaE1h54ruW
Правда они не совсем для новичков.
if not smth: ... ?
https://ideone.com/74QDCC
ты циклически запускаешь функцию, ясен хер что памяти сожрется больше и никто не говорил про обработку списков
На самом деле примерно одинаково, если делать несколько запусков. Но без лямбды запись красивее, имхо.
Поскролил тебе за щеку
>>930104
>>930102
Да, проебал. Но там все равно самое сложное было вот это:
>len() % 3 == 1 выход ###-###-##-##
Вставлять "-" каждые три символа можно и проще.
И похуй, что номер теперь задом наперёд.
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
Virtualenv я активировал :(myvenv) D:\lab\project>
Другой проект, который я делал без virtualenv запускается без проблем. Что сделать-то надо, чо ему не нравится ?
То есть, если я хочу использовать джанго из под virtualenv, то мне нужно добавить его в PYTHONPATН ?
А разве pip не добавляет его туда ?
Спасибо большое!
а это нормально, служебные слова использовать в качестве переменных?
БАМП вопросу
Надо сделать другую функцию, которая вызывает первую вначале с одним аргументом, если нихуя не вернуло, то попробовала с другим, если и с другим нихуя, то вываливало эксепшен. Как сделать?
Пока есть такое:
http://pastebin.com/4duvskUB
Расскажи как так же регулярками обмазаться.
Отдуши.
Не знаю, в условиях задачи на счет возвращаемого значения ничего нет, можно yield ебануть.
А, да я бухой немного.
Нет.
за переопределение builtins яйца вырывают с потрохами и засовывают обратно.
Ну тогда к Sololearn претензии.
Буду держать вас в курсе, мимо антуан-джуниор-24-года-дс2-кун
чому?
Читаю седжвика, бизли и pro-python
Плюс делаю задачки на exercism.io
Еще на вертабело прохожу курс по сиквелу, но там платно
25$ спиздили поляки, может потом выложу для ананов задачки с того сайта
анус рекогнишн запили
Tools-> buld system -> new buld system:
{
"shell_cmd": "python -u \"$file\"",
"file_regex": "^[ ]File \"(...?)\", line ([0-9]*)",
"selector": "source.python",
"encoding": "cp1251"
}
Еще есть риск что при установке питона не прописал пути, хотя хз, сейчас вроде оно само прописывается.
В общем, я себе все настроил для питона, всё прекрасно работает, автодополнение прямо из либ, хуе-моё. Кроме ввода инпутов, но оно мне и не надо.
А так вообще юзаю питон через сервер, подключаюсь через sftp, правлю в саблайме, запускаю через соснольку в путти.
Вим тоже настроил, иногда пишу в нём, но большие файлы пока не очень удобно в нем править.
Пайчармы юзал долго, в итоге бросил и пересел на саблайм. Ибо тормозит, жрет батарею, и куча фич которые мне не нужны. Иногда бывает удобно, да, порефакторить там, диффы посмотреть, не ебаться с логгингом при отладке. Но всё же это не критически чтобы переходить.
Пердоля, ты? Тебе дали инструмент готовый. Не нужен функционал - не юзай. Всё искаропки. Нет, хочу ебаться, настраивая редактор заместо того, чтобы писать код.
Так это же не ежедневная ебля как линуксами. Один раз поставил пакеты, конфиги и забыл.
>Не нужен функционал - не юзай
Так он мешает, все эту ебалайку нельзя отключить, только парочку плагинов. В любой случае жабокомбайн будет тормозить, жрать ресурсы и глаза мозолить.
> Так это же не ежедневная ебля как линуксами. Один раз поставил пакеты, конфиги и забыл.
Я вижу, как ты не ебешься. Сколько ты времени въебал на настройку?
> В любой случае жабокомбайн будет тормозить, жрать ресурсы и глаза мозолить.
Ну че ты пиздишь, блядь? У нас на проекте никто на такую хуйню ниразу не жаловался. А ты небось мамкин программер и пороха еще не нюхал.
Вопрос, проверять assert-ами значения при инициализации класса нормально? Или лучше использовать raise?
Чеснагря я хуею. Вот инициализация пустого свежего воркера celery на питоне 3.5 со всеми либами свежих версий.
Отсылка к посту приклеилась.
А знатненько я обдвачился ))) Спасибо тебе.
Еще и базу спалил. Можете не конектиться, парольуже ротейтнул
Или охуеть совсем и хоститься в Рашке соблюдая закон о хранении ПД в России?
Чукча не сисадмин, чукча - быдлокодер.
Начинай с бичарского и скалируй по надобности наверное.
https://geektimes.ru/post/247794/
С тем же EC2 мне непонятно можно ли его задудосить, чтобы владелец влетел на деньги. Автоматическое масштабирование, хули.
Мне тоже начальник говорит, вот пичарм, все его юзаем (4-й месяц работаю), заебись, любую залупу подсвечивает и подсказывает. А потом раз за разом вижу, как пичарм обсирается с поиском исходника какой-то функции и тому подобного, да и с асинкио не особо дружит, а начальник лишь разводит руками и всё сводится к полнотекстовому поиску. Это далеко не всегда так, но нахуй мне такой инструмент? Плюс интерфейс конечно просто пиздец. Классика нулевых, все эти зелёные треугольники плей, красный квадрат стоп, просто блевотина. Цвета можно настраивать, но там столько вариантов что как подсвечивать, что до седых волос можно это всё настраивать, а в нормальных редакторах почему-то из коробки всё с этим заебись. Что ещё… а, лично мне вот неудобно когда куча мелких залуп на одном экране. Тут консоль, тут дерево проекта, тут тулбар, тут меню, тут вкладочки дебаг, тут раннер АААА! Я лучше alt-tab нажму пару раз, чем на эту залупу смотреть.
Ассерты для тестов.
>нахуй мне такой инструмент?
дебаггер, консоль, pylint, тестраннер и много чего еще.
>>930540
>пичарм обсирается с поиском исходника какой-то функции
Он обычно тащит индексы пайтоновских либ с собой, ибо на венде с этим сложно.
>А потом раз за разом вижу, как пичарм обсирается с поиском исходника какой-то функции и тому подобного, да и с асинкио не особо дружит
А где это все лучше реализовано? В остальном синдром утенка.
> обсирается с поиском исходника какой-то функции и тому подобного
Постоянно и у всех
Саблайм с анакондой (линтинг, автоформат PEP8)+Jupyter вместо шела удобнее и ничего лишнего нет, и ебаться в вимом не надо.
Но надо отдать должное - Пичарм лучше чем Атом. Хуже атома уже ничего нет. Текстовый редактор который на 6700K тормозит сильнее чем полноценная IDE и при этом по сути - браузер.
> дебаггер
pdb
> консоль
консоль
> pylint
есть в любом редакторе
> тестраннер
консоль -> pytest
> Он обычно тащит индексы пайтоновских либ с собой, ибо на венде с этим сложно.
Не знаю как он на винде, у нас все на линуксе. Факт есть факт.
>>930545
> А где это все лучше реализовано?
Наверное нигде, ты это к чему?
> синдром утенка
Ты так говоришь, будто я в IDLE пишу.
>>930546
А я атомом пользуюсь на core 2 duo дома и вообще никаких проблем.
>Наверное нигде, ты это к чему?
Ну ты так критикуешь, будто есть лучше альтернативы.
>Ты так говоришь, будто я в IDLE пишу
Причем тут IDLE, ты толком не поработал в пичарме, а выводы делаешь, что ГОВНО ЗДЕЛАНА ТУПО.
Стараюсь думать именно ею. Но доходит только за 10-15 минут. Мне кажется, что это из-за хуевого учебника.
>А я атомом пользуюсь на core 2 duo дома и вообще никаких проблем.
Это незаметно пока не начинаешь писать как стенографистка. Атом пока что для меня самый удививший редактор - постоянные микролаги.
> Нет, чтобы юзать одну ИДЕ
Каждый инструмент (консоль, дебаггер и т.д.) по отдельности будет мощнее по возможностям, чем в составе ide.
> ты толком не поработал в пичарме
Я написал то, что мне сразу не понравилось. Почему я должен продолжать им пользоваться? Вон, питон кор-девелоперы пишут в емаксе и что? Кто в них пичармом кидается или ржёт над ними? Просто пичарм не по мне. Кому-то по душе тырпрайз ide, ладно, но говорить, что вот пичарм и только он, а остальные говноеды просто глупо.
> писать как стенографистка
Кому ты пиздишь?! Ты код высираешь так, что редактор лагает? Сколько символов в секунду?
https://www.google.ru/search?newwindow=1&safe=off&output=search&sclient=psy-ab&q=why pycharm is so slow&=&=&oq=&gs_l=&pbx=1
https://www.google.ru/search?newwindow=1&safe=off&output=search&sclient=psy-ab&q=why pycharm is so slow&=&=&oq=&gs_l=&pbx=1#newwindow=1&safe=off&q=why+sublime+is+so+slow
Короче, не нравится, не пользуйся, очевидно же.
Я тебе что ли говорил что Пичарм - быстрый?
Они для меня по ощущениям на одном уровне, вот только Pycharm - полноценная среда, а атом - тормозящий редактор. Как некоторые умудряются на нем писать сидя на оверпрайснутых медленных макбуках - загадка.
> Я тебе что ли говорил что Пичарм - быстрый?
Ты так говоришь, будто мы тут не вдвоём сидим. Ты скрин привёл, что кто-то плачем, что атом медленный, а загуглил, что так на любой редактор/ide плачутся.
> Pycharm - полноценная среда
И что с того? Ещё раз, все утилиты по отдельности мощнее, быстрее и проще, чем комбайн-ide, просто мышевозы любят зелёный крестик, но это колхоз. Но нет ничего плохого в том, чтобы ей пользоваться если тебе так нравится.
Ну, может не мощнее, ладно. Но мне во всех ситуациях хватает pdb и консольки. Запустить тесты, обновить пакеты, сделать дебаг вон той хуйни.
Бкри за 200 рублей на vscale, на все тебе там хватит. Только гуникорн замени на uwsgi
> Мы тут на хостинг собираем - помогите нам.
Чего, блядь? Хостинг 100 рублей в месяц стоит. У них там хайлоад что ли?!
Амазон нужен только на хайлоаде ынтырпризе или где дохуя файлов крутится. Даже для средненагруженного сервиса хватит DO, к тому же сейчас файлы можно пробросить через их же внешнее хранилище.
Двочирую, еще и либы пиздят с путхонтрендинга.
>CTO python.ru inc хуёмоё
>нет стопарика на говновпску
Пиздец.
> А я атомом пользуюсь на core 2 duo дома и вообще никаких проблем.
Атом тормозной таки, переехал с него на vs code. Он куда профитнее в плане автодополнения. Там даже pylint в пайтон плагине прикручен. И дебаггер есть.
>Хостинг
vds + домен + какой-нибудь дешманский ssl, наверняка еще и реплика с бекапами настроена.
Дешманский рувдс за 65 рублей + летсэнкрипт 0 рублей + бэкапы на домашнюю пеку + ру домен - 200 р в год максимум
Даже нищий школьник с завтраков насобирает и еще останется на игори
Есть что-то для вытаскивания дат из натурального русского языка? Платформа, модуль или сервис. Не обязательно пайтон.
Я серъезно.
На таком наверное не уедешь. Если написано "Завтра пойду в могилу, а может и послезавтра рано утром". То выяснить когда и в какое время на регулярках будет сложно. Нужен лэнгпроцессинг со словарями. Пока нашел томита-парсер, но под него нужно самому писать правила.
nltk, может быть?
Русский язык, имея множество деепричастных оборотов, довольно сложен для автоматизированного анализа.
фикс
В атоме есть и линтер и flake8.
Проиграл, конечно. Но бля шо делать.
Двачаю за вариант с vscale
Но под постгрес стоит изначально брать отдельный виртуальынй сервак, ибо подобосрется крутится на 512 Мб, да еще рядом с петано-скрейптами.
Можешь еще по моей реф ссылке регнуться и получить денех на счёт, чтоб протестить :3
можно выставить лимиты на бюджет, и оно либо вырубится при их достижении, либо будет ебашить тебя уведомлениями. Можно отдавать страничку дадосерам с nginx-a, или с s3, можно клуд-фларю привернуть сразу.
Че так?
В чем проблема на двоще спросить? А для большего - бери ментора на фрилунсе, никто бесплатно тебе помогать не будет.
Даун, плиз.
len()
lower()
upper()
str()
Какого хуя len(var), тогда как var.lower()?
Логично предположить что lower(var)
Как понять логику?
len работает для чего угодно с длиной(у объекта есть метод __len__).
lower - метод специфический для строк.
Cпасибо. Понял.
Нет. Нужно разделение между воркерами, соответственно работа с брокерами и т.д. Ну если есть что-то поверх асинка, то расскажи.
ну если брокер нужен, то rabbitmq первое что приходит на ум и питон тут не при чем, а если нужно делать асинхронный код, это твои делейд, рипит..., то asyncio. в итоге имеем asyncio + aioamqp
а вообще, если не хочется все самому с нуля, много всяких поделий уже аля микросервис - представяюи из себя минифреймворк с бекендом к брокеру ну и вообще реализацию всяких интерфейсов... вот берешь любой приглянувшийся и описываешь своего воркера. первое что вспомнилось autobahn
Походе я не совсем ясно выразился. Мне нужен фреймворк. Чтоб в конфиге прописать БД, а в скрипте по надобности делать типа job.delay(timedelta, reprat=True). В селери периодикал таски добавляются декоратором заранее, и выполняются в celery beat, в рантайме не работает такая хуйня.
>>931495
ну для такой задачи все же фреймворк - оверхед. все что нужно это выполнять в твоем воркере функцию не блокирую основной поток - asyncio, получать задания из очереди целери для исполнения твоей не блокирующей функции - aioamqp если целери пашет через рэббит.
>>931502
а если это джанга, то целери вовсе можно выкинуть, заменив на channels и тогда асинкио даже не понадобиться
тогда вот, синтетический пример, раз в неделю примерно, тут появляется http://pastebin.com/9uQCLac8 может полезен будет
Как ебнуть периодикал таск в рантайм?
Лутц это самый высокий уровень или нет?
довен, тебе уже в другом тхреде ответили, зойчем ты некропостишь?
Это копия, сохраненная 16 марта 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.