Как стать автором
Обновить
2
0
Andrey Kuznetsov @brainsmith

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

Отправить сообщение

Разделение приложения AngularJS на изолированные модули

Время на прочтение3 мин
Количество просмотров14K
При разработке достаточно большого приложения неизбежно возникает момент, когда приложение наконец-то становится достаточно большим чтобы тормозить. Для AngularJS существует множество методик позволяющих добиться нужной производительности: bindonce, фильтрация списков, использование $digest вместо $apply, ng-if вместо ng-show (или наоборот), и другие. Но все они позволяют делать только локальные улучшения, не помогая в глобальном плане: избавиться полностью от вызовов $rootScope.$digest не получается, а проверка состояния всего приложения может идти очень долго.

В этой статье я хочу предложить архитектурное решение: разбиение приложения на несколько несвязанных с точки зрения фреймворка частей и самостоятельная реализация связей между ними.
За подробностями прошу под кат

Быстрый отладчик от Mozilla с записью и воспроизведением

Время на прочтение2 мин
Количество просмотров10K
Mozilla выпустила инструмент, который наверняка многим облегчит жизнь: это фреймворк RR под Linux для записи и последующего воспроизведения хода выполнения программы. Воспроизведение происходит абсолютно детерминированно, то есть с теми же регистрами и адресами памяти — и неизменно с тем же сбоем (если он был). Другими словами, можно бесконечно гонять тесты, а как только появится баг — не спеша его изучить в офлайне, прокрутив запись сколько угодно раз. Записываются все деревья процессов и потоков.

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

Настройка IPTV в TomatoUSB + udpxy

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

На Хабре уже рассматривался вопрос о настройке и просмотре IPTV через роутер на различных прошивках — openWRT, DDWRT и прочих, но никто не описывал подробно как настроить IPTV на прошивке Tomato за счёт перенаправления UDP трафика провайдера в TCP трафик клиента с помощью приложения udpxy. В этой статье я подробно опишу процесс установки и запуска udpxy на прошивке tomato v1.28, а так же расскажу как сделать мост WAN to LAN для отдельной IPTV приставки, ибо сам я потратил очень много времени чтобы разобраться во всём этом, и будь у меня под рукой подобная статья я бы справился намного быстрее.
Читать дальше →

Радиоуправляемый выключатель своими руками. Часть 4 — Центр управления

Время на прочтение7 мин
Количество просмотров55K
Собственно, выключатель спроектирован, произведен, протестирован, запрограммирован, установлен и вполне себе самостоятельно работает.

Теперь хотелось бы воспользоваться им «на полную катушку».

Пока не хватает следующих возможностей по удаленному управлению:
  • Изменять временные характеристики работы выключателя.
  • Узнать текущее его состояние.
  • Управлять его состоянием.

В этой статье исправим это положение вещей.

Приемы неявного вызова php кода, применяемые во вредоносных скриптах

Время на прочтение2 мин
Количество просмотров34K
В процессе лечения сайтов обнаруживается множество разновидностей хакерских шеллов и бэкдоров. Скрипты отличаются функционалом и способом обфускации исходного кода, но у всех есть общая черта — это неявное объявление переменных и функций, а также косвенный вызов функций.

Данный подход популярен среди разработчиков вредоносного кода, так как с одной стороны значительно усложняет анализ исходного кода, а с другой позволяет хранить код в текстовых данных. Например, часть вредоносного кода может загружаться со стороннего сайта, из базы данных, мета-данных jpeg/png/gif или передаваться в запросе к скрипту. Кроме того, часть кода, представленная в виде обычной текстовой строки, может быть легко зашифрована.

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

Несмотря на все многообразие вредоносного кода, существует не так много вариантов объявления и косвенного вызова функций. Ниже представлены примеры различных техник скрытого вызова кода. Для простоты и наглядности пусть «вредоносный код» представлен вызовом

echo "Test"


который выводит слово «Test» на странице. Естественно, в реальных шеллах и бэкдорах имена переменных и функций, а также исполняемый код не хранятся в открытом виде и в большинстве случаев обфусцированы.

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

Хэл Финни: Биткоин и я

Время на прочтение4 мин
Количество просмотров34K
Я тут подумал, что стоит написать о последних четырех годах, полных событий как для меня, так и для Биткоина.

Для тех, кто меня не знает, я — Хэл Финни. Я начал свой путь в криптографии с работы над ранней версии PGP, бок о бок с Филом Циммерманом. Когда Фил решил основать PGP Corporation, я был среди первых нанятых. Я бы и работал над PGP до самой пенсии. В то же время я связался с криптопанками (Cypherpunks). Я держал первый анонимный ремейлер с шифрованием, среди прочего.
Читать дальше →

Определение локальных IP-адресов через WebRTC

Время на прочтение1 мин
Количество просмотров47K
Через WebRTC можно получить список всех локальных (находящихся за NAT) интерфейсов в системе.

Пример кода на JavaScript jsfiddle.net/GZurr

Работает только в браузерах поддерживающих WebRTC, на текущий момент это Firefox и Chrome.

Это можно использовать для получения более точного фингерпринта браузера или, например, разоблачения персонажей, сидящих за VPN, чтобы ВЫЧИСЛИТЬ ПО АЙПИ И НАБИТЬ Е**ЛЬНИК

Для удобства использования я изготовил js-сниффер, который можно вставить на страницу и удобно просматривать результат его работы: zhovner.com/jsdetector

Достаточно вставить на страницу код:

<script src="//zhovner.com/jsdetector.js?name=test"></script>


Где test нужно заменить на слово, по которому будет доступен результат работы сниффера: zhovner.com/jsdetector/test

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

Polyfill для обхода проблемы с браузерным автозаполнением форм

Время на прочтение1 мин
Количество просмотров9K
Год назад в репозитории AngularJS был создан issue #1460 «Form model doesn't update on autocomplete».

Браузер, при автозаполнении формы ранее сохраненными данными (например, вводим email — браузер заполняет пароль автоматически) никак не извещает javascript о новых данных в поле.
Читать дальше →

Бан по континентам

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


В одно прекрасное утро я просматривал логи и задал себе ряд вопросов:

  1. А жду ли я письма из Юго-Восточной Азии? (когда смотрел логи почты)
  2. И с какого перепугу ко мне стучатся ssh брутфорсеры из Штатов?
  3. Мне надо терпеть сетевые сканеры из Австралии?
  4. Кто мне звонит из Африки? (когда разглядывал логи asterisk)
  5. С какой стати к моему POP-серверу обращаются из Латинской Америки?


Почему бы не забанить по континентам? Оставив только нужный континент(ы)?


Под катом bash скрипт, который этим занимается

Оптимальная защита от DDoS с помощью netstat и iptables

Время на прочтение3 мин
Количество просмотров78K
Доброго времени суток!

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

Перекопав полчища статей и опробовав множество вариантов, так и не нашел, что помогло бы с защитой. Взяв за основу статьи Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables и (D)DoS Deflate решил написать свой скрипт. Ну вернее не решил, а методом тыка и исправлений он получился сам.

Должен заметить, что статья от Алексея Кузьмина не идеальна, т.к. в логах nginx`a не достаточно копаться, да и обработка логов может потребовать много ресурсов. А именно в моем случае создавались логи более 50 Гиг, плюс запросы шли не «GET / HTTP/1.1», а «GET / HTTP/1.0», плюс, как оказалось, мой сервер сам от себя получал редиректы (127.0.0.1), которые не отображались в логах, которые отображались в запросе
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

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

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

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

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

Сегодня мы снова возьмём за основу stupid sort и внесём в неё другое маленькое, но существенное изменение. В результате получим совершенного другой эволюционный ряд сортировочных алгоритмов.

image: эволюция

Другое ответвление глупой сортировки

Как не потерять данные в PostgreSQL

Время на прочтение5 мин
Количество просмотров63K
PostgreSQL предлагает несколько вариантов резервирования данных. Обо всех них уже рассказано не раз, в том числе и на хабре. Но в основном рассказывается про технические особенности методов. Я же хочу постараться рассказать про общую стратегию резервного копирования, объединив все методы в эффективную систему, которая поможет вам сохранить все данные и уменьшить число погибших нервных клеток в критических ситуациях.
Вводные данные: сервер PostgreSQL 9.2, База размером >100Gb.
Читать дальше →

Применение Agile в рамках договора с фиксированными фазами

Время на прочтение4 мин
Количество просмотров21K
Вы руководитель нового проекта заказной разработки. Вам принесли договор, неизвестно кем и как заключенный, дали контакты заказчика и дальше вы предоставлены сами себе. Изучив функциональный объем проекта, вы понимаете, что в данном случае было бы правильно применить Agile. Но в договоре уже прописаны четкие фазы в соответствии с каскадной моделью разработки (waterfall) со сроками, результатами и фиксированной ценой по каждому этапу. Что делать в этой ситуации?


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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность