• Бот для VK на Python с MySQL за час ч.2
    0

    MySQL можно и нужно заменить на postgresql. Вообще не понимаю необходимости сейчас использовать MySQL, когда postgresql. Только если это старый легаси код.


    В sqlalchemy orm не обязателен. Там есть прекрасный query builder который намного лучше и гибче.

  • Бот для VK на Python с MySQL за час ч.2
    0
    Минимум: alembic для миграций, для работы с БД — sqlalchemy.
    Чаще всего сейчас такие приложения пишут используя asyncio и aiopg.
  • Бот для VK на Python с MySQL за час ч.2
    0

    Статья уровня "я прочитал документацию и смотрите что у меня получилось".


    Код плохой, никакие нормальные современные библиотеки не используются. Нет миграций, никакой нормальной обертки над базой. Хороший пример как писать на python не надо.

  • Django Channels – ответ современному вебу
    0
    А, вот что Вас смутило :)
    Это распространённое сокращение в англ. сегменте, без задней мысли привык так же писать. :)
  • Django Channels – ответ современному вебу
    0
    SQLAlchemy is the Python SQL toolkit AND Object Relational Mapper that gives application developers the full power and flexibility of SQL.


    У SQLA есть core (интерфейсы и методы самого низкого уровня, напр. db.query('SELECT * FROM ..')) слой, есть query-builder, а есть ORM. ORM использует query-builder который использует core. Использованием ORM который предоставляет SQLA совершенно не обязательно, можно пользоваться прекрасным query-builder-ом и забыть про ORM совсем. Собственно, многие так и делают.
  • Django Channels – ответ современному вебу
    +1

    Не так. У sqla есть слой ORM.

  • Библиотека vk для работы с VK API на Python
    0
    Рад за вас.
    Здесь речь шла про конкретную библиотеку и её работу в асинхронном режиме (кстати автор уже её удалил). На тот момент писать асинхронный код с использованием yield вместо async/await — моветон.
  • Как я SQLAlchemy удобной сделал
    +1
    Как-то это… Не python-way совсем. Давайте оставим джангу в стороне. Алхимия в том виде, в каком она Вам кажется неудобной на самом деле заставляет вас писать более очевидный и правильный код:

    bob = User(name='Bobby', age=1)
    session.add(bob)
    session.flush()
    


    Я тут сразу вижу, где я добавил конкретно этот объект, а где сказал алхимии «пиши в базу».

    bob = User.create(name='Bobby', age=1
    


    А что если мне id нужен вставляемой сущности? Мы ж ещё не сделали commit, почему нет? Кстати, а когда у Вас там commit будет? А flush?

    Про «динамические поля» для фильтров, и почему плохо с фронта фильтры текстом принимать я думаю Вы сами понимаете.

    User.with_({
        User.posts: {
            Post.comments: {
                Comment.user: None
            }
        }
    }.all()
    


    Это вообще какая-то адская, совсем не очевидная магия…

    Да и в целом советую забить на ORM, и использовать SQLA core. Он более выразителен и логичен. Лишнее абстрагирование от хранилища ни к чему хорошему не приведёт.
  • MySQL и MongoDB — когда и что лучше использовать
    +1
    Что простите? Если важна консистентность данных, то тут только реляционные БД. sad0vnikov верно написал. То, о чём вы говорите — это уже вторично. Не надо выдвигать производительность на передний план, когда важна сама информация и связи.
  • Библиотека vk для работы с VK API на Python
    0
    Вы какую-то глупость пишите. Сравниваете маленькую библиотеку и огромные кодовые базы крупных корпораций.
  • Библиотека vk для работы с VK API на Python
    0
    Если так рассуждать, то вообще можно было на втором питоне остаться.
  • Библиотека vk для работы с VK API на Python
    0
    Шёл 2017 год, народ до сих пор не переписали свои асинхронные приложения на async/await…
  • Финальная версия Vivaldi 1.6 — работаем с вкладками
    0
    Будем ждать.
    Спасибо. :)
  • Финальная версия Vivaldi 1.6 — работаем с вкладками
    +7
    И вновь, с надеждой открываю хабр и думаю — ну неужели, сейчас синхронизацию настрою, да developer tools смогу нормально пользоваться, но нет! Снова украшательства! Доколе?! :(
  • Сказ о том как я свой REST фреймворк с веб-сокетами писал
    0
    Автор, тебе надо просто огромными буквами написать в github репозитарии, что твой фреймворк ни разу не асинхронный. Каждое обращение к БД в твоём фреймворке — это блокировка потока, а обращаться к БД получается надо будет почти всегда, и соответственно ты будешь блокировать event loop на каждый request.

    Есть aiopg который позволяет использовать query-builder алхимии, и никто не пытается примостить ORM алхимии до кучи к нему. Во первых — это не особо кому-то и нужно, во-вторых — это совсем не тривиальная задача.

    В общем случае, я бы на твоём месте прикрутил поддержку aiopg, переписал все твои вьюхи чтобы они сериализовали/десериалзовали объекты. Всю работу с БД (чтение, запись и т.д.) вынес бы в отдельные методы (корутины) которые надо было бы реализовывать пользователю библиотеки.
  • Обновление Vivaldi 1.4 для Linux — охота на флэш-плагин
    0
    Это хорошая новость, но ребята, когда вы уже пофиксите баг, когда флэш вместо того, чтобы открыться на весь экран открывается в окне? (актуально для любого linux дистрибутива, с любым DE)
  • «Flaskr» — введение во Flask, разработка через тестирование (TDD) и jQuery
    0
    Имхо, для REST лучше посмотреть сразу на aiohttp :)
  • «Flaskr» — введение во Flask, разработка через тестирование (TDD) и jQuery
    0
    Я не так давно описывал как структурировать приложения на Flask. Информация свежая, новичкам будет полезно почитать. :)
  • Создание движка для блога с помощью Phoenix и Elixir / Часть 1. Вступление
    +3
    Спасибо за перевод.
    У вас бы быстрее популяризация пошла, если бы Вы начали переводить для начала вводную по elixir в целом. Подобные статьи довольно трудно воспринимать людям, которые не знакомы (либо плохо знакомы) с синтаксисом самого языка. :)
  • Web приложение для работы с markdown заметками
    0
    Зачем, когда есть просто куча статических генераторов сайтов написанных на python? Вы по сути сделали тоже самое, только с меньшим количеством возможностей. Я для своих заметок и блога выбрал pelican. Помимо всего прочего, есть дополнения чтобы прикрутить самый различный функционал (мат. формулы, TOC, etc).
  • Как мы ускорили PHP-проекты в 40 раз с помощью кэширования
    0
    Попробуйте сделать кеши на стороне nginx для динамических страниц. Вот это бы было интересно.

    Так? В этом так то тоже нет никакого rocket-science. Совсем.
  • Опыт перехода с Sublime на Vim
    0
    Vim для конфигов — огонь. Быстро поправить что-нибудь в продакшене — тоже огонь. Тут даже спорить не буду. Я к таким статьям отношусь как к очередной попытке сделать IDE из Vim. Поэтому извиняюсь за возможную излишнюю резкость.
  • VIM: зачем, если есть IDE, и как?
    0
    У меня на Semprone X2 прекрасно работал PyCharm. Не надо жопить пару тысяч на память, и будет прекрасно работать.
  • Опыт перехода с Sublime на Vim
    0
    Описана пачка плагинов, но про реально полезные вещи не описано. Например, про настройки самого вима. У него ведь дофига настроек, и по-умолчанию они не всегда оптимальны и удобны.

    Вот типичный кейс: забыл аргументы метода. Вот IDEA может подтянуть докстринги из метода, и выдать удобную такую подсказку, а не просто список аргументов. Все что я нашел в vim'е для этого — ну даже близко не то. А я на минуточку использовал его лет 5-6.
    Средства работы с БД — сомнительные. Когда у тебя под сотню табличек со сложными связями, держать это в голове без возможности преобразовать все это в графический вид в каком либо виде. Без этого — это всё детские шалости.
    Про средства отладки так вообще не слова, а это ну офигеть как важно.

    Если начать копаться — вообще ничего не написано про то как сделать vim удобным для людей, которые пишут серьезные большие проекты. Так, для небольших pet-project.

    Тут ещё столько же плагинов надо для того чтобы можно было нормально и быстро писать.
  • 10 лайфхаков для браузера Vivaldi
    0
    Внезапно — да. У лисы постоянные подвисания UI, плюс открывает страницы прям ощутимо дольше.
  • Исследование коммутатора Dlink после грозы
    +1
    А ещё по рукам бить неродивых монтеров надо.
  • Web scraping на Node.js и проблемные сайты
    0
    1. Обфускация, и шифрование конечно же подразумевались.
    2. Конечно ломается, но не всеми, не всегда, дорого и долго. Я не по наслышке это знаю. Я же не зря указал, что капча гугловская. Её во первых не на каждом сервисе подбирают, во вторых цены и процент разгадываний другой. Не говоря уже о том, что в целом задача в разы сложнее выходит.
    3. Это в любом случае занятие сомнительной легальности.
    4. Вам повезло, если так бывало.
  • Web scraping на Node.js и проблемные сайты
    0
    И текст таблички заполняют джаваскриптом… Какого только изврата не придумывают, лишь бы не дать данные собрать с сайта. :)
    Автору на самом деле повезло, что нет никакой защиты аля cloudfront'овской. Они при подозрении что ты негодяй, предлагают капчу гугла разгадывать, и тут уже без вариантов.
  • Пишем свой канал-бот для Telegram как у Хабра на Python
    +1
    В первую очередь, код «усовершенствовать» (читай, сделать нормальным) надо. Убрать print'ы, в названиях классов CamelCase использовать да и где-нибудь хотя бы один exception хоть попытаться поймать. В текущем состоянии, ваш бот будет «падать» постоянно, и от малейшего чиха.
  • Финальный релиз браузера Vivaldi 1.2
    +1
    Полноэкранный флэш в линуксе ожидается к исправлению когда нибудь? :)
  • SpamFireWall — запрет доступа к сайту для спам ботов
    0
    Из статьи не очень понял, чем оно лучше clouldflare, который умеет все тоже самое?
  • Всё плохо: Почему оценка фриланс-биржи Upwork скоро может стать нулевой
    +1
    Было бы очень круто, если бы вы оформили все это в виде поста, ну или хотя бы расшаренного документа на гуглодиске. :)
  • Гигафабрика Tesla открывается 29 июля
    0
    Факты с пруфами? Я тоже много чего понаписать могу.
  • Comment from a drafted post.
  • Comment from a drafted post.
  • Первое обновление стабильной ветки Vivaldi 1.1
    +1
    По второму пункту дико поддерживаю. Невыносимо раздражает. Особенно если хочешь открыть ссылку не в новой вкладке, а в этой же. Нажал, и не понятно, вдуплил ли браузер, что ты нажал, или нет. Спустя пару секунд оказывается, что да, но осадочек остается…
  • Ubuntu. Русификация консоли в 2016 году
    0
    Нет, это была ubuntu server.
  • Telegram раздаст миллион долларов в виде грантов авторам ботов
    0
    Это конечно все круто, но такими темпами telegram превратится из мессенджера в бот-платформу. У меня сейчас в контакт листе ботов больше чем людей.
  • Ubuntu. Русификация консоли в 2016 году
    0
    Ок. Я нашел время на потестить. Тестировал на ubuntu версий 14.04, 15.10, 16.04 beta — нигде проблему не подтвердил. Вы уверены. что все делаете правильно? Я просто все три дистрибутива поставил в VirtualBox, и во время установки указал правильную локаль. После загрузки все было в порядке. Никаких дополнительных манипуляций производить не пришлось.
  • Ubuntu. Русификация консоли в 2016 году
    +1
    Ох, Вы зря потратили кучу времени. Проблема решается просто: sudo dpkg-reconfigure locales.
    Он сам предложит выбрать кодировки, шрифт, как переключать и запустит locale-gen по завершении…