Ребят, какие есть перспективы в плане работы на питоне? Можно ли зная питон, вкатываться в тестировщики, админы, веб разработчики, либо он для других целей?
ребя, есть кто-нибудь, кто может помочь написать тестовое приложение? нужно модуль задач сделать, я только учусь и на курсах домашнее задание дали, 7 числа сдать надо, я уж голову сломал, нихера не получается, помогите для вас, думаю, труда не составит.
вот задание: Реализовать модуль достижения целей
Пользователь должен иметь возможность добавить сколько угодно целей, у каждой из них создать сколько угодно этапов. У каждого названия должны быть название и описание, а также статус исполнения. У цели также должно быть название и описание. Статус выполнения цели должен отображаться в % в зависимости от готовности этапов цели.
>>620306 Недавно на соседней борде джуна без опыта из беларуси взяли на работу в литву на немецкую компанию тестировщиком на питоне(он и питон то не знал, а искал работу на embedded C). Дали визу и приличную зарплату в еврах. Ездит в гермашку переодически тоже в основной офис. Тестовое задание видел его, потому что он его выкладывал и просил совета, ещё до того как его взяли(типа дали тест простельникий и надо было описать как его можно было бы улучшить).
>>620492 как я описал выше, я только начинаю учить django. мне нужна прямая помощь от анона, который готов уделить пару часов мне и моей приложухе в скайпе
>>620503 Нет, тебе надо было самому это делать и разбираться. Какой смысл иначе. Сделать такое приложение можно прочитав туториал на оф.сайте там похожий проект делается.
>>620546 Руби был на первом потому что гитхаб был частично написан на Руби, и взлетел в первую очередь за счет таких же рубифанатов как сами гитхабовцы.
>>620546 It should be noted that this graph represents each language's relative popularity on GitHub. For example, Ruby on Rails has been on GitHub since 2008, which may explain Ruby's early popularity.
>>620546 Between 2008 and 2015 GitHub gained the most traction in the Java community, which changed in rank from 7th to 2nd. Possible contributing factors to this growth could be the growing popularity of Android and the increasing demand for version control platforms at businesses and enterprises.
>>620586 Средненький джанго проект это несколько тысяч строк питоньего кода, если вырезать всякие миграции и не считать сторонник батареек. Вот щас глянул - интернет магазин 4512 строк. Сайт генерирующий отчеты - 22629
Может ли мне помочь анон? Суть проста. Нужно перед тем, как запускать скрипт питона, передать в консоль спермоси команду 'chcp 65001'. Через что это лучше делать? Копал что то насчёт subprocess, но кажись это не то. Какие еще есть варинаты? Либо объясните, чому следующий код выдаёт ошибку(жопой чую, что что то напутал в subprocess, но не могу понять что)?
>>620710 Оно уже юникод. Я просто не вдупляю, при чём здесь вообще IOError. Я же никакой файл не вызываю. Я тупо печатаю строку в консоль. ИЧСХ, в ConEmu, в консоли PyCharm всё идеально работает. А вот в спермоси - не завезли. Сама консоль питона вызывает ту же ошибку и закрывается.
>>620714 Хех. Неужели вообще никаких альтернатив? Вот сдаю я скрипт заказчику. И что говорить? "Ко ко ко, пок пок, вы можете поставить себе Cygwin или ConEmu. В дефолтной консольке мой сценарий работать не будет"
Если кому будет интересна тема вывода unicode в стандартную консоль, то вот: https://github.com/Drekin/win-unicode-console. Там же ссыль на питоновский баг-трек и описание сути проблемы. Этот пакет, в принципе, покрывает все нужды, хотя emoji ждать не приходится, но по крайне мере не крашит. Всем добра.
Почитал об декораторах Особо использовать не приходилось (мне пока и стринг + стринг + стринг за глаза), но тем не менее не могу понять чому все говорят что они сложные, и ещё более не понимаю где их используют в таких промышленных объёмах. Разве что в сайтах на веб2пу
>>620802 Я часто использую чтобы избежать дублирования кода в функциях, например, сильно упрощенно, если есть несколько похожих шняг: def f1(): ..prepare_action() ..start_action() ..do_stuff() ..stop_action() ..process_results()
Ньюфаг, который осилил только что джанго-блог с регистрацией и комментариями, сможет написать свой упрощенный маркдаун-редактор для этого блога? Слабо представляю себе сложность этой задачи. Либо как-то кастомизировать дефолтный в джанго, чтобы он преобразовал в html сразу с нужными css-классами, чтобы все посты в блоге были в одном стиле. Готовые wysiwyg-редакторы для моей задумки оверкилл, и, кажется, потребуют указывать эти самые css-классы при каждом редактировании поста.
>>620809 Как обеспечивается вызов do_stuff() в нужный момент, а не после process_results(), например?
>>620702 Так это не хайп. Хайп - необоснованная популярность, которая была на руби например. А клиентские технологии и node.js - это вполне востребованные вещи, которых долго не было и они появились. Но как недостаток - их расплодилось много. Но конкуренция - это хорошо.
>>620955 Для бекенда есть языки куда быстрее ноды с одинаково низким порогом вхождения. Java с Go, например. Да и кто в 2016 выбирает языки по скорости? Единый язык для фронтенда и бекенда - единственный плюс, но учитывая что этим языком является всратый JS я не уверен что это действительно плюс. Да и работает этот плюс только для обезьян, которые ничего кроме JS не знают.
Господа, есть ли среди вас те, кто работал с OpenCV на питоне? Суть такая, нужно из множества фотографий вырезать только контур фигуры чловека отбрасывая фон. Уже второй день ебусь, юзал findContours, результат на пике, дальше никак не продвинусь. Подскажите в какую сторону копать, чтобы получить чистый контур.
>>620815 Ну вот, за каких-то 6 часов даже такой долбоеб, как я, может сделать свой редактор с bbcode-кнопочками. Не маркдаун, конечно, но так мне даже больше нравится.
>>621171 Я конечно жуткое нубло со стажем программинга вообще 1 месяц, но как вообще программа на питоне может быть такой огромной Все что я пишу, а это типа пиздилки фоточек с фликра - ну максимум 50 строк
>>621180 Ну там биндинги к сишной либе, обвязки этих биндингов в питонячьи классы/функции (по сути своя либа получилась), ебля с curses, немного логики и самопальных портянок-сортировок, которые я изначально слишком хуево написал, плюс всякая мелочь вроде getopt'а и хелпа. Ну и вообще, 4к - ни разу не большая программа. inb4 дианон по описанию поделки
>>621236 Актуальную версию чего? Python 2.7.11 и последний Pycharm. Я уже думал, что глюки, но всё именно так. Если в PyCharm я ввожу тестовую строку 'Тест', то всё замечательно. Но если пытаюсь запустить скрипт, скажем через cmd, то вылетаю в EOF
>>621194 Забавно. Не думал что всё так геморройно. Я что бы опыта набраться (ну и мне больше реально нехуй делать) прохожу https://github.com/karan/Projects-Solutions/blob/master/README.md и оно очень редко когда за полтинник строк переваливает. А более хай левел задач придумать не могу. За библиотеку тебе от меня благодарности, у меня прям оргазм случается когда подрубаю всякую фигню типа Pillow или wikipedia и оно в одну строчку вместо меня всё нахуй делает.
Аноны, планирую вкатиться в тестирование на пистоне. Что надо знать-учить ? Синтаксис питона более-менее знаю, есть несколько личных прожектов на нём, когда то написал несколько парсеров на селениуме.
>>621354 Тестирование чего? Дефектов в софте(гуи или не оче)? Вебсайтов? Интернет сервисов/api? Железок? Самих приложений на питоне? > парсеров на селениуме. че?
>>621355 >Тестирование чего? я только планирую, но скорее всего сайтов >че? ну тот который selenium, умеет неплохо граббить инфу с сайтов где надо использовать JS
>>621358 Сайты которые используют js обычно имеют api какой-нить намного эффективней его использовать. На селениуме много не награббишь. А вот для тестирование оно да. Правда там какой-то гемор, если, например надо файлы заливать.
>>621362 > api какой-нить там часть инфы декодировалась JSом, чтобы всякие умники не парсили, можно было переписать на питоне, но в данном случае был бы оверкилл >А вот для тестирование оно да. то есть имеет смысл его подрочить, но думаю это не все ? я просто для тестов исключительно unittest использую, ну и nose в связке с ним иногда
Написал для общего развития пример с mix-in и множественным наследованием. В чем зашквар? Меня напрягает повсеместный вызов super в конструкторах, можно ли перенести это в метакласс, чтобы подключать это только там, где нужна композиция из ряда классов?
>>621403 Можно сделать метакласс который будет заменять __init__ на дерганье всех __init__ из bases по очереди.. Но, это лишает тебя гибкости(в каком месте __init__ вызывать super и т.п.), твой код будет нетипичным если кому-то другому с этим работать, явное лучше неявного и т.п. Лучше так не делать. Лучше вообще метаклассы не использовать если ты не делаешь что-то уж совсем такое типа ORM. > class Crate(SolidObject, DestroyableObject): вроде как mixin должен быть слева тут
>>621407 А да, у него неправильно там. Я, кстати, когда-то не оче понимал разницы между super и просто явным вызовом __init__ предка и часто так делал. И на собеседовании так написан. Мне начали задавать вопросы про __mre__ и прочее и не взяли)
>>621410 Глянь сначала на декораторы для классов. Они служат примерно одной цели. Вот смотри @decorator_function class Foo: pass Это аналог class Foo: pass Foo = decorator_function(Foo) т.е. функция берет класс в качестве агрумента и возвращает класс. Ты можешь в этой функции как-то этот класс изменить или вообще переделать или сгенерить на основе каких-то полей из этого класса новый класс вообще(их можно на лету создавать функцией type)
Метаклассы делают примерно тоже самое они отвечают за создание класса, у них просто больше возможностей.
>>621409 А как правильно? Кажется в DestroyableObject лишний вызов.
>>621410 Метакласс это прародитель всех классов, грубо говоря. То есть ты можешь вставить магию __metaclass__ = myMeta в тело твоего класса, потом создать этот самый myMeta, и переопределять в нем такие вещи, как __init__, __new__, __call__ и прочие. Делать синглтоны, хитровыебанные диспетчеры, всякий дебаг выдергивать, на что фантазии хватит. В сорсах модели Django можно найти примеры использования, в SQLAlchemy тоже.
>>621410 Вот типа примера. Пример из жизни это django orm. У model.Model прописан метакласс, который на основе полей, которые ты указывал как поля класса модели создает другой класс с другим поведением да и полей таких как ты задал у него нет, они хранятся где-то в _fields.
>>621416 Короче у тебя у класса __init__ и __new__ там отвечают за создание объекта этого класса. А __init__ и __new__ метакласса отвечают за создание самого класса(т.к. класс в питоне это тоже объект типа type) Ты можешь как угодно переделать этот класс. 99.9% программистов никогда не писали метаклассов и не будут. Это хитрая магия, которая нужна авторам некоторых библиотек и то редко. Не забивай себе этим голову.
>>621421 Да, есть несколько способов. Ты можешь в __getattribute__ если запрашивается метод выводить его имя. Ты можешь взять класс, пройтись по его полям и для всех callable сделать setattr(Class, 'name', decorator(getattr(Class, 'name')) Можешь сделать это в декораторе класса или метаклассе в т.ч.
>>621430 Ему не надо быть умным. Он вызывает следующего предка в порядке __mre__(method resolution order) и вызывает. Таким образом последовательно вызываются все предки даже если там множественное наследование.
One problem concerns method lookup under "diamond inheritance." For example:
class A: def save(self): pass
class B(A): pass
class C(A): def save(self): pass
class D(B, C): pass
Here, class D inherits from B and C, both of which inherit from class A. Using the classic MRO, methods would be found by searching the classes in the order D, B, A, C, A. Thus, a reference to x.save() will call A.save() as before. Since both B and C inherit from A, one can argue that the redefined method C.save() is actually the method that you want to call, since it can be viewed as being "more specialized" than the method in A (in fact, it probably calls A.save() anyways). For instance, if the save() method is being used to save the state of an object, not calling C.save() would break the program since the state of C would be ignored.
After much discussion, it was decided that the MRO adopted for Python 2.2 was broken and that Python should adopt the C3 Linearization algorithm described in the paper "A Monotonic Superclass Linearization for Dylan"
Змеяны, подсобите чутка, впервые вообще такое вижу и даже как-то не могу загуглить. Вместо цифр питон в консольку выбивает 1D, 2D, ну короче цифру и D(наверное decimal).
Когда делаю просто x = 1 print x Все нормально, но вот в этой хуе-задачке получается ебала: from sys import stdin
tokens = stdin.read().split() n = int(tokens[0]) islands = 0 old_type = "" for island in tokens[1:n + 1]: ....if island != old_type: ........islands += 1 ........old_type = island
print islands
Примерчик: Ввод: 3 10 10 10 Вывод: 1D
Что еще странного - добавил переменную которая считается на каждом витке цикла, и вывел ее до islands, теперь суффикс получает она, а с islands все ок, может это из-за ctrl+d?
Говно эта ваша джанга. У меня значит загружаются пикчи, в форме они проходят валидацию, там то pil не пытается прочитать всё изображение и всё вроде как заебок, дальше в модели у меня генерируются тумбы и все дела. И вот тут-то в модели-то и происходит исключение если пикча битая. Ну хуй с ним в модели запилил метод clean, он вроде появился в версии 1.2. Но блядь когда юзаешь это дело в админке, то метод clean вызывается дважды. Если используешь модель вне админки то clean нужно вызывать самому. А в этом методе у меня pil как раз и читает пикчу полностью, и если произошел фейл, то кидается ValidationError Пришлось завести специальный флажок для избегания этой ситуации (формочку планируется использовать не только в админке), в которой такая относительно тяжелая операция как чтение картинки вызывается дважды. Что еще? Еще у меня в ModelAdmin переопределены методы add_view и change_view. У меня форма посылается ajax, так как нужен достаточно продвинутый функционал при работе с пикчами. Так вот, тут происходят два sql запроса на получения альбома который сейчас редактируется, сначала сам ModelAdmin получает для себя, потом получаю я для себя. Но тут-то хуй с ним, понятное дело, что автоматика есть автоматика, на это глаза можно закрыть. Как итог, то наверное было бы быстрее если бы я взял какой-то более лёгкий фреймеворк. Ну и конечно оно на себе несет тот отпечаток, что оно создавалось для газеты. Джанго конечно годен если тебе нужно клепать сайтики как пирожки, но если ты хочешь попробовать свои силы в вебе один раз и знаешь как работают интернеты, то проще взять более низкоуровневую штуку.
>>621774 говно-годен в зависимости от того, что ты от неё ждешь. Там где тупо всякие текстовые поля да галочки она не создаёт проблем. Например в случае той же газеты. А в моём случае я мог бы так и не узнать о том, что она два раза вызывает clean. Выбор был обусловлен знанием языков - perl и python, perl был отброшен сразу. А джангу я выбрал так как до этого не занимался вебом со стороны именно веба, а она наиболее попсовая и сулила наиболее лёгкую разработку.
>>621739 >if words[(index-1)].isalpha and words[(index+1)].isalpha: >return True >else: >return False Explicit is better than implicit вышел на новый уровень
if words[(index-1)].isalpha and words[(index+1)].isalpha: ..return True elif not words[(index-1)].isalpha or not words[(index+1)].isalpha: ..return False
>>621796 if words[(index-1)].isalpha and words[(index+1)].isalpha: ..return words[(index-1)].isalpha and words[(index+1)].isalpha elif not words[(index-1)].isalpha or not words[(index+1)].isalpha: ..return words[(index-1)].isalpha or not words[(index+1)].isalpha
>>621885 Есть фтп, хочу с него грести файлы и папки, которые у меня ещё не скачанные. Потому pysftp.get_r() качающий рекурсивно всё подряд не подходит, а надо это дерьмище как-то сперва фильтовать. Ебусь через os.path.walk локально и urllib/pysftp удалённо сравнивая наличие соотвествующих файликов в соответствующе называнных директориях dircmp удобней был бы для проверки локальной папки и составления списка, но оно блядь не умеет рекурсивно грести всё дерьмо из подпапок папки.
Уважаемые, простите за охуенно тупой вопрос, но у меня возникла проблема с инструкцией nonlocal. Стоит питон 3.5 и всеравно при запуске файла пишет инвалид синтакс и указывает на эту строку. Подозреваю что проблема в моей тупости но все же...
>>621901 Так и делаю Просто это как-то тупо. Я думал беда в том что я нубло и где-то в дебрях стандартной библиотеки или хоть pypi чего завезли, но всюду хуйня
>>621914 Да любой код. Вот напримкр самый стандартный def method(): def method2(): nonlocal value value = 100 value = 10 method2() print(value) method() Выдает ошибку
>>621863 Это потому что ты вводишь свою хуйню а потом жмешь Ctrl+D. Ctrl+D отправляет в терминал символ с кодом 4, который означает конец файла. Терминал его показывает как ^D. Питон считывает его, прекращает ввод, выводит 1, и в терминале ^ заменяется на единицу, а D просто не стирается.
Что почитать по Django? Ну т.е. я вот сделал вьюшки, темплейты разделил. У меня сверху в меню список категорий, который передаётся контекстом во все вьюшки. Что-то мне подсказывает, что некрасиво так делать. Но в документации нет инфы. Головой подумать я пока не могу, ибо слишком неуверенно себя чувствую в джанго/питоне, неделю изучаю
Пару месяцев назад начал погромировать на путоне, преимущественно на линуксе. Появилась необходимость сделать executable для винды. Начал читать, как же сделать экзешник, да еще и с иконкой. Попробовал pyinstaller. Мало того, что для него еще нужно скачать Py4Windows. Ну ладно, это цветочки. Но размер вышедшей проги заставил мой пукан пробить орбиту. 15 мегабайт на прогу с гуем на ткинтере, несколькими формочками и оче простым преобразованием. 15! Вы серьезно? Чому так много? Такая же прога на плюсах (inb4: уходи, мразота) будет весить раз в 10 меньше. В общем, я знал что путон тяжелый и медленный, но я не думал что настолько. Может я что-то не так сделал? Посоветуйте как сделать вменяемый по размеру executable под винду.
>>622549 Это норма! У меня с pyqt под сотню вышел… похуй вообще. Кстати, с pyinstaller-ом не доставлял никакой хуиты, всё заработало сразу и без ебли. Ещё хочется!
>>622554 Забавно, что в дельфях когда-то никакой интерпретатор в экзешник не конпелировался, но он все равно толстым получался. Особенно на фоне своих современников. Помню, что даже какое-то время юзал aspack, который выкидывал из бинарника всякий мусор, и из-за которого позже антивирусы начали эти бинарники детектить, как зараженные. Веселые были времена.
>>622624 Неправда. Там было 400 кб из-за статически прилинкованного VCL. Если же юзать динамческую линковку (как делал VB6, Visual C++ с его MFC и даже C++ Builder), экзешник весил копейки. Плюс была библиотека KOL с объектной системой от турбопаскаля (object вместо class), она генерировала ультрамаленькие exe будучи полностью автономным статически слинкованным модулем. И нахуя мне это нужно? Учил бы С++ сразу, не забивал бы голову этим говном.
Унылый, устаревший язык с плохой приспособляемостью к нынешним реалиям. В общем-то бесполезен для современного мира. Мертвый язык. Удобен в использовании разве что для ньюфагов в программировании. Ничего серьезного на нем написать невозможно.
Кстати, есть ли примеры игорей на питоне? Можно даже не ААА.
>>622687 Относись ко всему проще: ЯП это просто инструмент. Нет плохих и хороших инструментов, есть подходящие и не подходящие. Пока будешь всё мерить через призму того, что уже знаешь - ничему новому не научишься
>>622689 Уча питон после с#, делфьинчика, с++ и пары УГ языков я ничего нового не узнал. Язык простенький. Не знаю как такая простота может выполнять сложные операции.
Вообще, fife - эталонный пример того, как не надо писать документацию. Вернее её вообще нет. Реквестирую движок под питон, на котором бы можно было сделать игру в стиле первых двух фоллаутов с нормальной подробной документацией.
>>622695 Ты её никогда не сделаешь тем более один. Забей. Можешь в браузере на html5 попробовать сделать проку больше будет от полученных знаний. Или рогалик в ascii кодах.
Парни, а что вы читаете из программинговых сайтов, может что ещё есть типа хабра с туториалами по всему подряд в частности по питону на любой вкус и цвет? Мову английскую знаю. Реддит питон фор бегинерс и просто питон смотрю, но там филиальчик стаковерфлоу, а мне бы идей почерпнуть и подходов.
>>622704 Раньше был подписан на rss ленты всяких блогов и был какой-то их агрегатор. На русском есть http://pythondigest.ru/ Вообще хз реддит лучше всего там несколько субреддитов по питону и джанге. Тот же аггрегатор новостей и ссылок на статьи. Ещё списки рассылки есть на них через google groups можно подписаться.
Те кто начинал с каноничных плюсов, школодельфята, матлабобоги, объясните пожалуйста, почему питон такое дерьмо? Что за ебанутый синтаксис. Почему ебанный матлаб 2014 работает шустро, а ссаный пичарм, написанный скорее всего на том же говнопитоне имеет ощутимую задержку при любом действии. Что за ебанутые особенные правила работы с глобальными переменными для функций? Как так вообще жить? Где нормальные массивы, что за дерьмосписками с ебанутым интерфейсом нам подложили? почему нужно стольк скобок? СХуяли в 2016 году питон по умолчанию не умеет в юникод? Почему даже при явном указании на утф-8 он плюется на АСКИшные же символы!!Нахуй вообще это дерьмо нужно?
>>622712 > ссаный пичарм, написанный скорее всего на том же говнопитоне На java. Это тот же движок что intellj idea, phpstorm, clion и прочее. > с глобальными переменными Глобальные переменные - зло. Их надо избегать. > Где нормальные массивы в numpy > питон по умолчанию не умеет в юникод Умеет. Вангую проблемы консоли венды, но питон тут не при чем.
>>622716 >Глобальные переменные - зло. Их надо избегать. И передавать по десять параметров из функции в функцию или писать функции по 1 строчке. Увы, глбл - зло, с которым необходимо сотрудничать. А питон пытается всеми силами защитить от него. > все остальное посмотрю. Какие годные ide для венды есть, не написанные не на джваве ни на питоне?
>>622720 > десять параметров Параметры «пакуются» в контейнеры, желательно с именованым доступом. > с которым необходимо сотрудничать Нет. ты какой-то долбоёб зачем тебе вообще пифон? сиди в своих дельфях и матлабах
>>622720 Нахуя для питона вообще ide? Всякие автодополнения и подсветку умеют обычные редакторы. http://komodoide.com/ попробуй чтоли. Реальных ide два - pycharm и pydev и оба на java. Кстати для других языков ситуация аналогичная. > Увы, глбл - зло, с которым необходимо сотрудничать. Не необходимо. В глобальном скопе разве что какие-то константы можно хранить. Используй ооп подход. Кстати, доступ к глобальным переменным медленней, чем к локальным.
Сап, двач. Начал изучать питон помоги разобраться. Код умножает каждый элемент списка на 3. Я не могу понять что делает вторая строка и почему она работает именно так? Хотя основной вопрос, все же как она работает, ведь если разнести эту строку на несколько, то нихуя не работает. Собственно сам код: arr=[0,1,2,3,4,5,6,7,8,9] i,x=0,len(arr) while i<x: arr*=3 i+=1 print(arr)
>>620306 > Ребят, какие есть перспективы в плане работы на питоне? Долбится в очко работая гей шлюхой есть перспективы. Потому что на питоне 2,5 вакансии куда нужен как минимум мид. на которые конкуренция человек 200. Попутно можно учить перспективный и востребованный язык, а не говно для студентов.
>>622720 >Увы, глбл - зло, с которым необходимо сотрудничать Вот, например, как этот >>622630 сотрудничает. Вместо того, чтобы в processTweetFile (инб4: >python >camelCase) создавать новый словарь terms и его же возвращать, он за каким-то хуем держит его в глобале. Завтра он захочет разобрать два разных твита и придёт сюда с просьбой разобраться, почему в словаре лишнее что-то. Ещё и файл не закрыл...
>>622630 Да, кстати, к твоему вопрос из главного треда доски: total в твоей функции не глобальная. '+= 1' это вам не '++'. Питон, соответственно, там видит "total = total + 1" (в случае с иммутабалами, по крайней мере). То есть ты определяешь (первый раз) переменную total, в значение которой нужно записать ... её же. Отсюда и referenced before assignment.
>>622716 Правильно вангуешь. Консоль винды настолько обоссаная, что скрипты если и запускают под спермосью, то либо пытаются их портировать на Python 3, либо, если хочется посадомировать с двойкой - используют Cygwin
Сам придумываю. Листаю хабр и всё что нахожу по питону, думаю где бы оно мне могло пригодиться - пишу. Стараюсь писать такое, что бы за один вечер успеть докодить до стабильной альфы. Благо с питоном это вполне возможно.
>>622913 В checkio забавно сравнивать свои громоздкие решения с топовыми от местных маньяков. Идеальное решение по их мнению - это то, которое заняло одну строчку. Изгаляются там с лямбда-функциями, генераторами и т.п.
>>622916 С одной стороны да, с другой - так можно найти более удобные/быстрые решения каких-то отдельных кусочков задачи, которые затем в нужной ситуации использовать.
Допустим у меня есть иерархическая структура словарей, типа {a: {b: {c: 1}}}, как мне безопасно получить значение по какому-либо пути, учитывая, что структура может быть не полностью заполненной? В руби кажется есть для этого оператор элвис. В скале есть тип Option. Что в питоне для этого?
Взял хостинг на AWS. Подскажите, есть ли какой-то иной вариант держать сервер запущенным, не коннектясь через консоль каждый раз к серву и не включая его вручную? Не хочется постоянно держать комп включенным, да ещё иногда 'Broken pipe' вылетают. Я на джанге.
Я нуб и хочу спросить - это нормально что для пары маленьких функций написан целый декоратор? Причем как я посмотрел, он используется только в одном этом файле. Просто мне это кажется каким-то оверкилом.
>>623127 Бесплатно первый год, думаю небольшой блог влезет в те бесплатные параметры. >>623110 Я в этом ничего не понимаю, это EC2, instance type: t2.micro. Запустил через скрин - круто, то есть он теперь всегда будет работать, до тех пор пока я не подконнекчусь и не вырублю его, так? Спасибо тебе
>>623129 Не нормально. Но что ты хотел от раста, который высрала команда не способная в нормальный код, и создавшая для своего фурифокса целый отдельный язык, на котором до сих пор ничего кроме серво не написано?
Посоны, гляньте на код: https://dpaste.de/5BEg Он корректно работает на маленьких значениях, как искомой фразы, так и исходного набора символов. Но, начиная с 4-символьной фразы он уже не перебирает все варианты. 'abbe', например, находит, а 'acca' - уже нет. Я так понимаю, объект cwr содержит не все возможные комбинации. В таком случае, из-за чего останавливается генерация комбинаций? Не хватает памяти?
>>623161 Все, разобрался. Не обратил внимание в доках к itertools, что в данном случае возвращается упорядоченный набор комбинаций, а не все возможные.
Мне надо проверить все пустые ячейки из всех кортежей. Пробовал так, но выводит лишь не пустые (FULL_BLOCK):
for i in range(len(listy)): if ( "" == listy[i+1000][i-1000:][i-1000:] ): print("%d\t%d\tEMPTY BLOCK\t[%d]" % (i+1000,i-000,i)) else: print("%d\t%d\tFULL BLOCK\t[%d]" % (i+1000,i-000,i))
Боже как я ненавижу фронтенд. Просили знакомые сделать говнолендинг что бы с мобильного норм смотрелся, сделал, у знакомых включился ВНУТРЕННИЙ ДИЗАЙНЕР, попросили по-мелочам переделать, сука, переделывай-переделывай нахуй хуйню эту бутстраповую блядь. Бесит пиздец. Днище. Хочу уже добить и дальше в милый питончик писать своё консольное парсерное говнишко.
Просто поныть решил чуть. Хотя если чего посоветуете как лепить бутстраповую хуйню быстрее и что бы меньше возиться - буду крайне признателен. Brackets live view кстати из коробки не запустился, сижу как лох ф5 жму.
Решаю задачки на чекио - застрял на этой: http://pastebin.com/CnY5tqT4 Нужно из двух строк выбрать набор слов, который встречается в обеих строках. Так вот, решение, в общем-то, несложное, но что делать с тем, что сеты - неупорядоченные множества? Я могу упорядочить результат с помощью функции sorted(set1 & set2, key=set1.index), но третий проверочный assert нам как бы намекает, что упорядоченный результат составителей задачи не интересует. И ладно бы проблема только в этом assert была - можно пощелкать Run & Check несколько раз, пока не выпадет нужный порядок, но у них там еще свои проверки есть, и щелкать, чтобы проскочить сразу все я заебусь. Че делать-то?
>>623506 Классы, декораторы, импорты, система типов данных не такая ущербная, и многое другое. Яваскрипт вынуждает программистов писать свой собственный тулинг поверх языка, чтобы можно было решить на нем задачу хотя бы среднего уровня сложности. Или учить чужой фреймворк, каждый год новый. Съеби отсюда нахер, чушка js-ная.
>>623536 >Классы, декораторы, импорты в ES6(+) уже есть >система типов данных не такая ущербная а вот это, или There should be one-- and preferably only one --obvious way to do it. не завезли, и врядли завезут.
>>623783 >скорость выполнение Естественно, это скриптовый язык. Причём общего назначения, а не как, например lua. Хотя вот JITа нет - это да. Хотя всё это зависит от реализации.
>многопоточность Это относится к стандартной реализации CPython, в которой некоторой заменой этому является multiprocessing.
>компилятор Охуеть. Без комментариев.
>проверка типов Есть рантайм проверка. А проверка при написании целиком в руках программиста. Но при долгой работе с языком это более не ощущается.
>приватные методы Гвидо сам говорил, что >от i_ate_god (этот ник оскорбляет чувства верующих — прим. пер.) Интерфейсы, абстрактные классы, приватные члены, др… Почему в Python отсутствуют эти вещи?
>Гвидо: Я вижу две причины: (а) они вам в действительности не нужны, и (б) их сложно реализовать, так как отсутствует проверка типов на этапе компиляции. Python начинался как экспериментальный проект (не утверждённый или одобренный начальством, но и не запрещённый), и я хотел быстро получить рабочий прототип. Поэтому я убрал возможности, которые были не особо нужны, и которые можно отложить; также пришлось все проверки типов делать в run time. Отсюда вытекают естественные ограничения на те возможности, которые поддерживает Python. Я также не был религиозным фанатом объектно ориентированного подхода. Я хотел получить простой язык, а объектно ориентированным он стал скорее по случайному стечению обстоятельств.
Да и вообще, есть общепринятое __methodname
>паттерн матчинг >switch-case Есть elif. А ещё можно функций в словарь/дикт напихать. А можно ещё много чего придумать.
>хвостовая рекурсия Куда бы она делась? Есть.
>карринг spam1 = lambda x : lambda y : spam( x, y )
>ленивость Есть.
>алгебраические типы данных Они и есть то только во всякой функциональщине и экзотике. А ещё инлайн вставки делать нельзя. И к памяти напрямую обращаться. Пиздец говно язык, нинужон.
>>623968 Накати на него Anaconda сверху и Sublime Code Intel. Ctrl + Shift + B > Build&Run, только укажи в настройках чем именно собирать и запускать. Гугл в помощь.
Никак не могу врубиться как в питоне время между собой прибавлять Говновелосипед из всего в секунды и из секунды обратно конечно сделал, но потом подумал что есть и более простой способо и уже добрый час туплю над ним.
Вот есть datetime - datetime, timedelta > a = datetime(2010, 12, 12) > b = timedelta(days=1, hours=2, seconds=15) >print str(a+b) этим говном можно запросто прибавлять время, но оно в datatime всегда будет требовать как минимум указать год-месяц-дату
Кое-что можно было написать незачительно компактнее, но было впадлу. Задача - типа найти наименьшее расстояние между точками в лабиринте, а потом прописать путь текстом.
Чувствую, что я ебучий говнокодер, и мне ничего не светит. Что думаете?
>>624273 Сейчас не то праздничное затишье, не то рынок перенасыщен быдлокодерами, но на мое резюме, например, полтора отклика за три недели пришло. При том, что пару лет назад меня HR-ы находили без всякого опубликованного резюме и предлагали варианты. Впрочем, возможно это конкретно у меня резюме какое-то зашкварное, хз.
>>624289 >кодить в офисе Всегда с этого проигрывал. Ехать в ссаный офис чтобы стучать по клавиатуре, когда точно такая же клавиатура со всем необходимым есть дома.
>>624289 p.s. я абсолютно серьезно. на питоне очень мало фриланса предложений, а желающих поработать море. где ты вообще искать собрался фриланс этот? на upwork?
>>624294 Ну питон ты в любом случае можешь изучить, попробовать по крайней мере. Пригодится. Если программировать умеешь это просто - почитай tutorial на оф сайте.
>>624293 Части заказчиков вообще наплевать на чём ты и как будешь делать. Уже несколько раз писал, что вкатился во фриланс слегка, нашлись постоянные заказчики. Правда последнее время я отклоняю их предложения, ибо задачи не особо интересные.
>>624363 Вкатывайся на самую низовую работу в IT: тестировщиком и т.д. Пили что-то в интересной для себя сфере на актуальной технологии, через год меняй работу и показывай это на собеседовании.
>>624162 >pypy же Ну я подметил про реализацию. >http://nuitka.net/ Не знаю, как оно работает, но тот же py2exe просто пакует исходники всех библиотек и твоего пакета в zip, кидает .dll в папку и интерпретатор туда же. Так что фактически никакой компиляции не происходит. Эта штука, как и все остальные, скорее всего делает так же.
>>624482 Как видишь, все просто. Можно Ctrl+B юзать, кстати, это я проебался. Просто сам я всегда руками в сосноли запускаю из-за virtualenv и необходимости скармливать различные параметры.
>>624563 Тащемта это вендопроблемы, а не питонопроблемы. Такие проблемы есть с каждым языком кроме может быть джавы и сисярпа. А на какой-нибудь ноде или руби ты вообще хер под вендой нормально попишешь. Добро пожаловать в реальный мир.
>>624508 >>624508 А, нашёл. >Right now Nuitka is a good replacement for the Python interpreter and compiles every construct that CPython 2.6, 2.7, 3.2, 3.3 and 3.4 offer. It translates the Python into a C++ program that then uses "libpython" to execute in the same way as CPython does, in a very compatible way.
>It is somewhat faster than CPython already, but currently it doesn't make all the optimizations possible, but a 258% factor on pystone is a good start (number is from version 0.3.11).
>>624414 > заказчиков вообще наплевать на чём ты и как будешь делать Очень странно. Это видимо какие-то мелкие задачи. Иначе заканчик будет думать - а что будет если ты пропадешь и надо будет найти кого-то кто будет это дорабатывать. И в этом отношении экзотические языки типа питона очень проблемны - мало специалистов, просят много, нос воротят. Тут рулит индустриальный стандарт - PHP
Пилю систему по обработке эвентов. Есть базовый класс Event, который в ините просто пихает в свой __дикт__ всё, что ему дадут. Теперь вопрос: Как лучше сделать собственно используемые эвенты - передавать параметр event_type, или наплодить кучу классов-потомков, типа SmthEvent(event) ? С одной стороны система с event_type выглядит более гибкой, т.к. в строку фактически можно засунуть что угодно, плюс не надо заморачиваться с copy-paste класса-евента, тем более, что он кроме инита ничего и не умеет. С другой стороны система с кучей классов выглядит стройнее и логичнее. Всё наглядно разграничено и тут уж точно ничего не напутаешь при её использовании. Хотя есть ещё третий вариант: целиком забить на классы и представлять эвенты просто диктами, без какой-либо обёртки. Собственно, хотелось бы услышать мнение анона, как он бы это сделал. И возможно то, как это обычно делается.
>>624640 1) Так ты описываешь набор имеющихся событий. А с event_type ты, если заранее не напишешь их список или т.п., придётся по всему коду выискивать. 2) Можно задать параметры по умолчанию. Хотя для event_type можно запилить наборы диктов типа SmthEvent = {event_type:"Smth", params=(0, 1)} , что решает проблему описания, однако это выглядит почти так же, как и куча классов.
>>624641 > заранее не напишешь их список Что мешает? Сделай EVENT_TYPES = ((1, 'foo'), (2,'bar')) Потом ты сможешь их комбинировать, чтобы создать маску если тебе например надо повесить обработчик сразу на несколько евентов.
>>624641 А с параметрами по умолчанию можешь дикт сделать типа EVENT_DEFAULTS = {'Smth': (0,1), 'Event2': (2,1)} Типа как-то так. Так удобнее доставать будет оттуда их
>>624655 Найди мне shared хостинг с поддержкой питона. Найди мне что-то сравнимое по популярности с wordpress или drupal. С таким же количеством шаблонов и инстансов. питон хипстерский язычок типа ruby.
>>624657 Ну 2007 закончился же уже, вокруг хероку, амазон впс и тд и тп, ну сколько можно дрочить на быдлятник этот с хостингами в папочках >>624660 Не слушай его, он поехавший. Ещё и пёрл рекомендует, интересно он его хоть видел блядь. Пиздец.
>>624672 А что ты хотел? Кушать то что-то надо. Но можешь да на локалхосте делать суперподелки никому не неужные. Бизнесу нужны "10 однотивных быдлосайтов". Или крупные проекты типа facebook, а они все делаются на php, java или c++. В некоторых случаях(суровый энтерпрайз) на c#/asp.net
Питон учат все кому не лень. Наса, гуглы, хуясы, спамеры, конспираторы, тд и тп. Это такой современный паскаль с бонусами: во-первых дохуища всего на нём уже написано, значит лепить велосипеды веселее и быстрее, во-вторых широта применения - разве что драйверы человеческие на нём писать нельзя. Скорость тоже бывает сносной при простой встроенной возможности использования сишных библиотек. Короче я тупо не вижу ни одной причины чего бы и не выучить, как минимум для себя он точно найдёт применение шире пёрла/баша/прости господи пхп
>>624878 Ты не понял. Допустим, у нас есть категории тем блога/форума/неба с аллахм, считай разделы. При выборе раздела мы формируем ссылку "написать тему". И дабы не утруждать пользователя выбором категории и списка мы за него должны проставить инишиал. Чтобы его проставить мы кваргом передаем в урлу pk категории.
Т.е. CreateView получает дополнительный параметр, который сама джанга не отрабатывает. А верность этого самого pk (чтобы юзер не влупил 666, к примеру) мы должны проверить. Так вот, красивее проверять в dispatch, или в get и post?
>>625229 Djangobook -точно хуйня ебаная, если ты пытаешься по ней. Лично после Лутца и документации нихуя не понятно, во многом потому что не приводятся сразу результаты. А самое главное, потому что я не знал ничего про CSS, HTML, SQL и тд.
Как совладать с pyqt5, если у тебя не python 3.4 и ты виндомразь? Установка без готовых exe какой-то пиздец, ад и Израиль. Стоит ли овчинка выделки с 5й версией, или не стоит ебать себе мозг и установить pyqt4 на 2.7? Вообще кто-то смог установить pyqt5 на 2.7 или на 3.5?
>>625229 Вообще джанго очень высокоуровневая и навороченная хуйня. Когда я ей начал пользоваться я уже много лет делал сайты на cgi/perl потом на php. И имел дело с ORM, MVC фреймворками, шаблонизаторами и прочим. т.е. что там и для чего было очевидно сразу. Думаю лучше начинать с чего попроще, а не сразу с джанги.
>>625273 У меня упорно не видит qmake, хотя путь в PATH прописан. И по этому пути он есть. Вместо программирования сижу и ковыряю какую-то хуйню уровня "после дождичка в четверг 5 раз постучите в бубен и 4 раза прокрутитесь вокруг своей оси в тройном сальто назад."
>>625269 И все работает? То есть, если я продолжу сношение - меня не наградят необъяснимыми хуйпойми багами?
Можно я выскажу гипотезу, а вы меня поправите что бы по-человечески было
Вот джанго, пока все действия в тутуриалах что я видел - делаются с: статичные файлы или шаблоны приложения - тут всё понятно, сюда срать выводом urls - вызывает view который срёт выводом в статику views - фигня которая определеляет что куда выводить и из чего и models - вот тут вся магия как мне кажится и крутится, если допустим мне нужно в джангу выводить данные какие-нибудь - то парсер этих данных мне писать нужно классом в models, и уже через views и urls выводить в статику Так? Или как?
Парсер это я так пизданул, на самом деле не суть важно.
Окей, мне надо выводить десяток изображений. Галерея ёбтыть. Я пишу в models класс ImageGallery через views определяю какой-нибудь def images_list(request) через urls - url (r^/images/$), image_list создаю статику с одноимённым названием куда пихаю {{ for img in images }} ...<img src="{....
>>625294 И куда тогда мне код писать? Ну в смысле вот захочу я инстаграмм делать с этой галереей, через PIL изображение пропускать - где мне эту фигню коннектить? во views?
>>625296 Хм. Вообще такая обратотка будет занимать слишком долго скорее всего и придется складывать обработку изображений этих в очередь какую-то и обрабатывать отдельным процессом.
Есть горстка плагинов по добавлению в django google maps'ов, добавлению на них - своих меток и из коробки юзеры-группы хочу добавить гугл карту, на неё - такие-то метки для такой-то группы юзеров, такие-то для такой, такие-то вообще для одного конкретного юзера. в модель прописывать связь вывода группа юзеров - группа меток, пользователи - метки потом через views их дёргать, так?
Погромисты, скажите честно, существует ли что-нибудь прекраснее Питона+Джанго? Я работал с php, js, c/c++, perl, java, но ничего изумительнее питона и джанго не встречал.
>>625278 Да всё работает. Я делал фриланс проект под няшным линуксом и в ус не дул. А как дошло дело до деплоя (у заказчика венда) то обосрался, ибо бинарников pyqt5 под 3.5 не было, а я уже заюзал модный async/await. Так что пришлось собирать самому, но в итоге бинарник есть и всё работает. Рекомендую под это дело виртуальную машину делать, ибо засирается всё баснословно. Ну, и пользоваться для сборки удобнее и не сломается ничего само по себе.
Анон, подскажи, почему с этим урлом не работает код? Сам недавно начал учить питон, хочу поплотнее научиться парсить разные данные с веб-страниц. Нашел на фл задание с эти урлом, взял просто попрактиковаться, но ничего не выходит. Помоги, плиз. http://socialblade. com/youtube/top/500
>>625406 Ну ёбаны в рот блядь, вы, нахуй, с доступным сосачем совсем гуглить разучились. Просто пиздец. Почему, блядь, нельзя в гугле вбить 2 слова "urllib 403", перейти по первой ссылке и найти ответ, а? Бляяя, как же у меня бомбит. Ну что за пиздец.
>>625407 Для кроссплатформенности питон (да и любой кроссплатформенный софт) конвертит вендовый обратный слеш в прямой. Потому что во всех ОС для указания пути используется прямой слеш, и только в венде обратный, и легче подставить костыли одному инвалиду.
>>625359 >>625292 Бамп вопросу, ребятки. Задачи мне нравятся, учат писать код правильно, но стоит ли уделять этому много времени в начале обучения? На питоне пока написал только пару скриптов по ~100-120 строк, работают на продакшене, но что-то посерьёзнее еще не пробовал делать.
>>625419 Как показывает мне практика прочитать в 4-5 книгах по одной теме за вечер-два куда круче чем одну книженцию целиком. Короче читай по порядку, если что в какой теме не ясно - полистай ещё какой источник информации и ещё чего найдёшь. А так читал обе. Обе "типа лаконичное" говно без задач. И Learn Python Hard Way с Доусноном туда же.
>>620299 (OP) Можете привести типичные ситуации в вебе когда используется celery? А то сейчас ищи работу и в некоторых вакансиях сельдерей проскакивает как требование.
>>625504 Ну например после регистрации письмо надо отправить. Это лучше делать в отдельном процессе, а не в веб сервере который заблочится от этого. Поэтому эти письма складываются в очередь и рассылаются отдельно. Или обработка каких-то файлов - аналогично.
>>625507 > Ну например после регистрации письмо надо отправить. Это лучше делать в отдельном процессе, а не в веб сервере который заблочится от этого Синхробыдлопроблемы.
>>625539 >There is no debugging feature in Komodo Edit but you can just run the current file by creating a Run Command:
>1. go to Toolbox -> Add -> New Command... >2. in the top field enter the name 'Run Python file' >3. in the 'Command' field enter this text: %(python) %F >3a. optional click on the 'Key Binding' tab and assign a key command to this command >4. click Ok.
>You should now have a new Run Command in your toolbox called 'Run Python file'; when you double-click on it the command should run the current Python script open in the editor and display the output in the Command Output pane.
Или пиши в .py файл и запускай из консоли руками: python file.py
>>625763 В чем проблема с принтом и его скобками? Теперь это функция, которая работает, как и другие функции и методы, а не МАГИЯ. Со скобками можно писать и в 2.7. И так и надо учиться писать, потому что обратная совместимость и вообще рано или поздно придется.
Левая и верхняя границы center 1 проходят точно по центрам экрана (я выделил их черным), если просто делить ширину и высоту экрана на два. С этим проблем нет.
Но стоит перед этим делением вычесть из ширины и высоты экрана ширину и высоту окна приложения - начинается какая-то хуйня. Если по горизонтали окно располагается более-менее посередине (хотя, там тоже есть малозаметные отклонения), то по вертикали творится какой-то пиздец.
center выходит совсем неравномерным относительно центра по вертикали. Сверху до края окна 13см. Против 12 от нижнего края окна до нижнего края монитора.
Сначала были мысли, что экран продолжается вниз и вправо, и потому можно увести за нижнюю и правую его границу курсор. Но границы center1-то располагаются точно по центру видимой области! 15 см сверху и снизу до границ окна. И формула почти та же. У center должно быть по 75 пикселей к северу и югу от этой условной линии середины, но ведь нихуя.
Я проверил даже не на одном мониторе это. И я мог бы удавить бугурт перфекциониста, если бы не видел окна приложений, которые центрировались без такой хуйни, с равным расстоянием от краев со всех сторон.
>>625963 Таки дошло. self.resize(250, 150) - это именно размер без учета рамки. Если убрать рамку через self.setWindowFlags(Qt.FramelessWindowHint) - все сойдется идеально. Но вот расположение окна задается с учетом рамки. В итоге нижняя граница оказывается ниже центра на размер шапки, что порождает несимметричность относительно центра.
>>625986 Отсюда следующий вопрос. А есть ли возможность узнать размеры рамки? Допустим, я захочу застелить весь экран окнами, границы рамок которых стыкуются.
>>625996 Ну да, куда короче и приятнее выходит. Центрируется с учетой ебаной рамки. В PyQt4 покороче выходит, причем. center = QtGui.QDesktopWidget().screenGeometry().center()
Парни, что такое тестирование это? Вот я кодю под себя скрипты всякие околоадминские, проверки значений даже вводных обычно забиваю писать, ибо один пользоваться буду, но все что читаю все помещано на этом тестировании просто, всюду упоминают. Что это за фигня такая? Что кроме вводных значений можно тестировать? Что вы тестируете?
>>626248 Тестирование удобно для относительно больших проектов. Например, библиотек, ты знаешь как всё должно происходить и просто пишешь тесты вход-выход/оценка каких-то метрик и так далее. Это позволяет сильно рефакторить код не боясь запутаться что и где сломалось. Потому что тесты позволяют локализовать точку отказа.
>>626253 Ага, т.е. смысл примерно или в рефакторинге, или в совместной работой над одними частями кода. А все эти тревис сиэл, автоматические системы тестирования зачем, какие есть и как их подключают?
Меня терзает смутное сомнение что ни в С++, ни в php таких культов из тестирований и не делали и как-то всё проще было: на тебе дебаггер и ебись. Это кажется или какая-то принципиальная разница влекущая за собой такую потребность в тестировании есть?
>>626256 В PHP хуево с тестированием потому что там культура такая. Срущая на стол. В си и плюсах как раз без тестирования никак, т.к. способов наступить себе на яйца гораздо больше чем в динамикодрыснях.
>>626256 Дебаг это и есть теже самые тесты, только проделанные ручками. Ну, представь, ты что-то изменил в своей библиотеке. И как убедиться, что она не сломалась. Проверять руками то место, что исправил? Так это и есть тесты. Автоматические системы позволяют во-первых, видеть всем, что всё ок. Не просто у тебя на ноуте тесты прошли разок. Во-вторых, тестировать в разном окружении (разные версии питона и/или библиотек). В-третьих, автоматически тестировать чужие пулл реквесты.
>>626248 Для скриптов тесты не нужны. Для больших проектов: 1. Упрощение совместной работы. 2. Рефакторинг 3. Возможность разработки некоторого изолированного компонента системы. Представь - ты разрабатываешь какую-то большую систему, в которой много-много взаимодействующих компонент, которые по отдельности в принципе не работают, то есть нельзя вот отдельный компонент запустить, только в составе комплекса. Вот написал ты очередной компонент (класс), как проверить, что ты его правильно написал? Ну тесты написать, убедиться ими, что интерфейс корректно реализован правда, при интеграции все равно какое-нибудь гавно вылезете, которое ты в тестах не учел, но там уже другие разновидности тестирования подключаются 4. Тестами защищаются от регрессии. Т.е. при возникновении бага, пишется тест, который этот баг воспроизводится, затем баг исправляют, с помощью теста убеждаются, что все норм. В дальнейшем, тест гоняются наравне с остальными, чтобы убедиться, что баг опять не вылез.
>>626399 и как ты эту хуйню собираешься тестировать? принт под каждым действием, каждой переменной? или чего?
я за свою сраную жизнь нормально по программингу единственную книжку прочитал - SICP. Не то что бы этого было достаточно, но блядь не представляю что вы тестируете так интенсивно
>>626401 Ага. Но у меня мозги так стоят. Мне почему руби оказались приятными и скрипты на них я пишу щас для своих целей достаточно быстро, потому что в книге по рельсам окунали в это самое ТДД и научили ставить задачи и мыслить корректно. > я за свою сраную жизнь нормально по программингу единственную книжку прочитал У меня знакомый тоже в свое время. Щас читает вторую по перлу сидя в своем букинге. Все люди разные. И мозговая деятельность у них разная. Кому-то нужно это все только на больших проектах, а кому-то желательно сразу.
>>626401 Ну взять, например, небольшую программку, логика которой разделена на 3 модуля. Которые состоят из автономных функций, которые принимают некие объекты, проверяют их и используют в вычислениях, и возвращают результат, который передается как аргумент в другие функции. Тесты могут проверять только аргументы и возвращаемый результат, например. Что же там будет в теле функций - похуй, например, можно будет переделать. Тут же без проверки каждой такой функции после написания все распидорасит к хуям при первых же запусках main. Проверять прямо в main неудобно, особенно, если код из другого модуля запускается не сразу, а через час, например.
>>626401 Можно добавлять декораторы к потенциально бажным функциям. Которые будут запускаться только при определенном событии. Глобальная переменная test = True, например. А там можно отслеживать скорость выполнения, например, число вызовов, взаимодействие возвращаемого с другой функцией и прочую оберточную логику. Добавлять или изменять атрибуты функции или класса на тестовые значения, независимые от других условий, например. Чтобы не пидорасить оригинальный код.
Нет ебли с комментированием и марательства оригинального кода, при определенном и пердольном подходе. Чем больше программа - тем полезнее.
Чего-то я в ахуе слегка от степени абстракции джанги. Ну т.е. оно логично всё, без пизды, просто от питона далеко пиздец и хуй проссыш вообще за что хвататься. Делаю туториалы один за другим пытаясь нащупать суть, но как-то неверноятно тупо идёт.
Может на русском по джанго почитать есть чего? 2 scoops of django уже читаю, но башни моей не очень надолго хватает понимать иноземный язык, особенно в совокупности с непониманием ещё и описываемого предмета
>>626474 Да нет там ничего сложного. Ну, может, кроме необходимости постоянно оверрайдить save-методы или туда-сюда сигналы слать, чтобы это говно сохраняло объекты моделей в нужном порядке, не проебывая связки PK-FK.
>>626474 Ты что-то о SQL, HTML/CSS знаешь? О классах и атрибутах? О HTTP? Если туго с этим - нужно сначала раскурить это. Без этого там ничего не поймешь, только копировать примерчики по шаблону и сможешь. Мне кажется, там вся суть в святой троице urls\views\models. Остальное свистелки и перделки для них. >Может на русском по джанго почитать есть чего Оф документация всегда лучше. Есть переведенные. http://djbook.ru/rel1.8/ Djangobook есть еще, переведенная, но для старой версии.
>>626481 В том и дело, что туда-сюда знаю, хоть конечно и с переменной глубиной. Про святую мвц-троицу понятно, хотя бы на уровне идеи, просто обилие хуилиардов встроенных методов что бы подтереть жопу не только сверху-вниз для мальчиков, снизу-вверх для девочек, но и слева-направо->снизу-вверх для смелых любителей необычного. Что бы админка выводила с фильтром какую-нибудь хуйню - просто допиши в классе в admin.py list_filter = ..., а что бы сверху столбца таблички с каким-то методом написать отсебячину - просто напиздячь в models в классе (ну или модели, если будет угодно) волшебное имя_класса/модели.short_description Логично аж пиздец, но уже постфактум. И так всё в джанго. Как в питоне стандартная библиотека документирована тремя примерами, так и тут традицию эту чтут и бдят. Вот это меня и смущает.
Ну да ладно, то всё лирика. Допустим мне надо в джанго встроить кусок своего кода на питоне, не суть важно мелкого парсера xml там или ещё чего-нибудь, хер знает, генератора счастливых билетиков. Такой штуки, короче, что в асинхронный код через всякие celery лепить его не только ненужно, но и вредно. Как этот велосипед лепить? В models прописываю данные какие будут, в urls - ссылку, которая будет дёргать нужный view из views, который будет узнавать у movels хули ему делать и просить выгрести из базы данных. Где велик-то тут впихивать? По-идее в models, оно же данные, но по-логике ближе ко views, ибо их разгребать нужно.
Или другой вопрос: вот есть всякие https://github.com/rosarior/awesome-django с модулями и блек-джеком, вот хочу я взять например блог и голосовалку. И что бы совсем по-простому не будем их вместе комбинировать, а просто отображать по хронологии вперемешку будем на url(r'^$' или как тут index прописать - каком-нибудь. И что дальше делать, хоть на уровне идеи? Записываем в setting что у нас два приложения лишних, делаем миграции под них, туда-сюда скорее всего views в них уже прописаны, осталось собрать в кучу во views самого проекта. И как такое делать? Спрашиваю потому как вроде это самый быстрый способ ваять хоть какие-то проекты, в фреймворке для перфекционистов, любящих дедлайн, а никто вообще об этом не пишет. Иногда рисуют фигню из python3 manage.py shell мол для Blog.objects.get('huy') можете использовать просто Blog('huy') и практического применения этому я тоже пока ввиду своего куцего опыта не вижу
>>626493 Я сам только начал. Но вроде >из views, который будет узнавать у movels хули ему делать и просить выгрести из базы данных. Наоборот, views задает всю логику обработки. models лишь упрощает запросы к БД. Я так понимаю, функция из views дергает нечто из models, обрабатывает, и результат подставляет в html шаблон, в котором специально обозначенные места подставляются значения из функции из views.
Я так понимаю, include(debug_toolbar.urls) добавляет свои троицы мвц. Уже готовые. Параметры которых можно докрутить, (через наследование или переопределение во views например, (прост теория)). Чтобы совместить на одной странице два приложения, нужно отдельный шаблон html, в который функция из views, которая наследовала/переопределила/хзчтоеще viewsы других приложений, будет пихать свои данные. Чисто теория. Возможно, гон нубаса.
Анон, помоги дебилу прояснить фундамент джанго. Поправь меня, где я ошибаюсь.
Модели - поля заносятся в БД, потом с этими полями можно работать как через админку, там и через ОРМ. Админка - тут мы определяем, к каким полям имеет доступ Админ. Вьюшки - функции, через которые модели отправляются на фронтэнд. В них определяется логика того, как будут обработаны поля моделей. Юрл - адреса на вьюшки/админку и т.п.
>>620299 (OP) Как удалить все символы, кроме a-z,A-Z из строки?Кроме очевидного str.replace('1','').replace('2','') Это слишком сложно, можно ли как-то удалить всё кроме букв другим способом?
Часть логики советуют переносить в модели. Чтобы можно было import и подёргать методы хоть прямо из пайтоншелла. Чаще всего это какие-нибудь действия типа "купить" в магазинах.
Вьюшки в джанге это контроллеры из MVC. Часто конкретные трансформации при отображении полей в хтмл происходят уже в темплейтах, а код вьюхи только вкладывает модель или коллекцию моделей в этот темплейт.
Через PyQt можно перемещать чужие окна? хочу наваять подобия этого шина http://jgpaiva.dcmembers.com/gridmove.html только кросплатформенное и с некоторыми своими идеями.
>>626579 Оно хоть с хоткеев гоняется? А вообще хедеры окон ловить и через винапи им пропихивать свои значения, не совсем помню как это делается, лет десять назад на плюсах в последний раз чем-то подобным занимался.
>>626582 Может и хоткеями и мышкой, зажимаешь среднюю кнопку на коне и появляется сетка в которую можно запихнуть окно. Для меня эта штуха оказалась намного юзубельней чем динамический тайлинг. >через винапи Это понятно, но я хочу кроссплатформенности. В окнах - винапи, никс - xlib, говно получается. Надеялся на PyQt, тем более его либы есть в этой мокропиське http://mizage.com/divvy/ которая мак/вин.
>>626606 Я хотел сделать сайт на питоне но выяснилоь что хостинги его не поддерживают. 99% хостеров это php+mysql. 1% - asp.net и только 0.0001% Это маргинальные руби и пайтон.
>>626974 сложно. меня интересует, что нужно писать в скрипте, что обрабатывает html-форму, чтобы при нажатии кнопки, которая является html-кодом выполнялся скрипт и постил на стенку пикчу с хуем. я нагуглил только код, когда есть текстовое поле, которое обрабатывается файлом(а текст из поля просто отображается на следущей страницу), но ввиду уже указанной болезни я не понимаю как сделать, чтобы было норм
Прошлый:
2.x или 3.x: http://legacy.python.org/dev/peps/pep-0373/