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

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

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

Исследуем саундбар Yamaha YAS-109, часть 2

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров12K

Приветствую!

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

И что, сифонит таки?
Всего голосов 51: ↑51 и ↓0+51
Комментарии22

Регресс или регрессив в тестировании

Время на прочтение2 мин
Количество просмотров17K
О себе писать не буду (кто я и чем занимаюсь). Моя статья возможно ответит на эти вопросы.

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

Да, я — тестировщик. Хотя мои близкие меня постоянно спрашивают — «Ты точно тестировщик? Не похожа!» Очень смешно.

В общем статья сегодня вот о чем. Как правильно говорить — регрессионное или регрессивное тестирование? Как вы сами думаете? Лично я и мои «нормальные» коллеги заняты большую часть времени на работе, проводя регрессионное тестирование. Хм… А может они проводят всё-таки регрессивное тестирование? Пойду-ка спрошу у своих ребят. И вот я в поисках правды провела небольшой опрос среди 20 человек. Опрос легкий с одним вопросом — «привет! ты проводишь регрессивное или регрессионное тестирование?». Большая часть из них сказали «регрессионное», два человека сказали, что это для них одно и тоже, один сказал — «регрессивное». Опроса мне не хватило, и я пошла к знакомой (кандидат филологических наук), спросила про перевод слова «regression». Знакомая сказала, что переводится как регрессия, и скинула скрин вырезки этого перевода из multitran.ru. Оказывается как прилагательное это слово переводится и как «регрессионный», и как «регрессивный».
Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии21

Мы Не Оскорблённые

Время на прочтение2 мин
Количество просмотров8.2K
Дядя Боб Мартин разразился манифестом терпимости к чужим идеям. Что именно его довело? Мне трудно это выразить, очень рекомендую прочитать сначала его предыдущую статью SJWJS.

Мы, Не Оскорблённые, верим, что свободное общество полагается на взаимную терпимость и прощение своих членов по отношению друг к другу и идеям других. Поэтому, мы стремимся оставаться не оскорблёнными свободой других говорить и действовать в соответствии с их самоидентификацией, политическими взглядами, стремлениями и желаниями. Мы не терпимы только к вреду наносимому преднамеренно или по небрежности.
Читать дальше →
Всего голосов 35: ↑27 и ↓8+19
Комментарии81

Почему «Юному технику» не удастся построить лазер

Время на прочтение8 мин
Количество просмотров87K
Приветствую всех снова. В комментариях к моей первой статье про cамодельную лазерную установку снова вспомнили статью из журнала «Юный техник», которая называлась «Строим лазер». В ней предложено поэтапное описание сборки импульсного лазера, работающего на жидком растворе органического красителя. Текст статьи доступен через 2 минуты гугления.

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

image
Читать дальше →
Всего голосов 121: ↑119 и ↓2+117
Комментарии181

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

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

Источник: Wikipedia License CC-BY-SA 3.0

Если вы часто ездите на общественном транспорте, то наверняка встречались с такой ситуацией:

Вы приходите на остановку. Написано, что автобус ходит каждые 10 минут. Засекаете время… Наконец, через 11 минут приходит автобус и мысль: почему мне всегда не везёт?

По идее, если автобусы приходят каждые 10 минут, а вы придёте в случайное время, то среднее ожидание должно составлять около 5 минут. Но в действительности автобусы не прибывают точно по расписанию, поэтому вы можете ждать дольше. Оказывается, при некоторых разумных предположениях можно прийти к поразительному выводу:

При ожидании автобуса, который приходит в среднем каждые 10 минут, ваше среднее время ожидания будет 10 минут.

Это то, что иногда называют парадоксом времени ожидания.
Читать дальше →
Всего голосов 90: ↑86 и ↓4+82
Комментарии80

Борьба с грязными побочными эффектами в чистом функциональном JavaScript-коде

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

Кстати, функциональные программисты правы. Чистые функции — это хорошо. Но есть одна проблема…


Автор материала, перевод которого мы представляем вашему вниманию, хочет рассказать о том, как бороться с побочными эффектами в чистых функциях.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии18

Архитектура микросервисов

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


К сожалению, у меня нет опыта работы с микросервисами, но около года назад я очень активно интересовался этой темой и изучил все источники информации, какие смог найти. Я просмотрел несколько выступлений на конференциях, прочитал несколько статей очень авторитетных и опытных специалистов вроде Мартина Фаулера, Фреда Джорджа, Эдриана Кокрофта и Криса Ричардсона, чтобы как можно больше узнать о микросервисах. Эта статья — результат моих изысканий.
Всего голосов 79: ↑75 и ↓4+71
Комментарии269

Анализ исходного кода и защиты от копирования Prince of Persia

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

Часть 1: введение


17 апреля 2012 года Джордан Мекнер опубликовал исходный код Prince of Persia.

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

Очевидно слабая для программирования игр среда Apple II на самом деле была фундаментом несравнимых ни с чем инноваций и творчества: самомодифицирующийся код, внутренний загрузчик, умный формат гибких дисков и смещение таблиц поиска. В каждом своём модуле Prince Of Persia хранит сокровища инженерной мысли.

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

Как обычно, я вёл подробные записи и на их основе создал эту статью. Надеюсь, она вдохновит других на чтение исходного кода и усовершенствование своих навыков разработки.
Всего голосов 72: ↑71 и ↓1+70
Комментарии25

IP KVM своими руками

Время на прочтение8 мин
Количество просмотров59K
Эта статья написана под впечатлением от другой — большое спасибо автору! В этой статье почти удалось сделать собственный IP KVM Switch, и это круто! Но объясню, почему почти. Да, там все работает как и написал автор… До момента перезагрузки в биос — там вся магия рассеивается и сколько не старайся, ничего не происходит.

Решено было исправить это досадное недоразумение и как можно дешевле и компактней. Начнем со стереотипов Raspberry Pi и Arduino, а в следующей статье будет продолжение уже на другом железе.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии18

Непредсказуемые последствия оптимизации производительности Chrome

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

Привет! В последнем релизе Chrome обнаружил очень необычное поведение браузера. Это поведение вызывало новые необычные ошибки в моём веб-скрипте. И я решил поделиться, как оптимизируют производительность Chrome, и про то, с какими необычными последствиями можно столкнуться.



Поехали.

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

Модели памяти, лежащие в основе языков программирования

Время на прочтение24 мин
Количество просмотров30K
Предлагаем вашему вниманию перевод статьи, посвящённой рассмотрению используемых в программировании моделей памяти.

Сегодня в программировании доминируют шесть основных моделей памяти (не путать с моделями памяти Intel 8086). Три из них проистекают из трех исторически наиболее важных языков программирования 1950-х годов — COBOL, LISP и FORTRAN, а остальные связаны с тремя исторически важными системами хранения данных: магнитная лента, иерархическая файловая система в Unix-стиле и реляционная база данных.

Эти модели на гораздо более глубоком уровне, чем синтаксис или даже система типов, определяют, что наши языки программирования могут или не могут делать. Давайте подробно рассмотрим эти модели, а затем обсудим некоторые возможные альтернативы и причины, почему они могут быть интересны.
Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии13

Анализ исходного кода Duke Nukem 3D: Часть 2

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

[Перевод первой части находится здесь.]

Унаследованный код


Build — это выдающийся движок, а множество игр, использовавших его, принесли большую и заслуженную славу и Кену Силверману, и 3D Realms.

Кен Силверман выполнил условия договора: он предоставил двоичный файл потрясающего 3D-движка с хорошо задокументированными методами и форматами ресурсов. В качестве признания его заслуг 3D Realms указала его имя в титрах как «Ken 'I can do that' Silverman» (Кен «Я могу это сделать» Силверман). Но разработка Build была сосредоточена на возможностях и скорости, а не удобстве портирования и чтения. После изучения кода я думаю, что open source-разработчики избегали его по следующим причинам:

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

В этой статье я перечислил часть сложностей, с которыми столкнулся. Также я выпустил порт Chocolate Duke Nukem 3D, призванный решить эти проблемы. Я хотел, чтобы люди запомнили, какой уровень гениальности нужен был для создания 3D-движка в то время. Кроме того, я хотел, чтобы они осознали, как движимый страстью подросток смог внести вклад в одну из величайших игр всех времён.
Читать дальше →
Всего голосов 57: ↑53 и ↓4+49
Комментарии7

Мониторинг лог-журналов: Такой уязвимый лог или как подложить свинью коллегам

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

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


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


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


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


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

Люди, включайте мозг ...
Всего голосов 36: ↑36 и ↓0+36
Комментарии18

Информация

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