Этого треда уже нет.
Это копия, сохраненная 28 марта 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
#2 #671925
1
50 Кб, 164x180
#3 #671927
#4 #671958
>>671902 (OP)
ОП-пик устарел.
>>671969
#5 #671969
>>671958
Вам завезли switch-case или до сих пор городите костыли?
>>671977>>672010
#6 #671977
>>671969
угомонись уже, пидор
#7 #672010
>>671969
А нахуй нужен свитч в некомпилируемом и динамическом языке? Вся его фишка же в том, что свитч сравнивает переменную с константами, из-за чего что-то там оптимизируется и быстро работает.
if/elif всё равно не больше места занимает (даже на один отступ меньше, чем если бы свитч был).
>>674362
#8 #672035
Вопрос:
Допустим, мне надо, чтобы моя программа качала некие документы, которые ежедневно выкладываются на неком веб-ресурсе. Они бы складывались на фтп-сервере, каждый в папку со своей датой, когда были скачаны в формате dd/mm/yyyy. Чисто теоретически, сложно такую задачу на питоне?
#9 #672036
>>672035
Нет.
>>672040
#10 #672040
>>672036
Что нужно знать для реализации сей тривиальной задачи? Я начинающий программист. До этого на паскале/делфи писал из разряда laba1.
>>672043
#11 #672043
>>672040
Нужны модули datetime, requests, ftplib. Наверное, всё.
>>672044
#12 #672044
>>672043
Спасибо, анон, сотню нефти тебе.
>>672046
#13 #672046
>>672044
А тебе не под линукс?
>>672052
#14 #672052
>>672046
Все равно, в общем-то. А если нет, что поменяется? Полагаю, у виндоюзера должны возникнуть проблемы.
>>672054
#15 #672054
>>672052
Нет, просто можно было бы и на bash написать. В общем, не важно.
#16 #672062
#17 #672063
>>672054
Мисскликнул. Хотел сказать, что тоже интересно, буду знать.
#18 #672073
>>672035
Когда-то делал заливатель изменений из гит репозитория по фтп. Можешь передрать оттуда, там курлом всё сделано.

https://gist.github.com/kctier/33cda7cf6413c733d7eb
#19 #672075
>>672054
for url in urls.txt;do curl $url -o $(date +"%d/%m/%y");done;
>>672081
#20 #672081
>>672075
Серьёзно? Это все? Выглядит просто волшебно!
Анон, что задал вопрос.
>>672085
#21 #672085
>>672081
Тут в цикле достаются url из файла и сохраняются в текущей папке с датой в формате, который ты указал. А с ftp я не очень понял что тебе и куда, но будет выглядеть примерно так же.
>>672086
#22 #672086
>>672085
С фтп надо будет просто качать в папочку, которая корневая у ftp сервера, который он поставит.
>>672095
#23 #672095
>>672086
Ну тогда должно выглядеть примерно так:
mkdir -p $(date +"") && cd $_;
for url in urls.txt;do curl $url -O $(date +"%d-%m-%y");done;
Первая строка создаёт директорию, если она еще не существует, и переходит в неё. Вторая строка в цикле скачивает файлы по url и сохраняется с тем же названием, что и в url. Как-то так.
>>672097>>672098
#24 #672097
>>672095
Что такое $_. Вывод предыдущей команды? Первый раз вижу такую конструкцию, это башизм?
#25 #672098
>>672095
Ошибся.
mkdir -p $(date +"%d-%m-%y") && cd $_;
r url in urls.txt;do curl -O $url ;done;
$_ - последний аргумент предыдущей команды.
#26 #672130
>>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}
>>672133
#27 #672133
>>672130
Говно этот павершелл. Многие вендоадмины питон юзают.
Или http://xon.sh/ какой-нить.
>>672138
#28 #672138
>>672133
Powershell работает из коробки и для такой задачи самое оно.
>>672140
#29 #672140
>>672138
Питон ставится в 2 клика.
>>672142>>672150
#30 #672142
>>672140
Powershell работает из коробки.
>>672150>>672151
#31 #672150
>>672140
>>672142
Ну заебали. Сейчас ещё прикатится хуй с картинкой о распространенности двойки на pypi.
#32 #672151
>>672142
Что мешает, кстати микрософт-быдлу поставлять питон из коробки? Лицензия позволяет. Поддержка винды там норм.
Apple вот поставляет.
>>672152
#33 #672152
>>672151
Просто за это никто не заплатит.
#34 #672158
#35 #672164
Есть один ИИ. Внезапно перед ним встаёт задача выбрать между 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()


Нужно чтобы была возможность удалять и добавлять варианты и менять их вес.
Есть ли в питоне что-то готовое для такой задачи или нужно самому велосипед изобретать?
Как такой велосипед лучше организовать?
#36 #672167
>>672164
О, я делал такое. Тебе нужно сгенерировать кеш по всем значениям, суммируя последовательно веса: [5, 8, 9]. Далее randint по всему диапазону и бинарный поиск индекса по кешу (есть хороший модуль bisect).
>>672204>>672211
#37 #672173
>>672164
Правда если у тебя оче дохуя удалений, вставок и перевешиваний, то советую сделать как бы бинарное дерево. В каждой ноде хранятся полные суммы весов каждой из двух ветвей. Туда же я бы посоветовал записывать полное количество листьев каждой ветви, чтобы дерево можно было поддерживать сбалансированным. Собственно поиск это спуск по дереву до листа: в каждой ноде у нас два весовых числа и мы просто выбираем взвешенным рандомом одну из ветвей, далее повторяем пока не достигнем листа. Удаление, добавление и перевешивание в целом тривиальны, будут иметь логарифмическую сложность.
>>672204
#38 #672179
>>672164
Как-то ты ебануто справшиваешь. Тебе просто надо из списка вариантов рандомным образом выбрать один? Random.choise и вперде.
>>672186
4750 Кб, Webm
#39 #672184
>>672164
А, я хуячил такой ИИ, только на другом языке.

Суть такова. Тебе нужно использовать реализацию дерева решений. Если не понял, то читай дальше. В твоем случае у тебя одноуровневое дерево с тремя листьями: стул с пиками (вес 5), стул с хуями (вес 3 - пидор, лол, хуи предпочтительнее пик (мне тоже) ) и хуи дроченые срубают пики точены (вес 1).

Чтобы алгоритм обработки оптимального выбора был оптимальным тебе нужна рекурсия (итеративно тоже можно, но заебешься, если у тебя многоуровневое дерево с множеством узлов). Рассмотрим сначала пример с твоим деревом решений, потом посмотрим многоуровневые деревья с лабиринтом пик, негров, хуев, пироженок.

Ты находишься на верхнем узле дерева. У тебя есть 3 листа (лист это конечный элемент дерева. Грубо говоря, нижний). То есть 3 возможных хода ИИ. В начале рекурсивной функции проверяешь не является ли текущая позиция листом (конечным элементом). Если являешься, то вызываешь функцию оценки листа (стула с пиками), который узнает вес этого листа и возвращает его обратно. Рекурсивная функция, получив итоговую оценку своей позиции, возвращает ее вес.
Если текущая позиция не является листом (конечным стулом-элементом), а является узлом, у которого еще есть выборы, то возможные ходы (выборы сортов стульев) этой позиции добавляются в массив или коллекцию. Дальше хуячишь цикл по всем элементам массива. На каждом возможном ходу вызываешь рекурсивную функцию передавая в качестве параметра позицию хода (стула) и сравниваешь возвращенный вес с уже имеющимся наилучшим. Если вес меньше (хуи дроченые срубают пики точены (вес 1) лучше стула с пиками (вес 5) ), то наилучший вес делаешь равным возвращенному.
Только не забудь ограничить глубину раскрытия дерева решений - то есть идет оценка позиции и возврат веса если это лист (конечный элемент, достигли ДНА дерева) или достигнута максимальная глубина. Само собой, при погружении внутрь тогда надо изменять текущую глубину.

В результате такой хуйни, функция рекурсивно пробегает по всему дереву и возвращает наилучший ход (если несколько наилучших, то первый из них. Или какой сделаешь). То есть с одноуровневым (с 1 узлом - родительским и 3 листями - стельями) такая хуйня пробежится по всем стульям и вернет срубление пик точеных хуями, ибо вес ее будет наилучшим.

Если же у тебя многоуровневное дерево (перед тобой 3 прохода в каждом из которых 3 прохода в каждом из которых несколько стульев различного веса), то вернет наилучший ход и ИИ гарантированно не зайдет в позицию, где на одном стуле неснимаемые пики точены, на другом несрубаемые хуи дрочены, а на третьем распаленные геи-ниггеры из далекого космоса.

Хуйня получается компактной, расширяемой (функции поебать на размер и многоуровневость дерева) и твой преподаватель тебе отсосет. Только пиши аккуратно, а то охуеешь от траблшутинга, если что-то будет работать не так, как должно.
Если по-прежнему нихуя не понял, то ищи стратегию минимакса - по ней поймешь.
4750 Кб, Webm
#39 #672184
>>672164
А, я хуячил такой ИИ, только на другом языке.

Суть такова. Тебе нужно использовать реализацию дерева решений. Если не понял, то читай дальше. В твоем случае у тебя одноуровневое дерево с тремя листьями: стул с пиками (вес 5), стул с хуями (вес 3 - пидор, лол, хуи предпочтительнее пик (мне тоже) ) и хуи дроченые срубают пики точены (вес 1).

Чтобы алгоритм обработки оптимального выбора был оптимальным тебе нужна рекурсия (итеративно тоже можно, но заебешься, если у тебя многоуровневое дерево с множеством узлов). Рассмотрим сначала пример с твоим деревом решений, потом посмотрим многоуровневые деревья с лабиринтом пик, негров, хуев, пироженок.

Ты находишься на верхнем узле дерева. У тебя есть 3 листа (лист это конечный элемент дерева. Грубо говоря, нижний). То есть 3 возможных хода ИИ. В начале рекурсивной функции проверяешь не является ли текущая позиция листом (конечным элементом). Если являешься, то вызываешь функцию оценки листа (стула с пиками), который узнает вес этого листа и возвращает его обратно. Рекурсивная функция, получив итоговую оценку своей позиции, возвращает ее вес.
Если текущая позиция не является листом (конечным стулом-элементом), а является узлом, у которого еще есть выборы, то возможные ходы (выборы сортов стульев) этой позиции добавляются в массив или коллекцию. Дальше хуячишь цикл по всем элементам массива. На каждом возможном ходу вызываешь рекурсивную функцию передавая в качестве параметра позицию хода (стула) и сравниваешь возвращенный вес с уже имеющимся наилучшим. Если вес меньше (хуи дроченые срубают пики точены (вес 1) лучше стула с пиками (вес 5) ), то наилучший вес делаешь равным возвращенному.
Только не забудь ограничить глубину раскрытия дерева решений - то есть идет оценка позиции и возврат веса если это лист (конечный элемент, достигли ДНА дерева) или достигнута максимальная глубина. Само собой, при погружении внутрь тогда надо изменять текущую глубину.

В результате такой хуйни, функция рекурсивно пробегает по всему дереву и возвращает наилучший ход (если несколько наилучших, то первый из них. Или какой сделаешь). То есть с одноуровневым (с 1 узлом - родительским и 3 листями - стельями) такая хуйня пробежится по всем стульям и вернет срубление пик точеных хуями, ибо вес ее будет наилучшим.

Если же у тебя многоуровневное дерево (перед тобой 3 прохода в каждом из которых 3 прохода в каждом из которых несколько стульев различного веса), то вернет наилучший ход и ИИ гарантированно не зайдет в позицию, где на одном стуле неснимаемые пики точены, на другом несрубаемые хуи дрочены, а на третьем распаленные геи-ниггеры из далекого космоса.

Хуйня получается компактной, расширяемой (функции поебать на размер и многоуровневость дерева) и твой преподаватель тебе отсосет. Только пиши аккуратно, а то охуеешь от траблшутинга, если что-то будет работать не так, как должно.
Если по-прежнему нихуя не понял, то ищи стратегию минимакса - по ней поймешь.
>>672194
#40 #672186
>>672179

> Тебе просто надо из списка вариантов рандомным образом выбрать один?


Да, но при этом 1 элемент должен выпадать чаще другого, пропорционально весу.
10 Кб, 295x171
#41 #672187
>>672186

