Pull to refresh
0
0
Send message

Противоестественная диагностика

Reading time10 min
Views9.6K

Разбираться с падениями программы у конечных пользователей — дело важное, но довольно тяжкое. Доступа к машине клиента обычно нет; если есть доступ, то нет отладчика; когда есть отладчик, оказывается, что проблема не воспроизводится и т.п. Что делать, когда нет даже возможности собрать специальную версию приложения и установить её клиенту? Тогда добро пожаловать под кат!
Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments14

Model-View в QML. Часть первая: Представления на основе готовых компонентов

Reading time10 min
Views63K
В этой части моего цикла статей про Model-View в QML мы начнем рассматривать представления и начнем с тех, которые делаются на основе готовых компонентов.

Model-View в QML:
  1. Model-View в QML. Часть нулевая, вводная
  2. Model-View в QML. Часть первая: Представления на основе готовых компонентов
  3. Model-View в QML. Часть вторая: Кастомные представления
  4. Model-View в QML. Часть третья: Модели в QML и JavaScript
  5. Model-View в QML. Часть четвертая: C++-модели

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments10

PyQt4 — Диалоговые окна

Reading time6 min
Views26K
В PyQt4 есть два вида диалогов: предопределенные и пользовательские.

Предопределенные диалоги


QInputDialog

QInputDialog представляет простой диалог для получения единственного значения от пользователя. Значение может быть строкой, числом или пунктом из списка.
Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments4

Написание приложений, основаных на Qt, на языке Python

Reading time5 min
Views120K
Доброе время суток.
Недавно решил изучить ещё один язык программирования. Выбор пал на python. Написал несколько маленьких скриптов. Но прежде всего я хотел писать приложения с графическим интерфейсом. В интернете наткнулся на этот небольшой туториал, прочтение которого вылилось в предлагаемый Вашему вниманию перевод. Надеюсь, что кому-нибудь он будет полезен.


Это руководство нацелено на получение представления о том как писать маленькие приложения на python, использующие библотеку Qt.

Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments34

Интерфейс vs interface

Reading time7 min
Views30K

Одним из принципов объектно-ориентированного проектирования является программирование на уровне интерфейса, а не на уровне реализации. Видимо, из-за того что код в книгах и статьях по проектированию представлен преимущественно на Java, программисты на других языках, особенно с динамической типизацией, испытывают трудности с переносом знаний из этих книг и статей на свой рабочий язык программирования.


Часто сложность в понимании принципа "программируйте на уровне интерфейса" кроется в концентрации на инструменте, а не на смысле. Из-за наличия в Java ключевого слова interface, происходит искажение понимания принципа, и он превращается в "программируйте, используя interface". Так как в Python инструмент в виде ключевого слова interface отсутствует, некоторые питонисты пропускают этот принцип.


В книге Банды Четырех примеры приводятся на Smalltalk и C++. Оба этих языка не имеют ключевого слова interface, но это не мешает авторам применять принцип, используя имеющиеся в распоряжении конструкции языка:


У манипулирования объектами строго через интерфейс абстрактного класса есть два преимущества:

  • клиенту не нужно иметь информации о конкретных типах объектов, которыми он пользуется, при условии, что все они имеют ожидаемый клиентом интерфейс;
  • клиенту необязательно "знать" о классах, с помощью которых реализованы объекты. Клиенту известно только об абстрактном классе (или классах), определяющих интерфейс.


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

Но даже приведенные в цитате преимущества не являются единственными, если посмотреть на принцип под более широким углом.

Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments7

Реализуем тач логгер под Android с помощью CVE-2016–5195

Reading time16 min
Views8.6K

История о том, как уязвимость в ядре linux помогает мне собирать данные для диссертации


Пару лет назад я решил выяснить, можно ли идентифицировать человека по жестам, которые он вводит на экране смартфона. Некий «клавиатурный почерк», но только для сенсорного экрана. Чтобы это понять, нужно проанализировать сотни тысяч жестов от множества разных пользователей. Но… Как собрать эти данные на смартфоне?

Я расскажу о своём пути решения этой задачи. Он был долгим, тернистым, но чертовски увлекательным! Надеюсь, вам будет интересно проследить за ним и узнать для себя что-то новое о linux, android, их безопасности и их внутренностях. Я не гуру в устройстве linux, поэтому кому-то некоторые объяснения покажутся очевидными и излишне подробными, но повторюсь, это мой путь и я подробно описываю всё, что изучил в процессе. Надеюсь, это не оттолкнёт опытных линуксоидов и немного снизит порог вхождения для всех остальных. Итак. Как же реализовать тач логгер под android?
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments13

Linux все еще не торт

Reading time6 min
Views42K
Эта история началась около месяца назад, когда Кирилл Тхай добавил поддержку вложенных пространств имен в CRIU, после чего наша система CI приказала долго жить. В тот момент ничто не предвещало тех увлекательных приключений, в которые мы оказались вовлечены.

