Search
Write a publication
Pull to refresh
37
0.8
Константин @Cerberuser

Разработчик, экспериментатор

Send message

Усложнение команд консоли, 1979−2020

Reading time14 min
Views30K
Моё хобби — открыть «Философию UNIX» Макилроя на одном мониторе, одновременно читая маны на другом.

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

Макилрой приводит пример:

Для посторонних кажется удивительным тот факт, что компиляторы UNIX не выдают листинги: печать лучше осуществляется и более гибко настраивается с помощью отдельной программы.

Если вы откроете справку для ls, то она начинается с

ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]

То есть однобуквенные флаги для ls включают все строчные буквы, кроме {jvyz}, 14-ти прописных букв, @ и 1. Это 22 + 14 + 2 = 38 только односимвольных вариантов.
Читать дальше →

Вы не хотите усиливать иммунитет. Или крайности организма человеческого

Reading time10 min
Views36K

Что бывает, если сильно повысить иммунитет, простимулировать кроветворение или просто кушать не то, что "прописано в спецификации"? Почему общепринятый образ "больше == лучше" применительно к организму совсем не полезен для здоровья?

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

Самая короткая программа вывода десятичного числа

Reading time7 min
Views16K
В 1984-ом году вышла культовая книга Стивена Леви “Хакеры: герои компьютерной революции”. Существует любительский русский перевод, но он далёк от идеала. Я было взялся исправлять неточности в нём, положив рядом английский оригинал (кстати, и он не без греха), да забросил после второй главы. Так или иначе, хочу обратить ваше внимание на фрагмент (можно прочитать его в виде отдельной статьи), посвящённый подпрограмме печати числа в десятичной системе. Насколько можно уменьшить такую программу? Каков предел?
Читать дальше →

Unigine Engine — новый уникальный

Reading time4 min
Views22K

Пролог


Не так давно я увидел showreel движка, который выглядит более чем конкурентно

showreel


В этой статье я максимально кратко расскажу об этом движке и косвенно сравню с прямыми конкурентами.

зарегестрироваться и скачать тут

Немного про историю


Все началось в 2004(!) году с Александра Запрягаева и его opensource проекта.

В 2010 году вышел Heaven Benchmark на основе Unigine.

В 2012 вышла спорная с точки зрения геймплея, но симпатичная OilRush.

OilRush

В 2017 вышла забавная индюшка

Sumoan

Текущее состояние


10 апреля 2020 вышла Community версия, которую можно, использовать если у вашей компании доход меньше 100к$ или для некоммерческого проекта.

Маленький, но гордый: DuckDuckGo против рекламных монстров

Reading time5 min
Views67K


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

Знакомьтесь: DuckDuckGo — поисковая система, в корне отличающаяся по своей принципу работы от «большой пятёрки» поисковиков (Google, Yahoo, Bing, Baidu, Яндекс). Основное отличие DuckDuckGo заключается в том, что он уважает принципы конфиденциальности и анонимности в интернете и не собирает никакой информации о своих пользователях.

Как появился DuckDuckGo


Основателем этого стремительно набирающего популярность поисковика является американец по имени Гэбриэл Вайнберг (Gabriel Weinberg). Вайнберг, уже имевший опыт нескольких стартапов различной степени успешности (от опередившей время, но не слишком популярной школьной соцсети Learnection, в которой могли общаться родители и учителя, до более успешного проекта NamesDatabase, предшественника Facebook), в один из дней неожиданно обнаружил, что Google выдаёт пользователям далеко не самые релевантные результаты по их запросам, и решил это улучшить.
Читать дальше →

Как я отказался от вычисления квадратного корня

Reading time14 min
Views48K


Очень часто при цифровой обработке сигналов необходимо вычислить длину вектора, обычно это делается по формуле A=SQRТ(X^2+Y^2). Здесь возвести в квадрат значение не сложно, но операция вычисления квадратного корня не является простой операцией, особенно для микроконтроллеров. Кроме того, алгоритмы вычисления корня выполняются не стабильное время, и для алгоритмов, в которых таких вычислений много, становится сложно прогнозировать время, необходимое для вычислений.

С такой задачей столкнулся и я. О том, как я отказался от процедуры вычисления корня, читайте ниже.
Читать дальше →

Маски сброшены

Reading time7 min
Views74K
image

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

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

Что-то подобное происходит и сейчас. На волне всеобщей изоляции резко возрос спрос на товары, которые раньше мало кого интересовали. Возьмем, к примеру, медицинские маски. За три месяца с октября по декабрь 2019 года было зарегистрировано чуть более 2300 доменных имен с частицей *mask*. Как вы думаете, сколько из этих ресурсов предназначалось для продажи медицинских масок?..

Ноль… Ни одного… К слову, в аптеках маски продавались в среднем по цене от 7 до 15 рублей за штуку.

Наступил 2020 год, а с ним коронавирус. Все резко изменилось. За те же 3 месяца с января по март в сети появилось 32 000 доменных имен с частицей *mask*, 80 процентов из которых эксплуатировали тематику уже именно медицинских масок. Далее все развивалось двумя путями. Часть ресурсов была предназначена для реальной продажи масок, только вот их стоимость маски возросла в среднем до 60-рублей за штуку. Другие же сайты носили откровенно мошеннический характер.
Читать дальше →

Главная причина, почему не Linux

Reading time4 min
Views174K
Сразу хочу сказать, что речь в статье пойдёт исключительно о настольном применении Линукса, т.е. на домашних компах/ноутах и рабочих станциях. Всё нижеизложенное не касается Линукса на серверах, встроенных системах и прочих подобных устройствах, т.к. то, на что я сейчас вылью тонну яда, этим сферам применения, наверное, как раз на пользу.
Читать дальше →

Язык программирования karasic

Reading time8 min
Views52K

Привет, друг.


Как известно, каждый уважаемый кодер рано или поздно пишет свой логер, парсер json и язык программирования. Поскольку первое и второе мы уже написали, то нам ничего не остаётся, как представить наши наработки по новому инновационному языку программирования karasic.


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

О математике и пандемиях

Reading time5 min
Views16K
Disclaimer 1

Я математик, НЕ ВРАЧ и не являюсь профильным специалистом-эпидемиологом, а свою последнюю научную работу на тему матмоделирования эпидемий написал без малого 20 лет назад. По всем вопросам здоровья, коронавирусов и смысла жизни консультируйтесь с лечащим врачом, не будьте глупыми людьми.
Disclaimer 2

Ниже будет некоторое количество графиков. Перед их построением я умышленно декалибровал и упростил модель, отстроившись от параметров COVID-19. Приведенные графики демонстрируют развитие эпидемии некоторого условного вируса в некоторой условной популяции в условном времени. Не делайте предсказаний о ходе текущей пандемии, опираясь на мои картинки, не будьте глупыми людьми.
Ну, а теперь — поехали! По понятным причинам, ныне изрядно подскочил интерес ко всякому пандемическому, и всевозможные математические и не очень математические модели бродят по соцсетям стаями. Число же эпидемиологов и специалистов по системам дифференциальных уравнений и вовсе превысило все мыслимые пределы. Тем не менее, во всем этом информационном буйстве странным образом обойдены молчанием перколяционные, они же стохастические имитационные, модели. Этот недостаток мы сейчас немедленно исправим. Кстати, впервые о подобных моделях (как и многом другом) я прочитал в замечательной книжке Гулда и Тобочника «Компьютерное моделирование в физике».
Читать дальше →

В софте всё восхитительно, но все недовольны

Reading time15 min
Views48K


Есть типичная позиция, которую можно встретить на Хабре и не только: «хотя железо с годами всё лучше, человечество свело эффект на нет тем, что пишет софт всё хуже».

Мол, ядер в процессорах стало больше, но тормозит всё пуще прежнего. Electron и Slack — порождения тьмы, пришедшие лишить нас счастья и памяти. Мобильные приложения стали прожорливее, чем старые операционные системы. А в самих операционных системах уже толком нет прогресса, но почему-то они продолжают разбухать в размерах. То ли дело было, когда люди умели уместить ОС на дискету!

Скажу прямо: когда я вижу подобные заявления, у меня бомбит. По-моему, в них упускают целый ряд важных факторов. А в итоге ситуация напоминает классическую речь Луи Си Кея «Everything's amazing and nobody's happy»: всё стало удивительно хорошо, а люди сидят и жалуются.

Поэтому решил описать эти упущенные факторы. Поскольку текст получился резким, хочу подчеркнуть, что мнение сугубо моё личное (хоть я и ссылаюсь на конференции компании, в которой работаю).

Функциональное программирование — то, что вам (наверно) рассказывали. Если вы слушали

Reading time16 min
Views31K
Мне нравятся разговоры на тему «мне раньше в школе/институте/родители говорили, а теперь я узнал». Если по счастливой случайности я оказываюсь хоть немного компетентен в обсуждаемом вопросе, то такие разговоры обычно сводятся к одному из трех вариантов: «где вообще ты раньше слышал такую чушь?» (если собеседник прав), «а с чего ты взял, что это так?» (если он не прав) и «ты прав, только это не противоречит тому, что тебе говорили раньше» (в подавляющем большинстве случаев). Нравятся такие разговоры мне по следующей причине: обычно их инициатор не обременен излишним предварительным знанием вопроса, что в некоторых случаях позволяет ему указать на некоторые моменты, которые принимались как очевидные, на самом деле таковыми не являясь. И одной из тем для подобных бесед оказалось функциональное программирование.

Вообще про ФП написано и сказано столько, что вроде бы все вопросы о его применимости, крутости, производительности и т.п. обглоданы до костного мозга. И все-таки такого рода вопросы поднимаются снова и снова, и всегда найдется желающий рассказать о том, что вы все неправильно поняли, а на самом деле оно эвона как. Пожалуй, сегодня я примерю на себя эту неблагодарную роль, поскольку недавно попались на глаза несколько постов на эту многострадальную тему. В первом и втором в очередной раз рассказано, что ФП — дрянь и изучать его — только портить свою карму будущего специалиста. Другие (раз и два) куда более адекватны, в них автор ставит целью объяснить, что все эти ваши лямбды, комбинаторы, категории — не более, чем пыль в глаза, а само ФП — штука простая, понятная и приятная в быту.

Насколько это соответствует истине?
Читать дальше →

Внезапно: кавычки против мракобесия. Что бы это ни значило

Reading time6 min
Views29K
Есть на свете вещи действительно важные. Наверное, есть. Должны быть. Да по любому есть.
А есть на свете вещи «важные». Чувствуете разницу? «Важных» вещей полно на работе, в политике, в телевизоре и интернете. Сегодня поговорим только про работу.

Итак, есть у нас (а может, и у вас) на работе личности, которые любят придать важности тому, что делают и говорят. Со стороны это выглядит и забавно, и комично, и нелепо. Хотя, если не обращать на важность внимание, то происходит чудо: перестаешь ее замечать и начинаешь верить. И все вокруг начинают верить.

Так исчезают вещи «важные», и появляются важные, Важные, ВАЖНЫЕ и СУПЕРВАЖНЫЕ!!! Я за то, чтобы такого не было. Всё должно быть адекватно реальности. Поэтому я, читая письма и слушая речи, всегда применяю к ним фильтр. Он уже автоматом срабатывает, как предустановленное сглаживание и размывание фона в камере смартфона.

Главный фильтр, конечно, кавычки.
Читать дальше →

Как я взломал мошенников, или просто внутренности фишинг-панелей

Reading time5 min
Views73K

INTRO


Недавно столкнулся с обычной для интернета ситуацией — классической просьбой от родственника отдать свой голос за него в каком-то голосовании. Оказалось, человека "взломали" мошенники, а ссылки на голосование вели на фишинговые ресурсы.


Я увлекаюсь безопасностью, поэтому решил из интереса проверить безопасность фишингового ресурса.


"Админку" мошенников удалось успешно взломать, внутри нашлось n-количество украденных учеток. Их логины были переданы в службу безопасности VK, плюс соответствующие "abuse" жалобы были направлены регистраторам, хостерам.


А теперь расскажу как и какие оказываются бывают Phishing-as-Service панели...

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

Кто умнее чем IDEA?

Reading time4 min
Views14K

Два года назад я вызвался постоять на стенде нашей компании JetBrains на последней конференции JBreak в Новосибирске. Перед конференцией мне спустили сверху вот такие карточки:



И сказали, мол, ну раздай каким-нибудь людям на конференции на своё усмотрение. Я запаниковал. Как же я буду людей-то выбирать?


Тогда я довольно плотно работал с анализом потока данных в статическом анализаторе IntelliJ IDEA для Java. Во-первых, я обкатывал новые фичи, проверяя код самой IDE. Во-вторых, разгребал входящие баг-репорты. Иногда IDEA находила удивительные проблемы, и мне приходилось долго разбираться, чтобы вообще понять, правильное ли предупреждение она выдаёт или это баг.

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

Речевой бот в банке — худший UX ever

Reading time4 min
Views33K
— Добрый вечер, меня зовут Наталья, чем я могу Вам помочь?
— Здравствуйте, у меня была заблокирована карта.
— Хорошо, назовите свое имя.
— Василий Моржаков.
(вбивает на клавиатуре)
— Ваше кодовое слово?
— Декобраз через Е.
— Простите, Вас не слышно.
— Де-ко-браз, через ЕЕ
— Что-то со связью, извините, можете повторить? (и кажется вешают трубку)

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

Как я проект с JavaScript на Scala переписывал

Reading time9 min
Views35K

Я никогда не смогу ходить! Потому что я ползаю.
—Цитаты великих

    Меня всегда учили прежде всего здороваться, так что — здравствуйте. Сегодня я расскажу про творческие (и не очень) муки, страдания и боль, которые я испытывал на протяжении определенного периода своей жизни, который я обозначу как ПРОЕКТ. Сначала он был на JavaScript (node.js), а теперь он на Scala (Play). Сразу скажу, что я — один из самых субъективных негодяев в обозримой Вселенной, поэтому некоторые обороты, высказывания и иже с ними могут быть восприняты уважаемыми читателями весьма неоднозначно. Короче, я предупредил. И у меня еще одна небольшая просьба — если уж взялись прочитать статью, то не кидайтесь сразу строчить разоблачающие комментарии. Дочитайте. Я не Пастернак, правду говорю. И вообще, почти все спорные моменты так или иначе освещаю, объясняю.
Ну что там

15 тривиальных фактов о правильной работе с протоколом HTTP

Reading time7 min
Views241K
Внимание! Реклама! Пост оплачен Капитаном Очевидность!

Ниже под катом вы найдёте 15 пунктов, описывающих правильную организацию ресурсов, доступных по протоколу HTTP — веб-сайтов, «ручек» бэкенда, API и прочая. «Правильный» здесь означает «соответствующий рекомендациям и спецификациям». Большая часть ниженаписанного почти дословно переведена из официальных стандартов, рекомендаций и best practices от IETF и W3C.



Вы не найдёте здесь абсолютно ничего неочевидного. Нет, серьёзно, каждый веб-разработчик теоретически эти 15 пунктов должен освоить где-то в районе junior developer-а и/или второго-третьего курса университета.

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

История человека, чувствительного к электромагнитному излучению, или как мы щупаем край обрыва… UPD: +FAQ

Reading time48 min
Views67K

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


Да без проблем. В наше время есть даже какая-то ностальгия встречаться по старинке, заранее обговорив, кто во что одет и все такое.

Мы встретились и мило пообщались пару часов. Он подробно ответил на все мои вопросы. Ему были интересны наши исследования, и он по ним много вопросов задал. А уже под конец, когда мы готовились расходиться, я, как человек любопытный, спросил:
— А почему вы не носите сотовый? 
Он с задумчивой американской улыбкой посмотрел на меня и спросил в ответ:
— Тебе короткую версию или длинную? 
Я осторожно предложил начать с короткой, а там как пойдет. Честно говоря, моя основная рабочая версия была — слежка Большого Брата. Я был неправ…

Пошло хорошо. Мы просидели практически до закрытия кафе. Впечатление от разговора было сильным.
 
В общем — это история про человека, который в расцвете сил в 40 с гаком лет стал инвалидом. Но нашел в себе силы выжить и (пусть не полностью) восстановиться. 


Кому интересно, как оно (очень редко) бывает, добро пожаловать под кат.
Читать дальше →

Deadlock Empire — игра для разработчиков

Reading time2 min
Views15K

Хабр, как известно, не место для игр, но мы нашли одно исключение, которое, как нам кажется, достойно упоминания здесь!

Встречайте: Deadlock Empire!

Суть игры — управление планировкой потоков, код которых приведен в заданиях. Управлять нужно так, чтобы добиться ошибочной ситуации: взаимблокировки, повторных значений счетчиков, достижения определенных участков кода и прочих непредвиденных ситуаций, которые нужно осознавать при разработке многопоточных приложений.
Читать дальше →

Information

Rating
2,842-nd
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer
Senior