> Есть два стула... Я выберу срубание... Хотя нет, в этот раз я выберу хуи. Не повезло прост((

#42 #672189
>>672186
Сделай список в котором каждого элемента будет n*вес
#43 #672190
>>672189
Рубисты в треде, все в пхп.
#44 #672192
Все, что связано с хуями и пиками всегда привлекало внимание на бордах.
#45 #672194
>>672184
А где тут случайный выбор?
>>672195
#46 #672195
>>672194
Не нужен.
Но если хочется присесть на пики, то легко прикрутить.
>>672202
#47 #672202
>>672195
Анон же написал:

>ИИ должен случайно выбрать в соответствии с весом варианта.

#48 #672203
>>672189
Я думал о таком решении, но, если у пик будет вес 9999, а у хуёв 1, то придётся генерить список в 1000, а потом каждый раз перегенерировать при изменении весов, что непозволительный просер вычислительных ресурсов.
>>672204>>672228
#49 #672204
>>672203
Делай уже по моим подсказкам. Аж целых джва варианта тебе: с иммутабельной выборкой >>672167 и с мутабельной >>672173.
#50 #672205
>>672164
Чому бы не сортировать по весу и выбрать из наименьших?
#52 #672211
>>672207
Первый вариант там: этот пост >>672189
Второй вариант: этот >>672167
Вот хуле нового ты сейчас сказал?
>>672215>>672221
#53 #672215
>>672211
Зачем устраивать дискуссию, если это есть в документации?

>Вот хуле нового ты сейчас сказал?


Ты очень неприятно выражаешься.
#54 #672221
>>672211

>Вот хуле нового ты сейчас сказал?


Конкретный пример в питоновских буквах.
Мне пригодилось. Больше чем описание про кеш словами без примера.
Всем спасибо за подсказки и участие.
>>672226
#55 #672226
>>672221
Стековерфлоу-программисты пишут ИИ, лол.
#56 #672228
>>672203

> то придётся генерить список в 1000


И что? Во-первых, 1000 элементов это ничто. Во-вторых, они будут ссылаться на тот-же объект, то есть памяти тоже минимум съедено.
Не занимайся преждевременной оптимизацией тем более на быдлопитоне.
>>672231
#57 #672231
>>672228
Внезапно появляется вес 1012 к одному.
Не занимайся быдлокодингом даже на быдлопитоне.
>>672234
#58 #672234
>>672231

> Внезапно появляется


А если не появиться?
>>672242
#59 #672242
>>672234
Ну не появляйся.
>>672246
#60 #672246
>>672242
Ну вот. Тем более 10^12 вес. Обычно не бывает такого. При таком весе весом 1 можно было бы вообще принебречь.
>>672248
#61 #672248
>>672246
Ну вот видишь сколько условностей нужно соблюсти. Этот алгоритм неплох, но для небольших фиксированных чисел. И об этом даже там в доках >>672207 написали. То есть 1000 - это уже плохо, так как если тебе нужно сделать миллион выборок по разным вариантам, будешь джва года ждать.
#62 #672262
Аноны, у меня есть задание сделать небольшой SPA с возможностью загрузки картинок, сохранения их в галерею, показа отдельной картинки и всей галереи.
Я только учусь и никогда раньше не сталкивался с таким таском, для этого мне можно обойтись только Django REST и для отображения написать несколько Ajax запросов? Я правильно понял?
#63 #672276
>>672262
Думаю тебе надо пердолиться с каким-то javascript фреймворком. Питоновская часть то простая. Кстати django rest довольно сложный, есть попробще либы.
>>672278
#64 #672278
>>672276
в туториалах советуют Angular + REST, с первым я не знаком совсем. Хотя, думаю, задача не такая трудная чтобы на фронтенде использовать фреймворк.
>>672299
#65 #672299
>>672278
В яваскрипт треде янгуляр чмырят дико. Сам я его не осилил(и не пытался).
Можешь на простом яваскрипте сделать или на jquery.
>>672302
#66 #672300
>>672262
Если тебе просто преподу показать, то можно хранить картинки прямо в localStorage, а для SPA взять один из тысячи js галлерей, которая в любом случае понадобится.
>>672311
#67 #672302
>>672299
или на аджахе
>>672304
#68 #672304
>>672302
Или?
>>672308
#69 #672308
>>672309
#70 #672309
>>672308
аджахе!
#71 #672310
>>672186
Лови говнокд, братишь
https://ideone.com/yuGqTQ
#72 #672311
>>672300
Да, мне нужно просто реализовать это приложение на дев сервере. Я просто не совсем понимаю, что входит в понятие SPA. В моем представление, это приложение в котором весь обмен данными реализован через Ajax, без обновления страницы и данные отдаются через Json.
Соответственно мне нужен Django Rest. Я правильно все понял?
#73 #672312
>>672262
Дай-ка угадаю: ТЕСТОВОЕ ЗАДАНИЕ?
#74 #672317
>>672311
Django REST необязательно, можно и на голом Django все это сделать. Тут как тебе будет удобнее.
Галерей на js масса, выбирай одну, смотри в каком формате она получает данные. Скорее всего, это будет json список ссылок на превьюшки и полноразмерные картинки.
>>672325
#75 #672320
>>672311
Single Page applications же, еба.

>данные отдаются через Json.


Не обязательно. Даннуми ты можешь хоть через WEB-сокет по каштомному бинарному протоколу обмениваться.

>Соответственно мне нужен Django Rest.


Совсем не обязательно. Можно на простой джанге заипошить, можно на фласке, можно хоть на голых скриптах. Задание-то хоть на какую позицию?
>>672325
#76 #672324
>>672311
Django REST нужен чаще всего когда ты хочешься сделать по быстрому нормальное API к своему приложению, чтобы другие могли юзать его из своих сервисов. В твоем случае обычные вьюхи и какойнить ангуляр с библиотекой для картиночек будет достаточно.
>>672325
#77 #672325
>>672317
>>672320
>>672324

Спасибо
Я позицию джуниора ищу и выполняю все задания которые предлагают. Пока устроится не могу. Самое тяжелое пока было написать простое реалтайм приложение, я написал но завалил все, что можно в интервью, сейчас подтянул знания.

Погуглю галереи и отдавать буду Jsonresponce через Ajax запросы, намного проще пока выглядит чем вникать в Rest и Angular
#78 #672330
>>672325
первый запрос на SPA галерею
http://demo.jankuri.com/ngGallery/
чтд.
83 Кб, 442x618
#79 #672331
>>672325

>выполняю все задания которые предлагают

>>672332
#80 #672332
>>672331
Это же опыт, который мне пригодится
>>672336
#81 #672336
>>672332
моча рано ударила в голову в 4 активно ругался матом
в детском саду девочки впервые показали мне пизду
потом школа вонючая форма драки клей так я становился сильней
>>672356
#82 #672356
>>672336
Уебывай в /б
>>672367
#83 #672367
>>672356
да тут такойже /b, только все ждут что тут сэры и герцоги одни.
>>672458
#84 #672417
Аноны, подскажите название пакета, насколько я помню аналог Selenium, только рендерит страницу в консоли.
>>672421>>672544
#85 #672421
>>672417
Ghost.py?
>>672435
#86 #672435
>>672421
Не совсем то, но пока искал, нашел, что Selenium в качестве вебдрайвера может phantomjs использовать.
#87 #672457
>>672325
Ты умничка
Я ещё годик поучу питон похожим макаром и тоже попизжу куда кодером
>>672464
#88 #672458
>>672367
Господа жи.
#89 #672464
>>672325
Ну рассказывай свой путь, с чего начал, какие материалы уже успел изучить, ну и входные данные какие были.

И ты еще расскажи >>672457
#90 #672468
>>672464
Месяцев 7 учусь, работаю 2х2 так что время свободное есть.
Входных данных никаких, даже отдаленно не представлял как все устроено. Прочитал Лутца, посмотрел кучу туториалов, вроде вник в основы, потом начал Django изучать, сейчас с основами тоже знаком хорошо. По sql небольшую книгу прочитал, не помню автора, просто чтобы представлять как делать запросы без ОРМ. Свой уровень не могу точно оценить но на джуниора точно должен тянуть.
Вообще нужно очень много практики, чтобы в голове откладывалось больше информации. На собеседования зовут редко как сделаю что-нибудь стоящее для гитхаба, может получше пойдет
>>672629
#91 #672500
>>672464
3 месяца
Кодекадеми -> книжки-туториалы все подряд, уже добрый десяток книжечек со всеми заданиями и прочей хуйнёй, штук сорок скриптов для себя накатал что бы автоматизировать всё что хотел, вроде автоматизировал.
Начинал учить что бы высрать вполне конкретные две системки на джанго но меня до сих пор ебёт их делать.

А с другой стороны кодинг заебись, даже если я буду зарабатывать за месяц 3 сотни баксов это будет больше чем моя текущая зп, а я так понял удалёнку на 3 сотни найти не самое сложное в этой жизни.
>>672503>>672629
#92 #672503
>>672500
что у тебя за работа? Я только один парсер себе для удобства работы написал
>>672513
#93 #672513
>>672503
Скажем так, я фрилансер в сфере корпоративного управления. Обычно это означает что я сижу дома и пизжу с долбоёбами на линкедине за мизерную ставку. Изредка - что я куда-то еду и за огромную кучу бабла им чёто делаю. Изредка это реально изредка.
Из других смешных особенностей опыта у меня вроде и много, но для международного уровня маловато, а местный вымер нахуй ввиду того что теперь моя область называется лднром.
Вот и получается что для говновакансий за 500 баксов никто с экспантом ебаться не захочет, собеседоваться зовут только на всякое говнище по 1-2 К $, а живу я на 10 тыщ руб которые зарабатываю тем что торгую через инет при помощи вордпресса и адсенса/директа всяким говном
#94 #672544
>>672417
Фантом жс. Только его надо отдельно скачивать. Удобная штука. А во время отладки надо одну строку поменять чтобы все было видно
#95 #672554
Пистоны, задачка с codewars.

Вычислить выражение типа

1 | 2 | 3 | ... | n

На тестах большого числа n все ломается.

Делал через reduce - MemoryError

А через цикл - Process was terminated. It took longer than 6000ms to complete.

Какой алгоритм взять?
>>672557>>672590
#96 #672557
>>672554
Выражение то какое?
>>672560
#97 #672560
>>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.

>>672601
#98 #672580
>>672464
а меня хоть никто и не просил тоже расскажу.
С лета мееедленно так читал сначала Укус, понял что нихера не понял (вернее для реализации даже курсачей понимания маловато), решил сделать "сначала все зубришь-потом кодишь", поэтому читал вяло полгода Лутца. Понял что так нихера не проканает и сижу читаю теорию Лутца, практику Лутца, Бизли с примерами и описаловом библиотеки и еще СИКП и пытаюсь в курсачи и чтобы понять как работает оно. Но этого не случалось пока мне не припекло что мне надо перебираться из моей мухосрани а коденхом это сделать будет проще всего по затратам времени.
#99 #672590
>>672554
А большое n - это сколько? На моем днищеноуте n=100 млн вычисляет 5.4s
#100 #672593
Я еще раз прочитал про SPA, главное отличие SPA это выполнения кода на одной странице без перезагрузки? Т.е. если в Django я отправляю во вью все через Jsonresponce, по средствам Ajax это будет SPA? Или у SPA есть какие то другие особенности?
#102 #672611
>>672615
#103 #672612
>>672601

Какая-то магия.
>>672624
#104 #672615
>>672611
Само собой. Я просто хотел чтобы было видно почему так получается.
#105 #672624
>>672612
OR не умеет превращать 1 в 0. Если у числа где-то 1 в двоичном представлении, то сколько его не орь она там останется.
Поэтому у тебя сразу должно возникнуть предположение, что двоичном представлении X = 1 | 2 | ... | N должно быть дофига единиц.
По факту результат будет состоять из такого же количества битов, что и N, но все они будут "1". Даже объяснять лень.
>>672677
#106 #672629
>>672468
>>672500
А вы молодцы, удачи вам и упорства побольше.
Тоже надо плотнее уже заняться этим делом, а то прерываюсь часто из-за дел.

Расскажите еще какую-нибудь стори.
9 Кб, 236x216
#107 #672632
Питоны, подскажите, что лучше использовать. Есть сайт, он берет данные не из бд, а из rest/soap сервиса, крутящегося на другом сервере. С помощью чего лучше реализовать получение этих данных (нагуглил сериализаторы), и какой фреймворк использовать? Вроде как нашел, что для этого Flask хорошо подходит, а в Django для такой задачи слишком много лишнего, верно ли это? В общем, хелп ми плиз.
>>672639
#108 #672639
>>672632
По мне и фласк слишком батарейкнутый для простых дел.
Попробуй веб2пу - оно простое как банка пива и тоже работает.
>>672685
#109 #672677
>>672624

Алсо вот верхний ответ с codewars

score=lambda n:2n.bit_length()-1
>>672686
#110 #672685
>>672639
что рекомендуешь прочесть чтобы понять веб2пу? и понять что он прост как банка пива?
>>672713
#111 #672686
>>672677
Ну или так.

score=lambda n:(1<<n.bit_length())-1
#112 #672713
>>672685
Туториал на оф. сайте
#113 #672716
Анон, что за хуйня:
f =open('file.txt').read().replace(',\n',',').split('\n')
f = filter(None, f)
for i in f:
print(i)
должно быть 10 строк, но их 11, т.е последняя пустая. Откуда она берется, как ее убрать?
#114 #672808
>>671902 (OP)
Так так так. А что не так с каррингом? Глаз зацепился просто.
#115 #672891

># -- coding: UTF-8 --



Такая хрень же не нужна в третьем, да?
>>673121
#116 #672918
Захотел я сделать сайт на web2py, например, не на локалхосте, а чтобы другие люди могли зайти.Я знаю только что нужен домен и хостинг, а как это всё работает? Какие шаги надо проделать, чтобы на выходе иметь настоящий домен в интернете, и на нем разрабатывать сайт. Распишите подробнее, пожалуйста. И не отправляйте в веб
>>672922
#117 #672922
>>672918
Поиграй с бесплатным питонэнивер хостингом, пройди Джанго герлс туториал - базарю вопросов не останется вовсе а по времени займет ну 3 часа
>>674031
72 Кб, 1280x1024
#118 #672998
Вечер в хату. Есть вопрос.
Хочу вкатиться в кодинг в Х лет, нихуя не умея (кроме английского). Как я понял, из ЯП Python - самый легкий в плане синтаксиса.
Прочитал Лутца, прошел пару онлайн-курсов по основам синтаксиса, порешал задачки. Теперь хочу перейти к прикладному применению, писать код по обработке встроенных типов данных уже не интересно.
Посмотрел материалы, много книг, туториалов на инглише, по применению python в куче разных областей. Не представляю, за что браться, с чего начинать, так как по-хорошему специализироваться придется в чем-то одном. Data analysis, system administration, networking не привлекают, питоновские GUI и mobile apps убогие (пацаны сказали), остается web-development (порог вхождения низкий, как раз для всякого днища подойдет).
Так вот, где можно посмотреть примерный перечень технологий для фулстэк веб-разработки на питоне? Насколько я понял, нужно мочь в: верстку (html, css), базы данных (sql, postgres, mongodb), специализированные питоновские библиотеки и фреймворки (flask, pyramid, django), знать теорию (компьютерные сети, алгоритмы, паттерны проектирования), опционально linux, JS плюс соответствующие библиотеки и фреймворки. Поправьте, если что-то пропустил или ошибся.
Еще все утверждают, что просто учить синтаксис не имеет смысла, надо в ходе изучения создавать некие проекты. Что это за проекты и с чем их едят? Где можно посмотреть примеры, чтобы что-то выбрать для себя?
#119 #673029
>>672998
Лучше вкатывайся в мобайл девелопмент, на питоне гораздо лучше.
#120 #673112
>>672998
Учи все что попадает под руку, тебе это много времени на текущем уровне не займет, а кругозор расширит.
>>673114
#121 #673114
>>673112
Ага, быстрее найдет "точку опору" и начнет ориентироваться во всех этих баззвордз.
#122 #673116
Позвали в РАМАКС ДС-2 на собеседование. Может тут есть Анон который ходил туда и сможет что-нибудь рассказать ?
>>673394>>673514
#123 #673118
>>672998

Синтаксис похуй тащемта.
#124 #673121
>>672891
не нужна
>>673918
#125 #673122
>>672998
на степик 10 марта начнется курс "прикладное программирование", может будет интересно
#126 #673128
Анон, учу тхреады. Пример из справочника Бизли:
def clock(interval):
while True:
print("Текущее время: $s" % time.ctime())
time.sleep(interval)

t = threading.Thread(target=clock, args=(15,))
t.daemon = True
t.start()

Process finished with exit code 0
И все, ничего не выводит. В чем подвох?
#127 #673132
>>673128
Книги Бизли есть в русском переводе?
>>673141
#128 #673141
>>673132
Нагуглил как минимум справочник на русском
#129 #673157
>>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() в доках.
#130 #673212
А как проще всего питоном проверить картинки на раржпг'ность?
Через try: os.... Рар архиватор запускать консольный и если вышел с ошибкой - следующий?
>>673236
#131 #673236
>>673212
Проверяешь содержимое файла на заголовки распространенных архивов.
>>673242
#132 #673242
>>673236
Именно весь файл просматривать?
Страшно представить сколько времени займет проверка картиночек по 15 мб
>>673251
#133 #673251
>>673242
Ну ты можешь сначала прочитать заголовок жипега (http://www.fastgraph.com/help/jpeg_header_format.html), вытянуть оттуда нужные данные, посчитать размер и пропустить нужное количество байт, а там уж видно будет, есть что-то или нет (ну или сразу сравнить с размером картинки).
#134 #673277
Реквестирую годной обучалки по пихтону для неновичка в программировании.
>>673281>>673283
#135 #673281
>>673277
Think Python
>>673481
#138 #673285
>>673283
По 1:20:00 в среднем лекции
И у кого-то же есть время этих пиздаболов столько слушать, жесть
>>673300
#139 #673300
>>673285
мне очень понравился лектор, интересно слушать его. Вообще у них много годных лекций на канале
#140 #673394
>>673116
Ходил устраиваться туда около полугода назад. Сначала немного общался текстом в скайпе с эйчаршей, вроде все норм. Пришел, прошел через охранника. Коридоры просторные, светлые. Вроде и аккуратно всё, но отдает какой то медицинской стерильностью. Вышла эйчарша. Симпатичная молодая девушка в джинсах и клетчатой рубашке, офисным стилем даже не пахнет. Пригласила в кабинет. Спросила за мой опыт, проекты, задала несколько несложных вопросов. Сказала что ы как профессионал её устраиваю, но хотелось бы ещё узнать личные качества. Пригласила для неформальной обстановке выйти покурить. На улице начала настойчиво ко мне приставать, обнимать, говорить что ей нужно узнать меня поближе. Сказала рядом живет. Ну я тогда молодой был, токсикозный. Согласился. Жила она правда рядом, буквально через дорогу. Пришли, она взасос поцеловала, начала меня раздевать. Ну я же листва, начал дрожащими руками её раздевать. Стягиваю джинсы с неё, а она без трусов и у неё нихуевый такой хуй, сантиметров 18 точно будет. Я охуел, замер, перевожу на неё взгляд, а она улыбается, меня по голове гладит и показывает на хуй, говорит - "я тебя на работу возьму без испытательного, зарплату сделаю выше на половину". Ну я подумал - а что терять? Она ничего не докажет, а работа не помешает. Ну я и сделал ей минет. Она как кончила сразу чего то занервначала, стала одеваться. Мне мою одежду дала и вытолкнула за дверь, сказала завтра сообщит по телефону во сколько приходить на работу. Этим же вечером пришла смска, что я им не подхожу. Я перезванивал - телефон не доступен. Обратно в офис ходил - охранник отказывается пускать. Квартира та как оказалась была съемная. Плохая компания, не рекомендую.
#141 #673406
>>673394
Всегда читаю как в первый раз. Вот такой вот я романтик.
>>673431
#142 #673431
>>673406
мечтаешь так же?
>>673434
#143 #673434
>>673431
А потом взять эйчаршу замуж
>>673541
#144 #673437
Анон, хочу парсить сайты из выдачи гугла или яндекса, на которых есть виджет комментарие ВК, в каком направлении двигаться, что гуглить?
#145 #673439
>>673437

>комментариев

#146 #673440
>>673437
виджет - жс, значит тебе нужно что-то типа селениума что бы оно могло эти страницы с жс в браузере собрать прежде чем по икспас парсить
>>673451>>673861
#147 #673451
>>673440
нафига?

виджет подключается с помощью определенного жс скрипта вроде как, парсишь на страницах урл с этим жсником, все
>>673461
#148 #673461
>>673451
тебе комменты ж собирать из виджета?
>>673483
#149 #673476
Поясните с какой книги начинать Питон (имею опыт на PHP и Symfony, читал SICP и вообще молодец), чтобы не 100 страниц про переменные, а полная и непротиворечивая информация по языку, его фичам и прочему.

Пока смотрю на Dive into.
#150 #673479
>>673476
ну или справочник Бизли
#151 #673481
#153 #673483
>>673461
я не >>673437
ему для спама я так понимаю нужно базу сайтов собрать, потом он уже будет специальным софтом спамить
#154 #673486
>>673476
Я уже 2 книги добавил где описывается все без воды.
https://github.com/TheKnightsWhoSayNi/info/wiki/Books#Лёгкие-книги
>>673496
#155 #673496
>>673486
fluent python читали?
>>673505
#156 #673505
>>673496

>fluent python


Да дахуя этих книг, но те 2 - это топ.
#157 #673512
>>673394
лолд
#158 #673514
>>673394
отлично, мне подходит

но я все равно бампану >>673116
#159 #673541
>>673434
Это она тебя возьмет.
>>673543
#160 #673543
>>673541
да похуй, если выглядит как тян, то мечта просто
>>673545
#161 #673545
>>673543
Двачую, трап > тян.
#162 #673547
А потом кодить на питоне. То она на твоем, то ты на ее.
#163 #673550
А потом разблокируешь ей GIL и итерируешь генератор.
>>673592
#164 #673592
>>673550
У меня один знакомый не успел переназначить бранч и закоммитил в мастер тян. В итоге релизнулся проект, а ему пришлось стать контрибьютором. Не забывай про безопасность.
>>673593
#165 #673593
>>673592
не в ту ветку пушишь, тут трапы и их преимущества
#166 #673861
>>673440
То есть, сперва спарсить все сайты из выдачи?
#167 #673864
И да, мне для спама, дальше 10-й страницы парсить нет смысла, ибо трафика там нет уже.
#168 #673892
>>673437
если просто найти, то хоть юрлгетом. Смотришь как у гугла/яндекса url формируется для запросов, потом берешь какую-нибудь либу для работы с DOMом, там BeautifulSoap или Grab, ну или что ты там нагуглишь. Потом ходишь ею по ссылкам с выдачи, скачиваешь исходник сайта, можешь той же либой, но urllib должно хватить. Ну и ищешь в исходниках код, который вставляют для того что бы добавить этот блок комментариев.
#169 #673918
>>673121
Спасибо.
#170 #674030
>>672716

>f =open('file.txt').read().replace(',\n',',').split('\n')


>f = filter(None, f)


>for i in f:


>print(i)


Покажи свой файл
#171 #674031
>>672922

>базарю вопросов не останется вовсе а по времени займет ну 3 часа


Сдается мне, ты пиздишь. Вкатиться в джанго и за три дня не удастся, во всяком случае вопросов становится все больше, а про то чтобы хостить сайт даже пока боюсь и думать.
мимо нуб кун
>>674174
#172 #674046
Всем привет , есть ли какая годная инфа по pykinter или pygame?
>>674140
#173 #674140
>>674046

> pykinter


Чё эт?
68 Кб, 604x415
#174 #674174
>>674031
Человек о хостинге и жеплое питон-приложений на этот хостинг спрашивал.
Спрашивал о веб2пу а не Джанго
А туториал от Джанго герлс я ему почитать рекомендовал ибо там тема использования питонэнивер раскрыта так что даже бабы врубаются.
>>674903
#175 #674240
>>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() сделай.
#176 #674244
>>672716
Ну у тебя в конце файла есть перевод строки. Стрипни текст и все.
#177 #674247
>>674244

> f = filter(None, f)


Должно убрать пустые строки. Видимо там не просто пустая строка а пробел.
>>675143
#178 #674362
>>672010
Два чая этому господину. Некоторые пункты на OP пике вообще высосаны из пальца. Зачем питону компилятор, если он изначально разрабатывался без расчёта на компиляцию в машинный код. А так то, компиляция в байт-код есть, ибо .pyc файлы никто не отменял. Приватные методы - _,methodname или __methodname. КАРОЧИ ТОЛСТА.
>>674375
#179 #674375
>>674362
Канпелятор есть - jit и pypy, есть nuitka, есть cython.
Проверка типов тоже есть - mypy и в pycharm.
Под "хвостовая рекурсия" афтар видимо имел ввиду tail call optimization и это фишка функциональных языков где нет циклов. Зачем оно в питоне непонятно, но всё равно можно запилить через хаки.
Карринг тоже есть - тот же functools.partial или самому запилить можно т.к. функции первого порядка
Ленивость тоже.
#180 #674601
Написал небольшой скрипт на питоне для скачки всех файлов с треда. Полезно на всяких png-тредах или подобном
https://github.com/OlegWock/2ch-files-downloader

Подписывайтесь, ставьте лайки
#181 #674621
Гвиданы, как мне в джанго получить url картинок, чтобы их повставлять в темлпейт при создании новости, если картинки эти заливаются в отдельную модель, а в посте они через мени-ту-мени-филд.
>>674689
#182 #674689
>>674621
Все разобрался.
>>674696
#183 #674696
#184 #674798
Объясните, как на пистоне строить графики функций.

matplotlib - тормознутое говно
vispy - не работающее аппаратно-ускоренное говно, кидающееся NotImplementedException на попытку его использования для построения графиков
всё остальное - низкоуровневое говно для рендеринга полигональных моделек
>>674802>>674817
#185 #674802
>>674798
Честно - ни разу не слышал что бы матплот обвиняли именно в тормознутости
В других грехах - да, но в тормознутости от тебя первого слышу. Может ты что-то делаешь не так?
>>674934
#186 #674817
>>674798
Сотни их. plotly и pygal сам юзал, заебись.
>>674934
#187 #674869
Хелп ми плиаз. Прошел начальный курс по питону от MIT хз что теперь дальше изучать (сижу на код академи от этого профит есть?). Вот нашел сборник книг, курсов но какой выбрать? http://tproger.ru/articles/free-programming-books/#python
>>674876>>674958
#188 #674876
>>674869
Изучай популярные фреймворки и скорее вкатывайся в работку.
>>674889>>674893
#189 #674884
Посоветуйте самый годный учебник по сабжу, или онлайн-курс. Можно на английском.
>>674958
#190 #674889
>>674876

>пистон


>работку


ПХАХАХАХХ
#191 #674893
>>674876
Можете сказать какие, а то я в этом деле валенок.
#192 #674895
а вы знали что есть подскасты по петону?
Вчера слушал "Talk Python to me" не совсем понял зачем он, какоето бесконечное обмазывание петоном в прямом эфире.
>>674955
#193 #674900
>>674244

>Ну у тебя в конце файла есть перевод строки. Стрипни текст и все.


нет, пустые строки от перевода(любого количества) срок не появились бы
#194 #674903
>>674174
да? ну тогда ладно.
#195 #674934
>>674817
plotly - рендерит в браузере, и по-видимому юзает веб-сервис. Ты мне ещё предложи jupyter заюзать (не идёт потому, что разрабы pyzmq послали xp на хуй, увидев, что одной из импортируемых ими функций в xp нет, а разрабы jupyterа по видимому завязали jupyter на всяякое не нужное дерьмо (нахуя локалному нехайлоад экземпляру сервер очередей?)).
pygal - 2д диаграммы

>>674802
1 а ты попробуй построить 3d график
2 а на старом железе даже 2d будет тормозить

>но в тормознутости от тебя первого слышу.


1 на стековерфлоу есть об этом тред
2 в доках об этом написано и сказано юзать vispy
#196 #674955
>>674895
Есть еще подкаст.инит и питон тест подкаст
По мне так до жопы все это, я тупо разговорные слушаю что бы не так быстро речь иноземную забывать а пионерские термины - их и так хуй забудешь за отсутствием русских.
>>674993
#197 #674958
>>674869
>>674884
Все в оп посте. Или нахуя нам шапка по-вашему?
#198 #674993
>>674955
а что такое пионерские термины?
>>674995
#199 #674995
>>674993
Исправление ебучим гуглсвайпом слова "программерские"
>>675035
#200 #675035
>>674995
в том эпизоде что я слушай, кстати, поясняли что без петона в cgi и кинематограф вообще не ходи.
#201 #675103
Посоны, а как вообще интерфейсы делают? Ведь экраны мало того разные по разрешению - у них еще и разный dpi. Как же сделать так, чтобы на разных мониторах приложение выглядело приемлемо?
>>675208
#202 #675139
Почаны про spb-tut(точка)ru что скажите? Вот не могу понять, он жесткий продаван и нагородил какой-то хуйни на джанге в виде портала УСПЕЙ КУПИТЬ ВСЕ ПО 9999999 ДО ЗАВТРА или реально годные темы задвигает? Что вообще годного можно найти по основе построения вэб-приложений/приложений, не из разряда тыкайте сюда и хуяхуяк runserver во как у вас круто вышел helloworld, а что-то ближе к реальному миру, типо пишем с нуля магазин для продажи говен лопатами на развес ИНТЕРАКТИВНЕНЬКО с AJAX НА БУТСТРАПЕ АДАПТИВНЕНЬКО. Ну или как-то так хз, только въезжать начинаю лол
>>675213
#203 #675143
>>672716
Это тащемто ddl.sql, т.е. create table и т.д
>>674247
Должно, видимо сплит в последней строке убирает \n и пилит новую строку. Почему фильтр эту строку не удаляет я не знаю
>>674244
Можно пример для тупых, а то пробовал не вышло
#205 #675152
>>674934

> xp


Ну, бля, ты бы ещё на отсутствие поддержки win95 жаловался. Поставь линукс.
#206 #675153
>>674934
Вот ещё кстати, к ней примерялся, но тогда она qt5 не поддерживала и я её дропнул.
https://github.com/pyqtgraph/pyqtgraph
>>675211
#207 #675163
Что делать если не могу обновить pip с 7 до 8?
>>675172>>675189
#208 #675167
Допустим, я написал приложение, которое может быть полезно многим людям и хочу выложить его на pip. Насколько это сложно? Как отправить туда пакет для проверки? У них есть какие-нибудь обязательные требования?
>>675172>>675207
#209 #675172
>>675167
Регистрируешься, логинишься, прописываешь в своем пакете всякую установочную муру, отправляешь. По сути мало чем отличается от ебилдов в генте или пкгбилдов в арче.

>>675163
sudo easy_install3 -U pip
>>675190>>675342
#210 #675189
>>675163
Что значит «не могу»?
#211 #675190
>>675172
sudo easy_install3 -U pip ошибку выдает
>>675191
#212 #675191
>>675190

>ошибку выдает


Очень полезная диагностическая информация, оставайтесь на линии, наши экстрасенсы уже закидываются спайсом и вылетают.
#213 #675207
>>675167
Никаких требований кроме регистрации. Делается через setup.py (как они там сейчас называются, setuptools или distutils). Есть ещё тестовый pypi, можешь попробовать, посмотреть, поправить.
>>675342
#214 #675208
>>675103
Использовать пункты вместо пикселей, использовать вектор вместо растра.
#215 #675211
>>675153
Там дадо полигоноёбствать чтобы построить в 3d
#216 #675213
>>675139

>тыкайте сюда и хуяхуяк runserver


Обычно такой способ изучения фреймворков самый эффективный. Если же ты не в теме как решается некая задача, для которой предназначен именно этот фреймворк, то учись. Блог напиши, гостевуху, а то с хелловорлда решил сразу магазины идти писать.
#217 #675237
Спасибо анону за совет с 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 exec
ute_from_command_line
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 379, in exec
ute
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_err
ors
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 timezone
ImportError: cannot import name timezone
Мне что-то подсказывает что проблема в том, что в ошибках питон 2.7, я то писал всё на третьем и учебник на третьем, что делать?
#217 #675237
Спасибо анону за совет с 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 exec
ute_from_command_line
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 379, in exec
ute
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_err
ors
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 timezone
ImportError: cannot import name timezone
Мне что-то подсказывает что проблема в том, что в ошибках питон 2.7, я то писал всё на третьем и учебник на третьем, что делать?
>>675246
#218 #675239
Ну да, и команда python пишет, что там используется 2.7
>>675241
#219 #675241
>>675239
Используй третий, очевидно.
>>675244
#220 #675244
>>675241
И как сделать, чтобы там исопользовался третий?
>>675354
#221 #675245
На стаковерфлоу предложили такую команду использовать:
mkvirtualenv --python=/usr/bin/python3.4 django18
Теперь версия 3.4
#222 #675246
>>675237
Чёт у тебя какая-то плохая джанга. У меня импортируется всё.

In [1]: from django.utils import timezone
In [2]: import django
In [3]: django.__version__
Out[3]: '1.8.7'
>>675250
#223 #675250
>>675246
Виртуаленв поменял на 3.4, теперь другая ошибка:
(django18) 23:45 ~/my-first-blog (master)$ python manage.py collectstatic
Traceback (most recent call last):
File "manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named 'django'
>>675251
#224 #675251
>>675250
А тут джанги у тебя совсем нет.
#225 #675252
На этот питонэнивер не нужно заново джангу ставить или её там нет сейчас? Похоже что нет
>>675254
#226 #675254
>>675252
Приличные господа используют свои сервера.
>>675256
#227 #675256
>>675254
Я пока совсем слаб во всех эти серверах, комитах и прочем, пройду этот гайд для девочек, и уже буду о своих серверах думать!
#228 #675257
На локалхосте ставил 1.9.3, здесь не ставится:
django18) 23:45 ~/my-first-blog (master)$ pip install django-1.9.3
Collecting 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
>>675261
#229 #675261
>>675257
Хех. На локалхосте у тебя видимо файл лежал прям там же, с именем django-1.9.3. Так-то pip install Django==1.9.3 (если есть такая вообще, на pypi сверься)
>>675263
#230 #675263
>>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/__in
it__.py", line 353, in execute_from_command_line
utility.execute()
File "/home/Contra111/.virtualenvs/django18/lib/python3.4/site-packages/django/core/management/__in
it__.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
>>675268
#231 #675268
>>675263
Не пиши туда "да", пиши "yes".
>>675271
#232 #675271
>>675268
Чего троллишь то, конечно yes писал
#233 #675272
Попробовал еще раз, заработало, какая-то хуета
>>675275
#234 #675275
>>675272
Чёт ты туда ввёл не то. Наверное под КОИ-8 сидишь прямо из восьмидесятых, что даже юникодный строкожуй подавился. Да, в utf-8 таки есть невалидные байты.
>>675278
#235 #675278
>>675275
Ты о чем вообще, я сижу в консоли pythonanywhere
>>675289
#236 #675287
Теперь настраиваю wsgi, и опять ошибка, как я понял он не может найти whitenoise, но я же устанавливал его только что, что за бред
#237 #675289
>>675278
Мне это ни о чём не говорит. Что за пайтонэнивеа. Для нюфагов наверное, очередное всё-в-одном. Ток чёт глядя на твои стектрейсы мне кажется оно не справилось с тем для чего предназначалось.
>>675291
#238 #675291
>>675289
я как понял это хостинг бесплатный, я туда отправил свой репозиторий с проектом, установил джангу, установил whitenoise, теперь пытаюсь настроить файл wsgi, и вот на этом моменте опять ошибка, он не видит whitenoise почему-то, хотя только что установил
>>675299
23 Кб, 419x771
#239 #675297
Не понимаю почему он не видит staticlocal, в дереве файлов же появилась папка static и всё остальное
>>675321
#240 #675299
>>675291
Вангую что venv на стороне сервера не подключён.
>>675301
#241 #675301
>>675299
я когда на локалхосте ставил джангу, не стал ставить венв, так как не понял зачем он нужен, а на сервере пришлось поставить, т.к иначе использовался питон 2.7
>>675313
#242 #675313
>>675301
Не, тут речь о программе-сервере. Сам venv может быть в порядке. Например так:

uwsgi:
plugins: python34
env: SETTINGS_MODULE=settings
module: wsgi:app
venv: /ряяяяя/.venv/
master: true
processes: 1
>>675318
#243 #675318
>>675313
Я в этот файл записал то что в гайде написано, только ник поменял на свой
http://tutorial.djangogirls.org/ru/deploy/index.html
>>675332
#244 #675321
>>675297

>эти шрифты


>эта радуга

#245 #675328
В каждом втором посте каждый тролль потешает своё чсв, а по делу сказать то?
>>675336
#246 #675332
>>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/



На тот который надо указывает?
>>675334>>675337
#247 #675334
>>675332
В консоли импорт вайтнойс работает, а под запущенным венв это как?
>>675336
#248 #675336
>>675328
Lucida console хороший шрифт, я сам даже как-то сидел. А с cleartype всё ок, кроме того что делать с ним скриншоты дело богопротивное.

>>675334
Ну или так

source myvenv/bin/activate
python

или

myvenv/bin/python
#249 #675337
>>675332
Пишет что не найдео венв по этому пути
>>675341
#250 #675341
>>675337
Читать секции "как создать" и "как использовать".
https://habrahabr.ru/post/157287/

Учитывай что симлинк ipython не создаётся, только python.
#251 #675342
>>675207
>>675172
Спасибо! А пакеты проверяются вручную или загружаются в автоматическом режиме?
>>675343
#252 #675343
>>675342
Их никто не проверяет. Туда просто пакадж вливается файлом и сразу же появляется для скачивания.
#253 #675349
Теперь версия питона опять стала 2.7, как это работает не понимаю
>>675358
#254 #675354
>>675244
Никто не использует третий кроме школьников это не интерпрайз.
#255 #675357
Всё переделал заново, с самого начала поставил венв, потом поставил джангу и вайтнойс, настроил висг, и всё равно ошибка:
ImportError: No module named 'whitenoise'
>>675360
#256 #675358
>>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 просто затирает переменные окружения в текущем баш-интерпретаторе и у тебя снова дефолтный системный питон.
#257 #675360
>>675358
Я сейчас все заново переделал, посмотри вот этот пост
>>675357
>>675365
#258 #675362
>>675358
Мне кажется что проблема не в венв?
#259 #675365
>>675360
Ну и чо. Не нашёл снова он у тебя модуль. Питон ищет модули по переменной окружения PYTHON_PATH + несколько каталогов по умолчанию (их можно изменить при сборке самого питона из исходников, чем пользуются дистростроители чтобы соблюсти свой дзен расположения файлов). Можешь прямо в шелле echo $PYTHON_PATH сделать (если выведет пустоту, это ок, значит используются только пути по умолчанию). venv в частности подменяет этот самый PYTHON_PATH. И если ты создал venv, сделал activate, установил в него пакет, а потом он у тебя не находится и не импортируется, значит где-то ты сделал хуйню, не знаю, может через sudo поставил системно или ещё что. Гугли @ читай короче, руки выпрямить по телефону я не могу.
>>675366>>675368
#260 #675366
>>675365
Сделаю сейчас заново как ты писал про венв, если я файл висг оставляю пустым то всё работает, нахуй вообще эти висг нужен
>>675371
#261 #675368
>>675365

>echo $PYTHON_PATH


Ничего не выводит
#262 #675370
01:54 ~/my-first-blog (master)$ python3.4 -m venv myvenv
The virtual environment was not created successfully because ensurepip is not
available. On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.
apt-get install python3-venv
You may need to use sudo with that command. After installing the python3-venv
package, recreate your virtual environment.
>>675372>>675373
#263 #675371
>>675366
Это точка подключения твоей джанги к вебсерверу. Грубо говоря оно запускает питон и импортирует wsgi.py, затем импортированные объекты могут многократно срать ответами на запросы. Запускать на каждый запрос manage.py это пизда производительности и практика уровня начала 90х, когда сайты на башскриптах писали.

Твоя задача по сути сделать так, чтобы вебсервер запустил правильный питон, подключил правильный venv c библиотеками (если конечно ты используешь venv) и стартанул твою приложуху через wsgi.py.
>>675373>>675375
#264 #675372
>>675370
Нахуй нужен venv. Чем он лучше virtualenv?
>>675374>>675376
#265 #675373
>>675371
Спасибо.
Я сейчас начал заного делать, и теперь венв не создается, делаю так же как в тот раз
virtualenv --python=python3.4 myvenv
а так как ты писал вылетает ошибка >>675370
Старый венв как то надо удалить? И как это сделать?
>>675377>>675380
#266 #675374
>>675372
Я не знаю блеать, я по гайду делаю, еще толком не вник во всё это
#267 #675375
>>675371

> сайты на башскриптах писали.


Нихуя мы их на сишечке писали или на крайняк на perl
#268 #675376
>>675372
Тем что он вшит в сам питон. Но под двойкой только старый virtualenv.
12 Кб, 401x150
#269 #675377
>>675373
Надо
>>675378
#270 #675378
>>675377
В гугле пишут, что удалить нельзя, можно только отключить
>>675379
#271 #675379
>>675378
Похоже деактивате это не та команда, активировал обратно на всякий
#272 #675380
>>675373
То куда насрал venv, вот этот твой каталог myvenv, ты его можешь взять и удалить как обычный каталог. В нём нет ничего особенного. Главное не пилить ветку на которой сидишь отключить его через deactivate если он у тебя сейчас подключен (source myvenv/bin/activate который).
>>675382
#273 #675381
надо удалить каталог myvenv?
http://puu.sh/nu05C/afd63608b7.png
>>675382
#274 #675382
#275 #675384
В самом начале (myenv) значит что я под венв сейчас сижу?
>>675385>>675387
#277 #675387
>>675384
Да, дебил.
#278 #675391
>>675358
Чтобы в текущей папке сделать венв что надо писать вместо venv_dir? Пишет что обязательно путь писать
>>675392
#279 #675392
>>675358
>>675391
Я как понял на этом серве не получится установить венв как ты пишешь, требует рут права и утстановку пакета python3-venv, а этих прав у меня конечно нет
>>675395
#280 #675394
>>674934
matplotlib стартует интерактивный просмотрщик, хуле ты хотел, там аки в гуглокартах приближать-отдалять можно. Запекай итоговую картинку сразу, будет быстро. По крайней мере я сомневаюсь что где-то будет быстрее. Тем более если ещё учесть время на написания кода.
>>675522
#281 #675395
>>675392
Хз. Я тебе написал как оно делается стандартно. У тебя там какое-то чудо mkvirtualenv, которое уже установлено и настроено, юзай его, по аналогии, mkvirtualenv --help читни.

>что надо писать вместо venv_dir


Да любое название же. Суть в том что ты можешь хоть тыщу этих виртуаленвов завести. В одном двойка с джангой, в другом тройка и фласк версии точно 14.88, третьем ещё какой чёрт лысый. При этом у тебя всё есть и точно нужные версии пакетов без троганья рута. Если каждый полезет глобально ставить джангу рутом то весь хостинг далеко не уедет, для этого собственно и придумали венв, Virtual Environment. А весь этот замороч с activate/deactivate нужен только чтобы переключаться между ними.

>Пишет что обязательно путь писать


Ну наверное надо создать каталог сначала через mkdir.
#282 #675405
на всякий случай сообщу что
aws.amazon.com на год бесплатно дает невероятные количества хуерги.
Можно в один клик накатить сервер с уставновленной джангой и всем что ей по вкусу.
Туториалов применительно к aws - мильярд. Да и почетно пиздеть что имеешь с авс опыт же, лол.
#283 #675407
>>675405
это я к тому что там можно не ебстись с венв, если что поломал - накатываешь свежий сервер ровно за минуту
с:499999
>>675411
#284 #675411
>>675407
Да это хорошо, но разобраться то надо
>>675437
#285 #675424
>>675405
Ага, только нужно будет привязать к твоему амазон акку свою кредитку, и через год они могут начать ее юзать на каждый чих при нагрузке на сервак. спасибо, не надо
>>675436
#286 #675429
Хочу на винду поставить numpy. Через пип фейлится, потому что:

> error: Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat)


Вижуал студия 2015 стоит. Windows 7 64bit, готовые бинарники только на 32 есть, вроде.

Откуда этот файл взять и куда его пихать, честно говоря, искать лень, уж простите.

И чего делать, виндоёбы? Ставить всякие анаконды не хочу, ведь мне просто для проверки кроссплатформенности проги нужно, а не работы. Ну и виртуалки/линукс не предлагать, я макоёб и там всё прекрасно, цель сейчас именно на винде сделать.
#287 #675436
>>675424
купи себе календарь блять.
#288 #675437
>>675411
да там ты быстрее разберешься.
Или может не быстрее, но зато будет реально полезный опыт на который можно ссылаться.
#289 #675460
если есть лист А
то для чего используется выражение А[:] ?
>>675485>>675489
#290 #675485
>>675460
для выборки
>>676206
#291 #675489
>>675460

>если есть лист А


А что? А4?

A[:] слайсит список и возвращает копию (просто слайсит от начала до конца, поэтому получается полная копия), поэтому ты можешь без проблем сделать так:
for e in A[:]: A.pop(0)
Попробуй и посмотри что будет, если убрать индексацию.
>>676206
#292 #675522
>>675394
В математике всё быстро.
В octave всё быстро.
Вот только математика платная, а octave вылетает.
>>675634
#293 #675529
>>675429
ну можешь поставить winpython, он портативный, но всё равно желательно в песочницу.
#294 #675530
>>675429

>И вообще, я нихуя не понимаю, хули требуется visual c++, если большинство пакетов используют поставляемый вместе с питоном gcc (а могли бы и clang)

#295 #675534
Как делают счетчики в кружках? Например, число писем, отобразить на кнопке в красном кружке. Какие-то игрища с CSS и background текста?
>>675600>>675634
#296 #675539
>>675429
Разрядность установленного питона тоже должна быть 32.
Я так постоянно подрывался, пока у меня стоял х64 и х32.
Если х32, то ты не такие же Microsoft Visual C++ 10.0 поставил.
>>675548>>675604
#297 #675548
>>675539
у него 2015, а требует 2010
#298 #675600
>>675534
Лооол, естественно это игрища html+css.
#299 #675604
>>675539

>Разрядность установленного питона тоже должна быть 32.


В смысле тоже? Питон у меня 32, а винда 64. Винду переставить я, очевидно, не могу.

>ты не такие же Microsoft Visual C++ 10.0 поставил.


Как уже сказали, стоит у меня 2015-ая и не для питона, собственно, ставилась.

В общем, проблема решилась: шла б эта винда нахуй. Всем спасибо.
#300 #675628
>>675429

>Хочу на винду поставить numpy.


Троллейбус из буханки.жпг
Поставь уже себе какую-нибудь бубнту в виртуалку и кодь как человек.
#301 #675634
>>675522
Тогда покупай математику или сиди дебагай октав, очевидно же.
>>675534
Большой border-radius. Сам бы уже инспектором глянул.
#302 #675636
>>675628
Чому бы под мингв не поставить всё? Тот же посикс, но под виндой. Зачем советуют сразу виртуалки, они ж тормозят.
273 Кб, 1370x774
#303 #675645
Антуаны не могу обновить pip как пофиксить?
#304 #675663
>>675645

>\Даня


Вот это вот пиздец. Меняй имя учетки на латиницу, или готовься разрабатывать очко еблей с bytes/unicode, и прочими косяками из-за ебучей кириллицы.
>>675667
#305 #675667
>>675663
Особенно понравится переименовывать, если учетка - встроенная admin'нская.
#306 #675671
>>675645
Кстати, это как раз тот самый случай, походу. Другие модули ставятся через pip? Вангую, что нет.
#307 #675675
>>675645
Надо как-то питону прописать твою системную кодировку. Вместо утф8 вин1251.
>>675679
#308 #675679
>>675675
Зачем привыкать к этой хуйне, когда есть человеческая utf-8?
>>675687
#309 #675681
>>675645
Эти превозмогания. Ставь виртуалбокс с убунтой.
>>675683
#310 #675683
>>675681
Отсутствия кириллицы в названии рабочих папок хватит.
#311 #675684
>>675628
Ну ты б хоть спойлер прочёл, что ли.
#312 #675687
>>675679
Не понимаю откуда у core пакаджей вообще проблемы с кодировками. Они же кроссплатформенные. Переименовывания это полумера, питон должен уметь работать под любым окружением.
>>675692
#313 #675692
>>675687
Ну так он пытается декодировать Даню с использованием utf-8, а кодировка Дани - вин1251. Даня не попадает в диапазон ASCII, который общий у всего юникода.
>>675705>>675757
#314 #675705
>>675692
pip вообще никак локаль не задействует, видимо. Жестко заданный utf-8. Но такое не только у него всплывает, и не только у core пакаджей. Так что никакой кириллицы - самая годная мера.
#315 #675718
а нельзя ли просто сменить локаль консоли на utf8 с помощью chcp
>>675726
#316 #675726
>>675718
А проблема разве в консоли? Там именно внутри кода не может декодировать Даню нормально, а не при выводе в консоль.
#317 #675752
>>675405
А что у них с ценами? Во сколько примерно обходится месяц слабого сервера, который на DO дают за пять баксов?
#318 #675753
>>675726
винда хранит имена файлов в юникоде
#319 #675757
>>675726
Ну вот как бы я к тому же. Почему системные вызовы в кроссплатформенном Питоне падают?
>>675692
А собственно почему он пытается найти там утф8? Внутренне у питона юникод, значит он может прочесть строку из любой кодировки. По идее он должен сдетектировать вин1251 и системные вызовы выполнять в ней.
>>675765>>675773
#320 #675763
>>675726
если не в консоли, тогда в конфиге. Может он в семибайтовой кодировке, тогда его надо сконвертить в utf8
>>675767
#321 #675765
>>675757
Ну так ASCII (латиницу) он и прочтет из любой кодировки. Потому что 128 символов совпадают почти везде. В том числе в вин1251.
Юникод это не волшебная НЕХ, которая любые кодировки распознает.
UTF-8 - это и есть кодировки юникодная.
>>675778
#322 #675767
>>675763
*семибитной
#324 #675778
>>675765

>Юникод это не волшебная НЕХ, которая любые кодировки распознает.


>UTF-8 - это и есть кодировки юникодная.


Ок, не распознаёт, но может хранить любой символ. Обычно другие кодировки это подмножество юникода. Внутри питона кстати не используется UTF-8, и даже не UCS, они там своё кастомное хранилище намутили, оно оче место экономит. Но это опять же не отменяет тот факт, что питон внутри себя может использовать любой символ юникода, а значит и прочитать практически любую кодировку используя codecs.

>>675773

>Юникод для чайников


Не тралируй, плис((
>>675789
#325 #675781
print len(var)
print var.lower()

Анон, я не могу понять, нахуй у этих методов разный синтаксис?
#326 #675783
>>675781
len([1,2,3])
len('lol')
len({'a', 8, None})
len({4: 'x', 5: 'b'})

'lol'.lower()

len это не метод, это встроенная функция питона. lower - это уже метод, но только у строк.
>>675791
#327 #675787
Знатоки кодировок itt.
#328 #675789
>>675778
Ну да, могло бы хотя бы вывести кракозябры. Но там, может, после 0xc4 даже кракозябр не нашлось на последовательность.
>>675807
#329 #675791
>>675783
Спасибо.
#330 #675795
>>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.
#331 #675803
>>675795

> Если хочешь язык с нормальным ооп и последовательный


Проиграл с формулировки.
>>675808
#332 #675807
>>675645
Короче вот:

1. Ищи если есть инсталлятор питона посвежее, уже с обновлённым pip.
2. Если такого нет, то возьми и зарепорти баг в pip. Эта хрень должна работать нормально.
3. Если тебе это оче сложно, то забей и работай со старым pip.

>>675789
Да там не в кракозябрах даже дело, а в том что откуда-то в пип приходят байты в win1251, а он предполагает что отовсюду они придут в utf-8. Кракозябры, а точнее квадраты, получаются во время print из-за того что консолька не совладает с некоторыми символами. Тру кракозябры получаются когда закодировали одной кодировкой, а раскодировали другой.

>>675795
Это какое-то мнение недалёкого человека. В питоне с помощью магических методов ты можешь сделать len для чего угодно, в том числе и для сишных объектов. И оно будет везде len(..) и значить будет одно и то же. Так-то никто не мешает расширить класс str и добавить туда свойство length аки в жабаскрипте.
>>675818
#333 #675808
>>675803
Я имею ввиду что в раби всё это метод всегда. В питоне же иногда метод, иногда встроенная функция потому что так сложилось ещё до того как туда ооп завезли)
>>675812
#334 #675810
>>675781
Но ведь len можно передать не только строки.

А .lower() - метод типа str. Нельзя сделать ['a', 'B'].lower, но можно len(['a', 'B']).

Динамическая типизация, тип.
>>675815
16 Кб, 220x220
#335 #675812
>>675808
РАБИ
#336 #675814
>>675795

> 2016


> ооп

#337 #675815
>>675810
Что мешало сделать метод len() у строк и у списков и везде где он возможен?

> Нельзя сделать ['a', 'B'].lower


В нормальном языке можно было бы
array = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
array.map(&:upcase)
или array.map!(&:upcase) чтобы изменить их in-place
#338 #675818
>>675807
Я только что закодировал Даню с cp1251, и раскодировал в UTF-8 b'\xc4\xe0\xed\xff'. Тот же результат.

UnicodeDecodeError: 'utf8' codec can't decode byte 0xc4 in position 0: invalid continuation byte

Никаких кракозябр. В тч, в shell самого питона.
>>675833
#339 #675824
>>675815

>array.map(&:upcase)


В чем разница? Ты ту же самую итерацию сделал. Тут тоже так можно кучей способов.
#340 #675826
>>675815
array = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
[a.upper() for a in array]
array[:] = [a.upper() for a in array]

Зато у нас map это ленивый генератор и мы можем выстраивать длинные цепи из filter/map не выделяя тонны памяти на каждый шаг.
#341 #675829
>>675815
Именно сам тип list не может быть .lower() же, должны быть предметы в нем. Что и делает map.
Считай, аналог всяких
for x in list:
....x.lower()
#342 #675832
>>675815
А если в списке будут цифры? Как уменьшить регистр 2, например?
>>675835>>675836
#343 #675833
>>675818
Ну дык это питон такой хитрый, всё в ascii перегоняет при repr(). Считается что ascii работает везде. Так-то если ты сохранишь эти байты в файл и откроешь блокнотом/браузером/cat, кракозябры таки будут.
>>675844
#344 #675835
>>675832
Или у если у меня в списке вообще неведомая ебаная хуйня типа экземпляров классов?
>>675836
#345 #675836
>>675832
>>675835
Тогда и питон, и руби посоветуют тебе сделать бочку.
#346 #675843
>>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__]

Ящетаю разница налицо. В питоне у нас необходимый минимум, в руби в обычный список вмешано половина стандартной библиотеки.
#346 #675843
>>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__]

