Pull to refresh
4
0

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

Send message

Неожиданная полнота по Тьюрингу повсюду

Reading time 13 min
Views 60K
Каталог программных конструкций, языков и API, которые неожиданно являются полными по Тьюрингу; последствия этого для безопасности и надёжности. Приложение: сколько компьютеров в вашем компьютере?

Любая достаточно сложная программа на Си или Фортране содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Common Lisp. — Десятое правило Гринспена

Полнота по Тьюрингу (Turing-completeness, TC) — это свойство системы при некотором простом представлении ввода и вывода реализовать любую вычислимую функцию.

Тьюринг-полнота — фундаментальное понятие в информатике. Она помогает ответить на многие ключевые вопросы, например, почему невозможно создание идеальной антивирусной программы. Но в то же время она является поразительно распространённым явлением. Казалось бы, компьютерной системе трудно достичь такой универсальности, чтобы выполнять любую программу, но получается наоборот: трудно написать полезную систему, которая немедленно не обратится в полную по Тьюрингу. Оказывается, что даже небольшой контроль над входными данными и преобразованием их в результат, как правило, позволяет создать тьюринг-полную систему. Это может быть забавным, полезным (хотя обычно нет), вредным или чрезвычайно небезопасным и настоящим подарком для хакера (см. о «теоретико-языковой безопасности», которая изучает методы взлома «странных машин»1). Удивительные примеры такого поведения напоминают нам о том, что полнота по Тьюрингу таится повсюду, а защитить систему чрезвычайно сложно.
Читать дальше →
Total votes 54: ↑53 and ↓1 +52
Comments 15

ДНК глазами программиста

Reading time 15 min
Views 88K
От переводчика: Так как я не являюсь биологом, возможны неточности в переводе терминов (и не только :). Оригинал находится здесь.

Если ты – молоток, то во всём увидишь гвоздь


Это всего лишь размышления программиста о ДНК. Я не являюсь молекулярным генетиком.

Исходный код


Находится здесь. Это не шутка. Исходники можно просмотреть с использованием замечательного набора скриптов Perl под названием "Ensembl". Геном человека занимает приблизительно 3 гигабайта, которые можно сократить до 750 мегабайт, если отбросить шелуху. Немного печалит, что это всего лишь 2.8 браузеров Mozilla Firefox.

ДНК похожа скорее не на исходники на языке C, а на байт-код для виртуальной машины под названием «ядро клетки». Крайне сомнительно, что существуют исходники, которые можно скомпилировать в этот байт-код: то, что мы видим, – это всё, что у нас есть.
Читать дальше →
Total votes 115: ↑114 and ↓1 +113
Comments 308

Уильям Коли — родоначальник иммунотерапии рака

Reading time 8 min
Views 16K
image

Родоначальником иммунотерапии рака ныне признают Уильяма Коли (William B. Coley, 1862-1936), который в 1891 году впервые внедрил стрептококковые бактерии в организм пациента с неоперабельной формой рака. В течение последующих 40 лет он вводил бактериологические препараты более чем 1000 больным. В дальнейшем, эти препараты были названы вакциной (или токсином) Коли. Коли и другие врачи, применявшие его метод, сообщали об отличных результатах, в особенности при лечении пациентов с саркомой костей и мягких тканей.

Однако методика Коли не получила при его жизни широкого распространения и не была введена во врачебную практику, несмотря на все усилия и предоставленные доказательства. И вот только теперь, когда научные исследования вновь привели к возрождению интереса к иммунотерапии, заслуги Коли перед медициной были признаны.
Читать дальше →
Total votes 31: ↑29 and ↓2 +27
Comments 11

Как и зачем создавать NginX-модуль — теория, практика, профит

Reading time 18 min
Views 16K


Василий Сошников (Mail.Ru)


Сегодня я вам расскажу о том, как создавать nginx-модули и, что самое главное, попытаюсь ответить, зачем это надо делать. Это надо далеко не всегда, но есть определенный круг задач, который можно решить на стороне nginx.
Total votes 25: ↑23 and ↓2 +21
Comments 2

Третья волна блокчейн-решений несет с собой технологию CATs

Reading time 8 min
Views 8.1K
В декабрьском материале «Как выглядит успех альткойна» мы обещали опубликовать пост, в котором принцип работы специальных токенов приложений — Custom Application Tokens (CATs) — описан более подробно. В этой статье речь пойдет именно об этой технологии, позволяющей любому бизнесу выпустить собственную внутреннюю цифровую валюту на блокчейне для оплаты товаров и услуг в рамках своего проекта.

image

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

Близится третья волна развития блокчейн-решений, заставляющая обратить внимание на технологию CATs. Но для того чтобы лучше понимать тенденции сегодняшнего дня, стоит начать с предыстории.
Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Comments 5

Лямбда-исчисление на JavaScript

Reading time 8 min
Views 58K
Привет! В этой статье я хочу в очередной раз взглянуть на лямбда-исчисление. Теоретическую сторону вопроса на хабре обсуждали уже множество раз, поэтому взглянем на то, как лямбда-исчисление может выглядеть на практике, например, на языке JavaScript (чтобы примеры можно было выполнять прямо в браузере).

Итак, основная идея: всё есть функция. Поэтому мы ограничим себя очень узким кругом возможностей языка: любое выражение будет либо анонимной функцией с одним аргументом (x => expr), либо вызовом функции (f (x)). То есть весь код будет выглядеть похожим образом:

id = x => x
double = f => x => f (f (x))

Поскольку результатом работы функций будут другие функции, нам понадобится способ интерпретировать результат. Это единственное место, в котором пригодятся нетривиальные возможности JavaScript.
Читать дальше →
Total votes 38: ↑31 and ↓7 +24
Comments 53

Сервер приложений на pl/pgsql

Reading time 23 min
Views 10K
Артем Макаров, руководитель отдела IT компании «Проект 111», на одном из прошлых PG Day рассказал, как бизнес может решиться на такое решение как постройку собственной ERP-системы на Postgres и application-сервер на хранимых процедурах. Какие из этого последовали плохие, хорошие стороны. Стоит отметить, что Артем никогда не был настоящим программистом, хотя и писал довольно много кода. Скорее его можно назвать анти-менеджер и евангелист, и лоббист для бизнеса IT-решений. Поэтому в его докладе взгляд не только со стороны технического специалиста, но и менеджера.
Читать дальше →
Total votes 27: ↑24 and ↓3 +21
Comments 31

Трудные уроки: пять лет с Node.js

Reading time 11 min
Views 35K
После пяти лет работы с Node.js я многое понял. Я уже делился некоторыми историями, но в этот раз хочу рассказать о том, какие знания дались труднее всего. Баги, проблемы, сюрпризы и уроки, которые вы можете использовать в собственных проектах!

Базовые концепции


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

Классы


Когда я только начал работать с Node.js, то написал скрапер. Очень быстро я понял, что если ничего не предпринять, то он будет осуществлять много запросов параллельно. Одно это стало важным открытием. Но поскольку я ещё не полностью усвоил мощь экосистемы, то сел и написал собственный ограничитель параллелизма. Он работал и проверял, что в каждый момент времени активны не более N запросов одновременно.
Читать дальше →
Total votes 33: ↑27 and ↓6 +21
Comments 8

К чёрту мотивацию, вам нужна дисциплина

Reading time 4 min
Views 120K
Если вы желаете что-то сделать, то есть два способа этого достичь.

Первый, более распространённый и в значительной мере неправильный вариант — попытаться мотивировать себя.

Второй, весьма непопулярный, но абсолютно правильный выбор — воспитание дисциплины.

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

В чём же разница?
Читать дальше →
Total votes 62: ↑53 and ↓9 +44
Comments 63

Своя криптовалюта на ethereum

Reading time 4 min
Views 90K


Общая рыночная капитализация глобального рынка криптовалют за последний год выросла с $6 млрд (в январе 2016 года) до $28 млрд (на текущий момент). С начала 2017 года рынок криптовалют вырос примерно в полтора раза. На биржах торгуются уже больше сотни разных криптовалют. Крупные организации объединяются в консорциумы, чтобы выпускать свою валюту. Даже государства делают свои национальные криптовалюты. Технологии блокчейна дошли до такого уровня, что уже почти любой может запустить свою криптовалюту, чем мы в этой статье и займемся. Легче всего создать свои монеты на смарт контрактах на базе ethereum.

Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Comments 36

Не находите ли вы неудачной кнопку перехода на страницу номер 100?

Reading time 1 min
Views 20K
Поговорим про интерфейсы и про то, что видим на этой ленте статей, прокрутив её вниз, до пагинатора.



Конечно, очевидно, что после кнопки с номером «8», ведущей на страницу номер 8 по стрелке, похожей на стрелку возле слова «Туда» должна идти кнопка, ведущая на страницу с номером 9.

Но вы удивитесь, увидев, куда она ведёт. Просто наведите мышь и посмотрите на адрес ссылки. «Очевидность» существует месяца 3 и мне удалось по ошибке нажать эту кнопку и сходить на сотую страницу раза 3. Стало понятно, что в этой кнопке что-то не так и в интернете кто-то неправ.

Поможем доказать это.

1. Почему вредно после кнопки «8» ставить кнопку со стрелкой, похожей на стрелку «туда», но ведущую не туда?

К примеру, вот очень похожая…

Total votes 86: ↑70 and ↓16 +54
Comments 67

Топ инструментов разработки для PostgreSQL

Reading time 6 min
Views 187K

Конференция PG Day Russia растет и масштабируется: этим летом мы готовим для вас доклады и тренинги по всем наиболее популярным базам данных, а также по администрированию и хранению данных. в рамках подготовки мы запустили корпоративный блог, где планируем делиться ценной информацией о происходящем в мире баз данных. Первый пост посвящен инструментам разработки для PostgreSQL, его автор varanio будет рад ответить на ваши вопросы и комментарии!


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


Это, конечно, не строго математическая выборка, но тем не менее получился некоторый список инструментов на слуху, которые достойны того, чтобы их "пощупать", что я и собираюсь сделать в этой статье.


Если вашего инструмента нет в списке, или у вас просто есть что сказать, добро пожаловать в комментарии.


Итак, вот неформальный топ и субъективное описание.

Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Comments 73

Судьба пятого взаимодействия в физике висит на волоске

Reading time 17 min
Views 31K
image

«Смотрите-ка, мистер Галилео всё правильно рассчитал». Это заключение было основано не на самом аккуратном эксперименте, но он был одним из самых зрелищных – поскольку проходил на Луне.

В 1971 году космонавт миссии Apollo 15 Дэвид Скот уронил пёрышко и молоток с одной высоты и обнаружил, что они одновременно достигли лунной поверхности. Ускорение, придаваемое гравитацией, не зависит от состава или массы тела, как и предполагал Галилей в своём (апокрифическом) эксперименте с Пизанской башней.

Или всё-таки зависит? Перенесёмся на первую страницу The New York Times в январь 1986 года: "Намёки на пятую силу во Вселенной меняют открытия Галилея". В газете описывалась научная работа из уважаемого журнала Physical Review Letters, проделанная физиком Эфрэймом Фишбахом и его коллегами. В ней приводились доказательства того, что ускорение, придаваемое гравитацией, зависит от химического состава рассматриваемого объекта. Получалось, что гравитация оказалась не такой, как мы думали: на её действие, по словам авторов, влияет то, что репортёр The New York Times Джон Нобл Уилфорд назвал «пятым взаимодействием», добавив его к четырём уже известным нам силам.
Total votes 34: ↑28 and ↓6 +22
Comments 30

Разработан скрипт для кражи ПИН-кода через браузер смартфона

Reading time 3 min
Views 21K

Различные способы ввода влияют на углы наклона, но нейросеть распознаёт ПИН-код в любом случае после сбора данных скриптом

Как известно, в любом смартфоне установлено множество датчиков — GPS, свет, датчики ориентации, движения и ещё около 20 сенсоров — все они непрерывно выдают данные, чтобы смартфон мог взаимодействовать с окружающим физическим миром. У разработчиков есть несколько способов доступа к информации с этих сенсоров, в том числе через мобильный браузер, согласно официальным Javascript API.

Именно этот способ открывает широкое поле возможностей для удалённого взлома. Например, специалисты из Школы информатики при Университете Ньюкасла разработали скрипт PINlogger.js, с помощью которого через браузер можно определять, какие кнопки нажимает пользователь на экранной клавиатуре. Скрипт считывает информацию с сенсоров наклона мобильного устройства при каждом нажатии. Удивительно, но в некоторых браузерах (Safari) запущенный в браузере скрипт продолжает собирать данные даже с залоченного экрана. Аналогично он работает, если на соседней вкладке вы набираете пароль в онлайн-банкинге, не закрыв предыдущую вкладку.
Читать дальше →
Total votes 28: ↑26 and ↓2 +24
Comments 20

Коктейль Яманаки продлил жизнь мышам на 50%

Reading time 4 min
Views 34K


Это фото LAKI 4F мышей с факторами Яманаки при приеме доксициклина и без, а также долгоживущие WT мыши с доксициклином (антибиотик) и факторами Яманаки. Смотрите на кривую изгиба позвоночника.

LAKI — это быстростареющие мыши с мутацией в lamin A (LMNA). Долгоживущие мыши ставится тот же опыт, но им сейчас только 12 месяцев поэтому с средним сроком жизни в 3 года и максимальным на сегодня 5 лет результаты ожидать можно в 2018-2019 годах.

Сама статья в Cell. Для тех, у кого нет доступа — пользуйтесь sci-hub.io — пиратские научные статьи.

Опыт был проведен в институте Салка в Ла Холле, Южная Калифорния испанцем Бальмонте.
Все началось в 2006 году, когда японец Яманаки открыл 24 фактора (сейчас основные только 4 OSKM, с помощью которых и был проведен опыт) де-дифференциации или плюрипотентности клеток по обращению клеток, например кожи, обратно в стволовые клетки.

Затем, в 2013 году немец Хорватс нашел 353 эпигенитических маркера старения человека, по которым с точностью в 1.5 года определялся хронологический возраст человека. Для стволовых клеток этот возраст равнялся 0.
Total votes 31: ↑27 and ↓4 +23
Comments 32

Примеры реальных патчей в PostgreSQL: часть 3 из N

Reading time 5 min
Views 7.9K

Сегодня я хотел бы вновь рассказать о некоторых патчах, принятых за последнее время в PostgreSQL (а также утилиту pg_filedump). Аналогичные статьи, опубликованные на Хабре ранее, набрали достаточно много плюсиков, что заставляет думать, что они представляют для кого-то интерес. Если вы пропустили предыдущие статьи, вот они — раз, два, три. Несмотря на то, что рассмотренные патчи были написаны мной, не стоит забывать о вкладе людей, которые их ревьювили и тестировали. Проделанная этими людьми работа зачастую оказывается больше и сложнее работы самого автора. Особо активное участие в разработке рассмотренных пачтей приняли Федор Сигаев, Robert Haas, Tom Lane, Дмитрий Иванов, Григорий Смолкин, Andres Freund, Анастасия Лубенникова и Tels.

Читать дальше →
Total votes 27: ↑25 and ↓2 +23
Comments 21

От моноидов к алгебрам де Моргана. Строим абстракции на Haskell

Reading time 14 min
Views 13K

Что общего у нормального распределения, конечных автоматов, хеш-таблиц, произвольных предикатов, строк, выпуклых оболочек, афинных преобразований, файлов конфигураций и стилей CSS? А что объединяет целые числа, типы в Haskell, произвольные графы, альтернативные функторы, матрицы, регулярные выражения и статистические выборки? Наконец, можно ли как-то связать между собой булеву алгебру, электрические цепи, прямоугольные таблицы, теплоизоляцию труб или зданий и изображения на плоскости? На эти вопросы есть два важных ответа: 1) со всеми этими объектами работают программисты, 2) эти объекты имеют сходную алгебраическую структуру: первые являются моноидами, вторые — полукольцами, третьи — алгебрами де Моргана.

Читать дальше →
Total votes 35: ↑34 and ↓1 +33
Comments 12

Вы знаете, что такое трансдьюсеры

Reading time 6 min
Views 44K

Трансдьюсеры были анонсированы еще в далеком 2014, с тех пор по ним было написано немалое количество статей (раз, два), но ни после одной статьи я не мог сказать, что понимаю трансдьюсеры кристально ясно. После каждой статьи у меня возникало ощущение, что я приблизительно понимаю что-то сложное, но оно все равно оставалось сложным. А потом однажды в голове что-то щелкнуло: "я ведь уже видел этот паттерн, только он назывался иначе!"

Читать дальше →
Total votes 59: ↑55 and ↓4 +51
Comments 98

Атом — минимальный кирпичик реактивного приложения

Reading time 15 min
Views 46K
Здравствуйте, меня зовут Дмитрий Карловский и я… клиент-сайд разработчик. За плечами у меня 8 лет поддержки самых различных сайтов и веб-приложений: от никому не известных интернет-магазинов, до таких гигантов как Яндекс. И всё это время я не только фигачу в продакшн, но и точу топор, чтобы быть на самом острие технологий. А теперь, когда вы знаете, что я не просто хрен с горы, позвольте рассказать вам про один архитектурный приём, которым я пользуюсь последний год.

Данная статья знакомит читателя с абстракцией «атом», предназначенной для автоматизации слежения за зависимостями между переменными и эффективного обновления их значений. Атомы могут быть реализованы на любом языке, но примеры в статье будут на javascript.

Осторожно: чтение может вызвать вывих мозга, приступ холивара, а также бессонные ночи рефакторинга.
Читать дальше →
Total votes 55: ↑49 and ↓6 +43
Comments 36

Information

Rating
Does not participate
Registered
Activity