RSS
Pages: 1 ... 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 ... 133
[>] [Перевод] Создание платформера для виртуальной консоли TIC-80
habra.16
habrabot(difrex,1) — All
2017-10-24 15:00:05


![][1]


_8 Bit Panda, игра для вымышленной консоли TIC-80._

_Это пост о том, как я написал 8-bit panda, простой платформер в классическом стиле для вымышленной консоли _[_TIC-80_][2]_._

_Поиграть в готовую игру можно _[**_здесь_**][3]**_._**

Если вы любитель ретро-игр и вам нравится программирование, то есть вероятность, что вы уже знакомы с последним трендом: вымышленными консолями. Если же нет, то стоит посмотреть на их самых известных представителей: [PICO-8][4] и [TIC-80][5].

Я выбрал TIC-80, потому что она бесплатна и активно разрабатывается, имеет более широкое соотношение сторон экрана (240x136), чем PICO-8 и может выполнять экспорт на множество платформ, в том числе HTML, Android и двоичные файлы для PC.

В этой статье я расскажу, как я написал для TIC-80 простой платформер 8 Bit Panda.
[Читать дальше →][6]

[1]: https://habrastorage.org/getpro/habr/post_images/9d4/579/787/9d4579787e58b62d45606ac707104072.png
[2]: http://tic.computer
[3]: https://tic.computer/play?cart=188
[4]: https://www.lexaloffle.com/pico-8.php
[5]: http://tic.computer
[6]: https://habrahabr.ru/post/340502/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Kali Linux: модификация пакетов
habra.16
habrabot(difrex,1) — All
2017-10-24 16:30:04


Продолжаем переводить книгу «[Kali Linux Revealed][1]». Девятая глава посвящена расширенному использованию системы. В частности, изучив её, можно узнать о том, как создать из базового дистрибутива Kali именно то, что вам нужно. Сегодня мы публикуем перевод первого раздела этой главы. Речь пойдёт о модификации пакетов Kali.

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

[1]: https://kali.training/introduction/kali-linux-revealed-book/
[2]: https://habrastorage.org/getpro/habr/post_images/d6f/f3f/562/d6ff3f56201df7a112b39a40a218a3d7.jpg
[3]: https://habrahabr.ru/company/ruvds/blog/340824/
[4]: https://habrahabr.ru/post/340824/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Умные сети для рыбаков: как мы учили смартфоны распознавать рыбу
habra.16
habrabot(difrex,1) — All
2017-10-24 18:00:05


![][1]

На развитие компьютерного зрения в последние 10 лет не обращал внимание лишь отстраненный от мира человек. Технология распознавания образов своим процветанием обязана глубокому обучению. Достижения машин поражают воображение.
[Читать дальше →][2]

[1]: https://habrastorage.org/webt/59/ef/01/59ef01ad09e66558267453.png
[2]: https://habrahabr.ru/post/340854/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Сказ о sysctl’ях (народная пингвинская история)
habra.16
habrabot(difrex,1) — All
2017-10-24 21:30:05


Очень часто администраторы выполняют настройку системы просто настройкой базовых вещей — ip,dns,hostname, поставить софт, а все остальное уже настройки приложений. В большинстве случаев так оно и есть, поскольку в linux’е очень разумные умолчания и, в большинстве случаев, этих умолчаний хватает и все живут счастливо. Среди совсем начинающих ходят легенды о неких sysctl’ях, а те, кто поопытнее видели и даже чего-то правили.

Но приходит момент, когда админ в своих походах по системе встречает этого зверя — sysctl. Вероятнее всего он встречает кого-то из семейства net.ipv4 или vm, даже вероятнее всего net.ipv4.ip\_forward, если поход за роутером или vm.swappinness, если он обеспокоен подросшим swap’ом своего пингвина. Первый зверь разрешает пингвину принимать пакеты одним крылом и отдавать другим (разрешает маршрутизацию), а второй помогает справиться с использованием swap’а в спокойной системе и регулировать его использование — в нагруженной.

![][1]

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

[1]: https://habrastorage.org/webt/59/ef/60/59ef60ae73130650626622.jpeg
[2]: https://habrahabr.ru/post/340870/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Bad Rabbit: новая волна атак с использованием вируса-шифровальщика
habra.16
habrabot(difrex,1) — All
2017-10-25 00:00:06


![image][1]
 
Несколько российских СМИ и украинских организаций подверглись атаке шифровальщика Bad Rabbit. В частности, хакеры атаковали три российских СМИ, среди которых «Интерфакс» и «Фонтанка».

24 октября началась новая масштабная кибератака с использованием вируса-шифровальщика Bad Rabbit. Зловред поразил компьютерные сети Киевского метрополитена, Министерства инфраструктуры, Международного аэропорта “Одесса”. Несколько жертв оказались и в России — в результате атаки пострадали редакции федеральных СМИ, таких как «Интерфакс» и «Фонтанка».
[Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/d8b/1fe/af2/d8b1feaf2c3667a1d2184aa190aa4f2d.jpg
[2]: https://habrahabr.ru/post/340880/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Где перспективно и адекватно использовать Python
habra.16
habrabot(difrex,1) — All
2017-10-25 04:30:04


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

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

[1]: https://habrastorage.org/webt/59/ef/bd/59efbd7b491d6801940682.png
[2]: https://habrahabr.ru/post/340894/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Длинные уши асинхронности
habra.16
habrabot(difrex,1) — All
2017-10-25 07:30:03


![][1]



Разработчики React тяготеют к функциональному подходу, но с появлением MobX, появилась возможность работать с состоянием в более-менее привычном ООП-стиле. Mobx старается не навязывать какую либо архитектуру, позволяя работать с реактивным состоянием, как с обычными объектами. При этом он делает автоматическое связывание вычислений, когда достаточно написать `C = A + B`, чтобы при обновлении `A`, обновился и `C`.



В HelloWorld это выглядит просто, но если мы добавим fetch, отображение статусов загрузки и обработку ошибок, мы увидим, что получается много копипаста, а в код начинают просачиваться хелперы вроде when, fromPromise или lazyObservable. И уже не получается писать код так, как будто нет асинхронности. Я хочу разобрать некоторые подобные примеры в MobX и попытаться улучшить его базовую концепцию, развив идею псевдосинхронности.

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

[1]: https://habrastorage.org/webt/59/ed/b2/59edb24f426e0489107992.jpeg
[2]: https://habrahabr.ru/post/340840/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Модули вместо микросервисов
habra.16
habrabot(difrex,1) — All
2017-10-25 10:30:20


Термин "модуль" (module) взят из статьи [Modules vs. microservices][1]. Так же для описания чего-то среднего между микросервисами и монолитами иногда используют термины "микролит" (microlith) или "моносервис" (monoservice). Но, не смотря на то, что термин "модуль" и так уже нагружен общеизвестным смыслом, на мой взгляд он подходит лучше других вариантов.



Монолит и микросервисы это очень разные подходы, поэтому в любой попытке взять лучшее от обоих критически важен баланс — что взять, а что нет. Иначе получится монстр вроде [OSGi][2].



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


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

[1]: https://www.oreilly.com/ideas/modules-vs-microservices
[2]: https://ru.wikipedia.org/wiki/OSGi
[3]: https://habrahabr.ru/post/340898/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Linux Piter #3: о чем на этот раз?
habra.16
habrabot(difrex,1) — All
2017-10-25 11:00:08


На этой неделе заканчивается формирование программы третьей международной конференции [**Linux Piter**][1], проходящей при поддержке Dell EMC.

Это два полных дня, 3 и 4 ноября, пятница и суббота в Питере, заполненные не всякой шелухой, а полноценными докладами про сеть, системные ресурсы, контейнеры и внутренности ядра Linux. Сугубо техническая тематика интересна всем тем, кто каждый день использует open source продукты и топовые технологии вокруг Linux в своей работе и в своих проектах.

![][2]

Если кратко, то у нас 3 доклада про сетку, 5 про контейнеры, 4 про ядро, пара про производительность и еще много разного. Чтобы был понятен уровень выступлений: среди спикеров из Штатов, Германии, Швеции, Австрии и конечно же России к нам приедут **Lennart Poettering** (мантейнер systemd) и **Christoph Hellwig** (мантейнер XFS и NVM Express драйвера) – это реально круто. Будут доклады инженеров, работающих в Redhat, Intel, Microsoft (!), Ericsson, Docker и Canonical. Будут два параллельных потока с десяти утра до вечера: язык выступлений первого потока — английский (с синхронным переводом на русский для тех, кто не успевает), второго — русский (с синхронном на английский для наших иностранных гостей).
Ниже несколько анонсов выступлений в разных разделах конференции.

Приятная особенность [**Linux Piter #3**][3] в том, что параллельно на этой же площадке будет проходить ещё одна наша техническая конференция — [**Piter Py #4**][4], и участники смогут свободно посещать доклады любой из этих двух конференций.
[Читать дальше →][5]

[1]: http://LinuxPiter.com
[2]: https://habrastorage.org/getpro/habr/post_images/e3a/184/aaa/e3a184aaaf8ae9cf9dc927f6fad19514.png
[3]: http://LinuxPiter.com
[4]: http://PiterPy.com
[5]: https://habrahabr.ru/post/340862/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Встреча в Питере 16 ноября: Delivery-инфраструктура для компаний и отдельных проектов
habra.16
habrabot(difrex,1) — All
2017-10-25 11:30:04


![][1]


Мы соберемся 16 ноября, чтобы поговорить о том, как построить DevOps инфраструктуру как для большой компании со сложным продуктом, частыми релизами, CI, так и отдельно взятого проекта, отдела в компании или даже небольшого стартапа, когда разворачивать большой стек инструментов долго и дорого. Посмотрим, по каким законам существует девопс-культура в больших enterprise-компаниях, и коснемся темы конкретных инструментов и решений. В частности, поговорим о лучших практиках работы с Ansible.
[Встреча][2] будет полезна как опытным, так и начинающим DevOps-инженерам.
[О программе и докладах][3]

[1]: https://habrastorage.org/webt/59/ed/da/59eddac27d62c283589087.jpeg
[2]: https://wriketeam.timepad.ru/event/588723/
[3]: https://habrahabr.ru/post/340760/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Время устранять ошибки в Open-Source проектах, конкурс
habra.16
habrabot(difrex,1) — All
2017-10-25 12:00:05


![Конкурс: PVS-Studio & Pinguem.ru][1]Сайт [Pinguem.ru][2] и команда PVS-Studio организуют конкурс, посвященный повышению качества открытого программного обеспечения. Для победы в конкурсе необходимо исправить как можно больше ошибок в одном или нескольких открытых проектах. Ошибки должны быть обнаружены с помощью статического анализатора кода PVS-Studio. Главный приз: консоль PlayStation 4 Pro.

[Правила конкурса][3] на сайте Pinguem.ru. [Участвовать в конкурсе][4].
[Читать дальше →][5]

[1]: https://habrastorage.org/getpro/habr/post_images/a06/d7a/d64/a06d7ad641345d962a889d4f82a08798.png
[2]: https://pinguem.ru/
[3]: https://pinguem.ru/competition/pvs/rules
[4]: https://pinguem.ru/competition/pvs/send
[5]: https://habrahabr.ru/post/340910/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Классы матриц и векторов в Delphi
habra.16
habrabot(difrex,1) — All
2017-10-25 14:00:06


В этой статье рассматривается проектирование типов для работы с объектами линейной алгебры: векторами, матрицами, кватернионами. Показано классическое применение механизма перегрузки стандартных операций, использование приёма «Copy On Write» и аннотаций.
[Читать дальше →][1]

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

[>] Blockchain глазами разработчика
habra.16
habrabot(difrex,1) — All
2017-10-25 14:00:06


![][1]



Зачем этот рассказ? Когда я изучал blockchain по открытым источникам, например по Википедии, информация казалась отрывочной и бессвязной. Прошло время, прежде чем она сложилась в целостную картину. Кажется, я знаю, в каком порядке и какими словами описать введение в blockchain, чтобы любой профессиональный разработчик смог понять общую картину за 1—1,5 часа. В тексте будут некоторые упрощения. Понятно, что в любой теме есть много деталей, куда можно при желании погрузиться.

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

[1]: https://habrastorage.org/webt/59/ee/64/59ee64cf25ac2728209409.jpeg
[2]: https://habrahabr.ru/post/340916/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] TrustZone: аппаратная реализация в ARMv7A
habra.16
habrabot(difrex,1) — All
2017-10-25 14:30:04


Сегодня начинаем исследовать внутреннее устройство TrustZone (это торговая марка компании ARM).

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

Поэтому я начну с того, что _TrustZone — это никакое не «место» в процессоре_. Ее нельзя найти на чипе, как кеш или АЛУ. И доверенные программы, на самом деле, не исполняются в какой-то физически выделенной зоне процессора.

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

В этой статье мы рассмотрим, как TrustZone реализуется на аппаратном уровне процессоров ARM Cortex-A (ARMv7A). [Читать дальше →][1]

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

[>] [Перевод] Vim спустя 15 лет
habra.16
habrabot(difrex,1) — All
2017-10-25 17:00:04


![][1]



Мои предыдущие посты об использовании Vim ([1][2], [2][3]) читатели приняли хорошо, и пришло время обновления. В Vim 8 появилось много очень нужной функциональности, а новые сайты сообществ вроде [VimAwesome][4] облегчили поиск и выбор плагинов. В последнее время я много работаю с Vim и организовал рабочий процесс исходя из максимальной эффективности, вот снимок моей текущей работы.



Вкратце:


* FZF и FZF.vim — для поиска файлов.
* ack.vim и `ag` — для поиска файлов.
* Vim + tmux — ключ к победе.
* Благодаря асинхронности ALE — это новый Syntastic.
* …И многое другое. Об этом ниже. [Читать дальше →][5]

[1]: https://habrastorage.org/webt/59/f0/83/59f083e99d4b9512710863.jpeg
[2]: https://statico.github.io/vim.html
[3]: https://statico.github.io/vim2.html
[4]: https://vimawesome.com/
[5]: https://habrahabr.ru/post/340740/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Новый вирус Reaper заразил 2 миллиона IoT-устройств
habra.16
habrabot(difrex,1) — All
2017-10-25 18:00:05


Компания Check Point Research, занимающаяся предоставлением услуг киберразведки, обнаружила вирус Reaper, который атакует девайсы, подключенные к интернету вещей. Компания [сообщает][1], что вирус распространяется гораздо быстрее, чем Mirai, «нашумевший» в 2016 году. По некоторым оценкам, он уже заразил два миллиона IoT-устройств.

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

[1]: https://research.checkpoint.com/new-iot-botnet-storm-coming/
[2]: https://habrastorage.org/webt/59/f0/83/59f083c5ab8df681440627.jpeg
[3]: https://habrahabr.ru/company/it-grad/blog/340938/
[4]: https://habrahabr.ru/post/340938/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Разработка браузерной онлайн игры без фреймворков и движков
habra.16
habrabot(difrex,1) — All
2017-10-25 19:00:08


![][1]


Привет, Хабр!
В этом посте будет описан процесс разработки онлайн игры на чистом javascript и WebGL (без фреймворков и движков). Будут рассмотрены некоторые алгоритмы, техники рендеринга, искусственный интеллект ботов и сетевая игра. Проект является полностью опенсорсным, в конце поста будет ссылка на репозиторий.
[Много картинок и гифок][2]

[1]: https://habrastorage.org/webt/59/e1/e0/59e1e0700cdf7570192875.png
[2]: https://habrahabr.ru/post/339566/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Почему один процесс NGINX берёт на себя всю работу?
habra.16
habrabot(difrex,1) — All
2017-10-25 22:00:06


Метод масштабирования TCP-серверов, как правило, очевиден. Начни с одного процесса, когда будет нужно — просто добавь ещё. Так делают многие приложения, включая HTTP-серверы типа Apache, NGINX или Lighttpd.



![][1]



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

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

[1]: https://habrastorage.org/webt/59/f0/8f/59f08f64162b4335654058.jpeg
[2]: https://habrahabr.ru/post/340950/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Троянец-вымогатель Bad Rabbit: плохой, плохой кролик
habra.16
habrabot(difrex,1) — All
2017-10-26 08:30:04



24 октября на нас посыпались уведомления о массовых атаках с помощью троянца-вымогателя Bad Rabbit. Основная цель — российские организации и потребители, но есть сообщения и о пострадавших из Украины.

Вот как выглядит требование выкупа у незадачливых жертв:
[Читать дальше →][1]

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

[>] Windows Defender удаляет bootloader от DiskCryptor
habra.16
habrabot(difrex,1) — All
2017-10-26 09:00:04


Если ваш системный диск зашифрован с помощью [DiskCryptor][1] система может перестать загружаться после обновления баз Windows Defender до версии 118.1.0.0 от 24.10.2017.

Defender определяет загрузчик как [Win32/Tibbar.A][2] и перезаписывает MBR. Сам DiskCryptor определяется как Trojan:Win32/Rundas.B.
[Читать дальше →][3]

[1]: https://diskcryptor.net/wiki/Main_Page
[2]: https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=Ransom:Win32/Tibbar.A
[3]: https://habrahabr.ru/post/340940/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Под капотом Ethereum Virtual Machine. Часть 1 — Solidity basics
habra.16
habrabot(difrex,1) — All
2017-10-26 09:30:05


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



Solidity — язык, созданный для разработки умных контрактов, существует относительно недавно — его разработка началась только в 2014 году и, как следствие, местами он ''сыроват''. В этой статье я начну с более общего описания работы EVM и некоторых отличительных особенностей solidity, которые нужны для понимая более низко-уровневой работы.



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


* [Hello world на solidity и деплой контракта в сеть][1]
* [Подборка инструментов для разработки][2]
* [Описание работы Ethereum и его блокчейна][3][Читать дальше →][4]

[1]: https://habrahabr.ru/post/312008/
[2]: https://habrahabr.ru/post/327236/
[3]: https://geektimes.ru/post/294611/.com%5Biz-pesochnitsy%5D-kak-rabotaet-efirium-v
[4]: https://habrahabr.ru/post/340928/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Смарт-контракт Ethereum для расчета бонусов используя дробные степени
habra.16
habrabot(difrex,1) — All
2017-10-26 11:30:11


![image][1]


Начну с того, что всем известно. ICO повсюду, все предлагают разные проекты, все продают токены. И у всех есть какая-то модель продаж со скидками, бонусами, сроками и т.п.
Как ни странно хоть область и достаточно экспериментальная, модель бонусов достаточно примитивна. Просто есть разные объемы или временные интервалы и проценты в них. Да и зачем усложнять? А я все таки попробую. Эксперимента ради. Новое всегда привлекает.
[Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/a21/6dc/ec2/a216dcec2b45ef3742c5d9731a1ad608.png
[2]: https://habrahabr.ru/post/340984/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] «В активном поиске»: как мы выбирали поисковый механизм для DLP-системы
habra.16
habrabot(difrex,1) — All
2017-10-26 11:30:11


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

[1]: https://habrastorage.org/webt/59/ef/5d/59ef5d020da94739058054.jpeg
[2]: https://habrahabr.ru/post/340874/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Качественное уменьшение изображений за константное время
habra.16
habrabot(difrex,1) — All
2017-10-26 14:30:05


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



Для начала давайте порассуждаем логически. Если вы делаете ресайз изображения, наверное вы хотите чтобы результат хотя бы отдаленно напоминал оригинал. Для этого нужно учесть как можно больше информации из исходного изображения. Вы слышали о методе «ближайшего соседа»? В этом методе для каждой точки конечного изображения просто берется какая-то одна точка из исходного изображения в неизменном виде.



![][1]
_Уменьшение изображения 4928×3280 до 256×170 ближайшим соседом._


> Рекомендую смотреть примеры из статьи в браузере в масштабе 100% и без ретины. То есть по максимуму исключить ресайз при просмотре.

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


![][2]
_Точки, которые попадут в конечное изображение размером 20×13._
[Читать дальше →][3]

[1]: https://habrastorage.org/webt/59/f0/bd/59f0bd6a1208a409488648.png
[2]: https://habrastorage.org/webt/59/f0/bd/59f0bd8900be5616103973.png
[3]: https://habrahabr.ru/post/340966/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Jaeger Opentracing и Microservices в реальном проекте на PHP и Golang
habra.16
habrabot(difrex,1) — All
2017-10-26 15:00:04


Всем привет, меня зовут Юрий Буйлов, я руковожу разработкой в CarPrice. Коротко расскажу как и почему мы пришли к микросервисам на PHP и Golang. Что используем, как инструментируем и мониторим наши приложения в production. Далее расскажу о распределенном трейсинге, который обеспечивает нам прозрачность работы сервисов.

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

[1]: https://habrastorage.org/webt/59/f0/ad/59f0ad60e86c3387399212.png
[2]: https://habrahabr.ru/post/340946/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Конкурс Topcoder «Konica-Minolta Pathological Image Segmentation Challenge». Заметки участника
habra.16
habrabot(difrex,1) — All
2017-10-26 16:30:16


Привет! Пока мы ждём субботу и Avito Data Science Meetup: Computer Vision, расскажу вам про моё участие в соревновании по машинному обучению [KONICA MINOLTA Pathological Image Segmentation Challenge][1]. Хотя я уделил этому всего несколько дней, мне повезло занять 2 место. Описание решения и детективная история под катом.



![][2]

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

[1]: https://community.topcoder.com/longcontest/?module=ViewProblemStatement&rd=16950&pm=14622
[2]: https://habrastorage.org/webt/ht/w2/am/htw2amglshnr96ovu9uieuuoiay.png
[3]: https://habrahabr.ru/post/340400/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Математическая модель вибрационного уровнемера с резонатором в виде консольной эллиптической трубки
habra.16
habrabot(difrex,1) — All
2017-10-26 17:00:09


![][1]

### Введение


В публикации [1] подробно рассмотрена реализация на Python метода измерения отношения частот с использованием фигур Лиссажу. В качестве примера были проанализированы формы колебаний консольной эллиптической трубки вибрационного уровнемера [2].

![][2]

Упруго закреплённая трубка эллиптического сечения с помощью систем возбуждения 5,6,7 совершает автоколебания в одной плоскости, а с помощью систем 8, 9, 10 в другой плоскости перпендикулярной первой. Трубка колеблется в двух взаимно перпендикулярных плоскостях с разными частотами близкими к собственным. Масса трубки зависит от уровня заполняющей её жидкости.

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

Остался не решённым вопрос определения зависимости частот колебаний трубки от уровня заполняющей жидкости что и является предметом данной публикации.


### Постановка задачи


Определить частоты изгибных колебаний трубки в двух взаимно перпендикулярных плоскостях методом Релея с использованием точного уравнения изгибной линии трубки из публикации [1].

С использованием полученных соотношений для частот найти зависимости чувствительности от уровня и определить диапазоны пригодные для контроля уровня жидкости.

Для реализации указанных задач средствами Python рассмотреть два метода решения символьный и символьно-численный. Сравнить указанные методы по производительности
[Читать дальше →][3]

[1]: https://habrastorage.org/webt/59/f1/22/59f122d77578f802344411.png
[2]: https://habrastorage.org/webt/59/f1/4f/59f14f57ae7b9916251302.png
[3]: https://habrahabr.ru/post/340982/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Как мы обновили поисковые подсказки в Яндексе и нашли для них правильную метрику
habra.16
habrabot(difrex,1) — All
2017-10-26 17:30:06


Поисковым подсказкам в Яндексе уже почти 10 лет. На первый взгляд, они кажутся довольно простой фичей — многие до сих пор уверены, что саджест учитывает только то, как часто люди вводят те или иные запросы. Несколько лет назад мы [рассказывали на Хабре][1], сколько сложной математики стоит за тем, чтобы подобрать правильное следующее слово и помочь человек сформулировать свой вопрос. Тогда мы даже подсчитали, что поисковые подсказки экономят людям около 60 лет.



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



Темой поисковых подсказок в Яндексе я занялся в начале 2016 года. Цель, стоящая в то время перед командой саджеста, звучала очень амбициозно: «Сделать лучший саджест на мобильных», ни больше ни меньше!



[![image][2]][3]



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



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

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

[1]: https://habrahabr.ru/company/yandex/blog/160749/
[2]: https://habrastorage.org/webt/59/e3/72/59e372023720d898202272.png
[3]: https://habrahabr.ru/company/yandex/blog/340552/
[4]: https://habrahabr.ru/post/340552/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Синтаксический анализ в NLTK
habra.16
habrabot(difrex,1) — All
2017-10-26 21:30:05


Здравствуйте. Это статья об синтаксическом анализе предложений, их представлении. Для разбора предложений будет использоваться пакет NLTK и язык программирования Python (версии 2.7).


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


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

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

[>] [Из песочницы] Регистратор на Bash для камер с rtsp
habra.16
habrabot(difrex,1) — All
2017-10-27 06:00:04


Всем привет!

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

Но денег не особо много, чтобы покупать какие-то специализированные решения, поэтому решено было поскрести по завалам хлама в серверной и с разрешения руководства утащить домой IP-камеру Xblitz iSee P2P IP WiFi.


_Камера Xblitz iSee P2P IP WiFi_
[Читать дальше →][1]

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

[>] Изоморфное приложение React JS + Spring Boot
habra.16
habrabot(difrex,1) — All
2017-10-27 12:00:05


[![][1]][2]

Про ReactJs, Java, Spring, рендеринг, Virtual DOM, Redux и прочие подобные вещи уже существует очень много всевозможных статей и практических наработок, поэтому я не буду в них углубляться.

Я не замерял производительность этой конструкции. Те кому интересно, могут провести свои личные тесты и сравнить например с NodeJS.

Я не особо заморачивался на стиле и качестве кода, так что извиняйте, кому не придётся по душе =)

Цель моей работы просто заставить работать воедино такие вещи как ReactJS + Redux + WebPack + Java/Spring.

Перед тем как писать свою статью, я воспользовался поиском и обнаружил существующий аналогичный [пример][3]. Но, почитав комментарии, я заметил, что некоторые желают увидеть подобный образец изоморфного приложения, но работающий со **Spring**.

С радостью исполняю желание читателей.
[Читать дальше →][4]

[1]: https://habrastorage.org/webt/59/f1/9a/59f19a199274c871310359.jpeg
[2]: https://habrahabr.ru/company/alfa/blog/340776/
[3]: https://habrahabr.ru/post/327480/
[4]: https://habrahabr.ru/post/340776/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] JAVA 9. Что нового?
habra.16
habrabot(difrex,1) — All
2017-10-27 13:30:04


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

Java была разработана в 1995 году компанией Sun Microsystems и изначально создавалась для интерактивного телевидения и программирования бытовых электронных устройств. Тем не менее, публичный релиз Java 1.0 выявил смену фокуса на интернет-использование, превратив его в один из самых популярных языков программирования.

Очевидно, со времен 1.0 многое изменилось и вот наконец после множества переносов 21 сентября 2017 года состоялся релиз Java 9.

Особенности предыдущей (8-й) версии благодаря своей универсальности предоставили разработчикам возможность создавать решения для самых разных секторов бизнеса, включая финтех, здравоохранение и другие индустрии. Среди ключевых нововведений Java 8 следует отметить лямбда-выражения, стримы и изменения в API.

В свою очередь Java 9 также изобилует разнообразием обновлений “под капотом” и в API. Кроме очевидного проекта Jigsaw, на который возложена обязанность по внедрению модулярности в основные компоненты Java, новая версия может похвастаться ещё тремя важными фичами:

1. Полная поддержка клиента HTTP 2.0: Вопрос в скорости, и HTTP 2.0 предоставляет более высокие результаты, колеблющиеся от 11.81% до 47.7% по сравнении с клиентом HTTP 1.1.
2. Jshell: Новый инструмент командной строки. Если разработчик хочет автономно запустить несколько строк Java, то это можно выполнить без необходимости заворачивать все в отдельный метод или проект.
3. Microbenchmark: Теперь производительность отдельных небольших частей кода можно измерить стандартизированным методом. Анализ JMH за наносекунды уникален для Java 9.
![][1]
[Читать дальше →][2]

[1]: https://habrastorage.org/webt/yy/zt/kx/yyztkxbtalmb9rnosmuprf3u51u.jpeg
[2]: https://habrahabr.ru/post/341058/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Выбираем файловую систему независимую от ОС
habra.16
habrabot(difrex,1) — All
2017-10-27 13:30:04


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

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

![][1]

Так вот, задача стоит такая: нужен раздел на системном накопителе, причём с такой файловой системой, которая поддерживается на чтение и запись всеми перечисленными операционками. На этом разделе будут храниться скачанные из интернета файлы и меж-операционные проекты.
[Читать дальше →][2]

[1]: https://habrastorage.org/webt/u6/ym/wt/u6ymwtdcl-ogdvbr3htnlbskds8.png
[2]: https://habrahabr.ru/post/341042/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Установка FlexLM на Ubuntu Server 16
habra.16
habrabot(difrex,1) — All
2017-10-27 14:30:04


![][1]

В данной инструкции будет подробно рассмотрена установка защиты FlexLM на Ubuntu Server 16.04. Возможна установка и на десктопную версию (лично проверена версия 17.10).
В качестве серверов будут выступать как специально разработанные под Linux (Autodesk), так и существующие только под Windows (Nanosoft/CSoft).
[Читать дальше →][2]

[1]: https://habrastorage.org/webt/vt/w_/8b/vtw_8bu2ica7x0b_fphudt6mcsi.png
[2]: https://habrahabr.ru/post/341002/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Реализация HFT роботов на устройствах CEPappliance
habra.16
habrabot(difrex,1) — All
2017-10-27 15:30:05


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

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

[>] Vibe.js — попытка сделать state management без боли
habra.16
habrabot(difrex,1) — All
2017-10-28 12:00:12


Всем йо, хабражители.



В общем, так вышло, что я пишу на JavaScript уже довольно долго, и одной из самых главных задач всегда была организация состояния приложения.
Что-то хочется кешировать, что-то обновлять, причем обновлять везде, а не только в локальном компоненте, не хочется перерисовывать весь компонент если поменялся весь Store (shout out to Vuex), а хочется подписываться на то, что используешь (shout out to MobX).

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

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

[>] Ищем имена с опечатками в PostgreSQL
habra.16
habrabot(difrex,1) — All
2017-10-28 20:30:05


Все началось с того, что мне нужно было разработать поиск пациентов для одной внутренней медицинской системы. Логика работы была в том, что если мы не нашли человека в системе, то его нужно создать (а дубли пациентов плодить нельзя). В связи с этим одной из подзадач стала реализация поиска людей с учетом опечаток в их именах. Ну а поскольку я люблю PostgreSQL (а когда в руках у тебя молоток, то все похоже на гвозди), не сложно угадать, на чем я решил реализовать поиск с опечатками…
[![][1]
][2] [Читать дальше →][3]

[1]: https://habrastorage.org/webt/sj/rm/sq/sjrmsqmnovu_xaq--unhed2a3qs.jpeg
[2]: https://habrahabr.ru/post/341142/
[3]: https://habrahabr.ru/post/341142/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Хронология уровня CO в атмосфере США (решение задачи Kaggle с помощью Python+Feature Engineering)
habra.16
habrabot(difrex,1) — All
2017-10-28 20:30:05


Хочу поделиться опытом решения задачи по машинному обучению и анализу данных от Kaggle. Данная статья позиционируется как руководство для начинающих пользователей на примере не совсем простой задачи.

**Выборка данных**

Выборка данных содержит порядка 8,5 млн строк и 29 столбцов.Вот некоторые из параметров:

* Широта-latitude
* Долгота-longitude
* Способ взятия пробы-method\_name
* Дата и время взятия пробы-date\_local
![image][1]

**Задача**

1. Найти параметры максимально влияющие на уровень CO в атмосфере.
2. Создание гипотезы, предсказывающей уровень CO в атмосфере.
3. Создание нескольких простых визуализаций. [Читать дальше →][2]

[1]: https://habrastorage.org/webt/fh/5q/4b/fh5q4bzkezrxwg75ne0oyq47-ui.png
[2]: https://habrahabr.ru/post/341130/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Убираем радиальное искажение с фото и видео при помощи библиотеки openCV и языка python
habra.16
habrabot(difrex,1) — All
2017-10-29 02:00:05


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



Сразу привожу фото итогового результата. Слева оригинальное фото, справа — обработанное:





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

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

[>] Вашим пользователям не нужны пароли
habra.16
habrabot(difrex,1) — All
2017-10-29 06:00:04


![Rusty lock][1]



Зачастую, одно из первых архитектурных решений, принятых в начале разработки вашего сайта — будет использование email + password для авторизации пользователя. Эта связка прочно засела в наши головы, и мы уже на задумываемся, зачем мы заставляем людей придумывать пароль. Мы привыкли так делать.



Но давайте подумаем, возможно, вашим пользователям не нужны пароли.



Одно из возможных решений, это использовать [OAuth 2.0][2], но не у всех пользователей может быть аккаунт в социальной сети и желание его использовать на вашем ресурсе.



Но как-же тогда избавиться от пароля? На этот вопрос, я и попробую ответить в статье.

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

[1]: https://habrastorage.org/webt/dv/gh/pq/dvghpqb5hbz6esrjkx0ieztzqhi.jpeg
[2]: https://en.wikipedia.org/wiki/OAuth
[3]: https://habrahabr.ru/post/341164/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Создаём собственный физический 2D-движок. Часть 1: основы и разрешение импульсов силы
habra.16
habrabot(difrex,1) — All
2017-10-29 12:30:18


![image][1]



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

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

[1]: https://habrastorage.org/getpro/habr/post_images/28b/dbb/38f/28bdbb38f7d0e27d0941cab84655da0b.png
[2]: https://habrahabr.ru/post/336908/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Локализация комментариев в коде. Лекция Яндекса
habra.16
habrabot(difrex,1) — All
2017-10-29 15:30:12


В процессе выхода на международный рынок с API Карт мы решили отказаться от комментирования кода на русском языке. При этом на основе комментариев формируются справочники сервиса, которые затем публикуются у нас на портале, и отказываться от поддержки справочников на русском языке мы не хотели. Из доклада Олеси Горбачевой и Максима Горкунова вы узнаете, как технические писатели Яндекса совместно с разработчиками API Карт поменяли язык комментариев и организовали синхронную поддержку справочников и примеров сразу на двух языках.


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

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

[>] «Чтение на выходных»: 22 независимых блога о разработке, ИБ, тестировании и геймдеве
habra.16
habrabot(difrex,1) — All
2017-10-29 18:00:04


В прошлом месяце в нашей [подборке][1] полезных источников оказались блоги о математике и алгоритмах. Сегодня мы решили продолжить изучение тематической [ветки][2] Hacker News на предмет интересных источников материалов о разработке.

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

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

[1]: https://habrahabr.ru/company/it-grad/blog/338624/
[2]: https://news.ycombinator.com/item?id=14842276
[3]: https://habrastorage.org/webt/59/e4/71/59e4715dd8116388955216.jpeg
[4]: https://habrahabr.ru/company/it-grad/blog/340136/
[5]: https://habrahabr.ru/post/340136/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Broo — алгоритм сжатия без потерь. Улучшения
habra.16
habrabot(difrex,1) — All
2017-10-30 04:30:04


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



#### **Почему название "Broo"?** {#pochemu-nazvanie-broo}



![image][1]


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

[1]: https://habrastorage.org/getpro/habr/post_images/334/ef6/5df/334ef65dfd03605be5932dd05e8698c2.jpg
[2]: https://habrahabr.ru/post/341226/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Что каждый программист на C должен знать об Undefined Behavior. Часть 1/3
habra.16
habrabot(difrex,1) — All
2017-10-30 10:00:04


Люди иногда спрашивают, почему код, скомпиливанный в LLVM иногда генерирует сигналы SIGTRAP, когда оптимизация была включена. Покопавшись, они обнаруживают, что Clang сгенерировал инструкцию «ud2» (подразумевается код X86) — то же, что генерируется \_\_builtin\_trap(). В этой статье рассматривается несколько вопросов, касающихся неопределённого поведения кода на C и того, как LLVM его обрабатывает.

![image][1]

В этой статье (первой из трёх) мы попытаемся объяснить некоторые из этих вопросов, чтобы вы могли лучше понять связанные с ними компромиссы и сложности, и возможно, изучить немного больше тёмные стороны С. Мы выясним, что C не является «высокоуровневым ассемблером», как многие опытные программисты на C (особенно те, кто сфокусирован на низком уровне) предпочитают думать, и что C++ и Objective-C напрямую унаследовали множество таких проблем.
[Читать дальше →][2]

[1]: https://habrastorage.org/webt/si/fm/kb/sifmkb_11ismyizm4kt5oe-vix4.jpeg
[2]: https://habrahabr.ru/post/341048/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Нечёткое сравнение строк: пойми меня, если сможешь
habra.16
habrabot(difrex,1) — All
2017-10-30 11:00:17


![image][1]
Привет!
На естественном языке сказать об одном и том же факте можно бесконечным числом способов. Можно переставлять слова местами, заменять их на синонимы, склонять по падежам (если говорим о языке с падежами) и тд.

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

Результатом работы, описанием процесса, кодом на git'е готов поделиться с вами.

Итак, кратко задачу можно озвучить так: _«С определенной периодичностью из различных источников приходят актуальные новости. Необходимо фильтровать их таким образом, чтобы на выходе не было двух новостей об одном и том же факте.»_
> **Предупреждение:** в статье присутствуют заголовки реальных новостей. Я отношусь к ним исключительно как к рабочему материалу, не представляю какую-либо точку зрения на политическую или экономическую ситуацию в какой бы то ни было стране.[Читать дальше →][2]

[1]: https://habrastorage.org/webt/tn/3q/pj/tn3qpjtu3a5fcq8grdhzxwxdpma.jpeg
[2]: https://habrahabr.ru/post/341148/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Шаблон проектирования «состояние» двадцать лет спустя
habra.16
habrabot(difrex,1) — All
2017-10-30 11:00:17


![][1] [Состояние][2] — поведенческий шаблон проектирования. Используется в тех случаях, когда во время выполнения программы объект должен менять своё поведение в зависимости от своего состояния. Классическая реализация предполагает создание базового абстрактного класса или интерфейса, содержащего все методы и по одному классу на каждое возможно состояние. Шаблон представляет собой частный случай рекомендации «[заменяйте условные операторы полиморфизмом][3]».

Казалось бы, все по книжке, но есть нюанс. Как правильно реализовать методы не релевантные для данного состояния? Например, как удалить товар из пустой корзины или оплатить пустую корзину? Обычно каждый state-класс реализует только релевантные методы, а в остальных случаях выбрасывает `InvalidOperationException`.

Нарушение принципа подстановки Лисков на лицо. Yaron Minsky [предложил альтернативный подход][4]: _сделайте недопустимые состояния непредставимыми (make illegal states unrepresentable)_. Это дает возможность перенести проверку ошибок со времени исполнения на время компиляции. Однако control flow в этом случае будет организован на основе сопоставления с образцом, а не с помощью полиморфизма. К счастью, [частичная поддержка pattern matching появилась в C#7][5].
[Альтернативная реализация шаблона][6]

[1]: https://habrastorage.org/webt/dv/6v/qm/dv6vqmwengodjuefeodp4nvchrs.jpeg
[2]: https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
[3]: https://refactoring.guru/replace-conditional-with-polymorphism
[4]: https://blog.janestreet.com/effective-ml-revisited/
[5]: https://habrahabr.ru/post/257283/
[6]: https://habrahabr.ru/post/341134/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Взлом Bitcoin по телевизору: обфускуй, не обфускуй, все равно получим QR
habra.16
habrabot(difrex,1) — All
2017-10-30 12:00:05


### История про то, как секретный ключ для Bitcoin’a в виде QR-кода восстановили из размазанной картинки



![image][1]

Мы могли бы просто назвать этот пост «Насколько хорош QR-код и как мы его восстановили практически из ничего». Но гораздо интереснее, когда QR-код является ключом к кошельку на сумму $1000 в битках.
[Читать дальше →][2]

[1]: https://habrastorage.org/webt/5s/1x/kz/5s1xkzvlk1cic5dmnnwzeu53lbm.jpeg
[2]: https://habrahabr.ru/post/341212/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Security Week 43: Грядет великая IoT-жатва, как хакеры киберконфу НАТО пиарили, из Bad Rabbit торчат уши ExPetr
habra.16
habrabot(difrex,1) — All
2017-10-30 12:00:05


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

Возможно, в этот раз нам повезло, и мы вовремя [получили предупреждение][1] о готовящемся восстании «интернета вещей». NewSky Security нашли в даркнете форумную ветку, в которой «черные шляпы» расслабленно обсуждали концепцию и реализацию атаки через CVE-2017-8225, позволяющую сливать учетные данные из китайских камер от множества разных вендоров. Двое самых активных участников обсуждения в итоге родили два скрипта.
[Читать дальше →][2]

[1]: https://threatpost.com/hackers-prepping-iotroop-botnet-with-exploits/128608/
[2]: https://habrahabr.ru/post/341156/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Внедрение IdM. Часть 2. Как определить, что стоит задуматься о внедрении IdM?
habra.16
habrabot(difrex,1) — All
2017-10-30 15:00:06


В [первой части нашего цикла статей про IdM][1] мы обсудили, что такое IdM. Сегодня будет минимум теории: я расскажу о том, как понять, нужно ли вообще вашей компании IdM-решение — с точки зрения задач бизнеса, ИТ, ИБ, аудита и т.д. Под катом — несколько чек-листов, составленных на основании моего опыта внедрений IdM. Они помогут вам определиться, пора ли выбирать IdM-решение, или ваша компания пока может обойтись существующими процессами.

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

[1]: https://habrahabr.ru/company/solarsecurity/blog/339758/
[2]: https://habrastorage.org/webt/59/dc/96/59dc9682cd187793220508.jpeg
[3]: https://habrahabr.ru/post/340960/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

Pages: 1 ... 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 ... 133