Вы видите копию треда, сохраненную 9 августа 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Использую некий покупной софт, который подгружает кучу пайтоновских скриптов. Внезапно обнаружил, что программист, который эти скрипты писал -- альтернативно одаренный. Он создает переменные с именами, которые зарезервированы за встроенными пайтоновскими функциями.
Т.е. есть, к примеру, функция dir(), а этот чувак создает переменную dir и начинает с ней работать.
Есть ли какой-нибудь скрипт, который проверит все остальные файлы на предмет подобных траблов?
Он импортирует эти переменные прямо в софт что ли? Так-то ничего страшного не должно произойти в скрипте, если он сам не пытается там же использовать dir по назначению.
У каждого питоновского модуля своя область видимости. Можешь быть спокоен за чужой говнокод, тебя это не касается.
Пространства имён — отличная штука! Будем делать их побольше!
Загрузочные скрипты могут импортироваться в программу - скаем, там переопределили половину билтинов, а дальше сделали фром щит иморт zuvozidochka в теле скриптового модуля. Потому и уточнил - понимает ли анон точно, что делают переопределенные билтины или просто читал, что это бэдстайл (а это бэдстайл).
Я не могу быть спокоен. Потому что у меня уже возникли проблемы из-за чужого говнокода.
Софт написан на с++. На пайтоне сделана подсистема для скриптинга. Эти скрипты при загрузке меняют интерфейс, создают всякие панельки, делают еще кучу всего. Все это происходит в фоновом режиме.
Когда же я начинаю работать в скриптовой консоли, то выясняется, что функция dir() теперь выдает ошибку.
Скрипты это не написаны изначально, как красивые пайтоновские. А выглядят как программы на Фортране. Куча for-loop и последовательностей команд. Никакие классы, модули и функции не создаются вовсе.
Пиши в суппорт.
"It doesn't make sense to privilege the built in functions like len, str, and so on, because that would require a core language change."
>Скрипты это не написаны изначально, как красивые пайтоновские. А выглядят как программы на Фортране.
> Софт написан на с++
> Скрипты это не написаны изначально, как красивые пайтоновские. А выглядят как программы на Фортране
Налицо работа крестодауна!
> del dir() сделай
Мне это не нужно делать -- в косячном скрипте поменял имя переменной на нормальное. Теперь там все хорошо.
Но сколько еще таких мин могло остаться. Скриптов дохуя. Часть из них идет в комплекте с программой от разработчика, часть как плагины от других людей.
Здорово, но я всё же предпочту связку стабильных и привычных инструментов. В matplot есть хороший просмотрщик, браузер хорошо отобразит любую таблицу и формулы. Вот ещё интересная вещь нашлась: http://mpld3.github.io/index.html matplotlib с просмотрщиком внутри браузерной страницы.
Зачем нужен gevent в 3-м питоне, асинхронность в котором из коробки?
http://pastebin.com/0DgZdKF8
Мне важна лишь сама работа кода и какие-то заметки по упрощению или ещё чему.
Ты сравниваешь с переменными, а не со стрингами. Если бы ты назвал их по-разному, то понял бы в чем проблема. А вот у тебя стринги и переменные называются одинаково, и ошибки интерпретации нет.
http://pastebin.com/Un72yvkP
Я просто заменил резко на пастебине, не запускал у себя, так как придётся разобраться заодно в твоем коде. Но если не сработает/не поймёшь - напиши, разберусь.
>input
>reads a line from input, converts it to a string and returns that
https://www.youtube.com/watch?v=wf-BqAjZb8M
Не знал, что инпут сразу в стринг конвертирует. Как бы логично, но я не думал об этом, лол. Спасибо, теперь всё работает.
Тип кривой
6.attack = 1
7.health = 10
это int, целочисленный тип
20. choice = str(input("Heal,...
Чойз это строка. Как строку с числом сравнить? в 20 строке принимай число, и эксепшн запили, для крутости.
ох йобана...
Может, лучше с жс начать? При твоём инпуте (средневакуумный веб) - ты уже имеешь некоторые знания скриптовых языков, а вот основу средневакуумного веба ещё не трогал.
Нет. По мне так это параша какая-то.(Извиняюсь если кого-то обидел)
Мне кажется что код на жс получается громоздкий и не очень логичный - сужу по некоторым примерам на гитхабе.
Почему считаешь что лучше с жс начать?
У меня крепкий инпут - лет с 13 начал ковырять скрипты на пхп, но ничего серьезного не достиг с того времени. Понимание MVC, OOP(чуть больше средневакуумного уровня), с HTML/CSS тоже естественно знаком. Примерно такой инпут.
>средневакуумного веба
Кстати, что имеешь ввиду под этим?
>Кстати, что имеешь ввиду под этим?
Средневакуумный, потому что ты не написал, чем хочешь заниматься точно. Веб без жс если и возможен, но при этом ты жс знать-то должен, особенно в комплект с хтмл/цсс.
>По мне так это параша какая-то.
Нахуя ты в веб-то лезешь, в таком случае? (Ничего личного.)
Делай туториал на сайте django с голосовалками.
>Средневакуумный, потому что ты не написал, чем хочешь заниматься точно. Веб без жс если и возможен, но при этом ты жс знать-то должен, особенно в комплект с хтмл/цсс.
По бекенду, в основном. Мне вундервафли в жс не нужны, разве что для придания динамичности, а это я думаю смогу сделать в случае необходимости.
>Нахуя ты в веб-то лезешь, в таком случае? (Ничего личного.)
Потому что питон. (Без обид.)
Что такого сложного в том, чтобы выучить язык? Я, конечно, далёк от веба, но даже из моего "мухосранска" слышал, что веб переплетён с жсом тесно, и знание это хотя бы просто повысит квалификацию программиста.
Чем-то напоминает людей, которые хотят чего-то достичь, достать каких-то знаний, имеют мотивацию, интерес, готовы носом землю рыть, но с одним условием - DAITE RUSEK PLZ.
Хочу так -./stuff.py --show --do-something --show
>show: 0
>doing stuff..
>show: 1
Можно конечно набрать количество True аргументов в args и сделать for range(len(trueArgs), но это костыльно как-то.
>Что такого сложного в том, чтобы выучить язык?
>слышал, что веб переплетён с жсом тесно
>слышал
>CoffeeScript
>Python thread
>\0
Вопрос был о вкатывании в веб-разработку на питоне и жс мне нужен, лучше скажите какие материалы можете посоветовать на эту тему.
Прочитал прежде чем спрашивать, ничего нужного не увидел. Покажи, где и что?
PEP8 курни. Переменные называются в режиме мелкобуквенного хуйла через андерскор - true_args. Скажи подробней, что ты хочешь сделать и что именно сейчас работает не так как нужно?
>>506839
>\0
Что это? Терминатор? Я нихуя не посоветовал, как русский только поучил жизни и дал бесплатный совет. Прости.
1)Junior
2)Mid
3)Senior
Какие задачи решает каждый из них? Опиши подробнее, будь так добр.
Все в контексте django/flask/tornado/etc.
А мне нравится - очень питонично. Вот у жаваскриптеров - псевдофак из вопросов для людей непонятно что делающих в /pr/, которые никому не интересны и которые никто не задавал. Вот кстати оп второго треда мало того что слепой, так ещё и чухан-кун, склонный раздувать шапку левым говном.
Я хочу чтобы аргументы можно было повторять.
Например - ./stuff.py --show --do-something --show
>show: 0
>doing stuff..
>show: 1
Если готовить argparse по докам и туториалу (https://docs.python.org/3/howto/argparse.html), то в --show --do-something --show отработают только первые две опции, а третья не отработает, потому что мы ее уже "прошли".
Вот пример - https://ideone.com/IqbxyL
Запускаем, ./stuff.py --show --do-stuff --show
show
doing stuff
>true_args
ok
Ну пиздец, Computer Science degree и минимальный навык python. Нужно писать сайты.
Пердак просто рванул. Бесплатное печенье дают, блять.
Сорцы не смотрел, но эта штука итератор не использует разве? Сделай его копию, а не копию листа, и еще раз пройдись.
Она работает через неймспейсы. И для булевых аргументов получается такая хуйня, сколько аргумент не повторяй:
print(args)
>Namespace(do_stuff=True, show=True)
Можно сделать action='append', и тогда будет считать количество. Но аргументы перестают быть булевыми, и приходится указывать позиционные аргументы:
./stuff.py --show 1 --do-stuff --show 1 --show 1
>Namespace(do_stuff=True, show=['1', '1', '1'])
А позиционные аргументы мне нахуй не нужны.
У меня фрустрация, короче.
Почему у меня на пике минимальное значение не считывается?
*кофе не веб
Всплыла еще одна проблема. argparse не умеет сохранять порядок, в котором аргументы были даны. Пиздец.
>docopt
Ок.
Но блджд, почему argparse такое убожество? Три модуля в питоне для этих дел не считая sys.argv, один низкоуровневый, один устаревший, и один говно.
Я ваш кофескрипт в вакансиях вижу только в качестве legacy 2-летней давности. Хайп прошел, юзеры-синиоры подохуели от подводных камней и дропнули это говно. Хотя прозреваю будущее кофе на нодке (потому что бэкэндеры это те еще говноеды, знаю по себе).
> подводных камней
Ай да какие там камни. Он 1-к-1 транслируется практически, просто слегка улучшенный синтаксис для жаваскрипта, не более. Принципиальных проблем по сравнению с ЖС у него не может быть в принципе, потому что он не делает ничего принципиально нового.
Снайпер что ли? Моя область - это область-мухосранск, 15 человек на всю страну занимаются этим говном. Если я её хотя бы назову, это даже сорт оф дианон будет. Но не веб. Алсо, я не считаю, что лезть в отрасль на хипстерские инструменты и при этом отказываться учить ключевые - это умно. Жс ты можешь не любить, но, бля, выучи его, чтобы не творить полную хуйню, когда будешь соприкасаться с жсерами, если даже сам не будешь жсить. А так, имхо, это банальное невежество, и такому подходу лишь можно пожелать УДАЧИ.
>>506901
А-А-А-АСЬ?
Таки плюнул на этот argparse и взял родной getopt из батареек. Кода в десять раз меньше, а функциональность больше. Все что нужно реализуется с пол-пинка. Вот тебе и инновации.
https://docs.python.org/3.4/library/argparse.html#action
По поводу повтора аргументов я извернулся так:
parser.add_argument("--show", action='append_const', const=True)
С --show --show получится
>Namespace(do_stuff=True, show=[True, True])
Но потом понял что еще нужно сохранять порядок, в котором 'эти аргументы даны. argparse опять этого не умеет, а с наследованием и кастомным action получается больно дохуя кода. В гугле народ для этой темы вообще портянки воротит. Написал версию с getopt и она выиграла по лаконичности. Такие дела.
Или для этого надо какой-нибудь фреймворк использовать? Или как-то на JS самому костыль сделать? Чт-то я завис.
используй ajax:
подключи jquery в html, и обработай клик по картинке с классом .clickable_img:
$('.clickable_img').click(function(){
$.ajax({
type: "POST",
url: "/proceed_image_click_python_script",
async: true,
data: {img_src: $(this).attr("src")}
});
return false;
});
в обработчике url "/proceed_image_click_python_script" обработай POST запрос в который должен передаться параметр img_src. в джанге это делается так: img_src = request.POST.get('img_src', None)
Благодарю.
Да я с вебом почти не имел дел пока. Но тут вдруг решил написать что-то вроде браузерного вьювера для своих картинок. Подумал, что полезно будет попытаться сделать всё это на "чистом" Питоне.
ну дак почитай хотя бы сначала, туториал сделай какой-нибудь... чо ленивый то такой?
Объясню на примере. Допустим есть какой-нибудь класс для экспорта чего-нибудь в csv и нужно, чтобы при первой записи были также записаны заголовки таблицы, при этом написать заголовки заранее не при вызове функции нельзя, потому что они основываются на том, что придёт на первую запись. И в __init__ у этого класса объявляется что-то типа self.include_headers = True. Также у этого класса есть основная функция write, которая, собственно, и пишет чего-то там в csv. Как-то обычно оно так:
[code lang="python"]
def write(self, item):
if self.include_headers:
self.include_headers = False
self.write_headers(item)
self.writer.writerow(item)
[/code]
Т.е. постоянно чекается это бесполезное условие. Я же обычно делаю вот так:
[code lang="python"]
def __init__(self, ...):
...
self.write = self.write_headers_with_item
def write_headers_with_item(self, item):
self.write = self.write_item
self.writer.writerow(item.headers)
self.write_item(item)
def write_item(self, item):
self.writer.writerow(item)
[/code]
Насколько я мудак, что так делаю, или всё нормально?
Объясню на примере. Допустим есть какой-нибудь класс для экспорта чего-нибудь в csv и нужно, чтобы при первой записи были также записаны заголовки таблицы, при этом написать заголовки заранее не при вызове функции нельзя, потому что они основываются на том, что придёт на первую запись. И в __init__ у этого класса объявляется что-то типа self.include_headers = True. Также у этого класса есть основная функция write, которая, собственно, и пишет чего-то там в csv. Как-то обычно оно так:
[code lang="python"]
def write(self, item):
if self.include_headers:
self.include_headers = False
self.write_headers(item)
self.writer.writerow(item)
[/code]
Т.е. постоянно чекается это бесполезное условие. Я же обычно делаю вот так:
[code lang="python"]
def __init__(self, ...):
...
self.write = self.write_headers_with_item
def write_headers_with_item(self, item):
self.write = self.write_item
self.writer.writerow(item.headers)
self.write_item(item)
def write_item(self, item):
self.writer.writerow(item)
[/code]
Насколько я мудак, что так делаю, или всё нормально?
Это точно по-мудацки. Уж лучше с ифом.
Гугли python numpy binary.
Вопрос по оформлению.
Например, есть цикл внутри функции, который пробегает по массиву и собирает из него элементы по условию, которое является параметром функции. При это параметр включает условие, если он есть, и отключает если его нет. Т.е. объекты из массива все равно надо собирать.
Как лучше?
Так:
[CODE]for i in lines:
if NO_RECTANGLES and round(i.x0) == round(i.x1):
lines_y.append(round(i.y0))
else:
lines_y.append(round(i.y0))[/CODE]
Читаемо, но с повторением.
Или:
[CODE]for i in lines:
if (NO_RECTANGLES and round(i.x0) == round(i.x1)) or (not NO_RECTANGLES):
lines_y.append(round(i.y0))[/CODE]
Менее читаемо, зато без повторения.
Так:
http://pastebin.com/sxYJs4Aw
fl = open("looptext.txt", "r")
count = 0
while count != 1000:
----for i in fl:
--------print(i, end="")
----count +=1
----fl.seek(0)
----#print(count)
fl.close()
Написал. Предлагало обновить пип и выдало какой-то невразумительный эксепшен.
Пытался обновить пип, тот себя скачал, удалил старого себя, выдал эксепшен и теперь pip "не является внутренней или внешней командой, исполняемой программой или пакетным файлом".
Не нужно было.
C:\Python34\Scripts
Добавь в Path этот путь снова.
>выдало какой-то невразумительный эксепшен
Это бесполезная информация.
А также нампай есть в виде традиционных инсталлеров. Но пип почини.
А если такое, например:
[CODE]if (gap and side='left' and i.x1 < gap) or (gap and side='right' and i.x1 > gap) or (not gap)[/CODE]
Смотрите какую хуйню запостил. Надо типо этого? Есть варианты получше?
http://pastebin.com/kzF2kwq4
Ты ЗАЕБАЛ меня хуесос, я твою мать в сраку ЕБАЛ
Это хобби.
Я могу загрузить всё что есть в папке, но тогда теряются дополнительные параметры типа якоря, альфы и тд, которые забиваются ручками и ни как из самой картинки не вытекают. Какие есть варианты?
Тоже самое
if not gap or side=="left" and i.x1 < gap or side=="right" and i.x1 > gap
Но это уже длинновато.
>>507342
http://pastebin.com/3h9BsFTM
Пришло время переустанавливать ПУТХОН.
Только что проапгрейдил у себя на 8.1 - увы, проапгрейдилось успешно, ничем помочь больше не могу.
А что насчет изначального вопроса?
https://ideone.com/SDeiDy
>>507376
[CODE]
from itertools import cycle
for l in cycle(open('file.txt')):
...
[/CODE]
Если ты не хотел загружать весь файл в память, то в момент чтения в лист именно это и происходит, что протиоворечит идее итераторов. Файл - сам по себе итератор, если хочешь работать с итератором, а не листом - не используй ридлайнс. Скомбинируй свой способ с тем куном, сделав что-то такое:
http://pastebin.com/EUEHWfZz
for делает этот трай-экцепт за тебя (то есть ловит СтопИтерейшн экспешн и выходит из лупа). Так что код того куна самый питоничный.
Да, заебись, забыл про cycle.
>Учишь с третьего года питон, очень любишь это дело.
>Есть несколько простеньких проектов для резюме.
>Берут на работу благодаря тестовому заданию на джанге и фронту.
>Дают задание писать на джс для мобилок. cordova phonegap ionic, вот это дерьмо все
Скачал Qt - итерфейс создал , а куда код вставлять - не пойму.
Поскажите направление.
В общем случае - вставлять в action на соответствующих виджетах, очевидно же.
https://wiki.qt.io/PySide_Tutorials
Лол. Ну, значит, это КАРМА - расплачиваешься за то, что такое умалишенное ебанько.
Нужно вытянуть последней строчкой программы аббревиатуру страны, две большие буквы. Питон ругается на предпоследнюю строчку typeError: list indices must be integers, not str
import urllib
import json
serviceurl = 'http://maps.googleapis.com/maps/api/geocode/json?'
while True:
address = raw_input('Enter location: ')
if len(address) < 1 : break
url = serviceurl + urllib.urlencode({'sensor':'false', 'address': address})
uh = urllib.urlopen(url)
data = uh.read()
try: js = json.loads(str(data))
except: js = None
if 'status' not in js or js['status'] != 'OK':
print '==== Failure To Retrieve ===='
print data
continue
print json.dumps(js, indent=4)
lat = js["results"][0]["geometry"]["location"]["lat"]
lng = js["results"][0]["geometry"]["location"]["lng"]
print 'lat',lat,'lng',lng
shortlock = js["results"][0]["address_components"]["short_name"]
print shortlock
Нужно вытянуть последней строчкой программы аббревиатуру страны, две большие буквы. Питон ругается на предпоследнюю строчку typeError: list indices must be integers, not str
import urllib
import json
serviceurl = 'http://maps.googleapis.com/maps/api/geocode/json?'
while True:
address = raw_input('Enter location: ')
if len(address) < 1 : break
url = serviceurl + urllib.urlencode({'sensor':'false', 'address': address})
uh = urllib.urlopen(url)
data = uh.read()
try: js = json.loads(str(data))
except: js = None
if 'status' not in js or js['status'] != 'OK':
print '==== Failure To Retrieve ===='
print data
continue
print json.dumps(js, indent=4)
lat = js["results"][0]["geometry"]["location"]["lat"]
lng = js["results"][0]["geometry"]["location"]["lng"]
print 'lat',lat,'lng',lng
shortlock = js["results"][0]["address_components"]["short_name"]
print shortlock
js["results"][0]["address_components"]
Это лист диктов. Шортнейм в этих диктах есть, так что тебе просто остается взять нужный дикт. Например:
js["results"][0]["address_components"][0]["short_name"]
Мухосранскнейм.
заверни индекс списка в int(). В ошибке же все написано
Спасибо, почти так. Но разные города выдают разное количество диктов в ["address_components"], соответственно в первом может быть само название города а не страна. Аббревиатура всегда в последнем.
А есть варианты с каким-то триальным периодом, чтобы хоть протестить подходит мне или нет?
AWS Free Tier - бесплатно на год.
Подлянка в том, что им надо указывать кредитку, на которой лежит энная сумма. И с тебя могут снять за превышение ограничений.
на самом деле я хотел триалом попользоваться и забить, мне всего на день-два нужно.
Нашёл вот это. В чём подвох? Один пенни и всё? Так не бывает же.
1) Зачем нужен with? если и без него файл нормально открывается и закрывается?
2) Почему после прочтения файла тот становится пустым?
Как ты получишь значения со словаря через индекс, если там доступ по ключу, зелень
1. Открытый файл нужно обязательно закрыть. С with его закроет автоматически. with - это кейворд, который можно использовать, предварительно реализовав соответствующие методы в своем классе. Означает "всё что ниже насерет - вычистить по окончании вилкой из памяти".
2. Не файла, а после окончания любого итератора. Файл - это итератор, итераторы не хранят в памяти всё содержимое итерабла, но проитерироваться по ним можно лишь один раз, если не дописывать какой-то специальный функционал. В случае с файлом этот функционал дописан, ты можешь использовать метод seek(), который может установить позицию чтения в произвольное место, например в ноль, после чего ты сможешь прочитать файл снова с самого начала.
А речь о листе:
>брать значение из последнего дикта
В данном случае - нужно взять последний итем из листа. Итемы в этом листе - отдельные дикты.
Воу-воу, сколько я интересного из этой ссылки узнал.
Есть XOR X ^ Y.
Есть инверсия ~X.
Думал запилить подсчёт CRC4, но ничего не выходит.
https://docs.python.org/3/library/multiprocessing.html?highlight=multiprocessing#module-multiprocessing
https://docs.python.org/3/library/threading.html?highlight=threading#module-threading
А вообще для "граббера" лучше подходит https://docs.python.org/3/library/asyncio.html?highlight=asyncio#module-asyncio
Благодарю.
Для I/O операций процессы не нужны, потоки нормально работают.
Самый простой пример:
from multiprocessing.dummy import Pool
pool = Pool(100)
result = pool.map(download_func, list_of_urls)
Всё, обрабатывается параллельно.
import requests
from bs4 import BeautifulSoup
import operator
def start (url):
word_list = []
source_code = requests.get(url).text
soup = BeautifulSoup(source_code)
for post_text in soup.findAll('a',{'class':'index_singleListingTitles'}):
content = post_text.string
words = content.lower().split()
for each_word in words:
print (each_word)
clean_up_list(word_list)
def clean_up_list(word_list):
clean_word_list = []
for word in word_list:
symbols = "!@#$%^&*\"()_?.,><;'+|}{][]-=;'"
for i in range (0,len(symbols)):
word = word.replace(symbols,"")
if len(word) > 0:
print(word)
clean_word_list.append(word)
create_dictionary(clean_word_list)
def create_dictionary(clean_word_list):
word_count = {}
for word in clean_word_list:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
for key, value in sorted(word_count.items(), key=operator.itemgetter(1)):
print (key,value)
start('https://buckysroom.org/tops.php?type=text&period=this-month')
import requests
from bs4 import BeautifulSoup
import operator
def start (url):
word_list = []
source_code = requests.get(url).text
soup = BeautifulSoup(source_code)
for post_text in soup.findAll('a',{'class':'index_singleListingTitles'}):
content = post_text.string
words = content.lower().split()
for each_word in words:
print (each_word)
clean_up_list(word_list)
def clean_up_list(word_list):
clean_word_list = []
for word in word_list:
symbols = "!@#$%^&*\"()_?.,><;'+|}{][]-=;'"
for i in range (0,len(symbols)):
word = word.replace(symbols,"")
if len(word) > 0:
print(word)
clean_word_list.append(word)
create_dictionary(clean_word_list)
def create_dictionary(clean_word_list):
word_count = {}
for word in clean_word_list:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
for key, value in sorted(word_count.items(), key=operator.itemgetter(1)):
print (key,value)
start('https://buckysroom.org/tops.php?type=text&period=this-month')
Не сорри, а если хочешь, чтобы эту хуйню прочитали - запости на пастебин/идеон/куда хочешь.
А что еще, корутины?
а он вообще работает?
есть более элегантный способ удалить всю сперму из слова. ищи сам.
есть более элегантный способ подсчитать слова в словаре, тебе нужен defaultdict. там нет смысла проверять есть ли ключ в словаре или нет, ставишь значение по умолчанию на ноль, а потом просто инкриминируешь.
у тебя ебанутые названия фунций, они не отображают сути происходящего.
ссылка пизданулась походу. код работает.анон - искал и спрашивал и на тостере и на старковефлоу. и гуглил. слабо с поисками. меня интересует как эту хуйню сделать в ооп.
у меня не работает. твой сайт лежит.
что ты там хочешь в ооп перевести? у тебя в голове есть какая-то концепция объектов или мне за тебя придумывать?
У меня работает. Зайди через проксю/анонимайзер.
Удваиваю, что за объект ты хочешь, почему просто не взять и не объявить класс, убрав все эти функции под него, добавив сельфы?
ты уже обосрался в функции start, всей последующей цепочке твоих функций ты передаёшь пустой список (и они ничего не делают).
так что пополняй там свой word_list словами.
А, так ты зелень. Ну всё просто - нужно сначала пройти базовый туториал по классам, после чего у тебя всё получится, лол. Я быстро заменил, не читая твой код, так что не уповай на то, что это рабочий образец. Но выглядеть оно может как-то так: http://pastebin.com/Hdwu0RLE
И сразу тебе две подзадачи, если интересно:
>clean_up_list()
Перепиши, используя модуль re.
https://docs.python.org/3.4/library/re.html#re.sub
>create_dictionary()
Перепиши, используя collections.Counter:
https://docs.python.org/3.4/library/collections.html#collections.Counter.most_common
спасибо!!!!!
сейчас займусь подзадачами!
и скажите свое мнение на счет туториала!
http://pastebin.com/t1wpbCKh
Ну, почитал часть - почему нет. Как-то слишком хардкорно он там взял, к пункту 9 уже Кнут, например. Ты на эту пасту забьёшь всё равно, так как эта паста на 4-5 лет учения, а через год тебе она сама по себе станет ни к чему - какой дурак станет планировать 5 лет своей жизни по пасте с харкача (если это не завтра_ищешь_книжку.txt).
но все более менее уложено. жаль с криптографии ничего нет. и мотивация есть - почему бы и не попробовать. - знаете какие то книги лучше чем в пасте - скидывайте.
(сорри за офф топ)
> мотивация
> книги
> скидывайте
придумай себе полезный проект,
реализуй его. забудь про книги,
от них нет толку.
>>> a={'a':'b','c':'d'}
>>> b=HttpResponse('test')
>>> a.update(csrf(b))
>>> a
{'a': 'b', 'c': 'd', u'csrf_token': <django.utils.functional.__proxy__ object at 0x7f459b408750>}
вот этого u'csrf_to......' быть не должно. Как сделать
{'a': 'b', 'c': 'd', 'csrf_token': <django.utils.functional.__proxy__ object at 0x7f459b408750>}
?
Хотя бы книгу и раздел дайте, я кодировку специально напотом оставил, как знатный геморрой.
Не совсем понимаю твой вопрос. Ты предлагаешь мне использовать третий питон, как средство решения ебли с кодировкой?
В любом случае, я уже добился отсутствия u' и это в решении моей проблемы не помогло.
Я уже истрахался весь с этим говном. Помогите хоть кто-нибудь.
Суть в вебм. Грызу джангу, подошел к формам, учебник по версии 1.4, автор заверял в самом начале про АБРАТНУЮ САВМИСТИМАСТЬ В ПРИДЕЛАХ ВЕРСИИ 1.#.# сука. Соответственно ВНЕЗАПНО при отправке пост-запроса появился какой-то CSRF-ключ, который обязательно надо передавать. Если его вообще отключить - все разваливается. СОВМЕСТИМОСТЬ, мать её.
Я, конечно, понимаю, что самостоятельный траблшутинг развивает понимание предмета, но ебал я в рот так по 20 страниц ползти в день. Что интересно, на пиратбее я актуальных гайдов по джанге не нашел. Это говно реально полная хуйня, все все.
>Ты предлагаешь мне использовать третий питон, как средство решения ебли с кодировкой?
Да.
другойанон
> Соответственно ВНЕЗАПНО при отправке пост-запроса появился какой-то CSRF-ключ, который обязательно надо передавать
Это защита от CSRF уязвимости. Могу предложить урок про нее: https://github.com/codedokode/pasta/blob/master/security/xsrf.md
Своим постом ты лишь десмонстрируешь невежество и нежелание разбираться и читать документацию.
Я читал и гуглил и разбирался.
Вот в доках на мою версию написано
https://docs.djangoproject.com/en/1.7/ref/contrib/csrf/
дескать, сначала в settings добавляем
>django.middleware.csrf.CsrfViewMiddleware (да он и так по-дефолту был добавлен)
потом в форму шаблона добаввляем этот вот
>{% csrf_token %}
потом в views импортируем
>from django.core.context_processors import csrf
и оборачиваем в него контекст
>return render_to_response("a_template.html", {'some_value_1':'some_value_1','some_value_2':'some_value_2'}.update(csrf(request)))
Только что-то не взлетает. Я измучился.
Ну так изучи код страницы и посмотри инспектором в браузере что передается по сети в запросе/ответе и посмотри в чем причина и чего не хватает. А не копируй строчки в надежде что заработает.
Похоже что нет. Тк решил проблему без пересадки на прыщи и смены версии питона.
молодец, возьми пирожок с полки.
libavcodec. Числодробилку расширением на си сделай. Остальные гуи можешь и на питоне.
https://github.com/daineal/my-learning/blob/master/game%20of%20random%20numbers
gtk. Только гуи, ничего лишнего.
Ты хоть бы подсветку кода запилил. Расширение файлу сделал бы.
count1, count2 - хуёвые имена переменных. min_value, max_value - лучше.
На кой чёрт тебе делать pop из списка? На кой тебе вообще держать такой список? Циклы какие-то с невнятным перебором. Можно же было просто назначить новые min/max_value и спрашивать в новом диапазоне.
tkinter? PySide? Kivy?
>>508333
Школьник? Вкатываешься в программирование с Питона? Правильный выбор. Советую "An Introduction to Interactive Programming in Python" - обе части. Пепвосьмеца периодически перечитывай:
https://www.python.org/dev/peps/pep-0008/
http://pythonworld.ru/osnovy/pep-8-rukovodstvo-po-napisaniyu-koda-na-python.html
Файлы имеют расширение ".py". Хотя бы для подсветки синтаксиса.
У тебя поразительный говнокод, мне понадобилось тридцать минут, чтобы понять его. На самом деле понимать его необязательно и можно просто стереть и сказать ЗДЕЛОЙ ТАК, но мне хотелось понять, почему именно возникает ошибка. Возникает она из-за того, что ты итерируешься по большему листу, чем задаётся игроком. То есть если интервал 1..3 (три элемента в листе - 1, 2, 3), то оно делает цикл for по 0..3 (0, 1, 2, 3) и пытается сравнить несуществующий четвёртый элемент из старого интервала с числом. Даже если исправить, всё равно код поломан и возникнут другие ошибки - там ещё изменение листа в процессе итерации по нему происходит и переменных куча лишних. Так что ЗДЕЛОЙ ТАК: http://pastebin.com/L8X7DyaY
В смысле как зделой. Просто прочитай и разберись, как работает. Раскомментируй необязательные стейтменты в начале лупа, если хочешь.
http://djbook.ru/
Скорее, индукция.
>>508376
Спасибо за рекомендации, советы и замечания, обязательно их учту. Да, код ослоебский, но я все же стараюсь, что-то строить хоть и из грязи. Сам не знаю зачем я полез в этот список, даже стало немного стыдно за такую глупость. Формально я уже абитуриент, а питон мой первый язык. Еще раз спасибо!
Что за инсталлер, откуда? Гет-пип сам пип устанавливает, а он уже давно в дистрибутиве питона есть. У меня 32-битный питон и 64-битная система. Файл назывался так: PySide-1.2.2-cp34-none-win32.whl
http://pastebin.com/uup2NZZT
https://download.qt.io/official_releases/pyside/?C=M;O=D
Я тоже нашел .whl но я не знаю как установить и куда прописать команду
> pip install -U PySide
Звучит она так:"Дана последовательность целых чисел, заканчивающаяся числом 0. Выведите эту последовательность в обратном порядке.
При решении этой задачи нельзя пользоваться массивами и прочими динамическими структурами данных. Рекурсия вам поможет."
Вот что сделал я:
def raz():
n = int(input())
if n == 0:
print(0)
else:
print(n)
raz()
print(raz())
Всё вроде работает, НО. Но последним значением возвращает "None". Как быть, господа?
Хорошо.
Скомпилировал, но, во-первых, у Вас пропадает ноль из последовательности, во-вторых, по прежнему последнее выходное значение - "None". Но вы помогли мне найти ошибку. Неясно зачем, но я принтовал функцию, когда её нужно было просто выполнить. Спасибо за отзывчивость.
В консоль.
Где ты не увидел ноль и увидел нон? Вывод есть прямо на идеон.
ява-блядь в треде? держите её!
Питон до третьего обнови, ёба.
Чем дальше ты уходишь от хелловорлдов, тем больше придется пердолиться с вендой. Сириусли. Это справедливо для всех языков кроме микрософтовских. Посмотри как рубисты на венде страдают, и прямым языком говорят - сноси ее, ставь макось, линукс, что угодно. Или пхпшники. У этих вообще огромный гайд по тому, что делается в две команды. Ты вон аж мсдос притащил, и протухший питон, 2.2, епта, 2002 год! Феерическая наркомания.
И еще одна вендопроблема. Вы там вообще программируете хоть иногда?
>пердолиться с вендой
Лолшто? Пердолятся как раз с пинусом. Не вижу никакой принципиальной разницы если пишешь простенькие скрипты, и тебе не нужны всякие йоба-нжинксы и линуксовские утилиты. Хуй его знает что там у рубистов, но всякие пхп и пистоны там вроде нормально живут.
>простенькие скрипты
Вся суть динамикодрысни. Ничего сложней fizzbuzz не написали, а потом ноют по всему зк что работу найти не могут.
Ты чо ебанутый? Я вообще мимокрокодил, и всего вашего диалога не читал, высказался только по поводу того поста, на который собственно ответил. Суть вот в чем - проблема не в осях, а в кривых руках ее использующих. Для меня нет такой задачи, которая бы принципиально упиралась в выбор оси, и если надо будет, то и на винде буду спокойно писать.
мимокрокодил, мимоосхбоярин
>Пердолятся как раз с пинусом.
>анон, как запустить хуйнянейм под винду, анон, как сделать установить пакетнейм ноды/питона/руби под винду, анон, я делаю pip install python и питон сам себя найти не может
Чот все треды этим говном забиты. За этот тред уже второй или третий пассажир такой.
Да нет, зачастую помимо рук проблема еще и в осях. Потому что gem/pip/npm и third-party библиотеки под виндой работают как говно. Даже в документации частенько бывает открытым текстом, что фича works only on osx, bsd and linux.
Я тебя в сраку попердолю
Тут ещё такой эффект, что линуксы используют более самостоятельные пользователи. И задавать вопросы о том, как поставить пакет через пип они не станут задавать в етом итт тхреаде.
>линуксы используют более самостоятельные пользователи
Обсикался с тебя. Самостоятельно яишенку от плиты доносят без участия мамки?
Обсикался то хоть сам?
Бесполезные высеры эти диск-жокеи
Ну не стукай, пожалуйста
Постояно так делаю как ты написал. Считаю тех кто взялся изучать джанго, надо резко перебать в щи и посадить за изучение протокола http/https.Посмотрел лекциюю по http и для меня прояснились некоторые моменты из книги. До этого тыкал наугад, это было сродни блядь методички по алхимии, что то происходит, но что имено - понимашь слабо. За что и не люблю веб, клубок технологий который практически невозможно изучить быстро.Но это едиственная область в которую еще могут всунуться новички.
Мимо-другой анон
Хороший сайт. И форум у них не плохой, мне даже отвечали на вопросы, пока не поняли что я долбоеб
пытаюсь сделать работать вот это: https://github.com/jcjohnson/cnn-vis
каффе собрал, тесты прогнал, модуль куда надо запихнул, пытаюсь запустить скрипт и:
(.env)➜ cnn-vis git:(master) ✗ python cnn_vis.py
Traceback (most recent call last):
File "cnn_vis.py", line 9, in <module>
import caffe
File "/Users/[user]/anaconda/caffe/__init__.py", line 1, in <module>
from .pycaffe import Net, SGDSolver
File "/Users/[user]/anaconda/caffe/pycaffe.py", line 13, in <module>
from ._caffe import Net, SGDSolver
ImportError: dlopen(/Users/[user]/anaconda/caffe/_caffe.so, 2): Library not loaded: @rpath/libcaffe.so
Referenced from: /Users/[user]/anaconda/caffe/_caffe.so
Reason: image not found
никак не могу понять, чего ему не надо.
>ImportError
>Referenced from: /Users/[user]/anaconda/caffe/_caffe.so
>_caffe.so
>Reason: image not found
>_caffe.so
>not found
Щито нипанятна?
Install Caffe; follow the official installation instructions. (как минимум ты забыл make pycaffe)
Используй virtualenv и ставь в него все с самого начала - питон, пакеты питона, джангу, пакеты джанги
Есть же официальная документация, там по последней версии (хотя я бы рекомендовал на пистоне 2.7 пока посидеть если что-то серьезное и быстро_развивающееся).
Сижу на Пистоне 3.4. Волнует актуальность этой книги на сегодний день
>2015
>использовать старый пистон
Ну это книга 2008 года, джанга с тех пор изменилась существенно. Хотя если ты пойдешь поддерживать систему 5-летней давности, написанную на старой версии, то книга прокатит. В общем ищи новей книгу.
>Python 2.7.10
>23 May 2015
И что? Вторая ветка морально устарела.
>Perl 5.23.0
>June 20, 2015
Как и этот товарищ.
>Вторая ветка морально устарела.
Кто тебе это сказал, Гвидо? Вторая ветка еще третью переживет. Вот смотри на код https://github.com/google/deepdream/blob/master/dream.ipynb
Видишь, какой там питон? А это гугл, это 2015 год.
>The End Of Life date (EOL, sunset date) for Python 2.7 has been moved five years into the future, to 2020
Всего пять лет осталось. Даже 4.5. Это вообще ничто, посрать сходил - вышел - пять лет прошло.
>Вторая ветка еще третью переживет
Если только гугл станет тащить вторую ветку сам, после окончания официальной поддержки. Только вот нахуй им теперь питон не упал, у них теперь Го. И Гвидо в гугле давно не работает, и ради них не почешется.
Мне похуй, я делаю git clone и потом разбираюсь, что это я вообще такое скачал. И 99% года сделано во второй ветке. И этот код никуда не денется.
find . -name libcaffe.so находит что-то? Пропиши путь в LD_LOAD_PATH или сделай sudo ldconfig, хуй знает в общем.
>99%
Из 2006 пишешь? Я с кодом под 2.7 давно не работаю. Последний раз было год назад, охуел с доисторической версии, сделал этому говну 2to3, поправил юникод и воткнул в свой проект. Буду я еще даунгрейдиться, ага.
"Мне похуй, я делаю git clone и потом разбираюсь"
Гвидо в принципе мудак тот еще (по сравнению с Матцем), но сломать обратную совместимость было феерией мудачества. Отсюда и страдания.
Страдания только у таких тормозов как ты. Нормальные люди идут в светлое будущее.
Мудила, блядь, вот мы с челом обсуждаем чей-то код с гитхаба, НЕ Я ЕГО НАПИСАЛ, ебанько блядь.
Ну не знаю я как там на ваших маках этот лабрари пэф прописывается, сделай симлинк в /lib или куда там, где система стопудово будет искать. Вообще, попробуй скачать caffe с гитхаба и собрать по-человечески. У меня вообще проблем не было с запуском питона из папки caffe/python, даже пути не фиксил.
>Ну все, побежал переводить все обратно на 2.7
Я бы на месте Гвидо закончил со вторым питоном еще лет пять назад. И ебитесь как хотите. А то развел сюсюканье со всякими даунами, и тянется это говно, и тянется.
Картинку смищную по теме нашел.
Еще раз мне похуй, куда ты что будешь переводить. Мне не похуй, куда будут переходить 90% проектов на гитхабе. Если мне нужен модуль, я буду использовать ту версию, с которой у меня будет минимум телодвижений. Какую-то лингвистику я делал в третьем, потому что меня заебали проблемы с юникодом во второй Но мне тогда повезло - pymorphy есть для обоих версий.
А если бы Гвидо знакончил со вторым питоном, то быстро бы закончился или Гвидо, или питон.
Ну вот поясни. Мой проект под 3, а либа под 2. Что теперь, предлагаешь за четыре года до смерти 2.7 переводить все обратно, потому что какой-то ленивый пидор не осилил спортировать? Или писать НОВЫЙ проект в 2015 году на старом питоне? Может еще перл предложишь? Или делфи?
>А если бы Гвидо знакончил со вторым питоном, то быстро бы закончился или Гвидо, или питон.
Манямирок. Раз уж у Гвидо нашлись яйца сломать совместимость и никто не умер, то мог бы найти еще раз и прибить второго. Полумеры какие-то.
Ну сделай симлинк туда где увидит. Заработает, будешь искать, куда его прописать. Вообще это не совсем релейтед к питону. Кстати, почему .so а не .dylib?
>Мне не похуй, куда будут переходить 90% проектов на гитхабе
А куда они могут перейти? Со временем они перейдут либо на 3, либо нахуй. Естественный процесс отмирания ненужного, копротивляться бесполезно.
Никуда они не будут переходить, потому что нахуй никому не нужно в это вкладывать время и силы.
В 2009 году я купил книжку именно по третьему питону, это был первый диалект, который я выучил. На дворе 2015, а разговоры о том, что двойка умрет не прекратились. Тебе, скорее всего, в 2009 было лет 15.
>Никуда они не будут переходить
Ты еще забастовку против второго питона устрой, наркоман. И Гвидо поясни за какой версией будущее. Джанга перешла, киви переходит, https://python3wos.appspot.com/ - становится зеленей и зеленей. На втором остается только забытое говно.
Гвидо - мудак, оказавшийся со своим пыхом в нужное время в нужном месте. Так-то язык откровенно хуевый. Поэтому его мнение меня вообще не интересует.
Что касается библиотек, они пытаются захватить долю рынка. На самом деле я тебе расскажу, как будет. К версии 3.X вернут обратную совместимость. И все.
Охуительные истории.
>А куда они могут перейти? Со временем они перейдут либо на 3, либо нахуй.
Red Hat видел когда-нибудь? Debian? CentOS? Будут вручную патчи на 2.5 бэкпортить и никуда не перейдут.
Спасибо
Сам то видел, маня?
Пишу тебе с дебиана. И вот смотри-ка, официальный анонс по переходу дебиана на py3 - https://lists.debian.org/debian-devel-announce/2015/04/msg00005.html
И не просто заменят дефолтную версию как арч когда-то, а портируют все проблемные места.
>When you see Python 2 - treat it as legacy! Please encourage porting!
Цетось и RHEL основываются на федоре. Федора, внезапно, тоже переходит на 3 уже в этом году - https://fedoraproject.org/wiki/Changes/Python_3_as_Default
Ты настолько отстал от жизни, что просто охуеть.
Есть декоратор, который отключает csrf защиту. Воспользуйся им, дабы проверить в нём ли проблема.
Твой дебиан - такое ущербное говно, судя по скрину. Мозги тебе не ебет такой шрифт?
у тебя много спермы в глазах, ничего не видишь кроме спермы
Мир дал ему freetype, нет, не хочу векторность и сглаживание, хочу жрать говно и пиксельные шрифты эпохи 70х.
https://ideone.com/6rD2nD
Решил я однажды сделать себе объекты, доступные глобально во всех шаблонах. И охуел.
Сделал всё, как сказано на оф. сайте, нихуя не работает. Гуглил всё что можно, ничто не помогает (примеры устаревшие).
Предполагаю, что проблема в том, что в 1.8 распидорасили структуру шаблонов, и например выпилили context_instance из render_to_response. Но в 1.8.2 пофиксили бы уже давно такие вещи, либо в доках отразилось бы, так что хз.
Вот мой эталонный (но почему-то не работающий) код:
http://pastebin.com/Hpzrz64B
Когда страница грузится, тэги вида {{ lalki }} просто игнорятся как нулевые. Блджад, лютый БАГОР из-за этой хуйни.
Жанга 1.8.2, пихон 2.7.6 (да-да, двойку приходится юзать из-за не переписанных либ, которые оч нужны)
Или pythonXY. Но он только для винды.
Судя по реакции, никто не знает, в чем проблема.
Пойду-ка нахуй спрошу вопрос на SO.
Если что, вот ссылка на репку:
https://github.com/yerohin/context_processors_test
Кидайте пулл реквесты, если сможете решить проблему.
Вот когда ты сам захочешь тест написать. Тогда. Лично моё мнение что тесты это вещь не для всего на свете. Именно с точки зрения эффективности и профитов, технически конечно можно для всего тест написать. Тесты хороши для отдельных функций, желательно не имеющих сторонних эффектов, которые делают нечто сравнительно сложное. Ещё неплохо писать тесты под закрываемые баги, других способов сразу увидеть регрессию нет.
Хорошо, спасибо.
Посоны, какой лучше инструментал для создания REST-приложения? Выбираю между django-rest-framework и tastypie. Может еще есть что получше?
тесты не нужны.
Тут все ленивые, без реального опыта, матерятся, говорят что второй питон нужен.
>Как научиться правильно все тестировать?
Нужно тестировать только бизнес-логику. Сначала пишешь тест бизнес-логики, потом код, потом рефакторишь.
>509381
И как же она решена, неосилятор?
ясно, понятно.
http://pastebin.com/uS6WigRh
Lubuntu.
Это так охуенно, что просто охуенно. Я бы до такого кода никогда не додумался, печалька.
>string.split()
>def split(string):
1. Свою функцию не стоит называть так же как встроенная в язык.
2. string, result, char - плохие имена для переменных.
3. result = list() - наверное понятнее будет так result = [].
4. Стандартный отступ в 4 пробела. И вообще
https://www.python.org/dev/peps/pep-0008/
http://pythonworld.ru/osnovy/pep-8-rukovodstvo-po-napisaniyu-koda-na-python.html
5. Последняя строка вроде как ничего не выполняет split("I am god!") == [('I', 0, 1), ('am', 2, 4), ('god!', 5, 9)]? Сравнение без вывода результата?
6. Коментарии? Строки документирования?
Наверное надо как-то так:
http://pastebin.com/KAZb5Hqg
>1. Свою функцию не стоит называть так же как встроенная в язык.
Я и не называл.
>>> split("I am bitard")
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
split("I am bitard")
NameError: name 'split' is not defined
>2. string, result, char - плохие имена для переменных.
Это еще почему? Вот str и chr действительно неудачные. А против result я совсем не понимаю что ты имеешь?
>4. Стандартный отступ в 4 пробела.
Мне он кажется слишком широким. 2 пробела в саблайме смотрятся норм. Если надо будет, в финальной версии подправлю.
>6. Коментарии? Строки документирования?
Да ладн? Неужели настолько говнокод, что без комментов не понятно?
Я все-таки покомпактнее вариант придумал:
http://pastebin.com/Ap6kVDhg
Ну да. Вероятность получить слово "ЖОПА" 1 из 923521. А тебе понадобилось только 589831 попыток. Алсо, сколько времени заняло?
http://pastebin.com/tU6ze8KZ
В Довсоне приводится такой код:
# Personal Greeter
# Demonstrates getting user input
# Michael Dawson 1/13/03
name = raw_input("Hi. What's your name? ")
print name
print "Hi, " + name
raw_input("\n\nPress the enter key to exit.")
Его цель, я так понимаю, чтобы пользователь по запросу программы ввел свое имя в терминале
делаю файл 2.py:
name = raw_input('Please enter your name')
print name
print 'Hi,' + name
raw_input('\n\nPress any key to exit')
Выполняю
cd /home/user
python2 2.py
Пишет:
/usr/bin/python2: can't find '__main__' module in '2.py'
ЧЯДНТ?
В Довсоне приводится такой код:
# Personal Greeter
# Demonstrates getting user input
# Michael Dawson 1/13/03
name = raw_input("Hi. What's your name? ")
print name
print "Hi, " + name
raw_input("\n\nPress the enter key to exit.")
Его цель, я так понимаю, чтобы пользователь по запросу программы ввел свое имя в терминале
делаю файл 2.py:
name = raw_input('Please enter your name')
print name
print 'Hi,' + name
raw_input('\n\nPress any key to exit')
Выполняю
cd /home/user
python2 2.py
Пишет:
/usr/bin/python2: can't find '__main__' module in '2.py'
ЧЯДНТ?
да, там навероное нужно использовать permutations вместо combinations
Крч, разобрался. Я писал код в ЛибреОффис, а потом сохранял под расширением .py, но там, видимо, дохуя невидимого форматирования, которое сбивает код.
Сделал в блокноте, там plain text, все заработало.
Алсо, как сделать абзац?
В примере автора Имя нужно вводить сразу за запросом на той же строке:
What's your name?Peter
или What's your name? Peter
А мне абзац охота.
Решил этот вопрос путем трипл квота
('''
What's your name?
''')
Но, может, можно изящнее?
Не совсем понял, накой тебе абзац, но добавь new line character в конец строки
"What's your name?\n"
Линейный конгруэнтный метод — один из методов генерации псевдослучайных чисел. Применяется в простых случаях и не обладает криптографической стойкостью. Входит в стандартные библиотеки различных компиляторов.
http://pastebin.com/88cvfNhV
>Доступные в интернете редакции Довсона написаны по второпитониусу.
># Michael Dawson 1/13/03
>/03
2003 года-то? Не удивительно. Ты бы еще по глиняным табличкам питон учил.
Третья (последняя) редакция Довсона датирована 2010, есть только на русском языке (переведена в 2014), и я ее сверяю по содержанию регулярно. Особых различий кроме input <-> raw_input, print ' ' <-> print (' ') нет.
Довсона мне предложили в треде. Ты считаешь, надо что-то другое штудировать?
Завтра ищешь в интернете книжку Dive into Python 3. Похуй если ничего не поймешь.
Блять вот уж на линуксе крутых редакторов хоть жопой жуй, прямо из реп. Как ты докатился до офиса?
Пробовал ОпенОфис, ВПСврайтер, ЛибреОффис. Остановился на Либре. А что в ней, собственно, такого зашкварного?
Чего тебе не завезли?
http://pythonworld.ru/osnovy/skachat-python.html
Установка Python на linux системы (ubuntu, linux mint и другие)
Откройте консоль (обычно ctrl+alt+t). Введите в консоли:
python3
Скорее всего, вас любезно поприветствует python 3:
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Если это так, то можно вас поздравить: у вас уже стоит python 3. В противном случае нужно установить пакет python3:
sudo apt-get install python3
Либо через mintinstaller / synaptic / центр приложений ubuntu / что вам больше нравится.
В python для linux нет предустановленной среды IDLE. Если хотите, её можно установить отдельно. Пакет называется python3-idle.
Однако, её установка не является обязательной. Вы можете писать в своём любимом текстовом редакторе (gedit, vim, emacs...) и запускать программы через консоль:
python3 path_to_file.py
Теперь вы можете написать первую программу (хотите, пишите в IDLE, хотите - в своём любимом текстовом редакторе).
http://community.linuxmint.com/software/view/idle-python3.4
Попизди мне тут. Минт твой основан на убунте. В убунте есть - значит и там есть.
>>509864
Зелень, ты опять выходишь на связь? Офис это офис, во всех офисах овердохуя фортирования которое нужно только для офиса, но которое может знатно поднасрать исходным кодам. geany/gedit самые простые и самые богатые по фичам редакторы плейнтекста, что тебе и нужно. Есть в репах. Я бы посоветовал vim, но ты дно какое-то.
Дальше. По второму питону. Ты серьезно хочешь учить технологию, которую закопают через 4 года? Только третий.
Нахуй эта закрытая параша нужна, если даже geany умеет 90% того, что умеет сублим? Я уж молчу про vim/emacs
>В python для linux нет предустановленной среды IDLE. Если хотите, её можно установить отдельно. Пакет называется python3-idle.
Вот этого не завезли.
Ясное дело, можно докачать.
Но зачем, если > её установка не является обязательной. Вы можете писать в своём любимом текстовом редакторе
Да там разницы вроде нет особой со второпитониусом.
Блять, ты меня растерял. Аноны, проясните, разве питон нельзя учить по второпитониусу?
Нельзя, блять. Если я узнаю что учишь по второму - вычислю тебя по ойпи. приеду и заставлю дрочить мой питон твоим анусом.
А если серьезно. Ну, блять, как-то странно нюфагу вкатываться в старую версию языка, когда весь мир во всю переходит на новую. Можешь конечно, если ты такой упоротый.
>>509883
>текстовый процессор
Процессор, маня.
https://en.wikipedia.org/wiki/Word_processor
https://en.wikipedia.org/wiki/Text_editor
Чуешь разницу?
Ничуть не игнорирую. На моей картинке написано, что ЛибреОффис - одновременно и текстовый редактор, и текстовый процессор. По твоей ссылке о ЛибреОффисе не говорится, поэтому противоречия нет.
Есть разница между Shell ом, который таки да, есть в минт, и собственно ИДЛЕ, которого в минт нет.
Ебало завали, петух блять
>libreoffice writer - бесплатный текстовый процессор
>ссылка про текстовый процессор
>по твоей ссылке о ЛибреОффисе не говорится
Бесплатный текстовый процессор (А В СКОБОЧКАХ ТЕКСТОВЫЙ РЕДАКТОР).
Блять, вы троллите что ли меня?
Да ты заебал, сириусли. Возьми крутой редактор или ide какую, офисы не приспособлены для кода.
На моей картинке.
>Поддержка макросов и плагинов на языке программирования Python;
Удобно же, для среднестатистического посетителя этого итт треда будет в самый раз. Удобные фичи в виде залива файла по (s)ftp по хоткею, куча прочих плагинов, и все на питоне. Емакс это отдельная тема, сам понимаешь, что многим не понравится, ибо на любителя.
Удвою вопрос, только применительно к Tornado. Django-rest не подходит.
либрофис для лохов, только старофис тру
Суть такова: Нужно авторизоваться на mail.ru и начать новое письмо. Заполнить 3 поля и все.
Все это должно работать на selenium + phantomjs
Могу подкинуть деньжат если че
x = raw_input('Enter X\n')
y = raw_input('Enter Y\n')
z = raw_input('Enter Z\n')
f = x + y + z
print 'Totals:', f
raw_input('Press any key to continue')
#here starts the next part
x = raw_input('Enter X\n')
x = int()
y = int(raw_input('Enter Y\n'))
z = int(raw_input('Enter Z\n'))
f = x + y + z
print 'Totals:', f
raw_input('Press any key to exit')
>x = raw_input('Enter X\n')
>x = int()
Из-за этой хни выше, должно быть так:
>y = int(raw_input('Enter Y\n'))
>z = int(raw_input('Enter Z\n'))
Голландец дохуя?
Так нет никакой ошибки.
x (str) = raw_input... # = some string
x = int() # = 0
...
f = 0 + .. + ...
Алсо, не я вопрос задавал, я отвечал.
>почему с арифметической ошибкой считает последнюю операцию
Нет ошибки, потому что x = int() = 0, тот кто задавал вопрос - просто обнулил "x = raw_input('Enter X\n')"
А почему именно фантом и селениум? Хочешь эмуляцию человеческих тыканий? Впервые про них слышу, может не ту инфу нагуглил. А причем тут питон вообще не понял. Если эти твои йоба-инструменты не принципиальны, я бы и бесплатно сделал, только задачу уточни.
Понял я что такое селениум. Но не понял зачем там фантом, без него можно обойтись. В общем, если с этими йобами, то бесплатно не буду, лень разбираться в том что не интересно, за просто так. Бесплатно могу накидать программную авторизацию и отправку писем через сервис, либо гораздо проще - напрямую через smtp
Да, все правильно ты сказал, про эмуляцию. А фантом, это что бы экземпляр браузера не запускался. По сути работа выполняется та же самая, только браузер не стратует.
>Бесплатно могу накидать программную >авторизацию и отправку писем через сервис
А что за сервис?
> А что за сервис?
> Суть такова: Нужно авторизоваться на mail.ru
Я подумал что тебе принципиально отправить письмо из веб-морды mail.ru, но смысла в этом не вижу, потому что есть способы отправить письмо гораздо проще. Другое дело, если ты указал майлсру только в качестве примера, и цель у тебя просто на примере научиться пользоваться своими йобами.
> По сути работа выполняется та же самая, только браузер не стратует.
Ээээээээм, а зачем тогда тебе селениум? Ты что-то там слишком мудреное придумал. Давай объясняй по порядку, зачем тебе такие извращения?
Эх, ничего то ты не понял. Незачем обрабатывать жс, вангую что там обычные аякс запросы на скрипт, который отдает json. Сейчас будет тебе вариант без йоб, и письма будут уходить с твоего акка. 20 минут жди.
Нихуя себе. Было бы конечно здорово. Но когда я пытался проделать с разными либами, у меня в исходном коде было что то типа "Ваш браузер не поддерживает JS" и формы с инпутами не было
Ниет
from smtplib import SMTP_SSL
from email.mime.text import MIMEText
me = "" # ящик с которого нужно отправить
password = "" # пароль от него
to = "" # кому отправить
msg = MIMEText('Текст сообщения')
msg['From'] = me
msg['To'] = to
msg['Subject'] = 'Заголовок сообщения'
smtp = SMTP_SSL()
smtp.connect('smtp.mail.ru')
smtp.login(me, password)
smtp.sendmail(me, to, msg.as_string())
smtp.quit()
Могу еще и получение писем сделать, если тебе пойдет такой вариант, а то пристал со своим селениумом
Слушай, а где-то говорится, как питон работает со смежными дисциплинами? Потому что ни в одном пособии я не вижу описание работы питона с СМТП.
Спасибо, будем тестить
Ну как бы тебе сказать. Было достаточно загуглить "python send mail". Если интересно как работает, то поковыряйся в smtplib
в принципе да, но может и нет.
Нахуя тащить с собой джангу, если сервер поднимается в 3 строки? А вообще да, это говноедство
Не делай так. Можешь заюзать Twisted, там есть модуль Twisted.Web, сам юзал. Или использовать wsgi-модуль, тогда из twisted получишь доступ ко всем плюшкам django.
http://pastebin.com/qrSDtrdE
То, что долго работает - это я прекрасно понимаю, считать количество операций я умею. Но вот я вообще не понимаю, что за херня происходит с потреблением памяти. Читаю файл размером в 80 метров, вот, что пишет профайлер:
Line # Mem usage Increment Line Contents
48 162.855 MiB 136.684 MiB for line in f:
49 162.855 MiB 0.000 MiB tests.append(np.array(list(map(int, line.split(',')))))
63 292.574 MiB -77.512 MiB tests.clear()
Какого хера питон куда-то скушал мои 60 метров памяти, кто-нибудь может мне объяснить?
не обращайте внимание на говнокод, я его еще не начинал причесывать
Кстати, такое ощущение, что он умеет грузить несколько ядер. Это, небось, из-за numpy, или как? Насколько это реально ускоряет работу?
Молодец! Реализация алгоритма просто загляденье, код оформлен в лучших практиках. Удача, что такой талант зашёл на сасачь! Продолжай в том же духе, мы с тобой свяжемся. пошёл нахуй говноед
Да пости на здоровье, гитхаб всё стерпит.
Я конечно не спец в пифтне, но есть же всякие мапы, зипы и прочее, а у тебя тонна встроенных циклов, и как-то в целом глупо
Ну из песни слов не выкинешь:
1) Создать матрицу mxn
2, 3) Заполнить нулевую колонку и нулевой столбец матрицы начальными значениями пенальти за пробелы.
4) Заполнить матрицу.
5) Отследить последовательность, котоя даст максимальный счет. Можно совместить с пунктом 4, но получаетя как-то некрасиво и сложно дебажить.
Вчера я начал ебаться с XML, блядь, все глаза на жопу вылезли. Вот только проснулся, всю ночь мануалы читал. И только под утро понял, что, блядь, в asp, который я знаю на начальном уровне, я нужные мне задачи решу за 10 минут.
Нет, мне питон всё равно был нужен для удобного гуя, но, ёбанный стыд же.
Очень хочу адекватных ответов или ресурсов на эту тему.
inb4: кривые руки, говнокодер, питон универсален и всякое другое утячество
Мой скромный опыт:
Плюсы питона:
1) Читаемость.
2) Скорость разработки.
3) Обилие библиотек с готовыми решениями.
Минусы питона:
1) Скорость исполнения.
2) Динамическая типизация.
Соответственно, его не стоит использовать там где критична скорость исполнения.
Циклохейтер детектед. Хотел пошутить про циклы и твой анус, но ничего в голову не приходит, уж извини
Улучшить читаемось, может просто строку сделать не такой длинной. Может у автора такое видение прекрасного, хз.
Это плюс для читаемости и скорости разработки, но минус для отладки. чуть что - я диванный программист, лол
Есть задача: проверить, имеется ли определённый модуль в установленном на компьютере питоне 3 и, если нет, проверить второй питон. (Таким образом выберется версия питона, которая дальше будет использоваться для запуска всяких разных других скриптов.)
Возможно ли это сделать без запуска скрипта, содержащего
try:
import module
print("OK")
except:
print("Nope")
?
Если нет, то возможно ли как-то эти 5 строк кода вписать в переменную в баше и там же сразу выполнить, записав результат в переменную? Что-то типа:
code="moy
multistrochniy kod tut"
module_ok=`python3 $code`
И в module_ok запишется либо "OK", либо "Nope". (Так, разумеется, не работает.)
Т.е. без необходимости создания (и потом удаления) пятистрочного файла проверки (что я сейчас и делаю).
>Устроился на работу
>Почти не заходишь в любимый питоний тред
Ну скажем ты создашь питоний скрипт, который импортирует что-то из третьего питона. И возвращает 0, если все норм и 1, если нет. Тогда баш скриптом ты сможешь проверить выход этой программы и сделать выводы.
А еще можешь писать не на баше, а на том же питоне все скрипты.
[code]
#!/bin/bash
TEST_MODULE=syso
python -c "
try:
import $TEST_MODULE
err_code = 0
except:
err_code = 1
exit(err_code)
"
if [ $? -eq 0 ]; then
echo "Module exists"
else
echo "Module doesn't exist"
fi
[/code]
>Ну скажем ты создашь питоний скрипт, который импортирует что-то из третьего питона.
Эм, я как бы именно это и делаю. Вопрос-то в другом. Можно ли обойтись без создания файла?
Всё на питоне не могу, вне моего контроля.
Я криворук, но надеюсь, ты поймешь, как расставить отступы.
Ах, вот оно, "-с". Спасибо огромное!
Вот ещё оттуда же.
Зачем? Зачем просто менять точку на подчёркивание, Карл?
Разве это не просто лишнее действие которое замедляет исполнение программы?
нафиг такие заморочки
python - c "import foobar" 2>/dev/null && echo "module exists"
или $? проверяешь потом
По идее да это немного быстрее, не надо каждый раз эту функцию искать в dict объекта, если он её вызывает миллиард раз может какой-то профит быть. Но больше похоже на говнокод.
Редкостное уебанство. Напиши на Pygtk или qt
>Но больше похоже на говнокод.
Но это популярная библиотека для писания игр, которая уже много лет в разработке.
Мне нужно написать скрипт, суть такова: отправлять http запрос, сформированный из того что ввёл юзер в текстовые поля. Получать json, парсить урлы и сохранять на диск содержимое урлов. Так же скрипт нужно будет упаковать в исполняемый exe.
Решил что питон подходит для задачи.
Какие либы курить?
Поддвачну вопрос.
Возможно, чтобы визуально отличать встоенный list.append() от методов класса sprites, если там что-то такое есть в коде
> это немного быстрее
this.
И ещё так делают для nonlocal и global идентификаторов.
А профит:
http://pastebin.com/CLrfLj2S
Да, в лихих 2000-х была беда с кодировками, попробуй актуальные версии питона (3.4).
>>512233
# coding: utf-8
В самом начале файла. Но наебёшься ты с ним.
алсо я так понял, у вас там еще и беда с либами юзерспейс-тредов. кроме гевента нихуя нет, а гевент по 2 питон.
я не тролль, просто ленивая жопа и в гугле зойбанили
percentile = raw_input('Enter raw number') / 100 * 10
print percentile
Есть ли какой-то preset оператор для высчитывания процентов? Умножение, вычитание и прочая лабуда есть. А процентов нет? Потому что проценты хуячат либо как модули (остаток), либо как вставка всякого говна вместо назначения вариаблей (%s, %f, %d и т.д.).
А как чтобы подобно инженерному кальку? Ввел исходное значение, бздынькнуль оператор % и посчитал.
>PyPy is a fast, compliant alternative implementation of the Python language (2.7.9 and 3.2.5)
ну не очень решение. вангую там еще куча багов к тому, что оно на 3 версии отстает от апстрима.
алсо интересует, что вы делаете, когда у вас нет возможности валить с CPython? вот я такой пишу на 3.5 и тут мне всралось запилить многопоточное приложение. мои действия?
Кому нужны jit и микротреды, вполне себе решение.
Третью версию и модули на С он ещё нормально не поддерживает, а вторая версия вполне рабочая.
Многопоточные числодробилки -- модули на С.
Паралелльный IO -- asyncio и ему подобное.
Хотелось бы в одну кнопку.
То есть такого оператора нет? А можно его написать? Это функция получится?
А их нет. Только pycharm, остальные - текстовые редакторы, отличающиеся лишь подсветкой.
>PyCharm разработана компанией JetBrains на основе IntelliJ IDEA.
>Двойное лицензирование
чет не оч
Чому?
#coding: utf-8
#Антоша
#this program is called Tipper
#its purpose is to calculate 15 and 20 percent tip for an entered user-value
#first we will require user to enter value. we'll use variqable at first.
rawnumber = raw_input('Enter please the raw number which you want tip to be calculated for\n')
rawnumber = float()
print rawnumber / 100 15
print rawnumber / 100 20
raw_input('\n\nExit')
#coding: utf-8
#Антоша
#this program is called Tipper
#its purpose is to calculate 15 and 20 percent tip fpr an entered user-value
#first we will require user to enter value. we'll use variqable at first.
#enter the base price of a car
bprice = raw_input('Enter the base price of a car\n')
bprice = int(bprice)
tax1 = bprice 0,02
license1 = bprice 0,15
print 'THank you, the price will be ', bprice + tax1 + license1 + 100 + 180, 'dollars'
raw_input('\n\nPress')
>>>>>
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
(инту перед лицензией и таксой прибавлять пробовал, отдельный вариабль для окончательной операции вводить - пробовол. все равно про эту "туплю" пишет)
Пишет, что ты пытаешь сложить кортеж и инт.
Но я не понял, почему у тебя тут ошибки не вылезло?
>tax1 = bprice 0,02
>license1 = bprice 0,15
Там разметка двощей перехерачила знаки умножения, приняв их за знаки курсива.
В оригинале было:
tax1 = bprice * 0,02
Или это тоже ошибка?
Увидев "0,02", ебущийся в глаза питон решил, что это список, тупля, хотя там была записана дечимал фракшн.
Лол, ток сейчас спалил. Ты написал 0запятая02, а нужно 0точка02
>децимал фракшн
>запятая
>использует английские словечки
>не знает, как в англоязычном мире обозначаются нецелые числа
>ругается
>массив-конкаренси
Ты определись что надо конкаренси или мультитреадинг. В конкаренси петон умеет очень хорошо.
Если ты про то, что обозначается ПОЙНТОМ, то это я уже сам спалил ))00
Ебало завали
>>512352
Стал запускать в Ubuntu и вот такие болты на иконки, чаво делать, питоны?
root.iconbitmap("notepadik_list.ico")
File "/usr/lib/python3.4/tkinter/__init__.py", line 1702, in wm_iconbitmap
return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "notepadik_list.ico" not defined
winHelp.iconbitmap("help.ico")
File "/usr/lib/python3.4/tkinter/__init__.py", line 1702, in wm_iconbitmap
return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "help.ico" not defined
Я так понял, в питоне нет, в отличии от многих языков, каких-либо скобок для выделения блока кода, и это самое выделение происходит отступами? То есть допустим у меня есть участок кода из 100 строк, и тут мне понадобилось, чтобы он выполнялся лишь при каком-то условии (if что-то там), я не могу просто заключить его в скобки и дописать перед ним этот if, мне надо каждую строчку переносить правее? Или как, лол?
Да. Руками, каждую из этих ста строк. Для каждой жмешь четыре раза пробел - все правильно.
А за 100 строк кода по одним if наверно сильно ругают
Если ты дибил, то да.
Нормальные ребята используют редакторы с возможностью индента нескольких строк по одному (sic!) нажатию таба.
Алсо, нормальные ребята выносят блоки кода в отдельные функции, а не ебашут инлайново сто строк говнокода.
Глобальные переменные вообще лучше избегать.
Одинаково. Поля класса хранятся в словаре(если ты не используешь __slots__)
http://stackoverflow.com/questions/472000/python-slots/28059785#28059785
Есть к примеру 3132 записи, или любое другое число. Мне нужен цикл с шагом в 200, к примеру, но чтобы были захвачены все записи, а не 3000, в данном случае нужно округлить до 3200. Как это красиво сделать?
Спасибо, это и нужно было. Если по простому, то в цикле "for x in xrange(0, 3132, 200)" последним числом было 3000, таким образом 132 значения проебывались. Поскольку шаг в 200, нужно было округлять до 3200.
Я думал, суть статических методов класса в доступе к ним извне без создания объектов класса. А так они у меня используются только внутри класса, при внешнем вызове смысла не имеют.
for attachment in [a for a in [i for i in items if "attachments" in i["message"]] if "photo" in a]:
print attachment, "\n\n\n"
А ещё можно импортировать какой-нибудь парсер модуль.
Не, ну это вообще пиздец
http://pastebin.com/9eGNCRtW
Написать класс, который будет вилкой разбирать это всё по шаблону.
if "a" not in x: continue
Вообще бы здесь тебя спало что-нибудь типа SQL для JSON.
['value_1', 'value_2', 'value_3', 'value_10', 'value_100', 'value_500']
Как проще найти самое большое value? У меня вообще какой-то глупое решение пришло в голову - перебрать весь массив, реплейснуть "value_", засунуть в новый и потом отсортировать результат, но это гулпо, а как по-другому хз
За один проход всё это делаешь. Для каждого элемента списка делаешь реплейс и сверяешь с текущем максимумом.
max()?
На авторство не претендую, было слизано с какого-то бложика в одном из проектов:
def get_ip_range(first_ip, last_ip):
\tip_range = []
\tfirst = list(map(int, first_ip.split('.')))
\tlast = list(map(int, last_ip.split('.')))
\tcur = first
\tip_range.append(first)
\twhile cur != last:
\t\tfirst[3] += 1
\t\tfor x in (3, 2, 1):
\t\t\tif cur[x] == 256:
\t\t\t\tcur[x] = 0
\t\t\t\tcur[x-1] += 1
\t\tip_range.append('.'.join(map(str, cur)))
\treturn ip_range
Спасибо
Спасибо.
Экономят память.
Нужно дописать брут многопоточный, ошибки с тредами и чтением построчно возникают, да и вообще всё ужасно. Уже не знаю к кому обращаться.
1. Как нормально задать переменные line1 и т.д.?
2. line4 выдает результат без перевода строки. Как исправить?
Нихера не знаю питон
Реально ли на питоне написать торрент-клиент, ну или хотя бы программу, которая будет смотреть в dht? Если да, то что курить?
Сделайте меня развидеть это
>1. Как нормально задать переменные line1 и т.д.?
Используй лист (массив если по-простому)
>2. line4 выдает результат без перевода строки. Как исправить?
Добавляй куда надо "\n"
>Реально ли на питоне написать торрент-клиент
Думаю да, гугли либы
http://www.libtorrent.org/python_binding.html
Хотелось бы приватно, скриптов несколько штук, не очень получилось объединить в один, и не знаю даже что именно выкладывать.
Если кто сможет помочь - ivanmax3turbo
>упрости до пары десятков строк, которые всё равно выдают ошибку
Да я даже это не могу нормально сделать, лол.
requests.post(server['upload_url'], files={'photo': open('img.jpg',"rb")})
но перед этим скачиваю пикчу с другого сервера, так вот, можно обойтись без сохранения/открытия пикчи в файл? передавая скачанные бинарные данные из urlopen('пикча') я сосу хуйца
Ты дурной какой-то.
>можно обойтись без сохранения/открытия пикчи в файл?
requests.post(server['upload_url'], files={'photo': requests.get(img).text})
Вообще хуй пойми, зачем ты ее сохраняешь, если она тебе не нужна.
Как ты думаешь, что происходит в результате:
>open('img.jpg',"rb")
>open
>rb
>read bytes
>READ BYTES
А в результате:
>requests.get(img).text
М?
>Ты дурной какой-то
Возможно.
>Вообще хуй пойми, зачем ты ее сохраняешь, если она тебе не нужна.
>Как ты думаешь, что происходит в результате:
Я же написал - передавая скачанные бинарные данные из urlopen('пикча') я сосу хуйца
Сервер не получает пикчу, с requests.get(img).text та же хуйня.
это потомственный велосипедист
Если сервер там что-то не получает, значит ты что-то неправильно в процессе попытки передать туда данные из переменной.
Выделю для тебя: requests.get(img).text
Полагаю, проблема может быть в том, что ты пытаешь urlopen'овский HTTPResponse в request'вском аргументе "files" передать. Используй data же и передавай напрямую байты. Навреное, должно работать, лень пробовать.
Вы видите копию треда, сохраненную 9 августа 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.