Pull to refresh
-1
0
Александр @AlexDodonov

User

Send message

«Автоматический детектор спама». Или «О чем предупреждали Хемингуэй, Хаксли и Постман?»

Reading time5 min
Views13K


У каждого человека внутри должен быть встроенный автоматический детектор дерьма (Эрнест Хемингуэй, 1954)
В этот день почти пятьдесят лет назад в Национальную конвенцию учителей английского языка (Вашингтон D.C.) была доставлена необычная статья. Нейл Постман, американский писатель, педагог, теоретик медиа и критик культуры поднял тему о том, что главная задача учителей — это научить детей противостоять влиянию бесполезной и ложной информации.

28 ноября 1969 года


Отрывок из статьи:
Я вижу это так: лучшее, что могут сделать школы для детей, — это научить их отличать полезную информацию от бесполезной. Думаю, что все серьезные люди понимают, что около 90% того, что дают в школе, оказывается бесполезным.
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments11

Материя и энергия: ложная дихотомия

Reading time9 min
Views56K
Частенько, читая статьи о Вселенной или о физике частиц, можно встретить фразу, упоминающую «материю и энергию» так, будто они – две противоположности, или два партнёра, или две стороны одной монеты, или два класса, из которых состоит всё остальное. Это всплывает во многих контекстах. Иногда можно увидеть, как поэтически описывают Большой взрыв в качестве момента возникновения всей «материи и энергии» Вселенной. Можно прочесть, что «материя и антиматерия аннигилируют в чистую энергию». И конечно, вспомним две величайших загадки астрономии – «тёмная материя» и «тёмная энергия».

Как учёный и специалист, пишущий на научные темы, я испытываю раздражение от такой терминологии, не потому, что она абсолютно неправильная, а потому, что такие разговоры вводят в заблуждение людей, не занимающихся наукой. Для физиков она мало что означает. Эти поэтические эпитеты относятся к тому, что чётко определено в математике и экспериментах, и двусмысленные определения просто коротко выражают длинные точные фразы. Но тех, кто не является экспертом, это очень запутывает, поскольку в каждом из контекстов используется своё определение материи, и своё значение слова «энергия» – иногда даже архаичное или просто неправильное. И любой из способов подразумевает, что всё существующее может быть либо материей, либо энергией – а это не так. На самом деле материя и энергия вообще относятся к разным категориям – это как говорить в одном предложении о яблоках и орангутангах, или о небесах и червях, или о птицах и пляжных мячах.
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments27

FP на Scala: Что такое функтор?

Reading time15 min
Views32K
Специалист, приступающий к изучению функционального программирования, сталкивается как с неоднозначностью и запутанностью терминологии, так и с постоянными ссылками на «серьезную математику».

В этой статье, не используя теорию категорий с одной стороны и эзотерические языковые механизмы Scala с другой стороны, рассмотрены два важнейших понятия
  • ко-вариантный функтор
  • контра-вариантный функтор
которые являются стартовой точкой для понимания всего множества категориальных конструкций, куда можно включить
  • Exponential (Invariant) Functor, BiFunctor, ProFunctor
  • Applicative Functor, Arrow, Monad / Co-Monad
  • Monad Transformers, Kleisli, Natural Transformations

Объяснено происхождение категориальной терминологии, указана роль языковых механизмов в реализации категориальных абстракций и рассмотрено несколько ковариантных (Option, Try, Future, List, Parser) и контравариантных (Ordering, Equiv) функторов из стандартной библиотеки Scala.

Первая статья в «категориальной серии»:
  1. FP на Scala: что такое функтор?
  2. FP на Scala: Invariant Functor

Если Вы желаете сильнее погрузиться в мир Scala, математики и функционального программирования — попробуйте онлайн-курс «Scala for Java Developers» (видео + тесты, всего за 25% цены!).


Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments7

Повышаем производительность кода: сначала думаем о данных

Reading time20 min
Views62K


Занимаясь программированием рендеринга графики, мы живём в мире, в котором обязательны низкоуровневые оптимизации, чтобы добиться GPU-фреймов длиной 30 мс. Для этого мы используем различные методики и разработанные с нуля новые проходы рендеринга с повышенной производительностью (атрибуты геометрии, текстурный кеш, экспорт и так далее), GPR-сжатие, скрывание задержки (latency hiding), ROP…

В сфере повышения производительности CPU в своё время применялись разные трюки, и примечательно то, что сегодня они используются для современных видеокарт ради ускорения вычислений ALU (Низкоуровневая оптимизация для AMD GCN, Быстрый обратный квадратный корень в Quake).


Быстрый обратный квадратный корень в Quake

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

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

В статье мы рассмотрим кеширование, векторное программирование, чтение и понимание ассемблерного кода, а также написание кода, удобного для компилятора.
Читать дальше →
Total votes 141: ↑133 and ↓8+125
Comments103

Образы и контейнеры Docker в картинках

Reading time6 min
Views187K
docker container

Перевод поста Visualizing Docker Containers and Images, от новичка к новичкам, автор на простых примерах объясняет базовые сущности и процессы в использовании docker.

Если вы не знаете, что такое Docker или не понимаете, как он соотносится с виртуальными машинами или с инструментами configuration management, то этот пост может показаться немного сложным.

Пост предназначен для тех, кто пытается освоить docker cli, понять, чем отличается контейнер и образ. В частности, будет объяснена разница между просто контейнером и запущенным контейнером.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments6

Поняв Docker

Reading time14 min
Views222K

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


К вашему сведению! В этой статье мы рассматриваем само явление docker-контейнеров, а не составляем список микросервисов, которые гнездятся внутри. Этим мы займемся в следующей серии, во имя справедливости!


UPDATE: пришлось заменить «докер» на «docker», иначе статья не ищется. Заранее прошу прощения за все «docker'ы» в тексте. Селяви.


Что мы имеем сегодня


  • Зоопарк дубовых VPS-хостингов.
  • Дорогие IaaS и PaaS с гарантированным vendor lock in.
  • Уникальные сервера-снежинки.
  • Ворох устаревших зависимостей на неподдерживаемой операционке.
  • Скрытые связи частей приложения.
  • Незаменимый админ полубог на скейтборде.
  • Радуга окружений: development, testing, integration, staging, production.
  • Генерация конфигов для системы управления конфигами.
  • Feature flagging.
docker run docker
Total votes 92: ↑83 and ↓9+74
Comments245

Понимая Docker

Reading time7 min
Views1M
Уже несколько месяцев использую docker для структуризации процесса разработки/доставки веб-проектов. Предлагаю читателям «Хабрахабра» перевод вводной статьи о docker — «Understanding docker».

Что такое докер?


Докер — это открытая платформа для разработки, доставки и эксплуатации приложений. Docker разработан для более быстрого выкладывания ваших приложений. С помощью docker вы можете отделить ваше приложение от вашей инфраструктуры и обращаться с инфраструктурой как управляемым приложением. Docker помогает выкладывать ваш код быстрее, быстрее тестировать, быстрее выкладывать приложения и уменьшить время между написанием кода и запуска кода. Docker делает это с помощью легковесной платформы контейнерной виртуализации, используя процессы и утилиты, которые помогают управлять и выкладывать ваши приложения.
Читать дальше →
Total votes 27: ↑22 and ↓5+17
Comments62

Полное практическое руководство по Docker: с нуля до кластера на AWS

Reading time39 min
Views1.6M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


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



Ого! Как много информации.

Читать дальше →
Total votes 125: ↑124 and ↓1+123
Comments44

На Code.org у детей не сохранилась домашняя работа: кончился 32-битный индекс

Reading time3 min
Views22K

Задание из вступительного курса «Введение в информатику» на платформе Code Studio

Сайт для обучения программированию Code.org попал в неловкую ситуацию. Из-за «технических проблем» на платформе Code Studio утром 20 января с 9:19 до 10:33 PST работы школьников по программированию — весь написанный код и другие действия на сайте — не удалось сохранить.

Технический директор образовательного сайта Джереми Стоун (Jeremy Stone) оперативно опубликовал объяснение произошедшего: «До нынешнего времени мы хранили работы по программированию учеников в таблице с 32-битным индексом, — написал он. — Эта база данных может хранить только 4 млрд строк информации об активности. Мы не осознавали, что приближаемся к этому лимиту, и таблица заполнилась».
Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments43

Segmentation Fault (распределение памяти компьютера)

Reading time16 min
Views112K


Когда я делаю ошибку в коде, то обычно это приводит к появлению сообщения “segmentation fault”, зачастую сокращённого до “segfault”. И тут же мои коллеги и руководство приходят ко мне: «Ха! У нас тут для тебя есть segfault для исправления!» — «Ну да, виноват», — обычно отвечаю я. Но многие ли из вас знают, что на самом деле означает ошибка “segmentation fault”?

Чтобы ответить на этот вопрос, нам нужно вернуться в далёкие 1960-е. Я хочу объяснить, как работает компьютер, а точнее — как в современных компьютерах осуществляется доступ к памяти. Это поможет понять, откуда же берётся это странное сообщение об ошибке.

Вся представленная ниже информация — основы компьютерной архитектуры. И без нужды я не буду сильно углубляться в эту область. Также я буду применять всем известную терминологию, так что мой пост будет понятен всем, кто не совсем на «вы» с вычислительной техникой. Если же вы захотите изучить вопрос работы с памятью подробнее, то можете обратиться к многочисленной доступной литературе. А заодно не забудьте покопаться в исходном коде ядра какой-нибудь ОС, например, Linux. Я не буду излагать здесь историю вычислительной техники, некоторые вещи не будут освещаться, а некоторые сильно упрощены.
Читать дальше →
Total votes 74: ↑71 and ↓3+68
Comments10

Как перебрать все перестановки и о факториальном разложении натуральных чисел

Reading time3 min
Views28K
Задачи о переборе всех возможных перестановок заданного множества сущностей возникают в программировании достаточно часто. Как известно из комбинаторики, число возможных перестановок n предметов равно попросту факториалу числа n

n! = n * (n — 1) * (n – 2) * … * 3 * 2 * 1

Факториал – достаточно быстро растущая функция, об этом говорит ее асимптотика (формула Стирлинга), хотя достаточно посмотреть на факториалы нескольких первых членов натурального ряда:

1! 1
2! 2
3! 6
4! 24
5! 120
6! 720
7! 5 040
8! 40 320
9! 362 880
10! 3 628 800
11! 39 916 800
12! 479 001 600
13! 6 227 020 800
14! 87 178 291 200
15! 1 307 674 368 000

Как видно, факториал 13-ти уже не умещается в тип данных long.

Если задаться целью найти однозначное соответствие между номером перестановки — числом в диапазоне от 1 до n! – и ее реализацией, можно натолкнуться на один очень интересный математический факт.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments18

JavaScript-тренды, на которые стоит обратить внимание в 2017-м

Reading time7 min
Views74K
image

Я решил написать этот материал после того, как увидел твит Дэна Абрамова, за который хочу сказать ему огромное спасибо. Дэн задал своим подписчикам вопрос о самых интересных событиях в мире JavaScript, которые достойны внимания широкой общественности.


Любители JS на вопрос откликнулись, под твитом собралась целая гора ответов. Каждый говорил о том, на что, по его мнению, стоит обратить внимание в 2017-м году. В результате получилась весьма занимательная подборка, из которой я выбрал всё лучшее и добавил пояснения.
Total votes 82: ↑77 and ↓5+72
Comments86

Как я потратил 1000 часов на изучение английского языка в 2016 году

Reading time21 min
Views174K


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

Учась в бакалавриате, я смог развить словарный запас до 10 000 и прорвать барьер чтения художественной литературы. Но понимание разговорной речи на слух — задача куда более трудная. Я долгое время считал её нерешаемой, не верил в успех.

Эта статья — о том, как невозможное было сделано возможным, как в самом сердце магистратуры я проломил неприступную цитадель аудирования. Это бремя выпало на 2016 год. Я перепробовал множество различных учебных методик и расскажу вам о них во всех подробностях, по каким материалам я занимался и какие выводы делал. Эта статья — огромный склад опыта, и я надеюсь, что он будет вам полезен.
Читать дальше →
Total votes 57: ↑44 and ↓13+31
Comments135

Быстрые движения под высоким напряжением, или почти вся правда об управлении шаговым мотором

Reading time7 min
Views81K


Доброго вам времени суток, уважаемые гики и сочувствующие!

В этой публикации я хочу поделиться своим опытом управления. Точнее – управления шагами. А уж если быть совсем точным, речь пойдёт об управлении замечательным устройством – шаговым электродвигателем.
Осторожно, трафик!
Total votes 33: ↑28 and ↓5+23
Comments69

Привычка Stack Overflow

Reading time4 min
Views42K
Stackoverlow уже стал незаменимым инструментом для множества разработчиков. Продвигаемая авторами модель использования – это “база знаний”. Набираем вопрос в гугле → попадаем на stackoverlow → читаем ответ → profit! Так сайт работает для большинства – за счет гораздо меньшей группы разработчиков, которая отвечает на вопросы. Зачем они это делают? Большинство – для повышения собственной квалификации и социальной реализации. И для карьеры полезно, и комплексы стороной обходят, и кризис среднего возраста не придет. Под катом – перевод статьи одного такого разработчика, который делится своими практическими наработками о том, как ему удалось отвечать на вопросы начинающих разработчиков каждый день.

stackoverflow for fun and profit!
Total votes 64: ↑57 and ↓7+50
Comments75

Четвертое поколение

Reading time10 min
Views55K
Атомная энергетика заслуженно считается одной из самых консервативных отраслей, достигшей вершины пути на своей S-кривой. Последние 25 лет внешний наблюдатель не заметил бы изменения в ключевых технология — все те же сборки из тепловыделяющих элементов, греющие или кипятящие воду, с преобразованием тепловой энергии в электрическую. Тем удивительнее тот факт, что свое будущее атомная энергетика видит в 6 революционных концепциях, каждая из которым по своему сдвигает парадигму атомной энергетики в ту или иную сторону.

image
Корпус исследовательского реактора на расплаве солей MSRE, 70е

Важен и тот факт, что все эти концепции возникли не сегодня, а на заре рождения атомной индустрии и проиграли в конкурентной борьбе за звание отраслевого стандарта реакторам с водой под давлением (PWR в западной терминологии или BBЭР в отечественной). Однако, как и в случае с электромобилями, постепенное накопление суммы технологий может вернуть на пьедестал забытых героев зари атомного века.

Четвертое поколение
Total votes 60: ↑60 and ↓0+60
Comments174

Почему мы ненавидим уведомления на сайтах?

Reading time3 min
Views32K


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

Но ведь в самом деле:

Лезут из всех щелей, пытаясь заставить нажать вас заветную кнопку. Возникают при каждом переходе на сайте. Вылезают в самые неудачные моменты и мешают вам жить. Разберем подробно, почему мы (а именно вы) не любим уведомления на сайтах.
Читать дальше →
Total votes 41: ↑28 and ↓13+15
Comments54
1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Date of birth
Registered
Activity