Это копия, сохраненная 23 ноября 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
это же запросы гугля? писят хипстеров со смузи могут загнать питухон в топ.
Ананасы, кто-нибудь пилил работу с nmea координатами? Спарсиваю поток координат от маяка через pynmea2, расстояние N между определенными координатами вызывает условную функцию def f(). Но иногда вылетает какая-то левая координата с погрешностью >N и это вызывает ложное срабатывание def f().
Может кто уже изобрел велосипед от таких погрешностей или знает толковую питонячью либу - буду премного благодарен
Чтение книг, журналов, брошюр, статей на сайтах — прекрасный способ усвоения информации, но только если читать правильно. Что должно остаться после того, как перевернулась последняя страница? Определённо, новые знания. Но кроме того — ясное понимание «что и зачем», связи между отдельными фактами и целостная картина изученного материала. Как получить такой результат, рассказывает брошюра «Как читать книги?» Сергея Поварнина, русского логика и философа первой половины ХХ века.
Может ли чтение быть опасным?
Чтение всегда воспринимается как путь к знаниям. И это ошибочно. Существуют откровенно плохие книги, которые коверкают и опошляют душу. Их следует избегать, закрывать на первой странице, вычислять на полках и не прикасаться даже к обложкам. С таким книжным мусором можно относительно легко бороться, тщательно отбирая литературу к прочтению и используя списки лучших книг и рекомендации. Но есть куда более страшный враг познания — поверхностное чтение. Поварнин называет людей с таким недугом «фразёрами» и «людьми с кашей в голове».
> Есть очень много людей, которые читают только для того, чтобы не думать.
> — Георг Кристоф Лихтенберг, немецкий учёный и публицист
Вспомните какого–нибудь знакомого, сыплющего цитаты на все случаи жизни и своими действиями противоречащего им, или человека–кроссворда, что знает миллион фактов на свете и при этом не понимает ни единой связи между ними. Вот это именно они — люди, знающие многое и не понимающие ничего. Появление таких типов — результат неумения читать правильно, а также отсутствия связи теории и практики. Непонятое и не закреплённое действием, знание так и остаётся в качестве сухих заученных фраз.
> Отрядом книг уставил полку,
> Читал, читал, а всё без толку…
> — Александр Пушкин, русский поэт
А чего вы хотите от книги?
Книгу можно читать, чтобы, к примеру, изучить новый раздел науки или найти ответ на вопрос. От этой цели, с которой мы обращаемся к книге, зависит и способ чтения. Чтобы разыскать информацию по вопросу, необязательно читать всё от начала до конца, а понять материал тяжело, если читать по диагонали. Поэтому, приступая к книге, необходимо сразу определить цель чтения и выбрать подходящий способ. Поварнин различает 4 таких варианта:
Беглый просмотр — прочитать содержание, полистать книгу, обратить внимание на заголовки и некоторые выделенные отрывки.
Неполное чтение — просмотреть содержание, найти интересующий раздел, внимательно его изучить.
Полное чтение — прочитать книгу последовательно от начала и до конца без пропусков.
С проработкой содержания — тщательно изучить книгу, «проработать», понять материал и сделать его «своим».
Третий вариант — это самый частый вариант чтения. Мы открываем книгу и начинаем читать со слов «Посвящается моим детям», пока не наткнёмся на лист с типографской информацией. Это прекрасный вариант для чтения художественной литературы. Страница переворачивается за страницей, открываются характеры героев, стремительно развивается сюжет, и мы проживаем его вместе, впитываем в себя характеры и поражаемся удивительно яркой и точной мысли автора.
Но этот вариант совершенно не подходит для чтения научной литературы. Такой способ не позволяет увидеть общую картину, он последовательно открывает нам всё более сложные разделы, но при этом не даёт никакой связи между знаниями. Поэтому для изучения сложного материала Поварнин предлагает другой способ, помогающий и понять, и навсегда запомнить.
Способ чтения и цель можно связать так:
беглый просмотр — ознакомление с книгой, стоит ли её читать;
неполное чтение — поиск ответов на вопросы;
полное чтение — для художественной и вдохновляющей литературы;
с проработкой содержания — для изучения книг для самообразования, по работе и учёбе. Здесь важно понять и запомнить новый материал.
Постоянно держать цель в голове и помнить о выбранном способе — вот путь избежать траты времени на изучение ненужной информации или, наоборот, на слишком поверхностное неэффективное чтение.
> Самообразование требует самодеятельности. Но самодеятельность эта должна выражаться не в самонабивании головы плохо понятыми сведениями, а в усвоении их и в саморазвитии.
Самый малораспространенный способ чтения — с проработкой содержания, а ведь именно он позволяет максимально качественно изучить материал. Особенно это важно при чтении книг для самообразования.
Чтение книг, журналов, брошюр, статей на сайтах — прекрасный способ усвоения информации, но только если читать правильно. Что должно остаться после того, как перевернулась последняя страница? Определённо, новые знания. Но кроме того — ясное понимание «что и зачем», связи между отдельными фактами и целостная картина изученного материала. Как получить такой результат, рассказывает брошюра «Как читать книги?» Сергея Поварнина, русского логика и философа первой половины ХХ века.
Может ли чтение быть опасным?
Чтение всегда воспринимается как путь к знаниям. И это ошибочно. Существуют откровенно плохие книги, которые коверкают и опошляют душу. Их следует избегать, закрывать на первой странице, вычислять на полках и не прикасаться даже к обложкам. С таким книжным мусором можно относительно легко бороться, тщательно отбирая литературу к прочтению и используя списки лучших книг и рекомендации. Но есть куда более страшный враг познания — поверхностное чтение. Поварнин называет людей с таким недугом «фразёрами» и «людьми с кашей в голове».
> Есть очень много людей, которые читают только для того, чтобы не думать.
> — Георг Кристоф Лихтенберг, немецкий учёный и публицист
Вспомните какого–нибудь знакомого, сыплющего цитаты на все случаи жизни и своими действиями противоречащего им, или человека–кроссворда, что знает миллион фактов на свете и при этом не понимает ни единой связи между ними. Вот это именно они — люди, знающие многое и не понимающие ничего. Появление таких типов — результат неумения читать правильно, а также отсутствия связи теории и практики. Непонятое и не закреплённое действием, знание так и остаётся в качестве сухих заученных фраз.
> Отрядом книг уставил полку,
> Читал, читал, а всё без толку…
> — Александр Пушкин, русский поэт
А чего вы хотите от книги?
Книгу можно читать, чтобы, к примеру, изучить новый раздел науки или найти ответ на вопрос. От этой цели, с которой мы обращаемся к книге, зависит и способ чтения. Чтобы разыскать информацию по вопросу, необязательно читать всё от начала до конца, а понять материал тяжело, если читать по диагонали. Поэтому, приступая к книге, необходимо сразу определить цель чтения и выбрать подходящий способ. Поварнин различает 4 таких варианта:
Беглый просмотр — прочитать содержание, полистать книгу, обратить внимание на заголовки и некоторые выделенные отрывки.
Неполное чтение — просмотреть содержание, найти интересующий раздел, внимательно его изучить.
Полное чтение — прочитать книгу последовательно от начала и до конца без пропусков.
С проработкой содержания — тщательно изучить книгу, «проработать», понять материал и сделать его «своим».
Третий вариант — это самый частый вариант чтения. Мы открываем книгу и начинаем читать со слов «Посвящается моим детям», пока не наткнёмся на лист с типографской информацией. Это прекрасный вариант для чтения художественной литературы. Страница переворачивается за страницей, открываются характеры героев, стремительно развивается сюжет, и мы проживаем его вместе, впитываем в себя характеры и поражаемся удивительно яркой и точной мысли автора.
Но этот вариант совершенно не подходит для чтения научной литературы. Такой способ не позволяет увидеть общую картину, он последовательно открывает нам всё более сложные разделы, но при этом не даёт никакой связи между знаниями. Поэтому для изучения сложного материала Поварнин предлагает другой способ, помогающий и понять, и навсегда запомнить.
Способ чтения и цель можно связать так:
беглый просмотр — ознакомление с книгой, стоит ли её читать;
неполное чтение — поиск ответов на вопросы;
полное чтение — для художественной и вдохновляющей литературы;
с проработкой содержания — для изучения книг для самообразования, по работе и учёбе. Здесь важно понять и запомнить новый материал.
Постоянно держать цель в голове и помнить о выбранном способе — вот путь избежать траты времени на изучение ненужной информации или, наоборот, на слишком поверхностное неэффективное чтение.
> Самообразование требует самодеятельности. Но самодеятельность эта должна выражаться не в самонабивании головы плохо понятыми сведениями, а в усвоении их и в саморазвитии.
Самый малораспространенный способ чтения — с проработкой содержания, а ведь именно он позволяет максимально качественно изучить материал. Особенно это важно при чтении книг для самообразования.
Факт, который нужно принять перед изучением научной литературы — её нельзя читать «в лоб», последовательно от корки до корки.
Шаг, который отделяет чтение «фразёра» от настоящего понимания прочитанного — осознание связей между фактами и ясное видение общей картины. Важно четко понимать, как связано только что прочитанное с уже известным материалом, а также представлять его место в книге в целом.
Основное правило понимания формулируется так: «От общего к частному. От частного к общему».
Сначала необходимо «охватить книгу», поймать её главный смысл и определить составляющие части. Затем углубляться в каждую часть отдельно, последовательно дробя книгу на более мелкие отрывки — продвигаться от общего к частному. Это поможет видеть структуру нового материала и понимать, что откуда следует. При этом одновременно надо осознавать положение отдельного отрывка в масштабе всей книги. Это позволяет точно определять связи, находить соответствия и понимать «а зачем это вообще придумали?» — двигаться от частного к общему. Но и это ещё не всё. Нужно находить точки соприкосновения прочитанного материала с уже известным, обдумывать и смаковать каждую мысль, осматривать её со всех сторон и проверять на прочность. Чем больше работы над текстом, тем прочнее знания.
> То, что мы вычитали в книге, должно как–то связаться с имевшимися уже у нас мыслями, сведениями, эмоциями и т.п., войти в систему их, или изменить их. В этом и состоит его работа; это и есть «отработка» содержания книги. И чем глубже устанавливается связь между прочитанным и имевшимся раньше у нас, чем больше и глубже дополнения и изменения, вносимые прочитанным, тем лучше и глубже обработка.
Так как читать?
Чтобы проработать книгу, стоит изучать её в таком порядке:
Предисловие. Здесь обычно «автор выясняет задачи, которые ставит книге». Прочитав его, можно понять суть и смысл написания книги.
Введение. В этой части автор рассказывает о том, что нужно для понимания книги, приводит уточнения, подробности изложения. Введение уточняет главную цель книги.
Оглавление. «Обыкновенно с его помощью мы можем, ещё не читая книги, узнать общий план её, основные рубрики, общее содержание, основные темы, в ней затронутые». Именно оглавление помогает постепенно переходить от общего к частному и раскрывает структуру книги.
Заключение. Чрезвычайно важный пункт. Здесь чаще всего подводится итог выполненной работы, снова указывается смысл и план книги, и формулируется главная мысль книги.
Основная часть. Чтение книги целиком, с тщательной проработкой материала.
Первые четыре пункта являются основой для изучения любой книги. В зависимости от впечатления уже можно выбрать подходящий способ чтения.
Иногда приходится всю работу ограничить именно этими четырьмя шагами, так как они позволяют кратко просмотреть и составить определенное мнение о книге.
Совет: после прочтения книги восстановите в памяти её содержание и смысл. Это помогает заметить недостаток понимания, почувствовать, какие места в книге пропущены и недостаточно разобраны.
Чтение с проработкой — трудоёмкий и непростой процесс. Редко получается его освоить с первого раза, зато даже небольшие первые шаги дают существенный скачок в понимании.
Сергей Поварнин перечисляет навыки, которые придётся развить для того, чтобы читать правильно:
Сосредотачиваться на том, что читаешь.
Выжимать самую сущность читаемого, отбрасывая мелочи.
Охватывать мысль автора вполне ясно и отчётливо: это помогает выработке ясности и отчетливости собственных мыслей.
Мыслить последовательно и осторожно — целое богатство, ничем не заменимое; кто обладает им, тот обладает самой основой настоящей образованности и не может не обладать знаниями; он обладает ключом к глубокому чтению, а вместе с тем и к более глубокому пониманию жизни.
Наконец, воображать ярко и отчётливо, как бы переживая то, что читаешь, — дар, о важности которого многие и не подозревают.
Что же мешает нам читать максимально продуктивно?
Казалось бы, раз читаешь книгу, нашёл на неё время, отказавшись от альтернатив, так читай и забирай из неё важное, медленно и обстоятельно, делай открытия автора своим достоянием. Но раз за разом книги пролетают мимо, задевая лишь поверхностно наши мысли и оставляя в памяти одно название. Причина — лень мышления. Без тщательной проработки материала, без проверки на истинность мнения автора, без обдумывания предложенных вопросов упускается возможность понять и запомнить материал. То самое пропущенное доказательство есть самое сложное место и причина непонимания.
> Автор доказывает что–нибудь. Надо проанализировать его доказательство. Но для этого требуется некоторое напряжение мышления: и вот мы скользим далее, скорее, туда, где этого усилия не требуется. Читать с наименьшим усилием, с наименьшим напряжением мысли и воображения — вот нередкая склонность. И она — величайшая помеха при чтении.
При проработке текста включаются так называемые мнемотехнические законы памяти. Например, закон осмысления — чем глубже осознать запоминаемую информацию, тем лучше она запомнится. Или закон контекста — при связывании информации с уже знакомыми понятиями новое усваивается лучше. Поэтому один из ключевых моментов для понимания книги — не лениться, каждый раз проверять прочитанное, ставить под сомнение мысли и утверждения автора. Не жалеть на это времени и сил, ведь чем глубже работа с текстом, тем прочнее впитываются полученные знания.
Факт, который нужно принять перед изучением научной литературы — её нельзя читать «в лоб», последовательно от корки до корки.
Шаг, который отделяет чтение «фразёра» от настоящего понимания прочитанного — осознание связей между фактами и ясное видение общей картины. Важно четко понимать, как связано только что прочитанное с уже известным материалом, а также представлять его место в книге в целом.
Основное правило понимания формулируется так: «От общего к частному. От частного к общему».
Сначала необходимо «охватить книгу», поймать её главный смысл и определить составляющие части. Затем углубляться в каждую часть отдельно, последовательно дробя книгу на более мелкие отрывки — продвигаться от общего к частному. Это поможет видеть структуру нового материала и понимать, что откуда следует. При этом одновременно надо осознавать положение отдельного отрывка в масштабе всей книги. Это позволяет точно определять связи, находить соответствия и понимать «а зачем это вообще придумали?» — двигаться от частного к общему. Но и это ещё не всё. Нужно находить точки соприкосновения прочитанного материала с уже известным, обдумывать и смаковать каждую мысль, осматривать её со всех сторон и проверять на прочность. Чем больше работы над текстом, тем прочнее знания.
> То, что мы вычитали в книге, должно как–то связаться с имевшимися уже у нас мыслями, сведениями, эмоциями и т.п., войти в систему их, или изменить их. В этом и состоит его работа; это и есть «отработка» содержания книги. И чем глубже устанавливается связь между прочитанным и имевшимся раньше у нас, чем больше и глубже дополнения и изменения, вносимые прочитанным, тем лучше и глубже обработка.
Так как читать?
Чтобы проработать книгу, стоит изучать её в таком порядке:
Предисловие. Здесь обычно «автор выясняет задачи, которые ставит книге». Прочитав его, можно понять суть и смысл написания книги.
Введение. В этой части автор рассказывает о том, что нужно для понимания книги, приводит уточнения, подробности изложения. Введение уточняет главную цель книги.
Оглавление. «Обыкновенно с его помощью мы можем, ещё не читая книги, узнать общий план её, основные рубрики, общее содержание, основные темы, в ней затронутые». Именно оглавление помогает постепенно переходить от общего к частному и раскрывает структуру книги.
Заключение. Чрезвычайно важный пункт. Здесь чаще всего подводится итог выполненной работы, снова указывается смысл и план книги, и формулируется главная мысль книги.
Основная часть. Чтение книги целиком, с тщательной проработкой материала.
Первые четыре пункта являются основой для изучения любой книги. В зависимости от впечатления уже можно выбрать подходящий способ чтения.
Иногда приходится всю работу ограничить именно этими четырьмя шагами, так как они позволяют кратко просмотреть и составить определенное мнение о книге.
Совет: после прочтения книги восстановите в памяти её содержание и смысл. Это помогает заметить недостаток понимания, почувствовать, какие места в книге пропущены и недостаточно разобраны.
Чтение с проработкой — трудоёмкий и непростой процесс. Редко получается его освоить с первого раза, зато даже небольшие первые шаги дают существенный скачок в понимании.
Сергей Поварнин перечисляет навыки, которые придётся развить для того, чтобы читать правильно:
Сосредотачиваться на том, что читаешь.
Выжимать самую сущность читаемого, отбрасывая мелочи.
Охватывать мысль автора вполне ясно и отчётливо: это помогает выработке ясности и отчетливости собственных мыслей.
Мыслить последовательно и осторожно — целое богатство, ничем не заменимое; кто обладает им, тот обладает самой основой настоящей образованности и не может не обладать знаниями; он обладает ключом к глубокому чтению, а вместе с тем и к более глубокому пониманию жизни.
Наконец, воображать ярко и отчётливо, как бы переживая то, что читаешь, — дар, о важности которого многие и не подозревают.
Что же мешает нам читать максимально продуктивно?
Казалось бы, раз читаешь книгу, нашёл на неё время, отказавшись от альтернатив, так читай и забирай из неё важное, медленно и обстоятельно, делай открытия автора своим достоянием. Но раз за разом книги пролетают мимо, задевая лишь поверхностно наши мысли и оставляя в памяти одно название. Причина — лень мышления. Без тщательной проработки материала, без проверки на истинность мнения автора, без обдумывания предложенных вопросов упускается возможность понять и запомнить материал. То самое пропущенное доказательство есть самое сложное место и причина непонимания.
> Автор доказывает что–нибудь. Надо проанализировать его доказательство. Но для этого требуется некоторое напряжение мышления: и вот мы скользим далее, скорее, туда, где этого усилия не требуется. Читать с наименьшим усилием, с наименьшим напряжением мысли и воображения — вот нередкая склонность. И она — величайшая помеха при чтении.
При проработке текста включаются так называемые мнемотехнические законы памяти. Например, закон осмысления — чем глубже осознать запоминаемую информацию, тем лучше она запомнится. Или закон контекста — при связывании информации с уже знакомыми понятиями новое усваивается лучше. Поэтому один из ключевых моментов для понимания книги — не лениться, каждый раз проверять прочитанное, ставить под сомнение мысли и утверждения автора. Не жалеть на это времени и сил, ведь чем глубже работа с текстом, тем прочнее впитываются полученные знания.
Посмотрите плиз, это я запускаю как обсосок, или скрип хуевый и должен долго обрабатывать.
Не начинай.
Чтобы люди знали, как правильно работать с книжками, а не просто читали их в надежде на автоматические знания, как часто отписываются ИТТ.
курс фенобарбитала пройди
Спасибо!
Она не на питоне кодит, а хуй сосёт.
Но зачем?
ах ты маленький пидрило! проецируешь свои любимые писюны во все стороны
Говно, но нормально. Как-то так выглядит 99,9 % кода, написанного на питоне. На всякий случай ещё раз прочитай PEP8 и сделай import this.
Иф длиной 249 символов насмешил. Геттеры, сеттеры и кемелкейс обычно во всяких уродских биндингах с крестов только присутствуют, в питоньем коде всё это нинужно. Странные манеры андерскорить все переменные в скоупе не нужны тоже. Если уж кровь из носу нужно использовать имя с кейвордом или стандартной функцией, то по конвенции андерскор ставят после: class_
Да, иф самого немного напрягает, но так как нужно искать вхождения и в заголовках (для тематики) и в оп-посте, пришлось писать.
Геттеры-сеттеры - привычка с жабы, буду знать.
>>867930
Чому?
Дыа. Для слабаков. Суть в том, что хочется чему-то попутно научиться, вот первый раз с супом поколупался.
Предлагаю добавить её в фак для вкатывающихся ньюфагов.
А не стоит всё в одну строку паковать.
https://gist.github.com/anonymous/7ee2bfcd16b1fbf026186e77817df270
Файнд олл всегда используется, чтобы взять первый элемент. Разве в супчике не было файнд некст или как-то так? Лучше уж сразу вытащить оппост и работать с ним, а не с первым постом в треде, с первым заголовком в треде, с первым рефлинком в оппосте и т. п. Сам понимаешь, ненадёжно это.
А вот этот код работает http://pastebin.com/Qn5eCRb3 Но после communicate поток закрывается и писать туда больше нельзя. А если вместо него stdout.read писать, то он зависает и вечно что-то ждёт. Что делать?
raise GoToFuckOut('ASSHOLE DETECTED')
Хотел максимально просто сделать. Щас погуглю сокеты. Что нужно знать про них кроме синтаксиса питона? Ни разу ими не пользовался.
не складывай строки, не пиши условия в скобках, форматируй через format, а не через % и вообще полистай pep-8
Есть прога FreePIE, в которой можно запускать скрипты питона.
Есть код - http://pastebin.com/0gn01Krg
26 строка, как я понимаю, по нажатию на капслок происходят некоторые действия.
Как сделать, чтоб эти действия происходили только когда клавиша удерживается нажатой?
в гугле выдает одну хуету
Я бы рад, но я в питоне вашем вообще нулевой.
Я так понимаю, что эти события берутся из подключаемых библиотек, верно? Где посмотреть все эти события и что они возвращают?
Вот ты, Гвида, и попался!
Я тоже, но вроде понял.
https://www.reddit.com/r/Python/comments/2zfb6g/windows_guide_to_getting_getting_keyboard_and/
GetKeyState, кажется, возвращает положение кнопки. Делаешь тоже самое, что и у тебя, но проверяешь, чтобы кнопка была нажатой, при нажатии запускается цикл, в котором идут твои действия, при отпускании цикл прерывается. Я вообще ноль, но я бы сделал как-то так, если образно:
while(нажата):
Твои действия
Спасибо. Я же говорил, что для личных целей делалось, но мне нужна была критика. На питоне первый раз пишу что-то больше 10-20 строк.
Спасибо, добра.
Алсо правильно ли юзать beatifulsoup для парсинга json? Там же всё равно xml-структура, из которой надо цеплять, допустим, текст поста.
нет конечно! import json
В питоне крайне тухло с живыми и кем-то используемыми игровыми движками. Попробуй Blender Game Engine.
Просвещение.
Скопирую с прошлого треда сюда.
Доброго вечера, господа. В кратце: Работаю почти год прогером. Пишу на джанге.
Хочу освоить asyncio но не знаю с чего начать. Точнее так, по каким-то туториалам что-то делаю/копипастю и что-то получается, но проблема не решается - я не могу написать нормально неблокирующую херню. Например классика - парсер. 10 ссылок нужно спарсить не блокируя поток. Как это сделать, если await ждет? Нашел несколько разных вармантов один из которых: создать корутины для всех ссылок и передать их в asyncio.wait () и мол они там все запустятся и первая функция, которая завершится - отдаст ответ и тд. Правильно ли это? Блять, я аж бомблю от того что нет нормального описания того, где как и что использовать. Поясните мне, тупому, блять, как с этой хуйней совладать. Если не сложно, знающие аноны, распишите подробно. Буду рад и ссылкам и прочему, но в приоритете жду человеческого объяснения основы этой. Чтоб я точно понимал, нахуя мне этот asyncio и почему и где мне его использовать
Процитирую еще один из ответов который вызвал вопросов больше чем ответов.
>>867496
Поясняю - asyncio не панацея и хорошо помогает только если у тебя затык в I/O - ждем ответ от сервера, ждем данные из сокета и тому подобное. asyncio отлично подходит для веба, где большие задержки и затыки.
Когда твой скрипт блокируется на уровне "парсинг страницы занимает 20 секунд", то asyncio никак не поможет - остается выделять парсер в отдельный процесс или запускать на отдельной машине.
>Как это сделать, если await ждет?
>создать корутины для всех ссылок и передать их в asyncio.wait ()
Ты прав, только когда конкретно .wait() вернет, контролируется аргументом return_when
Еще есть asyncio.gather() и asyncio.create_task()
Вот он в конйе пишет, что есть еще gather и create_task, не считая asyncio.wait.
Вот как понять, где какой метод лучше использовать?
Йеп, там Godot Script, но он, насколько помню, основан на питоне, и от него отличается очень и очень немногим.
Окей, с этим дерьмом я справился.
>answer > 5 и т.д.
Разве можно работать таким образом со строками? Я думал, что нужно преобразовать число в строку что бы не было всяких проблем, а тут выходит строка "ответ" больше 5. Как так? Я совсем запутался.
answer - это переменная, уёба, в которую ты передаёшь 4, 5, 6
answer - переменная. ты вызываешь функцию передаешь ей число в качестве аргумента - все правильно. при чем здесь строки?
Я не знал, что так можно. Откуда я вобще мог знать об этом?Я думал что answer это аргумент. У меня вобще крыша едет от этой всей залупы. Выходит если
def hui(pizda)
print hui(4)
то пизда будет равна 4 ? Я прост раньше думал, что нужно сначала создать переменную.
>то пизда будет равна 4 ?
да
Почитай какие-нибудь книги, где объясняют про функции. Лутца, например.
Спасибо! pickle лучше всех
Я его как раз и читаю, но до функций еще не дошел.
извиняюсь за баттхерт, нужно было излить свое негодование по поводу данного ресурса
Читаю про общение процессов через сокеты. Там везде локалхост прописывают. Без этого можно будет сделать? У меня будет 2 клиента и 1 сервер. А клиенты в стандартный ввод и вывод пишут.
Сама страница галереи в формате html, а дальше начинаются проблемы:
при нажатии на изображение открывается не новая страница, а просто подгружается фото,
а адрес изменяется на galery_name.html#page=2 и т.д.
Пока что таким образом вытаскивал изображения из отдельных страниц, с AJAX и т.д. почти не знаком, реквестов POST там вообще нет.
> Когда твой скрипт блокируется на уровне "парсинг страницы занимает 20 секунд", то asyncio никак не поможет - остается выделять парсер в отдельный процесс или запускать на отдельной машине.
это бред какой то. каким образом парсинг, не делающий блокирующих операций, может заблокировать луп!?
посмотри в сторону zeromq там есть rpc и нормальные питонячьи биндинги
А чем localhost и сетевые сокеты плохи? Можешь использовать unix sockets, если еще не зашкварился.
>каким образом парсинг, не делающий блокирующих операций, может заблокировать луп!?
В случае неблокирующего парсинга, очевидно, никак. Однако, твой вопрос подстроен под этот ответ.
"Каким образом сухая вода может намочить?"
Ты уверен, что блокирующих вызовов в парсинге нет?
Пиздец просто!
Да за такие вопросы у нас heredoc заставляют для все строковых литералов использовать!
Вот для таких редких случаев и нужны двойные кавычки!
это ты с компами слабо знаком и плавающей запятой
уверен где-то в глубине твоей шайтан-коробки в самом её процессоре валяется инструкция на машинном коде if 1 == 1.00000000034: dowork()
Эксперт в треде, все в мантиссу!
уебывай со своей донатной парашей.
С selenium бы и аутист справится. В статьях посаны и по POST вытаскивают все что нужно.
В моем случае все оказалось проще: ссылки на исходники и thumbnails были в скрипте в <body>. Что-то слишком легко получилось.
> Без этого можно будет сделать?
Разделяемая память. У нас это в вузе на первом курсе преподавали.
хаха. что это за код то такой между между? между булок твоей мамаши? наличие блокирующего кода пораждает рантаймерор вообще то:
> RuntimeWarning: coroutine 'foo' was never awaited foo()
Есть код: http://pastebin.ubuntu.com/23423531/
Он находится в файле models/__init__.py. Я хочу его разбить на модули как-то так:
models/amount.py
models/aggregation_function.py
models/modification_function.py
models/requirement.py
Собственно, если так сделать и разбить всё на файлы, то из-за взаимных импортов ничего не работает. Пытался по-всякому пердолить, но понимаю, что нужно совсем другую структуру выбирать, однако, до решения сам дойти не могу пока. Вся эта параша нужна для парсинга одного большого JSON'а, в котором описаны разные объекты с помощью этих моделей.
Буду рад любому совету. Понимаю, что мою парашу мало кому интересно будет разбирать, но больше мне спросить не у кого.
и в чем тебе помочь? переписать за тебя что бы не было взаимных импортов? может данунахуй!? алсо что за девиация такая пихать рабочий код в __init__.py?
Переписать и сам смогу, если объясните, че мне делать, если объекты зависят друг от друга, блджад.
> алсо что за девиация такая пихать рабочий код в __init__.py
Я начал в отдельную директорию пихать код, разбив его на несколько файлов, и в итоге соснул хуйца. Затем объединил всё в один файл, но оставил в отдельной директории, чтобы в будущем всё же сделать то, что хочу. Можно было догадаться, though.
>>869535
Это было сделано перед тем, как я всё объединил в один файл. Нет, не взлетит, amount.py импортит aggregation_function.py, а aggregation_function.py — amount.py. Также пробовал делать импорты в этих файлах через __init__.py, но это ещё более тупая затея, конечно же.
что бы избежать конфликтов в импортах, это конечно костыль, но для тебя не могущего нормально построить архитектуру классов, сойдет: импортируй не в начале файла а в теле функции. то есть буквально перед использованием чего то импортируй это.
когда разобьешь на модули и сделаешь как я сказал: прописать импорты в инит, то ты сможешь сделать так, в стороннем коде:
> from models import Amount
> но для тебя не могущего нормально построить архитектуру классов
Для тебя, не могущего в запятые и прописные буквы, объясняю: я пишу парсер JSON, в котором что-то вроде своеобразного AST, и структура JSON мне диктует архитектуру классов.
Числа в данном JSON могут быть представлены как и обычными числами, так и хитровыебанными объектами, ссыляющимися на ресурсы в другой части документа. В таких хитровыебанных объектах могут быть условия, которые, в свою очередь, могут включать хитровыебанные объекты, которые... OH SH~ Нутыпонел.
Как тут можно без взаимных импортов обойтись, если они уже есть в условии задачи, я не знаю.
И да, я гуглить умею и знаю про тот костыль, который ты мне посоветовал, и мне он не подходит. Но спасибо за вимание, че.
епта, ну вынеси ты ебучий общий функционал в base.py ебанаврот и импортируй его везде
>>869543
Ты мне сейчас говоришь, по сути, объединить всё в один модуль (или запихать в класс десятки лишних полей), чего я хочу избежать. Потому что это пока там всего-то нихуя кода, но нужно написать ещё много тысяч строк этого говна (на пике то, что влезло в экран а влезло туда меньше пары процентов папок, и это нужно переписать на Питон).
В языке со статической типизацией я чуть пошаманил с парсером JSON, в полях классов указал лишь интерфейсы, а потом ужа туда анмаршалил объекты, реализующие данные интерфейсы. А в Питоне вот четыре часа с импортами ебусь, пиздец.
>>869544
Если что, пока обойдусь локальными импортами, но если кто-то хочет что-то посоветовать или обоссать меня, то я еще послежу за тредом. Спасибо.
ну тебе полюбому надо абстрагироваться от реализаций при таком количестве кода, иначе ждет тебя ад. хз как это сделать без базовых классов.
Я совсем не понимаю, похоже, что ты подразумеваешь под базовым классом. Это и есть четыре базовых класса документа, лол: числа, условия, агрегирующие и модифицирующие функции. Но они достаточно заёбистые для того, чтобы причинить боль и страдания. Часто классы из одной смысловой группы не имеют почти ничего общего, кроме интерфейса, если так можно в питоньем контексте выразиться, поэтому наследоваться от чего-то смысла нет.
Нужно, наверное, хитрую фабрику городить.
Двигаюсь в этом направлении. Говнокод, наверное, но уже лучше, чем локальная параша.
> да, какие блокирующие вызовы делает bs, lxml, regexp в конце концов?
re кстати сишный и годами доставляет баттхерты через GIL.
Ты уж объясни, что не так. Я двенадцать часов на Питоне пишу. Одиннадцать из них сейчас без остановки.
Суть в том, что смотрю я на этот код и не понимаю, что он должен делать. Вообще ноль идей в этом плане.
Ну так ты же не знаешь задачу. Ясен хуй, в отрыве от данных это как хуй знает что выглядит.
Кодакадемия
>наличие блокирующего кода пораждает рантаймерор вообще то:
>> RuntimeWarning: coroutine 'foo' was never awaited foo()
Ты заебал. Нихуя не понимаешь, но мнение имеешь.
Хотел вот форму комментов сделать к посту, но комменты создаются а к посту не привязываются, если из моделей у foreign key убрать null=True, то выдает NOT NULL constraint failed:main_articlecomment.article_id при отправке формы
Я передаю id через hidden input в форме в реквесте оно присутствует, а в sql-запросе все-равно None
Ну так у тебя форма про поле article не в курсе, ты же его не указал в списке fields
указывал, тогда условие form.isvalid() не выполняется, и происходит raise Http404
Поскольку у тебя article_id доступен во view, можешь сделать так:
article_comment = form.save(commit=False)
article_comment.article_id = article_id
article_comment.save()
и поле не нужно
Это потому что у поля name кто-то поставил article_id вместо article
cпасибо большое, так заработало. С джанго без бутылки не разберешься
Алсо, ты можешь там же пройти курс по нейронкам, потом по Machine Learningу на Курсере, участвовать в соревнованиях на Kaggle и прийти к успеху.
Благодарю.
>>869717
Звучит дико интересно, у меня нейроные сети ассоциируются с будущем и прочими ништяками в которых я максимально далек, да и судя по всему для обучения по твоему списку требуется знание английского на хорошем уровне который у меня сильно хромает. Честно говоря, у меня в планах ближе к лету попытаться устроиться на работу. Считаешь это действительно поможет для трудоустройства?
Постоянно проигрываю с мамкиных вкатывальщиков в deep machine learning.
Без серьезной математической подготовки и опыта работы с big data никому ты нахуй не будешь нужен.
Например есть
class Cat():
def __init__(self):
self.legs = 4
И допустим его потомок класс CreepyCat у которго legs должно быть 8 или 2 мутанты хуй знает.
Как это сделать?
Сделать инит в потомке, очевидно же.
Переопределенный метод не вызывает по умолчанию метод родителя.
Тебе надо явно вызывать super().__init__() для этого.
Спасибо.
Просто если свойств дохуя. 10+ по умолчанию. А изменить надо только например 2.
Как их лучше перечислять в родителе?
def __init__(self, x, y, z... n)
self.x = 1
self.y=2
.
Или запихивать прям в init? не помню где то я такое видел
def __ init__(self, x=1,y=2.. n)
self.x=x
self.y=y
>>869752
class CrCat(Cat):
def __init__(self):
super(Cat,self).__init__()
self.legs=8
А остальные ? Выдаст has no atribut
Только начал учить питон а уже нихуя не понимаю.
1 import sys
2 Zero = [" ",
3 " ",
4 " ",
5 " ",
6 " ",
7 " ",
8 " "]
9
10 One = [" ",
11 " ",
12 " ",
13 " ",
14 " ",
15 " ",
16 " "]
17
18 Two = [" ",
19 " ",
20 " ",
21 " ",
22 " ",
23 " ",
24 " *"]
25
26
Digits = [Zero, One, Two]
try:
30 digits = sys.argv[1]
31 row = 0
32 while row < 7:
33 line = ""
34 column = 0
35 while column < len(digits):
36 number = int(digits[column])
37 digit = Digits[number]
38 line += digit[row] + " "
39 column += 1
40 print(line)
41 row += 1
В качестве аргумента sys.argv[1] выступают цифры.
Итого, на 36 строчке
number=int(digits[column])
Что за блядь хуйня? Он хочет получить столбец цифры? Нихуя не понятно, но оно почему-то работает.
Только начал учить питон а уже нихуя не понимаю.
1 import sys
2 Zero = [" ",
3 " ",
4 " ",
5 " ",
6 " ",
7 " ",
8 " "]
9
10 One = [" ",
11 " ",
12 " ",
13 " ",
14 " ",
15 " ",
16 " "]
17
18 Two = [" ",
19 " ",
20 " ",
21 " ",
22 " ",
23 " ",
24 " *"]
25
26
Digits = [Zero, One, Two]
try:
30 digits = sys.argv[1]
31 row = 0
32 while row < 7:
33 line = ""
34 column = 0
35 while column < len(digits):
36 number = int(digits[column])
37 digit = Digits[number]
38 line += digit[row] + " "
39 column += 1
40 print(line)
41 row += 1
В качестве аргумента sys.argv[1] выступают цифры.
Итого, на 36 строчке
number=int(digits[column])
Что за блядь хуйня? Он хочет получить столбец цифры? Нихуя не понятно, но оно почему-то работает.
http://pastebin.com/xukrMEti
Вот например я ввел цифру 5.
number = int(digits[column])
Это значит что number = int(5[0]) но питон мне в интерактивном режиме говорит иди нахуй даун, даже если я присвоил какие-нибудь значения для digits и column
Отмена, я понял.
Там в 3 строке случайно убрал перед скрином, на вывод не виляет.
Как в питоне лучше писать переменные/классы/функции?
functon_foo или functionFoo?
Класс с заглавной?
обычные переменные x_foo или xFoo?
https://en.wikipedia.org/wiki/Python_syntax_and_semantics
Только всё равно не пойму почему здесь >>869777 такой результат.
Ок. Спасибо.
Просто встречал несколько видов написания. И лесенку и подчеркивания. Глобальные переменные капсом.
Попробуй по русски псведокодом описать что там делается по шагам. Для себя в комментах рядом.
В питоне дохуя полезных фич. Типо итертулз или уже встроенных методов. Прям просто дохуя. Heap встроенный. Ахуеть.
Да я в курсе. Всего не охватишь.
Ну фиг знает. Это мой план на ближайшие года два-три, с учетом учебы в вузе. Вообще тебе (и мне) нужно будет еще по хардкору заботать алгоритмы и теорвер со статистикой. Ну и начинать старт не с джуниора, а со стажера. Еще можно закатиться в магу по датасайенс, например.
Привет ребята! Я психолог кун, вкатываюсь в жс и заодно хочу написать о связи популярных языков (петон, раби, жиес) с нетрадиционной сексуальной ориентацией.
Есть готовые поделиться своим опытом разработки?
Нужно проверить, есть ли в адресе "res" после названия доски, если нет - добавить.
Я представляю это так:
[CODE]url = 'https://2ch.hk/pr/res/867611.html' (М)
url = url.split(r'/')
if url[3] != 'res':
url.inser(3, 'res')
url = '/'.join(url)
[/CODE]
Но мне такое решение кажется всратым. Есть идеи?
Нормальное решение, вроде бы.
Только я бы сначала проверял, что 'res' не входит в url, а потом уже сплитил.
Вот решение с регулярками, но не такое простое как у тебя https://gist.github.com/anonymous/c5acdcebf6bea4df421d1ca93eee5fc1
Хочу учить ЯП, выбрал питон. С алгоритмами все хуево, пытаюсь понимать как пишутся проги, уходит много времени на 1 маленькую прогу в примерах в книжке.
Каковы шансы что я вкачусь и буду получать хотябы 40-50к?
Я не из тех у кого "горят глаза" на программировании, но буду как-то сквозь боль и немогу пытаться что-то делать.
100%. Сиди и ебашь потихоньку. В джагну вкатывайся или в авто тестирование.
Смотря что ты хочешь с ними делать. Иногда можно и вложенными последовательностями можно обойтись.
Хочу с уже готовыми решениями. Мне лень самому делать все эти велосипеды. Типа повернуть на 90 градусов, найти количество элементов больших n, просуммировать диагональ или транспонировать.
root = Tk()
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)
data = {}
def load_data():
for i in range (0, len(data)):
insert_text(data + '\n', i)
def insert_text(post, i):
t = Text(root, wrap=WORD, yscrollcommand=scrollbar.set)
t.insert(END, post)
t.pack(fill="both", expand=1)
def on_finish():
root.mainloop()
load_data()
on_finish()
Как получить из последовательности вроде "\xcd\xe8\xf1\xee\xed" строку русской кодировки? Строка приходит из html, при этом латиница там читается нормально, а русские символы именно так.
Использовал питно по большей части для мелкой автоматизации и всякой параши в онлайн-курсах, сейчас задумался о поиске работы.
Посмотрел последние версии python3, какие-то асинки, futures, вообще охуеть, ничего непонятно.
1. Нужно ли это всё будет для веба?
2. Есть ли вменяемые ресурсы где это объясняется для людей которые могут только в последовательное исполнение одного треда?
Никак. Наверняка миллион велосипедов на пукпук, но ты же сказал "нормально", а "нормальная" работа с матрицами в питоне - это строго нампай.
что учить, чтобы начать зарабатывать на фрилансе?
Ну, не камерунский же.
Это не оскорбление, а перспективный в настоящее время язык для всех новых проектов.
Со сцупу не путаешь? Нампай не жирный. Собственно, там внутри только одна матрица и матричные операции и есть по сути. Ну и ещё небольшая кучка легаси сбоку.
Если я пишу эту строку в самом скрипте то работает, если получаю из разметки то получаю её же. Суть в том, что кроме русских букв там все приходит в хорошем виде.
Я короче не разбирался что там у тебя, но попробуй еще на 17 строке сделать так:
>return urlopen(url).read().decode('utf-8')
например, когда проверяется, находится ли к в списке каком-нибудь.
if n in range(10): ...
>.decode('utf-8')
вообщем зашёл на страницу, нашёл в мете кодировку и дописал в функцию:
return urlopen(url).read().decode("windows-1251")
больше никаких проблем. Спасибо за наводку, анон
The membership test operators (in and not in) are normally implemented as an iteration through a sequence. However, container objects can supply the following special method with a more efficient implementation, which also does not require the object be a sequence.
Начал изучать сабж. Сидел изучал, игрался с консолькой, разворачивал строки, посчитал интегральчики, нарисовал график, сделал гифку. Пару раз копипастнул код для графики, в остальном - язык как язык.
И тут дело доходит до основ ООП.
Читаю учебник - чёт не то, не залезает тема в башню.
Например смотрю на пикрил.
Вижу 5 строк. 15 лексем.
Среди этих 15ти лексем - 4 раза повторяется селф, 4 раза - вал, 2 раза - деф.
Итого для описания этой конструкции и всего ее функционала, если верить здравому смыслу, теории формальных систем, общим представлениям о языке и тп - нужно не 15 лексем, а 8.
Итак пишем:
obj1 = Foo(1)
Что означает вроде бы: выделим памяти немношко, под одну переменную типа инт , немножко под имя конкретного объекта.
Далее:
obj1.printVal() -
вывод значения той самой переменной.
Вопрос: это гайд, на который я ссылаюсь, хуевейший ? Или я чего то не вдупляю?
Зачем для доступа к переменной городить такую прозу?
почему нельзя сделать просто print(obj1.val) ?
Зачем каждый раз в каждом классе писать метод __init__ ? Вот нахуя? Почему этот алокейшен не встроен в сам функционал оператора Class?
Какой в этом смысл?
в чем смысл self.val = val? Что тут происходит? Почему мне смысл этой строки понять сложнее, чем доказательство теоремы остроградского-гаусса или сложнее чем решение несобственных интегралов, лол?
Зачем тут def printVal(self): в скобках стоит лексема селф? В чем смысл? Что это дает, если в теле метода и так указано блять: берем val свой, родной val, Валюшечка мой родной, именно тебя печатаем. Нахуя ?
Вот из того же гайда:
You can see that both methods take a parameter called self. It doesn't have to be called self but this is the Python convention and while you could call it this or me or something else, you will annoy other Python programmers who might look at your code in the future if you call it anything other than self. Because we can create many instances of a class, when a class method is called, it needs to know which instance it is working with, and that's what Python will pass in via the self parameter.
"Поскольку мы можем создать множество особей класса, то в случае вызова метода класса, метод должен знать, с какой конкретно особью он работает."
annoy other programmers? что сука?
Вопрос - каким СУКА образом лексема селф помогает бедному методу уточнить, куда в памяти обращаться? Зачем нужны эти ебучие четыре буквы блять? ЕСЛИ БЛЯТЬ ПРИ ВЫЗОВЕ МЕТОДА МЫ И ТАК В САМОЙ ОПЕРАЦИИ ВЫЗОВА ЯВНО УКАЗЫВАЕМ ИМЯ ОБЪЕКТА?
obj1.printVal() ВОТ СУКА ТУПОЙ МЕТОД СМОТРИ ХУЛИ ТЕБЕ НЕ ЯСНОГО ПРЯМО перед ТОБОЙ СТОИТ ИМЯ ОБЪЕКТА КОНКРЕТНОГО ОТКРОЙ ГЛАЗА КРОВЬ КИШКИ ГОВНО
Пусть есть Класс1, и две его особи - Объект1 и Объект2.
В Классе1 есть 2 метода: Класс1.метод1 и Класс1.метод2.
Ситуация первая:
Нужно, чтоб Класс1.метод1 работал с Объектом1.
Пишем нечто вроде: Объект1.метод1().
Всё понятно - метод класса "знает", с каким объектом ему работать, блять. Потому что сам метод уже связан с вызываемым Объектом1 .
Зачем писать Объект1.метод1(сам) ?
Ситуация вторая:
Нужно, чтоб метод "работал" с Объектом2. Окей.
Объект2.метод1().
Что вообще значат слова it needs to know which instance it is working with ?
Что за хуетень? Еще раз: при вызове метода мы не пишем Класс1.метод1(). В таком случае я бы понял уточнения. Типа Класс1.метод1(Объект1). Но это явно излишне. Поэтому
Мы пишем СУКА конкретно Объект1.метод1().
А какие еще могут быть блять варианты? А?
метод1() к какому еще объекту может обращаться? Объект1.метод1(Объект2) ?
Если они принадлежат одному классу - то это излишне. Ведь метод1 у них общий.
операнды Объект1.метод1(Объект2) и Объект2.метод1(Объект2) должны дать одинаковый результат.
А если они принадлежат разным классам, тогда нахуй вызывать метод одного класса на объект другого класса?
http://pythoncentral.io/introduction-to-python-classes/ - сука. Я пользуюсь интернетом уже лет 10. Прочитал за эти 10 лет не менее сотни книг. Литературы блять, толстого прочитал, учебники по матану, по сука стохастическим процессам. И это блять первая страничка текста в моей жизни, которая вызывает только такую реакцию. Либо я сегодня получил инсульт, либо автор мануала уебок-дегенерат, либо весь питон это глобальный заговор нахуй! НО нету тут варианта что в self.val = val или в МОЖЕТ БЫТЬ БЛЯТЬ КАКОЙ ТО ПРАКТИЧЕСКИЙ СМЫСЛ, или в def printVal(self) !
ХОЧУ ТЕПЕРЬ ТОЛЬКО УБИВАТЬ УВИЖУ ПИДОРА ПИТОНЩИКА НОЖ ЕМУ В ЖИВОТ СРАЗУ
Начал изучать сабж. Сидел изучал, игрался с консолькой, разворачивал строки, посчитал интегральчики, нарисовал график, сделал гифку. Пару раз копипастнул код для графики, в остальном - язык как язык.
И тут дело доходит до основ ООП.
Читаю учебник - чёт не то, не залезает тема в башню.
Например смотрю на пикрил.
Вижу 5 строк. 15 лексем.
Среди этих 15ти лексем - 4 раза повторяется селф, 4 раза - вал, 2 раза - деф.
Итого для описания этой конструкции и всего ее функционала, если верить здравому смыслу, теории формальных систем, общим представлениям о языке и тп - нужно не 15 лексем, а 8.
Итак пишем:
obj1 = Foo(1)
Что означает вроде бы: выделим памяти немношко, под одну переменную типа инт , немножко под имя конкретного объекта.
Далее:
obj1.printVal() -
вывод значения той самой переменной.
Вопрос: это гайд, на который я ссылаюсь, хуевейший ? Или я чего то не вдупляю?
Зачем для доступа к переменной городить такую прозу?
почему нельзя сделать просто print(obj1.val) ?
Зачем каждый раз в каждом классе писать метод __init__ ? Вот нахуя? Почему этот алокейшен не встроен в сам функционал оператора Class?
Какой в этом смысл?
в чем смысл self.val = val? Что тут происходит? Почему мне смысл этой строки понять сложнее, чем доказательство теоремы остроградского-гаусса или сложнее чем решение несобственных интегралов, лол?
Зачем тут def printVal(self): в скобках стоит лексема селф? В чем смысл? Что это дает, если в теле метода и так указано блять: берем val свой, родной val, Валюшечка мой родной, именно тебя печатаем. Нахуя ?
Вот из того же гайда:
You can see that both methods take a parameter called self. It doesn't have to be called self but this is the Python convention and while you could call it this or me or something else, you will annoy other Python programmers who might look at your code in the future if you call it anything other than self. Because we can create many instances of a class, when a class method is called, it needs to know which instance it is working with, and that's what Python will pass in via the self parameter.
"Поскольку мы можем создать множество особей класса, то в случае вызова метода класса, метод должен знать, с какой конкретно особью он работает."
annoy other programmers? что сука?
Вопрос - каким СУКА образом лексема селф помогает бедному методу уточнить, куда в памяти обращаться? Зачем нужны эти ебучие четыре буквы блять? ЕСЛИ БЛЯТЬ ПРИ ВЫЗОВЕ МЕТОДА МЫ И ТАК В САМОЙ ОПЕРАЦИИ ВЫЗОВА ЯВНО УКАЗЫВАЕМ ИМЯ ОБЪЕКТА?
obj1.printVal() ВОТ СУКА ТУПОЙ МЕТОД СМОТРИ ХУЛИ ТЕБЕ НЕ ЯСНОГО ПРЯМО перед ТОБОЙ СТОИТ ИМЯ ОБЪЕКТА КОНКРЕТНОГО ОТКРОЙ ГЛАЗА КРОВЬ КИШКИ ГОВНО
Пусть есть Класс1, и две его особи - Объект1 и Объект2.
В Классе1 есть 2 метода: Класс1.метод1 и Класс1.метод2.
Ситуация первая:
Нужно, чтоб Класс1.метод1 работал с Объектом1.
Пишем нечто вроде: Объект1.метод1().
Всё понятно - метод класса "знает", с каким объектом ему работать, блять. Потому что сам метод уже связан с вызываемым Объектом1 .
Зачем писать Объект1.метод1(сам) ?
Ситуация вторая:
Нужно, чтоб метод "работал" с Объектом2. Окей.
Объект2.метод1().
Что вообще значат слова it needs to know which instance it is working with ?
Что за хуетень? Еще раз: при вызове метода мы не пишем Класс1.метод1(). В таком случае я бы понял уточнения. Типа Класс1.метод1(Объект1). Но это явно излишне. Поэтому
Мы пишем СУКА конкретно Объект1.метод1().
А какие еще могут быть блять варианты? А?
метод1() к какому еще объекту может обращаться? Объект1.метод1(Объект2) ?
Если они принадлежат одному классу - то это излишне. Ведь метод1 у них общий.
операнды Объект1.метод1(Объект2) и Объект2.метод1(Объект2) должны дать одинаковый результат.
А если они принадлежат разным классам, тогда нахуй вызывать метод одного класса на объект другого класса?
http://pythoncentral.io/introduction-to-python-classes/ - сука. Я пользуюсь интернетом уже лет 10. Прочитал за эти 10 лет не менее сотни книг. Литературы блять, толстого прочитал, учебники по матану, по сука стохастическим процессам. И это блять первая страничка текста в моей жизни, которая вызывает только такую реакцию. Либо я сегодня получил инсульт, либо автор мануала уебок-дегенерат, либо весь питон это глобальный заговор нахуй! НО нету тут варианта что в self.val = val или в МОЖЕТ БЫТЬ БЛЯТЬ КАКОЙ ТО ПРАКТИЧЕСКИЙ СМЫСЛ, или в def printVal(self) !
ХОЧУ ТЕПЕРЬ ТОЛЬКО УБИВАТЬ УВИЖУ ПИДОРА ПИТОНЩИКА НОЖ ЕМУ В ЖИВОТ СРАЗУ
Именно пример, а не ссылку на какую-то хуйню. Желательно с комментариями. Гуглил час - нихуя не понял.
Еще пример:
class Customer(object):
...
def withdraw(self, amount):
....
return self.balance
So what's with that self parameter to all of the Customer methods? What is it?
Ну давай сука поясни. Я же блять зашел к тебе на страницу, загрузил твою ебучую рекламу.
when we say def withdraw(self, amount):, we're saying, "here's how you withdraw money from a Customer object (which we'll call self)
That's not me making analogies, either. jeff.withdraw(100.0) is just shorthand for Customer.withdraw(jeff, 100.0), which is perfectly valid (if not often seen) code.
Что блять?
Хочешь сказать, автор, что лексема селф нужна только чтоб иметь 2 варианта написания?
Чтоб я мог, если опустилось левое яичко, написать jeff.withdraw(100.0), а если правое - то Customer.withdraw(jeff, 100.0)?
А нахуй мне всё равно твой селф сдался, если jeff не может быть особью никакого другогокласса, кроме Customer?
ШТО СУКА? "Селф" нужен только чтоб парсер проигнорировал первое "место" внутри скобок перед запятой в случае короткой записи jeff.withdraw(100.0), а случае длинной записи Customer.withdraw(jeff, 100.0) - на месте селф был опциональный указатель на конкретный объект? И ради такого дерьма блять нужен такой жопорукий синтаксис? И ЭТО БЛЯТЬ БАЗОВАЯ КОНСТРУКЦИЯ СИНТАКСИСА ООП?
https://www.youtube.com/watch?v=xs5Ro2FXxP4
Всё это дерьмище, намекаете вы, нужно только чтоб искусственно создать неоднозначность в коде, чтоб тупому манагеру пустить пыль в глаза?
В Джанго бай экзампл в главе о написании е-лёрнин платформы погляди
>Зачем для доступа к переменной городить такую прозу?
Data hiding.
>Зачем каждый раз в каждом классе писать метод __init__ ?
Конструктор, ВНЕЗАНО может быть не таким тривиальным.
>в чем смысл self.val = val?
А как нужно? Как отличать instance members от локальных переменных?
Насчет self в параметрах согласен. Какая-то питонская пушка.
Попробуй руби - легко генрировать геттеры, сеттеры; explicit self не нужон, есть @.
мимошел
Братья, нас тут шпион-вербовщик, нужно подкрепление
У меня например есть приложение где мне нужно для нормального старта запустить редис воркер и гуникорн, как сделать чтобы одной командой запускалось два процесса и мне не приходилось держать по два ssh соединения?
Ебаный вопрос: как лучше делать? На протяжении одного представления несколько раз (в зависимости от методов запроса и их параметров) возвращать render с разным контекстом? Или возвращать только один раз render в конце и в шаблоне уже добавить проверки (но тогда уже нужно будет инициализировать переменные контекста пустыми значениями, потому что будут ворнинги о возможности использования неинициализированных переменных). Или вообще лучше раскидать это все по разным представлениям и не загромождать?
Не пинайте
как у меня запятые плавают-то..
>>> sys.version
'3.3.6 (default, Sep 22 2016, 23:32:57) [MSC v.1600 64 bit (AMD64)]'
>>> sys.getsizeof(dict())
288
Я тут собрался дерево строить с десятками миллионов узлов, а тут такое... Какие есть варианты? Может можно инишиал капасити подкрутить, или другую структуру заюзать (скиплист устроил бы)? Или юзать лист [key1, value1, key2, value2, ...], и дегрейдить его в мапу при заполнении?
Нужен быстрый лукап и вставка по чайлдам ноды.
32-битный питон не предлагать.
>django way
DRY https://ru.wikipedia.org/wiki/Don’t_repeat_yourself
Ну в целом, пытайся делать все как можно проще. Чем меньше кода - тем лучше.
Ну и старайся в шаблонах не делать много ветвлений и вложенных циклов, а переноси это в представления, если возможно.
Procfile в случае с хероку, например.
Спасибо
Ввожу числа, но как только в строку ничего не пишу и нажимаю ентер у меня вылетает анекспектед енд оф файл, как лечить?
Задача: запросить у пользователя цвет, которым нужно закрасить фигуру. Для решения использую askcolor(). Проблема: askcolor() возвращает значение вида #АААААА, а примитивы фигур красятся с помощью color=(red,green,blue), где red, green, blue принимают значения от 0 до 1. Думаю, мне надо расчленить строку из askcolor() на три пары, после чего каждое значение преобразовать и поделить на 255. Правильно думаю? Python 2.7, ибо использую библиотеку visual.
По поводу преобразования нагуглил
def hex_to_rgb(value):
value = value.lstrip('#')
lv = len(value)
return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))
>анекспектед енд оф файл
Такой ошибки не должно быть, а вот когда ты просто нажимаешь Enter, то твоя программа будет бросать исключение, потому что не сможет преобразовать пустую строку в целое число.
while True - бесконечный цикл. значит тебе надо предусмотреть выход из него.
http://pastebin.com/Pr5CDrqu
Можешь дать какие-нибудь свои контактики?
Оно работает но я не понимаю почему, лол. 5 минут назад я заставил её работать точно также но больше строчек кода.
Обьясни почему тут при пустой строке и вышел из цикла, а в моем варианте не вышел не пожалуйста
И да, олсо, если я напишу туда 'dsadsads' то никакой ошибки не происходит, а должна же.
>>870892
Все все я понял.
Просто запутался между свои скриптом где было if...break и твоим где break прерывает while.
Долго ебусь, но не вдупляю. Код: http://pastebin.com/8uCLZAE6 Ругается:
temp=''.join(ch_color)
TypeError: sequence item 0: expected string, tuple found
Выходит, tuple нужно перегнать в string. Гуглил, нашёл http://stackoverflow.com/questions/3886669/tuple-to-string , http://stackoverflow.com/questions/9525399/python-converting-from-tuple-to-string , http://stackoverflow.com/questions/8704952/python-convert-tuple-to-string , http://stackoverflow.com/questions/19641579/python-convert-tuple-to-string , но не понял, как это реализовать в моём случае. Говорю сразу,я - жуткий нуб в питоне, потому хотелось бы получить детальное объяснение, которое приведёт меня к правильному решению.
Sublime
from tkColorChooser import askcolor
print help(askcolor)
value = askcolor()
print(type(value))
print(value)
print(value[0])
Через 55 минут.
:~$ python3
Python 3.5.2+ (default, Sep 22 2016, 12:18:14)
[GCC 6.2.0 20160927] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 1.4+1.4+0.1
2.9
>>> 7.1+5.8
12.899999999999999
Это как, это что, но главное - ПОЧЕМУ, БЛИН, ОНО РАБОТАЕТ ПО-РАЗНОМУ? Можно ли предугадать, в каком случае его перекосит, а когда сосчитает правильно?
Нет, мне действительно это интересно.
Я видел утверждения с какими-то левыми отмазками про повышеннуюа на практике - пониженную, LOL точность, но так и не понял, почему это происходит в одних случаях и не происходит в других.
Ага. Напрмер, тут читал:
http://asvetlov.blogspot.ru/2011/02/blog-post.html
Но во-первых в 2.7 и 3.5 это работает иначе, а во-вторых если у него:
>Во первых, это одно и то же число:
>>>> 4.31 == 4.3099999999999996
>True
То у меня иначе:
>>>> 7.1+5.8 == 12.9
>False
>>>> 12.9 == 12.899999999999999
>False
Хотя
>>>> 4.31 == 4.3099999999999996
>True
И нигде не вижу, как понять, сорвет ему крышу или не сорвёт.
Как вообще можно пользоваться языком, который не умеет складывать числа?
Это Гвидо ван Россум - лошара. Второй язык с таким ПРОВАЛОМ хуй найдёшь вообще.
Большие мальчики используют супервизоры для этого. systemd, supervizord, upstart, тысячи их.
А хитрые мужички юзают docker
Ну, например, любой другой.
Оказалось то язык - говно!
https://habrahabr.ru/post/314062/
Молодый технический специалист мэилрушечки взял и переписал безумное дерьмище в ядре питона, тем самым увеличив дохуя его потребление памяти.
На что ему ответил питох ван питушкинс:
>>>>В сентябре же мне ответил сам Гвидо ван Россум: «Раз за всё это время никто к патчу интереса не проявил, — значит, никого другого потребление памяти парсером не заботит. Значит, нет смысла тратить время мейнтейнеров на его ревью.»
"Мне не интрересно, нет смысла тратить время, мне всё-равно, куд-кудах, ресурсы нинужны, главное чтоб было прикольнинько" -ПИЗДОС!!! ЭТО ЯЗЫК ДЛЯ АУТИСТОВ! ПАЛУНДРА! ПЕТУХИ ВЗБУНТОВАЛИСЬ!
>>870701-кун
Мне понятен смысл блять, мне не понятен смысл такой ЕБАНУТОЙ КРИВОЖОПОЙ формы этого функционала.
>>Data hiding.
Прятать от манагера факт своей никчемности?
>>Конструктор, ВНЕЗАНО может быть не таким тривиальным.
Блять я понимаю что можно любой конструктор нагородить, любой синтаксис чтоб был сверху. Вопрос был в другом. Или ты питонщик и уже не соображаешь нихуя тоже?
>>А как нужно? Как отличать instance members от локальных переменных?
Так в этом дело?
Серьезно?
"Как нужно?" ??!
"А как отличать?"
Мб питон для тех, у кого Imagination NYI?
Миллион способов.
Миллиард блять способов конструкций поприятней и покороче, чтобы разделить члены класса и члены особей.
Нет вы видели этого пидораса? Вопросы он мне задает.
А как тебе декораторы сука ?
Писать такое типа норм
@ХУЮШКИНС
И тебе даже в голову мразь не приходит что можно точно так же лексемой какой-нибудь типа @ или 8===> или ХОЧЕШЬ ЦАПЛЕЙ ПОСТОЮ тупо отграничить эти два неймспейса?
Вместо всей этой ебли с андерскорами с фиксированной бессмысленной лексемой инит с def _____моча_____(говно) ?
В чем нет , НЕТ НЕТУ БЛЯЯЯЯТЬ никакого смысла?
Что это похоже на то, будто ребенок с пятью хромосомами ведь измазанный в говне слепил из говна кусок говна, поднял, кривя один залипший глаз и улыбаясь дыркой в пол-ебала вместо рта, поднял это всё на культях и восхищенные аутисты-манагеры говорят "Представляем вашему вниманию новый ООП-язык - питон!"
Хуя пичот. Пили свой язык с блекджеком и шлюхами.
ебать ты дебил
я имею ввиду каждый выходные.
Ну панимаешь братиш, какое дело. self в пистона - это как this в крестах, то бишь указатель на экземпляр.
обычно у меня пара батников на рабочем столе(запустить сервер, шелл, просто консоль в папке), а в этот раз так не получилось - при активации виртуального окружения команды из батника перестают выполняться. Интернеты читал, но видимо не могу правильно сформулировать вопрос - ничего не нашел.
>рабочий стол
>батники
Мы с ОСью петушиной
Идем дорогой трудной,
Идем дорогой трудной,
Дорогой непрямой
Заветный код исходный
Исполнит мудрый Гвидо
И Джанга заработает
На виртуаленве.
Ну ты понел
Гвидо все правильно сказал:
"Если у тебя в коде какие-то ебать-колотить структуры, то используй вместо этого JSON, он для этого предназначен.
А если ты запускаешь миллионы крошечных скриптов, вместо того чтобы написать нормальный сервис, то ты дебил просто говорить не буду с тобой чмо игнорирую."
Хочешь нормально работать на питоне - ставь линупс.
Да, поначалу кажется "да ну его нафиг, мне бы научится".
Но питон учится быстро и вот ты уже пытаешься запустить БД, сервер, редис, обработку изображений и завернуть все это в докер.
Поверь мне, лучше это делать в линупсе.
Ну, для простых проектов у меня например такой стэк:
1. nginx в качестве обратного прокси и раздатчика статики.
2. venv для вируального окружения
3. gunicorn как WSGI сервер (а что там настраивать-то?)
4. django
5. Celery для фоновых задач (почту отправить, картинку отресайзить и т.п.)
6. Redis для очереди celery + кэш для джанги
7. PostgreSQL ессесно
8. supervizor для запуска всего этого зоопарка и перезапуска при падении.
Вроде все.
у меня уже есть на виртуалке линукс таки заебался с установкой dryscrape под винду, да, но я ахуею сразу django+python+nix учить.
Вопрос был про консоль винды и ее работу с virtualenv, а у тебя ответ из серии "не заводится машина - смени марку".
плюс линя в том под под ним не возникает 95% проблем с питоном, что возникнут под виндой.
По говну за городом можно и на мерсе s-class ездить. Но зачем, если есть старый добрый УАЗик?
сорь за нубский вопрос, я имел ввиду почему не сипользуешь nginx в связке с uwsgi, а используешь gunicorn?
Разницы практически нет, выбирай что тебе удобнее.
Вернешься к этому вопросу когда дойдешь до "ну как же обработать еще пару тысяч запросов в секунду?"
ну я и хотел узнать чем гуникорн удобнее? я просто задеплоил как оф доках джанго написано, а там был uwsgi первым)
>ну я и хотел узнать чем гуникорн удобнее?
Пробуешь одно и другое, выбираешь. Вот и все.
Переключиться потом легко, pip install и пара строк в конфиге.
А ты на хероку деплоил джангу? как понять что у меня работает именно гуникорн?
ТАм оче ебнутый туториал, который не просит вырубать debug mode. В итоге я задеплоился в режиме дебага. При этом все остальные иструкции тоже соблдюдал, в режиме debug = false сервак отдает 500ый ответ.
первый раз деплою на хероку
Может кинете каких-нибудь гайдов? А то там чет ваще сложно с конфигами. апп на фласке
Извини бро, на хероке не деплоил, не могу помочь.
Вот у меня в settings.py
LANGUAGES = (
('ru', "Русский"),
('en', "English"),
)
LANGUAGE_CODE = 'ru'
чому у меня по-умолчанию один хуй на новых устройствах открывается на английском? Как заставить django жрать LANGUAGE_CODE ?
Борща пожалуйста
а то что с LANGUAGES будет отличаться? там тоже менять на ру-РУ?
https://docs.djangoproject.com/en/1.10/topics/i18n/translation/
tldr - Джанго сначала смотрит на заголовок Accept-Language запроса, и только если его нет, использует LANGUAGE_CODE.
Так что смотри свои устройства.
Любой другой wsgi-compliant сервер.
Как проще всего заставить джанго вхуяривать изначально русский, а уже если переключат то другой?
Ёпт, сделано же все как надо: требуют буржуинский - отдаем буржуинский.
А ты хочешь: требуют буржуинский - отдаем мальчиш-кибальчишеский.
Что за фагготрия?
у меня сайт в зоне ру, а отдаёт всем английскую версию, при чём с самых разных девайсов протестировал
а вхуряить вместо
LANGUAGES = (
('ru_RU', "Русский"), ...
что бы урлы уродливые иметь типа сайт.ру/ру-ру/хуйпизда - я не хочу
а в той комбинации что я в первом сообщении привёл оно автоматом выплёвывает сраную английскую версию
Вариантов два:
1. Написать свой вариант LocaleMiddleware
2. Написать простенькую middleware, убирающую\меняющую заголовок Accept-Language из запроса, вставить её перед LocaleMiddleware
Вот я что-то такое и нашёл: https://gist.github.com/vstoykov/1366794
но как его в джанго подключить, ей-богу я не понимаю.
Подскажи плиз:
В папочке
project/middleware/force_default_middleware.py , __init__.py
внутри https://gist.github.com/vstoykov/1366794
settings.py
MIDDLEWARE = [
.......
..'project.middleware.force_default_middleware.ForceDefaultLanguageMiddleware',
..'django.middleware.locale.LocaleMiddleware',
]
LANGUAGES = (
..('ru', "Русский"),
..('en', "English"),
)
LANGUAGE_CODE = 'ru'
получаю ошибку: TypeError: object() takes no parameters
и чего ему не хватает? смысл то в том что ты и предложил - убирать заголовок из запроса
У тебя джанго 1.10? В нем другой стиль для middleware.
https://docs.djangoproject.com/el/1.10/topics/http/middleware/#upgrading-pre-django-1-10-style-middleware
мимо фласк господин
Они там че-то нахуевертили с миддлварями в своей новой джанге. Их теперь надо писать по-другому.
Вот, так попробуй. Должно и с 1.10 работать и с ранними версиями http://pastebin.com/mygKPgMT
Нет я не троллю.
Если ты имеешь в виду отсортированный список, то ([1,3,5,7] + [2,4,6,8]).sort()
Если поочередное извлечение, то подойдет
chain.from_iterable(zip([1,3,5,7], [2,4,6,8]))
На хабре советуют 4е издание "Изучаем Питон", в шапке вроде как "Укус питона", в пасте советуют "How to dive into Python", так с чего же начинать?
Тебе не обязательно верить, считай это условие частью модели для решения задачи. Каков ответ?
Если ты бог и умеешь в программирование. Знаешь много паттернов проектирования, умеешь писать на куче других языков, умеешь в архитектуру и основные технологии, которые сейчас юзаются в любом языке - https://docs.python.org/3/reference/index.html.
Это референс по языку. Потом погугли "Python-way" и начинай изчать\писать своё. Если же ты не знаешь всего того, что я перечислил - пиздуй учить по Луццу. Либо бери Byte и доучивай оставшееся через референс на офф сайте + module of the week + гугление "Python-way"
>при активации виртуального окружения
>команды из батника
Какого виртуального окружения? Какого батника? Что в этом батнике у тебя? Или мы, блять, должны по фотке ебучего шахтёра догадаться, что там?
Да.
Ты это я бро. Только мне уже 27 лет бля, когда мои друганы косят по 2к баксов, я эникеем впахивают 300$. Мне очень вначале помог сайт checkio.org, так же PyScripter который, как по мне, имеет хорошо понятный отладчик.
Кроме здравого смысла, на это гайдлайнов нет.
Если ты знаешь, что x у тебя всегда будет свойством конкретно этого объекта и всегда будет либо свойством класса, либо проинициализировано в __init__, то используй self.x
Если набегут адепты чистых функций и начнут вонять, смело затраливай их - self передается как аргумент, так что функция чистая, ололо.
Да, звучит здраво. Спасибо, няша.
>Это где они столько косят?
Ну что ты как маленький, водилами и курьерами работают часа 4 в неделю, вот и косят.
А ты сиди дальше, гоняй свои буковки-циферки.
Есть строка из 0 и 1, полученная после кодирования Хаффмана.
Как преобразовать ее в битовый формат, записать в файл, считать и преобразовать обратно?
А ну ясно.
binstring = '1001'
binint = int(binstring, 2)
binstring = "{0:b}".format(binint)
Запись/чтение из файла сам делай и не забудь context manager.
Есть 2 модели, у которых много общего, но много и различного. Их пилить просто в разных моделях или общее вынести в абстрактный базовый класс и от него наследовать эти 2 модели?
Так же хотелось бы queryset получать обращаясь к базовому классу-это возможно вообще?
Можешь сделать базовый класс не абстрактным, тогда джанго автоматом сделает тебе связь one-to-one, но будет больше еботни с запросами к базе.
https://docs.djangoproject.com/el/1.10/topics/db/examples/one_to_one/
Вдруг кого заинтересует.
Спасибо!
Что это за хуитка где ты задачки решаешь? Похоже на розалинд, но такого я там не помню оформления.
После стандартной библиотеки. В идеале для полного понимания почему фреймворк это не волшебство ещё что-типа http://aliev.me/runestone/ или SICP'а на питоне прочитать, но это уже кому как хочется
Если ещё не навернул - наверни Синк Пайтон
Можешь сейчас начинать.
Мне кажется ты хуйню советуешь
Игры пишут для iOS.
http://pastebin.com/9mQk4M2w
Проблема начинается после того, как я получаю урлопен. Вместо ебаного хтмл он мне присылает: <http.client.HTTPResponse object at 0x0000000002E2D4E0>. И что мне с этой хуйней делать? Мне нужен ебаный хтмл, нахуй он мне свои обжекты прислылает???
Спасибо няш, вот я долбоеб, даже код скопипастить не могу. А может ты меня еще по одному вопросу можешь просветить?
В хтмл есть тег инпут с типом текст. Допустим я туда хочу что нибудь засунуть с помощью питончика. Есть ли какие нибудь методы для этого в urllib, в респонсе например? Или мне искать другой модуль?
я бы сразу инпут отправлял с помощью библиотеки requests через POST, если у тебя такая задача
Ну вот у тебя есть такое
>req = urllib.request.Request(url, headers=headers)
можно и POST запрос делать, надо только какие-то данные передавать. Вот пример:
http://stackoverflow.com/questions/15768504/simple-post-using-urllib-with-python-3-3
Ну или можешь библиотеку requests попробовать, как уже тебе посоветовали
http://docs.python-requests.org/en/master/user/quickstart/#make-a-request
Гугли какие-нибудь примерчики кода.
>>872466-анон
суть в том, что я хочу практиковаться на работе, где нет возможности установки программ.
питон запустится при переносе его папки на рабочий комп, или нужно искать portable версию?
>binint = int(binstring, 2)
Спасибо, но на выходе ведь идет просто int.
Мне нужно именно в битовый формат перевести, чтобы файл, в который записываю, занимал меньше места.
virtualenv
Ни цента не заплачу и выгоню ссаными тряпками того идиота, который и правда так считает.
Можешь просто скопировать
Видать правда, раз припекло.
Не пойду работать к идиоту, который считает обратное.
Есть моделька с ForeingField(User, ...)
Нужно ограничить в админке при создании нового объекта данной модели ТОЛЬКО нового пользователя, не уже существующим.
Очевидные для меня варианты:
1. Использовать какое-то поле типа ClientLogin а потом через def save модели назначать его же и юзеру, если такого юзера не существует
2. Сверять экземпляры классов джанго Юзер и апп Клиент(юзер)
Блин, может OneToOneField вхуярить и делов?
Олень я заспанный, дописал unique=True и в рот его всё ебать
Вот есть у меня моделька, в ней есть def save() для переопределения сохранения данных из скрипта парсера
При создании нового объекта класса этой модельки я стабильно получаю:
object with primary key 'None' does not exist.
как ПОБОРОТЬ?
я уже голову сломал нахуй этим всем безобразием
class New(models.Model):
..................
# примал кей не переопределяю, т.е. использую стандартный джанговский id=AutoFiled(primal_key=True)
..def save(self, args, *kwargs):
..new = New()
..article = Article(self.link, language=self.lang)
..try:
....article.download()
....article.parse()
....new.id = self.id #pk и прочие primalKeys перепробовал
....new.text = article.text
....new.title = article.title
....new.save()
..except:
....return HttpResponse('Ошибка')
только через неё и пробовал.
не цепляет оно айдишник, потому что айдишник должен выдаваться при сохранении в бд, а сохранение не происходит потому что нет айдишника ._.
пробовал не создавать, а сохранять чисто с self.tite, self.text .... self.save() - и опять та же хуйня
Ну какой self.save, ты же должен вызвать метод save родительского класса.
я ебал тебя в голову анон. почему ты такой тупой блять. сука args, *kwargs напиши, неужели не можешь даже скопипастить ровно.
ну и прочитай ебаную документацию
https://docs.djangoproject.com/en/1.10/topics/db/models/#overriding-predefined-model-methods
вообще, что у тебя http response потерял в методе модели?
и на будущее, оставь метод save() в покое, юзай сигналы
У int есть метод to_bytes, например. Может тебе он как раз и нужен.
я с тобой согласен.
но я предпочитаю выносить все в сигналы. реализация сложнее, но больше порядка и наглядности
Я пытаюсь доделать говносайт что бы уже от меня отъебались.
Когда-нибудь определённо прочитаю. Спросил что бы в паре слов понять нахуй оно надо вообще, и тем самым не забыть.
ладно. сигнал эта такая хуйня в джанге, которая "вещает" о каком-то событии модели. pre_save, post_save, pre_delete, post_delete. декорируешь с помощью receiver(приемник) функцию, которая должна исполнится после сигнала. эта функция принимает модель, и экземпляр модели
```
from django.db.models.signals import pre_save
from django.dispatch import receiver
from myapp.models import MyModel
@receiver(pre_save, sender=MyModel)
def my_handler(sender, instance, kwargs):
pass
```
Спасибо большое еще раз
Переписыватьс ейв - это совсем быдлокод? У меня в учебном проекте все идет через перезаписывание сейв, мне шо, переделывать теперь?
В итоге из 4 бит получилось три байта. Каким образом и кому это нужно?
Все нормально, это два разных подхода.
Плюс сигналы обычно используют, когда работаешь с другой моделью.
Это просто опечатка.
Ты для начала попробовал бы ЗАПУСТИТЬ КОД, десять вариантов которого УЖЕ ТЕБЕ НАПИСАЛИ.
ЕБАНЫЙ ДАУН пиши код сам, ДЕБАЖ ЕГО, ПРОБУЙ ВАРИАНТЫ, ЧИТАЙ ДОКУМЕНТАЦИЮ, ТЫ ЗАЕБАЛ
НИХУЯ ТЫ НЕ НАУЧИШЬСЯ НИЧЕМУ ДЕБИЛУШКА, ТАК И СДОХНЕШЬ ТУПОЙ МАКАКОЙ
inb4 батхерт
Я не он, истеричка. Если тебе так неприятно, то зачем ты отвечаешь на такие вопросы?
Пацаны, гля, у нас тут даже не байтоеб... У нас тут битоеб! Ололо.
Теперь по теме. Варианты:
1. pip install bitstring
2. import struct
дальше сам
Лучше начни с джавы, хороший язык для начала.
Не трать время, учи сразу java.
Тебе еще не советовали Java? Начинающим как раз.
Я бы на твоём месте начал бы сразу с java Ебет по всем фронтам включая зп.
Не слушай никого! Только хардкор, только джава!
Раз выбрал bitstring, вот тебе вдогонку
http://pythonhosted.org/bitstring/constbitarray.html#bitstring.Bits.tofile
тебе уже наверное многие насоветовали всякого... не слушай никого, учи джава
Спасибо, но, это точно не местный троллинг, типа если ты новичок начинай с хаскеля и тд
Ну так я понял, но да, я тупой.
Вообще за яву многие топят, мне сложно в языках ориентироваться.
я не троллил!
Определись с областью, в которую хочешь вкатиться, после чего выбирай язык. Не наоборот. Синтаксис и фреймворки всегда успеешь выучить. только если у тебя не рак мозга :3
float ("210" * int("4"))
s = "Ну серьёзно"
Пишут к вакансии бэкендщика "знание Postgresql". В чем выражается суть "знания" постгреса, да и вообще таблиц sql. Знание каких кейсов дает мне право говорит "знаю постгрес?"
хуй ево знает, наверное правильно писать название. мидлсеньор300к аноний, подскажи, он правильно написал?
Просто у питонщиков горит, что их язык настолько конченый, что даже джава его лучше. Что уж говорить про джаваскрипт.
Ну, сам я в постгресе не силен, но там есть своя специфика в синтаксисе запросов, CONSTRAINTS всякие, postgis и т.п.
Обычно дальше чем INSERT ... ON CONFLICT ... на практике дело не идет, но в постгресе есть что поизучать, если надо реально оптимизировать.
Ну конечно.
А еще архитектора, фронтендера, бэкендера, специалиста по UX и системного администратора.
Это рашка, Карл, тут нужны фулстекорабы за копейку.
я лишь хотел показать что есть переменные класса и инстанса, копировать и не собирался
Кстати чего заходил. Можно как-то стандартный конструктор копирования прописать? Чтобы не подключать copy
оставил как в оригинале
Какая польза от этой привычки?
В 95% случаев потребность в copy.deepcopy объясняется ошибками в проектировании.
slug = model.SlugField(blank=True, unique=True) выдаёт стабильную ошибку миграции django.db.utils.IntegrityError: UNIQUE constraint failed:
пока нагуглил только что народ вставляет null=True но у меня это опять таки ни к чему ни привело
ы скинул тебе как раз не то где применяется unique.. вот поправил http://pastebin.com/epAfAvpZ
>postgis
Охуенная вещь. Делаю проект, где использую spatial tables и прямо сейчас кончаю от неё.
def save(self, args, kwargs):
____self.slug = self.slug or None
____super().save(args, kwargs)
В Джанго тут (был, уже закрыли тикет) большой проеб - пустой CharField воспринимается как '', а это тоже строка, хоть и пустая, и значение в null не выставляется. В БД сохраняется как '' и потому выбрасывает UNIQUE constraint failed.
Приходися вручную проставлять None, тогда проблема решается.
https://code.djangoproject.com/ticket/4136
Гля, кстати, чё нашёл:
http://stackoverflow.com/questions/21728500/optional-but-unique-slugfield
но кверисеты писать как-то мне кажется черезчур под это дело. А твой способ >>873050
работает, спасибо ещё раз.
выглядит как будто бы не все зависимости удовлетворены
почитай чё им надо из внешних библиотек, всяких там python-dev и тд и доставь
Код там простой, но я не слишком тупой, чтобы понять, что нужно отправлять. Сам код:
http://docs.python-requests.org/en/master/user/quickstart/#more-complicated-post-requests
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("https://huita.com", data=payload)
В пейлоад по идее нужно отправить данные формы, но нихуя не отправляется. Вот как примерно выглядит пост запрос.(1 пик) и на втором пике сами данные. Хз как это в все в payload засунуть. Подскажи дауну плз, анон.
payload = {'authenticity_token': auth_token,
'question[question_text]': question,
'question[anonymous]': 'true'
}
res = session.post( profile_link + '/ask', data = payload, cookies = cookieJar )
Открой вкладку POST.
Фрэймворк
Можешь делать так, например:
self.t=list(t)
Заодно сможешь не только списки передавать, но и строки, кортежи, в общем, любой итерируемый объект.
>You need to get the average for each student and then calculate the average of those averages.
По моей логике мы создаем пустой список, потом циклом перебираем студентов, добавляя среднее значение get.average(студента) в список. В функции get.average возвращает значение в числе. После чего результат добавленных в пустой список студентов делим на список студентов. В чем я не прав? Ошибка:
Oops, try again. get_class_average([alice]) resulted in an error: 'float' object is not iterable
http://pastebin.com/8dMEsYdZ
> results += get_average(student)
Результат у тебя список.
Среднее студента это число.
Ну ты понел...
Да я сам решил. Изменил код добавив как и просили по заданию results.append(x) где x это среднее значение студента.
У меня одного пердачелло рвется от этих пилэйдис?
https://github.com/morhetz/gruvbox-contrib
Лень самому пилить, тема gruvbox для vim
Чего? Гит это система контроля версий а не файлов. Ты изменяешь состояние программы, дополняя ее функционал (создавая версию). Обычно это затрагивает сразу несколько компонентов (файлов). Коммитить нужно именно на этапе новой версии. Весь проект. Желательно в рабочем состоянии или держать отдельную ветку для не законченного изменения.
фишка в том что ты и пихаешь в один гит все изменения потребовавшиеся для одной фичи/багфикса
Автодополнения при наборе же ни у кого больше нету нормального? Или я что-то упустил?
Ну смотря для чего. Я как юзатель вима после небольшого знакомства с пичармом могу сказать, что под вим ни одна автокомплит-либа не может в метаклассы моделей джанги. Вообще. Все остальное вроде еще куда ни шло. Тебе вим зачем?
Ну просто я тот еще задрот, на линуксе с 2003, живу в и3, любимые игры дварф фортрисс и катаклизм дда - только вима и прыщей не хватает до полноты образа. Но так и не смог найти причин на него переходить.
А так да, основное направление которое мне нужно в питоне - Джанго.
ах да, самофикс.
Вим он не про супер инструменты искаропки. Он искаропки почти пуст. Он про набор текста и его редактирование. Очень продвинутый да простят меня вимеры блокнот. Но вот если ты на него накатишь аддонов... Такого монстра можно собрать, который разве что отсасывать тебе не будет по одной комбинации клавиш.
Нефти тебе, не знал Что IDEA это и есть PyCharm. Может еще подскажешь, куда файлы кинуть, в user/.PyCharm/config/colors не видит
Во, а ты с джангой не работаешь? Есть нормальная автокомплит либа которая бы переваривала метаклассы джанги? Потому что вим вимом, а когда ты блядь не можешь написать в 3-5 нажатий Book.objects.order_by('-post_date') то это грустно
У меня только один вопрос к вам: как в эпоху CamelCase можно писать на этом уебищном snake_petuhcase?
потому что классы у нас принято писать camelcase, а вот запустив - инстанциировав иде, ты получишь объект который у нас принято писать py_charm
Это не я.
Не испытываешь чувство фрустрации от перекатов с CodeStyle на code_style?
Вы ведь в джанге так или иначе с js-кой сталкиваетесь. И такая чехорда получается
Мне питон нужен, но не могу себя мотивировать из-за этого ебанутого PEP 8. Как вижу код в snakepidor_case хочется плакать
фрустрации испытываю, но не от codestyle, а от переката с питона джс, прям могу минуту втуплять если только за работу.
если в строке кроме названий файлов ничего нет, то разбить строку на список файлов и пройтись по списку циклом, иначе import re
Разбираюсь сейчас с Django by example и дошел до корзин и сессий.
В settings добавляеся ключ корзины, по которому ее потом будут искать
> CART_SESSION_ID = 'cart'
Сама корзина или создается или извлекается из текущей сессии таким образом:
> def __init__(self, request):
> self.session = request.session
> cart = self.session.get(settings.CART_SESSION_ID)
> if not cart:
> cart = self.session[settings.CART_SESSION_ID] = {}
> self.cart = cart
И вот я совсем не понимаю, как это работает. settings.CART_SESSION_ID появляется со значением по умлочанию 'cart' во время сессии? Но тогда if not cart не работало бы. Если бы в настройках этой строки не было - тогда бы еще понятно, но она есть.
Ну смотри по ситуации.
По-моему тут просто дурацкие названия ключей и переменных.
CART_SESSION_ID - это никакой не ID сессии корзины, это ключ, под которым в сессии хранится корзина. Я бы его назвал SESSION_CART просто. Вместо него можно везде использовать просто строку 'cart' - self.session.get('cart')
>cart = self.session.get(settings.SESSION_CART)
Получаем из сессии данные, хранящиеся под ключом SESSION_CART и помещаем их в переменную cart
>if not cart:
Если данных в сессии нет,
>cart = self.session[settings.SESSION_CART] = {}
инициализируем их там пустым словарем
import email
import imaplib
server = "imap.mail.ru"
port = "993"
login = "WR}ErohinANUSma AwilPUNCTUMjM8ru"
password = "moms_lover"
imaplib.Debug = 4
get_mail = imaplib.IMAP4_SSL(server, port)
get_mail.login(login, password)
get_mail.select('INBOX', readonly=True)
typ, data = get_mail.search(None, 'UNSEEN')
for i in data[0].split():
typ, data = get_mail.fetch(i, '(RFC822)')
print(data[0][1])
msg = email.message_from_bytes(data[0][1])
print(msg.get_payload(0))
get_mail.close()
get_mail.logout()
Ищем непрочитанные письма. На выходе получаем:
Content-Type: text/plain; charset=UTF-8
Tvoya mamka u menya
Как получить только сообщение, без "Content-Type: text/plain; charset=UTF-8" и пробелов?
У всех походу проблемы с отправкой, потому что о получении ничего нигде нету. Один я такой идиот, чтоли? Хотя, мама говорит, что я самый умный и красивый.
import email
import imaplib
server = "imap.mail.ru"
port = "993"
login = "WR}ErohinANUSma AwilPUNCTUMjM8ru"
password = "moms_lover"
imaplib.Debug = 4
get_mail = imaplib.IMAP4_SSL(server, port)
get_mail.login(login, password)
get_mail.select('INBOX', readonly=True)
typ, data = get_mail.search(None, 'UNSEEN')
for i in data[0].split():
typ, data = get_mail.fetch(i, '(RFC822)')
print(data[0][1])
msg = email.message_from_bytes(data[0][1])
print(msg.get_payload(0))
get_mail.close()
get_mail.logout()
Ищем непрочитанные письма. На выходе получаем:
Content-Type: text/plain; charset=UTF-8
Tvoya mamka u menya
Как получить только сообщение, без "Content-Type: text/plain; charset=UTF-8" и пробелов?
У всех походу проблемы с отправкой, потому что о получении ничего нигде нету. Один я такой идиот, чтоли? Хотя, мама говорит, что я самый умный и красивый.
засранец, код на пастебин залей, потом ссыль вбрасывай на свое поделие. А эту хуйню неотформатированную уноси отсюда.
Спасибо, кажется я таки понял:
CART_SESSION_ID = 'cart' вообще можно было не писать, а сделано просто для безопасности/конвенции/хуй пойми чего. Но зачем было городить такую ссылку названия переменной, если можно было просто self.session.get('cart') написать?
Можешь везде self.session.get('cart') писать, но учти, что в приличные дома тебя будут пускать только через черный ход и не далее угольного подвала и септика.
При случайной встрече на улице джентльмены будут глядеть на тебя с презрением, а дамы - морщить носики и перебегать на другую сторону улицы.
Потому что размазывать ключи-строки по всему коду это дурной тон.
Так а как правильно делать? Насколько я понимаю, self.session.get('cart') == self.session.get(settings.SESSION_CART). Чем второе лучше, тем, что переменная-имя хранится в settings и ее можно поменять/найти?
И еще вопрос, каким образом приличные господа организуют оплату в своих магазинах? Делать по django-paypal учебный проект конечно интересно, но лучше что-то попрактичнее под рубли выбрать.
Яндекс кассу погляди
http://pastebin.com/sDr2pYbs
Теперь на выходе получаем:
Tvoya mamka u menya
- \r\n в конце. Если передать это дело в скписок, то получим:>>>
['Tvoya mamka u menya\r\n']
Как избавиться от \r\n? Помогите пожалуйста.
>>874037
>>874042
Долбоебы, читайте документацию встроенных функций и не городите костыли
>>> 'Tvoya mamka u menya\r\n'.rstrip()
'Tvoya mamka u menya'
rstrip без параметров уберет вам все пробельные символы справа
а split вообще совсем для другого, он разбивает строку на части, используя в качестве разделителя то, шо ты ему передал в виде параметра. На выходе у тебя будет не обрезанная мамка, а список из 2 элементов - мамки и пустой строки
сплит тоже можно использовать, например для убирания лишних пробелов:
gde_mamka = ' '.join('Tvoya mamka u menya\r\n'.split(' ')).rstrip()
сука абу убрал лишние пробелы в Tvoya mamka u menya, вот опять! видели видели!?
ой не, не так, вот так:
gde_mamka = ' '.join([s for s in 'Tvoya mamka u menya\r\n'.rstrip().split(' ') if len(s)])
choice = input('Ur choice: ')
print (item.get(choice))
Что я делаю не так? Хочу вывести значение ключа, пишет ошибку. Сижу в интерпретаторе на телефоне, значение ошибки не указывает. Следом ещё один вопрос. Поскольку значение ключа в цифрах, сработает ли мой цикл или я не правильно понимаю? :
for i in item:
if i.get(choiceтут я ввожу х) > 0:
return ('mat ebal')
Как вобще можно реализовать вывод через инпут ключа словаря? Я тотали ньюфаг.
>А вдруг ему нужны '\t ' и т.п.?
>>874031
>Как избавиться от \r\n? Помогите пожалуйста.
шо спросили - то ответил, условий не было.
Если надо убирать ТОЛЬКО \r\n - ну ок, передай их в виде параметров в rstrip при чем в любой последовательности
>>> 'Tvoya mamka u menya\r\n'.rstrip('\n\r')
'Tvoya mamka u menya'
>>874058
>для убирания лишних пробелов:
а почему не использовать для этого .replace(' ', '')?
я понимаю, шо одни вещи можно выразить через другие, но нахуя ж так усложнять?
что выводит это?:
item = {'x':1, 'y':0, 'z':-1}
choice = input('Ur choice: ')
print(str(choice))
а хуй знает, всегда так делаю)
Осваиваю asyncio и вот делема то, почему то асинхронный код дольше чем синхронный выполняется, почему так?
Расскажите за всю хуйню пожалуйста, что я сделал не так?
http://pastebin.com/Fiwx9cSg
>погоди, реплейсом же ты все пробелы нахуй уберешь, а надо лишние
да, это я затупил, чистым реплейсом походу не сделать, нашел вот такой красивый способ
' '.join(mystring.split())
>>> mystring = 'Tvoya mamka u menya\r\n'
>>> ' '.join(mystring.split())
'Tvoya mamka u menya'
ну да там все правильно кроме того что он твой ввод что то не видит
txt_msg = part.get_payload().split('\r\n') - делим по \r\n
mylist = list(filter(bool, txt_msg)) - создаем новый список из мамок без пробелов и всего дерьма.
Что скажете?
это довольно трудночитаемый и неочевидный способ с возможностью выстрелить себе в ногу
зачем ты делишь по \r\n, если ты хочешь его обрезать?
чем тебя не устраивает rstrip() для обрезки всех любых пробельных символов справа или rstrip(\n\r) для обрезки конкретно всех \n и \r справа?
Вот эта простая хуйня обрежет все потроха справа и заменит все лишние пробелы на один пробел
>>> mystring = 'Tvoya mamka u menya\r\n'
>>> ' '.join(mystring.rstrip().split())
'Tvoya mamka u menya'
Обычная консоль Windows, использую небольшую библиотеку Colorama для цветового оформления.
https://www.youtube.com/watch?v=H2IWHyum6k8
клево!
сегодня вот что попалось https://www.pythonsheets.com/notes/python-basic.html#define-a-function-doc
>Пишу небольшой консольный файловый менеджер, типа Far'а. Я поехавший?
Дай исходники посмотреть, тогда решим, поехавший или нет.
Книга Дронова несет хоть какую-то поленость на фоне two scoops? Про что в Lightweight django?
Качай и смотри.
* - 2 месяца бесплатных курсов будут предоставлены после оплаты шестилетних курсов
- помощь в трудоустройстве после успешного поиска, собеседования и подаче документов работодателю абитуриентом (предоставляется фирменая ручка для заполнения трудовой)
давай, вот новая пикча
Sexy Pattycake
Это копия, сохраненная 23 ноября 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.