@jjlmoya/utils-science 1.19.0 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +1 -1
  3. package/src/category/i18n/fr.ts +6 -6
  4. package/src/category/i18n/ru.ts +1 -1
  5. package/src/category/index.ts +3 -1
  6. package/src/category/seo.astro +2 -2
  7. package/src/entries.ts +5 -1
  8. package/src/index.ts +2 -0
  9. package/src/pages/[locale]/[slug].astro +32 -15
  10. package/src/tests/locale_completeness.test.ts +5 -22
  11. package/src/tests/no_en_dash.test.ts +70 -0
  12. package/src/tests/seo_length.test.ts +5 -3
  13. package/src/tests/shared-test-helpers.ts +56 -0
  14. package/src/tests/title_quality.test.ts +1 -1
  15. package/src/tests/tool_exports.test.ts +34 -0
  16. package/src/tests/tool_validation.test.ts +2 -2
  17. package/src/tool/asteroid-impact/bibliography.astro +2 -2
  18. package/src/tool/asteroid-impact/bibliography.ts +24 -0
  19. package/src/tool/asteroid-impact/component.astro +16 -9
  20. package/src/tool/asteroid-impact/i18n/de.ts +4 -24
  21. package/src/tool/asteroid-impact/i18n/en.ts +4 -24
  22. package/src/tool/asteroid-impact/i18n/es.ts +4 -24
  23. package/src/tool/asteroid-impact/i18n/fr.ts +10 -30
  24. package/src/tool/asteroid-impact/i18n/id.ts +4 -24
  25. package/src/tool/asteroid-impact/i18n/it.ts +4 -24
  26. package/src/tool/asteroid-impact/i18n/ja.ts +4 -24
  27. package/src/tool/asteroid-impact/i18n/ko.ts +4 -24
  28. package/src/tool/asteroid-impact/i18n/nl.ts +4 -24
  29. package/src/tool/asteroid-impact/i18n/pl.ts +4 -24
  30. package/src/tool/asteroid-impact/i18n/pt.ts +4 -24
  31. package/src/tool/asteroid-impact/i18n/ru.ts +8 -28
  32. package/src/tool/asteroid-impact/i18n/sv.ts +4 -24
  33. package/src/tool/asteroid-impact/i18n/tr.ts +4 -24
  34. package/src/tool/asteroid-impact/i18n/zh.ts +4 -24
  35. package/src/tool/asteroid-impact/index.ts +1 -0
  36. package/src/tool/asteroid-impact/script.ts +13 -7
  37. package/src/tool/asteroid-impact/seo.astro +1 -1
  38. package/src/tool/cellular-renewal/bibliography.astro +2 -2
  39. package/src/tool/cellular-renewal/bibliography.ts +24 -0
  40. package/src/tool/cellular-renewal/i18n/de.ts +3 -24
  41. package/src/tool/cellular-renewal/i18n/en.ts +3 -24
  42. package/src/tool/cellular-renewal/i18n/es.ts +3 -24
  43. package/src/tool/cellular-renewal/i18n/fr.ts +16 -37
  44. package/src/tool/cellular-renewal/i18n/id.ts +3 -24
  45. package/src/tool/cellular-renewal/i18n/it.ts +3 -24
  46. package/src/tool/cellular-renewal/i18n/ja.ts +3 -24
  47. package/src/tool/cellular-renewal/i18n/ko.ts +3 -24
  48. package/src/tool/cellular-renewal/i18n/nl.ts +3 -24
  49. package/src/tool/cellular-renewal/i18n/pl.ts +3 -24
  50. package/src/tool/cellular-renewal/i18n/pt.ts +3 -24
  51. package/src/tool/cellular-renewal/i18n/ru.ts +20 -41
  52. package/src/tool/cellular-renewal/i18n/sv.ts +3 -24
  53. package/src/tool/cellular-renewal/i18n/tr.ts +3 -24
  54. package/src/tool/cellular-renewal/i18n/zh.ts +12 -33
  55. package/src/tool/cellular-renewal/index.ts +1 -0
  56. package/src/tool/cellular-renewal/seo.astro +2 -1
  57. package/src/tool/colony-counter/bibliography.astro +2 -2
  58. package/src/tool/colony-counter/bibliography.ts +12 -0
  59. package/src/tool/colony-counter/i18n/de.ts +3 -12
  60. package/src/tool/colony-counter/i18n/en.ts +3 -12
  61. package/src/tool/colony-counter/i18n/es.ts +3 -12
  62. package/src/tool/colony-counter/i18n/fr.ts +3 -12
  63. package/src/tool/colony-counter/i18n/id.ts +3 -12
  64. package/src/tool/colony-counter/i18n/it.ts +3 -12
  65. package/src/tool/colony-counter/i18n/ja.ts +3 -12
  66. package/src/tool/colony-counter/i18n/ko.ts +3 -12
  67. package/src/tool/colony-counter/i18n/nl.ts +3 -12
  68. package/src/tool/colony-counter/i18n/pl.ts +3 -12
  69. package/src/tool/colony-counter/i18n/pt.ts +3 -12
  70. package/src/tool/colony-counter/i18n/ru.ts +8 -17
  71. package/src/tool/colony-counter/i18n/sv.ts +3 -12
  72. package/src/tool/colony-counter/i18n/tr.ts +3 -12
  73. package/src/tool/colony-counter/i18n/zh.ts +5 -14
  74. package/src/tool/colony-counter/index.ts +1 -0
  75. package/src/tool/colony-counter/seo.astro +1 -1
  76. package/src/tool/cosmic-inflation/bibliography.astro +14 -0
  77. package/src/tool/cosmic-inflation/bibliography.ts +12 -0
  78. package/src/tool/cosmic-inflation/component.astro +270 -0
  79. package/src/tool/cosmic-inflation/cosmic-inflation-calculator.css +277 -0
  80. package/src/tool/cosmic-inflation/entry.ts +26 -0
  81. package/src/tool/cosmic-inflation/i18n/de.ts +188 -0
  82. package/src/tool/cosmic-inflation/i18n/en.ts +188 -0
  83. package/src/tool/cosmic-inflation/i18n/es.ts +168 -0
  84. package/src/tool/cosmic-inflation/i18n/fr.ts +188 -0
  85. package/src/tool/cosmic-inflation/i18n/id.ts +188 -0
  86. package/src/tool/cosmic-inflation/i18n/it.ts +188 -0
  87. package/src/tool/cosmic-inflation/i18n/ja.ts +188 -0
  88. package/src/tool/cosmic-inflation/i18n/ko.ts +188 -0
  89. package/src/tool/cosmic-inflation/i18n/nl.ts +188 -0
  90. package/src/tool/cosmic-inflation/i18n/pl.ts +188 -0
  91. package/src/tool/cosmic-inflation/i18n/pt.ts +188 -0
  92. package/src/tool/cosmic-inflation/i18n/ru.ts +188 -0
  93. package/src/tool/cosmic-inflation/i18n/sv.ts +188 -0
  94. package/src/tool/cosmic-inflation/i18n/tr.ts +188 -0
  95. package/src/tool/cosmic-inflation/i18n/zh.ts +188 -0
  96. package/src/tool/cosmic-inflation/index.ts +11 -0
  97. package/src/tool/cosmic-inflation/logic/CosmicInflationEngine.ts +21 -0
  98. package/src/tool/cosmic-inflation/seo.astro +15 -0
  99. package/src/tool/microwave-detector/bibliography.astro +2 -2
  100. package/src/tool/microwave-detector/bibliography.ts +16 -0
  101. package/src/tool/microwave-detector/component.astro +9 -7
  102. package/src/tool/microwave-detector/i18n/de.ts +3 -16
  103. package/src/tool/microwave-detector/i18n/en.ts +3 -16
  104. package/src/tool/microwave-detector/i18n/es.ts +3 -16
  105. package/src/tool/microwave-detector/i18n/fr.ts +7 -20
  106. package/src/tool/microwave-detector/i18n/id.ts +3 -16
  107. package/src/tool/microwave-detector/i18n/it.ts +3 -16
  108. package/src/tool/microwave-detector/i18n/ja.ts +3 -16
  109. package/src/tool/microwave-detector/i18n/ko.ts +3 -16
  110. package/src/tool/microwave-detector/i18n/nl.ts +3 -16
  111. package/src/tool/microwave-detector/i18n/pl.ts +3 -16
  112. package/src/tool/microwave-detector/i18n/pt.ts +3 -16
  113. package/src/tool/microwave-detector/i18n/ru.ts +21 -34
  114. package/src/tool/microwave-detector/i18n/sv.ts +3 -16
  115. package/src/tool/microwave-detector/i18n/tr.ts +3 -16
  116. package/src/tool/microwave-detector/i18n/zh.ts +13 -26
  117. package/src/tool/microwave-detector/index.ts +1 -0
  118. package/src/tool/microwave-detector/logic/MicrowaveEngine.ts +5 -1
  119. package/src/tool/microwave-detector/microwave-leak-detector.css +22 -25
  120. package/src/tool/microwave-detector/seo.astro +2 -1
  121. package/src/tool/simulation-probability/bibliography.astro +2 -2
  122. package/src/tool/simulation-probability/bibliography.ts +24 -0
  123. package/src/tool/simulation-probability/i18n/de.ts +3 -24
  124. package/src/tool/simulation-probability/i18n/en.ts +3 -24
  125. package/src/tool/simulation-probability/i18n/es.ts +3 -24
  126. package/src/tool/simulation-probability/i18n/fr.ts +8 -29
  127. package/src/tool/simulation-probability/i18n/id.ts +3 -24
  128. package/src/tool/simulation-probability/i18n/it.ts +3 -24
  129. package/src/tool/simulation-probability/i18n/ja.ts +3 -24
  130. package/src/tool/simulation-probability/i18n/ko.ts +3 -24
  131. package/src/tool/simulation-probability/i18n/nl.ts +3 -24
  132. package/src/tool/simulation-probability/i18n/pl.ts +3 -24
  133. package/src/tool/simulation-probability/i18n/pt.ts +3 -24
  134. package/src/tool/simulation-probability/i18n/ru.ts +10 -31
  135. package/src/tool/simulation-probability/i18n/sv.ts +3 -24
  136. package/src/tool/simulation-probability/i18n/tr.ts +3 -24
  137. package/src/tool/simulation-probability/i18n/zh.ts +7 -28
  138. package/src/tool/simulation-probability/index.ts +1 -0
  139. package/src/tool/simulation-probability/seo.astro +2 -1
  140. package/src/tool/temperature-timeline/bibliography.astro +14 -0
  141. package/src/tool/temperature-timeline/bibliography.ts +12 -0
  142. package/src/tool/temperature-timeline/component.astro +289 -0
  143. package/src/tool/temperature-timeline/entry.ts +26 -0
  144. package/src/tool/temperature-timeline/i18n/de.ts +213 -0
  145. package/src/tool/temperature-timeline/i18n/en.ts +213 -0
  146. package/src/tool/temperature-timeline/i18n/es.ts +178 -0
  147. package/src/tool/temperature-timeline/i18n/fr.ts +213 -0
  148. package/src/tool/temperature-timeline/i18n/id.ts +213 -0
  149. package/src/tool/temperature-timeline/i18n/it.ts +213 -0
  150. package/src/tool/temperature-timeline/i18n/ja.ts +213 -0
  151. package/src/tool/temperature-timeline/i18n/ko.ts +213 -0
  152. package/src/tool/temperature-timeline/i18n/nl.ts +213 -0
  153. package/src/tool/temperature-timeline/i18n/pl.ts +213 -0
  154. package/src/tool/temperature-timeline/i18n/pt.ts +213 -0
  155. package/src/tool/temperature-timeline/i18n/ru.ts +213 -0
  156. package/src/tool/temperature-timeline/i18n/sv.ts +213 -0
  157. package/src/tool/temperature-timeline/i18n/tr.ts +213 -0
  158. package/src/tool/temperature-timeline/i18n/zh.ts +213 -0
  159. package/src/tool/temperature-timeline/index.ts +11 -0
  160. package/src/tool/temperature-timeline/logic/TemperatureTimelineEngine.ts +58 -0
  161. package/src/tool/temperature-timeline/planet-temperature-timeline.css +158 -0
  162. package/src/tool/temperature-timeline/seo.astro +15 -0
  163. package/src/tools.ts +4 -0
  164. package/src/types.ts +1 -3
@@ -8,25 +8,25 @@ const howTo = [
8
8
  },
9
9
  {
10
10
  name: 'Запустите базовый тест задержки',
11
- text: 'Нажмите кнопку «Начать» при выключенной микроволновке, чтобы установить стабильный базовый уровень соединения.',
11
+ text: 'Нажмите кнопку "Начать" при выключенной микроволновке, чтобы установить стабильный базовый уровень соединения.',
12
12
  },
13
13
  {
14
14
  name: 'Включите микроволноку',
15
- text: 'Разогрейте стакан воды в течение 3060 секунд и встаньте рядом с прибором со своим устройством.',
15
+ text: 'Разогрейте стакан воды в течение 30-60 секунд и встаньте рядом с прибором со своим устройством.',
16
16
  },
17
17
  {
18
18
  name: 'Проанализируйте график',
19
- text: 'Наблюдайте, поднимается ли задержка выше 100200 мс или случаются ли потери пакетов во время работы прибора.',
19
+ text: 'Наблюдайте, поднимается ли задержка выше 100-200 мс или случаются ли потери пакетов во время работы прибора.',
20
20
  },
21
21
  ];
22
22
  const faq = [
23
23
  {
24
24
  question: 'Как веб-сайт может обнаружить мою микроволновку?',
25
- answer: 'Мы используем не магические сенсоры, а задержку сети. Как WiFi 2,4 ГГц, так и микроволновые печи работают на одной частоте (около 2450 МГц). Если экранирование микроволновки нарушено, оно создает «шум», который сталкивается с WiFi, резко увеличивая задержку (пинг).',
25
+ answer: 'Мы используем не магические сенсоры, а задержку сети. Как WiFi 2,4 ГГц, так и микроволновые печи работают на одной частоте (около 2450 МГц). Если экранирование микроволновки нарушено, оно создает "шум", который сталкивается с WiFi, резко увеличивая задержку (пинг).',
26
26
  },
27
27
  {
28
28
  question: 'Опасно ли, если моя микроволновка пропускает излучение?',
29
- answer: 'Небольшие помехи WiFi это нормально и не несут немедленного риска для здоровья, так как мощность быстро падает с расстоянием. Однако сильная утечка указывает на плохую герметичность дверцы или сетки, что следует проверить в целях технической безопасности.',
29
+ answer: 'Небольшие помехи WiFi - это нормально и не несут немедленного риска для здоровья, так как мощность быстро падает с расстоянием. Однако сильная утечка указывает на плохую герметичность дверцы или сетки, что следует проверить в целях технической безопасности.',
30
30
  },
31
31
  {
32
32
  question: 'Почему тест не работает с WiFi 5 ГГц?',
@@ -34,17 +34,16 @@ const faq = [
34
34
  },
35
35
  {
36
36
  question: 'Что означают скачки задержки на графике?',
37
- answer: 'Постоянные скачки во время работы микроволновки говорят о том, что электромагнитный сигнал «утекает» наружу и насыщает эфир, не давая пакетам данных WiFi приходить вовремя.',
37
+ answer: 'Постоянные скачки во время работы микроволновки говорят о том, что электромагнитный сигнал "утекает" наружу и насыщает эфир, не давая пакетам данных WiFi приходить вовремя.',
38
38
  },
39
39
  ];
40
+ import { bibliography } from '../bibliography';
40
41
  import type { ToolLocaleContent } from '../../../types';
41
42
 
42
43
  export const content: ToolLocaleContent = {
43
44
  slug,
44
45
  title,
45
46
  description,
46
- faqTitle: 'Часто задаваемые вопросы',
47
- bibliographyTitle: 'Библиография',
48
47
  ui: {
49
48
  copied: 'Скопировано',
50
49
  noHistory: 'История пуста',
@@ -85,11 +84,11 @@ export const content: ToolLocaleContent = {
85
84
  },
86
85
  {
87
86
  type: 'paragraph',
88
- html: 'Микроволновка самый недопонятый прибор на современной кухне. Ее ненавидят пуристы и любят прагматики, но за ней скрывается постоянная борьба между замкнутой энергией и внешним миром.',
87
+ html: 'Микроволновка - самый недопонятый прибор на современной кухне. Ее ненавидят пуристы и любят прагматики, но за ней скрывается постоянная борьба между замкнутой энергией и внешним миром.',
89
88
  },
90
89
  {
91
90
  type: 'paragraph',
92
- html: 'С чисто физической точки зрения микроволновая печь это <strong>объемный резонатор</strong>, предназначенный для бомбардировки молекул воды электромагнитным излучением на строго определенной частоте: <strong>2,45 ГГц</strong>. Эта частота не случайна; она необходима для вызова дипольных колебаний частиц воды, генерирующих тепло за счет трения. Проблема в том, что это именно та частота, которую использует стандарт WiFi 802.11b/g/n.',
91
+ html: 'С чисто физической точки зрения микроволновая печь - это <strong>объемный резонатор</strong>, предназначенный для бомбардировки молекул воды электромагнитным излучением на строго определенной частоте: <strong>2,45 ГГц</strong>. Эта частота не случайна; она необходима для вызова дипольных колебаний частиц воды, генерирующих тепло за счет трения. Проблема в том, что это именно та частота, которую использует стандарт WiFi 802.11b/g/n.',
93
92
  },
94
93
  {
95
94
  type: 'title',
@@ -98,11 +97,11 @@ export const content: ToolLocaleContent = {
98
97
  },
99
98
  {
100
99
  type: 'paragraph',
101
- html: 'Любое WiFi-устройство, работающее в диапазоне 2,4 ГГц, конкурирует за тот же «воздух», что и ваша микроволновка. В идеальной печи <strong>клетка Фарадея</strong> (металлическая сетка, которую вы видите на дверце и внутренних стенках) должна удерживать 100% энергии.',
100
+ html: 'Любое WiFi-устройство, работающее в диапазоне 2,4 ГГц, конкурирует за тот же "воздух", что и ваша микроволновка. В идеальной печи <strong>клетка Фарадея</strong> (металлическая сетка, которую вы видите на дверце и внутренних стенках) должна удерживать 100% энергии.',
102
101
  },
103
102
  {
104
103
  type: 'paragraph',
105
- html: 'Однако ни одна клетка не идеальна в долгосрочной перспективе. Уплотнители дверцы, магнитные защелки и износ металла могут привести к утечке небольшого количества энергии. Хотя эти уровни обычно значительно ниже пределов безопасности для человека, они <strong>огромны</strong> для сетевой карты WiFi, вызывая задержки, потерю пакетов и характерный «джиттер», который измеряет наш инструмент.',
104
+ html: 'Однако ни одна клетка не идеальна в долгосрочной перспективе. Уплотнители дверцы, магнитные защелки и износ металла могут привести к утечке небольшого количества энергии. Хотя эти уровни обычно значительно ниже пределов безопасности для человека, они <strong>огромны</strong> для сетевой карты WiFi, вызывая задержки, потерю пакетов и характерный "джиттер", который измеряет наш инструмент.',
106
105
  },
107
106
  {
108
107
  type: 'title',
@@ -116,8 +115,8 @@ export const content: ToolLocaleContent = {
116
115
  {
117
116
  type: 'list',
118
117
  items: [
119
- '<strong>Шаг 1 Телефон:</strong> Положите мобильный телефон внутрь микроволновки (<strong>НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ ВКЛЮЧАЙТЕ ПЕЧЬ!</strong> Просто закройте дверцу).',
120
- '<strong>Шаг 2 Звонок:</strong> Попробуйте позвонить на этот телефон с другого устройства. Если телефон зазвонит, клетка Фарадея неисправна или не настроена на сотовые частоты. Если абонент «вне зоны доступа», экранирование работает правильно.',
118
+ '<strong>Шаг 1 - Телефон:</strong> Положите мобильный телефон внутрь микроволновки (<strong>НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ ВКЛЮЧАЙТЕ ПЕЧЬ!</strong> Просто закройте дверцу).',
119
+ '<strong>Шаг 2 - Звонок:</strong> Попробуйте позвонить на этот телефон с другого устройства. Если телефон зазвонит, клетка Фарадея неисправна или не настроена на сотовые частоты. Если абонент "вне зоны доступа", экранирование работает правильно.',
121
120
  ],
122
121
  },
123
122
  {
@@ -128,9 +127,9 @@ export const content: ToolLocaleContent = {
128
127
  {
129
128
  type: 'list',
130
129
  items: [
131
- '<strong>«Микроволновки изменяют молекулярную структуру воды»</strong> ЛОЖЬ. Микроволновое излучение является <em>неионизирующим</em>. У него недостаточно энергии, чтобы разорвать химические связи или изменить ДНК. Оно просто заставляет молекулы воды вибрировать, увеличивая их кинетическую энергию (температуру).',
132
- '<strong>«Радиация накапливается в еде»</strong> ЛОЖЬ. Микроволны подобны свету: как только вы выключаете выключатель, они исчезают. Горячая еда не испускает микроволновое излучение, только инфракрасное (тепло), точно так же, как костер или сковорода.',
133
- '<strong>«Наблюдение за вращающейся тарелкой портит зрение»</strong> ОТЧАСТИ ПРАВДА. Стекло дверцы снабжено сеткой, блокирующей волны 2,45 ГГц. Однако, если сетка повреждена, стекло не остановит микроволны. Хрусталик глаза очень чувствителен к нагреву и плохо снабжается кровью, поэтому длительное прямое воздействие (рядом с утечкой) может вызвать тепловую катаракту.',
130
+ '<strong>"Микроволновки изменяют молекулярную структуру воды"</strong> - ЛОЖЬ. Микроволновое излучение является <em>неионизирующим</em>. У него недостаточно энергии, чтобы разорвать химические связи или изменить ДНК. Оно просто заставляет молекулы воды вибрировать, увеличивая их кинетическую энергию (температуру).',
131
+ '<strong>"Радиация накапливается в еде"</strong> - ЛОЖЬ. Микроволны подобны свету: как только вы выключаете выключатель, они исчезают. Горячая еда не испускает микроволновое излучение, только инфракрасное (тепло), точно так же, как костер или сковорода.',
132
+ '<strong>"Наблюдение за вращающейся тарелкой портит зрение"</strong> - ОТЧАСТИ ПРАВДА. Стекло дверцы снабжено сеткой, блокирующей волны 2,45 ГГц. Однако, если сетка повреждена, стекло не остановит микроволны. Хрусталик глаза очень чувствителен к нагреву и плохо снабжается кровью, поэтому длительное прямое воздействие (рядом с утечкой) может вызвать тепловую катаракту.',
134
133
  ],
135
134
  },
136
135
  {
@@ -140,33 +139,20 @@ export const content: ToolLocaleContent = {
140
139
  },
141
140
  {
142
141
  type: 'paragraph',
143
- html: 'Наш инструмент не измеряет радиацию напрямую (в смартфонах нет таких датчиков), но он измеряет <strong>главный симптом</strong>. Когда частица излучения 2,45 ГГц покидает печь, она «сталкивается» с WiFi-сигналом вашего устройства. Это вызывает:',
142
+ html: 'Наш инструмент не измеряет радиацию напрямую (в смартфонах нет таких датчиков), но он измеряет <strong>главный симптом</strong>. Когда частица излучения 2,45 ГГц покидает печь, она "сталкивается" с WiFi-сигналом вашего устройства. Это вызывает:',
144
143
  },
145
144
  {
146
145
  type: 'list',
147
146
  items: [
148
147
  '<strong>Повторную передачу пакетов:</strong> Роутер обнаруживает, что сообщение пришло поврежденным, и вынужден отправить его снова, что увеличивает задержку.',
149
- '<strong>Вариацию джиттера:</strong> Это показатель нестабильности времени отклика. Высокий джиттер однозначный признак массовых внешних помех.',
148
+ '<strong>Вариацию джиттера:</strong> Это показатель нестабильности времени отклика. Высокий джиттер - однозначный признак массовых внешних помех.',
150
149
  '<strong>Падение производительности:</strong> Скорость передачи падает из-за насыщения радиочастотного спектра.',
151
- '<strong>Фоновый шум:</strong> Микроволновка вносит шум, который повышает «порог шума», из-за чего устройству становится трудно отличить реальные данные от радиоактивного хаоса.',
150
+ '<strong>Фоновый шум:</strong> Микроволновка вносит шум, который повышает "порог шума", из-за чего устройству становится трудно отличить реальные данные от радиоактивного хаоса.',
152
151
  ],
153
152
  },
154
153
  ],
155
154
  faq,
156
- bibliography: [
157
- {
158
- name: 'Утечка микроволновых печей: стандарты и безопасность - FDA',
159
- url: 'https://www.fda.gov/radiation-emitting-products/resources-you-radiation-emitting-products/microwave-oven-radiation',
160
- },
161
- {
162
- name: 'Электромагнитная совместимость микроволновых печей и WLAN - IEEE Xplore',
163
- url: 'https://ieeexplore.ieee.org/document/8444555',
164
- },
165
- {
166
- name: 'Клетки Фарадея и эффективность РЧ-экранирования - NIST',
167
- url: 'https://www.nist.gov/topics/electromagnetic-fields',
168
- },
169
- ],
155
+ bibliography,
170
156
  howTo,
171
157
 
172
158
  schemas: [
@@ -202,3 +188,4 @@ export const content: ToolLocaleContent = {
202
188
  },
203
189
  ],
204
190
  };
191
+
@@ -37,14 +37,13 @@ const faq = [
37
37
  answer: 'Ständiga spikar under mikrovågsugnens drift tyder på att den elektromagnetiska signalen "slipper ut" och mättar luften, vilket förhindrar att WiFi-datapaket kommer fram i tid.',
38
38
  },
39
39
  ];
40
+ import { bibliography } from '../bibliography';
40
41
  import type { ToolLocaleContent } from '../../../types';
41
42
 
42
43
  export const content: ToolLocaleContent = {
43
44
  slug,
44
45
  title,
45
46
  description,
46
- faqTitle: 'Vanliga frågor',
47
- bibliographyTitle: 'Bibliografi',
48
47
  ui: {
49
48
  copied: 'Kopierad',
50
49
  noHistory: 'Ingen historik',
@@ -153,20 +152,7 @@ export const content: ToolLocaleContent = {
153
152
  },
154
153
  ],
155
154
  faq,
156
- bibliography: [
157
- {
158
- name: 'Microwave Oven Leakage: Standards and Safety - Food and Drug Administration (FDA)',
159
- url: 'https://www.fda.gov/radiation-emitting-products/resources-you-radiation-emitting-products/microwave-oven-radiation',
160
- },
161
- {
162
- name: 'Electromagnetic Compatibility of Microwave Ovens and WLAN - IEEE Xplore',
163
- url: 'https://ieeexplore.ieee.org/document/8444555',
164
- },
165
- {
166
- name: 'Faraday Cages and RF Shielding Effectiveness - NIST (National Institute of Standards and Technology)',
167
- url: 'https://www.nist.gov/topics/electromagnetic-fields',
168
- },
169
- ],
155
+ bibliography,
170
156
  howTo,
171
157
 
172
158
  schemas: [
@@ -202,3 +188,4 @@ export const content: ToolLocaleContent = {
202
188
  },
203
189
  ],
204
190
  };
191
+
@@ -37,14 +37,13 @@ const faq = [
37
37
  answer: 'Mikrodalga çalışırken sürekli sıçramalar olması, elektromanyetik sinyalin "kaçtığını" ve havayı doyurarak WiFi veri paketlerinin zamanında ulaşmasını engellediğini gösterir.',
38
38
  },
39
39
  ];
40
+ import { bibliography } from '../bibliography';
40
41
  import type { ToolLocaleContent } from '../../../types';
41
42
 
42
43
  export const content: ToolLocaleContent = {
43
44
  slug,
44
45
  title,
45
46
  description,
46
- faqTitle: 'Sıkça Sorulan Sorular',
47
- bibliographyTitle: 'Bibliyografya',
48
47
  ui: {
49
48
  copied: 'Kopyalandı',
50
49
  noHistory: 'Geçmiş yok',
@@ -153,20 +152,7 @@ export const content: ToolLocaleContent = {
153
152
  },
154
153
  ],
155
154
  faq,
156
- bibliography: [
157
- {
158
- name: 'Microwave Oven Leakage: Standards and Safety - Food and Drug Administration (FDA)',
159
- url: 'https://www.fda.gov/radiation-emitting-products/resources-you-radiation-emitting-products/microwave-oven-radiation',
160
- },
161
- {
162
- name: 'Electromagnetic Compatibility of Microwave Ovens and WLAN - IEEE Xplore',
163
- url: 'https://ieeexplore.ieee.org/document/8444555',
164
- },
165
- {
166
- name: 'Faraday Cages and RF Shielding Effectiveness - NIST (National Institute of Standards and Technology)',
167
- url: 'https://www.nist.gov/topics/electromagnetic-fields',
168
- },
169
- ],
155
+ bibliography,
170
156
  howTo,
171
157
 
172
158
  schemas: [
@@ -202,3 +188,4 @@ export const content: ToolLocaleContent = {
202
188
  },
203
189
  ],
204
190
  };
191
+
@@ -22,7 +22,7 @@ const howTo = [
22
22
  const faq = [
23
23
  {
24
24
  question: '网站是如何检测我的微波炉的?',
25
- answer: '我们不使用神奇的传感器,而是利用网络延迟。2.4GHz WiFi 和微波炉都在相同的频率(约 2450 MHz)下工作。如果微波炉屏蔽失效,它会产生与 WiFi 冲突的“噪声”,从而剧烈增加延迟(Ping)。',
25
+ answer: '我们不使用神奇的传感器,而是利用网络延迟。2.4GHz WiFi 和微波炉都在相同的频率(约 2450 MHz)下工作。如果微波炉屏蔽失效,它会产生与 WiFi 冲突的"噪声",从而剧烈增加延迟(Ping)。',
26
26
  },
27
27
  {
28
28
  question: '如果我的微波炉有泄漏,危险吗?',
@@ -34,17 +34,16 @@ const faq = [
34
34
  },
35
35
  {
36
36
  question: '图表上的延迟尖峰意味着什么?',
37
- answer: '微波炉运行期间持续出现的尖峰表明电磁信号正在“逃逸”并使空气饱和,导致 WiFi 数据包无法按时送达。',
37
+ answer: '微波炉运行期间持续出现的尖峰表明电磁信号正在"逃逸"并使空气饱和,导致 WiFi 数据包无法按时送达。',
38
38
  },
39
39
  ];
40
+ import { bibliography } from '../bibliography';
40
41
  import type { ToolLocaleContent } from '../../../types';
41
42
 
42
43
  export const content: ToolLocaleContent = {
43
44
  slug,
44
45
  title,
45
46
  description,
46
- faqTitle: '常见问题',
47
- bibliographyTitle: '参考文献',
48
47
  ui: {
49
48
  copied: '已复制',
50
49
  noHistory: '暂无历史记录',
@@ -98,11 +97,11 @@ export const content: ToolLocaleContent = {
98
97
  },
99
98
  {
100
99
  type: 'paragraph',
101
- html: '任何在 2.4GHz 频段运行的 WiFi 设备都在与您的微波炉争夺同一片“空间”。在一个完美的微波炉中,<strong>法拉第笼</strong>(即您在炉门和内壁上看到的金属网)应 100% 阻隔能量。',
100
+ html: '任何在 2.4GHz 频段运行的 WiFi 设备都在与您的微波炉争夺同一片"空间"。在一个完美的微波炉中,<strong>法拉第笼</strong>(即您在炉门和内壁上看到的金属网)应 100% 阻隔能量。',
102
101
  },
103
102
  {
104
103
  type: 'paragraph',
105
- html: '然而,长远来看,没有任何屏蔽笼是完美的。炉门密封条、磁性搭扣和金属磨损都可能导致少量能量逸出。虽然这些水平通常远低于人体安全限值,但对于 WiFi 网卡来说却是<strong>巨大</strong>的干扰,会导致延迟、丢包以及我们工具测量的特征性“抖动”。',
104
+ html: '然而,长远来看,没有任何屏蔽笼是完美的。炉门密封条、磁性搭扣和金属磨损都可能导致少量能量逸出。虽然这些水平通常远低于人体安全限值,但对于 WiFi 网卡来说却是<strong>巨大</strong>的干扰,会导致延迟、丢包以及我们工具测量的特征性"抖动"。',
106
105
  },
107
106
  {
108
107
  type: 'title',
@@ -117,7 +116,7 @@ export const content: ToolLocaleContent = {
117
116
  type: 'list',
118
117
  items: [
119
118
  '<strong>步骤 1 - 手机:</strong> 将手机放入微波炉内(<strong>切记严禁开启微波炉!</strong> 只需关上炉门即可)。',
120
- '<strong>步骤 2 - 拨打:</strong> 尝试从另一台设备拨打该手机。如果手机响了,说明法拉第笼有缺陷或未针对蜂窝频率进行优化。如果提示“不在服务区”,则说明屏蔽工作正常。',
119
+ '<strong>步骤 2 - 拨打:</strong> 尝试从另一台设备拨打该手机。如果手机响了,说明法拉第笼有缺陷或未针对蜂窝频率进行优化。如果提示"不在服务区",则说明屏蔽工作正常。',
121
120
  ],
122
121
  },
123
122
  {
@@ -128,9 +127,9 @@ export const content: ToolLocaleContent = {
128
127
  {
129
128
  type: 'list',
130
129
  items: [
131
- '<strong>“微波会改变水分子的结构”</strong> - 错误。微波辐射是 <em>非电离辐射</em>。它没有足够的能量来打破化学键或改变 DNA。它只是使水分子振动,从而增加其动能(温度)。',
132
- '<strong>“辐射会累积在食物中”</strong> - 错误。微波就像光:一旦关掉开关,它们就消失了。加热后的食物不会发出微波辐射,只会像营火或平底锅一样发出红外辐射(热量)。',
133
- '<strong>“盯着转盘看会损伤眼睛”</strong> - 部分属实。炉门玻璃设计有金属网,可以阻隔 2.45GHz 波长的辐射。然而,如果金属网损坏,玻璃将无法阻挡微波。眼睛的晶状体对热量非常敏感且血液循环较差,因此长时间直接暴露(在泄漏点附近)可能会导致热致白内障。',
130
+ '<strong>"微波会改变水分子的结构"</strong> - 错误。微波辐射是 <em>非电离辐射</em>。它没有足够的能量来打破化学键或改变 DNA。它只是使水分子振动,从而增加其动能(温度)。',
131
+ '<strong>"辐射会累积在食物中"</strong> - 错误。微波就像光:一旦关掉开关,它们就消失了。加热后的食物不会发出微波辐射,只会像营火或平底锅一样发出红外辐射(热量)。',
132
+ '<strong>"盯着转盘看会损伤眼睛"</strong> - 部分属实。炉门玻璃设计有金属网,可以阻隔 2.45GHz 波长的辐射。然而,如果金属网损坏,玻璃将无法阻挡微波。眼睛的晶状体对热量非常敏感且血液循环较差,因此长时间直接暴露(在泄漏点附近)可能会导致热致白内障。',
134
133
  ],
135
134
  },
136
135
  {
@@ -140,7 +139,7 @@ export const content: ToolLocaleContent = {
140
139
  },
141
140
  {
142
141
  type: 'paragraph',
143
- html: '我们的工具并不直接测量辐射(智能手机没有相关传感器),但它测量辐射的<strong>主要症状</strong>。当 2.45GHz 的辐射分子从微波炉逃逸时,它会与您设备的 WiFi 信号“碰撞”。这会导致:',
142
+ html: '我们的工具并不直接测量辐射(智能手机没有相关传感器),但它测量辐射的<strong>主要症状</strong>。当 2.45GHz 的辐射分子从微波炉逃逸时,它会与您设备的 WiFi 信号"碰撞"。这会导致:',
144
143
  },
145
144
  {
146
145
  type: 'list',
@@ -148,25 +147,12 @@ export const content: ToolLocaleContent = {
148
147
  '<strong>数据包重传:</strong> 路由器检测到消息到达时已损坏,必须重新发送,从而增加了延迟。',
149
148
  '<strong>抖动变化:</strong> 这是衡量响应时间不稳定性的指标。高抖动是存在大规模外部干扰的明确信号。',
150
149
  '<strong>性能下降:</strong> 由于射频频谱饱和,传输速度骤降。',
151
- '<strong>背景噪声:</strong> 微波炉注入的噪声提高了“噪声底限”,使设备难以区分真实数据和电磁混乱。',
150
+ '<strong>背景噪声:</strong> 微波炉注入的噪声提高了"噪声底限",使设备难以区分真实数据和电磁混乱。',
152
151
  ],
153
152
  },
154
153
  ],
155
154
  faq,
156
- bibliography: [
157
- {
158
- name: '微波炉泄漏:标准与安全 - 美国食品药品监督管理局 (FDA)',
159
- url: 'https://www.fda.gov/radiation-emitting-products/resources-you-radiation-emitting-products/microwave-oven-radiation',
160
- },
161
- {
162
- name: '微波炉与 WLAN 的电磁兼容性 - IEEE Xplore',
163
- url: 'https://ieeexplore.ieee.org/document/8444555',
164
- },
165
- {
166
- name: '法拉第笼与射频屏蔽效能 - 美国国家标准与技术研究院 (NIST)',
167
- url: 'https://www.nist.gov/topics/electromagnetic-fields',
168
- },
169
- ],
155
+ bibliography,
170
156
  howTo,
171
157
 
172
158
  schemas: [
@@ -202,3 +188,4 @@ export const content: ToolLocaleContent = {
202
188
  },
203
189
  ],
204
190
  };
191
+
@@ -1,4 +1,5 @@
1
1
  import { microwaveDetector } from './entry';
2
+ import type { ToolDefinition } from '../../types';
2
3
  export * from './entry';
3
4
  export const MICROWAVE_DETECTOR_TOOL: ToolDefinition = {
4
5
  entry: microwaveDetector,
@@ -81,7 +81,11 @@ export class MicrowaveEngine {
81
81
  if (this.lastPings.length < 2) return 0;
82
82
  let diffSum = 0;
83
83
  for (let i = 1; i < this.lastPings.length; i++) {
84
- diffSum += Math.abs(this.lastPings[i] - this.lastPings[i - 1]);
84
+ const current = this.lastPings[i];
85
+ const prev = this.lastPings[i - 1];
86
+ if (current !== undefined && prev !== undefined) {
87
+ diffSum += Math.abs(current - prev);
88
+ }
85
89
  }
86
90
  return diffSum / (this.lastPings.length - 1);
87
91
  }
@@ -36,11 +36,6 @@
36
36
  max-width: 56rem;
37
37
  margin: 0 auto;
38
38
  padding: 1rem;
39
-
40
- @media (min-width: 640px) {
41
- padding: 2rem;
42
- }
43
-
44
39
  position: relative;
45
40
  }
46
41
 
@@ -132,11 +127,7 @@
132
127
  box-shadow: 0 20px 25px -5px var(--microwave-panel-shadow);
133
128
  overflow: hidden;
134
129
  padding: 1.5rem;
135
- position: relative;
136
-
137
- @media (min-width: 640px) {
138
- padding: 2.5rem;
139
- }
130
+ position: relative
140
131
  }
141
132
 
142
133
  .microwave-header {
@@ -226,11 +217,6 @@
226
217
 
227
218
  .microwave-big-value {
228
219
  font-size: 120px;
229
-
230
- @media (min-width: 640px) {
231
- font-size: 180px;
232
- }
233
-
234
220
  font-weight: 900;
235
221
  font-style: italic;
236
222
  letter-spacing: -0.02em;
@@ -252,11 +238,6 @@
252
238
  .microwave-jitter-value {
253
239
  color: var(--microwave-primary);
254
240
  font-size: 40px;
255
-
256
- @media (min-width: 640px) {
257
- font-size: 60px;
258
- }
259
-
260
241
  font-weight: 900;
261
242
  }
262
243
 
@@ -281,11 +262,6 @@
281
262
  .microwave-content-grid {
282
263
  display: grid;
283
264
  grid-template-columns: 1fr;
284
-
285
- @media (min-width: 768px) {
286
- grid-template-columns: 1fr 1fr;
287
- }
288
-
289
265
  gap: 2rem;
290
266
  align-items: flex-end;
291
267
  }
@@ -412,4 +388,25 @@
412
388
  opacity: 1;
413
389
  transform: scale(1);
414
390
  }
391
+ }
392
+
393
+ @media (min-width: 640px) {
394
+ .microwave-detector-container {
395
+ padding: 2rem;
396
+ }
397
+ .microwave-detector-panel {
398
+ padding: 2.5rem;
399
+ }
400
+ .microwave-big-value {
401
+ font-size: 180px;
402
+ }
403
+ .microwave-jitter-value {
404
+ font-size: 60px;
405
+ }
406
+ }
407
+
408
+ @media (min-width: 768px) {
409
+ .microwave-content-grid {
410
+ grid-template-columns: 1fr 1fr;
411
+ }
415
412
  }
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await microwaveDetector.i18n[locale]?.();
12
+ if (!content) return null;
12
13
  ---
13
14
 
14
- {content && <SEORenderer content={{ sections: content.seo, locale }} />}
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -1,5 +1,5 @@
1
1
  ---
2
- import { Bibliography } from '@jjlmoya/utils-shared';
2
+ import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
3
  import { simulationProbability } from './index';
4
4
  import type { KnownLocale } from '../../types';
5
5
 
@@ -11,4 +11,4 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await simulationProbability.i18n[locale]?.();
12
12
  ---
13
13
 
14
- {content && <Bibliography links={content.bibliography} title={content.ui.bibliographyTitle} />}
14
+ {content && <SharedBibliography links={content.bibliography} />}
@@ -0,0 +1,24 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Bostrom, N. (2003). Are You Living in a Computer Simulation? The Philosophical Quarterly, 53(211), 243-255.',
6
+ url: 'https://www.nickbostrom.com/sim.html',
7
+ },
8
+ {
9
+ name: 'Chalmers, D. J. (2005). The Matrix as Metaphysics. Science Fiction and Philosophy, 132-142.',
10
+ url: 'https://consc.net/papers/matrix.html',
11
+ },
12
+ {
13
+ name: 'Gefter, A. (2014). The Man Who Tried to Redeem the World with Logic: The Life and Work of Kurt Gödel. Nautilus Magazine.',
14
+ url: 'https://nautil.us/articles/the-man-who-tried-to-redeem-the-world-with-logic',
15
+ },
16
+ {
17
+ name: 'Tegmark, M. (2014). Our Mathematical Universe: My Quest for the Ultimate Nature of Reality. Knopf.',
18
+ url: 'https://space.mit.edu/home/tegmark/mathematical-universe.html',
19
+ },
20
+ {
21
+ name: 'Tyson, N. deG. (2014). Welcome to the Universe: An Astrophysical Tour. Princeton University Press.',
22
+ url: 'https://www.haydenplanetarium.org/',
23
+ },
24
+ ];
@@ -41,14 +41,13 @@ const faq = [
41
41
  answer: 'Das hängt von Ihren Überzeugungen über die Zukunft der Computertechnik ab. Niedrige Werte (100-1000) gehen von Ressourcenbeschränkungen aus. Hohe Werte (Millionen) setzen praktisch unbegrenzte Rechenleistung voraus. Die meisten wissenschaftlichen Diskussionen verwenden Werte zwischen 1000 und 1 Billion.',
42
42
  },
43
43
  ];
44
+ import { bibliography } from '../bibliography';
44
45
  import type { ToolLocaleContent } from '../../../types';
45
46
 
46
47
  export const content: ToolLocaleContent = {
47
48
  slug,
48
49
  title,
49
50
  description,
50
- faqTitle: 'Häufig gestellte Fragen',
51
- bibliographyTitle: 'Bibliografie',
52
51
  ui: {
53
52
  copied: 'Kopiert',
54
53
  noHistory: 'Kein Verlauf',
@@ -167,28 +166,7 @@ export const content: ToolLocaleContent = {
167
166
  },
168
167
  ],
169
168
  faq,
170
- bibliography: [
171
- {
172
- name: 'Bostrom, N. (2003). Are You Living in a Computer Simulation? The Philosophical Quarterly, 53(211), 243-255.',
173
- url: 'https://www.nickbostrom.com/sim.html',
174
- },
175
- {
176
- name: 'Chalmers, D. J. (2005). The Matrix as Metaphysics. Science Fiction and Philosophy, 132-142.',
177
- url: 'https://consc.net/papers/matrix.html',
178
- },
179
- {
180
- name: 'Gefter, A. (2014). The Man Who Tried to Redeem the World with Logic: The Life and Work of Kurt Gödel. Nautilus Magazine.',
181
- url: 'https://nautil.us/articles/the-man-who-tried-to-redeem-the-world-with-logic',
182
- },
183
- {
184
- name: 'Tegmark, M. (2014). Our Mathematical Universe: My Quest for the Ultimate Nature of Reality. Knopf.',
185
- url: 'https://space.mit.edu/home/tegmark/mathematical-universe.html',
186
- },
187
- {
188
- name: 'Tyson, N. deG. (2014). Welcome to the Universe: An Astrophysical Tour. Princeton University Press.',
189
- url: 'https://www.haydenplanetarium.org/',
190
- },
191
- ],
169
+ bibliography,
192
170
  howTo,
193
171
 
194
172
  schemas: [
@@ -224,3 +202,4 @@ export const content: ToolLocaleContent = {
224
202
  },
225
203
  ],
226
204
  };
205
+
@@ -41,14 +41,13 @@ const faq = [
41
41
  answer: 'It depends on your beliefs about the future of computing. Low values (100-1000) assume resource limitations. High values (millions) assume practically unlimited computing power. Most scientific discussions use values between 1000 and 1 trillion.',
42
42
  },
43
43
  ];
44
+ import { bibliography } from '../bibliography';
44
45
  import type { ToolLocaleContent } from '../../../types';
45
46
 
46
47
  export const content: ToolLocaleContent = {
47
48
  slug,
48
49
  title,
49
50
  description,
50
- faqTitle: 'Frequently Asked Questions',
51
- bibliographyTitle: 'Bibliography',
52
51
  ui: {
53
52
  copied: 'Copied',
54
53
  noHistory: 'No history',
@@ -167,28 +166,7 @@ export const content: ToolLocaleContent = {
167
166
  },
168
167
  ],
169
168
  faq,
170
- bibliography: [
171
- {
172
- name: 'Bostrom, N. (2003). Are You Living in a Computer Simulation? The Philosophical Quarterly, 53(211), 243-255.',
173
- url: 'https://www.nickbostrom.com/sim.html',
174
- },
175
- {
176
- name: 'Chalmers, D. J. (2005). The Matrix as Metaphysics. Science Fiction and Philosophy, 132-142.',
177
- url: 'https://consc.net/papers/matrix.html',
178
- },
179
- {
180
- name: 'Gefter, A. (2014). The Man Who Tried to Redeem the World with Logic: The Life and Work of Kurt Gödel. Nautilus Magazine.',
181
- url: 'https://nautil.us/articles/the-man-who-tried-to-redeem-the-world-with-logic',
182
- },
183
- {
184
- name: 'Tegmark, M. (2014). Our Mathematical Universe: My Quest for the Ultimate Nature of Reality. Knopf.',
185
- url: 'https://space.mit.edu/home/tegmark/mathematical-universe.html',
186
- },
187
- {
188
- name: 'Tyson, N. deG. (2014). Welcome to the Universe: An Astrophysical Tour. Princeton University Press.',
189
- url: 'https://www.haydenplanetarium.org/',
190
- },
191
- ],
169
+ bibliography,
192
170
  howTo,
193
171
 
194
172
  schemas: [
@@ -224,3 +202,4 @@ export const content: ToolLocaleContent = {
224
202
  },
225
203
  ],
226
204
  };
205
+