Pull to refresh
12
0

Freelancer

Send message

Зачем роботам делать выбор за вас

Reading time 11 min
Views 3K

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

У вас в почте лежит бронь на отель, а в календаре деловые встречи? Вот координаты ближайших удобных мест с бизнес-ланчами, где можно провести встречи. И скидка. Железяка по нескольким метрикам вычислит деловую цель поездки и не будет предлагать вам конные прогулки вместе с билетами в кино. В идеальном варианте робот отберёт у вас выбор, но вам это понравится. Приложение вовремя подсунет кнопку для вызова такси и за день до встречи предложит услуги экспресс-глажки костюма в ближайшей химчистке. Система адаптируется к вашим паттернам и предлагает вам именно то, что лучше укладывается в ваш поведенческий профиль. Например, провести платёж по ипотеке в нужную дату с напоминанием или при снятии денег в банкомате предложить вам ровно сумму на две пинты Гиннесса, которые вы берёте в баре каждую пятницу.

Читать далее
Total votes 19: ↑15 and ↓4 +11
Comments 9

Как я веду Zettelkasten в Notion уже год: стартовый набор и полезные трюки

Reading time 8 min
Views 171K

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

Я почитал русскоязычные и англоязычные ресурсы и не нашел ни нормального шаблона для Notion, ни объяснения как реализовать главные преимущества метода Zettelkasten. Под катом и то, и другое. 

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

Эту статью можно почитать для понимания основ, но актуальные источники информации тут:

  • У меня в Психотронке можно следить за подготовкой обновленной версии, ну и написать мне за помощью. А можете не следить: версия 2.0 выйдет на Хабре.
  • В русскоязычном сообществе Zettelkasten в Телеграме сидят люди, которые хорошо разбираются в теме. Мы обожаем помогать новичкам.

Дисклеймер: ни Notion, ни автор метода мне за статью не платили.
Читать дальше →
Total votes 49: ↑49 and ↓0 +49
Comments 88

Как Linux'овский sort сортирует строки

Reading time 19 min
Views 20K

Введение


Всё началось с короткого скрипта, который должен был объединить информацию об адресах e-mail сотрудников, полученных из списка пользователей почтовой рассылки, с должностями сотрудников, полученными из базы отдела кадров. Оба списка были экспортированы в текстовые файлы в кодировке Юникод UTF-8 и сохранены с юниксовскими концами строк.


Содержимое mail.txt


Иванов Андрей;ia@example.com

Содержимое buhg.txt


Иванова Алла;маляр
Ёлкина Элла;крановщица
Иванов Андрей;слесарь
Абаканов Михаил;маляр

Для объединения файлы были отсортированы юниксовской командой sort и поданы на вход юниксовской программе join, которая неожиданно завершилась с ошибкой:


$> sort buhg.txt > buhg.srt
$> sort mail.txt > mail.srt
$> join buhg.srt mail.srt > result
join: buhg.srt:4: is not sorted: Иванов Андрей;слесарь

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


$> sort buhg.txt
Абаканов Михаил;маляр
Ёлкина Элла;крановщица
Иванова Алла;маляр
Иванов Андрей;слесарь

Выглядит как глюк сортировки в Юникоде или как проявление феминизма в алгоритме сортировки. Первое, конечно, правдоподобнее.

Читать дальше →
Total votes 123: ↑123 and ↓0 +123
Comments 13

Как распознать кракозябры?

Reading time 1 min
Views 424K
В комментариях к предыдущему посту про иероглифы сказали, что хорошо бы иметь такую же блок-схему для кракозябр.

Итак, вуаля!


За источник информации была взята статья из вики. В блок-схеме «UTF-16 → CP 866» означает, что исходная кодировка была «UTF-16», а распозналась она как «CP 866».

Как всегда — кликабельно. Исходник в .docx: здесь.
Total votes 429: ↑418 and ↓11 +407
Comments 64

Как обойти капчу: нейросеть на Tensorflow,Keras,python v числовая зашумленная капча

Reading time 7 min
Views 44K
Тема капч не нова, в том числе для Хабра. Тем не менее, алгоритмы капч меняются, как и алгоритмы их решения. Поэтому, предлагается помянуть старое и прооперировать следующий вариант капчи:



