Как стать автором
Обновить

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

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

Как я влюбился в Rust и чего мне это стоило

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

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


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


Хочу сразу заметить, что эта статья целиком и полностью — субъективное мнение автора, единственная цель которой — заинтересовать читателей, ценящих в программировании как хобби те же самые вещи, что и он сам, и речь в ней не пойдёт ни о быстродействии, ни о востребованности языка в сфере IT, ни о каких-либо других технических составляющих этой области, вокруг которой часто возникают разного рода споры. Я остановлюсь на том, что Rust — быстрый и безопасный компилируемый ЯП общего назначения. Об остальном — далее.

Читать дальше →
Всего голосов 59: ↑52 и ↓7+66
Комментарии68

Практическое руководство по TypeScript для разработчиков

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

Представляю вашему вниманию перевод статьи "Working With TypeScript: A Practical Guide for Developers".


Что такое TypeScript?


TypeScript — это популярный статический типизатор (static type checker) или типизированное надмножество (typed superset) для JavaScript, инструмент, разработанный Microsoft и добавляющий систему типов к гибкости и динамическим возможностям JavaScript.


TypeScript развивается как проект с открытым исходным кодом, распространяется под лицензией Apache 2.0, имеет очень активное и высокопрофессиональное сообщество, а также огромное влияние на экосистему JavaScript.


Установка TypeScript


Для того, чтобы начать работу с TypeScript, нужно либо установить специальный интерфейс командной строки (command line interface, CLI), либо воспользоваться официальной онлайн-песочницей или другим похожим инструментом.

Читать дальше →
Всего голосов 26: ↑24 и ↓2+33
Комментарии4

Трюки CSS, которые сделают из вас ниндзя верстки

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

Сегодня я хочу рассказать вам о нескольких CSS-свойствах и значениях, которые редко упоминаются в специальной литературе, но, на мой вгляд, представляют определенный интерес с точки зрения скорости и качества разработки веб-интерфейсов.


Многие свойства, о которых пойдет речь, являются экспериментальными. Большинство из них поддерживаются всеми современными браузерами, однако, если вы решите использовать какое-либо из названных свойств в продакшне, не поленитесь зайти на Can I use и уточнить поддержку (недавно сильно расстроился, обнаружив, что Safari не поддерживает атрибут loading="lazy").


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


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


Итак, вы готовы к нашему небольшому путешествию в удивительный и почти безграничный мир CSS? Тогда вперед.


grid + place-items


Здесь вы найдете полное визуальное руководство по Grid и Flexbox.


Данная техника позволяет выравнивать элементы по горизонтали и вертикали при помощи всего лишь двух строк кода.

Всего голосов 28: ↑26 и ↓2+33
Комментарии7

Ахиллесова пята коронавируса

Время на прочтение4 мин
Количество просмотров12K
Вирус SARS-​CoV-2 критически зависит от особого механизма, обеспечивающего синтез его белков. Коллаборация под руководством исследовательской группы из Высшей Технической Школы Цюриха (ETH Zurich) докопалась до молекулярного устройства этого процесса и показала, что его можно ингибировать специальными химическими соединениями, тем самым существенно подавляя репликацию вируса в инфицированных клетках. 


Видео: Said Sannuga, Cellscape.co.uk / ETH Zurich, The Ban Lab 

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

Когда клетка здорова, рибосома движется вдоль РНК в строго размеренном темпе, считывая три нуклеотида РНК за шаг. Такой трехбуквенный код определяет соответствующую аминокислоту, которая прикрепляется к наращиваемому белку. Почти не случается такого, чтобы рибосома сдвинула один или два нуклеотида РНК вперед или назад, отступив от этого правильного трехчастного паттерна. Если такой сдвиг в рибосоме (его называют «сдвиг рамки считывания») все-таки происходит, то он приводит к ошибкам в считывании генетического кода.
Всего голосов 32: ↑29 и ↓3+40
Комментарии8

Реверс-инжиниринг неизвестного микроконтроллера

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


Сложная завязка


Предыстория...


В рамках моей работы над реверс-инжинирингом электронных eInk-ценников мне довелось столкнуться с интересной проблемой. Конкретная компания (Samsung Electro Mechanics/SoluM) перешла с использования сторонних чипов, происхождение которых мне удалось выявить (Marvell 88MZ100) на новый чип, который стала применять со своими ценниками следующего поколения.

Казалось, что это их собственный чип, разработанный силами компании именно для этой цели. Браться за реверс-инжиниринг такой штуки – дохлый номер. Друг дал мне несколько ценников с такими чипами – повозиться. Оказалось, они бывают двух типов: одни с сегментированным дисплеем на электронных чернилах, а другие – с обычным графическим дисплеем на электронных чернилах. Главный чип в обеих моделях один и тот же, поэтому первым делом я взялся за устройство с сегментированным дисплеем, поскольку оно проще, и на его примере легче разобраться с неизвестной системой. Было не вполне ясно, с чего начать, но, конечно же, как раз такие задачки всегда самые интересные! 

Исследование



Глупо пытаться решить кроссворд, не прочитав вопросы к нему. Столь же глупо браться за реверс-инжиниринг устройства, не собрав сперва всю информацию, которая о нем уже имеется. Итак, что нам исходно известно? Протокол беспроводной передачи данных, вероятно, такой как обычно, поскольку ни одна компания не захочет мигрировать на новый либо поддерживать для своих клиентов сразу два протокола, не спеша выполняя миграцию. Старый протокол был ZigBee-подобным на 2,4 Ггц, поэтому новый, вероятно, такой же. Вот фото платы с обеих сторон.

Читать дальше →
Всего голосов 50: ↑49 и ↓1+69
Комментарии18

Что такое компьютерный зрительный синдром и как от него защититься?

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


Головные боли, ощущение рези в глазах, словно под веки кто-то насыпал песка, застилающая взор пелена — все эти симптомы отлично знакомы каждому, кто вынужден проводить за экраном компьютера по несколько часов к ряду. Большинство людей относится к проявлениям компьютерного зрительного синдрома как к чему-то само собой разумеющемуся, и совершенно напрасно, ведь запущенный КЗС способен обернуться серьезными осложнениями в будущем. Как же предотвратить их появление и навсегда избавиться от столь неприятного недуга? Попробуем разобраться.

То, чего не может быть: почему наши глаза не дружат с компьютером?


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

За годы научно-технического прогресса на нашей планете сформировался уникальный объект экосферы — техносфера, частью которой являются персональные компьютеры и многочисленные мобильные гаджеты, которые мы с вами используем каждый день. В полезности этих устройств не приходится сомневаться: каждое из них делает нашу жизнь лучше, помогая решать огромное количество разнообразных задач. Вот только наше с вами тело попросту не успевает подстраиваться под стремительно меняющиеся правила игры.
Читать дальше →
Всего голосов 39: ↑31 и ↓8+39
Комментарии37

Технологии честности и «отец всех продаж»

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


Воровали всегда.

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

А без помощников-приказчиков на бойком месте никак не обойтись.

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

Их увещевали, давили на совесть, объясняли, что воровство — грех, что честным быть выгоднее, приятнее и почетнее, чем быть воришкой — но проблема, появившаяся вместе с появлением торговли, отравляла существование торговцам почти шесть тысячелетий.

Сейчас, с высоты веков, нам, наверное, ясно, что на свете есть проблемы, которые должны решаться не кнутом или пряником, а технологичностью, максимальной отстраненностью «человеческого фактора» от операционных процессов, но вряд ли это было с такой же степенью отчетливости понятно человеку в XIX веке.
Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии8

Гений и не лечишься. Является ли одаренность психическим расстройством?

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


Каждый из нас хотя бы раз в жизни слышал про кого-то: это талантливый программист, музыкант, дизайнер. Обычно в подобной роли выступает сын маминой подруги, но иногда признаки гениальности проявляют коллеги по работе или кто-то из приятелей. Однако при близком знакомстве с такими персонажами часто оказывается, что одаренность поставляется в комплекте с целым набором ментальных проблем. Один гений страдает периодическими депрессиями, второй мнителен до психоза, третий не пользуется айрподсами, потому что слышит голоса прямо у себя в голове. Четвертый ужасно рассеян и необязателен, пятый страдает от перепадов настроения, которые не лучшим образом сказываются на его работоспособности, шестой не считает нужным мыться и вообще следить за своим внешним видом… Так может быть, одаренность — это болезнь? Что говорят по этому поводу профессиональные исследователи?
Читать дальше →
Всего голосов 36: ↑29 и ↓7+37
Комментарии49

Инструменты для аудита CSS

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


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

Существуют некоторые инструменты, облегчающие выполнение указанных задач. Но давайте начнем с того, что понимается под «аудитом» CSS.

Аудит CSS — задача не из легких


Как правило, оценка качества кода включает в себя его анализ в поиске багов и других проблем, например, проблем с производительностью. Для большинства языков программирования концепция аудита кода проста: она работает или не работает. Но CSS — это особенный язык, большая часть ошибок которого игнорируется браузером. Один и тот же стиль можно применять совершенно по-разному. Это обуславливает сложность аудита CSS. И «сложность» — это еще мягко сказано.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+30
Комментарии0

Отслеживание и визуализация положения МКС с помощью 30 строк JavaScript-кода

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


Предлагаю вашему вниманию перевод этой замечательной статьи.

В этом туториале мы создадим веб-приложение, визуализирующее положение любого спутника, например, Международной Космической Станции (далее — МКС), в режиме реального времени (ну, почти).

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

  • Мы узнаем, где найти данные для отдельного спутника, известные как двухстрочный набор элементов (two-line element set, TLE) (далее — ДНЭ)
  • Мы используем библиотеку ”satellite-js” для предсказания орбиты спутника по ДНЭ (это часть напрямую связана с ракетостроением)
  • Мы используем библиотеку ”CesiumJS” для визуализации результата, однако, вы можете использовать любую библиотеку/движок, которые умеют работать с долготой, широтой и высотой

Превью конечного результата:


Здесь мы видим движение МКС по орбите со скоростью, увеличенной в 40 раз. Для того, чтобы увидеть текущее положение МКС, нажмите на иконку часов в верхнем левом углу панели управления.
Всего голосов 18: ↑16 и ↓2+24
Комментарии0

Шпаргалка по JS-методам для работы с DOM

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

image


Основные источники



Введение


JavaScript предоставляет множество методов для работы с Document Object Model или сокращенно DOM (объектной моделью документа): одни из них являются более полезными, чем другие; одни используются часто, другие почти никогда; одни являются относительно новыми, другие признаны устаревшими.


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


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


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


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

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

Загадка отсутствия дефолтного приложения «Калькулятор» на iPad и поиск его замены

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


Любой человек, мало-мальски знакомый с экосистемой Apple, знает, что приложение «Калькулятор», по умолчанию предустановленное на iPhone, Apple Watch и компьютеры Mac, обошло стороной планшеты компании. Вероятно, многие люди, впервые пытавшиеся произвести вычисления на iPad, недоумевали и задавались вопросом: как компания, издавна славившаяся своим софтом и произведшая множество революций в сфере программного обеспечения, до сих пор не смогла обеспечить пользователей своих планшетов, казалось бы, самой простой программой, аналоги которой школьники создают, впервые изучая программирование: калькулятором. Спойлер: мы не знаем.

Читать дальше →
Всего голосов 31: ↑28 и ↓3+40
Комментарии57

Как спасти разбитую читалку, если у вас прямые руки

Время на прочтение9 мин
Количество просмотров16K
Статей о том, как подключить дисплей на электронных чернилах к Arduino, STM32, ESP32 и т.д. (нужное подчеркнуть) на этом ресурсе более чем достаточно, и я не стану утомлять читателя очередным погодным информером. Речь пойдет о том, как в хозяйстве можно использовать электронную книгу, ставшую жертвой комбинации четвертой фундаментальной силой природы – гравитации и седалищной мышцы Человека Разумного. Хе-хе. 

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

Для простоты рассмотрим, как устроен один чернильный «пиксель». В наиболее распространённом случае, это прозрачная сфера микронных размеров, наполненная неким подобием силиконового масла. В ней плавает некоторое количество частиц черного и белого цвета, имеющих разноименные заряды. И нет, это не электроны с протонами. Как правило частицы представляют собой полимер, обладающий электретными свойствами, то есть они способны долговременно удерживать электрический заряд со всеми вытекающими отсюда свойствами. То есть они будут соответственно себя вести в электрическом поле – заряженные частички будут испытывать силу притяжения или отталкивания от обкладок конденсатора с соответствующими зарядами. Ниже, я проиллюстрировал эту магию:

Всего голосов 74: ↑74 и ↓0+74
Комментарии21

Ускоряем загрузку веб-страниц: тестируем 4 стратегии оптимизации изображений

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


Статистика не устаёт повторять нам про устойчивую корреляцию между падением скорости загрузки страниц сайта и ростом частоты отказов со снижением конверсии. Я не открою Америку, если скажу, что работу сайта замедляет «раздутая» полезная нагрузка (с плохо оптимизированными изображениями и избыточным HTML-кодом). Это заставляет сервер выполнять лишнюю работу. Огромный пласт такой работы связан с проблемами оптимизации изображений. 

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

Не очень эффективными я считаю стратегии, которые опираются на тезис о том, что изображения — это статический контент (в течение статьи я ещё разовью эту мысль и приведу аргументы). Сейчас на мобильные устройства приходится большая доля интернет-трафика, но есть проблема: эти устройства имеют различные размеры, разрешения экрана, операционные системы и прикладное ПО (например, браузеры). Каким образом сделать так, чтобы веб-страница быстро (!)и корректно загружалась на любой платформе и выглядела при этом одинаково?
Читать дальше →
Всего голосов 19: ↑18 и ↓1+27
Комментарии1

Непостижимая гиперпродуктивность учёных

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

imageИллюстрация David Parkins из статьи Nature 561, 167-169 (2018).


Научный прогресс двигается быстрее и быстрее. Новости полны пресс-релизами о перспективных разработках и об очередных взятых вершинах. Кто же они, герои эпохального подъёма? Новые гении, как Тесла, Эйнштейн или Тьюринг? Возможно ли измерить вклад гения в науку? Оказывается, да, теперь есть такая дисциплина — наукометрия. Если совсем по-простому, нынче вклад в науку измеряется числом вышедших статей. Если судить по этому показателю, существует в мире не менее сотни людей, чьи способности таковы, что они публикуют не менее одной научной работы в рабочую неделю. Пять дней — публикация в рецензируемом научном журнале. Хотите узнать секрет их креативности?

Читать дальше →
Всего голосов 100: ↑95 и ↓5+120
Комментарии301

Thunderbird, RNP и важность хорошего API

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


Недавно мне довелось побеседовать с разработчиком Thunderbird о проектировании API. В ходе этой беседы я поделился соображениями о RNPновой реализации OpenPGP, которую Thunderbird недавно стал использовать вместо GnuPG.

Собеседник скептически отнесся к моему тезису о том, что API RNP нуждается в улучшении, и спросил, «разве это не субъективно – какие API лучше, а какие хуже?». Согласен, у нас нет хороших метрик для оценки API. Но не соглашусь, что мы в принципе не в силах судить об API.

На самом деле, подозреваю, что большинство опытных программистов узнают плохой API, если увидят его. Думаю, далее в этой статье получится разработать хорошую эвристику, которую я попытаюсь выстроить на моем собственном опыте работы с (и над) GnuPG, Sequoia и RNP. Затем я рассмотрю API RNP. К сожалению, этот API не только можно запросто использовать неправильно – он к тому же обманчив, поэтому пока его не следует использовать в контекстах, где принципиальная роль отводится соблюдению безопасности. Но целевая аудитория Thunderbird – это люди, известные своей уязвимостью, в частности, журналисты, активисты, юристы и их партнеры, отвечающие за коммуникацию; все эти люди нуждаются в защите. На мой взгляд, это означает, что в Thunderbird должны лишний раз подумать, стоит ли использовать RNP.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии1

Школа юных управленцев

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

Люди сейчас «новая нефть», и только ленивый не говорит о том, как важны soft skills.

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

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

Мы с друзьями собирались на кухне, обсуждали попытки внедрения прочитанного и разбирали интересные случаи из практики. Это всё и сформировало наше общее видение мастерства управления.
Читать дальше →
Всего голосов 25: ↑19 и ↓6+24
Комментарии7

Переписывание сценария и производственный хаос: с какими проблемами столкнулись разработчики культовой BioShock Infinite

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

Сегодня стартуют продажи Press Reset — одной из самых ожидаемых книг, посвященных игровой индустрии. Её автор, известный журналист Джейсон Шрайер (“Кровь, пот и пиксели”), подробно анализирует те ситуации, которые приводили к закрытию успешных студий и знаменитых проектов. Издание Polygon опубликовало отрывок книги, посвященный обстоятельствам создания легендарной игры BioShock Infinite. Под катом — перевод публикации.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии13

Гравицапа для межпланетных перелётов или гравитационный манёвр

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

Вопрос эмиграции в последние десятилетия стоит наиболее остро. И если 40 лет назад пределом мечтаний было перебраться за океан, то в XXI веке умами овладела мечта о релокейшне на Марс, например. Однако там тоже в скором времени может стать тесно. Остаётся одна дорога — колонизация Солнечной Системы и экзопланет. Допустим, мы собрались покинуть внутреннюю область Солнечной Системы, а, если повезёт, то и совсем выбраться за её пределы. Помимо невероятных объёмов тушёнки и кислорода, необходимых для выживания в суровом Космосе, нам потребуется в разы на порядки большее количество топлива, чтобы всё это добро дотащить. И ещё столько же топлива, чтобы тащить то топливо. И ещё топливо.

И самое обидное, что скорее всего мы закончим свой век среди троянских астероидов Юпитера, померев от тоски. Потому что топлива всё равно ни на что не хватит. Однако присмотримся к нашей Солнечной системе повнимательнее. Вот те же «троянцы и греки» — не просто так столпились в точках Лагранжа L4 и L5 Юпитера. Их туда «затолкала» гравитация планеты-гиганта, не потратив ни единой капли гидразина.

Давайте же и мы применим дармовую энергию Природы для достижения благородной цели доставки полезной нагрузки в далёкий космос.
Читать дальше →
Всего голосов 41: ↑40 и ↓1+55
Комментарии11

1 CPU 1 Гб – а я хочу мониторинг, как у больших дядей

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


Я обожаю читать на хабре статьи про то, как устроены системы больших интернет-компаний. Кластеры SQL-серверов, монг и редисов. Тут у нас кластер ELK собирает трейсинг, там – сборка логов, здесь балансер выдает входящим запросам traceID и можно отслеживать, как запрос ходит по всем нашим микросервисам. Класс. Но, допустим, у вас совсем маленький проект и вы можете себе позволить лишь VPS минимальной конфигурации. Реально ли на ней сделать мониторинг не хуже, чем у больших проектов? Я решил – надо попробовать.
Читать дальше →
Всего голосов 64: ↑62 и ↓2+78
Комментарии82