Этого треда уже нет.
Это копия, сохраненная 9 февраля 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
#2 #631510
Хоть тут с названием треда не обосрались
#3 #631555
Это конечно тупо, но мне спустя 2+ месяца ежидневного говнопитонинга только дошло почему в классе пишут __инит__ и что это вообще за хуйня ну и прочие __магические__ хуйни

Остальным слоупокам, если таковые кроме меня ещё тут есть рекомендую: http://www.rafekettler.com/magicmethods.html
44 Кб, 720x602
#4 #631584
>>631555

>magic


Прямо черная магия, настолько черная что вообще охуеть.
#5 #631586
#6 #631587
>>631586
Названия тоже к месту лепить надо. Так и конструктор магией назвать можно, и ООП, и даже Аллаха.
#7 #631588
>>631587

>Подразумевает что конструктор, ООП и Аллах не магия

35 Кб, 600x375
#8 #631589
>>631588

>Аллах


>магия

4 Кб, 170x107
#9 #631611
Хочу питонировать с вами, но вместо этого только аутирую в игори и фапаю. Что делать?
#10 #631616
>>631611
на самом деле тебе не нравится программирование, забей.
Подумай серьезно над моими словами.
#11 #631618
>>631616
А что мне нравится?
#12 #631619
>>631618
делать бочку
#13 #631620
>>631619
Я уже сделал 2 раза.
sage #14 #631621
>>631616
Я не он, но ты прав. Но щито поделать, если ничего не нравится, и надо как то зарабатывать себе на существование? В детстве в меня заложили неверные приоритеты, и теперь вместо того чтобы идти к успеху, мне милее сидение на диване как бивис и батхед, или тупое валяние дурака, как в других сортирных комедиях 90 - 00-х гг.
#15 #631622
>>631621
Освой рабочую специальность. Сварщик, электрик. Или там водителем стань.
Или на север езжай вахтовым методом работать.
1096 Кб, 356x200
#16 #631623
>>631621
Ты - это я. С утра нагенерил идей для стартапов, весень день прокрастинировал, вечером - пикрилейтед.
sage #17 #631625
>>631622
А это тяжело и рутинно. Кто ж захочет имея полное образование погромиста внезапно менять профу на рабочую, да притом тяжелую? Я распиздяй, но не идиот.
#18 #631626
>>631625
Работа быдлокодера тоже рунитта. И если кодить не нравится это вообще ад и стресс жуткий.
sage #19 #631627
>>631626
Сидение и капчевание за компом ад и стресс? Ну ну.
#20 #631628
>>631622
Это не ты та местная истеричка, который боится, что ньюфаги отнимут его доширак?
#21 #631629
>>631627

> капчевание


хуй там. за капчевание не платят. скорее всего тебя ждет работа в потогонной конторе какой-нить где надо на потоке кучу проектов делать и на тебя пять менеджеров орет.
62 Кб, 800x530
#22 #631630
>>631628
да, это я.
sage #23 #631631
>>631629
Такая работа ждет нормальных кодеров. А быдлокодер только будет сидеть и капчевать 5/7. На любой работе. Я побывал на разных и везде капчевал 90% (в среднем) рабочего времени в среднем, и получал за это заслуженную минимальную зп.
#24 #631634
>>631631
Эникеил за опыт?
sage #25 #631635
>>631630
Не бойся на счет нюфань. Если кто то и будет способен отнять твой дошик, это так или иначе случится. А если не плющит человека быть погромистом, то даже если на каждом столбе будут висеть объявы про бесплатные курсы "стань сеньором помидором за 2 недели", он все равно не пойдет на них.
sage #27 #631638
>>631634
И эникеил, и погромировал, но все как то через жопу. У меня есть огромная простыня с моим "рабочим опытом" тут в одном треде, если интересно, могу поискать.
#28 #631639
>>631635
Да я не боюсь ничего. Просто со мной в конторе брали иногда джунов полных нубов которые очень просились из жалости. Готовы были им помогать, объяснять если че. И почему-то всегда они просто сидели и тупили. Или просто втыкали в код безрезультативно или капчевали. В итоге их просто увольняли и драма была.
#29 #631642
>>631638
Не интересно, потому что у меня так же. Опыт какой-то есть, но для достойного резюме он не годится.

>>631635
Я где-то слышал высказывание, которое мне понравилось: стань лучшим в любой области где ты хорош. А если я люблю задумчиво вдыхать амбре своих яиц, которые не подмывал 3 дня, как в этой области стать лучшим?
sage #30 #631643
>>631639
Все правильно делали. Рано или поздно такие отсеиваются. Если конечно у вас не гос контора, которая существует как качалка денег из бюджета, а работники в ней только для прикрытия.
#31 #631645
>>631631
Нет, как раз нормальный кодер может подыскать себе непыльную работенку, где позволить капчевать, а в 20% оставшегося времени быстро всё сделает.
Потогонная система во всяких веб студиях и аутсорсах там дофига проектов и везде что-то делать надо. И каждый день-два что-то надо сдавать какой-то результат. Аналогично если какой-то скрам внедрен.
sage #32 #631647
>>631642

>не подмывал 3 дня



Это вообще ни о чем.
#33 #631648
>>631643
Ну а нахрен вообще мучиться если это "не твоё". И сами страдают и коллектив как бы подводят.
Можно в техподдержку пойти или там эникеем или даже админом. Или тестером.
32 Кб, 640x496
#34 #631649
суки пиндосы
sage #35 #631650
>>631645
А известно ли нормальному кодеру, что на работенках где можно капчевать и делать все по быстрому и платят копейки? Серьезно копейки. Не больше 20-30к. Нормальный кодер не пойдет на такое, ящитаю.

>>631648
Лично за себя скажу, что кодинг > админство. В детали углубляться не буду, но мне вот так легче. Ну и временами на меня все же находит желание что нибудь пописать и почитать. По работе вообще ничего не задают.
#36 #631651
>>631650

> на работенках где можно капчевать и делать все по быстрому и платят копейки? Серьезно копейки. Не больше 20-30к.


У меня всё наоборот. Я работа в типа веб студии и там было дохуя работы. Простой но дохуя и дергали всё время. Платили мало как раз типа 20, потом 30к.
Потом я работал в конторе, напрямую не связанной с программированием. Надо было их сайт и онлайн проект развивать. Там можно было делать мало, а платили в 2 раза больше.
Потом я работал в конторе где был один большой проект, госзаказ так скажем. Там тоже спешить особо не надо было, платили ещё больше и были ещё и перспективы роста до соточки если бы там дольше проработал.
Потом я работал над проектом где типа скрам и каждые 2 дня выкатывали новую задачу. Платили соточку но работой загружали неплохо, зато удаленно.
#37 #631652
>>631494 (OP)
Сап, гайз, нашел годные книжкм по full-stack python'у, как ее получить БЕСПЛАТНО, ЕВПОЧЯ?
https://gumroad.com/l/WOvyt
sage #38 #631653
>>631651
Ты описал такие должности и уровень, до которого быдлокодерам как до китая пешком. И не надо ахуительных историй, что ты просто пришел, ничего не знал и там всему научился Надо различать ещё нормальные непыльные работенки и такие работы, где от кодера нужен только диплом из шараги. В первые не попадут распиздяи, а нормокодеры не пойдут в последние.
Предлагаю завершить нашу беседу, пока не потерли весь офтоп
140 Кб, 480x408
#39 #631655
>>631649
Смузиблядок не палится.
#40 #631672
Работа для нубов есть?
#41 #631686
>>631672
Вилка есть?
#42 #631707
Еще вопрос про qt4.
Не получается привязать один метод из родительского окна к нескольким кнопкам, но находящимся в разных виджетах через
self.connect(self.button, QtCore.SIGNAL('clicked()'), parent.func)

Начинает выдавать

AttributeError: 'NoneType' object has no attribute 'func'

При привязке к одной кнопке все работает.

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

И туда же. Можно ли передавать аргумент методу в этих привязках?
#43 #631710
>>631707
А что такое parent? Объект этот существует? Почему он nonetype?

> Можно ли передавать аргумент методу в этих привязках?


Через functools.partial?
#44 #631711
>>631710
Parent - атрибут, содержащий ссылку на родительский виджет.
Уже разобрался. Я не передал self при создании новых окон. А аргумент parent в __init__ виджетов был None, по умолчанию.
#45 #631712
Сап, питонач. Я тут понял, что хоть и прогаю на питоне, но все равно его не знаю. Подскажи какой фреймворк выбрать, чтобы подтянуть скилл? ну и чтобы был востребован на рынке
#46 #631713
>>631711

>А аргумент parent


атрибут
быстрофикс
#47 #631714
>>631713
Или аргумент?
Передается же, как аргумент в __init__.
#48 #631716
>>631712
На рынке востребованы django и flask. Другое тоже но реже.
#49 #631719
>>631707
Какое же говно этот qt4.
#50 #631720
>>631719
С точки зрения пифон биндингов, конечно же.
#51 #631722
>>631716
Таки что лучше взять django или flask?
#52 #631723
>>631719
Чем не устраивает Tkinter?
#53 #631725
>>631722
Веб2пу
После него легче врубиться хоть в одно, хоть во второе
#54 #631727
>>631725
Кстати двачую
#55 #631728
>>631723
tkinter — это говно в кубе. qt5 намного лучше qt4.
#56 #631729
>>631720
Да я тоже ща глянул на доку мельком и вспомнил почему мне оно не нравилось. pygtk/pygi намного приятней.
5 Кб, 261x193
#57 #631730
#58 #631733
>>631710

>functools.partial



Может, лучше
lambda arg=argument: parent.startfunc(arg)?

Встречаются еще советы применить QSignalMapper, но писать с этим всем куда больше.
#59 #631734
пацаны, посоветуйте кокой-нибудь токой РЕСУРС по питону, чтобы мне не сидеть листать хуйню про то, как работает ебучий фор, для умственно отсталых, а чтобы сразу по конкретике поясняли за всякие более нетривиальные вещи языка.
например, как так вышло, что функция может возвращать несколько значений и как это сделать, и всё в этом духе. (может, на самом деле это тоже не менее очевидно, чем фор, но я имею в виду чтобы объяснялось что-то, чуточку более, хз, практическое что ли.) тока не говорите про документацию, охота чтоб прям пиздец сжато и тематически было.
160 Кб, 500x375
#60 #631736
>>631734
Может ты и в школе из первого класса сразу в выпускной перешел?
#61 #631737
>>631725
Спасибо, анончик
#64 #631741
>>631734

> функция может возвращать несколько значений


Это как? Ты про генераторы?
Или про возвращение tuple? Последнее это как бы одно значение.
#65 #631742
>>631733
Все-таки, охуенная штука, lambda. Я только что обошел ебучий многострочный велосипед с ее помощью, похоже.
#66 #631743
>>631742
И вообще плохо сделали, тупа, не могли прикрутить кортеж с аргументами для слота.
#67 #631745
>>631743
Да, обычно в других тулкитах и прочих библиотеках где можно вешать какие-то события, такая возможность есть.
#68 #631748
>>631745
В GTK есть?
#69 #631749
>>631734

> функция может возвращать несколько значений и как это сделать


Ты про такую фигню для умственно отсталых что ли?
def zaebis_func(x):
y = x*2
z = x+2
return y,z
#70 #631750
>>631743

> кортеж с аргументами для слота


Чё ета?
#71 #631751
>>631748
Есть
24 Кб, 596x272
#72 #631754
#73 #631755
>>631652
Там тот же автор, что и у этого курса http://www.fullstackpython.com/
#74 #631756
>>631751
Охуенно. Я уже его поклонник. Следующее свое говно склепаю на нем.

>>631750
Ну чтобы вместо
self.connect(self.button, QtCore.SIGNAL('clicked()'), lambda arg=argument: parent.startfunc(arg))

цивилизованно и чисто передать аргумент в чем-то вроде

self.connect(self.button, QtCore.SIGNAL('clicked()'), parent.startfunc, (argument)

как белый человек, а не ебаный пердолик. Тем более, что слот это просто метод, и подразумевается, что он может быть простой функцией.
#75 #631757
>>631756
Для этого есть partial.
#76 #631758
>>631757
Да какая разница
#77 #631760
>>631758
Разница в унификации и чётком разделении функций.
в qt5:
button.clicked.connect(functools.partial(yoba, "foo", "bar", baz="baz"))
#78 #631762
Как называется эта хрень, когда лист, например, передается в функцию со звездочкой и распаковывается на отдельные аргументы? Хочу почитать про этот момент подробнее, но не знаю, как запрос к гуглу сформулировать.
#79 #631764
>>631762
*args?
#80 #631766
>>631762
arguments unpacking
#81 #631768
>>631764
>>631766
Спасибо.
#82 #631822
По PyCharm'у годные видеоуроки по 3-4 минуты, очень доставляют

https://www.youtube.com/watch?v=wCJ5kiSmvUY&list=PLQ176FUIyIUZ1mwB-uImQE-gmkwzjNLjP
#83 #631837
>>631822
О спасибо. А то нихрена не знаю сочетания клавиш там и фишки.
#84 #631840
>>631822
На маке то у него нормальные шрифты в pycharm
А в прыщеговне ШГ
#85 #631843
>>631840
Я признаться чуть в ахуе как оно у него без лагов работает.
Ясен пень у меня комп динозавр-кор2дуо2ггц-8гб и хубунта сверху, но блядь неужели дело только в компе, а не жавахуете на которой на кой-то хуй всё подряд сейчас пишут?
#86 #631849
>>631843
Ну у меня оно термимо тормозит(i5, 8гб ноут)
Вообще для питона ide не очень то и нужна. Разве что когда очень большой и незнакомый проект.
#87 #631854
>>631843

> подразумевает, что в природе существует язык/платформа быстрее джявы, кроме компилируемых в натив

#88 #631862
>>631854
Жава говно для педиков, уже больше 10 лет сколько раз сталкиваюсь, столько и думаю об этом. Искренне желаю ведроиду перейти целиком на пидерастичное гоу, свифт, хоть сраный обжект си
#89 #631865
>>631862
Эта боль скриптомартышки.
#90 #631867
Вообще ява эта ещё фигня. Вот эта новая мода делать ебаные текстовые редакторы на яваскрипте внутри движка браузера.. Типа brackets, atom
#91 #631869
>>631867
Не так давно ещё люди жаловались что емакс много оперативки жрет и целых 30 мегабайт на диске.
#92 #631872
в Qt4 есть аналог after из tkinter'a? Если только костыли через threading.Thread?
#93 #631873
>>631869
А еще запускается долго. Приходится демон держать и коннектиться через emacsclient
#94 #631874
>>631872
Конкретнее говоря, нужно создать виджет, и на нем отобразить данные, которые создаются от 2-30 секунд.
При этом, во время этого ожидания виджет должен быть уже создан и активен, чтобы была возможность потыкать кнопочки, например.
#95 #631876
class CustomWidget - допустим, у него есть метод, который при вызове запускает парсер сайта, и отобржает на виджет.

Если запускать метод из __ini__ class CustomWidget - все зависает на кучку секунд, и потом виджет создается с уже готовыми данными. Так и должно быть.

Казалось бы, нужно сначала создать виджет, и после вызвать этот метод извне.
Но вызов метода из родительского окна, после setCentralWidget(CustomWidget(self))
дает тот же эффект.
#96 #631879
>>631865
Чем жява отличается от пифона в этом плане? И там и там виртуальная машина.
#97 #631881
>>631874
QThread конечно же.
#98 #631882
>>631879
В java jit. Настоящий и очень продвинутый.
И она не динамическая и со строгой типизацией и прочим.
#99 #631885
>>631879
Программу на жабе можно определить не смотря на сорцы, просто по всратому внешнему виду, прожорливости и тормозам.
#100 #631886
>>631882

> она не динамическая и со строгой типизацией и прочим


Это не имеет отношения к виртуальной машине. Есть clojure, например.
#101 #631890
Пайтоны, помогите идиоту. Как рекурсивно переписать
def f(x, n):
return (x n)/n
#102 #631891
>>631890
Блджад
def f(x, n):
return (x n)/n
#103 #631893
>>631879
Тем, что раз в 50 быстрее

>>631885
Повторно уринировал мартыхана.
37 Кб, 500x289
#104 #631894
Первый раз врываюсь в тред на двачах, не хуесосьте сразу.

Хочу написать ОРМ на питончике (для диплома). В общем, головой понимаю, что должно быть и как надо сделать, но целостности картины нет. Подскажите какой-нибудь гайд или книгу, где эта хуебень разбирается.
#105 #631896
>>631893
У тебя там фабрика по производству фабрик по производству урины? Иди сделай еще десяток, жабадаун.
#106 #631898
А Flask-Admin это типа генератор по бд и моделям админки типа Django? Или оно не автоматическое?
#107 #631901
QT не бесплатный, а я нищеброд начинающий, хочет подсветок, какой использовать ide использовать для разработки
#108 #631911
>>631734
Официальную документацию. Серьёзно.
#109 #631912
>>631901
Ебать допрограммировался.

>QT


>не бесплатный


>QT - ide с подстветками

#110 #631913
Что скажете насчёт Pyramid?
#111 #631915
>>631881
А разве в PyQt есть QtConcurrent? Более низкоуровневое я не потяну пока.
#112 #631922
>>631912
писать на Ninja?
qt же не бесплатный там 30 дневная подписка
помоги анончик
#113 #631923
>>631915
Кроме того не хотелось бы ради того, что я через threading.Thread могу сделать в одну строчку, через QTread делать чуть ли не на целый модуль.
#114 #631924
>>631922
Вроде Qt с 4й версии есть в open-sourse версии. Для некоммерческого использования уж точно. Смотри ниже 30-дневной коммерческой на сайте
#115 #631929
>>631893

> Тем, что раз в 50 быстрее


Все критичные к скорости участки пишутся на си, ващет.
#116 #631937
>>631929
У питоноблядей да, как раз по той причине, что я написал выше
94 Кб, 503x711
#117 #631940
Проигрываю с этой бомбящей жабы. Дегенерат с ПХП и шаред хостингом сменился на жабанетормозит.
#119 #631946
>>631923

> я не потяну пока


Пока.

> целый модуль


Один класс в десять строчек.
#120 #631948
>>631944

>пок-пок синтетические бенчмарки


А теперь сходи и посмотри как пишут жавагоспода в реальности
#121 #631949
>>631937
Ну, это цена за динамичность и выразительность. Не бывает серебрянной пули.
#122 #632044
>>631876
Блокируешь же гуи тред. Тебе надо создать этот виджет изначально пустым, потом через сигналы и слоты собственно отправлять/получать данные из отдельного треда и уже заполнять свой виджет.
#123 #632074
>>631894
Problem Solving with Algorithms and Data Structures
Не гарантирую что то что ты ищешь гарантированно в этой книге(не читал ещё), но полистай, её очень хвалят да и по смыслу вроде подходит

En http://interactivepython.org/courselib/static/pythonds/index.html
Ru http://aliev.me/runestone/
#124 #632149
>>632074
Счастья тебе.
#125 #632234
>>631555
Ну а по-русски объясни тогда? В чем фишка "меджика"?
sage #126 #632251
>>632234
хуйта, реализующая у себя в интерфейсе меджики, ведет себя подобно встроенным типам как перегрузка операторов в крестах, только шире
#127 #632258
>>631894
Тебе надо реализовать какой-нить паттерн типа
https://en.wikipedia.org/wiki/Active_record_pattern
https://en.wikipedia.org/wiki/Data_mapper_pattern
#128 #632259
>>631894
Вообще оче интересная задача. Я когда-то фор фан написал пару орм.
#129 #632265
>>631924
qt для опенсоурс проектов всегда был бесплатный.
#130 #632267
>>631948
В реальности на java пишут очень сложные гиганстские проекты которые на чем угодно будет тормозить.
В том же pycharm куча анализаторов кода, эвристик всяких. Если их отключить - всё будет летать.
#131 #632275
>>631725
Но там же второй питон. Что есть под третий?
#132 #632284
Как отличить второй питон от третьего?
#133 #632290
>>632284
По номеру
#134 #632292
>>632275
Боттл
#135 #632315
>>632284
По print()
#136 #632353
>>632267

>Если их отключить - всё будет летать.


Тогда и пайчарм нахуй не нужен
2 Кб, 198x164
#137 #632360
>>632353
Эт да))
#138 #632389
http://www.labirint.ru/books/311244/ норм или нет?
#139 #632455
Питоны, а как вы относитесь к DI? Заметил что многим похую DI они во всю используют monkey patching. Приятно конечно сосредоточится на написании кода а не на хуймиллионе фабрик/инъекторов, но как дела с тестированием?
Аноним #140 #632459
>>632455

>monkey patching.


Динамика, сэр. Можно все замочить в рантайме.
#141 #632460
>>632455
шо це таке
#142 #632506
>>632455
Dependency Injection не имеет смысла в питоне.
Точнее, не имеет смысла выделять это как какую-то особую технику. Динамика же + условные импорты, например, что ещё тебе надо?
#143 #632508
>>632389
Для самого начала норм. Лучше, правда pdf навернуть. Бумажный вариант неудобный, бумага говно и столько денег не стоит.
#144 #632519
>>632455

>DI


>monkey patching


Чёт ты перепутал тёплое с твёрдым. DI это прежде всего отказ от инстанцирования зависимостей внутри класса. Зависимости просто приходят в конструктор, тем самым позволяя легко их подменять, в том числе на мок-объекты для тестов.

Манки патчинг, несмотря на негативное восприятие большинством этого термина, не является чем-то особенно плохим. Конечно строить ОРХЕТЕКТУРЫ на нём нельзя, но пофиксить какую-нибудь библиотеку изредка таки можно.
#145 #632536
>>632519
Пишем без DI, в тесте мокируем зависимость манки-патчингом, profit - DI вроде как и не нужен. В этом смысле.
#146 #632540
>>632508
Я больше не для себя даже, а сколько для мамы. Что-то фундаментальное на 1000-2000 страниц ей точно не подошло бы. Хотя думал и сам прочесть, так как недавно щупал питон и мне он понравился.
#147 #632542
Пацаны, как отсортировать даты в таком виде?
6 Jan @ 4:03pm
8 Jan @ 2:17pm
9 Dec @ 4:00am
9 Dec @ 5:14pm
9 Dec @ 5:28am
10 Jan @ 2:55pm
10 Jan @ 4:21am
10 Jan @ 7:14pm
12 Dec @ 7:48pm
12 Dec @ 7:50pm
12 Jan @ 3:32pm
13 Dec @ 3:43pm
13 Dec @ 5:02am
13 Dec @ 5:24am
14 Jan @ 5:17pm
15 Jan @ 5:29am
21 Dec @ 3:56pm
21 Dec @ 9:40am
#148 #632544
>>632542
В каком виде у тебя даты? datetime?
#149 #632546
>>632544
Это именно текст. Парсю сайт.
#150 #632547
>>632546
Ты ты их перегоди в даты, отсортируй и потом можешь обратно в текст перегнать если надо.
#151 #632561
>>632542
https://ideone.com/3J0NJx
мимоговнокодер
#152 #632562
>>632508
А есть какой-то ликбез-подборка в формате киндлоблядей? Пдф без текста в исходнике читать невозможно.
#153 #632602
>>632561
немного улучшил твой код
https://ideone.com/0J9rdk

мимо питонер с двухлетним стажем
58 Кб, 587x614
#154 #632658
Неделю ебал вола пытаясь понять как работает ебучая Джанго, нихуя не врубался, злился и считал себя аутистом.
Поставил фласк и буквально спустя 3 минуты первого попавшегося туториала врубился как оно всё в нём работает и тд.
Жаль что для фласка нет автогенерируемой админки из коробки и прелестей автоматического "ну а в бд-из бд оно как-нибудь само", но это мелочи на фоне того что блядь всё остальное ОЧЕНЬ ПРОСТО
#155 #632677
>>632658
А что с джангой сложно?
#156 #632678
>>632536
Нигде такого не видел.
#157 #632682
>>632677
Да может и ничего, но "с наскока" зайти не удалось, а читать на иноземной мове 2 scoops of django мне было очень лень, при чём мову-то я на болтательном уровне знаю, но забивать голову и переводами, и самой джангой выше моих сил.
А тут пиздык-пиздык вьюз.пу всем рулит и педалит безо всякого говна, хочешь - модели припиздячьивай, хочешь - хуй забей, вариантов масса
и да я разумеется понимаю что это не только самый большой плюс, но и самый большой минус
#158 #632683
>>632682

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


Опять охуительные истории.
#159 #632684
>>632683
У тебя такого не бывает? Тебе похуй на каком языке читать, оба нагружают башню одинаково? Молодец, хули, завидую тебе!
#160 #632687
>>632682
Собстивенно в django тебе тоже только urls.py и views.py нужны, остальное не обязательно. Да и вьюхи ты можешь в самом urls.py задать если очень хочется, тогда и views.py не нужен.
#161 #632689
>>632684
Мне проще на английском техническую хуйню читать. Потому что при переводе надмозги часто неправильно переводят и гадаешь что там в оригинале имелось ввиду.
32 Кб, 500x375
#162 #632691
>>632683
>>632682
Платиновые отмазки знающих мову, по две рандомных отмазки на тред:

Мову то я знаю, но на родном читать приятней
Мову то я знаю, но боюсь ошибиться в терминах
Мову то я знаю, но боюсь неправильно понять
Мову то я знаю, но лень переучивать термины
Мову то я знаю, но я патриот и читаю только на русском
Мову то я знаю, но я уже начал на русском и будет путаница
Мову то я знаю, но учить питон и доучивать мовву одновременно - сложно
Мову то я знаю, но я устал
Мову то я знаю, но не хочу забивать голову
Мову то я знаю, но мне лень напрягать башню
Мову то я знаю, но ...
#163 #632692
>>632687
Может и так, но в совокупности оно всё равно ебануто получается.
Всё джанго держится на каких-нибудь тайных атрибутах классов, из которых построено, и в итоге тебе постоянно надо лепить хуйню типа "хочешь в админке картинки к ImageField? - ПРОСТО БЕЗ ЗАДНЕЙ МЫСЛИ ДОПИШИ ВОЛШЕБНУЮ ПЕРЕМЕННУЮ ImageField.listview= True В КЛАСС и всё нахуй чудом станет как и задумывалось.
А хоть где брать список волшебных переменных инб4 сорцы - хуй знает.

>>632691
Блядь, ну очевидно же что ни по питону, ни по фреймворкам инфы на русском недостаточно и один хуй приходится читать на мове. Анальную клоунаду разводить тут удумал, ишь какой.
#164 #632693
>>632692
Ничего волшебного там нет и всё описано в документации.
#165 #632695
>>632693
Энивей, я свято и не безосновательно (вкатился же) верю что во Фласк вкатиться проще чем в Джангу.
Скорее всего Фласком я не ограничусь, и спустя какое-то время снова попоробую ворваться и в Джангу тоже, но пока мне и фласка "за глаза".
#166 #632696
>>632695
А какую ты orm использовать будешь? Потому что обычно берут алхимию а она сильно сложнее джанговской.
Формы? wtforms какие-нить? Там магии хватает тоже.
#167 #632711
Срезы возвращают поверхностную копию или глубокую?
#168 #632712
>>632711
поверхностную.
#169 #632714
>>632712
Благодарю.
#170 #632730
С какой версии питона лучше начать изучение - 2 или 3?
#171 #632731
>>632730
В ОП-посте специально ссылка есть.
#173 #632734
>>632733
Через четыре года до него дойдет.
#175 #632738
>>632731
>>632733
>>632734
>>632736
Премного благодарен видимо гуглить пора бы учиться по аглицки
#176 #632750
>>632731
А как эта ссылка помогает сделать выбор? Разве что...

> Possible features for 2.7


> Nothing here. [Note that a moratorium on core language changes is in effect.]

#177 #632751
>>632750
Стабильность
#178 #632756
>>632750

>The End Of Life date (EOL, sunset date) for Python 2.7 has been moved five years into the future, to 2020.


>Being the last of the 2.x series, 2.7 will have an extended period of maintenance. The current plan is to support it for at least 10 years from the initial 2.7 release. This means there will be bugfix releases until 2020.

#179 #632757
>>632602
немного улучшил твой код
https://ideone.com/qnaAaJ

пифонер с пятилетним стажем
#180 #632765
Бля уважаю пайтонистов
Нет, я не нажрался, просто захотелось сказать.
#181 #632777
>>632765
Прими таблетки.
#182 #632786
>>632777
Принял, что дальше?
#183 #632790
>>632786
Жди прихода.
#184 #632793
Вопрос по qt4.

self.connect(self.button, QtCore.SIGNAL('clicked()'), partial(self.func, self.arg)

Я так понимаю, значение self.arg берется в момент создания привязки и больше не меняется?
Как исхитриться и брать актуальное значение, ведь self.arg меняется?
#185 #632794
>>632793

> Я так понимаю, значение self.arg берется в момент создания привязки и больше не меняется?


Да

> Как исхитриться и брать актуальное значение, ведь self.arg меняется?


Передавать туда self, а уже внутри self.func читать self.arg. А учитывая, что это self.func там self уже есть, так что partial не нужен
#186 #632878
>>632757
Ты охуенен. Можешь посоветовать что почитать, чтобы понять, как работает то, что ты написал?
#187 #632912
Чот я проебался с наследованием моделей в джанге. Понадобилась мне еще одна модель, которая от имеющейся отличается наличием дополнительного поля. Наследовался, зарегал в админке, проверил - сохраняет все корректно. А потом гляжу, а у меня вьюха отображает обе модели в списке. Лезу в базу, а там унаследованная модель сохранилась, как табличка с FK на id родительской + новое поле. Как заставить джангу сохранять новую модель в отдельную таблицу?
#188 #632935
>>632878
Документацию к питону читай. Там все это есть.
#189 #632938
>>632757
Лучше же generator expression использовать вместо мапа т.к. мап медленнее с лямбдой.

мимо пифонер без стажа
#190 #632939
>>632912
Все, посоны, разобрался. Сделал абстрактную модель, куда запихал все общие поля и методы, и унаследовался дважды от неё.
#191 #632952
Аноны, python 3.5.0, че за хуйня?

>>> range(1,3)


range(1, 3)

>>>

#192 #632959
>>632952
Цэ итерируемый объект.
#193 #632962
>>632952
list(range(1, 3))
#194 #632964
>>632959

>>> print(range(1,4))


range(1, 4)

>>>


как сам список-то получить.
#195 #632965
#196 #632966
>>632962
спс
#197 #633036
>>631898
Да, что-то вроде этого, 'автоматическое'
#198 #633038
>>631913
А что интересует? Хороший фреймворк (точнее клей для будущего фреймворка%)), если под веб не писал,то лучше начать с чего-то более простого. Для меня пирамида 2й фреймворк после django (иногда надо что-то с нормальным ормом)
#199 #633100
>>632938
Люблю map, не люблю list/generator/dict comprehensions.

> медленнее


Преждевременный оптимизатор?
#200 #633102
>>632939

> унаследовался дважды


Какой ненасытный гардемарин.
#201 #633103
>>633102
Если есть более рациональное решение - скажи, я непременно им воспользуюсь.
#202 #633108
>>633100

>Преждевременный оптимизатор?


не ИДИОМАТИЧНО

ну и да, тормозит, переписывал подобную хуйню по результатам из профайлера, лучше уж сразу как человек писать
#203 #633129
>>633108
define "как человек"
Если у тебя производительность упирается в это, то переписывание не поможет.
#204 #633138
>>633129

>то переписывание не поможет


Негодный экстрасенс

>define "как человек"


не порождать ненужные промежуточные листы, как у тебя делают мап и фильтер. оно раза 2 тормознее, и в несколько раз прожорливее по памяти. на тысяче-другой элементов в коллекции ты прозреешь

открой для себя comprehensions и модуль itertools
#205 #633142
>>633129
и да, это алгоритмика, а не прематур чего-то там
#206 #633166
>>633138

> Негодный экстрасенс


> не порождать ненужные промежуточные листы, как у тебя делают мап и фильтер. оно раза 2 тормознее, и в несколько раз прожорливее по памяти. на тысяче-другой элементов в коллекции ты прозреешь


