Search
Write a publication
Pull to refresh
-13
0

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

Send message

Как малоизвестный британский производитель ПК изобрел ARM и изменил мир

Reading time8 min
Views14K

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

Телефоны и большая часть нашего цифрового окружения работают на семействе процессоров ARM. И новые компьютеры Apple с новым процессором M1 (на базе ARM) получают фантастические отзывы. Поэтому самое время вспомнить о странных корнях этих микросхем, распространившихся по всему миру. 

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

Но что если бы вместо этого вы решили выбрать процессоры малоизвестной компании из страны, которая не приходит на ум в качестве мирового лидера в области высокотехнологичных инноваций (по крайней мере не в 1800-х годах)? А что, если бы этот процессор был обязан своим рождением, по крайней мере косвенно, образовательному телешоу? Скорее всего, продюсеры посоветуют вам немного отмотать сценарий — «‎Давай же, отнесись к этому серьезно». И все же на самом деле все было именно так.

Это интересно!

Интуитивное объяснение интеграла. Часть I — от умножения натуральных чисел до Ньютона и Лейбница

Reading time10 min
Views65K

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

Читать далее

Лучшее в мире видео-объяснение нейронных сетей, глубокого обучения, градиентного спуска и обратного распространения

Reading time1 min
Views58K
image

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

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

Чужой код — потемки: чем опасно скачивание «безобидного» софта с GitHub

Reading time5 min
Views15K


Наверное, каждый из тех, кто читает эту статью, хорошо знаком с GitHub — крупнейшим веб-сервисом для хостинга IT-проектов и их совместной разработки. Здесь можно найти почти любой open source-проект. Для компиляции проекта может быть нужен какой-то специфический софт, которого прямо сейчас у пользователя нет, да и сам процесс сборки из исходников требует определенных знаний и опыта. Понимая это, разработчики, помимо исходного кода, очень часто размещают на гите готовые бинарные файлы. Илья Померанцев, специалист по анализу вредоносного кода CERT Group-IB, на примере реального кейса показывает, как использованием непроверенного чужого кода может привести к потере криптовалюты.
Читать дальше →

Геоблокировка: как ограничивают доступ к информации и кому это нужно

Reading time7 min
Views8.1K

На этой неделе Европейская Комиссия обсуждает вопрос, стоит ли открыть доступ к аудио и видео-контенту для пользователей, которые ранее сталкивались с геоблокировками таких цифровых провайдеров, как Netflix и Amazon Prime. Напомним, что с 2018 года, использование геоблокировки в коммерческих целях, для увеличения прибыли, запрещено. Но доступ к контенту по принципу географического фильтра допускается, чтобы защитить интеллектуальную собственность. Что же такое геоблокировка и почему в век цифровых возможностей потребитель ограничен в выборе, поговорим в материале. А также подскажем, как обойти геоблокировку.

Что такое геоблокировка?

Y Combinator: Хакерский подход к корпоративным продажам

Reading time9 min
Views2K
(В оригинале Enterprise Sales for Hackers — автор имеет ввиду и хакеров, и высококлассных инженеров-программистов, в статье мы будем называть их программистами / разработчиками / технарями)

image

Райан Джуни – предприниматель, консультант стартапов и инвестор. Сейчас он основатель и СЕО в приложении для совместной работы в индустриальных корпорациях Parsable. Ранее он основал Inporia (W11) и Omnisio (W08), приобретенные Google. Джуни получил степень бакалавра в области компьютерной инженерии в Сиднейском университете и степень магистра в области электротехники в Стэнфорде.

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

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

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

Хакеры – эксперты в понимании сложных систем и подчинению их своей воле (2). Для сложных продаж требуется тот же набор навыков, но применительно к иному виду системы (3). Там, где компьютерная система — это сложная сеть аппаратного и программного обеспечения, крупные корпорации — это сложная сеть людей и процессов — в этой системе можно разобраться и влиять на нее схожим образом. Эмерджентность (системный эффект) в корпорациях создается стимулами и правилами среди её сотрудников, также как и результаты работы компьютерной системы создаются потоками данных, организованных по строгим правилам в соответствии с программным кодом.
Читать дальше →

Тестируем веб-API ASP.NET Core

Reading time8 min
Views26K

При проектировании и разработке широкого спектра API с использованием ASP.NET Core 2.1 Web API важно понимать, что это только первый этап в создании продуктивного и стабильного решения. Наличие стабильной среды для вашего решения также очень важно. Ключ к отличному решению заключается не только в правильном построении API, но и в его тщательном тестировании, чтобы исключить возможность негативного опыта у пользователей во время использования вашего API.

Эта статья является продолжением моей предыдущей статьи для InfoQ под названием «Продвинутая архитектура веб-API ASP.NET Core». Не беспокойтесь, вам не нужно вникать в предыдущую статью, чтобы разобраться с тестированием в этой, но она может помочь вам лучше понять, как я спроектировал обсуждаемое здесь решение. На протяжении последних нескольких лет я много времени размышлял о тестировании, создавая API для клиентов. Знание архитектуры веб-API ASP.NET Core 2.1 может помочь и вам расширить ваше понимание.

Солюшн и весь код из примеров в этой статье можно найти в моем GitHub репозитории.

Читать далее

Основы дискретной математики

Reading time4 min
Views220K

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

Читать далее

То что ясно всем

Reading time5 min
Views2.8K

"То что ясно всем, ещё кто-то должен сказать"

Типа эпиграфа,

Google/Яндекс автора не сыскали

При построении модели какого-либо объекта её можно свести к представлению чёрного ящика с несколькими параметрами P(i), влияющими на выход T. Для сложного многомерного объекта это могут быть модели его "сечения" в различных плоскостях/смыслах.

В идеальном случае для получения информации, необходимой для построения модели, необходимо получить значения T для всех сочетаний его параметров, заданных с достаточно малым (равномерным) шагом в интервале значений, допустимом для каждого из параметров. Чем больше имеется точек по каждому параметру (и, соответственно, значений Т), тем точнее можно построить модель. Однако, в реальной жизни, зачастую оказывается что и параметры влияют по-разному и шаг по каждому из них разумнее делать не равномерным. Например, в начале допустимого интервала параметр слабо влияет на Т, а в середине или в конце его влияние меняется (и даже многократно) и, следовательно, шаг по такому параметру стоит делать иным.

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

Здесь следует обратить внимание на то, что существуют объекты, для которых стоимость/сложность/длительность получения каждого выходного значения T очень велики. Далее речь пойдёт именно о таких объектах и их моделях.

Читать далее

Метаклассы в Python

Reading time10 min
Views205K
Как сказал один из пользователей StackOverflow, «using SO is like doing lookups with a hashtable instead of a linked list». Мы снова обращаемся к этому замечательному ресурсу, на котором попадаются чрезвычайно подробные и понятные ответы на самые различные вопросы.

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

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

Метаклассы в Python

Reading time4 min
Views21K

Метаклассы – это такие классы, экземпляры которых сами являются классами. Подобно тому, как «обычный» класс определяет поведение экземпляров класса, метакласс определяет и поведение классов, и поведение их экземпляров.

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

Некоторые программисты рассматривают метаклассы в Python как «решения, которые ждут или ищут задачу».

У метаклассов множество применений. Выделим несколько из них:

Читать далее

Как писать книгу по физике в LaTeX. Cтатья 1

Reading time26 min
Views37K
Это моя первая статья на Хабре.

Глава 1. Введение


1.1 Позвольте представиться и почему я это пишу

Я — научный сотрудник, физик. Недавно выпустил книгу по спектроскопии объемом 880 страниц и весом 1560 грамм. Эту книгу я писал 9 лет, параллельно читая лекции по ее содержимому. Она отняла у меня очень много времени, что естественно. Что не естественно — это то, что громадная часть потраченного времени ушла на оформление, то есть на изучение языка Латех. И это при том, что я на Латехе пишу всю жизнь, лично написал и опубликовал около 50 статей в разных издательствах.

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

После публикации книги (пока, увы, только на русском языке) у меня возникло громадное желание написать ещё книгу "Как написать книгу по физике в Латехе"
Читать дальше →

Аллен Ву — «пешка», ставшая «конем» в шахматной партии США и Китая

Reading time4 min
Views43K
image

4-июня глава китайского подразделения ARM (Arm China) отказался сдавать полномочия и нанял частную охрану для защиты штаб-квартиры от въезда нового руководства или представителей ARM. Британское крыло ARM и его японские владельцы из SoftBank в растерянности. Они утверждают, что от конфликта первыми пострадают китайские разработчики.
Читать дальше →

Исключительно быстрая валидация UTF-8

Reading time4 min
Views9.4K
Текстовая строка — один из самых распространённых «типов данных» в программировании. Когда программисты думают о строке, то представляют список или массив символов. Это «достаточно хорошее» приближение, но реальность сложнее.

Символы должны быть каким-то образом закодированы в биты. Большинство строк в интернете, включая этот пост на Хабре, закодированы в UTF-8. Формат UTF-8 представляет «символы» в одном, двух, трёх или четырёх байтах. Это обобщение для стандарта ASCII, использующего только один байт на символ. То есть строка ASCII также является строкой UTF-8.

На самом деле всё немного сложнее, потому что технически UTF-8 описывает кодовые точки. Видимый символ типа эмодзи может состоять из нескольких кодовых точек… но большинству программистов эти педантичные формулировки не нужны.
Читать дальше →

Сложение двух чисел с плавающей запятой без потери точности

Reading time9 min
Views83K
Здравствуйте, друзья, как вы думаете, если мы напишем такой код:

s = a+b;
z = s-a;
t = b-z;

то не кажется ли вам, что в результате его выполнения получится, что t=0? С точки зрения привычной математики действительных чисел это и правда так, а вот с точки зрения двоичной арифметики с плавающей запятой в переменной t будет кое-что другое. Там будет то, что спасает нас от потери точности при сложении чисел $a$ и $b$. Кого интересует данная тема, прошу под кат.

Как обнаруживать перемещение атакующих по сети

Reading time8 min
Views8.7K

На проектах по анализу защищенности корпоративных информационных систем в 2019 году нашим пентестерам удалось преодолеть сетевой периметр 93% компаний. При этом в сеть 50% компаний можно было проникнуть всего за один шаг. Чтобы не дать реальным атакующим достичь цели, важно вовремя выявлять их активность. Один из критически важных этапов атаки — перемещение внутри периметра (lateral movement), когда злоумышленники расширяют свое присутствие в сети.

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

Читать далее

В пещерах этого не было

Reading time7 min
Views92K
Есть такой момент в человеческой психологии, что многие вещи, услышанные в течение жизни, начинают восприниматься как нечто само собой разумеющееся — как гравитация или магнетизм, хотя их просто кто-то когда-то придумал. От этой напасти в мозгу есть лайфхак – «В пещерах такого не было», об этом я сегодня выскажусь в плане IT.

image

Глава 0. Base-1


Когда я учился в школе (199x) все сидели на Pascal – язык чёткий, мудрый, на нём даже Dos Navigator был написан c VESA скринсейверами, а позже The Bat!, и олимпиадники ACM ICPC в 2000-е годы были в основном паскалистами. Мне из-за любви к играм и графике в то время зашёл C/C++, и сразу же в глаза бросилось фундаментальное различие – от ноля или единицы индексируются массивы, это до сих пор приходится уточнять на том же hackerrank.com.
Читать дальше →

Почему пара и кортеж — это чаще всего плохо

Reading time4 min
Views20K

Многим программистам знакомы концепции пар и кортежей (pair и tuple) — их реализации есть в STL, Boost (и может быть где-нибудь еще). Для тех, кто не знает, что это такое, я коротко поясню — это шаблоны, позволяющие сгруппировать несколько значений (пара — только 2, tuple — много) с целью хранить\передавать\принимать их вместе.
Пример из MSDN:
   pair <int, double> p1 ( 10, 1.1e-2 );
   pair <int, double> p2 = make_pair ( 10, 2.22e-1 );
   cout << "The pair p1 is: ( " << p1.first << ", " << p1.second << " )." << endl;
   cout << "The pair p2 is: ( " << p2.first << ", " << p2.second << " )." << endl;
 

Поначалу идея кажется заманчивой, ведь:
  1. Вместо передачи в функцию нескольких векторов одинаковой размерости можно передать только один вектор пар\кортежей, не заботясь о проверке их соответствия.
  2. Можно легко вернуть из функции набор значений, не мороча голову с указателями или ссылками в out-параметрах (для многих это сложно)
  3. Можно избежать создания кучи мелких структур из 2-3 полей (меньше кода — лучше).
Но есть и тёмная сторона этой силы.
Читать дальше →

Не нужно делать из фреймворков культ — они не настолько сложны, чтобы делить людей на React и Angular разработчиков

Reading time6 min
Views21K


Недавно меня позвали гостем в «Тяжелое утро с Holy.js», чтобы хорошенько пропесочить за мою статью про глупцов-фронтендеров. Мы обстоятельно поговорили, и один из аргументов был такой — если наши js фреймворки жрут неоправданно много на простых задачах — просто не используй их. Если тебе просто надо порендерить четыре формы, то тебе не нужен ни реакт, ни тайпскрипт, ни вебпак — ничего. Создаешь три файлика .html, .css и .js — вот тебе и приложение.

Ничего не надо никуда билдить, никакого стат анализа, и никакой прожорливой и тормозной ноды на твоей машине — все быстро и просто. Так можно строить и достаточно большие приложения — ведь тот же vs code вполне себе может тайпчекать твой js. Другие проблемы, которые можно решать большими фронтенд инструментами во-первых часто выдуманы их создателями, а во вторых если и создают большую боль — то только на действительно больших приложениях.
Читать дальше →

Ленивая инициализация в C#

Reading time4 min
Views35K
Отложенная инициализация или «ленивая» инициализация — это способ доступа к объекту, скрывающий за собой механизм, позволяющий отложить создание этого объекта до момента первого обращения. Необходимость ленивой инициализации может возникнуть по разным причинам: начиная от желания снизить нагрузку при старте приложения и заканчивая оптимизацией редко используемого функционала. И действительно, не все функции приложения используются всегда и, тем более, сразу, потому создание объектов, реализующих их, вполне рационально отложить до лучших времён. Я хотел бы рассмотреть варианты ленивой инициализации, доступные в языке C#.
Читать дальше →

Information

Rating
10,279-th
Registered
Activity