Pull to refresh
0
0
alexol @alexol

User

Send message

Почему возникают теории заговора и как с ними бороться

Reading time8 min
Views94K
В наш жидомасонский век заговоров и конспирологических теорий человеку бывает трудно понять что же на самом деле вокруг него происходит. И дело здесь не столько в ТВ, советских газетах и американских интернетах. Собака зарыта в природной тяге человека всё объяснять и классифицировать — тяга, которая так же сильна, как тяга поесть, или поспать. Понять, что происходит сейчас — значит предсказать, что будет происходить потом, — что, в свою очередь, позволит повысить вероятность выживаемости.

Паттерны, как основа самообучения


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

Принцип действия этой системы самообучения довольно тривиален: все, что случается больше 1 раза — является кандидатом на то, чтобы стать паттерном. Все последующие паттерны, как правило, основываются на базе уже имеющихся паттернов. Так, начинающий горнолыжник будет обучаться езде на лыжах с помощью уже имеющейся у него информации о координации тела в пространстве, которую он мог получить либо научившись до этого кататься на велосипеде, либо же, например, научившись до этого кататься на коньках. Если же не было ни велосипеда, ни коньков, и вообще ничего, то обучение будет проходить на основе имеющейся у человека добытой опытным путем информации о прогулках в парке, или беге по кругу стадиона во время уроков физкультуры. Очевидно, что в таком случае обучение будет проходить значительно медленнее, чем если бы у человека уже был опыт занятий, максимально приближенных к спускам на горных лыжах. Конечно, бывают исключения, когда человек, например, заучил неправильный удар, который он отрабатывал дома годами, а потом попал к тренеру, который хватается за голову и говорит «лучше б ты пришел совсем без навыков (неправильных паттернов), чтоб я с нуля из тебя вылепил бойца». Здесь важно понимать, что такого рода дефективный паттерн, или антипаттерн будет даже мешать скорейшему обучению человека. В данном конкретном случае, модель «чем больше паттернов, тем лучше» — не работает.
Но в целом, если у человека есть толика сознательности и он соблюдает диету на правильные паттерны, то количество этих освоенных паттернов в его голове неуклонно будет повышать скорость обучения новым паттернам — человек будет схватывать на лету.
Читать дальше →
Total votes 111: ↑64 and ↓47+17
Comments543

Постраничная верстка rel=«next|prev»

Reading time3 min
Views29K
Наряду с использование атрибута rel=«canonical» для указания поисковому боту на дублирование контента, теперь возможно использовать для HTML ссылок значение rel=“next” и rel=“prev” для обозначения положения текущей страницы в отношении соседних в рамках навигационного блока. В рамках веба встречаются различные варианты использования постраничной навигации — статья, разделенная на несколько страниц, либо категория товаров распределенных по нескольким страницам, либо ветка форума, разделенная на последовательность URL-ов. Теперь, включив rel=“next” и rel=“prev” в верстку страниц, мы можем указать Google:
  • Создать консолидированный индекс страниц, чтобы ссылки не рассеивались между отдельными страницами page-1.html, page-2.html, и так далее
  • При поиске направить пользователя на наиболее релевантную страницу среди всех остальных, например в начало статьи, разбитой на несколько страниц
Подробности и нюансы использования
Total votes 80: ↑77 and ↓3+74
Comments25

Как получить и измерить высокоскоростное соединение по TCP

Reading time7 min
Views60K
Надежная передача данных в Интернете осуществляется на базе протокола TCP (Transmission Control Protocol), спецификация к которому была опубликована почти 30 лет назад. Алгоритм TCP (RFC793), позволяет подключенному устройству адаптироваться для работы в сети на скоростях в пределах десятков мегабит в секунду и задержки до 100 секунд. С бурным развитием новых технологий передачи данных, уже через 10 лет после внедрения стало ясно что производительность протокола не будет хватать для более широких каналов.
Читать дальше →
Total votes 106: ↑105 and ↓1+104
Comments41

Ускорение загрузки Windows for fun and profit

Reading time4 min
Views804K
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста
Total votes 533: ↑517 and ↓16+501
Comments365

Orange San Francisco — Совсем не бюджетный андроидфон за £99

Reading time5 min
Views43K
image     Не так давно меня попросили подобрать новый телефон, так как я имею кое-какой опыт общения с платформой Android и телефоны на этой платформе доступны в широком ценовом диапазоне, взгляд был смещен именно на так называемые андроидфоны.

    Изучив российский розничный рынок не дорогих смартфонов на базе Android'а я начал уже присматриваться к LG Optimus One, но по счастливой случайности бродя по интернетам наткнулся на героя обзора — Orange San Francisco, ценой в Англии всего в £99 (около 4500 наших рублей) и по техническим характеристикам превосходящий чуть-ли не в два раза все предоставленные на нашем рынке смартфоны стоимостью до 10 000 рублей.

Именно о нем и пойдет речь в сегодняшнем обзоре, добро пожаловать под хабракат.
Читать дальше →
Total votes 149: ↑141 and ↓8+133
Comments398

Рендеринг WEB-страницы: что об этом должен знать front-end разработчик

Reading time6 min
Views228K
Приветствую вас, уважаемые хабравчане! Сегодня я бы хотел осветить вопрос рендеринга в веб-разработке. Конечно, на эту тему уже написано много статей, но, как мне показалась, вся информация довольно разрознена и отрывочна. По крайней мере, чтобы собрать всю картину в своей голове и осмыслить её, мне пришлось проанализировать немало информации (в основном — англоязычной). Именно поэтому я решил формализовать свои знания в статью, и поделиться результатом с сообществом Хабра. Думаю, информация будет полезна как начинающим веб-разработчикам, так и более опытным, чтобы освежить и структурировать свои знания.

Данное направление можно и нужно оптимизировать на этапе вёрстки/frontend-разработки, поскольку, очевидно, что разметка, стили и скрипты принимают в рендеринге непосредственное участие. Для этого соответствующие специалисты должны знать некоторые тонкости.
Читать дальше →
Total votes 121: ↑110 and ↓11+99
Comments42

Умная обрезка картинок с использованием точки фокуса

Reading time3 min
Views32K
Недавно передо мной встала задача обрезать около сотни огромных картинок из фотобанка под несколько десятков разных размеров. Эти готовые картинки потом будут использоваться клиентами CMS для оформления своих сайтов. Прикинув сколько времени займет этот процесс в Фотошопе, я пригорюнился — встретить следующий Новый год за обрезкой картинок не входит в мои планы.
Читать дальше →
Total votes 59: ↑49 and ↓10+39
Comments32

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

Reading time1 min
Views47K
Через 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

Читать дальше →
Total votes 73: ↑68 and ↓5+63
Comments46

Dremel. Как Google считает в real-time?

Reading time4 min
Views16K
Dremelмасштабируемая система обработки запросов в режиме близком к режиму реального времени (near-real-time), предназначенная для анализа неизменяемых данных [4].

Авторы research paper [4] (среди которых, судя по всему, и наши соотечественники — Сергей Мельник и Андрей Губарев), в котором описываются базовые принципы и архитектура Dremel, заявляют, что система в силах:
  • выполнять агрегирующие запросы над боле чем над триллионом строк за секунды;
  • масштабируется на тысячи CPU;
  • предназначена для работы с петабайтами данных;
  • имеет тысячи пользователей внутри Google (дословно «at Google» [4]).

UPD1: ниже картинка-дежавю для внимательных читателей.


Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments9

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

Reading time11 min
Views134K
Сайт моего друга недавно был взломан, на нем была запущена старая версия 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 данные.
Читать дальше →
Total votes 109: ↑82 and ↓27+55
Comments122

Кросспостинг из Twitter в ВКонтакте с помощью роутера

Reading time9 min
Views21K
Здравствуйте, меня зовут Евгений, и я алкоголик люблю социальные сети. В силу отсутствия каких-либо намеков на писательский талант я предпочитаю Twitter — его ограничение на 140 символов избавляет от необходимости придумывать что-то длинное. К тому же, только для твиттера есть нормальный java-клиент, которым я раньше пользовался на мобильном телефоне.
С другой стороны, бóльшая часть моя знакомых использует ВКонтакте, да и мне, честно говоря, нравится слушать там музыку и читать новости. Очевидно, что писать самому в две разных соцсети неудобно, нужно это автоматизировать — использовать кросспостинг (перенос постов).
Далее небольшое описание моего не совсем обычного способа кросспостинга.
Читать дальше →
Total votes 23: ↑16 and ↓7+9
Comments14

Оперативная реакция на DDoS-атаки

Reading time4 min
Views51K
Один из ресурсов, за которым я присматриваю, вдруг стал неожиданно популярным как у хороших пользователей, так и у плохих. Мощное, в общем-то, железо перестало справляться с нагрузкой. Софт на сервере самый обычный — Linux,Nginx,PHP-FPM(+APC),MySQL, версии — самые последние. На сайтах крутится Drupal и phpBB. Оптимизация на уровне софта (memcached, индексы в базе, где их не хватало) чуть помогла, но кардинально проблему не решила. А проблема — большое количество запросов, к статике, динамике и особенно базе. Поставил следующие лимиты в Nginx:

на соединения
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn perip 100;

и скорость запросов на динамику (fastcgi_pass на php-fpm)
limit_req_zone $binary_remote_addr zone=dynamic:10m rate=2r/s;
limit_req zone=dynamic burst=10 nodelay;

Сильно полегчало, по логам видно, что в первую зону никто не попадает, зато вторая отрабатывает по полной.

Но плохиши продолжали долбить, и захотелось их отбрасывать раньше — на уровне фаервола, и надолго.

Сначала сам парсил логи, и особо настырных добавлял через iptables в баню. Потом парсил уже по крону каждые 5 минут. Пробовал fail2ban. Когда понял, что плохишей стало очень много, перенёс их в ipset ip hash.

Почти всё хорошо стало, но есть неприятные моменты:
— парсинг/сортировка логов тоже приличное (процессорное) время отнимает
— сервер тупит, если началась новая волна между соседними разборками (логов)

Нужно было придумать как быстро добавлять нарушителей в черный список. Сначала была идея написать/дописать модуль к Nginx + демон, который будет ipset-ы обновлять. Можно и без демона, но тогда придётся запускать Nginx от рута, что не есть красиво. Написать это реально, но понял, что нет столько времени. Ничего похожего не нашёл (может плохо искал?), и придумал вот такой алгоритм.

При привышении лимита, Nginx выбрасывает 503-юю ошибку Service Temporarily Unavailable. Вот я решил на неё и прицепиться!

Для каждого location создаём свою страничку с ошибкой
error_page 503 =429 @blacklist;

И соответствующий именованный location
location @blacklist {
    fastcgi_pass    localhost:1234;
    fastcgi_param   SCRIPT_FILENAME    /data/web/cgi/blacklist.sh;
    include         fastcgi_params;
}

Дальше интересней.
Нам нужна поддержка CGI-скриптов. Ставим, настраиваем, запускаем spawn-fcgi и fcgiwrap. У меня уже было готовое для collectd.

Сам CGI-скрипт
Читать дальше →
Total votes 57: ↑50 and ↓7+43
Comments50

Blind Deconvolution — автоматическое восстановление смазанных изображений

Reading time6 min
Views147K
Смазанные изображения — один из самых неприятных дефектов в фотографии, наравне с расфокусированными изображениями. Ранее я писал про алгоритмы деконволюции для восстановления смазанных и расфокусированных изображений. Эти, относительно простые, подходы позволяют восстановить исходное изображение, если известна точная траектория смаза (или форма пятна размытия).
В большинстве случаев траектория смаза предполагается прямой линией, параметры которой должен задавать сам пользователь — для этого требуется достаточно кропотливая работа по подбору ядра, кроме того, в реальных фотографиях траектория смаза далека от линии и представляет собой замысловатую кривую переменной плотности/яркости, форму которой крайне сложно подобрать вручную.


В последние несколько лет интенсивно развивается новое направлении в теории восстановления изображений — слепая обратная свертка (Blind Deconvolution). Появилось достаточно много работ по этой теме, и начинается активное коммерческое использование результатов.
Многие из вас помнят конференцию Adobe MAX 2011, на которой они как раз показали работу одного из алгоритмов Blind Deconvolution: Исправление смазанных фотографий в новой версии Photoshop
В этой статье я хочу подробнее рассказать — как же работает эта удивительная технология, а также показать практическую реализацию SmartDeblur, который теперь тоже имеет в своем распоряжении этот алгоритм.
Внимание, под катом много картинок!
Читать дальше →
Total votes 243: ↑239 and ↓4+235
Comments150

Мобильный телефон своими руками. Часть 2

Reading time5 min
Views119K
В первой части мы рассмотрели «железную» часть проекта, в этой части мы приступим к экспериментам с устройством.


Модуль M10-TE-A, основа нашего телефонного аппарата.

Читать дальше →
Total votes 75: ↑74 and ↓1+73
Comments28

Кросспостинг в twitter, facebook, livejournal, vkontakte

Reading time7 min
Views81K

Когда я писал проект crafthunters.com, я заметил что для раскрутки клиенты используют социальные сети. Пользовались виджетами и лайками, но по хорошему надо было попадать в ленту новостей. Кроме того, популярный вконтакте вывел новости на главную страницу в сентябре. Т.е. для распространения контента надо было адаптировать standalone блог для представления в социальных сетях, используя простую истину: попасть в ленту новостей популярных социальных сетей. Вначале это происходило вручную и приносило более половины траффика. Потом пришла идея это всё автоматизировать.
Популярными социальными сетями у нас были:
  • facebook
  • вконтакте
  • livejournal
  • твиттер

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

Далее я хочу представить реализацию кросспостинга под эти четыре социальные сети для asp.net mvc.
Читать далее
Total votes 39: ↑34 and ↓5+29
Comments31

