Это копия, сохраненная 8 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Код вбрасывать в тред через https://ideone.com/
Прошлый: >>708703 (OP)
> перекатился на 3ю ветку
В основном, но всё еще приходится работать с двойкой.
> Используешь аннотации типов и статические проверки?
Нет, какой профит?
>какой профит?
-Раннее выявление ошибок (юниттесты тут тоже помогают, но далеко не всегда все покрыто на 100%)
-Удобство при рефакторинге (видно что где поломается при изменении интерфейсов)
-Адекватный автокомплит
-Лучшая документированность кода
Рекомендую пописать что-нибудь простенькое на статике (вроде крестов с Qt, шарпа, или Scala), дабы ощутить профиты, и попытаться перенести эти ощущения на змеюку.
Хвостовой рекурсии не завезли, cons можно сэмулировать, но списки в питоне сделаны иначе, (квази)цитирования нема. Но в целом - должно подойти. Если поищешь, кто-то в жж даже пытался делать "перевод" сикпа со схемки в питон.
Питон неудачный вариант для новичка. Язык сложный, возможностей мало, работы тоже мало, а на каждую вакансию десяток макак. Сейчас каждый школьник учит питон, а потом не знает что делать с ним. Лучше попробуй Haskell. На нём и конкуренция пониже, и зарплаты больше, и сам язык понятней. В Sublime Text как раз есть режим для него. По книгам. Если есть хоть немного знаний программирования, читай это: http://www.ozon.ru/context/detail/id/30425643/ Если совсем новичок, пойдет эта книга: http://www.ozon.ru/context/detail/id/28346038/ Ну и куча онлайн-учебников. Вот, например: https://anton-k.github.io/ru-haskell-book/book/home.html Хороший учебник, всё расписано подробно. Сам по нему учился. Рекомендую.
Заебал юродстововать. Мы тут серьезные проблемы обсуждаем
Спасибо, искать пожалуй не буду. Решил, как освою гвидон сносно, после него сицп на схеме пройду. Бросать неохота начатое
Это наверное правильно. В питоне тоже много ФП, но оно фрагментарное, идиоматика в целом другая.
>аннотации типов и статические проверки
а че питон уже сам научился в это? последний раз когда щупал питон нихуя с ними не делал, типа оставили для разрабов всяких иде и специализированных тулз
Тулза по-прежнему нужна, сам cpython типы проверять не умеет.
Два борща этому.
Ну правильно, у пидорах есть работа только на пхп. За рубежом же большинство крупных проектов написаны на Haskell, и серьезных специалистов по языку не хватает.
Изучил Python, стоял выбор между противной жабой ,змеем и руби,затем прочитал подробное руководство по Джанге 2010 года(да,да,старая книга,но все,что писалось после нее говно без примеров). Озаботился поиском работы в моей мухосрани. Ни-че-го. Нет,я конечно подозревал что так примерно и будет.
Решил пока набить себе цену и пойти на хтмлакадемию. Пока решал задачки скроллил Авито и хх в поисках работы,в итоге единственное,что я нашел на данный момент,это ВЕБ-АДМИНИСТРАТОР. Прошел собес. Мне предложили 13-15к.
Ничего лучше у меня из вариантов не было и я согласился.
Краткая история моих походов:
1)-3 день. за 3 дня до выхода на работу,меня попросили сделать тестовое задание. Взять ключ от Хост-сервера,создать там веб пространство,зарегать домен,на этот домен залить переделанный мной сайт(поправить хтмл)
в итоге по моему ключу был закрыт доступ в админку и задание я сделал только на -1 день
2)1 день полностью был посвщен хостингу и иже с ним
3)2 день CMS. Вордпресс и прочее. я просто в рот ебал 3 часа через ВП переносить наполнение с 1 сайта на другой.
3)3 день. меня попросили разобраться в ПХП коде. Я в рот не ебу ,что там да как. Просмотреть синтаксис и обьектную модель я могу,но копаться в пыхе - не хочу.
В связи с этим я в депрессии. Понимаю,что на нынешней работе я занимаюсь нихуя не программмированием(вакансия изначально была как ПОМОЩНИК ВЕБ ПОГРОММИСТА ХТМЛ ЦИЭСЭС ЖАБАСКРИПТ),свой рост в этой компании не вижу,а большого выбора по городу и нет в общем то. Для работы по удаленке или переезда,надо хоть какой то проджект забацать,но я теряюсь в своих желания// возможности
Да и на переезд деньги нужны,так что от работы мне не отвертеться.
Анон,посоветуй чего то(кроме самовыпила,гейшлюх ,ну все этого),я в тебя верю
Захочется, тут дело не в питоне, а в качественных батарейках и 3rd party либах.
Ну блин. Я когда осилял питон, твердо знал, что в своем городе работы не найду. Взамен конфигурял 1С и копил на съеб.
Да что вы к одной технологии цепляетесь и пиздец. Думайте масштабней, хотя бы в рамках сфер деятельности. Хочешь идеально совместимые с питоном хуйни: ищи что-нибудь из хтмл верстка/жс программинг/тестирование
У кого-то хуевый редактор, намешавший таб и спейсы.
Расскажите, чем вы занимаетесь на работках, у кого они есть?
Django: Практика создания Web-сайтов на Python В. Дронов
книга 2016 года, но Джанго там 1,6
Выбрал ее, потому что самая свежая, но теперь не знаю...
Шарящий анон посоветуй годноты по Джанге
Ебу пролетариев за каски, их руководителей - за безмозглость и все это под громкие улюлюки одобрения первого руководителя и гл инженера
Btie ff pthone
Майкл Доусон. Но классы это слишком сложно. Не могу вкурить саму концепцию. Пытаюсь решать задачи с CheckIO. Но как видишь - нихуя пока не выходит.
бля, ваще стрёмную хуйню прикрепил
Прочитай парралельно в других книгах ту же тему, мне оче помогло
Прочитай вот это, мне помогло понять устройство классов и для чего они.
https://code-live.ru/post/cpp-classes/
>Пишем упрощенный ассемблер и виртуальный процессор — часть 1
Годнота. напомнило, что на курсере есть курс, на котором от самого низа "собираешь" компьютер. Вплоть до языка высокого уровня, если я правильно помню.
задумался вот, разумно ли будет пройти его парралельно изучению пистончика.
Классы в питоне вообще феерически просты. Если рассматривать основы - класс это всего лишь пространство имен, как модули. Только модуль один, а объектов созданных из класса может быть много. Ну и наследование - если имя не найдено в объекте, просматривается его класс и все классы от которых он унаследован. Хуле тут сложного то?
Приведу пример. Есть элементы А, В, С. И два состояния - 1 и 2. Допустим, в 20:00 часов при запросе их состояние вернётся А-1, В-1, С-2. Если сделать запросы в 20:05, 20:22, 20:45 и так далее, что вернётся всё равно А-1, В-1, С-2. Но если сделать запрос в следующий час, например в 21:03, то вернутся другие состояния для элементов, например А-2, В-1, С-1. Они не должны храниться где то, а должны именно генерироваться. Как такое сделать?
Да понятно что английский нужен, но параллельно хотелось бы на русском по максимуму выучить. Тем более гугл переводчик пока спасает если нужно что-то на англ форумах почитать. Правда с книжкой сложнее уже конечно.
Не слушай этих инглишфагов, для базовых знаний на русском масса информации, а для чтения документации к конкретным либам хватает знания на уровне "лондон из зэ кэпитал оф греат бритейн", говорю на опыте, сам инглиш никогда целенаправленно не учил
Пока не устроитесь на работу не поймете, что цикл на 10 строчек лучше, чем пижонистый однострочник из map и лямбд.
пиздешь, работаю в команде, хуярю дичайшие однострочники, коллеги уже научились их читать
Ну да, из этого непременно следует твоя неоспоримая правота
Нет, я свободен от этого
Молодец. А то работал один, тоже писал в vim вместо ide, задолбались за ним править опечатки.
Но почему?
нахуя тебе его потом получать?
делаешь в функции
random.seed(seed)
state = random.randint(0, 1)
random.seed(time.time()) # возвращаем старое состояние генератора
Значение сида придумай как достать из текущей даты/времени, чтобы менялось только раз в час. Оператор % тебе в помощь.
Да, кстати, это решение не потокобезопасно, но я почти уверен что для твоей задачи это похуй
> if __name__ == '__main__':
Часто в коде встречаю такую строчку в конце. Объясните, пожалуйста, что она означает?
Сначало питон нормально выучи, а потом интересностями заниматься будешь. А то получится как лебедь, рак и щука, ничего конкретного не усвоишь.
Во-первых, такое легко гуглится.
Во-вторых, это такая принятая точка входа в программу питона. name будет равен main только когда ты запускаешь этот файл, а не импортируешь. Секешь?
Это магия.
Сукин сын.
true storey
Вы мне тут условия ставите?
Условиями определено. Нужно создать класс Human и подклассы Man, Woman. После вызвать всё методом God.
list.append() не возвращает ничего, он in-place добавляет элемент. Не говоря о том, конечно, что ты нигде этот population не определил, и как ты собрался к нему что-то добавлять — не ясно. Мне кажется, тебе стоит перечитать книжку с самого начала.
И как классы инициировать тоже. И как детей инстанциировать. У тебя в init'е Human'а есть обязательный аргумет name, но Man и Woman ты вызываешь без каких-либо аргументов. Ошибок не выдаёт, потому что ты инит родителя не вызываешь.
И вообще как с классами работать ты не знаешь, там какая-то наркомания у тебя написана. Сделай шаг назад, забудь пока про наследование.
Ты видишь, что тебе интерпретатор говорит?
Давай попробуй тебе своим методом объяснить. Почему этот код не рабоатет и выпадает с той же ошибкой?
Ну я понимаю, о чём ты и о чём интерпретатор, но не могу понять как исправить. Как мне получить доступ к массиву (popul) в родительском классе?
Для начала, можешь попробовать уже после инстанциирования класса, т.е.:
b = B('asd')
# insert something here
print(b.attr)
Нет, увы, не понял. У b уже есть метод method, если ты не хочешь изменить его поведение, то def'ать заново не нужно.
b = B('asd')
b.method()
print(b.attr) # -> "Attr!"
Но вызывать его после создания как-то не круто, где же его вызывать?
ээ, нет. Здесь attr у тебя это классовый атрибут. http://ideone.com/SxuJEn
Ты же сам ответил, что нужно вызвать при объявлении класса, так и что же ты ничего нигде не вызвал?
Какие для Питона есть GUI для Windows, чтобы делать оконный интерфейс, наподобие GUI в Delphi. Если там будет графический редактор для конструирования оконных форм, то совсем хорошо.
Заранее спасибо
tkinter, qt, wxPython, gtk
У тебя есть выбор между gtk3 и qt5, qt получше умеет в кросплатформенность и вообще предпочтительней для windows, но гуевый редактор форм(=генерагор говнокода) только под кресты. В гтк есть граф. редактор интерфейсы можно строить через glade(интерфейс или его елементы хранятся в отдельных xml файлах, очень удобно-хорошо сделано), плюс умеет в css, но gtk хотя и неплохо умеет в окна больше прищиксориентированный.
Ну есть конечно ещё пачка маргинальных недотулкитов для Ъ.
Ну очевидно же, что нужно что-то переустановить. Если лень винду, то попробуй питон.
а лучше биос переустановить.
Ничего ждать не намерен, ставлю уебунту прямо сейчас. Нахуй эти виндоговна. Да и новый опыт как никак.
миллионник на западном урале
> но гуевый редактор форм(=генерагор говнокода) только под кресты
Вообще-то qt генерирует xml файл с описанием gui.
Таки да, я совсем объебался, в коде он только обработчики для сигналов генерирует.
Не буду смотреть, страшно
на ycombinator была ссылка sicp-заданий, адаптированных под пипитончик
тулза для тестирования веб-интерфейса, кликает по кнопкам, ищет элементы по селекторам, вот это вот всё
тулза, запускает браузер и предоставляет интерфейс для управления им (найти элемент, ввести буковки, кликнуть)
в качестве браузера может быть и phantom какойнибудь
кот нибудь может объяснить, что за хуйня? почему если я таким способом задаю список, то я отсасываю?
в смысле?
А что не так собственно?
сделай класс Бох, от него наследуй Чиловик, а от него уж Жинка. Бох может делать Чиловика, а так же, при условии существовании Чиловика делать Ж (при этом у человека переменная rib_count уменьшается на 1). если ребер станет слишком мало, то полэкрана темные
По мере наследования делай так, чтобы классы деградировали.
Например, Бох может create() Человека, Ч может create() двачи, ну а жинка может create() только борщ.
Мало того, что наследование раскроется более понятно чем в твоем примере, так и с философской точки зрения вернее.
А потом еще в /fem можно будет вбросить чем в /pr хуебляди занимаются
но почему тогда со вложенным всё нормально? то есть у меня в итоге 2 различных объекта, а не 1
1. как найти индекс минимального значения в n-мерном списке? то есть для одномерного списка это было бы govno.index(min(govno))
2. как происходит сравнение списков\строк? ('govno' < 'mocha' == True) (или куда уебывать читать)
Видимо, дело обстоит так:
foobar содержит список из двух ссылок на один и тот же объект, который содержит две ссылки на одну и ту же строку.
При объявлении foobar[0][0] = 'another string', в это объекте изменяется не строка, потому как она неизменяема, а вставляется новая ссылка, указывающая на новую строку 'another string'.
В итоге foobar содержит две ссылки на один и тот же объект, содержащий две ссылки на разные строки.
Но я этого не знаю наверняка, это лишь мои домыслы.
спасибо, хотя бы смогу уснуть этой ночью
>>716948
уже успел наковырять велосипед (http://pastebin.com/us11nP1X), но все таки интересно, можно ли как нибудь без потного очка обойтись
Не знаю насколько это правильный вариант, но для двумерного попробуй вот так:
list_2d = [[1,2,3,4,5], [6,7,8,9,10]]
min(min(x) for x in list_2d)
думаю рекурсию нужно делать, чтобы оно лезло до тех пор пока не найдет числовой тип, вместа списка
так мне же нужны индексы минимального значения в списке
то есть в твоем примере это было бы (0,0)
так анон приспичило перекатить с эклипса на что другое но вот на что?если есть такие кто пишет не в стандартной idle кидайте свои среды и плюхи которые там есть
>есть такие кто пишет не в стандартной idle
а есть такие, кто пишетт в идле?
sublime юзаю, горя не знаю
Vim. Нужно привыкнуть, зато потом будешь набирать код быстрей, чем в любой другой IDE. Ну и скорость работы такая, что саблайм отсасывает.
Во, раз ты такой окодемик, поясни. Игра жизнь это тоже конечные автоматы?
Там же 10 строчек кода, нафига библиотеки?
я фанбой Пичарма но есть у него пара блять выбешивающих глюков.
Копи/пасте иногда вырубается
и гомоебля с кешированными программами.
Когда ты все 300 раз поменял, а запускает то что было полчаса назад. И нужно делать рестарт всего пичарма, но не всегда помогает.
А ведь я ебаная утка и перекатываться мне некуда
Если не знаешь за Тьюринга, то да, можно
Все продукты жетбрейнс - Пичарп, Вебшторм, Идеа и другие хороши, но у них есть один недостаток - они медленные как пиздец, лагают, фризят, а три одновременно открытых окна съедают весь процессор. Похоже правда придётся учить вим.
Глянул я на это чудище. Что же это делается, товарищи? Уж лучше наверное в идле писать.
Поясните за Пайтон.
Скачал The Meaning of Life, осилил 20 минут. Какое-то петросянство тупое, чувство вкуса вообще ноль. Так и задумано? Почему это говно считается годнотой? Чисто из-за легаси, типа 30 лет назад ничего умнее не было, поэтому приходилось этот трэш смотреть? Или это из категории "миллионы мух не могут ошибаться"?
Мне как-то неприятно, что самый охуенный ЯП был назван в честь такого говна.
Твои аргументы инвалиды, потому что субьективны. В б твой вброс лучше бы смотрелся
Ну вим не осилил - пиши в саблайм тексте или в емаке или в виндос-нотпаде. Какая разница-то? Что тебе нужно - ide или текстэдитор? Определись что ли. Вим - это текстэдитор, а не ide.
На саблайм есть плагин с автодополнением, что-то там с "zen" в названии.
Вим тоже успешно лагает при установке аддонов. Атом ещё попробуй. Годная альтернатива сублайму. Как по мне это самый удачный редактор evermade: все возможности рендеринга хрома (всё на сишечках, border, border-radius, картинки), вся подсветка сделана ксс классами (возможен доступ к ней через API, семантические классы у них называются scopes и через спец апи выдаются), всё можно стилизовать тоже классами. Даже keybinding классами сделаны, что часто вводит в ступор нубов, но если вдуматься, это оче хороший вариант, специфичность селекторов можно использовать чтобы твой бинд срабатывал например только в питоньих функциях.
Мышь таки добавляет продуктивности, кто бы там что ни говорил. А вот клавиатурный ввод а-ля терминал (двойные esc, ебанутое переключение языка и прочая херь) нет. Вим хорош, но как донор идей. Я например унёс из него команды вроде yiw. Остальное хуета и нинужно, всё равно никогда все команды оттуда знать не будешь, даже листик на стене слабо помогать будет.
Мне нравится Атом по функционалу, удобству и плагинам, но он тоже не самый быстрый. Быстрее жетбрейнса, но в нём нет некоторых фич, которые есть в жетбрейнсе вроде автодополнения методов, экспортированных из другого файла. То есть, он дополняет только то, что есть в том файле, с которым ты работаешь.
То ты, говно, осилил всего 10 страниц , но уже решил высказать свое авторитетное мнение?
Нахуй пошел, школотрон ебаный
>Мышь таки добавляет продуктивности, кто бы там что ни говорил. А вот клавиатурный ввод а-ля терминал (двойные esc, ебанутое переключение языка и прочая херь) нет.
Только если ты школота, тыкающая в клавиатуру указательными пальцами.
>>717316
Нахуй вы вообще рот открываете, если сказать по делу нечего? Хуевая привычка - пиздеть впустую.
Можешь начинать закрывать свое ебло.
К слову, вим рекомендует использовать мышь для ресайза сплитов, так как клавиатурное управление слишком сложное и неинтуитивное.
1) Список игроков онлайн и он должен обновлятся как вконтактике, если игрок залогинился, то показать его в списке.
2) Создание комнат игроков, спискок комнат, все обновляется как вконтактике.
Основная сложность это в обновлении, я не знаю как это сделать. Подскажите как такое запиливать? И как продумать структуру сайтика, чтобы запилить без костылей
Не знаю, какой вим используешь ты, но мой вим запускается в терминале и вообще на мышь никак не реагирует.
В конфиге вима set mouse=a и мышь будет работать.
>Посоны, изучаю программирование. Нашел задание сделать программу. Подскажите как такое запиливать?
Ссылки нет. Давно когда-то текст сохранил среди книг и прочего мусора.
Хуяришь сокеты/вебсокеты, по ним рассылаешь данные как только получаешь инфу о коннекте/дисконнетке кого-то.
Ты хотел сказать: "в тех файлах, которые открыты".
Спайдер. Встроенная документация, окно переменных, веселое автодополнение и т.д. Но он не для больших проектов.
Конченый дебагер, каждый второй запуск которого кончается фризом и kill process. Отсутствие минимальных необходимых хоткеев. Рандомные фризы намертво каждые 10 минут.
Отвратительная ide, мне бы на месте разрабов было стыдно такое говно в продакшн выкатывать. Нирикаминдую никому.
more like клеточный автомат
но учитывая конечность поля (и всех комбинаций) - да, конечный автомат
когда надо запилить функцию типа если чётное делить на два и в квадрат но лень ебаться с деф
▲ ▲
▲ ▲
▲ ▲
мимо нюфажик
adapters.py, adapters.pyc, api.py, api.pyc, auth.py, auth.pyc, certs.py, certs.pyc, compat.py, compat.pyc, cookies.py, cookies.pyc, exceptions.py, exceptions.pyc,
hooks.py, hooks.pyc, __init__.py, __init__.pyc, models.py, models.pyc, sessions.py, sessions.pyc, status_codes.py, status_codes.pyc, structures.py, structures.pyc,
utils.py, utils.pyc
Что не так? Скрипт чужой и я питон не знаю.
Разобрался. Теперь он пишет это.
File "/usr/lib/python3.4/ctypes/__init__.py", line 429, in LoadLibrary
return self._dlltype(name)
File "/usr/lib/python3.4/ctypes/__init__.py", line 351, in __init__
self._handle = _dlopen(self._name, mode)
OSError: libX11.so: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога
Да есть пишарм, там так то все удобно, но я уже 15 минут не могу поставить свой шрифт. Тему свою создал, чтоб можно было менять параметры, а выбор шрифтов очень маленький, и все хуевые, оно из системы не подхватывает или я делаю что то не так. Как мне поставить мой любимый дроид санс?
да это же любитель свистоперделок!
конфиги для айдл, шрифт для пайчарм..
десктоп-тред в другом разделе
Да какие перделки, я шрифт нормальный хочу, у меня и так -2, я хочу чтоб глаза не болели, вот и все.
Сними галку "Show only monospaced fonts" и можешь ставить свой любимый Comic Sans.
▲ ▲
http://pastebin.com/wAhNG45e
Как исправить?
kwargs является словарём, а значит его элементы неупорядочены. Используй args, ты всё равно ключи никак не используешь.
use args
Я не понимаю о чём ты.
К примеру, если параметр 'value' равен 1, то исполнить 1-ую функцию, иначе (иначе если) -- другую или другие.
Как это можно сделать?
Именно из args.
Типа этого:
if value == 1:
...for f in args:
......f()[0,1]
else:
...for f in args:
......f()[2]
Но тут не получается вызвать из-за понятных причин
А, вот тут я и обосрался.
Проект не подскажу, но по тестированию джанги вот тут расписанное http://www.obeythetestinggoat.com/ безусловный лидер
Спасибо!
Всё равно одни ассерты тупые там:
def test_home_page_returns_correct_html(self):
request = HttpRequest() #1
response = home_page(request) #2
self.assertTrue(response.content.startswith(b'<html>')) #3
self.assertIn(b'<title>To-Do lists</title>', response.content) #4
self.assertTrue(response.content.endswith(b'</html>')) #5
Вот какой прок от этой хуйни? Что она проверяет? Поясняйте.
похож на geany
Нахуя? Я просто нашел такую штуку https://www.fullstackpython.com/vim.html и интересно, как у других выглядит.
Проебался с ссылкой.
https://realpython.com/blog/python/vim-and-python-a-match-made-in-heaven/
Вот, смотри, какая няшнота.
Почему джанга на каждый запрос к бд открывает новое соединение, вместо того чтобы переиспользовать существующие? На существующем проекте на постгресе, сайт крешится при 100 коннекшенах. В качестве временной меры пока просто увеличено max_connections в postgresql.conf и использован pgbouncer.
Няшнота, конечно, но чую кривая обучения как в дварф фортресс
sorted(dct.items(), key=lambda x: x[0]) например
Очевидный mezzanine. Но я не трогал даже его. На джанге быстро накатать можно всё что надо, чем ебать плагины хуков конфигов роутингов.
requests не требует иксы.
Дефолтный автокомплит в атоме наверное так и работает. Аддоны ставь. Автокомплит там как бы фреймворк, для которого аддоны уже что хотят то и воротят.
Это про ООП?
Применяй генераторы вместо списков когда тебе совершенно не нужно держать весь мудиллион элементов в памяти. Применяй генераторы чтобы упростить код, вместо накапливания result можно делать просто yield.
Продолжай.
Может, тоже больше дома не курить? Вдруг, обучение быстрее пойдет
Дима?
Ебать ты накурился.
До этого момента, я наивно полагал, что немного могу в пайтон. Грусть, печаль, короч. Хочу самовыпилится нахуй.
Что тебе те тесты? То что ты делаешь - должно тебе доставлять. Если доставляет - ты хороший специалист и идёшь по пути дао в профессионалы. Если нет - хоть рукой по локоть в сраку ебись а дела не будет.
А питон что - питон это конструктор лего современности - 100500 библиотек на все случаи жизни из которых за три щелчка пальцами лепится и автоматизируется всё что ты хотел. Где тут можно обосраться?
Короче не унывай, ты не на соревновании и ты уже и так отстал от всяких детей Ротшильдов или тех уёбков кто программировать начал в 3 на калькуляторе, что остаётся это в удобном тебе темпе бежать к своей последней черте и по пути наслаждаться пейзажами.
Спасибо, анон. Понимаю что реальный кодинг и тесты это разные вещи, но для себя решил потихоньку перечитать все доки по пайтону, может после этого буду увереннее себя чувствовать.
Я это смотрел уже. Во-первых, там используется по хардкору через реквесты, а не через библиотечку vk, плюс подгружается какой-то левый модуль написанный на втором питоне. И еще gid - что это вообще за пустая строка? В общем, ерунда какая-то. И нигде нет нормальной документации и примеров, я допер как получать токены только за часов пять, это пиздец просто.
А как ты их получаешь?
Я пытался вообще на urllib.request, не вышло
Пришлось вручную копировать токен из адресной строки браузера и скармливать скрипту каждый раз
>скармливать скрипту каждый раз
Зачем скармливать каждый раз? Тупо отправляешь offline параметр со всеми остальными в scope и он тебе генерит бессрочный токен.
Я тоже в браузере получал, хотя по идее можно и через скрипт парсить, через параметр display=mobile, чтобы жс не генерило.
Ну смотри, я думаю что не лучше тебя но вроде бы 2 вопрос - на общее понимание ООП.
Я не знал что такая стандартная поебень есть в питоне, с проблемой был знаком по джаваскрипту
переменной присваевается не объект а ссылка на него, поэтому если ты создал obj, и написал сначала a=obj, потом b=obj, то при изменении a (например добавлении атрибута) то же самое происходит с b.
Если же хочешь поменять b не трогая a, надо создать новый пустой объект b=obj2 и по циклу скопировать все методы-атрибуты a, что и делает как можно угадать из названия deepcopy.
Тогда a и b будут ссылаться на разные, хоть и одинаковые, объекты.
То есть не факт что от тебя хотят именно задротства и знания каждой либы по питону, мб поможет какая-то книжка с теорией.
Ну, scope - запрос доступа ко всяким функциям. Я про standalone говорю, если что.
Там идет запрос типа такого: https://oauth.vk.com/authorize?client_id=1234567&display=mobile&redirect_uri=http://vk.com&scope=wall,offline&response_type=token&v=5.50
>for i in range(....):
>....for j in range(.....):
можно как-то деликатнее написать? что бы без цикла, мож в стандарной библиотеке какое волшебство и на этот случай припасено?
На этом конкретном вопросе я тормознул из-за первой строчки.
>>>o1 = C()
В вопросе нет никакой инфы что такое C(). Скорее всего это класс, но может быть и функция. И если это класс, непонятно есть ли там переменная lst и что в ней содержится. Короче эта хрень может как угодно себя вести, выкинуть ошибку например. Тут я тупанул, конечно.
Это задание на знание рабоы модуля функции deepcopy. Полезная штука если нужно скопировать list вложенный в list, вложенный в list. Обычный list я бы скоировал так:
>>>o3 = list(o1)
перебрать попиксельно изображение, например
for i in range(image.width):
..for j in range(image.height):
Посоны, кто шарит в moviepy? Подскажите, как узнать длину видеодорожки и как изменить длину аудиодорожки? И еще, возможно как-то изменить соотношение сторон? resize() не помогает.
А чем тебе циклы не нравятся?
Можно так в принципе:
>[f(x,y) for x in range(img.width) for y in range(img.height)]
где f какая-то функция
Тут вот еще можешь посмотреть:
https://docs.python.org/2/library/itertools.html
Лол, чувак, ты серьезно? Даже в названии функции написано, что она проверяет. Функция для проверки, правильно ли, с точки зрения html, выглядит отдаваемая страница, из home_page view.
Годно.
Лёгкие же вопросы, серьёзно. Ну разве что про первый ты мог особо не знать, если не ынтырпрайз и сразу с тройки начинал.
>>718329
>В вопросе нет никакой инфы что такое C().
А она и не нужна. Всё, что нужно знать, это то, что o1 - объект.
>Это задание на знание рабоы модуля функции deepcopy.
Что делает функция deepcopy можно и по названию догадаться, ведь для верного ответа необходимо лишь знать, что она уходит вглуть хотя бы на два уровня. Ну и функцию, делающую копию лишь по первому уровню (copy.copy, он же shallow copy) deep бы не назвали, отсюда и вывод, что o1.lst и o3.lst указывают на разные списки, и изменения ондого никак не повлияют на изменения другого.
Наличие атрибута lst, кстати, вообще не важно, они же ему сначала лист присваивают всё ранво.
ininstance не знать стыдно должно быть, если честно.
Ну а smtp-протокол. Ну тут да, опыт, наверное, нужен, хотя так или иначе ты должен был о нём хотя бы слышать, если не бухгалтерша, и представлять, что почта через ftp или telnet это явно что-то не то.
> base class of new-style datatypes
Т.е. новые в тройке а в двойке было что-то другое? О слотах вообще не слышал.
Нашел - https://docs.python.org/2/glossary.html#term-new-style-class
for i, j in itertools.product(range(...), range(...)):
У димки уже есть получение токена через парсинг html. Так что делать ничего не надо самому.
>Язык сложный
>каждый школьник учит питон
>Лучше попробуй Haskell
>В Sublime Text как раз есть режим для него
Ок. Конечно, не все вопросы сложные. Прошел тест еще один раз под другим аком, получил 3.45
Но в этот раз я подсматривал в idle и помнил многие вопросы с прошлого раза, так что результат не ахти. По ощущениям, хуже всего у меня с ООП.
Это правильные, или выбранные тобой ответы выделены? Потому что classmethod тоже может быть вызван без инстанциирования (что очевидно, на то он и классовый).
Замени внешний for на while и добавь в него проверку флага, который ты можешь изменить во внутреннем цикле
Articles отвечает за главную страницу.
костыли-костылики. флаг можно и в for вставить, нафига while-то делать, чтобы потом вручную индексы инкрементировать? Я мимопроходил, всё это знаю.
Нужно написать функцию, которая принимает список. И если элементы в нем отсортированы от большего к меньшему вернуть тру, иначе фолсе..
Как поелехантнее написать? У меня жуть вышла, хоть и рабочая
У меня было двже идеи, сравнивать t[n] < t[n+1], и если тру, то счетчик плюс 1. И так пока счетчик не будет равен n.
А вторая идея была взять список, сделать его копию отсортированную, и сравнить по элементым. Как было бы лучше
Нахуй там счетчик, если не меньше, то брейк и фолсе.
Желательно не слишком сложную и без установки левых бинарников.
Умеет. Еще можешь посмотреть imagemagick - сторонний бинарник с консольным интерфейсом, умеет практически все. Если тебе питон только для работы с фото - лучше не питон, а напрямую маджиком и двумя строчками на баше.
Таки да.
Робота для торговли на бирже.
Робота для игры в покер.
Робота для мастурбации.
Джанго: есть две модели
в первой поля A,B
во второй поля B,C
Вот я получаю QuerrySet всех записей из первой модели которые мне нужны.
Как из этого получить QS содержащий соответсвующие записи второй модели?
Блять, неправильно объяснил
1 модель: A,B(FK)
как из QS полученного из первой модели получить соответсвующие записи модели В
Как и куда расти?
Освоить английский, освоить питон, прочитать официальный туториал по джанге.
Оф тутор помогает? Там же маленькое приложение с голосованием? Все в уроках учат создавать БЛОГ!! Вы серьезно?! Нахуй сейчас нужен блог?!
Блог - это крудошлепство в вакууме. А джанго создавался для удобного крудошлепства
Жри что дают! Сначала хоть что-нибудь начни понимать, потом прочитаешь оф. тутор по свежей версии.
Слушаем твои предложения, если человек не смог даже этот туториал осилить.
Если ты тян, то, конечно, сможешь.
Как перебрать все элементы массива?
Задача: удалить все уникальные элементы.
Ты можешь сначала на листочке алгоритм написать, а потом кодить? Вот что ты за хуету написал, что она по-твоему делает и где?
принимает на литсо массив.
Для каждого элемента:
Если элемент встречается меньше 2-х раз(1 или 0),
то удаляем его с массива
Возвращаем массив с удаленными элементами.
Ты возвращаешь массив во время каждого перебора, а не по окончании всех
Сделай data_w = data.copy()
Далее всё без изменений, только data_w.remove(i) и return data_w.
>на каждый запрос к бд открывает новое соединение
Ну это как-то слишком. Ты уверен что всё именно так? По идее каждый wsgi-воркер должен держать одно соединение. А воркеров фиксированное количество и они долго живут.
Ты проходишь по списку одновременно изменяя его. Это как пилить ветку сидя на ней. Я уже точно не помню копирует ли питон список при старте итерации, но >>719184 заметил более явную и очевидную ошибку, попробуй это сначала.
Если тебе нужны только уникальные элементы, то просто преобразуй в множество и обратно в список.
return list(set(data))
Ок. Неправильно понял вот это
>Возвращаем массив с удаленными элементами.
>ты шо в глаза ебешься?
Чувствую себя, словно доктор Дулиттл.
там 4 пробела
Проиграл
Хуи сосешь? Бочку делаешь?
Выдвигать предложения - твоя задача. Как решить мы знаем, но какой толк от тебя будет (даже самому себе, в личных проектах), если ты не можешь сам думать?
Если ты удаляешь элементы во время прохода по списка, происходит следующее:
итерация 1:
список = [1,2,3,4,5]
текущий элемент: 0-ой, равен 1.
удаляем единицу, список становится [2,3,4,5]
итерация 2:
список = [2,3,4,5]
текущий элемент: 1-ый, равен 3
удаляем тройку, список станвоится [2,4,5]
итерация 3:
список = [2,4,5]
текущий элемент: 2-ой, равен 5.
удаляем тройку, список становится [2,4].
Всё, по всем элементам питон тебе прошёлся. Теперь думай, как этого избежать.
Спасибо анон. Теперь я понял, почему это дерьмо так происходит.
Думаю над решением. Как насчет после каждого удаления, сбрасывать счетчик и заново по массиву идти?
>>719233-кун
>Как насчет после каждого удаления, сбрасывать счетчик и заново по массиву идти?
Хех, впервые вижу такое предложение. Такая себе идея, ведь в худшем случае придётся сделать (n/2)^2 итераций.
Как насчёт не удалять из того массива, по которому итерируешься, например? -> >>719185
Хватит всем мозг ебать. Зашел на чекио, на странице задания в самом низу мелким шрифтом написано "Даже не знаю с чего начать решать"
Ну я же объяснил, что он имел в виду. http://ideone.com/GKkjcc
В данном случае можно ещё просто с конца массива начинать.
ааааа, скопировать массив и удалять из него?
бьюсь с вечной задачей - как сохранить картинки с треда
вот что я сделал - работаю с urllib
1. запрос сохранить тред вызывает переход на cloudflare с известной всем страничкой подождите 5 сек.
на странице есть форма с инпутами
2. что я делаю - формирую get-запрос с данными из формы и через 5 сек отправляю его на cloudflare. отдается страница с рекламой cloudflare а вовсе не тред сосача. дальнейшие запросы на сосач вызывают переход на пункт 1. страница с сосача не отдается никак.
http://ideone.com/cOo7vf
в чем тут дело?
ебаный ideOne за каким-то хуем изгадил ссылки в скрипте
должно быть
cloudLink='https://www.cloudflare.com'
link='https://2ch.hk/s/res/1612756.html' (М)
https://docs.djangoproject.com/en/1.8/ref/databases/#connection-management
Если честно я пока не вник в проблему. Суть в том что при запросе на сайт, он берет какие-то данные из базы и при этом джанга открывает новое соединение с БД (постгрес). Все как обычно и ничего смертельного. Но если например на сайте зажать ctrl-r, то он через пару секунд сдыхает и джанга выплевывает fatal: sorry, too many clients already. Проект уже какое-то время разрабатывается и на него успели повесить кучу дополнений. В трейсбеке упоминается django-cacheops, но я не думаю что это из-за него. Совет по ссылке с настройкой времени жизни соединения не помог. Я просто хз что и где искать, только понял "где рвется". Причем не важно, сервер разработки или продакшен.
Точно джанга выплёвывает? Во всех серверах имеется встроенный backlog, поэтому твой сервак просто выплюнет bad gateway если даже backlog переполнился. А вот этот твой фатал, это от говнокода. Или вашего, или в дополнениях. Или админ дебил.
ПОДКИНЬТЕ МАТЕРИАЛ ПО ДЖАНГЕ.
С ЧЕГО НАЧАТЬ УЧИТЬ ДЖАНГУ?
КАКИЕ ТУТОРИАЛЫ ПО ДЖАНГЕ ВАМ НРАВЯТСЯ?
НАПИСАЛ ПРИЛОЖЕНИЕ НА ДЖАНГЕ, ГЛЯНЬТЕ.
Хоть бы одна сука выучила фласк или торнадо для разнообразия. Одна джанга везде.
Подскажи лучше материалов по aiohttp, а то окромя документации не могу ничего толком найти. Буду очень благодарен.
Тем, что фласк и торнадо - это конструкторы, из которых ты собираешь идеальное приложение, а джанга - готовый шаблон, который нужно только чуть обмазать под себя.
составляешь список индексов нужных (неуникальных) элементов
indexlist=[]
for index,values in enumerate(data):
____if data.count(value)>1:
________indexlist.append(index)
создаешь и вертаешь новый список:
result = [data[index] for index in indexlist]
это квадратично, конечно. Не хочешь квадратично - юзай collections.Counter, но тут давай-ка сам
Ну и зачем конструкторы, если ты не пишешь тырпрайз или какие-то не-круд-сервисы?
используй selenium
cloudflare тем и занимается, что фильтрует "подозрительные" запросы (от всяких ботов, спамов, куков)
в принципе, я уже плюнул и написал с помощью cfscrape
http://ideone.com/6HyXti
но все-таки хочется разобраться. я догадываюсь, что дело во всяких заголовках и куках, т.е. надо использовать urllib2.urlopen, но с ней мне не удается получить страничку с формой, чтобы типа авторизоваться на cloudflare
>>719349
Братишь привет, можешь дать рекомендации и материал для изучения фласка?(последней версии)
Благодарю.
Я сегодня на фласк пересел, только разбираюсь, пока нра.
Охуеть блять!
Старая? А какая новая? Последняя 10ка, там 9ая, если не ошибаюсь.
Вот примерный трейсбек
http://pastebin.com/qfdtwRwt
Да я так и понял что говнокод. А что примерно искать? Плохие запросы? Вручную открытые соединения?
Если только начал изучать питон (судя по вопросу так и есть), то нет, тебе это не надо.
Понял, спасибо. Просто установил фласк не в виртуалэнв, в туторах советуют делать иначе.
Ах да, для изоляции зависимостей. Т.е. чтобы можно было использовать разные версии библиотек и зависимостей для разных проектов. Т.е. одно окружение может использовать 2й питон, а другое 3й. Ну и версии библиотек. В вебе не использование окружений считается плохой практикой.
но вкатываюсь не просто так
..
для меня питон это язык для подставок, надстроек, мелких скриптов и т.д. я из крестотреда но тут такая тема.. прочитал о python_mod и подобных темах! и решил поглубже покапаться в этой фиговине..
..
в тред пришел за подводными камнями руления пекой с html странички на змее или гетзапросами с аппки
зы на с++ я реализовал бы это но вот о python_mod узнал и пришел седа
зыы про mod_wsgi слышал но сути идеи этой не меняет
>это квадратично, конечно.
чтото ты наворотил пиздец
## спойлир ##
https://ideone.com/SNIeU9
##спойлир##
>>719536
Да вы в край ебанулись все. Вы что несёте? Про мамок, папок. Через count В одну сраную строку делается. Гвидо на кой хуй запиливал в питон лист компрехэншены?
[el for el in data if data.count(el) > 1]
Съеби! Ты уже начинаешь портить код.
Да не бомби ты. Я вот джанго никогда не использовал и даже не тянет.
5 лет использую рот твоей мамки пифон
Это всё старое нинужное говно, уёбывай обратно, грязный плюсоёб, тебе с нами не по пути.
pyqt/pygobject, pyinstaller.
Благодарю.
flask only
Есть такой код:
mass = []
for i in range(3):
mass.append(str(input('Введите слово:')))
from itertools import permutations
n = 3
rep = 1
for s in permutations(mass * rep, n):
print(''.join(s))
Он выводит слово, нужно , что бы он запросил ввод слова и искал по выданному списку это слово.
вчера 3 комитта сделали
изменения которые меряются десятками тысяч строк кода за последний год.
я просто наткнулся на старую идею, но ты похоже недочитал до конца или даун.
вангую даун.
Епть, там коду-то пару строк, неужели анон такой занудный пошёл?
>make_debug_cursor
>postgresql_psycopg2
Лел. Мне кажется что без кеша все будет работать быстрее и лучше. RTFM для начала, а потом уже говнокод искать.
Ну да, ещё послушайте материалы с PyCon 2015 про кеширование. Там много интересного и толкового как раз на эту тему. И даже есть пиздатая прозрачная и простая идея реализации, которой целый доклад выделен.
непонятно нихуя же
Работаёбы нинужны.
Все правильно он говорит. count по твоему как считает? Каждый раз по всему списку проходит.
Благодарю.
Ну и вообще кто по каким туториалам учил его.
На русском наверное желательно?
В таком случае дальше не читал
------
ну что тебе по фласку непонятного-то?
открой http://www.instructables.com/id/Raspberry-Pi-Internet-Radio-With-Flask/?ALLSTEPS например, посмотри как люди пишут хуйню эту всю фласковую - там учить нехуй просто, питон питоном и декораторы с регэксами вместо урлов
Но раз уж настаиваешь, вот, держи все закладки что имею:
Book - Grinberg M. - Flask Web Development - 2014
https://pynsk.ru/blog/2016/01/29/write-project-1-part-2/
https://github.com/mjhea0/flaskr-tdd/blob/master/README.md
http://docs.peewee-orm.com/en/latest/peewee/example.html
https://www.twilio.com/blog/2015/03/choose-your-own-adventures-presentations-wizard-mode-part-1-of-3.html
https://www.twilio.com/docs/tutorials/walkthrough/appointment-reminders/python/flask
Что ты пишешь такое?
Детектирую ньюфага. Что конкретно ты хотел узнать?
Что угодно стыкуется с чем угодно через REST API, AMQP или десяток других протоколов/технологий.
Go - такой же питун, только компилируемый и дофига порезанный. Зачем использовать питун с питуном?
Мне нужны вебсокеты и интересно, стоит ли игра свеч, или лучше юзать какой нибудь джанго-ченеллс. Алсо реквестирую годное чтиво по построению микросервисов.
Двачую вопрос. Будет быстрее обновлять информацию на странице через джанговские костыли к вебсокетам каждые ~3-4мин чем дергать ajax'ы каждые ~10ть сек?
Подетектируйте во мне нюфага.
Есть несколько вариантов: ctypes, cffi, cpython extension, cython. Судя по отзывам побеждает таки cython, так как позволяет гетерогенность и склейка получается не такой острой. Для pypy настоятельно рекомендуют cffi, якобы он там через jit очень хорошо оптимизируется, а вот с cython пока всё плохо из-за прибитости к cpython extension api. ctypes вроде бы тот же cffi только надо вручную бойлерплейтить заместо парсинга сишного кода.
Расскажите что пробовали и как оно.
>>720260
Посоны, wsgi протокол, а так же http протокол хуёво работают как сокеты. Не морочьте себе голову, сириусли. Проще сервак с нуля накатать чем запидорить костылей в джангу а потом это всё глотая стекло и закусывая кактусами поддерживать.
>>720301
Да забей на эту джанго и синхронных дибилов. Делай всё сразу на том фрейме, который может в асинхронность.
aiohttp например. Фласк кстати совсем не о вебсокетах, это альтернативная джанга.
>>720301
ServerSideEvents посмотри ещё. Смотря какой тебе реалтайм надо.
>>720299
>Реалтайм-игрушка
На джанге? Лол.
>>720313
С перцептрона.
>Book - Grinberg M. - Flask Web Development - 2014
>Grinberg M.
>Web Development
>2014
По этой книжке невозможно научиться, все уже изменилось и обновилось 100 за 2 года. По линкам муть тоже.
>С перцептрона.
Я думал про курс или книгу. ШАД пойдёт? Первую лекцию закончил, а понятней не стало. Стоит продолжать или чем заменить?
Как по мне, то bigdata, machine learning и data science сильно запутанные термины. Сначала надо определиться чего ты хочешь уметь делать. ШАД по идее растит data scientists. Ещё не факт что они занимаются нейросетями.
for free это бесплатно.
30 дней так и осталось.
неожиданно, думал там умнее
> print 'Hello, world!'
> SyntaxError: Missing parentheses in call to 'print'
???
Тебе в 2005 год.
Что на русском и что читать? Давай короче.
Как убрать это лампочку и полоски зигзагом мезду принтом и скобками?
Нет. Вы советуете слишком толстую и сложною иде. Не могу разобраться. Давайте чего-нибудь полегче.
Эта лампочка говорит тебе, что ты пидор, когда ты косячишь. Зачем тебе её убирать?
Не надо другое иде. Какое есть лёгкое, но с подсказкой при вводе? Типа я написал str а внизу вылезла список с string и другими именами какие там в питоне есть. И чтобы методы моих классов так-же могла запоминать и подсказывать. Но чтобы лёгкое и не вим с емаксом.
Иди спатки
Ну, есть причины. Просто оче хочу линухами попользоваться, хочу терминалом овладеть в процессе, питон позволит чего-нибудь поавтоматизировать. ДА и вообще, чего мне на той вине делать, в игори чтоли играть?
В винду впилили убунту, там теперь тот же терминал, что и на линухе. А интерфейс виндовый.
Я слышал, но все равно. Не хотеть, вообще же, и то и другое не плохо знать глубже, чем знаю я, но винда мне кажтется сложнее в разы
Так винду не нужно знать, её просто пользоваться нужно. А линукс можно теперь и из-под винды познать.
Как ты можешь знать то, что с закрытым исходным кодом и монолитом лежит в одной папочке?
Ну как то ведь люди узнают! Ищут же уязвимости, все дела.
ipython
А потом покупаешь макбук и понимаешь что до этого 15-20-... Лет жизни с компами ты только мучался
Люто удваиваю. Жутко страдаю за десктопом после макбука, аймак не нравится
Так а чего такого охуительного в маках? Чому все вебзасранцы с ютуба, обучающие хтмл цсс используют маки?
Ну для начала цена. Макбук дешевле любого из аналогов по экрану и качеству сборки / службы. Во-вторых оптимизация вообще всего чисто под твою машинку. Фотошопы будут лет 8 идти гладко без единого фриза, даже Ява в целом быстрее фурычет, а ты нихуя для этого не делал. В-третьих организация рутинных действий - даже то, что оно позволяет картинки в файндере сохранять в той последовательности как тебе нра, а не сортировать имя дата говно моча - и то уменьшает фрустрации.
Попробуй и скорее всего никогда не захочешь вернуться.
Скорее BSD без задач, хотя для десктопа всяко лучше дриснятки или прыщей.
Икзакли
Анон, я просто хочу сделать запись введённых пользователем чисел в файл, и всё норм, но проглатывается первое значение. Например ввожу 1 2 3 4 5, а в txt файл записывается только 2 3 4 5. Как пофиксить?
komodo edit 9.3
Еще если убрать except, выбивает: OSError: [WinError 6] Неверный дескриптор
Лол, спасибо. Я слепой
PyCharm
Выдает такую ошибку.
Да много где, очень часто в криптографии, в низкоуровневом программировании и тогда, когда нужно что-то ускорить, если это возможно.
Я полный нуб в вебе, но решился сделать детектор скримеров в WEBM. Решил использовать ваше говно.
Первый этап - это разработка API, который будет получать ссылку на вебмку, и отвечать JSON-ом, скример это, или нет.
То есть получаем запрос, скачиваем ссылку, немного возимся с ffmpeg, и отдаём ответ. Также будет нужен кэш, а для него БД. С БД возиться не умею и не хочу, хочу всё искаропки и с ORM.
Так вот, я намерен использовать джангу. Я обезумел, или всё норм?
Не по твоему вопросу, конечно, но луп твой, по-моему, лучше организовать через while i < 20, и инкрементировать лишь один раз, если всё прошло успешно, а не декрементировать в 50 местах по разным условиям ошибок.
Алсо, в последнем except ValueError разе не должно тоже стоят continue?
асинхронщину типа Celery/rq не забудь
Какие туториалы свежие есть по фласку? Подскажи материала для изучения.
Советчиков дохуя, учителей нихуя
хуя бля, это столько змея срёт?
Зачем писать на жс, когда есть нормальные языки?
ну по канонам окно терминала должно вмещать 80 (если я ничего не путаю) символов
вот на 80 и ориентируйся. а кто любит терминалы размером с гулькин хуй пусть ебутся конём, в конце-концов ты же под люителей скажем ТОЙ САМОЙ АМИГИ или СПЕКТРУМА не всё оптимизируешь, а они тоже где-то есть
Да мне чисто для себя, лол, просто иногда забываю увеличить окошко и приходится наслаждаться десятком строк мусора, пока не увеличу терминал.
да хуйни не на весь экран и припиздячь сбоку где-нибудь где видно проценты
Всё так сделал. Скрипт, вроде, быстрее начал работать. Но проблема остается. Всегда после шестого видео выдает OSerror неверный дескриптор. С except пропускает все оставшиеся видео, на всех видео эта ошибка.
НовичОк. Ты бы хоть код свой нормально выложил, а не в виде картинки, может, кто-нибудь и посмотрит что у тебя там не работает.
import numpy.random
import string
import urllib.request
from moviepy.editor import *
def find_between( s, first, last ):
try:
start = s.index( first ) + len( first )
end = s.index( last, start )
return s[start:end]
except ValueError:
return ""
def base36encode(number, alphabet='0123456789abcdefghijklmnopqrstuvwxyz'):
if not isinstance(number, (int)):
raise TypeError('number must be an integer')
base36 = ''
sign = ''
if number < 0:
sign = '-'
number = -number
if 0 <= number < len(alphabet):
return sign + alphabet[number]
while number != 0:
number, i = divmod(number, len(alphabet))
base36 = alphabet + base36
return sign + base36
def base36decode(number):
return int(number, 36)
for j in range(1,20):
videocliplist=[]
audiocliplist=[]
durationlist=[]
i=0
while i<20:
randint=numpy.random.randint(105,107)
try: urllib.request.urlopen('http://coub.com/embed/' + base36encode(randint))
except urllib.error.HTTPError:
continue
with urllib.request.urlopen('http://coub.com/embed/'+base36encode(randint)) as response:
html = response.read().decode("utf-8")
try:vidDuration = float(find_between(html, 'false,"duration":', ',"promo_winner"'))
except ValueError:
continue
if vidDuration<3:
continue
print(vidDuration)
videourl=find_between(html,'"file":"','","')
print(videourl)
videopath='C:\\coub\\'+str(i)+'.mp4'
try:urllib.request.urlretrieve(videourl,videopath)
except ValueError:
continue
except ConnectionResetError:
continue
audiourl=find_between(html,'"audio_url":"','","')
print(audiourl)
if audiourl =="":
continue
audiopath='C:\\coub\\'+str(i)+'.mp3'
try:urllib.request.urlretrieve(audiourl, audiopath)
except ValueError:
continue
"""
try:audio = AudioFileClip('C:\\coub\\'+str(i)+'.mp3').set_duration(vidDuration)
except AttributeError:
i = i - 1
continue
except UnicodeDecodeError:
i = i - 1
continue
except OSError:
i = i - 1
continue
"""
durationlist.append(vidDuration)
videocliplist.append(videopath)
audiocliplist.append(audiopath)
i+=1
print(videocliplist)
print(len(videocliplist))
print(len(audiocliplist))
print("Nachalo vtoroi fazi")
for k in range(1,6):
print(videocliplist)
try:audioclip=AudioFileClip(audiocliplist[k])
except OSError:
continue
except AttributeError:
continue
videoresized=VideoFileClip(videocliplist[k],audio=False).resize((1280,720))
videoresized.set_audio(audioclip)
videoresized.set_duration(durationlist[k])
try: cuter = VideoFileClip('C:\\cut.mp4',)
except OSError:
continue
print(k)
fclip = concatenate_videoclips((videoresized, cuter), method="compose", transition=None)
try:fclip.write_videofile('C:\\coub\\file' + str(k) + '.mp4', fps=30,codec='mpeg4')
except OSError:
continue
for k in range(8, len(videocliplist)):
print(videocliplist)
try:
audioclip = AudioFileClip(audiocliplist[k])
except OSError:
continue
except AttributeError:
continue
videoresized = VideoFileClip(videocliplist[k], audio=False).resize((1280, 720))
videoresized.set_audio(audioclip)
videoresized.set_duration(durationlist[k])
try:cuter = VideoFileClip('C:\\cut.mp4', )
except OSError:
continue
print(k)
fclip = concatenate_videoclips((videoresized, cuter), method="compose", transition=None)
try:
fclip.write_videofile('C:\\coub\\file' + str(k) + '.mp4', fps=30, codec='mpeg4')
except OSError:
continue
import numpy.random
import string
import urllib.request
from moviepy.editor import *
def find_between( s, first, last ):
try:
start = s.index( first ) + len( first )
end = s.index( last, start )
return s[start:end]
except ValueError:
return ""
def base36encode(number, alphabet='0123456789abcdefghijklmnopqrstuvwxyz'):
if not isinstance(number, (int)):
raise TypeError('number must be an integer')
base36 = ''
sign = ''
if number < 0:
sign = '-'
number = -number
if 0 <= number < len(alphabet):
return sign + alphabet[number]
while number != 0:
number, i = divmod(number, len(alphabet))
base36 = alphabet + base36
return sign + base36
def base36decode(number):
return int(number, 36)
for j in range(1,20):
videocliplist=[]
audiocliplist=[]
durationlist=[]
i=0
while i<20:
randint=numpy.random.randint(105,107)
try: urllib.request.urlopen('http://coub.com/embed/' + base36encode(randint))
except urllib.error.HTTPError:
continue
with urllib.request.urlopen('http://coub.com/embed/'+base36encode(randint)) as response:
html = response.read().decode("utf-8")
try:vidDuration = float(find_between(html, 'false,"duration":', ',"promo_winner"'))
except ValueError:
continue
if vidDuration<3:
continue
print(vidDuration)
videourl=find_between(html,'"file":"','","')
print(videourl)
videopath='C:\\coub\\'+str(i)+'.mp4'
try:urllib.request.urlretrieve(videourl,videopath)
except ValueError:
continue
except ConnectionResetError:
continue
audiourl=find_between(html,'"audio_url":"','","')
print(audiourl)
if audiourl =="":
continue
audiopath='C:\\coub\\'+str(i)+'.mp3'
try:urllib.request.urlretrieve(audiourl, audiopath)
except ValueError:
continue
"""
try:audio = AudioFileClip('C:\\coub\\'+str(i)+'.mp3').set_duration(vidDuration)
except AttributeError:
i = i - 1
continue
except UnicodeDecodeError:
i = i - 1
continue
except OSError:
i = i - 1
continue
"""
durationlist.append(vidDuration)
videocliplist.append(videopath)
audiocliplist.append(audiopath)
i+=1
print(videocliplist)
print(len(videocliplist))
print(len(audiocliplist))
print("Nachalo vtoroi fazi")
for k in range(1,6):
print(videocliplist)
try:audioclip=AudioFileClip(audiocliplist[k])
except OSError:
continue
except AttributeError:
continue
videoresized=VideoFileClip(videocliplist[k],audio=False).resize((1280,720))
videoresized.set_audio(audioclip)
videoresized.set_duration(durationlist[k])
try: cuter = VideoFileClip('C:\\cut.mp4',)
except OSError:
continue
print(k)
fclip = concatenate_videoclips((videoresized, cuter), method="compose", transition=None)
try:fclip.write_videofile('C:\\coub\\file' + str(k) + '.mp4', fps=30,codec='mpeg4')
except OSError:
continue
for k in range(8, len(videocliplist)):
print(videocliplist)
try:
audioclip = AudioFileClip(audiocliplist[k])
except OSError:
continue
except AttributeError:
continue
videoresized = VideoFileClip(videocliplist[k], audio=False).resize((1280, 720))
videoresized.set_audio(audioclip)
videoresized.set_duration(durationlist[k])
try:cuter = VideoFileClip('C:\\cut.mp4', )
except OSError:
continue
print(k)
fclip = concatenate_videoclips((videoresized, cuter), method="compose", transition=None)
try:
fclip.write_videofile('C:\\coub\\file' + str(k) + '.mp4', fps=30, codec='mpeg4')
except OSError:
continue
Как тебе его еще скинуть?
Да ёбаный же ты в рот.
> Код вбрасывать в тред через https://ideone.com/
Для кого это в шапке писали?
вместо того чтобы обходить ошибки, ты бы лучше посмотрел, почему они возникают
Не погоди, это я тебе соврал, это у меня ПЕРВАЯ ФАЗА работает. Дай мне немного времени, и перекатывайся в новый тред.
эх, анон, я думал ты мне поможешь, а ты вон как со мной...
Это копия, сохраненная 8 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.