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

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

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

Карманная книга по TypeScript. Часть 6. Манипуляции с типами

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

image


Мы продолжаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript".

Другие части:



Обратите внимание: для большого удобства в изучении книга была оформлена в виде прогрессивного веб-приложения.
Система типов TS позволяет создавать типы на основе других типов.


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


Дженерики


Создадим функцию identity, которая будет возвращать переданное ей значение:


function identity(arg: number): number {
 return arg
}
Читать дальше →
Всего голосов 18: ↑16 и ↓2+17
Комментарии1

Старинное искусство номографии

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

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


Как выглядят номограммы и как они работают


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


Допустим, вы провели реакцию в растворителе, а теперь собираетесь его удалить (выпарить), чтобы собрать продукт реакции. Растворитель улетучивается изнурительно медленно, а чтобы ускорить процесс, вы решаете его нагреть, но вот беда — греть раствор нежелательно, так как продукт реакции от нагревания может испортиться. Создав пониженное давление, вы уменьшите температуру кипения растворителя и сумеете его отделить не причинив вреда растворенному в нем веществу. При нормальном атмосферном давлении 760 мм ртутного столба вода кипит при 100 С, однако, при давлении 40 мм кипит уже при 34 С.

Читать дальше →
Всего голосов 36: ↑34 и ↓2+42
Комментарии8

Такая разная колонизация Африки

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


Африка. Континент контрастов, с которыми многие из нас сталкиваются ещё в детстве. С одной стороны Николай Дроздов, Иван Затевахин и канал Animal Planet рассказывают нам про всяких интересных зверушек, а Discovery показывает прекрасные виды на всякие вулканы Килиманджаро и водопады Виктория. С другой стороны – «Не ходите в Африку гулять» вперемешку с ужасами от мам и бабушек, мотивирующих поедание невкусной каши упоминанием голодающих африканских детей. И чем старше мы становимся, тем больше на первый план выходят не реки вот такой ширины и горы вот такой вышины, а разного рода Бармалеи. Причём чаще всего представляющие собой лютую смесь из обрывков новостных репортажей, остатков слабой тройки по географии в школе и каких-то диких баек из жёлтых газет и того же цвета сайтов. В итоге, весь континент воспринимается как сплошное месиво из гражданских войн, голодающих детей, военных переворотов, эпидемий и каннибализма. Очень похоже, кстати, на распространённое восприятие средних веков. Просто одно было давно, а другое сейчас, но далеко. Не сказать, чтобы всех перечисленных прелестей был особый дефицит, но всё-таки оно творится не везде и не всегда, а местами и время от времени. Причём где-то чаще, а где-то практически никогда. Вот о том, почему так происходит, речь и пойдёт.
Читать дальше →
Всего голосов 73: ↑44 и ↓29+33
Комментарии75

Запускаем DOOM на лампочке

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

В DOOM уже поиграли на пианино и на клавиатуре, на тесте на беременность (кстати, это был фейк) и на паяльнике, на самолёте, банкомате, принтере и осциллографе.

Пришло время для лампочек.

imageВнутри лампочки TRÅDFRI RGB GU10 (IKEA model: LED1923R5) хакеры из Next-Hack нашли модуль Silicon lab's MGM210L RF module с 108кб оперативки и запустили на нем DOOM. Исследователям-хакерам пришлось попотеть над оптимизацией использования оперативки, потому что оригинальный DOOM требует 4мб, но они смогли.

Модуль имеет только 1 МБ внутренней флэш-памяти, поэтому умельцы добавили внешнюю флэш-память SPI для хранения файла WAD, который можно загрузить с помощью YMODEM. Процессор у лампочки 40-MHz Cortex M4.
Всего голосов 48: ↑33 и ↓15+33
Комментарии25

Десятикратное улучшение производительности React-приложения

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

image


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


Около года назад в Techgoise я получил возможность поработать с большим React-приложением. Мы получили (унаследовали) готовую кодовую базу, внесли основные правки и начали добавлять в приложение новые интересные возможности.


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


В данной статье я расскажу о том, как нам удалось добиться уменьшения этой цифры с 1,5 Гб до 150 Мб, что, как следствие, привело к улучшению производительности почти в 10 раз, и мы больше никогда не сталкивались с Ошибкой.


Поиск узких мест в производительности


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


1. Профилирование компонентов с помощью расширения для Google Chrome

Читать дальше →
Всего голосов 28: ↑21 и ↓7+19
Комментарии13

Почему Скотт пришёл к Южному Полюсу вторым, а Амундсен предпоследним

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


Если ты ненадёжен — то не стоит руководить полярной экспедицией.
Хотя если ты самонадеян до крайности — как ты сам догадаешься о своей некомпетентности?

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

Суть дела: в январе 1911 в Антарктиде высадились две экспедиции: британская Роберта Скотта и норвежская Руаля Амундсена. Оба хотели достигнуть Южного полюса — последнего места на Земле, где ещё не побывал человек. Группы перезимовали у побережья и стартанули к полюсу почти одновременно. Кто успевал первым, тому и должна была достаться вся слава.
Читать дальше →
Всего голосов 153: ↑132 и ↓21+159
Комментарии159

История одной ракушки. И нефти

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


В марте 1878 года Дервиш-паша, командующий турецкими войсками, вручил князю Святополк-Мирскому ключи от города Батуми, а уже в июне того же года Берлинский конгресс утвердил статус порта Батуми как порто-франко, то есть порта, где пошлины за ввоз и вывоз товаров не взимались.

В том же году два купца первой гильдии (оба — инженеры-путейцы), Палашковский и Бунге, начали строительство железной дороги Баку – Батуми.

Выгода от этой дороги была очевидной: бакинским нефтедобытчикам, «оседлавшим» самые богатые и самые разработанные прииски, нужен был выход к морю, а возможность беспошлинного вывоза «черного золота» открывала невероятные горизонты.
Читать дальше →
Всего голосов 44: ↑40 и ↓4+51
Комментарии17

Тоска по былому Интернету

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

Мне одному кажется, что сегодняшний Интернет скучен и чрезмерно коммерциализирован?

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

Интернет был более интересным, потому что у него было больше индивидуальности. Скажем, вы были нёрдом, и вам нравились «Звездные войны», «Звездный путь», аниме, видеоигры или ролевые игры, вы набирали все, что вам нравилось, и вы получали индивидуально разработанные сайты на Geocities, некоторые хорошо продуманные, некоторые просто вырвиглазные, но каждый был уникален, каждый со своей индивидуальностью. Каждый сайт — признание в любви к конкретному фэндому. Каждый сайт был с любовью снабжен скриншотами, краткими описаниями эпизодов или игр, а также загружен фанфиками и обзорами.
Читать дальше →
Всего голосов 78: ↑67 и ↓11+75
Комментарии253

Rust в ядре Linux

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


В более ранней публикации  компания Google объявила, что в Android теперь поддерживается язык программирования Rust, применяемый в разработке этой ОС как таковой. В связи с этим авторы данной публикации также решили оценить, насколько язык Rust востребован в разработке ядра Linux. В этом посте на нескольких простых примерах рассмотрены технические аспекты этой работы.

На протяжении почти полувека C оставался основным языком для разработки ядер, так как C обеспечивает такую степень управляемости и такую предсказуемую производительность, какие и требуются в столь критичном компоненте. Плотность багов, связанных с безопасностью памяти, в ядре Linux обычно весьма низка, поскольку код очень качественный, ревью кода соответствует строгим стандартам, а также в нем тщательно реализуются предохранительные механизмы. Тем не менее, баги, связанные с безопасностью памяти, все равно регулярно возникают. В Android уязвимости ядра обычно считаются серьезным изъяном, так как иногда позволяют обходить модель безопасности в силу того, что ядро работает в привилегированном режиме.
Читать дальше →
Всего голосов 39: ↑37 и ↓2+44
Комментарии14

Реверс инжиниринг приборной панели Nissan Murano Z50

Время на прочтение7 мин
Количество просмотров17K
Имеем Nissan Murano 2005 года выпуска. Американец. Ни блютуза ни, уж тем более, цифровой приборной панели, а хочется. Если с блютузом проблема решается прикручиванием устройств подобных этому:

…то оцифровать приборную панель уже будет посложнее. Однако, глаза боятся, а руки делают.

Для экспериментов я приобрел приборку от европейца, но принципиально она ничем от американца не отличается, кроме как расположением кнопок одометра и стоп-сигнала, и настройками тока для стрелочки спидометра (а еще она не такая жирная и не пытается найти у меня нефть). Дело в том, что у европейца и американца отличается максимальная скорость на спидометре, соответственно при 240км/ч на американце, европеец покажет приблизительно 210. Таким образом, графическая накладка не взаимозаменяемая:


Далее, согласно документации на приборную панель (файл Приборка.pdf, все архивы оставлю в конце) подключаем питание к приборке.  Контакты 22, 23, 24 черные провода, на схеме обозначены буквой «B» подключаем к минусу (один или все вместе неважно), и контакты 21«Y/R» — желтый с красной полосой и 20«O» — оранжевый (оба сразу) к + 12 вольтам. Контакт 15«R/W» красный с белой полосой это освещение приборки, то же 12 вольт, но подключать не обязательно. Важное замечание: фактический номер контакта может отличатся от указанного в схеме, ибо инженеры нисан – японцы на всю голову и именуют номер контакта по японскому! То есть на плате три штекера — один основной для подключения к тачке и два для подключения кнопок стоп-сигнала и сброса одометра. Так вот вместо того, чтобы обозначить в каждом штекере контакты от 1 и до максимального, они объединили номера всех трех штекеров в одну группу, таким образом первый по номеру контакт находится на первом штекере, а последний на третьем. Короче ориентируйтесь по цветам и моим картинкам. Вот фото задней части:
Читать дальше →
Всего голосов 39: ↑30 и ↓9+32
Комментарии34

Находим и устраняем уязвимости бинарных файлов в Linux — с утилитой checksec и компилятором gcc

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

Изображение: Internet Archive Book Images. Modified by Opensource.com. CC BY-SA 4.0

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

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

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

  • как использовать утилиту checksec для поиска уязвимостей;
  • как использовать компилятор gcc для устранения найденных уязвимостей.

Установка checksec


Для Fedora OS и других систем на базе RPM:

$ sudo dnf install checksec

Для систем на базе Debian используйте apt.

Быстрый старт с checksec


Утилита сhecksec состоит из единственного скриптового файла, который, впрочем, довольно большой. Благодаря такой прозрачности вы можете узнать, какие системные команды для поиска уязвимостей в бинарных файлах выполняются под капотом:
Читать дальше →
Всего голосов 27: ↑21 и ↓6+22
Комментарии5

Как защититься от синдрома запястного канала? 

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


Наряду с компьютерным зрительным синдромом, о котором мы уже рассказывали ранее, среди IT-специалистов распространен и другой весьма серьезный недуг — синдром запястного канала. В чем проявляется данное заболевание и можно ли предотвратить его развитие? Давайте разбираться. 

Причины и симптоматика синдрома запястного канала


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

Человеческий организм имеет огромное количество подобных мест: на одной лишь руке могут развиться 8 разных туннельных синдромов. Поэтому с медицинской точки зрения называть синдром запястного канала, о котором пойдет речь в сегодняшней статье, просто туннельным синдромом, без уточнения локализации патологического процесса, некорректно. Хотя справедливости ради стоит сказать, что именно карпальный туннельный синдром (так называют синдром запястного канала неврологи) является самой распространенной формой компрессионно-ишемической невропатии из всех существующих: его общая доля в популяции составляет около 5%, а ежегодный прирост заболеваемости достигает 3 случаев на каждую тысячу населения.
Читать дальше →
Всего голосов 62: ↑60 и ↓2+81
Комментарии63

StreetWriter: собираем устройство для печати водой по асфальту

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


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




Вступление


Я начал заниматься этим проектом, потому что хотел оставить свой след в мире, но не хотел оставлять никаких последствий.

Я также хотел сложного проекта для моего нового 3D-принтера, который включал бы программирование для Arduino.

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

Как можно увидеть в моих видео, StreetWriter соответствует всему этому. Он пишет сообщения высотой 8 дюймов (20,32 см) водой на тротуаре, во время движении и не оставляет следов, когда вода испаряется.

Я построил два StreetWriter-а с небольшими различиями в конструкции между ними. Эта инструкция основана на второй сборке, которая несколько улучшена.

В StreetWriter-е вода под давлением подается в коллектор, в который содержит 8 автомобильных топливных форсунок. Во время движения StreetWriter-а — Arduino управляет топливными форсунками, разбрызгивая воду на тротуар. Наносимое сообщение является одним из 8, которые были записаны на SD-карту, подключенную к Arduino. Оператор может легко выбирать среди сообщений и может записывать новые сообщения на SD-карту, с помощью компьютера. Нет ограничений на длину сообщения, кроме количества воды в резервуаре. Самое длинное сообщение, которое я написал на данный момент — число Пи, с точностью до 300 знаков.
Всего голосов 36: ↑35 и ↓1+42
Комментарии9

Механические мониторы

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


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

Особенно это стало ярко проявляется в тот момент, когда появились миниатюрные сложные электронные схемы, помещенное внутрь компактных корпусов — интегральные микросхемы.

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

Конечно, с точки зрения нашего современного момента, это кажется невероятным, что телевидение может быть механическим, — у современного человека даже не укладывается в голове!

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

В основу механического телевидения было положено изобретение, называемое «диском Нипкова». 
Всего голосов 32: ↑30 и ↓2+39
Комментарии9

Когда, зачем и почему вернутся дирижабли

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


Короткая предыстория


6 мая 1937 года самый большой дирижабль в мире, «Гинденбург», сгорел при посадке на американской авиабазе Лейкхерст.

Трагедия была ужасной, в ней погибло 36 человек (35, находившихся на борту и еще один из находившихся на земле) из 97 пассажиров и членов экипажа.

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

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

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

image
Гибель «Гинденбурга», жуткая картина, потрясшая мир.

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

К 1937 году ситуация в воздухе радикально изменилась – теперь уже дирижаблям нечего было противопоставить юркой и быстрой винтовой авиации – и об их технологии надолго забыли, переключившись на создание самолетов, а позже и вертолетов, и «все деньги мира», в первую очередь, деньги военных ведомств, отныне закачивались именно в эти виды воздушного транспорта.
Читать дальше →
Всего голосов 84: ↑75 и ↓9+95
Комментарии207

Всегда старайтесь быть н̶е̶заменимым

Время на прочтение3 мин
Количество просмотров42K
Есть хорошая жизненная философия, которой можно придерживаться на рабочем месте, — это «постоянно быть готовым увольняться» («always be quitting»). Это не значит думать о том, чтобы уйти с работы. Но вести себя так, как будто вы можете уйти в кратчайшие сроки. Парадоксально, но это сделает вас лучшим инженером и откроет возможности для роста.

Так что же значит «постоянно быть готовым уйти»? Это означает «сделать себя заменимым»; «унизить себя»; «автоматизировать свою работу». Возможно, вы слышали эти более популярные ярлыки (и вам нужно будет с этим поразбираться и выяснить что это), и они дают подсказку что делать.

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

Парадоксально, но, будучи легко заменимым, вы освобождаете себя. Вы облегчаете себе переход к роли более высокого уровня и вам легче менять проекты, над которыми вы работаете. Не согласны? В замешательстве? Вот 10 конкретных вещей, которые вы можете сделать:
Читать дальше →
Всего голосов 80: ↑70 и ↓10+81
Комментарии119

SDR приёмник SoftRock Ensemble RX II

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


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

В этой публикации я хочу рассказать об удивительной конструкции, которая изменила моё представление об аппаратуре для любительской радиосвязи и положила начало моему увлечению SDR (Software Defined Radio).

Речь идёт о SoftRock Ensemble RX II, который я использую в качестве контрольного радиоприёмника уже седьмой год.
Читать дальше →
Всего голосов 38: ↑34 и ↓4+43
Комментарии13

Карманная книга по TypeScript. Часть 5. Объектные типы

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

image


Доброго времени суток, друзья! Мы продолжаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript".

Другие части:



Обратите внимание: для большого удобства в изучении книга была оформлена в виде прогрессивного веб-приложения.


В JS обычным способом группировки и передачи данных являются объекты. В TS они представлены объектными типами (object types).


Как мы видели ранее, они могут быть анонимными:


function greet(person: { name: string, age: number }) {
 return `Привет, ${person.name}!`
}

или именоваться с помощью интерфейсов (interfaces):


interface Person {
 name: string
 age: number
}

function greet(person: Person) {
 return `Привет, ${person.name}!`
}
Читать дальше →
Всего голосов 22: ↑18 и ↓4+19
Комментарии5

Краткая история азота

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


Всех приветствую! Сегодня я расскажу вам, что общего у птичьего помёта, снарядного баланса и бума химической промышленности в Первой Мировой Войне, Нобелевской премии по химии и нашего с вами общего воздуха. Готовы? Поехали!
Читать дальше →
Всего голосов 43: ↑40 и ↓3+51
Комментарии23

Почему советская лунная программа потерпела неудачу?

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


Пилотируемые полёты к Луне в 1969-1972 годах по-прежнему остаются крупнейшим достижением мировой космонавтики. Однако, Советский Союз, запустивший в космос первый искусственный спутник Земли и первого человека, так и не смог осуществить пилотируемый полёт к Луне и проиграл к концу 1960-х годов т.н. «лунную гонку», уступив пальму первенства американцам. О причинах неудачи советской лунной программы попробуем кратко разобраться в данной статье…
Читать дальше →
Всего голосов 75: ↑65 и ↓10+83
Комментарии462