Ящетаю разница налицо. В питоне у нас необходимый минимум, в руби в обычный список вмешано половина стандартной библиотеки.
>>675845>>675854
#347 #675844
>>675833
Там замена фейлового декодирования спецсимволами, поди.
#348 #675845
>>675843
Это называется ООП. Эти методы получены путем наследования и миксинов.
Пользователь сам может переопределять или дополнять класс Array если хочет.
>>675853>>675860
#349 #675853
>>675845
У питона столько же методов можно отрыть, они такого плана __x__.
#350 #675854
>>675843
In [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__
>>675860
#351 #675859
Есть какой-то краткая книга по пистону? Если уже знаешь плюсы, жабку. Но не урезанная, чтобы все аспекты языка освещались.
Начинал читать Лутца когда-то, но терпения не хватило, какие-то дела появились и забил.
>>675869
#352 #675860
>>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


Твой аргумент инвалид.
#353 #675869
>>675859
cheatsheet какой-нибудь найди и тутор пройди, дальше по мере возникновения проблем. Считай что ты всё пишешь на stl (list, dict, set, str), а тип элемента для контейнеров variant.
#354 #675899
#355 #676196
Выручай нубаса, бро
Прохожу курсы на курсере и значит вот,

Нужно спарсить из файла эмайл адреса и посчитать самого активного.
Проблема у меня встала в следующем.
Разбиваю файл на слова ['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 words

for word in words:
if word.startswith('From'):
print word[2]
>>676207>>676212
#356 #676206
>>675485
>>675489
да, заебись фича. Странно даже что про нее не вопят на каждом углу в туториалах
>>676209>>676217
27 Кб, 418x285
#357 #676207
>>676196
for w1, w2 in zip(lst, lst[1:]): if w1 == 'From': print(w2)
Но вообще ты как-то через жопу это делаешь.
#358 #676209
>>676206
Имхо list(orig_list) как-то более очевидно чем orig_list[:]
#359 #676212
>>676196
Т.е. было бы логичнее разбивать файл на строки и искать строки, начинающиеся с From
>>676225
#360 #676217
>>676206
Это антипаттерн.
for e in A.copy(): лучше делать.
Слайсинг имеет несколько иную природу и совсем не обязательно копирует объект.
#361 #676219
Лазил, натолкнулся на ебанутую задачку, можно умничать.

a=typle(1,'xyu',[])
a[2]+=['pizda']

что произойдет если эту хуйню выполнить?
>>676234>>676503
#362 #676225
>>676212
Да точно, я просто походу не так условие на англ понял, спасибо, бро.
#363 #676234
>>676219
Ошибка. А вот a[2].append('a') сработает.
>>676238
#364 #676238
>>676234
ты знал или експеримент провел?
>>676242>>676248
#365 #676242
>>676238
Я наталкивался уже на эту фигню в каком-то quiz`е по питоне или какой-то статье типа python wat`с.
Вот здесь наверное https://github.com/cosmologicon/pywat
#366 #676248
>>676238
Вообще понятно почему так. Интерпретатор не знает mutable там объект или immutable и как у него iadd устроен.
>>676272
#367 #676272
>>676248
По мне так не совсем логично, ведь чтобы быть имутабле туплу нужно в себе держать не ссылку на объект а его реальную копию.
Что он соственно и делет в случае
b=[2]
a=[1,b,3]
b=[100]
>>676273>>676284
#368 #676273
>>676272
a=(1,b,3)
#369 #676281
хотя если делать extend и append на лист внутре тупла, то оно даже ошибки не выдает и лист изменяется.
#370 #676284
>>676272
Имутабле сам тупл, но объекты в нем не обязательно.
>>676294
#371 #676294
>>676284
Я вижу что на деле им не запрещено быть мутабле, но тогда сам тупл нихуя не иммутабл(на деле опять же).
Как они собираются чтото там хешировать если тупл фактически изменяется со временем причем хуй это отконтролируешь?
>>676302
10 Кб, 328x151
#372 #676302
>>676294
Никак
>>676459
#373 #676417
Стоит задача - написать облачную CRM/ERP систему с большим количеством связей и около 15 классов сущностей в модели. Также она должна спокойно крутиться под нагрузкой овер 200 клиентов синхронно и не падать. Использование Django/DjangoREST для выполнения данной задачи - гуд, или лучше обмазаться Flask/SQLA и не стрелять себе в ногу? С учетом того, что придется агрегировать данные для статистики и строить сложные многофакторные запросы.
>>676423>>676430
#374 #676423
>>676443
#375 #676430
>>676417
Строить сложные запросы, конечно, лучше алхимией и она поддерживает особенности субд разных.
#376 #676443
>>676423
Odoo крутая штука, но мне не потребуется почти ничего оттуда. Надо решить более частную задачу, требующую кастомного программирования.
#377 #676459
>>676302
ок, не знал.
#378 #676463
Где взять нормальную поддержку юникода в 3.4? Качаю посты с сосача, а ему то то не нравится, то это, что ещё что-нибудь он декодить не может.
>>676476>>676498
#379 #676472
Призываются боги апача/джанги.

заливаю новый проет, вроде как прописываю к нему путь, но мне показывает 403.

смутно понимаю что нужно дать права доступа какомуто пользователю/группе пользователей кроме себя самого, но понятия не имею кому.
#380 #676476
>>676463
помоему это виндапроблемы.
На маке у меня все работает, а на винде никто за десять тредов(давно уже было) не заборол.
Ну кроме очевидных советов, которые нихуя не работают, декоде ютф и прочее.
#381 #676478
Редко использую винду, но ни разу никаких проблем с кодировками не было. Не считая того, что в консоль можно срать только ascii. Но кому нужна эта консоль, когда есть логи?
#382 #676483
>>676472
Нахрена тебе апач? mod_python чтоли используешь? Выкинь это.
>>676487
#383 #676487
>>676483
а? что? развейте мысль
>>676491
#384 #676488
>>676472
Используй связку gunicorn и nginx.
#385 #676491
>>676487
Никто не использует апач в 2016 году. Разве что для php из-за поддержки .htaccess и т.п. но это оффтопик.
Используй wsgi и nginx.
#386 #676493
>>676472

> нужно дать права доступа какому-то пользователю/группе


Возможно ты имеешь в виду пользователя www-data.
>>676496
#387 #676496
>>676493

> www-data.


Это дистро-специфично.
>>676504
#388 #676498
>>676463
https://docs.python.org/3/library/locale.html
В эту сторону копай, давно не ебался с питоном на винде, так что не скажу конкретнее. Ну и да, поставь хотя бы cygwin, побереги психику.
#389 #676503
>>676219
Тупл иммутабельный. Ашибка.
>>676507
#390 #676504
>>676496
Твоя правда.
#391 #676505
Вот кстати есть ещё http://cherokee-project.com/
Интересно кто-нить юзает в продакшене?
Я когда-то лайти использовал и он мне даже больше nginx нравился но у него память текла и разработчики нифига не делали чтобы это исправить.
#392 #676507
>>676503
ой. обосрался. индекс 2 а не 1. Эм. Ну вроде бы списки должно сложить вместе. Но так как это сложение создаёт новый список, тупл не позволит поменять его. А вот append/extend изменяют inplace.
>>676511
#393 #676510
где читать про этот ваш нгих в разрезе почему он теперь тру а апач не тру?
>>676513>>676516
8 Кб, 186x149
#394 #676511
>>676507

> так как это сложение создаёт новый список


Не создает.
+=(ака __iadd__) может вернуть новый объект, а может и старый. В случае списка оно делает extend.
>>676529
#395 #676513
>>676510
nginx асинхронный и позволяет намного больше запросов в секунду обрабатывать пожирая меньше ресурсов. Для статики он намного лучше, а для питона в качестве прокси к wsgi(или там fastcgi) серверу.
#396 #676516
>>676510

Ngnix король статики. Для высоконагруженных проектов можно задрачивать комбинации ngnix + сервер динамики, тесты гуглить.
#397 #676529
хорошо, спрошу иначе.
на кой пес начинающему нубу переходить на нгихн с апача?

мне бы оно хоть както заработало, а не чтобы козырять.
че там реально проще/логичней?
>>676511
только я сделал красивый скриншот, как ты меня опередил
>>676548
33 Кб, 623x317
#398 #676530
Лол блядь.
>>676551>>676557
27 Кб, 647x217
#399 #676546
Пупу туда же. Кстати как вы читаете PyPy и PyPI?
5 Кб, 642x126
#400 #676547
Я так не играю.
#401 #676548
>>676529
По nginx больше всяких статей типа "как поднять проект на django". Легче нагуглить будет если какие-то вопросы.
апач с питоном никто давно не использует.
И да ничего сложного там нет.
>>676558
23 Кб, 623x405
#402 #676551
>>676530
2 часа в пейнте
#403 #676557
>>676530

Баг или фича?
>>676562
#404 #676558
>>676548
ну, окай. Буду смотреть.
#406 #676564
>>676562
Тоже это нагуглил и хотел запостить
>>676567
#407 #676567
>>676564
Frequently asked хех. Ну в любом случае не зная этот нюанс заранее предугадать нельзя. Вангую что этот вопрос любят задать на собеседовании.
>>676569>>676570
#408 #676569
>>676567

> этот вопрос любят задать на собеседовании.


Хуевый вопрос и бессмысленный. Какой смысл это спрашивать на собеседовании?
Вряд ли в реальном коде такое попадается.
>>676571
#409 #676570
>>676567
Так делать никто не будет в реальных программках.
>>676571
#410 #676571
>>676569
Вы написали в своём резюме что знаете питон. Выходит не знаете?

>>676570
Это из разряда ++i + ++i
>>676575
#411 #676575
>>676571
еще пару тредов назад разбирали как себя ведет __del__ в некоторых случаях. Еще пару примеров и можно будет унижать интервьюэров в их собственном HR офисе
>>676584
#412 #676580
Пытаюсь создать пакет в pip. Поясните, куда там пихать непосредственно код, устанавливающий приложение? Я вижу можно через онлайн форму, можно через setup.py, но там только информация о пакете. А куда класть сам код для исполнения при установке?
>>676584
#413 #676584
>>676575
Мне кажется имеет смысл утверждать что знание недокументированных возможностей больше вредит чем помогает. Дзен питона процитировать и должны отъебаться.

>>676580
Попробуй с помощью setup.py для начала собрать дистр. Кажется sdist build. Оно тебе высрет зип файл или колесо, да, я в курсе про них. Если высрало и содержимое этого зипа тебя устраивает, выполняй через тот же setup заливку на pypi.
>>676595
#414 #676595
>>676584
Спасибо, буду тыкаться.
>>676622
#415 #676622
>>676595
Покажи что выкладываешь.
#416 #676682
>>671902 (OP)
Доброй ночи, мужики. Решил быстро скачать все картинки с одного блога. получил html с помощью urllib, но к несчастью осознал, что в блоге используется бесконечная прокрутка, а она не даёт мне спарсить весь бложик. Будь там старый добрый переход по страницам, вопросов бы не было, но тут эта модная жабаскрипт хуета. Можно ли как-то решить проблему?
>>676684>>676697
#417 #676684
>>676682
Извините, поленился нормально погуглить. Уже нашёл решение. Всем споконой ночи, друзья.
>>676750
#418 #676697
>>676682

>бесконечная прокрутка


А потом жалуются что браузеры тормозят и отжирают.
#419 #676750
>>676684
покажи нам, раз нашел
>>676992
#420 #676783
Хочу запилить маленькое веб-приложение, которое будет генерить картинку pillow и отдавать её на страницу в base64. Для такого всякие джанги не нужны, а потому встаёт вопрос - что взять: flask или bottle? Желательно с прицелом на последующее применение.
#421 #676788
Вы что, серьезно? У питона практически неограниченные возможности, он стоит на каждой кофеварке, вы можете делать что угодно, а вы пишете парсеры? Что с вами не так?
#422 #676837
>>676788

>/pr


Ну а что ты хотел?
#423 #676866
Где можно натырить странных слов для капчи?
>>676867
#424 #676867
>>676866
мята мяту мяте мяты
>>676868
#425 #676868
>>676867
Маловато, да и не оригинально.
Я подумывал итальянских каких-нибудь набрать вперемешку с английскими, но их искать и отбирать задолбаешься. Думал, может где базы есть.
>>676869
#426 #676869
>>676868
Сгенерируй. Букв всего 33.
>>676870
#427 #676870
>>676869
Тогда получится просто рандом. Я хочу получить что-то типа старой гугловской капчи с инглипом.
>>676877
#428 #676877
>>676870
У гугла тохда были сканы старых книг
>>676880
#429 #676880
>>676877
Да, я знаю. Но за неимением таковых я хочу попробовать их имитировать каким-либо образом.
>>676882
#430 #676881
>>676788
что ты имеешь ввиду? это потому что линукс встраиваемая во все что угодно ОС?
ньюфаг
#431 #676882
>>676880
Ну и найди шрифт подходящий или прямо со сканов сдери весь алфавит. Потом рандом пару слов. Растяни и поверни их как-нибудь, добавь грязи и искажений.
>>677273
#432 #676930
>>676788
Ну что например? Отвечай, быстро и решительно, плебей.
#433 #676974
А Tkinter пользует кто для gui? Он вроде простой как банка пива
>>676980>>676982
#434 #676980
>>676974
И бесполезный как крышка от этой бутылки. Юзай pyqt/pyside
#435 #676982
>>676974
Все пишут питоновский гуй на gtk через pygobject, а тот кто его не пишет почему-то советует pyqt/pyside
>>677137
#436 #676984
В QT можно вообще через таб выбирать заголовки во всяких View? Например, QTreeWidget, я нихуя не могу найти, как сделать выбор заголовка столбца программно. Вроде же и это Item, но его не выбрать через row же.
>>676985
#437 #676985
>>676984
А именно нужен фокус на нем. Чтобы с помощью клавиатуры делать сортировку столбца, например.
>>676991
#438 #676991
>>676985
Фокус через Tab сразу стартует со списка, никак не реагирует на заголовки. Переходит на кнопки, Аллаха и хз что еще, но не на заголовки.
Никакие setFocusPolicy им тоже не установить.
#439 #676992
>>676750
>>676750
Вот тут предлагают юзать селениум http://stackoverflow.com/questions/12519074/scrape-websites-with-infinite-scrolling
Хотя я решил проблему, просто подобрав значения в адресной сроке.
#440 #677015
Поясните мне вот эту хуйню пожалуйста.
https://ideone.com/R4Oygz
>>677022>>677024
#441 #677022
>>677015
Итерируйся по копии a.
Вообще итерироваться по списку и внутри что-то с ним делать плохая идея.
>>677030
#442 #677024
>>677015
Я так понимаю, удаляя элемент 0, нулевым становится первый элемент, а цикл переходит к следующему и удаляет уже второй элемент, оставляя первый.
>>677025
5 Кб, 170x176
#443 #677025
>>677024
Как-то так и есть, там внутри счетчик где-то.
>>677140
#444 #677030
>>677022
Я то думал, что раз я не на каких-нибудь крестах дрочёных пишу, а как белый человек на питоне, то я могу делать такие простые вещи без танцев с бубном.
Но оказывается, что если я хочу перебрать какой-нибудь список на предмет нежелательных элементов, то мне нельзя удалять их сразу после выявления. Нет, мне нужно сначала в одном цикле всех проверить и составить специальный расстрельный список. А потом уже только вторым перебором по расстрельному списку, очищать ряды партии. Всё через жопу.
>>677035>>677042
#445 #677035
>>677030
Нет, тебе просто нужно написать
for i in a[:]: a.remove(i)

Или вообще использовать filter или что-то типа new_list = [i for i in a if i!=2]
>>677072
#446 #677042
>>677030
Мутабельные структуры данных следует использовать только от безысходности. А это явно не твой случай. Тогда будет тебе все удобно.
>>677072
#447 #677072
>>677035

>a[:]


Охуительная идея создавать каждый раз список на тысячи элементов, только чтобы удалить 2 или 3 из них.
>>677042

> А это явно не твой случай.


Почему это?
>>677076>>677155
#448 #677076
>>677072
Зачем проходиться в цикле по списку, чтобы проверить есть ли там элемент?
Можно сделать
try: lst.remove('el') except ValueError: blabla
Можно
if 'element' in lst: blabla
Можно проходиться с конца, если тебе уж так хочется и тогда этой проблемы не возникнет. (reversed возвращает итератор, а не копию списка)
>>677089
#449 #677089
>>677076

>Зачем проходиться в цикле по списку, чтобы проверить есть ли там элемент?


Во-первых не чтобы провериль, а чтобы удалить его оттуда если нужно.
Во-вторых, например: по экрану летит нарисованный снаряд. Чтобы он мог лететь, нужно добавить его в определённый список, который будет каждый кадр перебираться, чтобы вызвать метод снаряда update. Этот метод рассчитывает текущее положение снаряда, чтобы знать где его рисовать, а в случае если снаряд сталкивается с препятствием этот метод должен обработать последствия: в том числе удалить снаряд из списка.
>>677101>>677155
#451 #677112
>>677101
А это тут зачем?
>>677119>>677121
#452 #677119
>>677112
При том, что зачем рассчитывать положение снаряда, траекторию, ускорение и прочую фигню в цикле на питоне когда для этого есть готовая библиотека?
>>677135
#453 #677121
>>677112
И collision detection там тоже есть.
>>677135
#454 #677135
>>677119
За тем, что снаряд может двигаться не по физическим законам.
>>677121
Я рад за ODE.

Но вопрос не в том как рассчитать физон снаряда и колизии, а в том, что удалять элемент перебираемого списка - вполне насущная задача, но сделать это можно только через заднепроходное отверстие.
>>677143>>677169
#455 #677137
>>676982
Я на pyqt уже штук 10 зделал на фрилансе.
>>677422
#456 #677140
>>677025
AttributeError: 'range' object has no attribute 'remove'
>>677170
18 Кб, 630x630
#457 #677141
Есть сайт с которого мне нужно скачать страницы в виде хтмл, но они весят много
У сайта есть мобильная версия, но только в виде приложений на ios/android. Как можно залезть туда и начать скачивать оттуда?
Советуют указать мобильного клиента в хедере, но я не знаю что это такое и как это делать
Посоветуете что-то?
>>677326
#458 #677143
>>677135

> удалять элемент перебираемого списка - вполне насущная задача


Тебе уже сказали, используй filter и tuple. А теперь уябывай.
>>677158>>678026
sage #459 #677155
>>677072

>Охуительная идея создавать каждый раз список на тысячи элементов, только чтобы удалить 2 или 3 из них.


можно подумать твое удаление 2 или 3 не потребует 2 или 3 копии. список только называется списком, на самом деле это массив.
>>677089

>Чтобы он мог лететь, нужно добавить его в определённый список


да уж, гейдев за 300.
>>677190
#460 #677158
>>677143

>Тебе уже сказали, используй filter и tuple.


Тоесть феирически говнокодить для решения элементарной задачи.
>>677168
#461 #677168
>>677158
Иммутабельный контейнеры и фильтрация - это шаг вперёд по сравнению с "удалением элемента из списка". Возвращайся в кресты лучше.
>>677192
#462 #677169
>>677135
Проходись по списку с конца используя reversed. В любом другом языке была бы такая же проблема и поэтому перебирают массивы с конца.
>>677214
#463 #677170
>>677140
А "print i" тебя не смутило?
Это второй питон. В третьем надо писать a=list(range(10))
>>677188
#464 #677178
А на GUI можно рисовать графики?
>>677181
#465 #677181
>>677178
Можно.
>>677261
#466 #677188
>>677170
В третьем так не надо писать.
>>677197
#467 #677190
>>677155

>можно подумать твое удаление 2 или 3 не потребует 2 или 3 копии. список только называется списком, на самом деле это массив.


Хочешь сказать, что копирование списка сопоставимо по скорости с удалением или добавлением элемента в него?
>>677199
#468 #677192
>>677168

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


Только в твоих влажных фантазиях.
>>677199
#469 #677197
>>677188
Если тебе нужно получить список? Надо.
#470 #677199
>>677190
Настоящий линейный список это deque. Но там доступ не O(1), как и должно быть. Так что ты тут в любом случае в пролёте со своими ко-ко-коптимизациями.
>>677192

> куд-кудах-пок-пок


Ясно.
>>677222>>677311
#471 #677214
>>677169
Вот этот вариант внезапно работает быстрее всего. Спасибо.
#472 #677218
Ещё возможен вариант не удалять элементы из твоего гиганского списка сразу, а помечать как удаленные. Или заносить в другой список на удаление. А потом удалить разом.
>>677226>>677275
#473 #677222
>>677199

> Нет аргументов, поэтому пошли шуточки про петушков.


Ясно.
>>677236
#474 #677226
>>677218
Я так и сделал сначала. Но это костыль.
>>677234>>677275
#475 #677234
>>677226
На какой-нибудь сишечке так и пришлось бы сделать.
И если у тебя там много элементов, это должно быть быстрее.
#476 #677236
>>677222
По-твоему "Только в твоих влажных фантазиях" это аргумент?
>>677262
#477 #677261
>>677181
А это трудно? Можно японскими свечами нарисовать? И прокрутку сделать?
#478 #677262
>>677236
По моему, это указание то, что твоё:

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


Ни на чём не основано, кроме личных предпочтений.
>>677283
33 Кб, 882x56
#479 #677273
>>676882

>шрифт подходящий


>Растяни и поверни их как-нибудь, добавь грязи и искажений


Так и сделал. Просто не хочу полный рандом - будет неинтересно. вообще для "напиши сценарий по капче" пилил
#480 #677275
>>677218
>>677226
В чём проблема удалять с конца?
>>677278
31 Кб, 427x494
#481 #677278
>>677275
Считай ты копируешь списко каждый раз.
#482 #677280
>>677278
Не мог бы ты пояснить "копируешь каждый раз". Что за каждый раз и почему копируешь?
>>677286>>677293
#483 #677283
>>677262
Во-первых, иммутабельные контейнеры удобнее и проще в использовании, ибо не надо думать о сайд эффектах. Во-вторых, пифон не тот язык, где нужно всерьёз думать о производительности этих самых контейнеров. Если тебе не хватает производительности, то скорее всего надо использовать не пифон в этой ситуации.
>>677323
#484 #677284
>>677278
Для удаления в конце думаю константная сложность.
>>677293
#485 #677286
>>677278
>>677280
In [67]: a
Out[67]: [21, 7, 5, 4, 2, 2, 2]

In [68]: id(a)
Out[68]: 58128064

In [69]: a.pop(-4)
Out[69]: 4

In [70]: id(a)
Out[70]: 58128064

In [71]: a
Out[71]: [21, 7, 5, 2, 2, 2]
>>677287>>677298
#486 #677287
#487 #677293
>>677280
Выше написали уже что list в питоне это не список, а массив указателей.
Поиск и удаление элементы из середины - дорогая операция, такая же дорогая как копирование всего списка.
Если элементов много и надо удалить много элементов, то выгоднее завести новый список, куда помещать элементы для удаления и после прохода пересоздать список, исключив эти элементы.
Или даже делать это не после каждого прохода, а реже.
>>677284
Ему не надо удалять именно последний элемент с конца. Ему надо удалять элементы посередине, которые соответствуют определенным критериям.
>>677297
#488 #677295
После удаления ты должен сдвинуть все элементы после удалённого на одну позицию
>>677304
#489 #677297
>>677293
А понял, из-за сдвига индекса. Спасибо.
#490 #677298
>>677286
Причем тут это. Речь о том, что удаление элемента из середины дорогая операция.
>>677302
#491 #677302
>>677298
Мне там сказали, что я список каждый раз копирую.
Почему она должна быть дорогой то? Два указателя всего поправить нужно.
>>677304
#492 #677304
>>677302

> Два указателя всего поправить нужно.


Список в питоне не двусвязный список, а массив.
See >>677295
>>677316
#493 #677311
#494 #677316
>>677304

>а массив


Чистым массивом он точно быть не может, потому что умеет растягиваться и хранить элементы разных типов. Может какое-нибудь сищное подобие вектора указателей, но тогда встаёт вопрос, как он в сях реализован.
>>677318
#495 #677318
>>677316

> хранить элементы разных типов.


Он не хранит элементы разных типов. Он хранит указатели на объекты, они все одного типа.
#496 #677323
>>677283
1) Забивать на производительность, когда можешь сделать хорошо - это признак говнокода.
2) Мутабельные контейнеры бывают удобнее с точки зрения читаемости и поддерживаемости кода. А читаемость и поддерживаемость признак хорошего кода.
>>677353
#497 #677326
>>677141
бамп
>>677329>>677373
#498 #677329
>>677326
А как сайт этот устроен? Оно точно не генерит html на клиенте получая данные через ajax и api какой-нить?
>>677339
#499 #677339
>>677329
Вряд ли, да я и не знаю как это проверить на самом деле.
>>677346
#500 #677346
>>677339
Но в любом случае, тебе же надо на выходе получить html.
Мобильная версия в виде приложения получает данные не в виде html.
>>677348
#501 #677348
>>677346
Значит стоит делать просто как обычно?
Какими способами можно тогда ускорить общение с сервером?
>>677351
#502 #677351
>>677348
Несколько тредов, включить keep-alive.
>>677374
#503 #677353
>>677323
1. Удаление первого элемента списка по скорости на том же уровне, что и создание нового тупла из всех элементов без первого. Единственное для чего стоит использовать мутабельные объекты — экономия памяти.
2. В малой части типа сортировок да. В остальном — нет.
>>677368
#504 #677368
>>677353
Вообще туплы в питоне не задуманы для такого использование. Они скорее как структуры в си или чтобы передать несколько элементов.
И вообще с такими идеями тебе в какой-нить фукнциональный язык.
>>677388
#505 #677373
>>677326
Попробуй вот так. Посмотри что он тебе отдаст.
import requests
url = '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)
>>677380
#506 #677374
>>677351
Для keep-alive использовать urlgrabber?
Я правильно понимаю, что достаточно объявить keep-alive в начале и каждый urlopen будет проходить с его участием?
>>677390
#507 #677380
>>677373
Ничего не выводит, но заканчивается без ошибок
>>677382
#508 #677382
>>677380
r.url тот, что и запрашивал?
>>677386
#509 #677386
#510 #677388
>>677368
С чего это не задуманы? Можешь использовать список, но не изменять его, если религия не позволяет.
>>677396
#511 #677390
>>677374
Используй requests и Session отткуда
http://docs.python-requests.org/en/master/user/advanced/#keep-alive
#512 #677396
>>677388
Потом типичные операции это list.append/list.pop и они быстрые.
>>677420
#513 #677412
А r.text такой же как в браузере? Ты на адрес мобильной версии посылаешь запрос?
#514 #677413
>>676788
Ну же, отвечай!
#515 #677417
>>677412
Он же сказал что мобильная версия сделана не в виде сайта, а в виде приложений.
>>677427
#516 #677420
>>677396
поп(0) О(n) уже картинку скинули. аппенд амортизирован О(1), но если нужно изменить внутренний размер листа, но это долшьше. Для тру О(1) добавления/удаления в начало/конец используются deque, queue
#517 #677422
>>677137

