24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Начал проходить туториал на джангопрожект. Хуйня какая-то. Вьюхи, урлы, хтмл. Слишком сложно для дауна написали. На дэжэбук какой то бот переводил, даже упоминания не стоит. Что посоветуешь, анон: читать дальше и разбираться или сначала хтмл и всю хуйню учить?
>>855107 Язык разметки особо бекендеру не нужен, азы может только. Начни с изучения работы сети и плавно двигай к основам фреймворков. Ключевики: http, request, response, dispatch, MVC. Хотя джанго это фуллстек фреймворк, так что думаю ты планируешь полностью создавать сайты. Тогда параллельно можно учить фронтенд.
Анон, есть система комментов. Нужно, чтобы под каждым комментарием была форма ответа на этот комментарий, и которая бы, в случае ошибки валидации, отображала бы валидейшн эеррор только на себя.
Щас у меня одна форма под каждый комментарий, и когда хуяришь непоходящий валидацию коммент, то валидейшн эеррор вылетает на всех формах. Как фиксить?
Как задать классу альтернативный конструктор? В одном случае у меня экземпляр класса должен создаваться с 0, а в другом по данным загруженным из файла.
>>855245 Обычно один из двух вариантов используется: 1. проверять в __init__'е является ли filename None или не является 2. staticmethod from_file(...), который создает новый объект класса и заполняет его данными считанными из файла.
Анон, написал скрипт, он берет аргументы из командной строки - приделал к ему .bat для быстрого запуска. Проблема: при запуске через этот самый .bat, скрипт создает/пользуется файлами из каталога, в котором расположен .bat, но не сам скрипт. Непонимать, почему так происходит, ведь относительный путь прописан в скрипте и вычисляется относительно скрипта? Как это можно пофиксить?
>>855318 Ты использовал функции из os или просто указывал пути через слеши? Винда не подходит для питона. В первой строке скрипта обычно указывают путь к интерпретатору и .py можно запускать без команды python, но винда, похоже, не умеет.
>>855321 у меня из файлов только clb = shelve.open('clipboard') #т.е. файл находится в одной папке со скриптом аргументы беру через sys.argv[1] в .bat прописано @py.exe C:\PyScripts\Clipbord\clipb.py %* сам он лежит в PyScripts и при запуске создает файлы в Pyscripts, а не в Clipboard
>>855327 Если прописываю абсолютный путь к файлу - все работает getcwd() выдает вот что: запускаю через "Выполнить" в меню пуск - C:\PyScripts запускаю через Ctrl+R - C:\Users\Username > пути по-человечески Это как? > chdir в батнике А можно как-то из самого скрипта определить, где он лежит, а затем через тот же chdir поменять рабочую папку?
>>855343 > А можно как-то из самого скрипта определить, где он лежит __file__ > , а затем через тот же chdir поменять рабочую папку? Ты можешь в питоне сделать os.chdir.
>>855346 chdir я предлагал как альтернативу, сам бы я сделал нашел нужную директорию через os.path.dirname(__file__), потом бы просто os.path.join(dir, filename) в нужных местах.
Анон, тотали ньюфаг вернулся в тред. Объясните долбоебу на пальцах в чем прикол инструкции return в функциях. Уже 3 объяснения прочел и все равно не врубаюсь нихуя. Что значит вернуть значение?
>>855434 >Анон, тотали ньюфаг вернулся в тред. Объясните долбоебу на пальцах в чем прикол инструкции return в функциях. Уже 3 объяснения прочел и все равно не врубаюсь нихуя. Что значит вернуть значение? Функция занимает значение, потом возвращает его. Что сложного? Главное переопределить __dir__, чтобы определить режим работы функции. Алсо, читни про декораторы.
>>855442 Я человек-функция. Ты научил меня резать яблоки пополам. Ты даешь мне яблоко-аргумент, я его режу. Если тебе нужно получить половинки обратно - то ты задаешь ретурн, и я возвращаю половинки тебе. Если не нужен, то я функция без ретурна - режу яблоки и оставляю их.
>>855442 Возвращает значение которое занимает. Понимаешь? Вот ты занял 50 рублей, потратил их на клей, спиздил у мамы 50 в вернул. Твои действия - функция, которая переопределяется через __dir__ и оборачивается в декоратор (от 'декор' - дизайн). 50 рублей - возвращаемое значение.
>>855444 >>855445 А для чего возвращать? Вот например я читаю сейчас статью.
def add(x, y): return x + y
>Инструкция return говорит, что нужно вернуть значение. В нашем случае функция возвращает сумму x и y. >функция возвращает сумму
>>> add(1, 10) 11
И что происходит с 11 ? Куда ее возвращают? Что с ней происходит? Мне наверное стоит сделать перерыв ибо мозг перестал работать и вероятнее всего это действительно элементарные вещи.
>>855450 Тебе стоит просто прекратить думать о том чтобы заниматься программированием вообще. Я серьезно. Я не понимаю откуда вас столько, и на что вы надеетесь.
Ты работаешь с мясорубкой. В мясорубку погружается мясо (аргумент). Мясорубка это функция. Получается фарш. Если целью было проосто преобразовать мясо в фарш, то имеем функцию: def slice(meat) meat += salt + pepper + govyazhiy_anus meat.cut() Если же ты хочешь подать фарш в печь, ты подставляешь к мясорубке тарелку (переменную) и фарш ВОЗВРАЩАЕТСЯ туда. тогда добавляется .... result = farsh return result
Далее ты используешь тарелку с фаршем в последующем: plate = slice(meat) serve = plate + spoon + knife
>>855543 HTML вижу, да. Но есть еще CSS файлы, которые задают стили оформления элементов и всякие другие штуки типа позиционирования. Скорее всего, у тебя что-то такое подключено. Покажи весь шаблон и, если он наследуется от какого-то другого шаблона, то и его покажи.
Посоны, пару вопросов есть: 1) Уместно ли в python проверять типы данных? Сейчас как-то так. Может быть есть что-то более python-way? Пример: http://pastebin.com/mpp8X7Mg
2) Можно ли как-то красиво завернуть большое количество try except в один? Единственное, нужно знать, на каком моменте падает код, не ведя избыточное логгирование. Сейчас так: http://pastebin.com/WzU0pp1J
3) Я понимаю, что вряд ли, но может есть какой-то способ после fork'а приложения в multiprocessing очищать его память? Я понимаю, есть кеши, а еще можно коммуникацию осуществлять через внешнюю очередь, но может есть родное решение?
>>855692 1. isinstance, уместно, но не слишком часто. 2. logging.exception. Если тебе не нужно чтобы не падало, а работало дальше, то делай явные проверки.
Анон, я окончательно влюбился в питончик. С таким удовольствием я не изучал ещё не один язык, а их я в поиске 'себя' перепробовал не мало. Питон не трогал из-за форса, что это хуйня, а не язык. Каюсь какой же я был ведомый долбоеб. Не повторяй моих ошибок анон.
>>855694 >1. isinstance, уместно, но не слишком часто. Но это же, по большому счету тоже самое, разве что синтаксис приятнее. Или в этом вся соль?
>2. logging.exception. Если тебе не нужно чтобы не падало, а работало дальше, то делай явные проверки. А можно подробнее про явные проверки? Или это как раз то, что я делаю? Anyway, спасибо тебе за ответ, анон.
>>855822 isinstance проходится по MRO С3 родительским классам и если находит совпадение, возвращает true. Полезно, если ты например написал свой словарь, наследуемый от UserDict, но тебе нужно проверить что этом именно словарь, а не твой собственный класс. Плюс в isinstance можно кидать сколько угодно аргументов, они там просто распакуются и все.
>>855826 Забавно, не знал. Спасибо. А то я был даже вынужден поменять либу, у которой и словари и строки отображались как собственный класс, а мне нужно было проверять.
Алсо так же можно проверить является ли объект итерируемым или потомком еще какого-то базового класса. Про мро я обосрался - это чисто для полиморфизма.
На главной - список постов и список тегов. список постов и список тегов выводятся вьюшкой.
Можно зайти и прочитать содержимое поста. Это уже дургая вьюшка, другая страница. Вопрос: как сделать так, чтобы список тегов тоже сохранился? Или мне в каждой ебаной вьюшке и в каждом ебаном темплейте нужно прописывать эти теги, чтобы они выводились? Нет более простого способа?
Удавы, дайте пожалуйста совет для написания утилитки сканирующей сети и чекающей хосты на предмет нужных сервисов. Сам вопрос в алгоритмах и параллельности выполнения, в которых я как и в самом питоне ноль. Здесь http://pastebin.com/RBNMRSbB текущее состояние поделия. Вопрос таков, как правильно передать результат выполнения из функции scanner в checker? Пока плодящиеся потоки сканера плодят потоки проверяющей функции, но это наверное совсем не правильно и нужно управлять состоянием скрипта из main()? У multiprocessing есть такая штука как Queue и ее можно передать в каждый из сканеров, но где в main() расположить цикл читающий возвращаемые через эту очередь значения и каковы будут условия выхода из него, ведь потоки могут работать довольно долго? В общем, хочется параллельного сканирования и, по мере обнаружения открытых портов, параллельной проверки этих результатов. Буду признателен за наставления и блок-схемыкек. subprocess остался от системных вызовов zmap, но что-то он много чего упускает, так что в итоговом варианте используется модуль nmap. Изъебства с 35 по 50 строки, а не использование стандартного Pool, нужны ибо из пула обработчиков нельзя запустить новые процессы и передать этим обработчикам дополнительные аргументы.
>>855916 Без очередей тебе не обойтись. Сделай сканер и проверятель воркерами (если IObound то запускай в отдельных тредах, если CPUbound - в процессах), пусть обмениваются через queue. Короче, гугли pub/sub worker pattern
>>856096 >pub/sub worker pattern Сенкс, сейчас поищу.
[b]Загрузка файла на сервер[/b]Аноним13/10/16 Чтв 19:49:18#107№856117
Аноны, нужна ваша помощь, тк гугл адекватного ответа не дал. Как мне загрузить файл на сервер если я имею абсолютный путь к этому файлу на компе юзера??
>>856103 Мне и нужно, чтобы они сраабатывали на каждый запрос. Теги должны всегда висеть в поле зрения. + еще присобачу формочку на поиск. И присобачу список популярных постов. И все это должно висеть постоянно в правой колонее. В левой - типа изменяемый контент, а в правой - нет.
> Получаю в результате ответ полный nan sigmoid'ы небось где-нибудь используешь? Как там это называется, vanishing / exploding gradient, вполне обычная проблема.
>>856150 не, я нашел проблему. В grad первый элемент nan и в итоге он ебет мне все результаты. Не подскажешь проверку на nan в списке с заменой его на 0? Чтобы не быдлокод уровня list.pop(i), list.instert(i,0)?
>>856196 Ну я как бы не ебу, она у тебя в двух контейнерах или что? Потому что если у тебя это просто форма по координатам, то ясен хуй что она будет сдвигаться в ебеня.
Долбоеб, напиши хотя бы helloworld на питоне и пройди базовые курсы на w3 по html и css, куда ты лезешь блядь? Ты на каждый свой детский конфуз собираешь делать пост на двач? Я просто в ахуе от наплодившихся ленивых имбецилов вроде тебя. Вам чтобы что-то из себя представлять нужно года 2 потратить на изучения с тех позиций на которых вы сейчас и я не особо верю что у вас получится, потому что ваш интеллектуальный потолок уже виден.
Бампую свой вопрос, и заодно задаю новый, оба касательно PyCharm: 1)При запуске скрипта, остается активным окно редактора, а не консолька снизу, поэтому если требуется ввести что то с клавы то нужно кликнуть на консольку снизу. Неудобно. 2)Как разукрасить вызов функции? Скажем создал я функцию def sobachiiHer(iayca), теперь я ее вызываю sobachiiher(2), но при вызове текст белого цвета. Тоже самое касательно методов и тд., поэтому код выглядит просто как стена белого цвета, только что аргументы цветные.
>>856250 Брат жив, зависимость есть. Нравится дизайн и боковая панель с закладками и заметками, паранойей не страдаю, так что лису послал нахер, что то лагает последнее время
>>856367 виртуальные окружения, минимальные познания работы с файловой системой из коконсольки, grep особняком. Что-то еще есть полезное, вспомню точно.
>>855236 > зачем применять elif и в чем принципиальное отличие от if >>855245 > альтернативный конструктор >>855434 > в чем прикол инструкции return > Уже 3 объяснения прочел >>855536 >>855525 >>856187 > Как только страница меняет размер так и косоёбит. > Только Джанга тут.
Пилящий тестовый бэкэнд для андроида на связи. Я разобрался как обрабатывать запросы и не могу понять как развернуть сраный json в сраный массив объектов. Как мне из этого {u'paint_degree': 13, u'id': 0}
Но он не поможет с _id в данном случае, придется либо в json'е указывать _id, либо править аргументы инита. Вообще, такие вещи (де)сериализация часто вручную делаются. Можно например запилить список нужных ключей и пройтись по этому списку, вытаскивая из json'а данные и присваивая их объекту с помощью setattr. Или не список, а карту, по типу: _id -> id paint_degree -> None (то есть ключ не меняется)
Анон, есть один языковой словарь (ен - ру, к примеру). Как можно из него сделать ру-ен? Мой вариант: [CODE] r2e = {} items = list(e2r.items()) for k, v in items: r2e[v] = k [/CODE] Попроще способа нет?
Парни, есть два списка, нужно элементам первого соотнести просто обработать их вместе элементы второго. Заковыка в том, что второй список меньше первого и, после достижения его конца, нужно начать чтение с первого элемента. Мне не хочется возится со счетчиками итераций внутри циклов и остатками от деления этих счетчиков на количество элементов в меньшем списке, поэтому задам вопрос, нет ли в питоне на этот случай заготовленной элегантной конструкции? Есть идея в каждой итерации чтения большего списка pop()-ом вытаскивать из меньшего старший элемент, а затем инсертить его в начало, но как-то это тоже не оче..
Ананасы, что почитать, чтобы научиться работать с библиотекой requests? И ещё вопрос: у двача есть своё апи, поэтому можно без проблем написать парсер треда или вайпалку. А что делать, если у какой-то борды своего открытого АПИ нет?
>>855102 (OP) бля, думаю, ебически нубский вопрос, но все же. Какого хуя некоторые либы ставятся в pip, а всякие mathplotlib и tk ставятся отдельными пакетами в линупсах?
>>856690 Некоторые пакеты питона - это биндинги к C-библиотекам, соответственно они требуют наличия этих самых библиотек. По-моему, названные тобой пакеты не являются таковыми.
>>855102 (OP) Учусь по книге Майкл Доусон - Программируем на Python - 2014потом перейду на три книги Лутца Где мне брать задачки для моего уровня? Прочитал эти главы: Типы переменные и основы ввода-вывода. Ветвление, циклы с оператором while Циклы с оператором for, строки и кортежи Списки и словари Функции Ну или с чем мне ещё надо ознакомиться (если дадите ссылку на задания).
>>856736 > После глав там задачки уровня /рисуем сову. А ты что ожидал, уровня напишите_свой_фреймворк? Там норм задачи, позволяющие закрепить пройденное. Можешь посмотреть "Простой питон" - там тоже в конце глав есть минипроекты.
>>856736 http://acm.timus.ru/problemset.aspx Задачи от уровня "урок информатики в 8б" до уровня "практикующий ученый". Вопреки совету этого анона >>856753 рекомендую все таки порешать задачки, потому что если сразу начнешь решать задачки из реального времени, то 95% времени будешь исправлять синтактические ошибки, и искать в библиотках методы для работы со строками/словарями и тд., вместо решения этих самых задач
>>856760 Задания должны быть как в самой главе (в главе 2+2, а после должны быть 4+5), но на деле в книге после каждой главы идёт сплошное РИСУЕМ КРУЖОЧЕК, НУ А ТЕПЕРЬ СОВУ. Вангую для каждой книги эти задачки придумывают мимохуи.
Аноны, чому у меня в консоли постоянно такая ошибка в цикле (что-то не так с вложенным блоком)? Тот же скрипт в IDLE или обычном редакторе отлично работает.
Мне нужен веб-анон. Расскажи мне про асинхронные таски, селери, параллелизацию, разделение web/worker. Где почитать как все это работает? Про деплой на платформах как сервисах. Я начинаю понимать что знаний простого однопоточного бекенда мне не хватит и я не понимаю ничего в развертывании.
>>856757 Вот мне интересна первая задача. Какие есть способы её решения? У меня в голову приходят три, но они не самые оптимальные по памяти и времени. Просто интересно задрочить эту задачу. 1. Скопировать лист, брать рандомом элемент , напечатать его и удалить его из списка. 2. Использовать рандомные числа с периодом n, где n = len(list_of_words). В криптографии что-то такое есть, но забыл как называется. 3. Исходный лист не изменяется, но мы держим доп. структуру, которая держит все использованные элементы/индексы.
>>856929 Только статьи и доки в интернетах, и пробуй сам всё делать, разбирайся. В Celery, кстати, ничего сложного нет. Посоветую читать Светлова http://asvetlov.blogspot.ru/ - часто годные статьи бывают про асинхронность, GIL и всё сопутствующее.
>>856940 я и импорт не прописал > он может быть большой и что дальше? Я вообще второй месяц питон и погромированние вообще изучаю, как и анон с вопросом про задачи. Мы не в курсе что и как там память ест.
Еще вопрос такой. Есть массив (лист) элементов. Нужно получить перестановку (permutation) номер n.
Т.е. у нас есть l = [1,2,3,4,5,6] и мы делаем permute(l, 23) и она выдает перестановку номер 23. Читал об этом раньше, но не разобрался с теорией. Насколько я понимаю permute(l, 22) < permute(l, 23) т.е. лексикографическое неравенство.
Призываются именно те, кто разбирается в этом. В инете я и потом почитаю по теме.
>>856932 Полагаю, на продакшн-сервере. На хероку в гуникорне, например, число тасков выставляется в аргументах наряду с портом, ип и прочими параметрами. мимо >>856929 дебич.
http://pastebin.com/2uhGT4c3 Имеется вот это, а как теперь преобразовать в какой-нибудь список, чтобы можно было дальше работать с названиями этих тайтлов? Например, чтобы из всего списка случайно выбирать какое-нибудь однo название и уже с ним работать. Вот как привести это всё в рабочий вид внутри скрипта?
Питоноебы, как с помощью либы requests отправлять запросы и тем самым автоматизировать какую то гнилую браузерку? Так вот: мне просто нужно прочитать заголовки запроса и, залогинившись, отправлять GET с этими заголовками? Или нет?
>>856980 Тупая ты сука, возьми любой справочник по языку, любую книгу по языку, прочитай, сделай примеры, поиграйся с тем что придумаешь по теме. Это то, как учится язык. когда ты с интересом можешь просидеть 12 часов впитывая информацию. Нет блядь, лучше пойду спрошу на дваче.
>>856981 Да, но по идее для логина нужны кукиз, кукиз получается из чего-то под названием cookiejar, сам погуглишь, что это. Если нет джавпскрипта и защиты от ботов, то круто, если есть, то проще через силлениум будет сделать. Хотя на гитхабе есть либы для обхода всяких аимнотробот-галочка. Если браузера на флэше, ты в пролете.
Логин: r = requests.get('https://api.github.com', auth=('user', 'pass')) Но да, брузерка на флэше, я в пролете. Но а на самом деле, нужно делать так, как я расписал?
Общий вопрос по архитектуре аппы. Возьмем в пример архивач. Для каждого треда он с определенной периодичностью получает по нему информацию. Как это организовать? Я могу предположить что нужен отдельный скрипт, работающий с общей базой данных (с вебфреймом) и берущий оттуда даты добавления треда и возвращающий туда новые данные и последний момент обновления. Есть варианты проще? И как делать эти промежутки? Уж явно не через sleep.
def list_append(var1,var2,soup_name,list_name): for var1 in soup_name: var2 = var1.get_text() list_name.append(var2) return list_name print(list_append(x,a,day_link,list)) Итог: NameError: name 'x' is not defined
Подскажите, где проебался, пожалуйста (только недавно вкатился, не ебу где ему определить переменную)
>>857015 Ты не определил первый аргумент своей функции, либо определил его вне области видимости. Неужели ты настолько глуп что не можешь прочесть эксепшн?
>>857031 break стопает цикл, а raise стопается через экспешн и стопает весь скрипт нахуй. Т.е. после брика поток идет дальше, а после райза эксепшена все нахуй стопается и распидарашено крч кровькишки.
Джанга, делаю функцию удаления объекта модельки из бд. Хочу сделать ссылку, после которой функция выдает страничку подтверждения действия (две кнопочки, да-нет), после нажатия кнопочки форма отправляет данные с нажатой кнопочкой, функция принимает ответ и делает соответсвенно дейтствие. Я никак не усложняю себе жизнь тем, что делаю сейчас форму с двумя кнопочками. Есть способы удобнее/продуманнее моего?
Ну распарсил я сайтик с погодкой, да. Ну получу я данные о погоде на всю неделю с помощью взмаха Ctrl+Shift+F10, ну а дальше то что? Как из этого слепить что то полезное?
>>857029 Ну если в общих чертах, то когда твоя функция берёт чёткий инпут, а юзер притащил какую-то хуйню, то бросай ошибку в ебало мрази, пусть знает своё место.
И если ты обрабатываешь ошибки, как полагается питонисту делать часто, то всё необработанное необходимо возбуждать, дабы избегать ситуаций "ну типа лол кароч я фсё обработал одним траем-экцепт-пассом азаза, ашипок бофы ни будит кек".
В языках без ошибок их или велосипедят, или используют какие-нибудь "кодовые" или "заведомо невозможные" возвраты. Типа "наша функция возвращает нужный результат или строку МАМКУЕБАЛ, если у нас не получилось. Убедитесь, что возвращенное значение не равно строке МАМКУЕБАЛ".
Добрый вечер всем местным! Пишет вам студент в возрасте 21 год. С программированием не то чтобы на вы, а на Ваше сиятельство, учусь в местной шараге на учителя географии и маячит малоприятная перспектива соснуть хуйцов, точнее продолжить их сосание. Поэтому решил вкатиться в программирование, полистал доску, сформировал мнение (лол). Знаю, что научить можно даже медведя на велосипеде кататься, но скажите объективно. 1. Нужно ли знание каких либо постулатов, или можно более менее вкатится с 0 опытом по программированию 2. Вопрос глупый, но всё же, представляется ли возможным найти какую нибудь более менее работёнку, на среднем уровне владения языком 3. Есть ли возможность шабашить во время обучения языку, какая нибудь халтурка для начинающих
Спасибо за ответы, хотя, вероятно, покройте хуями, но спрос не грех.
>>857190 Вероятность соснуть высока по причине: >Нужно ли знание каких либо постулатов, или можно более менее вкатится с 0 опытом по программированию Тебе не язык нужно учить, а вообще всё и с нуля. Это очень много времени, крайне много времени, пиздец как много времени. И на все это нужно желание, интерес и воля. Хуесосов же поддавшихся на хайп в индустрии очень много (как можно увидеть и по этому треду с вопросами уровня детсада) и отсеивают их на собеседованиях очень хорошо.
То чувство когда тебе в шараге на первом курсе задрочили дискреточку, си и алгоритмы, на втором - Ruby on Rails, бидлон, Таненбаума и асм, а сейчас ты уже играешься с NARMAX, ТАУ и промышленными сетями. Попутно получая повышение квалификации в очень крутой сфере с высоким порогом вхождения, которая скоро будет хайпом.
>>857208 >Попутно получая повышение квалификации в очень крутой сфере с высоким порогом вхождения, которая скоро будет хайпом. Как к тебе в сварщики попасть?
Аноны, помогите нуфагу. Нужно сгенерировать из одного двумерного массива(4х4), путем разбиения на 2 массива и прибавления/отнимания константы, k двумерных массивов. То что есть: http://pastebin.com/KhdRGbm7 Как на этапе выполнения избежать расчитывания одинаковых записей?
Аноны сетевики! Подскажите мне как быть в такой ситуации. У меня есть две базы данных и нужно синхронизировать операции в этих БД. В первой БД у меня пользователи (имя, пароль, время создания etc), а другая - это пользователи в онлайне в данный момент.
Делаю фласк сайтик (пока только в локалке) и хотелось бы знать, как такое следует делать.
>>857280 Думая для списка юзеров в сети лучше будет использовать редис, так как тебе нужно постоянно удалять/добавлять онлайн пользователей. А памяти полюбому хватит. Непонятно только какие операции ты собрался синхронизировать если структура разная.
>>857285 Да можно и редис и mysql. Это уже другой вопрос.
Тут смотри какое дело. Есть база с пользователями, а есть база залогиненных пользователей. Пользователи могут создаваться, удаляться, изменяться etc. И нужно держать эти две базы в корректном состоянии. Вот для этого и нужна синхронизация. Ты представь, что будет если у меня придет запрос на логин, а примерно в то же время придет запрос на удаление того же пользователя. Это race condition в чистом виде.
>>857286 Мне просто интересно, как это делается в реале? У самого меня бэкграунд C/C++/Asm, так что мыслю категориями системного программирования больше, но думаю, что такой подход имеет довольно много ограничений.
Даже еще более интересный вопрос. Допустим, у меня есть несколько баз и я их должен синхронизировать, т.к. там связанные друг с другом данные.
Я понимаю, что если у меня идут три запроса на чтение подряд, то я могу не лочить базы и давать читать их всем потокам (обработчикам реквестов): read read read
Но если у меня, к примеру, идет такая последовательность read write read read То я должен сделать чтение, далее дать эксклюзивный доступ для одного потока на запись, а уже потом дать свободный доступ на чтение всем (двум в данном случае) потокам.
Вопрос, как это делается стандартизированно? Наверное, не один я такой штукой маюсь. Причем, тут есть еще проблема масштабирования, точнее будет в будущем.
>>857286 Удаляешь пользователя из бд, обнуляешь сессию, удаляешь пользователя из списка онлайн если он там есть. Не думаю что могут возникнуть проблемы. Это то же самое что удалить пользователя который уже залогинен.
>>857302 >Не думаю что могут возникнуть проблемы. Могут. Если придет последовательно два реквеста: 1 - на удаление пользователя 2 - на запрос данных под профилем этого пользователя. Может возникнуть race condition.
>>857192 Зачем это нужно, кстати? Я про последовательность. Я другой анон, просто учу питон для себя, потому что интересно и хочется некоторые не самые сложные скрипты уметь писать, не преследую цель заработка.
>>857305 Первое: удаление пользователей из базы вообще не очень хорошая практика. В крупных проектах обычно используют специальные флаги, и просто изменяют логин. Второе: если ты перед удалением\изменением своего пользователя будешь убивать его сессию в кеше, тогда при попытке данных он будет получать редирект на авторизацию и пока он будет ее проходить, ты спокойно можешь сделать все, что тебе нужно. Никаких гонок.
>>857311 Ну хорошо, в данном случае, скорее всего, ничего страшного не случится. Но в общем случае есть риск гонок. Плюс, интересует вот этот вопрос >>857299
>>857312 Давай чуть более конкретно, с какой целью ты хочешь синхронизировать данные в базах? В случае с базой и кешем для сессии все понятно и стандартно, а твой use case я что-то понять не могу.
Дополнительно: синхронизацией, блокировками и атомарностью доступа обычно занимаются сами базы. Я слышал про очень сложные случаи, когда нужно обеспечить геораспределенные базы данных и вот там штатными средствами баз обычно этого не добиться. Но я что-то не думаю, что это твой случай.
>>857305 Нет же особой разницы. Вторая БД просто держит временные данные которые мало на что влияют. Если другой пользователь получит информацию об удаленном нескольно милисекунд назад пользователе, на что это повлияет? Ни на что. Если тебе реально нужна целостность БД, то используй одну БД с транзакциями.
>>857313 >В случае с базой и кешем Кеш как реализуется?
>Я слышал про очень сложные случаи, когда нужно обеспечить геораспределенные базы данных и вот там штатными средствами баз обычно этого не добиться. Это тоже интересно бы узнать.
>>857316 >Кеш как реализуется? Тебе выше говорили: у тебя рядом с базой стоит кеш, в кеше хранятся сессии пользователей, создаются при логине, удаляются при логауте или по времени. Стандартная схема.
>Это тоже интересно бы узнать. Что узнать? Требовалась синхронизация данных в базах, которые расположенны на серверах в двух, очень далеких друг от друга точках мира. Обычные средства баз в таком случае редко подходят из-за высокого latency. В подробности реализации я не вникал, но вроде как обошлись микросервисами и увеличением времени отклика для некоторых операций. Пользователи не заметили.
>>857333 Я про ситуацию, когда у тебя есть N+1 машин (виртуальных\физических), на которых тебе твое приложение запустить надо, и чтобы они все вместе могли работать с данными и делать полезное дело.
Решил написать своего бота, подключил библиотеку pyTelegramBotAPI , создал бота, команды, написал файлик , запускаю из студии, висит питонье окно "нажмите любую кнопку для продолжения", бот в диалоге не отвечает. что я делаю не так и как отлаживать такое? из командной строки запускаю этот скрипт, тоже молчит(
>>855102 (OP) Как в джанго реализовать теги? Вот есть набор сообщений от пользователя и нужно к каждому сообщению прикрепить теги. Теги, естественно, могут быть одинаковые у разных сообщений. Теги потом буду использовать, чтобы высвечивать их по частотности использования для тегирования сообщений. Как это на уровне модели реализовать? Есть готовый гайд?
>>857543 Я пытался найти подходящий тип полей, но не нашёл. Получается, нужно использовать обычный CharField, представляя все теги в виде единой строки, а затем уже на уровне питоньего кода разбивать эту строку через эти запятые? Меня напрягает, что нет готовой модели, которая позволяла бы забить все теги в форму кортежа/списка и работать уже с ними. Или все так и делают?
>>857541 Это может быть изза того, что я питон последний 3.5 установил и библиотечка не поддерживает его? И еще смущает, что в проекте библиотека видна, но подсказки половина не работают, когда пишешь код.
>>857554 Ага, я понял, почему я тупил до этого. Но всё равно не понятно, как это будет высвечиваться на уровне пользователя, т.е. как представить в шаблоне (ведь нужен не один тег, а множество, в то время как класс тегов использует чарфилды с единой строкой).
>>857217 Попробовал подругому сделать, теперь встал вопрос как мне получить все элементы из temp_code_book 13 строка вместо "???" http://pastebin.com/HP0hJiLy
>>857566 сейвишь несколько тегов, в чем проблема-то? Фильтруешь теги, если они нужны для конкретного поста, а если надо вывестьи вообще все теги, то просто выводишь через таг.обджетс.ол
>>857566 несколько тегов вводишь либо через формсет, либо через какой-нибудь костыль, который бы, допустим, сплитил введенный стринг через запятую, и сейвил бы отдельный объект под каждый разбитый стринг.
Анон, Марк лутц 4е издание изучаем питон стоящая книга? Скачал себе пдфку, а там 1.3к страниц, плюс в самом начале автор писал, что потребуется ещё прочесть 'программируем на питон'. Я не привязан ко времени, просто интересно мнение тех кто прочёл, смогу ли после прочтения онных устроиться джуном? Извини за платиновый вопрос.
>>857626 Хуйня. Я тебе могу назвать еще минимум 5 книжек которые обязан прочитать каждый питонист, там на несколько тысяч страниц наберется причем все нужно делать с примерами. Просто "освоив" синтаксис языка по вводному источнику ты никуда не устроишься, кроме совсем днища. Укус говно кстати.
>>857626 ты шапку видел? она там,вверху там блядь чёрным по белому написано codecademy -> укус питона -> думай питоном а что непонятно - в лутце
нет давай буду ебаться пдфкой в жопу а потом ныть что сука справочник читается как-то не так хорошо как не справочники
укус говно, но хоть какой-то результат показывает для совсем нихуя не соображающих Вот этого дебила >>857640 шли в пизду и нахуй. Книга может ответить на большее количество вопросов, чем у тебя может на данный момент возникнуть - тем и ценна. Всего-то прочитать пять-десять книжек и будешь классным перцем, который хоть понимает что ищет, а не недоучкой-ебанашкой с мантрой НУ ЧЁ СЛОЖНАВА ВИЖУ ЦЕЛЬ НЕ ВИЖУ ПРИПЯТСТВИЙ))))) как вот это уёбище В других сферах то же самое, и чем в бэ спорить за мораль vs христианство или в медаче - онкология через хуйовую воду - наворачиваешь просто пару-тройку нормальных компентентных писателей и твои маняфантазии больше не нужны
>>857652 Ну, в общем, лутц - справочник. Читать его нужно как справочник. Т.е. если ты внезапно тупишь и не понимаешь что же за хуйня такая super() - вот как раз тогда. А так хуярь курс бесплатный по питону на кодекадеми, а потом всё остальное.
>>857670 Умничка. Поздравляю тебя. Весь мир читает книжки и учится по ним, но конечно твой единичный (и неподвтерждённой достоверности) пример - главное доказательство что все мы ошибались, ага.
двачну за книгоебов и двачну за гуглоебов, потому что когда я изучал, я выбрал направление и читал нужные главы из книг. но ни одну книгу целиком, целенаправленно не прочел. кроме >>857677 конечно же!
>>857682 >>857687 >>857678 пацаны, да хоть в жопы ебитесь ради скилла, только других хуйне не учите прежде чем вкатывающийся вообще врубится ему что-то надо понять а если вы настолько верите в то что без книг можно чё угодно раздуплить - попробуйте писать сразу машинным кодом, или хотя бы ассемблером, разумеется если ещё не учили его, только не надо пиздеть что это невозможно
>>857692 Тебе уже сказали. Всё - говно, чтобы ты ни делал, это будет тщетно и бессмысленно. Хватит барахтаться уже, дай наконец штурму жизни смести тебя и тем самым обрести покой.
Питоны, как дробить сайт на отдельные приложения? Есть какой-то гайд или на уровне интуиции делать? Спрашиваю потому, что мне вроде бы нужно сделать два разных приложения, но при этом использовать модель из одного в другом. Дублировать код явно бессмысленно. Так и нужно делать (брать модель из другого приложения) или же это признак того, что всё можно/нужно реализовать в рамках одного приложения?
>>857700 Я так и хотел, просто боялся, что неправильно что-то сделаю. Да и непонятно было, как приложения дробятся всё же.
>>857699 В одном приложении определён класс "Посты" и оно их просто высвечивает по очереди. В другой приложении собираюсь сделать так, чтобы пользователь мог вбивать данные в формочку, тем самым заполняя атрибуты класса "Посты".
>>857705 Ну это ж типа все относится к функциональности блога? Тогда пихай все в одно приложение. Вот, например, приложение "Комментарии" или "Теги" можно сделать отдельно. Потом удобно будет взять свое приложение и прикрутить к другому проекту, например.
for x in day_link: a = x.get_text() list_day_link.append(a) for x in date: a = x.get_text() list_date.append(a) for x in month: a = x.get_text() list_month.append(a) for x in min_temp: a = x.get_text() list_min_temp.append(a) for x in max_temp: a = x.get_text() list_max_temp.append(a)
for x in date1: a = x.get_text() list_date.append(a)
Аноны, какую версию питона используете для работы 2.7 или 3.5? Сейчас смотрю видосы орейли по алгоритмам питона ( бинарный поиск и т д). И его примеры не работают нихуя. Например в первом же видосе время выполнения выдают 0,0 а не разницу в начале и конце работы цикла скрипта. http://rutracker.org/forum/viewtopic.php?t=4821521 Кроме джанги в питоне в плане поиска работы еще что то есть? %%
>>857808 Питоны, проясните за jinja. Как этим вообще пользоваться? Приведите примеры. У меня одна неделя на освоение, а я даже не знаю с какой стороны подступиться.
>>857805 Код брал один в один отсюда retifrav.github.io/blog/2015/10/24/telegram-bot/ чтобы для начала разобраться, как все работает, а потом под свои нужды допиливать. Там написано, что если на винде, то откроется черное окно питона и будет висеть процесс. У меня же если сам скрипт запустить, закрывается тут же, а если из студии, то вышеупомянутое "press any key" . Может я неправильно интеграцию настроил? Скачал с гитхаба архив, распаковал, потом запустил установку, в студии библиотека подключилась (я сужу это по присутствию ее в списках Python Envoronment проекта), питон в своей директории, проект в своей. Может я как-то неправильно запускаю?
>>857813 Так же как самыми базовыми операциями в питоне. Только формироваться будет динамический контент внутри html и вместо задания переменных будет передаваться контекст из вью функции. Изучи базовый синтаксис (суть скобочки {{ и {{%). Макросы, наследования, фильтры и дополнение блоков супером, по желанию, позже. Официальный мануал две страницы.
Пиздец, мне обидно что я без ИТ образования не заработал программированием ни копейки, при этом объясняю что-то тем, кто спокойно делает шекели в конторе.
Вновь телефонирую! Пикрелейтед - схема для сервиса мониторинга сайтов (задумка не эта, но пример идеальный). Описание: Django служит для отображения записей из БД, а также для добавления сайтов на мониторинг через формы. Отправив форму, пользователь просто выходит, мгновенного результата не нужно. Некий абстрактный worker.py пользуется этой же базой, беря из нее элементы и формируя справедливую очередь (первый зашел-первый вышел). Он обновляет контент страницы и временной штамп, после чего отправляет элемент в низ очереди и так далее. Вопросы: - worker.py. Как это должно выглядеть? На уме celery, RabbitMQ, redis. Ни с одним не имел дел. Тут важно отметить что хранилище в RAM не нужно, результат сразу пишется в перманентную базу. Стоит ли интегрировать worker в django или пускать отдельно? - Не будет ли воркер блокировать БД во время чтения/записи.
В общем, ваши мысли, похожие проекты, бредовые идеи: я рад услышать все!
>>857849 целери - самый распространенный способ для решения подобных задач, но я бы сделал на asyncio, aioamqp и aiopg, просто потому что мне так по фану.
>>857873 Спасибо за мнение. Ты можешь заполнить пустые места в моей голове, особенно что касается архитектуры. Ты бы делал это отдельно от джанги или как-то интегрировал? И очень интересует вопрос по совместному использованию БД двумя клиентами.
>>857877 целери способ "интегрируется", мой нет и незачем. в целери ты можешь выбрать бекендом редис или реббит или даже просто джанговкую орм. в постановке задачи я не вижу каких то одновременных конкурирующих попыток записи, поэтому клиентов может быть миллион.
Как реализовать личную страничку юзера джанго, мне по минималке, а-ля хеллоу %залогиненный юзер% причем наверное так чтобы на чужие профили ты залезть не мог, только на свой. Я так понял что юзер ид можно выудить прямо из объекта request, стало быть вьюха грузит из бд инфу по этому юзеру и выдает ему страничку. А если у меня там будет форма например поменять ник, то как правильно сгенерить action в ней? У меня опыта построения архитектуры с гулькин нос.
В догонку - что новичка бустанет лучше (после Головатого и Каплан-Мосса): django by example или two scoops of django?
Вот прочитаю укус питона и думатьпитоном, джангу поколупаю. А че дальше-то? Меня же никто с такими знаниями наверно даже джуном не возьмет. Какой-то проект пилить свой?
Пасаны! Как настроить Solr 6.2.1, чтобы он работал с джанго? Читаю django by example, и в главе, посвященной этой теме, есть мануал только для какой-то древней версии солра. В документации Haystack'a то же самое. Нужно ли создавать новое ядро в солре, если нужно, тот как? Куда засунуть настройки, которые генерирует haystack и которые в старой версии нужно было бы засунуть в schema.xml? Я нихуя не понял, короче. Может есть какой-то гайд по этим поисковым движкам чуть проще для восприятия чем документация солра?
>>857970 Вот блять теже мысли. Только уже и укус и дайв ин питон прочитал и еще пи-геймс поковырял. И даже задачик потыкал, которые тут анон оставлял. Спасибо Анон Кому я нахуй нужен без ИТ образование и в 29 лет хотя бы жуном.
>>857985 > Я не ебу просто, для чего он. >Beautiful Soup is a Python library for pulling data out of HTML and XML files. It works with your favorite parser to provide idiomatic ways of navigating, searching, and modifying the parse tree. It commonly saves programmers hours or days of work.
Ну чё сложного, пили свой супер-бложик, пили свою соц сеточку с картинками из того же джанго бай экзампл, вон из идея треда чего позаимствуйте и грамотно запилите, мало ли идей что ли? Вообще если своих идей мало значит вы ещё недостаточно вникли в предмет, больше учите, больше практикуйтесь
>>857996 Так им неинтересно и идей нет нихуя, лол. И либ не знают, и сети не знают, базовые алгоритмы не знают, нихуя не знают. Хотят денег. Лепят бложики по туториалу и читают вводные книжки по питону типа как нотация работает, kjk. То-то кому-то сраку порвет когда на собеседовани окажется что бэкенд - это не просто джанго, а дохуя чего.
>>858016 Да я понимаю, просто всё равно чем бы не занимались люди рано или поздно они врубаются и им начинает это нравиться. Это ж не на каменоломне кувалдой камни на щебёнку хуячить. Так что даже при таком убогом подходе "ради денег" можно рано или поздно озадачиться серьёзно и на путь истинный встать
>>858016 > читают вводные книжки по питону типа как нотация работает Ну вот сказали бы что еще знать-то надо, я уже и в ньюжнем треде писал, и в других, никто кроме самих книг по синтаксису языка нихуя не советует.
>>858019 Скажи какая тема интересна и что-нибудь посоветуют Но пока синтаксиса не знаешь ясен хуй читать книги по синтаксису и прочей хуйне, потом sicp на питоне навернуть для общего представления >>858022 TCP/IP Illustrated
>>858010 60-80 руби джуну. Не могли найти несколько месяцев. От отчаянья они уже рекламу в пабликах покупали и объявления в общаге бауманки вешали. Знаю лично человека который от них в Германию съебал, после чего им рубисты срочно потребовались.
Хочу сделать веб-сервис с регой, оплатой… личный кабинет, вся хуйня. Что брать для фронта? Достаточно будет бутстрапа какого-нибудь, чтоб красиво было и простые формы почти без жс или лучше сразу брать реакт и делать мощный клиент-сайд на жс?
блять вы в своем ДС ахуели в край. получаю 1к причем знаю django/flask + алхимию + angular + postgres+mongo+redis+git+gitflow+hg сам деплою при помощи женкинса который сам настроил + нгинкс и всю хуйню(будь то дебиан или фриибсд, сука я еще докер освою вообще ахуенный буду). где блять такие зп для джунов в 1.2к
Привет. Стоит задача запилить вебапп, который связан с бд и по запросам должен выдавать нужную инфу из этой самой бд. Был бы признателен за совет на чем и как это лучше всего сделать. Спасибо.
Подскажите нубу что не так. Вот хочу из директории где работаю импортировать файл, пишу from . import file SystemError: Parent module ' ' not loaded, cannot perform relative import python 3.5 Добавлял в директорию также файл __init__.py, но не помогло, да и нужен ли он тут ?
В джанго такую херню выдает притом что я использую вспроенный логин. Хуй его что хочет. >Exception Value: login() missing 1 required positional argument: 'user'
>>858421 Я понимаю, но она там на хуй не нужна. Только раньше писалось так 'django.contrib.auth.views.login', а с версии 1.10 нужно писать просто логин предварительно импортировав. Пиздос, в доках нихуя не нашел.
Есть логаут из стандартной библы Джанго. Так вот, когда происходит логаут из админки то он кидает на страницу логаут из сайта после самого логаута. Если порядок подключения апов ставить Django.admin.auth> app_name то наоборот: при логауте из аппа кидает на страницу логаута из админки. Как это обойти?
Анон, неужели вьюхи в джанге не передают автоматом в темплейты request'ы? Хочу из реквеста прямо выудить юзера, никак не могу. Задолбался я в словаре отправлять ему params['username'] = auth.get_user(request).username
>>858550 То бишь скриптинг всякого промышленного ПО, использующего Пердон в качестве скриптового модуля. Написание плагинов, макросов, автоматизация, подключение к этому всему джанги.
>>858538 Если в context_processors в настройках есть 'django.contrib.auth.context_processors.auth', то у тебя в шаблонах уже доступна переменная {{ user }}. Просто делаешь {{ user.username }} и все.
>>858560 Понял, у меня не работает потому что я отправляю данные через render_to_response, а там этого не предусмотрено. а я думал что render_to_response это ультимативно и максимально удобно
В погоне за однострочными решениями, пишу сюда. Смог уложиться только в три строки. Есть вариант компактнее?
Сама задача: Вводится натуральное число N. После этого вводится последовательность из N натуральных чисел. Программа должна определить и вывести на экран, верно ли, что все элементы последовательности больше N.
>>858719 Мути же, хорошая идея Но целой толпой новичков ничего не запилишь, только тупить будете вместе в чятике Так что мути но сам, а что не ясно - спрашивай тут и на стаковерфлоу
>>858735 Будто этот олигофрен знает что такое изоморфное приложение. Ему срочно нужно найти хайповую хуйню чтобы зашибать бабло (но соснёт хуйцов, увы)
>>858735 Я не освесм это имел в виду. Например, слышал, у джанги какие-то проблемы с запросами к БД. Я нюфаня, поэтому не очень понимаю, но там что-то ORM не поддерживает, что-то такое, вот. И говорят, мол, это плохо, приходится писать sql-запросы, а это нехорошо, потому что бд может поменяться.
>>858743 Ну вот из другого дискача цитата, декабрь 15го >Используя Django, я половину обращений к таблицам реализовывал в чистом SQL, а затем стыковал результаты с данными полученными с помощью ORM.
>>858756 а давайти луче замутим сайт на джанги что бы чилавечик регался, захадил в лични кобинетик и мог купить кравлир на многа запросав с проксями ... я магу например сделать кравлир распридиленни, асинхронни. а? довайти?
где можно почитать норм гайды как мне запилить на джанге аякс-запросы через jquery? с жс знаком очень поверхностно, мне бы что-то на уровне скопипастить решение, подставив свои переменные. жквери нужен для того, чтобы не рефрешилась страничка при сабмите комментария, и чтобы ретйилось без рефреша
>>858468 Чувак, вкури в тему. Сейчас ты являешься одним из тех повылезавших в последнее время ебанутых домохозяек, которые думают что могут в программирование. И дело не в том, что у тебя мало знаний - ты просто неадекватен, ты не умеешь задавать вопросы, ты ленивое хуйло. Пиздуй гуглить, разберись блять во что ты влез и как это работает, прочитай ебаную документацию, раз уж ты решил дрочить фласк. Я блять ни словом тебе не помогу, потому что ты заебешь своими тупыми вопросами меня и всех остальных по всем форумам и тостерам. А самое главное ты заебешь самого себя - высрешь какую нибудь поделку через полгода, и не будешь знать что делать дальше, потому что ты ничему не научишься с таким подходом. Иди читай документацию, находи статьи по теме, не ной что не знаешь английский и бог тебе в помощь такому ебанутому.
Парни, есть строка - высер urllib.request, нужно распарсить и несколько совпадений распихать по переменным. Помню в перле можно было в саму регулярку вставлять конструкции вида (?<_имя_переменной_>re_выражение) или просто \1, есть ли в питоне что-то подобное?
Вопрос свежевкатившегося ньюфага: PyQt: У меня на форме есть прогрессбар и текст-едит окно сообщений. Чтобы их обновлять в процессе работы моей программы, нужно создавать отдельный поток на прогрессбар и текстэдит? Или можно так: 1 поток - работа программы 2 поток - всё, что касается гуя.
Объясните нюфагу, как там вообще можно получить подобное задание? Ну очевидно с этим легко справиться, но человека, который только вкатился, никогда не возьмут. Как жить...
>>859198 1. Написать крутой cover letter. 2. Сделать по-быстрому и показать ему результат работы когда будешь апплаиться. 3. Или предложить свои услуги за чуть меньший прайс. Я хз что еще сделать, чтобы тебя заметили
>>855102 (OP) Господа, помогите разобраться с этими ебучими строками http://ideone.com/Hknw65: Как получить из последовательности вроде "\xcd\xe8\xf1\xee\xed" строку русской кодировки? Строка приходит из html, при этом латиница там читается нормально, а русские символы именно так.
Прошлый: