Как стать автором
Обновить

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

Время на прочтение3 мин
Количество просмотров118K
Synaptics производит отличные тачпады: они отзывчивы, обладают мультитачем и, что самое главное, их можно долго и нудно легко и просто настраивать под свои ловкие пальчики.

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

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

Загрузка скриптов в WebKit

Время на прочтение2 мин
Количество просмотров4.5K
Ночная версия WebKit отныне поддерживает свойства async и defer тэга script, появившиеся в HTML5. Таким образом скорость загрузки страницы возрастает, так как одновременно происходит и загрузка скриптов и рендеринг страницы.
Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии9

Десятимиллионный скрипт резервного копирования

Время на прочтение10 мин
Количество просмотров47K
image
Это статья-мануал по скрипту резервного копирования, написанному мной. Скрипт написан на python для Linux. Кому интересно прошу под хабракат.
Читать дальше →
Всего голосов 79: ↑59 и ↓20+39
Комментарии21

Простой Jquery скрипт для редактирования HTML5 текста и сохранения с помощью ajax

Время на прочтение4 мин
Количество просмотров24K
Очень часто в процессе редактирования контента сайта необходимо (а также очень удобно) видеть готовый результат на странице браузера. Используя свойство тегов HTML5 — contenteditable, Jquery, Ajax и PHP создадим простой редактор текста HTML5 сайта.

Наш редактор будет обладать следующими свойствами:
— при клике мышкой на тексте предназначенном для редактирования этот текст сразу можно редактировать;
— при нажатии клавиши Escape после редактирования текста, все изменения в текущий текст отменяются;
— при потере фокуса, либо клике для редактирования другого текста, измененный текст отправляется на сервер, выводится сообщение о статусе отправки и ответа сервера.
Читать дальше →
Всего голосов 29: ↑12 и ↓17-5
Комментарии6

Mikrotik: скрипт переключения на резервный канал интернета

Время на прочтение10 мин
Количество просмотров58K
Хочу поделиться своим скриптом для перехода на резервный интернет, когда основной пропадает, и возврату на основной, как только он вновь заработает. Сразу скажу, каналы доступны по-одному, никакого load-balance тут не будет. Оба канала — PPP соединения (в моем случае один проводной, второй — 3G свисток). Скрипт сделан специально как наиболее гибкое средство мониторинга, так как другие варианты, в частности check-gateway, не совсем корректны для меня.
Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии6

Можно ли верить коду в редакторе? bi-directional текст

Время на прочтение2 мин
Количество просмотров22K
def maps():
	print "maps maps maps"

def spam():
	print "Erasing everything..."
	print "done."

Вы знаете, что если очень долго смотреть на следующую строку, то там останутся только три слова «spam»?

s = "spam‮" ,spam ,"‬spam"
s[1]()

Действительно, первая строка очень необычная. В целом, в результате этого кода будет выполнена зловредная функция spam.

Посмотреть на ideone. (Для тех кто не знает: там внизу есть вывод выполнившейся программы)
Читать дальше →
Всего голосов 56: ↑48 и ↓8+40
Комментарии32

Mikrotik: настройка IPsec на автоматическое обновление адреса VPN сервера

Время на прочтение3 мин
Количество просмотров38K
При настройке IPSec рано или поздно все сталкиваются с тем, что можно задать только IP-адреса удаленного VPN-сервера. Указание DNS-записей в настройках IPsec Policies и IPsec Peers не поддерживается.

Это может вызывать определенные неудобства в случаях, если на VPN-сервере:
  • сменили одного провайдера на другого;
  • решили изменить используемый статический IP-адрес;
  • используется динамический (серый) IP-адрес.


Взяв даже простейшую схему, становится видно, что нам придется менять настройки трех роутеров-клиентов VPN-сервера:



И в каждом из трех роутеров сменить значения:
  • IpSec/Policy/dst-address
  • IpSec/Policy/sa-dst-address
  • IpSec/Peer/address

Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии27

Мини-обзор библиотек для Reflection в C++

Время на прочтение5 мин
Количество просмотров25K
В силу скромной информации на эту тему, в данной статье проведу небольшой обзор и сравнение найденных библиотек для Reflection в C++. В первую очередь эта информация будет интереса разработчикам игр.

Благодаря reflection можно:
— Легко создавать редакторы, в том числе интерфейсов, так как есть удобный доступ к мета-информации о всех свойствах ваших объектов;
— Добавить binding для многих скриптовых языков сразу (Lua, Python, JavaScript и т.д.);
— Использовать мета-информацию для автоматической сериализаци;
— Использовать как фабрику объектов, создавая нужные экземпляры, имея лишь строку с именем тип;
— Использовать в качестве более легковесной замены dynamic_cast;
— И прочее прочее прочее, в зависимости от фантазии и потребностей.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии17

Двойной обман. Как ФБР использовало украинского хакера Максима Попова

Время на прочтение20 мин
Количество просмотров112K


Холодным днём 18 января 2001 года Максим Игоревич Попов, 20-летний украинский парень, нервно толкнул двери американского посольства в Лондоне. Его можно было принять за участника программы по студенческому обмену, который пришёл получать визу, но самом деле Максим был хакером, участником восточноевропейской хакерской группы, которая атаковала американские коммерческие компании, зарабатывая на вымогательстве и фроде. Прокатившаяся волна таких атак выглядела словно предвестник нового этапа Холодной войны между США и организованными хакерскими группировками в странах бывшего советского блока. Максим Попов с детским лицом, в очках и с короткой стрижкой, собирался стать первым перебежчиком в этой войне.
Читать дальше →
Всего голосов 147: ↑132 и ↓15+117
Комментарии73

Удалённое включение скриптов Mikrotik из Telegram

Время на прочтение6 мин
Количество просмотров59K
На данную реализацию меня подтолкнул Александр Корюкин GeXoGeN своей публикацией "Удалённое включение компьютера бесплатно, без SMS и без облаков, с помощью Mikrotik".

И комментарий в одной из групп ВК Кирилла Казакова:
Да уж, совсем не секьюрно. Я бы лучше написал телеграм бота, который принимает только с моего аккаунта команды на включение.

Я решил написать такого бота.
Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии35

Создайте свой сервер AWS S3 с открытым кодом

Время на прочтение4 мин
Количество просмотров60K


Amazon S3 (Simple Storage Service, сервис простого хранилища) — очень мощный онлайн сервис файлового хранилища, предоставляемого Amazon Web Services. Думайте о нем, как об удаленном диске, на котором вы можете хранить файлы в директориях, получать и удалять их. Компании, такие как DropBox, Netflix, Pinterest, Slideshare, Tumblr и многие другие, полагаются на него.

Хоть сервис и отличный, его код не открыт, поэтому вы должны доверять Amazon свои данные, и хоть они предоставляют доступ к бесплатному инстансу на год, вы все равно должны ввести информацию о кредитной карте для создания аккаунта. Т.к. S3 должен знать каждый инженер-программист, я хочу, чтобы мои студенты приобрели опыт работы с ним и использовали его в своих веб-приложениях, и еще я не хочу, чтобы они за это платили. Некоторые студенты также работают во время поездок, что означает медленное Интернет-соединение и дорогой трафик, либо вообще полное отсутствие Интернета.
Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии12

Написание и запуск скрипта для симуляции Verilog-кода в ModelSim

Время на прочтение3 мин
Количество просмотров25K

image

Всем привет! Надеюсь, все хорошо провели праздники и готовы с новыми силами покорять высоты FPGA разработки.


Сегодня я хочу написать небольшой гайд по запуску тестбенчей на Verilog/SystemVerilog в ModelSim без использования GUI.


План будет такой:


  1. Добавление пути к ModelSim в PATH.
  2. Написание скрипта с объяснением команд.
  3. Запуск ModelSim с исполнением написанного скрипта.

Поехали!

Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии14

Bitcoin in a nutshell — Transaction

Время на прочтение9 мин
Количество просмотров76K

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


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


meme

Читать дальше →
Всего голосов 39: ↑33 и ↓6+27
Комментарии10

Не доверяйте SUDO, она может вас подвести

Время на прочтение7 мин
Количество просмотров46K

Всем доброго времени суток, в этой статье постараюсь описать некоторые способы обхода ограничений на исполнение команд в ОС Linux, советы по использованию которых можно часто встретить на различных форумах. Демонстрация будет проведена на примере задания Restricted shells с сайта Root-Me. Итак, начнём.
Читать дальше →
Всего голосов 99: ↑94 и ↓5+89
Комментарии8

Концепция MAST в Биткоине

Время на прочтение6 мин
Количество просмотров4.2K
В рамках данной статьи мы поговорим о концепции MAST и ее применении в протоколе Биткоин. Мы рассмотрим свойства, которых позволяет добиться MAST, а также пользу от его применения. Статья будет интересна читателям, которые увлекаются протоколом Биткоина и другими инновационными платежными системами. Этой теме также посвящена отдельная лекция в рамках онлайн-курса по Blockchain “MAST в Биткоине”.

Концепция MAST подразумевает использование деревьев Меркла и абстрактных синтаксических деревьев, чтобы задавать условия траты монет на выходах транзакций. Рассмотрим по порядку, как это устроено.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии1

Как работает мультиподпись в Биткоине

Время на прочтение17 мин
Количество просмотров12K
В рамках этой статьи мы рассмотрим, как работает мультиподпись в протоколе Биткоин. Обратите внимание, что в других криптовалютах и цифровых валютах эти механизмы могут быть реализованы по-другому, — это зависит от модели транзакций. Мы дадим определение мультиподписи, схематично разберем ее структуру на примере транзакции, рассмотрим варианты ее применения и меры предосторожности при работе с ней. Постараемся доступно раскрыть тему предлагаемых улучшений, P2SH, а также на схеме разберем механизм отправки платежа на адрес с мультиподписью. Полагаем, что представленный материал будет интересным читателям, чья деятельность или сфера интересов касается цифровых валют.
Читать дальше →
Всего голосов 23: ↑16 и ↓7+9
Комментарии0

Как сделать простым и понятным запуск Java-процессов в Linux / Docker

Время на прочтение8 мин
Количество просмотров14K

По профилю работы DevOps-инженером я часто занимаюсь автоматизацией установки и настройки разнообразных IT-систем в различных средах: от контейнеров до облака. Приходилось работать со многими системами, основанными на Java-стеке: от небольших (вроде Tomcat), до масштабных (Hadoop, Cassandra и др.).


При этом почти каждая такая система, даже самая простая, почему-то имела сложную неповторимую систему запуска. Как минимум, это были многострочные shell-скрипты, как в Tomcat, а то и целые фреймворки, как в Hadoop. Мой нынешний "пациент" из этой серии, вдохновивший меня на написание этой статьи — хранилище артефактов Nexus OSS 3, скрипт запуска которого занимает ~400 строк кода.


Непрозрачность, избыточность, запутанность startup-скриптов создает проблемы даже при ручной установке одного компонента на локальной системе. А теперь представьте, что набор таких компонентов и сервисов нужно запаковать в Docker-контейнер, попутно написав еще один слой абстракции для мало-мальски адекватного оркестрирования, развернуть в Kubernetes-кластере и реализовать этот процесс в виде CI/CD-пайплайна...


Короче говоря, давайте на примере упомянутого Nexus 3 разберемся, как вернуться из лабиринта shell-скриптов к чему-то более похожему на java -jar <program.jar>, учитывая наличие удобных современных DevOps-инструментов.

Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии13

Подробно об обновлении Segregated Witness и последствиях его принятия в Bitcoin

Время на прочтение15 мин
Количество просмотров6K
В данной статье мы постарались детально рассмотреть изменения протокола Bitcoin, которые произошли в результате softfork-обновления Segregated Witness. Мы затронули вопросы, связанные с transaction malleability, сохранением обратной совместимости, увеличением пропускной способности, новыми форматами сериализации транзакций, новыми вариантами скриптов, форматом адресов Bech32 и его преимуществами, понятиями веса, размера и виртуального размера. Более того, ниже приведена самая важная статистика по адаптации обновления и представлены ответы на часто задаваемые вопросы по теме данного обновления.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии1

Python-установщик Android-сборок из TeamCity своими руками

Время на прочтение4 мин
Количество просмотров4.7K


Аудитория


QA-инженеры, тестировщики мобильных приложений, автоматизаторы.


Проблема


Во время тестирования приложений под Android (не только, но далее речь пойдет только про данную платформу), приходится устанавливать множество сборок тестируемого продукта / продуктов. Этот процесс отнимает время и силы, которые эффективнее потратить на поиск багов.


В настоящей статье мы рассмотрим существующее решение, напишем свое на Python и сравним их.

Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии0

Автоматизация импорта данных в Google BigQuery с помощью Google Cloud Functions

Время на прочтение4 мин
Количество просмотров8.2K
Мы постоянно работаем с Google BigQuery – импортируем данные о пользователях, их заказах и расходах на рекламу из разных источников, чтобы иметь возможность объединять их между собой. Что нам это дает? Например, если у вас интернет-магазин и клиент делает заказ по телефону, а потом авторизовывается на сайте, то с помощью Google BigQuery можно связать все его действия задним числом. Можно отслеживать весь путь клиента по маркетинговой воронке – от первого попадания на сайт до покупки в brick and mortar магазине, и оценивать рекламные кампании с учетом таких офлайн-продаж.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии0