Это копия, сохраненная 3 февраля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Прошлый: >>614738 (OP)
2.x или 3.x: http://legacy.python.org/dev/peps/pep-0373/
inb4: >tiobe
Можно ли зная питон, вкатываться в тестировщики, админы, веб разработчики, либо он для других целей?
Можно. У админов это вообще язык номер один. Не считая баша.
вот задание:
Реализовать модуль достижения целей
Пользователь должен иметь возможность добавить сколько угодно целей, у каждой из них создать сколько угодно этапов. У каждого названия должны быть название и описание, а также статус исполнения. У цели также должно быть название и описание. Статус выполнения цели должен отображаться в % в зависимости от готовности этапов цели.
Я для ускорения и всякой такой лабуды использовал http://pyode.sourceforge.net/
Использовать просто. Там ещё много всякого.
Недавно на соседней борде джуна без опыта из беларуси взяли на работу в литву на немецкую компанию тестировщиком на питоне(он и питон то не знал, а искал работу на embedded C). Дали визу и приличную зарплату в еврах. Ездит в гермашку переодически тоже в основной офис.
Тестовое задание видел его, потому что он его выкладывал и просил совета, ещё до того как его взяли(типа дали тест простельникий и надо было описать как его можно было бы улучшить).
как я описал выше, я только начинаю учить django. мне нужна прямая помощь от анона, который готов уделить пару часов мне и моей приложухе в скайпе
Нет, тебе надо было самому это делать и разбираться. Какой смысл иначе. Сделать такое приложение можно прочитав туториал на оф.сайте там похожий проект делается.
Пикчи говно.
((9
Странный график. Не понятно с чем связан рост жавы. Типа они вкатываются долго? И почему рубин на первом месте был? Вообще охуеть!
Руби был на первом потому что гитхаб был частично написан на Руби, и взлетел в первую очередь за счет таких же рубифанатов как сами гитхабовцы.
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.
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.
Мой текущий джанго-проект детектится гитом, как html. Мало питонячего кода еще написал.
Средненький джанго проект это несколько тысяч строк питоньего кода, если вырезать всякие миграции и не считать сторонник батареек.
Вот щас глянул - интернет магазин 4512 строк. Сайт генерирующий отчеты - 22629
На жаве больше кода по количеству строк.
Ебать хайп. Тогда уж пожалуйся на хайп CSS - к него рост раза в четыре больше.
Хайп был на nodejs. Да и сейчас есть.
И на новые клиентские фреймворки все эти.
И на метеоры всякие.
os.system?
os.system
Тому шо файлы могут быть и как 4 картинка на пикрелейт. И их нужно отобразить в консоли, а не заменить знаком вопроса.
А оно и так unicode
Оно уже юникод. Я просто не вдупляю, при чём здесь вообще IOError. Я же никакой файл не вызываю. Я тупо печатаю строку в консоль. ИЧСХ, в ConEmu, в консоли PyCharm всё идеально работает. А вот в спермоси - не завезли. Сама консоль питона вызывает ту же ошибку и закрывается.
Хех. Неужели вообще никаких альтернатив? Вот сдаю я скрипт заказчику. И что говорить? "Ко ко ко, пок пок, вы можете поставить себе Cygwin или ConEmu. В дефолтной консольке мой сценарий работать не будет"
Печатай кириллицу вопросиками че. Ну или если у тебя там только кириллица используй cp866 или че там у винды в консоли.
Или вообще ничего не печатай в консольку пиши в файл-лог.
Или выводи в консольку типа прогресс вроде "2/10 files processed"
Вообще там по ссылке есть вариант ещё дергать winapi функцию WriteConsoleW
+1.24% not bad at all!
проиграл с декоратором
Особо использовать не приходилось (мне пока и стринг + стринг + стринг за глаза), но тем не менее не могу понять чому все говорят что они сложные, и ещё более не понимаю где их используют в таких промышленных объёмах. Разве что в сайтах на веб2пу
Я часто использую чтобы избежать дублирования кода в функциях, например, сильно упрощенно, если есть несколько похожих шняг:
def f1():
..prepare_action()
..start_action()
..do_stuff()
..stop_action()
..process_results()
def f2():
..prepare_action()
..start_action()
..do_another_stuff()
..stop_action()
..process_results()
Делаю декоратор включающих все общие вызовы, и f1-n теперь выглядят так:
@_action_stuff
def f1():
..do_stuff()
>>620809
Как обеспечивается вызов do_stuff() в нужный момент, а не после process_results(), например?
Понял, спасибо.
vim
Так это не хайп. Хайп - необоснованная популярность, которая была на руби например. А клиентские технологии и node.js - это вполне востребованные вещи, которых долго не было и они появились. Но как недостаток - их расплодилось много. Но конкуренция - это хорошо.
Как минимум node быстрее чем питон + джанго или рельсы, плюс очень удобно использовать один язык для всего приложения.
Для бекенда есть языки куда быстрее ноды с одинаково низким порогом вхождения. Java с Go, например. Да и кто в 2016 выбирает языки по скорости?
Единый язык для фронтенда и бекенда - единственный плюс, но учитывая что этим языком является всратый JS я не уверен что это действительно плюс. Да и работает этот плюс только для обезьян, которые ничего кроме JS не знают.
Ну хуй знает, я довольно много писал на питоне и жаве, но когда попробовал ноду - возвращаться нет никакого желания.
Просто оказался в нужном месте и в нужное время.
Ну вот, за каких-то 6 часов даже такой долбоеб, как я, может сделать свой редактор с bbcode-кнопочками. Не маркдаун, конечно, но так мне даже больше нравится.
Я конечно жуткое нубло со стажем программинга вообще 1 месяц, но как вообще программа на питоне может быть такой огромной
Все что я пишу, а это типа пиздилки фоточек с фликра - ну максимум 50 строк
Гугли пдфки с научными статьями, почерпнешь идей.
Анус твоей мамаши выбрать. Потому что заебал этот вопрос задавать по три раза в каждом треде.
джанго проще и быстрее, фласк понятнее и дольше
пройди пару туториалов по одному и другому и сам выбирай
Ну там биндинги к сишной либе, обвязки этих биндингов в питонячьи классы/функции (по сути своя либа получилась), ебля с curses, немного логики и самопальных портянок-сортировок, которые я изначально слишком хуево написал, плюс всякая мелочь вроде getopt'а и хелпа. Ну и вообще, 4к - ни разу не большая программа.
inb4 дианон по описанию поделки
Ty
Актуальную версию чего? Python 2.7.11 и последний Pycharm. Я уже думал, что глюки, но всё именно так. Если в PyCharm я ввожу тестовую строку 'Тест', то всё замечательно. Но если пытаюсь запустить скрипт, скажем через cmd, то вылетаю в EOF
[CODE]
# coding=utf-8
import os
os.system('chcp 65001') # UTF-8 encoding for win console
common = raw_input('>') # For test, I use 'Тест' word
print common
[/CODE]
Бля ещё один со спермопроблемами. Выше тред покрути
А что нет? У меня 2.7.6 вообще
Что за хер на третьей? У меня на работе оче похожий чувак есть, только он по openbsd угарает.
Вообще не понимаю, при чём тут EOF. Я же не посылаю в EOF в консоль.
На работе очевидные линуксы, это он в личное время по опенку угарает. Кто ж фряхи в 2016 на серверах юзает.
Ах да. На Cygwin таки работает. Возможно дело именно в кодировке, которую я задаю консоли. Вообщем, призываю WinPython экспертов.
> Кто ж фряхи в 2016 на серверах юзает.
Дохуя кто на самом деле. По крайней мере в рашке. Ещё вроде в германии оно популярно.
Проблема в том, что это я и есть. Хех.
Хуй в пальто.
Забавно. Не думал что всё так геморройно.
Я что бы опыта набраться (ну и мне больше реально нехуй делать) прохожу https://github.com/karan/Projects-Solutions/blob/master/README.md
и оно очень редко когда за полтинник строк переваливает.
А более хай левел задач придумать не могу.
За библиотеку тебе от меня благодарности, у меня прям оргазм случается когда подрубаю всякую фигню типа Pillow или wikipedia и оно в одну строчку вместо меня всё нахуй делает.
Смотря засчёт чего уплотнил.
Что надо знать-учить ? Синтаксис питона более-менее знаю, есть несколько личных прожектов на нём, когда то написал несколько парсеров на селениуме.
Тестирование чего? Дефектов в софте(гуи или не оче)? Вебсайтов? Интернет сервисов/api? Железок? Самих приложений на питоне?
> парсеров на селениуме.
че?
>Тестирование чего?
я только планирую, но скорее всего сайтов
>че?
ну тот который selenium, умеет неплохо граббить инфу с сайтов где надо использовать JS
> fuzz testing
изучал fuzzy-множества в универе, но логично, что сдесь нечто другое, но звучит интересно
Сайты которые используют js обычно имеют api какой-нить намного эффективней его использовать.
На селениуме много не награббишь. А вот для тестирование оно да. Правда там какой-то гемор, если, например надо файлы заливать.
> api какой-нить
там часть инфы декодировалась JSом, чтобы всякие умники не парсили, можно было переписать на питоне, но в данном случае был бы оверкилл
>А вот для тестирование оно да.
то есть имеет смысл его подрочить, но думаю это не все ? я просто для тестов исключительно unittest использую, ну и nose в связке с ним иногда
Хочется чтобы превью было интегрировано и быстро работало. В quanta можно было f6 нажать и в том же окне видеть всё.
ну то что я перечислил имеет тонны плагинов, если фича популярна, наверняка и для этого найдется
brackets покруче. Там из коробки live интеграция с хромиумом и ещё вроде есть хрень для нарезки шаблонов(adobe extract)
По-ублюдски.
Какой jit в сипитоне то?
http://pastebin.com/BsiSEpYj
Хм. Можно
А зачем класс вызывает супер инит себя? Разве это нужно не для вызова инита предка по наследованию? Или я чего то не знаю?
> вызывает супер инит себя
Где?
> Разве это нужно не для вызова инита предка по наследованию?
Так и есть
>Где?
Да везде
class SolidObject(BaseObject):
def __init__(self, args, kwargs):
super(SolidObject, self).__init__(args, kwargs)
class DestroyableObject(BaseObject):
def __init__(self, args, kwargs):
super(DestroyableObject, self).__init__(args, kwargs)
class Crate(SolidObject, DestroyableObject):
def __init__(self, args, kwargs):
super(Crate, self).__init__(args, kwargs)
Можно сделать метакласс который будет заменять __init__ на дерганье всех __init__ из bases по очереди.. Но, это лишает тебя гибкости(в каком месте __init__ вызывать super и т.п.), твой код будет нетипичным если кому-то другому с этим работать, явное лучше неявного и т.п.
Лучше так не делать. Лучше вообще метаклассы не использовать если ты не делаешь что-то уж совсем такое типа ORM.
> class Crate(SolidObject, DestroyableObject):
вроде как mixin должен быть слева тут
А да, у него неправильно там.
Я, кстати, когда-то не оче понимал разницы между super и просто явным вызовом __init__ предка и часто так делал. И на собеседовании так написан. Мне начали задавать вопросы про __mre__ и прочее и не взяли)
Согласен. Спасибо.
Вот в django, например.
> class SecretView(LoginRequiredMixin, View):
> class PrivateView(PermissionsRequiredMixin, View):
Глянь сначала на декораторы для классов. Они служат примерно одной цели.
Вот смотри
@decorator_function
class Foo: pass
Это аналог
class Foo: pass
Foo = decorator_function(Foo)
т.е. функция берет класс в качестве агрумента и возвращает класс. Ты можешь в этой функции как-то этот класс изменить или вообще переделать или сгенерить на основе каких-то полей из этого класса новый класс вообще(их можно на лету создавать функцией type)
Метаклассы делают примерно тоже самое они отвечают за создание класса, у них просто больше возможностей.
А как правильно? Кажется в DestroyableObject лишний вызов.
>>621410
Метакласс это прародитель всех классов, грубо говоря. То есть ты можешь вставить магию __metaclass__ = myMeta в тело твоего класса, потом создать этот самый myMeta, и переопределять в нем такие вещи, как __init__, __new__, __call__ и прочие. Делать синглтоны, хитровыебанные диспетчеры, всякий дебаг выдергивать, на что фантазии хватит. В сорсах модели Django можно найти примеры использования, в SQLAlchemy тоже.
Вот типа примера.
Пример из жизни это django orm. У model.Model прописан метакласс, который на основе полей, которые ты указывал как поля класса модели создает другой класс с другим поведением да и полей таких как ты задал у него нет, они хранятся где-то в _fields.
Блин сам dec не влез в скриншот
Короче у тебя у класса __init__ и __new__ там отвечают за создание объекта этого класса.
А __init__ и __new__ метакласса отвечают за создание самого класса(т.к. класс в питоне это тоже объект типа type)
Ты можешь как угодно переделать этот класс.
99.9% программистов никогда не писали метаклассов и не будут. Это хитрая магия, которая нужна авторам некоторых библиотек и то редко.
Не забивай себе этим голову.
class Crate(SolidObject, DestroyableObject):
def __init__(self, args, kwargs):
super(Crate, self).__init__(args, kwargs)
Ниет, неправильно. Тут нужно вызывать инит конкретного предка.
SolidObject.__init__(self, args)
DestroyableObject.__init__(self, args)
Да, есть несколько способов. Ты можешь в __getattribute__ если запрашивается метод выводить его имя.
Ты можешь взять класс, пройтись по его полям и для всех callable сделать setattr(Class, 'name', decorator(getattr(Class, 'name'))
Можешь сделать это в декораторе класса или метаклассе в т.ч.
super вызовет иниты предков в нужном порядке как надо(если у них в инитах тоже есть super)
__getattr__ будет срабатывать только для полей, которые не найдены. ему нужен __getattribute__ - он срабатывает всегда.
да, вечно путаю их
Ему не надо быть умным. Он вызывает следующего предка в порядке __mre__(method resolution order) и вызывает. Таким образом последовательно вызываются все предки даже если там множественное наследование.
mro точнее
super(D) вызовет инит из B, super(B) вызовет инит из C, super(C) вызовет инит из A
А если ты будешь явно в каждом из этих классов вызывать инит всех предков у тебя получится, что A.__init__ вызовется 2 раза.
>>621432
Не всё так просто
http://python-history.blogspot.ru/2010/06/method-resolution-order.html
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"
Ну да там теория за этим есть некоторая.
Но на деле редко приходится использовать множественное наследование, за исключением mixin`ов.
Ну так его можно руками сделать, лол.
Да мы тут все хоть куда.
Вместо цифр питон в консольку выбивает 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?
Вместо цифр питон в консольку выбивает 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?
Да питон второй. У него проблемы с stdout'ом?
это ведь не путь совсем, тоесть пользоваться можно, но надо знать как и самому написать
http://pastebin.com/d9cGqq17
Понял.
Что еще? Еще у меня в ModelAdmin переопределены методы add_view и change_view. У меня форма посылается ajax, так как нужен достаточно продвинутый функционал при работе с пикчами. Так вот, тут происходят два sql запроса на получения альбома который сейчас редактируется, сначала сам ModelAdmin получает для себя, потом получаю я для себя. Но тут-то хуй с ним, понятное дело, что автоматика есть автоматика, на это глаза можно закрыть.
Как итог, то наверное было бы быстрее если бы я взял какой-то более лёгкий фреймеворк. Ну и конечно оно на себе несет тот отпечаток, что оно создавалось для газеты. Джанго конечно годен если тебе нужно клепать сайтики как пирожки, но если ты хочешь попробовать свои силы в вебе один раз и знаешь как работают интернеты, то проще взять более низкоуровневую штуку.
говно-годен в зависимости от того, что ты от неё ждешь. Там где тупо всякие текстовые поля да галочки она не создаёт проблем. Например в случае той же газеты. А в моём случае я мог бы так и не узнать о том, что она два раза вызывает clean.
Выбор был обусловлен знанием языков - perl и python, perl был отброшен сразу. А джангу я выбрал так как до этого не занимался вебом со стороны именно веба, а она наиболее попсовая и сулила наиболее лёгкую разработку.
>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
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
Спасибо! Угорел... Писал для наглядности, чтоб не упустить ничего. Только там скобок нет в конце, по этому и не работало.
У меня еще вопрос! http://pastebin.com/RszXAMyw
Как пройти по всем объектам, так как for после удаления перескакивает. В итоге в примере остается 2 и 4.
return [a for a in data if data.count(a) != 1]
return filter(lambda a: data.count(a) != 1, data)
import re
def abc(data):
....return [int(a) for a in data if len(re.findall(str(a),''.join([str(a) for a in data]))) != 1]
Я не совсем понял что именно ты задумал. Но есть подозрение, что тебе может помочь пересечение множеств.
Есть фтп, хочу с него грести файлы и папки, которые у меня ещё не скачанные.
Потому pysftp.get_r() качающий рекурсивно всё подряд не подходит, а надо это дерьмище как-то сперва фильтовать.
Ебусь через os.path.walk локально и urllib/pysftp удалённо сравнивая наличие соотвествующих файликов в соответствующе называнных директориях
dircmp удобней был бы для проверки локальной папки и составления списка, но оно блядь не умеет рекурсивно грести всё дерьмо из подпапок папки.
уже раз наверное 8 с нуля код переписываю
А нахуя тебе отсутствие новых списков?
Просто названию файла
Почему не получить рекурсивно все файлы, которые не папки, а потом просто вычесть все что уже есть?
Любую хвостовую рекурсию можно превратить в цикл. Побудь-ка ты компилятором.
Так и делаю
Просто это как-то тупо. Я думал беда в том что я нубло и где-то в дебрях стандартной библиотеки или хоть pypi чего завезли, но всюду хуйня
Да любой код. Вот напримкр самый стандартный
def method():
def method2():
nonlocal value
value = 100
value = 10
method2()
print(value)
method()
Выдает ошибку
Если бы присутствовали отступы, то было бы проще тебе помочь.
>>> def method():
... def method2():
... nonlocal value
... value = 100
... value = 10
... method2()
... print(value)
...
>>> method()
100
И что у тебя не получается? Где ошибка? Какая ошибка? Ты можешь нормально вопрос задать?
Воспользуйся aioftp
Ну, раз на ideone всё заебись, а у тебя нет. Проблема у тебя в «системе».
Это потому что ты вводишь свою хуйню а потом жмешь Ctrl+D. Ctrl+D отправляет в терминал символ с кодом 4, который означает конец файла. Терминал его показывает как ^D. Питон считывает его, прекращает ввод, выводит 1, и в терминале ^ заменяется на единицу, а D просто не стирается.
Выполни вот так: python _344.py <<< '3
10
10
10'
Спасибо.
Это значит спермопроблемы.
Ну т.е. я вот сделал вьюшки, темплейты разделил.
У меня сверху в меню список категорий, который передаётся контекстом во все вьюшки.
Что-то мне подсказывает, что некрасиво так делать. Но в документации нет инфы.
Головой подумать я пока не могу, ибо слишком неуверенно себя чувствую в джанго/питоне, неделю изучаю
Насчет что почитать - 2 scoops of django годная книжка типа best practices.
На http://djbook.ru/ куча рецептов
На дискету не помещается, да?
Это норма! У меня с pyqt под сотню вышел… похуй вообще. Кстати, с pyinstaller-ом не доставлял никакой хуиты, всё заработало сразу и без ебли. Ещё хочется!
Забавно, что в дельфях когда-то никакой интерпретатор в экзешник не конпелировался, но он все равно толстым получался. Особенно на фоне своих современников. Помню, что даже какое-то время юзал aspack, который выкидывал из бинарника всякий мусор, и из-за которого позже антивирусы начали эти бинарники детектить, как зараженные. Веселые были времена.
Неправда. Там было 400 кб из-за статически прилинкованного VCL. Если же юзать динамческую линковку (как делал VB6, Visual C++ с его MFC и даже C++ Builder), экзешник весил копейки. Плюс была библиотека KOL с объектной системой от турбопаскаля (object вместо class), она генерировала ультрамаленькие exe будучи полностью автономным статически слинкованным модулем. И нахуя мне это нужно? Учил бы С++ сразу, не забивал бы голову этим говном.
Зачем тебе вообще тотал, он же нигде не используется
Помогло, спасибо. Тогда такой вопрос: почему для terms не надо global писать?
Потому что это питон, детка. Объекты и списки - это другое колдунство. Надо было учить мертвый руби.
Это специальные грабли, чтобы любители глобальных переменных наступали на них и получали по лицу.
Удобен в использовании разве что для ньюфагов в программировании. Ничего серьезного на нем написать невозможно.
Кстати, есть ли примеры игорей на питоне? Можно даже не ААА.
civilization 4, eve online, frets on fire, pysol, Mount&Blade, battlefield 2
Относись ко всему проще: ЯП это просто инструмент. Нет плохих и хороших инструментов, есть подходящие и не подходящие.
Пока будешь всё мерить через призму того, что уже знаешь - ничему новому не научишься
Ты её никогда не сделаешь тем более один. Забей.
Можешь в браузере на html5 попробовать сделать проку больше будет от полученных знаний. Или рогалик в ascii кодах.
Реддит питон фор бегинерс и просто питон смотрю, но там филиальчик стаковерфлоу, а мне бы идей почерпнуть и подходов.
Раньше был подписан на rss ленты всяких блогов и был какой-то их агрегатор. На русском есть http://pythondigest.ru/
Вообще хз реддит лучше всего там несколько субреддитов по питону и джанге. Тот же аггрегатор новостей и ссылок на статьи.
Ещё списки рассылки есть на них через google groups можно подписаться.
А мне и не нужно сделать, мне нужно начать делать. Писать на канвасе в хтмл - то же самое, что писать движок с нуля.
> ссаный пичарм, написанный скорее всего на том же говнопитоне
На java. Это тот же движок что intellj idea, phpstorm, clion и прочее.
> с глобальными переменными
Глобальные переменные - зло. Их надо избегать.
> Где нормальные массивы
в numpy
> питон по умолчанию не умеет в юникод
Умеет. Вангую проблемы консоли венды, но питон тут не при чем.
Я так понимаю аналогов хабра в общепланетарном масштабе и не существует?
Спасибо за ссылку, читаю, очень нравится
>Глобальные переменные - зло. Их надо избегать.
И передавать по десять параметров из функции в функцию или писать функции по 1 строчке. Увы, глбл - зло, с которым необходимо сотрудничать. А питон пытается всеми силами защитить от него.
> все остальное
посмотрю. Какие годные ide для венды есть, не написанные не на джваве ни на питоне?
Нульчую дайджест. Далеко не всё там интересно, но бывают ссылки на очень интересные либы и/или статьи.
> десять параметров
Параметры «пакуются» в контейнеры, желательно с именованым доступом.
> с которым необходимо сотрудничать
Нет.
ты какой-то долбоёб зачем тебе вообще пифон? сиди в своих дельфях и матлабах
Нахуя для питона вообще ide? Всякие автодополнения и подсветку умеют обычные редакторы.
http://komodoide.com/ попробуй чтоли.
Реальных ide два - pycharm и pydev и оба на java. Кстати для других языков ситуация аналогичная.
> Увы, глбл - зло, с которым необходимо сотрудничать.
Не необходимо. В глобальном скопе разве что какие-то константы можно хранить.
Используй ооп подход.
Кстати, доступ к глобальным переменным медленней, чем к локальным.
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)
> Ребят, какие есть перспективы в плане работы на питоне?
Долбится в очко работая гей шлюхой есть перспективы. Потому что на питоне 2,5 вакансии куда нужен как минимум мид. на которые конкуренция человек 200.
Попутно можно учить перспективный и востребованный язык, а не говно для студентов.
И хостится на шаредах. КАЗДЫЙ ХОСТЕР ПОДДЕРЖИВАЕТ
пикрел?
>>622720
>Увы, глбл - зло, с которым необходимо сотрудничать
Вот, например, как этот >>622630 сотрудничает. Вместо того, чтобы в processTweetFile (инб4: >python >camelCase) создавать новый словарь terms и его же возвращать, он за каким-то хуем держит его в глобале. Завтра он захочет разобрать два разных твита и придёт сюда с просьбой разобраться, почему в словаре лишнее что-то.
Ещё и файл не закрыл...
Да, кстати, к твоему вопрос из главного треда доски: total в твоей функции не глобальная. '+= 1' это вам не '++'. Питон, соответственно, там видит "total = total + 1" (в случае с иммутабалами, по крайней мере). То есть ты определяешь (первый раз) переменную total, в значение которой нужно записать ... её же. Отсюда и referenced before assignment.
У варгейминга ui на питоне.
Правильно вангуешь. Консоль винды настолько обоссаная, что скрипты если и запускают под спермосью, то либо пытаются их портировать на Python 3, либо, если хочется посадомировать с двойкой - используют Cygwin
А ведь им дали паверщель. Хуле они все с цмд.ехе, м?
http://codingbat.com/python, practicepython.org - эти сделал
откуда еще черпать?
https://m.reddit.com/r/learnprogramming/comments/2a9ygh/1000_beginner_programming_projects_xpost/
http://blog.programmersmotivation.com/2014/07/09/list-projects/
Сам придумываю. Листаю хабр и всё что нахожу по питону, думаю где бы оно мне могло пригодиться - пишу. Стараюсь писать такое, что бы за один вечер успеть докодить до стабильной альфы. Благо с питоном это вполне возможно.
В checkio забавно сравнивать свои громоздкие решения с топовыми от местных маньяков. Идеальное решение по их мнению - это то, которое заняло одну строчку. Изгаляются там с лямбда-функциями, генераторами и т.п.
На самом деле это херовая практика, так код тяжелее читать как правило и разбираться в нем.
В спортивном решении задачек можно и побаловаться.
С одной стороны да, с другой - так можно найти более удобные/быстрые решения каких-то отдельных кусочков задачи, которые затем в нужной ситуации использовать.
Там разные есть. Есть и такие, как ты описал, а есть и очень даже хорошие.
Нет
Отмена
Фриланса?
[САРКАЗМ]
{a: {b: {c: 1}}}, как мне безопасно получить значение по какому-либо пути, учитывая, что структура может быть не полностью заполненной?
В руби кажется есть для этого оператор элвис. В скале есть тип Option. Что в питоне для этого?
d.get('key1',{}).get('key2',None) ?
Я нуб и хочу спросить - это нормально что для пары маленьких функций написан целый декоратор? Причем как я посмотрел, он используется только в одном этом файле. Просто мне это кажется каким-то оверкилом.
Не нормально. Но что ты хотел от раста, который высрала команда не способная в нормальный код, и создавшая для своего фурифокса целый отдельный язык, на котором до сих пор ничего кроме серво не написано?
Все, разобрался. Не обратил внимание в доках к itertools, что в данном случае возвращается упорядоченный набор комбинаций, а не все возможные.
someList = {
1000:[
("1","2","3","","5","","7","8","9")
],
1001:[
("1","2","3","4","5","6","","8","9")
],
}
Мне надо проверить все пустые ячейки из всех кортежей.
Пробовал так, но выводит лишь не пустые (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))
>>623225
Кортежи еще и в списки заворачивать - обязательное условие? Если нет, то http://pastebin.com/9DNJp4GT
Хочу уже добить и дальше в милый питончик писать своё консольное парсерное говнишко.
Просто поныть решил чуть. Хотя если чего посоветуете как лепить бутстраповую хуйню быстрее и что бы меньше возиться - буду крайне признателен.
Brackets live view кстати из коробки не запустился, сижу как лох ф5 жму.
А чем питонодерьмо лучше? Я не встречал людей, которые считали бы питон хорошим языком, зная что то, кроме него.
Нужно из двух строк выбрать набор слов, который встречается в обеих строках. Так вот, решение, в общем-то, несложное, но что делать с тем, что сеты - неупорядоченные множества? Я могу упорядочить результат с помощью функции sorted(set1 & set2, key=set1.index), но третий проверочный assert нам как бы намекает, что упорядоченный результат составителей задачи не интересует. И ладно бы проблема только в этом assert была - можно пощелкать Run & Check несколько раз, пока не выпадет нужный порядок, но у них там еще свои проверки есть, и щелкать, чтобы проскочить сразу все я заебусь. Че делать-то?
Блять, "хакнул" слегка задачку, а потом посмотрел решения других пацанов, а они там sorted() без аргумента key юзают и им норм.
Классы, декораторы, импорты, система типов данных не такая ущербная, и многое другое. Яваскрипт вынуждает программистов писать свой собственный тулинг поверх языка, чтобы можно было решить на нем задачу хотя бы среднего уровня сложности. Или учить чужой фреймворк, каждый год новый. Съеби отсюда нахер, чушка js-ная.
>Классы, декораторы, импорты
в ES6(+) уже есть
>система типов данных не такая ущербная
а вот это, или There should be one-- and preferably only one --obvious way to do it. не завезли, и врядли завезут.
> 2016
> бараны все ещё ищут идеальный язык, а не под конкретные нужды
Есть три ответа:
1) Нинужно!
2) Допиливается с помощью костылей.
3) А у нас свой кривой аналог есть.
Применяешь их в случайном порядке ко всем пунктам списка и получаешь ответ.
>скорость выполнение
Естественно, это скриптовый язык. Причём общего назначения, а не как, например lua. Хотя вот JITа нет - это да. Хотя всё это зависит от реализации.
>многопоточность
Это относится к стандартной реализации CPython, в которой некоторой заменой этому является multiprocessing.
>компилятор
Охуеть. Без комментариев.
>проверка типов
Есть рантайм проверка. А проверка при написании целиком в руках программиста. Но при долгой работе с языком это более не ощущается.
>приватные методы
Гвидо сам говорил, что
>от i_ate_god (этот ник оскорбляет чувства верующих — прим. пер.)
Интерфейсы, абстрактные классы, приватные члены, др… Почему в Python отсутствуют эти вещи?
>Гвидо: Я вижу две причины: (а) они вам в действительности не нужны, и (б) их сложно реализовать, так как отсутствует проверка типов на этапе компиляции. Python начинался как экспериментальный проект (не утверждённый или одобренный начальством, но и не запрещённый), и я хотел быстро получить рабочий прототип. Поэтому я убрал возможности, которые были не особо нужны, и которые можно отложить; также пришлось все проверки типов делать в run time. Отсюда вытекают естественные ограничения на те возможности, которые поддерживает Python. Я также не был религиозным фанатом объектно ориентированного подхода. Я хотел получить простой язык, а объектно ориентированным он стал скорее по случайному стечению обстоятельств.
Да и вообще, есть общепринятое __methodname
>паттерн матчинг
>switch-case
Есть elif. А ещё можно функций в словарь/дикт напихать. А можно ещё много чего придумать.
>хвостовая рекурсия
Куда бы она делась? Есть.
>карринг
spam1 = lambda x : lambda y : spam( x, y )
>ленивость
Есть.
>алгебраические типы данных
Они и есть то только во всякой функциональщине и экзотике. А ещё инлайн вставки делать нельзя. И к памяти напрямую обращаться. Пиздец говно язык, нинужон.
>округление результатов
Щито?
>соглашения об именовании
PEP8, нуф сэд.
>скорость выполнение
Естественно, это скриптовый язык. Причём общего назначения, а не как, например lua. Хотя вот JITа нет - это да. Хотя всё это зависит от реализации.
>многопоточность
Это относится к стандартной реализации CPython, в которой некоторой заменой этому является multiprocessing.
>компилятор
Охуеть. Без комментариев.
>проверка типов
Есть рантайм проверка. А проверка при написании целиком в руках программиста. Но при долгой работе с языком это более не ощущается.
>приватные методы
Гвидо сам говорил, что
>от i_ate_god (этот ник оскорбляет чувства верующих — прим. пер.)
Интерфейсы, абстрактные классы, приватные члены, др… Почему в Python отсутствуют эти вещи?
>Гвидо: Я вижу две причины: (а) они вам в действительности не нужны, и (б) их сложно реализовать, так как отсутствует проверка типов на этапе компиляции. Python начинался как экспериментальный проект (не утверждённый или одобренный начальством, но и не запрещённый), и я хотел быстро получить рабочий прототип. Поэтому я убрал возможности, которые были не особо нужны, и которые можно отложить; также пришлось все проверки типов делать в run time. Отсюда вытекают естественные ограничения на те возможности, которые поддерживает Python. Я также не был религиозным фанатом объектно ориентированного подхода. Я хотел получить простой язык, а объектно ориентированным он стал скорее по случайному стечению обстоятельств.
Да и вообще, есть общепринятое __methodname
>паттерн матчинг
>switch-case
Есть elif. А ещё можно функций в словарь/дикт напихать. А можно ещё много чего придумать.
>хвостовая рекурсия
Куда бы она делась? Есть.
>карринг
spam1 = lambda x : lambda y : spam( x, y )
>ленивость
Есть.
>алгебраические типы данных
Они и есть то только во всякой функциональщине и экзотике. А ещё инлайн вставки делать нельзя. И к памяти напрямую обращаться. Пиздец говно язык, нинужон.
>округление результатов
Щито?
>соглашения об именовании
PEP8, нуф сэд.
Codewars.com забыли. Хотя может я чего незнаю о нем. сам нуб, 2.5 дня в теме, делаю все подряд на 8kyu
Ты пробовал? Как успехи?
Парни, дайте линки на годный редактор с подсветкой, и чем вы запускаете? Скачал уже три штуки, ни один нормально не работает.
Накати на него 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 всегда будет требовать как минимум указать год-месяц-дату
может ещё чего есть, без даты?
Финансовые пирамиды.
> JITа нет
pypy же
> компилятор
http://nuitka.net/
> карринг
functools.partial
> инлайн вставки делать нельзя
можно https://pypi.python.org/pypi/instant
Лучше поешь хлопьев раби
http://pastebin.com/aDvFrhXD
Кое-что можно было написать незачительно компактнее, но было впадлу. Задача - типа найти наименьшее расстояние между точками в лабиринте, а потом прописать путь текстом.
Чувствую, что я ебучий говнокодер, и мне ничего не светит. Что думаете?
Сейчас не то праздничное затишье, не то рынок перенасыщен быдлокодерами, но на мое резюме, например, полтора отклика за три недели пришло. При том, что пару лет назад меня HR-ы находили без всякого опубликованного резюме и предлагали варианты. Впрочем, возможно это конкретно у меня резюме какое-то зашкварное, хз.
Зачем тебе учить скриптовый динамический недоязычек если ты уже знаешь професианальный язык востребованый на рынке?
для фриланса ...сейчас я по состоянию здоровья не могу кодить в офисе...поэтому нужен язык на котором я смогу зарабатывать дома
>кодить в офисе
Всегда с этого проигрывал. Ехать в ссаный офис чтобы стучать по клавиатуре, когда точно такая же клавиатура со всем необходимым есть дома.
p.s. я абсолютно серьезно. на питоне очень мало фриланса предложений, а желающих поработать море.
где ты вообще искать собрался фриланс этот? на upwork?
фриланс площадок полно включая западные
Ну питон ты в любом случае можешь изучить, попробовать по крайней мере. Пригодится.
Если программировать умеешь это просто - почитай tutorial на оф сайте.
Ну как бы в android studio есть эмулятор. Да и можно android x86 запустить в том же virtualbox.
Если знаешь java тем более.
Ок,попробую ...
Ты делаешь сферические задачи в вакууме. Без промышленного опыта на любом языке ты не нужен, особенно сейчас.
Части заказчиков вообще наплевать на чём ты и как будешь делать. Уже несколько раз писал, что вкатился во фриланс слегка, нашлись постоянные заказчики. Правда последнее время я отклоняю их предложения, ибо задачи не особо интересные.
Вкатывайся на самую низовую работу в IT: тестировщиком и т.д. Пили что-то в интересной для себя сфере на актуальной технологии, через год меняй работу и показывай это на собеседовании.
vim
1. Tools - Build System - Python
2. helloworld.py > print('hello, world') > Ctrl+S
3. Ctrl+Shift+B
4. Profit
Сборщик чего?
>pypy же
Ну я подметил про реализацию.
Не знаю, как оно работает, но тот же py2exe просто пакует исходники всех библиотек и твоего пакета в zip, кидает .dll в папку и интерпретатор туда же. Так что фактически никакой компиляции не происходит. Эта штука, как и все остальные, скорее всего делает так же.
Открываешь раз: https://www.twilio.com/docs/tutorials/walkthrough/appointment-reminders/python/django
Открываешь два:
https://www.twilio.com/docs/tutorials/walkthrough/appointment-reminders/python/flask
Проходишь оба и идёшь нахуй учить что тебе там понравилось
Как видишь, все просто. Можно Ctrl+B юзать, кстати, это я проебался. Просто сам я всегда руками в сосноли запускаю из-за virtualenv и необходимости скармливать различные параметры.
Из MVS перекатываться тяжело, скачал и пиши код, а тут надстроек ещё дохуя для каждого редактора, не ожидал подобной ебли.
А библиотеки банально import'ом подключаются, или тоже ещё со скриптами и зависимостями ебаться придется?
Да, просто импорт. Если third-party заюзать хочешь, хуяришь pip install lib_name в консольке и тоже можешь импортировать сразу.
Тащемта это вендопроблемы, а не питонопроблемы. Такие проблемы есть с каждым языком кроме может быть джавы и сисярпа. А на какой-нибудь ноде или руби ты вообще хер под вендой нормально попишешь. Добро пожаловать в реальный мир.
>>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).
Ну ок. Всё равно на костыль похоже.
> заказчиков вообще наплевать на чём ты и как будешь делать
Очень странно. Это видимо какие-то мелкие задачи.
Иначе заканчик будет думать - а что будет если ты пропадешь и надо будет найти кого-то кто будет это дорабатывать. И в этом отношении экзотические языки типа питона очень проблемны - мало специалистов, просят много, нос воротят.
Тут рулит индустриальный стандарт - PHP
нода вроде давно под виндой работает.
Заскринил.
Теперь вопрос: Как лучше сделать собственно используемые эвенты - передавать параметр event_type, или наплодить кучу классов-потомков, типа SmthEvent(event) ?
С одной стороны система с event_type выглядит более гибкой, т.к. в строку фактически можно засунуть что угодно, плюс не надо заморачиваться с copy-paste класса-евента, тем более, что он кроме инита ничего и не умеет.
С другой стороны система с кучей классов выглядит стройнее и логичнее. Всё наглядно разграничено и тут уж точно ничего не напутаешь при её использовании.
Хотя есть ещё третий вариант: целиком забить на классы и представлять эвенты просто диктами, без какой-либо обёртки.
Собственно, хотелось бы услышать мнение анона, как он бы это сделал. И возможно то, как это обычно делается.
1) Так ты описываешь набор имеющихся событий. А с event_type ты, если заранее не напишешь их список или т.п., придётся по всему коду выискивать.
2) Можно задать параметры по умолчанию. Хотя для event_type можно запилить наборы диктов типа SmthEvent = {event_type:"Smth", params=(0, 1)} , что решает проблему описания, однако это выглядит почти так же, как и куча классов.
> заранее не напишешь их список
Что мешает?
Сделай
EVENT_TYPES = ((1, 'foo'), (2,'bar'))
Потом ты сможешь их комбинировать, чтобы создать маску если тебе например надо повесить обработчик сразу на несколько евентов.
А с параметрами по умолчанию можешь дикт сделать типа
EVENT_DEFAULTS = {'Smth': (0,1), 'Event2': (2,1)}
Типа как-то так. Так удобнее доставать будет оттуда их
Найди мне shared хостинг с поддержкой питона.
Найди мне что-то сравнимое по популярности с wordpress или drupal. С таким же количеством шаблонов и инстансов.
питон хипстерский язычок типа ruby.
Нет, ну смотря для чего. Какие-то наколенные скрипты может делать, perl намного лучше, но у него выше порог вхождения.
Ну, если тебе норм делать 10 однотипных быдлосайтов в скотоконторе каждый месяц и ставить их через фтпшку на шареды - тебе не по адресу.
Зачем ты так ненавидишь анона? Вот выучит он этот язычок по твоему совету и будет сидеть без работы как все в этом треде.
А что ты хотел? Кушать то что-то надо.
Но можешь да на локалхосте делать суперподелки никому не неужные.
Бизнесу нужны "10 однотивных быдлосайтов". Или крупные проекты типа facebook, а они все делаются на php, java или c++. В некоторых случаях(суровый энтерпрайз) на c#/asp.net
Не толсти, заебал.
Это такой современный паскаль с бонусами: во-первых дохуища всего на нём уже написано, значит лепить велосипеды веселее и быстрее, во-вторых широта применения - разве что драйверы человеческие на нём писать нельзя. Скорость тоже бывает сносной при простой встроенной возможности использования сишных библиотек.
Короче я тупо не вижу ни одной причины чего бы и не выучить, как минимум для себя он точно найдёт применение шире пёрла/баша/прости господи пхп
Работаю сторожем на складе. На работе много свободного времени и я могу писать на питоне на смартфоне.
Какой еще зеленый?
Работа норм. Embedded, госконтора, всё, что можно пишу на пифоне, нраится.
Планшет с клавиатурой пронеси.
смартфон же быстро заряд теряет
Джанганы. А где ВЫ делаете всякие проверка на вьюшках, мол, верность переданного PK для инишиала формы.
В методах get, post или таки dispatch?
Ты не понял. Допустим, у нас есть категории тем блога/форума/неба с аллахм, считай разделы. При выборе раздела мы формируем ссылку "написать тему". И дабы не утруждать пользователя выбором категории и списка мы за него должны проставить инишиал. Чтобы его проставить мы кваргом передаем в урлу pk категории.
Т.е. CreateView получает дополнительный параметр, который сама джанга не отрабатывает. А верность этого самого pk (чтобы юзер не влупил 666, к примеру) мы должны проверить. Так вот, красивее проверять в dispatch, или в get и post?
Я к тому, как вы относитеть к засорению диспатча.
Там вроде есть get_initial метод, в нем можно дернуть параметры из self.request...
http://stackoverflow.com/questions/17191778/django-createview-with-pre-populated-and-uneditable-fields-specified-by-query-s
как тут делают.
Но ты я так понимаю хочешь чтобы ошибка была, если такой категории нет.
Вот тут подобное в dispatch делают
http://stackoverflow.com/questions/5607205/how-can-i-make-a-generic-class-based-create-view-for-a-model
Тут dispatch находит тот самый объект, переданный через дополнительный параметр
На быдло, сосач.
Djangobook -точно хуйня ебаная, если ты пытаешься по ней. Лично после Лутца и документации нихуя не понятно, во многом потому что не приводятся сразу результаты.
А самое главное, потому что я не знал ничего про CSS, HTML, SQL и тд.
Стоит ли овчинка выделки с 5й версией, или не стоит ебать себе мозг и установить pyqt4 на 2.7?
Вообще кто-то смог установить pyqt5 на 2.7 или на 3.5?
Вообще джанго очень высокоуровневая и навороченная хуйня. Когда я ей начал пользоваться я уже много лет делал сайты на cgi/perl потом на php. И имел дело с ORM, MVC фреймворками, шаблонизаторами и прочим. т.е. что там и для чего было очевидно сразу.
Думаю лучше начинать с чего попроще, а не сразу с джанги.
Уже не помню, но пришлось какие-то то ли конфиги, то ли мейкфайлы руками править. Правда всё гуглилось неплохо. Но всё равно тоскливо.
изи для линуксобога
У меня упорно не видит qmake, хотя путь в PATH прописан. И по этому пути он есть.
Вместо программирования сижу и ковыряю какую-то хуйню уровня "после дождичка в четверг 5 раз постучите в бубен и 4 раза прокрутитесь вокруг своей оси в тройном сальто назад."
>>625269
И все работает?
То есть, если я продолжу сношение - меня не наградят необъяснимыми хуйпойми багами?
Разве у pygtk есть аналог Designer'а? Хочется уделять минимум времени на поклеп интерфейса.
Вот джанго, пока все действия в тутуриалах что я видел - делаются с:
статичные файлы или шаблоны приложения - тут всё понятно, сюда срать выводом
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="{....
Ну и? models определяет структуру данных в БД. И всё.
Потом ты с этими моделями работаешь из views
И куда тогда мне код писать?
Ну в смысле вот захочу я инстаграмм делать с этой галереей, через PIL изображение пропускать - где мне эту фигню коннектить? во views?
Хм. Вообще такая обратотка будет занимать слишком долго скорее всего и придется складывать обработку изображений этих в очередь какую-то и обрабатывать отдельным процессом.
А так - да. Можно сделать метод наложения эффекта в модели, а дергать его из views.
Ладно, давай реальнее.
Есть горстка плагинов по добавлению в django google maps'ов, добавлению на них - своих меток и из коробки юзеры-группы
хочу добавить гугл карту, на неё - такие-то метки для такой-то группы юзеров, такие-то для такой, такие-то вообще для одного конкретного юзера.
в модель прописывать связь вывода группа юзеров - группа меток, пользователи - метки
потом через views их дёргать, так?
Я работал с php, js, c/c++, perl, java, но ничего изумительнее питона и джанго не встречал.
Конечно. ruby on rails. grails. asp.net mvc.
Это чувак сам себя записал и выложил.
Кстати, я недавно проходил интервью по скайп и меня сразу предупредили что они записывают.
Да всё работает. Я делал фриланс проект под няшным линуксом и в ус не дул. А как дошло дело до деплоя (у заказчика венда) то обосрался, ибо бинарников pyqt5 под 3.5 не было, а я уже заюзал модный async/await. Так что пришлось собирать самому, но в итоге бинарник есть и всё работает. Рекомендую под это дело виртуальную машину делать, ибо засирается всё баснословно. Ну, и пользоваться для сборки удобнее и не сломается ничего само по себе.
Ну логично тогда, чё.
Просто мне казалось что не может быть все так просто.
программирую месяц, все это время на Питоне, учу джанго 2 дня
При чем тут vagrant?
Нет, одна среда для сборки бинарника для pyqt5.5 python3.5. Да и то, пока бинарные сборки не вышли от ривербанка.
2.90 of 5
Это при том, что я на две трети вопросов гуглил, хоть и моментально находил ответ, но всё же.
Двачую.
Сам недавно начал учить питон, хочу поплотнее научиться парсить разные данные с веб-страниц. Нашел на фл задание с эти урлом, взял просто попрактиковаться, но ничего не выходит. Помоги, плиз.
http://socialblade. com/youtube/top/500
Ну ёбаны в рот блядь, вы, нахуй, с доступным сосачем совсем гуглить разучились. Просто пиздец. Почему, блядь, нельзя в гугле вбить 2 слова "urllib 403", перейти по первой ссылке и найти ответ, а? Бляяя, как же у меня бомбит. Ну что за пиздец.
Для кроссплатформенности питон (да и любой кроссплатформенный софт) конвертит вендовый обратный слеш в прямой. Потому что во всех ОС для указания пути используется прямой слеш, и только в венде обратный, и легче подставить костыли одному инвалиду.
Скорее всего из-за robots.txt или типа того.
Спасибо, анончик, теперь буду знать, что именно гуглить при ошибках.
Проблема была в том, что сайту не нравится питоновский User_Agent.
Как показывает мне практика прочитать в 4-5 книгах по одной теме за вечер-два куда круче чем одну книженцию целиком.
Короче читай по порядку, если что в какой теме не ясно - полистай ещё какой источник информации и ещё чего найдёшь.
А так читал обе. Обе "типа лаконичное" говно без задач. И Learn Python Hard Way с Доусноном туда же.
Если хоть чего по кодингу уже знаешь - сразу читай Think Python и попутно всякие Automate the Boring Stuff и всякое говно отсюда пиши http://blog.programmersmotivation.com/2014/07/09/list-projects/
Последняя, что я видел, была по 3.2. Да и какая разница? Будешь к принтам скобки дописывать, да и все.
Можете привести типичные ситуации в вебе когда используется celery? А то сейчас ищи работу и в некоторых вакансиях сельдерей проскакивает как требование.
Ну например после регистрации письмо надо отправить. Это лучше делать в отдельном процессе, а не в веб сервере который заблочится от этого. Поэтому эти письма складываются в очередь и рассылаются отдельно.
Или обработка каких-то файлов - аналогично.
Понял, спасибо.
> Ну например после регистрации письмо надо отправить. Это лучше делать в отдельном процессе, а не в веб сервере который заблочится от этого
Синхробыдлопроблемы.
Картинки тоже будешь обрабатывать асинхронно умник или вычисления какие-то делать?
Ну отправить письмо можно и из синхронного кода тысячью способов. Например тупо вызвать процесс которые письма шлет типа sendmail какой-нить.
Никто не говорил, что нельзя.
Вышеупомянутое письмо, какие-то периодические действия, асинхронные задачи, запускаемые пользователем.
>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
Спасибо, анон. Я уж испугался, что тут реакция на вопросы нью такая же, как в /б.
Читаю в общем Think Python и мне там объясняют как значения переменным присваивать, чего это такое-то?
Что это за ребусы? Я же новичок, ничего не понимаю в твоем коде. Как мне сделать, чтоб работало правильно?
В чем проблема с принтом и его скобками?
Теперь это функция, которая работает, как и другие функции и методы, а не МАГИЯ.
Со скобками можно писать и в 2.7.
И так и надо учиться писать, потому что обратная совместимость и вообще рано или поздно придется.
'printHello,world!
перед принтом только exec() нехватает
хз
Спасибо огромное!
Изучай третий питон. Второй протухшее говно и привьет только плохие привычки.
Проблема касается PyQt4 и центрирования окна по центру.
Есть говнокод
http://pastebin.com/cUU8856V
Левая и верхняя границы center 1 проходят точно по центрам экрана (я выделил их черным), если просто делить ширину и высоту экрана на два. С этим проблем нет.
Но стоит перед этим делением вычесть из ширины и высоты экрана ширину и высоту окна приложения - начинается какая-то хуйня. Если по горизонтали окно располагается более-менее посередине (хотя, там тоже есть малозаметные отклонения), то по вертикали творится какой-то пиздец.
center выходит совсем неравномерным относительно центра по вертикали. Сверху до края окна 13см. Против 12 от нижнего края окна до нижнего края монитора.
Сначала были мысли, что экран продолжается вниз и вправо, и потому можно увести за нижнюю и правую его границу курсор. Но границы center1-то располагаются точно по центру видимой области! 15 см сверху и снизу до границ окна. И формула почти та же. У center должно быть по 75 пикселей к северу и югу от этой условной линии середины, но ведь нихуя.
Я проверил даже не на одном мониторе это. И я мог бы удавить бугурт перфекциониста, если бы не видел окна приложений, которые центрировались без такой хуйни, с равным расстоянием от краев со всех сторон.
Может мне кто-то объяснить, почему неровно?
Таки дошло.
self.resize(250, 150) - это именно размер без учета рамки.
Если убрать рамку через self.setWindowFlags(Qt.FramelessWindowHint) - все сойдется идеально.
Но вот расположение окна задается с учетом рамки. В итоге нижняя граница оказывается ниже центра на размер шапки, что порождает несимметричность относительно центра.
Отсюда следующий вопрос.
А есть ли возможность узнать размеры рамки? Допустим, я захочу застелить весь экран окнами, границы рамок которых стыкуются.
Или развернуть окно на весь экран. Если тупо задать размер монитора - рамки снова все распидорасят и окно уйдет за границы экрана.
Зачем эти костыли? У QRect есть и .center(), и .moveCenter()
import sys
from PyQt5 import QtGui, QtCore, QtWidgets, uic
app = QtWidgets.QApplication(sys.argv)
win = QtWidgets.QWidget()
center = QtWidgets.QApplication.desktop().screen().rect().center()
win.rect().moveCenter(center)
win.show()
sys.exit(app.exec_())
Ну или заспавнить рядом два окна, окна которых не будут перекрываться в области рамок.
Можно методом тыка подобрать. От разрешения и темы размеры рамки не меняются, да?
А вот в зависимости от ОС?
Кто-нибудь юзал Kivy?
Ну да, куда короче и приятнее выходит. Центрируется с учетой ебаной рамки.
В PyQt4 покороче выходит, причем.
center = QtGui.QDesktopWidget().screenGeometry().center()
Что это за фигня такая? Что кроме вводных значений можно тестировать? Что вы тестируете?
Тестирование удобно для относительно больших проектов. Например, библиотек, ты знаешь как всё должно происходить и просто пишешь тесты вход-выход/оценка каких-то метрик и так далее. Это позволяет сильно рефакторить код не боясь запутаться что и где сломалось. Потому что тесты позволяют локализовать точку отказа.
Ага, т.е. смысл примерно или в рефакторинге, или в совместной работой над одними частями кода. А все эти тревис сиэл, автоматические системы тестирования зачем, какие есть и как их подключают?
Меня терзает смутное сомнение что ни в С++, ни в php таких культов из тестирований и не делали и как-то всё проще было: на тебе дебаггер и ебись. Это кажется или какая-то принципиальная разница влекущая за собой такую потребность в тестировании есть?
В PHP хуево с тестированием потому что там культура такая. Срущая на стол. В си и плюсах как раз без тестирования никак, т.к. способов наступить себе на яйца гораздо больше чем в динамикодрыснях.
Дебаг это и есть теже самые тесты, только проделанные ручками. Ну, представь, ты что-то изменил в своей библиотеке. И как убедиться, что она не сломалась. Проверять руками то место, что исправил? Так это и есть тесты.
Автоматические системы позволяют во-первых, видеть всем, что всё ок. Не просто у тебя на ноуте тесты прошли разок. Во-вторых, тестировать в разном окружении (разные версии питона и/или библиотек). В-третьих, автоматически тестировать чужие пулл реквесты.
Культа тестирования, как такого нет. Я тоже некоторых одержимых не понимаю. Где-то это нужно, а где-то нет.
Ебашил эти задачки 2 месяца, сейчас пытаюсь въехать в джангу и понимаю, что с джангой надо было начинать раньше
Мне вот тестирование очень помогает тупо правильно ставить задачи самому себе. Хотя я и нубас в программировании.
Да я пока учусь только, лол.
А вобще - http://www.obeythetestinggoat.com/http://www.obeythetestinggoat.com/
Там понимание как это делать в питоне прибивается.
Кстати книжку уже не первый раз вижу, её иногда рекомендуют при чём именно в контексте django
Ознакомлюсь, спасибо.
Для скриптов тесты не нужны. Для больших проектов:
1. Упрощение совместной работы.
2. Рефакторинг
3. Возможность разработки некоторого изолированного компонента системы. Представь - ты разрабатываешь какую-то большую систему, в которой много-много взаимодействующих компонент, которые по отдельности в принципе не работают, то есть нельзя вот отдельный компонент запустить, только в составе комплекса. Вот написал ты очередной компонент (класс), как проверить, что ты его правильно написал? Ну тесты написать, убедиться ими, что интерфейс корректно реализован правда, при интеграции все равно какое-нибудь гавно вылезете, которое ты в тестах не учел, но там уже другие разновидности тестирования подключаются
4. Тестами защищаются от регрессии. Т.е. при возникновении бага, пишется тест, который этот баг воспроизводится, затем баг исправляют, с помощью теста убеждаются, что все норм. В дальнейшем, тест гоняются наравне с остальными, чтобы убедиться, что баг опять не вылез.
> Для скриптов тесты не нужны.
Для нубасов типа меня они нужны даже что-бы "Хеллоу Ворлд" писать. Помогает мозги правильно структурировать.
и как ты эту хуйню собираешься тестировать?
принт под каждым действием, каждой переменной?
или чего?
я за свою сраную жизнь нормально по программингу единственную книжку прочитал - SICP. Не то что бы этого было достаточно, но блядь не представляю что вы тестируете так интенсивно
Ага. Но у меня мозги так стоят. Мне почему руби оказались приятными и скрипты на них я пишу щас для своих целей достаточно быстро, потому что в книге по рельсам окунали в это самое ТДД и научили ставить задачи и мыслить корректно.
> я за свою сраную жизнь нормально по программингу единственную книжку прочитал
У меня знакомый тоже в свое время. Щас читает вторую по перлу сидя в своем букинге. Все люди разные. И мозговая деятельность у них разная. Кому-то нужно это все только на больших проектах, а кому-то желательно сразу.
Ну взять, например, небольшую программку, логика которой разделена на 3 модуля.
Которые состоят из автономных функций, которые принимают некие объекты, проверяют их и используют в вычислениях, и возвращают результат, который передается как аргумент в другие функции.
Тесты могут проверять только аргументы и возвращаемый результат, например. Что же там будет в теле функций - похуй, например, можно будет переделать.
Тут же без проверки каждой такой функции после написания все распидорасит к хуям при первых же запусках main.
Проверять прямо в main неудобно, особенно, если код из другого модуля запускается не сразу, а через час, например.
Можно добавлять декораторы к потенциально бажным функциям. Которые будут запускаться только при определенном событии. Глобальная переменная test = True, например.
А там можно отслеживать скорость выполнения, например, число вызовов, взаимодействие возвращаемого с другой функцией и прочую оберточную логику. Добавлять или изменять атрибуты функции или класса на тестовые значения, независимые от других условий, например. Чтобы не пидорасить оригинальный код.
Нет ебли с комментированием и марательства оригинального кода, при определенном и пердольном подходе. Чем больше программа - тем полезнее.
Ну т.е. оно логично всё, без пизды, просто от питона далеко пиздец и хуй проссыш вообще за что хвататься. Делаю туториалы один за другим пытаясь нащупать суть, но как-то неверноятно тупо идёт.
Может на русском по джанго почитать есть чего? 2 scoops of django уже читаю, но башни моей не очень надолго хватает понимать иноземный язык, особенно в совокупности с непониманием ещё и описываемого предмета
Да нет там ничего сложного. Ну, может, кроме необходимости постоянно оверрайдить save-методы или туда-сюда сигналы слать, чтобы это говно сохраняло объекты моделей в нужном порядке, не проебывая связки PK-FK.
Ты что-то о SQL, HTML/CSS знаешь? О классах и атрибутах? О HTTP? Если туго с этим - нужно сначала раскурить это. Без этого там ничего не поймешь, только копировать примерчики по шаблону и сможешь.
Мне кажется, там вся суть в святой троице urls\views\models. Остальное свистелки и перделки для них.
>Может на русском по джанго почитать есть чего
Оф документация всегда лучше. Есть переведенные.
http://djbook.ru/rel1.8/
Djangobook есть еще, переведенная, но для старой версии.
В том и дело, что туда-сюда знаю, хоть конечно и с переменной глубиной.
Про святую мвц-троицу понятно, хотя бы на уровне идеи, просто обилие хуилиардов встроенных методов что бы подтереть жопу не только сверху-вниз для мальчиков, снизу-вверх для девочек, но и слева-направо->снизу-вверх для смелых любителей необычного.
Что бы админка выводила с фильтром какую-нибудь хуйню - просто допиши в классе в 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') и практического применения этому я тоже пока ввиду своего куцего опыта не вижу
В том и дело, что туда-сюда знаю, хоть конечно и с переменной глубиной.
Про святую мвц-троицу понятно, хотя бы на уровне идеи, просто обилие хуилиардов встроенных методов что бы подтереть жопу не только сверху-вниз для мальчиков, снизу-вверх для девочек, но и слева-направо->снизу-вверх для смелых любителей необычного.
Что бы админка выводила с фильтром какую-нибудь хуйню - просто допиши в классе в 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') и практического применения этому я тоже пока ввиду своего куцего опыта не вижу
Я сам только начал. Но вроде
>из views, который будет узнавать у movels хули ему делать и просить выгрести из базы данных.
Наоборот, views задает всю логику обработки. models лишь упрощает запросы к БД.
Я так понимаю, функция из views дергает нечто из models, обрабатывает, и результат подставляет в html шаблон, в котором специально обозначенные места подставляются значения из функции из views.
Вот, например, http://django-debug-toolbar.readthedocs.org/en/1.4/installation.html
Приложение прописываются в setting, затем указывается в url
url(r'^__debug__/', include(debug_toolbar.urls))
Я так понимаю, include(debug_toolbar.urls) добавляет свои троицы мвц. Уже готовые. Параметры которых можно докрутить, (через наследование или переопределение во views например, (прост теория)).
Чтобы совместить на одной странице два приложения, нужно отдельный шаблон html, в который функция из views, которая наследовала/переопределила/хзчтоеще viewsы других приложений, будет пихать свои данные.
Чисто теория. Возможно, гон нубаса.
Чутка погуглил, и там советуют копипастить всю требуху приложения и менять под себя. Неужели нет более удобного способа?
Особенно, если в приложении 100500 функций.
Модели - поля заносятся в БД, потом с этими полями можно работать как через админку, там и через ОРМ.
Админка - тут мы определяем, к каким полям имеет доступ Админ.
Вьюшки - функции, через которые модели отправляются на фронтэнд. В них определяется логика того, как будут обработаны поля моделей.
Юрл - адреса на вьюшки/админку и т.п.
Все правильно?
Как удалить все символы, кроме a-z,A-Z из строки?Кроме очевидного str.replace('1','').replace('2','')
Это слишком сложно, можно ли как-то удалить всё кроме букв другим способом?
Всё правильно.
Часть логики советуют переносить в модели. Чтобы можно было import и подёргать методы хоть прямо из пайтоншелла. Чаще всего это какие-нибудь действия типа "купить" в магазинах.
Вьюшки в джанге это контроллеры из MVC. Часто конкретные трансформации при отображении полей в хтмл происходят уже в темплейтах, а код вьюхи только вкладывает модель или коллекцию моделей в этот темплейт.
хочу наваять подобия этого шина http://jgpaiva.dcmembers.com/gridmove.html только кросплатформенное и с некоторыми своими идеями.
Оно хоть с хоткеев гоняется?
А вообще хедеры окон ловить и через винапи им пропихивать свои значения, не совсем помню как это делается, лет десять назад на плюсах в последний раз чем-то подобным занимался.
Может и хоткеями и мышкой, зажимаешь среднюю кнопку на коне и появляется сетка в которую можно запихнуть окно. Для меня эта штуха оказалась намного юзубельней чем динамический тайлинг.
>через винапи
Это понятно, но я хочу кроссплатформенности.
В окнах - винапи, никс - xlib, говно получается. Надеялся на PyQt, тем более его либы есть в этой мокропиське http://mizage.com/divvy/ которая мак/вин.
Я хотел сделать сайт на питоне но выяснилоь что хостинги его не поддерживают.
99% хостеров это php+mysql. 1% - asp.net и только 0.0001% Это маргинальные руби и пайтон.
Да нет, просто он тут уже вторую неделю вбрасывает что веб писать надо только на похапе потому что шаред хостеры поддерживают только похапе.
Да съеби ты уже, надоел. Ни разу не смешно и никакой ньюфаг на эту хуйню про шареды не купится. Они теперь даже не знают что такое шареды.
Пишешь в окошко для текста, а потом нажимаешь левую кнопку мыши на коробочку с текстом "отправить". Прям как тут, только там.
сложно. меня интересует, что нужно писать в скрипте, что обрабатывает html-форму, чтобы при нажатии кнопки, которая является html-кодом выполнялся скрипт и постил на стенку пикчу с хуем. я нагуглил только код, когда есть текстовое поле, которое обрабатывается файлом(а текст из поля просто отображается на следущей страницу), но ввиду уже указанной болезни я не понимаю как сделать, чтобы было норм
Это че, гафеха-смайл чтоли? Эти дети вк свои смайлы в имена файлов уже пихают? Лол блядь
Это копия, сохраненная 3 февраля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.