RSS
Pages: 1 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
[>] [Из песочницы] Установка и настройка LXC на Debian 8
habra.15
habrabot(difrex,1) — All
2015-11-24 13:00:03


На предыдущих версиях Debian я успешно использовал технологию виртуализации OpenVZ. Она меня полностью устраивала, несмотря на наличие некоторых спорных моментов. На Debian 8 Jessie установка этой технологии не шла ни под каким соусом. Позже мои догадки о невозможности существования OpenVZ на Debian 8 и старше нашли свое подтверждение на toster.ru. Там же была предложена альтернатива — LXC, что я и решил попробовать. Кратко опишу способ установки и настройки LXC на Debian Jessie. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/271537/#habracut

[>] Классический криптоанализ
habra.15
habrabot(difrex,1) — All
2015-11-24 13:30:02






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

[1]: http://habrahabr.ru/post/271257/#habracut

[>] [Перевод] Чем отличаются SSL-сертификаты от Namechap? Шифрование, проверка и доверие
habra.15
habrabot(difrex,1) — All
2015-11-24 14:30:04


_Примечание переводчика. После моего [поста][1] о [Хостинг Кафе][2] появились два комментария ([1][3], [2][4]) о том, что на [HTTPS.menu][5] нет бесплатных сертификатов, и как раз в тот день вышла статья основателя Namecheap о бесплатных SSL. Изначально статья называлась «Факты о бесплатных SSL» («The Facts About Free SSL»), однако через пару дней после публикации статью переименовали и немного отредактировали._ [![][6]][7] (Замечание: После получения ценной обратной связи сообщества по сетевой безопасности, мы отредактировали эту статью, чтобы разъяснить нашу точку зрения, а также удалили второстепенные вопросы, которые отвлекали от основных, а именно: значительности проверки при SSL-сертификации и необходимости разъяснять пользователям, что из-за разработок в сфере автоматизации SSL-сертификации, наличие букв ¨https¨ и изображения замка в адресной строке уже может не свидетельствовать о безопасности, как ранее. Благодарим Вас за ценную обратную связь. Мы всегда прислушиваемся к ней и всегда открыты к обсуждению вопросов.) Namecheap ориентирован на обеспечение безопасности и защиты данных всех пользователей. Мы считаем, что тенденция к шифрованию практически всего веб-трафика посредством автоматизированной выдачи SSL-сертификатов – положительное изменение в Интернете. Предотвращение MITM атак, а также других попыток перехвата данных, в интересах всех сторон. Это неоспоримый факт. Однако существует значительная разница между шифрованием и обеспечением безопасности. Это может показаться тривиальным продвинутым пользователям или специалистам, но для потребителей – это актуальная информация. Мы думаем, что проверка владельца сертификата – важный вопрос, который требует особого внимания и обсуждения. Разработки последнего времени в сфере автоматизации выпуска SSL-сертификатов с технической точки зрения потрясающие. Тем не менее, следует разъяснить пользователям специфику новой модели обеспечения безопасности и то, на какие сигналы обращать внимание при принятии решений об обеспечении безопасности. Искать буквы «https» и изображение замка в адресной строке — т. е. показатели, которые традиционно считались достоверными, уже может быть и не так надежны, когда речь заходит о безопасности пользователя. [Читать дальше →][8]

[1]: http://habrahabr.ru/company/hosting-cafe/blog/271139/
[2]: http://hosting.cafe
[3]: http://habrahabr.ru/company/hosting-cafe/blog/271139/#comment_8657687
[4]: http://habrahabr.ru/company/hosting-cafe/blog/271139/#comment_8657765
[5]: http://https.menu
[6]: https://habrastorage.org/files/607/522/ca2/607522ca21eb49649b7f1ba8c766259f.png
[7]: http://https.menu
[8]: http://habrahabr.ru/post/271521/#habracut

[>] [Перевод] Нейросеть в 11 строчек на Python: часть 1
habra.15
habrabot(difrex,1) — All
2015-11-24 16:30:02




#### О чём статья

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

#### Дайте код!



X = np.array([ [0,0,1],[0,1,1],[1,0,1],[1,1,1] ])
y = np.array([[0,1,1,0]]).T
syn0 = 2*np.random.random((3,4)) - 1
syn1 = 2*np.random.random((4,1)) - 1
for j in xrange(60000):
l1 = 1/(1+np.exp(-(np.dot(X,syn0))))
l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))
l2_delta = (y - l2)*(l2*(1-l2))
l1_delta = l2_delta.dot(syn1.T) * (l1 * (1-l1))
syn1 += l1.T.dot(l2_delta)
syn0 += X.T.dot(l1_delta)


Слишком сжато? Давайте разобьём его на более простые части. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/271563/#habracut

[>] Asyncio Tarantool Queue, вставай в очередь
habra.15
habrabot(difrex,1) — All
2015-11-24 16:30:02


![][1] В одной из своих статей я рассказывал об [асинхронной работе с Tarantool на Python][2]. В данной статье продолжу эту тему, но внимание хочу уделить обработке информации через очереди на [Tarantool][3]. Мои коллеги опубликовали несколько статей о пользе очередей ([Инфраструктура обработки очередей в социальной сети Мой Мир][4] и [Push-уведомления в REST API на примере системы Таргет Mail.Ru][5]). Хочу дополнить информацию об очередях на примере решений наших задач, а также рассказать о работе с [Tarantool Queue][6] на Python и asyncio. Почему мы выбираем именно Tarantool, а не Redis или RabbitMQ? [Читать дальше →][7]

[1]: https://habrastorage.org/files/efa/035/436/efa035436cca4b3a9f41d64e195f9f69.jpg
[2]: http://habrahabr.ru/company/mailru/blog/254727/
[3]: http://tarantool.org/
[4]: http://habrahabr.ru/company/mailru/blog/228131/
[5]: http://habrahabr.ru/company/mailru/blog/232981/
[6]: https://github.com/tarantool/queue/
[7]: http://habrahabr.ru/post/271513/#habracut

[>] [Перевод] Учебное пособие по Nim (часть 2)
habra.15
habrabot(difrex,1) — All
2015-11-24 18:30:03





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





## Введение



> «Повторение придаёт нелепости вид благоразумия.» – Норман Вайлдбергер

_(в оригинале: "Repetition renders the ridiculous reasonable." – Norman Wildberger)_ Этот документ является учебным пособием по сложным конструкциям языка _Nim._ **Помните, что этот документ в чём-то устарел, а в руководстве есть гораздо больше актуальных примеров по сложным особенностям языка.** [Читать дальше →][1]

[1]: http://habrahabr.ru/post/271361/#habracut

[>] [Из песочницы] Формат хранения данных HV как попытка решения проблемы наглядного хранения текстовых полей
habra.15
habrabot(difrex,1) — All
2015-11-24 19:00:03


![][1] Не так давно передо мной встала задача иметь возможность хранить данные в текстовом виде, чтобы с ними работала не только программа, но мог прочитать и отредактировать (а также создать с нуля в текстовом редакторе) человек. Для этого уже существует множество удобных и хороших форматов, например JSON, YAML, XML и так далее. Но в рассмотренных системах попадались моменты, которые, все же, немного не понравились. Уделю особенное внимание яркому неудобству большинства таких форматов (естественно, на мой взгляд), в том числе и очень мощных и популярных, — проблеме, связанной с хранением текста: как записать текстовое поле, которое может содержать любые текстовые символы, чтобы его содержимое не приходилось менять, и оно не повлияло на парсинг, ведь там могут встретиться и различные подстроки, совпадающие со служебными комбинациями, и различные нестандартные отступы. [Читать дальше →][2]

[1]: https://habrastorage.org/files/87f/411/1f6/87f4111f6ee947d88aa87a53a129a222.jpg
[2]: http://habrahabr.ru/post/271501/#habracut

[>] Способ быстрого измерения производительности случайного сервера
habra.15
habrabot(difrex,1) — All
2015-11-24 19:00:03


В мире веб-разработки часто возникает задача подбора сервера под веб-приложение, либо по-аналогии проверка производительности имеющегося сервера. Возможно, нам необходимо купить новый сервер, чтобы он выдерживал предполагаемую нагрузку. Может быть, заказчик передает нам для деплоя свой имеющийся сервер. В любом случае, если после развертывания и запуска приложения оно будет показывать низкую производительность, то спросят с команды. Основная проблема в том, что выполнить оценку производительности сервера нужно быстро, без использования специальных (читай, сложных) инструментов и, разумеется, до релиза. Мы должны уметь снять с сервера некие метрики и, умножив их на известные показатели приложения, получить оценку производительности приложения на этом сервере. В жизни выполнить эту задачу может далеко не каждый разработчик, а из оставшихся далеко не каждый хочет её выполнять. В этой статье я хочу рассказать о тех приёмах и инструментах, которые мы используем для оценки производительности сервера. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/271485/#habracut

[>] Написание простейшей программы под Linux в машинных кодах
habra.15
habrabot(difrex,1) — All
2015-11-24 19:00:03


**Всем привет**. Я давно хотел прикоснуться к этой теме и написать что-то подобное, но никак руки не доходили. Сегодня я решился, и мы с вами разберем структуру ELF-файла (исполняемый файл на \*nix-подобных системах), и напишем простую программу под x86 Linux в машинных кодах, которая выведет сообщение на экран. Но тут не все так однозначно, поверьте мне. Начать бы я хотел с конца. А именно с того, что будет делать наша программа. Наша программа — не что иное, как куча машинного кода, который, впоследствии, будет исполняться системой. В качестве заместителя системы счисления Hex я буду использовать «Wct», ибо он гораздо удобнее, потому что имеется онлайн компилятор и возможность вставлять строки на ходу и использовать десятичные числа. У нас она будет выводить одну строку текста на экран. ![image][1] [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/123/79a/2c1/12379a2c1168ac3edf378fe67a8a0c49.jpg
[2]: http://habrahabr.ru/post/271519/#habracut

[>] IBM Watson научили обсуждать проблемы мирового уровня
habra.15
habrabot(difrex,1) — All
2015-11-24 19:00:03


Когнитивная система IBM Watson теперь может обсуждать различные проблемы людей не хуже любого эксперта. Команда специалистов из Технологического университета Джорджии (США) совместно с представителями IBM в течение шести месяцев обучали когнитивную систему понимать окружающий мир и находить пути решения некоторых важных проблем. Каждая из шести команд, работавших над проектом, подготовила 200 различных вопросов. IBM Watson пришлось изучить несколько новых для себя предметов, чтобы быть в состоянии вести диалог. К примеру, когнитивная система изучила несколько сотен статей по биологии из репозитория статей Biologue. После обучения Watson команды стали задавать системе вопросы об архитектуре, телекоммуникациях, вычислительной технике. Watson должен был сформулировать четкий ответ, используя изученный материал. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/271589/#habracut

[>] swirl: стремительное погружение в R (learning by doing)
habra.15
habrabot(difrex,1) — All
2015-11-24 19:00:03


![][1] Еще каких-нибудь полтора года назад я был одним из тех, кто убежденно говорил «Нет, программирование — это точно не для меня». Не рискну сказать, что я стал программистом, но за последний год [R][2] заменил мне большинство повседневных программ для работы. Я работаю исследователем. С интересом наблюдаю, как постепенно R становится стандартом в академическом мире. В общем, в мире ширится понимание того, что с компьютером имеет смысл общаться чуть свободнее, чем на уровне программ click&drag. Так, совсем недавно [Медуза писала][3] о том, что программирование стоит изучать гораздо более широкому кругу людей, чем всегда было принято считать. В этом посте я расскажу об одном из самых коротких путей к программированию — изучении R с помощью специального пакета [swirl][4] (пакет в R — это то же, что во многих других языках называется библиотекой, расширение/дополнение исходного функционала). Пост рассчитан на читателя с нулевым знанием R, заинтересованного в изучении этого языка программирования; он поможет, как мне кажется, максимально эффективно и безболезненно сделать первые шаги в темный лес программирования.

: потому что только этим я могу поделиться, других языков программирования не знаю.
.
На Хабре довольно много публикаций с использованием R. Есть и посты о самом языке, например человека, заставшего R чуть ли не у самых истоков.
Для исследователя R — это просто must.



[Читать дальше →][5]

[1]: https://habrastorage.org/files/a8c/437/ffe/a8c437ffe65049968eb224a3e4a1e903.PNG
[2]: https://www.r-project.org/
[3]: https://meduza.io/cards/kak-perestat-boyatsya-i-nachat-programmirovat
[4]: http://swirlstats.com/
[5]: http://habrahabr.ru/post/271265/#habracut

[>] [Перевод] Чем отличаются SSL-сертификаты от Namecheap? Шифрование, проверка и доверие
habra.15
habrabot(difrex,1) — All
2015-11-24 19:00:03


_Примечание переводчика. После моего [поста][1] о [Хостинг Кафе][2] появились два комментария ([1][3], [2][4]) о том, что на [HTTPS.menu][5] нет бесплатных сертификатов, и как раз в тот день вышла статья основателя Namecheap о бесплатных SSL. Изначально статья называлась «Факты о бесплатных SSL» («The Facts About Free SSL»), однако через пару дней после публикации статью переименовали и немного отредактировали._ [![][6]][7] (Замечание: После получения ценной обратной связи сообщества по сетевой безопасности, мы отредактировали эту статью, чтобы разъяснить нашу точку зрения, а также удалили второстепенные вопросы, которые отвлекали от основных, а именно: значительности проверки при SSL-сертификации и необходимости разъяснять пользователям, что из-за разработок в сфере автоматизации SSL-сертификации, наличие букв ¨https¨ и изображения замка в адресной строке уже может не свидетельствовать о безопасности, как ранее. Благодарим Вас за ценную обратную связь. Мы всегда прислушиваемся к ней и всегда открыты к обсуждению вопросов.) Namecheap ориентирован на обеспечение безопасности и защиты данных всех пользователей. Мы считаем, что тенденция к шифрованию практически всего веб-трафика посредством автоматизированной выдачи SSL-сертификатов – положительное изменение в Интернете. Предотвращение MITM атак, а также других попыток перехвата данных, в интересах всех сторон. Это неоспоримый факт. Однако существует значительная разница между шифрованием и обеспечением безопасности. Это может показаться тривиальным продвинутым пользователям или специалистам, но для потребителей – это актуальная информация. Мы думаем, что проверка владельца сертификата – важный вопрос, который требует особого внимания и обсуждения. Разработки последнего времени в сфере автоматизации выпуска SSL-сертификатов с технической точки зрения потрясающие. Тем не менее, следует разъяснить пользователям специфику новой модели обеспечения безопасности и то, на какие сигналы обращать внимание при принятии решений об обеспечении безопасности. Искать буквы «https» и изображение замка в адресной строке — т. е. показатели, которые традиционно считались достоверными, уже может быть и не так надежны, когда речь заходит о безопасности пользователя. [Читать дальше →][8]

[1]: http://habrahabr.ru/company/hosting-cafe/blog/271139/
[2]: http://hosting.cafe
[3]: http://habrahabr.ru/company/hosting-cafe/blog/271139/#comment_8657687
[4]: http://habrahabr.ru/company/hosting-cafe/blog/271139/#comment_8657765
[5]: http://https.menu
[6]: https://habrastorage.org/files/607/522/ca2/607522ca21eb49649b7f1ba8c766259f.png
[7]: http://https.menu
[8]: http://habrahabr.ru/post/271521/#habracut

[>] Векторный, открытый и удобный: Inkscape 0.91
habra.15
habrabot(difrex,1) — All
2015-11-24 21:00:03


Давно увлекаюсь векторной графикой, особенно ее созданием, отрисовкой с нуля. Много программ я пробовал, но в основном моим рабочим инструментом был CorelDraw, который меня всем устраивал. Не помню, почему и зачем я начал искать ему альтернативы, но в один прекрасный день я наткнулся на Inkscape. Это была любовь с первого взгляда… Я все ждал, что на Хабре появится статья-обзор новых возможностей версии Inkscape 0.91, а ее все нет. Решил написать сам, если что не так – не судите строго, пишу редко. Под катом будет много иллюстративных примеров и технических деталей. ![image][1] [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/ed3/8c1/fb7/ed38c1fb77d0e4b5f58afff6956dcec1.png
[2]: http://habrahabr.ru/post/271559/#habracut

[>] [Перевод] Нейросеть в 11 строчек на Python
habra.15
habrabot(difrex,1) — All
2015-11-24 21:00:03




#### О чём статья

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

#### Дайте код!



X = np.array([ [0,0,1],[0,1,1],[1,0,1],[1,1,1] ])
y = np.array([[0,1,1,0]]).T
syn0 = 2*np.random.random((3,4)) - 1
syn1 = 2*np.random.random((4,1)) - 1
for j in xrange(60000):
l1 = 1/(1+np.exp(-(np.dot(X,syn0))))
l2 = 1/(1+np.exp(-(np.dot(l1,syn1))))
l2_delta = (y - l2)*(l2*(1-l2))
l1_delta = l2_delta.dot(syn1.T) * (l1 * (1-l1))
syn1 += l1.T.dot(l2_delta)
syn0 += X.T.dot(l1_delta)


Слишком сжато? Давайте разобьём его на более простые части. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/271563/#habracut

[>] Про программистов
habra.15
habrabot(difrex,1) — All
2015-11-25 09:30:03


Не смог удержаться — очередной шедевр от 420 к «Часу кода». _Создатели поддерживают идею увеличения популяции программистов и призывают зрителей по мере сил этому способствовать._ ![][1] Один мальчик, однажды, провалился в параллельный мир, где все были дикие и невоспитанные, но поскольку он был начинающим ИТишником, то заново изобрел там компьютер, и все все игры, и программы, и стал там в конце концов царем планеты. А другого мальчика похитили инопланетяне, но он тоже умел программировать и сумел перепрошить космолет, чтобы он слушался только его, и прилетел обратно на землю, и привез с собой пришельцев на опыты. И ему сам президент вручил медаль, и дом у моря, и велосипед. А еще, как то раз, одна девочка сидела в парке с книжкой по программированию, а мимо проходил самый красивый мальчик в мире, и когда он увидел что она читает, он тут же признался ей в любви, и они жили долго и счастливо, и все время программировали. А один толстый мальчик решил написать игру и так увлекся, что все время забывал поесть, и очень сильно похудел пока писал, а потом эту игру продали, и он стал миллионером и плейбоем. А еще был случай когда некрасивая девочка выучила программирование лучше всех и стала директором огромной корпорации, и все мальчики за ней бегали, потому что красивых женщин много, а умных найти трудно. А один хулиган и двоечник решил изучать программирование просто от скуки, и у него вдруг оказался к этому талант, и он сразу получил кучу премий, и купил машину, и на ней поехал учиться в самый лучший институт. А все его друзья-хулиганы продолжали пить пиво во дворе и ничего в жизни не добились. А другой мальчик был такой умный, [Читать дальше →][2]

[1]: https://habrastorage.org/files/36d/0f6/94e/36d0f694ec1d4165af9ca6f28352f3a6.jpg
[2]: http://habrahabr.ru/post/271621/#habracut

[>] [Перевод] Улучшение сетевой безопасности с помощью Content Security Policy
habra.15
habrabot(difrex,1) — All
2015-11-25 13:30:03


![][1] Content Security Policy (CSP, политика защиты контента) — это механизм обеспечения безопасности, с помощью которого можно защищаться от атак с внедрением контента, например, межсайтового скриптинга (XSS, cross site scripting). CSP описывает безопасные источники загрузки ресурсов, устанавливает правила использования встроенных стилей, скриптов, а также динамической оценки JavaScript — например, с помощью eval. Загрузка с ресурсов, не входящих в «белый список», блокируется. [Читать дальше →][2]

[1]: https://habrastorage.org/files/de7/dad/f55/de7dadf55b794ee5ba1af9f773cd6cf9.jpg
[2]: http://habrahabr.ru/post/271575/#habracut

[>] Тестировщик в ответе за всё
habra.15
habrabot(difrex,1) — All
2015-11-25 14:30:02







Так объясняют про тестирование в компании [Edison][1]. Недавно я участвовал в профориентационном лагере для школьников. Меня попросили рассказать про Хабр и про то, какие есть ИТ-специальности и что будет в будущем. ![][2] Как школьнику рассказать кто такой тестировщик и зачем нужен процесс тестирования? Я как-то выкрутился, но чувство незавершенности осталось и по сей день. На Хабре шикарно умеют объяснять [почему трава зеленая][3] или почему [программист это супергерой][4]. Если бы вы объясняли 10-ти класснику, кто такой тестировщик, как бы вы описали этот процесс? _(Есть замечательная книга [Сеймура Пейперта][5] «Переворот в сознании: Дети, компьютеры и плодотворные идеи», где рассказывается о том, как сформировать в мышлении детей хорошие стратегии отладки, но эта книга достойна отдельной статьи ->)_ «Пугать надо» — посоветовали мне бывалые. Ну что ж, сделал подбоку самых сочных программистских ошибок. **Ошибка №1** 22 июля 1962 Года. Неудача при запуске первого американского спутника к Венере «Mariner 1» случилась из-за ошибки в программе на языке Фортран – в операторе цикла вместо запятой программист поставил точку: _правильный оператор DO 50 I = 12,525 оператор с ошибкой DO 50 I = 12.525 _ «Умный» компилятор не выдал ошибку, а интерпретировал данную конструкцию как оператор присваивания. В результате, станция массой 202,8 кг при взлете спустя 293 сек ракета отклонилась от курса и произошла авария. Но это ложь. Есть легенда (впрочем, неподтвержденная), что подобная ошибка была в одной из программ НАСА для вычисления орбиты, однако это программа использовалась в проекте Меркурий, а не Маринер, и эта ошибка была исправлена до запуска корабля. На самом деле Nasa заявило: Ошибка появилась при ручном переводе символа в спецификации программы наведения. Писавший пропустил макрон или надчёркивание в ![image][6] что значит «n-ое сглаживание значения производной радиуса R по времени». Без функции сглаживания, обозначаемой макроном, программа воспринимала нормальные небольшие изменения скорости как очень серьёзные, что вызывало лишние поправки, сбивавшие ракету с курса. Затем ракета была уничтожена офицером курсовой безопасности. Но и это (возможно) ложь. [пруф — [«Самый дорогой дефис в истории»][7]] Кто виноват? Тестировщики недосмотрели. [Читать дальше →][8]

[1]: http://www.edsd.ru/
[2]: https://habrastorage.org/files/c39/d01/695/c39d0169553b4cb78da789db5b28a3c3.jpg
[3]: http://habrahabr.ru/post/237133/
[4]: http://habrahabr.ru/company/prodlenka/blog/250373/
[5]: https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D0%B9%D0%BF%D0%B5%D1%80%D1%82,_%D0%A1%D0%B5%D0%B9%D0%BC%D1%83%D1%80
[6]: https://habrastorage.org/getpro/habr/post_images/22e/11f/1af/22e11f1af96326e63814f35c7fd0fe6e.png
[7]: https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D0%B8%D0%BD%D0%B5%D1%80-1#.C2.AB.D0.A1.D0.B0.D0.BC.D1.8B.D0.B9_.D0.B4.D0.BE.D1.80.D0.BE.D0.B3.D0.BE.D0.B9_.D0.B4.D0.B5.D1.84.D0.B8.D1.81_.D0.B2_.D0.B8.D1.81.D1.82.D0.BE.D1.80.D0.B8.D0.B8.C2.BB
[8]: http://habrahabr.ru/post/271495/#habracut

[>] [Перевод] Нам нужны не столь мощные языки программирования
habra.15
habrabot(difrex,1) — All
2015-11-25 16:00:03


![][1] Сегодня многие системы и языки программирования позиционируются как «мощные». Нельзя сказать, что это плохо. Почти каждый из нас считает это положительным свойством. Но в этом посте я хочу донести такую точку зрения, что во многих случаях нам нужны **менее мощные** языки программирования и системы. Но прежде чем продолжить, уточню: здесь будет мало оригинальных, моих собственных размышлений. Я буду излагать ход мыслей, возникший по прочтении книги Дугласа Хофштадтера «[Гёдель, Эшер, Бах][2]», которая помогла мне собрать воедино разрозненные идеи и мысли, бродившие в голове. Также большое влияние на нижеизложенный материал оказали [пост][3] Филипа Вадлера и [видеозапись][4] с конференции Scala. Ключевая мысль такова: _Каждое увеличение выразительности возлагает дополнительную нагрузку на всех, кто хочет понять сообщение._ И я хочу лишь проиллюстрировать эту точку зрения с помощью примеров, которые будут ближе и понятнее сообществу программистов на Python. [Читать дальше →][5]

[1]: https://habrastorage.org/files/a17/2ab/7af/a172ab7af3864e61a6ae1e1bb2f93c8c.jpg
[2]: https://ru.wikipedia.org/wiki/Гёдель,_Эшер,_Бах
[3]: http://wadler.blogspot.co.uk/2006/03/rule-of-least-power.html
[4]: https://www.youtube.com/watch?v=TS1lpKBMkgg&t=28m32s
[5]: http://habrahabr.ru/post/271585/#habracut

[>] [Перевод] Вычисляемые знания по анатомии в Wolfram Language
habra.15
habrabot(difrex,1) — All
2015-11-25 18:00:03






_Перевод поста Keiko Hirayama "[Dissecting the New Anatomy Content in the Wolfram Language][1]". Код, приведенный в статье, можно скачать [здесь][2]. Выражаю огромную благодарность Кириллу Гузенко [KirillGuzenko][3] за помощь в переводе и подготовке публикации_

----

Тело человека является предметом изучения с самого начала человеческой истории. Современные научные направления в анатомии и физиологии происходят из симбиоза искусства и анатомии, возникшего в эпоху ренессанса. В начале 16-го века [Леонардо да Винчи][4] одним из первых представил достаточно подробные и точные эскизы человеческого тела и его структур. В 1543 году [Везалий][5] опубликовал знаменитый учебник _De Humani Corporis Fabrica (О строении человеческого тела)_ с красивыми иллюстрациями оного. Имея современные технологии в нашем распоряжении, мы можем представлять данные по физиологии и анатомии в вычислимом формате. С помощью [Wolfram|Alpha][6] мы создали для всех возможность легко изучить то, как отдельные анатомические структуры связаны друг с другом в организме человека, а также исследовать как целые системы органов, так и их микроскопические составляющие. ![][7] [Читать дальше →][8]

[1]: http://blog.wolfram.com/2015/11/11/dissecting-the-new-anatomy-content-in-the-wolfram-language/
[2]: http://blog.wolfram.com/data/uploads/2015/11/Dissecting-the-New-Anatomy-Content-in-the-Wolfram-Language-Blog.cdf
[3]: http://habrahabr.ru/users/kirillguzenko/
[4]: http://www.wolframalpha.com/input/?i=Leonardo+da+Vinci+
[5]: http://www.wolframalpha.com/input/?i=Vesalius
[6]: http://www.wolframalpha.com/
[7]: https://habrastorage.org/files/a37/6f7/bcf/a376f7bcfc8a435dbc6f2a039e4b1c60.gif
[8]: http://habrahabr.ru/post/271643/#habracut

[>] А можно ли не платить за панель? Красивое совершенство
habra.15
habrabot(difrex,1) — All
2015-11-25 18:00:03


Не так давно нами была запущена услуга [облачных VPS][1]. За счет полного root-доступа к виртуальному серверу и своей небольшой стоимости она стала довольно популярной среди наших клиентов. Кто-то переезжал на облачные VPS с [виртуального хостинга][2], так как клиентам было важно иметь именно доступ суперпользователя, а кто-то хотел использовать своим выделенный IP-адрес и не делить его с недобросовестными соседями. Даже были такие пользователи, которые съезжали на виртуальные облачные серверы с недорогих [«дедиков»][3], так как в условиях жесткой экономии приходилось как-то пытаться сохранить проекты от закрытия и продолжать быть постоянно онлайн. ![][4] Если говорить о большинстве наших услуг хостинга, то в стоимость практически всех из них включена лицензия панели управления ISPmanager, чего не скажешь об облачных VPS. Учитывая цену данных виртуальных серверов — это и не удивительно. Но многие наши клиенты хотели и вместе с такой бюджетной услугой иметь возможность использовать удобную панель управления хостингом, но при этом мало кто готов был оплатить лицензию разработки той же компании ISPsystem — [ISPmanager][5], которая довольно популярна в рунете. Здесь их позицию понять можно, и после того как обращения в нашу поддержку по данному вопросу участились — мы решили составить свой обзор бесплатных панелей управления хостингом. Те, кому это интересно — милости просим под хабракат… [Читать дальше →][6]

[1]: http://ua-hosting.company/vps?language=russian
[2]: http://ua-hosting.company/hosting?language=russian
[3]: http://ua-hosting.company/servers?language=russian
[4]: https://habrastorage.org/files/460/f5c/0dd/460f5c0ddec8460498f055844da5a9b6.jpg
[5]: https://www.ispsystem.ru/software/ispmanager
[6]: http://habrahabr.ru/post/271673/#habracut

[>] [Перевод] Sidechains: насколько многогранны криптовалюты?
habra.15
habrabot(difrex,1) — All
2015-11-25 18:30:03


_Публикую перевод статьи «[Sidechains: How Many Sides Does a Cryptocurrency Have?][1]» Рэя Паттерсона (Ray Patterson) с сайта [Bytecoin.org][2]._

## Не существует «самой лучшей» криптовалюты

Bitcoin прекрасен, Bytecoin прекрасен, Doge прекрасен. Все криптовалюты прекрасны (ну, или давайте на секундочку представим, что это так). Вы можете расплатиться биткойнами за сэндвичи в Сабвэй, использовать Bytecoin для частных покупок, посылать Dogecoin своим друзьям в качестве подарков, и так далее. То есть, вы можете использовать особенности каждой из криптовалют для подходящего случая. Но — вот досада — вам не понравилось бы таскаться с дюжиной кошельков для каждой из этих монет. Естественно, вы можете просто собрать другую криптовалюту, которая будет сочитать в себе все лучшие «фичи». Что-то вроде стандрата для криптовалют. Погодите… Это мне что-то напоминает.



Конечно, такой подход возможен… теоретически. Но на практике это становится невыполнимым. Во-первых, идея «самого лучшего» крайне субъективна. Не всем кажется, что функция «demurrage»(плата за простой монетки в кошельке) у Freicoin – довольно полезная функция. Выбор стандарта из всевозможных вариаций Proof of Work также стало было колоссальным испытанием. Во-вторых, некоторые вещи просто не могут сочетаться в принципе: представьте себя на месте сервиса, который должен принимать во внимание миллион функций всего-навсего ОДНОЙ криптовалюты. Стали бы вы ее принимать? В конце концов, это просто крайне сложно с технической точки зрения — содержать все внедрённые инновации и обновления разных проектов.

## Преумножая альткойны

Вот вам иная точка зрения. Представьте себя счастливым разработчиком криптовалюты. Вы изобрели новую функцию и теперь хотите её протестировать в реальных условиях. Вы не можете слепить всё на скорую руку и закинуть на рынок (ваш проект крайне важен для вас), но вы не можете протестить новую «фичу» без реальных пользователей. Что делать? Вы хотите, чтобы ваша криптовалюта получила эту функцию (и люди бы стали ей пользоваться) и одновременно сомневаетесь в ней, ведь в случае критической ошибке люди потеряют свои средства. [Читать дальше →][3]

[1]: https://bytecoin.org/blog/sidechains/
[2]: https://bytecoin.org
[3]: http://habrahabr.ru/post/271669/#habracut

[>] [Из песочницы] Поразрядная сортировка с человеческим лицом
habra.15
habrabot(difrex,1) — All
2015-11-25 18:30:03


Несмотря на известность алгоритма поразрядной сортировки, в интернете сложно найти приличную его реализацию на языке C++ (честно говоря, думаю, что и на других языках тоже). Почти всё, что находится поисковиками, чудовищно либо в плане кода, либо в плане эффективности. А чаще всего плохо и то, и другое. Основная ошибка в том, что авторы пытаются навернуть универсальность там, где это не нужно, и не обеспечивают универсальность там, где это действительно необходимо. В результате получается нечто, что работает медленно и чем невозможно пользоваться. Возможно, именно поэтому многие люди до сих пор считают поразрядку алгоритмом, представляющим исключительно академический интерес, и малоприменимым в реальности. Однако, это заблуждение. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/271677/#habracut

[>] Критическая уязвимость в компьютерах Dell позволяет хакерам получать доступ практически к любым данным: Как защититься
habra.15
habrabot(difrex,1) — All
2015-11-25 18:30:03


[![][1]][2] 22 ноября 2015 года в сеть [попала][3] информация о критической уязвимости, которой подвержен целый ряд продуктов компании Dell (вот [упоминание][4] о ней на Хабре). Первым на ошибку обратил внимание программист Джо Норд, который [описал][5] ее в своем блоге. Разработчик сообщил, что приобрел ноутбук Dell Inspiron 5000, на котором был предустановлен корневой сертификат безопасности под названием eDellRoot Проблема заключается в том, что закрытый ключ этого корневого сертификата хранится на самом компьютере, что открывает злоумышленникам широкие возможности по проведению атак типа «человек посередине» (man in the middle). [Читать дальше →][6]

[1]: https://habrastorage.org/files/1f2/a07/427/1f2a07427d1a49d1bd61ed991eb0dcc5.jpg
[2]: http://habrahabr.ru/company/pt/blog/271649/
[3]: https://www.reddit.com/r/technology/comments/3twmfv/dell_ships_laptops_with_rogue_root_ca_exactly/
[4]: http://habrahabr.ru/post/271511/
[5]: http://joenord.blogspot.in/2015/11/new-dell-computer-comes-with-edellroot.html
[6]: http://habrahabr.ru/post/271649/#habracut

[>] [Перевод] Машинное обучение как способ анализа микроструктуры рынка и его применение в высокочастотном трейдинге
habra.15
habrabot(difrex,1) — All
2015-11-25 19:30:02


[![][1]][2] В этой статье мы рассмотрим способы применения машинного обучения в сфере высокочастотного трейдинга (HFT) и анализа микроструктурных данных. Машинное обучение – это замечательный раздел информатики, использующий модели и методы из статистики, теории алгоритмов, теории вычислительной сложности, искусственного интеллекта, теории управления и огромного числа других дисциплин. Основным объектом исследования машинного обучения являются эффективные алгоритмы, позволяющие создать хорошие предсказательные модели на основании больших наборов данных – именно поэтому оно так хорошо подходит для решения задач высокочастотного трейдинга: заключения сделок и расчета показателя «альфа». [Читать дальше →][3]

[1]: https://habrastorage.org/files/69c/f07/334/69cf073343e34df8957c7111eea62a4c.png
[2]: http://habrahabr.ru/company/itinvest/blog/271555/
[3]: http://habrahabr.ru/post/271555/#habracut

[>] Юные хакеры 414s
habra.15
habrabot(difrex,1) — All
2015-11-25 22:00:03


Название команды 414s звучит так, словно это какая-то модная рок-группа 80-х. Но герои данной истории прославились вовсе не музыкой, а компьютерными взломами. С помощью обычных домашних компьютеров они хакнули с десяток компьютерных систем серьезных учреждений, как например Лос-Аламосскую Национальную лабораторию в Нью-Мехико, Онкологический центр Memorial Sloan-Kettering в Нью-Йорке, а также и школу города Милуоки. Юные хакеры так развлекались и всего лишь удовлетворяли свою непомерную любознательность. Команда 414s состояла из группы подростков-единомышленников. Но общественности открылись лишь шесть юношей, возраста от 16 до 22 лет. Собралась группа по иронии судьбы — их встрече и близкому знакомству поспособствовал исследовательский клуб бойскаутов, который спонсировала известная компания IBM. Основной целью данной организации было научить детишек пользоваться компьютерами. И ученики превзошли всякие ожидания. Настолько превзошли, что с 1983 года попали под пристальное внимание ФБР и прославились на весь мир. ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/fbc/b7d/e8a/fbcb7de8a3d543d08d455e46ca172d79.png
[2]: http://habrahabr.ru/post/271681/#habracut

[>] PythonDigest — выпуск номер 100 и другие замечательные новости
habra.15
habrabot(difrex,1) — All
2015-11-26 12:00:04


Python — жив! С такого громкого заявления хочется начать статью. На этой неделе вышел 100-тый Python Digest. по такому случаю мы решили подвести итоги работы над дайджестом и рассказать о тенденциях, выявленных в процессе сбора новостей по языку, которому собственно и посвящен дайджест. ![][1] В конце 2014 года мы подводили итоги [http://habrahabr.ru/post/247067/][2] за год. В этот раз мы рассмотрим тенденции за неполные 11 месяцев 2015-года. Но перед тем как перейдем к тенденциям — расскажем что сделали за (почти) год. Интересующихся подробностями милости просим под кат. [Подробности][3]

[1]: https://habrastorage.org/files/706/19c/4c4/70619c4c4d454172a9675b2f8a38f96a.jpg
[2]: https://www.google.com/url?q=http://habrahabr.ru/post/247067/&sa=D&usg=AFQjCNEsa8F6-XbDJs1DA1AthYS7uSwICQ
[3]: http://habrahabr.ru/post/271729/#habracut

[>] [Перевод] Зачем разработчику издеваться над собственным кодом
habra.15
habrabot(difrex,1) — All
2015-11-26 13:30:03


[][1] _Проблема решена: 317 кликов исправили ошибку_ В 1992 году я считал себя лучшим программистом в мире. В свое оправдание могу сказать лишь, что тогда я только закончил колледж (это было еще до появления Интернета) и жил в Боулдере, штат Колорадо, подрабатывая в мелких компаниях – я почитал за большую удачу возможность просто услышать о других программистах, не говоря уже о том, чтобы повстречаться с ними. В итоге я познакомился с человеком по имени Билл О’Нил, который нанял меня в качестве программиста, работающего по контракту. Он создал компанию с довольно неоригинальным названием Computer Research & Technologies, и мы стали работать над различными задачами вместе. Мы занимались разработкой CRUD-приложений [Create, Read, Update, Delete – вариант приложения с базовыми функциями создания, просмотра, обновления и удаления записей в базе данных – прим. перев.] для бизнеса на Visual Basic и FoxPro под Windows 3.1 (и иногда под DOS, так как предчувствовали, что новомодный графический интерфейс останется с нами надолго). Билл был первым профессиональным программистом, с которым я когда-либо работал. Да что тут говорить, он был первым программистом вообще, с которым я когда-либо работал. Он выдавал мне техзадание, по нему я писал программу на Visual Basic и затем отдавал ее на проверку Биллу. После этого он спокойно объяснял мне, что мой код никуда не годится. [Читать дальше →][2]

[1]: http://habrahabr.ru/company/friifond/blog/271733/
[2]: http://habrahabr.ru/post/271733/#habracut

[>] Электронные таблицы под капотом
habra.15
habrabot(difrex,1) — All
2015-11-26 13:30:03


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

[1]: https://habrastorage.org/files/7f7/afd/c52/7f7afdc52c404bcca1e0e86bf55d911f.jpg
[2]: http://habrahabr.ru/post/271685/#habracut

[>] Дизайним прототипы ячеек в одном XIB-е с UITableView
habra.15
habrabot(difrex,1) — All
2015-11-26 15:00:03


А заодно раз и навсегда решаем проблему автоматической калькуляции высоты ячеек. Disclaimer: Вероятно, этот метод не обеспечивает наилучшую производительность, может иметь некоторое количество подводных камней, вызывать головокружение, тошноту и дьявола, старикам и беременным детям просьба не читать. Преодоление трудностей — наверное лучшая мотивация программиста. Не секрет, Xcode содержит уйму недоработок, непрозрачных решений и багов. Сегодня я постараюсь найти решение одного из них ![][1] [Читать][2]

[1]: https://habrastorage.org/files/956/d65/a0f/956d65a0fb924a0d8b5829927f8eba96.png
[2]: http://habrahabr.ru/post/271701/#habracut

[>] DevOps: отправляем метрики и спим спокойно
habra.15
habrabot(difrex,1) — All
2015-11-26 15:00:03


![][1] Внезапно, ночью раздается звонок и мы узнаем что наше приложение не работает. Есть 2 часа на его реанимацию… [Где же наш мониторинг и логи программы!?][2]

[1]: https://habrastorage.org/files/f7b/a6e/614/f7ba6e61460e4238ae66af472a4428d4.jpg
[2]: http://habrahabr.ru/post/269793/#habracut

[>] [Перевод] Конец эпохи динамических языков
habra.15
habrabot(difrex,1) — All
2015-11-26 15:00:03


Несколько последних месяцев я программирую преимущественно на Scala (по работе) и на Haskell (для души). На этой неделе я, правда, ещё немного пописал на Ruby (по работе) и Clojure (для души). Ruby вывел меня из равновесия почти сразу. Нет, ну ещё в плане «добавить небольшую фичу к уже имеющемуся коду» писать на нём можно. Вы просто добавляете юнит тест, запускаете его на старом коде, делаете правку, запускаете тест снова — вуаля, готово, забирайте. Но замахиваться на что-то большее становится уже слишком сложно. Но вот что касается моего новенького, с иголочки, проекта-любимца на Clojure… О, Clojure! Глоток свежего воздуха! Благодатная земля хорошо скомпонованных функций, иммутабельных структур данных и всего такого. Как прекрасен твой синтаксис и как мудра твоя чувствительность! Вся твоя суть в функциях, принимающих мэпы и возвращающих мэпы. И твой SQL-генератор, и слой доступа к БД, и HTML-парсер, и URL-роутер являют собой одну и ту же завораживающую картину мэпов, гоняемых туда-сюда тактами процессора, прекрасную с своём ритме хорошо собранных швейцарских часов. Вернуться к Clojure после долгого времени это всё-равно, что почуствовать себя дома. Это просто окрыляет программиста. Но почему-то в этот раз я ощутил и ещё одно, неожиданное для себя чувство: неопределённость. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/271705/#habracut

[>] Фишинг в корпоративной среде
habra.15
habrabot(difrex,1) — All
2015-11-26 15:30:03


![][1] Фишинговые сообщения электронной почты в корпоративной среде обычно знаменуют собой [таргетированную атаку][2], хорошо продуманы и реализованы. В отличии от рядовых пользователей, сотрудники компаний могут быть проинструктированы должным образом о существующих угрозах информационной безопасности. За сообщениями электронной почты может быть установлен тот или иной контроль со стороны сотрудников ИТ/ИБ подразделений. [Читать дальше →][3]

[1]: https://habrastorage.org/files/d4e/144/feb/d4e144feb34e4edd8f4da17fffb22764.png
[2]: https://en.wikipedia.org/wiki/Advanced_persistent_threat
[3]: http://habrahabr.ru/post/271597/#habracut

[>] [Перевод] Разработка быстрых мобильных приложений на Android. Часть первая
habra.15
habrabot(difrex,1) — All
2015-11-26 16:30:02


В [Edison][1] мы часто сталкиваемся с оптимизацией мобильных приложений и хотим поделиться материалом, который считаем крайне полезным, если вы решаете одну из двух задач: а) хотите чтобы приложение меньше тормозило; б) хотите сделать красивый, мягкий и гладкий интерфейс для массового пользователя. Предлагаем вашему вниманию первую часть перевода статьи Udi Cohen, которую мы использовали как пособие для обучения оптимизации под Android. ![][2] Несколько недель назад я выступил на Droidcon в Нью-Йорке с докладом об оптимизации производительности Android. Я потратил много времени на презентацию, так как хотел показать реальные примеры проблем производительности, и как их можно выявить с помощью имеющихся инструментов. Мне пришлось убрать половину слайдов, потому что мне не хватало времени, чтобы показать все. В этой статье я собрал всё, о чем я говорил, а также примеры, которые я не успел показать. Мои основные правила, которым я следую при работе с оптимизацией.

#### **Мои правила**

Каждый раз, когда я сталкиваюсь с проблемами производительности или ищу решение этих проблем, я следую следующим правилам. **Всегда измеряй** — оптимизация на глаз это всегда плохая идея. После того как ты посмотришь одинаковые анимации несколько раз, тебе начнет казаться, что они идут быстрее. Числа не лгут. Используйте инструменты, к которым мы скоро перейдем, и измерьте несколько раз, как работает ваше приложение до и после изменений. **Используй медленные устройства** — если вы действительно хотите найти все слабые места, медленные устройства больше помогут вам в этом. С более новыми и мощными устройствами можно не так волноваться из-за вопросов производительности, но не все пользователи пользуются последними и лучшими моделями. **Компромиссы** — оптимизация производительности построена на компромиссах. Ты оптимизируешь одно, но ценой чего-то другого. Во многих случаях этой другой вещью может быть ваше время, потраченное на поиски и исправления, или качество ваших растровых изображений, или объем данных, которые вы должны хранить в определенных структурах. Будьте готовы к таким жертвам. [Читать дальше →][3]

[1]: http://www.edsd.ru/
[2]: https://habrastorage.org/files/5ad/e29/9c0/5ade299c03474986904ddcb40a4553ca.jpg
[3]: http://habrahabr.ru/post/271761/#habracut

[>] Сравнительный анализ покупательских корзин
habra.15
habrabot(difrex,1) — All
2015-11-26 17:00:03


Покупки каждого клиента в магазине только на первый взгляд кажутся уникальными. У покупателей вырабатываются одинаковые модели поведения на основе потребностей, например, покупка молока и хлеба через день, пачки сигарет каждый вечер, шоколадки к чаю, йогурта и круассана к обеду и т.п. А поскольку, так или иначе, потребности людей совпадают, мы можем говорить о типичном покупательском поведении в определенных условиях. [][1]



Анализ покупательских корзин предполагает изучение связей и закономерностей в поведении клиентов торговой сети. Результаты анализа помогают формировать целевую маркетинговую активность, создавать персонализированные предложения и планировать промо для увеличения среднего чека и прибыли. Анализ покупательских корзин мы уже описали [тут][2], а в данной статье, мы рассмотрим сравнение типичных корзин и возможности использования результатов в бизнес-процессах ритейла. Возможность визуализации и сравнения корзин со схожими товарами помогает ритейлеру быстро выделить закономерности в покупательском поведении и принять нужные решения для оптимизации своей деятельности. [Читать дальше →][3]

[1]: http://habrahabr.ru/company/datawiz/blog/271757/
[2]: http://habrahabr.ru/company/datawiz/blog/270503/
[3]: http://habrahabr.ru/post/271757/#habracut

[>] [Из песочницы] Система автоматического реферирования для трех языков
habra.15
habrabot(difrex,1) — All
2015-11-26 17:00:03


Я хочу рассказать о разработанном мной сервисе реферирования новостных текстов на английском, русском и немецком языках. Системы автоматического реферирования (резюмирования) (САР) — тема довольно специфическая и будет интересна в основном тем, кто занимается автоматической обработкой языка. Хотя идеально исполненный саммарайзер мог бы стать полезным помощником в сферах, где необходимо преодолеть информационный перегруз и быстро принять решение о том, какая информация стоит дальнейшего рассмотрения. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/271771/#habracut

[>] [Перевод] Особенности (traits) в Perl 6 – метаданные вместе с символом
habra.15
habrabot(difrex,1) — All
2015-11-26 17:00:03


Особенности (Traits) – это удобный и расширяемый способ присоединения метаданных к различным видам объектов в Perl 6. Рассмотрим пример особенности с is cached, автоматически кеширующей возвращаемое функцией значение в зависимости от переданных аргументов.

# следующий код вызывается, когда к функции
# добавляется 'is cached'
multi sub trait_mod:<is>(Routine $r, :$cached!) {
my %cache;
# обернём функцию в блок, который
$r.wrap(-> $arg {
# ищет аргумент в кеше
%cache{$arg}:exists
?? %cache{$arg}
# ... и вызывает оригинал, если он не найден
!! (%cache{$arg} = callwith($arg))
}
);
}

# пример применения:
sub fib($x) is cached {
say("fib($x)");
$x <= 1 ?? 1 !! fib($x - 1) + fib($x - 2);
}

# для всех значений от 0 до 10 происходит лишь по одному вызову
say fib(10);


[Читать дальше →][1]

[1]: http://habrahabr.ru/post/271711/#habracut

[>] WifiOTP: Удобная двухфакторная аутентификация с помощью Wi-Fi SSID
habra.15
habrabot(difrex,1) — All
2015-11-26 17:30:04


![][1]

### Проблема: двухфакторная аутентификация слишком сложна для большинства пользователей

Классическая двухфакторная аутентификация подразумевает достаточно утомительную для пользователей процедуру. Опишем последовательность действий, необходимых для входа в тот же Gmail на персональном компьютере с использованием мобильного телефона в качестве генератора одноразовых паролей (OTP). После входа с помощью первого фактора (пароля), надо: 1) Найти телефон 2) Разблокировать его 3) Найти приложение-OTP генератор (например, Google Authenticator или Token2 Mobile OTP) 4) Подсмотреть OTP и ввести его с клавиатуры Примерно так же «сложно» с аппаратными ключами стандарта TOTP/HOTP (с U2F ключами чуть проще). Понятно, что у всего есть своя цена, но для обычных пользователей, особенно не сталкивавшихся прежде с компрометацией учетных записей, эта мера кажется лишней. Неудивительно, что в случаях, где двухфакторная аутентификация необязательна, только небольшой процент пользователей активирует эту опцию. По данным исследователей, в случае с Gmail, это около 6% [1]. В целом, для решения этой проблемы надо только найти альтернативный канал между основной системой (в нашем случае браузер на компьютере) и ключом (мобильным приложением). [Читать дальше →][2]

[1]: https://habrastorage.org/files/265/8b9/6ee/2658b96ee3ac48f39986d5f18b5aee8c.png
[2]: http://habrahabr.ru/post/271769/#habracut

[>] Успешное внедрение SIEM. Часть 1
habra.15
habrabot(difrex,1) — All
2015-11-26 17:30:04


Всем привет. Так получилось, что последние несколько лет провел в процессе внедрения SIEM Arcsight ESM в одном крупном телекоммуникационном провайдере. Считаю, что сделал это весьма успешно и в итоге ушел на несколько другую стезю, т.к. уперся в некоторый потолок, который есть в России в целом по направлению безопасности. Для того, чтобы не сложилось ложного понимания у читателя уточню, что я работал именно внутри компании, а не на проекте от системного интегратора и SIEM использовалась исключительно для внутренних нужд, а не для создания коммерческого Security Operation Center (далее SOC). В целом тематика внедрения и использования SIEM освещена слабо, да и в целом те инсталляции, которые я видел обычно не приносили достаточной эффективности тем кто ее внедрял. Мне с коллегами на мой взгляд удалось реализовать свой собственный SOC ядром, которого является SIEM, приносящий огромную пользу не только отделу ИБ, но и другим отделам в частности и всей компании в целом, включая руководство. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/271745/#habracut

[>] Демонстрация решения ІXIA для нагрузочных тестов
habra.15
habrabot(difrex,1) — All
2015-11-26 17:30:04


[Здесь][1] мы уже начали цикл публикаций, о таком вендоре как ІXIA. Компания разрабатывает и поставляет на рынок решения для самых разнообразных нагрузочных тестов любых ИТ систем. Сегодня у нас видеозапись презентации на стенде IXIA, на выставке [МУК Экспо 2015][2]. Состоит из двух частей – обзор решений, и живая демонстрация решения ([с 10 минуты][3]): IXIA будет нагружать оборудование Juniper Вот видео




Для тех, кто не хочет смотреть все видео — под катом расшифровка со скриншотами [Читать дальше →][4]

[1]: http://habrahabr.ru/company/muk/blog/266533/
[2]: http://expo.muk.ua/
[3]: https://youtu.be/tzwfmgrFX_E?t=10m2s
[4]: http://habrahabr.ru/post/271577/#habracut

[>] Нагрузим все: демонстрация решения ІXIA для нагрузочных тестов
habra.15
habrabot(difrex,1) — All
2015-11-26 22:30:02


[Здесь][1] мы уже начали цикл публикаций, о таком вендоре как ІXIA. Компания разрабатывает и поставляет на рынок решения для самых разнообразных нагрузочных тестов любых ИТ систем. Сегодня у нас видеозапись презентации на стенде IXIA, на выставке [МУК Экспо 2015][2]. Состоит из двух частей – обзор решений, и живая демонстрация решения ([с 10 минуты][3]): IXIA будет нагружать оборудование Juniper Вот видео




Для тех, кто не хочет смотреть все видео — под катом расшифровка со скриншотами [Читать дальше →][4]

[1]: http://habrahabr.ru/company/muk/blog/266533/
[2]: http://expo.muk.ua/
[3]: https://youtu.be/tzwfmgrFX_E?t=10m2s
[4]: http://habrahabr.ru/post/271577/#habracut

[>] [Перевод] Сегодняшний мир — это amd64, armv7 и aarch64. Всё остальное мертво, Джим
habra.15
habrabot(difrex,1) — All
2015-11-27 05:30:03


_Вашему вниманию предлагается перевод прощального письма Миода Валлата, разработчика OpenBSD в течение 15+ лет, [покинувшего проект][1] неделю назад. Письмо, изначально адресованное лично некоему Джиму, рассказывает историю о том, куда порой приводят благие намерения, и вызвало резонанс среди пользователей [Reddit][2] и [HackerNews][3]. Учтите — высказанное мнение субъективно, и, по словам самого автора, "[вы имеете право с ним не согласиться][4]"._ Сегодняшний мир — это amd64 (_по-другому x64, или x86-64_), armv7 и, в скором будущем, aarch64 (_64-битный ARMv8_). Всё остальное мертво, Джим. Никто не вкладывает достаточно денег и мыслительного труда в прочие архитектуры. В действительности, лишь небольшая часть людей в курсе существования остальной части экосистемы (mips, power8, ...), и все равно никому нет до них дела. Поддержка устаревшей платформы на плаву — это весело, поскольку это напоминает тебе о 90-ых, когда существовал большой выбор «железных» платформ, с приблизительно одинаковым соотношением цены/мощности. В конце концов, дешевые PC убили практически всю конкуренцию, а рынок смартфонов дал ARM нездоровую долю рынка в мире встраиваемых систем. Затем, спустя некоторое время, веселье подходит к концу, поскольку никто не пишет код, держа в уме твою платформу, — ведь она не считается достаточно мощной, а современные компиляторы больше ее не поддерживают (или они генерируют для нее нерабочий код, что на деле еще хуже). У твоей платформы есть аппаратные границы в несколько сотен MB физической памяти? Тебе не удастся запустить на ней веб-браузер или даже программу для просмотра PDF. Кто-нибудь все еще запускает _testsuite_ из последней версии _gcc_ на твоей платформе? Нет? Прости, чувак, но [вот тебе «никель» (_5 центов_), сходи купи себе уже компьютер получше][5]… [Читать дальше →][6]

[1]: https://twitter.com/MiodVallat/status/667395820770209792
[2]: https://www.reddit.com/r/linux/comments/3u7z6c/todays_world_is_amd64_armv7_and_soon_aarch64
[3]: https://news.ycombinator.com/item?id=10633017
[4]: https://twitter.com/MiodVallat/)status/669253976261570561
[5]: http://static.flickr.com/87/240803829_9212773615_o.png
[6]: http://habrahabr.ru/post/271815/#habracut

[>] В 600 000 модемах «Arris» обнаружили бекдор в бекдоре
habra.15
habrabot(difrex,1) — All
2015-11-27 12:00:02


![image][1] По мнению специалиста в области безопасности, 600 000 кабельных модемов Arris удивят пользователей малоприятным сюрпризом под названием «бэкдор в бэкдоре». Тестировщик ПО из Globo TV Бернардо Родригес опубликовал отчет о скрытых библиотеках, обнаруженных в трех кабельных модемах Arris. В свою очередь, благодаря поисковой системе Shodan, позволяющей исследовать данные о всех подключенных к сети устройствах, были выявлены аналогичные дефекты в 600 000 модемах. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/832/8d3/0bd/8328d30bda5b014e848437e1eea3a654.jpg
[2]: http://habrahabr.ru/post/271825/#habracut

[>] Социальная инженерия из первых рук
habra.15
habrabot(difrex,1) — All
2015-11-27 12:30:02


Кевину Митнику, родоначальнику социальной инженерии, принадлежат золотые слова:

> Социальный инженер задумал заполучить проект (исходники) Вашего нового продукта за 2 месяца до релиза.
>
>
>
> Что остановит его?
>
>
>
> Ваш файервол? Нет.
>
>
>
> Мощная система идентификации? Нет.
>
>
>
> Система обнаружения вторжений? Нет.
>
>
>
> Шифрование данных? Нет.
>
>
>
> Ограничение доступа к номерам дозвона модемов? Нет.
>
>
>
> Кодовые имена серверов, которые затрудняют определение местонахождения проекта искомого продукта? Нет.
>
>
>
> Смысл здесь в том, что никакая технология в мире не сможет противостоять атаке социального инженера.

![][1] Однако частично обезопасить себя всё же можно – изучив, чем движим социальный инженер, как он мыслит и действует, какими приёмами пользуется. Зная это, можно уберечь себя от атак социальных инженеров. Подробно об этом можно почитать в книге про Кевина Митника «Искусство обмана». Однако поскольку книги читать мало кто любит, можно посмотреть фильм «Взлом», где хорошо проиллюстрированы приёмы, которыми пользовался Кевин. Ниже представлены ключевые видеофрагменты из этого фильма. Их вполне можно использовать при проведении корпоративных тренингов по информационной безопасности. [Читать дальше →][2]

[1]: https://habrastorage.org/files/87a/14d/dfb/87a14ddfbf7d406abb5d01db24ef2fb9.jpg
[2]: http://habrahabr.ru/post/271717/#habracut

[>] Asterisk: Приоритезация VoIP трафика и резервирование доступа в Интернет двух провайдеров на MikroTik
habra.15
habrabot(difrex,1) — All
2015-11-27 13:30:02


Казалось бы вещи, вынесенные в заголовок, достаточно тривиальны и описаны во множестве мест глобальной сети, но это только на первый взгляд. Опробовав наиболее часто встречающиеся советы я обнаружил несколько «подводных камней», глыб и даже скальных образований. Но это все слова, ближе к делу. Достаточно распространенная ситуация — Asterisk внутри ЛКС, за маршрутизатором MikroTik. Дабы выделить трафик сервера, где установлена PBX, администратор отрезает часть канала провайдера выделяя его исключительно для конкретного IP. Или другая реализация, когда нужный трафик определяется не только по IP-адресу PBX, но и по размеру пакетов и протоколу. Попробовали — работает. Можно забыть? А вот и нет. Что если администратору захочется слить что-то из Интернет находясь в консольке сервера, или наоборот отправить куда-либо в Интернет большое количество траффика? Правильно — он приоритезируется на MikroTik так же как и полезный трафик от PBX, что в итоге приведет к проблемам с IP-телефонией. Решение здесь старо как сам IPv4 — метить трафик на сервере с Asterisk генерируемый только ею, и так, чтобы MikroTik это мог «увидеть», отматчить(простите за столь грубый англицизм) и приоритезировать только его. Следующим пунктом у нас идет резервирование каналов от двух интернет-провайдеров. Думаю что каждому системному администратору, использующему в своем хозяйстве маршрутизаторы MikroTik, знаком скрипт из wiki — [wiki.mikrotik.com/wiki/Failover\_Scripting][1] Он всем хорош, но как и в предыдущей ситуации есть ряд «но». Наиболее весомому из них имя «Connection tracking» и заключается оно вот в чем: когда наш основной ISP изволит отдохнуть от трудов праведных, траффик переключается на резервного. Все вроде бы довольны, ютуб работает, яп тоже, но сколько бы мы не кричали



и в отчаянии не пытались применить магию высших порядков



SIP-регистрации не поднимаются. А дело в том, что в механизме «Connection tracking» остались висеть записи от «старого»(основного) интернет-канала и их нужно удалить, после чего регистрации успешно поднимутся и звонки начнут проходить. Если вам интересно как доказать MikroTik'у кто все-таки верблюд, а так же как автоматизировать в скрипте сброс «старых» соединений, то вам прямо под кат. [Читать дальше →][2]

[1]: http://wiki.mikrotik.com/wiki/Failover_Scripting
[2]: http://habrahabr.ru/post/271747/#habracut

[>] Как мы себя заново писали, или как потерять исходники и не подать виду
habra.15
habrabot(difrex,1) — All
2015-11-27 13:30:02


![][1] Был прекрасный майский день. Мой взгляд случайно упал на чат ребят с крайнего сервера. У них майский день был не таким прекрасным: во время перераскладки второстепенного сервиса упал сервис авторизации, связанный с ним постольку-поскольку. Цимес ситуации в том, что падающую часть сервиса авторизации никто не поддерживает, он перешел к нам по наследству и никогда особо не сбоил. Меня увлекло чтение детектива поиска причин, и до определенного момента я был пассивным читателем — пока не увидел фразу нашего админа, наполненную приобретенной сединой его волос: «За час натекает 800+ потоков». [Читать дальше →][2]

[1]: https://habrastorage.org/files/333/418/a11/333418a118f2439393bc8bac6e60c479.jpg
[2]: http://habrahabr.ru/post/271829/#habracut

[>] Автомобильная безопасность: какие уроки мы можем вынести из отзыва машин?
habra.15
habrabot(difrex,1) — All
2015-11-27 14:00:03


Cтатью про автомобильную безопасность я решил написать после новости о том, что серия автомобилей Chrysler была [отозвана][1] из-за уязвимости в программном обеспечении. По разным причинам она пылилась в полусыром состоянии еще с лета, и вот наконец-то я нашел время между поездками ее дописать и опубликовать. Нет, не угадали, это не будет статья про уязвимости в микроконтроллерах, об этом и так уже написано столько, что хватит на целую книгу. Я же хочу рассмотреть проблему с другой стороны. Конечно, вы слышали о двух хакерах, которые перехватили управление джипом, ведь об этом писали все. Я хотел копнуть глубже и предположить, что не именно эта, но другие схожие проблемы могут быть не случайными, а запланированным результатом атаки. То есть, теоретически, атакующий может намеренно внедрить уязвимость в продукцию. Хотя пока это больше напоминает сценарий новой серии Мистера Робота, [но скандал][2], связанный с другим крупным автоконцерном, Volkswagen, показывает, что подобную атаку вполне можно провернуть и в реальности (окей, если не сейчас, то уже в ближайшем будущем). ![image][3] [Читать дальше →][4]

[1]: http://www.forbes.com/sites/thomasbrewster/2015/07/24/chrysler-recall-exploit/
[2]: http://www.theverge.com/2015/11/2/9659382/volkswagen-diesel-audi-porsche-3-liter-emissions-cheat-defeat-device-epa/in/9148832
[3]: https://habrastorage.org/getpro/habr/post_images/b8c/87f/343/b8c87f3433c8e9746823ce7f43a95a1a.png
[4]: http://habrahabr.ru/post/271785/#habracut

[>] [Из песочницы] Пользуйтесь подсветкой кода
habra.15
habrabot(difrex,1) — All
2015-11-27 15:00:02


_Это обзор и частичный перевод статьи Advait Sarkar из Computer Laboratory, University of Cambridge [«The impact of syntax colouring on program comprehension»][1]._

#### Краткое содержание

Взяли 10 случайных «computer science» студентов-магистров из University of Cambridge (на самом деле 7, так как 3 очкарика оказались частично несовместимы с оборудованием Tobii2 X120 eye tracker). Предложили разбираться с короткими вычислительными задачами на Python (надо было назвать корректный результат выполнения кода). Замеряли время выполнения задач. Не давали ничего записывать на бумажке (только думать, можно вслух). Следили за глазами с помощью упомянутой окулографической системы. В конце попросили оценить свой опыт в программировании (да, с учетом возможного эффект Даннинга — Крюгера).

#### Выводы



* Подсветка помогает быстрее понимать код. На примере 6 задач с общим временем решения в 13 — 20 минут:
* 8\.4 секунды разницы между медианами времени выполнения задачи (с гипотезой, что для больших задач эффект становится заметнее)
* значительное (на 23 штуки) уменьшение количества переключений внимания (переводов и фиксации взгяда с места чтения на различимо другую область задания)
* эффективность помощи обратнопропорциональна квалификации (но нелинейно, т.е. не установлено, что когда-то подсветка перестанет помогать)
* работает только в том случае, если вы знаете что каким цветом подсвечивается
* мозг может игнорировать подсказки подсветки, если вы «ищете свободным поиском» (т.е. подсветка не мешает размышлять)

Наглядный пример того, как подсветка позволяет сосредотачиваться на содержании кода, меньше внимания уделяя знакомым ключевым словам: ![][2] В общем, все хорошо, всем цветов! Графики, цифры и более подробные выводы из статьи: [Читать дальше →][3]

[1]: http://ppig.org/sites/default/files/2015-PPIG-26th-Sarkar.pdf
[2]: https://habrastorage.org/files/90b/571/f9c/90b571f9c4924d8e810472d9e2d38caa.png
[3]: http://habrahabr.ru/post/271841/#habracut

[>] Программы-вымогатели на Smart TV? Можно готовиться, они идут
habra.15
habrabot(difrex,1) — All
2015-11-27 16:00:02


![][1] Многие специалисты по информационной безопасности назвали криптовымогатели крупнейшей угрозой 2016 года. При этом проблема касается уже не только персональных компьютеров или смартфонов. Опасности подвергаются даже умные телевизоры. На днях компания Symantec продемонстрировала, насколько легко ransomware может проникнуть на умный ТВ, и насколько сложно от этого ПО избавиться. Представитель компании, который занимался изучением этой проблемы, не назвал модель и производителя телевизора, по понятным причинам. Но он сообщил, что в качестве программной оболочки на этом ТВ используется модифицированная версия Google Android, котору часто используют производители телевизоров. Для того чтобы заразить ни в чем не повинный телевизор, сотрудник Symantec по имени Кандид Вуист (Candid Wueest) использовал простенький криптовымогатель. Это программное обеспечение после установки на ТВ стало показывать сообщение о необходимости переслать определенную сумму денег каждые несколько секунд, перекрывая изображение на ТВ. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/0e9/a23/360/0e9a23360cbba65978edb243268a203e.jpg
[2]: http://habrahabr.ru/post/271831/#habracut

[>] [Из песочницы] Утечка 191 000 адресов электронной почты из резюме Авито
habra.15
habrabot(difrex,1) — All
2015-11-27 17:30:03


Около недели назад я при гуглении неизвестного номера (из пропущенных звонков) внезапно наткнулся на него в выдаче в виде PDF файла с Авито, который выдавал ошибку при переходе по прямой ссылке, но попал в кэш. Выглядело это как то так: ![Пример выдачи][1] Общий вид ссылки: «m.avito.ru/[адрес объявления]/export/pdf». Всё можно найти по запросу: «site:avito.ru inurl:export/pdf» ([Google][2], [Яндекс][3]). Если Google обещает 191 000 результатов (реально выводит около 640, видимо срабатывает ограничение на выдачу), то в Яндексе всего 152 ответа и кэш недоступен в явном виде (но сами адреса легко вытянуть немного модифицированными запросами вроде «site:avito.ru inurl:export/pdf [mail][4].ru»). Период сообщений где-то с августа по ноябрь этого года. Официальный ответ компании: ![Официальный ответ][5] Так что это наши с вами проблемы, что компания допустила утечку наших данных в публичную сеть, всё нормально. [Читать дальше →][6]

[1]: https://habrastorage.org/files/f59/95f/4d2/f5995f4d209a4eb8a33cf691862b8807.png
[2]: https://www.google.ru/search?q=site:avito.ru inurl:export/pdf
[3]: https://yandex.ru/search/?text=site%3Aavito.ru%20inurl%3Aexport%2Fpdf
[4]: http://habrahabr.ru/users/mail/
[5]: https://habrastorage.org/files/361/225/f26/361225f260134a888c614547721c023a.png
[6]: http://habrahabr.ru/post/271859/#habracut

[>] [Перевод] Разработка быстрых мобильных приложений на Android. Часть вторая
habra.15
habrabot(difrex,1) — All
2015-11-27 18:00:02


В [Edison][1] мы часто сталкиваемся с оптимизацией мобильных приложений и хотим поделиться материалом, который считаем крайне полезным, если вы решаете одну из двух задач: а) хотите чтобы приложение меньше тормозило; б) хотите сделать красивый, мягкий и гладкий интерфейс для массового пользователя. Предлагаем вашему вниманию первую часть перевода статьи Udi Cohen, которую мы использовали как пособие для обучения молодых коллег оптимизации под Android. (Читать [первую часть][2]) ![][3]

#### **Общие советы по работе с памятью**

Вот несколько простых рекомендаций, которые я использую при написании кода.

* **Перечисления** уже являются предметом горячих споров о производительности. Вот [видео][4], в котором обсуждается размер памяти, который тратят перечисления, и [обсуждение][5] данного видео и некоторой информации, потенциально вводящей в заблуждение. Используют ли перечисления больше памяти, чем обычные константы? Определенно. Плохо ли это? Не обязательно. Если вы пишете библиотеку и нуждаетесь в сильной типобезопасности, она могла бы оправдать их использование по сравнению с другими решениями, такими как [@IntDef][6]. Если у вас просто есть куча констант, которые могут быть сгруппированы вместе, использование перечислений будет не очень мудрым решением. Как обычно, есть компромисс, который нужно учесть при принятии решения.
* **Обёртка** — это автоматическое конвертирование примитивных типов к их объектному представлению (например, int -> Integer). Каждый примитивный тип «оборачивается» в объектное представление, создается новый объект (шокирует, я знаю). Если у нас есть много таких объектов, вызов сборщика мусора будет выполняться чаще. Легко не заметить количество оборачиваний, потому что это делается автоматически для нас при назначении примитивному типу объекта. В качестве решения, постарайтесь использовать соответствующие типы. Если вы используете примитивные типы в своем приложении, постарайтесь избежать их обёртки без реальной на то необходимости. Вы можете использовать инструменты профилирования памяти, чтобы найти объекты, представляющие примитивные типы. Вы также можете использовать Traceview и искать Integer.valueOf(), Long.valueOf() и пр.
* **HashMap vs ArrayMap / Sparse\*Array** — также, как и в случае с обёртками, использование HashMap требует использование объектов в качестве ключей. Если мы используем примитивный тип int в своем приложении, он автоматически оборачивается в Integer при взаимодействии с HashMap, в этом случае мы могли бы использовать SparseIntArray. В случае, когда мы по-прежнему используем объекты в качестве ключей, мы можем использовать ArrayMap. Оба варианта требуют меньший объем памяти, чем HashMap, но они [работают по-другому][7], что делает их более эффективными в потреблении памяти ценой уменьшения скорости. Обе альтернативы имеют меньший отпечаток памяти, чем HashMap, но время, требуемое для извлечения элемента или выделения памяти, немного выше, чем у HashMap. Если у вас нет более 1000 элементов, различия во времени выполнения не существенны, что делает жизнеспособными эти два вариантом.
* **Осознание контекста** — как вы видели ранее, относительно легко создать утечки памяти. Вы, возможно, не будете удивлены, узнав, что активити являются наиболее частой причиной утечек памяти в Android(!). Их утечки также очень дорого стоят, так как они содержат все представления иерархии их UI, которые сами по себе могут занять много места. Убедитесь в том, что понимаете, что происходит в активити. Если ссылка на объект в кэше и этот объект живет дольше, чем ваша активити, без очистки этой ссылки вы получите утечку памяти.
* **Избегайте использование нестатических внутренних классов**. При создании нестатического внутреннего класса и его экземпляра вы создаете неявную ссылку на ваш внешний класс. Если экземпляр внутреннего класса необходим на более длительный период времени, чем внешний класс, внешний класс будет продолжать находиться в памяти, даже если он больше не нужен. Например, создается нестатический класса, который наследует AsyncTask внутри класса Activity, затем происходит переход к новой асинхронной задаче и, пока она длится, завершение работы активити. Пока длится эта асинхронная задача, она будет сохранять активити живой. Решение простое — не делайте этого, объявите внутренний статический класс, если это необходимо.

[Читать дальше →][8]

[1]: http://www.edsd.ru/
[2]: http://habrahabr.ru/company/edison/blog/271761/
[3]: https://habrastorage.org/files/499/b8f/85f/499b8f85f84f44eb84918af27e4a13dd.jpg
[4]: https://youtu.be/Hzs6OBcvNQE
[5]: https://plus.google.com/+JakeWharton/posts/bTtjuFia5wm
[6]: https://developer.android.com/reference/android/support/annotation/IntDef.html
[7]: https://www.youtube.com/watch?v=ORgucLTtTDI
[8]: http://habrahabr.ru/post/271811/#habracut

Pages: 1 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37