Pull to refresh
80
0

User

Send message

Решения проблемы спам-ботов, добавляемых в телеграм-группы

Reading time4 min
Views118K

Привет. Я автор нескольких популярных ботов для администрирования телеграм групп: @daysandbox, @watchdog_robot и других. Каждый день в группе поддержки и в личных сообщениях я вижу один и тот же вопрос: как мне защититься от спам-ботов, добавляемых в группу. Обычно ещё уточняют, что это арабские спам-боты. Люди пытаются найти анти-спам бота, который будет удалять ссылки, удалять сообщения с арабскими символами, удалять пользователей с арабскими символами в именах и всё в таком духе. Но это всё следствия, а причина во многих случаях одна и та же и её легко поправить. Причина простая, но не очевидная.

Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments6

Телеграм бот для удаления спама

Reading time3 min
Views116K

UPD: Актуальная документация по боту находится по адресу https://tgdev.io/bot/daysandbox_bot


Решил написать эту публикацию т.к. устал объяснять одно и то же людям, которые хотят использовать моего телеграм бота @daysandbox_bot. Итак, несколько месяцев назад я разработал бота для удаления спама по очень простому признаку: если человек зашёл в чат и провёл в нём менее суток, то любые ссылки или forward сообщения от этого человека удаляются. Всё. Никаких нейронных сеток, анализа частотности, модерируемых white- и black-листов и прочих сложных вещей. На удивление бот приобрёл некоторую популярность и работает уже более чем в шестистах чатиках. Далее я попытаюсь развёрнуто описать принцип работы бота, чтобы в дальнейшем давать ссылку на эту статью.

Читать дальше →
Total votes 25: ↑19 and ↓6+13
Comments13

Runscript — утилита для запуска python скриптов

Reading time4 min
Views46K
Думаю многим знакома следующая ситуация. В вашем проекте есть различные действия, которые нужно выполнять время от времени. Для каждого действия вы создаёте отдельный скрипт на питоне. Чтобы далеко не лазить, скрипт кладёте в корень проекта. Через некоторое время вся корневая директория проекта замусоривается этими скриптами и вы решаете сложить их в отдельную директорию. Теперь начинаются проблемы. Если указать интерпретатору python путь до скрипта, включающий эту новую директорию, то внутри скрипта не будут работать импорты пакетов, находящися в корне проекта т.к. корня проекта не будет в sys.path. Эту проблему можно решить несколькими способами. Можно изменять sys.path в каждом скрипте, добавляя туда корень проекта. Можно написать утилитку для запуска ваших скриптов, которая будет изменять sys.path перед запуском скрипта или просто будет лежать в корне проекта. Можно ещё что-то придумать. Мне надоело каждый раз изобретать колесо и я создал велосипед runscript на котором с удовольствием катаюсь.
Читать дальше →
Total votes 24: ↑16 and ↓8+8
Comments26

Grab — новый интерфейс для работы с DOM-деревом HTML-документа

Reading time5 min
Views36K

Исторический экскурс


Ранее я уже писал на хабре о Grab — фреймворке для написания парсеров сайтов: раз, два, три, четыре. В двух словах, Grab это удобная оболочка поверх двух библиотек: pycurl для работы с сетью и lxml для разбора HTML-документов.
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments26

Эйфория на рынке криптовалюты

Reading time1 min
Views11K
А тем временем битки тихонько подобрались к цене в $30 за одну монету. Это исторический максимум, до которого цена биток уже поднималась летом 2011 года. После того всплеска их цена резко упала до $3 и затем неспешно росла вверх. Сейчас возможны два варината, биткойны пробьют отметку $30 и устремятся ввысь или же произойдёт коррекция, например, до $20 Делаем ставки господа и затариваемся битками ;)

Total votes 44: ↑19 and ↓25-6
Comments17

Советы начинающим фрилансерам

Reading time3 min
Views64K
Несколько сумбурных мыслей о фрилансе. Не воспринимайте каждое слово буквально.

Я ничего не знаю, мои услуги никому не нужны.


Скорее всего вы действительно ничего не знаете. Но, поверьте, вокруг так много мудаков и слабоумных, что если вы действительно хотите учиться и вам нравится то, что вы делаете, то для вас быстро найдётся работа.
Читать дальше →
Total votes 102: ↑72 and ↓30+42
Comments83

Что такое Grab:Spider?

Reading time4 min
Views16K
Никак не могу дописать документацию по Grab:Spider — это часть библиотеки Grab — для написания асинхронных пауков. Подумал выкладывать куски документации на хабрахабр. Думаю, с некоторым фидбэком дело быстрей пойдёт. На данный момент в документации есть лишь введение, описывающие в общих чертах, что за это за зверь такой Grab:Spider. Его и выкладываю.
Читать дальше →
Total votes 37: ↑32 and ↓5+27
Comments43

Способы улучшения звучания инструментов используя технологию Layering

Reading time3 min
Views21K
Статью попросил запостить хабрапользователь istinspring т.к. у него не хватает кармы. Если вам понравилась статья, не забудьте его плюсануть, он ещё много таких написать может.

В этой “пилотной” статье постараюсь как можно доступнее изложить основную концепцию, и приведу пару mp3 фрагментов в качестве примеров. Если эта тема окажется интересной, вполне возможно опишу некоторые моменты более детально.

Я думаю многие замечали, что инструменты в миксе звучат не так как хотелось бы. Вроде бы все то, но звук какой-то вялый, неяркий, как будто чего-то не хватает. В то время как на “фирменных” записях даже синусоида звучит “жирно”. На самом деле для этого есть множество причин, но остановимся на мой взгляд на самой главной.

Дело в том, что в современной электронной музыке применяют такой прием как Layering. Т.е. наслоение. Другими словами каждый инструмент создается послойно, позволяя получить уникальный тембр с огромным потенциалом для различных вариаций и экспериментов.

Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments19

Документация по Grab — библиотеке для парсинга сайтов

Reading time2 min
Views33K
Я ранее уже рассказывал на хабре о Grab — библиотеке для парсинга сайтов и о Spider — асинхронном модуле для парсинга. Рад сообщить, что я наконец-то дописал документацию по Grab. Я решил писать всё на русском языке т.к. на английском языке мне труднее выражать мысли. На деле писанины получилось гораздо больше, чем представлялось в начале, но я таки описал практически все функции библиотеки. Я решил просто вставить сюда, оглавление, кликайте на интересный раздел и читайте о возможностях Grab:
Читать дальше →
Total votes 77: ↑72 and ↓5+67
Comments57

Фреймворк для парсинга Grab:Spider

Reading time4 min
Views29K
Я автор python библиотеки Grab, которая упрощает написание парсеров веб-сайтов. Я о ней писал вводную статью некоторое время назад на хабре. Недавно я решил вплотную занять парсингом, стал искать free-lance заказы по парсингу и мне понадобился инструмент для парсинга сайтов с большим количеством страниц.

Раньше я реализовывал мультипоточные парсеры с помощью python-тредов с помощью такой вот библиотечки. У threading-подхода есть плюсы и минусы. Плюс в том, что мы запускаем отдельный поток(thread) и делаем в нём, что хотим: можем делать последовательно несколько сетевых вызовов и всё это в пределах одного контекста — никуда не надо переключаться, что-то запоминать и вспоминать. Минус в том, что треды тормозят и жрут память.

Какие альтернативы?
Читать дальше →
Total votes 48: ↑43 and ↓5+38
Comments55

Скрипт поиска проектов на odesk.com

Reading time2 min
Views7K
Хочу поделиться полезным скриптом для поиска проектов на odesk.com Честно говоря, я не понял, как на odesk.com задать вопрос с OR оператором, чтобы за один присест найти все интерсующие меня проекты, поэтому я искал в несколько подходов, что не очень удобно. Этот скрипт решает проблему. Я поставил его на крон, добавил закладку на локальный файл в браузер и просто смотрю её периодически.

Код скрипта под катом:
Читать дальше →
Total votes 44: ↑29 and ↓15+14
Comments26

Grab — python библиотека для парсинга сайтов

Reading time13 min
Views149K
Лет пять-шесть назад, когда я ещё программировал преимущественно на PHP, я начал использовать библиотеку curl для парсинга сайтов. Мне нужен был инструмент, который позволял эмулировать сессию пользователя на сайте, отсылать заголовки обычного браузера, давать удобный способ отсылки POST-запросов. Сначала я пытался использовать напрямую curl-расширение, но его интерфейс оказался очень неудобным и я написал обёртку с более простым интерфейсом. Время шло, я пересел на python и столкнулся с таким же дубовым API curl-расширения. Пришлось переписать обёртку на python.
Читать дальше →
Total votes 80: ↑79 and ↓1+78
Comments53

Сервис просмотра захабренных картинок

Reading time1 min
Views755
Я давно хотел написать какой-нибудь простой сервис, завязанный на материалы, публикуемые на хабре. Вчера мне в голову пришла довольно таки простая идея — выводить популярные картинки из комментариев. Итак, встречайте: habhab.ru — сервис просмотра захабренных картинок.

Показываются картинки из публикаций за последние три дня. Картинки отсортированы по рейтингу комментария, в котором они присутствуют. Картинки из самих статей не показываются т.к. с ними получилась бы просто свалка изображений. А вот комментарии совсем другое дело — обычно картинку в комментарий помещают для того, чтобы оригинально и эффектно преподнести свою мысль. По сути, большинство картинок используются в юмористическом контексте. Интерфейс сайта описывать нет смысла, я надеюсь, он понятен без слов. Сайт предоставляет RSS-ленту. Всё. Интересного вам хабхабанья.

UPD: Добавил также вывод захабренных ссылок: habhab.ru/links
Total votes 153: ↑140 and ↓13+127
Comments42

Ограничиваем интерфейс редактирования с помощью прокси-моделей

Reading time2 min
Views9K
Административный интерфейс джанго позволяет настраивать права доступа к объектам различных приложений. Для любой модели любого приложения вы можете разрешить пользователю три действия: добавлять новые объекты, редактировать и удалять существующие объекты.

А что делать, если мы хотим разрешить пользователю редактировать только часть полей? И в то же время оставить возможность другим пользователям редактировать все поля.
Читать дальше →
Total votes 31: ↑27 and ↓4+23
Comments13

Настройка сервера для django-проектов с нуля

Reading time6 min
Views41K
Хочу поделиться опытом настройки сервера для django-проектов. Так вышло, что мне часто приходится настраивать с нуля VPS-сервера для запуска на них django-сайтов. Как-то мне в голову пришла идея записать пошагово процесс настройки. Оказалось, что “по бумажке” выполнять эти рутинные операции гораздо проще и быстрее — все нюансы записаны, трудно что-то упустить. Дальше больше — я превратил инструкцию в самостоятельный shell-скрипт — запустил и сервер готов. Я думаю, некоторым python-разработчикам, особенно начинающим, будет полезно ознакомиться с содержимым скрипта. С некоторыми доработками вы, возможно, захотите использовать его в своей практике.
Читать дальше →
Total votes 111: ↑100 and ↓11+89
Comments56

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity