Как стать автором
Обновить
-1
0
Александр @AlexDodonov

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

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

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

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


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

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


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

Три закона конфигодинамики

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

Галактика Андромеды


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

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии3

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

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

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

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

Время на прочтение15 мин
Количество просмотров32K
Специалист, приступающий к изучению функционального программирования, сталкивается как с неоднозначностью и запутанностью терминологии, так и с постоянными ссылками на «серьезную математику».

В этой статье, не используя теорию категорий с одной стороны и эзотерические языковые механизмы 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% цены!).


Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии7

Что я не ожидал увидеть в тесте Java Programmer I (1Z0-803)

Время на прочтение3 мин
Количество просмотров41K
Здесь нету примеров идеального кода, пяти шагов «как получить сертификат с вероятностью 100%, гарантия». Нету даже фотографий котиков :/
Читать дальше →
Всего голосов 42: ↑35 и ↓7+28
Комментарии29

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

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


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

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


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

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

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

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

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

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

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

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

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

Поняв Docker

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

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


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


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


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


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

Понимая Docker

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

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


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

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

Время на прочтение39 мин
Количество просмотров1.6M



Содержание



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


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


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


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



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

Читать дальше →
Всего голосов 125: ↑124 и ↓1+123
Комментарии44

Джарвис снова в деле

Время на прочтение4 мин
Количество просмотров54K
Наверняка, каждый мечтает о своем голосовом ассистенте, под катом еще одна реализация «Джарвиса» из известного фильма.

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

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

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

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

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

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

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

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


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

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

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

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

Время на прочтение3 мин
Количество просмотров28K
Задачи о переборе всех возможных перестановок заданного множества сущностей возникают в программировании достаточно часто. Как известно из комбинаторики, число возможных перестановок 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! – и ее реализацией, можно натолкнуться на один очень интересный математический факт.
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии18

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

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

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


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

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

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


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

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

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

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

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


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

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

Привычка Stack Overflow

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

stackoverflow for fun and profit!
Всего голосов 64: ↑57 и ↓7+50
Комментарии75

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

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

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

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

Четвертое поколение
Всего голосов 60: ↑60 и ↓0+60
Комментарии174

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

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


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

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

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

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность