Это копия, сохраненная 4 мая 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Сап программмач.
Нужно вывести окно, в котором мышкой тыкаются в произвольных местах точки.
И После определенных вычислений нужно эти точки соединить в некотором порядке.
Кстати сами точки должны знать свое расположение в полярной системе координат.
т.е. свой радиус и угол наклона.
Собственно вопрос: какая библиотека подойдет?
Я никогда не работал с GUI, но беглым взглядом вижу что PyQt подерживает взятие позиции курсора http://pyqt.sourceforge.net/Docs/PyQt4/qcursor.html. Думаю клики он тоже ловить умеет.
https://stackoverflow.com/questions/19825650/python-pyqt4-how-to-detect-the-mouse-click-position-anywhere-in-the-window
Ясно. Продолжай держать нас в курсе.
>urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
У меня есть деплой, и там каортинки загруженные с админки так не отображает. Мне не охота ебаться с ngnix там и прочим потому что хостинг не позволяет да и образовательных целей нахуй не надо. Памахите.
Бля разметка, ну да ладно.
https://pythonspot.com/
Туториалы до пизды, все равно забудешь все. Главное это практика, прикладной код, а не школьная хуйня, а там уже и сам все изучишь.
Пару раз по доками прошелся - и вперед писать свой двач.
Вот я так просрал кучу лет, читал книжки, туториалы, думал, что это поможет, а в итоге всё равно начинаешь думать с нуля, находить другие приемчики, заново читать доки, когда пишешь реальный проект.
А я так просрал все внимание. Когда начал галопом прыгать по вебу и интересующим меня фреймворкам, а потом выяснил что существуют itertools, collections и что чтобы вернуть None вместо несуществующего ключа, можно использовать .get а не писать блок проверки.
Ну это ясное дело.
Ясно, у довна обострение прост.
newcoder.io
>>931941
Окей, антош, что тогда юзать? Посоветуй. Ну и желаетльно линк дай на адекватное описание процесса установки/запуска.
Продолжаю постить годноту в трехд
У этого мужика еще было годное выступление про метаклассы.
Допустим у тебя есть ютуб урл на входе, алгоритм разработки таков:
1. Идешь в гугл, спрашиваешь: "how to get the direct url of youtube video" (+опционально %языкнейм%), теперь у тебя есть способ преобразования "https://www.youtube.com/watch?v=кодвидео" в "https://видеохостинг.com/blablabla.mp4", полдела сделано.
2. Теперь опять идешь в гугл, и спрашиваешь: "how to download a media file python"
гугл говорит что-то типа:
> import coollib
> coollib.download('https://видеохостинг.com/blablabla.mp4', '/ДискЦе/file.mp4')
3. Оборачиваешь это все в свой main.py и выкладываешь на гитхаб.
Все, можешь спокойно идти трудоустраиваться за 300 к/сек.
1) Как проверить - блокируется ли приложение или нет?
2) Добавлять в список словарь - блокирующая операция или нет?
3) Есть ли специальные средства для вызова системных команд, типа ls и тд? Или делать через subprocess?
4) Может кто даст нормальный пример хорошего веб-приложения на твистед? С роутерами, пост запросами, какими-нибудь длинными неблокирующими операциями? Мне просто код посмотреть и сделать по подобию.
Вроде все, спасибо.
Почему эта ебаная программа
a = 10
b = a(type)
print(str(b))
не возвращает мне слово int?
А, я понял, я просто даун.
Вообще тип вызывается вот так
a = 10
b = type(a)
print(str(b))
Но в таком случае он возвращает <class 'int'>
Хм...
А в чём смысл брать менторов на ночь, кстати? Ведь всё равно обучаться будешь не больше пары часов, а если немного перед работой утром захочется освежить знания, так ещё на часок можно взять.
Ну так и чего тебе не нравится-то? Так вот питон типа обозначает, <class 'XXXX'>. Если хочешь получить конкретно то, что было написано при объявлении (class ZZZ: ...), то обрабатывай эту строку, формат всегда один.
name = input("Please tell me what's Your name? ")
print("Nice to meet You, " + name)
def age(age_1):
if age_1 == 20:
print(name + "'s age is " + age_1)
else:
print("Sorry, You should go back and print number")
age_1 = print(input(name + ", please enter Your age: "))
Почему возвращает ВСЕГДА else, а не if условие? я ввожу 20.
Сначала хотел просто чтобы он тип проверял, как в этом примере >>932094, но пока не знаю как это реализовать, ибо возвращает как анон подчеркнул >>932096 class 'int', наверное, надо просто со строками играть типа len[7:9]
С отступами не проебался, просто почему то съелись отступы после отправки.
>age_1 = print(input(name + ", please enter Your age: "))
В переменную age_1 записывается то, что возвращается функция print. Что возвращает функция принт?
Перед твоим следующим вопросом, input возвращает строку, а ты это потом с числом сравнить хочешь. Строка не равна числу никогда.
>но пока не знаю как это реализовать
type(x) возвращает именно тип переменной x, а не строку с его названием. Для простоты можно сказать, что класс и тип это одно и то же. Так вот, если ты хочешь сравнить тип/класс переменной с нужным тебе, почему не хочешь просто взять и сравнить их? Вот ты сравниваешь две переменных, в которых записаы цифры, а у тебя будут, условно, две переменных, в которых записаны классы. Никакой разницы нет.
Вопрос всем работающим:
Почему требования при трудоустройстве на питон слабее, чем при устройстве на ту же джаву? Т.е. , насколько я знаю, на собеседованиях по джаве спрашивают хотя бы основы - простейшие алгоритмы и структуры данных, ООП и тд.
На питоне же самый каверзный вопрос который мне задали за все время это что будет если сложить True и False. Уточню что я джун-питонщик и для работы джава пока не требовалась. И до сих пор я устраивался только в сомнительные-полусомнительные конторы.
Бывают такие ситуации, когда СТУПОР, и можешь неделями пытаться решить проблему и в итоге бросишь и пойдешь работать в мак, а ментор мог бы за пять минут решить и объяснить.
Качалка с ютуба это хуйня однострочная, ты лучше вкатывайся в веб, напиши более-менее функциональное приложение на фласке, например. Традиционно - это написать борду, но можешь и своё что-то придумать. Это не сложно, но зато придется использовать более широкий стек знаний.
>Качалка с ютуба это хуйня однострочная
Привет из 2005? Там хуйню сейчас понаделали такую, сигнатуры какие-то получать, js/swf код выполнять.
>>932134
Мне кажется, ты не так мой вопрос понял. Или это я усмотрел намёк на проституток там, где его не было.
>з 2005? Там хуйню сейчас понаделали такую, сигнатуры какие-то получать, js/swf код вып
Щас бы юзать голое апи вместо божественных библиотек.
apt -y install youtube-dl
Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
https://ru.scribd.com/document/339188541/A-Byte-of-Python
Лутц нужен только когда уже вкатился и имеешь представление что к чему. Для начального уровня достаточно документации/онлаен академий/книжек для нубов. Потом пишешь пару своих прикладных мини-проектов, начинаешь вдуплять, думать об оптимизации, встроенных функциях вместо своих костылей, алгоритмах, тогда уже и открываешь всякие лутцы.
Ну ты тупой школьник. Переходишь в шапку на гитхабе и смотришь раздел Легкие книги, читаешь их и начинаешь программировать на питоне через 5 часов.
Выше мне ответили, что Лутц для тех, кто уже разбирается
есть куда дешевле, если речь не о C++ конечно
>Почему требования при трудоустройстве на питон слабее, чем при устройстве на ту же джаву?
неправда вообще
Бамп.
re.finditer ищешь все индексы ; потом берешь каждый 5 индекс, заменяешь по нему в строке.
r'^$' : я так понял это главная страница?
Чем отличается urls.py в настройках проекта от созданной urls.py в приложении? Про первое понял, что это настройка ссылок, но про второе - нет.
>Чем отличается urls.py в настройках проекта от созданной urls.py в приложении?
В настройках проекта - главный файл. Там ты можешь подключать urls.py из отдельных приложений. Но можешь вообще ничего не подключать, а все писать в главном файле, если не планируешь использовать свои приложения отдельно в других проектах.
Просто по символу генерировать, считать и запоминать ";", а при вызове генератора join сделать.
> веб-фреймвок НЕ для дебилов, без миллиона слоев абстракции, автоматики, "магии", чтобы легко заменялась встроенная ORM и шаблонизатор
очевидный bottle, Все ручками
такой подход импонирует лично мне, по опыту который у меня был много лет назад (мне всегда проще было собрать весь проект из отдельных компонентов либо некоторые даже написать самому: тот же роутинг, каскадные конфиги и т.п.). но мне 32, я уже не быстро учусь и пытаюсь вкатиться джуниором в питон. изучать способы обхода волшебства джанги будет трудно и непонятно зачем нужен фреймворк-черный ящик чтобы потом с ним воевать. (слышал что и компонентны у него не идеальны и их многие заменяют). но я в не том положении чтобы выебываться. вопрос насколько это вообще реально устроиться питон джуном удаленно не зная джанги (но зная на начальном уровне например фласк, или черрипай или боттл или что-то подобное)? т.е. смысл-то не учить джангу если на любой работе мне придется с ней столкнуться, тупить, не справляться и т.д.
Спасибо, немного въехал уже.
Шансов вкатиться на Flask перепрыгнув Django у тебя нет.
Бамп. Платиновый же вопрос. Скажите, что юзают в продакшене-то?
СКЛ-АЛХИМИЯ
Ну и блевотина.
>но никак не могу понять, где и как можно применить ООП
Если не можешь понять, то и не нужно.
Возможно, в своих задачах я мог бы его применять, чтобы говнокод стал чуточку лучше.
раньше до питона руки не доходили, но задачка-то хуйня, единственное на чем встал в ступор - при загрузке страницы с помощью urllib2 срабатывал редирект, НО! при внимательном рассмотрении трафик дампов (девконсоль браузера мне тоже ничего не показала и я решил проверить наверняка) выяснилось что 30x там не пахнет, а редирект сделан window.location.href= в яваскрипте страницы (они там организованы в фреймы - для этого и редиректят после проверки)! БЛЕАТЬ НО КАК ЖЕ ТАК? питонячья urllib2 чо нативно умеет яваскрипт или это какая-то исключительная ситуация?
редирект-то я задавил кастомным обработчиком urllib2.HTTPRedirectHandler, но ситуация так и осталась не понятной.
P.S. еще была трабла в том, что на боевом роутере (TP-Link) требуется авторизация, и у китайцев походу свое видение использования Authorisation Basic, т.к. в хедерах они передавали правильную строку, но не с 401 а с 200! ну допустим это еще можно понять, чтоб не браузерное стандартное окно рисовать, а свою красивую форму, но она при отправке авторизации вместо передачи чисто в заголовке, как положено, передает правильно сформированную строку в куке - вот кто все-таки уебок - китайцы или я?
Ну хз, поставь джангу, напиши на ней борду/бложек, по ходу смотри как там работа с классами реализована.
stop writing classes.flv
ооп в пифоне удобно как данные + методы. можешь конечно свои данные явно закидывать в функцию, но какой смысл? "abc".upper() vs str.upper("abc")
Нужно для повторного использования своего кода.
Из этой задачи проистекают требования к формированию объектов.
Например ты хочешь в далеком светлом будущем воткнуть своего нахуй никому не нужного бота для телеграма в свою будущую охуенную мега-программу которая будет делать хуй знает что, причем ботов в этой программе планируется запускать сразу пачками. Нужно взять существующий говнокод, добавить к нему процедуры инициализации параметров по умолчанию, перетрясти код в плане выявления всяких неявных параметров, передаваемых основным функциям, обернуть все это в класс, протестировать в работе, написать документацию. Тогда через год для запуска пяти ботов с разными параметрами тебе нужно будет всего лишь импортнуть описание класса и написать пять строчек инициализации для объектов. Если ты всего этого не сделаешь, через год есть шансы что твой бот для телеграма вообще не запустится и чтобы разобраться в чем дело и запустить их пять штук разных понадобится уйма времени, которого скорее всего у тебя не будет. Как-то так.
Как боженька спизданул. Спасибо.
посмотрел, я все равно не понимаю, как это использовать. Это скорее поможет мне вытащить текст между тегами <a><a/>, а мне нужен то нужен весь текст, который не находиться между тегами и который не теги.
vim/emacs/nano
ну это была моя первая мысль, но ничего адекватного написать не удалось. Но все идет к тому, что сейчас пойду покорять регулярки...
Погуглил за тебя, держи.
https://stackoverflow.com/questions/4995116/only-extracting-text-from-this-element-not-its-children
спасибо
Такой бред.
хули ты выебываешься тут!? бери джангу и иди нахуй, волшебства ему много блять.
ты мне втираешь какую то дичь!? как такое вообще может быть?! что бы база данных на другом сервере работала!!!!???!??!
Ну, блядь, ты знаешь что такое разные энвайрменты? Вот база на одном, а скрипт на другом. Мне, блядь, данные оттуда вытягивать надо, фирштейн?
Ну так бери любой модуль для работы с мускулом и подключайся, в чем проблема то?
чоза экскваерты!?
https://dev.mysql.com/doc/connector-python/en/
Достаточно канонично? Ты за 7 часов мог бы уже и сам нагуглить.
а на русском есть!??!? чо ты мне лажу какую то опять втираешь!!??! или это не ты!?!??! вы чо меня дрочите!!?!? вы на каком серваке щас подъеду!!
э мне тоже за данными! чо думаешь ты один щас тут без данных сидишь!?
Частный Mayskldab
DB = Mayskldabkconnect (имя хоста = "локальный" # Kmu lsaquo, Nthvi Jmbiri локальный
Vsuta = "Ohne" # Dzina Lolovera Lnu
Psswd = "Megajonhi" # Acinsinsi Статья
DB = "Johydb") # Dzina L'Zkfukufuku
# Muyenera Kulenga Cintu Cholojera. Изо Tiani
# Ину Kudzpereka Mf ँ так Onse Muyenera
= Кубок Dbkcursor ()
# Ntcito брутто Onse Mukufuna
Krkexecute ( "Ква Yor_tebl_nam Snkni *")
Виолончель # Sindikizani Onse приходят Oynba Mizre Onse
Ква Mzere Krkfetchall бесплатно ():
Kusindikiza Mzere [версия]
Dbkclose ()
Программирование это явно не твое, ты даже необходимую информацию найти не можешь.
та нахуй ты прикладуеш?
Хассль.
>вместо божественных библиотек.
А, то есть для тебя "написать скачивалку с ютуба" это "заимпортить youtube-dl и вызвать его"? Так любая задача в одну строку будет решаться.
http://ideone.com/964NW7
Какие-то странные предложение в треде были, вручную индексы через finditer считать, лол.
Ну так, блядь, расскажи про свои собесы по питону. Что тебя там такого охуенного спрашивали?
В Pycharm Edu есть возможность цеплять курсы из сторонних источников и со спокойной душой их проходить. Вот только не ясно где эти курсы искать кроме стандартных и существуют ли они вообще? Помогите зеленому хорошими линками.
Нужно автоматизировать через процесвс через 3й питон.
Проблема в том, что os.system(#команда) после выполнения данной команды закрывает окно, а последующие вызовы не будут относиться к процессу удаленного подключения.
Как мне сделать так, чтобы последующие команды относились к процессу с запущенной удаленной сессией?
Используется шиндовс
http://python.org
https://github.com/search?o=desc&q=python&s=stars&type=Repositories&utf8=✓
https://www.google.com
https://stackoverflow.com/
Ты хоть понимаешь что ты максимум тупой копипастер?
Себас, школота.
Cпасибо скажи. Бесценный опыт.
Например, мне на "привет" от друга надо отвечать "привет". Мне надо будет весь свой код в бесконечный цикл пихать и на хостинг или как?
Бесконечный цикл или cron
а там шо хендлера нету сообщений никакого? не может быть. есть же боты вконтакте всякие
Как фиксить это?
Неужели 4гб оперативы и i3 неподходит для написания лаб и изучения Django? Обожаю Java
html отдаёт какую-то хуйню, в которой нету изображений со страницы вообще.
Помимо всего прочего, там каждая страница открывается какого-то хуя в новой вкладке, если клоцать "Дальше". Можно, конечно, задать последнюю страницу и подставлять аж до первой в url и парсить каждую, но может есть другой способ?
<div class="image"><a href="http://img0.reactor.cc/pics/post/full/Dota-Art-Dota-фэндомы-Mirana-3661164.jpeg"
Через BeautifulSoup парсишь все jpeg с классом image
http://pastebin.com/fJENeCFd
Если сделать get('src') для нулевого элемента в response? то работает, а если в цикле, то нет. Хули?
Уже и для 0 не работает, сцука.
через lxml
from lxml.html import fromtstring
import requests
document = fromstring(requests.get(url).content)
image_urls = documnt.xpath("//div[@class='image']/a/@href")
немного набухан
Я уже давно ничего не парсил. По памяти просто посоветовал как делал я раньше. Может кто-то умелый тебе подскажет позже с нюансами.
>>933256
<a class="prettyPhotoLink" href="http://img1.reactor.cc/pics/post/full/Dota-фэндомы-Luna-the-Moon-Rider-Dota-Art-3645677.png" rel="prettyPhoto"><img alt="Dota,фэндомы,Luna the Moon Rider,Dota Art,Arcan-Anzas" height="1265" src="http://img1.reactor.cc/pics/post/Dota-фэндомы-Luna-the-Moon-Rider-Dota-Art-3645677.png" title="Dota,фэндомы,Luna the Moon Rider,Dota Art,Arcan-Anzas" width="811"/></a>
получается массив таких элементов. Как залезть сюда еще в img? get-ом могу вытащить только то, что идёт до <img?
Да...
что это за хуйня? Мне надо добраться до тега img, который вложен в <a> и всё. Нахуя ты это высрал?
>>933210
>аёт какую-то хуйню, в которой нету изображений со
БРО вот http://pastebin.com/AeDB14L4
event based architecture
мамке привет
Заебись, но не совсем. Я выше запостил, что у меня получилось. Дело в том, что без ватермарки изображения лежат в <img src>, а не в <a>
Понял посыл, анон. Добра.
Другой вопрос теперь. На сайте дохуя страниц. Единственным выходом я нашел - сгенерить массив чисел от 1 до 649 (последняя страница сейчас) и подставлять в линку при парсинге. Возникает проблема, как сделать так, чтобы скрипт автоматически начинал с последней страницы, а не приходилось ручками идти на сайт и смотреть, какой номер сейчас последний?
>Парси пагинатор
<div id="Pagination" class="pagination"><div class="pagination_main"><span class='current'>Назад</span><div class="pagination_toggler">...</div><div class="pagination_expanded"><span class='current'>650</span><a href='/tag/Dota%2BArt/new/649' class=''>649</a><a href='/tag/Dota%2BArt/new/648' class=''>648</a><a href='/tag/Dota%2BArt/new/647' class=''>647</a><a href='/tag/Dota%2BArt/new/646' class=''>646</a><a href='/tag/Dota%2BArt/new/645' class=''>645</a><a href='/tag/Dota%2BArt/new/644' class=''>644</a><span>...</span><a href='/tag/Dota%2BArt/new/2' class=''>2</a><a href='/tag/Dota%2BArt/new/1' class=''>1</a></div><a href='/tag/Dota%2BArt/new/649' class='next'>Дальше</a></div></div>
>Ананасы,в чем сакральный смысл обязательного добавления запятой в кортеж с одним элементом?
В противном случае любое выражение со скобками становится неотличимо от кортежа. Как пример:
x = (a + b) + (c + d)
x == (a + b, c + d) # True
>>933517
Да иди ты нахуй со своим пичармом.
почему нельзя сделать цикл, который проверяет число страницы на доступность? Пусть проверяет от 1 до, скажем, 1000, при ответе "не найдено такой страницы" пусть останавливает цикл и выдает номер предыдущей доступной, допустим 998. и этот номер возвращает в главную твою часть кода.
А закрывать файлы кто за тебя будет?
>>933448
Иначе ты кортеж с одним элеметом не создашь, потому что именно запятая делает элемент кортежем, а не скобки.
(5) == 5
(5, ) != 5
>>933489
сам-то понял, что написал?
>>933519
Заметна польза этого пайчарма тут -> >>933197 , >>933204
>>933204
При использовании нормального редактора этого более чем хватает.
>Иначе ты кортеж с одним элеметом не создашь,
Ну, не считая побочного случая с tuple(elem), когда elem это строка с одним символом, или при обрезании уже существующего кортежа до одного элемента. А то набегут же сейчас.
Можно, тут на всё воля программиста!
>сам-то понял, что написал?
А то! Это пример неоднозначности, которая бы возникала, если бы грамматика допускала запись кортежа без запятой.
Пиши асинхронную имиджборду которая способна держать 5к запросов в секунду. Классика жи.
пижже
c = Category.objects.get_or_create(name=name)[0]
Что значит [0] в конце?
Нулевой элемент списка.
>get_or_create
>Returns a tuple of (object, created), where object is the retrieved or created object and created is a boolean specifying whether a new object was created.
В документацию заглянуть лень?
Не знаю, насколько это актуально здесь и взлетит ли, но я запилил группу в телеграмме по питону. Туда зазываются все желающие вкатиться и вкатывающиеся, как и я, для совместного поиска решений. Я пока практикуюсь писать ботов для телеграмма, там же их можно и тестить. В общем, всем пис.
https://t.me/pythonach
Окей, гугл.
Поясните в чем смысл подобной конструкции:
Class Govno:
.....
.....
.....
def _huy(self, pizda):
....
def huy(self, pizda):
return _huy(self, pizda)
Неоднократно встречал подобное, в том числе и в серьезных проектах.
Ну конкретно тот пример бессмысленный. Я еще понимаю, если бы там был property или еще чего.
Только вкатился во флакс, сори за хуевый вопрос.
Не могу никак достать значения из ключей src и т.д.
как вообще их оттуда дергать ?
Пиздец.
Также, как и со словарями.
Залей жсон куда-то свой и скажи, что тебе надо достать именно. Значения можешь стереть.
http://fex.net/#!770932802292
Мне нужно просто доставать ссылки из всех src
Мне хотя бы понять как достучатся в словарь который в словаре, исходя из моего Json`a
В хаскеле бы делал, все легче.
…а джанго это картонка, на которой бомж спит возле бани.
И как можно максимально безкостыльно сделать автоматический подбор порта? Не буду же я в 10 терминалах 10 разных портов прописывать.
Скриптом?
чего тут сложного?
# сюда приходят сообщения
@channel_session_user
def ws_recieve(message):
# получили тело сообщения
msg_content = json.loads(message.content['text'])
# отправили ответ в текущий канал
message.reply_channel.send({'text': 'slojno slojno blyat'})
# добавили текущий канал в группу
Group('te_komu_slojno').add(message.reply_channel)
# отправили в группу
# взяли юзера джанго
username = message.user.username
Group('te_komu_slojno').send({'text': 'we have a new member! {}'.format(username)})
по моему проще некуда.
Так правильнее для наследования.
двачую
только зачем имплементация в самом интерфейсе? не правильней тогда сделать так?
def huy(self, pizda):
raise NotImplementedError('huy must implement in subclass.')
думаю так тупо удобней кому то было вот и зделол, остальные поглядели и тоже зделоли и понеслась...
чо сразу наркоман? везде так делаю, сразу видно если проебался с реализацией
>>933968
Я вернутся
и сделать "хуйня"
В общем эта дич у меня так работает:
стучусь в словарь по индексу 1, полученое сохраняю в number_photo и так дальше пока не дойду к фото, а там уже дергаю с нужных ключей их значения
Суть в том что бы получить самый большлй размер фото который есть в вк, по этому там и это блок из иф - елиф
НО, вот там сперва стучусь по индексу что бы все остальное получить)
этот индекс должен быть как строкой передаваться "1"
И вот допустим мне нужно 200 фото потянуть в цикле через всю эту конструкцию
То есть в Json вернуло 200 ключей и нужно каждый из них прогнать и потянуть ссылку, но как ?
бля,кароч, вы поняли
r = s.post(URL, auth = HTTPBasicAuth(USERNAME, PASSWORD))
following_error_occurred: "Произошла ошибка",
server_did_not_respond_in_time_try_again: "Сервер не ответил вовремя. Пожалуйста, попробуйте снова.",
ты сука хуйни нагородил пошел на хуй блядь
Больной ублюдок ты что творишь? Ты хоть книжки почитай чукча бля.
digits_pattern = re.compile(r'^[0-9]+ [0-9]+$', re.MULTILINE)
try:
matches = re.match(digits_pattern, query.query)
except AttributeError as ex:
return
num1, num2 = matches.group().split()
нужно переделать его так, чтобы проверялась одна переменная, то есть грубо говоря, чтобы была только num1. Помогите пожалуйста
Лол, у меня куски кода остались от одной попытки сделать
Я и не заметил)) 0
Все равно они не на что не влияли
А по поводу извращенного доставания из словаря, то по нормальному оно не хочет, максимум что получается то получить номер фото и photo/type
digits_pattern = re.compile(r'^[0-9]+', re.MULTILINE)
try:
matches = re.match(digits_pattern, query.query)
except AttributeError as ex:
return
num1 = matches.group()
Анон, ответь вновь, пожалуйста.
Хотел тебя поблагодарить, я много раз перечитывал, и только сейчас дошло до меня что именно ты имел в виду
Но это же питон. Там даже в основных гайдах от создателей говорят, что не надо делать obj.get('x'), а просто obj.x
>!=None
>NameError, если все src_* None
>AttributeError, если number_photo или photo None
И это на таком простом примере. Уныло.
Мониторю хх, и что-то одни и те же вакансии по кругу, а новых очень мало, если машоб в счёт не брать.
Не знаю. Может кризис сказался?
>>934362
>obj.get('x'), а просто obj.x
Во-первых, нахуй велосипеды, если есть getattr
Во-вторых, getattr(obj, 'x') имеет смысл, если название аттрибута заранее неизвестно, либо если хотим сделать getattr(obj, 'x', 'default_value')
Для всех остальных случаев есть геттеры/сеттеры
Это вообще другой вопрос. Хотя может я путаю.
obj.get - это я имел в виду реализацию интерфейса. Т.е. обращение к полям объекта. И говорю что в питоне это не нужно. А getattr - это полезная штука.
Смотри в инспекторе браузера html код, парси через beautiful soup если сможешь получить страницу. Или посмотри документацию vk api.
Без задней мысли.
Помониторь другие, меня на Моем Круге заебали уже своими молодыми активными коллективами использующими асинхронный микросервисный TDD в корпоративном смузи спортзале.
Через urlopen(site_name).read() получаю страницу, но суть в том, что она отличается от того, что вижу в инспекторе браузера.
А ты получай страницу через вкапи.
Потому что контакт не дурак, он не дает всяким роботам качать. Вдобавок там же через JS рендерятся страницы и тд. Конечно же ты не получишь такую же страницу. Тут либо надо научиться маскироваться под человека и исполнять джаваскрипт, или да, через апи.
А я как раз оттуда удалился из-за слишком назойливых частных хантеров.
Нужно запилить веб-сервис на питоне в качестве проекта по учёбе (студентота). Главное, чтобы были реализованы классы и использовался фреймворк (желательно джанго). Веб-сервис может делать что угодно на ваше усмотрение, главное, чтобы было прокомментировано и понятно.
Кто сможет помочь за символическую плату и очень срочно - мыло ton!R0isemenov17ANUSmaiQ-:lPUNCTUMr\P5u
пишите, что из программача
"Символическую плату" принято указывать явно.
Да, пиши сколько готов заплатить, а мы посмотрим. Я в принципе готов за денек какую-нибудь крудо-фигню запилить. Только учти, мой час в офисе стоит 500 рублей, я конечно с тебя столько не возьму, но имей в виду, когда будешь прицениваться.
Вот я бы тоже не против перейти на фриланс.
Хотя я сейчас считай удаленно работаю. Появляюсь в офисе раз в неделю где-то на несколько часов. Но это полуофициально, поэтому не считается.
>500 рублей
Взоржал с нищей спидерахи, бббгггее. работающей за восемь баксов как мойщик сартиров в испании, хехе. До чего нищий народишко, бббггее.
Еще один забыл таблетки принять и спутал pr с po. И откуда такие в моем уютном питон-треде?
http://pastebin.com/JvVZRXzD
Есть родительский класс, и есть дочерние классы, у некоторых из них есть поле material. Надо вернуть список дочерних классов, у которых material равно входящему параметру search_material.
Сейчас тут крайне медленно такой метод работает - выгребает все элементы родителя, потом итерируется по ним и складывает по одному. В итоге перебор 1,5 кило объектов родительского класса занимает 7 секунд. Это овер дохуя при таких малых объемах.
Как составить правильно запрос, что сразу одним кверисетом вытащить все дочерние классы, у которых значение material совпадает с search_material?
Через prefetch_related не получилось, это, кажется, не совсем то. Пробовал через http://django-model-utils.readthedocs.io/en/latest/managers.html#inheritancemanager select_subclasses() , но там FieldError: Cannot resolve keyword 'material' into field.
когда я пробую подставить значение search_material
А на что ответить-то?
>много раз перечитывал, и только сейчас дошло
Были б тут все такие, которые думать пытаются, а не как этот наркоман с json'ом из вк, всем бы лучше жилось.
Спасибо, анон, то что надо было
Возмездно предполагает некие обязательства, я так не умею и не могу. Лучше безвозмездно в треде (я тут постоянно, если только товарищи Мао и Абу совсем уж не пойдут против меня) или на крайний случайно на почту, по мере возможностей отвечу.
https://stackoverflow.com/questions/2573135/python-progression-path-from-apprentice-to-guru
Как фиксить?
В manage.py shell пишу
from django.conf import settings
settings.configure()
Получаю
RuntimeError: Settings already configured.
Разобрался. Подгружал настройки позже импорта моделей
Решил вкатиться в программирование чтобы доказать себе что я не тупой. (26 лет, думаю надо как то мозг нагружать)
то есть нет цели получать 300к в секунду через 3 месяца.
Почитав отзывы решил начать с Питона.
Из опыта ранее только писал игры на QBasic где то в пятом классе. (в кружке) , единственное что помню что тогда мне это очень нравилось.
Сейчас начал читать Лутца "Изучаем Питон"
Годная книга для старта? Нужно ли читать что-нибудь еще параллельно?
Лучше наебни A bite of Python или курс на codeacademy и делай что-то. Пока ты дочитаешь Лутца, уже забьешь давно
bin(), oct(), hex(). Небыло 0b, 0x и прочих префиксов, перед нужным результатом
result[2:]
А кому покажется не занудным читать пол тысячи страниц основ, которые можно выучить за один день в другом источнике?
Открыл Bite of Python всего 130 страниц.
У Лутца я прочитал 130 страниц только введения и узнал как запускать Python через UNIX, про сериал Monthy Python и про все его существующие модификации.
Спасибо анон!
> Открыл Bite of Python всего 130 страниц.
Там охуенно всё сжато и по полочкам, но мне не хватило, чтоб понять всё полностью. Но для старта - збс.
Лутц — параша редкостная. Я даже Dive Into Python не дочитал до конца, всё стало понятно и я начал писать свои первые опердени. Позже, с удовольствием прочитал весь python cookbook, вот это заебись, хорошо зделали.
Тебя огнём надо обработать.
Я только вкатился, сори.
Этот фак родом из 2015, аккаунт неактивен, аппрувить коммиты некому.
Когда я предложил собрать реально недостающую и новую инфу, в частности по асинку в 3.5, то стало примерно ясно насколько это невозможно при текущей аудитории.
Сам же я не осилю писать полный гайд, т.к у меня опыта и знаний банально меньше чем у многих. Я пятый месяц прерывисто изучаю.
Нет
Ну так форкни тот фак, да подправь.
Пиши что можешь предложить.
Я могу предложить:
- Установка интерпретатора в линукс, использование нескольких версий, установка свежих версий которых нет в репах убунты.
- Новые книги (пьюр питон, джанго) из 2к16: уровень, полезность, наличие воды, наличие перевода, стоимость...
- Бриф фреймворков для веба и не для веба.
- Несколько источников с гайдами.
- Несколько видеокурсов (понадобится коллективное скачивание через генератор премиум линков, т.к лежат на обменниках разбитые на много частей).
- Бриф по Git.
- Бриф по pip.
Ну что-то еще может.
Вот уж не ожидал на имиджбордах подобное услышать.
Собственно нужно ли указывать комментарии к коду?
По факту у меня 2 большие вьюхи, где я много чего делаю, выглядит это, мягко говоря, плохо. Есть мысль попробовать разбить на большее кол-во функций, но как-то оно не очень разбиваться то и хочет, ну и попробовать переписать все на классы(все равно нужно понять, как классы работают). Как лучше решать эту проблему?
Достаточно ли такого кода, чтобы прикладывать его к резюме? Или нужно больше функциональности?
На данный момент реализовано примерно следующие
-Подсчет пользователей через сессии
-Увеличение фото по клику
-Расчет score для тредов(тут же сага и вывод по score)
-Динамическая загрузка страницы
-Добавление идентифицированных ответов с tooltip(тут беда правда одна есть, скип тултипа происходит только после клика по body)
-Модераторы(криво и через админку, но по факту они все же есть)
-Фиксированная форма, которую можно таскать за ручку
В планах докрутить:
-Верхняя панель у треда(обновление, автообновление и т.д.)
-Поиск
-Дроп зона для загрузки файлов
-Возможность оставлять почту и соответственно возможность по кнопки бросать туда письма
>Достаточно ли такого кода, чтобы прикладывать его к резюме?
Я бы показывать такой код постеснялся кому бы то ни было, не то что к резюме прикладывать.
Ну, а что именно не так?
>Достаточно ли такого кода, чтобы прикладывать его к резюме?
У тебя там нет ООП, юнит-тестов, работы с настоящей базой данных, gitflow. В общем, нет даже элементарных вещей, на которые смотрит потенциальный работодатель. Зато, прямо сразу, репозиторий встречает кучей лишнего закоммиченного говна.
Я может и ебанутый, но это пиздец какой-то блядь, где коменты? Где хоть какой-то порядок среди сотен папок? Как эту ебань вообще потом поддерживать?
Может стоить сделать что-то поменьше но с качеством кода получше? Наебашить туда декораторов,рекурсии,регулярок,асинхронности ну специфических либ заюзать, прокоментить все, ну и руководствоваться pep8. И тогдааааа, можно с уверенностью и без стыда его выставлять на показ.
Удачи тебе, антош.
Ну насчет кучи говна я предупреждал, все-таки в 4 утра все делал. Тогда у меня есть пара вопросов
1)Я правильно понимаю, что добавление ООП это переписать просто проект на классы?
2)Не совсем понимаю, что такое работа с настоящей базой данных?(накатывать какой-нибудь мускл и показать, что я умею работать на нем через питон?)
3)На какие элементарные вещи смотрит работодатель?
>>935514
Мне казалось там был порядок среди папок...
Под асинхронностью ты имеешь в виду торнадо?
>1)Я правильно понимаю, что добавление ООП это переписать просто проект на классы?
Class based views. У тебя во вьюхах говнокод лютый, все равно переписывать.
>2)Не совсем понимаю, что такое работа с настоящей базой данных?(накатывать какой-нибудь мускл и показать, что я умею работать на нем через питон?)
Хз, что тот хер имер вииду, один хрен через орм-ку работаешь. Ну ебани например редис для хранения сессий и кэша.
>3)На какие элементарные вещи смотрит работодатель?
Начни с внешнего оформления, почисти репозиторий от говна, добавь документацию и тесты.
C# или Питон?
http://docs.python-guide.org/en/latest/
рекомендацию про тесты забудь, надо не импортить, а жёстко вставить, чтобы работало
Под асинхронностью я имею ввиду asyncio.
Ну и там нет порядка, кучи всякого говна лежат в непонятно как(хотя может тому что это джанго, но на фласке у меня так глаза не разбегаются).
p.s. В любом случае тебе дали годные советы - действуй)
Пс, парень, а зачем ты всё в функции позагонял? На сколько я помню так лучше делать когда участок кода юзается больше 1-2 раз, или же он сликом огромен и будет неудобно читать его в основном теле файла и тогда его выносят, а то у тебя порой попадаются такие йобы как:
>def yoba():
>____....
>____....
>... = yoba()
Не кошерно.
Ну а так в принципе нормально, комменты есть, всякие плюшки def __yoba__(self) юзаешь(забавно, давно не видел так много их в одном месте, что-то недолюбливают их).
Для большей структурированности можешь ещё по файлам распихать и к каждому файлу развернутое описание(если вообще это логически возможно).
p.s. Поясни за тесты, что и как они тестят.
Или же каждый раз проверять ПОСТ запрос и то какие данные в поля форм ввёл, и если поля пустые - значит форма не та, а если заполнены - то что нам надо.
>Пс, парень, а зачем ты всё в функции позагонял? На сколько я помню так лучше делать когда участок кода юзается больше 1-2 раз, или же он сликом огромен и будет неудобно читать его в основном теле файла и тогда его выносят
Для самодокументации. Имя функции - это её комментарий, даёт высокоуровневую инфу о том, что делает код.
>Для большей структурированности можешь ещё по файлам распихать
Там нечего распихивать, один маленький монолитный модуль.
>p.s. Поясни за тесты, что и как они тестят.
Один тест тестит неявные зависимости между родителем и детьми (их там и не было, но когда у меня прога, юзающая либу, неверно заработала, я решил это проверить).
Второй тест (testReferenceCases) не работает, потому что я поленился его реализовать. Там нет ни единого ассерта, это должно было тебя насторожить.
Ещё тебя должно было насторожить хранилище - доступ к нему слишком неудобный.
> Там нет ни единого ассерта
Тому и спросил, как-то странно было не понятно.
>Ещё тебя должно было насторожить хранилище
Тыкни носом где это и чем не удобно
на самом деле там есть ассерт, просто он в цикле
проверяет некоторые частные случаи
>
[code]cyan.Fore=groups["Fore"].stylesDict["cyan"][/code]
должно быть просто
[code]cyan.Fore=groups.Fore.cyan[/code]
На тревисе какая-то хуйня с pypy3, все билды фейлятся, как и большая часть билдов cpython под макось.
Чтобы в пип деплоить на тревис надо класть пароль от аккаунта, что стрёмно, так как авторы pypa не осилили OAuth.
Котаны, вопрос по оформлению.
Что на практике нужно писать в списке документации. Только описание функции и двумя строчками ниже список параметров с описанием этих параметров?
Также, есть ли в конторах требования по комментариям? Или каждый лепит комментарии в меру своей испорченности? Судя по гитхабу, многие считают нормой в нескольких словах объяснить суть того, что они делают, а потом написать огромную стенку текста без единого пояснения.
Вроде как пеп8 говрит, что сначала идет очень короткое описание функции, пустая строка и подробное описание
pep8 - дерьмо, придуманное и принятое в высшей мере странными людьми. Одни обязательные табы чего стоят. Я буду делать по-своему, мой стиль оформления лучше и по моему наблюдению он весьма широко поддерживается инструментами, а значит довольно популярен.
*пробелы
тем не менее, все пепы/прочие стандарты придуманы для того, чтобы им следовало как можно большее колво людей
впрочем, если ты работаешь один - можешь класть на стандарты все, что угодно
Почитай документацию, а именно про int()
Чтоооа? Там наоборот написано, что табы юзать нельзя, лучше пусть будут пробелы. Вообще это не проблема ибо любой текстовый редактор умеет по нажатию на таб подставлять 4 пробела (ну или сколько захочешь). Вообще там вполне разумные правила, например, ограничения длинны строки или пробелы между арифметическими операторами.
>тем не менее, все пепы/прочие стандарты придуманы для того, чтобы им следовало как можно большее колво людей
Принцип простой - не нравится стандарт, по которому код в моей репе - либо не коммить, либо конверти, в исключительных случаях я сам конвертну. Чтобы люди не заморачивались, в проекте лежит .editorconfig. Те странные люди, что юзают pep8 могут продолжать жрать говно, придёт время, сами поймут.
значит так. Пробелы зло, любой репо с пробелами - это боль. Люди должны перестать жрать это говно. Я не собираюсь ни под кого прогибаться, в репе лежит эдиторкогфиг, он всех упоротых адептов пробелов должен поставить на место, так как в нём жёстко прописано, сколько пробелов занимает таб. На самом деле это похую, таб это гибкая фича, сколько настроишь - столько и будет занимать, чисто дело вкуса, таб удовлетворит каждого.
>или пробелы между арифметическими операторами.
исключительно дело вкуса и ситуации, в некоторых случаях выглядит лучше с пробелами, в некоторых пробелы лучше убрать для более интуитивно-понятного кода
Не будем устраивать срач из-за этого, а то я сразу вспоминаю серию из Silicon Valley
Кстати гитхаб не умеет
Гугли " flask multiple forms on one page". Увидишь ответы на stackoverflow про то, что в формы можно передавать параметр prefix, так ты сможешь их различать.
Спасибо антош, выручил:3
Есть проект вида:
dir1:
|-->dir2:
|----|---->testmod.py
|--->test.py
Как мне в test.py импортировать testmod.py на стадии запуска программы, т.е. не ебясь с system PATH до запуска программы, в идеале и не редактируя system path во время работы.
И как вообще джанго импортирует модули?
Спасибо за ответы
Хоть одну книгу beginner level прочитай до конца. Как можно изучить циклы наполовину? Советую Простой питон.
consumer_key = xxx'
consumer_secret = 'xxx'
access_token = 'xxx'
access_token_secret = 'xxx'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
tweet = 'Hello, world!'
api.update_status(status=tweet)
можно как-то элегантно решить следующую задачу?
На вход подается строка1 если эта строка1 является подстрокой строки2 И отличается от подстроки2 на >= 1 и <=4 символов, то функция выдает True.
Я конечно могу сделать список из подстрок2 длиной строки1 и потом измерять расстояние Хамигнтона, но может быть есть более красивый способ?
Как это проще||правильнее сделать? Куда хоть рыть?
Ну хотя бы на уровне циферки "новых сообщений Х"
Прихуярить модель Read со всеми открытымы когда-то темами и пересчитывать все посты каждое обновление страницы как-то тупо, наверняка есть другие возможности более изощренные
на новый пост взять всех отписавшихся в теме и отправить им уведомление. а как еще то и что в этом глупого?
Ты просто умный. Я вот тупой, мне надо по 10 раз одно и то же разжевать и только тогда дойдет.
у меня не работает ctrl+a, ctrl+c, ctrl+v в виджете Text из пакета tkiner.
это я тупой (очевидно) или что происходит?
Раскладку клавы на английский переключи.
Коляныч, не бузе, никто в твоё говно никогда и пуллить-то не будет, если у тебя "свой стиль".
Перенос тут не при чём, дибил.
Тебя надо обработать огнём.
Займись чем-нибудь другим. Отвлекаться на другое дело полезно, ты же занимаешься одним и тем же - кодишь. Род занятия один и тот же.
не отдых не про меня, я тугодум и что бы успевать в нормальном режиме, нужно больше времени кодить... ну и как следствие, с увеличением опыта сокращается время на решение каких то задач.
Первый пик - я через sqlalchemy пытаюсь сделать поиск по трем полям.
Как видно - результат 4 записи.
Второй пик - я копирую sql, который получается из моего кода и запускаю напрямую в базе. Из запроса просто убрал лишнее, чтобы не мешалось. Результат - 5 записей. Т.е. не ищет именно по фамилии - surname. Я не понимаю почему. Облазил гугл уже весь. БД - sqlite.
course/management/article/management_of_the_knitting
course/rukovodstvo/article/rukovodsto_vyazania
kursi/rokovodsto/statiya/ukovodsto_vyazania
Как лучше?
Ну названия транслитом это какое-то дно вне зависимости от контекста, по-моему.
Смотри статьи по SEO.
Stepik.org
Погружаться в питон дальше.
Но ведь когда делятся ссылкой, получается, %r%ht%growgwrg%hsr и т.п., это не ув.
Tango with Django
я ебашу транслитом, удобно, не заморочно и аудитория легко читает ссылку
скорее всего проебался с oauth, проверь все коды, секреты и подобную хуйню. Может токен устарел?
И все это ради чего? 120 тыщ? Да у меня знакомый менеджер по розничной продаже межкомнатных дверей получает больше.
Ну и нахуя вы все вкатываетесь в программинг блядь?
ну так уволься нахуй, че ты ноешь то.
Все вкатываются потому что у кого-то либо мечты, либо жрать нечего
>Add the request context processor to your settings.py, e.g.:
>from django.conf.global_settings import TEMPLATES
>TEMPLATES[0]['OPTIONS']['context_processors'].insert(0, 'django.core.context_processors.request')
Взято отсюда: http://django-el-pagination.readthedocs.io/en/latest/start.html
Это нужно непосредственно в settings.py вставлять?
Если я это туда вставляю, то у меня случаетя IndexError: list index out of range
Куда это вообще надо вставить кроме моей жопы, и надо ли вообще с этим что-то делать?
Если что Джанга у меня 1.10
у тебя в Django уже есть переменная TEMPLATES, там смотри Options и contex_processors, там будет список из уже вставленных и туда просто добавляй нужный тебе.(давно возился с пагинатором этим, вот не помню точно, но есть шанс, что что в сеттинге просто дописал установленное приложение и все)
>а ты такой заебанный всегда что часто или не жрешь нихуя за день, или жрешь в кфц
лол, ты просто до денег видимо жадный
получаю 40к
попил сейчас теплого молока
пару часов назад спокойно отобедал, голову никто не ебёт, дедлайнов нет, пописываю фор фан для себя, книжки читаю
Ты странный. Иди поработай в продажи, где тебя так же все ставят раком и заставляют впаривать непонимающим клиентам откровенный шлак. При невыполнении планов продаж виноват не кризис а точно ты. Или в общепит, за 30 000 в месяц за 10часовой день на ногах. И всем знакомым гордо будешь рассказывать что работаешь в маке. И получишь опыт работы шикарный. Или на вахту на север строителем смотайся разок, где тебя может вообще с деньгами кинут и здоровье посадишь так что доживешь от силы лет до 47. Или псом режима поработай общаясь с алкашами и зеками расследуя преступления, причем кол-во преступлений должно быть ПО ПЛАНУ не меньше чем в АППГ. Почта у него отвалилась, я аж проиграл с твоих жизненных проблем.
Спасибо.
Нашел вот это:
>django.core.context_processors
>Built-in template context processors have been moved to django.template.context_processors.
django.template.context_processors.request у меня прописан, но один хрен не робит. Буду дальше ковырять.
Да это я сделал сразу.
Он мне исключение выдает. Похоже, во вьюхе проблема, но это я уже сам попытаюсь решить.
Теперь, даже после переустановки через pip
$ ansible --version
-bash: /usr/local/bin/ansible: No such file or directory
Где ее взять-то?
Например Category.objects.<find>(name='foo')
Тебя кроме двача никуда не пускает?
Спасибо, через фильтр помогло, а то сначала ковырял через get и вылетали ошибки.
>какая библиотека подойдет?
Действительно, зачем думать, зачем что-то свое писать если можно просто накатить стороннюю библиотеку, ты наверное и для калькулятора специальую библиотеку качал и калькулятор у тебя выглядел так:
import calc
calc.calc()
Писать аннотации. По другому никак.
Предлагаешь ему ГУИ с нуля писать? Ебанулся?
try except?
Недавно было собеседование по скайпу, спросили за БД, сказал что юзал много чего(MySQL,SQLite,PostgreSQL) и везде прописывал запросы вручную, без алхимии, собеседник тяжело вздохнул, сказал "понятно,ладно" и пообещал перезвонить (но нихуя). Это вина его тараканов, или же тру хацкеры юзают алхимию?
Это все делается через ansible, docker, jenkins. Я хуй знает правда, как это делать на винде, никогда с ней не работал. Насчет питона - да можно.
Если ты планируешь сделать проект, отладить его, выкатить в продакшн и больше никогда не менять схему БД - то можешь не тащить.
Иначе тащи конечно. Особенно если могут случится написанные ручками datamigrations.
Ты про generic relations?
Да. Если их у тебя много, то объедини в один файл https://docs.djangoproject.com/en/1.10/topics/migrations/#squashing-migrations
b = type(a)
ну так дебаг когда вырубаешь, джанга больше не раздает статику и медиа. Дрочи nginx или что там у тебя. на хероку задеплой, там халявно, поиграться хватит.
а я так прыгал и чет работу в вебе так и не нашел
Подключил вместо стандартной базы данных постгрес и локально всё работает, а вот на PythonAnywhere выдает ошибку с psycopg2.
Может кто-то подсказать в какую сторону смотреть ?
line 24, in <module> raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
Убедись что база висит на локалхосте. Питонэнивер не поддерживает внешние соединения.
Кури до просветления. Как там в питонэнивер устроено окружение я не знаю. Попробуй в шелл самостоятельно зайти, активировать венв и удалить/установить псигопгу.
https://stackoverflow.com/questions/8237842/django-core-exceptions-improperlyconfigured-error-loading-psycopg-module-no-mo
А зачем ты юзаешь pythonanywhere? На том же рувдс нормальная впска для домашних проектов за 65 рублей, любой нищеброд сможет позволить.
В жопу сваю мамку паюзай, лох теоретичный. Так кредитка нужна, бббггее. и спидоранам засанкцаинировали по самые спомидоры, хехе. А инстанс микро (как хуй в тваей жеппе). када низаметна лимит ушел выше, тебя хуй уведомят. а потом будешь плодить бабло, хехе.
На Pythonanywhere бесплатный аккаунт? В бесплатных аккаунтах, кажется, только mysql?
> qiwi c 100 рублей на счету, которые позже тратятся на домен
> домашний проект для экспериментов с посещаемостью 0.5 человек в сутки
Почти полгода, полёт нормальный.
> када низаметна лимит ушел выше, тебя хуй уведомят
http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/free-tier-alarms.html
>>937867
Сука, я даун, забыл активировать virtualenv, там установил psycopg2
>>937913
Точно, только что прочитал, только вот интересно, ошибку которую оно мне дает связанно с бд ?
То есть ты залил код на pythonanywhere и пытаешься законнектиться к постгресу и указываешь в качестве хоста localhost, я правильно понял?
Насколько я понял, в listen_addresses в постгресе стандартно стоит локалхост, но в целом, всё верно.
Сап двощи, хочу задрочить веб. Взял пока джангу. Что сделать на ней, чтоб покрыть большую часть разных плюх, необходимых в реальных проектах?
> Что сделать на ней, чтоб покрыть большую часть разных плюх, необходимых в реальных проектах?
Удалить джангу, выучить php и битрикс. В крайнем случае ноду и реакт/ангуляр.
Ты думаешь, кто-то на той машине, на которой ты запускаешь код, поднял для тебя постгрес на локалхосте? :)
Тем более, если у тебя бесплатный аккаунт, то твой выбор либо mysql, либо sqlite.
Когда создаешь в админке pythonanywhere базу данных, то для тебя сгенерируется хост, который тебе нужно будет добавить в файл настроек. Трюк с локалхостом не пройдет. Вот инструкция для mysql https://help.pythonanywhere.com/pages/UsingMySQL/
Если хочешь сам поднять постгрес, то тебе нужен какой-нибудь vps, где тебе будет предоставлена возможность все настроить как тебе хочется.
Да вы тут хуйней занимаетесь все на самом-то деле. Отличный пример того как не думать глобально, а ковырять говно что первое попалось/было предложено в туториале.
Спасибо большое <3
>Да вы тут хуйней занимаетесь все на самом-то деле. Отличный пример того как не думать глобально
Расскажи-ка нам как делать правильно.
Изучить все варианты перед тем как прыгать на первый попавшийся, очевидно.
Сделай бложик или борду. Лучше сначала бложик, конечно. Сначала на FBV (function based views), потом на классах. Сделай кастомную модель юзера, в первую очередь откажись от sqlite, пиши формы в forms.py, а не в шаблоне. Используй полезные приложухи по типу crispy forms, jinja2 > django.templates. Делай хитровыебаные связи между приложениями, настрой админский шаблон под свой вкус, напиши middleware, который НАПРИМЕР юзеру в реквест будет ебашит какую-то куку. Потом поставь DRF и ебашь апишки с красивеньким жопоскриптом.
После всего этого поймёшь, что джанго - говно и для хайлода надо использовать что-то другое.
Ок, спасибо
Борду самую тупую сделал с двумя модельками, класс бейсед вью, читаю документацию, пока не понимаю с view до конца когда что использовать (FBV, CBV, MBV, ...) и миксины всякие когда плохо, когда хорошо. Возник вопрос - много ли в реальности используется разных приложений сторонних для джанги. (Писал чуток на руби - язык не понравился, но это оффтоп, так там в рельсах по сути все что есть заменялось на сторонние гемы), тут вроде больше используется функциональность самой джанги, если включить в нее rest framework и шаблоны. И чем другие шаблоны лучше, чем джанговские? Я почитал посмотрел, но не очень понял - вроде то же самое делается.
Год назад работал над проектом на джанге в 70к строк питоняьчего кода, без учета шаблонов и прочей хрени. Так там процентов на 70 использовались стандартные возможности джанги. Десяток сторонних модулей и пяток своих. Джанга давольно таки функциональный фреймворк, стандартных возможностей для небольших проектов хватает с головой.
Амазон это слишком сложна, плюс требует верифицированной платежки. А на рувдс можно яндыкс деньгами ононимными платить.
>для небольших проектов хватает с головой
Лол, это вообще ебаный комбайн. Надеюсь, когда-нибудь люди поймут, что лепить все на джанге не нужно и начнут юзать божественный фласк.
Ну смотри. CBV это чтобы не писать хуйню в одной функции типа
if request.method == 'POST':
logic1
elif request.method == 'GET':
logic2
По-хорошему, функции я бы использовал только когда надо что-то сделать с реквестом (хотя и для этого middleware существуют) или когда какая-то ебатория с логикой моделей (надо здесь какой-то ахуенный запрос, етц).
На джанго вообще полно приложений (по-моему, только в PyPy их около пары сотен), token-authentication ещё из годных. В общем, вот, пока попробуй заебенить какой-то бложик, с регистрацией, коментами. И не забывай, jinja2 > django.templates
А смысл? Для маленьких проектов джанга норм. Для больших - тоже норм. Ты просто берешь джангу и без задней мысли все делаешь. Можешь со временем свою маленькую джангу сделать большой и все будет отлично.
Наверное и с фласком так можно, но у джанги все целостнее выглядит.
А зачем для маленьких проектов, не блогов mvc-модель и все эти папочки никому не нужные? Это только переусложняет задачу и вместо того чтобы писать под свою задачу ты пытаешься подогнать под логику джанги.
Может, может.
Но что это за проект, где для тебя папки и мвц - много? Самый минимум что ты можешь сделать - это засунуть все модели в один файл и вьюхи и парочку шаблонов завести. Куда еще меньше? Начнешь усложнять - разобьешь сначала по файлам, а потом по модулям.
Иди лучше в офис. Там за 3 месяца узнаешь больше чем за пол года.
Никогда, повторяю никогда не храни в репозитории virtual environment и .idea
Заебись сравнение, платформа для запуска жс, язык программирования vs фреймворк.
Пока есть легаси с пхп пистон еще лет двадцать будет только у забугорных хипстеров.
Смотри:
www.mysite.com - редиректит на www.mysite.com/home/ где описание сайта и т.п.
Допустим мой сайт про описание чего-либо (собак), и я хочу чтобы инфа была на www.mycite.com/dogs/
Для /dogs/ у меня есть приложение "dogs", и в главном ulrs.py я делаю /dogs/ include dogs.urls, но как сюда присобачить "home"?
Я тупой и не понимаю, что значит присобачить одну страницу на другую. Может кто-нибудь другой тебе поможет.
Что-то я по их документации нихуя не понимаю.
Типа создать форму, которая наследовала бы RegistrationForm, а что там внутри должно быть, такое ?
class Meta:
fields = {'username', 'password1', 'password2', 'email'}
И еще, пишу точно такое, что они рекомендуют в своих юрл - 404, что не так ?
url(r'^accounts/$', include('registration.backends.simple.urls')),
Спасибо, добрый человек.
Есть АТ Glonass/GPS хочу запилить себе свой сервер, есть описание протоколов (EGTS/ADM/GalileoSky и др. терминалов) всё это дело хочу написать на python. Как организовать приём данных (с дальнейшим расширением)? Есть идее, организовать MQ (ZeroMQ или что-то типо этого, потом данные записывать в БД). Помогите советом мудрым.
Суть в том, что в строке нужно найти цифры, а для того, чтобы их достать, нужно достать одну конструкцию и уже из неё потом вычленять цифры. Естественно, просто указать в регулярке множество цифр не сработает, т.к. неизвестна нужная длина.
Всё никак от конвейеров баша отвыкнуть не могу.
Пишу парсер картинок в gelbooru
<span id="s3570992" class="thumb"><a id="p3570992" href="index.php?page=post&s=view&id=3570992" ><img src="//gelbooru.com/thumbnails/96/e7/thumbnail_96e7f6e2dd0ebce605ea9c66539aa430.jpg?3570992" alt="здесь идут теги, среди которых могут быть и цифры"class="preview " style=""/></a></span>
<span id="s3570986" class="thumb"><a id="p3570986" href="index.php?page=post&s=view&id=3570986" ><img src="//gelbooru.com/thumbnails/77/50/thumbnail_7750d954104237cf01fd977288b464e0.jpg?3570986" alt="здесь идут теги, среди которых могут быть и цифры"class="preview " style=""/></a></span>
А реальные примеры есть? По-моему, достаточно одну регулярку использовать.
https://github.com/atomicptr/BooruPy
https://github.com/fhrach4/BooruGet
Надеюсь больше не увидеть здесь этого анимешного зашквара. Буду благодарен.
Вторая весит меньше
стоит miniconda . Как накатить киви и не сломать ноги?
ИДЕ качал отсюда https://www.jetbrains.com/pycharm/download/#section=windows
Теперь мне нужно скачать в т.ч. некую pywin32., но там ДАХУЯ ВЕРСИЙ.
Как бля выбрать нужную версию нахуй, если я качал Community Edition по ссылке выше?
>Community
>Lightweight IDE
>for Python & Scientific
>development
>DOWNLOAD
>179 MB
>Version: 2016.3.2
>Build: 163.10154.50
>Released: December 30, 2016
Вот это 3.2 это версия пайтона или че блядь? Пиздец у меня бомбит нахуй, почему блядь нельзя большими сука буквами написать версию питона, а не версию блядской ИДЕ?
Именно непрерывной последовательности действий интерпретатора не хватало для понимания.
Наверное, неплохо добавить эту деталь в фак для ньюфагов, может кому-то будет полезно.
твой говнокод
Дебил блядь, нахуя тебе пичарм, ты там отладку с профилированием собрался делать или что? Пиздец нахуй, берешь сука скачиваешь пистон нахуй, ставишь pip, все пакеты остальные блядь ставишь через pip и компиляешь свой экзешник (нахуя тебе он вообще блядь) через командную строку нахуй. Уебок блядь криворукий не понимаешь нихуя но везде уже лезешь своими ручонками пидор.
Пс, чем компиляешь в ехе?
Юзаю пайинсталлер, но что-то в винде не запустился прожект(на линуксах полет нормален, но походу я там библу проебал одну).
Мимодругойанон
Ну во-первых скачай комерческую, плюшки приятные есть, во-вторых последняя версия - 3.3, в третьих в настройках пайчарма, там где интерпретатор, ты сам указываешь место нахождения твоего пистоновского интерпретатора, какого хочешь(2.7,3.2,3.4,3.5 & e.t.c.).
Ты, долбоеб неотесанный, вместо того чтоб писать пост за это время мог бы уже изучить что такое интерпретатор, а что такое IDE и в каком они соотношении.
Такой трипл эпичный.лол
Хуле тебе не ясно, опездол?
Выше версии для 64бит, ниже 32. Качай последнюю 3,5. Там есть ридми файл, почитай его. Че как школяр тупой то?
А в чём проблема использовать группы-то? Ты, похоже, не знаешь, зачем вообще .group() нужно.
>print(re.search(r'jpg\?(\d+)', line).group(1))
и получишь своё.
Да и вообще, лучше бы ты айдишник именно из поля id выдирал. Впрочем, решение основной задачи тебе уже дали, в любом случае.
import numpy as np
x = np.linspace(-3, 3, 1000).reshape(-1, 1)
def f(x):
return 2 * np.sin(x) + 5
f = np.vectorize(f)
y = f(x)
from keras.models import Sequential
from keras.layers import Dense
def baseline_model():
model = Sequential()
model.add(Dense(5, input_dim=1, activation='relu'))
model.add(Dense(1, input_dim=5, activation='linear'))
model.compile(loss='mean_squared_error', optimizer='sgd')
return model
model = baseline_model()
model.fit(x, y, nb_epoch=1000, verbose = 0)
plt.scatter(x, y, color='black', antialiased=True)
plt.plot(x, model.predict(x), color='magenta', linewidth=2, antialiased=True)
plt.show()
for layer in model.layers:
weights = layer.get_weights()
print(weights)
Как сделать более точную сеть?
import numpy as np
x = np.linspace(-3, 3, 1000).reshape(-1, 1)
def f(x):
return 2 * np.sin(x) + 5
f = np.vectorize(f)
y = f(x)
from keras.models import Sequential
from keras.layers import Dense
def baseline_model():
model = Sequential()
model.add(Dense(5, input_dim=1, activation='relu'))
model.add(Dense(1, input_dim=5, activation='linear'))
model.compile(loss='mean_squared_error', optimizer='sgd')
return model
model = baseline_model()
model.fit(x, y, nb_epoch=1000, verbose = 0)
plt.scatter(x, y, color='black', antialiased=True)
plt.plot(x, model.predict(x), color='magenta', linewidth=2, antialiased=True)
plt.show()
for layer in model.layers:
weights = layer.get_weights()
print(weights)
Как сделать более точную сеть?
Где ты тут увидел машоб, дурачок?
Засоветуйте какую-нибудь либу для oauth, нужно сделать тестовое задание. Нашел python-social-auth, но он слишком толстый и заточен под использование в продакшонах, как я понял, а мне бы что-нибудь небольшое чтоб хуяк-хуяк и получить токен.
Нашел под эти требования requests-oauth2 но оно чот тухлое судя по комитам.
Есть у кого мысли/советы что запользовать можно?
oauth нужен чтоб получить токен от вконтактика, серверов городить слава б-гу не надо
Долбоеб, получи его вручную один раз. Прописываешь ключ offline и токен будет бессрочный.
Vue.js теперь будет иметь нормальный плагин для PyCharm, а не старый, забытый и нерабочий. Как раз буквально недавно осваивал Vue.
Мне токен не для пирдолинга нужен, а чтоб задание тестовое выполнить, довен плес
>>939248
>request-vk
тоже не подходит
Пойду дальше гугл шерстить
Но контач юзает oauth2, кстати. Для чего тебе токен? Что ты собираешься делать?
Нет )))00)0)
На получение работы веб-макакой
>> - Хочу у вас работать, но опыта нихуя нет.
>> - Окей, но сделай такое то тестовое задание, вот ТЗ.
>> - Ладно, пойду посоветуюсь на двощах какую либу запользовать.
Как то так.
Так либа, которую скинул тот анон, судя по тому что написано на гитхубе, поддерживает oauth2?
Это прекрасно копипастится и запускается, просто ты дурачек и у тебя скорее всего не поставлен даже tensorflow обернутый keras.
Пикрилейтед с отступами. Если есть что сказать по делу -- говори, нет -- пройди будь добр сам нахуй.
Ну так я тебе поясняю - чтобы вбросить фотощки, поставить лайкосы - достаточно один раз вручную получить токен через бровзер.
https://oauth.vk.com/authorize?client_id=1&scope=friends,photo,video,offlinev=5.62
Флаг offline - это получение бессрочного токена, который не нужно обновлять каждый раз через oauth.
[array([[-1.27243876, -0.60164684, -0.87058032, 1.18921578, 0.01335463]], dtype=float32), array([ 1.83589685, 1.77507377, 2.56869197, 1.51997244, -0.10656261], dtype=float32)]
[array([[-2.11773753],
[ 1.8032347 ],
[ 2.60775709],
[ 1.90714526],
[-0.80964983]], dtype=float32), array([-3.9735322], dtype=float32)]
Да не хочу я никого взламывать, нужно задание тестовое выполнить и вкатываться идти на работу, веб-мокакой мощным разработчиком.
Спасибо большое за помощь.
Я просто сам довен, не до конца объяснил что мне надо, и начали не те советы давать.
"Сделать веб приложение, на выбранном вами языке, при открытии должно показать кнопку «авторизоваться» по нажатию делает oauth авторизацию ВКонтакте, и отображает базовую информацию о пользователе"
Это задание на джуна, надо сделать его.
Мощные oauth фреймворки для этой задачи не подходят, а вот requests-oauthlib то що надо.
Впрочем с самостоятельным формированием url-строки для oauth авторизации тоже сделаю, во имя пердолинга и обучения
Сделай новое.
Секель
Спрашиваешь. Само собой актуальна.
93-го года же.
А если серьезно, то иди читай
"Дейт К.Дж. - SQL и реляционная теория. Как грамотно писать код на SQL - 2010.pdf"
А потом документацию postgresql от одной ебанной корки, до другой, а потом заново
Там только основа, которую старается реализовать каждая приличная СУБД.
На год издания можно забить, это примерно как с той белой книжечкой от Кернигана и Ричи 1975 года.
да в этом и проблема, что нихрена не понимаю.
разве с пичармом не шел питон?
я вроде не указывал где устанавливал его.
А, нет, я даун, забейте, другой вопрос.
Как мне во view в определенной функции достать юзера, которых хочет воспользоваться этой функцией ? То есть как мне понять, кто делает запрос ?
А, всё, уже сам нагуглил, как только задал правильный вопрос, получил ответ.
да
пилил бы на neurolab
Мне вообще похуям, что там последнее. В ротик тебе аккуратно опустил свои яички.
В 70 процентах случаев никто не хочет нанимать фронтендщика, который будет натягивать твою джангозалупу на веб-морду, поэтому желательно знать ангуляры и прочие реакты. Иначе ты нахуй никому не нужен будешь в вебе.
Думал в сказку попал и будешь сайтики из девяностых лепить?
насколько я понимаю каналы, не надо ничего тебе "заливать", оно само под капотом маршрутизирует между воркерами как раз через редис, просто работаешь так же как с inram. но могу ошибаться, поправьте если не прав.
> хочу под пайтон запилить себе исполняемый для винды файл из под винды.
Т.е. ты хочешь сделать .exeшник из скрипта? pyinstaller тебе в руки.
На фронте у меня Vue.js. Для него создан компонент, который представляет из себя несколько ползунков. Позиции ползунков представлены в виде JSON и связаны с computed JS переменной. Когда пользователь выбрал нужную конфигурацию ползунков, он жмет кнопку.
Теперь это нужно обработать в Django (а именно, принять данные и записать в Postgres, при этом в аккаунт конкретно этого пользователя).
Мне пока видится два решения:
1) Создать отдельный маршрут, принимающий POST, и привязать к кнопке отправку POST-запроса. В джанго создать вид, который будет это обрабатывать и писать в базу, а также возвращать JsonResponse с успешным/неуспешным выполнением. Дальше принятый респонс вылезет где-то на странице.
Плюсом является прямая простота реализации и поддержка всеми броузерами.
Минусом:
Лишние запросы (в сравнении с сокетами, например), отправка хедеров и прочей ненужной лабуды, хотя полезен только сам JSON. Нагрузка, соответственно.
Также возможность отправить респонс только один раз за запрос. Промежуточные результаты не сообщить (напрмер если я хочу проинформировать что что-то записалось для каждого посланного объекта).
2)Channels/SocketIO и прочие сокеты.
Тут явный плюс это сколько угодно ответов на один реквест. Ретрансляция по чужим сокетам (в нашей задаче в член не уперлась). Разгрузка сервера.
Что бы выбрали вы? Есть ли третий, четвертый, n-вариант? Как быть с неподдерживающими сокеты обозревателями? Особенно настораживает Opera mini, которая по-прежнему часто встречается в отличие от всяких IE6. Создавать для них отдельный функционал, детектить и слать нахуй или что-то еще? Расскажите о своем опыте разработки интерактивных бекендов, дайте советов мудрых.
да
я выбрал сокеты (channels) на фронте react. но у меня много действий и есть ответы как на действие, так и broadcast уведомления по всем каналам. тебе если только ползунок обработать наверное хватит и аякса.
Расскажи как ты обращаешься с клиентами, у которых обозреватели без поддержки WebSockets?
>>940100
ты меня натолкнул на мысль... вот же https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills#web-sockets потом прикручу какой нибудь из этих полифилов.
Методы вроде совпадают, но объект другой. Жаль что нельзя просто сделать импорт этой херни и старый код пихнуть в продакшн.
Если не хочешь учить фронтенд, учи Python и Django дальше.
Ты должен уметь пояснить за MRO, mutable default arguments, iterators, generators, aggregaion запросы, middleware, транзакции, лямбды и т.д.
Но и просить надо не меньше 50к, лучше 60-70к (в ДС)
делаю через re.sub , но что то все ничего не получается.
Не знаю совсем js даже на уровне jquery
Верстаю при этом вполне сносно на вышеупомянутом бутстрапе
Найти удалёнку на 40-50 штук в таком раскладе реально вообще?
В ойти типа с 2005, только беда в том что программёром я не работал с 2012, все проекты выросли из тупой скуки и "шеф ля какую поебень я сделал помнишь те валенки говорили мол круто было бы" + всякие корпоративные сайты-затычки, но их я вообще не считаю
теперь и русик сломался.
sys.getdefaultencoding()
sys.getfilesystemencoding()
выдает utf-8
>спермопроблемы
что общего между окнами, окошками, виндой, виндусом, мелкософтом, майкрософтом, мс и тд и блядь спермой. В чём связь?
Я просто не понимаю.
cp1251 у меня есть только в локали
изменение локали
locale.setlocale(locale.LC_ALL, "ru")
нихуя не дало
пошел по трайсбеку.
stream это sys.stderr
def __init__(self, stream=None):
if stream is None:
stream = sys.stderr
sys.stderr.encoding выдает utf-8
Какого хуя он вообще в cp1251 лезет? Ничего не понимаю, и это офицеры?
Супер! Спасибо
>>940950
Для HR'ов лучше фриласить чем быть бизнес-аналитиком в нефтянке и металлургии?
Неожиданно, но учту
так ты бизнес аналитиком был?
Хуй знает тогда. По моему с таким бекграундом можно в того же бизнес аналитика и метить, только в IT сфере. Т.к. сайты писал, понимаешь что кнопочку поправить может быть как задачей на пол часа, так и на 2 недели.
А вообще попробуй создать 2-3 версии резюме и посмотреть как конторы на них реагируют
Если не секрет, где rabbit mq использовал и для чего? В вакансиях выше джуна он почти везде нужен а зачем хуй поймешь
У меня есть корпоративная файлопомойка на которой валяются файлы ±120 клиентов, от инструкций по пользованию станками до какого-нибудь говна типа проектов инвест. программ.
При аплоаде файла файл закидываю в очередь rabbitmq что бы оно засунуло его в один скрипт если это docx или odt или ещё что человеческое, сконвертировало в html а затем из html в markdown; если это pdf то просто нарезало на jpeg-листочки
Если файл не является новой ревизией существующего - раббит засовывает его в скрипт, а скрипт выплёвывает хмтл в одно поле джанги, markdown в другое, но недоступное пользователю и нужную для определения изменений + поиска
Если файл был изначально docx/odt, и это ревизия какого-то из существующих файлов - дальше раббит запихивает значения из поля в велосипед из говно-гит-подобного поделия, которое гитовским diff'ом находит изменения файла относительно прошлой версии, что бы можно было всё не читать а выгрести например "изменения за последний год" и посмотреть чем устаревшее говно у подрядчика отличается от актуального и за что его отпиздить/посоветовать/или что бы сам подрядчик залогинился и вкурил
С учётом того что система не оптимизирована и вполне так валится от всего подряд, а времени особо переписывать на чём ещё у меня нету - раббит - единственный способ что бы твои задачи хоть и не сразу, но выполнялись не заморачиваясь дрочкой except'ов или ещё чем непонятным для меня типа полной асинхронщины и похуй как колбасит сервак и не ребутнится ли он вообще - раббит нихуя не просрёт
Я понял, подумаю, спасибо за идейку. Таки и хомяка с портфолио запилю, и пятёрочку сиви на русском да английском
Ну охуеть теперь!
Это копия, сохраненная 4 мая 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.