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

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

Отправить сообщение

Как разрушалась личность блестящего молодого программиста

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

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




В пятницу 13 сентября 2019 года Мэтью Принс и Мишель Зэтлин, сооснователи компании Cloudflare из Сан-Франциско, занимающейся интернет-безопасностью, стояли на узком мраморном балконе, с которого открывался вид на Нью-Йоркскую фондовую биржу. Стайка директоров компании сгрудилась рядом с Принсом, готовая вести вслух обратный отсчёт. «Громче! Громче! – призывал их Принс. – Пять! Четыре! Три!..» Ровно в 9:30 основатели потянулись к знаменитому колоколу биржи, знаменующему начало торгового дня, а также – выход их 10-летней компании на биржу. Так они изменили свою жизнь и сорвали куш. В тот момент они обогатились на миллионы долларов.

Более сотни сотрудников и инвесторов, стоявших внизу на первом этаже, разразились радостными криками, а их поднятые телефоны фотографировали происходящее. Кристин Холлоуэй, сотрудник №11, подняла взгляд на балкон, сделала несколько фотографий, а потом отправила их через мессенджер своему мужу, Ли Холлоуэю, третьему сооснователю компании. Он в это время находился дома, в Калифорнии. Периодически чьё-нибудь знакомое лицо выныривало из толпы, чтобы сказать ей: «Ли должен был быть здесь».
Всего голосов 169: ↑162 и ↓7 +155
Комментарии 222

Неуловимая проблема тайминга кадров

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

Технический директор Croteam Ален Ладавач, участвовавший в разработке Serious Sam и Talos Principle, рассказывает, как ему удалось найти причину торможения графики даже на самых мощных машинах.

Наконец-то появилось объяснение того, почему некоторые игры тормозят на вашем PC (и луч надежды на то, что в ближайшем будущем они тормозить перестанут).

Т-т-тормоза


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

Предзаказ наконец разблокирован и вы только что завершили установку. В нервном предвкушении вы впервые запускаете игру. Пока всё хорошо — она работает с частотой 60 кадров в секунду. Или, по крайней мере, так сообщает счётчик кадров тюнера GPU. Но что-то не так. Вы делаете мышью резкие, хаотичные движения. Стрейфитесь влево-вправо, и тут игра… начинает тормозить! Блин, да как такое возможно? Как она может тормозить при 60 кадрах в секунду?

Если такое с вами никогда не случалось, то это может показаться смешным. Но если вы их испытали, то, скорее всего, ненавидите тормоза всей душой. Тормоза в играх. Это не старый добрый «лаг». Не низкая частота кадров. Это просто «тормоза», происходящие при высоких частотах кадров на идеальных, супербыстрых машинах. Что это, откуда они взялись и как от них избавиться? Позвольте мне рассказать вам историю…
Всего голосов 135: ↑131 и ↓4 +127
Комментарии 276

Файл дескриптор в Linux с примерами

Время на прочтение 14 мин
Количество просмотров 98K
Однажды, на одном интервью меня спросили, что ты будешь делать, если обнаружишь неработающий сервис из-за того, что на диске закончилось место?

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

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

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

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

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

Интервьюер остался доволен, а я нет.

Тогда я подумал, почему человек, проверяющий мои знания, не копает глубже? А что, если данные все-таки важны? Что если мы не можем перезапускать процесс, и при этом этот процесс пишет на файловую систему в раздел, на котором нет свободного места? Что если мы не можем потерять не только уже записанные данные, но и те данные, что этот процесс пишет или пытается записать?
Читать дальше →
Всего голосов 136: ↑136 и ↓0 +136
Комментарии 20

Когда 'a' не равно 'а'. По следам одного взлома

Время на прочтение 6 мин
Количество просмотров 111K
Пренеприятнейшая история случилась с одним моим знакомым. Но насколько она оказалась неприятной для Михаила, настолько же занимательной для меня.

Надо сказать, что приятель мой вполне себе UNIX-пользователь: может сам поставить систему, установить mysql, php и сделать простейшие настройки nginx.
И есть у него десяток-полтора сайтов посвященных строительным инструментам.

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

image

То была присказка, дальше сама админская байка.

Время близилось ко сну когда раздался звонок телефона: «Сань, ты не глянешь мой сервер? Мне кажется меня хакнули, доказать не могу, но ощущение не покидает уже третью неделю. Может мне просто пора лечиться от паранойи?»
Читать дальше →
Всего голосов 399: ↑393 и ↓6 +387
Комментарии 73

Как украсть деньги с бесконтактной карты и Apple Pay

Время на прочтение 24 мин
Количество просмотров 270K
Как украсть деньги с бесконтактной карты из кармана? Насколько безопасен PayPass и Apple Pay?

В статье разбираются популярные мифы и сценарии мошенничества с бесконтактными системами оплаты на примере настоящего POS-терминала, карт PayPass/payWave и телефонов с функцией Google Pay/Apple Pay.

Рассматриваемые темы:

  • Можно ли НА САМОМ ДЕЛЕ украсть деньги, прислонившись POS-терминалом к карману? — мы попытаемся полностью воспроизвести этот сценарий мошенничества от начала до конца, с использованием настоящего POS-терминала и платежных карт в реальных условиях.
  • В чем разница между физическими и виртуальными картами Apple Pay? — как происходит связывание физической карты и токена Apple Pay, и почему Apple Pay во много раз безопаснее обычной карты.
  • Используем аппаратный NFC-сниффер (ISO 14443A) — воспользуемся устройством HydraNFC для перехвата данных между POS-терминалом и картой. Рассмотрим, какие конфиденциальные данные можно извлечь из перехваченного трафика.
  • Разбираем протокол EMV — какими данными обменивается карта с POS-терминалом, используемый формат запросов, механизмы защиты от мошенничества и replay-атак.
  • Исследуем операции без карты (CNP, MO/TO) — в каких случаях на самом деле(!) можно украсть деньги с карты, имея только реквизиты, считанные бесконтактно, а в каких нельзя.

Внимание!

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

Материалы в статье представлены исключительно в ознакомительных целях. Все сцены демонстрации мошенничества инсценированы и выполнены с согласия участвующих в них лиц. Все списанные деньги с карт были возвращены их владельцам. Воровство денег с карт является уголовным преступлением и преследуется по закону.
Всего голосов 329: ↑323 и ↓6 +317
Комментарии 394

Как безопасно программировать в bash

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

Почему bash?


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

В fish сложнее допустить ошибку, но там нет безопасного режима. Поэтому хорошей идеей станет прототипирование в fish, а затем трансляция с fish на bash, если вы умеете правильно это делать.

Предисловие


Данное руководство сопровождает ShellHarden, но автор также рекомендует ShellCheck, чтобы правила ShellHarden не расходились с ShellCheck.

Bash — не тот язык, где самый правильный способ решить проблему одновременно является самым простым. Если принимать экзамен по безопасному программированию в bash, то первое правило BashPitfalls звучало бы так: всегда используй кавычки.

Главное, что нужно знать о программировании в bash


Маниакально ставить кавычки! Незакавыченная переменная должна расцениваться как взведённая бомба: она взрывается при контакте с пробелом. Да, «взрывается» в смысле разделения строки на массив. В частности, расширения переменных вроде $var и подстановки команд вроде $(cmd) подвергаются расщеплению слов, когда внутренняя строка расширяется в массив из-за расщепления в специальной переменной $IFS с пробелом по умолчанию. Это обычно незаметно, потому что чаще всего результатом становится массив из 1 элемента, неотличимый от ожидаемой строки.
Читать дальше →
Всего голосов 74: ↑73 и ↓1 +72
Комментарии 39

Как я попросил студентов написать фишинговые письма

Время на прочтение 9 мин
Количество просмотров 53K
– Учитель, я подобрал хороший пароль, которого не может быть в словарях.
Инь Фу Во кивнул.
– Я ввёл его в Гугле, – продолжал Сисадмин, – и убедился, что в Сети такого сочетания нет.
– Теперь есть.


Я аспирант и преподаю вирусологию в университете.

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



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

Осторожно, много скриншотов.
Читать дальше →
Всего голосов 138: ↑132 и ↓6 +126
Комментарии 138

Git снизу вверх

Время на прочтение 27 мин
Количество просмотров 125K
У этого перевода не совсем обычная история. Системы контроля версий далеки от моих профессиональных интересов. Для рабочих проектов они мне требовались нечасто, причем, разные, так что, каждый раз, когда возникала такая необходимость, я заново вспоминала, как в них делается та или иная операция. А для личных проектов мне хватало возможностей Dropbox, хранящей историю версий файлов.


Изображение из твиттера @girlie_mac

Но вот однажды я на три незабываемых дня попала в роддом — это иногда случается с женщинами. Из развлечений у меня были новорожденная дочь и телефон с большим экраном. Дочь поначалу развлекала плохо (дома она быстро исправилась), а на телефоне помимо книг и фильмов обнаружился текст «Git from the bottom up», который оказался более чем годным… С тех пор прошло почти 3 года, подросшей дочке уже пора самой начинать использовать Git Git стал мейнстримом, если не сказать стандартом в современной разработке, а я с удивлением обнаружила, что перевода на русский этого чуда, полезного не только начинающим, но и продвинутым пользователям Git, до сих пор нет. Исправляю эту ситуацию.
Читать дальше →
Всего голосов 104: ↑102 и ↓2 +100
Комментарии 32

Постигаем Си глубже, используя ассемблер

Время на прочтение 8 мин
Количество просмотров 53K
Вдохновением послужила эта статья: Разбираемся в С, изучая ассемблер. Продолжение так и не вышло, хотя тема интересная. Многие бы хотели писать код и понимать, как он работает. Поэтому я запущу цикл статей о том, как выглядит Си-код после декомпиляции, попутно разбирая основные структуры кода.
Читать дальше →
Всего голосов 54: ↑50 и ↓4 +46
Комментарии 31

Поиск проблем производительности NodeJs приложения (с примерами)

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

Из-за однопоточной архитектуры Node.js важно быть настороже высокой производительности вашего приложения и избегать узких мест в коде, которые могут привести к просадкам в производительности и отнимать ценные ресурсы CPU у серверного приложения.
В этой статье речь пойдет о том, как производить мониторинг загрузки CPU nodejs-приложения, обнаружить ресурсоемкие участки кода, решить возможные проблемы со 100% загрузкой ядра CPU.

Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 2

Блокчейн 101: книги, исследования и статьи по теме

Время на прочтение 6 мин
Количество просмотров 40K
Мы подготовили дайджест из 30 полезных материалов о блокчейне: это книги, статьи, видео для тех, кто «что-то слышал, но хочет лучше разобраться в теме». Этот список мы формировали на основе собственных материалов и исследований, а также рекомендаций резидентов платформ Hacker News, Quora, Reddit.

Как устроены смарт-контракты, как объяснить концепцию биткойна ребенку и (самое интересное) как сделать свой собственный блокчейн — обо всем под катом.

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

Удивительно полезный инструмент: lsof

Время на прочтение 9 мин
Количество просмотров 120K
Я привык искать проблемы в коде или в системе, пользуясь логами или показателями мониторинга, которые выводятся на симпатичных панелях управления с простым и понятным интерфейсом. Однако, если по какой-то причине данные на панель управления не поступают, или логи какой-нибудь службы недоступны, отладка усложняется. Теперь подобных проблем немного, встречаются они редко, но они, всё же, случаются. Поэтому и в наше время весьма ценно знание инструментов, которые помогают понять, что не так с неким процессом на каком-нибудь компьютере.

image
Читать дальше →
Всего голосов 73: ↑69 и ↓4 +65
Комментарии 30

Знай свой инструмент: Event Loop в libuv

Время на прочтение 6 мин
Количество просмотров 63K
image
Юдель Пэн. Часовщик. 1924

«Компьютер — это конечный автомат. Потоковое программирование нужно тем, кто не умеет программировать конечные автоматы» 
Алан Кокс, прим. Википедия


“Знай свой инструмент” — твердят все вокруг и все равно доверяют. Доверяют модулю, доверяют фреймворку, доверяют чужому примеру.

Излюбленный вопрос на собеседованиях по Node.js — это устройство Event Loop. И при всем том, очевидном факте, что прикладному разработчику эти знания будут полезны, мало кто пытается самостоятельно погрузиться в устройство событийного цикла. В основном, всех устраивает картинка сверху. Хоть это и похоже на пересказ фильма, который ты не смотрел, а о котором тебе рассказал друг.
Читать дальше →
Всего голосов 35: ↑35 и ↓0 +35
Комментарии 20

Кто в России принимает к оплате криптовалюту?

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

Привет, Geektimes! Наш продукт – международный сервис заказа эвакуатора через приложение CarTaxi – после ICO можно будет оплатить токенами. И в связи с этим мы задались вопросом, а насколько у нас в стране широко распространена оплата криптовалютами? Предлагаем небольшой обзор сервисов и бизнесов, которые тоже позволяют обратить виртуальные монеты в товары и услуги.

1. Из недавних новостей – сеть ресторанов быстрого питания Burger King выпустила в России вопперкоин, свою криптовалюту на блокчейн-платформе Waves. Монету назвали в честь самого популярного в сети бургера «Воппер». Эмитировали 1 миллиард вопперкоинов и планируют перечислять покупателям по одному вопперкоину за один купленный «Воппер». Вопперкоинами покупатели смогут расплачиваться за заказы в рамках программы лояльности. Обменный курс вопперкоина пока не назван, но руководство компании допускает выход на криптовалютные биржи в будущем. А впрочем, Бургер Кинг на волне хайпа, как всегда.

2. Снова о еде и сразу несколько заведений общепита:
Читать дальше →
Всего голосов 12: ↑9 и ↓3 +6
Комментарии 39