>зделал


За домашнюю работу уже платить стали?
#518 #677426
>>677412
Нет, r.text намного меньше чем в браузере
https://www.diffchecker.com/ghcqvped
Вот здесь разница если важно
#519 #677427
>>677417
Возможно, увидев андройдовский user agent, сервер отдаст ему данные для приложения. В любом случае он должен что-то отдать.
>>677436
#520 #677434
>>677412
через мобильную версию вес html меньше раз в 6
Спасибо
>>677438
#521 #677436
>>677427

> увидев андройдовский user agent, сервер отдаст ему данные для приложения


Обычно смотрят не на user-agent а на другие заголовки. Типа content-type, Accept. Да и url другой.
>>677444
#522 #677438
>>677434
Рад за тебя. Если тебе нужны какие-то конкретные данные, то у них вроде API есть.
>>677439
#523 #677439
>>677438
Но через api у них не возьмешь список всех книг, а именно это мне и нужно:с
>>677446
#524 #677440
Какой максимальный размер (ширина, высота) картинок тут?
#525 #677444
>>677436
Я лишь знаю, что увидев user-agent обычно редиректят на url мобильной версии. Я в этом не силен.
#526 #677446
>>677439
search.books - Find books by title, author, or ISBN.
Думаю, тут есть варианты как извратиться.
>>677448
#527 #677448
>>677446
Да мне кажется, что простой crawler тоже сможет это сделать. Да и опыт написание crawler'a лишним не будет
>>677453
#528 #677453
>>677448
Зачем это, если не секрет?
>>677458>>677553
#529 #677458
>>677453
Скоро интернет вырубят и будет чебурашка.
Надо успеть скачать всё что есть в интернете.
68 Кб, 600x462
#530 #677459
Перекат где?
130 Кб, 3444x56
#531 #677464
Капча из 20 слов
>>677469
#532 #677469
>>677464
Больной ублюдок.
>>677495
#533 #677486
Аноны, кто-нибудь использовал связку angular + django_rest? никак не получается отправить файл на сервер через форму, хотя через api все отправляется
#534 #677495
>>677469
Хотел из 100, но она, говорит, слишком большая. Из 50 тоже не пускает.
>>677498
#535 #677498
>>677495
И что ты собрался с этим чудовищем делать?
>>677502
35 Кб, 1051x56
#536 #677502
>>677498
Роллить во славу Инглипа конечно же! для "напиши сценарий для фильма по капче", я там выше писал Только рандом в словах ещё не завёз, но сервис уже работает.
#537 #677553
>>677453
Прости, уходил
Это проект на полгода на первом курсе, рекомендательную систему нужно построить
#538 #677561
Что значит