попутно понять работу простой нейросети на практике, а также улучшить ее результаты.
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Comments 25

Проектирование интернет-магазина для SEO: (теория + чеклист)

Reading time 8 min
Views 17K
Что стоит учесть при проектировании интернет-магазина, чтобы не пришлось переделывать пол сайта для начала продвижения.

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

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

Читать дальше →
Total votes 22: ↑18 and ↓4 +14
Comments 58

Иван aka BANO.notIT: “Если OSM начнет себя рекламировать и продвигать, в него придут новые люди с новыми идеями”

Reading time 5 min
Views 2.8K
Иван — студент-программист из Москвы, который присоединился к сообществу RU-OSM буквально несколько месяцев назад. Потому его мнение об OSM, как человека молодого и со стороны, интересно вдвойне. Почему обязательно нужно установить JOSM, зачем отмечать точку по продаже шаурмы и как можно осовременить OSM — обо всем этом он рассказал в интервью.
Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Comments 7

Разбор: 23 популярные ошибки в письменном английском и как их избежать

Reading time 7 min
Views 14K


Даже если вы учите английский язык много лет, скорее всего время от времени совершаете ошибки при письме. Я нашел интересный пост с подборкой более чем двух десятков распространенных ошибок и советами о том, как их избежать. Представляю перевод этого полезного материала.
Читать дальше →
Total votes 29: ↑24 and ↓5 +19
Comments 33

Четыре всадника Инфокалипсиса

Reading time 7 min
Views 45K
Наркоторговля, отмывание денег, терроризм и педофилия.

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

Термин играет на сходстве с библейскими персонажами. Четыре всадника Апокалипсиса — это катастрофы и катаклизмы, предваряющие второе пришествие Иисуса Христа и Страшного суда. Четыре всадника Инфокалипсиса тоже сеют разрушения и хаос, но в глобальной Сети. Делается подобное с согласия и одобрения миллионов людей.

Впервые термин «Четыре всадника» начал употреблять Тимоти Мэй примерно в 1988 году при обсуждении слабой распространённости криптографических инструментов среди обычных людей. В 1994 году термин звучит в его «Шифрономиконе», документе криптопанков, который описывает идеи и эффекты криптоанархизма. «Шифрономикон» оформлен в формате вопросов и ответов. В документе начала девяностых обсуждаются цифровые валюты, право на частную жизнь в Сети и биржи убийств.
Читать дальше →
Total votes 52: ↑48 and ↓4 +44
Comments 81

10 способов, как вас могут обмануть при обмене криптовалют

Reading time 6 min
Views 83K


Во время работы по запуску мониторинга обменников криптовалют на Bits.media занялся я составлением списка рисков, с которыми сталкивался, и о которых мне писали пользователи после инцидентов. А чтоб добру не пропадать, решил оформить все в отдельную статью. Немного дополнил ее пунктами при работе с p2p площадками, так как обменов там совершается сейчас также не мало. Список идет от простого к сложному, но не стоит недооценивать риски даже совсем тупых методов мошенничества, на них каждый день попадаются люди, а бдительность порой теряется и у совсем заядлых криптанов. Также в конце я приведу несколько правил, которые помогут снизить эти риски.
Читать дальше →
Total votes 43: ↑41 and ↓2 +39
Comments 12

Optlib. Реализация генетического алгоритма оптимизации на Rust

Reading time 27 min
Views 13K
В этой статье описывается библиотека optlib, предназначенная для решения задач глобальной оптимизации на языке Rust. На момент написания этой статьи в этой библиотеке реализован генетический алгоритм нахождения глобального минимума функции. Библиотека optlib не привязана к конкретному типу входных данных для оптимизируемой функции. Также библиотека построена таким образом, что при использовании генетического алгоритма можно легко менять алгоритмы скрещивания, мутации, отбора и другие этапы работы генетического алгоритма. По сути генетический алгоритм собирается как бы из кубиков.
Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Comments 20

Создаём процедурные глобусы планет

Reading time 4 min
Views 11K
Искажения, бесшовный шум и как с ними работать.

image

Генерируем планету


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

  • Шум Перлина (Perlin Noise) — самый простой вариант. Шум Перлина был разработан Кеном Перлином в 1983 году, он имеет пару недостатков — визуальные артефакты и довольно низкая по сравнению с другими вариантами скорость при генерации больших изображений.
  • Симплекс-шум (Simplex Noise) — разработан Кеном Перлином в 2001 году как попытка устранения недостатков шума Перлина; это вполне достойное и быстрое решение, однако обладающее серьёзным недостатком: использование трёхмерного симплекс-шума защищено патентом, что делает его довольно дорогостоящим.
  • Открытый симплекс-шум (Open Simplex Noise) — был разработан KDotJPG с одной простой целью: создать современную и бесплатную версию симплекс-шума, относительно быструю и без искажений.

Из этих трёх лично я предпочитаю Open Simplex Noise, который использую в своих личных проектах. Стоит заметить, что в текущей реализации OpenSimplexNoise для получения простого доступа к масштабу, октавам и порождающим значениям потребуется дополнительная работа. В Интернете есть множество информации о том, что делает каждый из этих элементов, и я крайне рекомендую вам её изучить. Однако в своей статье я буду говорить не об этом.
Читать дальше →
Total votes 38: ↑38 and ↓0 +38
Comments 7

Как запретить стандартные пароли и заставить всех тебя ненавидеть

Reading time 5 min
Views 31K
Человек, как известно, существо ленивое. А тем более, когда касается вопроса выбора устойчивого пароля.

Думаю, каждый из администраторов когда-либо сталкивался с проблемой использования легких и стандартных паролей. Такое явление часто встречается среди верхних эшелонов руководства компании. Да-да, именно среди тех, кто имеет доступ к секретной или коммерческой информации и крайне нежелательно было бы устранять последствия утечки/взлома пароля и дальнейших инцидентов.
Читать дальше →
Total votes 26: ↑22 and ↓4 +18
Comments 91

Как я пишу конспекты по математике на LaTeX в Vim

Reading time 9 min
Views 123K
Некоторое время назад на Quora я отвечал на вопрос: как успевать записывать за лектором конспект по математике на LaTeX. Там я объяснил свой рабочий процесс по конспектированию в LaTeX с помощью Vim и Inkscape (для рисунков). Но с тех пор многое изменилось, так что я хочу опубликовать несколько постов в блоге с описанием нового процесса. Это первая из статей.

Я начал использовать LaTeX для конспектирования во втором семестре курса математики, и с тех пор написал более 1700 страниц. Вот несколько примеров, как выглядит конспект:


Читать дальше →
Total votes 222: ↑220 and ↓2 +218
Comments 133

CraSSh: ломаем все современные браузеры вычислениями в CSS

Reading time 7 min
Views 31K
Автор статьи: Константин Сафонов

Не хочу читать эту техническую болтовню. Просто повали уже мой браузер.

Что такое CraSSh


CraSSh — это кроссбраузерная чисто декларативная DoS-атака, основанная на плохой обработке вложенных CSS-функций var() и calc() в современных браузерах.

CraSSh действует во всех основных браузерах на десктопах и мобильных устройствах:

  • На движке WebKit/Blink — Chrome, Opera, Safari, даже Samsung Internet на смарт-телевизорах и холодильниках.
    • Android WebView, iOS UIWebView также затронуты, то есть можно обвалить любое приложение со встроенным браузером.
  • На движке Gecko — Firefox и его форки, такие как Tor Browser.
    • Servo не запустился ни на одной из моих машин, поэтому я его не протестировал.
  • На движке EdgeHTML — Edge в Windows, WebView в приложениях UWP (их вообще кто-нибудь использует?)

Браузер IE не затронут, поскольку он не поддерживает функции, на которых основана атака, но у его пользователей немало своих проблем (вероятно, этот браузер можно порушить другими способами — прим. пер.).
Читать дальше →
Total votes 71: ↑70 and ↓1 +69
Comments 58

Как мы распределяем заказы между водителями в Яндекс.Такси

Reading time 5 min
Views 175K
image

Одна из главных задач в Яндекс.Такси — как сделать так, чтобы к пользователю быстро приезжала машина, а у водителя сокращалось время «холостого пробега» (то есть время, когда он на линии без пассажира). Казалось бы, всё просто: пользователь выбирает тариф, указывает дополнительные пожелания (детское кресло, например). Остаётся отфильтровать водителей на линии по этим критериям, выбрать ближайшего и предложить ему заказ. Однако всё так просто только на первый взгляд.

Сегодня я расскажу сообществу Хабра о том, как мы выбираем наиболее подходящего водителя и как этот процесс эволюционировал со временем. Вы узнаете о двух подходах к решению задачи.
Читать дальше →
Total votes 125: ↑119 and ↓6 +113
Comments 196

Алгоритм Deflate на примере формата PNG

Reading time 5 min
Views 30K


В рамках очередной лабораторной работы мы с коллегами столкнулись с задачей разбора шестнадцатеричного дампа файла PNG. По стандарту RFC 2083 формат PNG хранит пиксельные данные, сжатые алгоритмом Deflate. Поэтому при разборе дампа нам потребовалось распаковывать сжатые данные алгоритмом Inflate.
Читать дальше →
Total votes 31: ↑29 and ↓2 +27
Comments 2

Разработка SELinux-модуля для пользователя

Reading time 3 min
Views 12K

Это вторая статья из цикла


Сегодня мы поговорим о SELinux-пользователях, их создании, привязке, правам и другим вещам.

Зачем это делать? Есть много причин. Для меня главной причиной было выдать доступ для техподдержки для рутинных операций (таких как ребут, чистка логов, диагностика итд), но без доступа к критичным данным и изменению системных функций.

Предположения


В тексте будет содержаться много технической информации, поэтому автор предполагает, что читатель:

  • Прочитал прошлую статью
  • Имеет под рукой CentOS 7
  • На котором установлены пакеты setools-console, policycoreutils-devel, selinux-policy-devel, policycoreutils-newrole
  • И включен SELinux в режиме enforcing с политикой targeted или minimum

Это все про вас? Тогда поехали!
Читать дальше →
Total votes 27: ↑27 and ↓0 +27
Comments 20

Разработка SELinux-модуля для приложения

Reading time 5 min
Views 15K

Давным-давно, в далекой-далекой стране


… государственная служба NSA разработала систему безопасности для ядра и окружения Linux, и назвала ее SELinux. И с тех пор люди разделились на две категории: disabled/permissive и enforcing. Сегодня я покажу вам путь Силы и переведу на другую сторону всех желающих.

Предположения


В тексте будет содержаться много технической информации, поэтому автор предполагает, что читатель:

  • Имеет какое-то приложение (демон), которое должно работать с SELinux
  • Просмотрел разницу между DAC, MAC и RBAC
  • Знаком с администрированием Linux
  • Что-то читал про SELinux и может расшифровать user_u:user_r:user_home_t:s0
  • Имеет под рукой CentOS 7
  • На котором установлены пакеты setools-console, policycoreutils-devel, selinux-policy-devel
  • И включен SELinux в режиме permissive с политикой targeted или minimum

Это все про вас? Тогда поехали!
Читать дальше →
Total votes 35: ↑35 and ↓0 +35
Comments 4

Ограничение прав локального пользователя в Linux до минимума

Reading time 5 min
Views 37K
Котик Как то раз появилась следующая задача: создать локального пользователя в ОС Linux, с ограниченным доступом к папкам и файлам, включая не только редактирование, но и просмотр, а также возможность использовать только разрешенные утилиты. Предусматривается только локальный доступ, сетевого доступа нет.

Что бы не изобретать велосипед, первым делом начал копать интернет, в результате чего были найдены следующие варианты:

  • ограничения доступа через сетевые службы ssh, sftp (не подошло)
  • разграничение прав доступа самой операционной системой linux (не подошло, хотелось бы универсальное решение)
  • использование chroot (не подошло)
  • использование сторонних утилит, например SELinux (не подошло, усложняет систему).

В результате поиска, был найден встроенный механизм ограничения возможностей пользователя внутри оболочки bash, он называется Restricted Shell или rbash.
Читать дальше →
Total votes 43: ↑30 and ↓13 +17
Comments 66

Information

Rating
Does not participate
Registered
Activity