Pull to refresh
4
0.8
Дмитрий Померанцев @pda0

User

Send message

Децентрализованная торговля децентрализованной валютой

Reading time6 min
Views11K
Жестокая ирония: те, кто наслаждается преимуществами первой децентрализованной валюты, вынуждены пользоваться для торгов централизованными биржевыми площадками. Централизация — проклятье фиатной валютной системы — по-прежнему остается не самой приятной чертой биткойновой и криптовалютной среды. И все-таки настало время попрощаться с ней.

image

MtGox. Это не просто название мёртвого бизнеса. Слово «Gox» вошло в разговорный язык мира биткойна так, как это не удавалось ни одному другому понятию. Вы можете не знать, что такое Zhou Tonging. Вы, вполне вероятно, вопросительно вздернете бровь, если вам посоветуют HODL. Но, несомненно, если вы хотя бы немного вращались в биткойн-среде, вы знаете, какую огромную и холодную тень бросает на всё криптовалютное сообщество первая биткойн-биржа. Родители используют ее как страшилку для маленьких детей, чтобы убедить их следить за своими личными ключами. Взрослые мужчины рыдают в страхе, когда это слово встречается в одном предложении с выбранной ими биржей.
Читать дальше →

Крэш-курс по UI-дизайну

Reading time7 min
Views43K


Мы всегда в поисках хороших статей о дизайне, чтобы потом использовать их в работе над сайтом «Я люблю ИП». Сегодня мы перевели ещё одну статью, которая рассказывает, чем отличается UI-дизайн от UX-дизайна и на каких основных принципах строится дизайн интерфейсов.


UI vs. UX


Если вы хоть немного интересовались дизайном приложений, то наверняка слышали термины «UI» и «UX». Но чем же они отличаются?


В самой простой форме, UX-дизайн — это то, что делает интерфейс полезным, а UI-дизайн — делает его красивым. Дизайн интерфейсов — это смесь визуальной иерархии и элементов интерфейса. Чтобы разобраться, чем отличается прекрасный дизайн от просто хорошего, необходимо понять, что дизайн интерфейсов — это всего лишь один из слоев целого дизайн-процесса. Возможно, именно поэтому эти два термина так часто путают. В этой статье я постараюсь рассказать, в чём же заключается разница между ними с точки зрения дизайн-процесса.


Согласно книги Дж. Гарретта «Элементы опыта взаимодействия», UX-дизайн можно определить через пять основных уровней. Давайте начнём с самого абстрактного.


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

Кто ищет, тот всегда найдет. Если ему помочь

Reading time7 min
Views13K


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

Подписывание идентификаторов ресурсов и защита API от DDoS-атак

Reading time6 min
Views13K
Хочу рассказать о некоторых выводах, которые я сделал после работы над одним из самых посещаемых веб-сайтов в мире.



Мне довелось поучаствовать в работе над этим проектом в качестве консультанта. Посещаемость ресурса составляет порядка 200 миллионов уникальных пользователей в месяц. Такая популярность означает и высокий уровень рисков в сфере информационной безопасности, в частности, это риск подвергнуться различным видам атак, самые распространённые среди которых – DDoS. Организация, которую называть не буду, внедрила широкий спектр решений для предотвращения воздействия подобных атак на работоспособность сервиса.
Читать дальше →

Редкий SQL

Reading time6 min
Views50K

Вводная


Когда часто сталкиваешься с какой-либо технологией, языком программирования, стандартом, формируется некая картина их возможностей, границы, в которых они используются. Так может продолжаться достаточно долго, пока на глаза не попадаются примеры, которые расширяют затвердевшие горизонты знания. Сегодня, я хотел бы рассказать о таких примерах и продемонстировать их для языка SQL. Интересные и редкие конструкции, забытые выражения, странные приемы ждут Вас в этой статье. Кого заинтересовал, добро пожаловать под кат.
Читать дальше →

Метод рекурсивной координатной бисекции для декомпозиции расчетных сеток

Reading time8 min
Views9.7K


Введение


Расчетные сетки широко применяются при решении численных задач с помощью методов конечных разностей. Качество построения такой сетки в значительной степени определяет успех в решении, поэтому иногда сетки достигают огромных размеров. В этом случае на помощь приходят многопроцессорные системы, ведь они позволяют решить сразу 2 задачи:

  1. Повысить скорость работы программы.
  2. Работать с сетками такого размера, который не помещается в оперативной памяти одного процессора.

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

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

Может ли компьютер думать за архитектора, или Что такое параметрическое проектирование

Reading time5 min
Views14K


Недавно тут была статья о параметрических зданиях Захи Хадид, но из текста не слишком понятно, что же такое параметрическая архитектура в принципе. Параметры — это что-то, имеющее отношение к уравнениям, описывающим “модные, стильные, молодёжные” линии современных зданий? Нет, всё интереснее. На самом деле параметрическое проектирование — не столько красиво изогнутые трёхмерные объекты, сколько генетические алгоритмы, полиморфизм, мобильность, анализ комплексных систем и прочий матан. Если вам интересно, что сейчас происходит на стыке архитектуры и информационных технологий, читайте дальше.

Browser Fingerprint – анонимная идентификация браузеров

Reading time14 min
Views224K


Валентин Васильев (Machinio.com)


Что же такое Browser Fingerprint? Или идентификация браузеров. Очень простая формулировка — это присвоение идентификатора браузеру. Формулировка простая, но идея очень сложная и интересная. Для чего она используется? Для чего мы хотим присвоить браузеру идентификатор?


  • Мы хотим учитывать наших пользователей. Мы хотим знать, пришел ли пользователь к нам первый раз, пришел он во второй раз или в третий. Если пользователь пришел во второй раз, мы хотим знать, на какие страницы он заходил, что он до этого делал. С анонимными пользователями это невозможно. Если у вас есть система учета записей, пользователь логинится, мы все про него знаем — мы знаем его учетную запись, его персональные данные, мы можем привязать любые действия к этому пользователю. Здесь все просто. В случае с анонимными пользователями все становится гораздо сложнее.

Обзор сервиса Grammarly для улучшения письменной речи на английском языке

Reading time3 min
Views64K

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

Содержимое статьи:

  • Как бесплатно получить «вечную» Premium-подписку
  • Где располагается статистика и насколько хорошо она работает
  • Все ли конструкции из знаменитого учебника English Grammar in Use воспринимаются как правильные
  • Хороша ли интеграция с браузером, MS Word и Google Docs
  • Где разработчики перестарались

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

Вся правда о целочисленных типах в C

Reading time3 min
Views142K
Для начала несколько вопросов:

  1. Тип char по умолчанию знаковый или нет? А int?
  2. Законно ли неявное приведение (signed char *) к (char *)? А то же для int?
  3. Сколько бит в unsigned char?
  4. Какое максимальное число гарантированно можно поместить в int? А минимальное?
  5. Тип long определённо больше, чем char, не так ли?

Разумеется, экспериментально искать ответы на эти вопросы с помощью вашего любимого компилятора в вашей любимой системе на вашем любимом компьютере1) — не лучшая идея. Мы говорим о стандарте языка (С99 и новее).

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

Предположу, что вы ответили
  1. Знаковые оба.
  2. Законны оба.
  3. 8.
  4. 2147483647. -2147483648.
  5. Конечно, Кэп.


А правильные ответы такие
  1. char — не регламентируется, int — знаковый.
  2. Для int — законно, а для char — нет.
  3. Не менее 8.
  4. 32767. -32767
  5. Вообще говоря, нет.



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

Игры с ценой: стратегии и психология покупателя

Reading time6 min
Views18K

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

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

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

Многие попадаются в ловушку трудовой теории стоимости, согласно которой цена услуги определяется тем, сколько рабочего времени было затрачено на ее производство. Именно поэтому мы готовы потратить 12 $ на баночку джема, если на этикетке написано, что он «ручной работы» или «домашний». Нам представляется, что «художник» вложил в процесс больше труда, чем «ремесленник».
Читать дальше →

Биологи приближаются к разгадке узоров Тьюринга

Reading time6 min
Views22K
image

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

Сейчас, спустя 60 лет, биологи открывают свидетельства реального существования механизмов морфогенеза, предложенных Тьюрингом в той работе. «Все структуры нам известны, – говорит Джереми Грин, специалист по биологии развития из Королевского колледжа Лондона. – Нам нужно только скрестить химию с математикой, чтобы понять биологию».
Читать дальше →

Создание анаморфных искажений в Unity

Reading time3 min
Views12K
Всем привет! Сейчас я работаю в VRTech, и в рамках работы я натолкнулся на интересную задачу о которой хочется рассказать. Задача заключалась в том, чтобы получить анаморфное отображение картинки. Я попытаюсь рассказать, что такое анаморфные искажения, как рассчитать простейший случай линейного отображения такого искажения на плоскость, а так же предложу своё решение реализованное с помощью Unity.

image

Как создать временный файл на PHP, когда функция tmpfile() не подходит

Reading time10 min
Views26K

Когда PHP-программисту необходимо создать временный файл, он в мануале находит функцию tmpfile() и после изучения примеров начинает думать, как её лучше применить. Так было и со мной, когда мне потребовалось выгрузить данные сразу во временный файл, а не работать с ними через переменную. Но с файлом, созданным таким образом, в дальнейшем неудобно работать в силу того, что tmpfile() возвращает дескриптор, а не ссылку на локальный файл. Давайте немного углубимся в анатомию временного файла и рассмотрим подводные камни, с которыми мне пришлось столкнуться.

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

Генерация документов в doc, excel, pdf и других форматах на сервере

Reading time3 min
Views43K
Выгрузка отчетов в различных форматах — типовая задача для многих проектов. И сейчас есть немало инструментов для этого. Среди них есть интересный вариант, который применяется, как мне кажется, не часто, но он однозначно стоит внимания. Потому что позволяет получить документ в нужном формате буквально одной командой. О нем и расскажу.

image

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

Оптимизация механики и графики в игре жанра «симулятор» на iOS

Reading time11 min
Views8.1K
Взлет игр-симуляторов как жанра несколько лет назад показал, что геймификации поддается любая рутина. Апофеозом стал хайп вокруг Goat Simulator, удостоившегося упоминания в ключевой презентации WWDC 2015. Мы не остались в стороне и от этого тренда, поучаствовав в разработке движка для серии кросс-платформенных приложений, симулирующих работу подземки, над которыми трудятся наши партнеры из Simulators Live.

Subway Simulator – серия игр-симуляторов метро. Самая первая версия игры, вышедшая в 2014 году, хоть и была довольно абстрактной, подтвердила спрос на продукт подобной тематики, причем довольно высокий — проект занял лидирующие позиции в своей нише практически сразу после запуска. Последующие апдейты и новые версии продукта были направлены на то, чтобы сделать Subway Simulator реалистичнее: моделирование поездов и станций вышло на новый уровень, а также появились «локализованные» версии игры, отображающие метрополитены Лондона, Шанхая, Москвы и других городов. В данный момент суммарное число установок первой версии игры на iOS почти достигло миллионного значения. Одновременно игра становится доступна для других платформ.

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

Классические алгоритмы генерации лабиринтов. Часть 1: вступление

Reading time8 min
Views65K


Предисловие


На написание статьи меня сподвигло практически полное отсутствие материалов на русском языке про алгоритмы генерации лабиринтов. На Хабре, из того, что вообще есть по теме, можно отметить две статьи: раз и два. Ценность и пользу из которых несет лишь вторая. В первой – просто перевод формального алгоритма и небольшое его пояснение. Что, конечно, неплохо, но очень скудно и не вызывает желания изучать тему дальше.

Если моя статья Вам понравится, я продолжу писать о различных алгоритмах. Мы рассмотрим два самых примитивных и простых случая – генерация двоичного дерева и Сайдвиндер, который, по своей сути, просто чуть измененная версия двоичного дерева с одним заметным плюсом. ОСТОРОЖНО ТРАФИК.
Читать дальше →

Заставляем сервис php-fpm 5.6, запущенный через systemd, читать глобальные переменные окружения

Reading time6 min
Views14K
Это короткий how-to для реализации конфигурации php-сервиса, зависимого от окружения, в котором он запущен. Я буду рад, если кто-то подскажет более изящное решение или поправит в мелочах.

Основная идея


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

Проблема

В этой статье слишком много раз повторяется «переменные окружения».
Из коробки php-fpm игнорирует глобальные переменные окружения (getenv function), в то время как php cli их может получать.
Читать дальше →

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

Reading time5 min
Views16K

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


… государственная служба 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

Это все про вас? Тогда поехали!
Читать дальше →

2D магия в деталях. Часть четвёртая. Вода

Reading time13 min
Views35K

— Я тут воду для проекта запилил.
— О, круто! А почему она плоская? Даёшь волны!

— Слушай, ты тогда про волны говорил, помнишь? Зацени!
— Да, хорошие волны, а преломление и каустику ещё не делал?

— Привет, я тут игрался с Unity всю ночь, смотри какие отражения и каустику закодил!
— Дарова, и правда, хорошо! А когда у тебя вода кипит, отражения не глючат?

— Хай, реализовал наконец, кипение, вроде ничего?
— О, прямо как нужно! Слушай, прикинь как круто, если кипящую волну заморозить?

— Лови картинку, лёд вроде ничего придумал?
— Норм, слушай, а у тебя лёд замерзает, он в объёме увеличивается? И кстати, ты когда геймлей то делать начнёшь?
Вариации на тему лога с другом.

Да, вы уже поняли, наконец-то расскажу про реализацию воды в проекте. Приступим?

Information

Rating
2,646-th
Location
Химки, Москва и Московская обл., Россия
Date of birth
Registered
Activity