image
Читать дальше →
Total votes 101: ↑94 and ↓7+87
Comments44

Pygest #12. Релизы, статьи, интересные проекты из мира Python [20 июня 2017 — 03 июля 2017]

Reading time2 min
Views7.6K
image Всем привет! Это уже двенадцатый выпуск дайджеста на Хабрахабр о новостях из мира Python.

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

А теперь к делу!
Перейти к дайджесту
Total votes 10: ↑10 and ↓0+10
Comments1

Лекции Технотрека. Администрирование Linux

Reading time4 min
Views134K


Представляем вашему вниманию очередную порцию лекций Технотрека. В рамках курса будут рассмотрены основы системного администрирования интернет-сервисов, обеспечения их отказоустойчивости, производительности и безопасности, а также особенности устройства ОС Linux, наиболее широко применяемой в подобных проектах. В качестве примера будут использоваться дистрибутивы семейства RHEL 7 (CentOS 7), веб-сервер nginx, СУБД MySQL, системы резервного копирования bacula, системы мониторинга Zabbix, системы виртуализации oVirt, балансировщика нагрузки на базе ipvs+keepalived. Курс ведёт Сергей Клочков, системный администратор в компании Variti.

Total votes 61: ↑60 and ↓1+59
Comments9

Почему стоит полностью переходить на Ceylon или Kotlin (часть 2)

Reading time10 min
Views9.3K

Продолжаем рассказ о языке цейлон. В первой части статьи Сeylon выступал как гость на поле Kotlin. То есть брались сильные стороны и пытались их сравнить с Ceylon.


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


Поехали:

Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments29

Тонкая настройка Synaptics Touchpad

Reading time3 min
Views118K
Synaptics производит отличные тачпады: они отзывчивы, обладают мультитачем и, что самое главное, их можно долго и нудно легко и просто настраивать под свои ловкие пальчики.

Вот только одна незадачка: вся эта прелесть прекрасно работает в Windows 7, в то время как в Linux как всегда лишь унылые огрызки, и наполовину не использующие все свои возможности.

Бесстрашный Хабраюзер, готов ли ты бороться со вселенской несправедливостью? Тогда добро пожаловать под хабракат, тебя ждет море удовольствия, linux-way и миллионы счастливых кликов на выходе :)
Читать дальше →
Total votes 62: ↑46 and ↓16+30
Comments51

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

Reading time3 min
Views21K
image

Последний раз вы были на собеседовании больше года назад? Вы не совсем уверены в том, как себя поведете на собеседовании в компании, в которую ну уж очень хотите попасть? Вы испытываете непонятный мандраж в метро по пути на первую встречу с кадровиком и забываете спросить какая же все-таки у вас будет зарплата на руки после испытательного срока? Если хоть на один из этих вопросов вы ответили да, тогда думаю эта статья будет вам интересна. Я не будут учить вас, как вести себя на интервью, как держать руки, куда смотреть и как отвечать на вопросы. Я могу подсказать как обрести уверенность и избавиться от страха.
Читать дальше →
Total votes 33: ↑22 and ↓11+11
Comments49

Security Week 23: EternalBlue портировали на Win10, ЦРУ атакует с файлсерверов, маркетологи незаметно заразили весь мир

Reading time4 min
Views10K
Приключения EternalBlue продолжаются: теперь исследователи из RiskSense портировали его на Windows 10. На первый взгляд это деструктивное достижение, однако же, именно в этом состоит немалая часть работы исследователя-безопасника. Чтобы защититься от будущей угрозы, сначала надо эту угрозу создать и испытать, причем крайне желательно сделать это раньше «черных шляп».

Ранее RiskSense разработали EternalBlue-модуль для Metasploit, который отличается от оригинала тем, что его гораздо хуже детектят IDS. Из него выкинули имплант DoublePulsar который слишком хорошо изучен и не особо умеет скрываться на машине, демаскируя атаку. Вместо него исследователи разработали собственный шеллкод, который способен загрузить нужную нагрузку напрямую.

Исходный EternalBlue, как и его модуль для Metasploit, работает лишь на Windows 7 и Windows XP, а также на Windows Server 2003/2008 R2. В своем отчете компания подробно анализирует все цепочку багов, используемых эксплойтом, и из документа видно, что к подобной атаке уязвимы все системы на базе ядра NT – однако выручают защитные технологии, часть из которых EternalBlue обходить умеет, часть – не очень.
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments5

Объектное Реактивное Программирование

Reading time16 min
Views21K

Объектное Реактивное Программирование


Дмитрий Карловский из SAPRUN представляет… ммм...


Это — текстовая версия одноимённого выступления на FrontendConf'17. Вы можете читать её как статью, либо открыть в интерфейсе проведения презентаций, либо посмотреть видео.

Надоело.. Чем поможет ОРП?
… писать много, а делать мало? Пиши мало, делай много!
… часами дебажить простую логику? Реактивные правила обеспечат консистентность!
… асинхронщина? Синхронный код тоже может быть неблокирующим!
… что всё по умолчанию тупит? ОРП оптимизирует потоки данных автоматом!
… функциональные головоломки? Объекты со свойствами — проще некуда!
… что приложение падает целиком? Позволь упасть его части — само поднимется!
… жонглировать индикаторами ожидания? Индикаторы ожидания пусть сами появляются, где надо!
… двустороннее связывание? Двустороннее связывание нужно правильно готовить!
… пилить переиспользуемые компоненты? Пусть компоненты будут переиспользуемыми по умолчанию!
… вечно догонять? Вырывайся вперёд и лидируй!
Читать дальше →
Total votes 22: ↑15 and ↓7+8
Comments170

Как принять закон или обработка данных в распределённых системах понятным языком

Reading time23 min
Views7K
Если ваша работа не связана с компьютерными технологиями, вы, вероятно, не думали долго о том, как хранятся данные на компьютерах или в облаке. Я говорю не о физических механизмах работы жёстких дисков или чипов памяти, а о чём-то одновременно более сложном и более понятном, чем вы думаете.

Если у вас есть часть данных, которую многие люди хотят прочесть и сразу отредактировать, например, общий текстовый файл, банковский счёт или мир в многопользовательской игре, как достичь общего согласия с тем, что находится в документе, и убедиться, что никто не перезаписывает чужую работу? Это проблема консенсуса в распределённых системах, и для того, чтобы разобраться с этим, мне придётся рассказать об овцах, диктаторах и вымышленных островах древней Греции.



«Каких ещё островах?», — спросите вы?
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments11

Распределенные структуры данных [часть 1, обзорная]

Reading time5 min
Views14K

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


Современные же приложения стремятся использовать все имеющиеся ресурсы, в частности, все доступные CPU.


К сожалению, использовать стандартные структуры данных при многопоточной обработке не представляется возможным, поэтому в Java 5 появились потокобезопасные структуры данных,
т.е. функционирующие исправно, при использовании из нескольких потоков одновременно, и расположились они в пакете java.util.concurrent.


Про Vector...

На самом деле, потокобезопасные, но неэффективные, структуры данных, как, например, Vector и Hashtable, появились еще в Java 1.0.
В настоящий момент, они не рекомендуются к использованию.


Однако, не взирая на всю технологическую мощь, заложенную в пакет java.util.concurrent, обработка информации потокобезопасными коллекциями возможна лишь в рамках одного компьютера, а это порождает проблему масштабируемости.


А что если нужно, в реальном времени, обрабатывать информацию о 100 миллионах клиентов,
когда датасет занимает 100Тб, а каждую секунду нужно совершить 100+ тысяч операций?
Вряд ли это возможно, даже на самом крутом современном железе, а если и возможно — только представьте себе его стоимость!


Намного дешевле добиться такой же вычислительной мощности объединив множество обычных компьютеров в кластер.



Остается лишь вопрос межкомпьютерного взаимодействия привычными средствами, схожими по API с потокобезопасными коллекциями из пакета java.util.concurrent и дающими те же гарантии, но не на одном компьютере, а на всем кластере.


Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments13

Распределенные структуры данных (часть 2, как это сделано)

Reading time8 min
Views12K

В предыдущей статье — часть 1, обзорная — я рассказал о том, зачем нужны распределенные структуры данных (далее — РСД) и разобрал несколько вариантов, предлагаемых распределенным кешем Apache Ignite.


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


Итак:



Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments1

Открытый код и интеллектуальная собственность

Reading time6 min
Views11K
Автор: Илья Стечкин

Мы обратили внимание на то, что едва ли не самой популярной публикацией в нашем блоге стал материал, посвященный патентным войнам (4800 просмотров), а вот подробный рассказ о том, как писать плагины для Fuel, к нашему удивлению, вызвал существенно меньший интерес (1000 просмотров первая часть и чуть больше 2000 — вторая).
Читать дальше →
Total votes 11: ↑8 and ↓3+5
Comments0

Как стать веб-разработчиком в 2017 году — план действий

Reading time2 min
Views202K
Светлана Шаповалова, редактор «Нетологии» адаптировала заметку Quincy Larson, в которой он представил три возможных пути становления веб-разработчика: для фронтенда, бекэнда и DevOps.


Читать дальше →
Total votes 71: ↑56 and ↓15+41
Comments117

Метаклассы в Python

Reading time10 min
Views188K
Как сказал один из пользователей StackOverflow, «using SO is like doing lookups with a hashtable instead of a linked list». Мы снова обращаемся к этому замечательному ресурсу, на котором попадаются чрезвычайно подробные и понятные ответы на самые различные вопросы.

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

Читать дальше →
Total votes 91: ↑88 and ↓3+85
Comments17
1

Information

Rating
Does not participate
Registered
Activity