Как стать автором
Поиск
Написать публикацию
Обновить
0
0

Пользователь

Отправить сообщение

Основы TCP/IP для будущих дилетантов

Время на прочтение11 мин
Количество просмотров486K
Предположим, что вы плохо владеете сетевыми технологиями, и даже не знаете элементарных основ. Но вам поставили задачу: в быстрые сроки построить информационную сеть на небольшом предприятии. У вас нет ни времени, ни желания изучать толстые талмуды по проектированию сетей, инструкции по использованию сетевого оборудования и вникать в сетевую безопасность. И, главное, в дальнейшем у вас нет никакого желания становиться профессионалом в этой области. Тогда эта статья для вас.

Читать дальше →

Android Tips and Tricks

Время на прочтение13 мин
Количество просмотров47K
В данном материале можно будет увидеть различные инструменты и подсказки, которые здорово облегчают жизнь Android разработчикам. Большая часть собрана напрямую от знакомых разработчиков и содержит вещи, которые должен знать каждый. Дополнения и расширения приветствуются, и если вы знаете о каком-то крутом механизме, который не был упомянут в статье, не поленитесь перейти в оригинал и открыть pull request.
Читать дальше →

Bitcoin in a nutshell — Cryptography

Время на прочтение12 мин
Количество просмотров124K
Одна из причин, почему Bitcoin продолжает привлекать столько внимания — это его исключительная «математичность». Сатоши Накамото удалось создать систему, которая способна функционировать при полном отсутствии доверия между ее участниками. Все взаимодействия основаны на строгой математике, никакого человеческого фактора — вот в чем была революционность идеи, а не в одноранговой сети, как многие думают. Поэтому первую главу я решил посвятить именно математическим основам Bitcoin.

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

intro
Читать дальше →

RabbitMQ Spring tutorial

Время на прочтение21 мин
Количество просмотров112K
На сайте rabbitmq.com уже есть подробные примеры и клиент для java. Однако если в проекте уже используется спринг, то намного удобнее использовать библиотеку Spring AMQP. Эта статья содержит реализацию всех шести официальных примеров работы с RabbitMQ.
Читать дальше →

Как я победил в конкурсе BigData от Beeline

Время на прочтение7 мин
Количество просмотров88K
image

Все уже много раз слышали про конкурс по машинному обучению от Билайн и даже читали статьи (раз, два). Теперь конкурс закончился, и так вышло, что первое место досталось мне. И хотя от предыдущих участников меня и отделяли всего сотые доли процента, я все же хотел бы рассказать, что же такого особенного сделал. На самом деле — ничего невероятного.
Читать дальше →

Celery: лучшие практики

Время на прочтение5 мин
Количество просмотров151K
Если вы работаете с Django, то на некотором этапе разработке вам может понадобиться фоновая обработка долго выполняющихся задач. Возможно, что для такого рода задач вы используете какой-либо инструмент для управления очередями задач. Celery — один из самых популярных проектов для решения подобных задач в мире python и Django на данный момент, но есть и другие проекты для этой цели.

Пока я работал над некоторыми проектами, использующими Celery для управления очередями задач, выявились некоторые лучшие практики, которые я решил задокументировать. Впрочем это громкие слова для того, что я думаю о правильном подходе к решению подобных задач, а также о некоторых недостаточно используемых возможностях, которые предлагает сообщество проекта Celery.
Читать дальше →

Введение в RxJava: Почему Rx?

Время на прочтение3 мин
Количество просмотров197K

Этот цикл статей предназначен для знакомства начинающего реактивного программиста с мощью библиотеки RxJava ˜— реализации принципов реактивного программирования для JVM. Это перевод обширного туториала по RxJava Крисса Фруссиоса, основанного на IntroToRx для Rx.NET.


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


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

Читать дальше →

Как писать тестируемый код

Время на прочтение17 мин
Количество просмотров88K
image


Если вы программист (или чего хуже архитектор), то можете ли вы ответить на такой простой вопрос: как писать НЕ тестируемый код? Призадумались? Если с трудом можете назвать хотя бы 3 способа добиться не тестируемого кода, то статья для вас.

Многие скажут: а зачем мне знать, как писать не тестируемый код, плохому хочешь меня научить? Отвечаю: если знать типичные паттерны не тестируемого кода, то, если они есть, можно легко увидеть их в своем проекте. А, как известно, признание проблемы — уже половина пути к лечению. Также в статье дается ответ, как собственно осуществляется такое лечение. Прошу под кат.
Читать дальше →

40 ключевых концепций информационных технологий доступно и понятно

Время на прочтение16 мин
Количество просмотров161K
Представляю вашему вниманию перевод очень ёмкой, и в то же время достаточно краткой (для такого масштаба проблемы) статьи Карла Чео. Я решил, что очень хочу сделать её перевод практически сразу, как только начал читать, и очень рад, что в итоге сделал это.
Для того, чтобы сделать обучение более веселым и интересным, представляю вам перечень важных теорий и концепций информатики, объяснённых с помощью аналогий с минимальным количеством технических деталей. Это будет похоже на очень быстрый курс информатики для всех с целью просто дать вам общее представление об основных концепциях.

Важные замечания:
  • Пункты с неуказанным источником написаны мной самостоятельно. Поправьте меня, если вы заметите какие-то неточности. Предложите лучшую аналогию, если это возможно.
  • Заголовки ссылаются на соответствующие им статьи в Wikipedia. Пожалуйста, читайте эти статьи для более серьезных и детальных объяснений.
  • Аналогии — отличный способ объяснить материал, но они не идеальны. Если вы хотите по-настоящему понять перечисленные концепции, вам следует начать с фундаментальных азов и рассуждать, исходя из них.

Также зацените эту инфографику (вариант на русском), если вы просто начинающий программист.
Читать дальше →

Бинарные деревья поиска и рекурсия – это просто

Время на прочтение8 мин
Количество просмотров649K
Существует множество книг и статей по данной теме. В этой статье я попробую понятно рассказать самое основное.

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

image
Рис. 1 Бинарное дерево
Читать дальше →

Deep Dream: как обучить нейронную сеть мечтать не только о собаках

Время на прочтение5 мин
Количество просмотров33K
В июле всех порадовала статья про deep dream или инцепционизм от Google. В статье подробно рассказывалось и показывалось как нейронные сети рисуют картины и зачем их заставили это делать. Вот эта статья на хабре.

Теперь все, у кого настроена среда caffe, кому скучно и у кого есть свободное время могут сделать собственные фотки в стиле инцепционизм. Одна проблема — почти на всех фотках получаются собаки. Как же избавится от элементов с псами в изображениях deep dream и обучить свою нейронную сеть пользоваться другими картинками?

image
Читать дальше →

Работа с текстовыми данными в scikit-learn (перевод документации) — часть 1

Время на прочтение6 мин
Количество просмотров57K
Данная статья представляет перевод главы, обучающей работе с текстовыми данными, из официальной документации scikit-learn.

Цель этой главы — это исследование некоторых из самых важных инструментов в scikit-learn на одной частной задаче: анализ коллекции текстовых документов (новостные статьи) на 20 различных тематик.
В этой главе мы рассмотрим как:
  • загрузить содержимое файла и категории
  • выделить вектора признаков, подходящих для машинного обучения
  • обучить одномерную модель выполнять категоризацию
  • использовать стратегию grid search, чтобы найти наилучшую конфигурацию для извлечения признаков и для классификатора

Читать дальше

Пример решения задачи кредитного скоринга c помощью связки python+pandas+scikit-learn

Время на прочтение12 мин
Количество просмотров84K

Введение


Добрый день, уважаемые читатели.
Недавно, бродя по просторам глобальной паутины, я наткнулся на турнир, который проводился банком ТКС в начале этого года. Ознакомившись с заданиями, я решил проверить свои навыки в анализе данных на них.
Начать проверку я решил с задачи о скоринге (Задание №3). Для ее решения я, как всегда, использовал Python с аналитическими модулями pandas и scikit-learn.
Читать дальше →

Реализация поискового движка с ранжированием на Python (Часть 2)

Время на прочтение4 мин
Количество просмотров13K
В предыдущей части мы построили индекс, но мы всё ещё не можем выполнять запросы по нему. Про это я и расскажу в этой статье.

Выполнение запросов к индексу


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

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

Примечание: во всех примерах кода ниже, каждая функция будет использовать в переменную с именем ‘invertedIndex’, которая генерируется в предыдущей части статьи. Для полного понимания происходящего ниже вы можете ознакомиться с финальным результатом на GitHub.

Мы собираемся реализовать стандартные запросы в первую очередь. Простой способ реализовать их — разбить запрос на слова (маркеры, как описано выше), получить список за каждое слово, документы в которых они встречаются, а затем объединить все эти списки. Вот как мы выполним запрос для одного слова:
Читать дальше →

Реализация поискового движка с ранжированием на Python (Часть 1)

Время на прочтение5 мин
Количество просмотров35K
Просматривая ленту новостей я наткнулся на рекомендацию от Типичного Программиста на статью «Implementing a Search Engine with Ranking in Python», написанную Aakash Japi. Она меня заинтересовала, подобного материала в рунете не очень много, и я решил перевести её. Так как она довольно большая, я разделю её на 2-3 части. На этом я заканчиваю своё вступление и перехожу к переводу.

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

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

Это то, что я буду описывать в этой статье: как сделать поисковую систему для локальных текстовых файлов, для которых можно обрабатывать стандартные запросы (по крайней мере, одно из слов в запросе есть в документе) и фразу целиком (появляется вся фраза в тексте) и может ранжировать с использованием базовой TF-IDF схемы.

Есть два основный этапа в разработке поискового движка: построение индекса, а затем, используя индекс, ответить на запрос. А затем мы можем добавить результат рейтинга (TF-IDF, PageRank и т.д.), классификацию запрос/документ, и, возможно, немного машинного обучения, чтобы отслеживать последние запросы пользователя и на основе этого выбрать результаты для повышения производительности поисковой системы.

Итак, без дальнейших церемоний, давайте начнем!
Читать дальше →

Формирование музыкальных предпочтений у нейронной сети — эксперимент по созданию умного плеера

Время на прочтение7 мин
Количество просмотров37K
Данная статья посвящена работе по исследованию возможности обучить простейшую (относительно) нейронную сеть «слушать» музыку и отличать «хорошую» по мнению слушателя от «плохой».

Цель


Научить нейронную сеть отличать «плохую» музыку от «хорошей» или показать, что нейронная сеть на это неспособна (данная конкретная ее реализация).

image
Читать дальше →

Структуры данных. Неформальный гайд

Время на прочтение6 мин
Количество просмотров170K


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

Магия тензорной алгебры: Часть 6 — Кинематика свободного твердого тела. Природа угловой скорости

Время на прочтение8 мин
Количество просмотров30K

Содержание


  1. Что такое тензор и для чего он нужен?
  2. Векторные и тензорные операции. Ранги тензоров
  3. Криволинейные координаты
  4. Динамика точки в тензорном изложении
  5. Действия над тензорами и некоторые другие теоретические вопросы
  6. Кинематика свободного твердого тела. Природа угловой скорости
  7. Конечный поворот твердого тела. Свойства тензора поворота и способ его вычисления
  8. О свертках тензора Леви-Чивиты
  9. Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
  10. Получаем вектор угловой скорости. Работаем над недочетами
  11. Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
  12. Параметры Родрига-Гамильтона в кинематике твердого тела
  13. СКА Maxima в задачах преобразования тензорных выражений. Угловые скорость и ускорения в параметрах Родрига-Гамильтона
  14. Нестандартное введение в динамику твердого тела
  15. Движение несвободного твердого тела
  16. Свойства тензора инерции твердого тела
  17. Зарисовка о гайке Джанибекова
  18. Математическое моделирование эффекта Джанибекова


Введение


Что такое угловая скорость? Скалярная или векторная величина? На самом деле это не праздный вопрос.

Читая лекции по теоретической механике в университете, я, следуя традиционной методике изложения курса кинематики, вводил понятие угловой скорости в теме «Скорость точки тела при вращательном движении». И там угловая скорость впервые появляется как скалярная величина, со следующим определением.
Угловая скорость твердого тела — это первая производная от угла поворота тела по времени
\omega = \frac{d \varphi}{dt}

А вот потом, при рассмотрении каноничной формулы Эйлера для скорости точки тела при вращении

\vec{v}_M = \vec{\omega} \times \vec{r}

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

Ещё одно частное определение, которое, во-первых, утверждает неподвижность оси вращения, во-вторых навязывает рассмотрение лишь правой системы координат. И наконец термин «псевдовектор» обычно объясняется студентам так: «Посмотрите, ведь мы показали, что омега — скалярная величина. А вектор мы вводим для того, чтобы выписать формулу Эйлера».

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

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

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

Думаю для затравки вполне достаточно, а поэтому — начнем!
Читать дальше →

Искусство командной строки

Время на прочтение15 мин
Количество просмотров251K


Вот уже как неделю английская версия the art of command line висит в секции trending на Github. Для себя я нашел этот материал невероятно полезным и решил помочь сообществу его переводом на русский язык. В переводе наверняка есть несколько недоработок, поэтому милости прошу слать пулл-реквесты мне сюда или автору оригинальной работы Joshua Levy вот сюда. (Если PR отправите мне, то я после того, как пересмотрю изменения отправлю их в мастер-бранч Джоша). Отдельное спасибо jtraub за помощь и исправление опечаток.

Enjoy!

Нейроэволюционный алгоритм учится играть в Mario

Время на прочтение3 мин
Количество просмотров19K
SethBling известен своим каналом, на котором он размещает различные советы и изобретения для мира Minecraft. Часто там появляется иной контент. К примеру, в список интересов влогера входит Mario. Именно SethBling первым прошёл Super Mario World на консоли с помощью бага с редактированием памяти путём перемещения предметов в игре. В его последних видео и стримах всё та же игра. Но играет уже не человек, а нейроэволюционный алгоритм, который SethBling сам и написал.
Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность