Как стать автором
Поиск
Написать публикацию
Обновить

Компания Маклауд временно не ведёт блог на Хабре

Сначала показывать

Языки «Властелина колец»: как язык создал целую вселенную

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


Рождение Средиземья


21 сентября 1937 года в Англии вышла небольшая книжка, озаглавленная просто – «Хоббит», автором числился мало известный за пределами научного мира Дж. Р. Р. Толкин. Читатели приняли текст хорошо, но никто не понял, чем все это грозит миру.

Толкиновский бум грянул через два с лишним десятилетия.

Эпопея «Властелин колец» вышла в 1954/55-м, американское издание, после которого началось безумие с лозунгами «Гендальфа в президенты», появилось еще через шесть лет. Потом книгу и автора узнали во всех концах мира, помимо ученого-лингвиста он стал популярным писателем.

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

Удивительно, что в данном случае первичным был не художественный текст, а языки.

Толкин говорил, что его книги написаны лишь для того, чтобы у придуманных им языков был дом. Что не увлекайся он с детства созданием конлангов (от английского constructed language – сконструированный или искусственный язык), то мы бы не получили ни «Хоббита», ни тем более «Властелина колец».

Dear Haters. За что хейтеры травят юзеров, и как с этим бороться

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


Чуть больше недели назад в Фейсбуке прогремела история, на которую откликнулось множество популярных блогеров и простых пользователей. Питерский программист с ДЦП Иван Бакаидов, занимающийся, в том числе, тематикой голосового управления, написал программу для людей с дефектами речи, чтобы помочь им нормально общаться с окружающими. Некоторые пациенты с ДЦП страдают дизартрией — нарушением, делающим речь неразборчивой. Существует и множество других патологий, сопровождающихся речевыми нарушениями, которые не связаны с ДЦП, а вызваны, например, травмами, врожденными и наследственными заболеваниями. Все эти люди хотят говорить, но не могут. Иван решил им помочь. Программу заметили, с Иваном связался вице-президент Google Джейсон Титус и пригласил принять участие в гугловской конференции, а также рассмотреть возможность интеграции его разработки в Google Meet — это облегчит использование приложения для людей с ограниченными возможностями. Иван поделился новостью в социальных сетях. И его начали травить. В первую очередь — «свои», то есть, участники сообществ, страдающие, как и он, детским церебральным параличом. Случай, к сожалению, не единственный и весьма характерный. Откуда же все-таки берутся хейтеры и существуют ли методы борьбы с подобными явлениями природы?
Читать дальше →

5 приемов по разделению «бандла» и «ленивой» загрузке компонентов в React

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

image


Разделение Javascript-кода на несколько файлов называется разделением «бандла» или сборки (bundle splitting). Это позволяет загружать только тот код, который который используется приложением в данный момент, другие части загружаются по необходимости (по запросу пользователя).


Распространенные случаи разделения сборки и «ленивой» или отложенной загрузки (lazy loading) включают в себя следующее:


  • Загрузка дополнительного кода при переходе пользователя к новому представлению (view — слой, отвечающий за визуальное отображение)


  • Загрузка такого кода может быть связана с определенным действием, таким как прокрутка или нажатие кнопки


  • Также можно реализовать предварительную загрузку определенных ресурсов, которые представляют потенциальный интерес для пользователя


  • Это приводит к тому, что когда пользователь захочет получить доступ к определенной функциональности, она уже будет готова

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

Как собрать свой собственный прибор ночного видения за $50 из смартфона

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


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

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

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

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

История нефтеперевозок. От танкеров с бакинской нефтью до современных монстров

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


В 1847 году английский химик Джеймс Янг был занят перегонкой нефти, которая, в очень скромных количествах, выделялась в угольных месторождениях. Янг хотел получить легкое ламповое масло (сразу скажем, что до керосина дело у него так и не дошло), но получил масло тяжелое и вязкое.

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

Правда, новое производство Янга и его компаньонов Мелдрама и Бинни испытывало постоянные проблемы с поставками сырья, потому что «естественного просачивания нефти» было явно недостаточно для удовлетворения спроса на парафин. Янг проявлял чудеса изобретательности (например, догадался получать нефть из горючего сланца), но в конце концов новые фабриканты неизбежно встали перед проблемой завоза нефти.
Читать дальше →

Расчёты гравитационных манёвров в космосе или зачем человечеству нужны компьютеры

Время на прочтение10 мин
Количество просмотров13K
Что вы делаете, когда вдруг выясняется, что задача, над которой вы работаете не имеет решения? Принципиально не имеет, можно даже не пытаться. Правильно, откладываете до лучших времён, а лучше, забываете о ней, чтоб не портить себе аппетит и психику.

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

К рубежу 19-20 веков прогрессивное человечество столкнулось с доказательством невозможности создания волшебных и точных математических формул, описывающих наше бытие. Например, к 1899 году французский математик Анри Пуанкаре доказал, что существует бесконечно много частных решений задачи трёх тел. Другими словами, существует бесконечно много разных формул, описывающих движение, например, космического тела в поле тяготения двух других. Для каждого объекта, момента времени, положения в пространстве надо всё считать отдельно, и пока считаешь, задача потеряет актуальность, комета улетит, а мы облажаемся с гравитационным манёвром и эта чёртова консервная банка с надписью NASA станет нашим гробом. А чтобы описать поведение системы множества тел, потребуется время, сопоставимое с возрастом Вселенной. Распаковывай чемоданы обратно, мы никуда не летим, дорогая.


Приблизительные траектории трёх одинаковых тел, находившихся в вершинах неравнобедренного треугольника и обладавших нулевыми начальными скоростями
Читать дальше →

В поисках упорядоченного множества в Python: разбираемся с теорией и выбираем лучшую реализацию

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


Множество (Set) — структура данных, которая позволяет достаточно быстро (в зависимости от реализации) применить операции add, erase и is_in_set. Но иногда этого не достаточно: например, невозможно перебрать все элементы в порядке возрастания, получить следующий / предыдущий по величине или быстро узнать, сколько элементов меньше данного есть в множестве. В таких случаях приходится использовать Упорядоченное множество (ordered_set). О том, как оно работает, и какие реализации есть для питона — далее.

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

Разукрашиваем вывод в консоли: теория и практика

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


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

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

Игра в Нострадамуса

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

Давайте спрогнозируем, сколько еще, как минимум, осталось жить масочному режиму, Интернету или Хабру? Прикинем на пальцах, ничего не зная, кроме того, сколько времени уже с нами эти явления, а обоснуем свои предсказания нехитрыми трюками из статистики и принципом Коперника.

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

Немного о том, как работает виртуальный DOM в React

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

image


Настоящий или реальный (real) DOM


DOM расшифровывается как Document Object Model (объектная модель документа). Проще говоря, DOM — это представление пользовательского интерфейса (user interface, UI) в приложении. При каждом изменении UI, DOM также обновляется для отображения этих изменений. Частые манипуляции с DOM негативно влияют на производительность.


Что делает манипуляции с DOM медленными?


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


Манипуляции с DOM являются сердцем современного интерактивного веба. К сожалению, они намного медленнее большинства JavaScript-операций. Ситуация усугубляется тем, что многие JavaScript-фреймворки обновляют DOM чаще, чем необходимо.


Допустим, у нас имеется список из 10 элементов. Мы изменяем первый элемент. Большинство фреймворков перестроят весь список. Это в 10 раз больше работы, чем требуется! Только 1 элемент изменился, остальные 9 остались прежними.


Перестроение списка — это легкая задача для браузера, но современные веб-сайты могут осуществлять огромное количество манипуляций с DOM. Поэтому неэффективное обновление часто становится серьезной проблемой. Для решения данной проблемы команда React популяризовала нечто под названием виртуальный (virtual) DOM (VDOM).

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

Восстановление погибших дискет с осциллографом

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

Плата Greaseweazle F7 Plus выступает в роли флоппи-контроллера, источник

Есть много хороших современных решений для чтения данных со старых дискет и жёстких дисков. Пожалуй, одно из лучших — Greaseweazle: очень функциональная система с открытым железом, исходным кодом, недорогая. На форумах вам с радостью помогут дружелюбные фанаты. Плата подключается напрямую к дисководу, заменяя собой флоппи-контроллер — и считывает данные в малейших деталях. Работает на дискетах с любой защитой от чтения.

Но что делать, если Greaseweazle не может прочитать биты на магнитной поверхности — и сообщает о повреждённых данных? Что, если на дискете материал исторической важности, исходный код в единственном экземпляре или культовая игра? Неужели всё потеряно?

Совсем нет. Известный хакер Крис Эванс с инженером Филом Пембертоном протестировали новый способ восстановления данных с флоппи-дискет, используя осциллограф. В частности, они вернули к жизни игру «Ферма старого Макдональда» для BBC Micro. Подробнее см. в блоге Криса Эванса, здесь краткий пересказ, как это было сделано.

Три письма об увольнении: почему люди уходят с любимой работы

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


В юности я думал, что для того, чтобы быть счастливым на работе, достаточно трех вещей: интересных задач, достойной зарплаты и свободы творчества.

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

Я перевел три самых известных «прощальных письма» с Хакерньюс — о расставании с любимой работой из-за совершенно несправедливых превратностей судьбы. Надеюсь, вам понравится это пятничное, немного печальное чтиво о встрече с реальностью на рынке труда в IT.

Я смогла бросить работу в Google — и вы сможете бросить свою


Клэр Шапиро



«У вас, наверное, очень большие яйца, мисс!» — Незнакомец в самолёте

Проработав в Google 7 лет, я покинула Кремниевую долину, чтобы переехать в Бельгию и присоединиться к Совету по инновациям (Board of Innovation). Вопрос номер один, который мне задавали (и до сих пор задают) семья, друзья, незнакомцы и коллеги с обеих сторон: «Почему?»
Читать дальше →

Стенд для испытания некоторых технических решений для 3Д принтера

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


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

Итак, что мы имеем. Года полтора назад достался мне на халяву кусок… Э-эм… Ну то есть 3D принтер Wanhao i3plus. Должен сказать я сам выбрал данный девайс, причем выбирал я не по тех. характеристикам (будем откровенны, у всех девайсов данного ценового диапазона они, мягко говоря, так себе), а привлек меня цветной сенсорный дисплей от компании DWIN, а точнее операционная система на которой он построен. Ну кастомизация там и все такое… Да ладно, кого я обманываю, конечно же повелся на свистоперделки.

В общем поигрался пару месяцев. Сделал к нему термокамеру, на фото ниже


Нарисовал свою прошивку для дисплея:
Читать дальше →

Мы работаем во тьме: кодинг «глазами» незрячих программистов

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


We work in the dark — we do what we can — we give what we have. Our doubt is our passion and our passion is our task. The rest is the madness of art.

Henry James, «The Middle Years»

Согласно статистическим данным ВОЗ, в той или иной степени нарушениями ближнего или дальнего зрения страдают около 2.2 миллиардов человек, из которых не менее 40 миллионов абсолютно слепы.

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

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

Клавиатура, наушники и ничего лишнего


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


Тука Ояла в офисе Vincit, расположенном в Тампере
Читать дальше →

Ближайшие события

Привет, Telnet! И пока. Команда OpenSSL s_client для зашифрованных соединений

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

Изображение:  JanBaby, via Pixabay CC0

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

Но протокол telnet не использует шифрование. В сегодняшних реалиях жертвовать безопасностью — непозволительная роскошь. Однако, есть ряд задач, которые telnet с переменным успехом может выполнять: тестирование сети, проверка портов, а также взаимодействие с IoT устройствами и роутерами. 

Казалось бы, утилиту можно легко использовать, как продвинутую версию ping. Сама по себе, команда ping в лучшем случае всего лишь проверяет доступность хоста (иногда эту команду вообще не получится использовать, например, из-за ограничений политики доступа). А вот команда telnet не только проверяет, открыт ли порт, но и может взаимодействовать с сетевыми службами через этот порт. Но со временем мы всё чаще будет сталкиваться с необходимостью использовать зашифрованное соединение, где telnet вновь окажется бессилен.
Читать дальше →

Радиоконструктор «Электронные кубики»: ностальгия по детству

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

У меня есть очень любопытный радиоконструктор. Он был выпущен в 1977 году и стоил в ту пору 10 рублей. Из этого конструктора можно собрать 35 конструкций, причём, без пайки. В качестве элемента питания используется батарейка типа «Крона».

Конструктор c неизменным успехом был испытан на детях поколений X, Y и Z. В причине этого успеха мы попробуем разобраться дальше.

Как я перестал бояться и полюбил бомбу. История создания и уничтожения ядерного оружия

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

Радиоактивный пепел от нескольких тысяч ядерных боеголовок словно одеяло покроет Землю и начнется «Ядерная зима»… А, стоп. Или не начнется? Надеюсь, что практический эксперимент человечество никогда не застанет. В целом, вокруг ядерного оружия ходит много слухов: то об его разрушительности, то о вымирания человечества в ходе ядерной войне. Да это и неудивительно, применений вне полигона было всего два и то на заре эпохи ядерного оружия. А «рецепты» бомб хранятся под самым секретным грифом. Я предлагаю рассмотреть историю ядерного вооружения и его мифологию, а также как там что устроено.

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


Кого можно считать «отцом атомной бомбы»? К сожалению, на этот вопрос не существует однозначного ответа. Созданию ядерного оружия предшествовала череда научных открытий на протяжении практически всей первой половины 20-го века. Условную точку отсчета можно поставить в 1896 году, когда французский химик Антуан Анри Беккерель обнаружил радиоактивность урана. Следующие несколько десятилетий ученые шаг за шагом приближались к созданию атомной бомбы: открытие альфа-, бета- и гамма-лучей; обнаружение радиоактивных изотопов некоторых химических элементов; публикация закона радиоактивного распада; открытие ядерной изомерии… Наконец, в 1938 году немецкие физики Отто Ган и Фриц Штрассман впервые в мире смогли осуществить искусственное расщепление ядра атома (урана). С этого момента началась эпоха разработки ядерного оружия. А также немецкая ядерная программа.
Читать дальше →

Как выбрать механическую клавиатуру для программиста или геймера

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

В большинстве своём, механические клавиатуры превосходят мембранные сразу по нескольким параметрам. Но выбор клавиатуры не сводится лишь к отсечению всех экземпляров класса «мембранные». Механические клавиатуры тоже сильно разнятся. И как же найти ту самую единственную?

Сначала мы быстро вспомним, чем отличаются эти два базовых класса клавиатур, а потом постепенно придём к ответу на поставленный вопрос.

1. Количество одновременных нажатий клавиш (KRO): у мембранных клавиатур обычно оно составляет 2 (2KRO), 3 (3KRO) или 6 (6KRO). У механических — таких ограничений вообще нет (NKRO). Неважно, сколько клавиш вы нажмёте одновременно: компьютер получит и обработает соответствующие сигналы от каждой из них.

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

Есть ли у игровой индустрии шанс стать более человечной?

Время на прочтение11 мин
Количество просмотров10K
Бесконечные переработки без отпусков и неоплачиваемые сверхурочные. Сокращения и увольнения. Выгорание и переезды в поисках новой работы. Конфликты с руководством и непрозрачные схемы вознаграждения и т.д. Именно из этого сделана современная игровая индустрия, — так считает журналист Джейсон Шрайер, автор вышедшей на прошлой неделе книги Press Reset, которая рассказывает об обратной стороне геймдева.

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

image

Отправной точкой для разговора о будущем геймдева Шрайер делает вопрос: “Что работникам игровой индустрии нравится в ней меньше всего?”. На этот вопрос опытные разработчики отвечают примерно одно и то же: игровая индустрия очень сурово обходится с людьми. Она пережевывает и перемалывает их, оставляя после себя одни кости.

Даже не пытайтесь повторить это в GUI

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


Есть такое понятие, как дружественный пользователю Linux. Возникло оно оно очень давно, возможно через несколько минут после того, как Линус Торвальдс анонсировал свою разработку в листе comp.os.minix. Трудно сказать принесла-ли пользу данная концепция и различные её воплощения на рабочей станции. Понятно одно, что прогресс на этом пути довольно-таки ощутимо не совпадает с ожиданиями этого самого пользователя.

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

Предлагаем рассмотреть несколько сценариев из реальной жизни, где хочешь — не хочешь, все необходимо сделать в CLI. Таких примеров очень и очень много, это всего лишь пара кейсов в огромном множестве подобных.
Читать дальше →