ИКСПЕРТ подтянулся
https://docs.python.org/3/library/functions.html?highlight=filter#filter
https://docs.python.org/3/library/functions.html?highlight=map#map
>>633142

> прематур


define "прематур"
#207 #633172
>>633138

>не порождать ненужные промежуточные листы


>открой для себя comprehensions


/0
#208 #633173
>>633166

>ИКСПЕРТ


>https://docs.python.org/3


Я про двойку, Py3k не особенно где есть.
#209 #633174
>>633172

>/0


Выражение-генератор чем не оно?
#210 #633176
>>633100
https://ideone.com/VlIeSg
На 10% быстрее твоей портянки, при равных данных на входе, чому так?
#211 #633177
>>633166
третьепитонопроблемы
3-шка нестабильное эксперементальное говно. нечетные версии нестабильные.
нормальные люди сидят на двойке, перекатятся когда выйдет стабильная 4.0
#212 #633178
>>633176

> sorted((


здесь не нужно две пары скобок можно просто sort(foo for foo in bar)

А вообще пиздец ты оптимизатор. распрасить 10 дат на 10% быстрее!!! выигрыш 0.00000000000000000000001 секунды!
#213 #633179
>>633176
При этом читаемость кода хуже. Даже блять в длину строки гитхаба не влезает.

> s.split("\n")


есть str.splitlines() на разных системах перенос строки по-разному делается
#214 #633180
>>633178
А бля там key= ещё не долгядел
#215 #633181
>>633173

> в ссылке на ideone 3-я версия


> Я про двойку


nuff said.

> Py3k не особенно где есть


Лолд, уябывай, клоун.
>>633176
Потому что ты не делаешь stftime, наверное. что за дибилы в треде, ведь так всё было хорошо сначала
#216 #633182
>>633179

> есть str.splitlines()


Вот это годно.
#217 #633183
>>633181
а нахуй ты, дебил, гоняешь строку в дату а потом обратно с тем же форматом?
#218 #633184
>>633178
10 дат можно и руками отсортировать, оно явно не для этого писалось.
#219 #633186
>>633183
Очевидно, что для вывода. Автору надо было распарсить. >>632542
#220 #633187
>>633184
Это парсер сайта, дибил. Там их десять/сто и будет. Парсеры затем и нужны, чтобы руками ничего не делать.
#221 #633188
>>633186

>Очевидно, что для вывода


>>632542

>отсортировать



Чет ты совсем аутист, сочувствую твоим каллекам
#222 #633189
>>633187
Жопу ставишь что пару тысяч не будет?
#223 #633190
>>633188
Ему нужно было распарсить и сортировать. strftime только для вывода на ideone. К словам придираешься, ибо обосрался?
#224 #633191
>>633189
Да хоть 10000. ты какой-то дибил
#225 #633193
>>633191
Да, десятки секунд разницы - похуй, говнякай дальше.
#226 #633194
>>633190

>strftime только для вывода на ideone


ага, без двойной конвертации не обойтись, ну-ну
#227 #633195
>>633193
Бля, ты тупой? Быстрее лишь засчёт того, что у тебя нет strftime.
>>633194
Толстячок.
#228 #633196
>>633193
Какие десятки секунд? Ты ебанутый?
Да даже если были бы десятки секунд - похуй на них, читабельный код важнее.
Иди на асме пиши.
#229 #633198
>>633195
Ну на двойке оно у тебя бы еще 2 промежуточных листа высерало, а так то норм.
#230 #633200
>>633196
define читабельный

в моем `key=` на новую строчку перенести, и будет заебцом, как в лучших домах
#231 #633201
>>633198

> Ну на двойке


Давай, до свидания.
#232 #633216
Проводил сегондя собеседование - пришел какой-то чудик, который в тестовом задании вместо unicode() испольщовал str() и вместо xrange написал range. Сказал ему что перезвоним.
#233 #633227
Tак в drf запросить только первый/последний элемент? Сделать свой get_queryset(), который, если в запросе есть нужный параметр, будет возвращать только один элемент?
#234 #633247
>>633216
Эти двойкодебилы. Чуваку повезло, короче.
#235 #633502
>>633216
Сука, только попробуй не перезвонить.
196 Кб, 736x736
#236 #633504
>>631494 (OP)
Как через пайтон запустить другую консольную программу в фоне, используя готовые ассоциации Винды, при этом получив на выходе stdout?
Пробую так, но оно, почему-то, выдает лишь пустую байтовую последовательность, хотя вывод должен быть:
script = subprocess.Popen('cmd /c start "" /b' + path, stdin=sub.PIPE, stdout=sub.PIPE, stderr=sub.PIPE, env=envp, cwd=os.getcwd())
output = script.stdout.read()
#237 #633506
>>633174
Тем что оно не считается comprehensions, ну или я нигде не видел чтобы кто-то упоминал его так.
#238 #633508
>>633504

> в фоне


> получив stdout


Это и на прыщах то через жопу целается - надо будет её stdout в неблокирующем режиме в цикле читать типа http://stackoverflow.com/questions/8980050/persistent-python-subprocess
#239 #633510
>>633506
https://www.python.org/dev/peps/pep-0289/

>This PEP introduces generator expressions as a high performance, memory efficient generalization of list comprehensions


>generalization of list comprehensions


>comprehensions



Хотя это и без пруфов очевидно неупоротым
#240 #633512
>>633506
Таки comprehensions. Каюсь.
32 Кб, 765x268
#241 #633516
Помогите ньюфагу, почему выскакивает ошибка с пика?
#242 #633517
>>633516
NO должно быть в кавычках
#243 #633518
>>633517
Спасибо, надо же забыть такую элементарную вещь
#244 #633555
>>633516
Что будет с этими людьми если их за изучение жс посадить с его ошибками вида undefined is undefined.
#245 #633572
>>632267

>В реальности на java пишут очень сложные гиганстские проекты которые на чем угодно будет тормозить.


Это ты про майнкрафт?
64 Кб, 753x877
#246 #633587
Нужно найти минимум из трех чисел, как сделать это для отрицательных?
#247 #633588
>>633587
чо эт за сайт?
#248 #633589
>>633588
Питонтутор
#249 #633590
>>633587
-5 же правильный ответ. Чего ему не нравится?
#250 #633592
>>633590
У меня -3 получается
#251 #633593
>>633587
abs(int(input()))
хехехе
#252 #633595
>>633593
Ну ты чего, что не так, я только первый день занимаюсь
#253 #633596
>>633593
Я наркоман, не обращайте внимания.
#254 #633599
if a <= b and a <= c:
print(a)
elif b <= a and b <= c:
print(b)
esle:
print(c)
Так, не?
#255 #633605
>>633587
Замени свои конструкции a<b<c на:
a < b and a < c
b <= a and b < c
например
#256 #633606
>>633587
Там решение под выхлоп подогнать надо что ли? Если да, то бросай нахуй это говно. Если нет, то ты неправильно понял задание.
#257 #633607
>>633599
Отступы проебались.
#258 #633608
>>633606
Да, под выхлоп, но зачем бросать?
#259 #633609
>>633605
Спасибо
56 Кб, 600x858
#260 #633641
Парни, а поясните мне простым языком:
В питоне всё объекты. Всё ли? Ну т.е. во 2м print был не объектом, в третьем - стал.
Для любого объекта грубо говоря мы можем дописывать свои свойства, через функции. Ну типа def str_add_shit(str): return str + 'shit'.
Так типа, или я что-то упускаю?
Классы это такой способ навязать кучу свойств куче объектов
Все эти self.{имяфункции} это и есть спсоб декларации того, что у объектов такого класса по имяфункции теперь есть одноимённое свойство.
#261 #633653
>>633641
Ебать у тебя каша в голове.
print в 2 питоне - инструкция. Как return, например.
А вообще, хули я тебе объясняю что-то. Пиздуй читать Лутца.
67 Кб, 534x604
#262 #633669
>>633653
Благодарю за отличный развёрнутый ответ, вкусняшек тебе!
#263 #633675
>>633608
Потому что это бессмысленно, если только ты не будешь заниматься реверс-инжинирингом, но даже в этом случае эти "задачи" далеки от реальности . С таким же успехом ты можешь на бумажке написать 5 рандомных цифр, а потом пытаться найти в них закономерность. Лучше с checkio какого-нибудь задачек порешай.
#264 #633789
Сука, нихуя я не понимаю.

Вот есть у меня связь в Джанге много к 1. Есть пост, к нему идут комменты. Сука, как мне запросить количество коментов к этому посту без создания кастомного фильтра для шаблона?
Ну, т.е. чтобы это все во вьюхе работало, и через запрос в эту вьюху и выводилось количество комментов. Вчера полдня убил, так нихера и не смог сделать.
#265 #633798
>>633789
Ты имеешь ввиду а шаблоне чтобы работало?
Ты можешь писать там как-то {{ post.comment_set.count }} так
#266 #633799
>>633798
p.s. count это функция, но движок шаблонов "умный" - если это функция он сам её вызовет
#267 #633899
антоны-питонобоги, вопрос к вам
создал свой класс, как мне переопределить операцию умножения вида: инт экземпляр класса ?
пример:

>>> class SupAnton:


\tdef __init__(self, data):
\t\tself.value = data
\tdef __mul__(self, repVal):
\t\treturn SupAnton(self.value
repVal)

>>> sA = SupAnton(228)


>>> (sA 410).value \t#выводит результат


>>> (410 sA).value \t#ошибка. как переопределить метод для такого вида?

#269 #633904
>>633899
немного с табами ошибся
#270 #633906
>>633901
спасибо
приставка r - reverse, как я понял. да?
#271 #633908
>>633906
В доке:
These methods are called to implement the binary arithmetic operations (+, -.....) with reflected (swapped) operands.
#272 #633912
>>633906
Ещё есть imul для переопределения
x*=3
#273 #634050
Собсно, есть пустой класс который я вставляю в лист для отображения пустого поля. Как его назвать? Spacer? Filler? Placeholder?
#274 #634051
#275 #634054
>>634051
None как базовый тип там уже есть, поэтому нужен класс.
#276 #634055
>>634054
Я к тому что может тебе None вставлять в список вместо этого класса. Хотя я незнаю, что ты именно делать. Может и нет.
А так называй как хочешь. Placeholder звучит подходяще.
#277 #634125
>>634050
AnoosHolder
#278 #634180
Пацаны. Начал тут обмазываться питоном сразу по хардкору по AByteofPython. Т.к. начал я это делать в дороге, то читал я на планшете, параллельно запуская скрипты в QPython3.

И вот тут на ранних примерах нашёл один листинг:

http://ideone.com/ihWTOs

Так вот, собственно, в чём вопрос. В книге пишут, что если документировать объявленную функцию, при запросе function.__doc__ выдаст эту самую документацию, но, как видите, что в ideone, что в QPython3 вместо этого мне пишут хуй None.

На домашней же ПеКе пашет как надо. Почему вообще возникает такой глюк с документацией? Что еще ждать в таком же духе от Ideone?
8 Кб, 435x147
2 Кб, 300x84
#279 #634195
>>634180
Попробовал вот тут:
http://live.sympy.org/
и тут
http://www.brython.info/tests/console.html?lang=en
Пашет как надо
Какая-то особенность ideone
#280 #634226
>>634195
https://dpaste.de/xem2
Вангую, что у них там сорт оф eval/exec для которого они фильтруют входящий текст от мусора, в т.ч. докстрингов.
#281 #634229
>>634226
У интерпретатора питона есть такая опция

> -OO : remove doc-strings in addition to the -O optimizations

#282 #634302
Django. Имееются две модели. Никаких foreign key, правда в одной из этих таблиц имееются ключи, указывающие на primary key'и второй таблицы. Как в сериалайзере добавить в первую таблицу филды из второй, по какому-то id-шнику?
#283 #634309
>>634302

> Никаких foreign key, правда в одной из этих таблиц имееются ключи, указывающие на primary key'и второй таблицы


А зачем так? Почему не сделать foreign key?

> какому-то id-шнику


Что это значит?
#284 #634325
>>634309
Просто этот ключ может содержать id и из другой таблицы.

> какому-то id-шнику


Это значит, что в первой таблице есть id, которые иногда ссылаются на другую таблицу, и есть поля, которые нужно заполнить, взяв их из второй таблицы. Вот как это сделать по-человечески. Foreign key не подходит в данном конкретном случае.
#286 #634340
>>634331
О, спасибо, анон. Действительно, полезный линк
#287 #634346
>>634340
Если бы этого не было встроено в саму джанго, то модно было бы реализовать самому.
Или вот немного из другой оперы, есть https://pypi.python.org/pypi/eav-django http://mvpdev.github.io/django-eav/ позволяет иметь произвольный набор аттрибутов у модели, редактируемый без измнения структуры бд.
Или https://django-mptt.github.io/django-mptt/ для эффективного хранения древовидных структур в бд.
#288 #634348
>>634346
Я в начале думал, что просто сделаю какую-нибудь sql процедурку и ей просто заполню нужные мне филды, но тут есть встроенный механизм, почему бы и не воспользоваться
#290 #634358
>>634356
И что, проски эти рабочие? Да ещё и не забаненые?
#291 #634360
>>631494 (OP)
Господа, с чем может быть связан такой нюанс в Django.
Есть страница, к примеру:
2ch.hk/b
На ней ссылка на тред, к примеру:
2ch.hk/b/12
Когда я перехожу из /b/ на страницу треда- всё в порядке. Когда я заполняю формы- всё в порядке. Однако, когда я нажимаю "Отправить сообщение"- то страница обновляется, и в строке браузера уже не 2ch.hk/b/12, а 2ch.hk/b//
Что за чудеса?
#292 #634362
>>634360
А что у тебя в <form action=?
#293 #634363
>>634362
Ссылка на мою функцию-представление, которая возвращает thread.html.
#294 #634364
>>634363
А пост то отправляется?
Вообще твая функция должна возвращать не thread.html после post запроса а делать редирект, см https://ru.wikipedia.org/wiki/Post/Redirect/Get
#295 #634371
>>634364
Отправляется. Функция возвращает не просто html, я не так выразился. Она возвращает рендер.
return render(request,'imageboard_app/thread.html', {'form':form, 'posts':Anon_Post.objects.all(), 'file_form':file_form})
#296 #634373
>>634371
Я понимаю что рендер. А должно редирект. Потому что см ссылку которую я дал.
#297 #634375
>>634373
Понял, благодарю, буду разбираться.
#298 #634377
>>634375
А вообще, конечно, что-то тут не так. Смотри что там в urls.py
#299 #634390
Анончики не понимаю по чему все жалуются на пучарму. i7 - 720(да, да самое первое поколение 2010 года) 8гб оперативы (1600 скорости) и убунта 14.04Ю особо никогда не замечал тормозов за pycharm'ом.
#300 #634395
>>634390
на гейбуке с 8Гб рам и SSD тоже летает. Как и идейка. компайлер скалы только тормозит '(
#301 #634398
>>634395
Кстати, извините за оффтоп, гейбук реально тема? Сколько у него, так сказать, срок эксплуатации? Т.е. время, когда ты не ощущаешь тормозов, лагов, всякой херни с железом?
#302 #634400
Анон, как лучше писать простые функции в классах-представлениях?

class MyClass(MyView):
queryset = бла-бла-бла

или

class MyClass(MyView):
def get_queryset(self):
....бла-бла-бла
#303 #634403
>>634400
Я бы склонился ко второму варианту как питон вэй.
#304 #634405
>>634400
Плюсую второй вариант
#305 #634411
>>634398
Ага. Тема. В эксплуатации с 2012, только что ногами не пинал, а бук как новый.

>тормозов, лагов, всякой херни с железом


Ноль. Автономность, отзывчивость гейоси - 10/10.
много лет красноглазил бифор, от винди не могу не блевануть
#306 #634412
>>634400
Второй. А вообще - generic брать по максимуму.
52 Кб, 604x604
#307 #634417
>>633587
min(циферки)
#308 #634418
>>634412
прости невужество батюшка, в питоне почти 5 лет ( с него начинал обучение в 13, так что реальной пракьтики особо нет), но что значит 'generic' и почему его брать по максимому)
#309 #634428
>>634418
Вьюхи из django.views.generic
#310 #634431
>>634418

>почти 5 лет


Не ты ли, катати, тот подлый шакал, что отрицал величие comprehension и выражений-генераторов в пользу map/filter/reduce?
#311 #634434
Аноны, как по-быстрому освоить синтаксис питона. Есть два дня. Нужен только синтаксис без всяких объяснялок основ программирования, парадигм и прочего говная сам java-макака
#312 #634436
>>634431
нет, не я)
#313 #634437
>>634434
У питона нет синтаксиса.
#315 #634441
>>634438
Спасибо
#316 #634449
>>634436
И как оно, не скучно? Какие технологии используешь? Я б наверное ебанулся, лет 5 конфигурять джангу.
17 Кб, 175x200
#317 #634465
>>633587
На тебе однострочник, не мучайся:
print(min(map(int, input().split())))
Маленький разбор: input().split() получает на ввод строку и разбивает её по пробелам на список отдельных элементров, map(int, input().split()) применяет функцию int (преобразование в целочисленную переменную) ко всем элементам полученного с ввода списка, min ищет наименьшее число, print выводит на экран. Не благодари.
#318 #634467
>>634449
Лишь бы платили)
#319 #634480
Какой самый лучший GUI фреймворк? Еще чтобы можно было просто его закастомизировать и сделать что-то типа гугловского дизайна.
#320 #634487
>>634480
Qt/QML
#321 #634491
>>634487
Вот сейчас гуглил и к тому же выводу пришел. Kivy как-то не очень для десктопа подходит что ли. Или мне так кажется просто. Но я на нем запили игру, а чтобы выстроить кнопки в ряд очень муторно
#322 #634520
>>634480
pygobject - де-факто основной фреймворк. Как и сам ГТК.
#323 #634523
>>634520
Первый раз о таком слышу.
#324 #634532
>>634520
PyGObject -биндинг к GObject, который жи есть гнутая реализация ООП с подсчетом ссылок для PlainC. Gtk - почти Linux-only ГУЙ-библиотека. Никакого Material design как у гугла на ней не сделать. Декларативности как в qml тоже не завезли.
#325 #634537
>>634532

>Linux-only ГУЙ-библиотека


Поэтому флагман ГТК - гимп - кроссплатформа. И поэтому твой браузер слинкован с ГТК. Попробуй тоньше.
#326 #634539
>>634537

>гимп


Когда я работал на венде, там он выглядел как говно. И хоткеи в ымперской раскладке не работали.

>твой браузер


Safari

>слинкован с ГТК


из Хромого давно выпилен
#329 #634572
>>634480
pygtk/pygi
195 Кб, 1183x770
#330 #634574
>>634532

> Linux-only ГУЙ-библиотека.


Толсто. Наиболее популярный питоноский кросплатформенный гуи софт - deluge, gajim, exaile - на pygtk. Под прыщи на нем вообще тонны популярного софта. А на pyqt софта чуть более чем нихуя. Я знаю только spyder, eric и tortoisehg, но это не популярный софт, а узкоспециализированный и не самый удачный(например гуи для hg мне больше нравится gwsmhg, а он на pygtk).

> на ней не сделать.


Можно дохуя чего сделать, фреймворк очень гибкий и мощный.

> Декларативности как в qml тоже не завезли.


Завезли, glade для этого и ui файлы.
#331 #634583
Полскажите какую-нибудь хорошую CMS на питоне? django-cms норм, может на фласке что?
#332 #634584
8 Кб, 300x200
#333 #634590
>>634571

> 43 минуты


> Learn python in one video

#334 #634592
>>634590
Рассчитано на тех кто имеет представление о программировании. Он там показывает все основные констукции языка и встроенные типы.
#335 #634740
Как в django обновить поле time у модели только один раз (при создании)
#336 #634742
>>634740
DateTimeField(auto_now_add=True)
#337 #634744
>>634740
Или (default=timezone.now)
#338 #634747
>>634742
Сделал так, но поле почему-то всегда NULL
#339 #634752
>>634747
Странно. Ну можешь переопределить save(если у тебя pk == None здачит объект создан и надо записать дату, а потом дернуть super().save()).
Или метод create https://docs.djangoproject.com/en/1.9/ref/models/instances/
#340 #634756
>>634752
Собственно так уже и делаю, но за помощь спасибо
#341 #634760
>>634756
Вот тут кстати рекомендуют делать save свой тоже
http://stackoverflow.com/questions/1737017/django-auto-now-and-auto-now-add
А что за бд? Странно вообще что auto_now_add не работает.
#342 #634764
https://habrahabr.ru/company/hexlet/blog/275867/

CodeBattle опубликовали статистику. Те кто пишут на Ruby побеждают чаще тех кто пишет на Python, Clojure, JavaScript и прочих.

О чём это говорит? Ruby лучший язык. Да, это несомненно так.
#343 #634782
>>634764
Да у тебя и D - лучший язык.
#344 #634783
>>634760
БД: mysql, правда поля создаются триггером, может из-за этого вся проблема?
#345 #634786
>>634783

> поля создаются триггером


