Search
Write a publication
Pull to refresh
78
0
Александр @Alex10

Full-stack Web Developer

Send message

Введение в анализ данных с помощью Pandas

Reading time3 min
Views243K
Сегодня речь пойдет о пакете Pandas. Данный пакет делает Python мощным инструментом для анализа данных. Пакет дает возможность строить сводные таблицы, выполнять группировки, предоставляет удобный доступ к табличным данным, а при наличии пакета matplotlib дает возможность рисовать графики на полученных наборах данных. Далее будут показаны основы работы с пакетом, такие как загрузка данных, обращение к полям, фильтрация и построение сводных.
Читать дальше →

Некоторые возможности Python о которых вы возможно не знали

Reading time8 min
Views116K

Предисловие


Я очень полюбил Python после того, как прочитал книгу Марка Лутца «Изучаем Python». Язык очень красив, на нем приятно писать и выражать собственные идеи. Большое количество интерпретаторов и компиляторов, расширений, модулей и фреймворков говорит о том, что сообщество очень активно и язык развивается. В процессе изучения языка у меня появилось много вопросов, которые я тщательно гуглил и старался понять каждую непонятую мной конструкцию. Об этом мы и поговорим с вами в этой статье, статья ориентирована на начинающего Python разработчика.

Подробности

Почему мы перешли на Marionette.js

Reading time6 min
Views39K
Если глянуть на историю развития десктоп приложений, видно, что она начиналась с мощных серверов, которые могли слать экраны текста тонким клиентам. Тонкие клиенты давали команду, которую обрабатывал сервер и потом слал новый экран обратно клиенту.

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

Чистим HTML-код при вставке текста из MS Word в HTML5 WYSIWYG редактор (contenteditable)

Reading time5 min
Views24K
Здравствуйте!

При написании своего WYSIWYG редактора возникла проблема копирования текста из Ворда. Собственно проблем три:
  • Ворд вставляет много мусорного html кода, который необходимо чистить
  • Для представления списков Ворд почему-то использует параграфы вместо тегов UL и LI
  • Собственно как определить, что вставленный текст является вставленным из Ворда.

В общем, для решения этих проблем, был написан jquery-плагин, полный исходный код которого доступен в конце статьи. Пример использования:

$(‘#editor’). msword_html_filter();

Плагин вешается на событие keyup и проверяет, является ли исходный код внутри редактора вставленным из Ворда, если да, то запускается функция очистки. В результирующем html прибивается все что только можно – неразрывные пробелы, атрибуты style и align, теги span, все Mso-классы, пустые параграфы.

Детали реализации под катом.

UPD Демо на CodePen

Читать дальше →

Как изменения в интернет-законодательстве США могут осложнить жизнь российским разработчикам игр и операторам игровых платформ

Reading time4 min
Views24K
Хабравчане, здравствуйте. На днях по роду своей профессиональной деятельности я столкнулась с проблемой, которая практически не освещена в рунете. Речь идет об изменениях в американском «Законе о защите конфиденциальности детей в Интернете» (Children's Online Privacy Protection Act или COPPA), которые затрагивают в том числе и иностранных операторов веб сайтов, в особенности игровых, если оные посещаются юзерами из США.

What is COPPA

COPPA — вещь не новая. Этот федеральный закон вступил в силу в 2000 году и применяется к сбору персональной информации от детей младше 13 лет. Согласно его основным положениям, операторы веб сайтов и интернет сервисов не имеют права запрашивать и хранить личные данные детей без получения официального согласия их родителей или опекунов. Несмотря на то, что законодательством предусмотрено несколько способов испросить согласия, большинство сайтов (например, Facebook, Twitter и Google+) предпочитают попросту блокировать доступ пользователям, не достигшим 13 лет.

В июле 2013 года закон ужесточили. Что произошло? Было расширено определение термина «персональная информация». Теперь сюда входят:

• ФИО;
• Контактные данные, включая адрес проживания, номер телефона, E-Mail, номер ICQ или Skype и тп.
• Ник пользователя, виртуальное имя
• Номер социального страхования
• Фото и видео ребенка, запись его голоса
АХТУНГ: номер cookie, IP-адрес, номер процессора или серийный номер устройства, которое осуществляет доступ в сеть
• Информация о геолокации

Should I care?

Действие COPPA распространяется не только на местные компании, но и на операторов иностранных сайтов, если они ведут дела с США и привлекают американских пользователей. Под удар попадают, например, мобильные приложения, игровые платформы, плагины, рекламные сети.

При этом Федеральная торговая комиссия (FTC), отвечающая за надзор за исполнением закона, делает различия между сайтами, направленными на детей, и сайтами с «широкой аудиторией». Последние должны следовать COPPA лишь случае, когда им известно, что определенной доле их посетителей не исполнилось 13 лет.

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

Git. Автоматическая проверка сообщения коммита на стороне сервера с помощью Python

Reading time6 min
Views16K

Целевая аудитория, мотивация


Надеюсь, что пост окажется полезным для тех, кто на среднем уровне знаком с Git и на начальном — с Python. Кроме того, предполагается наличие базовых знаний об устройстве Unix-систем и регулярных выражениях.

В моей команде разработчиков назрела необходимость организационно повлиять на формат сообщений к коммитам. Практика показала, что для должного соблюдения новых правил странички в корпоративной базе знаний недостаточно, хотелось принудительно запрещать проталкивание (push) на сервер плохо оформленных коммитов. Недавно начав изучать Python, я знал, что этот язык хорошо подходит для написания системных сценариев благодаря своей развитой стандартной библиотеке. Вместе с тем опыт подсказывал, что наличие конкретной цели здорово помогает при изучении чего бы то ни было нового. Поэтому, отбросив страх перед неизвестностью, взялся решать задачу на малознакомом языке. Заранее оговорюсь, что в конце поста приведены ссылки, по которым можно найти подробную информацию по всем затронутым в тексте темам.
Читать дальше →

Сварка оптических волокон. Часть 1: кабели и их разделка, оптический инструмент, муфты и кроссы, коннекторы и адаптеры

Reading time25 min
Views606K

Волокна заряжены в сварочный аппарат

Здравствуйте, читатели Хабра! Все слышали про оптические волокна и кабели. Нет нужды рассказывать, где и для чего используется оптика. Многие из вас сталкиваются с ней по работе, кто-то разрабатывает магистральные сети, кто-то работает с оптическими мультиплексорами. Однако я не встретил рассказа про оптические кабели, муфты, кроссы, про саму технологию сращивания оптических волокон и кабелей. Я — спайщик оптических волокон, и в этом (первом своём) посте хотел бы рассказать и показать вам, как всё это происходит, а также часто буду в своём рассказе отвлекаться на прочие смежные с этим вещи. Опираться буду в основном на свой опыт, так что я вполне допускаю, что кто-то скажет «это не совсем правильно», «вот тут неканонично».
Материала получилось много, поэтому возникла необходимость разбить топик на части.
В этой первой части вы прочтёте про устройство и разделку кабеля, про оптический инструмент, про подготовку волокон к сварке. В других частях, если тема окажется вам интересной, я расскажу про методы и покажу на видео сам процесс сращивания самих оптических волокон, про основы и некоторые нюансы измерений на оптике, коснусь темы сварочных аппаратов и рефлектометров и других измерительных приборов, покажу рабочие места спайщика (крыши, подвалы, чердаки, люки и прочие поля с офисами), расскажу немного про крепёж кабелей, про схемы распайки, про размещение оборудования в телекоммуникационных стойках и ящиках. Это наверняка пригодится тем, кто собирается стать спайщиком. Всё это я сдобрил большим количеством картинок (заранее извиняюсь за paint-качество) и фотографий.
Осторожно, много картинок и текста.

Часть 2 здесь.
Читать дальше →

База GeoIP – страны и города, сентябрь 2013

Reading time2 min
Views70K
Вышла в свет обновленная версия русскоязычной базы данных стран и городов.

База распространяется в двух модификациях: «Страны и города» (13Mb, после установки ~74Mb)  и «Только страны» (2Mb, после установки ~9Mb). Также в архивах находится небольшой пример использования базы данных на php.
Читать дальше →

Python. Неочевидное поведение некоторых конструкций

Reading time4 min
Views35K
Рассмотрены примеры таких конструкций + некоторые очевидные, но не менее опасные конструкции, которых в коде желательно избегать. Статья рассчитана на python программистов с опытом 0 — 1,5 года. Опытные разработчики могут в коментах покритиковать или дополнить своими примерами.
Читать дальше →

Как сделать такую ERP систему, чтобы пользователи не бегали в ИТ за отчетами

Reading time2 min
Views10K
Тех из вас, кто занимается поддержкой 1С, ERP или сами пишут учетные системы, знают о проблеме нагрузки IT отдела. Если же вы не занимаетесь поддержкой таких систем, то просто поверьте на слово – такая проблема есть.

Постоянное желание развивать систему и изменения законодательства приводят к частым релизам и, как следствие, большому потоку задач в поддержку. Значительная часть потока – задачи по доработке (разработке) отчетов системы.

Проблема в корпоративном секторе на столько актуальна, что есть специальный термин Self-service BI, смысл которого что-то вроде «чудо-система, в которой пользователи не бегают за отчетами в ИТ».

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

Свой опыт в этом вопросе сформулировал в выступлении на XI Форуме Business Intelligence. За 10 лет разработки я сформулировал 10 правил, которые попробовал донести за 20 минут.


Краткий анонс

Джефф Дин из компании Google — это Чак Норрис нашего времени

Reading time4 min
Views226K
«Джефф Дин компилирует и запускает свой код перед коммитом, но только чтобы проверить на баги компилятор и CPU», — вот один из множества шуточных фактов о Джеффе Дине.

Джефф Дин считается кем-то вроде Чака Норриса. Отличие только в том, что он вовсе не герой боевиков, а инженер-программист компании Google.

Шутки о нём впервые появились на 1 апреля шесть лет назад. Один из коллег Дина по имени Кентон Варда открыл страничку, куда каждый мог добавлять факты о Джеффе Дине. Идею с энтузиазмом подхватили другие разработчики — и вскоре наполнили страничку множеством таких «фактов».
Читать дальше →

Подключение сайтов к онлайн оплате в Украине

Reading time7 min
Views78K


Многие уже сталкивались, а многим еще только предстоит столкнуться с подключением своих проектов к онлайн-оплате. В этой статье я поделюсь своим опытом в этой сфере.
Пост не содержит уникальной информации, все описанное тут можно, при желании, найти в других источниках. Тем не менее прочтение этой статьи скорее всего сэкономит вам не мало времени в будущем, а также расскажет о многих мелочах и возможностях, о существовании которых, возможно, вы даже не подозреваете.
Читать дальше →

Сервисы мобильного эквайринга и мини-терминалы в России — пора принимать Visa и MasterCard!

Reading time31 min
Views248K
Square, PayPal, iZettle — известные во всем мире компании, которые предлагают решения по приему банковских карт. Ни один из брендов не представлен в России. Зато у нас есть десять собственных. Мною проведено независимое исследование сервисов мобильного эквайринга в России, позволяющих принимать платежи по банковским картам Visa и MasterCard: iPay, Sum Up, Pay Me, 2Can, SimplePay, LifePay, Термит, ibox, Paybyway и RBK Card.

Захотелось понять: что движет людьми и рынком, что предлагают сервисы и кому могут быть интересны эти решения. Если Вы занимаетесь частной практикой или фрилансом, у Вас есть свой бизнес, или Вы интересуетесь e-commerce — эта статья для Вас. Под катом Вы найдете обзор сервисов, отчет о тестировании, а также конкретные рекомендации по приему карт.
Читать дальше →

Python изнутри. Объекты. Голова

Reading time8 min
Views57K
1. Введение
2. Объекты. Голова
3. Объекты. Хвост
4. Структуры процесса

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

Как я и писал в предыдущем эпизоде (который, кстати, оказался успешным; спасибо всем, ваши просмотры и комментарии буквально заставляют меня двигаться дальше!) – сегодняшний пост посвящён реализации объектов в Python 3.x. Поначалу я думал, что это простая тема. Но даже когда я прочитал весь код, который нужно было прочитать перед тем, как написать пост, я с трудом могу сказать, что объектная система Питона… гхм, «простая» (и точно не могу сказать, что до конца разобрался в ней). Но я ещё больше убедился, что реализация объектов — хорошая тема для начала. В следующих постах мы увидим, насколько она важна. В то же время, я подозреваю, мало кто, даже среди ветеранов Питона, в полной мере в ней разбирается. Объекты слабо связаны со всем остальным Питоном (при написании поста я мало заглядывал в ./Python и больше изучал ./Objects и ./Include). Мне показалось проще рассматривать реализацию объектов так, будто она вообще не связана со всем остальным. Так, будто это универсальный API на языке C для создания объектных подсистем. Возможно, вам тоже будет проще мыслить таким образом: запомните, всё это всего лишь набор структур и функций для управления этими структурами.
Читать дальше →

Об одном способе защиты исходников Python-программы

Reading time9 min
Views100K

Как всё начиналось


Однажды мне пришлось участвовать в разработке одного небольшого проекта для научных расчётов, который разрабатывался на языке программирования Python. Изначально Python был выбран как удобный и гибкий язык для экспериментов, визуализации, быстрого прототипирования и разработки алгоритмов, но в дальнейшем стал основным языком разработки проекта. Надо заметить, что проект был хоть и не большим, но довольно насыщенным технически. Для обеспечения требуемой функциональности, в проекте широко применялись алгоритмы теории графов, математическая оптимизация, линейная алгебра и статистика. Также использовались декораторы, метаклассы и инструменты интроспекции. В процессе разработки пришлось использовать сторонние математические пакеты и библиотеки, например, такие как numpy и scipy, а также многие другие.

Со временем стало ясно, что переписывать проект на компилируемом языке слишком затратно по времени и ресурсам. Скорость работы и потребление памяти не являлись критичными показателями в данном случае и были вполне приемлемыми и достаточными. Поэтому было принято решение оставить всё как есть, и продолжить разработку и поддержку проекта на языке Python. К тому же, документация по большей части уже была написана с использованием Sphinx.

Проект являлся библиотекой, функции которой использовались в одном из модулей расширения в крупном программном комплексе. Программный комплекс был написан на C++, являлся коммерческим продуктом, имел защиту с аппаратным ключом и поставлялся клиентам без предоставления исходных кодов.

Здесь сразу обозначилась новая проблема: как защитить исходные коды нашей Python-библиотеки? Может быть, в ином случае никто бы не стал этим заниматься, я бы уж точно, но в библиотеке были реализованы некоторые ноу-хау, и руководители проекта не хотели, чтобы данные наработки попали к конкурентам. Так как я был одним из исполнителей, мне пришлось озаботиться данной проблемой. Далее я постараюсь рассказать об основной идее, что из этого вышло, и как нам удалось скрыть Python-исходники от лишних глаз.
Читать дальше →

Автомат Гаусса — реальное оружие для гика (и не только)

Reading time1 min
Views267K


На Хабре не раз и не два описывались разнообразные конструкции самодельных винтовок и пистолетов Гаусса. А как насчет автомата Гаусса? Причем автомат с достаточно высокой начальной скоростью вылета «пули». Обычно демонстрируются проекты с «пулями», которые еле долетают до цели, а тут серьезная убойная сила, пули протыкают даже крышку ноутбука.

Читать дальше →

Создание умного домофона с автоответчиком и Интернет-соединением

Reading time3 min
Views195K
Не так давно я чинил домофонную трубку и задумался — а не сделать ли мне небольшую модернизацию? Научить его уведомлять меня через Интернет о том, что кто-то приходил, или даже удалённо открывать дверь с мобильного телефона… А затем я решил — почему бы вообще не сделать автоответчик? На телефонах сейчас автоответчик уже мало кому нужен, а вот знать, кто же ко мне приходил, было бы весьма полезно, особенно при том, что я не привык брать трубку, если никого не жду. Воплотить идею в реальность оказалось не так уж сложно.
Читать дальше →

Как узнать, что ваш PHP сайт был взломан

Reading time11 min
Views135K
Сайт моего друга недавно был взломан, на нем была запущена старая версия IP.Board, в которой есть уязвимость локального внедрения кода (local file inclusion). Этот пост не будет посвящен IP.Board или другому php коду, он покажет, как найти потенциально вредоносный php код на ваших серверах. Наконец, покажу пример того, что злоумышленники могут загрузить на взломанный сайт.

Проверьте логи доступа


Что бы с чего-то начать, я бы хотел поделиться некоторыми записями из журнала доступа (access log) взломанного сайта моего друга.

IpreMOVED - - [01/Mar/2013:06:16:48 -0600] "POST /uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
IpreMOVED - - [01/Mar/2013:06:12:58 -0600] "POST /public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"

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

Два файла выше это загруженные взломщиком скрипты, как они туда попали, большой роли не играет, так как код на любых двух серверах, вероятно, будет различным. Тем не менее, в данном конкретном примере, уязвимость в устаревшей версии IP.Board была использована, и атакующие смогли добавить свои собственные скрипты в директории доступные для записи, такие как пользовательский каталог загрузки и каталог, в котором IP.Board хранит кэшированные изображения темы оформления. Это общий вектор атаки, много людей изменяют права на эти каталоги на 777 или дают им доступ на запись, подробнее об этом чуть позже.

Рассмотрим подробнее приведенные выше строки журнала, ничего не цепляет вас?

Обратите внимание, что в журнале доступа POST запросы, а не GET запросы.
Скорее всего, злоумышленники хотели сделать журнал доступа более неприметным, так как большинство журналов не сохраняют post данные.
Читать дальше →

Домашний 3D-принтер окупается за 1 год

Reading time2 min
Views217K

57% деталей для изготовления RepRap можно напечатать на таком же принтере

Многие не могут придумать, что конкретно они будут печатать на 3D-принтере в случае его покупки. Но уже после покупки у людей обычно такого вопроса не возникает, работа для принтера находится сама собой: это различные ручки, зажимы, игрушки, подставочки, корпусы, вазочки, колечки, ремешки, другие детали. Достаточно зайти на сайт MakeXYZ или Thingiverse, чтобы расширить кругозор.

По расчётам экономистов из Мичиганского технологического университета, домашний 3D-принтер обеспечивает возврат инвестиций от 40% до 200% и экономит домашнему хозяйству от $300 до $2000 в год.
Читать дальше →

Отказоустойчивый кластер Master-Slave на PostgreSQL

Reading time9 min
Views127K
Приветствую, хаброжители!
В этой статье я хочу поделиться опытом развертывания кластера Master-slave на СУБД PostgreSQL. Отказоустойчивость достигается с помощью возможностей pgpool-II (failover, online recovery).
pgpool — это прекрасное средство для масштабирования и распределения нагрузки между серверами и, думаю, немногие знают о возможностях автоматического создания failover на ведомом сервере при отказе ведущего и как добавить новые мощности в уже работающий кластер без отключения всего кластера.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity