Вы видите копию треда, сохраненную 3 февраля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Прочитай шапку перед тем, как задать вопрос!
Срочно нужна помощь пайтониста.
Мы сидим тут : https://2ch.pm/b/res/144922772.html (М)
Пытаемся программой Лазанья узнать пароль от другой учетки вин7. Скачали питон и все остальное, но что-то не робит лазанья как надо - возможно, проблема в кодировке или еще что-то. У нас там питон-кун, но он не эксперт. Придите помогите, пожалуйста.
> Пытаемся программой Лазанья узнать пароль от другой учетки вин7. Скачали питон и все остальное, но что-то не робит лазанья как надо - возможно, проблема в кодировке или еще что-то. У нас там питон-кун, но он не эксперт. Придите помогите, пожалуйста.
Тред закрывается но если итт кто-то хочет помочь - отзовитесь, очень прошу. Скину всю необходимую инфу.
Но ведь всем похуй на тебя и на то, что ты говоришь:((
module_a
__init__.py
script.py
module_b
__init__.py
в module_b/__init__.py есть переменная NAME = 'TestModule'
как из script.py получить NAME?
пробую так:
import importlib
m = importlib.import_module('module_b')
'NAME' in m.__dict__ # False
как до нее достучаться?
>>916068
> Пытаемся программой Лазанья узнать пароль от другой учетки вин7. Скачали питон и все остальное, но что-то не робит лазанья как надо - возможно, проблема в кодировке или еще что-то. У нас там питон-кун, но он не эксперт. Придите помогите, пожалуйста.
Тред закрывается но если итт кто-то хочет помочь - отзовитесь, очень прошу. Скину всю необходимую инфу.
Собсно проблема вот: unicodedecodeerror: 'ascii' codec can't decode byte 0xc0 in position 0: ordinal not in range <128>
Может есть какой-то простой способ, как это убрать, чтоб laZagne работало нормально?
Если тебе лень решать эту проблему, можешь в линуксе запустить этот скрипт, ибо это спермопроблема.
Я на винде лол. И я не прогер.
Мне просто нужно с помощью laZagne найти пароль от учетки бляди, которая мне пересрала всю жизнь, и прочитать ее вк.
import module_b
Ты уже меня утомил, тебе же объяснили в каком направлении искать информацию, если ты не хочешь сам решить проблему, предложили вариант где этой проблемы нет, хуйли тебе еще надо? Хочешь чтобы кто-то за тебя все сделал? Не охуел ли ты часом? Иди и делай сам, если тебе это надо.
Насколько я понимаю, это из-за того, что или логин, или пароль - кириллицей. Но как исправить, понять не могу. :(
>>916089
Как же вы доебали уже с вашими псевдоуникальными охуенным проблемами. Учиться на чужих ошибках никто предлагал?
Никто кроме тебя в данном случае в данной ситуации не виноват. Бабы вообще никогда не меняются, они одинаковы всю жизнь ебаного человечества. Но ты можешь врубиться хотя бы в элементарное - если человек приносит в твою жизнь проблемы и только проблемы, от него чего-то реально иного ждать не стоит. Аутотренинги тут не помогут. Ситуация не изменится. Этот человек так и дальше будет тебе приносить проблемы всё больше и больше этих проблем, пока всё вокруг не перекосоёбит.
Просто задавай себе вопросы - что в твою жизнь приносит вошедший в неё человек. Много ли ты теряешь находясь рядом с ним. Если ты теряешь намного больше чем получаешь - нахуй.
Единственный косяк в данном рассуждении, получится так что только враги приносят нам меньше всего проблем и больше плюсов, каким бы это странным не показалось.
неплохо
Если вместе с питоном у тебя поставился IDLE, то запускай скрипт через него, там кодировко-проблем нет. Или качай и запускай в PyCharm.
Спасибо, попробую осмыслить, что ты написал.
А что "скрипт"? Я запускаю программу laZagne. Или это и есть "скрипт"? Или скрипт - питоновский файл программы, который я запускаю из cmd?
Алсо, анону, который обещал вечером помочь - большое спасибо. Чтоб я не создавал тред, можешь мне написать на drakered12[СОБАКА]yandex[точка]ru ?
>>916128
Так все это ясно, анон. Я собсно и ухожу. Прямо сегодня съезжаю на новую хату. Я не буду цепляться за человека, которого я любил и который меня так жестко наебал и использовал. Ничего мне не принесла кроме горя.
Скрипт - это файл с расширением .py. В твоём случае, как я понял, это lazagne.py
Понял. Сейчас гляну, что можно с этим сделать.
При клике правой кнопкой на скрипт есть опция "Edit with IDLE".
Там через Run запускается, но как команды писать, не понимаю. В cmd я писал python lazagne.py all и мне выводило там прогу в инфе.
Тут такое не прокатывает.
там инфу в проге*
фикс
Если же я ввожу те же команды в IDLE, то мне пишет "SyntaxError: invalid syntax"
В окне с настройками перед запуском говорит "Error: Please select a valid Python interpreter"
Поставь в настройках путь к питону:
File - Settings - Project: Interpreter и там укажи путь к python.exe
Как в IDLE передать аргументы командной строки я хз, в пайчарме тоже. Первое, что приходит в голову это запустить в cmd что-то вроде:
IDLE "путь к lazagne.py" all
В таком случае тебе нужно найти где лежит исполняемый файл IDLE и открыть там терминал (Shift + ПКМ -> Open command line here)
Хотя щас посмотрел в пичарме, там вроде просто:
Run - Edit Configurations...
И там в поле Script parameters просто напиши all
"IDLE не является внутренней или внешней командой, исполняемой программой или пакетным файлом."
Насчет pyCharm - вроде настроил, но лазанью теперь запускать она вообще не хочет, лол....
Щас попробую перезапустить пайчарм и снова запустить прогу.
>"IDLE не является внутренней или внешней командой, исполняемой программой или пакетным файлом."
Потому что нужно точно указать имя файла, т.е. не idle, а idle.bat, например(или idle.pyw, не знаю какое у него разрешение). Напиши в консоли dir, оно выведет список файлов в папке и там посмотри
Хуй знает, мне пайчарм всегда помогал с кодировками, правда у меня и питон 3 (можешь, кстати его попробовать ещё). Так же попробуй, например, вместо all поставить browsers
А вообще зачем тебе питон? Гугл говорит, что этот лазагн можно и без него:
https://github.com/AlessandroZ/LaZagne
Собственно есть форма: http://pastebin.com/LLgCS6AP и есть проблема, в представление, которое эту форму обрабатывает, в request нету ни 'usr' ни 'pwd'. В чём проблема ?
Да. Я думаю, что проблема в описании формы, так-как в запросе есть только csrf_token.
Ну, сложно что-то советовать потому, что я твой код не видел. Но я вижу, что ты форму сам рисуешь, а не с помощью {{ form }}. Попробуй еще изменить id полей на id="id_usr" и id="id_pwd", потому что именно так Джанга их именует, когда генерирует форму сама.
Замена id не помогла. Значит буду описывать форму, просто пока только с модельной формой работал, а код на примере основан. Спасибо за помощь!
> if sys_user is not None and sys.user.is_active:
Полагаю, точка лишняя.
if sys_user and sys_user.is_active:
Точка лишняя, да. Но дело явно не в этом, post запрос пустой.
Описал форму, передаю через {{ form }} Запрос идет нормально. Остановлюсь на этом варианте. Еще раз спасибо!
Не проще ли было бы использовать стандартное джанговское представление для логина? Зачем тебе тогда вооще джанго, если ты сам все пишешь с нуля?
Оно подключается парой строк https://simpleisbetterthancomplex.com/tutorial/2016/06/27/how-to-use-djangos-built-in-login-system.html
И не называй функции так __method_name__ - такие имена использует сам питон для своих дел. Если хочешь функцию для внутреннего ипользования, то добавь одно подчеркивание в начале имени - _login
> Зачем ?
Затем, что я учусь. Дальше, по мере продвижения, я буду использовать новые возможности django, сейчас же пишу по урокам.
Какие-то странные у тебя уроки, судя по стилю твоего кода. Или ты на чем-то писал до питона?
Писал на Си.
PANDAS!
- нужные данные он сохраняет все нужные данные в postgreSQL через джанговский orm
- у него также есть список готовых url, который постоянно дополняется, и по которым он больше не ходит
- пока что список хранился как shelve - самое простое, что пришло в голову
Что меня беспокоит:
1) скрипт крутится на виртуалке с линуксом - из виндовс фал не открывается
2) хранить таким образом данные кажется не очень правильным
3) скрейперов может быть несколько - не хочется каждый из них привязывать к джанговской базе
Что хотелось бы:
1) Способ хранить все в одном файле
2) Который можно открыть в любой системе
3) Без особых проблем с настройкой/использованием
Пока что смотрю на SQLite (из коробки поддержка питоном), но охуеваю от всяких оберток типа SQLAlchemy. Опыта работы с базами нет.
>скрейпер
Я так понял парсер?
>через джанговский orm
На джанго? Есть же scrapy/grab
> 1) Способ хранить все в одном файле
> 2) Который можно открыть в любой системе
> 3) Без особых проблем с настройкой/использованием
CSV, если у тебя не сотни миллионов строк. Можешь выгружать его в любые популярные базы данных или открывать в екселе.
Scrapy попробуй. Очень просто и удобно, плюс можно выгрузить в облако одной строчкой в консоли. Хранить можешь в csv, как анон выше советует, или в json lines каком-то.
Как использовать джанго ОРМ вне views и прочих файлов проекта? Через get_wsgi_application?
import os
import sys
import django
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_app.settings')
django.setup()
это если файл с этим содержимым лежит в корне проекта, т.е рядом с manage.py если нет то нужно указать другой sys.path
ты же уже используешь субд, зачем еще что то?)
А у меня так:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app_name.settings")
application = get_wsgi_application()
Что правильне интересно.
>from django.core.wsgi import get_wsgi_application
хз, я из оффдоков взял https://docs.djangoproject.com/en/1.10/topics/settings/#calling-django-setup-is-required-for-standalone-django-usage
Создание асинхронного имейджборда с использованием сверхбыстрого асинхронного key-value хранилища.
Смотришь правильно, SQLite идеально зайдет для описанных тобой кейсов. Если непонятно с SQLAlchemy почитай:
https://www.fullstackpython.com/object-relational-mappers-orms.html
статьи, типа вышеуказанной. Кроме основ, там же найдешь упоминания о других ORM.
Базу предлагаю переконвертировать в два шага.
1. Сначала через какой-нибудь gui (navicat) для постргесса конвертируешь каждую таблицу в отдельный csv файл.
2. Далее, через sqlite browser создаешь базу данных и импортируешь csv файлы. Все.
Осталось написать одну строчку с указанием пути к бд и еще одну строчку с именем таблицы для ассоциированной модели.
Поехавших, которые рекомендуют работать в csv не слушай, они тебе не друзья.
>>916947
Как я понял, он эту бд с джангой использует.
Там можно просто 'python manage.py dumdata app_name.ModelName --indent 4 > fixtures.json'
Потом, в файле настроек подключаешь Sqlite бд и делаешь 'python manage.py loaddata fixtures.json'.
https://docs.djangoproject.com/en/1.10/ref/django-admin/#dumpdata
С пикчами вообще не работал в нем.
PIL/Pillow
если ты о строительстве, то пилил давно корешу прогу для расчетов вентиляции
Тоже самое, что и трусы через голову одевать, csv rfc написан не для быстрых и комплексных CRUD операций, он для тети Маши из соседнего отдела, чтобы могла работать с понятным ей представлением.
Разница в версиях питона, ты наверняка запускаешь на третьем питоне, а программа написана на втором, поэтому качай 2.7.
Спрашивает нихуя не понимающий: а почему нельзя это в dict держать в памяти и потом сериализовать в json или в pickle? (без наезда, просто интересно)
a = ['test string %d' % x for x in range(5000000)] — 400 МБ всего требуется для этих пяти миллионов строк.
мимопоказал
Смотря в какой. Обычно во внешей, то есть на диске, а в памяти только индексы и кэш, но при желании можно хранить в ОЗУ всё. Хотя, честно сказать, я не знаю, как конкретно SQLite работает, потому что настоящие СУБД использовал, поэтому в ОЗУ он может вообще ничего не хранить и на каждый чих дергать диск.
Окей, спасибо. Кажется настало время разобратсья с базами данных
Анон вскукарекнул про несколько миллионов — я дал ему несколько миллионов. Остальные виляния жопой меня не интересуют.
Вот ты долбоеб, честное слово. Ты же понимаешь, что я не предлагаю всё в памяти держать. Просто в юношестве байтоёблей занимался и прекрасно понимаю, что «несколько миллионов строк» в памяти держать как раз проблем никаких нет. А несколько десятков миллионов — это уже другой вопрос.
Собственно, это действительно уже другой вопрос и обосрался на ровном месте тут ты. Не понимаю только, зачем.
Федя, раз ты имел работу только со строками длиной в 20 символов и не более, то мне тебя жаль, байтоёб хуев.
>Я так понял парсер?
да
>На джанго? Есть же scrapy/grab
на джанге крутится сайт-обертка под него, т.е. данные из парсера идут сразу в нормальную дб, но саму служебную информацию хочется хранить отдельно
>CSV
а хранение в таком формате говнокодингом не считается? наряду с моим shelve методом
>>916632
Да у меня совсем простенький, обошелся без scrapy да и не пробовал его никогда
>>916634
у меня так
http://pastebin.com/fWiku3N7
>>916947
Спасибо за статью, попробую Alchemy/Pony. Конвертировать/fixture в моем случае не нужно, как выше писал - постгре для данных с парсера и для сайта, а для служебной инфы со скрейперов хотелось что-то что не будет говнокодом, простое в использовании и доступе, но с возможностью расширения функциональности - т.е. SQLite с оберткой попробую.
Аноны, еще вопрос: простые сайты хостить доводилось, а вот с питоном/бд - в первый раз.
Как искать хостинг или как это вообще называется с такой комплектацией под него?
Т.е. нужно выложить сайт на джанге с PostgreSQL и возможностью удаленно запускать парсеры/свои скрипты на питоне.
>а хранение в таком формате говнокодингом не считается?
Ты так и не сказал, что за данные и в каком объеме? Это просто список урлов или может база со связанными таблицами? И для чего тебе их оттуда забирать? Куда-то перенести надо, просто бекап или ты их как-то обрабатывать собрался?
>наряду с моим shelve методом
А вот про это я не понял, нахуя тебе такие извращения?
Смотрел,там ничего про Postgre не написано, да и хочется для начала мнение анона послушать
>>917612
сейчас у меня в shelve хранится словарь вида
site_name: [links_parsed]
каждый запуск парсер запрашивает ссылки с сайта, если ссылка уже есть в links_parsed - он ее пропускает, вот и все функции
но мне это кажется плохой практикой + планирую добавить детали уровня даты и кол-ва объектов, полученных с каждой страницы - тут уже хранить все в shelve уже совсем не радует
>>917612
в питон вкатился недавно, ничего лучше пока не знаю
сука несколько часов к ряду читаю твой бред ебучий! ты сука бесишь еблан! у тебя есть БАЗА, ДЕБИЛ ТЫ ЕБУЧИЙ, ДАННЫХ, СУКА ДАУН, POSTRESQL! ПИДОР ТЫ СУКА ЗАГУДРОНЕННЫЙ! ИДИ ТЫ НАХУЙ СО СВОИМИ SQLITE, CSV И ПРОЧЕЕ SHELVE СВОЕ ВЫСРАННОЕ ЗАБЕРИ НАХУЙ ОЛЕНЬ!
>сейчас у меня в shelve хранится словарь вида
>site_name: [links_parsed]
Так сохраняй в базу через джанговскую орм, создай модель. Или можешь ради интереса попробовать Redis или MongoDB.
Дампай в JSON/CSV. Правда, ты так и не объяснил нахуй оно тебе надо.
А для парсинга погугли grab, он не сложный и если для тебя это будет плюсом, есть свежая документация на русском.
Тестирование, в основном. Ну или из личного опыта, например парсинг хитровыебанных сайтов с защитой от парсеров, мне один раз пригодилось. И один раз знакомому за пиво написал простенького бота для одной браузерки.
Блядь, да это даже не самое очевидное, это - его главное применение. Может, где-нибудь еще?
Эх, обознался.
Косяк в том что ты любил не человека а его образ в себе
Посмотри лекции MIT 6.00x (например на edX), там, наверное, есть субтитры на русском.
или вот, django приложение при старте собирает и проверяет инфу о своих модулях (некие переменные в __init__.py каждого модуля) и как мне протестировать функцию проверки этой инфы, если в тест django поступает уже стартанувшая, а я уже поехавший блять от этих тестов?
>у нее есть метод check_slug(self), этот метод бессмысленно использовать вне метода save(self...)
Что значит, бессмысленно? В нем используются приватные аттрибуты модели?
Ну так сделай модель с нужными аттрибутами и вызывай на ней check_slug.
>проверяет инфу о своих модулях (некие переменные в __init__.py каждого модуля) и как мне протестировать функцию
Импортируешь переменные из модулей, засовываешь в функцию? Сложно сказать без примеров кода.
О, ты из таких типов людей, которые всегда ко всем придираются, которые будут до последнего пытаться доказать, что человек не прав, даже если он прав.
Можно все гораздо короче сделать, используй метод replace у строки.
Изучай стандартную библиотеку.
Анончи,что они от меня хотят?
спасибки:3
http://ideone.com/VApjic - мой models.py
По задумке должен при сохранении генерировать из тэгов article_title, но выдает ошибку: ValueError: Article objects need to have a primary key value before you can access their tags.
Гугл не помог.
Подскажите что делать?
Или вообще подскажите что гуглить и смотреть, нужна генерация article_title из tags
Пиздец ты тупой, ты же обращаешься к айдишнику if not self.id который появится только после сохранения объекта. Тебе же данга ясно выплевывает эксепшен.
упрощенно вот что есть http://pastebin.com/rM5TrsTA
только модель FlatBuy определена совсем в другом приложении - модуле, а при старте декоратор CatalogItem собирает все модули-приложения с их моделями и регистрирует в REGISTRY попутно проверяя что там у этих модулей в __init__.py. то есть работает декоратор до старта главного приложения.
а вот что в тестах http://pastebin.com/3LNMAnwN
в def __init__() ли def setUp ли - неважно, main_app уже загружено и я не знаю как протестировать CatalogItem.register() или другие функции из CatalogItem которы проверяют данные из __init__.py загружаемых модулей.
есть еще django.setup() - ее можно попробовать протестировать но я не знаю как, например вот runtests.py который тесты запускает http://pastebin.com/1gxg4uVC вот в нем setup() вызывается и инициализированную джангу уже скармливает тестам.
>>то есть работает декоратор до старта главного приложения
то есть работает декоратор во время старта главного приложения, но до завершения старта всего проекта
да не, CatalogItem.registry() хочу тестировать, которая уже вызывалась и уже собрала данные по модулям к моменту теста, то есть мне нужно протестировать инициализацию проекта по сути, а я не знаю как
Ох лол, я и правда тупой. Надо было это делать после сохранения записи. Спасибо, ананас.
Новичкам в джанге как я.
В случае если надо что-то сделать перед или после сохранения модели есть такая штука signals. Гуглите django signals.
hh.ru
За почти три года работы в аутсорсе (Минск), видел проектов пять на джанге и фласке и два десктопных проекта - один на PyGTK, другой на PyQt и даже с машинным обучением. Не думаю, что это репрезентативная выборка, потому что сотрудники реагировали с удивлением - ого, десктоп на питоне.
В этом есть какой-то баланс. Я на красивом питоне занят в фулл-стек вебе, а рядом плюсовики делают что-то охуенное, но зато на, в общем-то, кошмарном для меня С++03.
Ах да, из предложений работы, которые приходили на линкедин - всё веб. Веб плюс большая нагрузка, веб плюс статистический анализ, просто веб. Из моего опыта, совсем без js css html может быть сложно найти себе место под солнцем.
Хочу перекатиться из дотнета в питончик, какие подводные? Что по джанге почитать, чтобы сойти за мидла? Фласк смотрел - какая-то хуйня микрофреймворк
> какие подводные?
Вакансий меньше
>Что по джанге почитать, чтобы сойти за мидла?
https://docs.djangoproject.com/en/1.10/
http://pastebin.com/qZTJbptk
Тестируй CatalogItem.register_module и CatalogItem.register_item, остальная ебола там тривиальна.
Как конкретно тестировать - зависит от кода этих методов.
зачем мне твои доки на джангу, там описание фреймворка и пара примеров на коленке. Мне нужны бест практис.
Смотри внимательно, в случае 4,3 первой приходит 4, функция возвращает фалс. У тебя логика работ не правильная, просто с тестом повезло.
Разве for i in nums не должен проверить все значения массива прежде чем выдать результат?
Хватит, вот только потом, сука, приходится ебаться с кодом, написанным такими ебанатами.
Нет, но по крайней мере с такими дебильными вопросами сюда не бегал и говно не коммитил, ибо тимлид контролировал и тыкал в косяки.
Представь, что у него тим-лид - это ты, и тыкай его в косяки. Никто не заставляет тебя выдавать в качестве ответа готовый код. Просто укажи на ошибку и все.
Не все учились в тепличных условиях, в команде с опытными программистами. Заходить в тред, где в основном спрашивают нубские вопросы и кидать говном в нубов - нехорошо.
Что за хуйня вылетает?
Навернул тебе за щеку.
Как протестить отдельный метод в коде? Пишу скрипт, который экспортит названия песен из Google Music плэйлиста и выкачивает их из вк. Так вот, хочу отладить только метод, который начинает считывать названия песен из .txt файла, но каждый раз приходится выполнять экспорт плейлиста в .txt файл.
Блядь, тебе в гугл лень слазить или ты просто тупой? Первая же ссылка по ошибке тебе поможет решить проблему, нахуй ты сюда пишешь, не понимаю.
Ну и продолжай сосать хуй, дебил блядь. Один хрен, с таким подходом, ты обречен на сосание хуйцов по-жизни, ибо самостоятельно решать свои проблемы не можешь.
Ты пробуешь засунуть в один символ больше одного символа, кроме того у тебя ретурн происходит на первой же итерации (при обработке первого символа). А еще - ты немного глупый тестер с Киева.
Создавай новую строку и в нее джойнь символі. Или однострочником захуячь через редюс, или что там в том питоне у вас.
Потому, что ты дебил.
Может ты не от того паука пронаследовался.
тому що перший же ретурн ПРЕРЫВАЕТ сука цикл, потому что выходит из функции
пока создай отдельный списко и в него хуячь, а в конце верни строку из этого списка
потом yield пользоваться научишься
Проорал с этого детектора.
> А еще - ты немного глупый тестер с Киева.
"немного глупый тестер с Киева" - это я. А ты, случаем, не тот пидор, который меня забанил в конфе?
Только ты ничему не учишься.
тысячи их и все одинаковые.
Шоб бесплатно - хероку
Шоб не сильно платно - Диджитал Оушен
Шоб счета выставлять по стране и ндс компенсировать - мастерхост.ру
pythonanywhere
https://kivy.org Вот, можно юзер интерфейсы быдлокодить. Только нахуя с питоном извращаться? Если только по-быстрому какой нибудь прототип приложения для себя сварганить. А так этот >>918916
правильно говорит учи яву.
Но тут два прохода по массиву!
>>918753
Берёшь и комментируешь функцию, сохраняющую всё в тхт. Или отдельную тестовую функцию создаёшь, которая и вызывает только то, что нужно. В чём проблема-то твоя вообще?
Ты крыса, надо было ему варик с yield написать чтобы у него мозг взорвался.
А хотя у него мозга нету же OH, SHI~~~
Дважды прошелся по массивам твоей мамки.
И вообще, где есть понятное изложение async/await синтаксиса?
>почему внутри той же джанги нельзя просто использовать асинхронные функции
Я думаю что можно, но ты должен сам заботится о безопасности чтения/записи всех расшаренных объектов, а это достаточно заебно и надо четко понимать как эта вся хуйня работает и все равно где-нибудь что-нибудь проебешь и оно выстрелит вплоть до внезапной смерти интерпретатора.
Для своёго юнит-теста подготовь фикстуру и стабай метод который отвечает за возврат данных в txt.
> о безопасности чтения/записи всех расшаренных объектов
Хуй знает как сделана джанга, но если там треды и примитивы синхронизации типа локов/семафоров, то достаточно просто заменить их на асинхронные аналоги. Но, да, если бы всё было так просто, то это давно бы уже сделали.
Сам метод: http://pastebin.com/nFRnCwjH
Мимопроходил и увидел твой вопрос. Не знаю, как в ваших питонах это делается, но размер файла можно получить из заголовка ответа сервера, если он его передаёт, конечно же.
И правда. Сам уже нагуглил.
import urllib2
f = urllib2.urlopen("http://your-url")
size= f.headers["Content-Length"]
print size
регекспом решай
Немного переделал метод http://pastebin.com/b3thTwCN
Но теперь не могу придумать, куда впихнуть этот запрос проверки размера файла перед скачкой. Вначале проверяется существует ли файл, а потом идет закачка. Как можно впихнуть две проверки сразу типа, если файл существует, то сравнить еще размеры существующего с тем, что закачивается, а потом, если совпадают, то скипать, если нет, то перекачивать?
Скачивать будет .read() у возвращённого urlopen'ом объекта, насколько я знаю.
>>919208
>Как можно впихнуть две проверки
Берёшь и впихиваешь их без задней мысли, убирая ненужный else - http://pastebin.com/0iAHyATP (код, естественно, чуть переписать, вставив нужные названия функций, файла и т.д.)
>>Почему он лучше синхроных фреймворков
потому что не блокирует IO и это не критерий лучше\хуже
и asyncio и aiohttp не являются фреймворками
>>почему внутри той же джанги нельзя просто использовать асинхронные функции
можно
>>И вообще, где есть понятное изложение async/await синтаксиса?
миллиарды статей уже понаписано, выбирай любой туториал
> Берёшь и впихиваешь их без задней мысли
Он начинает перекачивать файл, даже если он уже скачан до конца почему-то. Такая же хуйня и через requests.
http://pastebin.com/QDVMFMfa
Наверное, проблема в том, что отображение размера файла идёт в разных величинах. Можно как-то привести к одному?
Привёл просто значения к интовым и завелось. Но теперь, если файл перекачивается, то надо выводить сообщение о том, что он перекачивается, а у меня в любом случае пишет, что он пропускается.
if int(r.headers['Content-Length']) == int(os.path.getsize(i + ".mp3"))
Как заменить определенные символы в строке на определенный?
http://pastebin.com/is2tQz7p
Любой упаковщик питона в exe, да, именно так и гуглить.
Весить будет как слон потому что будет бонусом содержать в себе еще и питон со всеми библиотеками окружения - ну и хуй с ним, пусть весит как хочет.
pyinstaller
Бля, в консоли нормально работает, а в коде - нет.
https://repl.it/FUPN/0
Пишет:
> TypeError: translate() takes exactly one argument (2 given)
> translate() takes exactly one argument
item = str(item).translate(None, ''.join(chars_to_replace))
Хуй знает почему, но элементы со списка не считались строчными. Такой костыль(?) помог.
Как сделать простенькое web app, которое запускается НЕ из командной строки, вряд ли " заказчик"(это учебное приложение) будет активировать виртуальное окружение в терминале и запускать сервер на локалке.
Или смотреть в сторону EXEшников?
http://pastebin.com/zghkcsVf
развернуть свое веб приложение, которое, естественно запускается из командной строки, на веб сервере. варианта два: развернуть веб сервер с приложением на своем компе и прокинуть 80 порт, на твоем домашнем маршрутизаторе, на твое машину; развернуть в интернет.
Самое простое и правильное - делаешь web app и размещаешь его на каком-нибудь-хостинге. Есть бесплатные типа heroku и pythonanywhere. Или у "заказчика" интернета нет?
Наверное можно создать .bat файл и прописать в нем строчки для запуска сервера приложения. Но нужно позаботиться о зависимостях. Или отправлять зависимости вместе с проектом, или сделать так, чтобы они устанавливались по клику на .bat файле.
web2py что-то такое умеет, кажется. http://web2py.com/books/default/chapter/29/14#How-to-distribute-your-applications-as-binaries
Или гугли какие-нибудь упаковщики в exe.
Ну 3 книги по конкурентному программированию на пайтон я нашел. 2014 2014 2015. Все до появления async-синтаксиса и стало быть устарели. Везде елды и декораторы. Кроме того, мой английский меня тут уже не спасает. Презентеры на ютабе больше заморачиваются вставлять тупые гиковские шутки чем излагать материал и заниматься своим картавым голосом. Статьи посвящены созданию конкретных вещей, предполагают уже хорошее знание модуля и чаще всего представляют из себя водопад кода с мелкими щипотками комментариев.
Абстракции для того и придумали чтоб удобнее было. Если тебе удобнее без них то это странно. Если пишешь для себя и тебе реально проще то чому ни. Но если бы мне например пришлось за кем-то модифицировать/дописывать запросы, меня бы сильно это выбесило.
>>919318
Спасибо за ответы.
Хочу пояснить зачем мне это нужно. Пытаюсь осваивать upwork (громко сказано, я там даже не зарегистрирован), пока по силам только парсеры. Просто читаю объявления и пытаюсь прикинуть как это сделать(через пару часов начну писать)...
Так вот, в одном из объявлений описывается простой парсер сайта с вакансиями, который принимает список локаций + ключевое слово, на выходе csv файл с характеристиками подходящих вакансий. В общем, там условия "WEB APP or desktop app" и я подумал, возможно, есть какие-то общие требования по оформлению web app парсеров.
Извиняюсь за сумбурность и многословность.
я пишу учебный проект соло. Когда его будут оценивать, у них слишком бомбанет?
Хз я не знаком с образовательными учреждениями и процессом.
ОРМ подходит для коротких\мелких изменений. Типа взять пользователя по айди, что-то с ним сделать, вызвать объект из релетейтед таблички, и с ним что-то сделать, потыкать методы прикрепленные к ОРМ, инфлейтить, дефлейтить пароли например, или параметры.
если в реальности нужно вытянуть какую-нибудь хитровыебанную статистику, или иметь оптимизированный запрос, то нужно юзать sql.
недавно читал статью что можно поиметь анальную жопу с orm который в django, так как когда оно раздуется до больших размеров, то может в особом случае иметь запрос с "NOT IN (стопицот айдишников)", что будет иметь анальную боль.
Но для всякой мелочевки, и недопродакшена можно спокойно юзать ORM если удобно.
В реальности мы на собеседованиях спрашиваем и по SQL, и по ORM(как в других местах я хз).
Никак не бомбанет, есть вероятность что они и сами ОРМ не знают, а SQL видели только на картинках в интернете.
Я не знаком со спецификой заказчиков на биржах и насколько они знакомы с запуском скриптов которые заказывают. Но в пайтон хорошим тоном является создание пакета со своим setup.py requirements.py и Procfile и runtime.txt. С таким комплектом его будет просто развернуть локально или на сервере, вместе с зависимостями. От заказчика в таком случае требуется только интерпретатор и минимальные способности. Большинство проектов публикуются именно так.
bump
Нахуя? для этого методы и придумали, чтобы разделять логику, и вызывать методы из других методов, если хочешь чтобы первый не могли вызвать из другого объекта, сделай его приватным.
другой вопрос я не понимаю зачем тебе там глобал переменная, и рав инпуты. их можно выделить в отдельные атрибуты и методы
Есть подозрение, что он немного дурачок и имел в виду строчки 25 и 26, где одна и та же функция два раза подряд вызывается.
>>919315
Даже если ты не имел в виду строчки 25 и 26, все равно сделай так:
>token = get_..._token(playlist)
>if token: return token
>else: ...
А насчёт объединения — копирой код одного метода в другой, таким образом ты их объединишь. Охуительные вопросы у тебя.
>>919261
>надо выводить сообщение о том, что он перекачивается, а у меня в любом случае пишет, что он пропускается.
Ну так выводи, кто тебе мешает?
при асинхроном, он не ждет когда ты скачаешь картинку. Нужно понимать что борда работает тоже ассинхронно, и может выдовать тебе картиночки нон стоп, А на установить соедение, сделать запрос, получить картинку, положить картинку, на все это нужно время.
кажеться что вроде хуйно 300ms-500ms. А на деле в 7 раз быстрее.
и вообще я твой вопрос не понял.
Он отправляет все запросы "одновременно". Соответсвенно, на 10 картинок в синхронном коде нужно ждать 10 раз, пока сервер откликнется на запрос и начнёт высылать данные. В асинхронном, хотя на каждую картинку нужно ждать ответ то же время, ожидание это происходит "параллельно", то есть для тебя это время равно ожиданию запроса на одну картинку. Если в двух словах.
т.е. я устанавливаю соединение, реквестирую картинку, затем "замораживаю" выполнение и отправляю все остальные реквесты, так? Затем приходит ивент, мол, сервер готов отдать картинку и задача пихается в ивент луп?
Да никто не выполняет. Это обычный файл с листингом команд чтобы запустить проект. используется в девопс платформах, и локально. Удобно когда проект состоит из многих частей на разных технологиях.
Под объединением я имел ввиду из двух методов сделать один и короче, если это возможно.
>>919371
> вызывать методы из других методов
То есть, это нормально? Я думал, что это считается плохой практикой и методы должны быть независимы друг от друга.
ты эта, парсерописака, сделай блять файл async_makaka.py в нем сделай две функции обычных, в них напиши принт('эээ') потом time.sleep(5) и запусти.
потом сделай две корутины по тому же принципу и запусти.
и ты как бы просветлеешь.
http://rextester.com/XYOA35844
P_trian=a+b+c
S_trian=math.sqrt((P_trian/2)((P_trian/2)-a)((P_trian/2)-b)*((P_trian/2)-c))
P_trian=a+b+c
S_trian=math.sqrt((P_trian/2)((P_trian/2)-a)((P_trian/2)-b)*
((P_trian/2)-c))
Знаки умножения чому то отклеились.
И снова!За шо,Двач?!
так бы сразу,няш:3
ничего, но если еще и дегенерат, то не оч как то
прошелся по х с нулевой позиции до конца, с шагом 2 и вывел для каждого шага текущую позицию и позицию+1
winter = (12,1,2)
spring = (3,4,5)
summer = (6,7,8)
autumn = (9,10,11)
if x == winter[0:3]:
print('Now is Winter!')
else:
print('Something is wrong !(')
season(2)
Потому что индексация начинается с нуля [0:2]
Ты хочешь сравнить x с последним элементом кортежа winter или что? Тогда лучше winter[2]
12 - 1 - 2
если x равно одному из чисел кортежа, то программа выводит время года, x - это месяц
вот есть код типа http://pastebin.com/0KcmYdU9
Почему импортированная функция не видит ни модулей, ни переменных основного? Ладно еще модулей, но константы почему не видит-то?
так это не работает в wow_much_useful_functions.py CONSTANT доступна только в текущем файле
у меня result из основного и не работает - name 'CONSTANT' is not defined, т.е. функция из импортированного модуля не видит переменные основного
Ебать и правда прозрел. От души, дружище
Сейчас читаю Лутца и у него дохуя воды, но что самое странное это то что в других книгах не было всяких lambda и прочих фишек. Есть ещё какие нибудь книги где описаны все важные хуйни (лутц пиздец как не нравится).
Читал уже эти:
Майкл Доусон - Программируем на Python
AByteofPythonRussian
А с какого хуя она должна их видеть?
Ну можешь их явно импортнуть если тебе очень нужно, но это пиздец какой кривой говнокод будет тогда.
И разницы между модулями и константами никакой нет в данном контексте - и то и другое объекты из другого namespace.
уже прочитал про globals, которые нихуя не globals. Это еще можно понять, даже полезно.
Но что-то хуево от такого сценария: у меня уже загружен datetime к примеру, а импорту похуй - у него свой модуль будет, в своем неймспейсе, со своими шлюхами.
Хм, а если я сделаю что-то уровня
mymodule.datetime = datetime?
ну оче не хочется с десяток модулей два раза грузить
Модули кешируются. Сделай модуль mymodule.py с одной print() строкой и заимпорть его миллион раз из разных мест. Затем посмотри, сколько строк принт написал.
Алсо,
>def foo(arg = CONSTANT)
дефолтное значение arg'у присваивается на стадии загрузки файла. Никакого CONSTANT в твоём случае вообще не существует на тот момент, даже если бы у импортируемого модуля был доступ к переменным импортирующего. Но это ебанутый способ какой-то ты выбрал, и слава богу, что он не работает, а то пытающийся понять твой код потом повесился бы. Вынеси константы в отдельный файл и импортируй его везде, где надо.
>Хм, а если я сделаю что-то уровня
>mymodule.datetime = datetime?
Ну сделай, хуле. Раз ты не понимаешь сути модулей, то кто ж тебе запретит.
Для своего личного уютного скриптика это приемлемо, чтобы разбить большой скрипт на удобные для тебя куски, но если ты делаешь это для кого-то, то категорически нельзя.
Более правильный вариант "для себя" все расшаренные объекты описывать в отдельном модуле и подключать его везде где они нужны, хотя это тоже не совсем труъ и нормально прокатывает как раз только для "констант", т.к. обязательно будет путаница с инициализацией и обновлением значений объектов из этого модуля если он подключается в разных местах.
Pythonы, есть варианты избавиться от этого окна или скрыть его как то, мож к pyinstallerу ключи какие нужны?
>в других книгах не было всяких lambda и прочих фишек
Ты походу тупой или прикалываешься. Почитай Донцову
Говно еще то, заебешься лапшу разруливать.
не нравится алхимия - попробуй peewee orm, легкая и удобная
Для всего не пойдет.
Если у тебя не больше пяти разных функций, в которых прописаны тексты SQL запросов, то нормально, если больше, то полная хуйня получается.
> и методы должны быть независимы друг от друга.
Обычно пишут, что лучше разбивать большие функции и методы на много мелких. Которые можно потом использовать отдельно(это скорее побочка, чем результат, разделения функций на более мелкие).
Когда мы разделяем их на много мелких, читать код проще.
Разумееться часто бывает что есть входная функция, или метод интерфейса, которую нельзя сделать универсальной и независимой, и это нормально. Главное чтобы она умещалась на 1 экран.
Я отдаю джейсон во вьюхе:
(json.dumps({
'privet': obj.privet,
'kakdela': [
{
'key': obj2.hello,
'value': obj2.world
}
]
}))
Есть две модели, сначала я отдаю данные из первой модели (obj), потом из второй (obj2). И если из второй модели объектов больше одного или меньше одного (ну ноль, то есть), то всё валится. Если же один - всё работает. Я не правильно составил конструкцию? Или какой-то фор нужно всунуть в джейсон? Я уже охуел тут принтить это говно в консоль
Дошел до классов на codecademy и понял, что не все понимаю. Может кто объяснит о классах в Питоне и в принципе. Почему класс принимает (object). Что такое __init__ , что такое (self) , что они делают. Я практически не вижу разницу между классом и функцией. читал в мануала, но это помогло не очень сильно, буду благодарен, если кто-то разбирается и поможет с пониманием этого
UnboundLocalError: local variable 'obj2' referenced before assignment
То есть объявлена переменная неправильно. Гуглил, делал её ГЛОБАЛ. После этого на первую переменную такой же ерор. Её глобал. Такой ТРАБЛШУТИНГ не особо к чему приводил. Да и вообще, как так случаеться, что с одним значением работает, а с 0 или 1+ - не объявлена переменная?
Это значит, что ты обращаешься к переменной obj2, но она еще не объявлена. Покажи код.
Это джанго? Как из модели селектишь? Нахуй ты код без форматирования скинул?
__init__ конструктор класса, вызывается по имени класса при создании экземпляра класса.
self специальное имя для обращения к текущему экземпляру класса из его обобщенного описания, при явном вызове методов конкретного экземпляра класса не указывается, т.к. его автоматически добавляет интерпретатор.
Класс это полноценный объект с процедурой инициализации через конструктор и механизмом наследования, экземпляр объекта класса создается явно и хранится все время выполнения программы (ну или до явного уничтожения)
Функция это в принципе подмножество класса, экземпляр функции как объекта можно рассматривать как существующий только во время ее выполнения.
Как сохранить к себе пикчу, которую кидает пользователь в твоего бота? По-моему, это делается как-то через id картинки...
хелп
В том-то и дело, что она объявлена и с одним объектом работает, если его нету или 1+ - то не работает.
>>919862
http://pastebin.com/rSw9jESA
>>919872
То есть проблема в модели?
А ты уверен, что у тебя эксепшн не вылезает? Использовать переменные, объявленные внутри try/except блока, вне его, до добра не доведёт.
Хм. И правда. Проебал я, что .гет() забирает только один объект. Спасибо
Классы это очень просто. Относись к ним как к стелажу для хранения информации с функцией станочка.
Есть класс
Пацан(обыкновенный):
Имя
Погремуха
Лет
ПацанПопрынай:
..Если мелочь-звенит:
....Ретерн мажорчик
Иначе
Ретерн лох
ПацанНормальный(списокЧуханов):
..Если пацан в списке чуханов:
....ретерн фалс
..елс ретерн тру
Ну и тд
[CODE]COLOR_1 = "карасик"
themeStr = """COLOR_1: """ + COLOR_1 + """ // main color"""[/CODE]
app.py
[CODE]import theme
theme.COLOR_1 = "уточка"
print(theme.themeStr)[/CODE]
Вывод консоли:
$ python3 app.py
COLOR_1: карасик // main color
Как изменить переменную COLOR_1 в строке themeStr в файле app.py?
Нужно получить уточку, а выходит только карасик.
Значение в themeStr записывает в момент импорта theme.py. Дальнейшие изменения COLOR_1 никак на themeStr уже не влияют.
Сделай themeStr функцией, например, тогда будет норм. Однако, переменная капсом предполагает, что это константа, так что что-то ты тут не так делаешь.
Спасибо
>>919913
Спасибо, но не понятно.
>>919913
Тоже не понятно, но вот из-за таких людей мне нравится изучать что-то новое, если говоришь, что просто значит это просто, пойду читать.
Я вроде бы перевел bin'ом. Че не так ?(
[CODE]def binor(st,key):
st = str(st).encode()
fg = int.from_bytes(st,'big')
binr = bin(fg)
key = str(key).encode()
kfg = int.from_bytes(key, 'big')
kbinr = bin(kfg)
xr = binr^kbinr
print(xr)
binor('hello','world')[/CODE]
>>919714
Вы тупые чтоль? Говорю что в тех книгах не было многой хуйни которая была у лутца, но книга лутца мне не нравится. В пизду вас.
Помогло)) Спасибо,дядя
Совсем лалка что ли? ''.join(map(lambda a,b: ord(a) ^ ord(b), str1, str2))
Каст в chr забыл, ну да похуй
Что за ord()? Куда применять ?
>>920083
А это что за магия ?
Вообще нихуя не пояснили (
У меня просто binr и kbinr читаются как str, а какого хуя стр если я делал из них bin
Что по-твоему должна сделать функция bin?
Сиди и дрочи те два комментария и https://docs.python.org/3/library/functions.html до просветления.
bin , как по мне, должна переводить циферки в двоичный код, который я потом мучаю с XOR и получаю шифр
я так понял что bin() - строка, а как мне тогда посчитать битовыми операциями это всё дело ?
В общем, я тут заинтересовался играми-кликерами, которые многопользовательские.
Мне вот стало интересно, как сервера справляются с нагрузками? Какие хитрости есть? Может подкинете каких-нибудь статей, примеров или расскажете про свой опыт.
Спасибо.
Если предположить, что так, то как они защищаются от банальных накруток? Ведь нужно передать данные на хранение.
читни think python
лямбда-функции это как запись на полях тетрадки - шоб быстро тыры-пыры и в продакшн, для всяких простых хуйовин которым не нужно пояснение и для сложных если ебёт три строчки лишние писать
На хуенте, пездене тваей жопы.
Никак. Зачем? Это же не мморпг. В том же куки-кликере даже ачивки на читы и использование автоматических кликеров (с большой частотой) есть.
>Никак. Зачем?
Ну как это. Маструбация на рейтинг в общем списке и все такое.
Окей, пойдем дальше. Многие, может быть, помнят Agar.io. Тут с читами сложнее, но игра обменивается координатами и размерами клетки в реальном времени. Есть идеи?
>Маструбация на рейтинг в общем списке и все такое.
Ну если есть общие списки, по просто ловят тех, кто слишком часто кликает или внезапно получает кучу очков, вызывает функции какие-то и т.д., и убирают их из таблицы, если хотят.
>Есть идеи?
Ну, вебсокеты, например. Или в чём вопрос вообще?
from PIL import Image
img = Image.open('путь к треугольнику')
img.show() --- и получается второй пик. втф?
>в чем вопрос вообще?
Да я просто размышляю на тему того, как рулить этой системой.
Предположим у меня есть фронт, который кликабелен и все такое.
1. Понятное дело, что каждое событие отправлять очень плохая идея. (Сам себя задудосишь). Другими словами нужно отправлять какой-то поток данных, которые потом можно без проблем преобразовать, сохранить в быстрое хранилище, а потом пересчитать и пиздать дать неверным.
2. Как паковать данные? Слать json просто, но объект может стать слишком жирным и все такое.
3. И сколько выдержит соединений не очень дорогой сервер?
1. Про лоадбадансеры не слышал, дебил?
2. msgpack
3. Что ты имеешь в виду под таким сервером? В 2к17 заведено держать кластер микросерверов на хайлоаде.
и вообще, пиздируй в /web/ c такими вопросами
двач по прежнему не умеет трифорс
Тебе уже написали - ord(). Каждый символ строки переводишь ордом в число, ксоришь с символом другой строки и объединяешь результат. Что-то вроде:
b''.join( map(lambda a,b: bin( ord(a) ^ ord(b) ), str, key)
Эммм.. И таки щито, никто не в курсе?
for value in (id, name):
Нужно прочитать файл и сделать из него массив. как правильнее:
f = open('bullshit.txt', 'r')
arr = f.read().split(' ')
f.close()
или просто:
arr = open('bullshit.txt', 'r').read().split(' ')
То есть, в смысле, не подвиснет ли во втором случае файл в сраном лимбо, отжирая память и нихуя не делая?
>не подвиснет ли во втором случае файл в сраном лимбо, отжирая память и нихуя не делая?
его сборщик мусора соберет, когда он станет нинужен
или в конце скрипта все освободится
хочешь делать по понятиям, делай так:
with open('azaza.txt','r') as data_file:
____array=data_file.read().split(' ')
в данном случае однохуйственно, так как весь файл один стринг (тестовое задание, хули).
но в целом, как я понял, если иметь дело с маленькими файлами и простыми скриптами, можно ебашить ванлайнерами и не ебать мозги, но если что-то тяжелое парсить, то лучше создавать инстанс, и после того как распарсил - закрывать?
Видимо нет. Он прочитал все из файла и разбил на слова - все в одну строку. readline() возвращает одну строку за раз. То есть,ему нужно итерироваться по фалу, чтобы все строки добавить. Типа 'for line in file'. Есть еще readlines(), который создает список всех строк, но это не то, что ему нужно, как я понимаю.
>>920379
Просто делай, как делают все нормальные пацаны >>920363 В этом случае файл закроется сам после того, как выполнится код в блоке with.
>Просто делай, как делают все нормальные пацаны
Окей. потестил, работает. Пойду читать читать про with (дяденьки, я не настоящий питонщик, я просто своей тянке помогаю домашку делать, зная о питоне приблизительно то, что нагуглил за 10 минут).
Ну да, по строчке и так пробежать по файлу
О, звучит круто. Ну так а чем конекретно они там занимаются на биоинформатике и для чего питон используют? Название вузика ты не скажешь, да? Знаю, что в ВШЭ есть анализ данных в биологии или что-то такое. Что еще, МГУ?
>Ну так а чем конекретно они там занимаются на биоинформатике и для чего питон используют?
Биолгия сейчас дошла до того, что там блядь сплошное моделирование и бигдата.
Отсеквенировал геном и сиди парси до охуения.
Ну, то есть начала у тебя есть риды, которые разрозненные обрывки ДНК, разной длинны, которые нужно собрать в полный геном.
А потом ты собрал, и сидишь над пятикилометровым стрингом вида "ACCTGGGGTTTAAACCTTTAAAAGGAAGG" и тебе из этой хуйни нужно набигдатить какую-нибудь полезную инфу.
питон там используется больше как вспомогательная херь, как я понял. Ну то есть все эти сборшики генома и парсеры, эксплореры давно есть, но они срут просто чуть менее бигдатой. И вот бедные девочки-лаборатки, которые пришли учится про зверюшек, сидят и пытаются всосать питон чтобы парсить бигдату и несколько охуевают от такого нежданчика.
А еще есть молекулярная динамика, но это уже больше к биохимии. Но там такая ж хуйня. Только еще и с эмуляцими недельными на мейнфреймах. Питоном там вроде тоже конфигурируют эту эмуляцию. Не до конца уверен.
И самое смешное, что нельзя просто позвать бородатого кодера с улицы. Так как кроме мидл-уровня кодера, с алгоритмикой и всем таким, нужно очень хорошо знать биологию, химию, и всю ту хуйню, которой учат в на биофаках.
>>920426
>Название вузика ты не скажешь, да?
Чего ж не сказать, КФУ.
Запилил скрепт на путоне для скачивания файлов из тредов.
Жрёт json, а на выходе файлы из шебем-рак-тредов.
Покритикуйте, что в нём улучшить?
Переделай под асинхронщину.
кстати, если интересно с примерами:
>Sometimes statistics on nucleotide sequences are limited to X-fold degenerated codons. The following code provides some functions to solve this problem, by generating a subsequence.
http://biopython.org/wiki/Degenerated_Codons
Спасибо, погляжу.
да, просило дефолт - указал 0 или что-то такое.
> просто ебнул
в каком смысле? они из-за неправильной связи так работают/отображаются? есть способ пофиксить?
бтв, в модели стоит blank=True, что ставить дефолтным в поле, чтобы связей не было(т.е. не было related объектов)?
Просто предположение, потому что я не в курсе как там у тебя все устроено.. Но, если ты добавил ForeignKey на автора поста, то, взможно, ты видишь только посты созданные текущим залогиненным пользователем?
Нет, там линк на изображение
> bg_img = models.ForeignKey('Image', related_name='background_for', blank=True)
Открой файл миграции да посмотри, и саму бд открой, она не касается, просто пяток табличек
Планирую вкатываться на вакансию: "Джуниор-фласк-круд клепатель", что скажете? Как грамотно подготовится к собеседованию?
Зайди в шелл и проверь на месте ли твои объекты.
python manage.py shell
from your_app.models import Post
p = Post.objects.all()
p.count()
Если на месте, то может быть с отображением в админке что-то, хз.
> bg_img = models.ForeignKey('Image', related_name='background_for', blank=True)
blank=True влияет на то, будет ли поле обязательным в формах. Чтобы разрешить пустые значения в бд, тебе стоит писать null=True http://stackoverflow.com/a/8609425/5201699
Жру говно на апворке. Насчет собеседований и фласка ничего не смогу подсказать, к сожалению.
>собеседований и фласка ничего не смогу подсказать, к
окей, нашел пару гайдов, сейчас буду смотреть, ну думаю синтаксиса пайтона + базовый уровень сиквела + знакомство с фласком и алхимией хватит и на работку возьмут, а через пару лет тоже вкачусь во фриланс-рабство.
Какая ставка у тебя, сколько долляриев в месяц в среднем имеешь?
> через пару лет тоже вкачусь
Правильное решение. Лучше нормально прокачайся, а потом уже иди во фриланс или просто удаленку.
>Какая ставка у тебя, сколько долляриев в месяц в среднем имеешь?
Мелкие фиксед-прайс проекты в основном беру. Нифига не зарабатываю, практически - стыдно сказать даже. Тоже похуярю в офис, скорее всего. Или в супермаркет. Или дворником..
Работаю бизнес девелопмент консультантом в сфере добычи полезных ископаемых и тяжелой промышленности, лол.
Стаж питона 2 года, всего программлю уже больше половины жизни - 15 лет считай.
Кинь на Pastebin я поковыряю потом отпешусь тут.
Я не верю, что тут никто не понимает в QT... Аспада, может всё же найдётся пряморукий QT-господин, который глянет мой код и укажет мне, слабоумному, где же у меня косяк?
Что ж я там не так сделал, что менюха не отображается?
Окей, предложи другой вариант, на чём делать форму? При том, что там mdi и будет дохера всего, куча панелек, кнопок и диалоговых окон?
на апворке, 20 даллларав в час минус 10 проц. Хочу больше, т.к. биллю не каждень
Как реверснуть строчку в Питоне?
Здесь же, подходит ли Питон, как язык для начинающего?
мимо_новичек_хуила
Да ты охуел руками формы херачить?! Думаешь кто-то будет твой высер читать?
https://stackoverflow.com/questions/18686860/reverse-a-string-in-python-without-using-reversed-or-1
Больше сюда не заходи.
Веб-девелоп обычно, я вяленько пилю сервисы на джанго под каждого клиента и в целом документооборот, ну и сайты-визитки на все случаи жизни, всякая ебала типа конвертора списка фамилий-сроков-названий семинаров в pdf для печати с фирменной подложечкой.
Ну и PANDAS конечно, обожаю его <3
>Ну и PANDAS конечно, обожаю его <3
А, так это ты тут частенько реплаишь "PANDAS" к разным постам? :)
там зависит от потраченных клиентов на тебя денег
у меня уже больше 1000, так что 10 процентов
>всякая ебала типа конвертора списка фамилий-сроков-названий семинаров в pdf
>бизнес девелопмент консультант
Хотят чтобы ты приседал на бутылку, чего непонятного
Типа корзину нужно запилить с товарами? ( не силен ни в анг., ни в /pr)
ввод: количество маленьких бутылок, количество больших бутылок
вывод: сколько бабла можно с них поднять = $0.10колво_маленьких+$0.25колво_больших
вывод со знаком даллара и с двумя цифрами после запятой
За каждую литровую (или меньше) бутылку выплачивать 10 центов. За больше чем литровую - 25 центов. Пользователь вводит количество бутылок каждого типа. И должен получить в ответ сумму которую выдадут за здачу этих бутылок. Ответ нужно форматировать таким образом чтобы там всегда был значек $ и два знака в дробной части.
Набирают питонщиков постоянно на удаленку после прохождения теста, кто-то работал, пробовал делать тестовое?
Нихуя он не расскажет. Забьет хуй.
я вкатывальщик, там нужно как внутреннее так и енд2енд тестирование, которое я не знаю, думаю через неделю (может меньше) возьму тестовое, оно там автоматическое через джаббер-бот.
Ты даун. Почитай нормально про алгоритм, сделай на бумажке, а потом уже код пиши.
На него уже ответили.
Хочу заводить трактор с ебаной жопосрани, но пока хз стоит ли
вот 9 строка,что ты там в квадратных скобках понаписал?12 строка,resuls.append?13 строка,return.join?
для каждого символа открытого текста:
____находим его индекс (порядковый номер) в алфавите
____прибавляем к этому числу 3 по модулю 26 (длина алфавита)
____букву по этому индексу добавляем в результирующую строку
иначе я бы тут не сидел
9 строка это
>____находим его индекс (порядковый номер) в алфавите
>____прибавляем к этому числу 3 по модулю 26 (длина алфавита)
>____букву по этому индексу добавляем в результирующую строку
три в одном
12 строка - к списку символов шифротекста добавляем тот, что только что получили
13 строка - из списка делаем строку
можно делать и так:
result=''
for character in cleartext:
____ciphertext_char=...
____result = result + ciphertext_char
но это не вполне грамотно с учетом устройства питоноских строк (они неизменяемы, иммутабельны, поэтому на ровном месте будет квадратичная сложность)
Неа, но я с ним солидарен.
>>920780
>>920806
Очевидно же, что айтишная составляющая не главное, и в первую очередь я занимаюсь консультированием и другими вещами по моему профилю работы, в обратном случае я бы обозвался каким-нибудь штатным сисадмино-программёром. Айтишная же составляющая не является требованием, но существенно упрощает жизнь и мне, и подрячикам, и заказчикам, а с учётом того что опыт у меня есть - это короче моя фишка за которую меня ещё больше ценят.
успехов, антош
Из книжки. Ничего интересного. Просто 170 задачек и около 150 ответов. Больше ничего там нету. Всю инфу ищу сам.
Это совершенно другое.
кто умничка? ты умничка!
На гитхаб разве что можно разместить JS приложение которое будет общаться с Django.
В любом случае понадобится хостинг с python.
Хостить документацию.
набираешь, например, "tag" или "if" и жмешь Tab
https://github.com/squ1b3r/Djaneiro#snippets-for-django-templates тут список сниппетов.
> Как грамотно подготовится к собеседованию?
посмотри гейпорно и научись делать минет
я так вкатился
Сейчас узнал, что можно блог хостить с помощью jekyll и еще свои доменные имена использовать для сайтов. По моему, это охуенно вообще.
>>920948
Или можно разместить JS приложение вообще без питона. А для хранения данных использовать browser storage или как оно там называется. Игру 2048 помните? Тоже хостилась на гитхабе и нормально же работала, даже результат запоминала.
>>920935
Пока учишься используй встроенный сервер разработки. Потом задеплоишь на бесплатные heroku или pythonanywhere. Там, кстати, прямо из гитхаба сможешь клонировать репозиторий и запустить - это не сложно.
У меня есть комиксы и девочки.
tmp0)I1337ANUSyand>{mexPUNCTUMr:Xcu
Напиши, пожалуйста, на почту.
мне было бы достаточно boobank и boobill
Спасибо за ответ, ребятишки
Слышали про фреймворк Фабрик? Хорошо на нём деплоить или собирать что-то?
Погугли какую-нибудь информацию про них. Вот, например https://jobs.dou.ua/companies/42-coffee-cups/reviews/
подробнее плес расскажи, я не понимаю, что я именно должен пиздануть из устновщика пакета, что подключить это к сайту, вот например именно boobank
С большим вынужденным перерывом я дописал свой архивач и научил его асинхронно грузить картинки. Сейчас все это неплохо работает через Django ORM на одном Heroku dyno через honcho. Я поставил на ночь автопопулейтинг тредов из /b/ и сейчас весьма заметно что при все большем наполнении базы, Postgres обрабатывает запросы на получение задач все медленнее и медленнее.
В связи с чем появилась идея крутить задания внутри Celery, а результаты писать в Postgres.
Примерная цепь: отправляется форма с урлом -- создается таска в конце очереди(результат не хранится, а записывается в Postgres) -- таска выполняется и заново становится в очередь если тред активен -- цикл повторяется.
Хочу спросить у тех кто работает с Celery и in-RAM брокерами (вопрос конкретно про Redis) - насколько страшно то что целери не чистит за собой? Я нашел единственный бесплатный вариант Redis, где дается 30МБ(!) объема и хочу грубо прикинуть стоит ли игра свеч или же SQL будет более уместный. Как быстро мегабайты будут расходоваться учитывая что таска представляет простую функцию и ничего не хранит? Расчет идет на то что активные треды будут равнозначно заменяться умершими и будет баланс, но как быть если заданий станет больше чем стореджа? Флашить базу с определенными интервалами?
Показывай схему БД, индексы и запрос на получение заданий. Ты не должен по-хорошему никаких проседаний производительности видеть до первого миллиона записей как минимум.
он не может быть офлайн
Пикрелейтед модель, запрос на очередь для ворера и БД.
Сами треды хранятся в pickle ячейке в виде класса и пишутся/читаются через pickle.dumps/loads. С django-picklefield не получается нормальная десериализация.
Может есть хаки по оптимизации базы? Слышал что-то про поля с индексированием, чтобы искать по ним шустрее. Или может еще альтернативы.
Хотя на самом деле мне просто хочется попрактиковаться с Celery, ибо надо же когда-то начинать.
>>921389
Что мешает самому выбрать место, где он лежит?
Вангую через libastral, у тебя windows, которая для разработки совершенно не подходит.
>>921363
> бесплатный вариант Redis, где дается 30МБ
Ебать копейки. 30 мегабайт для кеша в памяти это вообще ничто, особенно для пайтона на сервере.
Вопроса вообще не увидел, спрашивай конкретнее что нужно. Пишешь через жопу.
Ну то и спрашиваю, смогу ли я в 30Мб уложить очередь из обработчиков урлов или нет. Если нет, то можно ли еще как-то оптимизировать извлечение активных заданий.
Не понял, они перегоняют html в qt виджеты для десктопного приложения на qt? Выглядит годно, особенно для тяжелых засраных лишниими css испражнениями сайтов по типу feedly.
Если это работает так, как я подумал, надо будет не работе клиент для слака прикрутить. А то это говно умудрилось одной вкладкой отожрать один раз 700мб с хуем.
Бери и въёбывай. Тут врят ли кто про это вообще слышал раньше.
>>921403
> смогу ли я в 30Мб уложить очередь из обработчиков урлов
Если поебаться и чистить вовремя может и сможешь, но нахуй это надо?
Я вообще не пользовался celery, потому что cron на работе нам было более чем достаточно, а уж тем более у нас никто в проект не стал тащить django ибо слишком уж тяжёлая и неповоротливая хреновина даже на xeon-ах хетцнеровских.
Если у тебя жесткие ограничения по ресурсам, я бы вообще пайтон не брал для разработки, а ограничился бы nginx + lua.
У меня приоритет в простоте разработки, потому что я не занимаюсь ей профессионально и кроме питона пока ничего не знаю. А кроме джанги полнофункционального каркаса с админкой и прочим не увидел. Если собирать из микрофреймворка то джанго в итоге и выйдет наверное. nginx и так отдает статику.
Ну в общем ответ я получил, спасибо что разъяснил.
> ThreadDb
Странный нейминг. Ты описываешь модель, её лучше назвать Thread.
> thread_url
> pickle
Используешь БД как блокнот. Впрочем, в данном случае оно должно бы быть быстрее, чем если бы нормально делал.
> for one in ...objects.filter(...):
Здесь ты запрашиваешь ВСЕ треды, которые можно бы обновить. Может быть достаточно жирно, если у тебя давно ничего не обновлялось и разом ты запросишь 100к записей. Надо слайсить и сортировать по времени последнего обновления. Однако, в твоем случае это ещё не создает проблем. Не могу поверить, что на таком объеме данных ты можешь на глазок хотя бы приметить проседание какое-то.
>>921397
> Слышал что-то про поля с индексированием
Ну можешь индексы повесить на thread_status (переименуй атрибуты, кстати, и выкинь нахуй префиксы «thread_»). db_index=True добавь в описание поля и миграции примени. Но, опять же, с твоим крохотным объемом данных не должно ничего быть заметно. Там Heroku ваш код не на калькуляторах крутит?
> Celery
Совсем не представляю, как это может что-то ускорить здесь. Если ты собираешься список URL в очереди держать, то тебе всё ещё нужно будет получать время от времени данные из БД и нужно будет ещё их в БД обновлять, что, кстати, с поиском по строковому URL будет несколько медленнее, чем сейчас. Если ты собираешься в памяти хранить целиком объекты-треды, то я, блядь, вообще не представляю всё равно, что оно может ускорить, ведь ты всё ещё будешь читать очередь из БД время от времени и вместо питоньей переменной складывать её в Redis. Очереди, мягко говоря, не для такой хуйни существуют.
Thread это класс из вроппера двача. Не хочу таких пересечений. Оба импорта встречаются в воркере.
url является основным полем, которое записывается напрямую из формы добавления треда. Доска и номер берутся из него регекспом для создания класса треда и сортировке по доске и номеру в админке.
Треды запрашиваются только живые (либо уже индексировавшиеся, либо новые). Как еще узнать есть ли новые посты/имаги если не сравнивать актуальные данные с базой? Мертвые треды не трогаются.
>Там Heroku ваш код не на калькуляторах крутит?
Одно ядро не знаю чего, 512 RAM. На одно дино спавнится сразу и воркер и веб через honcho.
>db_index=True
Да, точняк, это оно.
>с твоим крохотным объемом данных
Тестовый объем, популейт делался только тредами с нулевой при условии >100 постов (сурово протестить загрузку имаг) в течении ночи с перерывом 20мин.
Да, ты прав, очереди в общем для реалтайма.
Спасибо что расписал :) Приятно читать.
Да, но кое-что да умеет
BUMP
>Надо слайсить и сортировать по времени последнего обновления.
Это тащемта и привлекает в кью-модулях. Там приоритеты есть и можно сразу несколько процессов спавнить, и быть уверенным что они не возьмут одно и то же задание.
> Thread это класс из вроппера двача
Тем не менее, неймспейсы у них разные. К своей модели будешь обращаться как к models.Thread, например. Сейчас твоё название сущность отражает некорректно.
> url является основным полем, которое записывается напрямую из формы добавления треда. Доска и номер берутся из него регекспом для создания класса треда и сортировке по доске и номеру в админке.
Ничего не понял, но это какое-то месиво. Ты дублируешь данные в БД, это неправильно в общем случае.
> Как еще узнать есть ли новые посты/имаги если не сравнивать актуальные данные с базой?
Нормализовать отношения. Например, как-то так (я не проверял, под рукой своей машины нет, но общая суть должна быть ясна): http://pastebin.ubuntu.com/23886672/
С нормальной схемой БД ты сможешь одним запросом получить номера последних постов для каждого треда вместо того, чтобы дергать каждый раз все данные. Потом в БД ты вставишь только новые посты без обновления старых и, если надо, изменишь статус треда.
А пока что у тебя блокнот какой-то.
>Тем не менее, неймспейсы у них разные
А я обычно делаю from models import Class. Плохой путь?
В админке автоименование все равно ни к черту, приходится исправлять все метами.
>Ничего не понял, но это какое-то месиво. Ты дублируешь данные в БД, это неправильно в общем случае.
Класс Thread инициализируется по доске и номеру. А пользователь добавляет URL. Единственное, можно и правда во вьюхе парсить эти данные через re и сразу создавать инстанс модели заполняя доску и тред, и не записывая URL. Это очевидно, ты мне действительно открыл глаза.
Действительно, так было бы очень круто. Но у меня анальные ограничения и я не могу выделять по записи на каждый пост, увы. Из-за этого и весь карнавал и желание уместить по треду в запись. Воровать из базы пиклы по сотне киллобайт чтобы узнать разницу это конечно дорого (хотя херока и постгрес живут оба в амазоне и это быстро все делается).
Сейчас хотел сделать на коленке профайлинг пишармом, но понял что не выйдет профилировать одно соединение а не весь runserver луп :) Беглый гугл однако дал подборку сторонних либ.
Ах да, забыл спросить. Полагаю ты в профессии. С моими скудными навыками можно пытаться в джуниора на удаленку или фриланс или стоит продолжать совершенствоваться сидя на дошираках?
Я бы сначала обмазался навыками администрирования локалхоста, чтобы без анальных ограничений делать нормальные приложения. Далее посмотрел бы резюме и вакансии на HH по интересующему направлению и потыкал все обозначенные там технологии. И всё, можно вкатываться, в принципе, потихоньку.
> удаленку
Удаленка без скиллов никому не нужна.
С администрированием нет проблем, просто хочется нормально работающие приложения делать, чтобы дома гроб с пропеллерами не стоял :) Я способен локально развернуть сервисы. С другой стороны, я понимаю, что если выложить на гитхабу такие костыли то потенциальным работодателям не понять что все сделано так "странно" из-за желания изъебнуться на шару.
В вакансиях по вебдеву обычно джанго указан, при этом не совсем ясно какой уровень они хотят, это может быть и обсосаный миллионы раз недоблог, а может и суперинтерактивный сайт с HTTP2, Channels и написанием собственной мидльвари. До второго явно еще далеко. Но зато подсуетился изучить простые фронтенд либы, что в перспективе может значить фуллстэк.
есть мп3 на диске? сделай прогу для закачки на плеер. что бы в винампе, например, сделать плейлист (отсортированный руками) yoba_playlist_to_player.rm3u, загрузить его в твою прогу, указав директорию куда копировать треки, а прога бы взяла и скопировала на плеер. попутно пусть нормализует названия убрав всякую чушь из названий файлов и титлов типа: 22--supertraxxx--new_year_VASYANEDITION
делал на паскале (дельфи) студентом.
идея еще и тем хороша что по моему в dive into python кажется в редакции для 2го питона, как раз возня с мп3шками, будет на что опереться, да и вообще "погружение" - единственная книга которую вообще можно советовать имхо.
Чего, Флюент пайтон тоже ничего.
http://shop.oreilly.com/product/0636920032519.do
Но её как раз хорошо после "первой книги и небольшого опыта какого-нибудь проэкта накатывать, имхо
Но вот если мне не нравятся формочки которые там есть и я хочу сделать что-то своё, оригинальное, к примеру нарисую йобо-изображение и при нажатии на разные его части должны будут происходить соответствующие действия(как ни странно). Это вообще реализуемо в питоне? В каком направлении мне себя пихнуть?
p.s. Слышал что в QT что-то подобное реализовать можно(правда с С++).
p.p.s. Если же пистон не смогёт такое, на какой ЯП посмотреть для этого?
мог просто сказать:"краткость сестра таланта",а не этот дзен-хуен постить
Django by example
зачем ты делаешь i.replace, если i потом не используешь?
алсо можно сделать через list comprehension
поддерживаю
https://forum.dracos-linux.org/topic/lounge/thread/109/
Ни на винде ни на линухе не запускается, выдает ошибку. Попробуйте кто нить
Это нормально. Продолжай тратить его время на свое обучение. Используй этого пидора.
Есть пара вопросов:
1. Какой клауд-сервис лучше использовать для того, чтобы запустить на нём пару ботов на питоне?
2. Как сделать так, чтобы GET запрос делался в коде каждый час и возвращал новую ссылку, если она есть, например? (хочу сделать оповещалку о новом треде на одной из досок)
2) после каждого часа сохраняй список url всех тредов. при последующем обновлении сравни списки. вернёшь все новые url.
> 2) после каждого часа сохраняй список url всех тредов. при последующем обновлении сравни списки. вернёшь все новые url.
Я имел ввиду, если у меня есть бот, которого можно дёргать по командам, но я еще хочу, чтобы бот срал оповещениями о новых тредах. Как это заставить работать асинхронно?
тогда не знаю
И еще, вот есть в джанге cbv. Они типа такие крутые, удобные (наверное, я в них сам путаюсь пока зелень). Можно наверное когда-нибудь забыть про обвчные вьюхи по старинке? В какой книжке можно покурить подобные архитектурно-построительные вопросы на тему "какой вариант костыля использовать?" Django By Example только что дочитал, надо еще чего-нибудь покурить.
Не, ну просили ж сложнее!
я по началу вообще сделал, что инпут разбивается на массив, а потом их него удаляются лишние энтити, но это выглядело уж как-то всем уебски. Плюс я особенностей питона нихуя не знаю. что за три минуты нагуглил, то и заебашил.
Но вообще да, я люблю иногда играться, порождая наиболее индуский и черезжопный код, на незнакомых языках. А потом рефакторить в сторону еще большей ебанутости и неэффективности. Какие-то тонкости языка так очень всплывают. например вот хитровыебанный синтаксис join в питоне.
Блядь, кто вообще придумал применять метод к СЕПАРАТОРУ? Зачем вообще?
Чувак, я про эту херню с join недавно целую статью читал. Если кратко, то с таким join ты можешь например сделать так:
','.join(str(i) for i in range(10))
Если бы сепаратор был не в начале, то генератор бы выглядел по-уебански.
И вообще если тебе вообще не нравится делать так, то можешь написать str.join(' ', some_iterable)
ну, не знаю, ломать конвенции заради каки-то обскурных удобств?
но по мне, так ','.join() выглядит как уебанство в первую очередь. Но опять же, нихуя не знаю питон, чтобы понять, насколько это оправдано внутри его философии.
Ну ты наворотил тут. Можно же str.translate заюзать. Ну или генератор запилить: ''.join(i for i in text if i not in vowels)
Меня вполне убедил пример с генератором. Ты же не будешь писать вот так (str(i) for i in some_terable).join(', ')
> Ты же не будешь писать вот так (str(i) for i in some_terable).join(', ')
На самом деле, так зачастую в языках и делается. Итерируемые типы получают метод join в интерфейс. Хотя питоновский синтаксис мне нравится больше. Более в духе утиной типизации, что ли. Хочешь джойниться? Подавай итерируемое значение, которое выдает строки.
Немного ссылок.
Гвидо ван Россум дает добро на метод str.join, 1999 год, холст, масло:
https://mail.python.org/pipermail/python-dev/1999-June/095436.html
Пользователи сети интернет выясняют, как же так вышло:
http://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring
Задача: дается инпут, текстовой файл, в файле два лайна: отрезок ДНК и длинна k.
Задача, найти и посчитать все к-меры. Грубо говоря, нужно двигать по строке окно длинны k и смотреть, сколько раз данная последовательность встречается в строке.
например: seq = "ACCTTG", k = 3 => {ACC:1, CCT:1, CTT:1, TTG:1}
Чот мне кажется я хуйню какую-то написал.
Пример инпута: http://pastebin.com/WRxjwZRP
Пошел нахуй, бабораб
В целом хорошо.
Замечания:
1. input не стоит использовать в качестве названия аргумента. Это имя файла или путь к файлу, пусть и называется соответствующе. И вообще, стоило бы разделить получение данных и их обработку в разные функции.
2. Счетчику k-меров стоит быть типа collections.defaultdict(int), а не простым dict. В первом случае тело цикла сокращается до простого
kmers_count[sequence[...]] += 1
3. Не вижу на скриншоте тестов. Вычисления индексов выглядят сложно, проверь, все ли k-меры имеют длину k.
Не думаю, что это можно сильно улучшить без хардового использования itertools.
ага. я еще и наебался. это только половина задания. там нужно вернуть строку с самыми частыми к-мерами. Но вот тут я пошел в разнос. Вот это уже полная стыдоба и полный быдлокод. два цикла подряд на один объект это явный признак пиздеца.
Видимо нужна какя-то библиотека.
>>924279
>3. все ли k-меры имеют длину k.
да, но это в принципе и не важно. Мне нужно, как оказалось. найти только самые частые. если они будут короче, они будут уникальные так или иначе (хотя и неаккуратно.
ладно, вот правильный(но омегахуевый!) код: http://pastebin.com/ai7y1PxR
там есть ненужный иф для дебага. но он не выстреливает, значит все ок с длинной.
ага! спасибо, познавательно! Я его куда-то в эту сторону и начал рефакторить, только знания языка не хватает, конечно.
Только не нихуя не пони что происходит в строке 17. Которая
most_freq = (kmer for kmer, freq in kmers.iteritems() if freq == max_freq)
Это кстати не важно (нахуй дебаг в рабочем коде), но в десятой строке я с дуру захардкодил значение k (и у тебя так и осталось).
>Только не нихуя не пони что происходит в строке 17
Так, кажись допер!
"Берем (ключ) из пары (ключ, значение) из объекта my_dict.iteritems() если [значение нам подходит]". Так?
>так ','.join() выглядит как уебанство в первую очередь.
поддерживаю
в этом смысле РАБИ больше нарвится, но там магия и манкипатчинг везде
Ага. но вот такой вопрос. Гипотетически, подобные скрипты могут пережевывать десятки мегабайт даты, и цикл с четвертой строки будет крутится ДОЛГО. вот не будет ли он каждый цикл пересчитывать этот рейндж? я в своем говнокоде его для того и вынес в переменную.
>>924589
>>freqent
лол да. я когда рефакторил - поправил. но да, немного потупил в стек, когда он мне выдал андефайнед.
>вот не будет ли он каждый цикл пересчитывать этот рейндж?
нет
при больших гигабайтных данных думать стоит о памяти, здесь вместо создания k-подстрок они генерируются лениво (исп. функция-генератор)
если еще хардкорнее оптимизировать, то можно с диска читать кусками
>десятки мегабайт даты
это ни о чем, если грамотно кодить (т.е. на ровном месте квадратную сложность не делоть)
исходники фронтенда посмотри
Вы видите копию треда, сохраненную 3 февраля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.