RSS
Pages: 1 ... 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 ... 210
[>] Microsoft выпустила обновления для своих продуктов
habra.16
habrabot(difrex,1) — All
2016-09-15 19:30:04


![][1]Microsoft [обновила][2] свои продукты, выпустив 14 обновлений, 7 из которых получили статус Critical. Обновления адресуются веб-браузерам Internet Explorer и Edge, различным компонентам Windows, Office, а также Exchange Server. Закрытая обновлением [MS16-104][3] уязвимость CVE-2016-3351 типа Information Disclosure в веб-браузере Internet Explorer 9-11 используется злоумышленниками в направленных атаках. Одно из обновлений [MS16-111][4] исправляет Local Privilege Escalation (LPE) уязвимости в загрузчике Windows (Winload.efi), а также в файлах ядра ntoskrnl и ntdll. Уязвимости позволяют атакующему получить максимальные права SYSTEM в системе.

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

[1]: https://habrastorage.org/files/068/900/8a3/0689008a34504389b4ff5d0a5d2039bf.jpeg
[2]: https://technet.microsoft.com/library/security/ms16-sep
[3]: https://technet.microsoft.com/library/security/MS16-104
[4]: https://technet.microsoft.com/library/security/MS16-111
[5]: https://habrahabr.ru/post/310094/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Изменение в PHP 7, ломающее при обновлении с пятой версии некоторые сервера на Ubuntu
habra.16
habrabot(difrex,1) — All
2016-09-16 04:30:04


Это явно не заслуживает отдельной статьи на Хабре, но ошибка может коснуться большого количества людей, поэтому я всё-таки решил написать.



:


> 7\.0.0 Hash marks (#) are no longer recognized as comments.

Казалось бы, что такого? Админы на тестовом сервере обнаружат появившиеся ошибки в конфигах и быстро поправят. Но тут вступает в дело одна неприятная особенность php-fpm: он отказывается запускаться с некорректным файлом `php-fpm.conf`, но спокойно запустится с некорректным `php.ini`, проигнорировав все его настройки и используя значения по умолчанию. Ошибка не будет видна в консоли, так как её проглотит скрипт запуска службы, и не будет записана в лог php-fpm.


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

[1]: https://habrahabr.ru/post/310136/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] RailsClub 2016: Интервью c Алексеем Тактаровым
habra.16
habrabot(difrex,1) — All
2016-09-16 10:30:04


Всем привет! До [**RailsClub 2016**][1] осталось чуть больше месяца. Самое время регистрироваться!

Мы уже рассказали, что в этом году к нам приедут выступать Юкихиро Мацумото, Акира Мацуда, Шон Гриффин, Стив Клабник и Зак Бригс. А сегодня мы начинаем публиковать традиционные интервью с нашими докладчиками. В этом году сделать разговор со спикерами интересным нам помогает подкаст [**RubyNoName**][2].

![image][3]Ребята записали первый разговор, с **Алексеем Тактаровым**, фронтенд(!) разработчиком из These Guys. Алексей специализируется на разработке single-page приложений, пропагандирует чистоту и простоту дизайна и кода. Принимал участие в проектах Смартомато, ficus.io и resume.io, работал со Злыми марсианами; его основные инструменты — Ember.js, React и Ruby on Rails. В свободное время занимается южной около-фронтенд тусовкой Code Hipsters.

Мы впервые ставим в программу бэкенд конференции доклад про фронт. Никуда без него в 2016 году :). Лешин доклад называется "**Дайте фронтенду в Rails второй шанс!**".
[Читать дальше →][4]

[1]: http://railsclub.ru/
[2]: http://rubynoname.ru/
[3]: https://habrastorage.org/getpro/habr/post_images/f03/9c8/b15/f039c8b159b89f56d2c755a2c8825ce5.jpg
[4]: https://habrahabr.ru/post/310104/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Security Week 37: патчи Windows станут кумулятивнее, Google против HTTP, уязвимость в MySQL
habra.16
habrabot(difrex,1) — All
2016-09-16 12:30:04


![][1]С октября Microsoft меняет политику доставки обновлений для ряда операционных систем ([новость][2], [пост][3] на Technet). С целью упрощения процесса обновления (и, вероятно, по многочисленным заявкам трудящихся) Windows 7 и 8.1, а также Windows Server 2008 и 2012 будут обновляться одним большим патчем раз в месяц. Преимущества такого подхода очевидны: достаточно посмотреть на дату последнего обновления, чтобы понять актуальность установленных патчей.

Очевидны и недостатки: возможности установки патчей по выбору больше не будет, все будет загружаться и ставиться одним куском. Если какой-то патч оказывается несовместим с установленным ПО или определенными настройками системы — можно будет отказаться только от всего ежемесячного апдейта сразу. Именно с установкой по выбору Microsoft и планирует бороться: ведь по сути такой подход приводит к фрагментации, вместо одной версии Windows приходится иметь дело чуть ли не с десятком, что усложняет и поддержку, и тестирование.

Впрочем, остается одна лазейка: кумулятивный патч включает в себя и обновления безопасности, и обновления, направленные на повышение надежности работы. Можно выбрать и устанавливать только security-фиксы и больше ничего, но эта опция рассчитана на клиентов из числа крупных компаний. Новая политика может выйти боком при использовании специализированного софта с жесткими требованиями по совместимости. Примеров, когда выход патча ломал совместимость немало: можно вспомнить [проблемы][4] с софтом от Citrix после апдейта Windows 10, или скажем [поломку][5] системы [конфигурации][6] через Powershell (вот тут интересный момент — по ссылке левая рука Microsoft жалуется на баги у правой).
[Читать дальше →][7]

[1]: https://habrastorage.org/files/5f1/06f/e73/5f106fe73b2d472c9ec09fe939e3d25d.jpg
[2]: https://threatpost.com/new-windows-patch-policy-at-odds-with-acceptable-risk/120491/
[3]: https://blogs.technet.microsoft.com/windowsitpro/2016/08/15/further-simplifying-servicing-model-for-windows-7-and-windows-8-1/
[4]: http://support.citrix.com/article/CTX205398
[5]: https://blogs.msdn.microsoft.com/powershell/2016/08/23/powershell-dsc-broken-in-kb3176932/
[6]: https://msdn.microsoft.com/en-us/powershell/dsc/overview
[7]: https://habrahabr.ru/post/310128/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Особенности использования машинного обучения при защите от DDoS-атак
habra.16
habrabot(difrex,1) — All
2016-09-16 12:30:04


![][1]

_Этот пост подготовлен по материалам выступления [Константина Игнатова][2], Qrator Labs, на [партнёрской конференции «1С-Битрикс»][3]._

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

Как правило, владелец ресурса узнает об атаке только в тот момент, когда ему начинают звонить недовольные пользователи. Эту ситуацию большинство компаний встречают неподготовленными. В момент пожара разрабатывать план спасения поздно, и все бросаются на поиски универсального средства, которое окажется под рукой. Но «волшебной пилюли» против DDoS, которая мгновенно бы устранила проблему, нет. Готовиться необходимо заранее.
[Читать дальше →][4]

[1]: https://habrastorage.org/files/6c9/0dc/bfa/6c90dcbfa8ca4a6ea174c8d40b29c061.jpg
[2]: https://habrahabr.ru/users/kpp/
[3]: http://conf.1c-bitrix.ru/winter2016/agenda/
[4]: https://habrahabr.ru/post/310084/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Долг знаний
habra.16
habrabot(difrex,1) — All
2016-09-16 13:00:03


Если вы — программист, то вам приходится учиться **очень** много. Вспомните свой первый "Hello, World!". У меня это было в четвертом классе. Мы изучали С++, и наш учитель написал программу от руки на доске. Мы использовали Turbo C++, копировали ее на дискету, чтобы экспериментировать дома.



![img][1]



В том время я не думал, что Turbo C++ это _редактор_. Я не думал о нем _как об IDE_. Для меня **Turbo C++ был языком C++**. Это был единственный известный мне способ программировать. Я не знал, что значит "компиляция", не знал, зачем нужен `#include`  в начале файла. Я не понимал, что делает `main` и что `printf` может принимать любое количество аргументов. Я просто скопировал программу с доски, нажал `Run` и увидел вывод на экране.



Это круто. Так и нужно учить программированию. Нужно делать что-то до того когда еще не понимаешь, как это работает. Некоторое время нужно умышленно быть в неведении о деталях. Детали отвлекают.

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

[1]: https://habrastorage.org/files/bca/28f/5ce/bca28f5ce8b04cfbbc2838d34a8e57e6.png
[2]: https://habrahabr.ru/post/310158/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Страхи мобильной безопасности
habra.16
habrabot(difrex,1) — All
2016-09-16 14:00:03


![][1]

Гернет Герц, научный сотрудник Калифорнийского университета, предложил такой способ обеспечения мобильной безопасности: сейф с прорезью для мобильного телефона в верхней части. Сейф позволяет задать время, в течение которого телефон будет заблокирован внутри. Его нельзя достать, и нет никакого способа уменьшить заданное время. Пока телефон находится в запертом ящике, и вы им не пользуетесь – ваши данные находятся в безопасности. Своей инсталляцией Герц показывает, что главная уязвимость кроется в самом пользователе. Так ли это, рассуждаем под катом.
[Читать дальше →][2]

[1]: https://habrastorage.org/files/b0c/cfd/426/b0ccfd426bff4c73b14a24f43e240558.jpg
[2]: https://habrahabr.ru/post/310120/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Logeek Night в Воронеже
habra.16
habrabot(difrex,1) — All
2016-09-16 14:30:04


[![][1]][2]

Всем короткой пятницы, хабравчане! Спешим [анонсировать наше мероприятие][3], которое начнется через неделю в Воронеже, в баре PITNICA. Как и всегда, Logeek Night пройдет вечером, с 19:00 до 21:30 в формате двух выступлений и беседы как о выступлениях, так и на смежные темы.
[Читать дальше →][4]

[1]: https://habrastorage.org/files/232/80e/548/23280e5488f74b0f8ebd90bad2778e2e.jpg
[2]: http://career.luxoft.com/lts/logeek/russia/
[3]: http://career.luxoft.com/lts/logeek/russia/
[4]: https://habrahabr.ru/post/310176/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Жаргон функционального программирования
habra.16
habrabot(difrex,1) — All
2016-09-16 14:30:04


![][1]



У функционального программирования много преимуществ, и его популярность постоянно растет. Но, как и у любой парадигмы программирования, у ФП есть свой жаргон. Мы решили сделать небольшой словарь для всех, кто знакомится с ФП.



В примерах используется JavaScript ES2015). ([Почему JavaScript?][2])



_Работа над материалом [продолжается][3]; присылайте свои пулл-реквесты в оригинальный репозиторий на английском языке._



В документе используются термины из спецификации [Fantasy Land spec][4] по мере необходимости.



## Arity (арность)



Количество аргументов функции. От слов унарный, бинарный, тернарный (unary, binary, ternary) и так далее. Это необычное слово, потому что состоит из двух суффиксов: "-ary" и "-ity.". Сложение, к примеру, принимает два аргумента, поэтому это бинарная функция, или функция, у которой арность равна двум. Иногда используют термин "диадный" (dyadic), если предпочитают греческие корни вместо латинских. Функция, которая принимает произвольное количество аргументов называется, соответственно, вариативной (variadic). Но бинарная функция может принимать два и только два аргумента, без учета каррирования или частичного применения.

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

[1]: https://habrastorage.org/files/c94/6aa/c01/c946aac01f494ceb8e9e8f6986802b4c.jpg
[2]: https://github.com/hemanth/functional-programming-jargon/wiki/Why-JavaScript%3F
[3]: https://github.com/hemanth/functional-programming-jargon/issues/20
[4]: https://github.com/fantasyland/fantasy-land
[5]: https://habrahabr.ru/post/310172/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Еще один из способов обойти блокировку PornHub
habra.16
habrabot(difrex,1) — All
2016-09-16 17:30:03


Думаю, все помнят telnet версию SW:New Hope. В связи с блокировкой PornHub'а, возникла идея сделать что-то подобное с их видео. Вооружимся питоном и попробуем реализовать задумку.


Тот самый StarWars.
[Читать дальше →][1]

[1]: https://habrahabr.ru/post/310192/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Новый плагин от Stepik.org для IntelliJ IDEA
habra.16
habrabot(difrex,1) — All
2016-09-16 19:00:03


В сентябре мы выпустили плагин для IntelliJ IDEA с поддержкой Python и Java. О процессе разработки, и о том, почему плагин упростит жизнь учащихся программированию на Stepik.org, расскажем в этой статье.

![][1]
[Подробнее о плагине][2]

[1]: https://habrastorage.org/files/3af/331/407/3af33140760846d28216706f547a1dd1.png
[2]: https://habrahabr.ru/post/310204/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Progrobot: бот справки по языкам программирования
habra.16
habrabot(difrex,1) — All
2016-09-17 10:30:04


Когда пишешь код, регулярно бывает нужно посмотреть справку по конкретной функции, модулю и т.д. Обычно я для этого захожу на cppreference.com или на docs.python.org, но это обычно не мгновенно — требует перехода по нескольким страницам минимум, а в питоновской документации еще и зачастую просто сложно найти нужную информацию на странице, не говоря уж о том, что гугл часто направляет на документацию по второй версии, а не по третьей, и приходится вручную переключать.

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

Так получился бот [@Progrobot][1]. Ему можно отправить название функции и получить ее краткое описание, можно послать название модуля (в питоне) или заголовочного файла (в c++) и получить список всех функций в этом модуле, и т.д. Пока есть справка по c++ (с cppreference) и python3 (с docs.python.org). Еще планировал сделать поиск по stackoverflow, но оказалось, что API-шный поиск работает плохо, да еще и есть жесткое ограничение на количество запросов — короче, пока отключил, потом, может быть, выкачаю offline-базу и допилю.
[Читать дальше →][2]

[1]: https://telegram.me/ProgroBot
[2]: https://habrahabr.ru/post/310162/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Установка своих SSL-сертификатов на файловое хранилище D-Link DNS-320L
habra.16
habrabot(difrex,1) — All
2016-09-17 10:30:04


Прикупил я в свое время (еще до кризисных цен) файловое хранилище D-Link 320L, аж за 2 990 рублей (смотря сегодняшние цены хочется просто плакать). И вот недавно захотел я настроить на нем WebDAV нормальный, да с доступом из вне.

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

[1]: https://habrahabr.ru/post/310202/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Тонкости построения сетевых моделей в Python
habra.16
habrabot(difrex,1) — All
2016-09-17 10:30:04


Что является основным инструментом, который использует руководитель при управлении проектом? Принято считать, что основным инструментом руководителя проекта является календарный план, в основе которого лежит сетевая модель работ по проекту. Однажды мне довелось реализовать сетевую модель работ на языке Python (код и описание [здесь][1]). Ниже приведены уроки, извлеченные по результатам проделанной работы.
[Читать дальше →][2]

[1]: https://github.com/AleksLobzov/predict
[2]: https://habrahabr.ru/post/310216/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Введение в futures-rs: асинхронщина на Rust [перевод]
habra.16
habrabot(difrex,1) — All
2016-09-17 15:30:03


![][1]

Этот документ поможет вам изучить контейнер для языка программирования Rust — `futures`, который обеспечивает реализацию futures и потоков с нулевой стоимостью. Futures доступны во многих других языках программирования, таких как `C++`, `Java`, и `Scala`, и контейнер `futures` черпает вдохновение из библиотек этих языков. Однако он отличается эргономичностью, а также придерживается философии абстракций с нулевой стоимостью, присущей Rust, а именно: для создания и композиции futures не требуется выделений памяти, а для `Task`, управляющего ими, нужна только одна аллокация. Futures должны стать основой асинхронного компонуемого высокопроизводительного ввода/вывода в Rust, и ранние замеры производительности показывают, что простой HTTP сервер, построенный на futures, действительно быстр.


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

[1]: https://habrastorage.org/files/867/e83/06f/867e8306fa7849dea356c6f5d92c5c6e.jpg
[2]: https://habrahabr.ru/post/310234/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Пользователям веб-браузера Tor рекомендуют обновить его как можно скорее
habra.16
habrabot(difrex,1) — All
2016-09-17 16:30:04


![][1]Пользователям веб-браузера Tor [рекомендуют][2] обновить его как можно скорее до актуальной версии 6.0.5. Новая версия веб-браузера включает в себя исправление серьезной уязвимости Firefox с внутренним идентификатором [ESR-45][3], которая позволяет атакующим, получившим в распоряжение действительный или фальшивый цифровой сертификат TLS для веб-сайта addons.mozilla.org, удаленно устанавливать вредоносное ПО через доставку вредоносного обновления для расширения NoScript.

_This release features important security updates to Firefox including the recently disclosed [extension update vulnerability][4]. All users should upgrade as soon as possible._

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

[1]: https://habrastorage.org/files/57b/3f1/74a/57b3f174a5604e0db1ee6955984d3ac4.png
[2]: https://blog.torproject.org/blog/tor-browser-605-released
[3]: https://bugzilla.mozilla.org/show_bug.cgi?id=1303127
[4]: http://seclists.org/dailydave/2016/q3/51
[5]: https://habrahabr.ru/post/310244/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Apple выпустила iOS 10.0.1
habra.16
habrabot(difrex,1) — All
2016-09-17 23:00:04


![][1]Не все пользователи iOS 10, которые обновили недавно свои устройства iDevice, заметили, что они обновились сразу до версии 10.0.1. Apple довольно тихо решила выпустить обновление для iOS 10 в тот же самый день, когда была выпущена версия 10.0.0. Существует несколько причин, по которым Apple вынуждена была выпустить обновление прошивки. Первая заключается в том, что некоторые пользователи iOS 10 [столкнулись][2] с ошибками при обновлении до новой ОС через OTA на своих устройствах. Другая причина менее заметная, но не менее важная. В iOS 10.0.1 Apple во второй раз закрыла ставшую известной уязвимость CVE-2016-4655, которая была «исправлена» в iOS 9.3.5 и использовалась злоумышленниками в сложной направленной атаке Trident для удаленного jailbreak. В частности, уязвимость используется для обхода Kernel ASLR в iOS и делает возможным эксплуатацию другой LPE уязвимости для получения прав root.

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

[1]: https://habrastorage.org/files/ac4/5f5/514/ac45f55148ea411f98c6386254d1ead5.png
[2]: https://habrahabr.ru/company/eset/blog/309948/
[3]: https://habrahabr.ru/post/310238/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Шейпер для Linux в пользовательском пространстве (NFQUEUE-based)
habra.16
habrabot(difrex,1) — All
2016-09-17 23:30:04


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

Как человеку любознательному, всегда было интересно, можно ли сделать процесс настройки шейпинга для небольших сетей проще? Можно ли хотя бы грубо детектировать _важный_ трафик и отделять его от _неважного_ без DPI и сигнатурного анализа? Можно ли шейпить трафик в любых направлениях без создания псевдо-интерфейсов или добавления модулей в ядро? И вот, после некоторых размышлений и гуглежа, решил написать простой шейпер в userspace. Чтоб попробовать ответить на вопросы экспериментом.
[Читать дальше →][1]

[1]: https://habrahabr.ru/post/310242/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Пять перспективных языков программирования со светлым будущим
habra.16
habrabot(difrex,1) — All
2016-09-18 10:00:04


![КДПВ][1]



Если разделять языки программирования по популярности, то они делятся на три эшелона. Первый эшелон включает мейнстрим-языки, такие как Java, JavaScript, Python, Ruby, PHP, C#, C++ и Objective-C. Несмотря на то, что некоторые из ведущих языков [возможно увядают][2], вам лучше знать один или несколько из них, если вы хотите иметь возможность легко найти работу.



Языки второго эшелона пытаются пробиться в мейнстрим, но ещё не добились этого. Они доказали свою состоятельность путем создания сильных сообществ, но они до сих пор не используются большинством консервативных IT-компаний. Scala, Go, Swift, Clojure и Haskell — языки, которые я бы отнёс ко второму эшелону. Некоторые компании используют эти языки для отдельных сервисов, но широкое применение встречается редко (за исключением Swift, который начинает обгонять Objective-C в качестве основного языка для iOS). Go и Swift имеют хорошие шансы на переход из второго эшелона в первый в течение ближайших двух-трёх лет.



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



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


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

[1]: http://techbeacon.com/sites/default/files/styles/article_hero_image__2x/public/field/image/5_emerging_programming_languages_with_a_bright_future.jpg
[2]: http://techbeacon.com/5-programming-languages-are-fading-fast
[3]: https://habrahabr.ru/post/310252/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] REST-сервер и тонкий клиент с использованием vibe-d
habra.16
habrabot(difrex,1) — All
2016-09-18 14:00:04


Доброго времени суток, Хабр! Если Вам хотелось разделить своё приложение на сервер и клиент, если Вы хотите добавить API к своему vibe-сайту или если Вам просто нечего делать.
[Добро пожаловать под кат][1]

[1]: https://habrahabr.ru/post/310268/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Логика сознания. Часть 6. Кора мозга как пространство вычисления смыслов
habra.16
habrabot(difrex,1) — All
2016-09-19 09:00:03


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

Информация, чтобы быть использованной, должна получить интерпретацию. Например, красный сигнал светофора можно интерпретировать как запрет ехать, улыбку как сигнал хорошего расположения и тому подобное. Конкретная интерпретация называется смыслом информации. По крайней мере, такой трактовки придерживается [международная организация по стандартизации][2]: «knowledge concerning objects, such as facts, events, things, processes, or ideas, including concepts, that within a certain context has a particular meaning».
[Читать дальше →][3]

[1]: https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F
[2]: https://www.iso.org/obp/ui/#iso:std:iso-iec:2382:ed-1:v1:en
[3]: https://habrahabr.ru/post/310214/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Наследование реализаций: закопайте стюардессу
habra.16
habrabot(difrex,1) — All
2016-09-19 09:30:03


# Ключевое противоречие ООП



Как известно, классическое ООП покоится на трех китах


1. [Инкапсуляция][1]
2. [Наследование][2]
3. [Полиморфизм][3]

Классическая же реализация по умолчанию:


1. Инкапсуляция — публичные и приватные члены класса
2. Наследование — реализация функционала за счет расширения одного класса-предка, защищенные члены класса.
3. Полиморфизм — виртуальные методы класса-предка.

Но еще [в 1986 году была обозначена серьезнейшая проблема][4], кратко формулируемая так:



### Наследование ломает инкапсуляцию


[Как такое может быть?][5]

[1]: https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
[2]: https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
[3]: https://habrahabr.ru/post/37576/
[4]: http://dl.acm.org/citation.cfm?id=28702
[5]: https://habrahabr.ru/post/310314/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Запускаем Linux на FPGA: Hello, World
habra.16
habrabot(difrex,1) — All
2016-09-19 12:30:04


![image][1]

Вдохновившись серией статей на сайте [проекта Марсоход][2], в которых автор пытается запустить на FPGA-плате Марсоход 2 открытую систему на кристалле [Amber SoC][3] и Linux, я решил попробовать повторить этот опыт на своей плате [Terasic DE2-115][4]. Но, вместо древней как говно мамонта устаревшей версии Linux 2.4.27, я буду запускать последнюю версию Linux на данный момент — 4.8.0-rc5.
[Читать дальше →][5]

[1]: https://habrastorage.org/files/7e2/093/1ef/7e20931ef54540bfb3a7d0a2d052c19b.jpg
[2]: http://marsohod.org/projects/marsohod2/amber-arm-soc
[3]: http://opencores.org/project,amber
[4]: http://de2-115.terasic.com/
[5]: https://habrahabr.ru/post/310056/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Обзор децентрализованных крипто-платформ. Часть1: Waves
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


Этим постом мы — Web-Payment.ru — хотели бы открыть цикл обзоров блокчейн-платформ, основная цель которого — рассказать о возможностях практического применения технологии блокчейн для построения не только отдельных сервисов, но и целых цифровых экосистем. В своих обзорах мы будем рассказывать о системах, которые незаслуженно обделены вниманием на Хабре, но широко известны и обсуждаются в криптовалютной тусовке. В первом материале цикла речь пойдет об open source блокчейн-платформе [Waves][1], которой к июню этого года в рамках краудфандинговой кампании удалось [привлечь][2] финансирование в размере 29 445 BTC, что по действовавшему на тот момент курсу составило более $15 млн. Я решил подробнее ознакомиться с функционалом этой децентрализованной платформы, специализирующейся на модели блокчейн-токенов, основными направлениями ее деятельности, а также стратегическими шагами руководства проекта.

В отличие от базирующегося в Канаде ядра команды Ethereum и немецкой команды Lisk, костяк команды Waves работает в Москве.
[Читать дальше →][3]

[1]: https://wavesplatform.com/
[2]: http://forklog.com/platforma-waves-sobrala-chut-menee-16-mln-v-hode-kraudsejla/
[3]: https://habrahabr.ru/post/310082/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Функции высших порядков и монады для PHP`шников
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


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



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


$jNumber = _do(function() {
$number = yield literal('-')->orElse( literal('+') )->orElse( just('') );
$number .= yield takeOf('[0-9]')->onlyIf( notEmpty() );
if ( yield literal('.')->orElse( just(false) ) ) {
$number .= '.'. yield takeOf('[0-9]');
}
return +$number;
});

_Кроме собственно функционального подхода можно обратить внимание на использование классов для создания DSL-подобного синтаксиса и на использование генераторов для упрощения синтаксиса комбинаторов._

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

[1]: https://habrahabr.ru/post/309962/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Главные характеристики качественного кода
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


![][1]



Как часто вы поражаетесь, читая чужой код, и думаете «господи, ну и каша...». Скорее всего, достаточно часто. И можете ли вы быть уверенным, что никто не думал также когда читал ваш код? Другими словами, насколько вы уверены в чистоте своего кода? Можно быть уверенным только если полностью понимаешь, что значит чистый код.



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



## 1\.Плохой код делает слишком много, чистый код сфокусирован



Каждый класс, метод и любая другая сущность должна оставаться неискаженной. Она должна следовать [принципу единственной обязанности][2]. Вкратце, можно сказать так: если подумать о причинах изменения класса, то нельзя придумать больше одной хорошей причины.



Но я бы не ограничивал определение классами. В свой последней статье [Ральф Вестфал (Ralf Westphal)][3] представил более широкое определение принципа единственной обязанности:


> Функциональная единица на определенном уровне абстракции должна отвечать за один аспект требований системы. Аспект требований это признак или свойство требования, которое может изменяться независимо от других аспектов. [Читать дальше →][4]

[1]: https://habrastorage.org/files/f17/84e/490/f1784e490a254fc582021a28cbb33863.jpg
[2]: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%B5%D0%B4%D0%B8%D0%BD%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BE%D0%B1%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8
[3]: http://www.developerfusion.com/profile/ralfw/
[4]: https://habrahabr.ru/post/310336/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Как я начал писать сторонние проекты, чтобы набраться опыта
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


![][1]
_(Поскольку люди спрашивали: Sublime Text 3 с «Spacegray Light» («платиново-серый светлый») из [Materialize][2] и гарнитура [Ubuntu Mono Bold][3])_

Как и большинство других студентов, обучавшихся по программе компьютерных наук в Калифорнийском университете в Сан-Диего, я в течение нескольких лет шёл через различные курсы просто «накатом». Я никогда не был _ни хорошим, ни плохим по успеваемости_, и мой средний балл был «не очень». Я любил курсы программирования с их чрезвычайно сложными заданиями; математический анализ же был мне не по душе.

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

Если вы сейчас изучаете компьютерные науки или предполагаете делать это, то надеюсь, что вам будет полезен мой опыт. [Читать дальше →][4]

[1]: https://habrastorage.org/getpro/habr/post_images/5a4/70e/eb0/5a470eeb0db77737c64071225ff54577.png
[2]: https://github.com/saadq/Materialize
[3]: http://font.ubuntu.com/#charset-mono-bold
[4]: https://habrahabr.ru/post/310264/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] О фундаментальных ошибках в дизайне языков программирования
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


Как-то раз мне на глаза попалась статья о том, что самой дорогой ошибкой в дизайне языков программирования было решение определять окончание строки в C по NULL-байту. Один из вариантов перевода этой статьи на Хабре: [habrahabr.ru/post/126566][1] (хотя я, по-моему, читал другой). Эта статья меня немного удивила. Во-первых, как-будто в те времена экономии каждого бита памяти можно было шикануть и выделить ещё 2-4 байта в каждой строке на хранение её размера. Во-вторых, никаких особо катастрофических последствий это решения для программиста не несёт. Ошибок, которые можно по этому поводу совершить я могу придумать целых две: неверно выделить память для строки (забыть место под NULL) и неверно записать строку (забыть NULL). О первой ошибке уже предупреждают компиляторы, избежать второй помогает использование библиотечных функций. Всей-то беды.

![][2]Значительно большей проблемой времён дизайна языка С (и затем С++) мне кажется другое — оператор for. При всей его кажущейся безвредности — это просто кладезь потенциальных ошибок и проблем.

Давайте вспомним классическое его применение:
for (int i = 0; i < vec.size(); i++)
\{...\}

Что же здесь может пойти не так?
[Читать дальше →][3]

[1]: https://habrahabr.ru/post/126566/
[2]: https://habrastorage.org/files/9c3/0be/a64/9c30bea64f4d463aa88c94b4057aac95.jpg
[3]: https://habrahabr.ru/post/310338/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Syncookied — OpenSource ddos protection system
habra.16
habrabot(difrex,1) — All
2016-09-19 14:30:04


Когда в нашей компании [LTD BeGet][1] встала задача прозрачной фильтрации атак на 4 уровне модели OSI, мы написали свое решение Syncookied. Данным решением мы бы хотели поделиться с Internet сообществом, так как на текущий момент аналогов ему мы не нашли (или мы о них не знаем). Есть платные решения на подобии Arbor, F5, SRX, но стоят они совершенно других денег и в них используются другие технологии защиты.

Почему для разработки мы выбрали язык **Rust** и фреймворк **NetMap**, с какими сложностями мы столкнулись в процессе — будет рассказано в этой статье.

» [GitHub][2]
» [GitHub модуль ядра][3]
» [Страница проекта][4]

![][5]
[Читать о Syncookied][6]

[1]: https://beget.com
[2]: https://github.com/LTD-Beget/syncookied
[3]: https://github.com/LTD-Beget/tcpsecrets
[4]: https://beget.com/ru/articles/syncookied
[5]: https://habrastorage.org/files/602/8d1/271/6028d1271f9f43e5aa3c0eaef92014be.png
[6]: https://habrahabr.ru/post/301892/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Badoo открывает исходные коды Live Streaming Daemon
habra.16
habrabot(difrex,1) — All
2016-09-19 15:00:04


Для того чтобы мы могли считать статистику, наш сайт в своей работе генерирует огромное количество _событий_. Например, при отправке сообщения другому пользователю, при заходе пользователя на сайт, при смене местоположения и т.д. События представляют из себя строку в формате JSON или GPB (Google Protocol Buffers) и содержат время отправки, идентификатор пользователя, тип события, а также поля, относящиеся непосредственно к самому событию (например, координаты пользователя).

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

[1]: https://habrahabr.ru/post/310352/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [recovery mode] Hermitage — решение ваших проблем с хранением и обработкой изображений
habra.16
habrabot(difrex,1) — All
2016-09-19 19:30:03


Всем привет! Буду краток: в обмен на пять минут вашего времени отдел PHP-разработки компании Лайв Тайпинг расскажет вам о собственном микросервисе для хранения и обработки загружаемых изображений. Он называется [Hermitage][1]. Его задача — представлять изображение в разных версиях согласно заранее заданным параметрам. Hermitage будет полезен в ситуациях, когда необходим автономный и масштабируемый сервер для хранения изображений и манипуляций над ними.
![hermitage][2]
[Читать дальше →][3]

[1]: https://github.com/LiveTyping/hermitage-skeleton
[2]: https://habrastorage.org/files/0b0/9b4/28c/0b09b428ccec47db82399871d57f29c4.jpg
[3]: https://habrahabr.ru/post/310340/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Обратный отсчет: книга о Stuxnet, исследователях вредоносного кода и уязвимой критической инфраструктуре
habra.16
habrabot(difrex,1) — All
2016-09-19 20:00:05


![][1]Ну что, пришло время попробовать себя в жанре книжного обзора. Книга Countdown to Zero Day: Stuxnet and the Launch of the World's First Digital Weapon журналистки Ким Зеттер, наиболее известной благодаря своим статьям [в журнале Wired][2], вышла достаточно давно, в ноябре 2014 года, но с тех пор так и не была переведена на русский язык (на английском доступна, например, в Amazon в [электронном виде][3]). Впрочем, дело не в переводе: историю Stuxnet можно изучать и по открытым публикациям и исследованиям специалистов по безопасности, но в этом случае вы получите ассортимент технических фактов о вредоносном коде, из которых не так-то просто сложить паззл всей истории.

«Обратный отсчет» — это удачная попытка подняться выше строчек кода, свести воедино все, что известно о первой и по сей день наиболее масштабной специализированной атаке на индустриальные системы. При этом книга не подменяет факты драмой и максимально далека от беллетристики. Ценность ее еще и в том, что она показывает процесс исследования вредоносного кода чуть более подробно, чем обычно: примерно половина текста посвящена именно этому: от обнаружения кода и идентификации атаки, до анализа уязвимостей нулевого дня и, наконец, анализа модулей, модифицирующих работу промышленных контроллеров.

С момента обнаружения Stuxnet прошло шесть лет, семь — с момента начала атаки, больше десяти, предположительно, с начала разработки. Это не единственная кибератака, направленная на саботаж в индустриальных системах, но она по-прежнему не имеет себе равных по сложности. Отчасти это хорошие новости, но причиной является не повышенная защищенность промышленных систем, а скорее смена ориентиров у заказчиков. «Обратный отсчет» — это книга об атаке, названной в свое время «блокбастером» инфобезопасности, но это еще и книга о работе исследователей — тех, кто анализирует вредоносный код и проектирует защиту от него, вне зависимости от источника атаки и намерений.
[Читать дальше →][4]

[1]: https://habrastorage.org/files/1e5/b33/4c0/1e5b334c03244ca5860fa565fac2459c.jpg
[2]: https://www.wired.com/author/KimZetter
[3]: https://www.amazon.com/Countdown-Zero-Day-Stuxnet-Digital-ebook/dp/B00KEPLC08/ref=sr_1_1_twi_kin_2?ie=UTF8&qid=1474277353&sr=8-1&keywords=countdown+to+stuxnet
[4]: https://habrahabr.ru/post/310398/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Укрощаем Yota вместе с Zyxel
habra.16
habrabot(difrex,1) — All
2016-09-20 01:30:03


Думаю многие счастливые обладатели высокоскоростного интернета от Yota сталкивались с этими двумя проблемами:

1. Соединение с интернетом пропадает полностью
2. Соединение как бы есть, но его нет (очень-очень низкая скорость)

Ниже способы борьбы с ними. Сразу отмечу, что решения для тех, у кого роутер Zyxel и usb-модем Yota.
[Читать дальше →][1]

[1]: https://habrahabr.ru/post/310428/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Итоги GSOC
habra.16
habrabot(difrex,1) — All
2016-09-20 09:30:04


![][1]

30 августа закончился Google Summer of Code, в котором мы принимали участие во второй раз. В целом результат достойный — большинство студентов подтвердили, что их выбрали не зря. Но были и ошибки, о которых расскажем в этой статье. Для подведения итогов GSOC были опрошены менторы — те самые люди, на плечах которых всё и держалось последние полгода. Подробности под катом.
[Читать дальше →][2]

[1]: https://habrastorage.org/files/caa/d8e/99e/caad8e99ebe9416db55b9647f2329623.PNG
[2]: https://habrahabr.ru/post/309814/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Zone.js или как Dart спас Angular
habra.16
habrabot(difrex,1) — All
2016-09-20 12:00:04


![][1]

Я фронтенд-разработчик в компании Wrike, пишу на JavaScript и на Dart, который компилируется в JavaScript. Сегодня я хочу рассказать о библиотеке Zone.js, лежащей в основе Angular 2.
Изначально Zone.js была придумана разработчиками Google для языка программирования Dart и утилиты Dart2JS. С помощью этой библиотеки «гугловцы» решили проблему с дайджест-циклом, которая была характерна для первого Angular’а.
Чтобы понять, где эта библиотека используется и для чего нужна, прошу под кат.
[Читать дальше →][2]

[1]: https://habrastorage.org/files/96f/27d/381/96f27d3813bd4e2a98f3c1a14a6e4fde.png
[2]: https://habrahabr.ru/post/310422/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Разбор задач финального раунда RCC 2016
habra.16
habrabot(difrex,1) — All
2016-09-20 13:00:03


![][1]

18-го сентября был проведен последний, финальный этап чемпионата по спортивному программированию [Russian Code Cup][2] 2016 года. Первое место в упорной борьбе занял [Геннадий Короткевич][3], второе и третье места — [Владислав Епифанов][4] и [Николай Калинин][5] соответственно.

Турнирную таблицу финала можно найти [здесь][6], призовой фонд в этом году впервые распределен на первые 25 мест рейтинга. Это не единственное нововведение — впервые в RCC имели возможность поучаствовать англоговорящие программисты, коих набралось более тысячи из 4.5 тысяч участников. Помимо традиционных для соревнования стран СНГ, в финальном раунде боролись представители Германии, Финляндии, Японии, Швейцарии, Китая и Южной Кореи. Кроме того, в этот раз был проведен зеркальный раунд на Codeforces — сразу после финала основного состязания, у всех желающих была возможность решить задачи финала в специально организованном соревновании для первого дивизиона, поучаствовало чуть больше 200 программистов.

Традиционно предлагаем вам разбор задач финала (тесты можно скачать [здесь][7]):

[A. Церемония закрытия][8]
[B. Кактусофобия][9]
[C. Домашнее задание][10]
[D. Слалом][11]
[E. Шифр][12]
[F. Покрытие массива][13]
[Читать дальше →][14]

[1]: https://habrastorage.org/files/3f0/f7e/e98/3f0f7ee982774515a5e9b4b8e77fa197.jpg
[2]: http://www.russiancodecup.ru/ru/
[3]: http://codeforces.com/profile/tourist
[4]: http://codeforces.com/profile/vepifanov
[5]: http://codeforces.com/profile/KAN
[6]: http://www.russiancodecup.ru/ru/championship/result/
[7]: http://www.russiancodecup.ru/media/uploads/tests/2016/russiancodecup-2016-final_FhwgOuJ.zip
[8]: #A
[9]: #b
[10]: #c
[11]: #d
[12]: #e
[13]: #f
[14]: https://habrahabr.ru/post/310376/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Платформа CUBA: Java RAD фреймворк с открытым кодом
habra.16
habrabot(difrex,1) — All
2016-09-20 13:00:03


![image][1] Незаметно пролетели почти три года с момента публикации первой статьи о платформе на Хабре. За это время многое изменилось: мы вышли на международный рынок, [перешли к open source лицензии][2], обновили стек технологий и внесли множество улучшений во фреймворк и средства разработки. Поэтому вместо длинного списка изменений мы решили опубликовать ещё одну обзорную статью о платформе CUBA, которая, я надеюсь, будет интересна разработчикам кровавого энтерпрайза корпоративных информационных систем — как ещё не знакомым с платформой, так и тем, кто уже что-то слышал о ней.

Итак, под катом вы узнаете:
* Что представляет из себя платформа CUBA и какова её архитектура
* Какие решения эффективнее всего разрабатывать на CUBA
* Как платформа помогает сэкономить время разработки корпоративных систем
* Какое окружение необходимо для развертывания CUBA-приложений
* Как мигрировать устаревшую систему на CUBA
* Под какой лицензией распространяется платформа
* Как организована поддержка разработчиков[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/77b/5c9/98a/77b5c998a12d9a75bf992c1662953051.jpg
[2]: https://www.cuba-platform.ru/blog/2016-05-05/510
[3]: https://habrahabr.ru/post/310148/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Почему иногда «падает» сеть мобильных операторов?
habra.16
habrabot(difrex,1) — All
2016-09-20 14:30:03


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

Напомним, что в нашем [первом посте][1] Андрей Вячеславович рассказал, как работает наш Центр оперативного управления мобильной сетью в Краснодаре. [Во втором посте][2] – ответил на ваши вопросы по работе центра. Сегодня Андрей Вячеславович ответит на волнующий всех вопрос, почему иногда «падает» сеть мобильных операторов.

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

На языке технических специалистов такая ситуация называется «локальные перегрузки». В нашей жизни мы тоже часто сталкиваемся с «локальными перегрузками» — будь то на дороге в пятничной пробке на выезде из города или даже в торговом центре в очереди за новым iPhone в ночь старта продаж. На сети тоже могут возникать «узкие места» в какое-то время или в каком-нибудь месте.

![image][3]
[Читать дальше →][4]

[1]: https://habrahabr.ru/company/ru_mts/blog/308044/
[2]: https://habrahabr.ru/company/ru_mts/blog/309760/
[3]: https://habrastorage.org/getpro/habr/post_images/ec0/20e/46d/ec020e46d3c4135a17c47db8d6dc5aa9.png
[4]: https://habrahabr.ru/post/310480/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Сжатие мобильной графики в формат ETC1 и открытая утилита
habra.16
habrabot(difrex,1) — All
2016-09-20 15:30:03


При развитии free-to-play мобильной игры вместе с новыми фичами регулярно добавляется и новая графика. Часть ее включается в дистрибутив, часть скачивается в ходе игры. Для возможности запуска приложения на устройствах с небольшим размером оперативной памяти разработчики применяют [аппаратно сжатые текстуры][1].

[![][2]][3]

[Формат ETC1][4] обязателен к поддержке на всех Android-устройствах с OpenGL ES 2.0 и является хорошей отправной точкой оптимизации потребляемой оперативной памяти. По сравнению с форматами PNG, JPEG, WebP загрузка текстур ETC1 осуществляется без интенсивных расчетов обычным копированием памяти. Также улучшается производительность игры по причине меньших размеров данных текстур пересылаемых из медленной памяти в быструю.
[Читать дальше →][5]

[1]: https://habrahabr.ru/company/intel/blog/276089/
[2]: https://habrastorage.org/getpro/habr/post_images/d35/b77/b2c/d35b77b2c69087fc79f55bd429f4b059.jpg
[3]: https://habrahabr.ru/company/playrix/blog/310484/
[4]: http://www.khronos.org/registry/gles/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt
[5]: https://habrahabr.ru/post/310484/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] GitLab CI: Развертывание и среды развертывания
habra.16
habrabot(difrex,1) — All
2016-09-20 16:30:03


В данной статье речь пойдет об истории успеха воображаемого новостного портала, счастливым владельцем которого являетесь вы. К счастью, вы уже храните код проекта на GitLab.com и знаете, что [для тестирования можно использовать GitLab CI][1].
Теперь вам интересно, можно ли пойти дальше и использовать CI еще и для развертывания проекта, и если да, то какие возможности при этом открываются.



Чтобы не привязываться к какой-либо конкретной технологии, предположим, что ваше приложение является простым набором HTML-файлов, никакого выполнения кода на сервере, никакой компиляции JS assets. Деплоить будем на [Amazon S3][2].



У автора нет цели дать рецепты для конкретной технологии в этой статье. Наоборот, примеры кода максимально примитивны, чтобы слишком на них не зацикливаться. Смысл в том чтобы вы посмотрели на фичи и принципы работы GitLab CI в действии, а потом применили их для вашей технологии.



![][3]


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

[1]: https://about.gitlab.com/2016/07/29/the-basics-of-gitlab-ci/#run-our-first-test-inside-ci
[2]: https://aws.amazon.com/s3/
[3]: https://about.gitlab.com/images/blogimages/ci-deployment-and-environments/intro.jpg
[4]: https://habrahabr.ru/post/310502/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Аналитическое вычисление производных на шаблонах C++
habra.16
habrabot(difrex,1) — All
2016-09-20 17:00:03


Тут на днях [писали][1] про аналитическое нахождение производных, что напомнило мне об одной моей маленькой библиотечке на C++, которая делает почти то же, но во время компиляции.

![][2]

В чём профит? Ответ прост: мне нужно было запрогать нахождение минимума достаточно сложной функции, считать производные этой функции по её параметрам ручкой на бумажке было лень, проверять потом, что я не опечатался при написании кода, и поддерживать этот самый код — лень вдвойне, поэтому было решено написать штуковину, которая это сделает за меня. Ну, чтобы в коде можно было написать что-то такое:
using Formula_t = decltype (k * (_1 - r0) / (_1 + r0) * (g0 / (alpha0 - logr0 / Num) - _1)); // сама формула
const auto residual = Formula_t::Eval (datapoint) - knownValue; // регрессионный остаток

// производные по параметрам:
const auto dg0 = VarDerivative_t::Eval (datapoint);
const auto dalpha0 = VarDerivative_t::Eval (datapoint);
const auto dk = VarDerivative_t::Eval (datapoint);

вместо крокодилов, которые получатся, если брать частные производные функции на картинке вначале (вернее, некоторого её упрощённого варианта, но он выглядит не так страшно).

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

Под катом — небольшое описание, как оно там всё работает.

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

[1]: https://habrahabr.ru/post/309676/
[2]: https://habrastorage.org/files/7d7/d2b/f02/7d7d2bf029364d65ad444fd10d692fe0.png
[3]: https://habrahabr.ru/post/310016/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Уязвимости систем видеонаблюдения позволяют хакерам создавать масштабные ботнеты
habra.16
habrabot(difrex,1) — All
2016-09-20 21:00:04


[![][1]][2]

Согласно [заявлению][3] US-CERT, в прошивке цифровых устройств видеонаблюдения (DVR) AVer Information EH6108H+ обнаружены серьезные уязвимости, которые позволяют злоумышленникам без труда получать к ним удаленный доступ и даже формировать ботнеты. [Читать дальше →][4]

[1]: https://habrastorage.org/files/6d4/cdd/a43/6d4cdda431b243caa901b87d93a1d475.jpg
[2]: https://habrahabr.ru/company/pt/blog/310548/
[3]: http://news.softpedia.com/news/here-s-another-vulnerable-dvr-system-ready-to-become-a-ddos-botnet-508298.shtml#ixzz4KmOUEBSQ
[4]: https://habrahabr.ru/post/310548/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Что особенного в СУБД для данных в оперативной памяти
habra.16
habrabot(difrex,1) — All
2016-09-20 23:00:03


## Константин Осипов ( [kostja][1] )


![Константин Осипов][2]

Как родилась идея доклада? Я не очень люблю выступать и рассказывать про фичи, особенно про будущие фичи. Выясняется, что и люди не особо любят это слушать. Они любят слушать про то, как все устроено. Это доклад о том, как все устроено или должно быть, с моей точки зрения, устроено в современной СУБД.

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

![][3]

На макроуровне – это то, как должна быть устроена современная СУБД. Почему у нас сегодня есть возможность создавать новые базы данных, почему нельзя взять текущую и удовлетвориться ее производительностью, подтюнить или написать для нее патч? Просто взять и написать патч, который бы ее ускорил, если она медленная? Из какого пространства решений мы выбираем? [Читать дальше →][4]

[1]: https://habrahabr.ru/users/kostja/
[2]: https://habrastorage.org/files/7a6/0b9/061/7a60b9061c5f4be29063c7b8533cd1c0.jpg
[3]: https://habrastorage.org/getpro/habr/post_images/41c/94a/a08/41c94aa087b4c48ab13b36e6a5718a55.png
[4]: https://habrahabr.ru/post/310560/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Работа в IPFS с человеческим лицом
habra.16
habrabot(difrex,1) — All
2016-09-21 02:30:07


Немногие слышали про IPFS, ещё более немногие добрались до детального изучения. И совсем уж [единицы][1] погрузились в проект поглубже.



Если вкратце, IPFS это химера, созданная из технологий, лежащих в основе git и bittorrent, с одной особенностью — адресация объектов по содержимому ([CAS][2]).



Любой объект, файл или пользовательские данные хэшируются, и получившийся хэш становится адресом этого файла в системе IPFS. Далее, этот контент могут запросить другие узлы сети, и он расползётся по планете, и в идеале, никогда больше не исчезнет, будучи доступным по хэшу. Из этого свойства так же вытекает иммутабельность объектов в системе, ведь любое изменение содержимого создаёт новый адрес-хэш в сети.



Типичная ссылка на объект:

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

[1]: https://habrahabr.ru/post/268275/
[2]: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%BD%D0%BE-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D1%83%D0%B5%D0%BC%D0%BE%D0%B5_%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BB%D0%B8%D1%89%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
[3]: https://habrahabr.ru/post/310554/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] ФСБ планирует дешифровать весь интернет-трафик россиян в режиме реального времени
habra.16
habrabot(difrex,1) — All
2016-09-21 09:30:03


![image][1] ФСБ, Минкомсвязь и Минпромторг обсуждают набор технических решений, которые позволят дешифровать весь интернет-трафик россиян в режиме реального времени. Об этом со ссылкой на собственные источники сообщает газета "[Коммерсантъ][2]".

В опубликованной статье сообщается, что обсуждаемая ФСБ технология является частью реализации нашумевшего «пакета Яровой».
[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/f23/2bf/e9d/f232bfe9dc2432ddae0f8ad83ff1d739.jpg
[2]: http://kommersant.ru/doc/3094848
[3]: https://habrahabr.ru/post/310576/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] USB killer Type-C
habra.16
habrabot(difrex,1) — All
2016-09-21 11:00:04



Если мне не изменяет память первым устройством оснащённым разъёмом USB Type-C был планшет от компании Nokia, увы он стал надгробным камнем для этого Величайшего производителя мобильных телефонов. Тем не менее новый разъём начал активно применяться в новой технике и с каждым днём количество девайсов поддерживающих USB Type-C интерфейс становится всё больше и больше, с этим надо что-то делать. )) С вами Dark\_Purple и сегодня мы будем убивать Brand New Apple MacBook 12” (Early 2016), однако здравствуйте!
[Дальше][1]

[1]: https://habrahabr.ru/post/310442/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Шкатулка с эксплойтами Equation Group пополнилась новым экземпляром
habra.16
habrabot(difrex,1) — All
2016-09-21 12:00:04


![][1]Компания Cisco [выпустила][2] уведомление безопасности CISCO-SA-20160916-IKEV1, которое подтверждает присутствие еще одной 0day уязвимости в продуктах Cisco из [архива][3] Shadow Brokers. Уязвимость типа Information Disclosure получила идентификатор CVE-2016-6415 (_IKEv1 Information Disclosure Vulnerability in Multiple Cisco Products_) и присутствует в коде обработки сетевых пакетов протокола Internet Key Exchange version 1 (IKEv1) в продуктах Cisco IOS, IOS XE, а также IOS XR. С использованием уязвимости атакующий удаленно может получить доступ к содержимому памяти с конфиденциальной информацией. Как и в случае других аналогичных уязвимостей, эксплуатация CVE-2016-6415 возможна за счет отправки на уязвимое устройство специальным образом сформированного сетевого пакета IKEv1.

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

[1]: https://habrastorage.org/files/981/ab2/61b/981ab261beef48698d95d8290d72fda7.jpg
[2]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20160916-ikev1
[3]: https://habrahabr.ru/company/eset/blog/307948/
[4]: https://habrahabr.ru/post/310504/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [recovery mode] Почему дополненная реальность добавляет риска сети
habra.16
habrabot(difrex,1) — All
2016-09-21 12:00:04


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

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

[1]: https://habrastorage.org/files/d8d/8f7/d8b/d8d8f7d8b7c143d8b8892551dc34a37e.jpg
[2]: https://habrahabr.ru/post/310520/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Нянчим проект на React-redux с пелёнок
habra.16
habrabot(difrex,1) — All
2016-09-21 13:00:04



В начале этого года мы в HeadHunter начали проект, нацеленный на автоматизацию различных HR-процессов у компаний-клиентов. Архитектурой этого проекта на фронте выбрали React-Redux стек.

За 9 месяцев он вырос из небольшого приложения для тестирования сотрудников в многомодульный проект, который сегодня называется [“Оценка талантов”][1]. По мере его роста мы сталкивались с вопросами:
* хранения стейта, его нормализации;
* построения масштабируемой архитектуры проекта, удобной иерархии — как в структуре, так и в бизнес-логике.
Это проявлялось в изменении подхода к построению компонентов, архитектуры редьюсеров.

Давайте поговорим о том, как мы развивали проект и какие решения принимали. Некоторые из них могут оказаться “холиварными”, а другие, напротив, “классикой” в построении большого проекта на redux. Надеюсь, что описанные ниже практики помогут вам при построении react-redux приложений, а живые примеры помогут разобраться, как работает тот или иной подход.
[Читать дальше →][2]

[1]: https://test.hh.ru
[2]: https://habrahabr.ru/post/310524/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Искусство написания простых и коротких функций
habra.16
habrabot(difrex,1) — All
2016-09-21 13:30:03


Софт постоянно усложняется. Стабильность и простота расширения приложения напрямую зависят от качества кода.



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


* Функции слишком длинные, и на них слишком много задач
* Часто у функций есть побочные эффекты, которые сложно определить, а иногда даже сложно отлаживать
* Непонятные имена у функций и переменных
* Хрупкий код: небольшая модификация неожиданно ломает другие компоненты приложения
* Плохое покрытие кода тестами или вообще его отсутствие

Всем знакомы высказывания «я не понимаю, как работает этот код», «бредовый код», «этот код сложно изменить» и другие.



Однажды мой коллега уволился, потому что пытался справиться с REST API на Ruby, который было трудно поддерживать. Он получил этот проект от предыдущей команды разработчиков.



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



![][1]



Такие ситуации случаются часто, и это печально. Но что делать?

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

[1]: https://habrastorage.org/files/71d/da6/7ae/71dda67ae918424b933c7fd217cd8a47.jpg
[2]: https://habrahabr.ru/post/310590/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

Pages: 1 ... 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 ... 210