Русский
Русский
English
Статистика
Реклама

Blog

Перевод Создание блога с помощью Nuxt Content(часть первая)

11.10.2020 18:05:36 | Автор: admin

Создание блога на Nuxt Content


От переводчика: Я собирался сделать собственную статью по Nuxt Content, но наткнулся на готовую статью, которая отлично раскрывает тему. Лучше у меня вряд ли получится, поэтому я решил перевести. Написал автору в твиттер и практически сразу получил согласие. Статья будет с моими дополнениями для лучшего понимания темы.



Модуль Content в Nuxt это headless CMS основанной на git файловой системе, которая предоставляет мощные функции для создания блогов, документации или просто добавления контента на обычный сайт. В этой статье мы разберем большинство преимуществ этого модуля и узнаем как создать блог с его помощью.


Видео обзор готового проекта:


Your browser does not support HTML5 video.

Посмотреть Демо /
Код проекта



Начало работы


Установка


Чтобы начать работу с модулем Content, нам сначала нужно установить модуль с помощью npm или yarn.


yarn add @nuxt/content

npm install @nuxt/content

Затем мы добавим его в сборку модулей в файле nuxt.config.


export default {  modules: ['@nuxt/content']}

Если вы создаете новый проект с помощью create-nuxt-app, можете выбрать опцию добавить модуль Content, и он будет установлен.

Создаем страницу


Модуль Content читает файлы в нашем каталоге content/.


mkdir content

Если вы создали свой проект с помощью create-nuxt-app, каталог content/ будет уже создан.

Давайте создадим директорию articles/, куда мы сможем добавлять статьи для нашего блога.


mkdir content/articles

Модуль Content может анализировать markdown, csv, yaml, json, json5 или xml файлы. Давайте создадим нашу первую статью в markdown файле:


touch content/articles/my-first-blog-post.md

Теперь добавим заголовок и текст для нашего сообщения в блоге:


# My first blog postWelcome to my first blog post using content module

В markdown мы создаем заголовок <h1> с помощью значка #. Убедитесь, что вы оставили пробел между ним и заголовком вашего блога. Для получения дополнительной информации о записи в markdown стиле смотрите Руководство по основному синтаксису.

Отображение контента


Чтобы отобразить контент на странице, мы используем динамическую страницу, добавив к странице знак подчеркивания (_). Создав компонент страницы с именем _slug.vue внутри папки blog, мы можем использовать переменную params.slug, предоставляемую vue router, для получения имени каждой статьи.


touch pages/blog/_slug.vue

Затем используем asyncData в компоненте страницы для получения содержимого статьи до того, как страница будет отрисована. Мы можем получить доступ к контенту через context, используя переменную $content. Поскольку мы хотим получить динамическую страницу, нам также необходимо знать, какую статью нужно получить с помощью params.slug, который доступен нам через context.


<script>  export default {    async asyncData({ $content, params }) {      // fetch our article here    }  }</script>

Внутри асинхронной функции asyncData мы создаем переменную с именем article, которая принимает контент, используя await, за которым следует $content. Нужно передать в $content параметры того, что мы хотим получить, в нашем случае это папка articles и slag, который мы получаем из params. По цепочке в конце добавляем метод fetch, который возвращает нужную статью.


<script>  export default {    async asyncData({ $content, params }) {      const article = await $content('articles', params.slug).fetch()      return { article }    }  }</script>

Чтобы отобразить контент, используем компонент <nuxt-content />, передав переменную в параметр document. В этом примере мы заключили его в HTML тег article, согласно правилам семантического синтаксиса, но вы можете использовать div или другой тег HTML, если хотите.


<template>  <article>    <nuxt-content :document="article" />  </article></template>

Теперь мы можем запустить сервер разработки и перейти по маршруту http://localhost:3000/blog/my-first-blog-post. Мы должны увидеть контент из .md файла.


статья из файла my-first-blog-post.md


Введенные переменные по умолчанию


Модуль Content Nuxt дает нам доступ к введенным переменным, которые мы можем показать в нашем шаблоне. Давайте посмотрим на переменные по умолчанию, которые вводятся в документ:


  • body: содержимое документа
  • dir: директория
  • extension: расширение файла (.md в этом примере)
  • path: путь к файлу
  • slug: имя файла
  • toc: массив, содержащий оглавление
  • createdAt: дата создания файла
  • updatedAt: дата последнего изменения файла

Мы можем получить доступ ко всем этим переменным, используя созданную ранее переменную article. Article это объект, который содержит все эти дополнительные введенные переменные, к которым у нас есть доступ. Давайте проверим их, распечатав с помощью тега <pre>.


<pre> {{ article }} </pre>

Теперь на нашей странице мы видим, что у нас есть объект с переменной, которая представляет собой пустой массив, и переменную содержимого(body), которая включает все наши теги h1 и p, а также некоторую другую информацию, которую мы рассмотрим позже. Если мы прокрутим вниз, вы увидите все остальные переменные, к которым есть доступ.


"dir": "/articles","path": "/articles/my-first-blog-post","extension": ".md","slug": "my-first-blog-post","createdAt": "2020-06-22T10:58:51.640Z","updatedAt": "2020-06-22T10:59:27.863Z"

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


<p>Post last updated: {{ article.updatedAt }}</p>

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


methods: {    formatDate(date) {      const options = { year: 'numeric', month: 'long', day: 'numeric' }      return new Date(date).toLocaleDateString('en', options)    } }

А затем в нашем шаблоне мы можем использовать метод formatDate, принимающий дату, которую мы получаем из контента, и возвращающий уже отформатированную дату.


<p>Article last updated: {{ formatDate(article.updatedAt) }}</p>

Пользовательские введенные переменные


Мы также можем добавить пользовательские введенные переменные, добавив блок YAML в наш md файл. Он должен находиться в верхней части файла, иметь допустимый формат YAML и находиться между двумя тройными пунктирными линиями. Это полезно для добавления переменных SEO, таких как заголовок, описание и изображение вашей статьи.


---title: My first Blog Postdescription: Learning how to use @nuxt/content to create a blogimg: first-blog-post.jpgalt: my first blog post---

Теперь у нас есть переменные title, description, img и alt, к которым у нас есть доступ из объекта article`.


<template>  <article>    <h1>{{ article.title }}</h1>    <p>{{ article.description }}</p>    <img      :src="article.image"      :alt="article.alt"    />    <p>Article last updated: {{ formatDate(article.updatedAt) }}</p>    <nuxt-content :document="article" />  </article></template>

Чтобы отрендерить изображения, включенные в YAML разделе файла, нам нужно либо поместить их в статическую папку, либо использовать синтаксис:
:src="require(`~/assets/images/${article.image}`)".
Изображения, включенные в содержимое статьи, всегда следует помещать в папку static, поскольку @nuxt/content не зависит от Webpack. Эта папка не пропускается через Webpack, в отличие от папки assets.

Стилизация markdown контента


Если мы посмотрим на код получившейся страницы, мы увидим, что все, что написано внутри нашего файла, заключено в div с классом nuxt-content. Это означает, что мы можем легко добавить стили ко всем нашим элементам из нашего markdown файла, заключив их в класс nuxt-content.


<style>  .nuxt-content h2 {    font-weight: bold;    font-size: 28px;  }  .nuxt-content h3 {    font-weight: bold;    font-size: 22px;  }  .nuxt-content p {    margin-bottom: 20px;  }</style>

Чтобы использовать стили с ограниченной областью видимости с классом nuxt-content, вам необходимо использовать deep селектор: /deep/, ::v-deep или >>>


Все остальные данные, которые поступают из YAML раздела, можно оформить как обычно: используя TailwindCSS или добавив в CSS в стиль тега.


Наши теги из md файла преобразуются в правильные теги, что означает, что теперь у нас есть два заголовка, два тега <h1>. Удалим один из md файла.


Добавление иконки к ссылке наших заголовков


Обратите внимание, что внутри тега <h2> есть тег <a> с href, который содержит id для ссылки на себя, и тег span внутри него с icon и icon-link классы. Это полезно для ссылки на этот раздел страницы. Ссылки в заголовках пусты и поэтому скрыты, поэтому давайте добавим им стиль. Используя классы значков, мы можем добавить svg-иконки в качестве фонового изображения для нашего значка. Сначала вам нужно будет добавить сами иконки в папку с ресурсами assets. В этом примере я добавила его в папку svg и взяла иконки Steve Schoger's Hero Icons.


.icon.icon-link {  background-image: url('~assets/svg/icon-hashtag.svg');  display: inline-block;  width: 20px;  height: 20px;  background-size: 20px 20px;}

Добавляем оглавление


Сгенерированная переменная toc позволяет нам добавить оглавление к нашему посту в блоге. Давайте добавим заголовки к нашему сообщению в блоге.


## This is a headingThis is some more info## This is another headingThis is some more info

Теперь мы можем видеть эти новые заголовки внутри массива toc с идентификатором, глубиной и текстом. Значение глубины является значением тега заголовка, поэтому значение глубины 2 приравнено тегу <h2> и равно 2, значение 3 тегу<h3> и т. д.


## This is a headingThis is some more info### This is a sub headingThis is some more info### This is another sub headingThis is some more info## This is another headingThis is some more info

Поскольку у нас есть доступ к toc и тексту, мы можем перебрать и отобразить их все, а в компоненте <NuxtLink> сделать ссылку на якорь раздела, на который мы хотим создать ссылку.


<nav>  <ul>    <li v-for="link of article.toc" :key="link.id">      <NuxtLink :to="`#${link.id}`">{{ link.text }}</NuxtLink>    </li>  </ul></nav>

Теперь ссылки ToC работают, и нажатие на любую из них приведет нас к нужной части документа. Модуль Content автоматически добавляет идентификатор и ссылку к каждому заголовку. Если мы проверим один из заголовков из нашего .md файла в инструментах разработки браузера, мы увидим, что у нашего тега <h2> есть идентификатор. Это тот же идентификатор, который находится в toc, который по сути из него и берется для ссылки на правильный заголовок.


Мы можем улучшить верстку дальше, используя динамические классы для стилизации классов заголовков в зависимости от глубины заголовка, которую мы можем добавить в наш тег nuxt-link. Если ссылка имеет глубину 2, добавьте отступ по оси y, а если глубина равна 3, добавьте поле слева и отступ внизу. Здесь мы используем классы TailwindCSS, но, конечно же, можно использовать собственные имена и стили классов.


:class="{ 'py-2': link.depth === 2, 'ml-2 pb-2': link.depth === 3 }"

Использование HTML в .md файлах


Иногда нам может понадобиться добавить HTML в наши файлы c разметкой. Давайте добавим div с некоторыми классами, чтобы он имел синий цвет фона с белым текстом, небольшим отступом и нижним краем.


<div class="bg-blue-500 text-white p-4 mb-4">  This is HTML inside markdown that has a class of note</div>

Добавление Vue компонента


А также мы можем добавлять Vue компоненты в .md файлы. Это означает, что если мы множество раз используем такие компоненты, как информационное окно или окно предупреждения, мы можем создать его с нужными нам стилями и передать текст в слот.


Теперь мы можем добавлять компоненты в наше приложение, установив для свойства components значение true в нашем файле nuxt.config. (начиная с v2.13)


export default {  components: true}

Автоматический импорт компонентов не будет работать для <nuxt-content>, если мы не зарегистрируем их глобально, добавив глобальную папку внутри папки компонентов.


mkdir components/global

А теперь можно создать наш компонент InfoBox внутри этой папки.


<template>  <div class="bg-blue-500 text-white p-4 mb-4">    <p><slot name="info-box">default</slot></p>  </div></template>

Теперь в нашей разметке эти компоненты будут доступны без необходимости их импорта.


<info-box>  <template #info-box>    This is a vue component inside markdown using slots  </template></info-box>

Глобальные компоненты будут доступны для всего нашего приложения, поэтому будьте осторожны при добавлении компонентов в эту папку. Это работает иначе, чем добавление компонентов в папку components, которые добавляются (наверное, имеется в виду импортируются прим. пер.) только в том случае, если они используются (начиная с Nuxt v2.13 компоненты в папке components импортируются автоматически, достаточно написать в Nuxt конфиге: components: true прим. пер.).



От переводчика: На этом первая часть статьи подошла к концу. Дебби познакомила нас с мощным инструментом от создателей Nuxt'а, который они, кстати, сами используют на своем сайте для документации фреймворка. В этом, в общем-то, основное его применение. Если вы думали, что наконец-то нашли простую CMS, на которой можно быстро шлепать проекты и отдавать заказчику, то это не так. Из-за git-подобной системы наполнения контента, проект должен всегда быть под контролем разработчиков. Она идеальна для документации инструментов разработки, и любого другого контента не требующего частого обновления. Если же контент должен динамически обновляться из-за действий пользователей, то тут без базы данных не обойтись.


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


Продолжение следует...

Подробнее..

Из песочницы Data Science блог с помощью fastpages

14.07.2020 12:05:49 | Автор: admin

Как запустить свой DS/ML/AI/Tech блог с минимумом сложностей связанных с хостингом и деплойем этого блога.


В конце февраля 2020 года ребята из fast.ai представили миру fastpages платформу для ведения блога. Отмечу, что fastpages основан на Jekyll, о котором на Хабре есть множество постов.


Примером блога на движке fastpages является данный блог.


Главное отличительная черта и преимущество fastpages состоит в поддерживаемых из коробки форматах постов:


  • Jupyter ноутбуки (расширение .ipynb);
  • Markdown файлы (расширение .md);
  • Word файлы (расширение .docx)

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


  • './_notebooks/' для .ipynb;
  • './_posts/' для .md;
  • './_word/' для .docx.

А все остальное сделает fastpages, как утверждают его авторы.


fastpages использует Github Pages для хостинга и Github Actions для автоматизации публикации постов.


Как я понимаю, fastpages является доработкой связки Github Pages + Jekyll, где можно сразу же из Jupyter ноутбука получить опубликованный пост.


Создание блога с помощью fastpages и GitHub


Если хотите самостоятельно разобраться, то вот официальная инструкция по настройке в репозитории fastpages.


Процесс настройки fastpages:


  1. Создать собственную копию репозитория из шаблона fastpages по ссылке

    image
  2. Далее автоматически откроется pull request (через ~ 30 секунд), который отвечает за настройку вашего блога, чтобы он мог начать работать.

    image
  3. Вам нужно выполнить инструкции из полученного pull request'a и вы получите свою собственную уже работающую платформу для блога.

Видео туториал



Настройка блога


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


  • title название вашего блога, которое отображается в верхнем левом углу на каждой странице;


  • description описание, которое будет отображаться в разных местах при предварительном просмотре вашего сайта (например, в социальных сетях);


  • github_username позволяет вашему сайту отображать ссылку на вашу страницу GitHub в нижнем колонтитуле;


  • github_repo позволяет вашему сайту отображать ссылки на ваш репозиторий для различных функций, таких как ссылки на GitHub, Google Colab и Binder для Jupyter ноутбуков;


  • default_badges по умолчанию ссылки GitHub, Google Colab и Binder будут отображаться в постах созданных из Jupyter ноутбуков. Вы можете задать, какие из них будут отображаться по умолчанию, установив для соответствующего значения в default_badges значение true или false. Например, если вы хотите отключить ссылки на Binder, вы должны поправить default_badges:


    default_badges:github: truebinder: falsecolab: true
    

  • url это не нужно менять, если у вас нет собственного домена;


  • baseurl см. комментарии в /_config.yml для получения инструкций ("Special Instructions for baseurl"). Если у вас нет настраиваемого домена, вы можете игнорировать эту опцию;


  • twitter_username создает ссылку в нижнем колонтитуле на страницу Twitter;


  • use_math установите значение true, чтобы получить поддержку математических формул LaTeX;


  • show_description отображает на домашней странице описание под заголовком ваших постов в блоге. По умолчанию установлено значение true;


  • google_analytics опционально можно использовать идентификатор Google Analytics;


  • pagination максимальное количество постов, отображаемых на каждой странице вашей домашней страницы. Значение по умолчанию равно 15. Когда число постов превысит заданное значение, тогда произойдет разбивка на страницы, которая выглядит так:
    image


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

    image


  • show_image при значении true включается возможность добавления изображений к постам на домашней странице. Выглядит следующим образом (первые 2 поста сопровождаются изображениями):

    image



Публикация постов из .ipynb с помощью fastpages


  1. Сохраните исходный файл вашего поста (в одном из форматов: .ipynb, .md или .docx) в соответствующей папке репозитория (./_notebooks, ./_posts или ./_word). Пример имени для поста 2020-05-26-DS-fastpages-blog.ipynb. Такое наименование является необходимым для отображения поста движком Jekyll (больше деталей).
    Важные аспекты наименования постов:
    • Вначале имени поста указывается дата в формате YYYY-MM-DD-;
    • Символ, следующий сразу за тире, должен быть буквой алфавита.
  2. Сделайте commit и push ваших файлов на удаленный репозиторий GitHub в ветку master.
  3. GitHub автоматически конвертирует ваши файлы в посты блога. Процесс конвертации займет ~5 минут. Можно перейти на вкладку Actions в репозитории на GitHub. Вы увидите три workflow, которые запускаются при каждом push в ветку master:
    • Check Configurations процесс проверки ваших файлов (например, ссылок на изображения), перед обновлением контента в блоге;
    • CI процесс непрерывного деплоя вашего блога;
    • GH Pages Status процесс проверки доступа к блогу.
      Если эти процессы завершаются зеленой галочкой для последнего коммита, то сайт блога успешно обновился.
  4. Для предварительного локального просмотра того, как ваш блог будет выглядеть, см. этот раздел.
    Ниже представлены различные возможности форматирования, которые fastpages поддерживает из коробки.

Возможности форматирования постов


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


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


# "Title"> "Awesome summary"- toc: true- branch: master- badges: true- comments: true- author: Hamel Husain & Jeremy Howard- categories: [fastpages, jupyter]

Для указания таких в Markdown файлах необходимо в начале файла задать опции как и в ноутбуке, только поместив эти метаданные между строк содержащих по три минуса, т.е. ---.


Выглядит это так:


---title: "Title"description: "Awesome description"toc: truelayout: postcategories: [markdown]---

Все, что определено в начале поста, должно соответствовать YAML разметке. Поэтому если вы хотите использовать двоеточие в заголовке, вы должны экранировать его двойными кавычками: - title: "Deep learning: A tutorial"


Для большего понимания советую ознакомиться с туториалом по YAML.


Перечень управляющих конструкций для форматирования поста (взято отсюда):


  • toc при значении true автоматически будет сгенерировано оглавление поста из заголовков, обозначенных Markdown разметкой;
  • badges [notebooks only] при значении true отображаются ссылки Google Colab, Binder и GitHub, не работает при приватном репозитории;
  • hide_github_badge [notebooks only] при значении true скроет ссылку на GitHub;
  • hide_colab_badge [notebooks only] при значении true скроет ссылку на Google Colab;
  • hide_binder_badge [notebooks only] при значении true скроет ссылку на Binder;
  • branch [notebooks only] используется для дополнительной ссылки на ваш Jupyter ноутбук на Colab и GitHub. Значение по умолчанию: master;
  • comments при значении true будут включены комментарии (больше деталей);
  • author при значении true отображаются имена авторов;
  • categories позволяют группировать посты по тегам (на странице "Tags").
  • image задает изображение для поста, которое будет отображаться на главной странице блога и в соц. сетях (Twitter) вместе с ссылкой на пост:
    • пример задания изображения к посту images/figure.png;
    • изображение обязательно должно находиться внутри папке /images вашего репозитория;
  • search_exclude позволяет скрывать пост в поиске блога (страница Search), стоит заменить, поиск работает только с латиницей;
  • hide при значении true пост будет скрыт на главной странице блога, но будет доступен по прямой ссылке:
    • рекомендуется использовать permalinks для создания предсказуемых ссылок на сам пост;
    • если search_exclude будет иметь значение true, то пост можно будет найти через поиск блога (страница Search);
  • sticky_rank позволяет закрепить пост на конкретной позиции, задав ему порядковый номер. Если двум постам задать одинаковый номер, то между собой они будут отсортированы по дате.

Скрытие и сворачивание кода


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


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


  • #hide скрывает как ввод, так и вывод текущей ячейки;
  • #hide_input скрывает только ввод текущей ячейки;
  • #collapse-hide скрывает код этой ячейки внутри поста, но добавляет кнопку, позволяющую показать эту ячейку;
  • #collapse-show добавляет кнопку, позволяющую показать эту ячейку.

Интерактивные графики с помощью Altair


Графики построенные с помощью библиотеки Altair внутри поста остаются интерактивными как в ноутбуке. Для проверки интерактивности опять же см. мой пост.


Отображение таблиц


Таблицы в опубликованных постах отображаются примерно как и в Jupyter ноутбуках.
image


Вставка изображений


Вы можете добавлять изображения с подписями следующим образом:


![](http://personeltest.ru/aways/www.fast.ai/images/fastai_paper/show_batch.png "Credit: https://www.fast.ai/2020/02/13/fastai-A-Layered-API-for-Deep-Learning/")

Результат выглядит так:
image


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


Анимированные гифки


Гифки вставляются как изображения и полноценно отображаются в постах.



Видео Youtube


Чтобы красиво вставить видео с Youtube достаточно использовать конструкцию:


> youtube: https://youtu.be/L0boq3zqazI

Посты из Twitter


Есть возможность отображать посты из Twitter.


Например, ссылка на этот пост


> twitter: https://twitter.com/jakevdp/status/1204765621767901185?s=20

отобразит следующее:
image


LaTeX формулы


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


Следующий LaTeX код:


> $$L(\theta) = \frac{1}{N} \sum_i^N{(y_i - \hat{y_i})^2} \rightarrow \min_{\theta}$$

будет отображен таким образом:


$$display$$L(\theta) = \frac{1}{N} \sum_i^N{(y_i - \hat{y_i})^2} \rightarrow \min_{\theta}$$display$$


Примечания


Есть возможность отображать примечания различных типов.


Предупреждение: > Warning: There will be no second warning!

image
Важно: > Important: Pay attention! It's important.

image
Подсказка: > Tip: This is my tip.

image
Заметка: > Note: Take note of this.

image


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


> Note: A doc link to [an example website: fast.ai](http://personeltest.ru/aways/www.fast.ai/) should also work fine.

отобразится так:
image


Отображение Emoji


Если написать


Сейчас будет эмоджи :robot:.

то получится:
Сейчас будет эмоджи :robot:.


Шпаргалка по Emoji.


Сноски


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


{% raw %}For example, here is a footnote {% fn 1 %}.And another {% fn 2 %}{{ 'This is the footnote.' | fndetail: 1 }}{{ 'This is the other footnote. You can even have a [link](http://personeltest.ru/aways/fastpages.fast.ai/jupyter/2020/02/20/test.html#Footnotes)' | fndetail: 2 }}{% endraw %}

image


Как fastpages конвертирует исходные файлы посты


Для этого fastpages использует nbdev для преобразования jupyter ноутбуков, word и .md файлов в посты блога. После того, как вы сохраните исходные файлы своих постов в папках /_notebooks, /_word или /_posts, то GitHub Actions c помощью nbdev автоматически преобразует их в конечный вид, в котором посты отображаются на сайте вашего блога.


fast_template младший брат fastpages


Стоит упомянуть, что ранее fast.ai выпустили аналогичный проект под названием fast_template, который еще проще в настройке, но не поддерживает автоматическое создание постов из Word и Jupyter файлов, а также многие другие функции перечисленные выше. Поскольку fastpages более гибок и расширяем, его авторы рекомендуют использовать его там, где это возможно.


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


Плюсы и минусы


Что понравилось


  • простота создания и размещения блога и публикации контента;
  • возможность публиковать Jupyter ноутбуки в качестве постов + удобства оформления:
    • поддержка отображения интерактивных графиков;
    • скрытие/сворачивание кода;
    • поддержка отображения GIF-анимации;
    • интеграция видео с youtube и тд.
  • нет зависимости от сторонней платформы по типу Medium;
  • возможность разместить блог по собственному url;
  • параметр badges в метаинформации к посту позволяет прикрепить ссылки на GitHub, Binder, Google Colab, что позволяет сразу перейти от поста к коду и его исполнению;
  • комментарии для блога из коробки;
  • возможность прикрепить пост на конкретную позицию на общей странице с помощью sticky_rank, смотреть тут;
  • отсутствие сторонней рекламы;

Что не понравилось или вызывало вопросы


  • непонятно, как сделать структурированный блог с вложенностью:
    • возможное решение permalinks;
    • структура нужна для объединения нескольких постов общей темой;
    • хочется структуру, чтобы в одной директорий хранить все, что связанно с постом (данные, изображения для ноутбуков) в одной папке, а не искать их в куче общих файлов и не городить какую-то структуру в этих общих для всех постов папках.
  • нет WYSIWYG (What You See Is What You Get):
  • в Jekyll в заголовке и описании поста не поддерживаются обратные кавычки, квадратные скобки и тд.
  • Jekyll подразумевает использование git для публикации постов;
  • целесообразность хранения Jupyter ноутбуков в репозитории под вопросом;
  • непонятно, как привязать spell checker для Jupyter ноутбуков.

Резюме


Команда fast.ai предложили DS сообществу интересный и достаточно функциональный инструмент для ведения блога, автору которого остается думать только о том, какой контент публиковать.


Сложность использования практически минимальная, нужны базовые знания git, разметки Markdown и Jupyter Notebook. И никаких проблем с тем, как и где хостить и деплоить сам блог.


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


В заключение хочу сказать, что сам пользуюсь и всем советую.


DS/ML/AI блоги



Блоги компаний



Полезные ссылки


Подробнее..

Перевод 20 самых популярных блогов и новостных сайтов по компьютерному зрению в 2020 г

25.09.2020 16:06:58 | Автор: admin
Всем привет. В преддверии старта курса Компьютерное зрение подготовили для вас полезный перевод.





1. Learn OpenCV Сатья Маллик



Сан-Диего, Калифорния

О блоге: Этот блог предназначен для программистов, инженеров, хакеров, ученых, студентов и энтузиастов, которые интересуется компьютерным зрением и машинным обучением. Здесь вы можете освоить компьютерное зрение, машинное обучение и обработку изображений с помощью руководств по OpenCV, CUDA, Caffe и примеров написанных на C и Python.

Частота публикаций: 2 поста в неделю

Блог: Learnopencv.com

Подписчиков в Twitter 10,7 тыс. Вовлеченность в соцсетях 51 Авторитетность сайта 48 Рейтинг Alexa 81,7 тыс.

2. Piekniewski's Blog (Блог Пикневски)



Сан-Диего, Калифорния

О блоге: Филип Пикневски ученый-исследователь, занимающийся компьютерным зрением и искусственным интеллектом. Главная цель его исследовательских работ привнести динамику в машинное обучение, где сейчас безраздельно доминирует статистика.

Частота публикаций: 1 пост в квартал

Блог: blog.piekniewski.info

Подписчиков в Twitter 3.5K Вовлеченность в соцсетях 64 Авторитетность сайта 45 Рейтинг Alexa 1.5 млн.

3. Zbigatron Збигнев Здзярски



Сидней, Новый Южный Уэльс

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

Частота публикаций: 2 поста в квартал

Блог: zbigatron.com

Подписчиков в Twitter 138 Авторитетность сайта 21

4. OpenCV library



О блоге: Фонд OpenCV это некоммерческий фонд, целью которого является развитие компьютерного зрения с помощью программного обеспечения (в основном посредством библиотеки OpenCV) и остальных непрограммных методов, например, организации мероприятий.

Блог: opencv.org

Подписчиков в Facebook 5,2 тыс. Подписчиков в Twitter 10,2 тыс. Вовлеченность в соцсетях 314 Авторитетность сайта 68 Рейтинг Alexa 17,5 тыс.

5. Computer Vision: doing stuff with pixels | Reddit (Компьютерное зрение: делаем что-то с пикселями)



Сан-Франциско, Калифорния

О блоге: Сабреддит про компьютерное зрение.

Частота публикаций: 6 постов в день

Блог: old.reddit.com/r/computervision

Подписчиков в Facebook 1,3 млн Подписчиков в Twitter 674,7 тыс. Подписчики в Instagram 462,1 тыс. Вовлеченность в соцсетях 1 Авторитетность сайта 91 Рейтинг Alexa 17

6. CV-Tricks.com




Бангалор, Индия

О блоге: CV-Tricks фокусирует свое внимание на различных приемах и хитростях в компьютерном зрении. В этом блоге вы найдете практические советы, приемы и методы, используемые для создания решений компьютерного зрения мирового уровня.

Частота публикаций: 1 пост месяц

Блог: cv-tricks.com

Подписчиков в Twitter 552 Вовлеченность в соцсетях 43 Авторитетность сайта 41 Рейтинг Alexa 552,4 тыс.

7. LDV Capital Blog



Нью-Йорк, штат Нью-Йорк

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

Частота публикаций: 1 пост в неделю
Блог: ldv.co/blog

Подписчиков в Facebook 268 Подписчиков в Twitter 4 тыс. Вовлеченность в соцсетях 17 Авторитетность сайта 45 Рейтинг Alexa 1,5 млн.

8. Блог Machine Vision



Тейм, Великобритания

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

Частота публикаций: 1 пост в квартал

Блог: clearviewimaging.co.uk/blog

Подписчиков в Facebook 16 Подписчиков в Twitter 136 Авторитетность сайта 25 Рейтинг Alexa 8,6 млн.

9. UCF CRCV | Youtube




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

Частота публикаций: 5 видео в неделю

Блог: youtube.com/user/UCFCRCV
Подписчиков в Facebook 646 Подписчиков в Twitter 80 Авторитетность сайта 100 Рейтинг Alexa 2

10. The Xiris Blog



Берлингтон, Онтарио, Канада

О блоге: Xiris Automation Inc. специализируется на разработке оптического метрологического оборудования (от камер до умных компьютеров), используемого для контроля процессов и качества в ряде специализированных отраслей.

Частота публикаций: 2 поста в месяц

Блог: blog.xiris.com/blog

Подписчиков в Facebook 58 Подписчиков в Twitter 303 Подписчиков в Instagram 465 Вовлеченность в соцсетях 1 Авторитетность сайта 25

11. the Serious Computer Vision Blog (серьезный блог о компьютерном зрении)



Тайвань

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

Частота публикаций: 1 пост в неделю

Блог: computervisionblog.wordpress

Подписчиков в Twitter 163 Вовлеченность в соцсетях 4 Авторитетность сайта 28

12. Eastern European Conference on Computer Vision (EECVC Восточно-европейская конференция по компьютерному зрению)



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

Частота публикаций: 1 пост в месяц

Блог: eecvc.com/blog-1-column

Подписчиков в Facebook 265 Вовлеченность в соцсетях 87 Авторитетность сайта 24

13. Embedded Vision Alliance



Уолнат-Крик, Калифорния

О блоге: Основная цель Embedded Vision Alliance вдохновлять и расширять возможности создателей аппаратного и программного обеспечения для использования технологий компьютерного зрения.

Частота публикаций: 17 постов в год

Блог: embedded-vision.com/industry

Подписчиков в Facebook 2,1 тыс. Вовлеченность в соцсетях 4 Авторитетность сайта 49

14. Dov Katz: Computer Vision (Дов Кац: Компьютерное зрение)



О блоге: Блог Дова Каца о компьютерном зрении, машинном обучении и человеческом восприятии.

Блог: dovkatz.wordpress.com

Подписчиков в Twitter 11 Авторитетность сайта 3

15. RSIP Vision



О блоге: RSIP Vision, управляемый Роном Соферманом, является признанным лидером в области компьютерного зрения и обработки изображений. Здесь приведен раздел со статьями RSIP Vision о проектах и работах в области компьютерного зрения и обработки изображений.

Частота публикаций: 10 постов в год

Блог: rsipvision.com/category/rsip

Подписчиков в Twitter 1,5 тыс. Вовлеченность в соцсетях 13 Авторитетность сайта 42 Рейтинг Alexa 1,3 млн.

16. Блог Kairos | Последние новости в области человеческой аналитики



Майами, Флорида

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

Блог: kairos.com/blog

Подписчиков в Twitter 4.6 тыс. Авторитетность сайта 55 Рейтинг Alexa 219.3 тыс.

17. iMerit



Сан Франциско, Калифорния

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

Частота публикаций: 2 поста в месяц

Блог: imerit.net/blog

Подписчиков в Facebook 1,6 тыс. Подписчиков в Twitter 955 Авторитетность сайта 37 Рейтинг Alexa 273,7 тыс.

18. Computer Vision News (Новости компьютерного зрения)



О блоге: Здесь вы найдете все события и академические вакансии в рамках области компьютерного зрения, анализа изображений и анализа медицинских изображений, собранных из различных списков рассылки и каналов.

Блог: computervisionnews.wordpress

Подписчиков в Twitter 6,2 тыс. Авторитетность сайта 16

19. Блог Playment



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

Частота публикаций: 2 поста в год

Также присутствует в: Блоги по искусственному интеллекту

Блог: blog.playment.io

Подписчиков в Facebook 1,6 тыс. Подписчиков в Twitter 896 Авторитетность сайта 35 Рейтинг Alexa 144,1 тыс.

20. Cortexica



Лондон / Сан Франциско

О блоге: Cortexica, базирующаяся в Лондоне глобальный поставщик решений B2B AI для сферы цифровой трансформации (Digital Transformation). Внося ясность и понимание в шум вокруг ИИ, Cortexica работает с ведущими мировыми брендами, предоставляющими программные системы компьютерного зрения, машинного обучения и видеоаналитики, предоставляя спектр отраслевых профессиональных услуг.

Частота публикаций: 5 постов в год

Блог: cortexica.com

Подписчиков в Facebook 1,1 тыс. Подписчиков в 3,7 тыс. Авторитетность сайта 43

21. Alex Kendall Blog (Блог Алекса Кендалла)




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

Блог: alexgkendall.com/blog

Подписчиков в Twitter 3,9 тыс. Вовлеченность в соцсетях 93 Авторитетность сайта 33 Рейтинг Alexa 4,3 млн.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru