Pull to refresh
0
@108dimaread⁠-⁠only

Пользователь

Send message

Личный сервер shadowsocks за 10 минут без затрат

Reading time3 min
Views243K

Недавно я набрёл на интересное решение, которое позволяет развернуть личный сервер shadowsocks без каких-либо финансовых затрат. В результате получается некий аналог собственного VPN-сервера, с которым могут работать настольные компьютеры и мобильные устройства. Соединение с сервером shadowsocks защищено и устойчиво к фильтрации DPI.

Приятной особенностью такого метода развёртывания shadowsocks является то, что он не требует больших технических познаний. И настройка клиентов shadowsocks крайне проста: вся конфигурация происходит сканированием QR-кода или одной URL-строкой.

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments64

Python: Работа с базой данных, часть 1/2: Используем DB-API

Reading time6 min
Views528K
часть 1/2: Используем DB-API часть 2/2: Используем ORM
Python DB-API – это не конкретная библиотека, а набор правил, которым подчиняются отдельные модули, реализующие работу с конкретными базами данных. Отдельные нюансы реализации для разных баз могут отличаться, но общие принципы позволяют использовать один и тот же подход при работе с разными базами данных.

В статье рассмотрены основные методы DB-API, позволяющие полноценно работать с базой данных. Полный список можете найти по ссылкам в конец статьи.

Требуемый уровень подготовки: базовое понимание синтаксиса SQL и Python.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments38

Python: коллекции, часть 1/4: классификация, общие подходы и методы, конвертация

Reading time7 min
Views326K
Коллекция в Python — программный объект (переменная-контейнер), хранящая набор значений одного или различных типов, позволяющий обращаться к этим значениям, а также применять специальные функции и методы, зависящие от типа коллекции.

Частая проблема при изучении коллекций заключается в том, что разобрав каждый тип довольно детально, обычно потом не уделяется достаточного внимания разъяснению картины в целом, не проводятся чёткие сходства и различия между типами, не показывается как одну и туже задачу решать для каждой из коллекций в сравнении.

Вот именно эту проблему я хочу попытаться решить в данном цикле статей – рассмотреть ряд подходов к работе со стандартными коллекциями в Python в сравнении между коллекциями разных типов, а не по отдельности, как это обычно показывается в обучающих материалах. Кроме того, постараюсь затронуть некоторые моменты, вызывающие сложности и ошибки у начинающих.

Для кого: для изучающих Python и уже имеющих начальное представление о коллекциях и работе с ними, желающих систематизировать и углубить свои знания, сложить их в целостную картину.

Будем рассматривать стандартные встроенные коллекционные типы данных в Python: список (list), кортеж (tuple), строку (string), множества (set, frozenset), словарь (dict). Коллекции из модуля collections рассматриваться не будут, хотя многое из статьи должно быть применимым и при работе с ними.

ОГЛАВЛЕНИЕ:


  1. Классификация коллекций;
  2. Общие подходы к работе с коллекциями;
  3. Общие методы для части коллекций;
  4. Конвертирование коллекций.
Читать дальше →
Total votes 38: ↑38 and ↓0+38
Comments27

Программирование беспроводных модулей на MicroPython с Thonny

Reading time4 min
Views11K

Я неоднократно разрабатывал проекты на MicroPython для различных embedded-решений, включая парочку ESP32 WiFi модулей. Для таких проектов есть несколько инструментов:

  • Использование последовательного терминала и ampy, который не поддерживается Adafruit с 2018 года.
  • Для плат Pycom или прошивки WiFy есть плагины pymakr под Atom и Visual Studio.
  • Если же вы предпочитаете командную строку, как и я, то стоит использовать rshell от одного из самых активных представителей команды MicroPython.
Total votes 38: ↑38 and ↓0+38
Comments2

Как превратить скрипт на Python в «настоящую» программу при помощи Docker

Reading time4 min
Views66K
Никого не интересует, умеете ли вы разворачивать связанный список — всем нужно, чтобы можно было легко запускать ваши программы на их машине. Это становится возможным благодаря Docker.


Для кого предназначена эта статья?


Вам когда-нибудь передавали код или программу, дерево зависимостей которой напоминает запутанную монтажную плату?


Как выглядит управление зависимостями

Без проблем, я уверен, что разработчик любезно предоставил вам скрипт установки, чтобы всё работало. Итак, вы запускаете его скрипт, и сразу же видите в оболочке кучу сообщений логов ошибок. «У меня на машине всё работало», — обычно так отвечает разработчик, когда вы обращаетесь к нему за помощью.

Docker решает эту проблему, обеспечивая почти тривиальную портируемость докеризованных приложений. В этой статье я расскажу, как быстро докеризировать ваши приложения на Python, чтобы ими можно было легко делиться с любым человеком, у которого есть Docker.

В частности, мы рассмотрим скрипты, которые должны работать как фоновый процесс.
Читать дальше →
Total votes 37: ↑27 and ↓10+27
Comments40

Fiddler = удобный сниффер + прокси сервер

Reading time8 min
Views128K

Привет. В данной статье расскажу как и зачем можно изменять HTTP пакеты при отправке на сервер и при получении ответов от сервера.
В статье много практических примеров.

Читать далее
Total votes 17: ↑16 and ↓1+17
Comments19

Абсолютная приватность сервиса в I2P: зашифрованный лизсет

Reading time4 min
Views8.2K

Чтобы связаться с любым скрытым сервисом, необходимо получить его лизсет (LeaseSet), который содержит информацию о входных туннелях и криптографических ключах. Для этого все серверные конечные точки, ожидающие подключение, публикуют свои лизсеты на флудфилах (Floodfill) – роутерах, выступающих в роли справочной книги или доски объявлений. Несмотря на то, что флудфил получает лишь информацию о первых узлах входных туннелей и криптографические ключи, т.е. никакой компрометирующей информации в лизсете нет, архитектура I2P предусматривает использование зашифрованных лизсетов. Это позволяет скрыть наличие конечной точки (она же «скрытый сервис» и «destination») от возможного мониторинга на флудфилах.

Идентификатор незашифрованного лизсета – обычный внутрисетевой адрес скрытого ресурса, только без окончания «.b32.i2p». Это позволяет держателям флудфилов видеть в открытом виде адреса ресурсов, которые у них опубликовались. Если вы подняли в I2P личный ресурс и не хотите, чтобы о нем случайно узнал кто-то еще, зашифрованный лизсет – специально для вас!

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments1

Основы функционального программирования на Python

Reading time19 min
Views62K

Этот пост служит для того, чтобы освежить в памяти, а некоторых познакомить с базовыми возможностями функционального программирования на языке Python. Материал поста разбит на 5 частей:

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments42

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

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

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

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

Скрапинг Avito без headless-браузера

Reading time2 min
Views41K

Недавно на хабре вышла статья Скрапинг современных веб-сайтов без headless-браузеров, и в комментариях было высказано мнение, что без headless-браузера не выйдет получить номер телефона из объявления на "авито" или "юле". Хочу это опровергнуть, ниже скрипт на python размером менее 100 строк кода, который успешно парсит "авито" успешно парсит "авито"!

Читать далее
Total votes 13: ↑11 and ↓2+15
Comments45

Определение местоположения без GPS: как устроен Яндекс.Локатор

Reading time8 min
Views294K
Сейчас всё больше мобильных приложений становятся геозависимыми. Одни просто не имеют смысла без знаний о местоположении пользователя, другие становятся с ним удобнее. Это так называемые Location Based Services (LBS): навигаторы, форскверы, инстаграмы с геотегами фотографий и даже приложения-напоминалки, которые срабатывают около конкретного места, например, рядом с офисом или магазином.

Для сервисов и приложений Яндекса мы создали собственную реализацию метода определения местоположения без GPS — Яндекс.Локатор. Он экономит время пользователя и делает наши приложения чуточку умнее. В Навигаторе и Картах она избавляет от ввода начальной точки маршрута, даже если вы на крытой парковке. А при выборе фильма в Киноафише или товара в мобильном Маркете помогает сразу показать, где их найти именно в вашем районе города. Ну и, разумеется, при поиске кафе и банкоматов — позволяет показывать вам сразу ближайшие, даже когда вы в метро.
image

Технологию мы давно открыли в виде бесплатного API. Сегодня хотим рассказать, как она устроена.

Читать дальше →
Total votes 115: ↑108 and ↓7+101
Comments80

Я иду искать: геопозиционирование хоста по IP-адресу в глобальной сети Интернет на примере криптобиржи Binance

Reading time12 min
Views18K

В статье рассмотрены методы геопозиционирования сетевых интерфейсов по IP-адресу на примере API-сервиса криптобиржи Binance. Геопозиционирование основано на дистанционно-временных моделях пересчета времени кругового обхода (RTT) в дистанцию и определения примерного местоположения сетевого интерфейса.


Современным электронным сервисам очень важно знать о географическом местоположении клиентов для «тонких» настроек своих маркетинговых процессов. Повсеместно используются разные техники геопозиционирования пользователей, основанные на привязке к базовым станциям мобильной связи и точкам доступа Wi-Fi. Однако существует целый ряд других задач, для решения которых необходимо знать геопозицию не самого пользователя, а сервера и его сетевого интерфейса. Такие сервисы, как MaxMind (безусловный отраслевой лидер), широко известны публике (можно также почитать здесь), но в целом в сети мало материала в открытом доступе, посвященного технологическим вопросам глобального геопозиционирования хоста по его IP-адресу. В этой статье мы расскажем о некоторых решениях в этой предметной области и поделимся результатами наших исследований.


За подробностями следуйте под кат.

Читать дальше →
Total votes 8: ↑7 and ↓1+8
Comments4

Scrapy: собираем данные и сохраняем в базу данных

Reading time5 min
Views70K

Введение


Меня заинтересовал данный фреймворк для сбора информации с сайтов. Здесь были публикации по Scrapy, но поскольку детальной информации на русском языке мало, то я хотел бы рассказать о своем опыте.
Читать дальше →
Total votes 30: ↑23 and ↓7+16
Comments14

Как купить авиабилет максимально дешево или ударим мониторингом по динамическому ценообразованию

Reading time3 min
Views40K
image

Как максимально выгодно купить авиабилет?

Любой более-менее продвинутый пользователь Сети знает такие варианты как

  • покупать заранее
  • искать маршруты с пересадкой
  • hidden-city ticketing
  • мониторить чартерные рейсы
  • искать в режиме инкогнито браузера
  • использовать мильные карты авиакомпаний, всяческие бонусы и промо-коды

Полный список лайфхаков как-то делал Тинькофф-Журнал, не буду повторяться

А теперь ответьте на вопрос — как часто вы попадали в ситуации когда покупали авиабилет, а потом он стал стоить дешевле?
Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments29

Реализация на Python многопоточной обработки данных для парсинга сайтов

Reading time2 min
Views27K
Процесс парсинга усложняется существенными затратами времени на обработку данных. Многопоточность поможет в разы увеличить скорость обработки данных. Сайт для парсинга — «Справочник купюр мира», где получим валюту в соотношении к иным.
Читать дальше →
Total votes 29: ↑16 and ↓13+3
Comments16

10 инструментов, позволяющих парсить информацию с веб-сайтов, включая цены конкурентов + правовая оценка для России

Reading time8 min
Views370K
image

Инструменты web scraping (парсинг) разработаны для извлечения, сбора любой открытой информации с веб-сайтов. Эти ресурсы нужны тогда, когда необходимо быстро получить и сохранить в структурированном виде любые данные из интернета. Парсинг сайтов – это новый метод ввода данных, который не требует повторного ввода или копипастинга.

Такого рода программное обеспечение ищет информацию под контролем пользователя или автоматически, выбирая новые или обновленные данные и сохраняя их в таком виде, чтобы у пользователя был к ним быстрый доступ. Например, используя парсинг можно собрать информацию о продуктах и их стоимости на сайте Amazon. Ниже рассмотрим варианты использования веб-инструментов извлечения данных и десятку лучших сервисов, которые помогут собрать информацию, без необходимости написания специальных программных кодов. Инструменты парсинга могут применяться с разными целями и в различных сценариях, рассмотрим наиболее распространенные случаи использования, которые могут вам пригодиться. И дадим правовую оценку парсинга в России.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments45

Парсинг на Pуthon. Как собрать архив Голубятен

Reading time9 min
Views43K
Статья описывает разработку скрипта на языке Python. Скрипт выполняет парсинг HTML-кода, составление списка материалов сайта, скачивания статей и предварительную очистку текста статьи от «посторонних» элементов. Используется библиотеки urllib (получение HTML-страниц), lxml (парсинг HTML-кода, удаление элементов и сохранение «очищенной» статьи), re (работа с регулярными выражениями), configobj (чтение файлов конфигурации).

Для написания скрипта достаточно базовых знаний языка Python, навыков программирования и отладки кода.

В статье даются пояснения по применению библиотек на примере составления списка публикаций С.М. Голубицкого, приведена ссылка на работающий скрипт.
Читать дальше →
Total votes 60: ↑46 and ↓14+32
Comments41

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

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

Парсинг сайтов-магазинов. Личный опыт и немного how-to

Reading time3 min
Views190K
Разделим парсинг (скраппинг) сайтов на две подзадачи.
  1. Собственно сам парсинг – поиск данных, которые нам интересны на страницах.
  2. Осмысливание полученных данных.

Рассмотрим эти задачки подробнее
Total votes 59: ↑46 and ↓13+33
Comments70

Information

Rating
Does not participate
Location
Днепр, Днепропетровская обл., Украина
Date of birth
Registered
Activity

Specialization

Backend Developer, Application Developer
JavaScript
HTML
Node.js
GraphQL
Vue.js
Express
React