RSS
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 ... 41
[>] В Rust 1.0 исключений не будет
habra.14
habrabot(difrex,1) — All
2014-11-06 11:43:25


![Rust Logo][1]Сегодня Аарон Тюрон — разработчик, недавно присоединившийся к разработке Rust в Mozilla — [объявил][2] об отсрочке реализации какого-либо механизма исключений, кроме уже существующего макроса `try!` и типа `Result`, до неопределённого момента _после_ первого релиза языка программирования Rust. Это означает, что в Rust 1.0 будут отсутствовать исключения первого класса — то есть, полностью интегрированные с другими фичами языка. Для обработки ошибок в данной момент в Rust существует тип `Result { Ok(value), Err(why) }` и макрос `try!`. Тип `Result` представляет из себя перечисление (enum), похожее на `Option { Some(value), None }` и связанное с ним по смыслу. Вариант `None` типа `Option` говорит об отстутствии значения, а вариант `Err(why)` типа `Result` уточняет, почему значение отсутствует. Rust предлагает возвращать тип `Result` из функций, чтобы передавать значение возврата _или_ причину, по которой значение вернуть не удалось. Макрос `try!` в свою очередь позволяет автоматически возвращать `Err(why)` из текущей функции, если вызов другой функции не удался (применяется к объекту типа `Result`). [Читать дальше →][3]

[1]: http://habrastorage.org/getpro/habr/post_images/3e5/11e/a6f/3e511ea6f5963a2c86ed90176d924c50.png
[2]: https://github.com/rust-lang/rfcs/pull/243#issuecomment-61559683
[3]: http://habrahabr.ru/post/242269/#habracut

[>] [Из песочницы] Почему systemd — это плохо?
habra.14
habrabot(difrex,1) — All
2014-11-06 15:00:03


_Это перевод текста с сайта [boycottsystemd.org][1]._ Вокруг systemd уже несколько лет ходят «холивары». Systemd пришел к нам на замену System V Init в Linux. Есть как сторонники systemd, так и его противники. Давайте рассмотрим, чем же так плох systemd: [Читать дальше →][2]

[1]: http://boycottsystemd.org
[2]: http://habrahabr.ru/post/242495/#habracut

[>] [Перевод] Пишем код C на Cython
habra.14
habrabot(difrex,1) — All
2014-11-07 02:30:03


Последние два года я решаю все задачи исключительно на [Cython][1]. Это вовсе не значит, что я пишу на Питоне, а потом «Ситонизирую» это с использованием различных деклараций типов, нет, я просто пишу на Cython. Я использую «сырые» структуры и массивы C (а иногда и векторы C++) и маленькую обёртку вокруг malloc/free, которую я написал сам. Код работает практически так же быстро, как C/C++, потому что это и есть код на C/C++, украшенный синтаксическим сахаром. Это код на C/C++ с функционалом Python именно там, где мне это нужно и где я этого хочу. [Читать дальше →][2]

[1]: https://en.wikipedia.org/wiki/Cython
[2]: http://habrahabr.ru/post/242533/#habracut

[>] [Перевод] Ricochet — анонимный бессерверный протокол передачи мгновенных сообщений
habra.14
habrabot(difrex,1) — All
2014-11-07 09:00:04


Перевод вводной части и введения в техническое описание проекта с открытым исходным кодом **Ricochet** ([github][1]).

#### Анонимная бессерверная система передачи мгновенных сообщений, которая просто работает

Ricochet – это эксперимент с альтернативным методом передачи мгновенных сообщений, который не доверяет никому – не раскрывает вашу личность, список контактов или общение. — можно общаться без раскрытия личности или ip-адреса. — никто не может выяснить, с кем вы общаетесь или когда вы общаетесь (никаких мета-данных) — никаких серверов, которые можно было бы взломать, или операторов, которых можно было бы заставить выдать информацию о вас — кросс-платформенный и простой даже для обычных пользователей Примечание: проект недавно был переименован из Torsion. [Читать дальше →][2]

[1]: https://github.com/ricochet-im/ricochet
[2]: http://habrahabr.ru/post/242535/#habracut

[>] Машинное обучение как сервис — бесплатно и в облаке
habra.14
habrabot(difrex,1) — All
2014-11-07 14:00:03


Мы уже писали о машинном обучении как сервисе в облаке Microsoft Azure [здесь][1]. И, совсем недавно, Microsoft решили открыть (как ранее с Azure Web Sites) возможность бесплатного тестирования этого тестирования без аккаунта Microsoft Azure, без кредитной карты. Отличная возможность посмотреть, что умеет Machine Learning в облаке. ![][2] [Читать дальше →][3]

[1]: http://habrahabr.ru/company/microsoft/blog/236823/
[2]: //habrastorage.org/files/382/9b3/c12/3829b3c1264b4a4ab6f922a19602020b.png
[3]: http://habrahabr.ru/post/242561/#habracut

[>] [Перевод] Выразительный JavaScript: Поиск и обработка ошибок
habra.14
habrabot(difrex,1) — All
2014-11-07 23:30:04




#### Содержание



* [Введение][1]
* [Величины, типы и операторы][2]
* [Структура программ][3]
* [Функции][4]
* [Структуры данных: объекты и массивы][5]
* [Функции высшего порядка][6]
* [Тайная жизнь объектов][7]
* [Проект: электронная жизнь][8]
* [Обработка ошибок][9]
* Регулярные выражения
* Модули
* Проект: язык программирования
* JavaScript и браузер
* Document Object Model
* Обработка событий
* Проект: игра-платформер
* Рисуем на Canvas
* HTTP
* Формы и поля ввода
* Проект: Paint
* Node.js
* Проект: веб-сайт по обмену умениями
* [Песочница для кода][10]

_Отладка изначально вдвое сложнее написания кода. Поэтому, если вы пишете код настолько заумный, насколько можете, то по определению вы не способны отлаживать его. Брайан Керниган и П.Ж.Плауэр, «Основы программного стиля»_ _Юан-Ма написал небольшую программу, использующую много глобальных переменных и ужасных хаков. Ученик, читая программу, спросил его: «Вы предупреждали нас о подобных техниках, но при этом я нахожу их в вашей же программе. Как это возможно?» Мастер ответил: «Не нужно бежать за поливальным шлангом, если дом не горит». Мастер Юан-Ма, «Книга программирования»._ Программа – это кристаллизованная мысль. Иногда мысли путаются. Иногда при превращении мыслей в программу в код вкрадываются ошибки. В обоих случаях получается повреждённая программа. Недостатки в программах обычно называют ошибками. Это могут быть ошибки программиста или проблемы в системах, с которыми программа взаимодействует. Некоторые ошибки очевидны, другие – трудноуловимы, и могут скрываться в системах годами. Часто проблема возникает в тех ситуациях, возникновение которых программист изначально не предвидел. Иногда этих ситуаций нельзя избежать. Когда пользователя просят ввести его возраст, а он вводит «апельсин», это ставит программу в непростую ситуацию. Эти ситуации необходимо предвидеть и как-то обрабатывать. [Читать дальше →][11]

[1]: http://habrahabr.ru/post/240219/
[2]: http://habrahabr.ru/post/240223/
[3]: http://habrahabr.ru/post/240225/
[4]: http://habrahabr.ru/post/240349/
[5]: http://habrahabr.ru/post/240813/
[6]: http://habrahabr.ru/post/241155/
[7]: http://habrahabr.ru/post/241587/
[8]: http://habrahabr.ru/post/241776/
[9]: http://habrahabr.ru/post/242609/
[10]: http://eloquentjavascript.net/code
[11]: http://habrahabr.ru/post/242609/#habracut

