Статьи

Sourcehunt — создайте среднего экспортера + классные новые либы!

Пришло время для нашей ежемесячной охоты на новые библиотеки с открытым исходным кодом, чтобы использовать и вносить свой вклад !

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

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

Sourcehunt логотип

У нас было много фантастических представлений в этом месяце, так что давайте окунемся!


rethinkphp / json-validator [28 ★]

Json Validator, который разработан, чтобы быть элегантным и простым в использовании.

Созданный автором платформы Blink , единственная цель json-validator — убедиться, что структура данных соответствует предопределенной спецификации. В настоящее время он поддерживает int, double, bool, string, number, array и object, но также позволяет вам определять полностью настраиваемые типы, например:

$validator->defineType('User', [
    'name' => 'string',
    'gender' => 'string',
    'age' => '?integer',
]);

Вы также можете определить их в вызываемых:

 $validator->defineType('timestamp', function ($value) {
    if ((!is_string($value) && !is_numeric($value)) || strtotime($value) === false) {
        return false;
    }

    $date = date_parse($value);

    return checkdate($date['month'], $date['day'], $date['year']);
});

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


Nerdmind / Блог [20 ★]

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

Для автора это похоже на опыт обучения, так почему бы не вмешаться, выявить некоторые проблемы (множество антипаттернов сразу) и, возможно, исправить некоторые из них, пока вы занимаетесь этим? Возможно, вы оба можете извлечь уроки из опыта.


violet-php / streaming-json-encoder [125 ★]

Этот потоковый кодер JSON позволяет обрабатывать и отправлять большие файлы JSON, не выходя за пределы памяти. Как описано в README:

Потоковое кодирование JSON Encoder — это библиотека PHP, которая предоставляет набор классов, помогающих кодировать JSON в потоковом режиме, то есть позволяет кодировать документ JSON по битам, а не кодировать весь документ сразу. По сравнению со встроенной функцией json_encode, есть два основных преимущества:

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

Он также предоставляет PSR-7-совместимый поток для таких платформ.

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


dsentker / phpinsights [2 ★]

Эта простая, но эффективная оболочка для Google PageSpeed ​​Insights невероятно полезна для тестирования конвейеров, когда вы хотите отслеживать оценку скорости страницы во времени или фиксировать.

 $uri = 'http://example.com';
$caller = new \PhpInsights\InsightsCaller('your-google-api-key-here', 'de');
$response = $caller->getResponse($uri, \PhpInsights\InsightsCaller::STRATEGY_MOBILE);
$result = $response->getMappedResult();

var_dump($result->getSpeedScore()); // 100 
var_dump($result->getUsabilityScore()); // 100 

Обратите внимание, что вам нужно получить ключ API из консоли Google Dev, прежде чем вы сможете его использовать.

Сейчас нужно больше тестов, поэтому, если ваше TDD-фу слабое, у вас есть шанс обновить его!


Lazychaser / Laravel-Nestedset [847 ★]

Уже довольно популярная библиотека laravel-nestedset предоставляет пользователям Laravel очень доступное и невероятно универсальное решение для работы со вложенными наборами.

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

Библиотека богата функциональными возможностями, включая, но не ограничиваясь, обратное извлечение дерева, добавление и добавление к любому родительскому уровню, работа с братьями и сестрами, выравнивание и многое другое.

Сейчас у него есть 15 вопросов, которые требуют внимания — иди и протяни им руку, если сможешь, ладно?


jmespath / jmespath.php [238 ★]

Пока мы находимся в поезде JSON, давайте сядем в этот вагон.

Этот пакет, созданный Майклом Даулингом из Guzzle Fame, позволяет вам « декларативно указывать, как извлекать элементы из документа JSON ». Вот что это значит в коде:

 $expression = 'foo.*.baz';

$data = [
    'foo' => [
        'bar' => ['baz' => 1],
        'bam' => ['baz' => 2],
        'boo' => ['baz' => 3]
    ]
];

JmesPath\search($expression, $data);
// Returns: [1, 2, 3]

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

Есть некоторые нерешенные вопросы и запросы на получение, которые можно посмотреть, но мы больше заинтересованы в том, чтобы платить вам за сложные примеры использования . Нырнуть в!


lubusIN / Laravel-разложитель [182 ★]

Как вкратце изложил README:

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

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

Я вижу, что это особенно полезно в контекстах CMS на основе Laravel, где плагины и другие детали могут быть скрыты под сотнями других пакетов.

На дорожной карте есть некоторые задачи , так что иди и возьми!


затягивать / головоломки [532 ★]

Генератор статического сайта, работающий от Laravel’s Blade . Jigsaw похож на Sculpin или Spress , но построен на Laravel, а не на Symfony, что означает поддержку плагинов и синтаксиса Blade, а также эликсир для создания ресурсов. Jigsaw также поддерживает Markdown, как и его конкуренты.

Есть некоторые проблемы и PR, о которых нужно позаботиться, и их документация также отсутствует, так что доберитесь до этого! Кроме того, нам нужны некоторые уроки об этом !


slevomat / coding-standard [93 ★]

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

Было бы бесполезно перечислять их всех здесь, когда они так хорошо описаны в README — иди проверь! Фырканье носит выборочный характер, поэтому вы можете не использовать те, которые не относятся к вашему проекту. Большинство, однако, очень удобные кросс-проектные правила, которые каждая профессиональная команда разработчиков должна с готовностью применять.

Начните с него и добавьте его в свою среду разработки и тестирующий конвейер сегодня


BrainMaestro / composer-git-hooks [95 ★]

Легко управляйте ловушками в вашей конфигурации композитора. Этот пакет позволяет легко реализовать последовательное использование git-хуков в рамках проекта. Задание хуков в файле композитора делает их доступными для каждого члена команды проекта. Это обеспечивает согласованную среду и поведение для всех.

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

Этот пакет значительно облегчает их обслуживание и управление.


Вот и все на март. Нашли что-нибудь, во что вы могли бы погрузить зубы?

Как всегда, пожалуйста, напишите нам свои ссылки с хэштегом #sourcehunt ! Если вы создаете что-то с помощью проектов, о которых мы упоминали, или если вы отправляете сложный запрос на извлечение, о котором хотите поговорить, напишите нам, и мы позаботимся о том, чтобы об этом знал весь мир!

Как и в прошлый раз (кстати, этот вызов остается невостребованным — для вас есть 500 долларов, если вы это сделаете!), Мы используем указанные выше пакеты для вдохновения при создании потенциально полезного приложения:

Идея месяца для App + Tutorial: создайте приложение, которое принимает экспорт данных Medium в формате zip, обрабатывает его внутренне, превращает в JSON с помощью библиотеки Streaming JSON и проверяет этот JSON с помощью валидатора, а затем преобразует этот JSON в формат может использоваться NerdMind / Blog или TigthenCo / Jigsaw (пользователь выбирает). Проект должен быть прослушан с помощью Slevomat / coding-standard, предпочтительно автоматически, и должен быть пользовательский интерфейс, в котором пользователи могут загрузить вышеупомянутый формат JSON (снова используйте Streaming lib) и применить выражения извлечения с jmespath.php, чтобы получить некоторые данные вышли Свяжитесь, чтобы узнать, сколько это стоит для нас!

Удачного кодирования!