Тестирование Golang

Обычно тесты находятся на одном уровне с тестируемым кодом, таким образом получая доступ к деталям имплементации. Однако go test поддерживает модули с суффиксом «_test», которые собираются в отдельный пакет. Пример:

 // in example.go
 package example

 var start int

 func Add(n int) int {
   start += n
   return start
 }

 // in example_test.go
 package example_test

 import (
   "testing"

   . "bitbucket.org/splice/blog/example"
 )

 func TestAdd(t *testing.T) {
   got := Add(1)
   if got != 1 {
     t.Errorf("got %d, want 1", got)
   }
 }

Единственный сценарий, оправдывающий dot-import (. “bitbucket.org/splice/blog/example”) — как раз black box-тестирование, во всех остальных случаях его следует избегать.

Пропуск тестов

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

  func TestSomeProtectedResource(t *testing.T) {
   if os.Getenv("SOME_ACCESS_TOKEN") == "" {
     t.Skip("skipping test; $SOME_ACCESS_TOKEN not set")
   }
   // ... the actual test
 }

Если тесты запущены с ключом -v, о пропуске теста будет упомянуто:

 === RUN TestSomeProtectedResource
 --- SKIP: TestSomeProtectedResource (0.00 seconds)
     example_test.go:17: skipping test; $SOME_ACCESS_TOKEN not set

Вместе с ключом пропуска тестов часто используется флаг -short, наличие которого можно проверить функцией testing.Short(), которая возвращает true, когда флаг выставлен (аналогично testing.Verbose() для -v, который увеличивает количество отладочной информации).

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

 func TestCountMallocs(t *testing.T) {
   if testing.Short() {
     t.Skip("skipping malloc count in short mode")
   }
   // rest of test...
 }

Помимо возможности пропустить тесты при помощи флага -short, есть флаг -timeout, который заставляет тест паниковать при превышении указанного тайм-аута.

Например, команда go test -timeout 1s для следующего теста:

 func TestWillTimeout(t *testing.T) {
   time.Sleep(2 * time.Second)
   // pass if timeout > 2s
 }

будет паниковать:

 === RUN TestWillTimeout
 panic: test timed out after 1s

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

 go test -run TestNameRegexp

Химические элементы вселенной

nuc
  • Ртуть жидкая а золото жёлтое из-за релятивистских эффектов в атомных оболочках. Да, электроны на орбитах летают так быстро.
  • Минутка алхимии: большинство из известных изотопов ртути превращаются в золото сами собой, ведь в ртути всего на один протон больше.
  • Новые химические элементы уже давно открывают ядерные физики. Но по историческим причинам названия им даёт международный союз химиков IUPAC.
  • Эйнштейний синтезировали при взрыве бомбы Ivy Mike – первой термоядерной бомбы. Летал самолёт и собирал пыль из гриба! Вот в пыли был Es.
  • А фермий (элемент 100) нашли в кораллах с атолла Эниветок, где взрывали ту самую бомбу. В кораллах, Карл!
  • Менделевий (Z=100) первый элемент синтезированный в лаборатории. 17 ядер получили в Беркли, бомбардируя эйнштейниевую мишень альфа частицами
  • М. Гёпперт-Майер нашла числа протонов и нейтронов в ядрах с закрытым ядерным оболочкам. Её босс не поверил и назвал эти числа магическими. Магические числа так и называются. Магические ядра более сферичны чем остальные, а ещё они дольше живут.
  • Да, ядра бывают вытянутые и сплюснутые. Сферичные ядра, ядра в форме тыквы, в форме дыни, в форме груши. А бывает квантовое смешение форм.
  • Сосуществование форм в ядре – то чем я сейчас занимаюсь. В магическом свинце, в изотопе 186 сосуществует целых три разных формы одновременно
  • Но при чём тут химия, спросите вы, это же ядерная физика? Но! Форма ядра влияет на тонкое расщепление линий электронов, а это уже химия.
кристалл висмута
Кристалл висмута очень красив.
  • Есть два элемента названных в честь людей прижизненно: это Сиборгий и Оганесон. Оганесян и ныне здравствует, работает в Дубне и не чихает.
  • В вашей школе скорее всего висела таблица Менделеева с Курчатовием и Нильсборием. Так их называли в СССР. А вообще они Резерфордий и Дубний.
  • Многие считают, что величайшее достижение Д. И. Менделеева – не периодическая таблица, а его труд “О соединении спирта с водой”.
  • Самый тяжёлый стабильный элемент – свинец. Всё что тяжелее свинца – радиоактивно.
  • Оганесон назван так потому что попадает в таблицу как благородный газ, как неон и аргон. Но нет, при комнатной температуре он вообще не газ.
  • Технически Нихоний (Z=113) первыми синтезировали русские, потому что они захуярили элемент 115 который превращается в 113 альфа-распадом.
  • Но японцы поразили мир своим упорством. Они сталкивали Zn и Bi три года с сечением ноль целых хуй десятых, и получили 3 (три) ядра нихония.
  • Ядро атома лития впервые расщепили в Харькове в 1928 году (тогда он был столицей Украины). Литий был на советском гербе города, вот:
атомный герб
Схема атома лития на гербе города.
  • Теоретики считают что есть так называемый “остров стабильности” – кластер стабильных или очень долгоживущих изотопов гораздо тяжелее свинца.
  • Они должны быть расположены в области следующих магических чисел. Но точно предсказать эти числа пока невозможно – это горячая тема сейчас.
  • Элементам ещё не открытым, или чьё открытие ещё не подтверждено, дают временные имена типа Uue, Ubp – унуненний, унбипентий. Уняня.
  • Но просто добавлять протоны в надежде найти “остров стабильности” бессмысленно. В супертяжёлых элементах должно быть больше нейтронов.
  • На сегодняшний день мы не можем синтезировать изотопы с достаточным количеством протонов и нейтронов чтобы попасть в “остров”. Но всё будет.
  • Супер-тяжёлые элементы получают в реакциях слияния-испарения: облучают тяжёлую мишень пучком тяжёлых же ионов с точно подобранной энергией.
  • Если энергия слишком маленькая – ядра рассеятся, если большой – расколются. А если такой как надо – с некоторой вероятностью они слипнутся.
  • До первых испытаний ядерных бомб в земной атмосфере вообще не было некоторых изотопов, например углерода 14. А теперь есть.
  • Да просто нет никаких последствий. Там высокий фон как для “в среднем по планете”, но там спокойно можно жить, хоть блин в гранитном доме.
  • В смысле всё это настолько маленькие эффекты что не о чем говорить. Большинство радиации от тория, кстати, в граните же и поглощается.

Настройки Sublime Text

Sublime Text насчитывает тысячи расширений и настроек, чтобы сделать персонализированный редактор кода вашей мечты. Я вам расскажу о некоторых настройках, плагинах, темах и цветовых схемах, которые помогут сделать ваш опыт программирования приятнее. Они не только сделают ваш экран красивее, но и сделают вас лучшим программистом!

Настройки

Sublime Text “из коробки” предлагает огромное количество настроек, визуально меняющих редактор, но большинство по умолчанию отключены. Вот несколько, без которых я не представляю свой редактор.

Важно:

Для того, чтобы редактировать настройки Sublime Text найдите в меню Sublime Text 2 > Preferences > Settings – Default и выберите нужные.

Где найти настройки в меню саблайм.

Найдите настройки, которые вы хотите изменить и добавьте их в User Settings чтобы они не удалились при обновлении редактора.

Пользовательские настройки в меню саблайм

Более подробно об основах работы с Sublime Text вы можете прочитать в статье:Installation and Base Settings.

Отступы и шрифты

Выбор правильного шрифта и отступов это одни из самых “личных” настроек для вашего кода. Для начала, выберите подходящий шрифт, предпочтительно моноширинный. Вот некоторые:

После того, как вы выбрали шрифт, убедитесь, что он установлен у вас на компьюетере. Затем добавьте его в настройки и измените размер и отступы, например, как здесь:

“font_face”: “Inconsolata";
"font_size": 18;
"line_padding_bottom": 1,
"line_padding_top": 1,

highlight_line

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

"highlight_line": true,

highlight_modified_tabs

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

"highlight_modified_tabs": true,

fade_fold_buttons

А вы знали, что Sublime Text позволяет сворачивать фрагменты кода? Я знал, но все время забывал об этом, из-за этой настройки. Выключите ее и стрелочки никогда больше не будут исчезать.

"fade_fold_buttons": false,

word_wrap

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

"word_wrap": true,

bold_folder_labels

В саблайме есть несколько отличных настроек, чтобы расставить акценты в боковой панели. Начнем с bold_folder_labels, которая выделит все директории жирным.

"bold_folder_labels": true,

Показывать открытые файлы в боковой панели

Странно, но это нельзя установить в конфигурационном файле. Вместо этого нужно выбрать такую настройку в меню:

View → Side Bar → Show Open Files

Выровнять боковую панель

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

Плагины

Плагины могут быть невероятно полезными, потому что они привносят дополнительный функционал. Я настоятельно рекоммендую использовать Package Control, чтобы работать с плагинами.

BracketHighlighter

Bracket highlighter это плагин, который подсвечивает парные теги и скобки (да ладно!) Но и тем не менее, это очень полезный инструмент, который показывает вам начало и конец той части кода, в которой находится курсор. Тип скобки отображается сбоку в виде разных иконок.

Git Gutter

Один из моих любимых плагинов. Git gutter это простой плагин, который отображает иконки около номеров строк, которые показывают было ли что-то добавлено, изменено или удалено по сравнению с вашим git-проектом.

SublimeLinter

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

Темы и цветовые схемы

Самая гибкая персонализация в Sublime Text возможна с помощью тем и цветовых схем. На данный момент существуют сотни различных вариантов и каждую неделю появляются новые. Вот несколько стоящих.

Тема: Soda

Soda стала самой популярной темой и самым лучшим примером кастомизации среди любителей Sublime Text. Существует огромное количество форков этого проекта. Soda предлагает несколько дополнительных настроек, вся графика оптимизирована под retina-экраны, также существуют темный и светлый варианты.

Тема: Flatland

Если вы являетесь поклонником плоского дизайна, тогда Flatland это ваш вариант. Эта тема упрощает внешний вид всех элементов и позволяет менять некоторые настройки, например вид вкладок и боковой панели.

Тема: Spacegray

Моя любимая тема, в том числе набирающая популярность на GitHub – Spacegray. Эта тема может похвастаться уникальными цветами и невероятно минималистичным интерфейсом.

Цветовая схема: Solarized

Довольно-таки известный проект Solarized доступен и для Sublime Text. Этот проект позиционируется как “аккуратные и точные цвета для машин и людей” и использует большое количество положений из теории цвета.

Цветовая схема: Base16

Base16 – это еще одна популярная цветовая схема с большим количеством настроек (я в данный момент использую именно ее).

Вывод

Как же много всего еще стоит рассмотреть! Не забудьте, что имеет смысл переработать очень много разных элементов Sublime Text в процессе кастомизации. Не верьте мне на слово, поизучайте GitHub и Package Control, попробуйте какие-нибудь другие настройки и вы поймете, что вам больше подходит. Не забывайте периодически “подкручивать” что-нибудь, чтобы ваш навык программирования не стоял на месте.

А какие настройки, шрифты, плагины, темы или цветовые схемы подошли вам? Напишите в комментариях и поделитесь с теми, кому по вашему мнению будет не лишним это узнать!

И снова про биткоин

Microsoft задумала оплату игр для Xbox биткоинами

В последние несколько месяцев криптовалюта становится всё более популярным способом оплаты. Так, помимо PayPal и Visa, теперь цифровой валютой начали интересоваться и в компании Microsoft. Компания прямо сейчас проводит опрос среди владельцев Xbox One и Xbox Series X. В нём компания, помимо всего прочего, спрашивает, хотели ли бы они использовать биткоин для оплаты игр. Пока что можно говорить лишь о том, что Microsoft анализирует необычную возможность. Но сам факт такого опроса уже показывает, в каком направлении двигается компания.

Карты Visa позволят платить биткоинами в обычных терминалах

Ну, офигеть! Платёжная система Visa объявила о решении. Теперь компания позволит платить биткоинами в абсолютно любых терминалах, принимающих к оплате её карты — конвертация в обычную валюту будет производиться самой системой. Глава Visa Альфред Келли выступил с заявлением, в котором отметил, что компания намерена не только обеспечить возможность покупки биткоинов с помощью карт Visa, но и дать возможность тратить цифровые деньги практически в любой точке планеты.

Эксперты криптовалютного рынка составили рейтинг самых популярных в России цифровых валют.

помимо биткойна (BTC) популярностью пользуются Ethereum (ETH) и Tether (USDT). Ethereum — вторая по капитализации криптовалюта в мире. А Tether — это основной стейблкоин, то есть криптовалюта, привязанная к запасам обычной валюты или товарам.Представитель биржи Garantex также отметила, что популярностью пользуется ещё один стейблкоин DAI. По её словам, биткойн и Ethereum чаще всего выступают как средство для инвестиций, а вот USDT используется для быстрого и беспроблемного проведения платежей, в том числе трансграничных. Однако напомним, что стейблкоины являются суррогатами криптовалют.

Полёт Starship SN8 закончился взрывом.

Испытательный полёт Starship SN8 состоялся 9 декабря 2020 года в 22:45 на космодроме в Бока-Чика на юге Техаса. Планировалось, что в ходе испытания образец корабля совершит свой необычный полёт на высоту ~12,5 км и вернётся на космодром. Большинство задач полёта действительно были выполнены.

Каковы были задачи испытательного полёта?

  • Полёт на трёх двигателях Raptor
  • Остановка двигателей в полёте
  •  Зависание на высоте 12 км
  •  Переворот в горизонтальное положение и контролируемое падение
  • Переключение двигателей на питание топливом от «посадочных» баков
  • Запуск двигателей в падении и переворот в вертикальное положение
  • Посадка

Полёт на трёх двигателях Raptor

Увеличение количества двигателей до трёх кажется простой задачей, но это не так. В полёте от двигателя на конструкцию действуют усилия и вибрации. Чем больше двигателей, тем больше и того и другого. На SN6 на днище кислородного бака, где установлены двигатели, действовала сила около 150 тонн-сил. В ходе полёта SN8 это уже были 500 тонн-сил. Примерно столько весит полностью заправленная ракета Falcon 9. Также существует возможность совпадения случайных вибраций от двигателей, что может дать нагрузку на конструкцию корабля, близкую к предельной.
Помимо вибраций, газовая струя от двигателя создаёт мощные акустические колебания. Достаточно открыть стрим любого ночного запуска Falcon 9 и убедиться, как эти волны сильны в первые секунды подъёма ракеты – водяной пар вокруг ракеты начинает буквально пульсировать. Примерно 0,5% мощности ракетного двигателя преобразуется в звуковые колебания. Так, во время полёта SN8 мощность звуковых колебаний от 3 двигателей Raptor была около 100 МВт, что сопоставимо с звуковой мощностью всех девяти двигателей Merlin 1D, составляющей около 116 МВт. Большая часть этой энергии разлеталась в разные стороны, но часть воздействовала на корабль, рискуя вызвать дополнительные вибрации и отказы ещё неотлаженного оборудования. Успешный полёт SN8 доказал, что Starship может летать с 3 двигателями, не разваливаясь на части.

Остановка двигателей в полёте

Аналогично предыдущей, эта задача также представляет сложность. На корабле установлены 3 двигателя, ни один из которых не установлен по центру. Останавливая хотя бы один из них, суммарное направление вектора тяги двух оставшихся перестанет совпадать с осью корабля, из-за чего тот станет лететь, завалившись на бок. Можете открыть стрим полёта SN6, где это показано наглядно. Одно дело, когда у корабля от старта и до посадки запущены не все двигатели, и совсем другое, когда двигатели запускаются/останавливаются прямо во время полёта. Оставшиеся работать двигатели могут не успеть отклониться в новое положение, корабль потеряет устойчивость и перевернётся. SN8 дважды успешно прошёл это испытание – из 3 двигателей остановили сначала один, а потом ещё один. Корабль при этом продолжал свой уверенный полёт.

Зависание на высоте 12 км

В ходе полёта SN6 мы уже видели что-то подобное, но здесь зависание было необходимо для создания начальных условий для решения следующей задачи – контролируемого падения. Вероятно, в SpaceX считали, что начинать падение необходимо сначала «остановившись». Это имеет смысл, так как продолжая двигаться вверх, корабль мог перевернуться не той стороной, или даже начать вращаться, что привело бы к провалу оставшейся программы полёта. Как бы там ни было, Raptor SN42 отработал на отлично. Кстати, этот полёт – одно из самых долгих известных мне испытаний двигателя Raptor. SN42, остановленный последним, непрерывно работал в течение 4 минут 40 секунд (280 секунд), что очень даже неплохо.

Переворот в горизонтальное положение и контролируемое падение


Из состояния зависания корабль повернулся наветренной стороной к Земле (по направлению дальнейшего полёта) и начал падать. Переворачиваться ему активно помогали маленькие азотные двигатели RSC верхней части корабля, что также видно на кадрах со стрима. Слаженная работа «крыльев» сделала переворот и дальнейший полёт контролируемыми. Аэродинамические поверхности, чем-то напоминающие самолётные закрылки, отклоняясь на определённый угол, то увеличивают, то уменьшают аэродинамическое сопротивление соответствующей стороны корабля, что позволяет задавать ориентацию в пространстве и контролировать падение. При учёте дальнейшего точного попадания в место посадки, можно говорить, что корабль достаточно эффективно боролся с ветром и прибыл в заданную точку пространства, где впоследствии были запущены двигатели.

 Переключение двигателей на питание топливом от «посадочных» баков

Для питания двигателей Raptor на SN8, впрочем, как и на всех будущих образцах корабля Starship, будут использоваться баки с основным запасом окислителя (кислорода) и горючего (метана), а также баки с дополнительным запасом тех же окислителя и горючего. Дополнительное, отдельное расположение части запаса компонентов топлива необходимо для сохранения его температуры, пока корабль будет находиться на орбите, чтобы потом обеспечить посадку корабля. Дополнительный бак окислителя находится в носовой части корабля, выступая заодно в качестве противовеса двигателям, а бак с метаном в нижней части – между основными баками окислителя и горючего. При взлёте питание двигателей обеспечивают основные баки, но для приземления необходимо переключиться на компоненты топлива из дополнительных. Судя по факту запуска двух двигателей Raptor, переключение источника питания топливом произошло успешно. Третий двигатель запускать не планировалось.

 Запуск двигателей в падении и переворот в вертикальное положение

При повторном запуске двигатели Raptor вынуждены были запускаться, располагаясь под необычным углом (не вертикально и не горизонтально) и испытывая повышенную перегрузку. Насколько известно, у SpaceX есть испытательные стенды для двигателей Raptor, где двигатели устанавливаются в строго вертикальное или строго горизонтальное положение, и испытывают обычную для нас перегрузку 1 ед (9,8 м/с^2). Однако в момент повторного запуска корабль и двигатели были повёрнуты к вертикальной оси под значительным углом, практически под прямым. Испытание доказало, что Raptor можно успешно запустить в таких необычных условиях.
Ещё перед поочерёдным запуском двух двигателей, те отклонились в крайнее положение, чтобы с первой секунды создавать тягу в нужном направлении. Raptor SN42, который не планировалось запускать, предварительно отклонился в другую сторону, чтобы не мешать двум другим двигателям. Активную помощь двигателям оказывали «крылья» корабля – нижние «крылья» были полностью сложены, а верхние переведены в нейтральное положение, чтобы помочь перевороту и в дальнейшем работать как стабилизатор. Корабль начал переворачиваться. Не дожидаясь завершения переворота, двигатели оперативно отклонились в противоположное положение, чтобы погасить вращение корабля и вовремя его остановить. За несколько секунд SN8 успешно завершил переворот и занял близкое к вертикальному положение.

Посадка

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

События при посадке

По неустановленной пока причине, давление метана на входах в двигатели упало. Из-за этого практически сразу был остановлен один из двух запущенных двигателей. Второй продолжил работу, но так как кислорода стало поступать сравнительно больше, чем метана, то режим работы и охлаждения двигателя нарушился – он стал буквально сгорать изнутри. Зелёный цвет газовой струи, вероятно, был вызван горением медных оболочек, помогающих двигателю охлаждаться. Любопытно, что Raptor боролся до самого конца, испытывая очевидный недостаток входного давления одного из компонентов топлива.

Стоимость биткоина установила исторический рекорд

Стоимость биткоина установила исторический рекорд, поднявшись до 19 857,03 доллара.

Криптовалюта побила рекордную отметку, установленную в декабре 2017 года. За последние три года цена актива дважды опускалась ниже $4 тыс., в последний раз — 8 месяцев назад. С тех пор курс биткоина вырос более чем на 426%

В понедельник, 30 ноября, в ходе торгов самая популярная криптовалюта поднялась на 8,7 процента и побила рекорд, зафиксированный 18 декабря 2017 года. Тогда биткоин поднимался до 19 783,21 доллара. В целом в 2020 году криптовалюта подорожала более чем на 170 процентов, отмечает агентство. Только с начала сентября биткоин фактически удвоил свою стоимость.

Одну из причин подорожания биткоина называл председатель Комиссии по ценным бумагам и биржам США (SEC) Джей Клейтон. Он объяснил, что стоимость криптовалюты выросла на фоне существенных недостатков у традиционных платежных систем. Клейтон отметил, что криптовалюта имеет особенности, которые позволяют называть ее средством накопления или платежным механизмом.

По оценке Dow Jones, криптовалюта растет на фоне общего оптимизма на мировых рынках. Инвесторы идут на рискованные сделки из-за масштабных вливаний Федеральной резервной системы (ФРС) и других центробанков в экономику. Кроме того, цену биткоина подстегивают ожидания, что пандемию коронавируса удастся взять под контроль благодаря появлению эффективных вакцин.

Одной из первых компаний, выбравших биткоин в качестве защитного актива, стала MicroStrategy. В августе-сентябре она вложила в первую криптовалюту $450 млн. С тех пор первая криптовалюта подорожала примерно вдвое. Также в главную цифровую монету инвестировала Square, принадлежащая основателю Twitter Джеку Дорси. Она купила BTC на $50 млн.


Widget not in any sidebars

В то же время розничные инвесторы испытывают гораздо меньший интерес к криптовалюте, чем в 2017 году. По данным Google Trends, сейчас цифровые деньги привлекают примерно в 4 раза меньше внимания физических лиц, чем тремя годами ранее, когда первая криптовалюта за год подорожала до в 20 раз и в середине декабря на пике достигала $20 тыс.