10% used (10.39s of your 100 second CPU allowance)
Allowance resets in 6 hours, 53 minutes
?
Что после того, как я попользуюсь процом 100 секунд, то после этого не смогу, пока таймер не сбросится?
33 Кб, 604x474
#539 #677693
>>677924
32 Кб, 604x474
#540 #677711
#541 #677890
218 Кб, 1000x750
#542 #677924
#543 #678026
>>677143

>Тебе уже сказали, используй filter и tuple.


Я тут почитал ваш спор и у меня к тебе вопрос: а можешь показать пример, как исползовать тупл в ситуациях, когда нужно удалять/добавлять элементы в список?
Предположим, у меня есть список студентов Гарварда (20к+), нужно убрать оттуда тех, кто уже дал взятку. Однако, если деньги во взятке оказались фальшивыми, студента нужно будет туда вернуть.
Со списками всё элементарно:
#получаем эвент "дал взятку" с аргументом штудента
not_bribed.remove(student)
bribed.append(student)
#получаем эвент, что взятка оказалась фальшивой
bribed.remove(student)
not_bribed.append(student)

student.bribe /= 0.5 # в качестве штрафа удваиваем необходимую взятку*

А как быть с туплами? Программа у нас однотрендовая с эвентлупом, никаких одновременных обращений к списками не будет.
>>678030>>678100
#544 #678030
>>678026
Разумеется, информация должна быть постоянно самая свежая, поэтому держать какой-то дополнительный список "на удаление" глупо, ведь ректор может попросить список имён для "домашнего визита" в любое время.
#545 #678100
>>678026
Всё просто
bribed = bribed + (student,)
i = not_bribed.index(student)
not_bribed = not_bribed[:i] + not_bribed[i + 1:]
Ты придумал данную задачу так, что здесь изначально два мутабельных контейнера и предлагаешь их заменить иммутабельными. Гораздо лучше в класс студент добавить свойство "давал взятку". Тогда нужен один тупл и всё.
>>678129
#546 #678129
>>678100

>Ты придумал данную задачу так


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

А в чём в итоге плюс-то этого постоянного пересоздания тупла вместо изменения списка? По скорости, как ты и говорил, разницы нет ( http://ideone.com/qXxwWC ), даже если remove заменить на поиск индекса и последующий pop. От случайных изменений можно защититься тем, чтобы не писать код, который изменяет.

То есть, в относительно небольшом приложении, какая может быть объективная причина использовать иммутабл и эти плюсы и слайсы, вместо очевидных и красивых append/remove?
>>678139
#547 #678139
>>678129
Появится многопоточность, а она скорее всего появится. И мутабельность сыграет злую шутку.
В остальном, да, либо использовать эти списки, либо, как я уже выше написал, иметь один тупл со студентами и поле "взяточничества" студента.
#548 #678618
Перекатываемся
https://2ch.hk/pr/res/677889.html (М)
Тред утонул или удален.
Это копия, сохраненная 28 марта 2016 года.

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

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