Новое расширение PHP под старым названием: event

Reading time1 min
Views12K
В PEСL как-то перестали поддерживать расширения для libevent. В частности, libevent версии 2 не поддерживался ни одноимённым расширением libevent, ни расширением event(последний релиз был в 2004 году). Поэтому было решено переписать завалявшееся с 2004 года расширение «event».
Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments5

Бэкдор в роутерах TP-LINK

Reading time1 min
Views195K
Польский security-эксперт Michał Sajdak из компании Securitum нашел очень интересный бэкдор в роутерах TP-LINK.

Эксплуатация бэкдора довольна проста, и её суть показана на следующей иллюстрации:


Читать дальше →
Total votes 84: ↑80 and ↓4+76
Comments70

GSA: Препарируем Google Search Appliance в виртуальной машине

Reading time5 min
Views15K

Последние годы, с интересом почитывая о персональных поисковых системах в веселых желтых коробках имени Google, я периодически гуглил по словам GSA, Google Search Appliance, reverse engineering и, чего греха таить, hack, DIY, disk dump и т.п. Но ничего, кроме официальных пресс-релизов и переписки счастливых (?) обладателей с группой поддержки, я не встречал.

Иногда звучали на форумах робкие вопросы вроде «а как бы рута мне получить» или «попасть в GSA по ssh», но на все подобные вопросы ответ был один — только группа поддержки Google знает пароли. И никому не скажет. Удивительно, но я не встречал в интернете никаких попыток собрать «хакинтош» на движке Гугла, или по живому коду разобраться в алгоритме ранжирования страниц.

Ситуация слегка изменилась в 2008 году, когда на волне эйфории от виртуализации, Google выкатил VGSA – бесплатную виртуальную машину для Vmware с ограниченной до 50 тысяч документов лицензией. Впрочем, особого энтузиазма это в интернете не вызвало, в 2009 году проект был свернут и большинство ссылок в Гугле на VGSA стали возвращать 404 (заметьте – самим же Гуглом). Ссылку на релиз от 2008 года можно найти довольно легко. Ссылка на версию 2009 сохранилась лишь на паре китайских сайтов.

О том, как я поставил vgsa_20090210 на ESX 5.1 и увидел много чего интересного, можно прочитать ниже.
Дальше
Total votes 108: ↑106 and ↓2+104
Comments56

Архитектура масштабируемой почтовой системы

Reading time4 min
Views27K
В этой статье мы рассматриваем один из вариантов реализации масштабируемой архитектуры большой почтовой системы.

6 декабря 2012 г. Google прекратил регистрацию новых аккаунтов для бесплатной версии Google Apps.

У клиентов нашей компании постоянно возникает потребность в электронной почте, обслуживающей их сайты.
Раньше мы настраивали им Google Apps, но после 6 декабря, изучив предлагаемые на рынке решения, решили, что настала пора строить собственную почтовую систему.

Как известно, аппетит приходит во время еды. Если уж решились строить что-то свое, то тогда стоит сразу закладывать возможности для роста.
Для проектируемой почтовой системы были сформулировали следующие требования:
  • масштабируемость (неограниченное количество обслуживаемых доменов, общий объем почтовых ящиков 100 терабайт и больше);
  • отказоустойчивость (все промежуточные сервисы должны быть продублированы);
  • расширяемость (добавление новых узлов в систему должно быть легким и простым).


Начали с выбора хранилища под письма...

На самом деле выбор был небольшой:
  • dovecot/cyrus с хранением в файловой системе через maildir/mailbox;
  • dbmail с хранением в базе данных.

После оценки количества сервисов, предоставляемых «из коробки», а также изучения нюансов использования, нами было решено остановиться на dbmail.
Вот краткий список вкусностей, которые предоставляет dbmail:



  • доступ к ящикам через IMAP, POP3;
  • sieve-скрипты для сортировки почты;
  • прием почты через smtp и lmtp протоколы;
  • администрирование через cli и SQL-запросы.


Читать дальше →
Total votes 37: ↑31 and ↓6+25
Comments63

Были получены исходники 3300 глобальных интернет-проектов

Reading time5 min
Views274K
Пару месяцев назад нами (2Товарища и Антон Исайкин) была обнаружена уязвимость, присущая в основном большим интернет-проектам (вроде Рамблера, Мейла, Яндекса, Оперы и пр.). Удалось получить доступ к файловым структурам известнейших сайтов (в общей сложности 3320 сайтов) и в ряде случаев их полные исходные коды.
Читать дальше →
Total votes 1226: ↑1190 and ↓36+1154
Comments909

Information

Rating
Does not participate
Date of birth
Registered
Activity