Pull to refresh
1311
0
Анатолий Ализар @m1rko

автор, переводчик, редактор

Send message

Windows Defender SmartScreen вредит независимым разработчикам

Reading time4 min
Views30K
Допустим, вы независимый разработчик и выпустили своё приложение. Чтобы упростить установку, вы создаёте установщик и начинаете его распространять. Какой-нибудь смелый экспериментатор загружает, запускает инсталлятор — но видит строгое предупреждение:


Windows SmartScreen блокирует запуск исполняемого файла

Действительно, в текущем окружении Windows активно блокирует запуск бинарных файлов через функцию SmartScreen.
Читать дальше →
Total votes 63: ↑63 and ↓0+63
Comments305

Основы ZFS: система хранения и производительность

Reading time17 min
Views102K


Этой весной мы уже обсудили некоторые вводные темы, например, как проверить скорость ваших дисков и что такое RAID. Во второй из них мы даже пообещали продолжить изучение производительности различных многодисковых топологий в ZFS. Это файловая система следующего поколения, которая сейчас внедряется повсюду: от Apple до Ubuntu.
Читать дальше →
Total votes 34: ↑33 and ↓1+39
Comments33

Производительность Raspberry Pi: добавляем ZRAM и изменяем параметры ядра

Reading time4 min
Views23K
Пару недель назад я опубликовал обзор Pinebook Pro. Поскольку Raspberry Pi 4 тоже основана на ARM, то для неё вполне подходят некоторые из оптимизаций, упомянутых в предыдущей статье. Хотел бы поделиться этими хитростями и узнать, проявятся ли у вас такие же улучшения в производительности.

После установки Raspberry Pi в свою домашнюю серверную я заметил, что в моменты дефицита оперативной памяти она становилась очень невосприимчивой и даже подвисала. Чтобы решить эту проблему, я добавил ZRAM и внёс несколько изменений в параметры ядра.
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments7

Современный JavaScript: взгляд со стороны

Reading time3 min
Views4.8K
Сегодня я попыталась помочь другу использовать JS-модуль, который он нашёл на Github. Мой друг отличный учёный, но не специалист по JS, Поскольку в течение последних шести я занимаюсь исследованиями юзабилити и преподаю в Массачусетском технологическом институте, то у меня пошёл мороз по коже от того, насколько всё запутано. Куча ненужных исключительных ситуаций, загадочных ошибок и отсутствие должной обратной связи. И мне кажется, что я не слишком помог ему пережить то разочарование, которое он испытал за этот час мучений или около того, пока он не сдался.

Всё было примерно так…

Примечание: имена пакетов и людей изменены, чтобы защитить их личность. Я также опустила несколько проблем, слишком специфичных для данного пакета. Некоторые ошибки восстанавливаются по памяти, так что дайте знать, если я что-то не так понял.
Читать дальше →
Total votes 21: ↑17 and ↓4+21
Comments18

Неожиданные HTTP-заголовки

Reading time3 min
Views15K
Пару дней назад я ковырялся в блоге Creditkarma и заметил такой HTTP-заголовок:

X-hacker: If you're reading this, you should visit wpvip.com/careers and apply to join the fun, mention this header.

(X-hacker: если вы это читаете, то вам следует зайти на wpvip.com/careers и подать заявку, чтобы присоединиться к веселью, упомяните этот заголовок).

Первой мыслью было: «Ничего себе, когда-то программисты ввели баг тысячелетия, чтобы сэкономить несколько бит на дате, и теперь у компании публикуют целые предложения о работе в заголовке HTTP!»

Мне стало очень интересно, и я провёл некоторые исследования.
Читать дальше →
Total votes 24: ↑23 and ↓1+30
Comments10

Осторожнее с редактированием bash-скриптов

Reading time2 min
Views65K
Предположим, я написал такой bash-скрипт с названием delay.sh. Как думаете, что он делает?

#!/bin/bash
sleep 30
#rm -rf --no-preserve-root /
echo "Time's up!"

Похоже, он ожидает 30 секунд, а затем выводит сообщение на экран. Здесь никаких фокусов — он делает именно это. Там есть опасная команда в середине, но она закомментирована и не выполняется.

Представьте, что я снова запускаю этот скрипт, но теперь мне не хочется ждать 30 секунд — это слишком долго. Я открываю вторую консоль, меняю sleep 30 на sleep 3, затем сохраняю файл. Как думаете, что будет теперь?

Ну, через 30 секунд скрипт удалит все мои файлы.
Читать дальше →
Total votes 201: ↑195 and ↓6+250
Comments201

Как ускорить код-ревью

Reading time3 min
Views5.1K
Неграмотно поставленные код-ревью серьёзно замедляют рабочий процесс. Когда большое количество изменений застревает на несколько дней (или недель!), то выход продукта на рынок придётся отложить. Вот несколько причин, почему такое происходит:

  • Отсутствует стандарт оформления кода
  • Не используются автоматизированные проверки
  • Программисты не выполняют самостоятельный анализ своего кода
  • Огромные пул-реквесты
  • Расплывчатые пул-реквесты
  • Отсутствуют дедлайны для код-ревью
Читать дальше →
Total votes 11: ↑8 and ↓3+8
Comments26

Реверс-инжиниринг антиблокировщика рекламы BlockAdBlock

Reading time18 min
Views42K
Если вы пользуетесь блокировщиками рекламы, то могли встречать BlockAdBlock. Этот скрипт обнаруживает ваш блокировщик и не пускает на сайт, пока вы его не отключите. Но мне стало интересно, как он работает. Как антиблокировщик обнаруживает блокировщики? А как на это реагируют блокировщики и как они блокируют антиблокировщики?

История реверс-инжиниринга


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

Это натолкнуло меня на мысль о версиях. А что, если мог посмотреть не на одну версию, а на все сразу? Так я и сделал. Я вернулся назад во времени с помощью Wayback Machine. После этого скачал все версии BlockAdBlock и хэшировал их.
Читать дальше →
Total votes 82: ↑82 and ↓0+82
Comments85

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

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

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

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

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

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

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

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

Автоматический детектор COVID-19 по снимкам флюорографии

Reading time15 min
Views2.4K


Из этого руководства вы узнаете, как автоматически обнаружить COVID-19 в специально подобранном наборе данных с помощью Keras, TensorFlow и глубокого обучения.

Как и большинство людей в мире прямо сейчас, меня искренне беспокоит COVID-19. Я замечаю, что начал постоянно анализировать своё личное здоровье и подозревать, что я уже заразился.

Чем больше я об этом беспокоюсь, тем больше проявляется болезненное сочетание реальных симптомов с ипохондрией:

  • Проснулся утром, чувствую себя немного разбитым.
  • Когда выбрался из постели, то у меня уже потекло из носа (хотя теперь известно, что насморк не является симптомом COVID-19).
  • Пока добрался до ванной, чтобы взять салфетку, ещё и кашлянул.
Читать дальше →
Total votes 5: ↑3 and ↓2+3
Comments3

Самые замечательные программы Unix

Reading time4 min
Views8K
Автор статьи Дуглас Макилрой — американский математик, инженер и программист. Наиболее известен разработкой конвейера в операционной системе Unix, принципов компонентно-ориентированного программирования и нескольких оригинальных утилит: spell, diff, sort, join, speak, tr.

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

Поделитесь, какие программы вас тоже настолько поразили?

PDP-7 Unix


Для начала, сама система PDP-7 Unix. Её простота и мощь заставили меня перейти с мощного мейнфрейма на крошечную машину. Здесь квинтэссенция иерархической файловой системы, отдельная оболочка и управление процессами на уровне пользователя, что Multics на мейнфреймах не смогла реализовать после сотен человеко-лет разработки. Недостатки Unix (например, структура записей в файловой системе) были столь же поучительными и освобождающими, как и её новшества (например, перенаправление ввода-вывода в оболочке).
Читать дальше →
Total votes 14: ↑12 and ↓2+16
Comments2

Скука на карантине. Как потратить больше всего денег в Azure одним щелчком мыши

Reading time2 min
Views8K
Пару дней назад Кори Куинн написал в твиттере:

«Кто-то спрашивал — отвечаю. Полностью зарезервированный инстанс db.r5.24xlarge Enterprise Multi-AZ для SQL-сервера в Бахрейне стоит $3 118 367. Объявляется конкурс на самый дорогой вызов API в облаке AWS».

В треде развернулась очень продуктивная дискуссия, где много приятных людей пытались найти ещё лучший способ потратить деньги в AWS. Мне как пользователю Azure стало грустно и одиноко, поэтому я решил исправить эту несправедливость. Если вы сидите в карантине и хотите куда-то потратить безумную сумму денег, то могу подсказать. Вам нужна только подписка Pay-As-You-Go в Azure — и я гарантирую, что все ваши с трудом заработанные деньги исчезнут в момент!
Читать дальше →
Total votes 18: ↑16 and ↓2+20
Comments5

Когда фильтр Блума не подходит

Reading time9 min
Views15K


Я ещё с университета знал о фильтре Блума — вероятностной структуре данных, названной в честь Бёртона Блума. Но у меня не было возможности её использовать. В прошлом месяце такая возможность появилась — и эта структура буквально очаровала меня. Впрочем, вскоре я нашёл у неё некоторые недостатки. В этой статье — рассказ о моей краткой любовной связи с фильтром Блума.
Читать дальше →
Total votes 37: ↑36 and ↓1+48
Comments15

Ускорение поиска в Have I Been Pwned до 49 микросекунд (С++)

Reading time8 min
Views13K


Я давно знал о сайте Have I Been Pwned (HIBP). Правда, до недавнего времени никогда там не был. Мне всегда хватало двух паролей. Один из них неоднократно использовался для мусорной почты и пары аккаунтов на странных сайтах. Но пришлось от него отказаться, потому что почту взломали. И, честно говоря, я благодарен хакеру, потому что это событие заставило меня пересмотреть свои пароли — то, как я их использую и храню.

Конечно, я поменял пароли на всех аккаунтах, где стоял скомпрометированный пароль. Затем мне стало интересно, попал ли утёкший пароль в базу HIBP. Я не хотел вводить пароль на сайте, поэтому скачал базу данных (pwned-passwords-sha1-ordered-by-count-v5). База весьма впечатляет. Это текстовый файл на 22,8 ГБ с набором хэшей SHA-1, по одному в каждой строке со счётчиком, сколько раз пароль с данным хэшем встречался в утечках. Я вычислил SHA-1 своего взломанного пароля и попытался найти его.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments20

Может, нам слегка успокоиться с JavaScript?

Reading time8 min
Views73K
У меня очень странная проблема с браузером. Скрипты на некоторых страницах просто не работают, пока не пройдёт около 20 секунд.

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

(В самом деле, даже не пытайтесь диагностировать проблему по одному предложению, не надо, я слышала и перепробовала почти всё, что вы можете себе представить).
Читать дальше →
Total votes 148: ↑134 and ↓14+157
Comments308

Как проектировать мобильные приложения для одной руки

Reading time15 min
Views8.8K
tl;dr У 90% современных смартфонов диагональ экрана превышает пять дюймов. Появление таких дисплеев представило принципиально новые проблемы для разработчиков приложений и дизайнеров. Давайте посмотрим, как их решить.



После презентации Apple в январе 2007 года весь мир сжался до размера наших ладошек. Компания объединила iPod, телефон и браузер в едином устройстве. Apple представила на массовый рынок новый для себя класс устройств, которые нам сегодня известны как «смартфоны». Эти гаджеты работали без клавиатуры (как у BlackBerry) или стилуса (как Palm).

iPhone был спроектирован для удобной работы только одной рукой, с плавными движениями большим пальцем по экрану.
Total votes 10: ↑9 and ↓1+11
Comments12

FizzBuzz 2.0: прагматичные вопросы для программистов

Reading time3 min
Views7.4K


В прошлом году более 100 000 программистов прошли викторину Triplebyte. Приведённая ниже статистика показывает, что пять вопросов с множественным выбором легко отделяют настоящих инженеров-программистов от остальных (вопросы отобраны путём машинного обучения на базе заранее размеченных «успешных» и «неуспешных» программистов — прим. пер.)

Как и печально известный тест Fizz Buzz десятилетней давности, эти вопросы тривиальны для любого, кто профессионально занимается разработкой программного обеспечения, но обычно ставят в тупик любого другого человека. Приведённые ниже вопросы — первые пять в нашем тесте, и 98% успешных инженеров правильно отвечают по крайней мере на четыре из пяти. Я уверен, что если вы инженер-менеджер, проводящий собеседование, то не станете делать предложение никому ниже этого уровня.
Читать дальше →
Total votes 18: ↑6 and ↓12-3
Comments18

Старый и новый CSS. История веб-дизайна

Reading time53 min
Views30K
Я увлеклась веб-дизайном и разработкой в конце 90-х. Чёрт побери, как это было давно. И как это было ужасно. Я имею в виду, что сделать сайт и опубликовать его представляло хитрое дело, а заказчиков можно было пересчитать по пальцам.

Мне казалось, что большинство разработчиков помнят те дни или хотя бы следующее десятилетие, но нет. Недавно мне попался на глаза твит, автор которого удивлялся технике простановки закруглённых углов до появления border-radius (сделать отдельную картинку для каждого закруглённого угла и точно её позиционировать). Я до сих пор помню, как мы затаив дыхание ждали, когда border-radius станет стандартом и с него уберут префикс в браузерах.

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

Эта статья для всех. История CSS и веб-дизайна, как я её помню.
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments33

Почему мы пишем программы такого низкого качества?

Reading time13 min
Views27K

Проектировщики самолёта отвечают на вопрос о его безопасности:
— Ничто не вечно, но современные авиалайнеры невероятно устойчивы, а самолёт — самый безопасный транспорт в мире.
Инженеры-строители отвечают о безопасности лифтов:
— Лифты защищены множеством отказоустойчивых механизмов. Их практически невозможно уронить в свободное падение.
Программисты отвечают на вопрос об электронном голосовании:
— Это просто ужасно.
— Серьёзно?
— Абсолютно. Не доверяйте программам для электронного голосования и не верьте никому, кто уверяет в их надёжности.
— Почему?
— Не совсем знаю, как это выразить, но вся наша область плоха в том, что мы делаем, и если вы будете полагаться на нас, то все умрут.
— Говорят, что надёжность гарантируется технологией под названием «блокчейн».
— А-а-а-а-а!!! Что бы они ни говорили, не прикасайтесь к этому! Закопайте поглубже. Не забудьте перчатки!

Источник: XKCD, лицензия Creative Commons 2.5

Глюк мобильного приложения для подсчёта голосов на прошлой неделе добавил хаоса на Съезде фракций Демократической партии в Айове. Через несколько часов после открытия собраний по всему штату стало ясно: что-то пошло не так. Результаты неизвестны до сих пор. Появились сообщения с описанием технических проблем и недоразумений. Демократическая партия Айовы опубликовала заявление, в котором отрицает слухи о кибератаке, но подтверждает технические проблемы с мобильным приложением.
Читать дальше →
Total votes 25: ↑23 and ↓2+33
Comments92

Измеряем на коленке пропускную способность памяти

Reading time9 min
Views19K
Несколько недель назад в разговоре за обедом коллега пожаловался на какой-то медленный процесс. Он подсчитал количество сгенерированных байт, количество циклов обработки, и в конечном счёте, объём оперативной памяти. Коллега заявил, что современный GPU с пропускной способностью памяти более 500 ГБ/с съел бы его задачу и не подавился.

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



Я знаю, как писать код, который активно использует кэш. Знаю примерые цифры задержки. Но этого недостаточно, чтобы сходу оценить пропускную способность памяти.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments21

Information

Rating
Does not participate
Registered
Activity