Как это?
#346 #634790
>>634786
Я в базе создаю триггер, который отрабатывает на изменение в другой таблице, а в мою записывает определенные филды. Вообщем, разобрался я со временем, мой save() отрабатывает. Спасибо, анон, здоровья тебе и чая
117 Кб, 268x265
#347 #634813
>>631494 (OP)
у меня тут тупой вопрос. Я когда-то ходил на курсы по программированию и решил одну задачу функцией eval, хотя надо было просто завернуть функцию в функции 1000 раз. Дак вот препод тогда в ахуе на меня посмотрел и сказал мол eval используют только мудрые бородатые программисты и вообще это дыра в безопасности тебе мол не гоже этим пользоваться (с таким выражением лица будто я Авадекедавру кастанул). Дак вот я тут решил все с нуля очень углубленно все изучить и начал с Лутца и он буквально на первых страницах пишет, ну вот короче можно еще использовать eval и exec и все збс.
Поясните, где правда?
#348 #634816
>>634813
Где-то посередине. Также как с goto в сишечке.
В целом лучше не пользоваться, но бывают случаи, довольно редкие, когда оно нужно.
Так же и метаклассами всякими, но в меньшей степени.
#349 #634837
>>634813
Но вообще:
код в eval трудно будет разобрать тому, кто в твоем коде будет разбираться
сложно отлаживать
он просто не нужен, питон достаточно гибкий сам по себе, можно обойтись без кодогенерации и eval вообще.
#350 #634870
>>634816
>>634837
спасибо, короче, мои говноскрипты это не испортить
#351 #634916
Пацаны. Как мне без Flask-WTF нормально хендлить формы? Мне просто WTForms не нравится что-то.
#352 #634971
Вас приветствует рубист. Вы тут пилите какие-нибудь совместные проекты? А то мне надоел руби-тред, там ничего нет, кроме нубов с тупыми вопросами по рельсам.
#353 #634972
#354 #634973
>>634971
В долю не возьму.
#355 #634976
>>634971
Сходи в социоблядства-тред, там были какие-то попытки кооперироваться на жидхабе.
#356 #635048
Djago поиск.
Sphinx vs haystack. Для говноблога.
И вообще, что лучше?
#357 #635237
>>635048
Теплое с мягким. Sphink - FTS-движок, Haystack - фронтенд, абстрагирующих конкретные FTS engine'ы. От Sphink какой-то php-душок исходит
#358 #635267
Сап, народ. Расскажите коротко, как сервер для питона ставить? Я мимо-PHPшник, ради интереса попробовать хочу.
#359 #635270
>>635267
Для какого фреймворка?
#360 #635273
>>635270
Давай для Django.
166 Кб, 780x503
113 Кб, 779x555
102 Кб, 952x773
#361 #635280
>>635273
В django ты просто набираешь python manage.py runserver
И у тебя будет доступен dev сервер на 8000 порту с твоим приложением. Можешь ещё поставить какой-нить django-debug-toolbar и сможешь видеть прямо на страничке всякую хреть, например что в кэше или какие sql запросы происходили.

Деплой на боевой сервер проходит примерно как с php-fpm, но тебе это для "попробовать" не надо.
#362 #635290
>>635280
Спасибо.
#363 #635509
>>634916
Бамп.
#364 #635510
Когда пайчарм научат всем тем фишкам, что умеет идея?
#365 #635540
>>635510
Каким?
#366 #635569
>>635510
какие ты используешь?
#367 #635571
>>635510
Вообще можно использовать обычную idea и поставить на неё python-плагин. Питон плагин умеет всё тоже что пичарм.
#368 #635603
>>635540
>>635569
Цеплять документацию из интернетов (в идее можно было указывать урлы на жавадоки), например.

>>635571
Ничего не изменится, базарю.
#369 #635606
>>635603
В питоне есть docstrings так-то.
#370 #635609
>>635606
Ну бля, у меня и они не работают. Либо их нет в том говне, что я юзаю. А я юзаю Flask{,-Login,-SQLAlchemy}.
#372 #635617
>>635609
Наведи на код и нажми ctrl+q
#373 #635619
>>635615
Спасибо.

>>635617
Иди нахуй.
#375 #635624
Почему вы изучаете питон, если на нем никто еще не заработал?
#376 #635625
>>635622
Ты неумный?
#377 #635629
>>635615
Что за софтина?
#378 #635630
>>635629
И ты тоже дебил?
#379 #635631
>>635629
pycharm
#380 #635636
>>635630
Ясно.
>>635631
Спасибо.
#381 #635684
Вопрос по Python 3.
Есть бинарник, который запускается через subprocess.run(). Это делается из функции, которая вызывается через multiprocessing.Pool().map(func, iterable). Если есть 12 ядер, то от скольки тредов не офигеет GIL?
#382 #635685
>>635684
при чем тут gil?
#383 #635688
>>635684
Т.е. ты запускаешь сторонний бинарник из питона, и чтобы этот бинарник тебя не блочил - ты запускаешь его через мультипроцессинг? Но зачем, если тебя блочит ожидание вывода от субпроцесса, и можно просто взять asyncio.create_subprocess_exec?
#384 #635689
>>635685
Извини, хуйню написал. Вопрос такой: как эффективно распараллелить запуск бинарников?
#385 #635692
>>635689
Так как ты и делаешь.
Можешь и через threading делать, какая разница gil никак не влияет на подпроцессы.
#386 #635694
>>635692
Он так не делает. Он ожидает вывода от бинарника и его блочит iowait.
#387 #635701
>>635684

> multiprocessing.Pool().map


Кстати так не рекомендуется делать. По возможности пиши как-то типа
pool = Pool()
pool.blabla
#388 #635703
>>635694
Блочит один процесс, а он их делает много через multiprocessing.
#389 #635707
>>635703
Мултипроцессинг тут нахуй не нужен, только машину жрет. Можно из одного питонячьего инстанса запускать сколько влезет и без блока. Через asyncio - https://docs.python.org/3/library/asyncio-subprocess.html
#390 #635725
>>635694>>635707
Спасибо за asyncio. А если мне вообще всё равно на вывод? Бинарник должен только обработать файл, имя которого ему скидывается из общего списка и записать результат на диск. В среднем для одного файла он это делает за 3 секунды.
>>635701
Обычно делаю через with Pool(num) as pool.
#391 #635731
>>635725
А зачем тебе вообще питон? Почему просто в шелле не запустить
/bin/foo >file1 &
/bin/foo2 >file2 &
и т.п.
Или в питоне через os.system('/bin/foo >file &')
Зачем городить всякие мультипроцессинги если тебе на вывод пофигу?
#392 #635735
>>635731
Хотелось цельную систему выстроить по анализу данных, чтобы поставить на ночь, а утром уже всё готово. Обработать нужно где-то 1кк файлов. Если по одному за раз, то это как-то слишком долго.
#393 #635738
>>635735
Если ты в шелле запускаешь "/путь/команда &" то оно запускается в фоне.
#394 #635754
Резюмирую. Перепишу это говно на баш и буду юзать gnu parallel. Всем спасибо.
#395 #635759
Посоны, в укусе питона чувак пишет:

>Если имя переменной начинается с двойного подчёркивания, как, например, __privatevar , Python делает эту переменную приватной (private). Поэтому принято имя любой переменной, которая должна использоваться только внутри класса или объекта, начинать с подчёркивания; все же остальные имена являются публичными, и могут использоваться в других классах/объектах. Помните, что это лишь традиция, и Python вовсе не обязывает делать именно так (кроме двойного подчёркивания).



С двойным подчеркиванием все понятно - я потыкал в шелле, действительно, объявленную таким образом переменную без явно определенного геттера/сеттера дернуть не удается. А от одинарного подчеркивания какой профит? Я проверял - такая переменная доступна, как и переменная без подчеркиваний вообще.
#396 #635760
>>635754
Параллель то зачем? Опять усложняешь. Запуска в бекграунде через & и редиректа stdout/stderr тебе хватит. Чтобы процессы не отваливались при закрытии терминала (а так есть с & ) можно запускать бинарники от инита, setsid ./yoba &>/tmp/log - запустит, перенаправит весь вывод и не заблочит.
#397 #635762
>>635760
Я бы stderr в другой файл направил иначе там будет каша
#398 #635764
>>635759
Я вообще мало смысла вижу в таком хардкорном отказе в доступе к переменной. Если прижмет - я все равно ее достану, только 100500 костылей нагорожу. А чтобы просто дать понять что переменная не предназначена для прямого использования _name достаточно.
6 Кб, 225x146
#399 #635765
>>635759
Это просто соглашение, тот кто будет использовать твой код будет знать что это внутренняя переменная, которую лучше не трогать. Никак это насильно не ограничевается.
К __переменным тоже доступ получить не проблема
#400 #635767
>>635764
>>635765
Ок, я понял.
#401 #635775
>>635760
Мне нужно обработать 1кк фалов. Бинарник на вход берёт только один файл. Если я правильно понимаю, то запустив параллельно несколько процессов, я быстрее разберусь с этой бучей. Отрабатывать всё это дело неделю не вариант.
#402 #635777
>>635775
Запускай сразу кучу бинарников в бекграунде & или через setsid. Работать они будут одновременно.
#403 #635780
>>635777
Но не сразу миллион же.
#404 #635789
>>631494 (OP)
Не знаю туда ли я зашел но на всякий случай спрошу. В общем обмазался я пастой про дайв инто питон. Книгу прочитал еще пару лет назад, pep8 тожедаже раньше. Теперь смотрю на асинхронные сервера чтобы войти в увлекательный мир хайлоада ну и ради разнообразия, посмотреть что-то кроме фласка и джанги.
А теперь, внимание, вопрос - tornado или asyncio? И там и там асинхронщина, корутины, иолуп, вебсткеты всякие. Торнадо таки старее и стабильнее, асинкио включен в стандартную поставку третьего питона который я и использую.
#405 #635791
>>635789
Торнадо умеет сам в asyncio http://www.tornadoweb.org/en/stable/asyncio.html
Вообще если для веба/вебсокетов то торнадо повзрослее будет. Для асинкио я пока не знаю каких-то готовых фрейворков, они есть, но какие-то пока не оче доделанные.
#406 #635808
>>635791
Благодарствую. За ссылку на документацию вообще отдельное спасибо. У меня примерно такие же мысли были
#407 #635810
>>635808
twisted, кстати, тоже умеет asyncio использовать в качестве реактора.
#408 #635815
>>635810
Смотрел на него, на первый взгляд даже поинтереснее будет чем торнадо из-за более широкого профиля могу хуйню нести. Но лично для меня у него фатальный недостаток - нет поддержки третьего питона
#409 #635816
>>635815
Уже есть вроде. Просто не все протоколы ещё портированы.
#410 #635837
>>635816
Интересно, ознакомлюсь. Делал на этих фреймворках что-нибудь для продакшна?
#411 #635844
>>635837
Делал, но не для продакшена.
торнадо вообще фейсбуком написан для их friendfeed.
#412 #635855
>>635844
Про фейсбук и френдфид слышал. И как ощущения от проделанной работы?
798 Кб, Webm
#413 #635856
>>631494 (OP)
Есть два класса, главный и вложенный. В конструкторе главного создается экземпляр вложенного, конструктор которого, в свою очередь, получает ссылку действующий экземпляр главного (self). После этого ссылка на экземпляр вложенного сохраняется в качестве переменной действующего экземпляра главного и получается такой себе закрытый круг:
class Main:
--class Sub:
----def __init__(self, parent):
------self.parent = parent
----def foo(self):
------print(self.parent.text)
--def __init__(self, text):
----self.child = Sub(self)
----self.text = text
Итак, вопрос: Не охуеет ли от того расклада GarbageCollector, и не будет ли каких-нибудь утечек памяти? Можно ли как-то оптимизироват эту хуиту?
#414 #635857
>>635855
Ну на твистед я делал сервер для карточной игры. Дальше тестирования это не пошло. Да и альтернатив тогда особо не было если хочешь какой-то протокол реализовать и не изобретать велосипедов, для твистед куча протоколов всяких поэтому реализована.
Очень продуманный и грамотный API и архитектура.
На торнадо я делал веб-сервер, который должен был принимать много мелких запросов и складывать их в очередь. Нормально работало.
#416 #635902
>>635857
Понял. Благодарю за ответы, некоторое прояснение появилось
#417 #636055
кто-то сталкивался с регулярными грамматиками?
имеется задача построить нка по регулярному выражению (простому, без вложеных скобок даже)
нка в дка перевести и проверить строку могу.
100 Кб, 879x330
#418 #636057
Добрый вечер, в моем городе буквально через день game jam, поэтому ставим всей командой pygame. Так при обновлении pip, pip install --upgrade pip, вылетает traceback, гугление ничего не помогло. В чем проблема?
#419 #636059
>>636057
Очевидно надо через sudo это делать
#420 #636062
>>636057

>pip 8.0.0


хм у меня пип версия 1.5.4
34 Кб, 240x240
#421 #636086
>>635869
>>635856
Хорошо, разобрался. Тогда другой вопрос — можно ли как-нибудь получить модифицированный environment из Popen?
Т.е, допустим, я делаю так:
env = copy.deepcopy(os.environ)
env['some_var'] = ''
script = subprocess.Popen('python script.py', env = env)
Внутри script.py я шаманю на переменной среды some_var. А как потом эму модифицированную переменную получить в основном скрипте? То, есть можно ли как-нибудь экспортировать значения среды из Popen?
#422 #636090
>>636086
Нет
83 Кб, 736x736
#423 #636091
>>636090
Совсем-совсем никак?
#424 #636092
>>636086
И зачем запускать питон скрипт через Popen? Почему не использовать import или там ещё чего да хоть eval?
#425 #636094
>>636091
Вот именно переменные среды ты никак оттуда не получишь. Можно какое-нить IPC использовать, в простейшем случае в файл их сохранять.
#426 #636098
>>636091
Даже в баш ты никак если запускаешь скрипт один из другого через новый шелл не получишь их поэтому надо делать source file.sh если хочешь переменные эти оттуда получть.
#427 #636105
>>636057

Нет прав на установку.
#428 #636167
Объясните дауну пожалуйста, как с помощью lxml получить, например, отсюда http://www.bloomberg.com/quote/USDRUB:CUR курс валюты, просто цифры чтобы вернулись. я скорее всего чего-то делаю не так, подскажите пожалуйста

from lxml import html
from lxml import etree

def get_urls_from_page(url):

result = []

path = './/div clas[@class = "price"]/text()'

doc = html.parse('http://www.bloomberg.com/quote/USDRUB:CUR')

values = doc.xpath()

for i in values:

result.append(i)

return result

print (doc)
#429 #636169
>>636167
сука, я все проебал, вот норм:

from lxml import html
from lxml import etree

def get_urls_from_page(url):

result = []

path = './/div clas[@class = "price"]/text()'

doc = html.parse('http://www.bloomberg.com/quote/USDRUB:CUR')

values = doc.xpath()

for i in values:

result.append(i)

return result

print (doc)
#430 #636185
>>636169

>.//div clas[@class = "price"]/text()'


точка лишняя, не?
clas - class
33 Кб, 916x458
#431 #636189
>>636185
поправил, но лучше не стало.

возвращает вот что:

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-46-32bab99cc426> in <module>()
14 doc = html.parse('http://www.bloomberg.com/quote/USDRUB:CUR')
15
---> 16 values = doc.xpath()
17
18

lxml.etree.pyx in lxml.etree._ElementTree.xpath (src\lxml\lxml.etree.c:59902)()

TypeError: xpath() takes exactly 1 positional argument (0 given)
#432 #636194
>>636189
lxml не умеет обращаться к веб-серверам. Для этого надо использовать другие библиотеки.
#433 #636196
>>636194
блять, ты серьезно? я второй вечер ебусь с этим.
ладно, а какие годятся для этого? Beautifulsoup4 пойдет?
#434 #636202
>>636196
lxml, beautifulsoup — это парсеры html. Они не обращаются к серверу, а просто парсят строку. Иными словами они ожидают примерно такого:
html.parse('<html><head></head></html>')
#435 #636203
>>636194
Не пизди, умеет. Только для https надо свои костыли прописывать.

>>636189
У тебя вообще много чего там не так в коде начиная от path и заканчивая тем, что оно нигде не используется.
По быстроляну исправил и все работает
http://pastebin.com/P1eLBNty
#436 #636209
>>636203

> Не пизди, умеет.


Не пизди, не умеет. http://lxml.de/parsing.html#parsing-html
#437 #636213
>>636209
Ты, сука, тупой, блядь?

>lxml can parse from a local file, an HTTP URL or an FTP URL.

#438 #636217
>>636203

>исправил и все работает


Спасибо, Анон!
#439 #636218
>>636213
Ладно, обосрался.
#440 #636232
Кто так функции объявляет? Щито она вообще берёт, что это за переменная: подпеременные и -> тип в итоге? Нихуя не понимаю
def semantic_similarity(bag1, bag2: list, w2v_model, unknown_coef=0.0) -> float:
#442 #636263
>>636247
Данке шен
#443 #636267
>>636203
Альтернативный вариант https://dpaste.de/Mp4C
мимо-ньюфаг-который-решает-чужие-задачки-для-тренировки
#444 #636344
А ещё тупой вопрос

def abc(a):
..if a == 0:
....return
..print 'huy'
..print 'ololo'

чому когда возвращается пустой return оно в него пихает всё что ниже? не разумею
#445 #636349
>>636344
В твоем примере всегда возвращается None. Разница только в том, что принты вызываются, если а != 0.
#446 #636357
>>636349
Ага, понятно
Т.е. код после возврата всё равно исполняется?
#447 #636366
>>636357
Нет. Просто ты никакого другого возврата кроме None не указал. Если вообще не писать return в функции - питон мысленно "дописывает" её сам и возвращает None. Т.е. с точки зрения интерпретатора твоя функция выглядит так:

def abc(a):
..if a == 0:
....return None
..print 'huy'
..print 'ololo'
..return None

Ты вообще какого результата добиться хочешь? Может, лучше так:

def abc(a):
..if not a:
....print 'huy'
....print 'ololo'
#448 #636369
>>636366
Лучше бесспорно, я просто читал о "мёртвом коде", который типа после ретёрна не выполняется, попробовал а оно хуйак и выполняется, и это-то мне и странно
#449 #636371
>>636369
У меня не выполняется. Ты вообще как проверяешь выполнение-то? Я думал на None функцию чекаешь.
#450 #636378
>>636371
ну печатать же тоже код
и после ретёрна что-нибудь типа:

ворд = "хуйхуй"
принт ворд
ворд *= 2
принт ворд

тоже будет выполняться
а возвращать функция нихуя не будет, да, тут сомнений нету
#453 #636386
>>636384
У тебя return не выполняется при a != 0.
#454 #636387
>>636384
Ну, блять, ты же а не равное нулю в функцию передаешь. У тебя выполнение в блок if не заходит и return не вызывается.
#455 #636389
>>636386
>>636387
Ебать я лох.
Спасибо, парни!
sage #456 #636400
>>636389

>писать "парни", вместо "аноны" или "куны"


Обоссал ньюфагера.
#457 #636406
>>636400

>2016


>всё ещё верить в ньюфагов-олдфагов-тян


>обссыкаться от всего подряд

46 Кб, 600x473
#458 #636407
>>636400

>> писать "парни", вместо "аноны" или "куны"


> Обоссал ньюфагера.

sage #459 #636413
>>636407>>636406
А ньюфагеры рвутся, найс :)
39 Кб, 450x600
#460 #636463
Всегда пишу "Господа".
#461 #636619
Зойчем нужен ipython notebook?
#462 #636627
>>636619
Написано же все. Эдакий маткад + офис + питон.
#463 #636628
>>636619
В белом мире лабы делать, ну и всё такое.
Наглядно, прикольно, удобно - всем нра
#464 #636642
>>636627
>>636628
Так именно в браузере зачем? Чтобы потом экспортировать html с листингом в лабу?
#465 #636885
Привет, Аноны. Нужно ли использовать del для удаления из памяти уже ненужных списков, констант, и так далее, или хуй с ним?
#466 #636917
>>636885
хуй с ним.
#467 #636956
Вопрос по джанге. Есть модель, в ней филды должны выводить count из других моделей. Как лучше сделать вьюху? И использовать foreign keys?
#468 #637024
Кто-нибудь пилил приложения под ведро на киви? Норм все собирается и пашет?
#469 #637093
Анон, подскажи нубу где дальше знаний набраться? Почти закончил бесплатный курс на курсере от Мичиганского университета, довольно годно, мне понравилось. Но там начальные знания а дальше курсы у них платные, сейчас бы не хотелось платить лол.
Подкинь наводку, бро.
#470 #637098
Аноны, подскажите какие-нибудь открытые проекты, куда можно поконтрибьютить после работы, чтобы помощь им действительно была нужна.
Уже 2 года разработки на python за плечами, писал как-то и полгода на С.
#471 #637103
>>636956
а в джанге орм для бд используется алхимия или своя? Я не сталкивался с ней. А в теории да, используешь foreign key к моделям, которые тебе нужны, а затем аггрегируешь для вывода.
#472 #637105
>>637098
Трендинг на гитхабе.
#473 #637109
>>637093
Coursera, я там как-то шарился - знания неплохие дают. Хз что со стоимостью обучения.
Ну и классик вариант - codeacademy/
#474 #637113
>>637109
Он уже бесплатную курсеру прошел. Кодекадеми ничего нового теперь не добавит.
#475 #637122
>>637113
Сорри, в глаза после работы долюблюсь.
Я бы на его месте за Лутца взялся, это даст довольно неплохие знания.
#476 #637130
>>637122
Спасибо, Анон.
Нашел на торрентах его.
#477 #637133
>>637122
Я бы на его месте реальные задачи искать начал. Знания - это прекрасно, но он быстро разочаруется в этом говне, если не будет превращать знания в действующий код. Пусть скриптами автоматизирует все, что может; решает задачки на checkio или codewars; разбирается в чужом опенсорс на гитхабе; начинает реализовать какую-то свою идеи, обложившись гуглом и stackoverflow.

А Лутц при этом используется, как справочник, чтобы не изобретать велосипеды.
#478 #637136
>>637133
Благодарю, бро. Да, с практикой куда интересней учить.
#479 #637144
>>637136
Если с идеями для проектов голяк, то правда checkio попробуй - там задачи с возрастающей сложностью. Плюс они пытаются их подобрать таким образом, чтобы решения можно было где-то в большом проекте использовать. Плюс по каждой задаче смотри первые три most voted решения других людей и сравнивай их со своими, там интересные фишки попадаются.

Со временем начнут появляться мысли чего-нибудь такое написать. Распарсить какую-нибудь страничку, написать скрипт автоматического бэкапа порнухи, или скрипт для наведения порядка в папке Downloads, например. Можешь попробовать свои реализации классических алгоритмов и структур написать. Разные виды сортировок или связные списки. Поймешь заодно, как это все работает.
286 Кб, 470x421
#480 #637154
>>637144
Есть еще на двоще добрый Анон, Чаю.
#481 #637202
>>637103
Да я уже подумал, что может быть лучше использовать обычные integerfield's, а во view сделать один sql запрос и выгрести все, хз, выгоднее ли это с точки зрения обращения к бд
#482 #637204
>>637202
Оптимизируй только когда понадобится, ты таким образом избавишься от 99% проблем, серьёзно.
#483 #637207
>>637204
Да, анон, это вообще золотое правило разработки. Кнут вроде советовал. Но тут дело, скорее в том, что sql - для меня проще, лол
#484 #637280
>>637204
Когда понадобится может оказаться поздно, и для оптимизации придется переписывать 60% кода и менять архитектуру. Вот веселье то будет.
60 Кб, 551x551
#485 #637324
>>637280
Вот когда понадобится, тогда и приходите.
#486 #637377
>>637204
Это не отменяет необходимости нормального проектирования, и выбора структур данных. И вообще скорее про ++i vs i++
#487 #637424
Сап. Есть код:
while ['.' in i for i in res].count(True)<CHAIN_LENGTH:
....key = ' '.join(res[-2:])
....ch = choice(words[key])
....res.append(ch)

Почему-то каждую итерацию res пересоздаётся заново, вместо того, чтобы добавлять в себя элементы. Если исправить условие цикла на

while len(res)<CHAIN_LENGTH:

то всё работает нормально. Что вообще происходит? Я уже нифига не понимаю.
#488 #637429
>>637424

>>['.' in i for i in res].count(True)


Что это?
#489 #637430
>>637429
res - это по сути слова, которые я потом объединяю в предложение. Тот кусок кода проверяет количество точек, т.е. фактически количество предложений.
#490 #637433
>>637430

>>count(True)


Хули тут "True"?
#491 #637435
>>637433
udp: он у тебя 1 раз выполняется походу
#492 #637436
>>637435
Проверял уже. Исправил на
while number_of_dots<CHAIN_LENGTH:
...
....number_of_dots = [('.' in i) for i in res].count(True)
Результат тот же.

>>637433
'.' in i возвращает True/False
#493 #637437
>>637435
>>637433
Да и вообще, суть не в верности условия, а в том, что res новыйна каждом шаге.
#494 #637438
>>637437
Можа пришлешь побольше кода, а не урывками?
#495 #637473
Антоши кто пользуется PyCharm.

Допустим у меня проект с вложенными packages:
myproj.aaa.bbb.ccc
и в последнем определён класс MyClass

в другом месте своего проекта я пишу
MyClass.<ctrl+пробел>

PyCharm заботливо показывает список того, что он может импортировать. Выбираю свой проект, <ENTER> вверху создаётся строчка с импортом.
Во всех моих проектах всё работает отлично и создаётся как положено:
from myproj.aaa.bbb.ccc import MyClass

Но вот в одном проекте по какой-то причине генерирует
from aaa.bbb.ccc import MyClass

(путь не абсолютный от корня, а относительный)

Вангую дело в настройках проекта. В чём может быть дело?

Python 2, во всех файлах стоит рекомендуемая строчка:
from __future__ import absolute_import
35 Кб, 340x604
#496 #637479
Django. Борда. 2 модели: треды и посты. Просмотр борды (треды + последние посты в них).
Как это реализовать без чудовищных костылей?
У меня получается какой-то бред с подгрузкой всех постов, цикл с отсеиванием ненужных, затем адские циклы в шаблоне. 2 запроса.
Проще это сделать через raw sql? И выводить одним циклом?
Помогите плес.
#497 #637490
>>637479
не знаком с django, но это обычно делается на SQL.

Таблицы:

Threads
id (int или GUID), первичный ключ
caption (varchar(100))

Posts
id (int или GUID), первичный ключ
thread_id (ссылка на id треда)
post_number (int - порядковый номер поста в треде)
message (varchar(1000)) - сообщение поста
dt_created (datetime) - когда создан пост

Примеры использования (на MS SQL)
Вывод 10 названий тредов + дат создания на странице:
SELECT TOP 10 t.id, t.caption, min(p.dt_created) -- время создания треда == времени создания первого поста
FROM Threads t
LEFT JOIN -- чтобы также выводились треды без постов
Posts p
ON t.id = p.thread_id
GROUP BY t.id, t.caption
ORDER BY min(p.dt_created) DESC -- от последнего треда к старым

дальше уже по для каждого полученного id треда запрашиваешь столько постов, сколько надо.
#497 #637490
>>637479
не знаком с django, но это обычно делается на SQL.

Таблицы:

Threads
id (int или GUID), первичный ключ
caption (varchar(100))

Posts
id (int или GUID), первичный ключ
thread_id (ссылка на id треда)
post_number (int - порядковый номер поста в треде)
message (varchar(1000)) - сообщение поста
dt_created (datetime) - когда создан пост

Примеры использования (на MS SQL)
Вывод 10 названий тредов + дат создания на странице:
SELECT TOP 10 t.id, t.caption, min(p.dt_created) -- время создания треда == времени создания первого поста
FROM Threads t
LEFT JOIN -- чтобы также выводились треды без постов
Posts p
ON t.id = p.thread_id
GROUP BY t.id, t.caption
ORDER BY min(p.dt_created) DESC -- от последнего треда к старым

дальше уже по для каждого полученного id треда запрашиваешь столько постов, сколько надо.
#498 #637505
>>637479

>адские циклы


Чому адские?

Посты связаны по первичному ключу с тредами.

Один цикл - вывод все тредов, второй вложенный - всех постов в треде по ключу. Во вьюхе оставляешь последние N постов.

>>637490

В Джанго SQL запросы встроены в API.
59 Кб, 510x521
#500 #637539
>>637513
БАМП!
#501 #637564
Добавил еще ультрагодноты, хотя давно надо было уже это сделать.

https://github.com/TheKnightsWhoSayNi/info/wiki/Books#Лёгкие-книги
#502 #637591
Анончик, есть форма для джанги

class RegistrationForm(UserCreationForm):
username = forms.CharField(required=True, max_length=25)
email = forms.EmailField(required=True)
password1 = forms.CharField(widget=PasswordInput)
password2 = forms.CharField(widget=PasswordInput, label='Confirm Password')

class Meta:
model = User
fields = ("username", 'email', "password1", "password2")

def clean_password2(self):
user = super(RegistrationForm, self).save(commit=False)
user.email = self.cleaned_data['email']
password1 = self.cleaned_data['password1']
password2 = self.cleaned_data['password2']
if password1 != password2:
raise forms.ValidationError("Passwords do not match.")
return password2

Вопрос: каким образом вызывается функция клин_пасворд? Что её вызывает?
#503 #637661
Наконец-то питонотреды начали закрывать.
#504 #637672
>>637661
капелюх-треды начали закрывать
#506 #637697
>>637687
Поделись цветовой схемой, плиз.
#508 #637704
>>637701
У меня в рубях он не подсвечивает аргумент >_<
#509 #637790
>>637438
Уже нашёл ошибку.
try:
...
except:
....pass
#510 #637806
Я к вам с платиной, ребята. Правда, что на питоне нет работы для новичков?
или это все враки?
#511 #637817
Где перекат то?
#512 #637819
Как выводить юникод в cmd?
#513 #637930
>>637806
Ну фиг знает, я имея год опыта таки смок устроиться backend погромистом, и это в мухосранске
#514 #637939
>>637930
а где год опыта приобрел?
#515 #637940
Сап. Есть кусок кода http://pastebin.com/yvtF9SyM

Проблема в том, что
print(">RES 0:", res)
почему то выдаёт [''], хотя в first_word пустых строк нет вообще.

Пример вывода:
'.' in first_word False
'' in first_word False
' ' in first_word False
'.' in res[0] False
'' == res[0] True
' ' in res[0] False

>RES 0: ['']


.

В чём может быть проблема?
#516 #638004
>>637940
first_word - это список?
#517 #638006
>>638004
Да. words - это дикт.
#518 #638009
>>638006
У тебя res = choice(first_word), выходит что res строка, но потом ты аппендишь что-то в нее, разве это сработает?
#519 #638015
>>638009
first_word - это лист листов типа [['a', 'b'], ['c', 'd'],]
#520 #638052
>>637940
Вот здесь не пойму:
first_word = tuple(filter(lambda x: c.lower() in x[0].lower(), words.keys()))
Ты берешь ключ словаря, и проверяешь совпадает ли введенная строка с первым символом ключа. Есть подозрение, что ты имел в виду что-то другое.
#521 #638067
>>638052
В общем, я хочу найти такие пары слов, в первом которых присутствует введённый мной кусок, т.е. c.
words = {
('a', 'b'): 'c',
('d', 'e'): 'f',
...
}

Но в данный момент это роли не играет, я просто Enter тыкаю, так что тамошнее условие не выполняется. res бывает равно [''] даже в первой итерации.
#522 #638075
>>638067
Если тыкаешь enter, тогда только в words['.'] смотри, больше и нет ничего.
#523 #638086
>>638067
И проверки на содержания '.' в любом случае будут False, если у тебя все элементы списки, даже если у тебя будет что-то подобное [['',' '],['.',' ']]. Ну ты понял.
#524 #638091
>>638075
Я перед всем этим специально пробегаюсь по words и удаляю пустые строки отовсюду.

>>638086
Ну да, с проверками тупанул. Сейчас исправлю, может в этом дело.
#525 #638183
Исправил. Заработало.

>парсить всякое говно, а реально крутые спецы сосут хуи на уёбищной работе за копейки.


Начало додумайте сами.
#526 #638375
elasticsearch vs solr под haystack.

Какой стул выбрать?
#527 #638398
>>638375
Смотря какие у тебя задачи.
#528 #638404
>>638398

Поиск для блога.
#529 #639937
Когда перекат?
Тред утонул или удален.
Это копия, сохраненная 9 февраля 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски