RSS
Pages: 1 ... 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 ... 133
[>] Параметрическое моделирование в САПР SolveSpace: «Неисповедимы пути Решателя» или «Червоточины Ньютона»
habra.16
habrabot(difrex,1) — All
2017-08-20 04:00:04


На первый взгляд, задача применения размерных ограничений к чертежу кажется не сложнее упражнения из школьного учебника. Точно так же показалось и мне, когда я впервые узнал о ней. В то время я работал в компании, которая занималась разработкой [программного комплекса для проектирования индивидуальных жилых домов][1] с подготовкой проектной документации "под ключ". В этом проекте я занимался разработкой алгоритма генерации многоскатных крыш, а впоследствии и всего геометрического ядра на основе Булевых операций, поэтому за дальнейшей историей я следил издалека. В какой-то определенный момент, заказчику захотелось, чтобы проектировщики могли просто указать размеры комнат, углы эркеров и ширину дверных проемов, а программа автоматически рассчитала бы все остальные параметры внешнего и внутреннего устройства дома. Эта мысль возникла у заказчика спонтанно, и поэтому срочно нужно было сделать “точно так же, как в [CATIA][2]”. Наш тимлид подошел к решению задачи с энтузиазмом и начал разрабатывать прототип. Он решал сотни уравнений в MathCAD, весь кабинет был завален графиками частных решений для двух, трех, четырех точек… Его изначальное предположение о том, что задачу можно решить аналитически, потерпело фиаско: на дворе был 2005, а это значило, что в интернете невозможно было найти хоть какую-то информацию по данной теме. В результате, после двух месяцев напряженных исследований, данную функциональность пришлось **исключить**.



![][3]

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

[1]: http://www.simpleanswers.co.uk/case-study-3d-house-estimator.html
[2]: https://ru.wikipedia.org/wiki/CATIA
[3]: https://habrastorage.org/web/17f/c80/f96/17fc80f960a5436084f68d191a3d9c27.png
[4]: https://habrahabr.ru/post/335962/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Клонирование игры Lode Runner с первого ПК в СССР «БК-0010» плюс несколько слов о программировании игр в конце 80-х
habra.16
habrabot(difrex,1) — All
2017-08-20 11:00:04


![][1]


Недавно я оказался в не совсем обычной для себя ситуации вынужденного безделья. Пару недель поваляв дурака, я стал чувствовать, что это не такое уж и веселое занятие, которое к тому же еще и стало переходить в скуку. И мне надо было себя занять чем-нибудь относительно полезным. Раньше мне периодически приходили в голову мысли о том, чтобы вернуть к жизни какую-нибудь старую игру из времен моей юности. Но я всегда гнал такие идеи прочь, так как понимал, что "_никому это теперь не надо_". Но сейчас у меня было свободное время и, главное, было желание. В результате для клонирования я выбрал один из вариантов игры **Lode Runner**, в который я когда-то играл на первом персональном компьютере времен позднего **СССР**, который назывался **БК-0010**. Не думаю, что многие о нем помнят, так как мир «железа» поменялся с тех времен очень сильно. Однако сам **Lode Runner** с этого **БК-0010** был достаточно уникален своими правилами среди других одноименных **Lode Runner**-ов. Эта версия игры была моей самой любимой, как мне кажется, по объективным причинам, хотя… может быть тут дело просто в ностальгии. В результате я сумел себя мотивировать тем, что "_лично мне_", а, возможно, и "_всему миру_", эта игра может быть интересна, и на её восстановление стоит потратить время ([ссылка на полученный результат][2]).

Для начала взглянем на оригинал с **БК-0010** (хвала Интернету, в котором можно найти почти всё): [Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/b4d/678/2cf/b4d6782cf720d7800a3f3133db71ef6b.png
[2]: http://astralax.ru/projects/others/loderunner
[3]: https://habrahabr.ru/post/335968/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Игровая модель поведения на рынке двух конкурирующих фирм на Python
habra.16
habrabot(difrex,1) — All
2017-08-20 15:30:04


### Введение


Математическое моделирование в экономике позволяет предупредить возникновения ряда проблем, возникающих в реальной предпринимательской деятельности. Одной из таких проблем у производителей товаров является банкротство.

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


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


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

**Листинг построения графиков функций цены и издержек**
# -*- coding: utf8 -*-
import numpy as np
import matplotlib.pyplot as plt
a=10
def f(q): Функция цены от объёма товара
return a*np.e**(-0.5*q**2)
def h(q): #Функция издержек от объёма товара
return np.sqrt(q)
plt.figure()
q= np.arange(0, 2.01, 0.1)#Массив значений аргумента
plt.title(r'$y=f(q)$') #Заголовок в формате TeX
plt.ylabel(r'$f(q)$') #Метка по оси y в формате TeX
plt.xlabel(r'$q$') #Метка по оси x в формате TeX
plt.grid(True) #Сетка
plt.plot(q,f(q)) #Построение графика
plt.figure()
plt.title(r'$y=h(q)$') #Заголовок в формате TeX
plt.ylabel(r'$h(q)$') #Метка по оси y в формате TeX
plt.xlabel(r'$q$') #Метка по оси x в формате TeX
plt.grid(True) #Сетка
plt.plot(q,h(q)) #Построение графика
plt.show() #Показать график


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

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

[>] [Из песочницы] Импровизированный считыватель штрих кодов для 1С через Telegram на Go
habra.16
habrabot(difrex,1) — All
2017-08-20 16:00:05


Всем привет! Хочу поделиться тем, что возможно кому-то пригодится.

Захотелось, для разнообразия, что-нибудь несложное реализовать на Go, и тут параллельно были прочтены статьи на хабре про Telegram-ботов, а на работе проект по интеграции штрих-кодирования и 1С, ну вот и было решено совместить приятное с полезным и реализовать импровизированный считыватель штрих-кодов для тестирования и на пощупать как в 1С это работает. [Читать дальше →][1]

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

[>] Nodebackup — сохранение данных из контейнеров (докер) и так-же остальных
habra.16
habrabot(difrex,1) — All
2017-08-20 16:00:04


![][1]

Это рассказ про самописнный велосипед, которым я постарался выполнить главный завет системного администратора — чтобы всё работало, но я ничего не делал. )

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

[1]: https://habrastorage.org/web/e20/29b/f5b/e2029bf5b2944eae93408230462d5c93.png
[2]: https://habrahabr.ru/post/335880/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Blockchain
habra.16
habrabot(difrex,1) — All
2017-08-20 18:00:04


_Данный текст будет являться новой главой для учебного пособия по защите информации кафедры радиотехники и систем управления МФТИ (ГУ). Полностью учебник доступен на [github][1]. На хабре я же планирую выкладывать новые «большие» куски, во-первых, чтобы собрать полезные комментарии и замечания, во-вторых, дать сообществу больше обзорного материала по полезным и интересным темам._

Когда у вас есть знания о том, что такое криптографически стойкая хеш-функция, понять, что такое blockchain («цепочка блоков») очень просто. Blockchain – это последовательный набор блоков (или же, в более общем случае, ориентированный граф), каждый следующий блок в котором включает в качестве хешируемой информации значение хеш-функции от предыдущего блока.

Технология blockchain используется для организации журналов транзакций, при этом под транзакцией может пониматься что угодно: финансовая транзакция (перевод между счетами), аудит событий аутентификации и авторизации, записи о выполненных ТО и ТУ автомобилей. При этом событие считается случившимся, если запись о нём включена в журнал.

В таких системах есть три группы действующих лиц:
* источники событий (транзакций)
* источники блоков (фиксаторы транзакций)
* получатели (читатели) блоков и зафиксированных транзакций.

В зависимости от реализации эти группы могут пересекаться. В системах типа BitCoin, например, все участники распределённой системы могут выполнять все три функции. Хотя за создание блоков (фиксацию транзакций) обычно отвечают выделенные вычислительные мощности, а управляющими их участников называют майнерами (см. раздел про децентрализованный blockchain далее).

Основное требование к таким журналам таково:
* Невозможность модификации журнала: после добавления транзакции в журнал должно быть невозможно её оттуда удалить или изменить.

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

[1]: https://github.com/vlsergey/infosec
[2]: https://habrahabr.ru/post/335994/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Мириады запущенных задач на C#
habra.16
habrabot(difrex,1) — All
2017-08-21 00:00:04


Недавно на ресурсе Medium были опубликованы [две][1] [статьи][2] от одного и того же автора, затрагивающие функциональность C# async/await.



Основными выводами были:


* рекурсивный вызов асинхронного метода в C# подвержен StackOverflowException
* goroutine'ы лучше задач (тасков) в .NET в плане производительности

Но главная проблема вышеприведенных публикаций — абсолютное непонимание модели кооперативной многозадачности в C# с вводом читателей в заблуждение. Сами же бенчмарки — **бессмысленные**, как мы увидим позже.



Далее в статье я попытаюсь раскрыть суть проблемы более подробно с примерами решения.


**TL;DR**
После небольшой правки кода исходных примеров, реализация бенчмарка на .NET оказывается быстрее варианта Go. Попутно решаем проблему переполнения стека у рекурсивных асинхронных методов.


**NB**: использоваться будут свежевыпущенный .NET Core 2.0 и Go 1.8.3.

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

[1]: https://medium.com/@alexyakunin/async-recursion-and-some-weirdness-of-design-of-asynchronous-api-in-c-vs-f-a5760a00a26a
[2]: https://medium.com/@alexyakunin/go-vs-c-part-1-goroutines-vs-async-await-ac909c651c11
[3]: https://habrahabr.ru/post/336000/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Мутационное тестирование
habra.16
habrabot(difrex,1) — All
2017-08-21 05:30:08


![][1] Юнит тесты помогают нам удостовериться, что код работает так, как мы этого хотим. Одной из метрик тестов является _процент покрытия_ строк кода (Line Code Coverage).



Но насколько корректен данный показатель? Имеет ли он практический смысл и можем ли мы ему доверять? Ведь если мы удалим все `assert` строки из тестов, или просто заменим их на `assertSame(1, 1)`, то по-прежнему будем иметь 100% Code Coverage, при этом тесты ровным счетом не будут тестировать ничего.



Насколько вы уверены в своих тестах? Покрывают ли они все ветки выполнения ваших функций? Тестируют ли они вообще хоть что-нибудь?



Ответ на этот вопрос даёт мутационное тестирование.

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

[1]: https://habrastorage.org/web/2c5/3b5/2c5/2c53b52c5d5a411bafe24eba7116b302.png
[2]: https://habrahabr.ru/post/334394/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Разбор: могут ли хакеры на самом деле взломать биржу
habra.16
habrabot(difrex,1) — All
2017-08-21 12:00:06


[![][1]][2]

_Изображение:[Christine Puccio][3], [CC BY-SA 2.0][4]_

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

Но могут ли на самом деле взломать фондовый рынок? Аналитики CNBC [разобрались][5] с вопросом подробнее — мы подготовили адаптированную версию этого материала. [Читать дальше →][6]

[1]: https://habrastorage.org/web/8ca/653/04c/8ca65304cc9543cfab7edf54f3b3e845.png
[2]: https://habrahabr.ru/company/itinvest/blog/336028/
[3]: https://www.flickr.com/photos/christinepuccio/
[4]: https://creativecommons.org/licenses/by-sa/2.0/
[5]: https://www.cnbc.com/2017/07/31/could-the-stock-market-ever-be-hacked.html
[6]: https://habrahabr.ru/post/336028/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] 30+ инструментов для профессиональной разработки приложений под Android
habra.16
habrabot(difrex,1) — All
2017-08-21 12:30:05


![image][1]

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

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

[1]: https://habrastorage.org/getpro/habr/post_images/21c/88e/c1a/21c88ec1acd00e8ce1a841f750194d81.jpg
[2]: https://habrahabr.ru/post/336020/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [recovery mode] Установка и использование GNU/Linux вместо Chrome OS на Toshiba Chromebook 2
habra.16
habrabot(difrex,1) — All
2017-08-21 14:30:04


Привет всем! Некоторое время назад я приобрёл себе Chromebook модели Toshiba Chromebook 2 CB35-B3330 и заменил на нём Chrome OS на традиционный GNU/Linux. Это была не установка через crouton, а именно «чистая» установка с полным удалением Chrome OS. Борьба с плохой поддержкой Линуксом этого хромбука заняла неожиданно много времени (несколько вечеров), но в итоге все проблемы решились и хромбук стал полноценной рабочей машиной.

В итоге я решил написать статью, в которой:

* Очень кратко описан сам хромбук и мои впечатления от железа.
* Описаны основные проблемы по установке GNU/Linux на данную конкретную модель и пути их решения.
* Очень кратко описано, каким образом я сам его использую после установки Линукса.

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

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

[>] «Java-разработчики не осознают проблему с профайлерами»: Андрей Паньгин и Нитсан Вакарт о Java-профилировании
habra.16
habrabot(difrex,1) — All
2017-08-21 15:30:05


![][1]

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

**Андрей [apangin][2] Паньгин** (Одноклассники) недавно создал один из таких инструментов: на конференции JPoint в апреле он представил опенсорсный проект [async-profiler][3], которому safepoint bias не страшен. Другой эксперт в этой теме — **Нитсан Вакарт**: о той же проблеме с safepoints многие узнали благодаря его [блог-посту][4] «Why (Most) Sampling Java Profilers Are Fucking Terrible».

Мы решили поговорить с ними обоими сразу, начав разговор с последних новостей об async-profiler, а позже перейдя к состоянию Java-профилирования в целом.
[Читать дальше →][5]

[1]: https://habrastorage.org/web/104/a16/0a5/104a160a58ac416d8502b4ffc936c648.jpg
[2]: https://habrahabr.ru/users/apangin/
[3]: https://github.com/jvm-profiling-tools/async-profiler
[4]: http://psy-lob-saw.blogspot.ru/2016/02/why-most-sampling-java-profilers-are.html
[5]: https://habrahabr.ru/post/335852/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Мы не удержались и тоже сделали SDK для мессенджеров: Web, Android и iOS
habra.16
habrabot(difrex,1) — All
2017-08-21 15:30:05


![][1]


Вообще мы в Voximplant занимаемся голосовой автоматикой. Принять звонок с сотового телефона, запустить JavaScript сценарий клиента – там пара тысяч строк логики что с этим звонком делать, включая исходящие на веб-браузеры и мобильные приложения – вот эта вся история. Отдельная история – видео. Образование, телемедицина, совещания. Тот же SIP, те же кодеки, только данных передается в сотню раз больше. При этом браузеры любят зависать и падать, когда им не нравится полученный с другой стороны WebRTC SDP пакет, а мы их от этого отучаем.

Но, как оказалось, голоса и видео клиентам мало: “Мы не хотим сами писать чатик, уже два раза все переписывали и три питониста уволилось. Дайте нам стек unified communications, чтобы всё было на одной платформе, и мы не парились”. И на прошлой неделе мы стали этим самым “Unified Communications”. Теперь на нас можно собрать “Skype for Web” целиком: не только голосовые и видеозвонки, но и обмен сообщениями. Под катом я хочу показать как работает сделанный нами мессаджинг и, надеюсь, получить от вас фидбек – насколько хорошим получилось API и все ли с помощью него можно сделать?
[Читать дальше →][2]

[1]: https://habrastorage.org/web/406/1ad/d41/4061add41e8c4d968e01bb05c73e99f5.jpg
[2]: https://habrahabr.ru/post/336038/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] 10 приёмов работы в терминале Linux, о которых мало кто знает
habra.16
habrabot(difrex,1) — All
2017-08-21 16:00:04


Близкое знакомство с возможностями терминала — один из признаков человека, который хорошо разбирается в Linux. Хотя некоторые вещи запомнить сложно, есть довольно-таки простые, но эффективные приёмы, которые способны повысить качество и скорость работы в терминале. Пожалуй, каждый пользователь Linux рано или поздно обзаводится собственным списком ценных мелочей. Надеемся, некоторых из тех десяти приёмов работы в командной строке Linux, которыми мы хотим с вами поделиться, попадут в ваш личный список полезных команд.

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

[1]: https://habrastorage.org/getpro/habr/post_images/6ea/62c/2b7/6ea62c2b7a1783c614d87c567eb4ed3d.jpg
[2]: https://habrahabr.ru/company/ruvds/blog/336060/
[3]: https://habrahabr.ru/post/336060/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Простой Java-код, ломающий систему типов Scala
habra.16
habrabot(difrex,1) — All
2017-08-21 16:00:05


Простой код на Java: generic интерфейс, класс который его реализует, и метод, принимающий его экземпляр:


//Gen.java:
public interface Gen {
A value();
}

//GenInt.java:
public class GenInt implements Gen {
private final int i;
public GenInt(int i) {
this.i = i;
}
@Override
public Integer value() {
return i;
}
}

//GenTest.java:
public class GenTest {
public static T test(A a) {
return a.value();
}
public static void main(String[] argv) {
GenInt g = new GenInt(42);
Integer i = test(g);
}
}

Он компилируется и даже запускается. Как вы думаете, что будет, если вам захочется вызывать метод `test` из Scala?


object TestFail extends App {
val genInt = new GenInt(42)
val i = GenTest.test(genInt)
} [Что может пойти не так?][1]

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

[>] Шесть мифов о блокчейне и Биткойне, или Почему это не такая уж эффективная технология
habra.16
habrabot(difrex,1) — All
2017-08-21 16:00:04


_Автор статьи — Алексей Маланов, эксперт отдела развития антивирусных технологий «Лаборатории Касперского»_

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

Уточнение: в этом посте мы поговорим о том варианте реализации технологии блокчейн, который используется в криптовалюте Биткойн. Существуют другие применения и реализации блокчейна, в некоторых из них устранены какие-либо недостатки «блокчейна классического», но обычно они построены на одинаковых принципах.

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

[1]: https://habrastorage.org/web/027/1ff/565/0271ff5655cc446c8d8d3b6d8677428b.jpg
[2]: https://habrahabr.ru/post/336036/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Liscript — web REPL: поцелуи, велосипеды и экскаваторы
habra.16
habrabot(difrex,1) — All
2017-08-21 19:00:04


![][1]

Некоторое время назад я написал интерпретатор лиспоподобного языка, который назвал Liscript. Опубликовал несколько статей на Хабре, посвященных особенностям реализации ядра, TCO, GUI, REPL-ботов и т.п. Недавно добавил web-интерфейс REPL-у (ссылка в конце статьи).

При чем здесь поцелуи и экскаваторы? Думаю, большинству известны такие аббревиатуры, как KISS (keep it simple stupid — делай это проще, дурачок), YAGNI (You ain't gonna need it — Вам это не понадобится), а также высказывания людей разной степени великости про архитектурных астронавтов, «все должно быть сделано так просто, насколько возможно, но не проще», и т.п.

Допустим, перед вами стоит задача — выкопать яму. Какие есть варианты решения? Взять лопату и выкопать самому — дешево и сердито, но долго и возможно неоптимально (зависит от вашего уровня владения лопатой и размеров ямы). Отдать на аутсорс таджикам (не будем рассматривать здесь этот вариант, хотя я должен был его упомянуть). Взять экскаватор — быстро и эффективно, но затратно: бензин/аренда, плюс не факт, что он проедет в вашу садовую калитку, значит надо сносить/восстанавливать забор и т.д. Также, необходимо определиться с моделью (порой из 100500 вариантов), а если вы будете управлять им самостоятельно, надо разобраться во всех его рычагах и педалях.

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

В общем, про выбор инструментов под задачи, и конкретные (подозреваю, что спорные) решения, которые я выбирал в процессе реализации проекта, под катом.
[Читать дальше →][2]

[1]: https://habrastorage.org/web/17f/4a4/8cb/17f4a48cbda143999aeb8c9c89698ebf.png
[2]: https://habrahabr.ru/post/336006/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Простой Java-код, ломающий систему вывода типов Scala
habra.16
habrabot(difrex,1) — All
2017-08-21 19:00:04


Простой код на Java: generic интерфейс, класс который его реализует, и метод, принимающий его экземпляр:


//Gen.java:
public interface Gen {
A value();
}

//GenInt.java:
public class GenInt implements Gen {
private final int i;
public GenInt(int i) {
this.i = i;
}
@Override
public Integer value() {
return i;
}
}

//GenTest.java:
public class GenTest {
public static T test(A a) {
return a.value();
}
public static void main(String[] argv) {
GenInt g = new GenInt(42);
Integer i = test(g);
}
}

Он компилируется и даже запускается. Как вы думаете, что будет, если вам захочется вызывать метод `test` из Scala?


object TestFail extends App {
val genInt = new GenInt(42)
val i = GenTest.test(genInt)
} [Что может пойти не так?][1]

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

[>] [Перевод] Логарифмируй это: метод логарифмической производной в машинном обучении
habra.16
habrabot(difrex,1) — All
2017-08-21 20:00:06


![][1]


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

Довольно математично.
[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/a40/deb/ac2/a40debac242a37b3f77ef29ffc3060c3.jpg
[2]: http://blog.shakirm.com/2015/10/machine-learning-trick-of-the-day-4-reparameterisation-tricks/
[3]: https://habrahabr.ru/post/335614/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Свой велосипед для JSON API
habra.16
habrabot(difrex,1) — All
2017-08-21 20:30:06


Всем привет! На недавно прошедшем Superjob IT Meetup я [рассказывал][1] о том, как мы в Superjob разрабатываем свой API для проекта с миллионной аудиторией и кучей различных платформ.

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

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

[1]: https://youtu.be/EfL8lsUTlFo?t=7m32s
[2]: https://habrastorage.org/web/c05/b9e/116/c05b9e116ef94b519a650cc5ce44bdd3.jpg
[3]: https://habrahabr.ru/post/335910/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Concurrency в Swift 3 и 4. Operation и OperationQueue
habra.16
habrabot(difrex,1) — All
2017-08-21 21:00:05


![][1]
![][2]

Если вы хотите добиться `UI` отзывчивости вашего` iOS` приложения, выполняя такие затратные по времени куски кода, как загрузка данных из сети или обработка изображений, то вам нужно использовать продвинутые паттерны, связанные с многопоточностью (`сoncurrency`), иначе работа вашего пользовательского интерфейса (`U`I) начнет сильно замедляться и даже может привести к полной его «заморозке». Вам нужно убрать ресурсо-затратные задачи с `main thread` (главного потока), который отвечает за выполнение кода, отображающего ваш пользовательский интерфейс (`UI`).

В текущей версии `Swift 3 `и ближайшей` Swift 4` (осень 2017) это можно сделать двумя способами, которые пока не связаны с встроенными языковыми конструкциями `Swift`, начало реализации которых будет только в `[Swift 5][3]` (конец 2018).

Один из них использует `GCD (Grand Central Dispatch)` и ему посвящена [ предыдущая статья][6]. В этой статье мы покажем, как достичь отзывчивости `UI` в `iOS` приложениях с помощью таких абстрактных понятий, как операция` Operation` и очередь операций ` OperationQueue`. Мы также покажем в чем различие этих двух подходов и какой из них в каких ситуациях лучше использовать.

Код для этой статьи можно посмотреть на [Github][7].
[Читать дальше →][8]

[1]: https://habrastorage.org/web/592/ed8/a45/592ed8a459394f11b7e26add358101b0.png
[2]: https://habrastorage.org/web/67d/c94/62c/67dc9462c57f489290054ec4013c3b1d.png
[3]: https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20170807/038645.html?utm_campaign=This%2BWeek%2Bin%2BSwift&utm_medium=web&utm_source=This_Week_in_Swift_141
[4]: https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20170807/038645.html?utm_campaign=This%2BWeek%2Bin%2BSwift&utm_medium=web&utm_source=This_Week_in_Swift_141
[5]: https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20170807/038645.html?utm_campaign=This%2BWeek%2Bin%2BSwift&utm_medium=web&utm_source=This_Week_in_Swift_141
[6]: https://habrahabr.ru/post/320152/
[7]: https://github.com/BestKora/Operation_OperatioQueue
[8]: https://habrahabr.ru/post/335756/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Bitcoin Cash. А был ли форк?
habra.16
habrabot(difrex,1) — All
2017-08-22 11:00:04


![image][1]
Сегодня тема Bitcoin и Blockchain привлекает невероятное количество внимания. К сожалению, новости не позволяют понять весь масштаб происходящего, так как авторы путаются в терминологии и в спешке выпускают неподготовленные статьи. Что опять же уводит волну обсуждения от технической стороны вопроса к вопросу спекуляции на тему курса Bitcoin.

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

[1]: https://habrastorage.org/getpro/habr/post_images/23c/138/2f9/23c1382f96bfa6925a783a4b58f8cdd1.jpg
[2]: https://habrahabr.ru/post/336102/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Борьба с хардкодами при помощи статических анализаторов С#
habra.16
habrabot(difrex,1) — All
2017-08-22 12:30:05


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

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

[>] [Перевод] 0x5f3759df
habra.16
habrabot(difrex,1) — All
2017-08-22 14:30:05


В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для [быстрого вычисления обратного квадратного корня][1].

Вот полная реализация этого алгоритма:
float FastInvSqrt(float x) {
float xhalf = 0.5f * x;
int i = *(int*)&x; // представим биты float в виде целого числа
i = 0x5f3759df - (i >> 1); // какого черта здесь происходит ?
x = *(float*)&i;
x = x*(1.5f-(xhalf*x*x));
return x;
}

Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

![image][2]

Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что [корни уходят намного дальше][3] – к [Ardent Computer][4], где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степей от -1 до 1.

Да, понадобиться немного математики, но школьного курса будет более, чем достаточно.

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

[1]: http://en.wikipedia.org/wiki/Fast_inverse_square_root
[2]: https://habrastorage.org/getpro/habr/post_images/460/bc7/d55/460bc7d55c4920d2de99f2086fdd06b9.png
[3]: http://www.beyond3d.com/content/articles/15/
[4]: http://en.wikipedia.org/wiki/Ardent_Computer
[5]: https://habrahabr.ru/post/336110/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Современные методы исследования безопасности веб-приложений: инструментарий
habra.16
habrabot(difrex,1) — All
2017-08-22 15:00:05


![image][1]

В данной статье я расскажу об инструментарии для тестирования безопасности веб-приложений. Основные этапы и чек-лист работ представлены в [предыдущей статье][2].
[Читать дальше →][3]

[1]: https://habrastorage.org/getpro/habr/post_images/102/ce0/b7f/102ce0b7f3a65c44369f19db501a621b.jpg
[2]: https://habrahabr.ru/company/pentestit/blog/335820/
[3]: https://habrahabr.ru/post/336074/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Plasma-протокол для чайников
habra.16
habrabot(difrex,1) — All
2017-08-22 15:00:05


Разогнаться до миллиарда: возможности и препятствия. Ведущий программист компании BankEx Александр Власов комментирует протокол Plasma, совместной разработки Lightning Network и Виталия Бутерина.

\*\*\*Disclaimer\*\*\* Данное описание является попыткой описать принципы, предложенные авторами, простыми словами. Оно нисколько не отражает сложные последовательности действий и мотиваций игроков, которые должны быть проанализированы специалистами теории игр. Также, на данный момент описание находится в стадии work in progress, имеет значительные ошибки и во многом является не полным.

Несколько дней назад Joseph Poon (основатель Lightning Network) и Виталий Бутерин (основатель криптовалюты Ethereum) представили первый черновик описания протокола [Plasma][1], призванного значительно увеличить пропускную способность блокчейн-сетей, до величин порядка миллиардов операций в секунду, по словам самих авторов.
[Читать дальше →][2]

[1]: https://www.plasma.io
[2]: https://habrahabr.ru/post/336122/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] «Магическая константа» 0x5f3759df
habra.16
habrabot(difrex,1) — All
2017-08-22 18:00:04


В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для [быстрого вычисления обратного квадратного корня][1].

Вот полная реализация этого алгоритма:
float FastInvSqrt(float x) {
float xhalf = 0.5f * x;
int i = *(int*)&x; // представим биты float в виде целого числа
i = 0x5f3759df - (i >> 1); // какого черта здесь происходит ?
x = *(float*)&i;
x = x*(1.5f-(xhalf*x*x));
return x;
}

Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

![image][2]

Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что [корни уходят намного дальше][3] – к [Ardent Computer][4], где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степей от -1 до 1.

Да, понадобиться немного математики, но школьного курса будет более, чем достаточно.

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

[1]: http://en.wikipedia.org/wiki/Fast_inverse_square_root
[2]: https://habrastorage.org/getpro/habr/post_images/460/bc7/d55/460bc7d55c4920d2de99f2086fdd06b9.png
[3]: http://www.beyond3d.com/content/articles/15/
[4]: http://en.wikipedia.org/wiki/Ardent_Computer
[5]: https://habrahabr.ru/post/336110/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Learnopengl. Урок 2.3 — Материалы
habra.16
habrabot(difrex,1) — All
2017-08-22 20:30:05




Пару дней назад я наткнулся на первую статью из этой серии уроков. К сожалению, переведены только начальные уроки, а все самое интересное (SSAO, PBR, тени) только впереди. Этот курс переводили три человека (теперь четыре), и я надеюсь, что кто-то из читателей поможет с переводом остальных частей. К сожалению, я не являюсь профессиональным переводчиком, по этом в тексте могут быть ошибки разного характера. Буду рад, если вы сообщите о них. Приятного чтения!


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

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

[>] [Перевод] Управление памятью в Python
habra.16
habrabot(difrex,1) — All
2017-08-22 21:30:04


![][1]



Одна из главных проблем при написании крупных (относительно) программ на Python — минимизация потребления памяти. Однако управлять памятью здесь легко — если вас вообще это волнует. Память в Python выделяется прозрачно, управление объектами происходит с помощью системы счётчиков ссылок (reference count), и память высвобождается, когда счётчик падает до нуля. В теории всё прекрасно. А на практике вам нужно знать несколько вещей об управлении памятью в Python, чтобы ваши программы эффективно её использовали. Первая вещь, надо хорошо в ней разбираться: размеры основных объектов в Python. И вторая вещь: как устроено управление «под капотом» языка.



Начнём с размеров объектов. В Python есть много примитивных типов данных: целые числа (int), long (версия int с неограниченной точностью), числа с плавающей запятой (они же числа с двойной точностью, double), кортежи (tuple), строковые значения, списки, словари и классы.

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

[1]: https://habrastorage.org/web/d61/005/8cf/d610058cf6094336ba3f4de1d1829f5a.jpg
[2]: https://habrahabr.ru/post/336156/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Создание языка программирования с использованием LLVM. Часть 6: Расширение языка: Операторы, определяемые пользователем
habra.16
habrabot(difrex,1) — All
2017-08-23 08:00:04


Оглавление:
[Часть 1: Введение и лексический анализ][1]
[Часть 2: Реализация парсера и AST][2]
[Часть 3: Генерация кода LLVM IR][3]
[Часть 4: Добавление JIT и поддержки оптимизатора][4]
[Часть 5: Расширение языка: Поток управления][5]
**Часть 6: Расширение языка: Операторы, определяемые пользователем**
Часть 7: Расширение языка: Изменяемые переменные
Часть 8: Компиляция в объектный код
Часть 9: Добавляем отладочную информацию
Часть 10: Заключение и другие вкусности LLVM

![][6]


## Часть 6: Расширение языка: Операторы, определяемые пользователем




### 6\.1. Введение


Добро пожаловать в главу 6 руководства “Создание языка программирования с использованием LLVM”. К данному моменту у нас есть полнофункциональный язык, хотя и минимальный, но, тем не менее, полезный. Но по-прежнему осталась одна проблема. В нашем языке мало полезных операторов (нет, например, деления, логического отрицания, и даже сравнений, за исключением оператора сравнения «меньше»).
[Читать дальше →][7]

[1]: https://habrahabr.ru/post/119850/
[2]: https://habrahabr.ru/post/120005/
[3]: https://habrahabr.ru/post/120424/
[4]: https://habrahabr.ru/post/120516/
[5]: https://habrahabr.ru/post/120881/
[6]: https://habrastorage.org/web/6e5/879/803/6e58798030874db09d00f2c502b3b104.png
[7]: https://habrahabr.ru/post/336080/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Тавтологические тесты
habra.16
habrabot(difrex,1) — All
2017-08-23 12:30:05


![][1]



_Привет! Меня зовут Артём, и большую часть своего рабочего времени я пишу сложные автотесты на Selenium и Cucumber/Calabash. Честно говоря, довольно часто я оказываюсь перед непростым выбором: написать тест, который проверяет конкретную реализацию функциональности (потому что это проще) или тест, который проверяет функциональность (потому что это правильнее, но намного сложнее)? Недавно мне попалась неплохая статья о том, что тесты реализации – это «тавтологические» тесты. И, прочитав её, я уже почти неделю переписываю некоторые тесты в другом ключе. Надеюсь, вас она тоже подтолкнёт к размышлениям._

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

[1]: https://habrastorage.org/web/0bb/484/d1b/0bb484d1b1ba4850a060aad0870c6c54.jpg
[2]: https://habrahabr.ru/post/336194/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Система IEEE Software Taggant: защита от ложных срабатываний антивируса
habra.16
habrabot(difrex,1) — All
2017-08-23 15:00:05


![image][1]

В этом посте я хочу рассказать о системе IEEE Software Taggant, которую разработала рабочая группа IEEE по вредоносным программам в сотрудничестве с ведущими компаниями по информационной безопасности.
В планы команды разработчиков Guardant давно входило добавить поддержку IEEE Software Taggant в протектор Guardant Armor, и вот наконец мы это сделали. Краткий обзор системы и практические выводы перед вами.
[Читать дальше →][2]

[1]: https://habrastorage.org/web/534/785/715/5347857150874b4aa89c7bc99254a989.jpg
[2]: https://habrahabr.ru/post/336138/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Защита сайта от атак с использованием WAF: от сигнатур до искусственного интеллекта
habra.16
habrabot(difrex,1) — All
2017-08-23 15:30:05


![][1]

В статье будет рассмотрены практики защиты уязвимого веб-приложения — от сигнатурного метода до искусственного интеллекта с использованием Web Application Firewall (коммерческая и Opensource версии). В качестве коммерческого решения мы будем использовать Nemesida WAF, в качестве некоммерческого — NAXSI. Статья содержит общую и техническую информацию по работе WAF, а также сравнение методов обнаружения атак, разбор их особенностей и недостатков.


## Детектирование атак


Первая и основная задача любого WAF — максимально точно определить атаку с минимальным количеством ложных срабатываний (false positive). В NAXSI заложен только сигнатурный механизм определения атак (поведенческий анализ находится в начальном состоянии, поэтому мы его считать не будем), в Nemesida WAF — три: сигнатурный, качественный поведенческий анализ и машинное обучение. Говоря о комплексном методе определения атак мы подразумеваем симбиоз этих трех методов. Почему три? Давайте разберемся.


### Сигнатурный метод определения атак


Несмотря на стремительное развитие технологий, большая часть атак выявляется сигнатурным методом, и от того, насколько качественно пишутся сигнатуры, зависит точность работы всех методов, построенных на базе сигнатурного анализа (в том числе машинное обучение). Рассмотрим пример определения атаки на веб-приложение сигнатурным методом:
`index.php?id=-1'+union+select+1,2,3,4,5+--+1`
В данном случае сигнатурой атаки будет вхождение цепочки «union+select».

Пример атаки, которую пропустит NAXSI:
`index.php?id=-1'+Union+Select+1,2,3,4,5+--+1`
[Читать дальше →][2]

[1]: https://habrastorage.org/web/8b9/1e4/3eb/8b91e43eb2ac48c5bba713bb065490a2.png
[2]: https://habrahabr.ru/post/334998/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Академия Veeam — практические классы для начинающих C# разработчиков
habra.16
habrabot(difrex,1) — All
2017-08-23 16:00:04


[![][1]][2]
_Регистрация на курс открыта до 31 августа._

Осенью 2017 года Veeam Software запускает свой первый образовательный проект: курс для разработчиков C#.

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

Мы предлагаем не просто возможность бесплатно пройти обучение — после окончания курса у успешных участников будет реальный шанс устроиться в компанию и стать частью команды Veeam Research & Development.

А теперь ответим на главный вопрос: чем обучение в Академии Veeam может заинтересовать начинающих разработчиков?
[Читать дальше →][3]

[1]: https://habrastorage.org/web/237/4e9/32b/2374e932be1b4cedb0117984f67d440c.png
[2]: http://vee.am/academy
[3]: https://habrahabr.ru/post/336188/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Библиотека python-selvpcclient
habra.16
habrabot(difrex,1) — All
2017-08-23 16:30:05


![][1]

Для удобного взаимодействия с нашим сервисом [Виртуальное приватное облако][2] мы разработали [библиотеку selvpcclient][3]. Она написана на языке Python и покрывает весь API, благодаря чему вы можете управлять проектами, квотами, ресурсами из своего программного кода или консоли.
[Читать дальше →][4]

[1]: https://habrastorage.org/web/d4a/71c/d88/d4a71cd880a24c99bf84fbc5f19da445.png
[2]: https://blog.selectel.ru/novaya-usluga-virtualnoe-privatnoe-oblako
[3]: http://github.com/selectel/python-selvpcclient
[4]: https://habrahabr.ru/post/336066/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Погружение в разработку на Ethereum. Часть 1
habra.16
habrabot(difrex,1) — All
2017-08-23 16:30:05


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

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

[1]: https://habrastorage.org/web/857/db2/c9d/857db2c9d152431984e9f8a41439d757.png
[2]: https://habrahabr.ru/post/336132/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Kaggle Mercedes и кросс-валидация
habra.16
habrabot(difrex,1) — All
2017-08-23 17:30:05


![image][1]



Всем привет, в этом посте я расскажу о том, как мне удалось занять 11 место в [конкурсе от компании Мерседес на kaggle][2], который можно охарактеризовать как лидера по количеству участников и по эпичности shake-up. Здесь можно ознакомиться с [моим решением][3], там же ссылка на github, здесь можно посмотреть [презентацию моего решения в Yandex][4].

В этом посте пойдет речь о том, как студент консерватории попал в data science, стал призером двух подряд kaggle-соревнований, и каким образом методы математической статистики помогают не переобучиться на публичный лидерборд

Начну я с того, что немного расскажу о задаче и о том, почему я взялся ее решать. Должен сказать, что в data science я человек новый. Лет 7 назад я закончил Физический Факультет СПбГУ и с тех пор занимался тем, что получал музыкальное образование. Идея немного размять мозг и вернуться к техническим задачам впервые посетила меня примерно два года назад, на тот момент я уже работал в оркестре Московской Филармонии и учился на 3 курсе в Консерватории. Начал я с того, что вооружившись книгой Страуструпа стал осваивать C++. Далее были конечно же разные онлайн курсы и примерно год назад я стал склоняться к мысли о том, что Data Science — это пожалуй именно то, чем я хотел бы заниматься в IT. Мое “образование” в Data Science — это [курс от Яндекса и Вышки на курсере][5], несколько курсов из [специализации МФТИ на курсере][6] и конечно же постоянное саморазвитие в соревнованиях.
[Читать дальше →][7]

[1]: https://habrastorage.org/web/bb9/601/13f/bb960113f9df43809a317ba7a1b1515d.jpg
[2]: https://www.kaggle.com/c/mercedes-benz-greener-manufacturing
[3]: https://www.kaggle.com/c/mercedes-benz-greener-manufacturing/discussion/36242
[4]: https://youtu.be/HT3QpRp2ewA
[5]: https://www.coursera.org/learn/vvedenie-mashinnoe-obuchenie
[6]: https://www.coursera.org/specializations/machine-learning-data-analysis
[7]: https://habrahabr.ru/post/336168/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [recovery mode] Погружение в разработку на Ethereum. Часть 1
habra.16
habrabot(difrex,1) — All
2017-08-23 18:30:05


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

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

[1]: https://habrastorage.org/web/857/db2/c9d/857db2c9d152431984e9f8a41439d757.png
[2]: https://habrahabr.ru/post/336132/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Из песочницы] Сравнительное нагрузочное тестирование Lua-коннекторов для Trantool из NGINX
habra.16
habrabot(difrex,1) — All
2017-08-23 18:30:05


В последнее время на Хабре появляется достаточно много статей про [Tarantool][1] — базу данных и сервер приложений, который используется в Mail.Ru Group, Avito, Yota в разных интересных проектах. И вот, я подумал – а чем мы хуже? Давайте тоже попробуем.

В силу своей профессиональной деформации буду рассматривать следующий кейс:

* Есть Web-ресурс, доступ к которому мы хотим ограничить;
* Сам ресурс менять нельзя или крайне нежелательно.
Как подступиться к данной задаче?
[Читать дальше →][2]

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

[>] [Из песочницы] Сравнительное нагрузочное тестирование Lua-коннекторов для Tarantool из NGINX
habra.16
habrabot(difrex,1) — All
2017-08-23 19:00:06


В последнее время на Хабре появляется достаточно много статей про [Tarantool][1] — базу данных и сервер приложений, который используется в Mail.Ru Group, Avito, Yota в разных интересных проектах. И вот, я подумал – а чем мы хуже? Давайте тоже попробуем.

В силу своей профессиональной деформации буду рассматривать следующий кейс:

* Есть Web-ресурс, доступ к которому мы хотим ограничить;
* Сам ресурс менять нельзя или крайне нежелательно.
Как подступиться к данной задаче?
[Читать дальше →][2]

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

[>] Машинное обучение: от Ирисов до Телекома
habra.16
habrabot(difrex,1) — All
2017-08-24 06:30:05


![][1]

Мобильные операторы, предоставляя разнообразные сервисы, накапливают огромное количество статистических данных. Я представляю отдел, реализующий [систему управления трафиком абонентов][2], которая в процессе эксплуатации у оператора генерирует сотни гигабайт статистической информации в сутки. Меня заинтересовал вопрос: как в этих Больших Данных (Big Data) выявить максимум полезной информации? Не зря ведь одна из V в определении Big Data — это дополнительный доход.

Я взялся за эту задачу, не являясь специалистом в исследовании данных. Сразу возникла масса вопросов: какие технические средства использовать для анализа? На каком уровне достаточно знать математику, статистику? Какие методы машинного обучения надо знать и насколько глубоко? А может лучше для начала освоить специализированный язык для исследования данных R или Python?

Как показал мой опыт, для начального уровня исследования данных нужно совсем не много. Но мне для быстрого погружения не хватало простого примера, на котором наглядно был бы показан полный алгоритм исследования данных. В этой статье на примере [Ирисов Фишера][3] мы пройдем весь путь начального обучения, а далее применим полученное понимание к реальным данным оператора связи. Читатели, уже знакомые с исследованием данных, могут сразу переходить к главе, посвященной Телекому.
[Читать дальше →][4]

[1]: https://habrastorage.org/web/506/82b/111/50682b11102b439486894fa7bfd3c37a.jpg
[2]: http://sushkov.ru/articles/Article_pcrf.htm
[3]: https://ru.wikipedia.org/wiki/%D0%98%D1%80%D0%B8%D1%81%D1%8B_%D0%A4%D0%B8%D1%88%D0%B5%D1%80%D0%B0
[4]: https://habrahabr.ru/post/334738/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Что умеет планировщик заданий в Postgres Pro
habra.16
habrabot(difrex,1) — All
2017-08-24 06:30:05


Планировщик заданий (scheduler) не во все времена считался обязательным инструментом в мире баз данных. Все зависело от назначения и происхождения СУБД. Классические коммерческие СУБД (Oracle, DB2, MS SQL) представить себе без планировщика решительно невозможно. С другой стороны, трудно вообразить потенциального пользователя MongoDB, который откажется от выбора этой модной NoSQL-СУБД из-за отсутствия планировщика. (Кстати, термин «планировщик заданий» в русском контексте СУБД употребляют, чтобы отличить его от планировщика запросов — query planner, мы же для краткости будем звать его здесь планировщиком).

PostgreSQL, будучи Open Source и впитав традиции сообщества с образом жизни DIY («сделай сам»), в наше время регулярно претендует на место как минимум заместителя коммерческой СУБД. Из этого автоматически следует, что PostgreSQL просто обязана иметь планировщик, и что этот планировщик должен быть удобен для администратора базы и для пользователя. [Читать дальше →][1]

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

[>] Исследование: хакеры все чаще сдают трояны в аренду
habra.16
habrabot(difrex,1) — All
2017-08-24 07:00:05


[![][1]][2]

_География кибератак во II квартале 2017 года_

Эксперты Positive Technologies отмечают, что во II квартале 2017 года продолжают набирать популярность сервисы «вымогатели как услуга» по сдаче троянов в аренду. США и Россия по-прежнему наиболее частые жертвы кибератак, однако во II квартале 2017 года больше четверти атак (28%) были масштабными и затронули одновременно десятки стран и сотни (в отдельных случаях тысячи) компаний. [Читать дальше →][3]

[1]: https://habrastorage.org/web/ca4/3f9/f26/ca43f9f2608e476dbfe2f94627dac051.png
[2]: https://habrahabr.ru/company/pt/blog/336216/
[3]: https://habrahabr.ru/post/336216/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Коды Рида-Соломона. Часть 1 — теория простым языком
habra.16
habrabot(difrex,1) — All
2017-08-24 10:00:04


Добрый день! Меня зовут Максим, в YADRO, кроме всего прочего, я занимаюсь разработкой подсистемы, отвечающей за надежное хранение данных. Готовлю небольшой цикл статей про коды Рида-Соломона — теоретическую основу, практическую реализацию, применяемые на практике программные и аппаратные оптимизации. На Хабре и в остальной сети есть хорошие статьи по вопросам этой области — но по ним сложно разобраться, если ты новичок в теме. В этой статье я попытаюсь дать понятное введение в коды Рида-Соломона, а в следующих выпусках напишу, как все это запрограммировать.

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

[1]: https://habrastorage.org/web/4b3/610/a8e/4b3610a8e6b4496cb90201f014cb27b7.jpg
[2]: https://habrahabr.ru/company/yadro/blog/336286/
[3]: https://habrahabr.ru/post/336286/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Разработка менеджера тем в UWP-приложении
habra.16
habrabot(difrex,1) — All
2017-08-24 12:30:05


Приветствую, **%username%**!

Меня зовут Роман Гладких, я студент третьего курса Сибирского Государственного Университета Телекоммуникаций и Информатики по профилю Супервычисления. Так же являюсь студентом-партнером Майкрософт. Мое давнее хобби – это разработка приложений для Windows Phone и UWP на языке C#.

По умолчанию приложения UWP поддерживают две темы: темную (Dark) и светлую (Light). Так же имеется еще высококонтрастная тема (HighContrast). Такого набора обычно хватает для любого приложения, однако, что делать, если требуется быстро менять тему приложения на лету, причем ограничиваться Light и Dark нет желания?

В данном материале я расскажу, как реализовать свой менеджер тем. Материал ориентирован на новичков, однако и профессионалам может быть интересен. Милости просим под кат! [Читать дальше →][1]

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

[>] Trafaret как парсер. Реализация JSON Schema
habra.16
habrabot(difrex,1) — All
2017-08-24 13:30:05


# Intro



Есть такой шаг в развитии языка, когда его компилятор написан на нем же.
Чтобы доказать крутость библиотеки trafaret я тоже решил сделать что-то такое же
рекурсивненькое, где надо идти глубже.



Напишем на трафарете парсер Json Schema, который на выходе вернет
готовый трафарет для проверки документов в соответствии с данным описанием.



То есть некий объект типа Trafaret, если ему скормить корректный документ json schema
на выходе вернет объект типа Trafaret, которому можно кормить документы
соответствующие описанию.



Как вообще такое сделать библиотекой валидации? Ну библиотекой валидации никак, а вот универсальным трансформером запросто. Trafaret это парсер данных, точнее комбинаторный парсер. Только те парсеры про которые вы наслышаны такие как parsec и funcparserlib парсят строки, а Trafaret парсит все что под руку подвернется, и на что у автора талантов хватит закодировать.



Json Schema описывается как водится пачкой документов из которых самый близкий народу пожалуй этот —
Тут описание множества ключевых слов с помощью которых вы можете описать критерии корректности документа, а вот замечательный и зубодробительный в реализации $ref всего в одном месте вскользь.

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

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

[>] [Перевод] Короутины в Kotlin (гайд)
habra.16
habrabot(difrex,1) — All
2017-08-24 15:00:03


![][1]
> Simon Wirtz в своем [блоге][2] публикует достаточно много интересных постов о Kotlin.
> Представляю вашему вниманию перевод одного из них.[Читать дальше →][3]

[1]: https://habrastorage.org/web/f0c/0fe/425/f0c0fe42537a4190ab20e148cc34ed8c.png
[2]: https://blog.simon-wirtz.de/about-me/
[3]: https://habrahabr.ru/post/336228/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Корпоративные лаборатории Pentestit: практические навыки по информационной безопасности
habra.16
habrabot(difrex,1) — All
2017-08-24 15:00:03


![image][1]
 
Не для кого не секрет, что многие курсы или учебные материалы мало применимы в практической жизни и довольно быстро улетучиваются из головы обучившихся. Обычно это обусловлено большим объемом теоретического материала (зачастую устаревшего) со слабым или отсутствующим практическим закреплением. Также это может быть связано с разнородностью материала, невозможностью применить полученные знания при решении конкретных задач обеспечения информационной безопасности.

В этой статье я рассмотрю примеры навыков, полученных на «Корпоративных лабораториях», для решения задач по обеспечению безопасности инфраструктуры.
[Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/f17/d2d/12a/f17d2d12adb6533dbd196ad02ddf9410.png
[2]: https://habrahabr.ru/post/336164/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] Приглашаем на Moscow Data Science Meetup 1 сентября
habra.16
habrabot(difrex,1) — All
2017-08-24 15:30:05


![image][1]

1 сентября мы рады пригласить вас на очередную встречу сообщества Moscow Data Science, где вы сможете обменяться практическим опытом решения задач анализа данных и пообщаться с единомышленниками. Для одного дня программа очень насыщенная, будет две секции докладов, а среди выступающих два докладчика из ближнего зарубежья. Также гостей митапа ждёт экскурсия по офису Mail.Ru Group и розыгрыш сувениров. Присоединяйтесь! Программа встречи под катом.
[Читать дальше →][2]

[1]: https://habrastorage.org/web/6bf/55e/285/6bf55e2858ce4225b50b96a9eaca67e1.jpg
[2]: https://habrahabr.ru/post/336128/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

[>] [Перевод] Корутины в Kotlin (гайд)
habra.16
habrabot(difrex,1) — All
2017-08-24 17:00:05


![][1]
> Simon Wirtz в своем [блоге][2] публикует достаточно много интересных постов о Kotlin.
> Представляю вашему вниманию перевод одного из них.[Читать дальше →][3]

[1]: https://habrastorage.org/web/f0c/0fe/425/f0c0fe42537a4190ab20e148cc34ed8c.png
[2]: https://blog.simon-wirtz.de/about-me/
[3]: https://habrahabr.ru/post/336228/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut

Pages: 1 ... 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 ... 133