[>] [Из песочницы] Алгоритм удаления узла из btree
habra.14
habrabot(difrex,1) — All
2014-11-08 00:30:03


Доброго времени суток! История данного текста такова. Ребёнку задали задание запрограммировать btree. Я иногда ему помогаю. Решил, что это тривиально. Но попытки наскоком решить задачу успехом не увенчались. Поиски сколько-нибудь разумного описания и/или кода также были тщетны. Зачёт сын давно сдал, но мой параноидальный характер заставил меня решить задачу. Может кому-нибудь пригодится. [Читать дальше →][1]

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

[>] Конференция 4SICS: уязвимый коллайдер, троян Havex и другие «русские угрозы»
habra.14
habrabot(difrex,1) — All
2014-11-08 12:30:04


[![image][1]][2] Современные АСУ ТП всё чаще оказываются уязвимы перед хакерами — однако вендоры и пользователи не торопятся признавать и исправлять опасную ситуацию. Это наблюдение стало основной темой для дискуссий на международном саммите по безопасности промышленных систем управления [4SICS][3], который прошёл в конце октября в Стокгольме. «Несмотря на всю интернет-революцию, мы до сих пор недостаточно озабочены безопасностью, поскольку старая IT-парадигма говорит нам: мы функционируем автономно, ни к кому не подключены, у нас собственный хитрый софт, и никто не сможет нас атаковать. Но реальность давно уже изменилась», — так выразился один из ключевых спикеров мероприятия Стефан Лёдерс, руководитель отдела безопасности Европейского центра ядерных исследований (CERN). [Читать дальше →][4]

[1]: http://habrastorage.org/getpro/habr/post_images/0ef/652/fbb/0ef652fbb068dfbc519aa50dd53bf775.png
[2]: http://habrahabr.ru/company/pt/blog/242589/
[3]: http://4sics.se/
[4]: http://habrahabr.ru/post/242589/#habracut

[>] Brackets для сомневающихся и новичков
habra.14
habrabot(difrex,1) — All
2014-11-08 20:00:03




#### **СД: НЧ**

Без плагинов Brackets не лучше других редакторов, но с ними его стоит хотя бы попробовать.

#### **Введение**

Не так давно на Хабре было опубликовано множество статей, касающихся тем или иным образом редактора [Brackets][1]. У многих людей сразу же появились вполне справедливые вопросы:

1. Чем он лучше используемого мной %EDITOR\_NAME%?
2. Много ли под него плагинов?
3. Стоит ли связываться или лучше использовать какую-нибудь известную IDE или текстовый редактор?

Надеюсь, после чтения этой статьи каждый сможет найти для себя ответы на эти вопросы. [Читать дальше →][2]

[1]: http://brackets.io
[2]: http://habrahabr.ru/post/242623/#habracut

[>] Руки прочь от консоли!
habra.14
habrabot(difrex,1) — All
2014-11-08 20:30:03


![image][1] Любой организм стремится к гомеостазу. То есть к стабильности, предсказуемости, спокойствию. Это означает, что любая встряска, любое резкое изменение порождает стресс. Особенно, если в 3 часа ночи, особенно если сразу надо что-то с этим делать, разбираться, чинить… Кому знакома ситуация, когда что-то очень важное (база данных, финансовый сервис, айпад генерального) ВДРУГ перестают работать. Это всегда происходит вдруг… А вы как назло, отвечаете своей головой за это важное. Большинство людей, включая меня, в этот момент испытывают реальный стресс. Сильный и опасный. _Вспоминаю случаи, когда мы делали по ночам работы по настройке сетевой безопасности РАО ЕЭС России, а потом нам звонили «срочно-все\_сломалось-чините!». Сколько косяков я мог избежать, если бы не ломился сразу вбивать команды с колотящемся сердцем… Сколько оправданий можно было бы не придумывать. Ведь стыдно признаться в своей поспешности и глупости…_ [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/f79/7ab/e49/f797abe49c328ecfe26857b829bb1c66.jpg
[2]: http://habrahabr.ru/post/242629/#habracut

[>] Синхронизация музыки и игровых событий на Unity
habra.14
habrabot(difrex,1) — All
2014-11-08 21:30:03


![image][1] _Пример редактора уровня в игре._ Если вы когда либо играли в игры типа Guitar Hero, Osu или Bit Trip Runner вы знаете, как сильно погружает в «поток» простая зависимость геймплея от музыки играющей на фоне. Удивительно, что таких игр, на самом деле не так уж и много. Кроме того, такая синхронизация может быть полезна для создания спецэффектов, но тем не менее почти нигде не встречается, кроме обозначенных выше игр типа rhythm. Вот и я решил воспользоваться таким бесхитростным приемом в собственной игре, а также поделиться наработками. Я постарался описать конструкцию, удобную как для программирования большого количества игровых событий, так и работающую как можно более оптимальным образом. Применить которую можно почти в любой игре, возможно и вам она пригодится, если вы занимаетесь их разработкой. [Читать дальше →][2]

[1]: http://habrastorage.org/files/485/187/f4f/485187f4f1b44908972cc4bb39a06822.png
[2]: http://habrahabr.ru/post/242631/#habracut

[>] Руки прочь от консоли
habra.14
habrabot(difrex,1) — All
2014-11-08 22:30:02


![image][1] Любой организм стремится к гомеостазу. То есть к стабильности, предсказуемости, спокойствию. Это означает, что любая встряска, любое резкое изменение порождает стресс. Особенно, если в 3 часа ночи, особенно если сразу надо что-то с этим делать, разбираться, чинить… Кому знакома ситуация, когда что-то очень важное (база данных, финансовый сервис, айпад генерального) ВДРУГ перестают работать. Это всегда происходит вдруг… А вы как назло, отвечаете своей головой за это важное. Большинство людей, включая меня, в этот момент испытывают реальный стресс. Сильный и опасный. _Вспоминаю случаи, когда мы делали по ночам работы по настройке сетевой безопасности РАО ЕЭС России, а потом нам звонили «срочно-все\_сломалось-чините!». Сколько косяков я мог избежать, если бы не ломился сразу вбивать команды с колотящемся сердцем… Сколько оправданий можно было бы не придумывать. Ведь стыдно признаться в своей поспешности и глупости…_ [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/f79/7ab/e49/f797abe49c328ecfe26857b829bb1c66.jpg
[2]: http://habrahabr.ru/post/242629/#habracut

[>] [Перевод] Пишите чистый код с Реактивными Расширениями (Reactive Extensions)
habra.14
habrabot(difrex,1) — All
2014-11-09 05:00:03


_Если у вас есть некий процесс, который может выполняться долго и возвращать несколько промежуточных результатов с течением времени, то Реактивные Расширения (**.NET Framework Reactive Extensions**) позволят вам упростить код и лучше управлять им._ ![чистый код с реактивными расширениями][1] В большинстве случаев вы просто вызываете метод и получаете результат на выходе. Но некоторые процессы устроены по-другому. Например, метод может выполняться в течение продолжительного промежутка времени. Или, что хуже, метод не только выполняется долго, а ещё и нерегулярно возвращает какие-то промежуточные результаты во время исполнения. Конечно, в том числе и для этого, в .NET Framework есть события, с помощью событий один объект может вызвать метод второго объекта, передавая некоторую информацию, в тот момент времени, когда это необходимо. Но есть решение этой проблемы по-лучше, чем использования событий, — Реактивные Расширения. Если у вас есть процесс, работающий долго и время от времени возвращающий промежуточные результаты, то Реактивные Расширения помогут вам обрабатывать такие результаты всякий раз, когда они приходят. Код от использования Реактивных Расширений вместо событий не только становится проще, но вы ещё получаете более богатую функциональность (например, вы можете использовать LINQ для отсеивания любых ненужных данных). [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/4cf/f37/dee/4cff37dee24402a5c5e3c33a5f2c0eb1.jpg
[2]: http://habrahabr.ru/post/242613/#habracut

[>] Резервное копирование виртуальных машин в среде гипервизора QEMU/KVM
habra.14
habrabot(difrex,1) — All
2014-11-09 22:00:03


Как известно, бэкапы нужно делать, мало того, нужно делать их так, чтобы потом с них можно было развернутся. Особенно это касается виртуальных машин (ВМ). Рассмотрим, как можно сделать бэкап виртуальных дисков машины в среде QCOW/KVM. Основных проблем здесь две: во-первых, нужно получить консистентый (целостный) бэкап, т.е. если у нас есть СУБД или другое ПО, которое активно использует собственный кэш на запись, то перед бэкапом его нужно попросить сбросить кэш и заморозить запись на диск, иначе данные-то в снэпшот попадут, но не те, и при восстановлении СУБД может не понять такой финт. Второй вопрос — производительность ВМ в режиме снэпшота, неплохо было бы, что бы ВМ не слишком тормозила, когда мы снимаем копию, и не зависала бы, когда мы удаляем снэпшот. Сразу дам ответ на первый вопрос — чтобы получить консистентный бэкап, нужно перед созданием бэкапа выключить ВМ средствами гостевой ОС, тогда бэкап точно получится целостным. Если вас устраивает такая ситуация — статью можно дальше не читать. Если же нет — прошу под кат. [Читать дальше →][1]

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

[>] Регулярные выражения
habra.14
habrabot(difrex,1) — All
2014-11-09 23:00:03




#### Содержание



* [Введение][1]
* [Величины, типы и операторы][2]
* [Структура программ][3]
* [Функции][4]
* [Структуры данных: объекты и массивы][5]
* [Функции высшего порядка][6]
* [Тайная жизнь объектов][7]
* [Проект: электронная жизнь][8]
* [Обработка ошибок][9]
* [Регулярные выражения][10]
* Модули
* Проект: язык программирования
* JavaScript и браузер
* Document Object Model
* Обработка событий
* Проект: игра-платформер
* Рисуем на Canvas
* HTTP
* Формы и поля ввода
* Проект: Paint
* Node.js
* Проект: веб-сайт по обмену умениями
* [Песочница для кода][11]

_Некоторые люди, столкнувшись с проблемой, думают: «О, а использую-ка я регулярные выражения». Теперь у них есть две проблемы. Джейми Завински Юан-Ма сказал: «Требуется большая сила, чтобы резать дерево поперёк структуры древесины. Требуется много кода, чтобы программировать поперёк структуры проблемы. Мастер Юан-Ма, «Книга программирования»_ Инструменты и техники программирования выживают и распространяются хаотично-эволюционным способом. Иногда выживают не красивые и гениальные, а просто такие, которые достаточно хорошо работают в своей области – к примеру, если их интегрируют в другую успешную технологию. В этой главе мы обсудим такой инструмент – регулярные выражения. Это способ описывать шаблоны в строковых данных. Они создают небольшой отдельный язык, который входит в JavaScript и во множество других языков и инструментов. Регулярки одновременно очень странные и крайне полезные. Их синтаксис загадочен, а программный интерфейс в JavaScript для них неуклюж. Но это мощный инструмент для исследования и обработки строк. Разобравшись с ними, вы станете более эффективным программистом. [Читать дальше →][12]

[1]: http://habrahabr.ru/post/240219/
[2]: http://habrahabr.ru/post/240223/
[3]: http://habrahabr.ru/post/240225/
[4]: http://habrahabr.ru/post/240349/
[5]: http://habrahabr.ru/post/240813/
[6]: http://habrahabr.ru/post/241155/
[7]: http://habrahabr.ru/post/241587/
[8]: http://habrahabr.ru/post/241776/
[9]: http://habrahabr.ru/post/242609/
[10]: http://habrahabr.ru/post/242695/
[11]: http://eloquentjavascript.net/code
[12]: http://habrahabr.ru/post/242695/#habracut

[>] [Перевод] «Eppur si muove!»* или Работаем с таймзонами в Python
habra.14
habrabot(difrex,1) — All
2014-11-10 00:30:04


На нашей планете Земля, в одно и то же время, в разных географических точках планеты может быть разное время суток. Это следствие того, что наш мир — вращающийся геоид, а не плоский диск, а что наша Солнечная система имеет только одну звезду — Солнце. Ещё со школы всем известно о часовых поясах, и все мы встречались с их проявлениями в реальной жизни («Московское время – 15 часов, в Петропавловске-Камчатском – полночь», джетлаг при дальних перелётах, и т.д.). К несчастью, часовые пояса всего лишь частично основаны на физических особенностях нашего мира, и при компьютерных вычислениях приходится учитывать другие, порой неожиданные, нюансы. \* «И всё-таки она вертится!» — крылатая фраза, которую якобы произнёс Галилео Галилей, покидая процесс инквизиции после отречения от своего убеждения в том, что Земля вращается вокруг Солнца. В нашем случае, увы, это вращение приводит ко всем этим «замечательным» проблемам с часовыми поясами. Что общего у этой статьи и Галилео? Да, в общем-то, ничего. Боюсь, что если бы наш мир был центром вселенной, нам всё равно пришлось бы иметь дело с таймзонами. Будем считать заголовок моей оплошностью, которую я уже не могу исправить (хотя я могу). [Читать дальше →][1]

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

[>] Выразительный JavaScript: Регулярные выражения
habra.14
habrabot(difrex,1) — All
2014-11-10 01:00:04




#### Содержание



* [Введение][1]
* [Величины, типы и операторы][2]
* [Структура программ][3]
* [Функции][4]
* [Структуры данных: объекты и массивы][5]
* [Функции высшего порядка][6]
* [Тайная жизнь объектов][7]
* [Проект: электронная жизнь][8]
* [Обработка ошибок][9]
* [Регулярные выражения][10]
* Модули
* Проект: язык программирования
* JavaScript и браузер
* Document Object Model
* Обработка событий
* Проект: игра-платформер
* Рисуем на Canvas
* HTTP
* Формы и поля ввода
* Проект: Paint
* Node.js
* Проект: веб-сайт по обмену умениями
* [Песочница для кода][11]

_Некоторые люди, столкнувшись с проблемой, думают: «О, а использую-ка я регулярные выражения». Теперь у них есть две проблемы. Джейми Завински Юан-Ма сказал: «Требуется большая сила, чтобы резать дерево поперёк структуры древесины. Требуется много кода, чтобы программировать поперёк структуры проблемы. Мастер Юан-Ма, «Книга программирования»_ Инструменты и техники программирования выживают и распространяются хаотично-эволюционным способом. Иногда выживают не красивые и гениальные, а просто такие, которые достаточно хорошо работают в своей области – к примеру, если их интегрируют в другую успешную технологию. В этой главе мы обсудим такой инструмент – регулярные выражения. Это способ описывать шаблоны в строковых данных. Они создают небольшой отдельный язык, который входит в JavaScript и во множество других языков и инструментов. Регулярки одновременно очень странные и крайне полезные. Их синтаксис загадочен, а программный интерфейс в JavaScript для них неуклюж. Но это мощный инструмент для исследования и обработки строк. Разобравшись с ними, вы станете более эффективным программистом. [Читать дальше →][12]

[1]: http://habrahabr.ru/post/240219/
[2]: http://habrahabr.ru/post/240223/
[3]: http://habrahabr.ru/post/240225/
[4]: http://habrahabr.ru/post/240349/
[5]: http://habrahabr.ru/post/240813/
[6]: http://habrahabr.ru/post/241155/
[7]: http://habrahabr.ru/post/241587/
[8]: http://habrahabr.ru/post/241776/
[9]: http://habrahabr.ru/post/242609/
[10]: http://habrahabr.ru/post/242695/
[11]: http://eloquentjavascript.net/code
[12]: http://habrahabr.ru/post/242695/#habracut

[>] Jump Start в PowerShell (часть II)
habra.14
habrabot(difrex,1) — All
2014-11-10 11:30:03


Кто, если не ты? Когда, если не сейчас? ![][1] В предыдущей части мы научились запускать PowerShell, разобрались с политикой выполнения сценариев. Поняли, что такое командлеты, знаем, как передавать их по конвейеру и как получить их свойства. Узнали, что PowerShell имеет огромный Help. В этой части мы разберёмся с переменными, узнаем, что они за типы и как к ним обращаться, как их сравнивать и выводить всевозможными способами. Обязательно разберёмся с циклами и напишем несколько функций. [Читать дальше →][2]

[1]: //habrastorage.org/files/20d/9ff/e70/20d9ffe70e974951aa8ef25c750e81a0.png
[2]: http://habrahabr.ru/post/242445/#habracut

[>] Простейший SMTP сервер для разработок
habra.14
habrabot(difrex,1) — All
2014-11-10 11:30:03


Для ленивых и не желающих возиться, сдувать пыль с бубна по настройке exim4/postfix/sendmail предлагается простейший сборщик почты написанный на Python. Его работа заключается в сборе всей почты, посылаемой этому фейковому smtp серверу и складывании её в указанную папку /tmp/mails в виде файлов писем nobody@mail.local.1 с порядковым номером. [Читать дальше →][2]

[1]: #link1
[2]: http://habrahabr.ru/post/242647/#habracut

[>] Новая профессия с первой попытки или искренность на собеседовании
habra.14
habrabot(difrex,1) — All
2014-11-10 12:30:04


Приходилось ли вам или вашим знакомым/друзьям полностью менять свою профессию? Как вы/они это делали? А в каких условиях и за какое время? С каким бекграундом по новой желаемой профессии вы пришли на первое собеседование? **Примем следующие условия:**

1. Тяжелая финансовая ситуация (семье нужны деньги)
2. Кризис в стране. На текущей работе резкое уменьшение зарплаты. Кризис. Финансов меньше, проектов меньше, премий тоже меньше.
3. У других работодателей похожая ситуация.
4. Необходимо как можно скорее сменить профессию.
5. Бекграунд по новой профессии есть, но он не очень велик/глубок.

Если конкретнее, то нужно было сменить профессию на веб-программиста. Не спорю, что порог входа в такую профессию не очень велик. Но а если цели еще вот такие:

1. Устроиться в нормальную, стабильную фирму, а не в ту, «куда возьмут».
2. Чтобы были отличные перспективы, мощный и умный коллектив.
3. Чтобы была возможность очень быстро расти и развиваться.

Можно создать очень привлекательное резюме. И пытаться произвести впечатление на работодателя всякими-разными способами. А может, просто быть искренним? Поделюсь своим опытом. [Читать дальше →][1]

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

[>] Как в Яндексе используют PyTest и другие фреймворки для функционального тестирования
habra.14
habrabot(difrex,1) — All
2014-11-10 18:00:04


Всем привет! Меня зовут Сергей, и в Яндексе я работаю в команде автоматизации тестирования сервисов монетизации. Перед каждой командой, которая занимается задачами автоматизации тестирования, встает вопрос: «Какой [фреймворк|инструмент] выбрать для написания своих тестов?» В этом посте я хочу помочь вам на него ответить. Если быть конкретнее, речь пойдет об инструментах тестирования на языке Python, но многие из идей и выводов можно распространить на другие языки программирования, поскольку подходы часто не зависят от конкретной технологии. [![][1]][2] В Python существует множество инструментов для написания тестов и выбор между ними неочевиден. Я опишу интересные варианты использования PyTest и расскажу о его [плюсах|минусах|неявных возможностях]. В статье вы найдёте развёрнутый пример использования [Allure][3], который служит для создания простых и понятных отчётов автотестов. Также в примерах будет применяться фреймворк для написания матчеров — [Hamcrest][4] для Python. Надеюсь, что в итоге, те, кто сейчас в поиске инструментов для тестирования, смогут на основе изложенных примеров быстро внедрить функциональное тестирование в своем окружении. Те же, кто уже использует какой-то инструмент, смогут узнать новые подходы, варианты использования и концепции. [Читать дальше →][5]

[1]: //habrastorage.org/files/54e/5d1/310/54e5d1310790471ca78a084c7b15879a.png
[2]: http://habrahabr.ru/company/yandex/blog/242795/
[3]: http://habrahabr.ru/company/yandex/blog/232697/
[4]: http://hamcrest.org/
[5]: http://habrahabr.ru/post/242795/#habracut

[>] [Из песочницы] Yield в CodeGear RAD Studio (Delphi 2007 for Win32)
habra.14
habrabot(difrex,1) — All
2014-11-10 18:30:03


Привет хабр! Понадобилось внезапно портировать программу с C# на Delphi. В программе на C# активно использовался [yield][1]. Погуглив просторы интернета в надежде не заниматься изобретением велосипеда, удалось найти реализацию yield для Win32 на базе [фиберов][2] для [Embarcadero Delphi 2009][3] и выше, но вот беда — требовалось сделать порт под CodeGear RAD Studio для версии Delphi 2007, в которой ещё отсутствовали [обобщённые типы][4] и [анонимные методы][5]. Менять версию Delphi на более позднюю было нельзя и поэтому пришлось переписать найденную реализацию yield для более ранней версии. Взяв [исходник юнита][6] с реализаций yield для Delphi 2009 и выше за авторством [Andriy Gerasika][7] я его переделал для Delphi 2007. [Читать дальше →][8]

[1]: http://msdn.microsoft.com/ru-ru/library/9k7k7cf0.aspx
[2]: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682661%28v=vs.85%29.aspx
[3]: http://www.embarcadero.com/products/delphi
[4]: https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BE%D0%B1%D1%89%D1%91%D0%BD%D0%BD%D0%BE%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#Object_Pascal
[5]: https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F
[6]: http://cdn.gerixsoft.com/sites/gerixsoft.com/files/DelphiYield.zip
[7]: mailto:andriy.gerasika@gerixsoft.com
[8]: http://habrahabr.ru/post/242737/#habracut

[>] [recovery mode] Перевыпускаем сертификат с SHA-2 — если Webnames не идет к Магомету…
habra.14
habrabot(difrex,1) — All
2014-11-10 19:30:02


![][1]Как было [объявлено 5 сентября 2014 года][2], разработчики браузера Chromium уже не очень жалуют алгоритм хеширования SHA-1. Сам вид адресной строки браузера будет давать понять посетителям https-сайтов, «закрытых» такими сертификатами, что с сайтом что-то «не те». Вид строки будет меняться со временем, давая время для более-менее плавного перехода, а в конце сертификаты с SHA-1 перестанут считаться вообще сколько-нибудь безопасными: ![][3] [Читать дальше →][4]

[1]: //habrastorage.org/files/554/c73/837/554c73837b8a4c758c3ce9af81683177.png
[2]: http://blog.chromium.org/2014/09/gradually-sunsetting-sha-1.html
[3]: //habrastorage.org/files/7fc/0a7/83b/7fc0a783becc4f7e8176cb188165d9dc.png
[4]: http://habrahabr.ru/post/242799/#habracut

[>] network manager + автоматизация http-логина в wifi
habra.14
habrabot(difrex,1) — All
2014-11-10 22:00:04


Пост будет коротким, но очень полезным. abstract: Есть масса wifi-хот-спотов, которые просят сделать какую-нибудь глупость при подключении. Ввести пароль в http-форме, поставить чекбокс «согласен с продажей почки в обмен на интернет» и т. д. Это задалбывает, особенно, если из wifi периодически выкидывает. В посте предлагается простое решение для автоматизации логина с помощью хуков Network Manager.

## Подготовка

Нам надо понять куда кого как посылать, чтобы оно заработало. Ставим firebug или любой другой похожий плагин. Включаем, идём в вкладку 'net', включаем **persistent** (это важно), логинимся. Получаем вот такое: ![][1] Находим POST (если их несколько — методом перебора и комбинирования), выбираем copy as curl, сохраняем куда-нибудь на будущее. Дальше находим uuid нашего коннекта — в файле /etc/NetworkManager/system-connections/our\_wifi. Пишем скрипт (всё ниже — от рута) в каталоге /etc/NetworkManager/dispatcher.d/, например, /etc/NetworkManager/dispatcher.d/02-**our\_wifi**-auto [Читать дальше →][2]

[1]: //habrastorage.org/files/d3f/0a2/2e1/d3f0a22e168b4697be55c538d7080fd5.png
[2]: http://habrahabr.ru/post/242819/#habracut

[>] [Перевод] Рушим капчу SilkRoad 2.0
habra.14
habrabot(difrex,1) — All
2014-11-10 23:30:04


![][1] _Эта статья является продолжением моего предыдущего топика. Вы просили, и я публикую._ Для начала: я был крайне удивлен, что код из первой статьи действительно побеждал капчу SilkRoad. Люди реально стали интересоваться темным интернетом, и, как Вы знаете, появился SillRoad 2.0 после закрытия первого его товарища (хотя второй, тоже недавно был закрыт). О взломе капчи мы поговорим с Вами под катом. [Читать дальше →][2]

[1]: //habrastorage.org/files/5ff/316/0af/5ff3160afa964a19b572ee245ef01ecb.png
[2]: http://habrahabr.ru/post/241263/#habracut

[>] «Never say never» или Работаем с таймзонами правильно
habra.14
habrabot(difrex,1) — All
2014-11-11 00:30:04


Эта статья рассказывает о проблемах, которые поджидают программиста, работающего с часовыми поясами. В теории, вроде, всё хорошо, просто и понятно, но жизнь — штука сложная, и на практике, порой, возникают совершенно неожиданные ситуации. **TL;DR: Работа с таймзонами — это боль и унижение. Никогда не работайте с таймзонами!** Итак, [все][1] [кругом][2] [твердят][3] вам, что при получении времени от пользователя нужно сразу же переводить его в UTC, работать со временем нужно только в UTC и хранить время тоже нужно строго в UTC. Совет, на первый взгляд, выглядит разумным, и следование ему делает вашу жизнь проще… Если только ваша программа не предполагает сложной работы с датами. Записать в базу данных дату и время регистрации пользователя на сайте? Сохранить время отправки сообщения или дату создания заказа в интернет-магазине? Вывести сообщение в лог с указанием даты-времени? Используйте UTC и всё будет в порядке, можете даже не читать эту статью дальше. Любое текущее время можно совершенно спокойно конвертировать в UTC и забыть о проблемах. Но что, если мы хотим работать с временем в будущем? Или в прошлом? Например, если мы пишем сервис календаря, или сервис для отложенной отправки сообщений? [Читать дальше →][4]

[1]: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/
[2]: http://habrahabr.ru/company/mailru/blog/242615/
[3]: http://asvetlov.blogspot.ru/2011/02/date-and-time.html
[4]: http://habrahabr.ru/post/242645/#habracut

[>] SpeechMarkup API — превращаем речь в данные
habra.14
habrabot(difrex,1) — All
2014-11-11 03:00:03


![][1] В статье пойдет речь о том, как из любого _запроса на естественном языке_ получить реальные данные, с которыми может работать ваше приложение. А именно, о [REST API сервиса SpeechMarkup][2], который преобразует обычную строчку текста в JSON со всеми найденными _смысловыми сущностями_ с конкретными данными в каждой из них. _Да-да, это та самая технология, которая лежит в основе любого голосового ассистента и используется в поисковиках._ Она позволяет однозначно интерпретировать запрос и «понять», о чем говорит пользователь, а затем вернуть вашему приложению результат в виде обычного набора данных. В статье я расскажу, для чего можно использовать данный API и приведу [небольшой пример работающего приложения][3]. [Читать дальше →][4]

[1]: //habrastorage.org/files/5ce/3d2/6b3/5ce3d26b3d804cae9fc86c074ea01d2c.png
[2]: http://markup.dusi.mobi
[3]: http://markup.dusi.mobi/demo/index.html
[4]: http://habrahabr.ru/post/242823/#habracut

[>] Установка, настройка и использование сканера уязвимостей сервера rkhunter
habra.14
habrabot(difrex,1) — All
2014-11-11 16:30:04


На хабре не раз было упомянуто приложение под названием rkhunter. Хотелось бы остановиться на нем по подробней. Rkhunter — это сканер различных видов локальных (потенциальных) уязвимостей (бэкдоров, эксплоитов и руткитов) со своей регулярно обновляемой базой. Он написан на bash и perl, поэтому будет работать под любой серверной ОС на базе unix без каких-либо проблем. ![][1] [Читать дальше →][2]

[1]: //habrastorage.org/files/1cc/706/cf5/1cc706cf5f1e4e2c8430118fc29495cf.gif
[2]: http://habrahabr.ru/post/242865/#habracut

[>] Интервью: Тим Мессершмидт, PayPal
habra.14
habrabot(difrex,1) — All
2014-11-11 18:00:13


![image][1] Многие читатели Хабра слушали доклад Тима Мессершмидта, который отвечает за связи PayPal с разработчиками в странах Европы, Ближнего Востока и Африки на прошедшей недавно конференции MBLTDev. Речь шла об аутентификации и сложностях, с которыми сталкиваются специалисты, пытаясь защитить пользовательские данные. Технический директор Redmadrobot Артур Сахаров [mc\_murphy][2] поймал Тима за кулисами мероприятия и поговорил с ним о безопасности, джейлбрейке и языках программирования. **В своем выступлении вы много говорили о том, что качество UX зачастую вступает в противоречие с безопасностью — в особенности, когда речь идет о “чувствительной” информации, как например, в банковских приложениях. Расскажите об этом, пожалуйста, поподробнее.** В PayPal мы применяем двухфакторную авторизацию: при подтверждении нового устройства используем его аппаратные идентификаторы и подтверждаем их одноразовыми кодами доступа, которые рассылаются через SMS. Когда пользователь регистрируется, ему по электронной почте также приходит письмо с просьбой подтвердить авторизацию. То есть мы предлагаем целый ряд решений в области безопасности помимо обычной регистрации и последующего входа по паролю. [Читать дальше →][3]

[1]: http://habrastorage.org/getpro/habr/post_images/8f1/3f3/617/8f13f3617d6820cedd5b42ec2f90a7f0.jpg
[2]: http://habrahabr.ru/users/mc_murphy/
[3]: http://habrahabr.ru/post/242827/#habracut

[>] Стековое программирование с человеческим лицом
habra.14
habrabot(difrex,1) — All
2014-11-11 21:00:03


Думаю, многие из вас находили в интернете статьи и книги о стековом программировании и языке Forth. Сперва волна энтузиазма: как всё просто, логично, понятно и мощно! И почему же эти идеи имеют такое незначительное распространение? Почему так мало программистов реально используют языки вроде Форта? Через какое-то время подступает волна разочарования: да, интересная мысль, но как же тяжело читать исходный код, как же муторно ведётся работа с переменными, строками и дробными числами! Интересная игрушка, полезная группе байтослесарей, не более. ![image][1] Часто на этом всё и заканчивается. Но лично я никак не мог примириться с мыслью о том, что изящное конкатенативное программирование так и останется в тени других идей. Да, трудности с чтением исходного кода. Да, синдром одной строки. Да, каждый раз для понимания алгоритма приходится в воображении транслировать программу и представлять себе стек, читая исходный код. Но неужели это те недостатки, которые обязательно присущи стековым языкам и без которых стековое программирование перестало бы быть стековым? Неужели никак нельзя хотя бы сгладить подобные недостатки и облегчить жизнь программистам? Оказывается, можно и нужно! [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/e8a/3de/65e/e8a3de65e55f988c9e154f4ca5174be2.gif
[2]: http://habrahabr.ru/post/242821/#habracut

[>] Изоморфные JavaScript-приложения с Catberry.js
habra.14
habrabot(difrex,1) — All
2014-11-12 10:30:11


![][1] Catberry.js — это фреймворк для разработки изоморфных JavaScript-приложений на node.js с использованием модульной архитектуры и быстрых механизмов рендеринга. Этот фреймворк позволяет написать модуль приложения один раз и использовать его как на сервере для рендеринга страниц для поисковых роботов, так и в браузере для одностраничного приложения, запрашивая только данные для шаблонов. [Читать дальше →][2]

[1]: //habrastorage.org/files/635/80d/1f3/63580d1f3304402da4836ce103b81251.png
[2]: http://habrahabr.ru/post/242909/#habracut

[>] [Перевод] H.265/HEVC. Оптимизация под архитектуру Intel
habra.14
habrabot(difrex,1) — All
2014-11-12 13:00:03


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

[1]: //habrastorage.org/files/5c7/10e/83d/5c710e83da36455da640764f838bcc9c.png
[2]: http://habrahabr.ru/post/242781/#habracut

[>] Статистическая проверка случайности двоичных последовательностей методами NIST
habra.14
habrabot(difrex,1) — All
2014-11-12 14:30:17


![][1] Любой, кто, так или иначе, сталкивался с криптографией, знает, что без генераторов случайных чисел в этом деле не обойтись. Одно из возможных применений таких генераторов, например, – генерация ключей. Но не каждый при этом задумывается, а насколько «хорош» тот или иной генератор. А если и задумывался, то сталкивался с тем фактом, что в мире не существует какого-либо единственного «официального» набора критериев, который бы оценивал, насколько данные случайные числа применимы именно для данной области криптографии. Если последовательность случайных чисел предсказуема, то даже самый стойкий алгоритм шифрования, в котором данная последовательность будет использоваться, оказывается, уязвим — например, резко уменьшается пространство возможных ключей, которые необходимо «перебрать» злоумышленнику для получения некоторой информации, с помощью которой он сможет «взломать» всю систему. К счастью, разные организации все же пытаются навести здесь порядок, в частности, американский институт по стандартам NIST разработал набор тестов для оценки случайности последовательности чисел. О них и пойдет речь в данной статье. Но сначала — немного теории (постараюсь изложить не нудно). [Читать дальше →][2]

[1]: //habrastorage.org/files/408/034/cce/408034cced804225823d4de717072edf.jpg
[2]: http://habrahabr.ru/post/237695/#habracut

[>] Критическая уязвимость в Microsoft SChannel
habra.14
habrabot(difrex,1) — All
2014-11-12 15:00:02


Пользователи Windows, я думаю, были несколько расстроены, что OpenSSL Heartbleed их практически не затронул. Теперь же и они могут повеселиться! Вчера Microsoft опубликовала [Security Bulletin MS14-066][1], в котором описывается критический баг в SChannel — реализации SSL/TLS от Microsoft, который позволяет злоумышленнику удаленно выполнять произвольный код. Обновления, закрывающую уязвимость, уже доступны через Windows Update. Подвержены все версии Windows, начиная с 2003, в том числе и Windows RT. Это позволяет предположить, что уязвимость имеется не только на стороне сервера, но и на стороне клиента. [Читать дальше →][2]

[1]: https://technet.microsoft.com/en-us/library/security/ms14-066.aspx
[2]: http://habrahabr.ru/post/242997/#habracut

[>] Моноширинные шрифты с программистскими лигатурами
habra.14
habrabot(difrex,1) — All
2014-11-12 15:00:02


Программисты любят псевдографику. В любом языке полно составных знаков: `->`, `` нарисовать настоящую стрелочку. Это сильно облегчает мозгу сканирование и токенизацию кода: там, где по смыслу один символ, теперь и нарисован один символ. Самое главное, что это работает с любым, даже уже написанным кодом. [Читать дальше →][1]

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

[>] [Из песочницы] Вероятностное программирование – ключ к искусственному интеллекту?
habra.14
habrabot(difrex,1) — All
2014-11-12 15:00:02




#### Немного воды

Уже более полутора лет назад прошла новость о том, что [«DARPA намерено совершить революцию в машинном обучении»][1]. Конечно, DARPA всего лишь выделила деньги на исследовательскую программу, связанную с вероятностным программированием. Само же вероятностное программирование существует и развивается без DARPA достаточно давно, причем исследования ведутся, как в ведущих университетах, таких как MIT, так и в крупных корпорациях, таких как Microsoft. И вовсе не зря DARPA, Microsoft, MIT и т.д. обращают пристальное внимание на эту область, ведь она по-настоящему перспективна для машинного обучения, а, может, и для искусственного интеллекта в целом. Говорят, что вероятностное программирование для машинного обучения будет играть ту же роль, что и высокоуровневые языки для обычного программирования. Мы бы привели другую параллель – с ролью Пролога, которую он сыграл для старого доброго ИИ. Вот только в Рунете по данной теме до сих пор можно найти лишь единичные ссылки, и то в основном содержащие лишь описания общих принципов. Возможно, это связано с тем, что потенциал вероятностного программирования еще только начал раскрываться и оно не стало основным трендом. Однако на что же способны или будут способны вероятностные языки? [Читать дальше →][2]

[1]: http://habrahabr.ru/post/174145/
[2]: http://habrahabr.ru/post/242993/#habracut

[>] [Из песочницы] Выбор поставщика решения двухфакторной аутентификации. Часть 1 из 2
habra.14
habrabot(difrex,1) — All
2014-11-12 15:00:02


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



О решении проблемы уже все наслышаны. Конечно, речь идет о применении мультифакторной аутентификации (MFA). Факторами могут выступать знания, предметы или биометрические данные (недостаткам биометрии я планирую посвятить отдельную статью). Чаще всего применяется двухфакторная аутентификация, которая использует привычный пароль, а также еще один одноразовый (). Он может быть доставлен пользователю различными способами и действует только для одного сеанса аутентификации. Также, в современных алгоритмах генерации паролей TOTP (по времени) и OCRA (по запросу) время действия одноразового пароля ограничено 30 или 60 секундами, что значительно усложняет задачу злоумышленнику. Способы доставки или автономной генерации существуют различные: от распечатанных списков паролей на карточках или чеках из банкоматов, SMS-сообщений до использования специальных устройств генерации OTP — токенов. [Читать дальше →][1]

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

[>] [Из песочницы] Postgres. Выборка N случайных записей
habra.14
habrabot(difrex,1) — All
2014-11-12 15:30:39


При работе над одним проектом возникла необходимость написать некое подобие тестовой системы. Задача формулировалась примерно следующим образом:

* из N записей в базе необходимо выбрать m (3-5) случайных строк в серии из k выборок (преимущественно k=2).

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

SELECT *
FROM data_set
WHERE id NOT IN (1,2,3,4, 5)
ORDER BY random()
LIMIT 5;


И это даже будет работать. Вот только цена такого решения… [Читать дальше →][1]

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

[>] [Перевод] Памятка: Как стартапам обеспечить защиту данных в облаке
habra.14
habrabot(difrex,1) — All
2014-11-12 15:30:47


[![image][1]][2] **Примечание переводчика: **_За последние несколько лет тема информационной безопасности окончательно перестала быть уделом гиков и специалист и теперь интересует всех. После разоблачений Сноудена пользователи разнообразных онлайн-сервисов стали задумываться о безопасности своих данных. Теперь компании, которые эту безопасность не обеспечивают, могут столкнуться с огромными имиджевыми и финансовыми потерями в случае хакерской атаки. Часто учетные данные пользователей похищают через сторонние сервисы (как было в случаях с [Dropbox][3] и «[Яндексом][4]»), но даже в такой ситуации на компанию падает тень, а ее клиенты остаются недовольными. При этом далеко не все создатели новых проектов уделяют защите данных должное внимание (в результате возникают скандалы, вроде [ситуации][5] с анонимным приложением Whisper, информация пользователей которого оказалась не столь анонимной, как предполагалось). Стивен Коти, главный евангелист по безопасности ИБ-компании Alert Logic, написал материал о том, как стартапам подходить к организации информационной безопасности при использовании облачных сервисов. _ [Читать дальше →][6]

[1]: http://habrastorage.org/getpro/habr/post_images/caa/0b6/e14/caa0b6e14fd3576dc9793d1cc0f33965.jpg
[2]: http://habrahabr.ru/company/1cloud/blog/243001/
[3]: http://www.zdnet.com/dropbox-blames-other-services-for-claimed-7-million-password-hack-7000034629/
[4]: http://habrahabr.ru/post/235949/
[5]: http://roem.ru/2014/10/20/outloud109868/
[6]: http://habrahabr.ru/post/243001/#habracut

[>] [Из песочницы] Software renderer — 1: матчасть
habra.14
habrabot(difrex,1) — All
2014-11-12 15:31:00


Программный рендеринг (software rendering) — это процесс построения изображения без помощи GPU. Этот процесс может идти в одном из двух режимов: в реальном времени (вычисление большого числа кадров в секунду — необходимо для интерактивных приложений, например, игр) и в «оффлайн» режиме (при котором время, которое может быть потрачено на вычисление одного кадра, не ограничено настолько строго — вычисления могут длиться часы или даже дни). Я буду рассматривать только режим рендеринга в реальном времени. У этого подхода существуют как недостатки так и достоинства. Очевидным недостатком является производительность — CPU не в состоянии конкурировать с современными видеокартами в этой области. К достоинствам стоит причислить независимость от видеокарты — именно поэтому он используется как замена аппаратного рендеринга в случаях, когда видеокарта не поддерживает ту или иную возможность (так называемый software fallback). Существуют и проекты, цель которых — полностью заменить аппаратный рендеринг программным, например, WARP, входящий в состав Direct3D 11. Но главным плюсом является возможность написания подобного рендерера самостоятельно. Это служит образовательным целям и, на мой взгляд, это — самый лучший способ понять лежащие в основе алгоритмы и принципы. Это именно то, о чем будет рассказано в серии этих статей. Мы начнем с возможности закрашивать пиксель в окне заданным цветом и построим на этом возможность отрисовки трехмерной сцены в реальном времени, с движущимися текстурированными моделями и освещением, а так же с возможностью перемещаться по этой сцене. Но для того, чтобы вывести на экран хотя бы первый полигон, необходимо освоить математику, на которой это построено. Первая часть будет посвящена именно ей, поэтому в много различных матриц и прочей геометрии. В конце статьи будет ссылка на гитхаб проекта, который можно рассматривать как пример реализации. [Читать дальше →][1]

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

[>] Энтузиаст сконструировал самодельный 8-битный процессор в Minecraft
habra.14
habrabot(difrex,1) — All
2014-11-12 16:30:47


Энтузиаст, скрывающийся под ником Dj Sapsan, создал в Minecraft самый настоящий процессор, который может выполнять простейшие программы! ![][1] Подробное видео с описанием и демонстрацией работы под катом. [Читать дальше →][2]

[1]: //habrastorage.org/files/058/953/bbd/058953bbd8dd46e18aaa42a64363bdac.png
[2]: http://habrahabr.ru/post/243013/#habracut

[>] Почему Spritz стал столь популярным за последние несколько недель
habra.14
habrabot(difrex,1) — All
2014-11-12 17:30:37


![][1]

## Привет, %username%!

Мне, как ни разу не профессиональному математику или криптографу, бывает сразу сложно понять, как устроен тот или иной алгоритм шифрования. Перед вами попытка разобраться с отдельными функциями этого алгоритма. А так же понять, почему это следующий шаг после Keccak. На Хабре было несколько статей, которые описывали [Sponge функцию][2], или, по-русски, губку ([один][3], [два][4]). Эта функция может использоваться несколькими способами: как криптор\\декриптор, как хеш, как хеш с раздельными доменами, формировать код аутентичности сообщения (MAC) или имитовставку, работает как потоковый шифр, как потоковый шифр с произвольным доступом, аутентификация с ассоциированными данными (Authenticated Encryption with Associated Data), как генератор псевдослучайных чисел, генерировать симметричные ключи из паролей. [Читать дальше →][5]

[1]: //habrastorage.org/files/3cf/a93/584/3cfa93584d7f4fd6b891cb2c935fc79f.png
[2]: https://en.wikipedia.org/wiki/Sponge_function
[3]: http://habrahabr.ru/post/159073/
[4]: http://habrahabr.ru/post/168707/
[5]: http://habrahabr.ru/post/243023/#habracut

[>] [Из песочницы] Sandcastle и SHFB
habra.14
habrabot(difrex,1) — All
2014-11-12 18:31:08


![][1] Это статья-заметка о работе с Sandcastle и , дабы не забыть самому и рассказать другим. Со времён последней статьи о Sandcastle ([«Создание документации в .NET»][2]) прошло 4 года, так что пора освежить некоторые моменты этой утилиты документации. [Читать дальше →][3]

[1]: //habrastorage.org/files/2c8/65e/77a/2c865e77aa424b4784e04bff4d9bcb4d.jpg
[2]: http://habrahabr.ru/post/102177/
[3]: http://habrahabr.ru/post/243039/#habracut

[>] Уязвимость 19-летней давности позволяет захватить компьютер через Internet Explorer
habra.14
habrabot(difrex,1) — All
2014-11-12 19:00:56


Исследователи из IBM X-Force обнаружили опасную уязвимость [CVE-2014-6332][1], которой, по их заявлениям, подвержены все версии Microsoft Windows, начиная с Windows 95. Основное потенциально уязвимое приложение с этим багом — Internet Explorer, начиная от версии 3.0. Уязвимость позволяет получать несанкционированный доступ к пользовательским данным или удалённо запускать вредоносные программы на атакованном компьютере. При этом атакующий может обойти такие защитные механизмы, как «песочница» Enhanced Protected Mode, используемая в IE 11, и система безопасности Enhanced Mitigation Experience Toolkit (EMET). [![image][2]][3] Уязвимость появилась в коде приложений Windows ещё в 1996 году с выходом IE 3.0, где стал использоваться Visual Basic Script (VBScript). Атаки на основе этой уязвимости относятся к классу «манипуляции данными», то есть являются более редкой и более опасной техникой, чем «переполнение буфера» и другие классические способы взлома. Уязвимость связана с некорректной отработкой процедуры изменения размера массивов SafeArray, что позволяет незаметно сбивать адресацию и получать доступ к данным по любому адресу, а не только в рамках заданного массива. [Читать дальше →][4]

[1]: http://securityintelligence.com/ibm-x-force-researcher-finds-significant-vulnerability-in-microsoft-windows/
[2]: http://habrastorage.org/getpro/habr/post_images/5a9/b44/174/5a9b441745d0b3007657c0513c4ab205.jpg
[3]: http://i.imgur.com/0QFDWb8.jpg
[4]: http://habrahabr.ru/post/243047/#habracut

[>] .NET Framework скоро Open Source и на *nix
habra.14
habrabot(difrex,1) — All
2014-11-12 22:30:49




# Основное

* Reference Source для .NET 4.6 перелицензируется под MIT
* В дальнейшем фреймворк будет с открытыми исходниками и поставляться по частям через NuGet, можно будет с приложением поставлять свою сборку, которая будет изолирована от всего остального
* Разработка переезжает на [GitHub][1]
* Скоро откроют исходники рантайма, включая RiyuJit и сборшик мусора
* Для всего этого счастья планируется официальная поддержка никсов

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

[1]: https://github.com/dotnet
[2]: http://habrahabr.ru/post/243065/#habracut

[>] .NET Server Core, кросс-платформенная разработка, Visual Studio 2015 и другие анонсы Microsoft Connect()
habra.14
habrabot(difrex,1) — All
2014-11-12 23:30:41


![][1] Сегодня в Нью Йорке проходит конференция Microsoft Connect(), на которой анонсированы новые продукты и технологии. Выпущена предварительная версия Visual Studio 2015, специальная бесплатная редакция Visual Studio Community 2013, Visual Studio 2013 update 4, открывается исходный код .NET Server Core, выпущена предварительная версия .NET 2015, обновлены инструменты кросс-платформенной разработки на базе Apache Cordova, в Visual Studio появился эмулятор ОС Android. Это действительно новый этап в развитии инструментов разработки Microsoft, и мы рады рассказать о деталях. [Читать дальше →][2]

[1]: http://habrastorage.org/getpro/habr/post_images/dc2/e30/b96/dc2e30b96cce28d0acf781e909f06be2.png
[2]: http://habrahabr.ru/post/243067/#habracut

[>] «Напиши свою игру!» — Новогодний конкурс от KolibriOS
habra.14
habrabot(difrex,1) — All
2014-11-13 11:00:47


![][1]Новый Год уже не за горами, а какой же Новый Год — без новогодних конкурсов с подарками? Мы в [проекте KolibriOS][2] решили не отходить от традиции, и провести наш собственный конкурс, с денежными призами. Поскольку находимся мы на Хабре, простой случайный розыгрыш призов вроде [конкурса от Mail.Ru][3] мы считаем здесь неуместным, и призы нужно будет заработать. Поскольку KolibriOS — хобби-проект, конкурс будет связан с развлечениями. Ну, а поскольку мы не такие богатые, как [Mail.Ru][4], то и призы будут поменьше ![image][5] Задачей конкурса является ** Игры всех участников, успешно выполнивших задание, будут выставлены на голосование на Хабре в январе 2015 г. По результатам голосования, будут присуждены призы:

* **1 место** — $1,000 США
* **2 место** — $500 США
* **3 место** — $250 США

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

[1]: //habrastorage.org/files/c17/25f/7fd/c1725f7fddcb432f8a051968f29298c6.png
[2]: http://kolibrios.org/ru
[3]: http://habrahabr.ru/company/mailru/blog/236501/
[4]: http://habrahabr.ru/company/mailru/profile/
[5]: http://habr.habrastorage.org/comment_images/695/2d8/8b9/6952d88b9d31a7a636afc5fe977b3ca7.gif
[6]: http://flatassembler.net/
[7]: https://ru.wikipedia.org/wiki/Brainfuck
[8]: http://board.kolibrios.org/viewtopic.php?f=45&t=1662
[9]: http://websvn.kolibrios.org
[10]: http://opensource.org/licenses/alphabetical
[11]: http://board.kolibrios.org/viewtopic.php?f=7&t=2869
[12]: http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fbuild.txt
[13]: http://habr.habrastorage.org/comment_images/695/2d8/8b9/6952d88b9d31a7a636afc5fe977b3ca7.gif
[14]: http://habrahabr.ru/post/243081/#habracut

[>] Моя семья Linux-оидов
habra.14
habrabot(difrex,1) — All
2014-11-13 12:00:30


Я -Linux-оид до мозга костей. Я это понял вчера, когда вкратце рассказал эту историю коллеге. Думаю, вам она тоже будет интересна, кому-то необычна, кому-то напомнит свою историю. Я использую Linux 13 лет. Сидел на десктопе на Red Hat, Debian, Ubuntu, Gentoo, CentOS. Администрировал CentOS, Debian, Gentoo. Сейчас предпочитаю Debian. Ну просто нравится он мне. И не знал бы печали, если бы мои домашние не использовали Windows. Дело не в том, что он «плохой» или «не соответствует моей религии». Я не хочу его поддерживать. Не хочу лечить вирусы, не хочу переставлять слетевшие дрова после очередного апдейта, не хочу переставлять систему, «когда все умерло». Честно скажу, я плохо знаю Windows. [Читать дальше →][1]

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

[>] Уязвимость в одном из сервисов Альфа-Банка позволяла просматривать выписки по любому клиенту
habra.14
habrabot(difrex,1) — All
2014-11-13 12:30:27


Месяц назад, просматривая мобильное приложение для интернет-банкинга от Альфа-Банка, решил проверить, насколько оно безопасно. ![][1] Так как я являюсь клиентом этого банка, мне было интересно, уделяют ли они должное внимание безопасному хранению данных клиентов. Уточню, что я являюсь клиентом украинского филиала и соответственно имел возможность проверять только ту часть мобильного приложения, которая предназначена для украинских клиентов. ![][2] [Читать дальше →][3]

[1]: //habrastorage.org/files/99f/b46/b3d/99fb46b3d1c247608da1fb98985c5241.jpg
[2]: //habrastorage.org/files/108/528/36c/10852836c0e046f78cc82ef4ec291cd4.jpg
[3]: http://habrahabr.ru/post/243105/#habracut

[>] PentestIT. Практическая ИБ: итоги 2014 года. Часть I
habra.14
habrabot(difrex,1) — All
2014-11-13 12:30:42


![][1]Добрый день! Хотим поприветствовать всех поклонников нашего блога и подвести краткие итоги уходящего 2014 года. В этом году компания PentestIT запустила две программы подготовки специалистов в сфере практической ИБ: «Zero Security: A» и «Корпоративные лаборатории тестирования на проникновение». Программы, как и задумывалось, получились разные: как по уровню подготовки, так и по сложности преподаваемого материала. Хотелось бы рассказать вам, чего мы добились по каждой из программ. [Читать дальше →][2]

[1]: //habrastorage.org/files/630/d7e/366/630d7e366d854d9991a1106a3e543ccf.png
[2]: http://habrahabr.ru/post/243083/#habracut

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 ... 41