Текущая версия наконечника: .VERSION (см. Выпуски для двоичных версий) Важные примечания ВЫ ДОЛЖНЫ ПРОЧИТАТЬ СОДЕЙСТВУЮЩИЙ КОД, ПРЕЖДЕ ЧЕМ НАЧАТЬ РАБОТУ ПО ЗАПРОСУ ТЯГИ . В связи с целью тестирования данные try.gogs.io были сброшены в 28 января 2015 года и будут сбрасываться несколько раз после. Пожалуйста, НЕ размещайте ваши важные данные на сайте. Демонстрационный сайт try.gogs.io…
минимальный набор типографики, посвященной Medium.com Установка npm install —save medium.css Если вы не используете бандлер, скачайте файл medium.css и свяжите его в своем HTML Демонстрация жить: https://codepen.io/lucagez/full/bQObBe/ Если вы хотите запустить демо локально, просто клонируйте репозиторий и запустите npm install а затем npm start внутри / demo directory Почему Я обнаружил, что всегда боролся за…
Большой список Naughty Strings — это эволюционирующий список строк, которые имеют высокую вероятность возникновения проблем при использовании в качестве пользовательских данных. Это предназначено для использования в автоматическом и ручном QA-тестировании; полезно, когда ваш инженер QA входит в бар. Зачем тестировать непослушные струны? Даже многомиллиардные компании с огромным количеством автоматизированного тестирования не могут найти все плохие…
HermitCore-rs разрабатывается на GitHub.
Создайте свою собственную вилку, отправьте нам запрос на тяну и поговорите с нами на Slack.
Требования
Процесс сборки работает в настоящее время только на системах на базе x86 Linux . Строить
ядро и теги HermitCore-rs, которые вам нужны:
CMake
Netwide Assember (NASM)
Недавний компилятор хоста, такой как GCC
Крест-инструментальная цепочка HermitCore, то есть Binutils, GCC, newlib, pthreads
Компилятор ржавчины (ночной выпуск)
xargo, который может быть установлен с грузовой установкой xargo
Исходный код Rust для Xargo, который может быть установлен с компонентом rustup, добавляет rust-src .
Перекрестная инструментальная нить HermitCore-rs
Мы предоставляем готовые пакеты (в настоящее время только Ubuntu 18.04) от HermitCore-rs
Набор инструментов. Пакеты могут быть установлены следующим образом:
$ echo " deb [trusted=yes] https://dl.bintray.com/hermitcore/ubuntu bionic main " | sudo tee -a /etc/apt/sources.list
$ sudo apt-get -qq update
$ sudo apt-get install binutils-hermit newlib-hermit-rs pte-hermit-rs gcc-hermit-rs libomp-hermit-rs
Если вы хотите самостоятельно построить инструментальную цепочку, посмотрите на ветку path2rs в репозитории
отшельник-набор инструменты.
Он содержит скрипты для создания всей инструментальной цепочки для HermitCore-rs.
В зависимости от того, как вы хотите использовать HermitCore-rs, вам могут потребоваться дополнительные пакеты
таких как:
QEMU ( apt-get install qemu-system-x86 )
Строительство
Предварительная работа
В качестве первого шага необходимо клонировать хранилище и его подмодули:
Построение библиотечных операционных систем и их примеров
Чтобы построить ядро Rust и его примеры, перейдите в каталог с исходным кодом
и выполните следующие команды:
$ mkdir build
$ cd сборка
$ cmake ..
$ make
$ sudo make install
Если ваша инструментальная цепочка не находится в / opt / hermit / bin тогда вам нужно поставить
его расположение к команде cmake выше, например:
$ cmake -DTOOLCHAIN_BIN_DIR = / home / user / hermit / bin ..
Предполагая, что бинарные файлы, такие как x86_64-hermit-gcc и друзья, находятся в этом
каталог.
Чтобы установить новую версию в тот же каталог, вам необходимо установить путь установки и установить HermitCore-rs следующим образом:
$ cmake -DTOOLCHAIN_BIN_DIR = / home / user / hermit / bin -DCMAKE_INSTALL_PREFIX = / home / user / hermit ..
$ make
$ make install
Примечание: Если вы используете кросс-компилятор вне этого репозитория, он использует библиотечную операционную систему, расположенную
с помощью инструментальной цепочки (например, /opt/hermit/x86_64-hermit/lib/libhermit.a ).
Прокси
Часть HermitCore — это небольшой вспомогательный инструмент, который называется прокси .
Этот инструмент помогает запускать приложения HermitCore на виртуальной машине или голой части на узле NUMA.
В принципе это мост к системе Linux.
Если прокси зарегистрирован как загрузчик системы Linux, приложения HermitCore могут запускаться как обычные приложения Linux.
Прокси можно зарегистрировать с помощью следующей команды:
В противном случае прокси-сервер должен быть запущен напрямую и в качестве аргумента нуждается в пути к приложению HermitCore:
$ # с использованием QEMU
$ HERMIT_ISLE = qemu / opt / hermit / bin / proxy / opt / hermit / x86_64-отшельник / дополнительные / тесты / привет
После этого прокси-сервер запускает приложение HermitCore внутри виртуальной машины или голосовой металл на узле NUMA.
Тестирование
Как классический автономный одноядерник в виртуальной машине
Приложения HermitCore могут быть непосредственно запущены как автономное ядро в пределах
виртуальная машина:
$ cd сборка
$ make install DESTDIR = ~ / отшельник
$ cd ~ / hermit-build / opt / отшельник
$ # с использованием QEMU
$ HERMIT_ISLE = qemu bin / proxy x86_64-отшельник / дополнительные / тесты / привет
$ # с использованием uHyve
$ HERMIT_ISLE = uhyve bin / proxy x86_64-отшельник / дополнительные / тесты / привет
С HERMIT_ISLE = qemu приложение будет запущено в виртуальной машине QEMU.
Обратите внимание, что загрузчик требует QEMU и использует KVM по умолчанию.
Кроме того, он ожидает, что исполняемый файл называется qemu-system-x86_64 .
С HERMIT_ISLE = uhyve приложение будет запущено в тонком
гипервизор, основанный на KVM API Linux, и поэтому требуется поддержка KVM .
uhyve имеет значительно меньшее время запуска, чем QEMU.
В принципе, это расширение уквм.
В этом контексте переменная среды HERMIT_CPUS указывает количество
CPU (и уже не диапазон идентификаторов ядра). Кроме того, переменная HERMIT_MEM
определяет размер памяти виртуальной машины. Суффиксы M и G могут быть
используется для указания значения в мегабайтах или гигабайтах соответственно. По умолчанию
loader инициализирует систему с одним ядром и 2 гигабайтами RAM.
Например, следующая команда запускает тест потока на виртуальной машине, который
имеет 4 ядра и 6 ГБ памяти:
$ HERMIT_ISLE = qemu HERMIT_CPUS = 4 HERMIT_MEM = 6G bin / proxy x86_64-отшельник / дополнительные / контрольные точки / поток
Чтобы включить устройство Ethernet для uhyve мы должны настроить устройство крана на
хост-системы. Например, следующая команда устанавливает устройство крана tap100 на Linux:
$ sudo ip tuntap add tap100 mode tap
$ sudo ip addr Добавить 10.0.5.1/24 broadcast 10.0.5.255 dev tap100
$ sudo ip link set dev tap100 up
$ sudo bash -c ' echo 1> / proc / sys / net / ipv4 / conf / tap100 / proxy_arp '
По умолчанию сетевой интерфейс uhyve использует 10.0.5.2 как IP-адрес, 10.0.5.1
для шлюза и 255.255.255.0 в качестве сетевой маски.
Конфигурация по умолчанию может быть перезаписана переменными окружения HERMIT_IP HERMIT_GATEWAY и HERMIT_MASk .
Чтобы включить устройство, HERMIT_NETIF должно быть установлено на имя устройства крана.
Например, следующая команда запускает приложение HermitCore в ухиве
и позволяет поддерживать сеть:
Если qemu используется как hyervisor, виртуальная машина эмулирует интерфейс Ethernet RTL8139 и открывает по крайней мере один порт TCP / IP.
Он используется для связи между приложением HermitCore и его прокси.
Используя переменную окружения HERMIT_PORT порт связи по умолчанию (18766) можно изменить.
В качестве многоядерного ядра на реальной машине
Скоро …
Создание собственных приложений HermitCore
Вы можете взять usr / tests в качестве отправной точки для создания собственных приложений. Все
требуется, чтобы вы включили [...] /HermitCore/cmake/HermitCore-Application.cmake в приложении CMakeLists.txt . Он не должен находиться внутри репозитория HermitCore.
Кроме этого, он должен вести себя как обычный CMake.
Отладка
Если приложение запущено через сделайте qemu отладка через GDB включена
по умолчанию на порту 1234. При запуске через прокси ( HERMIT_ISLE = qemu ) установите HERMIT_DEBUG = 1 .
$ gdb x86_64-отшельник / дополнительные / тесты / привет
(gdb) target extended-remote: 1234
Удаленная отладка с использованием: 1234
0xffffffff8100b542 в ?? ()
Советы
Оптимизация
Вы можете настроить флаг компилятора -mtune = name добавив -DMTUNE = имя в
команда cmake при настройке проекта.
Обратите внимание: если приложения запускаются в виртуальной машине, гипервизор должен
поддерживают указанное имя архитектуры.
Если QEMU запущен нашим прокси и переменной окружения установлен HERMIT_KVM
к 0 виртуальная машина не будет ускорена KVM. В этом случае -mtune следует избегать.
TCP-соединения
Используя переменную окружения HERMIT_APP_PORT можно открыть дополнительный порт
установить соединение TCP / IP с вашим приложением.
Сбрасывание журнала ядра
Установив переменную окружения HERMIT_VERBOSE на 1 прокси-печать
сообщения журнала ядра на экран при завершении.
Трассировка сети
Установив переменную окружения HERMIT_CAPTURE_NET на 1 и HERMIT_ISLE — qemu QEMU фиксирует сетевой трафик и создает трассировку
файл qemu-vlan0.pcap . Вы можете проанализировать файл, например.
Wireshark.
Монитор
Если HERMIT_MONITOR установлено в 1 и HERMIT_ISLE — qemu QEMU устанавливает
монитор, который доступен через telnet в порту 18767.
Используя переменную окружения HERMIT_PORT порт по умолчанию (18766) можно изменить для связи между приложением HermitCore и его прокси.
Подключение к системному монитору автоматически устанавливается на HERMIT_PORT + 1 то есть порт по умолчанию — 18767.
Кредиты
Emoji от HermitCore предоставляется бесплатно от EmojiOne.
Запустите npx co-commit чтобы начать. — Установка не требуется.
? Справочная информация
GitHub позволяет вам соавтор коммитировать, добавив соавтором: name к сообщению о фиксации.
? Дополнительно (необязательно)
Чтобы ускорить рабочий процесс, вы можете предварительно установить совместное использование с помощью npm i -g co-commit .
Вы также можете использовать git flags с co-commit: например, git commit --all становится npx co-commit --all . Кроме того, вы можете пропустить подсказки с использованием флагов: например: -m «ваше сообщение о совершении» или -co «mariiapunda, juliettepretot» .
Omi: веб-инфраструктура следующего поколения в JavaScript 4kb
Объединить JSX, веб-компоненты, прокси, магазин, обновление пути вместе
Почему Оми?
Крошечный размер. ( 4kb gzipped)
Поддерживает TypeScript.
Реактивная привязка данных
На основе Shadow DOM
Легко отлаживается через расширение Omi DevTools [Install from Chrome WebStore]
Соблюдение тенденции браузера и дизайна API.
Объединить JSX и веб-компоненты в одну структуру.
Веб-компоненты также могут быть ориентированы на данные, UI = fn (данные) .
JSX — лучший опыт разработки (интеллектуальное завершение кода и подсказка). Выражение пользовательского интерфейса с наименьшим грамматическим шумом.
Оригинальная система Path Updating . Автоматическое автоматическое обновление потребление низкой мощности высокая степень свободы, отличная производительность, легкая интеграция requestIdleCallback
Попробуйте this.update метод при использовании системы хранения ! Он будет автоматически обновлять пользовательский интерфейс при изменении данных.
Посмотрите на Facebook React vs Web Components, Omi сочетает в себе свои преимущества и дает разработчикам свободу выбора 19459017 .
Shadow DOM объединяется с Virtual DOM Omi использует как виртуальную DOM, так и реальную DOM DOW, чтобы сделать просмотр обновлений более точным и быстрым.
В системе Store 99,9% проектов не требуют путешествий во времени, и не только Redux может путешествовать, пожалуйста, не придумывайте Redux, система магазинов Omi может удовлетворить все проекты
Лучшее решение с CSS — это Shadow DOM сообщество, разбивающее фреймворки и библиотеки для Scoped CSS (с использованием стилей записи JS или JSON, таких как Radium, jsxstyle, стиль, привязка к webpack с использованием сгенерированного уникального className filename-classname-hash такого как CSS-модули, Vue), являются хакерскими технологиями; и Shadow DOM Style — идеальное решение .
Сравнить TodoApp от Omi и React, Omi и React, рендеринг структуры DOM:
Оми
React
Добавить Оми в одну минуту
Эта страница демонстрирует использование Omi без инструмента для сборки .
< HTML >
< глава >
meta charset = " UTF-8 " />
< название > Добавить Оми в одну минуту </ название >
</ глава >
< тело >
src = " https://unpkg.com/omi " > </ ] сценарий >
< сценарий >
const { WeElement h render определяют } = Оми класс LikeButton распространяется WeElement { установить () { = {понравилось : false } } () {если ( это . данные . понравилось ) { return ' Вам понравилось. ' } возвращение h ( { onClick : () => { это . данные . понравилось = true это . обновление () } }, ') } } определяют ( » аналогичная кнопка 'LikeButton) h ( » аналогичная кнопка ), ' тела ) </ сценарий >
</ тела >
</ HTML >
Вы также можете использовать тег как кнопка непосредственно в HTML:
< тело >
<как-кнопки > </ как-кнопки >
</ тела >
Начало работы
Установите
$ npm i omi-cli-g # установить cli
$ omi init your_project_name # init project, вы также можете выполнить команду 'omi init' в пустой папке
$ cd your_project_name # пожалуйста, проигнорируйте эту команду, если вы выполнили 'omi init' в пустой папке
$ npm start # разработать
$ npm run build # выпуск
Описание в каталоге:
├─ config
├─ общественность
├─ скрипты
├─ src
│ ├─ активы
│ ├─ elements // Хранить все пользовательские элементы
│ ├─ store // Хранить все это хранилище страниц
│ ├─ admin.js // Запись js компилятора, будет создана для admin.html
│ └─ index.js // Запись js компилятора, будет создана для index.html
Автосозданные строительные леса CLI основаны на одностраничном приложении create-response-app, которое будет преобразовано в многостраничное, с проблемами конфигурации, чтобы увидеть руководство пользователя для создания-реагирования-приложения
Hello Element
Определите пользовательский элемент, расширив WeElement базовый класс и назовите его с помощью @tag decorator:
Если вы не хотите писать CSS в JS, вы можете использовать to-string-loader,
Например, следующая конфигурация:
{
: / [ | / ] _ [ ] S ] * . CSS $ / ,
использование : [
в строке-загрузчик ,
CSS-погрузчик
]
}
Если ваш файл CSS начинается с « _ », CSS будет использовать для-string-loader ., Например:
import { tag WeElement render } из ' оми // typeof cssStr является строкой импорт cssStr из ' ./_ index.css '
@ Тег ( мое-приложение )
класс MyApp распространяется WeElement {
css () {
возвращение cssStr
}
... ... ...
TodoApp
Вот относительно полный пример TodoApp:
import { tag WeElement render } из оми
@ Тег ( TODO-лист )
класс TodoList extends WeElement {
render ( реквизит ) {
возвращение (
< уль >
{19459049] реквизит . предметы . карта ( пункт => < li key = { Пункт . id } > { Пункт . текст } < / Li >
))}
< / уль >
);
}
}
@ Тег ( TODO-приложение )
класс TodoApp extends WeElement {
static get данные () {
{пункты : []текст : '}
}
render () {
возвращение (
< DIV > < Н3 > TODO < / Н3 > < todo - перечислил элементы = {. данные . пункты } / > < форма onSubmit = { этот . рукояткаSubmit } > < вход
ID = " новый список задачи "
OnChange = { это . handleChange }
значение = { это . Данные . текст }
/ > < Кнопка > . длина + 1 }
< / Кнопка > < / форма > < / DIV >
);
}
handleChange = ( e ) => {
текст = e . Цель . значение
}
handleSubmit = ( e ) => {
е preventDefault ().
если это . данные . текст . обрезка (). длина ) {
возвращение ;
}
это . Данные . элементов . толчок ({
текст : это . данные . текст ,
id : Дата . сейчас ()
})
данные . текст = ;
это . Обновление ()
}
}
< todo - приложение / > ' тело )
Магазин
Попробуйте this.update метод при использовании системы магазинов! При изменении данных он будет автоматически обновлять пользовательский интерфейс. Мощная архитектура Store отличается высокой производительностью, поскольку все данные монтируются в хранилище, за исключением компонентов, которые полагаются на опоры для определения состояния компонента.
экспорт по умолчанию {
данные : {
пункты : [],
текст : '' ,
firstName : ' dnt ' ,
lastName : ' zhang ' ,
fullName : функция () {
возвращение это . firstName + это . lastName
},
: abc ' // Изменить, он обновит все элементы без изменения компонентов и страницы, объявляющих зависимость данных.
ccc : : : 1 } // Изменить это будет обновлять все элементы без изменения компонентов и объявления страниц. зависимость.
},
globalPropTest '' ccc.ddd '],
добавить : function () {
если это . данные . текст . обрезка (). длина ) {
возвращение ;
}
это . Данные . элементов . толчок ({
текст : это . данные . текст ,
id : Дата . сейчас ()
})
данные . текст =
}
// Значение по умолчанию - false, значение true будет обновлять все экземпляры при изменении данных. // updateAll: true
}
Пользовательский элемент требует объявления зависимых данных, так что Omi сохраняет вычислительный путь зависимости на основе данных, объявленных на пользовательском компоненте, и обновляет их локально по мере необходимости. Например:
класс TodoApp распространяется WeElement {
// Если вы используете хранилище, данные используются только для объявления зависимостей. static get данные () {
{пункты : []текст : '}
}
// ... handleChange = ( e ) => {
текст = e . цель . значение
}
handleSubmit = ( e ) => {
е . preventDefault ()
это . магазин . добавить ()
}
}
Логика данных инкапсулирована в методе определения хранилища (например, store.add ).
Взгляды — это только ответственные за передачу данных для хранения таких как вызов store.add или установка store.data.text сверху.
Вам нужно ввести магазин из корневого узла во время рендеринга, чтобы использовать этот магазин:
< todo - приложение / > тело 'магазин)
→ Сохранить исходный код
Резюме:
store.data используется для отображения всех атрибутов и значений по умолчанию (кроме компонентов представления, определенных реквизитами).
Данные компонента и страницы используются для перечисления атрибутов зависимого store.data (Omi будет записывать путь) и обновления по запросу.
Если на странице несколько простых компонентов, updateAll может быть установлено в true а компонентам и страницам не нужно декларировать данные, и они не обновляются по запросу
Путь, объявленный в globalData обновляет все страницы и компоненты, изменяя значение соответствующего пути, который может использоваться для отображения всех страниц или большинства путей общедоступных свойств
Жизненный цикл
Метод жизненного цикла
Когда его назовут
установите
перед тем, как компонент подключится к DOM
установлен
после того, как компонент подключается к DOM
удалить
до снятия с DOM
BeforeUpdate
до render ()
AfterUpdate
после render ()
Компонентная экосистема
Я считаю, что вы можете легко преобразовать элементы веб-компонентов в элементы omi.
Отладка
Используя Omi DevTools, вы можете просто отлаживать и управлять своим пользовательским интерфейсом без какой-либо конфигурации . Просто установите и отлаживайте.
Поскольку Omi использует веб-компоненты и Shadow-DOM, ему не нужно иметь другую панель элементов, такую как React или Vue. Он просто добавляет панель к боковой панели элементов и она настолько же эффективна, как и React и Vue DevTools.
Поддержка браузеров
Omi 4.0+ работает в последних двух версиях всех основных браузеров: Safari 10+, IE 11+ и вечнозеленых Chrome, Firefox и Edge.
Ссылки
Вклад
Вилка (https://github.com/Tencent/omi/fork)
Создайте свою ветку ( git checkout -b мое-срочное исправление )
Зафиксируйте свои изменения ( git commit -am «Исправлено что-то» )
Нажмите на ветку ( git push origin my-emergency-hotfix )
Добро пожаловать в dev.to codebase. Мы так рады, что у вас есть. С вашей помощью мы можем построить DEV, чтобы быть более стабильным и лучше обслуживать наше сообщество.
Что такое dev.to ?
dev.to (или просто DEV) — это платформа, на которой разработчики программного обеспечения пишут статьи, участвуют в обсуждениях и создают свои профессиональные профили. Мы ценим поддерживающий и конструктивный диалог в поисках отличного кода и карьерного роста для всех членов. Экосистема охватывает от начинающих до продвинутых разработчиков, и все желающие могут найти свое место в нашем сообществе. ❤️
Содержание
Вклад
Мы ожидаем, что вкладчики будут соблюдать наш базовый кодекс поведения. Все разговоры и обсуждения по GitHub (вопросы, запросы на тяну) и через dev.to должны быть уважительными и безжалостными.
Где внести вклад
Если у вас есть сомнения, обратитесь к основному члену команды! Вы можете упомянуть нас в каких-либо проблемах или спросить о потоке автора DEV. Любая проблема с хорошей темой первого выпуска как правило, является хорошим местом для начала.
Рефакторинг код, например. улучшение кода без изменения поведения — это область, которая, вероятно, может быть сделана на основе интуиции и может не требовать объединения большого количества сообщений.
Исправление ошибок также может не требовать много общения, но тем лучше. Удостоверьтесь в исправлениях ошибок с достаточными испытаниями. Ошибки — это магниты для других ошибок. Напиши тесты рядом с ошибками!
Особенности здания — это область, которая потребует наибольшего количества сообщений и / или переговоров. Каждая функция субъективна и открыта для обсуждения. Дорожная карта продукта должна быть хорошим руководством для последующего изучения. Как всегда, когда вы сомневаетесь, спросите!
Как внести свой вклад
Вилка проекта & клонировать локально. Следуйте первоначальной настройке здесь.
Создайте ветвь, назвав ее либо особенностью, либо ошибкой: git checkout -b feature / that-new-feature или ошибка / исправление-это-ошибка
Код и внести изменения. Бонусные баллы, если вы пишете сообщение о хорошей фиксации: git commit -m 'Добавить функцию'
Нажмите на ветку: git push изначальный особенность / эта новая функция
Создайте запрос на растяжение для вашего филиала ?
Руководящий документ
Создать вопрос
Никто не идеален. Что-то не работает? или может быть сделано лучше? Сообщите нам, создав проблему.
PS: четкий и подробный вопрос получает много любви, все, что вам нужно сделать, это следовать шаблону вопроса!
Чистый код с испытаниями
Некоторые существующие коды могут быть плохо написаны или непроверены, поэтому мы должны провести более тщательный анализ. Мы тестируем rspec, сообщите нам, если у вас есть какие-либо вопросы по этому поводу!
Создать запрос на растяжение
Постарайтесь, чтобы запросы на растяжение были небольшими; запрос на тягу должен стараться изо всех сил решить только одну проблему.
Убедитесь, что все тесты проходят и добавляют дополнительные тесты для кода, который вы отправляете.
Документируйте свои аргументы в пользу изменений. Объясните, почему вы написали код так, как вы это делали; код должен объяснить, что он делает.
Если существует проблема, связанная с запросом на pull, ссылайтесь на нее, добавив что-то вроде Ссылки / Закрытия / Исправления / Разрешения № 305 где 305 — номер проблемы. Подробнее здесь
Если вы следуете шаблону запроса на вытягивание, вы не ошибетесь.
Обратите внимание: все коммиты в запросе на тягу будут раздавлены при объединении, но когда ваш PR будет одобрен и пройдет наш CI, он будет жить на производстве!
Как получить помощь
Независимо от того, застряли ли вы в реализации функций, при первой установке, или просто хотите сказать нам, что что-то может быть сделано лучше, посмотрите наш поток OSS или создайте проблему. Вы также можете указать любого ключевого члена команды в проблеме, и мы ответим как можно скорее.
? Справка / обсуждение OSS ?
Суть
Мы все люди пытаемся работать вместе, чтобы улучшить сообщество. Всегда будьте добры и цените необходимость компромиссов. ❤️
Codebase
Стек
Мы работаем на бэкэнде Rails с главным ванильным JavaScript на передней панели, а некоторые Preact посыпаются. Одна из наших целей — переместить в основном Preact для нашего интерфейса.
Дополнительные технологии и услуги перечислены в наших документах.
Инженерные стандарты
Руководство по стилю
Этот проект следует за Руководством по стилю Ruby Style, которое использует Rubocop вместе с Rubocop-Rspec в качестве анализатора кода. Если у вас есть Rubocop, установленный с вашим текстовым редактором, вы должны быть в рабочем состоянии.
Для Javascript мы следуем Руководству по стилю JS Airbnb, используя ESLint и красивее. Если у вас установлен ESLint с вашим текстовым редактором, вы должны быть в рабочем состоянии.
Husky hooks
Когда совершаются коммиты, крюк preitmit git проходит через хриплый и строчный. ESLint, красивее и Rubocop будут работать на вашем коде до его совершения. Если есть ошибки перебора, которые не могут быть автоматически исправлены, коммит не произойдет. Вам нужно будет исправить проблему вручную, а затем попытаться зафиксировать ее снова.
Примечание: если вы уже установили пакет хаски хотя бы один раз (используется для сценария precommit npm), вам нужно будет запустить пряжу --force или npm install --no- кэш . По какой-то причине пост-установочный скрипт хаски не запускается, когда пакет вытаскивается из нити или кэш-памяти npm. Это не хаки, а скорее проблема с кешированным пакетом.
Начало работы
Предпосылки
Эти предпосылки предполагают, что вы используете macOS. Если вы используете другую ОС, вы должны установить эти предварительные требования, специфичные для вашей ОС.
Ruby: мы рекомендуем использовать rbenv для установки версии Ruby, указанной на значке.
Bundler: комплект установки gem
Форман: мастер установки драгоценных камней
Пряжа: используйте пряжу для заваривания для установки пряжи. Он также установит узел, если у вас его еще нет.
PostgreSQL: самый простой способ начать с этого — использовать Postgres.app.
В основном мы используем Rails-приложение, в котором используется несколько Webpack. В большинстве случаев просто работает сервер bin / rails . Если вы работаете с Webpack, вам необходимо запустить следующее:
Запуск bin / startup чтобы запустить сервер, Webpack и наш бегун delayed_job . bin / startup запускает стартовый мастер -f Procfile.dev под капотом.
alias start = "bin / startup" делает это еще быстрее. ?
Если вы используете pry для отладки в Rails, обратите внимание, что вместе с мастером и pry работает, но это не как чистый, как bin / rails server .
Ниже приведены некоторые синглтонные команды, которые могут вам понадобиться, обычно на отдельной вкладке / вкладке вашей оболочки.
Запуск сервера задания (при использовании bin / rails server ) — это в основном для уведомлений и писем: bin / rails jobs: work
Устранение вакансий (в случае, если вы не хотите ждать отставания в работе): bin / rails jobs: clear
Текущие исправления: необходимо разработать потенциальные проблемы с внешними службами.
Предлагаемый рабочий процесс
Мы используем Spring и уже включены в проект.
Используйте предустановленные булавки для автоматического запуска Spring, то есть bin / rails server bin / rspec spec / models / bin / rake db: мигрировать .
Если Spring не набирает новые изменения, используйте пружинный стоп . Например, Spring всегда следует перезапускать, если есть изменение в ключе среды.
Проверить состояние пружины, когда с пружинным статусом .
Предостережение: bin / rspec не имеет весны, потому что это влияет на результат Симпсова. Вместо этого используйте bin / spring rspec .
Дополнительные документы
Ознакомьтесь с нашей страницей посвященных документов, чтобы получить дополнительную техническую документацию.
Карта продуктов
Наша новая дорожная карта продукта находится здесь. Многие заметки должны быть преобразованы в проблемы, но это должно обеспечить обзор функций, над которыми мы планируем работать, а также возможности, которые мы рассматриваем.
Члены основной команды будут перемещать вопросы вдоль проектной панели по мере их продвижения.
Идеи и запросы: возможности для обсуждения.
Потребности Владельцы: функции, нуждающиеся в владельце.
Committed: функции, которые мы обязуемся строить — бесплатно для авторов, чтобы работать, но, пожалуйста, свяжитесь с владельцем заранее.
Выполняется (на ранней стадии): началась работа над функцией.
Выполняется (на поздней стадии): функция близится к завершению.
Основная команда
Лицензия
DEV лицензируется в соответствии с GNU Affero General Public License 3 (AGPL-3). Пожалуйста, просмотрите файл LICENSE в нашем репозитории для полного текста.
Как и многие проекты с открытым исходным кодом, мы требуем, чтобы участники предоставили нам Лицензионное соглашение для участников (CLA). Предоставляя код проекту DEV, вы предоставляете нам право использовать этот код в соответствии с условиями CLA.
Наша версия CLA была адаптирована из лицензионного соглашения Microsoft Contributor, которое они щедро предоставили общедоступному домену в Creative Commons CC0 1.0 Universal.
Любые вопросы, пожалуйста, обратитесь к нашей лицензии FAQ doc или по электронной почте yo@dev.to
Тип : а затем первые несколько букв для автозаполнения emojis. ? Установка Скачать последнюю версию, 0.2. Разархивируйте, если необходимо, и дважды щелкните Emoji Autocomplete.sketchplugin . Использование При редактировании текстовых слоев, переопределений или имен слоев введите : а затем несколько букв, чтобы отобразить список emojis для автозаполнения. С помощью клавиш со стрелками или мышью выберите его.…
SCSS стартер для создания гармонических цветовых палитр на основе цветовых колесных схем. Как Открыть scss / colorcalc.scss . Отредактируйте значения для оттенков, насыщенности, лёгкости и альфы в $ h $ s $ l $ a . Сохранить и скомпилировать. Цветовые схемы комплементарной Дополнительные схемы создаются путем комбинирования цветов с противоположных сторон цветового круга. Цвета 180…