Code Monkey home page Code Monkey logo

faq's Introduction

Unofficial Fedora FAQ in russian

GitHub version Github downloads Pages CI status Release CI status GitHub issues

We decided to find and document answers to the most of the frequently asked questions from our conferences about Fedora for convenience of end users.

You can ask new questions in issues of this repository or you can help us and contribute project by sending your pull requests.

This FAQ maintained by independent community members. Not related to Fedora Project. Fedora is a registered trademark of Red Hat, Inc.

Build HTML

  1. Install make and sphinx-doc packages:
sudo dnf install make python3-sphinx
  1. Clone this repository:
git clone https://github.com/RussianFedora/FAQ.git fedora-faq-ru
  1. Generate HTML from sources:
cd fedora-faq-ru
make html
  1. Open result in default web-browser:
xdg-open build/html/index.html

Build PDF

  1. Install make, sphinx-doc and texlive packages:
sudo dnf install make python3-sphinx latexmk texlive-cmap texlive-metafont-bin texlive-collection-fontsrecommended texlive-babel-russian texlive-hyphen-russian texlive-titling texlive-fancyhdr texlive-titlesec texlive-tabulary texlive-framed texlive-wrapfig texlive-parskip texlive-upquote texlive-capt-of texlive-needspace texlive-collection-langcyrillic texlive-cyrillic-bin texlive-cmcyr texlive-cyrillic-bin-bin texlive-fncychap texlive-xetex dejavu-sans-fonts dejavu-serif-fonts dejavu-sans-mono-fonts texlive-polyglossia texlive-xindy
  1. Clone this repository:
git clone https://github.com/RussianFedora/FAQ.git fedora-faq-ru
  1. Generate PDF from sources:
cd fedora-faq-ru
make latexpdf
  1. Open result in default PDF viewer:
xdg-open build/latex/fedora-faq-ru.pdf

faq's People

Contributors

and-semakin avatar bookwar avatar crayxt avatar cyberme avatar dependabot[bot] avatar elxreno avatar fabius-bile avatar jsonguard avatar krepver avatar leha-bot avatar punkrelique avatar solopasha avatar sotnikov123 avatar tim77 avatar turubanov avatar vascom avatar xvitaly avatar zawertun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

faq's Issues

Номер вопроса накладывается на его название

Страница, на которой присутствует ошибка: оглавление.

Подробно опишите её:

Номер вопроса накладывается на его название. Баг Sphinx LaTeX генератора. Проявляется если поле номера страницы превышает 4 символа.

photo_2020-02-29_14-35-54

Fedora не загружается с новым ядром

Есть компьютер. UEFI/GPT. На одном жестком диске установлены Windows 10, openSUSE Tumbleweed и Fedora 29. При загрузке компьютера выводится меню GRUB со списком всех трех ОС для загрузки. Само меню GRUB принадлежит openSUSE и меня это вполне устраивает.

Вот только Fedora все время загружается с ядром 4.18 (судя по выводу команды uname -r), хотя она уже обновилась и в списке установленных присутствует версия 4.19.

Как заставить Fedora загружаться с новым ядром?
Пробовал в openSUSE команду
grub2-mkconfig -o /boot/efi/EFI/opensuse/grub.cfg,
а в Fedora
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg,
но это не помогло.

L2TP

В RFRemix в Network Manager есть возможность для настройки L2TP VPN, что бывает полезно при подключении к некоторым российским провайдерам интернета. Как это можно сделать в других дистрибутивах, например в обычной Fedora?

Создание SubVolum BTRFS

Обновить инструкцию как создать subvolum при разметке диска, что бы тот же timeshift мог использовать BTRFS для создания снимков

Разница между командами dnf upgrade и dnf distro-sync

Подробно опишите своё предложение:
В пункте 3.10 Как правильно обновлять систему? приведена команда для обновления sudo dnf upgrade --refresh
Но, помимо этой команды существует еще и команда dnf distro-sync. Из описания ясно, что последняя может производить как апгрейд, так и даунгрейд системы, приводя ее к некоторому актуальному состоянию. Однако не понятно в каких случаях лучше использовать первую команду, а в каких - вторую. И не удалит ли команда distro-sync установленные пользователем пакеты?

Как отключить использование сжатия памяти по умолчанию?

Подробно опишите своё предложение:

Здесь даже не упомянут своп и непонятно какая память сжимается и зачем.

Стоит упомянуть, что речь идет о свопе на сжатом блочном устройстве zram, добавить ссылку https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html

Дополнить инструкцию по настройке firewalld для wireguard

Страница, на которой присутствует ошибка:
https://www.easycoding.org/2019/02/28/podnimaem-wireguard-server-na-fedora.html

Подробно опишите её:
С Fedora 33 настроен сервер wireguard согласно инструкции выше. В системе все настройки по умолчанию. Никаких дополнительных настроек firewalld не выполнялось. VPN работал, доступ с телефона через него в интернет так же работал.

После обновления на Fedora 35 подключение к VPN работало, но попытка пинговать ip хоста (не vpn) - packet filtered. Попытка подключиться к интернет - нет доступа. В логах обнаружилось такое:

ноя 22 14:37:24 server kernel: "filter_FWD_FedoraServer_REJECT: "IN=wg0 OUT=eno0 MAC= SRC=ip_устройства DST=64.233.161.198 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=54488 PROTO=TCP SPT=49473 DPT=443 WINDOW=65535 RES=0x00 SYN URGP=0
ноя 22 14:38:38 server kernel: "filter_FWD_FedoraServer_REJECT: "IN=wg0 OUT=eno0 MAC= SRC=ip_устройства  DST=74.125.131.95 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=764 PROTO=TCP SPT=40598 DPT=443 WINDOW=65535 RES=0x00 SYN URGP=0
ноя 22 14:38:47 server kernel: "filter_FWD_FedoraServer_REJECT: "IN=wg0 OUT=eno0 MAC= SRC=ip_устройства DST=ip_роутера LEN=62 TOS=0x00 PREC=0x00 TTL=63 ID=61650 PROTO=UDP SPT=43482 DPT=53 LEN=42

В чате подсказали, что обновился firewalld до версии 1.0.
На opennet нашёл статью.

Действие "default", указываемое в параметре "--set-target", теперь эквивалентно "reject", т.е. все пакеты, не подпадающие под определённые в зоне правила, по умолчанию будут блокироваться. Исключение сделано только для ICMP-пакетов, которые по-прежнему пропускаются. Для возвращения старого поведения для публично доступной зоны "trusted" можно использовать правила:
firewall-cmd --permanent --new-policy allowForward
firewall-cmd --permanent --policy allowForward --set-target ACCEPT
firewall-cmd --permanent --policy allowForward --add-ingress-zone public
firewall-cmd --permanent --policy allowForward --add-egress-zone trusted
firewall-cmd --reload

Выполнил настройку со своими зонами (FedoraServer) - заработало.

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

Команда package-cleanup отсутствует

В "Большом FAQ по Fedora" дается следующая рекомендация:

Удалить дубликаты и повреждённые пакеты можно так:
sudo package-cleanup --cleandupes --noscripts

Однако при вызове команды package-cleanup появляется сообщение:
-bash: package-cleanup: command not found

А при поиске этой команды с помощью dnf search package-cleanup появляется сообщение:
No matches found.
(Fedora 29)

make hmtl error 127

Выполняю инструкцию и получаю ошибку. Есть решение?

~/fedora-faq-ru> make html

/bin/sh: sphinx-build: команда не найдена
make: *** [Makefile:28: html] Ошибка 127

У меня cat /etc/os-release
NAME=Fedora
VERSION="29 (Workstation Edition)"

Перестала работать смена тем в plymouth

Доброго времени. Вроде бы ничего сложного, но на Fedora 38 с UEFI материнкой и картой NVIDIA GeForce GTX 1050 Ti
перестала работать смена тем в plymouth . Причину происходящего выяснить пока не удалось.
В кои-то веки решил сделать одинаковые картинки от GRUB до SPLASH KDE и не получилось избавиться от OEM LOGO
Есть предположение что это косяк работы dracut или совокупность факторов, например таких как UEFI
пробовал искать схожие проблемы но вменяемых объяснений не нашёл.
PS систему обновлял с предыдущего релиза, а не ставил заново.
Я уж подумываю о смене картинки в прошивке биос, но не факт что получится загнать в нужном качестве. Да и успех реализации этого мероприятия вызывает сильные сомнения
описание в FAQ тоже видел
https://russianfedora.github.io/FAQ/using-system.html#plymouth-themes

Отключение защиты Meltdown и Spectre

В FAQ по Fedora для отключения защиты Meltdown и Spectre предлагается передать ядру такие параметы: nopti (или pti=off), nospectre_v1, nospectre_v2, nospec_store_bypass_disable, и еще l1tf=off для отключения L1TF.

А что насчет параметра PR_SPEC_DISABLE_NOEXEC ? Вот здесь небольная заметка https://habr.com/ru/company/1cloud/blog/442140/ Этот параметр тоже как будто предназначен для отключения защиты Spectre v4.

Еще предлагаю дополнить FAQ инструкцией куда и как добавлять эти параметры. Как я выяснил, их нужно добавить в файл /etc/default/grub, в строку GRUB_CMDLINE_LINUX
И затем нужно выполнить команду grub2-mkconfig -o /boot/grub2/grub.cfg Или правильнее будет выполнить grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg ?

UPD. Я нашел куда и как писать эти параметры в FAQ, просто можно ссылку на них дать из радела про отключение Meltdown / Spectre.

Полезные сторонние репозитории для Fedora - 2

Подробно опишите своё предложение:
https://www.easycoding.org/2017/03/24/poleznye-storonnie-repozitorii-dlya-fedora.html

В связи с тем, что VSCode всё равно используют и советуют репозиторий vscodium вместо официального:

  1. на офсайте не добавлено skip_if_unavailable=True
  2. активация репозитория через dnf
  3. напоминание отключить телеметрию для паранойщиков

sudo bash -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc\nskip_if_unavailable=True" > /etc/yum.repos.d/vscode.repo'
sudo dnf config-manager --set-enabled code
отключаем телеметрию тут:
ctrl+, -> Application -> Telemetry

Поддержка мультимедиа в Fedora

Сейчас бегло посмотрел FAQ по Fedora и не нашел ответа (хотя может плохо искал).
Меня интересует какие кодеки и программы нужно установить для нормальной поддержки мультимедиа в Fedora. Я говорю о кодеках, чтобы можно было слушать музыку, смотреть видео на локальной системе или онлайн. Я не имею в виду программы типа vlc, audacity, mpv, avdemux и т.п. В Russian Fedora Remix поддержка мультимедиа присутствует "из коробки", но для обычной Fedora это актуальный вопрос.

Я смог настроить Fedora для основной работы с видео и звуком, но действовал бессистемно. А хотелось бы знать, какие пакеты устанавливать нужно, какие не обязательно, а какие будут избыточными. Ну и хорошо бы дополнить этой информацией FAQ.

wayland kde nvidia liveCD

Есть ли возможность запустить liveCD с kde и видеоадаптером nvidia? при запуске получаю зависшую систему. решений, как я понимаю два:

  1. запустить сессию на Xorg, но не понятно как переключиться на него при старте с liveCD (нет возможности завершить текущий сеанс для переключения на Xorg)
  2. Ставить серверный вариант и накатывать руками KDE с соответствующими драйверами и параметрами ядра
    Есть возможность добавить инструкцию в FAQ для данной ситуации?
    Благодарю за внимание

планировщик по умолчанию

Было бы неплохо добавить команду просмотра текущего планировщика по умолчанию в разделе "Как задействовать планировщик ввода/вывода BFQ для HDD?".

Hibernation fedora 37

При дефолтной установке 37+GNOME не работает выход из гибернации без параметра
add_dracutmodules+=" resume " в /etc/dracut.conf, возможно это стоить добавить в документацию.

Ошибка в описании Firewalld

В описании сказано

Firewalld не является надстройкой над iptables, как многие ошибочно считают. Firewalld - это полнофункциональный самодостаточный фронтенд над ядерным модулем netfilter.

Но это не так. Он им являлся до версии 0.6.0 (релиз в июне 2018), а теперь он надстройка над nftables (с возможностью переключиться обратно на iptables). Смотрим конфиг.

А так же запись в блоге и release notes.

firewalld interacts with nftables directly through the nft binary. This is similar to how firewalld currently interacts with iptables and family. In a future release interaction with nftables will be further improved by using the newly minted libnftables.

Установка Microsoft Core Fonts в Fedora

Подробно опишите своё предложение:
https://www.easycoding.org/2011/08/14/ustanovka-microsoft-core-fonts-v-fedora.html

По-умолчанию wget не качает файл, если папка не создана
или надо добавить перед скачиванием
mkdir -p ~/rpmbuild/SPECS
или качать с созданием папки
wget -P ~/rpmbuild/SPECS http://corefonts.sourceforge.net/msttcorefonts-2.5-1.spec

Аппаратное видеоускорение в Firefox

Страница, на которой присутствует ошибка:
https://russianfedora.github.io/FAQ/using-applications.html#hwaccel-firefox

Гайд из FAQ не учитывает существование media.rdd-process.enabled и этого бага: https://bugzilla.mozilla.org/show_bug.cgi?id=1683808

media.rdd-process.enabled должен быть установлен в false, иначе декодирование через VA-API не будет работать. Однако, переключение этого параметра в false, сказывается на безопасности браузера.

Опечатка в п.3, раздела 9.27 ("Как перенести кэш браузера Firefox в tmpfs?" )

Сейчас написано:

  1. чтобы кэш очень сильно не разрастался, укажем в переменной browser.cache.
    disk.capacity максимальный размер в байтах, например 262144 (256 МБ);

Нужно написать:

  1. чтобы кэш очень сильно не разрастался, укажем в переменной browser.cache.
    disk.capacity максимальный размер в КИЛОбайтах, например 262144 (256 МБ);

Чтобы я добавил еще к этому пункту: сведения о типе параметра INTEGER.

>Чем отличается Effective UID процесса от Real UID?

Подробно опишите своё предложение:

Там пример вообще неправильный.

Описаны отличия euid/ruid от suid, а не отличия ruid от euid.

https://en.wikipedia.org/wiki/User_identifier

eauid используется для определения доступа к ФС.

ruid - The real UID (ruid) and real GID (rgid) identify the real owner of the process and affect the permissions for sending signals.

А вот suid - да, при сохранения uid при понижении привилегий.

Пункт 3.31 FAQ Установка кодеков

В пункте 3.11 FAQ приведена команда для установки кодеков sudo dnf groupupdate multimedia sound-and-video
Однако, во-первых, в выводе команды sudo dnf group list нет группы multimedia.
Во-вторых вроде бы более правильно писать dnf group upgrade 'Sound and Video'
В-третьих группы Sound and Video нет в числе установленных (но проверял на версии Fedora 35 и 36Beta с LXQT), так что возможно, следует выполнить команду dnf group install 'Sound and Video' ?

upd.
Зашел на сайт https://rpmfusion.org/ и в секции Multimedia post-install приведены такие команды:

The following command will install the complements multimedia packages needed by gstreamer enabled applications:
sudo dnf groupupdate multimedia --setop="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin

The following command will install the sound-and-video complement packages needed by some applications:
sudo dnf groupupdate sound-and-video

Полезные сторонние репозитории для Fedora - 3

Подробно опишите своё предложение:
https://www.easycoding.org/2017/03/24/poleznye-storonnie-repozitorii-dlya-fedora.html/

Раз уж факт отключения щупов подтвердить или опровергнуть не получается,
можно добавить репу атома для выбора кому сливать свою телеметрию.
Тем более настройка атомовского репозитория также не содержит skip_if_unavailable=True

https://flight-manual.atom.io/getting-started/sections/installing-atom/#red-hat-and-centos-yum-or-fedora-dnf

Opera browser

Установил opera-browser с официального сайта, но при dnf update приходит устаревшее "обновление" из репозитория RFR, как поступить в данном случае?

Опасное отключение модулей. Нужно дополнить инструкцию.

Страница, на которой присутствует ошибка:
https://russianfedora.github.io/FAQ/package-manager.html#dnf-disable-modules

Подробно опишите её:
Эти команды безопасны только для систем в которых точно не устанавливались модульные пакеты. Если такие пакеты устанавливались, тогда нужно сначала удалить установленные из модулей пакеты, иначе они задовнгрейдятся/обновятся до актуальных версий из основных реп. Это опасная операция, т.к. версии из модулей обычно отличаются мажорной версией.

Фактически мы меняем модуль-стрим, а это рисковая и не очень поддерживаемя операция.
https://docs.fedoraproject.org/en-US/modularity/using-modules-switching-streams/

Я столкнулся с этим, когда использовал модули БД и интерпретаторов и чуть не поломал кучу всего.

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

Можно ли сделать так, чтобы подкачка использовалась лишь при исчерпании ОП?

Подробно опишите своё предложение:

Необходимо выполнить:

sudo sysctl -w vm.swappiness=10

На самом деле способность к обмену зависит также от vm.watermark_scale_factor.

При увеличенном vm.watermark_scale_factor подкачка прекрасно работает даже с нулевым swappiness.

Следует упомянуть, что снижение swappiness хотя и помогае откладывать до последнего начало подкачки, имеет своей побочкой ухудшение отзывчивости при стрессах, связанных с быстрыми выделениями памяти - с низким свопинес будет ниже объем чистых файловых страниц и выше давление IO

Можно ли сделать так, чтобы подкачка использовалась лишь при исчерпании ОП?

Скорее так:

sudo sysctl vm.swappiness=0
sudo sysctl vm.watermark_scale_factor=1

-- тогда действительно подкачка будет использоваться практически при исчерпании ОЗУ, но велик риск прихода киллера с началом подкачки.

Что будет если при отсутствующем разделе подкачки закончится память?

Подробно опишите своё предложение:

При критическом недостатке оперативной памяти будет задействован механизм ядра OOM Killer, который начнёт завершать самые ресурсоёмкие процессы. Работа системы при этом не будет нарушена.

При критическом недостатке оперативной памяти будет задействован механизм ядра OOM Killer

А может и не будет. Тем более без свопа - это ясно продемонстрировано Ташкиновым в 2019. И оомд без свопа не реагирует.

Правильный ответ - без свопа есть риск зависания после исчерпания чистых файловых страниц.

Без свопа крайне желательно иметь earlyoom или nohang - они предотвратят зависание.

Автоматически разблокируем LUKS диски при помощи TPM

Страница, на которой присутствует ошибка:
https://www.easycoding.org/2019/09/24/avtomaticheski-razblokiruem-luks-diski-pri-pomoshhi-tpm.html
Подробно опишите её:
В пункте "Проверка функциональности" допущена ошибка, из-за которой тестовая расшифровка происходит с ошибкой JWE is missing the required 'clevis.pin' header property!, а именно: вместо cat test.jwe | clevis decrypt tpm2 используется echo test.jwe | clevis decrypt tpm2 (на месте echo должен стоять cat)

контроль vm.dirty*

Укажите вопрос, ответ на который вы хотели бы видеть в FAQ:

Нужна инфа об этом: 12309 и варианты ограничения dirty. Может позже напишу подробнее. Пока так, чтоб не забыть.

Как произвести дефраментацию оперативной памяти?

Подробно опишите своё предложение:

Начиная примерно с ядра 5.9 включена проактивная дефрагментация

Ручки:

compaction_proactiveness

This tunable takes a value in the range [0, 100] with a default value of 20. This tunable determines how aggressively compaction is done in the background. Setting it to 0 disables proactive compaction.

Note that compaction has a non-trivial system-wide impact as pages belonging to different processes are moved around, which could also lead to latency spikes in unsuspecting applications. The kernel employs various heuristics to avoid wasting CPU cycles if it detects that proactive compaction is not being effective.

Be careful when setting it to extreme values like 100, as that may cause excessive background compaction activity.

https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/sysctl/vm.rst#compaction_proactiveness

У меня 8 ГБ памяти. Нужен ли мне раздел подкачки?

Подробно опишите своё предложение:

Для большинства сценариев использования на рабочих станциях 8 ГБ оперативной памяти будет вполне достаточно, поэтому раздел подкачки можно не создавать.

На самом деле подкачка крайне желательна практически при лоюбом размере оперативы.

См https://habr.com/ru/company/flant/blog/348324/ и https://chrisdown.name/2018/01/02/in-defence-of-swap.html

Во-вторых, 8 гиг очень мало для того чтобы не иметь свопа. Может при 64 гиг нормально не иметь подкачку, но не при 8 гигах. 8 гиг один браузер может выжрать.

Предлагаю ссылку на статью также добавить туда.

И да, в современной федоре своп на zram создает мало тормозов, так что бояться особо нечего.

И без свопа хуже работает юзерспейсный киллер. А оомд без свопа вовсе не рабортает.

Как изменить приоритет процесса?

Подробно опишите своё предложение:

nice - устаревшая тема и всерьез писать о nice без пояснений нельзя.

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

То есть если выполниим

nice -n 10 foo-bar

-- на самом деле приоритет процесса относительно процессов запущенных за пределами вкладки терминала не изменится.

Хочешь изменить приоритет автогруппы? Выполняй

echo 10 > /proc/self/autogroup

-- это изменит приоритет данной автогруппы относительно других автогрупп системы

См - https://www.opennet.ru/opennews/art.shtml?num=28671 - фиче уже 10 лет.

Также стоит упоминуть способ смены приоритета через systemd-run -P

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.