Принт-сервер на RaspberryPI 1

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

image


Долго меня мучала идея из старенького RPI сделать принт-сервер (удаленная печать и сканирование) и наконец я до этого добрался.


Исходим из того, что у нас есть набор из RPI, флешки с Raspbian, Wi-Fi адаптера, принтера HP LaserJet Pro 1102, МФУ HP Deskjet F2180 и usb-хаба. Основная машина (ББ), которая будет использовать принт-сервер живет на Linux (впрочем, отличия в использовании для Windows будут минимальны).

Читать дальше →
Всего голосов 20: ↑17 и ↓3 +14
Комментарии 17

Шаблоны проектирования с человеческим лицом

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

image


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


Как сказано в Википедии:


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

image Будьте осторожны


  • Шаблоны проектирования — не «серебряная пуля».
  • Не пытайтесь внедрять их принудительно, последствия могут быть негативными. Помните, что шаблоны — это способы решения, а не поиска проблем. Так что не перемудрите.
  • Если применять их правильно и в нужных местах, они могут оказаться спасением. В противном случае у вас будет ещё больше проблем.

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

Читать дальше →
Всего голосов 148: ↑134 и ↓14 +120
Комментарии 98

Файловая система, дешево и быстро

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

Разработчикам часто приходится иметь дело с файлами, представляющими из себя древовидную структуру: XML, JSON, YAML, всякого рода языки разметки вроде Markdown или Org-mode. Облегчая в общем и целом нашу жизнь, такие файлы имеют склонность к бесконтрольному росту, в какой-то момент из решения превращаясь в проблему.


Стандартное решение этой проблемы — разбиение на меньшие файлы. Это, конечно, работает, но не всегда удобно.


Но существует и альтернатива, о которой — ниже.

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

Как enum доступным всем сделать, да в мета-тип записать

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

Преамбула


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

Интервью с Qt


— Мне нужно чтобы ты понимал мой enum.
Читать дальше →
Всего голосов 35: ↑29 и ↓6 +23
Комментарии 3

50 социопатов на ролевой игре живого действия: Нейрономикон по Гибсону и его механики

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

Рабочее место и кибердека хакера корпорации «Макрохард» Леонида Сивухина

Привет! Есть такое увлечение – ролевые игры живого действия. Это когда разные альтернативно одарённые люди бегают по лесу в занавесках и с деревянными мечами. Я один из таких ещё с 98-го года, когда бегать в занавеске ещё не было стыдно. Естественно, лесом и фэнтези дело не ограничивается – мы чертовски любим киберпанк и всё, что с ним связано.

На праздниках под Тулой прошла игра «Нейрономикон» по событиям в Бостоне будущего с повышенной плотностью ИТ-специалистов и людей, стремящихся в них поиграть. Я сейчас расскажу о самой игре как о виде отдыха, покажу, чем и что моделируется (включая разные импланты как из Deus Ex) и расскажу о механиках, лежащим за всем этим.

Пока же краткая вводная: в мире игры в 2010 году уже были действующие искусственные интеллекты (правда, работающие под ограничениями полиции Тьюринга), дельфины признаны второй разумной расой, киберимпланты – самый эффективный и дешёвый вид медицины. Действие игры проходит через 8 лет после третьей мировой войны в ещё слабо фонящих развалинах Бостона, где где-то погребён мощнейший ИИ.
Читать дальше →
Всего голосов 39: ↑34 и ↓5 +29
Комментарии 21

HDD посвящается: усмиряем приложение, прожорливое на дисковое время

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

Корень всех зол


Долгое время у меня была проблема — система очень сильно тормозила после старта. У меня ноутбук с жёстким диском (HDD) и Ubuntu 14.04.
Как выяснилось, причина крылась в одной лишь программе — демоне Dropbox. Dropbox — это онлайновое файловое хранилище, а его демон — программка, синхронизирующая файлы, расположенные в определённой папке, с онлайн-хранилищем. На старте демон начинает считывать свой кэш. У меня он занимает не одну сотню мегабайт, а удалять его вручную не стоит — есть вероятность потерять данные. Учитывая, что у меня жёсткий диск — устройство с механическими частями — демон начинал потреблять время доступа к нему настолько, что пользоваться компьютером и запускать приложения становилось малореально, пока он не прогрузится. Убрать его из автозапуска и запускать вручную? Неприятное решение, у меня и так есть вещи, которые я на старте вынужден запускать сам (например, iotop, он без прав суперпользователя не запускается). Нужно было найти способ сделать приложение менее прожорливым именно на диск.
Читать дальше →
Всего голосов 33: ↑29 и ↓4 +25
Комментарии 47
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность