Шапка: https://github.com/TheKnightsWhoSayNi/info/wiki/HatПрошлый: >>665294 (OP)2.х или 3.х v1: http://legacy.python.org/dev/peps/pep-0373/2.x или 3.x v2: https://wiki.python.org/moin/Python2orPython3
1
>>671902 (OP)ОП-пик устарел.
>>671958Вам завезли switch-case или до сих пор городите костыли?
>>671969угомонись уже, пидор
>>671969А нахуй нужен свитч в некомпилируемом и динамическом языке? Вся его фишка же в том, что свитч сравнивает переменную с константами, из-за чего что-то там оптимизируется и быстро работает. if/elif всё равно не больше места занимает (даже на один отступ меньше, чем если бы свитч был).
Вопрос:Допустим, мне надо, чтобы моя программа качала некие документы, которые ежедневно выкладываются на неком веб-ресурсе. Они бы складывались на фтп-сервере, каждый в папку со своей датой, когда были скачаны в формате dd/mm/yyyy. Чисто теоретически, сложно такую задачу на питоне?
>>672035Нет.
>>672036Что нужно знать для реализации сей тривиальной задачи? Я начинающий программист. До этого на паскале/делфи писал из разряда laba1.
>>672040Нужны модули datetime, requests, ftplib. Наверное, всё.
>>672043Спасибо, анон, сотню нефти тебе.
>>672044А тебе не под линукс?
>>672046Все равно, в общем-то. А если нет, что поменяется? Полагаю, у виндоюзера должны возникнуть проблемы.
>>672052Нет, просто можно было бы и на bash написать. В общем, не важно.
>>672054
>>672054Мисскликнул. Хотел сказать, что тоже интересно, буду знать.
>>672035Когда-то делал заливатель изменений из гит репозитория по фтп. Можешь передрать оттуда, там курлом всё сделано.https://gist.github.com/kctier/33cda7cf6413c733d7eb
>>672054for url in urls.txt;do curl $url -o $(date +"%d/%m/%y");done;
>>672075Серьёзно? Это все? Выглядит просто волшебно!Анон, что задал вопрос.
>>672081Тут в цикле достаются url из файла и сохраняются в текущей папке с датой в формате, который ты указал. А с ftp я не очень понял что тебе и куда, но будет выглядеть примерно так же.
>>672085С фтп надо будет просто качать в папочку, которая корневая у ftp сервера, который он поставит.
>>672086Ну тогда должно выглядеть примерно так:mkdir -p $(date +"") && cd $_;for url in urls.txt;do curl $url -O $(date +"%d-%m-%y");done;Первая строка создаёт директорию, если она еще не существует, и переходит в неё. Вторая строка в цикле скачивает файлы по url и сохраняется с тем же названием, что и в url. Как-то так.
>>672095Что такое $_. Вывод предыдущей команды? Первый раз вижу такую конструкцию, это башизм?
>>672095Ошибся.mkdir -p $(date +"%d-%m-%y") && cd $_;r url in urls.txt;do curl -O $url ;done;$_ - последний аргумент предыдущей команды.
>>672035Мне лень работать, поэтому вот вариант на powershell:$urls = get-content "urls.txt"$outputFolder = New-Item -Force -ItemType Directory -Name (get-date -format dd-MM-yy);foreach ($url in $urls) {Start-BitsTransfer -Source $url -Destination $outputFolder}
>>672130Говно этот павершелл. Многие вендоадмины питон юзают.Или http://xon.sh/ какой-нить.
>>672133Powershell работает из коробки и для такой задачи самое оно.
>>672138Питон ставится в 2 клика.
>>672140Powershell работает из коробки.
>>672140>>672142Ну заебали. Сейчас ещё прикатится хуй с картинкой о распространенности двойки на pypi.
>>672142Что мешает, кстати микрософт-быдлу поставлять питон из коробки? Лицензия позволяет. Поддержка винды там норм.Apple вот поставляет.
>>672151Просто за это никто не заплатит.
>>672035Как-то так.http://pastebin.com/NTKybJxV
Есть один ИИ. Внезапно перед ним встаёт задача выбрать между 2мя стульями. Доступные варианты:1) Стул с пиками. Вес 5.2) Стул с хуями. Вес 3.3) Правильный ответ. Вес 1.ИИ должен случайно выбрать в соответствии с весом варианта. Но при этом алгоритм должен быть универсальным Тоесть, нельзя просто взять и написать что-то типа:> a = random.randint(1,9)> if a <= 5: ai.piki_tocheni()> elif a <= 8: ai.hui_drocheni()> else: ai.pravilniy_otvet()Нужно чтобы была возможность удалять и добавлять варианты и менять их вес.Есть ли в питоне что-то готовое для такой задачи или нужно самому велосипед изобретать?Как такой велосипед лучше организовать?
>>672164О, я делал такое. Тебе нужно сгенерировать кеш по всем значениям, суммируя последовательно веса: [5, 8, 9]. Далее randint по всему диапазону и бинарный поиск индекса по кешу (есть хороший модуль bisect).
>>672164Правда если у тебя оче дохуя удалений, вставок и перевешиваний, то советую сделать как бы бинарное дерево. В каждой ноде хранятся полные суммы весов каждой из двух ветвей. Туда же я бы посоветовал записывать полное количество листьев каждой ветви, чтобы дерево можно было поддерживать сбалансированным. Собственно поиск это спуск по дереву до листа: в каждой ноде у нас два весовых числа и мы просто выбираем взвешенным рандомом одну из ветвей, далее повторяем пока не достигнем листа. Удаление, добавление и перевешивание в целом тривиальны, будут иметь логарифмическую сложность.
>>672164Как-то ты ебануто справшиваешь. Тебе просто надо из списка вариантов рандомным образом выбрать один? Random.choise и вперде.
>>672164А, я хуячил такой ИИ, только на другом языке.Суть такова. Тебе нужно использовать реализацию дерева решений. Если не понял, то читай дальше. В твоем случае у тебя одноуровневое дерево с тремя листьями: стул с пиками (вес 5), стул с хуями (вес 3 - пидор, лол, хуи предпочтительнее пик (мне тоже) ) и хуи дроченые срубают пики точены (вес 1). Чтобы алгоритм обработки оптимального выбора был оптимальным тебе нужна рекурсия (итеративно тоже можно, но заебешься, если у тебя многоуровневое дерево с множеством узлов). Рассмотрим сначала пример с твоим деревом решений, потом посмотрим многоуровневые деревья с лабиринтом пик, негров, хуев, пироженок.Ты находишься на верхнем узле дерева. У тебя есть 3 листа (лист это конечный элемент дерева. Грубо говоря, нижний). То есть 3 возможных хода ИИ. В начале рекурсивной функции проверяешь не является ли текущая позиция листом (конечным элементом). Если являешься, то вызываешь функцию оценки листа (стула с пиками), который узнает вес этого листа и возвращает его обратно. Рекурсивная функция, получив итоговую оценку своей позиции, возвращает ее вес.Если текущая позиция не является листом (конечным стулом-элементом), а является узлом, у которого еще есть выборы, то возможные ходы (выборы сортов стульев) этой позиции добавляются в массив или коллекцию. Дальше хуячишь цикл по всем элементам массива. На каждом возможном ходу вызываешь рекурсивную функцию передавая в качестве параметра позицию хода (стула) и сравниваешь возвращенный вес с уже имеющимся наилучшим. Если вес меньше (хуи дроченые срубают пики точены (вес 1) лучше стула с пиками (вес 5) ), то наилучший вес делаешь равным возвращенному.Только не забудь ограничить глубину раскрытия дерева решений - то есть идет оценка позиции и возврат веса если это лист (конечный элемент, достигли ДНА дерева) или достигнута максимальная глубина. Само собой, при погружении внутрь тогда надо изменять текущую глубину. В результате такой хуйни, функция рекурсивно пробегает по всему дереву и возвращает наилучший ход (если несколько наилучших, то первый из них. Или какой сделаешь). То есть с одноуровневым (с 1 узлом - родительским и 3 листями - стельями) такая хуйня пробежится по всем стульям и вернет срубление пик точеных хуями, ибо вес ее будет наилучшим. Если же у тебя многоуровневное дерево (перед тобой 3 прохода в каждом из которых 3 прохода в каждом из которых несколько стульев различного веса), то вернет наилучший ход и ИИ гарантированно не зайдет в позицию, где на одном стуле неснимаемые пики точены, на другом несрубаемые хуи дрочены, а на третьем распаленные геи-ниггеры из далекого космоса.Хуйня получается компактной, расширяемой (функции поебать на размер и многоуровневость дерева) и твой преподаватель тебе отсосет. Только пиши аккуратно, а то охуеешь от траблшутинга, если что-то будет работать не так, как должно.Если по-прежнему нихуя не понял, то ищи стратегию минимакса - по ней поймешь.
>>672179> Тебе просто надо из списка вариантов рандомным образом выбрать один?Да, но при этом 1 элемент должен выпадать чаще другого, пропорционально весу.
>>672186> Есть два стула... Я выберу срубание... Хотя нет, в этот раз я выберу хуи. Не повезло прост((
>>672186Сделай список в котором каждого элемента будет n*вес
>>672189Рубисты в треде, все в пхп.
Все, что связано с хуями и пиками всегда привлекало внимание на бордах.
>>672184А где тут случайный выбор?
>>672194Не нужен. Но если хочется присесть на пики, то легко прикрутить.
>>672195Анон же написал:>ИИ должен случайно выбрать в соответствии с весом варианта.
>>672189Я думал о таком решении, но, если у пик будет вес 9999, а у хуёв 1, то придётся генерить список в 1000, а потом каждый раз перегенерировать при изменении весов, что непозволительный просер вычислительных ресурсов.
>>672203Делай уже по моим подсказкам. Аж целых джва варианта тебе: с иммутабельной выборкой >>672167 и с мутабельной >>672173.
>>672164Чому бы не сортировать по весу и выбрать из наименьших?
>>672164Внезапно https://docs.python.org/3/library/random.html#examples-and-recipes
>>672207Первый вариант там: этот пост >>672189Второй вариант: этот >>672167Вот хуле нового ты сейчас сказал?
>>672211Зачем устраивать дискуссию, если это есть в документации?>Вот хуле нового ты сейчас сказал?Ты очень неприятно выражаешься.
>>672211>Вот хуле нового ты сейчас сказал?Конкретный пример в питоновских буквах.Мне пригодилось. Больше чем описание про кеш словами без примера.Всем спасибо за подсказки и участие.
>>672221Стековерфлоу-программисты пишут ИИ, лол.
>>672203> то придётся генерить список в 1000И что? Во-первых, 1000 элементов это ничто. Во-вторых, они будут ссылаться на тот-же объект, то есть памяти тоже минимум съедено.Не занимайся преждевременной оптимизацией тем более на быдлопитоне.
>>672228Внезапно появляется вес 1012 к одному.Не занимайся быдлокодингом даже на быдлопитоне.
>>672231> Внезапно появляется А если не появиться?
>>672234Ну не появляйся.
>>672242Ну вот. Тем более 10^12 вес. Обычно не бывает такого. При таком весе весом 1 можно было бы вообще принебречь.
>>672246Ну вот видишь сколько условностей нужно соблюсти. Этот алгоритм неплох, но для небольших фиксированных чисел. И об этом даже там в доках >>672207 написали. То есть 1000 - это уже плохо, так как если тебе нужно сделать миллион выборок по разным вариантам, будешь джва года ждать.
Аноны, у меня есть задание сделать небольшой SPA с возможностью загрузки картинок, сохранения их в галерею, показа отдельной картинки и всей галереи.Я только учусь и никогда раньше не сталкивался с таким таском, для этого мне можно обойтись только Django REST и для отображения написать несколько Ajax запросов? Я правильно понял?
>>672262Думаю тебе надо пердолиться с каким-то javascript фреймворком. Питоновская часть то простая. Кстати django rest довольно сложный, есть попробще либы.
>>672276в туториалах советуют Angular + REST, с первым я не знаком совсем. Хотя, думаю, задача не такая трудная чтобы на фронтенде использовать фреймворк.
>>672278В яваскрипт треде янгуляр чмырят дико. Сам я его не осилил(и не пытался).Можешь на простом яваскрипте сделать или на jquery.
>>672262Если тебе просто преподу показать, то можно хранить картинки прямо в localStorage, а для SPA взять один из тысячи js галлерей, которая в любом случае понадобится.
>>672299или на аджахе
>>672302Или?
>>672304на
>>672308аджахе!
>>672186Лови говнокд, братишьhttps://ideone.com/yuGqTQ
>>672300Да, мне нужно просто реализовать это приложение на дев сервере. Я просто не совсем понимаю, что входит в понятие SPA. В моем представление, это приложение в котором весь обмен данными реализован через Ajax, без обновления страницы и данные отдаются через Json.Соответственно мне нужен Django Rest. Я правильно все понял?
>>672262Дай-ка угадаю: ТЕСТОВОЕ ЗАДАНИЕ?
>>672311Django REST необязательно, можно и на голом Django все это сделать. Тут как тебе будет удобнее.Галерей на js масса, выбирай одну, смотри в каком формате она получает данные. Скорее всего, это будет json список ссылок на превьюшки и полноразмерные картинки.
>>672311Single Page applications же, еба. >данные отдаются через Json.Не обязательно. Даннуми ты можешь хоть через WEB-сокет по каштомному бинарному протоколу обмениваться.>Соответственно мне нужен Django Rest.Совсем не обязательно. Можно на простой джанге заипошить, можно на фласке, можно хоть на голых скриптах. Задание-то хоть на какую позицию?
>>672311Django REST нужен чаще всего когда ты хочешься сделать по быстрому нормальное API к своему приложению, чтобы другие могли юзать его из своих сервисов. В твоем случае обычные вьюхи и какойнить ангуляр с библиотекой для картиночек будет достаточно.
>>672317>>672320>>672324СпасибоЯ позицию джуниора ищу и выполняю все задания которые предлагают. Пока устроится не могу. Самое тяжелое пока было написать простое реалтайм приложение, я написал но завалил все, что можно в интервью, сейчас подтянул знания.Погуглю галереи и отдавать буду Jsonresponce через Ajax запросы, намного проще пока выглядит чем вникать в Rest и Angular
>>672325первый запрос на SPA галерею http://demo.jankuri.com/ngGallery/чтд.
>>672325>выполняю все задания которые предлагают
>>672331Это же опыт, который мне пригодится
>>672332моча рано ударила в голову в 4 активно ругался матомв детском саду девочки впервые показали мне пиздупотом школа вонючая форма драки клей так я становился сильней
>>672336Уебывай в /б
>>672356да тут такойже /b, только все ждут что тут сэры и герцоги одни.
Аноны, подскажите название пакета, насколько я помню аналог Selenium, только рендерит страницу в консоли.
>>672417Ghost.py?
>>672421Не совсем то, но пока искал, нашел, что Selenium в качестве вебдрайвера может phantomjs использовать.
>>672325Ты умничкаЯ ещё годик поучу питон похожим макаром и тоже попизжу куда кодером
>>672367Господа жи.
>>672325Ну рассказывай свой путь, с чего начал, какие материалы уже успел изучить, ну и входные данные какие были.И ты еще расскажи >>672457
>>672464Месяцев 7 учусь, работаю 2х2 так что время свободное есть.Входных данных никаких, даже отдаленно не представлял как все устроено. Прочитал Лутца, посмотрел кучу туториалов, вроде вник в основы, потом начал Django изучать, сейчас с основами тоже знаком хорошо. По sql небольшую книгу прочитал, не помню автора, просто чтобы представлять как делать запросы без ОРМ. Свой уровень не могу точно оценить но на джуниора точно должен тянуть. Вообще нужно очень много практики, чтобы в голове откладывалось больше информации. На собеседования зовут редко как сделаю что-нибудь стоящее для гитхаба, может получше пойдет
>>6724643 месяцаКодекадеми -> книжки-туториалы все подряд, уже добрый десяток книжечек со всеми заданиями и прочей хуйнёй, штук сорок скриптов для себя накатал что бы автоматизировать всё что хотел, вроде автоматизировал. Начинал учить что бы высрать вполне конкретные две системки на джанго но меня до сих пор ебёт их делать.А с другой стороны кодинг заебись, даже если я буду зарабатывать за месяц 3 сотни баксов это будет больше чем моя текущая зп, а я так понял удалёнку на 3 сотни найти не самое сложное в этой жизни.
>>672500что у тебя за работа? Я только один парсер себе для удобства работы написал
>>672503Скажем так, я фрилансер в сфере корпоративного управления. Обычно это означает что я сижу дома и пизжу с долбоёбами на линкедине за мизерную ставку. Изредка - что я куда-то еду и за огромную кучу бабла им чёто делаю. Изредка это реально изредка. Из других смешных особенностей опыта у меня вроде и много, но для международного уровня маловато, а местный вымер нахуй ввиду того что теперь моя область называется лднром.Вот и получается что для говновакансий за 500 баксов никто с экспантом ебаться не захочет, собеседоваться зовут только на всякое говнище по 1-2 К $, а живу я на 10 тыщ руб которые зарабатываю тем что торгую через инет при помощи вордпресса и адсенса/директа всяким говном
>>672417Фантом жс. Только его надо отдельно скачивать. Удобная штука. А во время отладки надо одну строку поменять чтобы все было видно
Пистоны, задачка с codewars.Вычислить выражение типа1 | 2 | 3 | ... | nНа тестах большого числа n все ломается.Делал через reduce - MemoryErrorА через цикл - Process was terminated. It took longer than 6000ms to complete.Какой алгоритм взять?
>>672554Выражение то какое?
>>672557вычислить or натуральных чисел от 0 до n>Given a number n we will define it's scORe to be 0 | 1 | 2 | 3 | ... | n, where | is the bitwise OR operator.>Write a function that takes n and finds it's scORe.
>>672464а меня хоть никто и не просил тоже расскажу.С лета мееедленно так читал сначала Укус, понял что нихера не понял (вернее для реализации даже курсачей понимания маловато), решил сделать "сначала все зубришь-потом кодишь", поэтому читал вяло полгода Лутца. Понял что так нихера не проканает и сижу читаю теорию Лутца, практику Лутца, Бизли с примерами и описаловом библиотеки и еще СИКП и пытаюсь в курсачи и чтобы понять как работает оно. Но этого не случалось пока мне не припекло что мне надо перебираться из моей мухосрани а коденхом это сделать будет проще всего по затратам времени.
>>672554А большое n - это сколько? На моем днищеноуте n=100 млн вычисляет 5.4s
Я еще раз прочитал про SPA, главное отличие SPA это выполнения кода на одной странице без перезагрузки? Т.е. если в Django я отправляю во вью все через Jsonresponce, по средствам Ajax это будет SPA? Или у SPA есть какие то другие особенности?
>>672560https://ideone.com/Qe36UV
>>672601https://ideone.com/N0G3XI
>>672601Какая-то магия.
>>672611Само собой. Я просто хотел чтобы было видно почему так получается.
>>672612OR не умеет превращать 1 в 0. Если у числа где-то 1 в двоичном представлении, то сколько его не орь она там останется.Поэтому у тебя сразу должно возникнуть предположение, что двоичном представлении X = 1 | 2 | ... | N должно быть дофига единиц.По факту результат будет состоять из такого же количества битов, что и N, но все они будут "1". Даже объяснять лень.
>>672468>>672500А вы молодцы, удачи вам и упорства побольше.Тоже надо плотнее уже заняться этим делом, а то прерываюсь часто из-за дел.Расскажите еще какую-нибудь стори.
Питоны, подскажите, что лучше использовать. Есть сайт, он берет данные не из бд, а из rest/soap сервиса, крутящегося на другом сервере. С помощью чего лучше реализовать получение этих данных (нагуглил сериализаторы), и какой фреймворк использовать? Вроде как нашел, что для этого Flask хорошо подходит, а в Django для такой задачи слишком много лишнего, верно ли это? В общем, хелп ми плиз.
>>672632По мне и фласк слишком батарейкнутый для простых дел. Попробуй веб2пу - оно простое как банка пива и тоже работает.
>>672624Алсо вот верхний ответ с codewarsscore=lambda n:2n.bit_length()-1
>>672639что рекомендуешь прочесть чтобы понять веб2пу? и понять что он прост как банка пива?
>>672677Ну или так.score=lambda n:(1<<n.bit_length())-1
>>672685Туториал на оф. сайте
Анон, что за хуйня:f =open('file.txt').read().replace(',\n',',').split('\n')f = filter(None, f)for i in f: print(i)должно быть 10 строк, но их 11, т.е последняя пустая. Откуда она берется, как ее убрать?
>>671902 (OP)Так так так. А что не так с каррингом? Глаз зацепился просто.
># -- coding: UTF-8 --Такая хрень же не нужна в третьем, да?
Захотел я сделать сайт на web2py, например, не на локалхосте, а чтобы другие люди могли зайти.Я знаю только что нужен домен и хостинг, а как это всё работает? Какие шаги надо проделать, чтобы на выходе иметь настоящий домен в интернете, и на нем разрабатывать сайт. Распишите подробнее, пожалуйста. И не отправляйте в веб
>>672918Поиграй с бесплатным питонэнивер хостингом, пройди Джанго герлс туториал - базарю вопросов не останется вовсе а по времени займет ну 3 часа
Вечер в хату. Есть вопрос. Хочу вкатиться в кодинг в Х лет, нихуя не умея (кроме английского). Как я понял, из ЯП Python - самый легкий в плане синтаксиса.Прочитал Лутца, прошел пару онлайн-курсов по основам синтаксиса, порешал задачки. Теперь хочу перейти к прикладному применению, писать код по обработке встроенных типов данных уже не интересно.Посмотрел материалы, много книг, туториалов на инглише, по применению python в куче разных областей. Не представляю, за что браться, с чего начинать, так как по-хорошему специализироваться придется в чем-то одном. Data analysis, system administration, networking не привлекают, питоновские GUI и mobile apps убогие (пацаны сказали), остается web-development (порог вхождения низкий, как раз для всякого днища подойдет). Так вот, где можно посмотреть примерный перечень технологий для фулстэк веб-разработки на питоне? Насколько я понял, нужно мочь в: верстку (html, css), базы данных (sql, postgres, mongodb), специализированные питоновские библиотеки и фреймворки (flask, pyramid, django), знать теорию (компьютерные сети, алгоритмы, паттерны проектирования), опционально linux, JS плюс соответствующие библиотеки и фреймворки. Поправьте, если что-то пропустил или ошибся.Еще все утверждают, что просто учить синтаксис не имеет смысла, надо в ходе изучения создавать некие проекты. Что это за проекты и с чем их едят? Где можно посмотреть примеры, чтобы что-то выбрать для себя?
>>672998Лучше вкатывайся в мобайл девелопмент, на питоне гораздо лучше.
>>672998Учи все что попадает под руку, тебе это много времени на текущем уровне не займет, а кругозор расширит.
>>673112Ага, быстрее найдет "точку опору" и начнет ориентироваться во всех этих баззвордз.
Позвали в РАМАКС ДС-2 на собеседование. Может тут есть Анон который ходил туда и сможет что-нибудь рассказать ?
>>672998Синтаксис похуй тащемта.
>>672891не нужна
>>672998на степик 10 марта начнется курс "прикладное программирование", может будет интересно
Анон, учу тхреады. Пример из справочника Бизли:def clock(interval): while True: print("Текущее время: $s" % time.ctime()) time.sleep(interval)t = threading.Thread(target=clock, args=(15,))t.daemon = Truet.start()Process finished with exit code 0И все, ничего не выводит. В чем подвох?
>>673128Книги Бизли есть в русском переводе?
>>673132Нагуглил как минимум справочник на русском
>>673128>A thread can be flagged as a "daemon thread". The significance of this flag is that the entire Python program exits when only daemon threads are left.Попробуй убрать этот флаг, поставь интервал поменьше (1 секунду) и запусти. Смотри на консоль. Затем читай про .join() в доках.
А как проще всего питоном проверить картинки на раржпг'ность?Через try: os.... Рар архиватор запускать консольный и если вышел с ошибкой - следующий?
>>673212Проверяешь содержимое файла на заголовки распространенных архивов.
>>673236Именно весь файл просматривать?Страшно представить сколько времени займет проверка картиночек по 15 мб
>>673242Ну ты можешь сначала прочитать заголовок жипега (http://www.fastgraph.com/help/jpeg_header_format.html), вытянуть оттуда нужные данные, посчитать размер и пропустить нужное количество байт, а там уж видно будет, есть что-то или нет (ну или сразу сравнить с размером картинки).
Реквестирую годной обучалки по пихтону для неновичка в программировании.
>>673277Think Python
>>673277http://www.youtube.com/playlist?list=PLlb7e2G7aSpTTNp7HBYzCBByaE1h54ruWвот отличный курс
>>673283http://www.youtube.com/watch?v=5V7XG1mGiHc&list=PLlb7e2G7aSpTTNp7HBYzCBByaE1h54ruW
>>673283По 1:20:00 в среднем лекцииИ у кого-то же есть время этих пиздаболов столько слушать, жесть
>>673285мне очень понравился лектор, интересно слушать его. Вообще у них много годных лекций на канале
>>673116Ходил устраиваться туда около полугода назад. Сначала немного общался текстом в скайпе с эйчаршей, вроде все норм. Пришел, прошел через охранника. Коридоры просторные, светлые. Вроде и аккуратно всё, но отдает какой то медицинской стерильностью. Вышла эйчарша. Симпатичная молодая девушка в джинсах и клетчатой рубашке, офисным стилем даже не пахнет. Пригласила в кабинет. Спросила за мой опыт, проекты, задала несколько несложных вопросов. Сказала что ы как профессионал её устраиваю, но хотелось бы ещё узнать личные качества. Пригласила для неформальной обстановке выйти покурить. На улице начала настойчиво ко мне приставать, обнимать, говорить что ей нужно узнать меня поближе. Сказала рядом живет. Ну я тогда молодой был, токсикозный. Согласился. Жила она правда рядом, буквально через дорогу. Пришли, она взасос поцеловала, начала меня раздевать. Ну я же листва, начал дрожащими руками её раздевать. Стягиваю джинсы с неё, а она без трусов и у неё нихуевый такой хуй, сантиметров 18 точно будет. Я охуел, замер, перевожу на неё взгляд, а она улыбается, меня по голове гладит и показывает на хуй, говорит - "я тебя на работу возьму без испытательного, зарплату сделаю выше на половину". Ну я подумал - а что терять? Она ничего не докажет, а работа не помешает. Ну я и сделал ей минет. Она как кончила сразу чего то занервначала, стала одеваться. Мне мою одежду дала и вытолкнула за дверь, сказала завтра сообщит по телефону во сколько приходить на работу. Этим же вечером пришла смска, что я им не подхожу. Я перезванивал - телефон не доступен. Обратно в офис ходил - охранник отказывается пускать. Квартира та как оказалась была съемная. Плохая компания, не рекомендую.
>>673394Всегда читаю как в первый раз. Вот такой вот я романтик.
>>673406мечтаешь так же?
>>673431А потом взять эйчаршу замуж
Анон, хочу парсить сайты из выдачи гугла или яндекса, на которых есть виджет комментарие ВК, в каком направлении двигаться, что гуглить?
>>673437>комментариев
>>673437виджет - жс, значит тебе нужно что-то типа селениума что бы оно могло эти страницы с жс в браузере собрать прежде чем по икспас парсить
>>673440нафига? виджет подключается с помощью определенного жс скрипта вроде как, парсишь на страницах урл с этим жсником, все
>>673451тебе комменты ж собирать из виджета?
Поясните с какой книги начинать Питон (имею опыт на PHP и Symfony, читал SICP и вообще молодец), чтобы не 100 страниц про переменные, а полная и непротиворечивая информация по языку, его фичам и прочему.Пока смотрю на Dive into.
>>673476ну или справочник Бизли
>>673476>>673281
>>673476https://www.youtube.com/watch?v=N4mEzFDjqtA
>>673461я не >>673437ему для спама я так понимаю нужно базу сайтов собрать, потом он уже будет специальным софтом спамить
>>673476Я уже 2 книги добавил где описывается все без воды.https://github.com/TheKnightsWhoSayNi/info/wiki/Books#%D0%9B%D1%91%D0%B3%D0%BA%D0%B8%D0%B5-%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8
>>673486fluent python читали?
>>673496>fluent pythonДа дахуя этих книг, но те 2 - это топ.
>>673394лолд
>>673394отлично, мне подходитно я все равно бампану >>673116
>>673434Это она тебя возьмет.
>>673541да похуй, если выглядит как тян, то мечта просто
>>673543Двачую, трап > тян.
А потом кодить на питоне. То она на твоем, то ты на ее.
А потом разблокируешь ей GIL и итерируешь генератор.
>>673550У меня один знакомый не успел переназначить бранч и закоммитил в мастер тян. В итоге релизнулся проект, а ему пришлось стать контрибьютором. Не забывай про безопасность.
>>673592не в ту ветку пушишь, тут трапы и их преимущества
>>673440То есть, сперва спарсить все сайты из выдачи?
И да, мне для спама, дальше 10-й страницы парсить нет смысла, ибо трафика там нет уже.
>>673437если просто найти, то хоть юрлгетом. Смотришь как у гугла/яндекса url формируется для запросов, потом берешь какую-нибудь либу для работы с DOMом, там BeautifulSoap или Grab, ну или что ты там нагуглишь. Потом ходишь ею по ссылкам с выдачи, скачиваешь исходник сайта, можешь той же либой, но urllib должно хватить. Ну и ищешь в исходниках код, который вставляют для того что бы добавить этот блок комментариев.
>>673121Спасибо.
>>672716>f =open('file.txt').read().replace(',\n',',').split('\n')>f = filter(None, f)>for i in f:>print(i)Покажи свой файл
>>672922>базарю вопросов не останется вовсе а по времени займет ну 3 часаСдается мне, ты пиздишь. Вкатиться в джанго и за три дня не удастся, во всяком случае вопросов становится все больше, а про то чтобы хостить сайт даже пока боюсь и думать.мимо нуб кун
Всем привет , есть ли какая годная инфа по pykinter или pygame?
>>674046> pykinterЧё эт?
>>674031Человек о хостинге и жеплое питон-приложений на этот хостинг спрашивал.Спрашивал о веб2пу а не ДжангоА туториал от Джанго герлс я ему почитать рекомендовал ибо там тема использования питонэнивер раскрыта так что даже бабы врубаются.
>>673128Читай документацию, блеать.https://docs.python.org/3.5/library/threading.html#threading.Thread.daemon>The entire Python program exits when no alive non-daemon threads are left.Короче либо крестик сними daemon=true убери, либо [/s]трусы надень[/s] t.join() сделай.
>>672716Ну у тебя в конце файла есть перевод строки. Стрипни текст и все.
>>674244> f = filter(None, f)Должно убрать пустые строки. Видимо там не просто пустая строка а пробел.
>>672010Два чая этому господину. Некоторые пункты на OP пике вообще высосаны из пальца. Зачем питону компилятор, если он изначально разрабатывался без расчёта на компиляцию в машинный код. А так то, компиляция в байт-код есть, ибо .pyc файлы никто не отменял. Приватные методы - _,methodname или __methodname. КАРОЧИ ТОЛСТА.
>>674362Канпелятор есть - jit и pypy, есть nuitka, есть cython.Проверка типов тоже есть - mypy и в pycharm.Под "хвостовая рекурсия" афтар видимо имел ввиду tail call optimization и это фишка функциональных языков где нет циклов. Зачем оно в питоне непонятно, но всё равно можно запилить через хаки.Карринг тоже есть - тот же functools.partial или самому запилить можно т.к. функции первого порядкаЛенивость тоже.
Написал небольшой скрипт на питоне для скачки всех файлов с треда. Полезно на всяких png-тредах или подобномhttps://github.com/OlegWock/2ch-files-downloaderПодписывайтесь, ставьте лайки
Гвиданы, как мне в джанго получить url картинок, чтобы их повставлять в темлпейт при создании новости, если картинки эти заливаются в отдельную модель, а в посте они через мени-ту-мени-филд.
>>674621Все разобрался.
>>674689kak?
Объясните, как на пистоне строить графики функций.matplotlib - тормознутое говноvispy - не работающее аппаратно-ускоренное говно, кидающееся NotImplementedException на попытку его использования для построения графиковвсё остальное - низкоуровневое говно для рендеринга полигональных моделек
>>674798Честно - ни разу не слышал что бы матплот обвиняли именно в тормознутостиВ других грехах - да, но в тормознутости от тебя первого слышу. Может ты что-то делаешь не так?
>>674798Сотни их. plotly и pygal сам юзал, заебись.
Хелп ми плиаз. Прошел начальный курс по питону от MIT хз что теперь дальше изучать (сижу на код академи от этого профит есть?). Вот нашел сборник книг, курсов но какой выбрать? http://tproger.ru/articles/free-programming-books/#python
>>674869Изучай популярные фреймворки и скорее вкатывайся в работку.
Посоветуйте самый годный учебник по сабжу, или онлайн-курс. Можно на английском.
>>674876>пистон>работкуПХАХАХАХХ
>>674876Можете сказать какие, а то я в этом деле валенок.
а вы знали что есть подскасты по петону?Вчера слушал "Talk Python to me" не совсем понял зачем он, какоето бесконечное обмазывание петоном в прямом эфире.
>>674244>Ну у тебя в конце файла есть перевод строки. Стрипни текст и все.нет, пустые строки от перевода(любого количества) срок не появились бы
>>674174да? ну тогда ладно.
>>674817plotly - рендерит в браузере, и по-видимому юзает веб-сервис. Ты мне ещё предложи jupyter заюзать (не идёт потому, что разрабы pyzmq послали xp на хуй, увидев, что одной из импортируемых ими функций в xp нет, а разрабы jupyterа по видимому завязали jupyter на всяякое не нужное дерьмо (нахуя локалному нехайлоад экземпляру сервер очередей?)).pygal - 2д диаграммы>>6748021 а ты попробуй построить 3d график2 а на старом железе даже 2d будет тормозить>но в тормознутости от тебя первого слышу. 1 на стековерфлоу есть об этом тред2 в доках об этом написано и сказано юзать vispy
>>674895Есть еще подкаст.инит и питон тест подкастПо мне так до жопы все это, я тупо разговорные слушаю что бы не так быстро речь иноземную забывать а пионерские термины - их и так хуй забудешь за отсутствием русских.
>>674869>>674884Все в оп посте. Или нахуя нам шапка по-вашему?
>>674955а что такое пионерские термины?
>>674993Исправление ебучим гуглсвайпом слова "программерские"
>>674995в том эпизоде что я слушай, кстати, поясняли что без петона в cgi и кинематограф вообще не ходи.
Посоны, а как вообще интерфейсы делают? Ведь экраны мало того разные по разрешению - у них еще и разный dpi. Как же сделать так, чтобы на разных мониторах приложение выглядело приемлемо?
Почаны про spb-tut(точка)ru что скажите? Вот не могу понять, он жесткий продаван и нагородил какой-то хуйни на джанге в виде портала УСПЕЙ КУПИТЬ ВСЕ ПО 9999999 ДО ЗАВТРА или реально годные темы задвигает? Что вообще годного можно найти по основе построения вэб-приложений/приложений, не из разряда тыкайте сюда и хуяхуяк runserver во как у вас круто вышел helloworld, а что-то ближе к реальному миру, типо пишем с нуля магазин для продажи говен лопатами на развес ИНТЕРАКТИВНЕНЬКО с AJAX НА БУТСТРАПЕ АДАПТИВНЕНЬКО. Ну или как-то так хз, только въезжать начинаю лол
>>672716Это тащемто ddl.sql, т.е. create table и т.д>>674247Должно, видимо сплит в последней строке убирает \n и пилит новую строку. Почему фильтр эту строку не удаляет я не знаю>>674244Можно пример для тупых, а то пробовал не вышло
>>674934http://www.pygal.org/en/latest/documentation/types/line.html
>>674934> xpНу, бля, ты бы ещё на отсутствие поддержки win95 жаловался. Поставь линукс.
>>674934Вот ещё кстати, к ней примерялся, но тогда она qt5 не поддерживала и я её дропнул.https://github.com/pyqtgraph/pyqtgraph
Что делать если не могу обновить pip с 7 до 8?
Допустим, я написал приложение, которое может быть полезно многим людям и хочу выложить его на pip. Насколько это сложно? Как отправить туда пакет для проверки? У них есть какие-нибудь обязательные требования?
>>675167Регистрируешься, логинишься, прописываешь в своем пакете всякую установочную муру, отправляешь. По сути мало чем отличается от ебилдов в генте или пкгбилдов в арче.>>675163sudo easy_install3 -U pip
>>675163Что значит «не могу»?
>>675172sudo easy_install3 -U pip ошибку выдает
>>675190>ошибку выдаетОчень полезная диагностическая информация, оставайтесь на линии, наши экстрасенсы уже закидываются спайсом и вылетают.
>>675167Никаких требований кроме регистрации. Делается через setup.py (как они там сейчас называются, setuptools или distutils). Есть ещё тестовый pypi, можешь попробовать, посмотреть, поправить.
>>675103Использовать пункты вместо пикселей, использовать вектор вместо растра.
>>675153Там дадо полигоноёбствать чтобы построить в 3d
>>675139>тыкайте сюда и хуяхуяк runserverОбычно такой способ изучения фреймворков самый эффективный. Если же ты не в теме как решается некая задача, для которой предназначен именно этот фреймворк, то учись. Блог напиши, гостевуху, а то с хелловорлда решил сразу магазины идти писать.
Спасибо анону за совет с djangogirls. Дошел до питонэнивер, установил вайтнойс, пытаюсь выполнить команду python manage.py collectstatic, Выходят сплощные ошбики типа таких:File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 429, in execute_from_command_line utility.execute() File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 379, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 191, in run_from_argv self.execute(args, *options.__dict__) File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 219, in execute self.validate() File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 249, in validate num_errors = get_validation_errors(s, app) File "/usr/local/lib/python2.7/dist-packages/django/core/management/validation.py", line 35, in get_validation_errors for (app_name, error) in get_app_errors().items(): File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 146, in get_app_errors self._populate() File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 64, in _populate self.load_app(app_name) File "/usr/local/lib/python2.7/dist-packages/django/db/models/loading.py", line 78, in load_app models = import_module('.models', app_name) File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module __import__(name) File "/home/Contra111/my-first-blog/blog/models.py", line 2, in <module> from django.utils import timezoneImportError: cannot import name timezoneМне что-то подсказывает что проблема в том, что в ошибках питон 2.7, я то писал всё на третьем и учебник на третьем, что делать?
Ну да, и команда python пишет, что там используется 2.7
>>675239Используй третий, очевидно.
>>675241И как сделать, чтобы там исопользовался третий?
На стаковерфлоу предложили такую команду использовать:mkvirtualenv --python=/usr/bin/python3.4 django18Теперь версия 3.4
>>675237Чёт у тебя какая-то плохая джанга. У меня импортируется всё.In [1]: from django.utils import timezoneIn [2]: import djangoIn [3]: django.__version__Out[3]: '1.8.7'
>>675246Виртуаленв поменял на 3.4, теперь другая ошибка:(django18) 23:45 ~/my-first-blog (master)$ python manage.py collectstaticTraceback (most recent call last): File "manage.py", line 8, in <module> from django.core.management import execute_from_command_lineImportError: No module named 'django'
>>675250А тут джанги у тебя совсем нет.
На этот питонэнивер не нужно заново джангу ставить или её там нет сейчас? Похоже что нет
>>675252Приличные господа используют свои сервера.
>>675254Я пока совсем слаб во всех эти серверах, комитах и прочем, пройду этот гайд для девочек, и уже буду о своих серверах думать!
На локалхосте ставил 1.9.3, здесь не ставится:django18) 23:45 ~/my-first-blog (master)$ pip install django-1.9.3Collecting django-1.9.3 Could not find a version that satisfies the requirement django-1.9.3 (from versions: )No matching distribution found for django-1.9.3(django18) 23:48 ~/my-first-blog (master)$ pip install django1.9.3 Collecting django1.9.3 Could not find a version that satisfies the requirement django1.9.3 (from versions: )No matching distribution found for django1.9.3
>>675257Хех. На локалхосте у тебя видимо файл лежал прям там же, с именем django-1.9.3. Так-то pip install Django==1.9.3 (если есть такая вообще, на pypi сверься)
>>675261А ну да, так и ставил, на питонэнивер тоже поставил, пытаюсь выполнить python manage.py collectstatic :Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/Contra111/.virtualenvs/django18/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line utility.execute() File "/home/Contra111/.virtualenvs/django18/lib/python3.4/site-packages/django/core/management/__init__.py", line 345, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/Contra111/.virtualenvs/django18/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv self.execute(args, cmd_options) File "/home/Contra111/.virtualenvs/django18/lib/python3.4/site-packages/django/core/management/base.py", line 399, in execute output = self.handle(args, options) File "/home/Contra111/.virtualenvs/django18/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 173, in handle if self.interactive and input(''.join(message)) != 'yes':UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte
>>675263Не пиши туда "да", пиши "yes".
>>675268Чего троллишь то, конечно yes писал
Попробовал еще раз, заработало, какая-то хуета
>>675272Чёт ты туда ввёл не то. Наверное под КОИ-8 сидишь прямо из восьмидесятых, что даже юникодный строкожуй подавился. Да, в utf-8 таки есть невалидные байты.
>>675275Ты о чем вообще, я сижу в консоли pythonanywhere
Теперь настраиваю wsgi, и опять ошибка, как я понял он не может найти whitenoise, но я же устанавливал его только что, что за бред
>>675278Мне это ни о чём не говорит. Что за пайтонэнивеа. Для нюфагов наверное, очередное всё-в-одном. Ток чёт глядя на твои стектрейсы мне кажется оно не справилось с тем для чего предназначалось.
>>675289я как понял это хостинг бесплатный, я туда отправил свой репозиторий с проектом, установил джангу, установил whitenoise, теперь пытаюсь настроить файл wsgi, и вот на этом моменте опять ошибка, он не видит whitenoise почему-то, хотя только что установил
Не понимаю почему он не видит staticlocal, в дереве файлов же появилась папка static и всё остальное
>>675291Вангую что venv на стороне сервера не подключён.
>>675299я когда на локалхосте ставил джангу, не стал ставить венв, так как не понял зачем он нужен, а на сервере пришлось поставить, т.к иначе использовался питон 2.7
>>675301Не, тут речь о программе-сервере. Сам venv может быть в порядке. Например так:uwsgi: plugins: python34 env: SETTINGS_MODULE=settings module: wsgi:app venv: /ряяяяя/.venv/ master: true processes: 1
>>675313Я в этот файл записал то что в гайде написано, только ник поменял на свой http://tutorial.djangogirls.org/ru/deploy/index.html
>>675297>эти шрифты>эта радуга
В каждом втором посте каждый тролль потешает своё чсв, а по делу сказать то?
>>675318>настроить файл wsgiСам wsgi файл обычно "настраивать" не нужно. У меня например вместо sys.path.append просто есть директива chdir, а вместо os.environ директива env. В итоге я могу вертеть как хочу, а wsgi файл остаётся нетронутым. И это правильно потому что складывать в общий гит, в общий файл wsgi.py настройки одной конкретной машины плохо. Но на твоём хостинге видимо нет возможности так делать, поэтому прямо в wsgi хардкодом вписали.>не видит whitenoiseПробуй под активированным венв запустить питон и импортировать этот модуль.>В секции "Virtualenv" кликни по красному тексту "Enter the path to a virtualenv" и набери /home/<your-username>/my-first-blog/myvenv/На тот который надо указывает?
>>675332В консоли импорт вайтнойс работает, а под запущенным венв это как?
>>675328Lucida console хороший шрифт, я сам даже как-то сидел. А с cleartype всё ок, кроме того что делать с ним скриншоты дело богопротивное.>>675334Ну или такsource myvenv/bin/activatepythonилиmyvenv/bin/python
>>675332Пишет что не найдео венв по этому пути
>>675337Читать секции "как создать" и "как использовать".https://habrahabr.ru/post/157287/Учитывай что симлинк ipython не создаётся, только python.
>>675207>>675172Спасибо! А пакеты проверяются вручную или загружаются в автоматическом режиме?
>>675342Их никто не проверяет. Туда просто пакадж вливается файлом и сразу же появляется для скачивания.
Теперь версия питона опять стала 2.7, как это работает не понимаю
>>675244Никто не использует третий кроме школьников это не интерпрайз.
Всё переделал заново, с самого начала поставил венв, потом поставил джангу и вайтнойс, настроил висг, и всё равно ошибка: ImportError: No module named 'whitenoise'
>>675349При создании виртуаленва версию питона надо выбрать.Раньше это было:virtualenv --python=python3.4 venv_dirТеперь:python3.4 -m venv venv_dirВот так ещё можно не делать его изолированным окончательно, разрешить использовать уже установленное в системе:python3.4 -m venv --system-site-packages venv_dirНа самом деле это всё такой хак, позволяющий изолировать питоны и наборы библиотек. Он там подменяет несколько переменных окружения и расставляет симлинки. То есть ты под активированным венвом набираешь "python" и у тебя сразу нужная версия питона с нужным набором библиотек, всё импортируется, pip ставит только в этот венв (pip тоже теперь симлинк, в venv_dir/bin глянь). deactivate просто затирает переменные окружения в текущем баш-интерпретаторе и у тебя снова дефолтный системный питон.
>>675358Я сейчас все заново переделал, посмотри вот этот пост>>675357
>>675358Мне кажется что проблема не в венв?
>>675360Ну и чо. Не нашёл снова он у тебя модуль. Питон ищет модули по переменной окружения PYTHON_PATH + несколько каталогов по умолчанию (их можно изменить при сборке самого питона из исходников, чем пользуются дистростроители чтобы соблюсти свой дзен расположения файлов). Можешь прямо в шелле echo $PYTHON_PATH сделать (если выведет пустоту, это ок, значит используются только пути по умолчанию). venv в частности подменяет этот самый PYTHON_PATH. И если ты создал venv, сделал activate, установил в него пакет, а потом он у тебя не находится и не импортируется, значит где-то ты сделал хуйню, не знаю, может через sudo поставил системно или ещё что. Гугли @ читай короче, руки выпрямить по телефону я не могу.
>>675365Сделаю сейчас заново как ты писал про венв, если я файл висг оставляю пустым то всё работает, нахуй вообще эти висг нужен
>>675365>echo $PYTHON_PATHНичего не выводит
01:54 ~/my-first-blog (master)$ python3.4 -m venv myvenvThe virtual environment was not created successfully because ensurepip is notavailable. On Debian/Ubuntu systems, you need to install the python3-venvpackage using the following command. apt-get install python3-venvYou may need to use sudo with that command. After installing the python3-venvpackage, recreate your virtual environment.
>>675366Это точка подключения твоей джанги к вебсерверу. Грубо говоря оно запускает питон и импортирует wsgi.py, затем импортированные объекты могут многократно срать ответами на запросы. Запускать на каждый запрос manage.py это пизда производительности и практика уровня начала 90х, когда сайты на башскриптах писали.Твоя задача по сути сделать так, чтобы вебсервер запустил правильный питон, подключил правильный venv c библиотеками (если конечно ты используешь venv) и стартанул твою приложуху через wsgi.py.
>>675370Нахуй нужен venv. Чем он лучше virtualenv?
>>675371Спасибо.Я сейчас начал заного делать, и теперь венв не создается, делаю так же как в тот разvirtualenv --python=python3.4 myvenvа так как ты писал вылетает ошибка >>675370Старый венв как то надо удалить? И как это сделать?
>>675372Я не знаю блеать, я по гайду делаю, еще толком не вник во всё это
>>675371> сайты на башскриптах писали.Нихуя мы их на сишечке писали или на крайняк на perl
>>675372Тем что он вшит в сам питон. Но под двойкой только старый virtualenv.
>>675373Надо
>>675377В гугле пишут, что удалить нельзя, можно только отключить
>>675378Похоже деактивате это не та команда, активировал обратно на всякий
>>675373То куда насрал venv, вот этот твой каталог myvenv, ты его можешь взять и удалить как обычный каталог. В нём нет ничего особенного. Главное не пилить ветку на которой сидишь отключить его через deactivate если он у тебя сейчас подключен (source myvenv/bin/activate который).
надо удалить каталог myvenv?http://puu.sh/nu05C/afd63608b7.png
>>675381->>>675380
В самом начале (myenv) значит что я под венв сейчас сижу?
>>675384http://puu.sh/nu0gT/da579d32b4.png
>>675384Да, дебил.
>>675358Чтобы в текущей папке сделать венв что надо писать вместо venv_dir? Пишет что обязательно путь писать
>>675358>>675391Я как понял на этом серве не получится установить венв как ты пишешь, требует рут права и утстановку пакета python3-venv, а этих прав у меня конечно нет
>>674934matplotlib стартует интерактивный просмотрщик, хуле ты хотел, там аки в гуглокартах приближать-отдалять можно. Запекай итоговую картинку сразу, будет быстро. По крайней мере я сомневаюсь что где-то будет быстрее. Тем более если ещё учесть время на написания кода.
>>675392Хз. Я тебе написал как оно делается стандартно. У тебя там какое-то чудо mkvirtualenv, которое уже установлено и настроено, юзай его, по аналогии, mkvirtualenv --help читни.>что надо писать вместо venv_dirДа любое название же. Суть в том что ты можешь хоть тыщу этих виртуаленвов завести. В одном двойка с джангой, в другом тройка и фласк версии точно 14.88, третьем ещё какой чёрт лысый. При этом у тебя всё есть и точно нужные версии пакетов без троганья рута. Если каждый полезет глобально ставить джангу рутом то весь хостинг далеко не уедет, для этого собственно и придумали венв, Virtual Environment. А весь этот замороч с activate/deactivate нужен только чтобы переключаться между ними.>Пишет что обязательно путь писатьНу наверное надо создать каталог сначала через mkdir.
на всякий случай сообщу что aws.amazon.com на год бесплатно дает невероятные количества хуерги.Можно в один клик накатить сервер с уставновленной джангой и всем что ей по вкусу. Туториалов применительно к aws - мильярд. Да и почетно пиздеть что имеешь с авс опыт же, лол.
>>675405это я к тому что там можно не ебстись с венв, если что поломал - накатываешь свежий сервер ровно за минутус:499999
>>675407Да это хорошо, но разобраться то надо
>>675405Ага, только нужно будет привязать к твоему амазон акку свою кредитку, и через год они могут начать ее юзать на каждый чих при нагрузке на сервак. спасибо, не надо
Хочу на винду поставить numpy. Через пип фейлится, потому что:> error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat)Вижуал студия 2015 стоит. Windows 7 64bit, готовые бинарники только на 32 есть, вроде. Откуда этот файл взять и куда его пихать, честно говоря, искать лень, уж простите.И чего делать, виндоёбы? Ставить всякие анаконды не хочу, ведь мне просто для проверки кроссплатформенности проги нужно, а не работы. Ну и виртуалки/линукс не предлагать, я макоёб и там всё прекрасно, цель сейчас именно на винде сделать.
>>675424купи себе календарь блять.
>>675411да там ты быстрее разберешься.Или может не быстрее, но зато будет реально полезный опыт на который можно ссылаться.
если есть лист Ато для чего используется выражение А[:] ?
>>675460для выборки
>>675460>если есть лист АА что? А4?A[:] слайсит список и возвращает копию (просто слайсит от начала до конца, поэтому получается полная копия), поэтому ты можешь без проблем сделать так:for e in A[:]: A.pop(0)Попробуй и посмотри что будет, если убрать индексацию.
>>675394В математике всё быстро.В octave всё быстро.Вот только математика платная, а octave вылетает.
>>675429ну можешь поставить winpython, он портативный, но всё равно желательно в песочницу.
>>675429>И вообще, я нихуя не понимаю, хули требуется visual c++, если большинство пакетов используют поставляемый вместе с питоном gcc (а могли бы и clang)
Как делают счетчики в кружках? Например, число писем, отобразить на кнопке в красном кружке. Какие-то игрища с CSS и background текста?
>>675429Разрядность установленного питона тоже должна быть 32.Я так постоянно подрывался, пока у меня стоял х64 и х32. Если х32, то ты не такие же Microsoft Visual C++ 10.0 поставил.
>>675539у него 2015, а требует 2010
>>675534Лооол, естественно это игрища html+css.
>>675539>Разрядность установленного питона тоже должна быть 32.В смысле тоже? Питон у меня 32, а винда 64. Винду переставить я, очевидно, не могу. >ты не такие же Microsoft Visual C++ 10.0 поставил.Как уже сказали, стоит у меня 2015-ая и не для питона, собственно, ставилась.В общем, проблема решилась: шла б эта винда нахуй. Всем спасибо.
>>675429>Хочу на винду поставить numpy.Троллейбус из буханки.жпгПоставь уже себе какую-нибудь бубнту в виртуалку и кодь как человек.
>>675522Тогда покупай математику или сиди дебагай октав, очевидно же.>>675534Большой border-radius. Сам бы уже инспектором глянул.
>>675628Чому бы под мингв не поставить всё? Тот же посикс, но под виндой. Зачем советуют сразу виртуалки, они ж тормозят.
Антуаны не могу обновить pip как пофиксить?
>>675645>\ДаняВот это вот пиздец. Меняй имя учетки на латиницу, или готовься разрабатывать очко еблей с bytes/unicode, и прочими косяками из-за ебучей кириллицы.
>>675663Особенно понравится переименовывать, если учетка - встроенная admin'нская.
>>675645Кстати, это как раз тот самый случай, походу. Другие модули ставятся через pip? Вангую, что нет.
>>675645Надо как-то питону прописать твою системную кодировку. Вместо утф8 вин1251.
>>675675Зачем привыкать к этой хуйне, когда есть человеческая utf-8?
>>675645Эти превозмогания. Ставь виртуалбокс с убунтой.
>>675681Отсутствия кириллицы в названии рабочих папок хватит.
>>675628Ну ты б хоть спойлер прочёл, что ли.
>>675679Не понимаю откуда у core пакаджей вообще проблемы с кодировками. Они же кроссплатформенные. Переименовывания это полумера, питон должен уметь работать под любым окружением.
>>675687Ну так он пытается декодировать Даню с использованием utf-8, а кодировка Дани - вин1251. Даня не попадает в диапазон ASCII, который общий у всего юникода.
>>675692pip вообще никак локаль не задействует, видимо. Жестко заданный utf-8. Но такое не только у него всплывает, и не только у core пакаджей. Так что никакой кириллицы - самая годная мера.
а нельзя ли просто сменить локаль консоли на utf8 с помощью chcp
>>675718А проблема разве в консоли? Там именно внутри кода не может декодировать Даню нормально, а не при выводе в консоль.
>>675405А что у них с ценами? Во сколько примерно обходится месяц слабого сервера, который на DO дают за пять баксов?
>>675726винда хранит имена файлов в юникоде
>>675726Ну вот как бы я к тому же. Почему системные вызовы в кроссплатформенном Питоне падают?>>675692А собственно почему он пытается найти там утф8? Внутренне у питона юникод, значит он может прочесть строку из любой кодировки. По идее он должен сдетектировать вин1251 и системные вызовы выполнять в ней.
>>675726если не в консоли, тогда в конфиге. Может он в семибайтовой кодировке, тогда его надо сконвертить в utf8
>>675757Ну так ASCII (латиницу) он и прочтет из любой кодировки. Потому что 128 символов совпадают почти везде. В том числе в вин1251. Юникод это не волшебная НЕХ, которая любые кодировки распознает.UTF-8 - это и есть кодировки юникодная.
>>675763*семибитной
>>675757https://habrahabr.ru/post/135913/
>>675765>Юникод это не волшебная НЕХ, которая любые кодировки распознает.>UTF-8 - это и есть кодировки юникодная.Ок, не распознаёт, но может хранить любой символ. Обычно другие кодировки это подмножество юникода. Внутри питона кстати не используется UTF-8, и даже не UCS, они там своё кастомное хранилище намутили, оно оче место экономит. Но это опять же не отменяет тот факт, что питон внутри себя может использовать любой символ юникода, а значит и прочитать практически любую кодировку используя codecs.>>675773>Юникод для чайниковНе тралируй, плис((
print len(var)print var.lower() Анон, я не могу понять, нахуй у этих методов разный синтаксис?
>>675781len([1,2,3])len('lol')len({'a', 8, None})len({4: 'x', 5: 'b'})'lol'.lower()len это не метод, это встроенная функция питона. lower - это уже метод, но только у строк.
Знатоки кодировок itt.
>>675778Ну да, могло бы хотя бы вывести кракозябры. Но там, может, после 0xc4 даже кракозябр не нашлось на последовательность.
>>675783Спасибо.
>>675781Так сложилось исторически.http://effbot.org/pyfaq/why-does-python-use-methods-for-some-functionality-e-g-list-index-but-functions-for-other-e-g-len-list.htmЕсли хочешь язык с нормальным ооп и последовательный юзай ruby.
>>675795> Если хочешь язык с нормальным ооп и последовательныйПроиграл с формулировки.
>>675645Короче вот:1. Ищи если есть инсталлятор питона посвежее, уже с обновлённым pip.2. Если такого нет, то возьми и зарепорти баг в pip. Эта хрень должна работать нормально.3. Если тебе это оче сложно, то забей и работай со старым pip.>>675789Да там не в кракозябрах даже дело, а в том что откуда-то в пип приходят байты в win1251, а он предполагает что отовсюду они придут в utf-8. Кракозябры, а точнее квадраты, получаются во время print из-за того что консолька не совладает с некоторыми символами. Тру кракозябры получаются когда закодировали одной кодировкой, а раскодировали другой.>>675795Это какое-то мнение недалёкого человека. В питоне с помощью магических методов ты можешь сделать len для чего угодно, в том числе и для сишных объектов. И оно будет везде len(..) и значить будет одно и то же. Так-то никто не мешает расширить класс str и добавить туда свойство length аки в жабаскрипте.
>>675803Я имею ввиду что в раби всё это метод всегда. В питоне же иногда метод, иногда встроенная функция потому что так сложилось ещё до того как туда ооп завезли)
>>675781Но ведь len можно передать не только строки.А .lower() - метод типа str. Нельзя сделать ['a', 'B'].lower, но можно len(['a', 'B']).Динамическая типизация, тип.
>>675808РАБИ
>>675795> 2016> ооп
>>675810Что мешало сделать метод len() у строк и у списков и везде где он возможен?> Нельзя сделать ['a', 'B'].lowerВ нормальном языке можно было быarray = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]array.map(&:upcase)или array.map!(&:upcase) чтобы изменить их in-place
>>675807Я только что закодировал Даню с cp1251, и раскодировал в UTF-8 b'\xc4\xe0\xed\xff'. Тот же результат. UnicodeDecodeError: 'utf8' codec can't decode byte 0xc4 in position 0: invalid continuation byteНикаких кракозябр. В тч, в shell самого питона.
>>675815>array.map(&:upcase)В чем разница? Ты ту же самую итерацию сделал. Тут тоже так можно кучей способов.
>>675815array = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"][a.upper() for a in array]array[:] = [a.upper() for a in array]Зато у нас map это ленивый генератор и мы можем выстраивать длинные цепи из filter/map не выделяя тонны памяти на каждый шаг.
>>675815Именно сам тип list не может быть .lower() же, должны быть предметы в нем. Что и делает map.Считай, аналог всяких for x in list:....x.lower()
>>675815А если в списке будут цифры? Как уменьшить регистр 2, например?
>>675818Ну дык это питон такой хитрый, всё в ascii перегоняет при repr(). Считается что ascii работает везде. Так-то если ты сохранишь эти байты в файл и откроешь блокнотом/браузером/cat, кракозябры таки будут.
>>675832Или у если у меня в списке вообще неведомая ебаная хуйня типа экземпляров классов?
>>675832>>675835Тогда и питон, и руби посоветуют тебе сделать бочку.
>>675815Питон:a = [1,2,3]In [5]: a.a.append a.clear a.copy a.count a.extend a.index a.insert a.pop a.remove a.reverse a.sortРуби:a = [1,2,3]=> [1, 2, 3]irb(main):002:0> a.public_methods=> [:inspect, :to_s, :to_a, :to_ary, :frozen?, :==, :eql?, :hash, :[], :[]=, :at, :fetch, :first, :last, :concat, :<<, :push, :pop, :shift, :unshift, :insert, :each, :each_index, :reverse_each, :length, :size, :empty?, :find_index, :index, :rindex, :join, :reverse, :reverse!, :rotate, :rotate!, :sort, :sort!, :sort_by!, :collect, :collect!, :map, :map!, :select, :select!, :keep_if, :values_at, :delete, :delete_at, :delete_if, :reject, :reject!, :zip, :transpose, :replace, :clear, :fill, :include?, :<=>, :slice, :slice!, :assoc, :rassoc, :+, :*, :-, :&, :|, :uniq, :uniq!, :compact, :compact!, :flatten, :flatten!, :count, :shuffle!, :shuffle, :sample, :cycle, :permutation, :combination, :repeated_permutation, :repeated_combination, :product, :take, :take_while, :drop, :drop_while, :bsearch, :pack, :entries, :sort_by, :grep, :find, :detect, :find_all, :flat_map, :collect_concat, :inject, :reduce, :partition, :group_by, :all?, :any?, :one?, :none?, :min, :max, :minmax, :min_by, :max_by, :minmax_by, :member?, :each_with_index, :each_entry, :each_slice, :each_cons, :each_with_object, :chunk, :slice_before, :lazy, :nil?, :===, :=~, :!~, :class, :singleton_class, :clone, :dup, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :extend, :display, :method, :public_method, :define_singleton_method, :object_id, :to_enum, :enum_for, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__, :__id__]Ящетаю разница налицо. В питоне у нас необходимый минимум, в руби в обычный список вмешано половина стандартной библиотеки.
>>675833Там замена фейлового декодирования спецсимволами, поди.
>>675843Это называется ООП. Эти методы получены путем наследования и миксинов.Пользователь сам может переопределять или дополнять класс Array если хочет.
>>675845У питона столько же методов можно отрыть, они такого плана __x__.
>>675843In [2]: a.a.append a.copy a.extend a.insert a.remove a.sort a.clear a.count a.index a.pop a.reverse In [2]: a._a.__add__ a.__eq__ a.__iadd__ a.__mul__ a.__rmul__a.__class__ a.__format__ a.__imul__ a.__ne__ a.__setattr__a.__contains__ a.__ge__ a.__init__ a.__new__ a.__setitem__a.__delattr__ a.__getattribute__ a.__iter__ a.__reduce__ a.__sizeof__a.__delitem__ a.__getitem__ a.__le__ a.__reduce_ex__ a.__str__a.__dir__ a.__gt__ a.__len__ a.__repr__ a.__subclasshook__a.__doc__ a.__hash__ a.__lt__ a.__reversed__
Есть какой-то краткая книга по пистону? Если уже знаешь плюсы, жабку. Но не урезанная, чтобы все аспекты языка освещались.Начинал читать Лутца когда-то, но терпения не хватило, какие-то дела появились и забил.
>>675845В питоне всё точно так же, но нельзя модифицировать встроенные классы. Зато можно расширить встроенный list и сделать его как в руби. Но использовать его придётся явно, сам литерал не станет сразу ExtList:class ExtList(list):...a = ExtList([1,2,3])Я считаю это преимуществом. Каждый себе строит свой list, никто никому не мешает. Тем более что в остальном этот ExtList ведёт себя как обычный:len(a)a.pop()a.sort()[a for x in a]etc>>675854>a.public_methodsТвой аргумент инвалид.
>>675859cheatsheet какой-нибудь найди и тутор пройди, дальше по мере возникновения проблем. Считай что ты всё пишешь на stl (list, dict, set, str), а тип элемента для контейнеров variant.
>>675645>>675628
Выручай нубаса, бро Прохожу курсы на курсере и значит вот, Нужно спарсить из файла эмайл адреса и посчитать самого активного. Проблема у меня встала в следующем. Разбиваю файл на слова ['From', 'stephen.marquard@uct.ac.za', 'Sat', 'Jan', '5', '09:14:16', '2008', 'Return-Path:', 'Received:', 'from', 'murder', '(mail.umich.edu', '[141.211.14.90])', 'by', 'frankenstein.mail.umich.edu', '(Cyrus', 'v2.3.8)', 'with', 'LMTPA;]Такого вида список получается. Далее прохожу по каждому слову и ищу From, мыло будет вторым словом после From. Как его получить? Всю голову сломал, я нубас, получается только вторую букву из From лол. вот говно код, подскажи, броname = raw_input("Enter file:")temp = open (name)text = temp.read()words = text.split()print wordsfor word in words: if word.startswith('From'): print word[2]
>>675485>>675489да, заебись фича. Странно даже что про нее не вопят на каждом углу в туториалах
>>676196for w1, w2 in zip(lst, lst[1:]): if w1 == 'From': print(w2)Но вообще ты как-то через жопу это делаешь.
>>676206Имхо list(orig_list) как-то более очевидно чем orig_list[:]
>>676196Т.е. было бы логичнее разбивать файл на строки и искать строки, начинающиеся с From
>>676206Это антипаттерн.for e in A.copy(): лучше делать.Слайсинг имеет несколько иную природу и совсем не обязательно копирует объект.
Лазил, натолкнулся на ебанутую задачку, можно умничать.a=typle(1,'xyu',[])a[2]+=['pizda']что произойдет если эту хуйню выполнить?
>>676212Да точно, я просто походу не так условие на англ понял, спасибо, бро.
>>676219Ошибка. А вот a[2].append('a') сработает.
>>676234ты знал или експеримент провел?
>>676238Я наталкивался уже на эту фигню в каком-то quiz`е по питоне или какой-то статье типа python wat`с.Вот здесь наверное https://github.com/cosmologicon/pywat
>>676238Вообще понятно почему так. Интерпретатор не знает mutable там объект или immutable и как у него iadd устроен.
>>676248По мне так не совсем логично, ведь чтобы быть имутабле туплу нужно в себе держать не ссылку на объект а его реальную копию.Что он соственно и делет в случаеb=[2]a=[1,b,3]b=[100]
>>676272a=(1,b,3)
хотя если делать extend и append на лист внутре тупла, то оно даже ошибки не выдает и лист изменяется.
>>676272Имутабле сам тупл, но объекты в нем не обязательно.
>>676284Я вижу что на деле им не запрещено быть мутабле, но тогда сам тупл нихуя не иммутабл(на деле опять же).Как они собираются чтото там хешировать если тупл фактически изменяется со временем причем хуй это отконтролируешь?
>>676294Никак
Стоит задача - написать облачную CRM/ERP систему с большим количеством связей и около 15 классов сущностей в модели. Также она должна спокойно крутиться под нагрузкой овер 200 клиентов синхронно и не падать. Использование Django/DjangoREST для выполнения данной задачи - гуд, или лучше обмазаться Flask/SQLA и не стрелять себе в ногу? С учетом того, что придется агрегировать данные для статистики и строить сложные многофакторные запросы.
>>676417https://www.odoo.com/
>>676417Строить сложные запросы, конечно, лучше алхимией и она поддерживает особенности субд разных.
>>676423Odoo крутая штука, но мне не потребуется почти ничего оттуда. Надо решить более частную задачу, требующую кастомного программирования.
>>676302ок, не знал.
Где взять нормальную поддержку юникода в 3.4? Качаю посты с сосача, а ему то то не нравится, то это, что ещё что-нибудь он декодить не может.
Призываются боги апача/джанги.заливаю новый проет, вроде как прописываю к нему путь, но мне показывает 403.смутно понимаю что нужно дать права доступа какомуто пользователю/группе пользователей кроме себя самого, но понятия не имею кому.
>>676463помоему это виндапроблемы.На маке у меня все работает, а на винде никто за десять тредов(давно уже было) не заборол.Ну кроме очевидных советов, которые нихуя не работают, декоде ютф и прочее.
Редко использую винду, но ни разу никаких проблем с кодировками не было. Не считая того, что в консоль можно срать только ascii. Но кому нужна эта консоль, когда есть логи?
>>676472Нахрена тебе апач? mod_python чтоли используешь? Выкинь это.
>>676483а? что? развейте мысль
>>676472Используй связку gunicorn и nginx.
>>676487Никто не использует апач в 2016 году. Разве что для php из-за поддержки .htaccess и т.п. но это оффтопик.Используй wsgi и nginx.
>>676472> нужно дать права доступа какому-то пользователю/группеВозможно ты имеешь в виду пользователя www-data.
>>676493> www-data.Это дистро-специфично.
>>676463https://docs.python.org/3/library/locale.htmlВ эту сторону копай, давно не ебался с питоном на винде, так что не скажу конкретнее. Ну и да, поставь хотя бы cygwin, побереги психику.
>>676219Тупл иммутабельный. Ашибка.
>>676496Твоя правда.
Вот кстати есть ещё http://cherokee-project.com/Интересно кто-нить юзает в продакшене?Я когда-то лайти использовал и он мне даже больше nginx нравился но у него память текла и разработчики нифига не делали чтобы это исправить.
>>676503ой. обосрался. индекс 2 а не 1. Эм. Ну вроде бы списки должно сложить вместе. Но так как это сложение создаёт новый список, тупл не позволит поменять его. А вот append/extend изменяют inplace.
где читать про этот ваш нгих в разрезе почему он теперь тру а апач не тру?
>>676507> так как это сложение создаёт новый списокНе создает.+=(ака __iadd__) может вернуть новый объект, а может и старый. В случае списка оно делает extend.
>>676510nginx асинхронный и позволяет намного больше запросов в секунду обрабатывать пожирая меньше ресурсов. Для статики он намного лучше, а для питона в качестве прокси к wsgi(или там fastcgi) серверу.
>>676510Ngnix король статики. Для высоконагруженных проектов можно задрачивать комбинации ngnix + сервер динамики, тесты гуглить.
хорошо, спрошу иначе.на кой пес начинающему нубу переходить на нгихн с апача?мне бы оно хоть както заработало, а не чтобы козырять.че там реально проще/логичней?>>676511только я сделал красивый скриншот, как ты меня опередил
Лол блядь.
Пупу туда же. Кстати как вы читаете PyPy и PyPI?
Я так не играю.
>>676529По nginx больше всяких статей типа "как поднять проект на django". Легче нагуглить будет если какие-то вопросы.апач с питоном никто давно не использует.И да ничего сложного там нет.
>>6765302 часа в пейнте
>>676530Баг или фича?
>>676548ну, окай. Буду смотреть.
>>676557https://docs.python.org/3/faq/programming.html#why-does-a-tuple-i-item-raise-an-exception-when-the-addition-works
>>676562Тоже это нагуглил и хотел запостить
>>676564Frequently asked хех. Ну в любом случае не зная этот нюанс заранее предугадать нельзя. Вангую что этот вопрос любят задать на собеседовании.
>>676567> этот вопрос любят задать на собеседовании.Хуевый вопрос и бессмысленный. Какой смысл это спрашивать на собеседовании?Вряд ли в реальном коде такое попадается.
>>676567Так делать никто не будет в реальных программках.
>>676569Вы написали в своём резюме что знаете питон. Выходит не знаете?>>676570Это из разряда ++i + ++i
>>676571еще пару тредов назад разбирали как себя ведет __del__ в некоторых случаях. Еще пару примеров и можно будет унижать интервьюэров в их собственном HR офисе
Пытаюсь создать пакет в pip. Поясните, куда там пихать непосредственно код, устанавливающий приложение? Я вижу можно через онлайн форму, можно через setup.py, но там только информация о пакете. А куда класть сам код для исполнения при установке?
>>676575Мне кажется имеет смысл утверждать что знание недокументированных возможностей больше вредит чем помогает. Дзен питона процитировать и должны отъебаться.>>676580Попробуй с помощью setup.py для начала собрать дистр. Кажется sdist build. Оно тебе высрет зип файл или колесо, да, я в курсе про них. Если высрало и содержимое этого зипа тебя устраивает, выполняй через тот же setup заливку на pypi.
>>676584Спасибо, буду тыкаться.
>>676595Покажи что выкладываешь.
>>671902 (OP)Доброй ночи, мужики. Решил быстро скачать все картинки с одного блога. получил html с помощью urllib, но к несчастью осознал, что в блоге используется бесконечная прокрутка, а она не даёт мне спарсить весь бложик. Будь там старый добрый переход по страницам, вопросов бы не было, но тут эта модная жабаскрипт хуета. Можно ли как-то решить проблему?
>>676682Извините, поленился нормально погуглить. Уже нашёл решение. Всем споконой ночи, друзья.
>>676682>бесконечная прокруткаА потом жалуются что браузеры тормозят и отжирают.
>>676684покажи нам, раз нашел
Хочу запилить маленькое веб-приложение, которое будет генерить картинку pillow и отдавать её на страницу в base64. Для такого всякие джанги не нужны, а потому встаёт вопрос - что взять: flask или bottle? Желательно с прицелом на последующее применение.
Вы что, серьезно? У питона практически неограниченные возможности, он стоит на каждой кофеварке, вы можете делать что угодно, а вы пишете парсеры? Что с вами не так?
>>676788>/prНу а что ты хотел?
Где можно натырить странных слов для капчи?
>>676866мята мяту мяте мяты
>>676867Маловато, да и не оригинально.Я подумывал итальянских каких-нибудь набрать вперемешку с английскими, но их искать и отбирать задолбаешься. Думал, может где базы есть.
>>676868Сгенерируй. Букв всего 33.
>>676869Тогда получится просто рандом. Я хочу получить что-то типа старой гугловской капчи с инглипом.
>>676870У гугла тохда были сканы старых книг
>>676877Да, я знаю. Но за неимением таковых я хочу попробовать их имитировать каким-либо образом.
>>676788что ты имеешь ввиду? это потому что линукс встраиваемая во все что угодно ОС?ньюфаг
>>676880Ну и найди шрифт подходящий или прямо со сканов сдери весь алфавит. Потом рандом пару слов. Растяни и поверни их как-нибудь, добавь грязи и искажений.
>>676788Ну что например? Отвечай, быстро и решительно, плебей.
А Tkinter пользует кто для gui? Он вроде простой как банка пива
>>676974И бесполезный как крышка от этой бутылки. Юзай pyqt/pyside
>>676974Все пишут питоновский гуй на gtk через pygobject, а тот кто его не пишет почему-то советует pyqt/pyside
В QT можно вообще через таб выбирать заголовки во всяких View? Например, QTreeWidget, я нихуя не могу найти, как сделать выбор заголовка столбца программно. Вроде же и это Item, но его не выбрать через row же.
>>676984А именно нужен фокус на нем. Чтобы с помощью клавиатуры делать сортировку столбца, например.
>>676985Фокус через Tab сразу стартует со списка, никак не реагирует на заголовки. Переходит на кнопки, Аллаха и хз что еще, но не на заголовки.Никакие setFocusPolicy им тоже не установить.
>>676750>>676750Вот тут предлагают юзать селениум http://stackoverflow.com/questions/12519074/scrape-websites-with-infinite-scrollingХотя я решил проблему, просто подобрав значения в адресной сроке.
Поясните мне вот эту хуйню пожалуйста.https://ideone.com/R4Oygz
>>677015Итерируйся по копии a.Вообще итерироваться по списку и внутри что-то с ним делать плохая идея.
>>677015Я так понимаю, удаляя элемент 0, нулевым становится первый элемент, а цикл переходит к следующему и удаляет уже второй элемент, оставляя первый.
>>677024Как-то так и есть, там внутри счетчик где-то.
>>677022Я то думал, что раз я не на каких-нибудь крестах дрочёных пишу, а как белый человек на питоне, то я могу делать такие простые вещи без танцев с бубном.Но оказывается, что если я хочу перебрать какой-нибудь список на предмет нежелательных элементов, то мне нельзя удалять их сразу после выявления. Нет, мне нужно сначала в одном цикле всех проверить и составить специальный расстрельный список. А потом уже только вторым перебором по расстрельному списку, очищать ряды партии. Всё через жопу.
>>677030Нет, тебе просто нужно написатьfor i in a[:]: a.remove(i)Или вообще использовать filter или что-то типа new_list = [i for i in a if i!=2]
>>677030Мутабельные структуры данных следует использовать только от безысходности. А это явно не твой случай. Тогда будет тебе все удобно.
>>677035>a[:]Охуительная идея создавать каждый раз список на тысячи элементов, только чтобы удалить 2 или 3 из них.>>677042> А это явно не твой случай.Почему это?
>>677072Зачем проходиться в цикле по списку, чтобы проверить есть ли там элемент?Можно сделатьtry: lst.remove('el') except ValueError: blablaМожноif 'element' in lst: blablaМожно проходиться с конца, если тебе уж так хочется и тогда этой проблемы не возникнет. (reversed возвращает итератор, а не копию списка)
>>677076>Зачем проходиться в цикле по списку, чтобы проверить есть ли там элемент?Во-первых не чтобы провериль, а чтобы удалить его оттуда если нужно.Во-вторых, например: по экрану летит нарисованный снаряд. Чтобы он мог лететь, нужно добавить его в определённый список, который будет каждый кадр перебираться, чтобы вызвать метод снаряда update. Этот метод рассчитывает текущее положение снаряда, чтобы знать где его рисовать, а в случае если снаряд сталкивается с препятствием этот метод должен обработать последствия: в том числе удалить снаряд из списка.
>>677089http://pyode.sourceforge.net/
>>677101А это тут зачем?
>>677112При том, что зачем рассчитывать положение снаряда, траекторию, ускорение и прочую фигню в цикле на питоне когда для этого есть готовая библиотека?
>>677112И collision detection там тоже есть.
>>677119За тем, что снаряд может двигаться не по физическим законам.>>677121Я рад за ODE.Но вопрос не в том как рассчитать физон снаряда и колизии, а в том, что удалять элемент перебираемого списка - вполне насущная задача, но сделать это можно только через заднепроходное отверстие.
>>676982Я на pyqt уже штук 10 зделал на фрилансе.
>>677025AttributeError: 'range' object has no attribute 'remove'
Есть сайт с которого мне нужно скачать страницы в виде хтмл, но они весят многоУ сайта есть мобильная версия, но только в виде приложений на ios/android. Как можно залезть туда и начать скачивать оттуда?Советуют указать мобильного клиента в хедере, но я не знаю что это такое и как это делатьПосоветуете что-то?
>>677135> удалять элемент перебираемого списка - вполне насущная задачаТебе уже сказали, используй filter и tuple. А теперь уябывай.
>>677072>Охуительная идея создавать каждый раз список на тысячи элементов, только чтобы удалить 2 или 3 из них.можно подумать твое удаление 2 или 3 не потребует 2 или 3 копии. список только называется списком, на самом деле это массив.>>677089>Чтобы он мог лететь, нужно добавить его в определённый списокда уж, гейдев за 300.
>>677143>Тебе уже сказали, используй filter и tuple.Тоесть феирически говнокодить для решения элементарной задачи.
>>677158Иммутабельный контейнеры и фильтрация - это шаг вперёд по сравнению с "удалением элемента из списка". Возвращайся в кресты лучше.
>>677135Проходись по списку с конца используя reversed. В любом другом языке была бы такая же проблема и поэтому перебирают массивы с конца.
>>677140А "print i" тебя не смутило?Это второй питон. В третьем надо писать a=list(range(10))
А на GUI можно рисовать графики?
>>677178Можно.
>>677170В третьем так не надо писать.
>>677155>можно подумать твое удаление 2 или 3 не потребует 2 или 3 копии. список только называется списком, на самом деле это массив.Хочешь сказать, что копирование списка сопоставимо по скорости с удалением или добавлением элемента в него?
>>677168>Иммутабельный контейнеры и фильтрация - это шаг вперёд по сравнению с "удалением элемента из списка".Только в твоих влажных фантазиях.
>>677188Если тебе нужно получить список? Надо.
>>677190Настоящий линейный список это deque. Но там доступ не O(1), как и должно быть. Так что ты тут в любом случае в пролёте со своими ко-ко-коптимизациями.>>677192> куд-кудах-пок-покЯсно.
>>677169Вот этот вариант внезапно работает быстрее всего. Спасибо.
Ещё возможен вариант не удалять элементы из твоего гиганского списка сразу, а помечать как удаленные. Или заносить в другой список на удаление. А потом удалить разом.
>>677199> Нет аргументов, поэтому пошли шуточки про петушков.Ясно.
>>677218Я так и сделал сначала. Но это костыль.
>>677226На какой-нибудь сишечке так и пришлось бы сделать.И если у тебя там много элементов, это должно быть быстрее.
>>677222По-твоему "Только в твоих влажных фантазиях" это аргумент?
>>677181А это трудно? Можно японскими свечами нарисовать? И прокрутку сделать?
>>677236По моему, это указание то, что твоё:>Иммутабельный контейнеры и фильтрация - это шаг вперёд по сравнению с "удалением элемента из списка".Ни на чём не основано, кроме личных предпочтений.
>>676882>шрифт подходящий>Растяни и поверни их как-нибудь, добавь грязи и искаженийТак и сделал. Просто не хочу полный рандом - будет неинтересно. вообще для "напиши сценарий по капче" пилил
>>677218>>677226В чём проблема удалять с конца?
>>677275Считай ты копируешь списко каждый раз.
>>677278Не мог бы ты пояснить "копируешь каждый раз". Что за каждый раз и почему копируешь?
>>677262Во-первых, иммутабельные контейнеры удобнее и проще в использовании, ибо не надо думать о сайд эффектах. Во-вторых, пифон не тот язык, где нужно всерьёз думать о производительности этих самых контейнеров. Если тебе не хватает производительности, то скорее всего надо использовать не пифон в этой ситуации.
>>677278Для удаления в конце думаю константная сложность.
>>677278>>677280In [67]: aOut[67]: [21, 7, 5, 4, 2, 2, 2]In [68]: id(a)Out[68]: 58128064In [69]: a.pop(-4)Out[69]: 4In [70]: id(a)Out[70]: 58128064In [71]: aOut[71]: [21, 7, 5, 2, 2, 2]
>>677286>>677278
>>677280Выше написали уже что list в питоне это не список, а массив указателей.Поиск и удаление элементы из середины - дорогая операция, такая же дорогая как копирование всего списка.Если элементов много и надо удалить много элементов, то выгоднее завести новый список, куда помещать элементы для удаления и после прохода пересоздать список, исключив эти элементы.Или даже делать это не после каждого прохода, а реже.>>677284Ему не надо удалять именно последний элемент с конца. Ему надо удалять элементы посередине, которые соответствуют определенным критериям.
После удаления ты должен сдвинуть все элементы после удалённого на одну позицию
>>677293А понял, из-за сдвига индекса. Спасибо.
>>677286Причем тут это. Речь о том, что удаление элемента из середины дорогая операция.
>>677298Мне там сказали, что я список каждый раз копирую.Почему она должна быть дорогой то? Два указателя всего поправить нужно.
>>677302> Два указателя всего поправить нужно.Список в питоне не двусвязный список, а массив.See >>677295
>>677199
>>677304>а массивЧистым массивом он точно быть не может, потому что умеет растягиваться и хранить элементы разных типов. Может какое-нибудь сищное подобие вектора указателей, но тогда встаёт вопрос, как он в сях реализован.
>>677316> хранить элементы разных типов.Он не хранит элементы разных типов. Он хранит указатели на объекты, они все одного типа.
>>6772831) Забивать на производительность, когда можешь сделать хорошо - это признак говнокода.2) Мутабельные контейнеры бывают удобнее с точки зрения читаемости и поддерживаемости кода. А читаемость и поддерживаемость признак хорошего кода.
>>677141бамп
>>677326А как сайт этот устроен? Оно точно не генерит html на клиенте получая данные через ajax и api какой-нить?
>>677329Вряд ли, да я и не знаю как это проверить на самом деле.
>>677339Но в любом случае, тебе же надо на выходе получить html.Мобильная версия в виде приложения получает данные не в виде html.
>>677346Значит стоит делать просто как обычно?Какими способами можно тогда ускорить общение с сервером?
>>677348Несколько тредов, включить keep-alive.
>>6773231. Удаление первого элемента списка по скорости на том же уровне, что и создание нового тупла из всех элементов без первого. Единственное для чего стоит использовать мутабельные объекты — экономия памяти.2. В малой части типа сортировок да. В остальном — нет.
>>677353Вообще туплы в питоне не задуманы для такого использование. Они скорее как структуры в си или чтобы передать несколько элементов.И вообще с такими идеями тебе в какой-нить фукнциональный язык.
>>677326Попробуй вот так. Посмотри что он тебе отдаст.import requestsurl = 'http://your-site'headers = {'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'}r = requests.get(url, headers=headers)
>>677351Для keep-alive использовать urlgrabber?Я правильно понимаю, что достаточно объявить keep-alive в начале и каждый urlopen будет проходить с его участием?
>>677373Ничего не выводит, но заканчивается без ошибок
>>677380r.url тот, что и запрашивал?
>>677382Да
>>677368С чего это не задуманы? Можешь использовать список, но не изменять его, если религия не позволяет.
>>677374Используй requests и Session отткудаhttp://docs.python-requests.org/en/master/user/advanced/#keep-alive
>>677388Потом типичные операции это list.append/list.pop и они быстрые.
А r.text такой же как в браузере? Ты на адрес мобильной версии посылаешь запрос?
>>676788Ну же, отвечай!
>>677412Он же сказал что мобильная версия сделана не в виде сайта, а в виде приложений.
>>677396поп(0) О(n) уже картинку скинули. аппенд амортизирован О(1), но если нужно изменить внутренний размер листа, но это долшьше. Для тру О(1) добавления/удаления в начало/конец используются deque, queue
>>677137>зделалЗа домашнюю работу уже платить стали?
>>677412Нет, r.text намного меньше чем в браузереhttps://www.diffchecker.com/ghcqvpedВот здесь разница если важно
>>677417Возможно, увидев андройдовский user agent, сервер отдаст ему данные для приложения. В любом случае он должен что-то отдать.
>>677412через мобильную версию вес html меньше раз в 6Спасибо
>>677427> увидев андройдовский user agent, сервер отдаст ему данные для приложенияОбычно смотрят не на user-agent а на другие заголовки. Типа content-type, Accept. Да и url другой.
>>677434Рад за тебя. Если тебе нужны какие-то конкретные данные, то у них вроде API есть.
>>677438Но через api у них не возьмешь список всех книг, а именно это мне и нужно:с
Какой максимальный размер (ширина, высота) картинок тут?
>>677436Я лишь знаю, что увидев user-agent обычно редиректят на url мобильной версии. Я в этом не силен.
>>677439search.books - Find books by title, author, or ISBN.Думаю, тут есть варианты как извратиться.
>>677446Да мне кажется, что простой crawler тоже сможет это сделать. Да и опыт написание crawler'a лишним не будет
>>677448Зачем это, если не секрет?
>>677453Скоро интернет вырубят и будет чебурашка.Надо успеть скачать всё что есть в интернете.
Перекат где?
Капча из 20 слов
>>677464Больной ублюдок.
Аноны, кто-нибудь использовал связку angular + django_rest? никак не получается отправить файл на сервер через форму, хотя через api все отправляется
>>677469Хотел из 100, но она, говорит, слишком большая. Из 50 тоже не пускает.
>>677495И что ты собрался с этим чудовищем делать?
>>677498Роллить во славу Инглипа конечно же! для "напиши сценарий для фильма по капче", я там выше писал Только рандом в словах ещё не завёз, но сервис уже работает.
>>677453Прости, уходилЭто проект на полгода на первом курсе, рекомендательную систему нужно построить
Что значит10% used (10.39s of your 100 second CPU allowance)Allowance resets in 6 hours, 53 minutes ?Что после того, как я попользуюсь процом 100 секунд, то после этого не смогу, пока таймер не сбросится?
>>677889 (OP)
>>677693
>>677143>Тебе уже сказали, используй filter и tuple.Я тут почитал ваш спор и у меня к тебе вопрос: а можешь показать пример, как исползовать тупл в ситуациях, когда нужно удалять/добавлять элементы в список?Предположим, у меня есть список студентов Гарварда (20к+), нужно убрать оттуда тех, кто уже дал взятку. Однако, если деньги во взятке оказались фальшивыми, студента нужно будет туда вернуть.Со списками всё элементарно:#получаем эвент "дал взятку" с аргументом штудентаnot_bribed.remove(student)bribed.append(student)#получаем эвент, что взятка оказалась фальшивойbribed.remove(student)not_bribed.append(student)student.bribe /= 0.5 # в качестве штрафа удваиваем необходимую взятку*А как быть с туплами? Программа у нас однотрендовая с эвентлупом, никаких одновременных обращений к списками не будет.
>>678026Разумеется, информация должна быть постоянно самая свежая, поэтому держать какой-то дополнительный список "на удаление" глупо, ведь ректор может попросить список имён для "домашнего визита" в любое время.
>>678026Всё простоbribed = bribed + (student,)i = not_bribed.index(student)not_bribed = not_bribed[:i] + not_bribed[i + 1:]Ты придумал данную задачу так, что здесь изначально два мутабельных контейнера и предлагаешь их заменить иммутабельными. Гораздо лучше в класс студент добавить свойство "давал взятку". Тогда нужен один тупл и всё.
>>678100>Ты придумал данную задачу такЯ просто придумал первую пришедшую в голову задачу со списками. Второй список, если честно, появился случайно при развитии сюжета. Делать шаг назад, естественно, было нельзя - первое правильно импровизации.А в чём в итоге плюс-то этого постоянного пересоздания тупла вместо изменения списка? По скорости, как ты и говорил, разницы нет ( http://ideone.com/qXxwWC ), даже если remove заменить на поиск индекса и последующий pop. От случайных изменений можно защититься тем, чтобы не писать код, который изменяет. То есть, в относительно небольшом приложении, какая может быть объективная причина использовать иммутабл и эти плюсы и слайсы, вместо очевидных и красивых append/remove?
>>678129Появится многопоточность, а она скорее всего появится. И мутабельность сыграет злую шутку.В остальном, да, либо использовать эти списки, либо, как я уже выше написал, иметь один тупл со студентами и поле "взяточничества" студента.
Перекатываемсяhttps://2ch.hk/pr/res/677889.html