Начиная с версии Python 2.7, в набор стандартных библиотек была включена библиотека argparse для обработки аргументов (параметров, ключей) командной строки. Хотелось бы остановить на ней Ваше внимание.
Пользователь
Массовая уязвимость в проектах на Ruby
1 мин
2.6KОпубликовано сообщение о массовой уязвимости в проектах на Ruby. Речь идёт об использовании
Дело в том, что
^
в начале строки и $
в конце строки регулярных выражений вместо \A
и \z
. Дело в том, что
^
и $
в таких случаях воспринимается Ruby как новые строки (\n
), что открывает двери для инъекций.+30
Взломать Wi-Fi за 10 часов
12 мин
1.5MЕще не так давно казалось, что беспроводная сеть, защищенная с помощью технологии WPA2, вполне безопасна. Подобрать простой ключ для подключения действительно возможно. Но если установить по-настоящему длинный ключ, то сбрутить его не помогут ни радужные таблицы, ни даже ускорения за счет GPU. Но, как оказалось, подключиться к беспроводной сети можно и без этого — воспользовавшись недавно найденной уязвимостью в протоколе WPS.


+284
Делаем бэкап музыкальной базы vkontakte с помощью Python
6 мин
22KГод назад я захотел в машину флешку с винегретом из музыки, которая была у меня в плейлисте контакта. А там, к слову, почти 1400 треков.
Итак, первое, что я сделал — октрыл список расширений оперы и набрал в поиске «vkontakte». Но вот оказия, все приложения предлагали качать по одному треку, в основном добавляя рядом с ним кнопочку «скачать». В принципе, это удобно, если надо стянуть оттуда один-два трека, но вот если их 1400…
Следующий моим шагом было открытие страницы с музыкой и внимательная медитация над ней, с целью распарсить страницу, выдрав оттуда ссылки и названия. Слегка подумав, я решил, а почему бы снова не использовать вконтактовый API? Ведь опыт использования у меня уже есть (писал десктопный плеер на Qt). Но лепить полноценное приложение, тем более на плюсах или каком-либо другом языке, мне показалось слегка не умным решением. И тут я подумал — черт возьми, есть же python, наклепаю скрипт и стяну все. Итак, выбор сделан, начинаем кодить.
Открываем Geany и пишем первые строчки… И вот тут-то моя фантазия и желание лепить комбайны из ничего опять разыгрались. Дальше под катом.
Итак, первое, что я сделал — октрыл список расширений оперы и набрал в поиске «vkontakte». Но вот оказия, все приложения предлагали качать по одному треку, в основном добавляя рядом с ним кнопочку «скачать». В принципе, это удобно, если надо стянуть оттуда один-два трека, но вот если их 1400…
Следующий моим шагом было открытие страницы с музыкой и внимательная медитация над ней, с целью распарсить страницу, выдрав оттуда ссылки и названия. Слегка подумав, я решил, а почему бы снова не использовать вконтактовый API? Ведь опыт использования у меня уже есть (писал десктопный плеер на Qt). Но лепить полноценное приложение, тем более на плюсах или каком-либо другом языке, мне показалось слегка не умным решением. И тут я подумал — черт возьми, есть же python, наклепаю скрипт и стяну все. Итак, выбор сделан, начинаем кодить.
Открываем Geany и пишем первые строчки… И вот тут-то моя фантазия и желание лепить комбайны из ничего опять разыгрались. Дальше под катом.
+4
Как правильно сортировать контент на основе оценок пользователей
5 мин
93KПеревод

В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.
Постановка проблемы
Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».
Неправильное решение №1
Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)
+388
Inbox.py: самый простой SMTP-сервер
1 мин
24KКеннет Райтц из компании Heroku продолжает создавать элегантные библиотеки с упрощёнными API. Предыдущей разработкой была библиотека Requests для HTTP-запросов. Теперь он выпустил простой SMTP-сервер Inbox.py, который элементарно прикрутить к веб-приложению для осуществления прямых почтовых рассылок и приёма/обработки почты, без мучений с макросами sendmail.
from inbox import Inbox
inbox = Inbox()
@inbox.collate
def handle(to, sender, body):
...
# Bind directly.
inbox.serve(address='0.0.0.0', port=4467)
+40
Библиотека для упрощения HTTP-запросов
1 мин
151KRequests — библиотека Python, которая элегантно и просто выполняет HTTP-запросы. Теперь не нужно осваивать urllib2 с излишне сложными программными интерфейсами.
Вот как выглядит HTTP-запрос с авторизацией с помощью requests:
Вот как выглядит HTTP-запрос с авторизацией с помощью requests:
>>> r = requests.get('https://api.github.com', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json'
+101
Сканируем в 3D с помощью фотоаппарата или 123D Catch
3 мин
134K
Однако есть очень простой способ “сканировать” объект в 3D модель, используя обычный цифровой фотоаппарат. Как это сделать? Об этом и пойдет речь далее.
+130
Фаззинг браузера Chrome: 6000 инстансов, 50 млн вариантов в сутки
2 мин
3.4KКомпания Google раскрыла некоторые подробности, как осуществляется тестирование браузера Chrome на уязвимости. Для этого они применяют метод фаззинга (fuzz testing), то есть используют методику тестирования, при которой на вход программы подаются невалидные, непредусмотренные или случайные данные.
Идея заключается в том, чтобы протестировать максимально возможное количество вариантов. Естественно, для этого нужны серьёзные ресурсы. Для тестирования Chrome создан целый кластер серверов ClusterFuzz, состоящий из нескольких сотен виртуальных машин.
Идея заключается в том, чтобы протестировать максимально возможное количество вариантов. Естественно, для этого нужны серьёзные ресурсы. Для тестирования Chrome создан целый кластер серверов ClusterFuzz, состоящий из нескольких сотен виртуальных машин.
+41
Определение IP адреса пользователя Skype
1 мин
119K
Вводим логин — получаем IP:
Skype забанил все наши адреса с которых производился поиск, отобрали домены, и теперь автоматически банятся все аккаунты на одном айпи с тем где запущен крякнутный Skypekit. Так же автоматически блокируются аккаунты выполняющие часто RefreshProfile().
Деобфусцированный десктопный Skype для windows использовать безопасно, если только не запрашивать сильно часто vcard. Эта инструкция актуальна habrahabr.ru/post/142876
Поиск происходит абсолютно незаметно для юзера.
Слева внешний IP через который клиент выходит наружу, справа локальный.
Если они совпадают значит у пользователя не используется NAT.
Если запущено одновременно несколько клиентов — будут показаны все.
Если возвращается только локальный IP вида 10.* или 192.168.* значит используется старая версия клиента, например Linux 2.0.0.72
IP показываются еще спустя несколько часов после того как пользователь отключился.
+89
Внутренности jQuery. Поиск кода, выполняемого по событию
4 мин
25K
Клиентского кода в веб-приложениях с каждым годом действительно становится все больше. Подчас это десятки файлов с сотнями функций. И что делать, когда нам нужно поменять код, выполняемый по событию (например, клик по ссылке). Как его найти? Задавшись решением этой задачи, я придумал несколько разных вариантов. Каждый из них имеет свои плюсы и минусы. И в конце статьи я предлагаю метод, который мне кажется оптимальным.
+118
Стереоскопический эффект на 3D-картах
1 мин
2.8K

Всё это реализовано на WebGL и в данный момент доступны самые популярные города мира.
+45
Тяни меня полностью или как растягивать «submit» и «button»
2 мин
7.1K
Зачастую верстальщикам приходиться бороться с «дизайнерскими прелестями». Не исключением являются кнопки типа «submit» и «button». Необходимо выполнить вёрстку в соответствии с PSD макетом, да ещё и не забыть о чрезмерном расходе трафика и кроссброузерности страницы.
Проблемы как правило начинаются когда кнопка имеет скруглённые углы, хитрые границы и градиенты как на картинке выше.
Сегодня я хотел бы поделиться личным опытом решения данной задачи.
-8
Самый частый шаблон SQL инъекций в РНР — бесполезное экранирование символов
2 мин
36KПо роду своей деятельности, мне приходится выполнять аудиты безопасности исходного кода веб-приложений.
Много веб-приложений и много кода…
В этой статье я хотел бы поделиться одной простой (очень простой) истиной и статистикой, которые вывел и многократно проверил в течении трех последний лет просмотра тонн РНР кода.
Не секрет, что уязвимости внедрения операторов СУБД (SQL injections) являются самыми распространенными из всех серверных уязвимостей веб-приложений. Есть платформы и фреймворки, где такие вещи практически полностью исключены, например ORM'ом и прочим. Но статистика упорно говорит нам об абсолютном преобладании на просторах Интернета веб-приложений с простыми конкатенированными SQL запросами. Кроме того, есть случаи, где ORM вообще применим быть не может. Например, когда от пользовательских данных должны зависеть не только параметры выражений, но и сама логика запроса на уровне операторов.
Много веб-приложений и много кода…
В этой статье я хотел бы поделиться одной простой (очень простой) истиной и статистикой, которые вывел и многократно проверил в течении трех последний лет просмотра тонн РНР кода.
Не секрет, что уязвимости внедрения операторов СУБД (SQL injections) являются самыми распространенными из всех серверных уязвимостей веб-приложений. Есть платформы и фреймворки, где такие вещи практически полностью исключены, например ORM'ом и прочим. Но статистика упорно говорит нам об абсолютном преобладании на просторах Интернета веб-приложений с простыми конкатенированными SQL запросами. Кроме того, есть случаи, где ORM вообще применим быть не может. Например, когда от пользовательских данных должны зависеть не только параметры выражений, но и сама логика запроса на уровне операторов.
+66
Terraria: или пишите игры правильно
5 мин
70KТуториал

Привет, дорогой хабрапользователь!
Надеюсь, все хотя бы раз играли в такую замечательную игрушку, как Terraria, ведь сегодня речь пойдет о ней и о том, как не стоит писать игры с точки зрения безопасности. Если интересно — добро пожаловать под хабракат!
+78
Как я боролся с кодировками в консоли
6 мин
173KВ очередной раз запустив в Windows свой скрипт-информер для СамИздат-а и увидев в консоли «загадочные символы» я сказал себе: «Да уже сделай, наконец, себе нормальный кросс-платформенный логгинг!»
Об этом, и о том, как раскрасить вывод лога наподобие Django-вского в Win32 я попробую рассказать под хабра-катом (Всё ниженаписанное применимо к Python 2.x ветке)
Об этом, и о том, как раскрасить вывод лога наподобие Django-вского в Win32 я попробую рассказать под хабра-катом (Всё ниженаписанное применимо к Python 2.x ветке)
+49
Видеокурс Fundamentals of Magento development
2 мин
14K
В феврале этого года Magento сделала свой курс «Fundamentals of Magento development» бесплатным. Он стал доступен для желающих в виде видеолекций, которые до сих пор возможно просмотреть на портале training.magento.com. Курс является достаточно обширным, он охватывает все — от объяснения подхода Magento к ООП и MVC, до построения грида в adminhtml.
+24
Фоторепортаж с выставки Consumer Electronics & Photo Expo 12
2 мин
123KНа прошлой неделе в Москве прошла выставка Consumer Electronics & Photo Expo 12 (CEPE), также известная как Фотофорум. Мне повезло побывать в столице нашей Родины и вживую посмотреть огромное количество полуголых девушек новинок мира техники.

Сначала я занудно перечислю участников, покажу фотки стендов, а потом перейдем к сладкому (надо же мне за CeBit исправляться).
ВНИМАНИЕ! ТРАФИК! ЖЕНЩИНЫ! Под катом много фотографий и большинство из них с прекрасными барышнями.

Сначала я занудно перечислю участников, покажу фотки стендов, а потом перейдем к сладкому (надо же мне за CeBit исправляться).
ВНИМАНИЕ! ТРАФИК! ЖЕНЩИНЫ! Под катом много фотографий и большинство из них с прекрасными барышнями.
+66
Web-Drawing библиотеки: Paper.js Vs. Processing.js Vs. Raphael.js
12 мин
38KПеревод
Набрёл на статью со сравнением трёх JS библиотек для рисования в WEB Paper.js, Processing.js и Raphael.js. Думаю она будет интересна не только мне.
Прежде чем начать рисовать что-либо в браузере, спросите себя о следующих трёх вещах:

Прежде чем начать рисовать что-либо в браузере, спросите себя о следующих трёх вещах:

- Вам нужна поддержка старых браузеров?
Если ответ да, тогда единственный выбор, это Raphaël. Он поддерживает браузеры вплоть до IE 7 и Firefox 3. У Raphaël есть даже ограниченная поддержка IE 6, несмотря на то, что некоторые базовые для библиотеки технологии не могут быть реализованы в этом браузере.
- Вам нужна поддержка Android?
Android не поддерживает SVG, так что вам придется использовать Paper.js или Processing.js. Существуют слухи, что Android 4 будет поддерживать SVG, но большинство современных Android устройств уже не будет его поддерживать.
- Ваш рисунок интерактивный?
Raphaël и Paper.js сосредоточены на взаимодействии с рисуемыми элементами посредством клика мышкой, перетаскивания и касания. Processing.js не поддерживает никаких события уровня объекта, потому обработать движения пользователя в нём довольно сложно. Processing.js может рисовать классную анимацию на Вашей домашней страничке, а Raphaël и Paper.js более подходят для интерактивных приложений.
+58
Все о свойстве border
5 мин
264KПеревод
Все знакомы с css параметром border, но есть ли вещи, которые мы не знаем о нем?


+205
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность