Беспроводной звук для домашнего кинотеатра: муки выбора — изобилие форматов, возможностей и проблем

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

С одной стороны, многие пользователи хотят избавиться от «километров» коммутационных проблем, приобрести возможности быстрого перемещения источников, с другой – никто не готов жертвовать качеством звука и изображения.

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

Наиболее распространёнными стандартами сегодня являются: Wireless Local Area Networks – WLAN, Wireless Wide Area Network – WWAN, Wireless Personal Area Networks – WPAN (Bluetooth), Wireless Metropolitan Area Networks – WMAN.

Большинство домашних беспроводных мультимедийных систем, выпускающихся сегодня, используют WLAN с технологией Wi-Fi или WPAN с технологией Bluetooth. Эволюцией этих технологий стали стандарты Apple AirPlay, Miracast, Play-Fi, Qualcomm AllPlay, WiSA, AVB (Audio Video Bridging), WirelessHD, DLNA (беспроводная передача). Альтернативой беспроводной передаче стал HomePlug. Известны также собственные корпоративные разработки стандартов беспроводной передачи звука и изображения, которые проводятся такими компаниями как Sonos, Bose, Denon, Samsung.

Большинство пользователей интересует ряд вопросов, на которые производители, как правило, отвечают уклончиво. Особенно распространены среди них следующие:

  • Ощутимо ли повлияет на качество звука передача сигналов через каналы радиосвязи?
  • Насколько автономными являются современные беспроводные компоненты домашних кинотеатров?
  • Каковы основные технические преимущества и недостатки существующих форматов?

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

Беспроводные технологии с проводами

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

Мощность сигнала наиболее передовых технологий таких как DLNA, Apple AirPlay, AVB (Audio Video Bridging) не превышает 100 мВт или 0.1 Вт – это явно свидетельствует о том, что и в ближайшем будущем питание будет осуществляться при помощи стандартной домашней силовой сети.

Из приведенного выше следует вывод от том, что часть преимуществ беспроводных систем нивелируется отсутствием автономного питания, и пользователь неизбежно будет зависеть от расположения источников (розеток). Логичным выходом возможно станет использование аккумуляторов высокой ёмкости, однако заявлений такого рода ни один из известных мне производителей пока не сделал.
Характерные проблемы
Существующие «беспроводные» стандарты, кроме HomePlug, основаны на радиопередаче данных. Их отличия можно разделить на несколько групп:

  • Используемые диапазоны частот;
  • Протоколы передачи;
  • Скорость и объем (пропускная способность канала);
  • Дальность передачи;
  • Защищенность от помех;

Так или иначе, приведенные отличия в разной степени способны влиять на качество, т.е. на точность передачи аудио и видео сигнала. Полагаю, не стоит подробно останавливаться на том, что устройства, использующие разные технологии, не будут корректно работать друг с другом, даже при использовании одной базовой спецификации. Допустим WI-FI (ресивер, использующий Qualcomm AllPlay не совместим с акустикой и панелью, которые используют Miracast).

Существенное значение для выбора имеет следующий факт:

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

В качестве примера можно привести использование для передачи звука и изображения Wireless Fidelity (Wi-Fi) по каналу 20МГц в полосе 2.4ГГц, когда в соседних помещениях применяется смежные с этой полосой «неперекрывающиеся» каналы Wi-Fi. В реальности ширина канала будет больше, что в подобной ситуации неизбежно приведет к помехам, которые ощутимо повлияют на качество звука и изображения.

Wi-Fi – проблема соседского роутера

На общеизвестном факте, что Wi-Fi, сегодня наиболее распространенная спецификация сетевых протоколов беспроводных сетей (WLAN), подробно останавливаться смысла не имеет. Отмечу лишь, что практика доказала высокую востребованность Wi-Fi устройств, что не умаляет некоторых недостатков стандарта.

Многие специалисты отмечают, что при всей многофункциональности и интегративных возможностях стандарта он малопригоден для высококачественной передачи звука. Последнее связано с проблемой загруженности диапазонов 2,4 ГГц и 5 ГГц, способствующей возникновению помех (протоколы IEEE 802.11b, IEEE 802.11a, IEEE 802.11g, IEEE 802.11n).
Для устранения влияния сторонних устройств были разработаны и сертифицированы Wi-Fi Alliance, различные варианты спецификаций, расширяющие возможности традиционного Wi-Fi

Дети Wi-Fi: Miracast и Qualcomm AllPlay

Miracast представляет собой версию Wi-Fi адаптированную для передачи звука и изображения в высоком качестве. Основой обновлённого формата передачи данных стали спецификация стандарта IEEE 802.11ac (Gigabit Wi-Fi) и разработанная совместно с Wireless Gigabit Alliance технология WiGig и Multi-gigabit point-to-point wireless (стандарт IEEE 802.11ad)
Технология Miracast обеспечивает канал радиосвязи, работающий в диапазоне 60 ГГц со скоростью до 7 Гбит/с, что позволяет передавать потоковое видео в несжатом HD качестве и высокоточный многоканальный аудио сигнал.К недостаткам можно отнести сравнительно низкую распространённость стандарта, а соответственно, не слишком широкий выбор устройств.

Ещё одним вариантом модернизации Wi-Fi соединения для высококачественной передачи звука является Qualcomm AllPlay. Эта технология создана на базе чипов компании Qualcomm и активно используется такими компаниями как Panasonic и Altec Lansing.
Основными достоинствами стандарта является передача звука без потерь, а также интеграция в мультирум. При этом тесты демонстрируют, что качество передачи видеосигнала уступают таким технологиям как DLNA, Miracast WiSA, AVB и WirelessHD.

Bluetooth — кариес синего зуба

Все давно в курсе, что Bluetooth – это самая распространённая спецификация сетевых протоколов Wireless Personal Area Networks – WPAN. Возможности интеграции при использовании этого стандарта являются одним из основных его преимуществ, в том числе при передаче звука.

Если подробнее рассматривать достоинства Bluetooth, то можно выделить следующие:

  • интеграция с большинством мобильных устройств, ПК, совместимость со всеми распространёнными ОС, всеми видео панелями и акустическими системами, оснащёнными этой технологией;
  • стабильная надёжная связь;
  • подключение большого количества каналов передачи данных, в том числе, многоканальной акустики.

В рассматриваемой сфере применения, Bluetooth также имеет ряд недостатков, основным из которых является снижение качества звука. Проблема в том, что при использовании Bluetooth для передачи аудио данных, они конвертируются из исходных кодеков (МРЕG, МР3, ААС и др.) в SBC, который предполагает сжатие с потерей информации. Влияние сжатия может быть не заметно при использовании lo-fi систем, однако, при сравнительных слепых тестах на аппаратуре высокой точности, проблемы сжатия становятся ощутимыми.

Сравнение, проведенное Брентом Баттервутом (автор About.com), показывает разницу в том, какие шумы возникают при подаче тона 5, 10, 12.5 и 20 кГц. Синяя линия — aptX, зеленая — SBC (источник)


На этом графике показаны спектры при трансляции сигнала 1 кГц через aptX (синий) и SBC (зеленый), а также 4 кГц — aptX (пурпурный) и SBC (красный) (источник)

Еще одним относительным недостатком этого стандарта является сравнительно малый радиус действия, не более 9-10 метров.

Узкие пути AirPlay

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

Основным достоинством спецификации от «самой амбициозной компании в мире», является сжатие звука без существенных потерь. При прочем, следует отметить, что передача видео сигнала с помощью этих протоколов оставляет желать лучшего. Как и в случае с Qualcomm AllPlay, спецификация от Apple уступает ряду современных форматов. Так стандарт не позволяет обеспечить уровень качества, дотягивающий до требований панелей с 2К и Ultra HD 4K разрешением.
Ещё одним существенным недостатком AirPlay является расчет на достаточно узкий сегмент пользовательской аудитории, использующий продукты, поддерживающие только ПО Apple Inc (iPhone, iPad, Mac notebooks, iPod, iTunes, Apple Watch и пр.).

Audio Video Bridging (AVB) – универсальная технология от AVnu Alliance

AVB – представляет собой спецификацию промышленных протоколов беспроводной сети стандартов 802.11as, IEEE 802.1 Audio Video Bridging (AVB), IEEE 1722, IEEE 1733, разработанную AVnu Alliance.

Беспроводная сеть, созданная по технологии Audio Video Bridging, даёт возможность без потерь передавать звук в любых аудио форматах, транслировать потоковое видео высокого разрешения. Помимо описанных достоинств, AVB может быть интегрирована с любыми мультимедийными аудио/видео системами, устройствами домашних кинотеатров, иным оборудованием.

К существенным недостаткам системы относится высокая стоимость оборудования и ПО, применяющегося для использования технологии.

DLNA – с проводом и без

DLNA – это спецификация сетевых протоколов, обеспечивающих работу проводных и беспроводных локальных сетей, созданная и поддерживаемая Digital Living Network Alliance (DLNA). Одной из отличительных особенностей технологии является возможность передачи данных как по кабелю, так и используя радиосвязь.

Преимущества стандарта:

  • интегрируется с любым оборудованием мультимедийных систем и домашних кинотеатров (Blu-Ray-плееры, плазменные и ЖК панели, аудио/видео ресиверы, усилители, активные акустические системы);
  • передача пакетов с аудио контентом (все известные форматы) осуществляется без потерь;
  • обеспечивает передачу видео, с уровнем качества достаточным для полноценного воспроизведения в Full HD, 2К в форматах 2D и 3D;
  • возможна интеграция с устройствами на базе ОС Android;

К существенным недостаткам стандарта относят отсутствие интеграции с устройствами Apple Inc, а также ограниченная дальность передачи сигнала.

WiSA – стандарт домашнего кинотеатра

WiSA — спецификация, которая была специально создана для домашних кинотеатров ассоциацией Wireless Speaker and Audio.

Основные достоинства стандарта:

  • возможность работы со всеми сертифицированными устройствами для домашних кинотеатров;
  • передача аудио без потерь в любых форматах, в частности поддержка многоканального звука (5:1, 7:1 систем);
  • адекватная передача видеоданных, достаточных для полноценного воспроизведения 4К.

Наиболее существенный недостаток стандарта — необходимость интеграции в каждое устройство отдельного приёмника и передатчика.

WirelessHD – коллективное творчество

WirelessHD Technology – технология, которая была совместно создана компаниями Intel, LG Electronics, Silicon Image, Panasonic, Philips, Samsung, Sony и Toshiba. Стандарт специально разработан для использования с системами мультимедиа и домашними кинотеатрами.

Технология обеспечивает беспроводную передачу данных по полосе 60GHz, при этом даёт возможность без потерь передавать видео данные в DTV форматах, в том числе FullHD (1080p, 60 Гц). Также стандарт позволяет без потерь передавать аудио (в том числе: стерео LPCM audio 192 кГц, 5:1, 7:1, 24-бит, 96 кГц LPCM аудио, 13:1, 24 бит, 192 кГц Dolby TrueHD или DTS-HD аудио).

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

HomePlug или проводной Wireless

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

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

Итог

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

Лично я искренне надеюсь, что рано или поздно произойдёт унификация в области беспроводной передачи данных (и в частности звука). В противном случае мы рискуем попасть в ситуацию, которая недавно была с зарядными устройствами для мобильных телефонов.
ссылка на оригинал статьи https://geektimes.ru/post/284366/

Брутальное аниме для бородатых программистов

Бытует мнение, что в груди даже самого сурового бородатого программиста бьётся большое и нежное сердце, в глубине которого всегда найдётся местечко для доброго аниме. Но в жизни бывают моменты, когда настроение не располагает к кавайности: код не прёт, баг не ловится, алгоритм криво работает, тимлид вставил за сорванный дедлайн. И тогда хочется посмотреть что-то суровое, брутальное, мужское. Что же, мир аниме очень разнообразен и может предложить произведения на любой вкус.

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

Василиск (Basilisk)

Сериал “Basilisk” повествует о войне двух кланов ниндзя в стародавние времена. Непримиримая вражда тянется уже многие годы, и градус взаимной ненависти взлетел до небес, когда пришло время выбирать нового сёгуна из двух кандидатов: внука главы клана Кога и внучки главы клана Ига. Всё бы ничего, но ситуация осложняется тем, что наследники двух враждующих семей любят друг друга. И на протяжении 24 серий перед нами разворачивается настоящая драма, когда два человека разрываются между любовью и преданностью своему клану. Где тут брутальность, спросите вы? Напоминаю: это два клана ниндзя, и убивать там умеют даже дворовые животные. Погибают там с завидной регулярностью и весьма жестоко. До самого конца непонятно, какой клан одержит победу, чаша весов качается то в одну, то в другую сторону. При этом поединки срежиссированы и показаны очень захватывающе. Приличная графика (особенно по меркам 2003 года), добрая порция мистических способностей высококлассных убийц, кровища и расчленёнка порадуют отъявленных мизантропов и не дадут заскучать всем остальным.

Клеймор (Claymore)

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

Кайт (Kite)

Старая (1998), но хорошо нарисованная полнометражка про девочку, которой промыли мозги и превратили в высококлассного наёмного убийцу. Спустя четыре года после того, как у неё на глазах убили родителей, она влюбляется в своего напарника и оказывается жертвой предательства своего покровителя, садиста-полицейского. Сюжет мрачный, с кучей насилия и — внимание — взрослыми сценами (в нецензурированной версии).

Кстати, пару лет назад по мотивам Kite в Голливуде сняли одноимённый фильм.

Чёрная лагуна (Black Lagoon, Black Lagoon 2 и Black Lagoon 3)

Бодрые приключенческие сериалы про нелёгкие будни команды современных наёмников, солдат удачи. Главный герой — типичный «офисный планктон», волей случая попадающий в компанию к пиратам-наёмникам. Повезло, что не пристрелили, уж больно суровая дама командует этим коллективом. Но несмотря на скверный «мужской» характер, дамочка выглядит что надо. В «Чёрной лагуне» вас ждут перестрелки, много взрывов, погони, наёмные убийцы, и хождения главного героя вокруг да около атаманши.

Школа мертвецов (Gakuen mokushiroku)

Мода на зомби не обошла стороной и аниме. Сюжет «Школы мертвецов» прост: эпидемия болезни, все превратились в зомби, которые напали на территорию школы и начали жрать детишек. Группа старшеклассников старается выжить в очередном апокалипсисе. Много зомби, панцу, приятных округлостей и крови.

Берсерк (Berserk)

Сериал 1997 года про воина Гатса, ставшего почти лучшим мечником. Почти — потому что его превзошёл командир отряда наёмников, куда Гатс потом вступил. Меч у главного героя длиной в пару гладильных досок, да и по ширине не сильно уступает. Его «полевой командир» весьма непростая личность, он носит на груди таинственный магический амулет. Более того, амбиции у него достигают звёзд, и он мечтает выйти из грязи не в князи, а в короли. И Гатс, всей душой преданный своему командиру, всё чаще задаёт себе вопрос, на что он готов пойти ради него. Отдельная интрига связана с редкими встречами с демоном, долгие годы живущим в мире людей под разными личинами.

Кроме оригинального тру-сериала существует несколько полнометражек и ремейк сериала со стилизованной компьютерной графикой.

Демон против демонов (Devil may cry)

Этот аниме-сериал снят по одноимённой приставочной игре. В этом мрачном мистическом триллере рассказывается о нелёгкой работе некоего Данте, который зарабатывает на хлеб с икрой охотой на демонов. Главному герою — мрачному мужику (будешь тут брызгать жизнерадостностью, при такой клиентуре), у которого под рукой всегда найдётся парочка пистолетов и меч — помогают сотрудники его агентства по охоте на демонов “Devil may cry”.

Тетрадь смерти (Death Note)

Очень интересный 37-серийный психологический сериал. Старшеклассник-отличник находит магический предмет, тетрадь смерти. Если записать в неё имя какого-нибудь человека и причину его смерти, то вскоре он так и умирает. Парнишке такая возможность вскружила голову, и он принялся творить правосудие направо и налево. Но власть портит, и юноша несколько зарвался. Странными смертями заинтересовался Интерпол, и в частности один из его сотрудников, гений-аналитик. Впрочем, и наш школьник — тоже гений, лучший ученик Японии. Так началось детективное противостояние двух мощных разумов: один старается поймать преступника, другой всячески этом сопротивляется и пытается в ответ вычислить, кто его ловит, чтобы черкануть пару слов в тетради.

Вечеринка мёртвых: Замученные души (Corpse Party: Tortured Souls)

Вы в пионерском лагере вызывали гномиков? Не знаете, что такое «пионерский лагерь»? Мда. Ну хоть халяву ловили в институте? Я это к чему: заигрывания со сверхъестественными силами могут не довести до добра. Например, в 4-серийной OVAшке «Вечеринка мёртвых» несколько школьников решили скрепить узы своей дружбы, ради чего провели ритуал, который открыл дверь в ад перебросил их в другое измерение, в котором бродят неупокоенные души детей, убитых когда-то в стенах старой школы, стоявшей на этом месте. Кровь, кишки, расчленёнка, ужас.

Если у вас есть чем дополнить нашу подборку, пишите в комментариях. Скажем «нет» каваю!
ссылка на оригинал статьи https://geektimes.ru/post/284182/

Малоизвестные Git-команды

У Git есть строгие обязательства по обратной совместимости: многие продвинутые возможности скрыты за разнообразными опциями, а не применяются как поведение по умолчанию. К счастью, Git также поддерживает и алиасы, так что вы можете создавать свои собственные команды, которые делают всю характерную для Git магию. Под катом — подборка полезных (или как минимум забавных) алиасов, определённых в моём .gitconfig.

git please

$ git config --global alias.please 'push --force-with-lease'

Каждому разработчику приходилось хотя бы раз общаться со своим тимлидом на тему принудительного пуша (force pushing) в общую ветку (не делайте этого). Ребейз (rebasing), внесение правок и squash — всё это забавно до тех пор, пока вы не перезапишете часть общей истории и не раскидаете дублирующиеся коммиты по всему репозиторию. К счастью, Git не позволит вам невольно перезаписать историю на сервере. Вам придётся явным образом передать в git push опцию —force, чтобы доказать серьёзность своих намерений. Но принудительный пуш — это грубый подход: вы затаптываете локальной версией вышерасположенную ветку, и все изменения, которые вы к тому моменту не подтянули (fetch), будут стёрты из истории.

Git-опция —force-with-lease действует гораздо аккуратнее: она проверяет, чтобы ваша локальная копия ref’а была самой свежей, прежде чем накатить её. Это означает, что вы как минимум подтянули все изменения, которые собираетесь затоптать. Но чтобы не писать каждый раз git push —force-with-lease, я сделал для этой строки алиас: git please

git commend

$ git config --global alias.commend 'commit --amend --no-edit'

Бывало так, что вы закоммитили и тут же сообразили, что забыли проиндексировать (stage) файл? Больше не нужно об этом беспокоиться! Алиас git commend тихо прикрепляет к последнему созданному вами коммиту все проиндексированные файлы, повторно используя уже имеющееся сообщение о коммите.

$ git add Dockerfile $ git commit -m ‘Update Bitbucket pipeline with new Docker image’ # (facepalm) $ git add bitbucket-pipelines.yml $ git commend

git it

$ git config --global alias.it \ '!git init && git commit -m “root” --allow-empty'

Первому коммиту в репозитории нельзя сделать ребейз, как обычному. Поэтому рекомендуется в качестве корневого создавать пустой коммит. Алиас git it инициализирует ваш репозиторий и за одну операцию создаёт пустой корневой коммит. И когда вы в следующий раз запустите проект, то не надо просто добавлять его в систему управления версиями: выполните git it!

$ cd shiny-new-thing $ git it Initialized empty Git repository in /shiny-new-thing/.git/ [master (root-commit) efc9119] root

git staaash

$ git config --global alias.stsh 'stash --keep-index' $ git config --global alias.staash 'stash --include-untracked' $ git config --global alias.staaash 'stash --all'

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

Я сделал несколько удобных алиасов для разных вариантов git stash, в зависимости от того, какие биты вашего рабочего дерева нужно скрыть:

git stsh      # скрывает только непроиндексированные изменения в отслеживаемых файлах git stash     # скрывает все изменения в отслеживаемых файлах  git staash    # скрывает неотслеживаемые и отслеживаемые файлы git staaash   # скрывает игнорируемые, неотслеживаемые и отслеживаемые файлы

Если сомневаетесь в выборе, то самый длинный алиас (git staaash) всегда сможет восстановить рабочее дерево состояния свежего клона вашего репозитория.

git shorty

$ git config --global alias.shorty 'status --short --branch'

Я запускаю git status чаще любой другой Git-команды. Встроенная помощь в Git за последние годы стала куда удобнее, что очень хорошо для начинающих, но для более опытных пользователей информация слишком многословна. Например, git status объясняет мне в 12 строках, что у меня пара индексированных, неиндексированных и неотслеживаемых изменений:

$ git status On branch master Changes to be committed:   (use “git reset HEAD <file>…” to unstage)     modified: package.json Changes not staged for commit:   (use “git add <file>…” to update what will be committed)   (use “git checkout -- <file>…” to discard changes)     modified: package.json Untracked files:   (use “git add <file>…” to include in what will be committed)     index.js

Всё то же самое git shorty говорит мне тремя строками:

$ git shorty ## master AM test ?? .gitignore

Для краткости я сделал это в виде алиаса git st, не смог остановиться.

git merc

$ git config --global alias.merc 'merge --no-ff'

Если вы используете обычный рабочий процесс ветвления без ребейза, то будет не лучшим решением запускать стандартный git merge для слияния веток с фичами с мастер-веткой. Если не добавить к этой команде опции, то по умолчанию станет использоваться стратегия слияния —ff, при которой новый коммит слияния будет создан только в том случае, если в мастер-ветке нет новых изменений. В противном случае мастер-ветка просто «перемотается» до места последнего коммита в вашей ветке. Лишь иногда, создавая коммит слияния, при просмотре Git-истории бывает непросто сказать, какой код был разработан в какой ветке.

git merc использует стратегию —no-ff, при которой всегда создаётся коммит слияния.

Между прочим, —no-ff всегда используется по умолчанию в ходе слияния pull request’ов в Bitbucket.

git grog

$ git config --global alias.grog 'log --graph --abbrev-commit --decorate --all --format=format:"%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(dim white) - %an%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n %C(white)%s%C(reset)"'

Мой алиас git grog (или graphical log) в последние годы разросся настолько, что я больше не уверен, будто точно знаю, что он делает. Но выглядит красиво:

git grog

Для сравнения, вот стандартный git log:

git log

Там доступны все виды удобных форматов, так что форкайте вышеуказанную команду и пользуйтесь на здоровье!

Для поклонников GUI

Если вы поклонник Git GUI и работаете под Mac или Windows, то, возможно, вы используете наш бесплатный Git-клиент Atlassian SourceTree. Если да, то примените описанные в этой статье алиасы, создав новое кастомное действие — можно назначить комбинацию клавиш — в настройках SourceTree:

Это действие запускается с помощью меню (Actions -> Custom Actions) или клавиатурной комбинации:

Приятного алиасинга!
ссылка на оригинал статьи https://habrahabr.ru/post/318508/

SpaceX в 2017 году: планов громадье

Прошедший год выдался для SpaceX тяжелым. В общем-то, у компании больше удачных моментов, но взрыв ракеты при запуске в сентябре — это, конечно, огромная проблема. Как для репутации SpaceX, так и для всей ракетно-космической отрасли. Тем не менее, компания не боится трудностей и потихоньку (или даже не потихоньку) идет вперед.

К счастью, компании удалось добиться многих поставленных целей, включая возвращение первой ступени ракеты носителя. Ступени неоднократно удавалось посадить как на площадку на твердой земле, так и на плавающую платформу. Все это нужно SpaceX для удешевления пусков — по словам Илона Маска, в случае повторного использования элементов ракеты стоимость вывода полезного груза может быть снижена на 30% и даже больше. В этом году Маск планирует сделать еще больше, чем в прошлом. Какие планы стоят перед компанией? Давайте посмотрим.

Новые запуски Falcon 9

Конечно, без запусков ракет в космос работа SpaceX теряет всякий смысл. Поэтому основная задача, которую необходимо решить в ближайшее время — возобновление запусков Falcon 9. Откладывать в долгий ящик Маск не привык, и в этом месяце запланирован очередной старт. Ракета компании должна доставить на орбиту Земли коммерческие спутники Iridium-1. Компания Iridium планирует отправить в космос сразу десять аппаратов, которые позволят значительно улучшить работу сети одного из наиболее известных операторов связи.

Согласно контракту, SpaceX, при условии успешного вывода на орбиту всех спутников, должна получить почти полмиллиарда долларов США. Если точнее, то $492 млн. Сначала запуски спутников будут производиться каждые три месяца, а затем, если все пойдет по плану, то и каждые два. Несмотря на взрыв Falcon 9, который уничтожил коммерческий груз, пока проблем с заказами у SpaceX нет.

Компания, кстати, смогла определить проблему, которая и привела к взрыву. Оказалось, что причиной послужила трещина в системе подачи гелия в резервуар с жидким кислородом. Жидкий кислород в результате перешел в твердую фазу. В итоге все это привело к эффекту домино, отказам ряда систем, ставших причиной взрыва. В ноябре Маск заявил следующее: «Я думаю, что мы выяснили причину случившегося. Самое интересное то, что ничего подобного в ракетостроении пока не случалось». «Проблема комплексная, она включает в себя жидкий гелий, углеродные композиты и твердый кислород. Кислород настолько охладился, что перешел в твердую фазу», — заявил Маск.

Из-за аварии развертывание группировки спутников Iridium пришлось перенести на 2018 год. Но, в целом, пока все хорошо. Не обошлось, конечно, и без неприятностей. Так, компания Inmarsat решила запустить свой спутник не с Falcon 9, а воспользоваться ракетой Ariane 5. Если неудачные пуски будут продолжаться, то это может обойтись SpaceX в миллионы долларов.

Повторная отправка в космос вернувшейся ступени

В ангаре SpaceX хранится несколько вернувшихся из космоса ступеней Falcon-9. Некоторые из них, по словам Маска, пригодны для повторного запуска, другие же — нет, они годятся только для изучения с целью улучшения конструкции системы. Тем не менее, уже в начале этого года компания планирует осуществить повторный запуск ранее использованной первой ступени ракеты. И это будет не пробный запуск. При помощи восстановленной ступени SpaceX отправит спутник еще одного оператора связи — SES. Именно с этой компанией SpaceX начала работу в 2013 году, и сейчас SES поддерживает партнера с переходом на следующий этап работы.

Понятно, что компания делает это не из чистого альтруизма. Дело в том, что пуск Falcon 9 с вернувшейся на Землю ступенью обойдется SES в 40 миллионов долларов США вместо $60 миллионов. Экономия в 20 млн — это серьезно. Правда, это предварительная оценка, проведенная сторонними специалистами. Официального заявления SpaceX по этому поводу пока не было.

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

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

Сверхтяжелая ракета Falcon Heavy

Да, ее запуск тоже намечен на этот год. Грузоподъемность новой ракеты-носителя составляет около 54,4 тонн. Это в два раза больше грузоподъемности Delta IV Heavy. Планируется, что Falcon Heavy сможет доставлять около 54 т на низкую опорную орбиту, до 21,2 т на геопереходную орбиту и до 13,2 т к Марсу.Сейчас сборка носителя уже подходит к концу.

Запуск этой ракеты уже показали на видео.

Понятно, что это лишь модель, но она позволяет получить представление о процессе. Для того, чтобы провести запуск, компании необходимо тщательно подготовить всю систему комплекса LC-39. Здесь же запускали и ракету Saturn V, которая отправила на Луну «Аполлон-11».

Стоимость запуска этой ракеты-носителя специалисты компании оценивают примерно в 90 миллионов долларов США. Ракета-носитель SLS, которая сейчас разрабатывается Boeing, может поднимать на орбиту около 70 тонн, но ее запуск стоит гораздо дороже. Операционные расходы запуска этой ракеты-носителя могут составить около $2 млрд. Логично, что если у SpaceX все пройдет хорошо, комиссия, отслеживающая расходы НАСА, может поинтересоваться целью продолжения разработки SLS при такой высокой стоимости старта ракеты. Тестовый пуск SLS состоится не ранее конца 2018 года.

Доставка астронавтов на борт МКС

Агентство НАСА надеялось на то, что уже в этом году оно сможет без помощи России отправлять на борт МКС людей. Для этого планировалось использовать разрабатываемые SpaceX и Boeing космические корабли Dragon V2 и CST-100 (Starliner). Контракты достаточно крупные — для Boeing это 4,2 миллиарда долларов и для SpaceX — 2,6 миллиарда долларов.

К сожалению, не все пошло так, как рассчитывали в НАСА. И у Boeing, и у SpaceX обнаружились трудности технического характера. Проблемы понемногу преодолеваются, но все это дело не одного месяца.

Сейчас пуски кораблей с командами астронавтов перенесены на май и август 2018 года (для Dragon V2 и Starliner соответственно). Но это уже регулярные «рейсы». А вот пробные запуски должны быть осуществлены уже в этом году, в противном случае практически все сроки будут сорваны. Для SpaceX контракт с НАСА означает получение средств на работу и само существование, так что Илон Маск старается сделать все, только бы все шло по плану.

А что насчет Марса?

Да, все, что сейчас делает Маск для развития SpaceX, предназначено для «прокладывания дороги» на Марс. Компания SpaceX должна получать средства на реализацию своих марсианских планов, а без внятной бизнес-модели это невозможно. Самостоятельно же, без вливаний со стороны, реализовать марсианскую программу невозможно.

Тем не менее, одновременно с коммерческими пусками и работой с НАСА, компания разрабатывает двигатели нового типа для своей ракеты. Речь идет о Raptor — мощных двигателях для ракетах следующего поколения. О Raptor сейчас можно найти не так много информации. Правда, известно, что именно эти движки в три раза более мощные, чем Merlin, которые работают в Falcon 9 и Falcon Heavy. Ранее Илон Маск сообщал, что этот двигатель будет развивать тягу до 230 тонн.

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


Двигатель RS-25 с камерамии предварительного сгорания на испытаниях. Этот двигатель устанавливался в «Шаттлы». По этому же принципу будет работать и Raptor

Уже в следующем году компания SpaceX планирует отправить на Марс беспилотную систему при помощи ракеты-носителя Falcon Heavy. Это необходимо для того, чтобы специалисты компании смогли сделать выводы о возможности доставки грузов на Марс. Если SpaceX удастся осуществить задуманное, то она станет первой частной компанией, чей космический аппарат сядет на поверхности другой планеты.

Возможно, Red Dragon будет использоваться и НАСА в качестве одного из инструментов реализации миссии Mars Sample Return с доставкой образцов марсианского грунта на Землю. По предварительным подсчетам, Red Dragon сможет совершить мягкую посадку на поверхность Марса примерно с 2 тоннами полезной нагрузки. Это более чем в 2 раза превышает текущий рекорд, установленный «Небесным краном» NASA, который опустил ровер Curiosity массой 899 кг на поверхность красной планеты в августе 2012 года. Бо́льшие объем и масса полезной нагрузки позволят выполнить передачу собранных образцов на земной орбите (первоначальный сценарий Mars Sample Return подразумевал передачу образцов на марсианской орбите), что снизит потенциальные риски и стоимость миссии.

Что может пойти не так?

Основная угроза планам SpaceX — проблемы с запусками Falcon 9, что повлечет за собой отмену ряда контрактов и осторожное отношение партнеров в будущем. Следовательно, это станет причиной снижения уровня финансовых поступлений. А без этого SpaceX не удастся реализовать свой план по освоению Марса — ведь, как уже говорилось выше, для этого нужны средства, и немалые.

Одна из главных задач для Маска — создание так называемой межпланетной транспортной системы ITS (Interplanetary Transport System). Основные компоненты этой системы следующие: возвращаемая ракета-носитель для запуска с Земли, межпланетный космический корабль для доставки грузов и людей на Марс и возврата их на Землю, плюс корабль-заправщик для дозаправки космического корабля на орбите Земли.

Ускоритель Заправщик Корабль
Стоимость производства (в млн. $) 230 130 200
Повторное использование (раз) 1000 100 12
Запусков в одной миссии 6 5 1
Средняя стоимость обслуживания на 1 запуск (в млн. $) 0,2 0,5 10
Общая стоимость одной миссии (в млн. $) 11 8 43

Эта система обеспечит возможность доставки грузов на Марс из расчета $140 000 за 1 тонну полезного груза. Это просто отличный результат. Но его удастся достичь только в том случае, если у SpaceX все будет идти по плану.
ссылка на оригинал статьи https://geektimes.ru/post/284350/

Пошаговая инструкция: сборка JDK9 из исходников на Windows 10

В последнее время со сборкой JDK в Windows всё стало хорошо и приятно, поэтому поделюсь радостью и распишу, как это делается.

Каждый второй, кто пытается собрать что-то под Windows, получет глубокую психологическую травму, и заранее ожидает от сборки следующих эмоций:

Что касается JDK, если не сходить с пряничной дорожки, делать в точности как в этой инструкции, проблем не будет. Возможные проблемы обозначены в тексте.

Общий смысл происходящего: устанавливаем компиляторы (JDK8, Visual Studio 2013), среду сборки (GNU/Cygwin) и набор стандартных пакетов для неё, собираем из исходников Freetype, заливаем репозиторий JDK, configure, make, java -version.

Мы будем собирать Java и C++ (раз вы читаете эту статью, то, наверное, уже в курсе), поэтому на микроволновке лучше сборкой не заниматься. Нужна рабочая станция или ноутбук с нормальным процессором, и, желательно, SSD вместо жесткого диска для сборочной директории проекта. Кроме сборки, какое-то время потратится на скачивание исходника и установку Visual Studio.

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

  1. Устанавливаем JDK8

    для бута.

    Ссылка на загрузку:
    www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  2. Устанавливаем Visual Studio 2013

    (версия Express подойдёт).

    Ссылка на загрузку:
    www.microsoft.com/ru-ru/download/details.aspx?id=44914

    Если вы устанавливаете полную версию, то при установке вам дадут выбор компонентов: достаточно установить только те компоненты, которые относятся к C++ и Windows SDK.

    При установке Express, никакого выбора не будет — к счастью, оно само устанавливает именно то, что нам нужно. Это выглядит как-то так:

    После установки, обязательно нужно перезагрузить операционную систему.

    Важно: нужно установить именно Visual Studio 2013.
    Не ниже потому, что о версии 2013 говорится в Build Readme.
    Не выше потому, что если попробовать провести сборку с установленной Visual Studio 2015, то сборщик JDK будет видеть компилятор, но будет ломаться с ошибкой:
    C compiler cannot create executables
    Если заглянуть в config.log, становится понятна причина:
    LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
    Если тупо сделать
    export LINK="/NODEFAULTLIB:libcmt.lib"
    то оно развалится:
    unresolved external symbol mainCRTStartup.

    Если кто-то в комментариях знает, как безболезненно починить эту ошибку и запуститься на 2015, буду очень благодарен. Неприятно быть залоченным на устаревшую версию компилятора, даже если она бесплатная.

  3. Устанавливаем Cygwin.

    Ссылка на загрузку: www.cygwin.com

    Важно: сейчас принято использовать msys2 вместо Cygwin.
    К сожалению, сборка JDK тут же упадет с ошибкой:
    configure: error: /usr/bin/bash /x/git/openjdk9/common/autoconf/build-aux/config.sub x86_64-pc-msys failed
    Если попытаться прописать msys так же, как там прописан Cygwin, то ошибка меняется:
    unsupported operating system msys
    Если какой-нибудь герой в комменатриях расскажет, как правильно прописать msys, это было бы здорово.

  4. Устанавливаем пакеты для Cygwin

    , описанные в Build Readme.

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

    • binutils (devel) – ar.exe
    • make (devel) — make.exe
    • m4 (interpreters) — m4.exe
    • cpio (utils) — cpio.exe
    • gawk (base, interpreters) — gawk.exe
    • file (base) — file.exe
    • zip (archive) — zip.exe
    • unzip (archive) — unzip.exe
    • procps-ng (system) — free.exe

    Для возмущенных таким большим набором зависимостей — скажите спасибо, что не заставили устанавливать Python и Ruby! 🙂

    Для тех, кто ни разу не сталкивался с Cygwin пара замечаний:

    • Установка пакетов выглядит как-то так:
    • Существует множество пакетов, например, со словом binutils в названии.
      Нужно выбирать пакет, в точности по буквам совпадающий с названием из списка, соответствующий группе из списка. (Конечно, если вы точно знаете что делаете, ваша воля 🙂 )
    • Принадлежность пакетов к группам в Cygwin время от времени меняется. В частности, группы, перечисленные в этом списке уже не совпадают с группами из Build Readme. Если группы из списка не существует – выберите подходящую (и напишите мне личное сообщение, чтобы я обновил эту инструкцию).
    • При установке, вас попросят указать установочные директории. Постарайтесь установить в путь с как можно более коротким имененем, например: C:/cygwin и C:/cygpack. Или вообще c:/cw и c:/cp. Это поможет избежать ошибок с излишне длинными именами файлов, которые не может обработать проводник Windows (NTFS уже иногда может их обрабатывать, а Проводник – еще нет).
    • После изначальной установки, в самом Cygwin нет никакого гуя для управления пакетами. Чтобы установить дополнительные пакеты, нужно заново запустить setup.exe. Эта программа не будет устанавливать Cygwin с нуля, а только докачает нужное. Между перезапусками путь до директорий сохраняется.
    • Выбор зеркала влияет на скорость, но нам нужно скачать очень мало пакетов, поэтому что выбирать — в среднем всё равно. Выбирайте самое первое зеркало в списке.
    • Гуй для установки пакетов немного странный, но вы разберетесь 🙂
      • Как только вы вписали в поле поиска имя пакета, соответствующий список перерисовывается автоматически – enter жать не нужно.
      • Чтобы установить пакет, нужно много раз прокликать кнопку со статусом (стрелочки замкнутые в уробороса с надписью skip или какой-то еще), чтобы надпись статуса поменялась на версию пакета, которая будет устанавливаться
      • Иногда инсталлятору становится разными способами плохо. Don’t panic.
        Если установка повисла посередине, то самый простой способ всё вернуть назад — удалить C:/Cygwin, или куда вы там его устанавливаете. Лучше не надеяться, что проверяльщик чексумм битых недокачанных пакетов сможет найти поломку, устраните её полным удалением самостоятельно.

  5. Качать make отдельно не нужно.

    В прошлых инструкциях часто предполагалось скачать и прописать свой make.
    По новейшим наблюдениям, делать этого не имеет смысла, того make что установился пакетом в Cygwin — вполне достаточно.

    Более того, на официальном сайте лежит устаревшая версия make, поэтому с ней вы получите ошибку типа:
    The specified make (by MAKE=/cygdrive/c/Program Files (x86)/GnuWin32/bin/make.exe) is not GNU make 4.0 or newer.
    То есть, make вам придется или собирать вручную, или искать уже собранный на сомнительных файлопомойках, как когда-то мы подбирали на них rpm’ки.

    Если собственный make вам действительно нужен, то чтобы его использовать, нужно прописать в configure параметр MAKE=/путь/до/make.exe.
    Да, другие параметры начинаются на —, например —with-freetype, а вот MAKE должен быть именно в таком виде.

  6. DirectX SDK устанавливать не нужно.

    Если оно вам действительно нужно (Java 3D?), вы об этом знаете, и знаете что делать.
    Здесь инструкций не будет.

  7. Собираем FreeType

    Собирать FreeType обязательно, даже если очень не хочется и лично вам не нужно.

    1. Ссылка на загрузку:
      gnuwin32.sourceforge.net/packages/freetype.htm

      Там две группы загрузок: две вверху (Complete package и Sources), и шесть пониже (Binaries… Original source). Элемент Sources есть в обеих группах. Нам нужно скачать зипник элемента Sources из второй группы.

      Замечание:
      Качает сто лет, что делать?
      Ничего не поделаешь, это Сорсфордж. В момент отображения таймера загрузки попробуйте успеть щелкнуть по ссылке try another mirror и выберите что-нибудь во Франции. Французы не жмотятся на скорость.

    2. Создаем директорию src/freetype/2.3.5/freetype-2.3.5/lib
    3. Внутри директории src/freetype/2.3.5/freetype-2.3.5/builds/win32/visual
      лежит солюшен для Студии.
    4. Открываем.
      Если у вас несколько Студий, то от греха подальше лучше открыть в 2013.
      Сборку с 2015 пробовал, она тоже работает.
    5. При открытии солюшена Студия попросит one-way upgrade. Соглашаемся (если отображается несколько элементов в списке – соглашаемся для всех).
    6. После этого Студия может намертво повиснуть, перестав заодним отображаться и в Диспетчере Задач Windows. Тут на помощь приходит Sysinternals Process Explorer:
      technet.microsoft.com/ru-ru/sysinternals/processexplorer.aspx
      Нужно найти в дереве devenv.exe, и вначале убить всех его потомков. После этого можно убить и сам devenv.exe (до этого он просто не реагирует на команду умереть).
    7. Идем в Configuration Manager, в выпадашке Platform выбираем New, New platform: x64, Copy settings from: Win32, OK, Close.



    8. Там же, выбираем тип сборки – Release Multithreaded (по умолчанию стоит Debug)
    9. В Solution Explorer, правой кнопкой на проект freetype, properties.
    10. Указываем Output Directory: src/freetype/2.3.5/freetype-2.3.5/lib
      (директория указана относительно корня скачанного FreeType).
      Проверяем, что configuration type выставлен в Static library (.lib)

    11. Закрываем окно freetype Property Pages.
      Собираем проект через Build -> Build solution.
    12. Теперь нужно поменять сборку с lib на dll.

      Повторяем действия:

      В Solution Explorer, правой кнопкой на проект freetype, properties.
      Указываем Output Directory: src/freetype/2.3.5/freetype-2.3.5/lib
      Проверяем, что configuration type выставлен в Dynamic library (.dll)

      Закрываем окно freetype Property Pages.
      Собираем проект через Build -> Build solution.

    13. Открываем директорию src/freetype/2.3.5/freetype-2.3.5/lib в Проводнике и проверяем состав файлов: freetype.dll, freetype.lib, freetype.exp.

      Ключевой факт тут такой: теперь у нас в одной корневой директории (src/freetype/2.3.5/freetype-2.3.5) лежат и инклуды (src/freetype/2.3.5/freetype-2.3.5/include), и библиотеки (src/freetype/2.3.5/freetype-2.3.5/lib).

    14. Готово!
      Теперь у нас есть жалкие 600 килобайт, ради которых мы мучались последние десять минут.
  8. Заливаем исходники JDK из репозитория

    1. Загружаем и устанавливаем Mercurial (TortoiseHg): tortoisehg.bitbucket.org/download/index.html
    2. Загружаем расширение trees для Mercurial

      Файл: gist.githubusercontent.com/olegchir/8267049ed48f7975aa8ef7d7c1515349/raw/fbe90ac1c639f6c209bc7cebbdcc7ebbd848c734/trees.py

      Запоминаем, куда скачали (например: C:/opt/trees.py)

      Важно
      Согласно инструкциям отсюда:
      openjdk.java.net/projects/code-tools/trees
      Мы должны были бы загружать вот этот файл:
      hg.openjdk.java.net/code-tools/trees/raw-file/tip/trees.py

      К сожалению, на момент написания статьи, интеграция этого экстеншена с новой версией Mercurial сломана.
      Есть следующий баг, с приложенным патчем:
      bugs.openjdk.java.net/browse/CODETOOLS-7901672
      Чтобы вам не патчить trees самостоятельно, я пропатчил его, и выложил здесь:
      gist.githubusercontent.com/olegchir/8267049ed48f7975aa8ef7d7c1515349/raw/fbe90ac1c639f6c209bc7cebbdcc7ebbd848c734/trees.py
      В будущем, когда этот тикет будет закрыт, стоит использовать основную версию.
      Если вы читаете эту инструкцию, когда тикет уже закрыт – напишите мне, я исправлю этот пункт.

    3. Создаем файл .hgrc в домашнем каталоге пользователя (%USERPROFILE%\.hgrc).

      Так как Windows плохо относится к созданию файлов, начинающихся на точку, проще всего открыть консоль Cygwin и выполнить команду:
      touch /cygdrive/c/Users/olegchir/.hgrc

      Внутри файла пишем:
      [extensions]
      purge =
      trees = C:\opt\trees.py

      Слеши в пути до py-файла – обратные.

    4. Открываем консоль (cmd.exe), переходим в директорию, где хотим хранить исходники (cd C:\git)
    5. Клонируем репозиторий:
      hg tclone hg.openjdk.java.net/jdk9/dev 9dev
      Это займет весьма много времени

      Важно
      В будущем ссылка может измениться.
      Смотреть новую ссылку можно здесь: openjdk.java.net/guide/repositories.html

      Важно
      Постарайтесь установить в путь с как можно более коротким имененем, например: C:/hg. Это поможет избежать ошибок с излишне длинными именами файлов, которые не может обработать проводник Windows (NTFS уже иногда может их обрабатывать, а Проводник – еще нет). Поможет не попасть в глупую ситуацию, когда репозиторий вы уже склонировали, а удалить его — еще не можете.

      Неприятненько
      При возникновении ошибки «abort: stream ended unexpectedly».
      Вначале попробуйте перезапустить hg tclone еще несколько раз.
      Если ошибка продолжает повторятся, то вам предстоит муторная ручная работа.
      Запомните, какой проект не выгружался до конца (например, langtools)
      Перезапустите всё с таким аргументом:
      hg tclone -r 100 hg.openjdk.java.net/jdk9/dev 9dev
      Это загрузит только 100 ченжсетов и даст возможность операции tclone завершиться.
      Сразу после этого перейдите в директорию проекта, который не докачался (например, langtools), и выполните hg tpull -u 1000.
      И дальше добавляйте по 1000 ченжсетов:
      hg tpull -u 1000
      hg tpull -u 2000
      hg tpull -u 3000
      Когда ревизии закончатся – нужно перейти в корень (9dev), и выполнить там команду “hg tpull -u” (без указания количества ревизий).
      Если после этого упадёт тот же проект – перейдите в него назад, и с более маленьким шагом докачайте оставшиеся ревизии совсем точно до конца, вернитесь в корень и повторите hg tpull -u без аргументов.
      Если после этого упадёт другой проект – переходим в его директорию, и повторяем пока всё не склонируется до конца.

  9. Собираем JDK

    1. Открываем консоль Cygwin (НЕ cmd.exe), переходим в директорию со склонированными исходниками
    2. Выполняем команду:

      ./configure --enable-debug --with-target-bits=64 --with-boot-jdk=/cygdrive/c/opt/Java/jdk1.8.0_111 --with-freetype=/cygdrive/c/my/opt/java/freetype-2.3.5-1-src/src/freetype/2.3.5/freetype-2.3.5

      пути до файлов должны совпадать с теми, что мы получили в ходе выполнения инструкции:
      —with-boot-jdk указывает на директорию, куда вы загрузили JDK8
      —with-freetype указывает на директорию внутри исходников freetype, где есть поддиректории include и lib, и в lib вы собрали .dll и .lib с 64-битным фритайпом

      пути до файлов обязаны быть не родными, а начинаться с /cygdrive.

    3. Долго ждем, пока сконфигурится. Ошибок быть не должно.

      Единственная ожидаемая ошибка — при использовании Visual Studio Express:
      Cannot locate a valid Visual Studio or Windows SDK installation on disk

      Обычно её можно исправить небольшим грязным хаком.
      Заходим в директорию установки MSVS (обычно это C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC).
      Видим что там нет диерктории amd64, зато есть x86_amd64.
      Копируем её с новым названием: amd64.
      Заходим внутрь amd64, и копируем файл vcvarsx86_amd64.bat с новым именем: vcvars64.bat
      Перезапускаем configure с новым параметром: —with-tools-dir:
      ./configure --enable-debug --with-target-bits=64 --with-boot-jdk=/cygdrive/c/opt/Java/jdk1.8.0_111 --with-freetype=/cygdrive/c/my/opt/java/freetype-2.3.5-1-src/src/freetype/2.3.5/freetype-2.3.5 --with-tools-dir="C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64"

    4. В результате выполнения configure видим такой текст:

      Configuration summary:
      * Debug level: fastdebug
      * HS debug level: fastdebug
      * JDK variant: normal
      * JVM variants: server
      * OpenJDK target: OS: windows, CPU architecture: x86, address length: 64
      * Version string: 9-internal+0-adhoc.olegchir.openjdk9 (9-internal)

      Tools summary:
      * Environment: cygwin version 2.6.1(0.305/5/3) (root at /cygdrive/c/cygwin)
      * Boot JDK: java version «1.8.0_111» Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode) (at /cygdrive/c/opt/Java/jdk1.8.0_111)
      * Toolchain: microsoft (Microsoft Visual Studio 2013)
      * C Compiler: Version 18.00.40629 (at /cygdrive/c/progra~2/micros~2.0/vc/bin/amd64/cl)
      * C++ Compiler: Version 18.00.40629 (at /cygdrive/c/progra~2/micros~2.0/vc/bin/amd64/cl)

      Build performance summary:
      * Cores to use: 8
      * Memory limit: 20447 MB

    5. Выполняем команду: make
    6. Долго ждем, пока соберется.
      В этот момент у компьютера тратится очень много ресурсов – стоит переключиться на использование другого компьютера, или сходить попить чаю.
  10. Проверяем запуск

    Внутри диретктории с исходниками должна появиться директория builds/windows-x86_64-normal-server-fastdebug

    С помощью консоли (cmd.exe) заходим в каталог типа:
    X:\git\openjdk9\build\windows-x86_64-normal-server-fastdebug\jdk\bin

    И выполняем команду: java -version
    Должна быть распечатана версия 9-internal.

  11. Troubleshooting

    In open source no one can hear your scream

    image

  12. PROFIT

ссылка на оригинал статьи https://habrahabr.ru/post/319078/