Как стать автором
Обновить
12
0
Дмитрий Солдатенко @sl4mmer

Go dev

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

Заблуждения о Вселенной [Озвучка Vert Dider]

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


Вселенная — очень сложный объект для изучения, полный загадок и противоречий. Сегодня мы узнаем о том, как она расширяется, а все её частицы постоянно движутся со скоростью света, хоть мы этого и не видим.
Читать дальше →
Всего голосов 18: ↑15 и ↓3+12
Комментарии94

OpenSource.Mail.Ru: открытые проекты наших сотрудников

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

Одним из главных принципов, лежащих в основе движения за открытый исходный код, — Open Source, — является свобода распространения информации. Жизнестойкость этой идеи подтверждают примеры многих успешных проектов, развиваемых свободным сообществом программистов со всего мира. Наверное, кого-то это удивит, но мы тоже активно развиваем множество opensource-проектов. И недавно мы обнаружили, информация об этих проектах разбросана по сети, и разработчики одних продуктов могут совершенно не знать о других, которые могли бы оказаться для них полезными. Так и родилась идея создать информационный сайт OpenSource.Mail.Ru.
Читать дальше →
Всего голосов 66: ↑61 и ↓5+56
Комментарии40

Топ 10 гикнутых подарков до 2016 рублей от iCover

Время на прочтение5 мин
Количество просмотров8.6K
Привет, Гиктаймс. Сегодня будет немного внутренней кухни магазина инноваций iCover. Если точнее, то мы выбрали самые продаваемые товары года и ограничили их ценой в 2016 рублей. Список получился достаточно интересный, а чтобы он был ещё интереснее — мы добавили информации о пользователях, покупающих эти устройства, получив список самых желанных подарков для родных, близких, коллег и друзей. Смотрим.

image
Читать дальше →
Всего голосов 13: ↑5 и ↓8-3
Комментарии7

Tarantool как сервер приложений

Время на прочтение8 мин
Количество просмотров29K
Привет, %хабраюзер%. Команда Тарантула продолжает делиться инсайтами и экспертизой для эффективной работы с данными в высоконагруженных проектах. Сегодня мы попытаемся разобраться, почему же Tarantool — это «два в одном»: не только база данных, но и сервер приложений. Наверное, некоторые слышали о Тарантуле как о сверхбыстром персистентном in-memory хранилище с поддержкой репликации и хранимок на Lua. Представьте, что мы берём кусочки Redis, добавляем замороженный Node.js, сверху заправляем Go, после чего варим, медленно перемешивая, в течение пяти минут после закипания. Казалось бы, при чём здесь Application Server?


Читать дальше →
Всего голосов 61: ↑59 и ↓2+57
Комментарии59

Доступ к таблицам из Си расширений для Postgres

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

Всем привет!


В этот раз я расскажу не про использование Python или очередной трюк с CSS/HTML и, увы, не про то, как я 5 лет портировал Вангеры, а про один важный аспект написания расширений для замечательной СУБД PostgresSQL.

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

К таблицам из Си можно получить доступ через хорошо описанный но медленный SPI (Server Programming Interface), также есть очень сложный способ, через буферы, а я расскажу про компромиссный вариант. Под катом я постарался дать примеры кода с подробными пояснениями.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии3

Реализация приложения – device owner-а под Android

Время на прочтение7 мин
Количество просмотров17K
Эта статья представляет собой инструкцию по написанию и установке на целевое устройство приложения – device owner-а. Меня побудило написать эту статью то, что когда я сам принялся изучать этот вопрос, оказалось, что хорошей официальной документации с примерами нет, а информацию пришлось собирать с помощью Гугла.

В ОС Android, начиная с версии 5.0 Lollipop (API 21) появилась замечательная возможность управлять устройством программно, находясь в режиме device owner. Например, стало возможно производить «тихую» установку/удаление приложений, «скрывать» приложения (причем скрываются они качественно, т.е. исчезают из списка приложений в настройках, исчезают из лаунчера и списка последних использованных приложений), и делать многое другое. Это очень полезные возможности для реализации MDM. Обзор всех возможностей, которые предоставляются device owner-у выходят за рамки статьи, о них можно почитать здесь и здесь.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии5

Социальная инженерия из первых рук

Время на прочтение1 мин
Количество просмотров23K
Кевину Митнику, родоначальнику социальной инженерии, принадлежат золотые слова:
Социальный инженер задумал заполучить проект (исходники) Вашего нового продукта за 2 месяца до релиза.
Что остановит его?
Ваш файервол? Нет.
Мощная система идентификации? Нет.
Система обнаружения вторжений? Нет.
Шифрование данных? Нет.
Ограничение доступа к номерам дозвона модемов? Нет.
Кодовые имена серверов, которые затрудняют определение местонахождения проекта искомого продукта? Нет.
Смысл здесь в том, что никакая технология в мире не сможет противостоять атаке социального инженера.



Однако частично обезопасить себя всё же можно – изучив, чем движим социальный инженер, как он мыслит и действует, какими приёмами пользуется. Зная это, можно уберечь себя от атак социальных инженеров. Подробно об этом можно почитать в книге про Кевина Митника «Искусство обмана». Однако поскольку книги читать мало кто любит, можно посмотреть фильм «Взлом», где хорошо проиллюстрированы приёмы, которыми пользовался Кевин. Ниже представлены ключевые видеофрагменты из этого фильма. Их вполне можно использовать при проведении корпоративных тренингов по информационной безопасности.
Читать дальше →
Всего голосов 22: ↑14 и ↓8+6
Комментарии6

Технокнига, часть 3: литература по проектированию высоконагруженных систем, по безопасности веб-приложений, по обеспечению качества разработки и по мобильной разработке

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


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

Предыдущие части: первая, вторая.
Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии3

Байес и задача про Морфеуса

Время на прочтение4 мин
Количество просмотров21K
Больше года назад, 17 апреля 2014, на Хабре появилась эта статья (ко дню смерти Томаса Байеса). Там было много всего интересного, но, как обычно, большая часть обсуждений в комментариях свелась к задачке, которая была лишь эпиграфом. Тогда я проглядел статью по диагонали, а задачу и вовсе проигнорировал.

А зря…
Читать дальше →
Всего голосов 28: ↑22 и ↓6+16
Комментарии47

Cartesius — метод хранения и извлечения древовидных структур в реляционных базах данных или SQL деревья без червей и тараканов

Время на прочтение9 мин
Количество просмотров9.7K
Лучше совсем не помышлять об отыскании каких бы то ни было истин, чем делать это без всякого метода. (Рене Декарт)

image

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

Существует много методов от самых примитивных до очень сложных и возможно слишком сложных. Мы не будем описывать их в этой статье. При желании вы можете найти множество прекрасных обзорных статей в интернете “Google forever”.

Мы представляем на суд разработчиков метод Cartesius который основан на представлении иерархической структуры на координатной плоскости где каждый узел имеет свою координату в виде двух параметров ord и dep.
Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии23

Как узнать, наша жизнь уже под колпаком ИИ или ещё нет? (паранойи пост)

Время на прочтение7 мин
Количество просмотров20K
У вас бывает так, что думаются странные мысли? Вот прокрастинируешь так, никого не трогаешь, мысль вяло и бесконтрольно течёт, а потом БАЦ, и приходи в голову…



Так вот и у меня, мучает давно одна мысль и надо ей поделиться. Нет, она не совсем it-шная, но в то же время околоайтишная и как-то связана со всеми этими вашими «интернетами», искусственным интеллектом и прочим.
Читать дальше →
Всего голосов 46: ↑38 и ↓8+30
Комментарии96

Глобалы — мечи-кладенцы для хранения данных. Деревья. Часть 1

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

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

Глобалы — это специальный способ хранения и обработки данных, совершенно другой, чем таблицы в SQL. Они появились в 1966 году в языке M(UMPS) (эволюционное развитие — Caché ObjectScript, далее COS) в медицинских БД и до сих пор там активно используются, а также проникли в некоторые другие области, где требуется надёжность и высокая производительность: финансы, трейдинг и т.д.

Глобалы в современных СУБД поддерживают транзакции, журналирование, репликацию, партиционирование. Т.е. на них можно строить современные, надёжные, распределённые и быстрые системы.

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

Глобалы как способ хранения данных можно использовать во многих современных языках программирования, как высокоуровневых, так и низкоуровневых. Поэтому в этой статье я сфокусируюсь именно на глобалах, а не на языке, из которого они когда-то вышли.
Читать дальше →
Всего голосов 39: ↑28 и ↓11+17
Комментарии336

Тонкости благополучного git-merge

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

Вступительное слово


Считается, что «киллер фичей» СКВ Git является легковесное ветвление. Я ощутил это преимущество в полной мере, ведь я перешел на Git с SVN, где ветвление было достаточно дорогим процессом: для создания ветки нужно было скопировать весь рабочий каталог. В Git все проще: создание ветки подразумевает лишь создание нового указателя на определенный коммит в папке .git/refs/heads, который является файлом с 40 байтами текста, хешем коммита.

Основными командами пользовательского уровня для ветвления в Git являются git-branch, git-checkout, git-rebase, git-log и, конечно же, git-merge. Для себя я считаю git-merge зоной наибольшей ответственности, точкой огромной магической энергии и больших возможностей. Но это достаточно сложная команда, и даже достаточно длительный опыт работы с Git порой бывает недостаточным для освоение всех ее тонкостей и умения применить ее наиболее эффективно в какой-либо нестандартной ситуации.

Попробуем же разобраться в тонкостях git-merge и приручить эту великую магию.

Здесь я хочу рассмотреть только случай благополучного слияния, под которым я понимаю слияние без конфликтов. Обработка и разрешение конфликтов — отдельная интересная тема, достойная отдельной статьи. Я очень рекомендую так же ознакомиться со статьей Внутреннее устройство Git: хранение данных и merge, содержащей много важной информации, на которую я опираюсь.
Читать дальше →
Всего голосов 76: ↑75 и ↓1+74
Комментарии47

PostgreSQL 9.5: что нового? Часть 1. INSERT… ON CONFLICT DO NOTHING/UPDATE и ROW LEVEL SECURITY

Время на прочтение9 мин
Количество просмотров112K
Часть 2. TABLESAMPLE
Часть 3. GROUPING SETS, CUBE, ROLLUP
В 4 квартале 2015 года ожидается релиз PostgreSQL 9.5. Как всегда, новая версия кроме новых багов приносит новые фичи и «плюшки». В данной статье будут рассмотрены две из них, а именно INSERT… ON CONFLICT DO NOTHING/UPDATE и Row-level security. Уже вышла вторая альфа-версия, поэтому самые нетерпеливые могут её установить и попробовать новый функционал.
Скачать можно тут
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии16

Вы неправильно пишете животных

Время на прочтение5 мин
Количество просмотров382K
Животные – это платформы с очень ограниченной памятью, вычислительными способностями и возможностями модификаций. Разработчикам энимал-сцены приходится выдавать практически гениальные низкоуровневые алгоритмы. Правда, большое количество хардкода вызывает характерные проблемы с отсутствием проверки в экзотических условиях. Та же фильтрация входных данных делается очень и очень криво.


Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

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

Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
Читать дальше →
Всего голосов 442: ↑438 и ↓4+434
Комментарии352

Введение в машинное обучение с помощью scikit-learn (перевод документации)

Время на прочтение6 мин
Количество просмотров93K
Данная статья представляет собой перевод введения в машинное обучение, представленное на официальном сайте scikit-learn.

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

Машинное обучение: постановка вопроса


В общем, задача машинного обучения сводится к получению набора выборок данных и, в последствии, к попыткам предсказать свойства неизвестных данных. Если каждый набор данных — это не одиночное число, а например, многомерная сущность (multi-dimensional entry или multivariate data), то он должен иметь несколько признаков или фич.

Машинное обчение можно разделить на несколько больших категорий:
  • обучение с учителем (или управляемое обучение). Здесь данные представлены вместе с дополнительными признаками, которые мы хотим предсказать. (Нажмите сюда, чтобы перейти к странице Scikit-Learn обучение с учителем). Это может быть любая из следующих задач:

  1. классификация: выборки данных принадлежат к двум или более классам и мы хотим научиться на уже размеченных данных предсказывать класс неразмеченной выборки. Примером задачи классификации может стать распознавание рукописных чисел, цель которого — присвоить каждому входному набору данных одну из конечного числа дискретных категорий. Другой способ понимания классификации — это понимание ее в качестве дискретной (как противоположность непрерывной) формы управляемого обучения, где у нас есть ограниченное количество категорий, предоставленных для N выборок; и мы пытаемся их пометить правильной категорией или классом.
  2. регрессионный анализ: если желаемый выходной результат состоит из одного или более непрерывных переменных, тогда мы сталкиваемся с регрессионным анализом. Примером решения такой задачи может служить предсказание длинны лосося как результата функции от его возраста и веса.


  • обучение без учителя (или самообучение). В данном случае обучающая выборка состоит из набора входных данных Х без каких-либо соответствующих им значений. Целью подобных задач может быть определение групп схожих элементов внутри данных. Это называется кластеризацией или кластерным анализом. Также задачей может быть установление распределения данных внутри пространства входов, называемое густотой ожидания (density estimation). Или это может быть выделение данных из высоко размерного пространства в двумерное или трехмерное с целью визуализации данных. (Нажмите сюда, чтобы перейти к странице Scikit-Learn обучение без учителя).

Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии0

Sell Side Platform

Время на прочтение4 мин
Количество просмотров6.3K
Добрый день, дорогой читатель! Продолжая цикл статей о реализации стека RTB нашей компанией, предлагаю вам ознакомиться с реализацией нашей SSP — VOX Ad Exchange.


Читать дальше →
Всего голосов 10: ↑7 и ↓3+4
Комментарии6

Анализируем большие объемы данных с Apache Spark

Время на прочтение1 мин
Количество просмотров17K
image
С анализом больших объемов данных постепенно начинают сталкиваться не только крупнейшие IT-компании, но и обычные разработчики. В нашей компании в ряде проектов такая задача возникает, и мы решили систематизировать накопленный опыт, поделившись с коллегами по i-Free и нашими партнерами наиболее эффективными инструментами и технологиями. Сегодня речь пойдет о применении Apache Spark
Подробности
Всего голосов 16: ↑13 и ↓3+10
Комментарии9

PHP-Дайджест № 67 – интересные новости, материалы и инструменты (12 – 27 июля 2015)

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


Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.

Приятного чтения!
Читать дальше →
Всего голосов 63: ↑55 и ↓8+47
Комментарии0

Какие курсы вы хотели бы видеть в программе онлайн-обучения от Mail.Ru Group?

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


На протяжении последних полутора лет мы регулярно выкладываем в сеть видеозаписи курсов с наших образовательных проектов — Технопарка и Техносферы Mail.Ru, а с февраля этого года также постим их в нашем блоге на Хабре. Методы тестирования web-приложений, углубленное программирование на Java, введение в Hadoop, методы построения систем информационного поиска — вот лишь несколько примеров последних тем, с которыми мы предлагали ознакомиться онлайн всем желающим.

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

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

Был бы вам полезен такой проект? И если да, какие курсы и дисциплины вы хотели бы видеть в учебной программе в ней первую очередь? Заявки и предложения ждем по адресу elearn@corp.mail.ru или мне в личку. Заранее спасибо вам за обратную связь!
Всего голосов 36: ↑28 и ↓8+20
Комментарии15

Информация

В рейтинге
6 270-й
Откуда
Пыть-Ях, Тюменская обл. и Ханты-Мансийский АО, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Senior
Git
Golang
PostgreSQL
ClickHouse
NoSQL
Python
High-loaded systems