Рубрики
Без рубрики

Придумать идеи проекта (естественно)

Посмотрим на него, придумав идеями, чтобы построить что-то новое и полезное, сложно. Это становится еще сложнее … Помечено Python, Go, узел, боковые продукты.

Посмотрим на него, придумав идеями, чтобы построить что-то новое и полезное, сложно. Становится еще сложнее, когда идея начинает казаться немного многообещающей, и кто-то уже сделал это. Так что сейчас – дни, я перестал искать идеи и взял совершенно другой маршрут.

В этой статье я буду обсуждать один Очень простой, но эффективный способ поступить с новыми идеями для вашего следующего бокового проекта. То есть –

Вместо того, чтобы искать новые идеи ищут нерешенные проблемы. Выясните решение и сохраните это как проект.

В качестве разработчиков программного обеспечения мы переводчики между реальными вопросами и техническими решениями. Так что вышеупомянутая техника кажется самым естественным способом для меня.

Теперь вопрос в том, как вы отслеживаете эти проблемы. Ответ – это вы этого не сделаете, они будут представлять их вам. Эти проблемы я говорю о том, может варьироваться от чего-то такого же маленького, как Пакетные изображения изображений в каталоге к Создание системы, которая позволяет запустить скомпилированные двоичные файлы на любой платформе.

Теперь вы можете подумать Если проблема настолько распространена, почему кто-то уже не пытался это исправить? или Если решение может быть так же просто, как один из моих боковых проектов, это действительно стоит того? И ответить на эти вопросы, вы должны терпеливо придерживаться меня до конца этой статьи.

Стол содержания

  • FHSINCHY/TENT.
  • FHSINCHY/MCPKGRM
  • FHSINCHY/RMBYEXT.
  • Fhsinchy/OpenGapps – неофициальные сборки
  • Seburgh-Solutions/Mongoose-permissions
  • Закрытие мыслей

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

FHSINCHY/TENT.

FHSINCHY/TENT.

Подман (https://podman.io/) Диспетство зависимости только на основе разработки для Linux

Палатка – это инструмент CLI для беговых зависимостей разработки, таких как MySQL, Mongo, Elasticsearch ETC внутри предварительно настроенных контейнеров с использованием простых однопроводов.

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

Начать службу, такую как MySQL так же просто, как исполнение Палатка начать MySQL И вам никогда не придется оглянуться на него.

Но MySQL не единственная доступная услуга. Список всех доступных услуг можно найти на: Services.Go.

Палатка сильно вдохновлена от Затянуть/составлять и является экспериментальным проектом. Следовательно, осторожность следует принимать, если вы используете его в критической среде.

Зависимости

  • Linux.
  • Подман Установлены
  • Служба системы Подмана работает

Если у вас установлен Podman, вы можете запустить системный сервис следующим образом:

## starts the podman system service
systemctl --user start podman.socket
## enables the podman system service, so it

Палатка является диспетцем зависимости только на разработке с открытым исходным кодом для Linux. Что это делает, это позволяет управлять регулярными зависимостями развития, как MySQL или Монгодб Сервер с простыми вкладышами –

tent start mysql

# Which tag do you want to use? (default: latest): 5.7
# Server Port? (default: 3306): 3308
# Server Root Password? (default: secret): password
# Server Data Volume? (default: mysql-data): mysql-data-57
# Creating tent-mysql-5.7-3308 container using docker.io/mysql:5.7 image...
# INFO[0013] Going to start container "e1031dbfcbc11be6f52524dccd41c7e01057661a9ddb3f4a26b127d79143dd64"

Теперь у вас есть сервер MySQL 5.7, работающий на вашем компьютере, который может быть доступен на порту 3308 Использование любого клиента.

Еще проще, если вы идете с параметрами по умолчанию. Чтобы раскрутить сервер MongoDB, используя Последние Изображение доступно на Docker Hub , вы можете выполнить следующую команду –

tent start mongo --default

# Creating tent-mongo-latest-27017 container using docker.io/mongo:latest image...
# INFO[0000] Going to start container "f2379a48400d9318c806a920f1029d9be00468485702956328527d954c4ab9b5"

И теперь у меня есть Mongodb, работающий на моем компьютере, доступен на порту 27017 Использование любого клиента.

Заключение этих серверов еще проще –

tent stop --all

# Stopping e1031dbfcbc11be6f52524dccd41c7e01057661a9ddb3f4a26b127d79143dd64 container...
# Removing e1031dbfcbc11be6f52524dccd41c7e01057661a9ddb3f4a26b127d79143dd64 container...
# Stopping f2379a48400d9318c806a920f1029d9be00468485702956328527d954c4ab9b5 container...
# Removing f2379a48400d9318c806a920f1029d9be00468485702956328527d954c4ab9b5 container...

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

Честно говоря, палатка не является оригинальной идеей. На самом деле это вдохновлено непосредственно из другого инструмента под названием Выиграть по Затянуть Co. который написан в PHP и использует Docker в качестве заднего конца.

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

До 2020 года я решил мигрировать на Подман от Докер Как мой Go-To Contavenerization инструмент и искал альтернативу на вынос, который работает с подмаром. Еще одна причина заключалась в том, что многие из разработчиков в нашей команде вообще не являются разработчиками PHP. Они просто не хотят настроить PHP, композитор и все необходимые зависимости на своих машинах. Некоторые из них используют бродягу, и это не было лучшего решения, чем вынос.

Поэтому я начал думать о написании программы, которая служит альтернативой для выношенности, использует Podman в качестве заднего конца и подходит как скомпилированный двоичный. Во время исследования я наткнулся на Официальные привязки Голанга Для подмана и сразу знал, что мне нужно сделать.

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

Мои коллеги уже мигрировали к нему от того, что они использовали раньше и были довольно довольны этим до сих пор. Благодаря этому проекту у меня также есть возможность присоединиться к одному из официальных встреч сообществ и продемонстрировать мою маленькую программу. Запись доступен на сети BlueJeans. В настоящее время имеет более 70 звезд на Github и 30 или около того загрузки. Для ниша, как палатка, и данный подман не был такой широко приняты как Docker, я доволен этим государством.

FHSINCHY/MCPKGRM

FHSINCHY/MCPKGRM

Удалите пакеты MacOS легко и бесплатно.

В MacOS вы либо скопируете приложение прямо в свой Приложения Папка или вы используете пакет (.pkg), чтобы установить приложение с помощью мастера. Приложения, установленные из пакета (.pkg), часто устанавливают различные файлы за пределами Приложения Папка, и именно поэтому удаление приложения, установленного из пакета (.pkg), не так просто.

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

Некоторые приложения поставляются со своим собственным деинсталлятелем, но большинство приложений нет. Там есть платные приложения, чтобы сделать только это.

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

Эта программа немного личная. Назад в 2020 году я использовал для владения MacBook Air и одним из раздражений, которые я привык сталкиваться, был удаленным процессом приложений, установленных с использованием .pkg пакеты.

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

Во время моего использования я нашел только два способа удалить такой пакет. Я мог бы либо выполнить серию сложных команд Bash, либо я мог купить Uninstallpkg. Применение путем расходов на 9,99 долларов.

Тот факт, что я должен заплатить деньги, просто удалить приложение Freakin ‘, было достаточно раздражает для меня, чтобы подняться и написать деинсталлятор самостоятельно. Следовательно, Пакет MacOS (MC) (PKG) Удалить (RM) родился.

Это простая программа Python, которая представляет вас со списком всех установленных .pkg В вашей системе и давайте удалили их бесплатно

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

FHSINCHY/RMBYEXT.

FHSINCHY/RMBYEXT.

Рекурсивно удаляет все файлы с заданными расширениями (ыми)

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

Требования

  • Python 3.

Установка

pip install git+https://github.com/fhsinchy/rmbyext.git#egg=rmbyext
pip freeze

Выход –

rmbyext==1.0.0

использование

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

rmbyext 

или В случае нескольких расширений

rmbyext  

Позвольте сказать, что вы хотите удалить все PDF Файлы из каталога. Вы просто поместите этот скрипт в этот каталог и выполните

rmbyext pdf

Сценарий будет искать все PDF Файлы рекурсивно и удалите все их. Как указано выше, вы также можете пройти несколько расширений, разделенных пространством

rmbyext pdf txt

Эта команда удалит все PDF и TXT файлы.

Список…

Это очень маленький (длиной 40 строк) Python Script, который позволяет удалять все файлы данного расширения рекурсивно. Имя Удалить (RM) по расширению (EXT) Буквально стоит за это.

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

Fhsinchy/OpenGapps – неофициальные сборки

Fhsinchy/OpenGapps – неофициальные сборки

Неофициальные сборки пакетов OpenGapps для последнего уровня Android API (в настоящее время 27). Построен из своих официальных источников

Официальные сборки OpenGApps для Oreo-8.1 уже были выпущены. Итак, моя работа здесь сделана ☺️

После установки Android Oreo [8.1] На мой Oneplus x Я понял, что OpenGapps еще не выпустил какие-либо пакеты GAPPS для 8.1. Их последняя официальная сборка для 8,0

Этот скриншот был взят на 22 декабря 2017 И не было пакета GAPPS для 8.1 таким образом Этот репо родился Отказ

Я не буду получать время, чтобы построить пакеты каждый день Но я буду обновлять эти пакет время от времени. Я также убедитесь, что пакеты для Последний уровень Android API Готово к загрузке, чтобы вспышки могли запускать свои телефоны, пока команда OpenGApps выпускает официальные пакеты.

Конечно, эти пакеты не такими жестами, как официальные сборки, но в отсутствие официальных пакетов они получит работу и …

Это один из моих старейших проектов. До 22 декабря 2017 года Проект открытых GAPPS не было поддержки Android 8.1 Oreo, но многие поставщики пользовательских ром, включая Lineageos уже выпустили свои ночные и бетабы в мир. Это создало ситуацию, когда люди имели необходимые прошивки, но не имели приложений Google пойти с ним.

Один из страдалей был мной, который только что установил LineageoS на моем OnePlus X и обнаружил, что оказался в целом. Поэтому я свернул свои рукава, построил GAPPS из источника с поддержкой API V27 и выпустил их всем своим коллеги-воинам.

XDA Thread Поскольку этот проект с тех пор получил тысячи просмотров и загрузки. Проект даже пересек линию форума одного плюс X и начал появляться на форумах других устройств, заполняя мою панель уведомлений в процессе. Открытые GAPPS, наконец, добавленные поддержка API V27 22 декабря 2017 года, следовательно, я устанавливаю солнце для моего проекта.

Последний комментарий к потоке был 3 мая 2018 года в 11:53 утра модератором форума, и он пошел что-то вроде следующим образом –

Ну, это заставило меня чувствовать себя как ничего меньшего героя, и я все еще уважаю на форумах.

Seburgh-Solutions/Mongoose-permissions

Seburgh-Solutions/Mongoose-permissions

Плагин Mongoose для управления ролями и разрешениями (RBAC) более простым способом.

Простой плагин RABC для мангуст Это не заканчивается.

Список задач разработки

  • Проверка авторизации с может () метод.
  • Управление ролями с CASSROLE () и Revokerole () методы.
  • Управление прямым разрешением с отданмиссия () и RevokePermissionto () методы.
  • Проверьте, назначить или отменить несколько разрешений в одном вызове функций.

Установка

Установка так же просто, как и любой другой NPM упаковка:

$ npm install mongoose-permissions

использование

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

// models/user.js
// regular mongoose stuff.
const mongoose = require('mongoose');

// require mongoose-permissions in your schema.
const permissions = require('mongoose-permissions');

const User = mongoose.model(
  'User',
  new mongoose.Schema(
    {
      name: {
        type: String,
        require: true,
      },
      email: {
        type: String,
        require: true,
      },
      password: {
        type

Несколько дней назад на работе нам нужен простой, но эффективный способ реализации роли контроля доступа (RBAC) в A Node.js проект. Я искал один онлайн Но те, которые я нашел, были либо чрезмерными или отсутствием необходимых функций.

Так что я вместе с моим коллегой M h hasib Начал работать над проектом нашего собственного вдохновения от API laravel-permissions Пакет по Spatie и результат был Mongoose-permissions упаковка.

Пример кода Использование пакета выглядит следующим образом –

const user = await User.findById('5fd7586ab8069d56e77e170e');

// the assignRole() method takes a complete role object as it's input.
// assigning a new role automatically replaces the old one.
user.assignRole({
        name: "Editor",
        permissions: [
            {
                name: "create-article"
            },
            {
                name: "edit-article"
            }
        ]
    });

// the hasRole() method takes the role name as input.
// the method returns true if the user has the role, false otherwise.
if (user.hasRole("Editor")) {
    // necessary logic goes here.
};

// whereas the revokeRole() method takes the role name as an input.
// revoking a role leaves the selected user with no permissions at all.
user.revokeRole("Editor");

// the givePermissionTo() method takes a permission name it's input.
user.givePermissionTo("publish-article");

// the can() methods takes the permission name as input.
// the method returns true if the user has the permission, false otherwise.
if (user.can("edit-articles")) {
    // article editing logic goes here.
};

// the revokePermissionTo() method takes a permission name it's input as well.
user.revokePermissionTo("publish-article");

После завершения проекта мы были действительно довольны API и с тех пор он работает на наших производственных серверах с нулевыми проблемами.

Пакет получает 11 загрузок в неделю в среднем. Хотя эти номера новинок, мы довольны тем, что мы написали что-то, что решает не только нашу проблему, но, может быть, кто-то тоже.

Закрытие мыслей

Это было пятое и последнее дело в современной статье. В конце концов я хотел бы дать вам три совета относительно ваших боковых проектов –

  1. Не бойтесь, если кто-то уже сделал аналогичный проект. Если вы думаете, что ваша реинкарнация решает проблему, что предыдущая, не давай и сделай это. Случай в пункте мой палаточный проект. Я мог бы просто придерживаться вынесения и избежать хлопот разработки новой программы. Но выезд не приходит как скомпилированная бинар, и он также не поддерживает Podman в качестве заднего конца. Я решил эти проблемы с моей программой и стал победителем в конце.
  2. Даже если вы думаете, что необходимость вашего бокового проекта уменьшится в ближайшем будущем, не бойся. Случай в пункте мой проект Open Gapps. Я знал, что официальная версия прибудет очень скоро, но в любом случае я создал свои сборки и оказался, помогая сотням застровных пользователей.
  3. Если вы чувствуете, что ваш боковой проект слишком сильно ориентирован на ваши собственные потребности, все равно сделать это и сделать его публичным. Дело в момент мой RMbyext. а также McPkgrem проекты. Хотя я заставил их думать только о себе, они тоже помогли другим людям.

Целью здесь является создание решения. Коллекция исходных файлов, которые компилируются во что-то полезное, и я считаю, что вы можете сделать это. Итак, Начать Уже выйдет ты?

Оригинал: “https://dev.to/fhsinchy/coming-up-with-project-ideas-naturally-49b0”