Awesome-лист своими руками, или GitHub вместо блокнота
Привет, Хабр! Наверное, у каждого из нас есть такой файлик, куда мы припрятываем что-то полезное и интересное для себя. Какие-то ссылки на статьи, книги, репозитории, мануалы. Это могут быть закладки в браузере или даже просто открытые вкладки, оставленные на потом. Со временем все это разбухает, ссылки перестают открываться, а большая часть материалов просто устаревает.
А что если поделиться этой годнотой с сообществом и выложить этот файлик на гитхаб? Тогда ваши труды могут быть полезны еще кому-нибудь, а поддерживать актуальность можно совместно, принимая обновления от желающих через старые добрые PR’ы. Именно для этого предназначен проект Awesome lists. Он входит в ТОП-10 репозиториев гитхаба, обладает 138К звезд, и ссылка на ваши труды может оказаться прямо в его корневом README, что привлечет огромную аудиторию к вашему творчеству. Правда, для этого придется немного постараться. О моем опыте таких стараний хочу поделиться с вами.
Меня зовут Максим Грамин. В КРОК занимаюсь Java-разработкой и исследованиями в области БД. В этом посте я расскажу, что такое Awesome Lists и как сделать свой настоящий официальный awesome-репо.
Что такое Awesome Lists
Когда мне предстоит разобраться с какой-нибудь новой технологией или языком программирования, то я первым делом иду именно сюда — нахожу нужный раздел, а в нем подходящие листы. И судя по количеству звезд и их постоянному росту, так делаю не только я.
На самом деле — это обычный плоский readme.md, который живет в отдельном репозитории, занимает при этом 8-е место среди всех репозиториев GitHub’а и включает ссылки на другие листы, посвященные какой-либо тематике. Например в разделе Programming Languages можно найти листы Awesome Python и Awesome Go, а в Front-End Development есть огромное количество ресурсов по WEB-разработке. Ну и, конечно же, — раздел Databases (к нему мы еще вернемся чуть позже). И да, все это не ограничивается только техническими темами. Например, в разделах Entertainment и Gaming тоже можно найти много чего интересного (меня лично порадовал awesome-fantasy).
Главная особенность состоит в том, что все эти листы ведутся не лично автором, а сообществом и составлены в соответствии со специальным и очень строгим awesome manifesto. Каждый такой лист является самостоятельным сообществом специалистов, живет своей жизнью и открыт для ваших pull request’ов, которые сделают его еще лучше. А также любой желающий может сделать свой собственный лист, если какая-то тема еще не была освещена.
Автор идеи и координатор всего этого хозяйства — легендарный Синдре Сорхус, первый человек на GitHub’е, автор более 1000 npm-модулей, и именно он будет принимать ваши PR-ы.
Как попасть в awesome-list
Если вдруг вы не нашли подходящего листа на интересующую вас тему, то это первый признак того, что его нужно сделать самому!
Расскажу на примере своего детища Awesome Database Tools — Из проекта в проект мне приходится работать с самыми разными базами данных, и поэтому у меня завелся такой файлик, в котором я собирал полезные тулзы для работы с ними, всякие БД-миграторы, IDE-шки, админ-панели, средства мониторинга и всякое разное. Инструменты, которые я уже использовал, или только планировал начать применять. Делился я этим файликом с коллегами в КРОК и за его пределами. Это много кому помогало и было интересно. В итоге я захотел славы большего, когда однажды заметил, что в разделе Databases как раз нет листа на эту тему. И я решил добавить туда свой.
Что для этого нужно?
Регистрируем обычный GitHub-репо с именем вида awesome-что-то-там. В моем случае это был awesome-database-tools
Приводим свой лист к формату awesome, в этом нам поможет generator-awesome-list, который сгенерирует все нужные файлы в нужном формате
Настраиваем самый настоящий CI. awesome-lint и travis ci помогут нам контролировать валидность нашего листа
Ждем 30 дней
Делаем ревью как минимум на 2 чужих PR’а
И наконец делаем PR в главный репо, куда добавляем ссылку на свой репо. Тут нужно внимательно все прочесть и тщательно выполнить все многочисленные требования к новому листу и самому PR.
Но прошло немного времени, я собрал еще больше материала, поработал над ошибками и отважился на вторую попытку.
Но я забыл об очень важной вещи, о чем мне мягко намекнули:
Я был не очень внимателен и не добавил единорога в знак подтверждения того, что все условия выполнены
Затем прошло еще немного времени, еще немного правок по замечаниям, и появился долгожданный твит, что мой PR был принят.
Так я стал автором своего первого листа, и мне стали приходить PR’ы из сообщества на добавление новых тулзов. И многие из них уже включены в Awesome Database Tools. Если лень переходить по ссылке,
вот актуальная на момент публикации поста подборка
Awesome Database Tools
Community driven list of database tools
Here we will collect information about awesome useful and awesome experimental tools that simplify working with databases for DBA, DevOps, Developers and mere mortals.
Feel free to add information about your own db-tools or your favorite third-party db-tools.
dbForge Studio for SQL Server — Powerful integrated development environment for SQL Server development, management, administration, data analysis, and reporting.
dbKoda — Modern (JavaScript/Electron framework), open source IDE for MongoDB. It has features to support development, administration and performance tuning on MongoDB databases.
IBExpert — Comprehensive GUI tool for Firebird and InterBase.
HeidiSQL — A lightweight client for managing MySQL, MSSQL and PostgreSQL, written in Delphi.
MySQL Workbench — MySQL Workbench is a unified visual tool for database architects, developers, and DBAs.
Navicat — A database development tool that allows you to simultaneously connect to MySQL, MariaDB, SQL Server, Oracle, PostgreSQL, and SQLite databases from a single application.
Oracle SQL Developer — Oracle SQL Developer is a free, integrated development environment that simplifies the development and management of Oracle Database in both traditional and Cloud deployments.
pgAdmin — The most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world.
PL/SQL Developer — IDE that is specifically targeted at the development of stored program units for Oracle Databases.
PostgreSQL Maestro — Complete and powerful database management, admin and development tool for PostgreSQL.
Toad — Toad is the premier database solution for developers, admins and data analysts. Manage complex database changes with a single database management tool.
Toad Edge — Simplified database development tool for MySQL and Postgres.
TOra — TOra is an open source SQL IDE for Oracle, MySQL and PostgreSQL dbs.
Valentina Studio — Create, administer, query and explore Valentina DB, MySQL, MariaDB, PostgreSQL and SQLite databases for FREE.
GUI Managers/Clients
Adminer — Database management in a single PHP file.
DbVisualizer — Universal database tool for developers, DBAs and analysts.
HouseOps — Enterprise ClickHouse Ops UI for you run querys, monitoring ClickHouse health and make a lot of others thinks.
JackDB — Direct SQL access to all your data, no matter where it lives.
Robo 3T — Robo 3T (formerly Robomongo) is a shell-centric cross-platform MongoDB management tool.
Sequel Pro — Sequel Pro is a fast, easy-to-use Mac database management application for working with MySQL & MariaDB databases.
SQL Operations Studio — A data management tool that enables working with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.
SQLite Expert — Graphical interface supports all SQLite features.
sqlpad — Web-based SQL editor run in your own private cloud.
SQLPro — A simple, powerful Postgres manager for macOS.
SQuirreL — Graphical SQL client written in Java that will allow you to view the structure of a JDBC compliant database, browse the data in tables, issue SQL commands etc.
SQLcl — Oracle SQL Developer Command Line (SQLcl) is a free command line interface for Oracle Database.
usql — A universal command-line interface for PostgreSQL, MySQL, Oracle Database, SQLite3, Microsoft SQL Server, and many other databases including NoSQL and non-relational databases!
dbcli
athenacli — AthenaCLI is a CLI tool for AWS Athena service that can do auto-completion and syntax highlighting.
litecli — CLI for SQLite Databases with auto-completion and syntax highlighting.
mssql-cli — A command-line client for SQL Server with auto-completion and syntax highlighting.
mycli — A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.
pgcli — Postgres CLI with autocompletion and syntax highlighting.
vcli — Vertica CLI with auto-completion and syntax highlighting.
DB-schema navigation and visualization
dbdiagram.io — Quick and simple tool for help you draw your database relationship diagrams and flow quickly using simple DSL language.
SchemaCrawler — A free database schema discovery and comprehension tool.
Schema Spy — Generating your database to HTML documentation, including Entity Relationship diagrams.
tbls — CI-Friendly tool for document a database, written in Go.
Modelers
Navicat Data Modeler — A powerful and cost-effective database design tool which helps you build high-quality conceptual, logical and physical data models.
Oracle SQL Developer Data Modeler — Oracle SQL Developer Data Modeler is a free graphical tool that enhances productivity and simplifies data modeling tasks.
pgmodeler — Data modeling tool designed for PostgreSQL.
Migration tools
2bass — Database configuration-as-code tool that utilizes concept of idempotent DDL scripts.
node-pg-migrate — Node.js database migration management built exclusively for postgres. (But can also be used for other DBs conforming to SQL standard — e.g. CockroachDB.)
Pyrseas — Provides utilities to describe a PostgreSQL database schema as YAML.
SchemaHero — A Kubernetes operator for declarative database schema management (gitops for database schemas).
Sqitch — Sensible database-native change management for framework-free development and dependable deployment.
yuniql — Yet another schema versioning and migration tool just made with native .NET Core 3.0+ and hopefully better.
scheme2ddl — Command line util for export Oracle schema to set of ddl init scripts with ability to filter undesirable information, separate DDL in different files, pretty format output.
Wrappers
DreamFactory — A open source REST API backend for mobile, web, and IoT applications.
Hasura GraphQL Engine — Blazing fast, instant realtime GraphQL APIs on Postgres with fine grained access control, also trigger webhooks on database events.
mysql_fdw — PostgreSQL foreign data wrapper for MySQL.
Oracle REST Data Services — A mid-tier Java application, ORDS maps HTTP(S) verbs (GET, POST, PUT, DELETE, etc.) to database transactions and returns any results formatted using JSON.
Prisma — Prisma turns your database into a realtime GraphQL API.
pg_chameleon — MySQL to PostgreSQL replica system written in Python 3. The system use the library mysql-replication to pull the row images from MySQL which are stored into PostgreSQL as JSONB.
PGDeltaStream — A Golang webserver to stream Postgres changes atleast-once over websockets, using Postgres logical decoding feature.
repmgr — The Most Popular Replication Manager for PostgreSQL.
Scripts
pgx_scripts — A collection of useful little scripts for database analysis and administration, created by our team at PostgreSQL Experts.
pgsql-bloat-estimation — Queries to mesure statistical bloat in indexes and tables for PostgreSQL.
TPT — These sqlplus scripts are for Oracle Database performance optimization & troubleshooting.
Monitoring/Statistics/Perfomance
ASH Viewer — Provides a graphical view of active session history data within the Oracle and PostgreSQL DB.
Monyog — Agentless & Cost-effective MySQL Monitoring Tool.
mssql-monitoring — Monitor your SQL Server on Linux performance using collectd, InfluxDB and Grafana.
Navicat Monitor — A safe, simple and agentless remote server monitoring tool that is packed with powerful features to make your monitoring effective as possible.
Orabbix — Orabbix is a plugin designed to work with Zabbix Enterprise Monitor to provide multi-tiered monitoring, performance and availability reporting and measurement for Oracle Databases, along with server performance metrics.
pg_monz — This is the Zabbix monitoring template for PostgreSQL Database.
Pyora — Python script to monitor Oracle Databases.
ZabbixDBA — ZabbixDBA is fast, flexible, and continuously developing plugin to monitor your RDBMS.
Testing
DbFit — A database testing framework that supports easy test-driven development of your database code.
Databene Benerator — It is a framework for generating realistic and valid high-volume test data for your system under test (avoiding the Datalite anti-pattern).
StackGres — Enterprise-grade, Full Stack PostgreSQL on Kubernetes.
Configuration Tuning
MySQLTuner-perl — Script written in Perl that allows you to review a MySQL installation quickly and make adjustments to increase performance and stability.
PGConfigurator — Free online tool to generate an optimized postgresql.conf.