RSS
Pages: 1 ... 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
[>] [Перевод] Поиск ошибки в архитектуре процессора Xbox 360
habra.16
habrabot(difrex,1) — All
2018-01-08 17:30:05


_Вашему вниманию предлагается перевод свежей статьи Брюса Доусона – разработчика, сегодня работающего в Google над Chrome для Windows._

Недавнее открытие уязвимостей [Meltdown][1] и [Spectre][2] напомнило мне о том случае, как однажды я обнаружил подобную уязвимость в процессоре Xbox 360. Её причиной была недавно добавленная в процессор инструкция, само существование которой представляло собой опасность.

В 2005 году я занимался процессором Xbox 360. Я жил и дышал исключительно этим чипом. У меня на стене до сих пор висят полупроводниковая пластина процессора диаметром в 30 см и полутораметровый постер с архитектурой этого CPU. Я потратил так много времени на то, чтобы понять, как работают вычислительные конвейеры процессора, что, когда меня попросили выяснить причину загадочных падений, я смог интуитивно догадаться о том, что к их появлению могла привести ошибка в дизайне процессора.

Однако, прежде чем перейти к самой проблеме, сначала немного теории.
[Читать дальше →][3]

[1]: https://meltdownattack.com/meltdown.pdf
[2]: https://spectreattack.com/spectre.pdf
[3]: https://habrahabr.ru/post/346250/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346250#habracut

[>] [Из песочницы] Пишем бота-кликера на Python для Lineage 2
habra.16
habrabot(difrex,1) — All
2018-01-08 20:00:17


### Предисловие



![][1]



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



Когда-то в школьные годы был увлечен одной из популярных MMORPG — Lineage 2. В игре можно объединяться в кланы, группы, заводить друзей и сражаться с соперниками, но в общем игра наполнена однообразными действиями: выполнением квестов и фармом (сбор ресурсов, получение опыта).



В итоге решил, что бот должен решать одну задачу: фарм. Для управления будут использоваться эмулированные клики мыши и нажатия клавиш клавиатуры, а для ориентирования в пространстве — компьютерное зрение, язык программирования — Python.

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

[1]: https://habrastorage.org/webt/au/qu/9v/auqu9vofroghnpf5mezhdughqw8.jpeg
[2]: https://habrahabr.ru/post/346258/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346258#habracut

[>] Вычисления на видеокарте, руководство, лёгкий уровень
habra.16
habrabot(difrex,1) — All
2018-01-08 23:00:05


Это руководство поясняет работу простейшей программы, производящей вычисления на GPU. Вот ссылка на проект Юнити этой программы:

[ссылка на файл проекта .unitypackage][1]

Она рисует фрактал Мандельброта.

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

Шейдер, который рисует фрактал, написан на языке HLSL. Ниже приведён его текст. Я кратко прокомментировал значимые строки, а развёрнутые объяснения будут ниже.
[Читать дальше →][2]

[1]: https://drive.google.com/open?id=1NlaEh0NiRRtmunTBDyPGTNlgtsLACAzq
[2]: https://habrahabr.ru/post/346260/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346260#habracut

[>] Физическое моделирование на GPU с использованием compute shader в среде Unity3D
habra.16
habrabot(difrex,1) — All
2018-01-09 00:30:05


В этом руководстве я расскажу, как использовать compute shader для реализации вычислений на видеокарте — на примере модели волос:

> [View post on imgur.com][1]


Вот проект для Unity3D, на объяснении работы которого построено руководство. Его нужно скачать и открыть в Юнити:

[ссылка на проект юнити][2]

Кому это руководство будет понятно? Тем, кто использует Unity3D или по крайней мере знает C# или C++. Шейдер написан на HLSL, близком синтаксическом родственнике C++.
Кому это руководство будет полезно? Опытным программистам, желающим научиться использовать GPU для вычислений. Но даже неопытный, но прилежный программист легко всё поймёт.
[Читать дальше →][3]

[1]: https://imgur.com/pxfW7cC
[2]: https://drive.google.com/open?id=1LTgdVaiOuGuXhb6Mhc_Z1gStP7muxZlO
[3]: https://habrahabr.ru/post/346268/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346268#habracut

[>] [Из песочницы] Кластеризация и визуализация текстовой информации
habra.16
habrabot(difrex,1) — All
2018-01-09 00:30:05


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

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

[>] [Перевод] Вышел GitLab 10.3: статическое тестирование безопасности приложений и тестирование производительности в браузере
habra.16
habrabot(difrex,1) — All
2018-01-09 00:45:05


![Картинка для привлечения внимания][1]



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


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

[1]: https://habrastorage.org/getpro/habr/post_images/aef/cfc/3cf/aefcfc3cfa1845eef69309719f2c5104.jpg
[2]: https://habrahabr.ru/post/346030/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346030#habracut

[>] «Письмо турецкому султану» или линейная регрессия на C# с помощью Accord.NET для анализа открытых данных Москвы
habra.16
habrabot(difrex,1) — All
2018-01-09 01:30:05


Когда речь идет об освоении самых основ машинного обучения, чаще всего предлагается изучить соответствующие инструменты на [Python или R][1]. Мы не будем обсуждать их плюсы и минусы, а просто зададимся вопросом, что делать если вы знакомы только с экосистемой .NET, но при этом вам очень любопытно окунутся в мир науки о данных? Ответ прост, не отчаиваться и посмотреть в сторону [F#][2], а если вы также, как и я из .NET знаете только азы C#, то попробовать изучить [Accord.NET Framework][3].

Мы с вами уже разбирали его применение для решения [задачи классификации][4], а в этот раз попробуем рассмотреть простейший инструментарий для линейной регрессии. Для этого мы воспользуемся открытыми данными по анализу обращений граждан взятыми с официального [сайта Мэра Москвы][5].

Несмотря на то, что в заголовке статьи указан **C#**, мы попробуем собрать код и на **VB.NET**.

Мне осталось только пригласить вас под кат!

![][6]

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

[1]: https://habrahabr.ru/company/piter/blog/263457/
[2]: http://fsharp.org/guides/data-science/
[3]: http://accord-framework.net/
[4]: https://habrahabr.ru/post/337438/
[5]: https://www.mos.ru/feedback/reviews/
[6]: https://habrastorage.org/webt/tl/cm/_p/tlcm_peakreh_o-nrwvik2ecvrq.jpeg
[7]: https://habrahabr.ru/post/346222/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346222#habracut

[>] Пакос делал просто. Понятная статья о консенсусе в распределенной системе
habra.16
habrabot(difrex,1) — All
2018-01-09 02:15:05


В данной статье мы разберем алгоритм консенсуса Пакос, обсудим зачем он нужен, почему работает, докажем его корректность и немого поговорим о проблемах практического применения. Во многом это вольный пересказ статьи Лесли Лампорта [«Paxos Made Simple»][1]


## Зачем нужен распределенный консенсус и что это такое


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

[1]: https://lamport.azurewebsites.net/pubs/paxos-simple.pdf
[2]: https://habrastorage.org/webt/zs/lp/1h/zslp1hbvnuhwmz74v3lobcs53km.png
[3]: https://habrahabr.ru/post/346180/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346180#habracut

[>] Паксос делал просто. Понятная статья о консенсусе в распределенной системе
habra.16
habrabot(difrex,1) — All
2018-01-09 02:45:17


В данной статье мы разберем алгоритм консенсуса Паксос, обсудим зачем он нужен, почему работает, докажем его корректность и немого поговорим о проблемах практического применения. Во многом это вольный пересказ статьи Лесли Лампорта [«Paxos Made Simple»][1]


## Зачем нужен распределенный консенсус и что это такое


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

[1]: https://lamport.azurewebsites.net/pubs/paxos-simple.pdf
[2]: https://habrastorage.org/webt/zs/lp/1h/zslp1hbvnuhwmz74v3lobcs53km.png
[3]: https://habrahabr.ru/post/346180/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346180#habracut

[>] Алгиритм Пакос. Понятная статья о консенсусе в распределенной системе
habra.16
habrabot(difrex,1) — All
2018-01-09 05:00:02


В данной статье мы разберем алгоритм консенсуса Паксос, обсудим зачем он нужен, почему работает, докажем его корректность и немого поговорим о проблемах практического применения. Во многом это вольный пересказ статьи Лесли Лампорта [«Paxos Made Simple»][1]


## Зачем нужен распределенный консенсус и что это такое


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

[1]: https://lamport.azurewebsites.net/pubs/paxos-simple.pdf
[2]: https://habrastorage.org/webt/zs/lp/1h/zslp1hbvnuhwmz74v3lobcs53km.png
[3]: https://habrahabr.ru/post/346180/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346180#habracut

[>] Алгоритм Пакcос. Понятная статья о консенсусе в распределенной системе
habra.16
habrabot(difrex,1) — All
2018-01-09 05:15:04


В данной статье мы разберем алгоритм консенсуса Паксос, обсудим зачем он нужен, почему работает, докажем его корректность и немого поговорим о проблемах практического применения. Во многом это вольный пересказ статьи Лесли Лампорта [«Paxos Made Simple»][1]


## Зачем нужен распределенный консенсус и что это такое


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

[1]: https://lamport.azurewebsites.net/pubs/paxos-simple.pdf
[2]: https://habrastorage.org/webt/zs/lp/1h/zslp1hbvnuhwmz74v3lobcs53km.png
[3]: https://habrahabr.ru/post/346180/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346180#habracut

[>] MSSQL SERVER – пример применения связанного сервера
habra.16
habrabot(difrex,1) — All
2018-01-09 10:00:04


Сегодня решил поделиться статьей как однажды мне пришел на выручку связанный сервер при работе с MSSQL. Сначала опишу ситуацию, в которой мне пришлось с ним познакомиться.
[Читать дальше →][1]

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

[>] ТАУ для самых маленьких: пример реализации ПИД-регулятора в Unity3D
habra.16
habrabot(difrex,1) — All
2018-01-09 12:45:05


# Вместо введения



**Системы автоматического управления (САУ)** предназначены для автоматического изменения одного или нескольких параметров объекта управления с целью установления требуемого режима его работы. САУ обеспечивает поддержание постоянства заданных значений регулируемых параметров или их изменение по заданному закону либо оптимизирует определенные критерии качества управления.

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

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

[>] [Из песочницы] Представления знаний в интеллектуальных системах, экспертные системы
habra.16
habrabot(difrex,1) — All
2018-01-09 12:45:04


## Введение {#vvedenie}



Экспертная система (_далее по тексту — ЭС_) — это информационная система, назначение которой частично или полностью заменить эксперта в той или иной предметной области. Подобные интеллектуальные системы эффективно применяются в таких областях, как логистика, управление воздушными полетами, управление театром военных действий. Основною направленной деятельностью предсказание, прогнозирование в рамках определенного аспекта в предметной области.



## Структура экспертной системы {#struktura-ekspertnoy-sistemy}



![image][1]

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

[1]: https://habrastorage.org/webt/hc/v3/m0/hcv3m09fenkeguyj_6zbvtw9nso.png
[2]: https://habrahabr.ru/post/346236/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346236#habracut

[>] Как я парсил Хабр, часть 1: тренды
habra.16
habrabot(difrex,1) — All
2018-01-09 12:45:05


Когда был доеден новогодний оливье, мне стало нечего делать, и я решил скачать себе на компьютер все статьи с Хабрахабра (и смежных платформ) и поисследовать.



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


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

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

[>] Разрабатываем крутой GUI на esp8266 с библиотекой uGFX
habra.16
habrabot(difrex,1) — All
2018-01-09 12:45:04


В многих проектах для esp8266 я использую TFT экран с тачскрином. В зависимости, от проекта интерфейс может быть простым, например, текстовая консоль, выводящая лог работы приложения или просто график изменения входного сигнала. А в некоторых — сложный GUI, с несколькими экранами, графическими кнопками, строками ввода текста и даже виртуальной клавиатурой.
В этой статье хочу поделиться опытом, как можно подключить экран с тачскрином к esp8266 и реализовать графический интерфейс в среде Arduino.



Видео-тизер:




Итак, приступим

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

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

[>] Attention! S in Ethereum stands for Security. Part 1. Blockchain things
habra.16
habrabot(difrex,1) — All
2018-01-09 14:30:18


![][1]



С этой статьи мы начинаем цикл, посвященный типичным уязвимостям, атакам и проблемным местам, присущим смарт-контрактам на языке Solidity, и платформе Ethereum в целом. В первой части мы поговорим вот о чем:


* почему сложно реализовать децентрализованную биржу на смарт-контрактах
* как сгенерировать случайное число
* как вывести из строя всю Proof-of-Authority сеть[Читать дальше →][2]

[1]: https://habrastorage.org/webt/2p/mr/ud/2pmrudjnousyj6oodl0zj3_xxls.png
[2]: https://habrahabr.ru/post/345196/?utm_source=habrahabr&utm_medium=rss&utm_campaign=345196#habracut

[>] Веб-мессенджеры и эвент 'beforeunload': как сохранить миллион сообщений при закрытии страницы
habra.16
habrabot(difrex,1) — All
2018-01-09 16:00:06


![][1]


В конце лета мы [добавили][2] в наше облако Voximplant поддержку месседжинга. Теперь с помощью него и россыпи SDK под разные платформы можно делать собственные мобильные или веб-мессенджеры: голосовые звонки в любых комбинациях между телефонными сетями и SDK — есть, видеозвонки между SDK — есть, месседжинг — есть. А еще у текстовых сообщений есть ключевое отличие от голосовых и видеозвонков: их контент должен оставаться. Voximplant может записать голосовой и видеозвонок на стороне облака и отдать URL с получившимся файлом, но это «медленная» история для CRM, систем управления заказами и колл-центров. А сообщения — это быстрая история. Пользователь очень огорчается, когда клик по «старому» чату в Skype вызывает зависание мобильного или веб-приложения, которое пытается выкачать хоть сколько-нибудь истории с нагруженных серверов по неустойчивому 3G. В наших SDK мы предусмотрели несколько механизмов для максимально быстрой работы с историей сообщений, о которых под катом.
[Читать дальше →][3]

[1]: https://habrastorage.org/webt/3i/e0/oh/3ie0ohvibder1-_0y1c4-tvag2s.jpeg
[2]: https://habrahabr.ru/company/Voximplant/blog/336038/
[3]: https://habrahabr.ru/post/346188/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346188#habracut

[>] Настройка Azure Application Insights для диагностики ПО с микросервисной архитектурой
habra.16
habrabot(difrex,1) — All
2018-01-09 17:00:17


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



В рекламных видео конечно никакой особой настройки нет, но жизнь — она сложнее, особенно если ваше ПО микросервисное. Почему? А всё очень просто.



Что в первую очередь должна делать система диагностики в микросервисной архитектуре?
Правильно, коррелировать диагностику от различных микросервисов в рамках одной операции.
Тыркнул пользователь в UI кнопочку — надо увидеть диагностику от всех N микросервисов, которые так или иначе обрабатывали этот тырк. Случился где-нибудь exception — надо увидеть не только в каком микросервисе он произошёл, но и в рамках какой операции это случилось.
Только вот Application Insights с точки зрения конкретного микросервиса — это в первую очередь SDK. И SDK таких есть несколько — есть для JS, есть для .NET Core, .NET (со своими особенностями настройки для MVC, WebAPI, WCF), есть для Java и [т.д.][1]



Какие-то из этих SDK — opensource, какие-то — внутренняя разработка MS. И чтобы всё завелось — их надо подружить.



В этом и состоит основная сложность.



Не скажу, что я достиг 100% просветления в этом вопросе.
Но по крайней мере, я уже собрал несколько граблей и у меня есть рабочий семпл с UI на ASP.NET MVC (не Core) + JS и двумя микросервисами (Asp.Net WebApi, WCF)



Кому интересно — прошу под кат.

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

[1]: https://docs.microsoft.com/en-us/azure/application-insights/
[2]: https://habrahabr.ru/post/346148/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346148#habracut

[>] [Из песочницы] Что делать, когда малое предприятие всерьез задумалось о переходе с Windows на Linux
habra.16
habrabot(difrex,1) — All
2018-01-09 18:30:05


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

Начало. Волей судьбы я являюсь системным администратором малого предприятия (менее 10 машин) в сфере услуг. Руководство уже не первый год задумывалось о переходе на Linux, однако первые эксперименты (выбирали Fedora), нельзя было назвать полностью успешными, не нравился интерфейс, работа с программами и оборудованием.

Однако руководство хоть и опечалилось, однако, не унывало и после очередной беседы с хорошим программистом на Python (максимальный респект ему), озадачило меня, не знакомого особо с Линукс, попробовать установить на всех рабочих машинах Линукс Минт с интерфейсом
Mate (linuxmint-18.1-mate-64bit если быть точным) параллельно с Windows.
[Читать дальше →][1]

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

[>] Подбираем пароли с помощью Google Chrome
habra.16
habrabot(difrex,1) — All
2018-01-09 20:45:05


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



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



В случае, если мы имеем какой-либо портал, где пользователи – это люди, то бОльшую часть уязвимых слабых паролей можно отнести к одной из 4 групп:


1. Пароли, входящие в топ самых популярных фраз (такие как «123456», «password», и т.п.).
2. Пароли, представляющие собой сочетание клавиш – так называемые keyboard-walks пароли (например, «qwerty», «qazwsx», и т.п.).
3. Пароли – искажённые логины («user123», «user321», и т.п.).
4. Либо использование в качестве пароля популярных русских слов или имён в «перевёрнутой» раскладке («ljcneg», «fylhtq»)[Читать дальше →][2]

[1]: http://www.phenoelit.org/dpl/dpl.html
[2]: https://habrahabr.ru/post/346284/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346284#habracut

[>] «Простое» программирование на python
habra.16
habrabot(difrex,1) — All
2018-01-10 00:30:05


![][1]


> **functools** (это такая свалка для всяких ненужных мне вещей :-).
> — Гвидо ван Россум

Может показаться, что статья о ФП, но я не собираюсь обсуждать парадигму. Речь пойдет о переиспользовании и упрощении кода — я попытаюсь доказать, что вы пишете слишком много кода, поэтому он сложный и тяжело тестируется, но самое главное: его долго читать и менять.



В статье заимствуются примеры и/или концепции из библиотеки [funcy][2]. Во-первых, она клевая, во-вторых, вы сразу же сможете начать ее использовать. И да, нам понадобится ФП.

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

[1]: https://habrastorage.org/webt/tx/p0/gh/txp0gh9hmwm_nqznbhhkjgrc1r4.png
[2]: https://github.com/Suor/funcy
[3]: https://habrahabr.ru/post/346272/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346272#habracut

[>] [Из песочницы] Мега-Учебник Flask Глава 1: Привет, мир! (переиздание 2018)
habra.16
habrabot(difrex,1) — All
2018-01-10 00:30:05


[blog.miguelgrinberg.com][1]



# Мега-Учебник Flask, Часть 1: Hello, World! {#mega-uchebnik-flask-chast-1-hello-world}



### _Miguel Grinberg_ {#miguel-grinberg}


----


Эта статья является переводом нового издания учебника Мигеля Гринберга. [Прежний перевод][2] давно утратил свою актуальность. Оригинальный учебник избавлен от некоторых неточностей, вызванных развитием веб за те 5 лет, что существует эта книга.



Автор планирует завершить его выпуск в мае 2018. Я, со своей стороны, постараюсь не отставать с переводом.



[**VIDEO**][3]

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

[1]: http://blog.miguelgrinberg.com "blog.miguelgrinberg.com"
[2]: https://habrahabr.ru/post/193242/ "Прежний перевод"
[3]: https://player.vimeo.com/video/248628320 "video"
[4]: https://habrahabr.ru/post/346306/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346306#habracut

[>] Аутентификация в мобильных приложениях
habra.16
habrabot(difrex,1) — All
2018-01-10 00:30:05


## История с предысторией


Идеальный телефон, как верный пёс, должен узнавать хозяина по запаху и охранять имущество от посторонних.

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

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

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

Скоро этого стало не хватать. У первобытных программистов появились идентификаторы, затем логин с паролем – и вот перед нами классическая Basic Authentication протокола HTTP.
[Читать дальше →][1]

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

[>] [Перевод] Небезопасные абстракции
habra.16
habrabot(difrex,1) — All
2018-01-10 01:00:10


# Небезопасные (`unsafe`) абстракции {#nebezopasnye-unsafe-abstrakcii}



Ключевое слово `unsafe` является неотъемлемой частью дизайна языка Rust. Для тех кто не знаком с ним: `unsafe` — это ключевое слово, которое, говоря простым языком, является способом обойти проверку типов (_type checking_) Rust'а.



Существование ключевого слова `unsafe` для многих поначалу является неожиданностью.
В самом деле, разве то, что программы не "падают" от ошибок при работе с памятью,
не является особенностью Rust? Если это так, то почему имеется легкий способ обойти
систему типов? Это может показаться дефектом языка.



Все же, по моему мнению, `unsafe` не является недостатком. На самом деле он является
важной частью языка. `unsafe` выполняет роль некоторого выходного клапана — это значит то, что мы можем использовать систему типов в простых случаях, однако позволяя использовать всевозможные хитрые приемы, которые вы хотите использовать в вашем коде. Мы только требуем, чтобы вы скрывали эти ваши приемы (`unsafe` код) за безопасными внешними абстракциями.



Данная заметка представляет ключевое слово `unsafe` и идею ограниченной "небезопасности".
Фактически это предвестник [заметки][1], которую я надеюсь написать чуть позже.
Она обсуждает модель памяти Rust, которая указывает, что можно, а что нельзя делать в `unsafe` коде.

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

[1]: http://smallcultfollowing.com/babysteps/blog/2016/05/27/the-tootsie-pop-model-for-unsafe-code/
[2]: https://habrahabr.ru/post/346336/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346336#habracut

[>] [Из песочницы] Мега-Учебник Flask Глава 1: Привет, мир! ( издание 2018 )
habra.16
habrabot(difrex,1) — All
2018-01-10 03:15:04


[blog.miguelgrinberg.com][1]



### _Miguel Grinberg_ {#miguel-grinberg}


----


Эта статья является переводом нового издания учебника Мигеля Гринберга. [Прежний перевод][2] давно утратил свою актуальность. Оригинальный учебник избавлен от некоторых неточностей, вызванных развитием веб за те 5 лет, что существует эта книга.



Автор планирует завершить его выпуск в мае 2018. Я, со своей стороны, постараюсь не отставать с переводом.



[**VIDEO**][3]

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

[1]: http://blog.miguelgrinberg.com "blog.miguelgrinberg.com"
[2]: https://habrahabr.ru/post/193242/ "Прежний перевод"
[3]: https://player.vimeo.com/video/248628320 "video"
[4]: https://habrahabr.ru/post/346306/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346306#habracut

[>] Архитектура и программирование Mattel Intellivision
habra.16
habrabot(difrex,1) — All
2018-01-10 09:15:04


[Mattel Intellivision][1] — первая в мире игровая приставка с 16-разрядным процессором. Компьютер был разработан американской фирмой Mattel в 1979 году и производился вплоть до 1984 года (выпущено более 3 млн. штук). Intellivision широко известен в США, однако малоизвестен в Европе и совсем неизвестен в России.

[![][2]][3]

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

[1]: https://en.wikipedia.org/wiki/Intellivision
[2]: https://habrastorage.org/webt/lb/lv/tm/lblvtmhjvktrznyltip5yoqh6h0.jpeg
[3]: https://habrastorage.org/webt/lb/lv/tm/lblvtmhjvktrznyltip5yoqh6h0.jpeg
[4]: https://habrahabr.ru/post/346330/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346330#habracut

[>] [Из песочницы] Совершенствуем контроль сессий в Spring Security
habra.16
habrabot(difrex,1) — All
2018-01-10 11:00:05


Добрый день, уважаемое Сообщество.

Разрабатывая многопользовательское web-приложение, столкнулся с проблемой повторного логина пользователей, решение которой потребовало необычного обходного маневра, чтобы сохранить логичную работу программы и ее понятный дизайн. Хочу поделиться своим опытом. Это приложение — игра, где зарегистрировавшиеся пользователи могут выбирать с кем сразиться из списка присутствующих на сайте свободных игроков. После авторизации (log in) игрока на сайте информация о нем добавляется в структуру данных. Часть этой информации асинхронно отображается в игровом интерфейсе, как список игроков на арене. Когда игрок выходит, то информация о нем должна быть удалена из структуры данных, и он более не будет отображаться в списке соперников online. Здесь есть нюансы и сложности с учетом асинхронности, но преодолимые.

Учесть нужно было и то, что выход игрока с арены может произойти в результате различных ситуаций:

* он может добросовестно разлогиниться (нажав кнопку logout);
* может просто закрыть браузер, крышку ноутбука, нажать ресет и т.п., в общем уйти по-английски.



### Уходим по-аглийски



Для таких 'английских' сценариев используется следующий подход.

1.  Добавляется SessionEventListener при регистрации DispatcherServlet в ходе стандартной инициализации и настройки Spring MVC приложения:
[Читать дальше →][1]

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

[>] [Перевод] Как исследователь взломал собственный компьютер и убедился в реальности самой серьёзной в истории уязвимости процессоров
habra.16
habrabot(difrex,1) — All
2018-01-10 12:30:04


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

Тогда 31-летний исследователь в области информационной безопасности и постдок в Грацском техническом университете проник в святая святых CPU и извлёк оттуда конфиденциальные сведения.

[![][1]][2]

До этого момента Грасс и его коллеги Моритц Липп и Майкл Шварц полагали, что подобная атака на память ядра процессора, которая должна быть недоступна пользователю, возможна лишь в теории.
[Читать дальше →][3]

[1]: https://habrastorage.org/webt/te/gc/kr/tegckryox2eu1tpwgqloibdvxhg.png
[2]: https://habrahabr.ru/company/ruvds/blog/346350/
[3]: https://habrahabr.ru/post/346350/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346350#habracut

[>] Использование обратного преобразования Лапласа для анализа динамических звеньев систем управления
habra.16
habrabot(difrex,1) — All
2018-01-10 12:30:04


![][1]

**Здравствуйте!**

До настоящего времени в арсенале средств высокоуровневого языка программирования Python отсутствовали модули для численного преобразования передаточных функций элементов САУ из частотной области во временную.

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

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

Работу над модулем ещё в 2007 году начал Fredrik Johansson [2], и, благодаря помощи многих участников проекта, в настоящее время mpmath приобрёл возможности серьёзного математического пакета.
[Читать дальше →][2]

[1]: https://habrastorage.org/webt/lx/bv/dr/lxbvdrnjffvxm0wqvbokuipzwa4.png
[2]: https://habrahabr.ru/post/346338/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346338#habracut

[>] Мега-Учебник Flask, Часть 3: Веб-формы ( издание 2018 )
habra.16
habrabot(difrex,1) — All
2018-01-10 13:15:05


[blog.miguelgrinberg.com][1]



### _Miguel Grinberg_ {#miguel-grinberg}


----


[<<< предыдущая][2] [следующая >>>][3]



Эта статья является переводом третьей части нового издания учебника Мигеля Гринберга. [Прежний перевод][4] давно утратил свою актуальность.

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

[1]: http://blog.miguelgrinberg.com "blog.miguelgrinberg.com"
[2]: https://habrahabr.ru/post/346340/
[3]: https://habrahabr.ru/post/346344/
[4]: https://habrahabr.ru/post/193242/ "Прежний перевод"
[5]: https://habrahabr.ru/post/346342/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346342#habracut

[>] Мега-Учебник Flask, Часть 4: База данных ( издание 2018 )
habra.16
habrabot(difrex,1) — All
2018-01-10 13:15:04


[blog.miguelgrinberg.com][1]



### _Miguel Grinberg_ {#miguel-grinberg}


----


[<<< предыдущая][2] [следующая >>>][3]



Эта статья является переводом четвертой части нового издания учебника Мигеля Гринберга. [Прежний перевод][4] давно утратил свою актуальность.

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

[1]: http://blog.miguelgrinberg.com "blog.miguelgrinberg.com"
[2]: https://habrahabr.ru/post/346342/
[3]: https://habrahabr.ru/post/346346/
[4]: https://habrahabr.ru/post/193242/ "Прежний перевод"
[5]: https://habrahabr.ru/post/346344/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346344#habracut

[>] Мега-Учебник Flask, Часть 2: Шаблоны (издание 2018)
habra.16
habrabot(difrex,1) — All
2018-01-10 13:15:04


[blog.miguelgrinberg.com][1]



### _Miguel Grinberg_ {#miguel-grinberg}


----


[<<< предыдущая][2] [следующая >>>][3]



Эта статья является переводом второй части нового издания учебника Мигеля Гринберга, выпуск которого автор планирует завершить в мае 2018.[Прежний перевод][4] давно утратил свою актуальность.



Я, со своей стороны, постараюсь не отставать с переводом.


----


Перевел и опубликовал: _Александр Драгункин_


----


В этом втором выпуске серии Мега-Учебник Flask я расскажу о том, как работать с шаблонами.

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

[1]: http://blog.miguelgrinberg.com "blog.miguelgrinberg.com"
[2]: https://habrahabr.ru/post/346306/
[3]: https://habrahabr.ru/post/346342/
[4]: https://habrahabr.ru/post/193242/ "Прежний перевод"
[5]: https://habrahabr.ru/post/346340/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346340#habracut

[>] IT 2018: будущее наступило вчера
habra.16
habrabot(difrex,1) — All
2018-01-10 13:15:05


Мы уже почти написали пост к старому Новому году с отличной задумкой и героями русских сказок, но процесс прервало сообщение в Telegram. А в нём — анонс новости от экспертов рынка. Исследователи из Оксфордского и Йельского университетов пришли к выводу, что переход к полной автоматизации большинства экономических и технологических процессов закончится через 150 лет. Их азиатские коллеги показывают более оптимистичный срок — 104 года.

Так что все фантазии компаний относительно победы искусственного интеллекта в течение пары лет, увы (или к счастью), несостоятельны. Но тем не менее технологии продолжают экспансию, эксперты предрекают будущее, бизнес принимает или меняет правила игры. У нас есть свой прогноз. А вы — делитесь своим в комментариях. Ну и сказки, пожалуй, оставим — они предсказали будущее сотни лет назад.

![][1]
[_Источник_][2]
[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/6d5/5fb/0ca/6d55fb0ca256ad44ca7fb247f8c96f8c.jpg
[2]: http://www.lumiere-mag.ru/robert-zemekis-nazad-v-budushhee-recenziya/
[3]: https://habrahabr.ru/post/346302/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346302#habracut

[>] Code Coverage — хочу верить
habra.16
habrabot(difrex,1) — All
2018-01-10 14:00:04


Разработчик обязан знать свои инструменты! Знание инструментов увеличивает продуктивность, эффективность, производительность, потенцию разработчика! Не могу программировать без R#!

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

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

Сегодня я пошвыряю камни в огород Code Coverage (CC). Достаточно полезная метрика, под которой лежат несколько скудно [документированных][1] граблей.
[CC в посте не описывается. Читайте на свои страх и риск.][2]

[1]: http://www.exampler.com/testing-com/writings/coverage.pdf
[2]: https://habrahabr.ru/post/345774/?utm_source=habrahabr&utm_medium=rss&utm_campaign=345774#habracut

[>] Дайджест Университета ИТМО: самые интересные материалы в нашем блоге за прошлый год
habra.16
habrabot(difrex,1) — All
2018-01-10 14:45:17


В сегодняшнем дайджесте мы вспоминаем популярные материалы 2017 года, вышедшие в нашем блоге на Хабре: собственные разработки и проекты Университета, полезные материалы для поступающих в ИТМО, эссе и рассказы о программировании, советы тем, кто хочет обучаться разработке на дому, большой цикл о работающих техниках скорочтения и советы тем, кто читает (и пишет) научные статьи — обо всем этом в нашей подборке ниже.

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

[1]: https://habrastorage.org/webt/dh/m5/-4/dhm5-47ichu1lzt2idyxvclhp6q.jpeg
[2]: https://habrahabr.ru/company/spbifmo/blog/346328/
[3]: https://habrahabr.ru/post/346328/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346328#habracut

[>] Книга «Глубокое обучение. Погружение в мир нейронных сетей"
habra.16
habrabot(difrex,1) — All
2018-01-10 17:30:04


[![image][1]][2] Привет, Хаброжители! Недавно у нас вышла первая русская книга о глубоком обучении от Сергея Николенко, Артура Кадурина и Екатерины Архангельской. Максимум объяснений, минимум кода, серьезный материал о машинном обучении и увлекательное изложение. Сейчас мы рассмотрим раздел «Граф вычислений и дифференцирование на нем» в котором вводятся основополагающее понятие для реализации алгоритмов обучения нейронных сетей.

Если у нас получится представить сложную функцию как композицию более простых, то мы сможем и эффективно вычислить ее производную по любой переменной, что и требуется для градиентного спуска. Самое удобное представление в виде композиции — это представление в виде графа вычислений. Граф вычислений — это граф, узлами которого являются функции (обычно достаточно простые, взятые из заранее фиксированного набора), а ребра связывают функции со своими аргументами.
[Читать дальше →][3]

[1]: https://habrastorage.org/webt/tf/1x/nx/tf1xnxujxtd6ahnec8relkcdmrc.jpeg
[2]: https://habrahabr.ru/company/piter/blog/346358/
[3]: https://habrahabr.ru/post/346358/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346358#habracut

[>] [Перевод] Rust: «Небезопасные абстракции»
habra.16
habrabot(difrex,1) — All
2018-01-10 17:30:04


# Небезопасные (`unsafe`) абстракции {#nebezopasnye-unsafe-abstrakcii}



Ключевое слово `unsafe` является неотъемлемой частью дизайна языка Rust. Для тех кто не знаком с ним: `unsafe` — это ключевое слово, которое, говоря простым языком, является способом обойти проверку типов (_type checking_) Rust'а.



Существование ключевого слова `unsafe` для многих поначалу является неожиданностью.
В самом деле, разве то, что программы не "падают" от ошибок при работе с памятью,
не является особенностью Rust? Если это так, то почему имеется легкий способ обойти
систему типов? Это может показаться дефектом языка.



Все же, по моему мнению, `unsafe` не является недостатком. На самом деле он является
важной частью языка. `unsafe` выполняет роль некоторого выходного клапана — это значит то, что мы можем использовать систему типов в простых случаях, однако позволяя использовать всевозможные хитрые приемы, которые вы хотите использовать в вашем коде. Мы только требуем, чтобы вы скрывали эти ваши приемы (`unsafe` код) за безопасными внешними абстракциями.



Данная заметка представляет ключевое слово `unsafe` и идею ограниченной "небезопасности".
Фактически это предвестник [заметки][1], которую я надеюсь написать чуть позже.
Она обсуждает модель памяти Rust, которая указывает, что можно, а что нельзя делать в `unsafe` коде.

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

[1]: http://smallcultfollowing.com/babysteps/blog/2016/05/27/the-tootsie-pop-model-for-unsafe-code/
[2]: https://habrahabr.ru/post/346336/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346336#habracut

[>] Мега-Учебник Flask, Часть 3: Веб-формы (издание 2018)
habra.16
habrabot(difrex,1) — All
2018-01-10 17:30:04


[blog.miguelgrinberg.com][1]



### _Miguel Grinberg_ {#miguel-grinberg}


----


[<<< предыдущая][2] [следующая >>>][3]



Эта статья является переводом третьей части нового издания учебника Мигеля Гринберга. [Прежний перевод][4] давно утратил свою актуальность.

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

[1]: http://blog.miguelgrinberg.com "blog.miguelgrinberg.com"
[2]: https://habrahabr.ru/post/346340/
[3]: https://habrahabr.ru/post/346344/
[4]: https://habrahabr.ru/post/193242/ "Прежний перевод"
[5]: https://habrahabr.ru/post/346342/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346342#habracut

[>] Virtualpatching в Nemesida WAF: патчим уязвимости «на лету»
habra.16
habrabot(difrex,1) — All
2018-01-10 18:30:05


![][1]

Основное предназначение WAF — выявлять атаки на веб-приложение. Мы пошли дальше и реализовали систему виртуального патчинга, позволяющую накладывать заплатки «на лету», не дожидаясь выпуска обновлений вендором. Система виртуального патчинга в Nemesida WAF представлена в виде сканера уязвимостей Nemesida Scanner и функционала, позволяющего конвертировать обнаруженные уязвимости в виртуальный патч.
[Читать дальше →][2]

[1]: https://habrastorage.org/webt/xw/n0/u8/xwn0u8cdvoj6ye6lhnf8nztz0co.png
[2]: https://habrahabr.ru/post/346044/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346044#habracut

[>] Просто о микросервисах
habra.16
habrabot(difrex,1) — All
2018-01-10 18:45:04


### Вступление


Чуть ли не каждый второй, кто впервые сталкивается с MSA (Micro Service Architecture), на первых порах восклицает: «Да я эти микросервисы еще …надцать лет назад». Отчасти они правы. И я тоже был из этой самой половины, и не понимал — почему такой шум?

![][1]

В самом деле! Ведь MSA — это тоже про разработку софта. Какие здесь могут быть революции? Все методики знакомы. В некоторых местах можно даже удивиться: «А разве бывает по-другому»? Фанаты Agile и DevOps тоже скажут, что это всё наше, родное.

Но всё же прошу вас набраться терпения и продолжить читать дальше.

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

[1]: https://habrastorage.org/webt/ok/j0/ow/okj0owc15yytxtktz5eqwcj7nyu.jpeg
[2]: https://habrahabr.ru/post/346380/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346380#habracut

[>] Преступление и наказание для владельцев критической информационной инфраструктуры РФ
habra.16
habrabot(difrex,1) — All
2018-01-10 18:45:04


![][1]

Вирус _Petya/NotPetya/ExPetr_ в 2017 году был «хорошим» примером насколько крупный бизнес может пострадать от такого рода атаки, [например][2], Maersk оценила ущерб от «Пети»:
> “We expect the cyber-attack will impact results negatively by USD 200–300m.”
> Мы ожидаем, что кибер-атака негативно повлияет на результаты в размере 200-300 млн долларов США
Вы помните, что в середине 2017 был опубликован Федеральный закон от 26.07.2017 N 187-ФЗ «О безопасности критической информационной инфраструктуры Российской Федерации» и этот закон вступил в силу с 1 января 2018 года, а вместе с ним вступили в силу изменения в Уголовный кодекс РФ.

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

_Внимание: в статье 2 картинки (одну вы видели) и много текста_

[Leges intellegi ab omnibus debent][3]

[1]: https://habrastorage.org/webt/8n/h-/yg/8nh-ygoev57nc4hiut8jnws6ycg.jpeg
[2]: https://www.maersk.com/press/press-release-archive/20170816-a-p-moller-maersk-improves-underlying-profit-and-grows-revenue-in-first-half-of-the-year
[3]: https://habrahabr.ru/post/346372/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346372#habracut

[>] Приглашаем докладчиков на PHDays: расскажите, каким вы видите цифровое государство
habra.16
habrabot(difrex,1) — All
2018-01-10 19:00:04


![][1]

Стартует первая волна [Call for Papers][2] форума Positive Hack Days 8! Заявки на участие принимаются в период с 10 января по 10 марта. Лучшие доклады выберет международный программный комитет, в который входят независимые исследователи и ведущие эксперты ИБ- и IT-индустрии. Если вам есть что рассказать — ждем вас на трибуне [PHDays][3]. [Читать дальше →][4]

[1]: https://habrastorage.org/webt/rr/3t/wj/rr3twj6cyx8vm1ypd3jyzrk17im.jpeg
[2]: https://www.phdays.com/ru/join/cfp/
[3]: https://www.phdays.com/
[4]: https://habrahabr.ru/post/346390/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346390#habracut

[>] Как наломать велосипедов поверх костылей при тестировании своего дистрибутива
habra.16
habrabot(difrex,1) — All
2018-01-10 19:15:04


# Диспозиция {#dispoziciya}



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



![][1]



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

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

[1]: https://habrastorage.org/webt/br/-m/rd/br-mrd44dshxmzanwln256vbvdm.png
[2]: https://habrahabr.ru/post/342216/?utm_source=habrahabr&utm_medium=rss&utm_campaign=342216#habracut

[>] [Перевод - recovery mode ] Пишем собственный миниатюрный Redis-сервер на Python
habra.16
habrabot(difrex,1) — All
2018-01-10 19:15:04


На днях мне пришла в голову мысль, что было бы здорово написать простой Redis-подобный сервер баз данных. Хотя у меня значительный опыт работы с приложениями WSGI, сервер базы данных представил новый вызов и оказался хорошей практикой в процессе обучения работе с сокетами в Python. В этой статье расскажу, что я узнал в процессе исследования.

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

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

[>] Как это работает: Деревья Меркла в биткойн сети
habra.16
habrabot(difrex,1) — All
2018-01-10 23:00:04


Узлы в блокчейн-сети анонимны и работают в условиях отсутствия доверия. В этой ситуации встает проблема верификации данных: как проверить, что в блоке записаны корректные транзакции? Для оценки каждого блока понадобится большое количество времени и вычислительных ресурсов. Решить проблему и упростить процесс [помогают][1] деревья Меркла.

Что это такое, как используется, какие существуют альтернативы — расскажем далее.

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

[1]: https://brilliant.org/wiki/merkle-tree/
[2]: https://habrastorage.org/webt/bg/98/kt/bg98ktg4fxia1walmk4td40quca.jpeg
[3]: https://habrahabr.ru/company/bitfury/blog/346398/
[4]: https://habrahabr.ru/post/346398/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346398#habracut

[>] Работаем со смарт-картами, используя Python (часть 1)
habra.16
habrabot(difrex,1) — All
2018-01-10 23:30:04


![][1]Сначала, на момент задумки, в 2014 году, данная статья планировалась как единая публикация, но, проработав материал (лень вынудила растянуть этот процесс), я понял, что необходимо её разделить на две части:


1. Знакомство с библиотекой и написание/разбор кода специального командного процессора, который ее использует.
2. Использование командного процессора из ч.1 для чтения содержимого файла с симки, которую я, однажды, подобрал на улице (никаких персональных данных раскрыто не будет). Узнаем, как отучить Windows встревать в наше взаимодействие с картой, а также, возможно, затронем тему выбора (активации) системного приложения на карте (если моя экспериментальная карта окажется UICC).

Думаю, для профи-карточников первая часть будет представлять бо́льший интерес, а вторая часть будет интересна, прежде всего, новичкам в этой теме (и будет иметь метку **Tutorial**).

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

[1]: https://habrastorage.org/webt/ol/rz/zw/olrzzwhtaqzkvzvoeswkbu3uubg.jpeg
[2]: https://habrahabr.ru/post/346270/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346270#habracut

[>] Сколько разработчиков думают, что Continuous Integration не нужна?
habra.16
habrabot(difrex,1) — All
2018-01-11 11:15:04


В конце декабря облачный провайдер DigitalOcean [опубликовал][1] результаты своего второго опроса Currents, собравшего данные от 2500+ разработчиков _(и не только — подробнее см. ниже)_, преимущественно _(на 89 %)_ использующих GNU/Linux в качестве серверной операционной системы. Интересная статистика была получена в вопросах, посвящённых непрерывной интеграции и доставки приложений (CI/CD):

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

[1]: https://blog.digitalocean.com/currents-dec-2017/
[2]: https://habrastorage.org/webt/qt/vl/fk/qtvlfkwvkambvzzberuynj3vxmg.png
[3]: https://habrahabr.ru/post/346418/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346418#habracut

[>] Мега-Учебник Flask, Часть 4: База данных (издание 2018)
habra.16
habrabot(difrex,1) — All
2018-01-11 11:30:17


[blog.miguelgrinberg.com][1]



### _Miguel Grinberg_ {#miguel-grinberg}


----


[<<< предыдущая][2] [следующая >>>][3]



Эта статья является переводом четвертой части нового издания учебника Мигеля Гринберга. [Прежний перевод][4] давно утратил свою актуальность.

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

[1]: http://blog.miguelgrinberg.com "blog.miguelgrinberg.com"
[2]: https://habrahabr.ru/post/346342/
[3]: https://habrahabr.ru/post/346346/
[4]: https://habrahabr.ru/post/193242/ "Прежний перевод"
[5]: https://habrahabr.ru/post/346344/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346344#habracut

[>] OK Google, заведи мне машину
habra.16
habrabot(difrex,1) — All
2018-01-11 12:15:03


![][1]

Будущее всё ближе. Лет 10 назад я и не мог подумать, что буду заводить машину с помощью голосовой команды!

Последние годы я с интересом наблюдал за бурным развитием голосовых ассистентов. После выхода Google Home Mini, решил что и мне уже пора попробовать, так как цена стала более-менее адекватной для «игрушки». Первый проект — интеграция голосового помощника с GSM модулем StarLine для автозапуска, контроля координат, напряжения аккумулятора и других параметров, отдаваемых сигнализацией автомобиля. Итак, поехали?
[Читать дальше →][2]

[1]: https://habrastorage.org/webt/t-/n2/nt/t-n2ntklcrvx6zzidgzdgxdhg0u.png
[2]: https://habrahabr.ru/post/346120/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346120#habracut

Pages: 1 ... 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133