text:
---
title: Learning
---

A selected list of tutorials, articles, and resources on Laravel and related topics. Brought to you by [Chirag Gude](https://github.com/chiraggude) (aka @chiraggude).

## Essentials

* [Laravel](https://laravel.com) ([Documentation](https://laravel.com/docs))
* [Laravel API Reference](https://laravel.com/api/master/)
* [Lumen](https://lumen.laravel.com) ([Documentation](https://lumen.laravel.com/docs))
* [Laracasts](https://laracasts.com)
* [Laravel News](https://laravel-news.com) ([Archive](https://laravel-news.com/archive/))

## Packages

* [Packagist](https://packagist.org/)
* [Laravel Collective](https://laravelcollective.com/)
* [Packalyst](http://packalyst.com/)
* [Spatie](https://spatie.be/en/opensource/laravel)

## Popular Packages

> This is a list of well-documented, tested packages that are frequently used in Laravel projects. If you're looking for an exhaustive list of PHP packages, then check out the Package Repositories mentioned above.

##### Developer Tools

* [Scaffold Interface](https://github.com/amranidev/scaffold-interface) - A Smart CRUD Generator For Laravel
* [IDE Helper](https://github.com/barryvdh/laravel-ide-helper) - Generates a helper file for IDE auto-completion
* [Laravel 5 Extended Generators](https://github.com/laracasts/Laravel-5-Generators-Extended) - Extends built-in file generators
* [Laravel API/Scaffold/CRUD Generator](https://github.com/InfyOmLabs/laravel-generator) - Generator for APIs, CRUD scaffolds etc.
* [Laravel Tinx](https://github.com/furey/tinx) - Reload your Laravel Tinker session from inside Tinker
* [Laravel API Documentation Generator](https://github.com/mpociot/laravel-apidoc-generator) - Automatically generate your API documentation
* [Laravel Packager](https://github.com/Jeroen-G/Laravel-Packager) - A CLI tool for creating Laravel packages
* [Workbench Export to Migrations](https://github.com/beckenrode/mysql-workbench-export-laravel-5-migrations) - Workbench plugin for exporting Models to Laravel migrations
* [Laravel Decomposer](https://github.com/lubusIN/laravel-decomposer) - List all installed packages, their dependencies, app & server details

##### Testing & Debugging

* [Laravel TestTools](https://chrome.google.com/webstore/detail/laravel-testtools/ddieaepnbjhgcbddafciempnibnfnakl) - Chrome extension to generate Laravel integration tests while using your app
* [Laravel Test Factory Generator](https://github.com/mpociot/laravel-test-factory-helper) - Generate Laravel test factories from your existing models
* [Clockwork](https://github.com/itsgoingd/clockwork) - Integrates Clockwork Chrome extension for debugging and profiling apps
* [Debug Bar](https://github.com/barryvdh/laravel-debugbar) - Integrates PHP Debug Bar with Laravel
* [Laravel 5 Log Viewer](https://github.com/rap2hpoutre/laravel-log-viewer) - Log viewer
* [LogViewer](https://github.com/ARCANEDEV/LogViewer) - Provides a log viewer
* [LERN](https://github.com/tylercd100/lern#lern-laravel-exception-recorder-and-notifier) - Record exceptions into a database and will send you a notification
* [Mail Preview](https://github.com/themsaid/laravel-mail-preview) - Preview sent mail in a web browser or mail client
* [Laravel Tracy](https://github.com/recca0120/laravel-tracy) - A Laravel Package to integrate Nette Tracy Debugger
* [Laravel API Tester](https://github.com/asvae/laravel-api-tester) - Postman-like tool with Laravel routes
* [Laravel Tail](https://github.com/spatie/laravel-tail) - The missing tail command

##### Authentication & Authorization

* [Bouncer](https://github.com/JosephSilber/bouncer) - Roles & Permissions
* [Laratrust](https://github.com/santigarcor/laratrust) - Roles, Permissions and teams
* [Entrust](https://github.com/Zizaco/entrust) - Role-based Permissions
* [JWT Auth](https://github.com/tymondesigns/jwt-auth) - JSON Web Token authentication for APIs
* [Laravel Permission](https://github.com/spatie/laravel-permission) - Associate users with roles and permissions
* [Defender](https://github.com/artesaos/defender) - Roles & Permissions
* [OAuth2 Server Laravel](https://github.com/lucadegasperi/oauth2-server-laravel) - OAuth 2.0 authorization server and resource server
* [Socialite](https://github.com/laravel/socialite) - OAuth authentication with Facebook, Google, Twitter etc.
* [Socialite Providers 2.0](http://socialiteproviders.github.io/) - 100+ social authentication providers for Socialite with Lumen support
* [Google2FA](https://github.com/antonioribeiro/google2fa) - Google Two-Factor Authentication Module
* [Laravel User Verification](https://github.com/jrean/laravel-user-verification) - Handle the user verification flow and validate email
* [Adldap2 Laravel](https://github.com/Adldap2/Adldap2-Laravel) - LDAP authentication and Active Directory management
* [Doorman](https://github.com/clarkeash/doorman) - Limit access to your Laravel applications by using invite codes

##### Utilities

* [Artisan View](https://github.com/svenluijten/artisan-view) - Manage the views in Laravel projects via artisan
* [Bootstrapper](https://github.com/patricktalmadge/bootstrapper/) - Set of classes to create Bootstrap 3 markup
* [Captcha](https://github.com/mewebstudio/captcha) - An anti-bot image captcha system
* [Charts](https://github.com/ConsoleTVs/Charts) - Multi-library chart package to create interactive charts.
* [Datatable](https://github.com/Chumper/Datatable) - Server-side and client-side integration for jQuery Datatables plugin
* [Eloquent Filter](https://github.com/Tucker-Eric/EloquentFilter) - Filter models and their Rrelationships
* [Eloquent Sluggable](https://github.com/cviebrock/eloquent-sluggable) - Create slugs for Eloquent models
* [Eloquent Sortable](https://github.com/spatie/eloquent-sortable) - Sortable behaviour for Eloquent models
* [HTML](https://github.com/LaravelCollective/html) - HTML and Form Builders for Laravel
* [Multi-tenant](https://github.com/hyn/multi-tenant) - Flexible multi tenancy with secure separation of routes, assets and databases
* [Laravel Form Builder](https://github.com/kristijanhusak/laravel-form-builder) - Form builder inspired by Symfony's form builder
* [Laravel Activitylog](https://github.com/spatie/laravel-activitylog) - Log activity inside your Laravel app
* [Laravel Auditing](https://github.com/owen-it/laravel-auditing) - Audit for Eloquent models
* [Laravel Breadcrumbs](https://github.com/davejamesmiller/laravel-breadcrumbs) - Create and manage breadcrumbs
* [Laravel Collection Macros](https://github.com/spatie/laravel-collection-macros) - A set of handy collection macros
* [Laravel Cookie Consent](https://github.com/spatie/laravel-cookie-consent) - Make your Laravel app comply with the crazy EU cookie law
* [Laravel Datatables](https://github.com/yajra/laravel-datatables) - jQuery DataTables API
* [Laravel GeoIP](https://github.com/Torann/laravel-geoip) - Determine the location of website visitors based on their IP addresses
* [Laravel Hashids](https://github.com/vinkla/laravel-hashids) - Generate unique, non-sequential ids using [Hashids](http://hashids.org/php/)
* [Laravel Impersonate](https://github.com/404labfr/laravel-impersonate) - A package to authenticate as one of your users
* [Laravel Markdown](https://github.com/GrahamCampbell/Laravel-Markdown) - CommonMark markdown parser
* [Laravel Menu](https://github.com/spatie/laravel-menu) - Html menu generator for Laravel
* [Laravel Talk](https://github.com/nahid/talk) - Realtime User messaging system
* [Laravel Messenger](https://github.com/cmgmyr/laravel-messenger) - User messaging system
* [Laravel Moderation](https://github.com/hootlex/laravel-moderation) - Approve or reject resources like posts, comments, users, etc.
* [Laravel Paginateroute](https://github.com/spatie/laravel-paginateroute) - Use Laravel's paginator without the query string
* [Laravel URL Signer](https://github.com/spatie/laravel-url-signer) - Create and validate signed URLs with a limited lifetime
* [Laravel Tags](https://github.com/spatie/laravel-tags) - Add tags and taggable behaviour
* [Laravel Stats Tracker](https://github.com/antonioribeiro/tracker) - Gather information from requests to identify and store
* [Listify](https://github.com/lookitsatravis/listify) - Add sorting/ordering capabilities to any Eloquent model
* [noCAPTCHA](https://github.com/ARCANEDEV/noCAPTCHA) - Helper for Google's new noCAPTCHA (reCAPTCHA)
* [Purifier](https://github.com/mewebstudio/purifier) - HTML filter
* [Revisionable](https://github.com/VentureCraft/revisionable) - Create a revision history for Eloquent models
* [SEOTools](https://github.com/artesaos/seotools) - Helpers for some common SEO techniques
* [Laravel Setting](https://github.com/anlutro/laravel-settings) - Persistent configuration settings that are stored in JSON files
* [Friendship](https://github.com/hootlex/laravel-friendships) - Friendship management system
* [Teamwork](https://github.com/mpociot/teamwork) - User to team associations with an invite system
* [Validating](https://github.com/dwightwatson/validating) - Trait for validating Eloquent models
* [VAT Calculator](https://github.com/mpociot/vat-calculator) - Handle all the hard stuff related to EU MOSS vat regulations
* [Laravel UUID](https://github.com/webpatser/laravel-uuid) - Generate a UUID according to the RFC 4122 standard
* [Laravel Installer](https://github.com/RachidLaasri/LaravelInstaller) - Allow users to install your application just by following the setup wizard, like WordPress
* [Laravel Modules](https://github.com/nWidart/laravel-modules) - Easy module management
* [Laravel Phone](https://github.com/Propaganistas/Laravel-Phone) - Phone number validator and formatter
* [Laravel Ban](https://github.com/cybercog/laravel-ban) - Simplify blocking and banning Eloquent models
* [Laravel Proxy](https://github.com/fideloper/TrustedProxy) - Handling sessions when behind load balancers or other intermediaries.
* [Laravel Video Chat](https://github.com/PHPJunior/laravel-video-chat) - Video Chat using Socket.IO and WebRTC
* [Widgets for Laravel](https://github.com/arrilot/laravel-widgets) - A powerful alternative to view composers.

##### Media & Document Management

* [Intervention Image](https://github.com/Intervention/image) - Image handling library for creating, editing and composing images
* [Laravel Glide](https://github.com/spatie/laravel-glide) - Easily convert images with Glide
* [Laravel MediaLibrary](https://github.com/spatie/laravel-medialibrary) - Associate files with Eloquent models
* [Laravel Snappy](https://github.com/barryvdh/laravel-snappy) - HTML to PDF generator using wkhtmltopdf
* [Laravel DOMPDF](https://github.com/barryvdh/laravel-dompdf) - HTML to PDF generator using [dompdf](https://github.com/dompdf/dompdf)
* [Laravel Stapler](https://github.com/CodeSleeve/laravel-stapler) - ORM-based file upload manager
* [Laravel Excel](https://github.com/Maatwebsite/Laravel-Excel) - Import and export Excel and CSV files

##### Integration with Javascript

* [Laroute](https://github.com/aaronlord/laroute) - Generate Laravel route URLs from JavaScript
* [PHP Vars to JavaScript Transformer](https://github.com/laracasts/PHP-Vars-To-Js-Transformer) - Pass server-side string/array/collection/whatever to JavaScript
* [Javascript Validation](https://github.com/proengsoft/laravel-jsvalidation) - Use validation rules, messages, FormRequest and validators to validate forms in client-side
* [Laravel Pjax](https://github.com/spatie/laravel-pjax) - A Pjax middleware
* [Laravel Blade Javascript](https://github.com/spatie/laravel-blade-javascript) - A Blade directive to export variables to JavaScript
* [Ziggy](https://github.com/tightenco/ziggy) - Use your Laravel named routes in JavaScript

##### Databases, ORMs, Migrations & Seeding

* [Backup Manager](https://github.com/backup-manager/laravel) - Backup and restore databases from S3, Dropbox, SFTP etc.
* [Laravel Nestedset](https://github.com/lazychaser/laravel-nestedset) - Nested Sets pattern implementation
* [ClosureTable](https://github.com/franzose/ClosureTable) - Closure table pattern implementation
* [Eloquence](https://github.com/kirkbushell/eloquence) - Extra features for Eloquent models
* [iSeed](https://github.com/orangehill/iseed) - Generate a new seed file from an existing database table
* [Laravel OCI8](https://github.com/yajra/laravel-oci8) - Oracle DB driver via OCI8
* [Laravel Backup](https://github.com/spatie/laravel-backup) - Backup your app
* [Laravel Doctrine](https://github.com/laravel-doctrine/orm) - Doctrine 2 ORM implementation
* [Laravel MongoDB](https://github.com/jenssegers/laravel-mongodb) - Eloquent model and query builder with support for MongoDB
* [Migrations Generator](https://github.com/Xethron/migrations-generator) - Generate migrations from an existing database
* [Sofa/Eloquence](https://github.com/jarektkaczyk/eloquence) - Extensions for the Eloquent ORM
* [Tenanti](https://github.com/orchestral/tenanti) - Multi-tenant database schema manager
* [Laravel Repository](https://github.com/andersao/l5-repository) - Repositories to abstract the database layer

##### Search

* [Algolia Search](https://github.com/algolia/algoliasearch-laravel) - Integrates the Algolia Search API to the Laravel Eloquent ORM
* [Elasticquent](https://github.com/elasticquent/Elasticquent) - Elasticsearch for Eloquent models
* [Plastic](https://github.com/sleimanx2/plastic) - Fluently mapping and searching Elasticsearch
* [Laravel Search](https://github.com/mmanos/laravel-search) - Unified API for Elasticsearch, Algolia, and ZendSearch
* [SearchIndex](https://github.com/spatie/searchindex) - Store and retrieve objects from Algolia or Elasticsearch
* [Searchable](https://github.com/nicolaslopezj/searchable) - Trait that adds a simple search function to Eloquent models
* [TNTSearch](https://github.com/teamtnt/tntsearch) - A fully featured full text search engine written in PHP
* [TNTSearch driver](https://github.com/teamtnt/laravel-scout-tntsearch-driver) - Driver for [Laravel Scout](https://github.com/laravel/scout) search package based on TNTSearch

##### APIs

* [ApiGuard](https://github.com/chrisbjr/api-guard) - Allow API authentication with API keys
* [Dingo API](https://github.com/dingo/api) - Multi-purpose toolkit for developing RESTful APIs
* [Laravel CORS](https://github.com/barryvdh/laravel-cors) - Add CORS (Cross-Origin Resource Sharing) headers support
* [Laravel Fractal](https://github.com/spatie/laravel-fractal) - Output complex, flexible, AJAX/RESTful data structures with Fractal
* [Laravel GraphQL](https://github.com/Folkloreatelier/laravel-graphql) - Supports Relay, eloquent models, validation and GraphiQL
* [Laravel Responder](https://github.com/flugger/laravel-responder) - Build custom API responses with Fractal

##### Tasks, Commands and Scheduling

* [Dispatcher](https://github.com/indatus/dispatcher) - Scheduler for Artisan commands
* [Elixir](https://github.com/laravel/elixir) - Node (NPM) package to run Gulp tasks
* [Mix](https://github.com/JeffreyWay/laravel-mix) - Fluent API for defining basic webpack build steps
* [Envoy](https://github.com/laravel/envoy) - SSH Task Runner

##### Payments

* [Cashier](https://github.com/laravel/cashier) - Subscription billing with Stripe
* [Omnipay for Laravel](https://github.com/ignited/laravel-omnipay) - Integrate the [Omnipay](https://github.com/thephpleague/omnipay) PHP library

##### Optimization

* [Intervention Image Cache](https://github.com/Intervention/imagecache) - Caching extension for the Intervention Image Class
* [Laravel HTMLMin](https://github.com/GrahamCampbell/Laravel-HTMLMin) - Blade/HTML/CSS/javascript minifier
* [Rememberable](https://github.com/dwightwatson/rememberable) - Query caching for Eloquent
* [Widgetize](https://github.com/imanghafoori1/laravel-widgetize) - Page Partial caching
* [Laravel Responsecache](https://github.com/spatie/laravel-responsecache) - Speed up app by caching the entire response

##### Monitoring

* [Horizon](https://github.com/laravel/horizon) - Monitor and configure queues with a simple web UI
* [Laravel Failed Job Monitor](https://github.com/spatie/laravel-failed-job-monitor) - Get notified when a queued job fails
* [Laravel Uptime Monitor](https://github.com/spatie/laravel-uptime-monitor) - A powerful and easy to configure uptime and ssl monitor

##### Localization

* [Language Files](https://github.com/caouecs/Laravel-lang) - Validation, Pagination and Reminders language lines in 37 languages
* [Laravel Localization](https://github.com/mcamara/laravel-localization) - Add i18n support via routes
* [Laravel Translatable](https://github.com/spatie/laravel-translatable) - Making Eloquent models translatable by storing translations as JSON
* [Laravel Translatable](https://github.com/dimsav/laravel-translatable) - Retrieve and store translatable Eloquent model instances
* [Laravel Translator](https://github.com/vinkla/laravel-translator) - Translate Eloquent models into multiple languages
* [Laravel Date](https://github.com/jenssegers/date) - A library to help you work with dates in multiple languages, based on Carbon
* [Laravel Langman](https://github.com/themsaid/laravel-langman) - Manage language files from Artisan Console
* [Laravel Translation](https://github.com/waavi/translation) - Translation and localization management
* [Linguist](https://github.com/keevitaja/linguist) - i18n localization support for Laravel

##### Third-party Service Integration

* [Laravel Analytics](https://github.com/spatie/laravel-analytics) - Retrieve pageviews and other data from Google Analytics
* [Laravel DigitalOcean](https://github.com/GrahamCampbell/Laravel-DigitalOcean) - DigitalOceanV2 bridge
* [Laravel GitHub](https://github.com/GrahamCampbell/Laravel-GitHub) - PHP GitHub API bridge
* [Laravel Instagram](https://github.com/vinkla/laravel-instagram) - Instagram API bridge
* [Laravel Newsletter](https://github.com/spatie/laravel-newsletter) - Send newsletters with Mailchimp
* [Laravel Pusher](https://github.com/vinkla/laravel-pusher) - Pusher API bridge

## Development Setup

* [Homestead](https://laravel.com/docs/master/homestead) - Official Vagrant box for Laravel
* [Valet](https://laravel.com/docs/master/valet) - Development environment for Mac users
* [Valet Linux](https://github.com/cpriego/valet-linux) - Development environment for Linux users
* [LaraDock](https://github.com/LaraDock/laradock) - Run Laravel on Docker (Like Homestead but for Docker instead of Vagrant)
* [LaraEdit Docker](https://github.com/laraedit/laraedit-docker) - Homestead environment in a single Docker container
* [Laragon](https://laragon.org/) - Isolated development environment on Windows
* [Stacker](https://github.com/Maxlab/stacker) - The environment for local web development on Docker
* [Devilbox](https://github.com/cytopia/devilbox) - A dockerized and general-purpose LAMP/MEAN stack for every PHP version

## Application Hosting

* [Forge](https://forge.laravel.com/) ([ForgeRecipes](http://forgerecipes.com/))
* [FortRabbit](https://www.fortrabbit.com/laravel-hosting)
* [PagodaBox](https://pagodabox.io/) ([Documentation](https://pagodabox.io/docs/framework_laravel))
* [Heroku](https://www.heroku.com/) ([Documentation](https://devcenter.heroku.com/articles/getting-started-with-laravel))
* [AWS Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) ([Tutorial](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/php-laravel-tutorial.html))
* [Cloudways](https://www.cloudways.com/en/laravel-hosting.php)

## Application Deployment

* [Envoyer](https://envoyer.io/) - Zero down-time Deployer for PHP & Laravel projects
* [Rocketeer](https://github.com/rocketeers/rocketeer) - Task runner and deployment package

## Code Snippets

* [Laravel LTS Cheat Sheet ](https://summerblue.github.io/laravel5-cheatsheet/) ([Chinese version](https://cs.phphub.org/))
* [Laravel Tricks](http://laravel-tricks.com/)

## Articles, Tutorials, Blogs etc.

* [Tuts+](https://code.tutsplus.com/categories/laravel)
* [SitePoint](https://www.sitepoint.com/php/page/0/?filter[4047]=on)
* [Medium](https://medium.com/tag/laravel/latest)
* [Scotch](https://scotch.io/tag/laravel)
* [Taylor Otwell](http://taylorotwell.com/)
* [Digital Ocean](https://www.digitalocean.com/community/search?q=laravel&type=tutorials)
* [Matt Stauffer](https://mattstauffer.co/blog)
* [Mohamed Said](https://themsaid.com/)
* [Vegi Bit](https://vegibit.com/tag/laravel/)
* [Andrews Ang](http://blog.kongnir.com/category/laravel-2/)
* [Eric Barnes](https://ericlbarnes.com/tag/laravel/)
* [Neon Tsunami](https://www.neontsunami.com/tags/laravel)
* [Stidges](https://blog.stidges.com/)
* [Dor.ky](https://dor.ky/tag/laravel/)
* [Stillat](https://stillat.com/explore/categories/laravel-5)
* [Easy Laravel Book Blog](http://www.easylaravelbook.com/blog/)
* [Laravel Tips](https://laraveltips.wordpress.com/)
* [Codingo Tuts](https://tuts.codingo.me/category/web-development/laravel)
* [Laraveles](http://laraveles.com/blog/) (ES)
* [Styde](https://styde.net/cursos/) (ES)
* [Laravel Daily](http://laraveldaily.com/blog/)
* [Freek Van der Herten](https://murze.be/tag/laravel/)
* [Cloudways Laravel Blog](http://cloudways.com/blog/laravel)
* [Laravel Best Practices](https://github.com/alexeymezenin/laravel-best-practices)
* [KernelDev](https://www.kerneldev.com/category/web-development/laravel/)

## Videos

* [Laracasts](https://laracasts.com/)
* [Codecourse](https://www.codecourse.com/) ([YouTube](https://www.youtube.com/user/phpacademy/playlists))
* [Tuts+](http://code.tutsplus.com/categories/laravel/courses)
* [Servers for Hackers](https://serversforhackers.com/laravel-perf)
* [Test-Driven Laravel](https://course.testdrivenlaravel.com/)
* [Duilio Palacios](https://www.youtube.com/user/silencedsg/videos) (ES)
* [CodigoFacilito](https://codigofacilito.com/courses/laravel) (ES)
* [DevDojo](https://devdojo.com/search?value=laravel)
* [Amitav Roy](https://www.youtube.com/channel/UC4gijXR8cM4gmEt9Olse-TQ/videos)
* [Laracademy](https://laracademy.co/)
* [Dev Marketer](https://www.youtube.com/channel/UC6kwT7-jjZHHF1s7vCfg2CA/playlists)
* [Udemy](https://www.udemy.com/courses/search/?q=laravel)
* [Lynda](https://www.lynda.com/search?q=laravel)
* [Pluralsight](https://www.pluralsight.com/search?q=laravel&categories=course)

## Conferences

* [Laracon US](http://laracon.us/)
* [Laracon EU](http://laracon.eu/)
* [Laracon Online](https://laracon.net/)
* [Laraconf Brasil](http://laraconfbrasil.com.br/)
* [Laracon Australia](https://laracon.com.au/)
* [Laravel Live](https://laravellive.uk/)

##### Videos

* [Laracon EU 2017](https://www.youtube.com/watch?v=JPxhnRh1Rr8&list=PLMdXHJK-lGoBFZgG2juDXF6LiikpQeLx2)
* [Larcaon US 2017](https://streamacon.com/video/laracon-us-2017)
* [Laracon EU 2016](https://www.youtube.com/playlist?list=PLMdXHJK-lGoCMkOxqe82hOC8tgthqhHCN)
* [Laracon US 2016](https://streamacon.com/video/laracon-us)
* [Laracon EU 2015](https://www.youtube.com/playlist?list=PLMdXHJK-lGoA9SIsuFy0UWL8PZD1G3YFZ)
* [Laracon EU 2014](http://laracon.eu/2014/#schedule)
* [Laracon US 2014](http://userscape.com/laracon/2014/)
* [Laracon EU 2013](http://laracon.eu/2013/talks/)
* [Laracon US 2013](https://www.youtube.com/playlist?list=PLkwAlZpjHQbLcox_S_AgGU24QUfKgXayN)

## Books

* [Laravel Starter](https://www.packtpub.com/web-development/laravel-starter) by Shawn McCool
* [Laravel: Code Happy](https://leanpub.com/codehappy) by Dayle Rees
* [Laravel: Code Bright](https://leanpub.com/codebright) by Dayle Rees
* [Laravel: Code Smart](https://leanpub.com/codesmart) by Dayle Rees
* [Laravel: From Apprentice To Artisan](https://leanpub.com/laravel) by Taylor Otwell
* [Laravel 4 Cookbook](https://leanpub.com/laravel4cookbook) by Christopher Pitt and Taylor Otwell
* [Laravel Testing Decoded](https://leanpub.com/laravel-testing-decoded) by Jeffrey Way
* [Refactoring to Collections](https://adamwathan.me/refactoring-to-collections/) by Adam Wathan
* [Implementing Laravel](https://leanpub.com/implementinglaravel) by Chris Fidao
* [Getting Stuff Done with Laravel 4](https://leanpub.com/gettingstuffdonelaravel) by Chuck Heintzelman
* [Laravel Application Development Blueprints](https://www.packtpub.com/web-development/laravel-application-development-blueprints) by Arda Kılıçdağı and Halil İbrahim Yılmaz
* [Build APIs You Won't Hate](https://leanpub.com/build-apis-you-wont-hate) by Phil Sturgeon
* [Integrating Front end Components with Web Applications](https://leanpub.com/frontend) by Maksim Surguy
* [Laravel Design Patterns and Best Practices](https://www.packtpub.com/web-development/laravel-design-patterns-and-best-practices) by Arda Kılıçdağı and Halil İbrahim Yılmaz
* [Step by Step Real World Application with Laravel 4](https://leanpub.com/real-world-laravel4) by Ibrahim Yusuf
* [Learning Laravel 4 Application Development](https://www.packtpub.com/web-development/learning-laravel-4-application-development) by Hardik Dangar
* [Getting Started with Laravel 4](https://www.packtpub.com/web-development/getting-started-laravel-4) by Raphaël Saunier
* [Laravel Application Development Cookbook](https://www.packtpub.com/web-development/laravel-application-development-cookbook) by Terry Matula
* [Building Web Applications Using Parse REST API](https://leanpub.com/building-web-applications-using-parse-rest-api) by Mhd Zaher Ghaibeh
* [Laravel - My First Framework](https://leanpub.com/laravel-first-framework) by Maksim Surguy
* [Easy Laravel 5](https://leanpub.com/easylaravel/) by W. Jason Gilmore
* [Laravel 5 Essentials](https://www.packtpub.com/web-development/laravel-5-essentials) by Martin Bean
* [Easy E-Commerce Using Laravel and Stripe](https://leanpub.com/easyecommerce) by W. Jason Gilmore and Eric L. Barnes
* [Laravel 5.1 Beauty](https://leanpub.com/l5-beauty) by Chuck Heintzelman
* [Design Patterns with PHP and Laravel](https://leanpub.com/larasign) by Kelt Dockins
* [Mastering Laravel](https://www.packtpub.com/web-development/mastering-laravel) by Christopher John Pecoraro
* [How to Build Real-Time Laravel Apps with Pusher](http://pusher-community.github.io/real-time-laravel/) by Pusher
* [Learning Laravel's Eloquent](https://www.packtpub.com/web-development/learning-laravel%E2%80%99s-eloquent) by Francesco Malatesta
* [Laravel 5 Learn Easy](https://leanpub.com/laravel5learneasy) by Sanjib Sinha
* [Laravel and AngularJS](https://leanpub.com/laravel-and-angularjs) by Daniel Schmitz and Daniel Pedrinha Georgii
* [Laravel Collections Unraveled](https://leanpub.com/laravelcollectionsunraveled) by Jeff Madsen
* [Writing APIs With Lumen](https://leanpub.com/lumen-apis) by Paul Redmond
* [The Laravel Survival Guide](https://leanpub.com/laravelsurvivalguide) by Tony Lea
* [Laraboot: Laravel 5 For Beginners](https://leanpub.com/laravel-5-for-beginners-laraboot) by Bill Keck
* [Laravel 5.4 For Beginners](https://leanpub.com/laravel-5-4-for-beginners) by Bill Keck
* [Laravel Up & Running](https://www.amazon.com/gp/product/1491936088) by Matt Stauffer
* [Laravel Companion](https://leanpub.com/laravelcompanion-secondedition) by Johnathon Koster
* [Deploy Laravel on AWS with CloudFormation](https://leanpub.com/laravel-aws) by Lionel Martin
* [React Native and Laravel for Future Mobile Development](https://leanpub.com/rn_laravel) by Ega Radiegtya
* [Servers for Hackers](https://book.serversforhackers.com) by Chris Fidao
* [Full-Stack Vue.js 2 and Laravel 5](https://www.amazon.com/Full-Stack-Vue-js-Laravel-frontend-together/dp/1788299582) by Anthony Gore

## Starter Projects

* [Spark](https://spark.laravel.com/)
* [LaraAdmin](https://github.com/dwijitsolutions/laraadmin)
* [Grafite Builder](https://github.com/GrafiteInc/Builder)
* [Laravel Boilerplate](https://github.com/rappasoft/laravel-5-boilerplate)
* [Laravel Angular Material Starter](https://github.com/jadjoubran/laravel5-angular-material-starter)
* [AdminLTE Laravel](https://github.com/acacha/adminlte-laravel)
* [Laravel Hackathon Starter](https://github.com/unicodeveloper/laravel-hackathon-starter)
* [Laravel API Starter Kit](https://github.com/joselfonseca/laravel-api)
* [Backpack for Laravel](https://github.com/Laravel-Backpack/Base)
* [SomelineStarter](https://github.com/someline/someline-starter)
* [Laravel Admin](https://github.com/z-song/laravel-admin)
* [Voyager](https://github.com/the-control-group/voyager)
* [Orchid](https://github.com/TheOrchid/Platform)
* [Laravel REST API Boilerplate](https://github.com/francescomalatesta/laravel-api-boilerplate-jwt)
* [Hello API](https://github.com/Porto-SAP/Hello-API)
* [REST API With Lumen](https://github.com/hasib32/rest-api-with-lumen)
* [Laravel Zero - Console application](https://github.com/laravel-zero/laravel-zero)
* [Apiato](https://github.com/apiato/apiato)

## Codebases for Reference

* [Cachet](https://github.com/cachethq/Cachet) - Status page system for websites and APIs
* [Deployer](https://github.com/REBELinBLUE/deployer) - Application deployment system
* [GitScrum](https://github.com/renatomarinho/laravel-gitscrum) - Task management with Git and Scrum
* [Invoice Ninja](https://github.com/invoiceninja/invoiceninja) - Invoicing, expenses, & time-tracking application
* [Koel](https://github.com/phanan/koel) - Personal music streaming server
* [Laravel.io](https://github.com/laravelio/portal) - Source for the Laravel.io Community Portal
* [Attendize](https://github.com/Attendize/Attendize) - Ticket selling and event management platform
* [Antvel](https://github.com/ant-vel/App) - Ecommerce platform
* [Jigsaw](https://github.com/tightenco/jigsaw) - Static site generator
* [Canvas](https://github.com/austintoddj/Canvas) - Minimal Blogging Application For Developers
* [Vuedo](https://github.com/Vuedo/vuedo) - Vuedo is blog platform, built with Laravel and Vue.js
* [Screeenly](https://github.com/stefanzweifel/screeenly) - Create website screenshots through an API
* [Voten](https://github.com/voten-co/voten) - A real-time social bookmarking for the 21st century
* [Monica](https://github.com/monicahq/monica) - Personal relationship management system

## Content Management Systems

* [OctoberCMS](https://github.com/octobercms/october)
* [PyroCMS](https://github.com/pyrocms/pyrocms)
* [Lavalite](https://github.com/LavaLite/cms)
* [TypiCMS](https://github.com/typicms/base)
* [Asgard CMS](https://github.com/AsgardCms/Platform)
* [Microweber](https://github.com/microweber/microweber)
* [Coaster CMS](https://github.com/web-feet/coastercms)
* [Statamic](https://statamic.com/)
* [Grafite CMS](https://github.com/GrafiteInc/CMS)
* [Borgert CMS](https://github.com/odirleiborgert/borgert-cms/)
* [PJ Blog](https://github.com/jcc/blog/)
* [Laralum](https://github.com/Laralum/Laralum)

## Podcasts

* [The Laravel Podcast](http://www.laravelpodcast.com/)
* [The Laravel News Podcast](https://laravel-news.com/podcast/)
* [The Laracasts Snippet](https://laracasts.simplecast.fm/)
* [Hecho en Laravel (Spanish)](http://hechoenlaravel.com)

## Community

* [Laracasts Forum](https://laracasts.com/discuss)
* [Laravel.io Forum](http://laravel.io/forum)
* [Larachat Slack](https://larachat.slack.com/) ([Signup](https://larachat.co/slack))
* [Gitter](https://gitter.im/laravel/laravel)
* [IRC Channel](http://laravel.io/chat)
* [StackOverflow](http://stackoverflow.com/questions/tagged/laravel)
* [Twitter](https://twitter.com/laravelphp)
* [Google+](https://plus.google.com/communities/106838454910116161868)
* [Reddit](https://www.reddit.com/r/laravel)
* [Quora](https://www.quora.com/topic/Laravel)
* [Facebook](https://www.facebook.com/LaravelCommunity)
* [LinkedIn](https://www.linkedin.com/groups/4419933/profile)
* [Laraveles Slack](https://laraveles.slack.com) ([Signup](http://laraveles.com/blog/wp-login.php?action=slack-invitation))
* [Laravel UK](https://twitter.com/UKLaravel), [Slack Signup](http://laraveluk.signup.team)

##### Local User Groups

* [Laravel Russia](https://laravel.ru/) ([VK group](http://m.vk.com/laravel_rus))
* [Laravel France](https://laravel.fr/)
* [Laravel Indonesia](http://id-laravel.com/) ([Facebook group](https://www.facebook.com/groups/laravel/))
* [Laravel Brasil](http://www.laravel.com.br/) ([Facebook group](https://www.facebook.com/groups/laravelbrasil/), [Slack](http://slack.laravel.com.br), [Telegram](https://telegram.me/laravelbr), [Google+](https://plus.google.com/communities/116661672628675028624), [GitHub](https://github.com/laravelbrasil))
* [Laravel Turkey](http://www.laravel.gen.tr/) ([Facebook group](https://www.facebook.com/groups/laravelturkiye/))
* [Laravel Nigeria](http://www.laranaija.com/) ([Facebook group](https://www.facebook.com/groups/laravelnigeria/))
* [Laravel China](https://phphub.org/)
* [Laravel Taiwan](https://laravel.tw/) ([Facebook group](https://www.facebook.com/groups/laravel.tw/))
* [Laravel Spanish](http://laraveles.com/foro/)
* [Laravel Korea](https://www.laravel.co.kr/) ([Facebook group](https://www.facebook.com/groups/laravelkorea/))
* [Laravel Japan](http://laravel.jp/) ([Facebook group](https://www.facebook.com/groups/laravel.jp/))
* [Laravel Tokyo](https://laravel.tokyo/) ([Facebook group](https://www.facebook.com/groups/laraveltokyo/))
* [Laravel Malaysia](https://www.facebook.com/groups/laravel.my/)
* [Laravel Algeria Facebook Group](https://www.facebook.com/groups/LaravelAlgeria/)
* [Laravel Greece](http://www.laravel.gr) ([Facebook page](https://www.facebook.com/laravelgr))
* [Laravel Middle East](http://laravelme.com/) ([Facebook page](https://www.facebook.com/laravelme))
* [Laravel Georgia](https://www.facebook.com/groups/laravel.georgia/)
* [Laravel Italy](http://laravel-italia.it)
* [Laravel Viet Nam](https://www.facebook.com/groups/vietnam.laravel/)
* [Laravel Slovenia](https://www.facebook.com/groups/laravelslovenija/)
* [Laravel Hungary](https://laravel.hu)

##### Meetups

* [All Meetups](http://www.meetup.com/topics/laravel/)
* [London Meetup](https://www.meetup.com/London-Laravel/)
* [Buenos Aires, Argentina Meetup](https://www.meetup.com/Laravel-Buenos-Aires/)
* [Morocco Meetup](https://www.meetup.com/moroccophp/)
* [Athens-Greece Meetup](https://www.meetup.com/athens-laravel-meetup/)
* [Copenhagen Meetup](https://www.meetup.com/Copenhagen-Laravel-Meetup/)
* [Detroit Meetup](https://www.meetup.com/Laravel-Detroit/)
* [Paris Meetup](https://www.meetup.com/fr-FR/Paris-Laravel-Meetup/)
* [Melbourne, Australia Meetup](https://www.meetup.com/Melbourne-laravel-Meetup/)
* [Budapest Meetup](https://www.meetup.com/Laravel-Hungary-Meetup/)

## Jobs

* [LaraJobs](https://larajobs.com/)
* [Laravel Gurus](https://laravelgurus.com/)
* [Laravel Certification](https://laravel.com/certification/)

## Hosted Development Tools

* [Laravel Shift](https://laravelshift.com/) - Automated upgrade tool for Laravel projects
* [Laravel Versions {x.y.z}](https://laraver.xyz/) - Monitor Laravel for updates
* [Laravel Schema Designer](http://laravelsd.com/) - Create, export and share database schemas
* [StyleCI](https://styleci.io) - PHP Coding Style Service
* [DependenCI](https://dependenci.miguelpiedrafita.com) - Continous integration tool for Composer

## Miscellaneous

* [CodeCanyon](https://codecanyon.net/tags/laravel?term=laravel) - Paid scripts and plugins

repository: laravelcebu/website

repo_name: laravelcebu/website


text:
# FIDL examples

This directory contains snippets of FIDL that are used throughout the
Fuchsia documentation.

Generally, files in this directory are organized by the documentation file that
the snippets appear in. When changing FIDL here, ensure that any usages are
updated. You can find usages by grepping for the tag name within the
`[START ...]`/`[END ...]` tags.

repository: gnoliyil/fuchsia

branch_name: refs/heads/main

extension: md

license_type: permissive

repo_name: gnoliyil/fuchsia


text:
# <img src="https://tweek.soluto.io/assets/logo-with-background.png" width="400" />

[![Github build status](https://github.com/Soluto/tweek/workflows/Main/badge.svg?branch=master)](https://github.com/Soluto/tweek/actions?query=workflow%3AMain+branch%3Amaster) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/soluto/tweek/blob/master/LICENSE.md) [![Slack](https://tweek-slack.now.sh/badge.svg)](https://join.slack.com/t/tweek/shared_invite/zt-gtbko33a-UjCs2bnZCSvSELziIAfu5g)[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)

<EMAIL_ADDRESS>
### What is Tweek?

Tweek is an open source feature management solution for customizing applications and system behavior without deploying new code.

Tweek aims to be a complete open-source alternative to other industry feature/configuration/experiment management solutions such as Facebook's Gatekeeper, LinkedIn's XLNT, Dropbox's Stormcrow and other commercial SaaS solutions.

#### Features

- Feature toggles, gradual release
- Multi-variant experiments, A/B testing
- Built-in editor with user friendly UI
- Hierarchical configurations
- Advanced targeting of users/groups
- Dependencies between features
- Customizable schema/domain model
- Auditing
- Integrated storage for saving context
- Container friendly
- Integrated OAuth support
- Pluggable storage backend
- Simple RESTful api for fetching configurations
- Scalable

### Getting started

The easiest way to start evaluating Tweek is to run it locally on Docker. Make sure you have the latest [docker (for windows/mac/etc..)](https://www.docker.com/get-docker) version installed (17-06+).

#### Running Tweek

- Clone the repo (`git clone https://github.com/Soluto/tweek.git`).
- [optional] Pull images, run `yarn docker-compose pull --parallel` (optional for getting started fast with Tweek as it's skip build).
- [optional] Newer versions of docker-compose support parallel build, so you can use `yarn docker-compose build --parallel` for faster build.

### Using Docker Compose

- Run (`yarn start`) - this might take a few minutes on the first time.

### Using Tilt

Tilt is a CLI tool that can be used to create an optimal development environment for multi-container apps such as Tweek. It support automatic rebuilding of images and re-running of containers on files' changes.
Additionally, it support more complex live reloading scenarios, like Tweek Editor (React app).
Tweek uses Tilt on top of docker-compose for easier and (usually) faster developer experience (compared to Tilt with k8s).

- Install Tilt (https://docs.tilt.dev/install.html)
- tilt up

### Using Kubernetes

- Install Skaffold (https://github.com/GoogleContainerTools/skaffold)
- Run `skaffold dev --port-forward=false`
- Wait for the environment to be stable (this will take about 10 mins on the first time due to building all images, afterward it can take about 2 mins for environment to stabilize)

### Troubleshooting

- Run (`yarn start --build`) to rebuild all images and start Tweek.

#### Edit your first key

After setting up our environment, we're going to create our first key.
Keys in Tweek are the most basic building blocks, and they represent a container for dynamic value that affect feature behaviors.
Our first key will be a key that is responsible for the color of a "sign up" button.

- Open http://localhost:8081/login in browser.
- Login
  - User Basic auth (user: admin-app, password: 8v/iUG0vTH4BtVgkSn3Tng==)
  - Can also use OIDC mock server login button for testing OIDC (user: User, password: pwd)
- Go to keys page.
- Click on "Add Key"
- Type my_app/sign_button/color
- Set value type to String
- Add default value "red"
- Save changes
- Click on "Add Rule"
- Set Property to Country (user) and set "=" and "Canada" in the other fields
- In Rule value set the value "blue"
- Click "Save changes"

More on [keys and paths](https://tweek.soluto.io/concepts/keys/keys-ands-paths)

#### Querying Tweek

Use curl/postman/chrome to fire GET Request:

- http://localhost:8081/api/v2/values/my_app/sign_button/color -> expected to be "red"
- http://localhost:8081/api/v2/values/my_app/sign_button/color?user.Country=canada -> expected to be "blue"
- http://localhost:8081/api/v2/values/my_app/sign_button/_?user.Country=canada -> expected to be {"color":"blue"}

Using the rest api, an application can query Tweek for getting the right set of values for each specific user.
More on Tweek [Rest api](https://tweek.soluto.io/reference/openapi).

#### Adding context data

Tweek provide UI and rest api for editing context.

- Go to context
- Set Identity Type to User
- Set User id to John
- Click enter
- Set value "Canada" for property Country

After that, we can query Tweek API with:

- http://localhost:8081/api/v2/values/my_app/sign_button/color?user=john -> expected to be "blue"

You can also use the api for updating Tweek context:

- curl -X POST http://localhost:8081/api/v2/context/user/john \
  -H 'content-type: application/json' \
  -H 'x-client-id: admin-app' \
  -H 'x-client-secret: 8v/iUG0vTH4BtVgkSn3Tng==' \
  -d '{
  "country": "Canada"
  }'

More on [Context.](https://tweek.soluto.io/concepts/context/intro-to-context)

#### Gradual feature release

Create a new key in the editor "my_app/sign_button/is_enabled" with value type "boolean" and default value False.
Add a new rule, remove all conditions, set the the rule value to gradual release with 50%.
Try querying configuration with different users and you'll have different results.

- http://localhost:8081/api/v2/values/my_app/sign_button/is_enabled?user=barny
- http://localhost:8081/api/v2/values/my_app/sign_button/is_enabled?user=robin
- http://localhost:8081/api/v2/values/my_app/sign_button/is_enabled?user=ted
- http://localhost:8081/api/v2/values/my_app/sign_button/is_enabled?user=lily
- etc...

More on how multi-variant keys work in Tweek. (link)

### Deployment to production

### FAQ

- Who's using Tweek?
  Tweek is used in large-scale production deployment at Soluto.
- How do I generate ssh keys and a pfx file for use in production?
  There's a script for this purpose in `utils/generate_keys.sh`
- I found a security vulnerability, should I open an issue about it?
  No. Please send an email to<EMAIL_ADDRESS>
### Related projects

[Tweek-Clients](https://github.com/Soluto/tweek-clients) - Tweek REST clients
[Tweek.JPad](https://github.com/soluto/tweek.jpad) - Tweek's internal rules engine

### Additional Resources

- https://martinfowler.com/articles/feature-toggles.html
- https://en.wikipedia.org/wiki/Feature_toggle

license: MIT

repository: Yshayy/tweek

branch_name: refs/heads/master

gha_language: JavaScript

gha_license_id: MIT

repo_name: Yshayy/tweek


text:
# SQL component node {#concept_jpj_rrm_q2b .concept}

## Procedure {#section_ery_5hb_t2b .section}

1.  Create Business Flow

    Click **Manual Business Flow** in the left-side navigation pane, select **Create Business Flow**.

    ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/16319/15525338007961_en-US.png)

2.  Create an SQL component node

    Right-click **Data Development**, and select **Create Data Development Node** \> **SQL Component Node**.

    ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/16325/15525338008127_en-US.png)

3.  To improve the development efficiency, data task developers can use components contributed by project members and tenant members to create data processing nodes.

    -   Components created by members of the local project are located under Project Components.
    -   Components created by tenant members are located under Public Components.
    When create a node, set the node type to the **SQL component node** type, and specify the name of the node.

    ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/16297/15525338017777_en-US.png)

    Specify parameters for the selected component.

    ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/16297/15525338017779_en-US.png)

    Enter the parameter name, and set the parameter type to Table or String.

    Specify three get\_top\_n parameters in sequence.

    Specify the following input table for the parameters of the Table type: test\_project.test\_table.

4.  Node scheduling configuration.

    Click the **Schedule Configuration** on the right of the node task editing area to go to the node scheduling configuration page. For more information, see [Scheduling configuration](reseller.en-US/User Guide/Data development/Scheduling configuration/Basic attributes.md#).

5.  Submit a node.

    After the configuration is completed, click **Save** in the upper left corner of the page or press Ctrl+S to submit \(and unlock\) the node to the development environment.

6.  Publish a node task.

    For more information about the operation, see Release management.

7.  Test in a production environment.

    For more information about the operation, see [Manual task](reseller.en-US/User Guide/O&M Center/Task list/Manual task.md#).

## Upgrade the version of an SQL component node. {#section_tmq_qdq_p2b .section}

After the component developer release a new version, the component users can choose whether to upgrade the use instance of the existing component to the latest version of the used component.

With the component version mechanism, developers can continuously upgrade components and component users can continuously enjoy the improved process execution efficiency and optimized business effects after upgrade of components.

For example, user A uses the v1.0 component developed by user C, and the component owner C upgrades the component to V.2.0. After the upgrade, user A can still use the v1.0 component, but will receive the upgrade reminder. After comparing the new code with the old code, user A finds that the business effects of the new version are better than those of the old version, and therefore can determine whether to upgrade the component to the latest version.

To upgrade an SQL component node developed based on the component template, you only need to select Upgrade, check whether parameter settings of the SQL component node are still effective in the new version, make some adjustments based on the instructions of the new version component, and then submit and release the node like a common SQL component node.

## Interface functions {#section_h3p_32q_p2b .section}

![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/16325/15525338018137_en-US.png)

The interface features are described below:

|No.|Feature|Description|
|:--|:------|:----------|
|1|Save|Click it to save settings of the current component.|
|2|Submit|Click it to submit the current component to the development environment.|
|3|Submit and Unlock|Click it to submit the current node and unlock the node to edit the code.|
|4|Steallock Edit|Click it to steallock edit the node if you are not the owner of the current component.|
|5|Run|Click it to run the component locally in the development environment.|
|6|Advanced Run \(with Parameters\)|Click it to run the code of the current node using the parameters configured for the code.**Note:** Advanced Run is unavailable to a Shell node.

|
|7|Stop Run|Click it to stop a running component.|
|8|Re-load|Click it to refresh the interface and restore the last saved status. Unsaved content will be lost.**Note:** If cache is enabled in the configuration center, after the interface is refreshed, you are notified of the code that is cached but not saved. In this case, select the version that you need.

|
|9|Parameter Settings|Click it to view the component information, input parameter settings, and output parameter settings.|
|10|Attributes|Click it set the owner, description, parameters, and resource group of the node.|
|11|Kinship|Click it to view the map of kinship between SQL component nodes and the internal kinship map of each SQL component node.|
|12|Version|Click it to view the submission and release records of the current component.|

url: https://raw.githubusercontent.com/xiaoyeziji/ide/eb85bd3aadb35d40931fc8b13803b685b65693c7/intl.en-US/User Guide/Data development/Manual task node type/SQL component node.md

repository: xiaoyeziji/ide

filename: SQL component node.md

repo_name: xiaoyeziji/ide


text:
### Project Overview

 A project on natural language processing

### Learnings from the project

 I learnt several different methods to work on text data

### Approach taken to solve the problem

 First study before the problem and then solve accordingly to what is required.

### Challenges faced

 To understand various methods to separate the text data was challenging and I learnt methods like bad_of _words which was really helpful

### Additional pointers

 No


text:
## Introduction

Humant is a tool for any company to manage details employees and employers. Humant is made in such a way that any employee either he is Manger or fresher can understand and able to use it.
Humant will make it easy for your HR team to start managing your HR effectively and efficiently. HRMS is an indispensable tool not just for HR but for the entire company

## Informations
-  Status: under development
-   Latest version 1.0
-   Sector: service
-   Created: November 2020
-   Last updated: November 2020

## Table of contents
* [Documentation](#general-info)
* [Demo](#demo)
* [Screenshots](#screenshots)
* [Technologies](#technologies)
* [Setup](#setup)
* [Features](#features)
* [Status](#status)
* [Contact](#contact)
* [License](#license)

## Documentation
https://github.com/aniskchaou/HUMANT-FRONTEND-ADMIN/wiki

## Demo
https://humant.herokuapp.com/

## Screenshots

## Technologies
* Spring boot
* Angular

## Setup

## Features
 - Collect and integrate the variable payroll elements of each employee
-   Maintain personnel files
-   Manage employment contracts (establishment, monitoring, suspension, termination)
-   Administratively manage leave and retirement of the employee
-   Produce an annual training plan corresponding to both the needs of the company and the development wishes of employees
-   Offer skills assessments

## Contact
<EMAIL_ADDRESS>
## License
MIT License


text:
## Community Bonding Week-7 Summary
> I worked on the "Development Guidelines" and some part of the "Documentation Guidelines" in this week.

### Day 1
* Wrote :black_nib: about the “Technical Requirements” for the projects under CHAOSS

### Day 2
* Researched on the “Project Structure of the CHAOSS community
* Wrote about Project Structure :memo:
* Researched on the Contributing guidelines
* Wrote the “Contributing Workflow” within the community-handbook

### Day 3
* Pulled the latest changes :pushpin: of community-handbook from the GitHub to gitbook.
* Planned to share the announcement of the new handbook on the mailing list and discussed with Georg in the GSoD office hours

### Day 4
* Wrote the Blog Post for Week-6 and updated the community
* Synced up the work on the GSoD Project Tracker on Github
* Researched :microscope: on the “Documentation Contribution Guidelines”

### Day 5-6
* Researched on the Documentation process
* Wrote context in response to the Documentation process
* Figured out :file_folder:the basic workflow to mention in the gitbook pages

### Day 7
* Wrote about “Getting Started” for Documentation in the gitbook


text:
#Sample-Profile-Page: A c22coders Project
A Sample Profile Page. Under MIT License.
##So what is this exactly?
This is a sample profile page. This is what could be used for a "profile" page for users, and you can adapt this to your needs. In GitHub's case, it looks like [this](https://github.com/settings/profile).
##Usage
This site can be used as a profile page and adapted to your needs.
Just be sure to credit `c22coders` on GitHub, with a link to this repository in your source code.

branch_name: refs/heads/gh-pages

gha_language: HTML


text:
---
layout: post
title:  "Practical reverse engineering page35 exercises part 1"
date:   2018-03-26
summary: Practical reverse engineering page35 exercises part 1
---

**1.** Repeat the walk through by yourself. Draw the stack layout, including parameters and local variables.

| Stack 1     |
| ----------- |
| EDI         |           |
| …           | [EBP-130] |
| IDT         | [EBP-8]   |
| IDT base    | [EBP-6]   |
| Old ebp     | [EBP]     |
| Return addr | [EBP+4]   |

In the first frame it subs 130h from esp creating local variable space on the stack then sidt writes the IDT to ebp-8. Ebp-6 is then moved into eax and compared, if bellow or equal to 8003F400h jump and if not bellow 80047400h jump. If neither jump is taken it will clean up the stack and return.

Note 80047400h - 8003F400h is the base of IDT for windows xp, looks like it is testing if the machine is win xp.

| Stack 2     |
| ----------- |
| 2           |           |
| 0           |           |
| EDI         |           |
| Init memory | [EBP-300] |
| 0           | [EBP-130] |
| IDT         | [EBP-8]   |
| IDT base    | [EBP-6]   |
| Old ebp     | [EBP]     |
| Return addr | [EBP+4]   |

Eax is zeroed and 49h moved into ecx, then [ebp-12ch] moved into edi and 0 into [ebp-130]. 0 and 2 are pushed onto the stack and rep stosd is executed. This will copy 0 into the location pointed to by edi 49h times, effectively zeroing out memory. Then createtoolhelp32snapshot(2, 0) is called.

From the MSDN documentation it looks like this function will take a snapshot of all the processes, used to enumerate them, returns a handle to the snapshot. The return value is then moved into edi and compared to -1.

| Stack 3                  |
| ------------------------ |
| EDI (handle to snapshot) |           |
| EAX (EBP-130)            |           |
| ESI (1)                  |           |
| EDI                      |           |
| Struct                   | [EBP-300] |
| 128h                     | [EBP-130] |
| IDT                      | [EBP-8]   |
| IDT base                 | [EBP-6]   |
| Old ebp                  | [EBP]     |
| Return addr              | [EBP+4]   |

ebp-130 is then moved into eax and esi (1), eax (ebp-130) and edi (handle) are pushed to the stack and 128h is moved into ebp-130. Then process32first(handle, pointer to processentry32 struct) is called. This will return true if the first entry has been copied into the buffer (ebp-300), the result is tested if not zero it will continue. If it is it will jump to other code.

| Stack 4               |           || Stack 5               |
| --------------------- |           || --------------------- |
| Offset "explorer.exe" |           ||                       |
| ECX (string)          |           ||                       |
| ESI (1)               |           || ESI (1)               |           |
| EDI                   |           || EDI                   |           |
| Struct                | [EBP-300] || Struct                | [EBP-300] |
| 128h                  | [EBP-130] || 128h                  | [EBP-130] |
| IDT                   | [EBP-8]   || IDT                   | [EBP-8]   |
| IDT base              | [EBP-6]   || IDT base              | [EBP-6]   |
| Old ebp               | [EBP]     || Old ebp               | [EBP]     |
| Return addr           | [EBP+4]   || Return addr           | [EBP+4]   |

Note that in stdcall the stack is cleaned up by the callee and the 2 parameters for the previous function have been removed. _stricmp is then moved into edi, cdecl calling convention is used here as the caller cleans the stack. Ebp-268 is then loaded into ecx and an offset string and ecx are pushed onto the stack before calling esi _stricmp("explorer.exe", ecx). The stack is then cleaned up and the result tested. If its zero (a match) then it jumps to other code else it continues.

| Stack 6               |           || Stack 7               |
| --------------------- |           || --------------------- |
| EDI (handle)          |           || Offset "explorer.exe" |           |
| EDX (EBP-130)         |           || EAX (string)          |           |
| ESI (1)               |           || ESI (1)               |           |
| EDI                   |           || EDI                   |           |
| Struct                | [EBP-300] || Struct                | [EBP-300] |
| 128h                  | [EBP-130] || 128h                  | [EBP-130] |
| IDT                   | [EBP-8]   || IDT                   | [EBP-8]   |
| IDT base              | [EBP-6]   || IDT base              | [EBP-6]   |
| Old ebp               | [EBP]     || Old ebp               | [EBP]     |
| Return addr           | [EBP+4]   || Return addr           | [EBP+4]   |

It loads ebp-130 into edx and edx and edi are pushed onto the stack before calling process32next(handle, struct). This gets the next process item and the result is tested. If it gets an item then it enters a loop that executes stricmp("explorer.exe", string), if it gets a match it jumps to other code else loop back and the next process item is got, process32next(handle, struct). If that doesn’t get an item it will jump to other code. This will continue until the string matches "explorer.exe" or runs out of items.

| Stack 8     |           || Stack 9     |
| ----------- |           || ----------- |
| ESI (1)     |           ||             |
| EDI         |           || EDI         |           |
| Struct      | [EBP-300] || Struct      | [EBP-300] |
| 128h        | [EBP-130] || 128h        | [EBP-130] |
| IDT         | [EBP-8]   || IDT         | [EBP-8]   |
| IDT base    | [EBP-6]   || IDT base    | [EBP-6]   |
| Old ebp     | [EBP]     || Old ebp     | [EBP]     |
| Return addr | [EBP+4]   || Return addr | [EBP+4]   |

If the strings match, ebp-280 is moved into eax and ebp-296 into ecx, these are then compared. If they don’t match it returns else it continues. If it runs out of process items it moves ebp+fdwreason into eax/ecx, compares and returns.

| Stack 10       |
| -------------- |
| 0              |           |
| 0              |           |
| Offset address |           |
| 0              |           |
| 0              |           |
| 0              |           |
| EDI            |           |
| Struct         | [EBP-300] |
| 128h           | [EBP-130] |
| IDT            | [EBP-8]   |
| IDT base       | [EBP-6]   |
| Old ebp        | [EBP]     |
| Return addr    | [EBP+4]   |

Note that fdwreason indicates why the dll entry point was called, there are values in the documentation (1, 0, 2 and 3). Fdwreason is then moved into eax and decremented by 1 (note that if 0 it will be FFFFFFFF). If the result is not zero then 1 is moved into eax and returns. Else it creates a thread createthread(0, 0, offset addr, 0, 0 ,0). Once created it moves 1 into eax, cleans up the stack and returns.

**2.** In the example walk through, we did a nearly one to one translation of the assembly code to c. as an exercise re-decompile this whole function so that it looks more natural. what can you say about the developers skill level/experience? explain your reasons. Can you do a better job?

<figure class="lineno-container">
{% highlight c linenos=table %}
/* pseudo c for sample j dll main */

typedef struct _IDTR(){
  DWORD base;
  SHORT limit;
} IDTR, *PIDTR;

BOOL __stdcall DLLmain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)

{
  IDTR idtr;
  __sidt(&idtr);
  if (idtr.base > 0x8003F400 && idtr.base < 0x80047400){
    return FALSE;
  }

  // zero out memory
  PROCESSENTRY32 pe;
  memset(&pe, 0, 0x49);

  hsnapshot = CreateToolhelp32Snapshot(2, 0);
  if (!hsnapshot){
    return FALSE;
  }

  pe.dwSize = sizeof(PROCESSENTRY32);

  if (Process32First(hsnapshot, &pe) != FALSE){
      do {
        if (_stricmp(pe.szExeFile, "explorer.exe") == 0){
          if (pe.th32ParentProcessID == pe.th32ProcessID){
            break;
          }
        }
      } while (Process32Next(hsnapshot, &pe) != FALSE);
      if (fdwReason == 0){
        return FALSE;
      }
  } else if (fdwReason == 0){
    return FALSE;
  }

  if (fdwReason == 0 || fdwReason == 1){
    return TRUE;
  } else {
    CreateThread(0,0,0, 0x100032d0, 0,0)
    return TRUE;
  }
}
{% endhighlight %}
</figure>

The developer uses a method of testing the base address of the IDT to check if its win xp. This is hardcoded and easily spotted by an analyst. Also its not full proof as the address can change if running on another core that isnt core 0. The code also lacks some error checking for memset and createthread and not closing the snapshot handle. Coming from a Python background not having done much C coding the logic seams a bit odd eg the main do while loop and the checking of fdwreason.

**3.** In some of the assembly listings, the function name has a @ prefix followed by a number. explain when and why this decoration exists.

Both stdcall and fastcall use the @ name decoration or prefix followed by a number (@n or @12). This is used to represent the number of bytes passed to the function, note that the return instruction then has an optional argument of the same number of bytes to pop off the stack when it returns. The number will always be stack aligned eg 4, 8, 12 etc.

_DllMain@12   // will call dll main passing 12 bytes
retn 0ch      // will pop off 12 bytes when returning to clean up the stack


text:
##  Exceptionless Svelte Kit Example

This example shows how to use the `@exceptionless/browser` package for client side Svelte Kit and `@exceptionless/node` for server side Svelte Kit. These is both
a client side error hook `hooks.client.js` and a server side error hook `hooks.server.js`.

To run locally, follow these steps:

1. `git clone https://github.com/exceptionless/Exceptionless.JavaScript`
2. `cd Exceptionless.Javascript`
3. `npm install`
4. `cd example/svelte-kit`
5. `npm run dev -- --open`

gha_language: TypeScript


text:
NSComboBox
=====================

Shows how to set up an `NSComboBox` to use the `<NSComboBoxDataSource>` and `<NSComboBoxDelegate>` protocols.

repository: bvanderv/NSComboBox

repo_name: bvanderv/NSComboBox


text:
# Fast Runtime Type Helpers

## Description

The library contains set of helper methods that provide fast runtime access to object's properties and fields.
This works up to 10x times faster than the classic reflection using GetField() / GetProperty() and then GetValue / SetValue().

There are also methods that generate .NET types during run time from meta data.
These types implement a IObjectAccessor interface which gives fast access to class members by indexer.

## Installation

The library can be built from source or also is available as a [NuGet package][6e5dff96]:
```
PM> Install-Package FastRTHelpers
```

  [6e5dff96]: https://www.nuget.org/packages/FastRTHelpers/ "FastRTHelpers"

## Usage

### Type-level member accessors

**Generic version**

```
var accessor = TypeAccessor.GetMemberAccessor(x => x.MemberName);
var value = accessor.GetValue(obj);
accessor.SetValue(obj, newValue);
```

**Basic version**
```
var accessor = TypeAccessor.GetMemberAccessor(typeof(T), "MemberName");
var value = accessor.GetValue(obj);
accessor.SetValue(obj, newValue);
```

### Object-level member accessors

*Implemented as set of extension methods*

**Generic version**

```
SomeRealType obj = ...; //SomeRealType has a member (property or field) "MemberName"
var objectAccessor = obj.GetObjectMemberAccessor(x => x.MemberName);
objectAccessor.Value = newValue;
```

**Basic version**

```
object obj = ...;
var objectAccessor = obj.GetObjectMemberAccessor("MemberName");
var value = objectAccessor.GetValue();
objectAccessor.SetValue(newValue);
```

### Type generation from a list of field definitions [string, Type]

**How to generate a new type that implements IObjectAccessor**

```
Dictionary<string, Type> typeDef = new Dictionary<string, Type>
{
	{"StringProp", typeof(String)},
	{"IntProp", typeof(int)},
	{"DateProp", typeof(DateTime)},
	{"DoubleNullableProp", typeof(double?)}
};
Type t = TypeGenerator.MakeType("TestClassA", typeDef);
```

**How to instantiate a new object (type is auto-generated on demand if necessary)**

```
Dictionary<string, object> objDef = new Dictionary<string, object>
{
	{"StringProp", "test data"},
	{"IntProp", 48},
	{"DateProp", DateTime.Now},
	{"DoubleProp", 45.98}
};
var obj = TypeGenerator.MakeObject("NewTypeB", objDef);
obj["StringProp"] = "new data";
```

**How to generate linked types from model definition**

```
var elTypeDef = TypeGenerator.MakeTypeDef("TElement", new Dictionary<string, Type>
{
    {"StringProp", typeof(String)},
});
var pointTypeDef = TypeGenerator.MakeTypeDef("TPoint", new Dictionary<string, Type>
{
    {"X", typeof(double)},
    {"Y", typeof(double)}
});
var objTypeDef = TypeGenerator.MakeTypeDef("TRoot", new Dictionary<string, Type>
{
    {"ListProp", TypeGenerator.MakeListDef(elTypeDef)},
    {"Center", pointTypeDef},
    {"Parent", TypeGenerator.MakeTypeRef("TRoot")},
    {"Nodes", TypeGenerator.MakeListDef(TypeGenerator.MakeTypeRef("TRoot"))}
});

IObjectFactory objFactory = objTypeDef.MakeObjectFactory();
IObjectFactory elFactory = elTypeDef.MakeObjectFactory();
IObjectFactory pointFactory = pointTypeDef.MakeObjectFactory();

var list = elFactory.NewList();
list.Add(elFactory.NewObject());
list.Add(elFactory.NewObject());

var obj = objFactory.NewObjectAccessor();
obj.SetValue("ListProp", list);
foreach (var el in obj.GetValue<IEnumerable<IObjectAccessor>>("ListProp"))
    el[0] = "test";

var st = pointFactory.NewObjectAccessor();
st.SetValue("X", 10.5);
st.SetValue("Y", 48.96);

obj.SetValue("Center", st);

var parent = objFactory.NewObjectAccessor();
obj.SetValue("Parent", parent);

var nodes = objFactory.NewList();
nodes.Add(obj);
parent.SetValue("Nodes", nodes);

```

**Advanced: implementing ITypeDef and IListDef interfaces to generate types**

It is possible to implement special interfaces which describe your model:

* ITypeDef: provides information about type name and properties
* IListDef: definition of generic list for linked objects

In order to reference an already defined type in your model, the member type must be defined with `TypeGenerator.MakeTypeRef("TypeName")`

Then just call TypeGenerator.MakeType() on the root type in the model.

## TODO
1. dynamic objects support
2. build fast delegates for method calls


text:
---
path: '/issues/2020/feb/47'
published: true
date: '2020-02-20'
title: 'Issue #47'
contentTitle: 'Using JavaScript Mixins The Good Parts, While You Weren’t Looking, CSS Gradients Got Better, Web Packaging Proposal to Enable Offline Distribution, Installation and Usage of PWAs and Websites...'
---

                Using JavaScript Mixins The Good Parts

A mixin is an abstract subclass; i.e. a subclass definition that may be applied to different superclasses to create a related family of modified classes.

dev.to Thomas Allmer

                A new technique for making responsive, JavaScript-free charts

There are countless libraries for generating charts on the web. Each serves a slightly different niche, but all of them have one thing in common: they require JavaScript.

dev.to Rich Harris

                Web Packaging Proposal to Enable Offline Distribution, Installation and Usage of PWAs and Websites

The Web Packaging proposal was recently published by the Web Platform Incubator Community Group. Web Bundles, more formally known as Bundled HTTP Exchanges, are a key part of the packaging proposal.

www.infoq.com Infoq

                While You Weren’t Looking, CSS Gradients Got Better

One thing that caught my eye on the list of features for Lea Verou's conic-gradient() polyfill was the last item: Surprisingly, I recently discovered most people aren't even aware that double position for gradient stops is something that actually exists in the spec, so I decided to write about it.

css-tricks.com CSS Tricks

CSS Containment

The aim of the CSS Containment specification is to improve performance of web pages by allowing developers to isolate a subtree of the page from the rest of the page.

developer.mozilla.org Mozilla

Fixing memory leaks in web applications

Part of the bargain we struck when we switched from building server-rendered websites to client-rendered SPAs is that we suddenly had to take a lot more care with the resources on the user’s device.

nolanlawson.com nolanlawson

repository: code-kotis/this-week-in-web

repo_name: code-kotis/this-week-in-web


text:
# Temporal Output Discrepancy for Active Learning
 PyTorch implementation of [Semi-Supervised Active Learning with Temporal Output Discrepancy](https://arxiv.org/abs/2107.14153), ICCV 2021.

## Introduction
 * We present a loss measurement **Temporal Output Discrepancy (TOD)** that estimates the loss of unlabeled samples by evaluating the distance of model outputs at different SGD steps.
 * We theoretically demonstrate that *TOD is a lower-bound of accumulated sample loss*.
 * An unlabeled data sampling strategy and a semi-supervised training scheme are developed for active learning based on TOD.

### TOD Active Data Selection

### Results

## Requirements

 numpy

 torch >= 1.0.1

 torchvision >= 0.2.1

## Data Preparation
 Download image classification datasets (e.g., Cifar-10, Cifar-100, SVHN, or Caltech101) and put them under `./data`.

 If you would like to try Caltech101 dataset, please download the pretrained [ResNet-18](https://download.pytorch.org/models/resnet18-5c106cde.pth) model and put it under `./`.

 Directory structure should be like:
 ```
 TOD
 |-- data
     |-- 101_ObjectCategories
         |-- accordion
         |-- airplanes
         |-- anchor
         |-- ...
     |-- cifar-10-batches-py
     |-- cifar-100-python
     |-- svhn
         |-- train_32x32.mat
         |-- test_32x32.mat
 |-- resnet18-5c106cde.pth
 |-- ...
 ```

## Quick Start
 Run TOD active learning experiment on Cifar-10:
 ```
 bash run.sh
 ```

## Specify Datasets, Active Sampling Strategies, and Auxiliary Losses
 The dataset configurations, active learning settings (trials and cycles), and neural network training settings can be found in `./config` folder.

 We provide implementations of active data sampling strategies including *random sampling*, *learning loss for active learning ([LL4AL](https://arxiv.org/abs/1905.03677))*, and our *TOD sampling*. Use `--sampling` to specify a sampling strategy.

 We also provide implementations of auxiliary training losses including *[LL4AL](https://arxiv.org/abs/1905.03677)* and our *COD loss*. Use `--auxiliary` to specify an auxiliary loss.

 ### Examples

 Cifar-100 dataset, TOD sampling, no unsupervised loss:
 ```
 python main_TOD.py --config cifar100 --sampling TOD --auxiliary NONE
 ```

 Caltech101 dataset, random sampling, COD loss:
  ```
 python main_TOD.py --config caltech101 --sampling RANDOM --auxiliary TOD
 ```

 SVHN dataset, LL4AL sampling, LL4AL loss:
 ```
 python main_LL4AL.py --config svhn --sampling LL4AL --auxiliary LL4AL
 ```

## Citation
```
 @inproceedings{huang2021semi,
  title={Semi-Supervised Active Learning with Temporal Output Discrepancy},
  author={Huang, Siyu and Wang, Tainyang and Xiong, Haoyi and Huan, Jun and Dou, Dejing},
  booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
  year={2021}
 }
```

## Contact
 [Siyu Huang](https://siyuhuang.github.io/)

<EMAIL_ADDRESS>

repository: ksasi/TOD

repo_name: ksasi/TOD


text:
# [Music player :musical_note:](https://pratikh.github.io/music-player) · ![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)

This React project is used to demonstrate below functionality:

* Show basic audio player related functionality
* Play local and URL audio using [HawlerJS](https://github.com/goldfire/howler.js#documentation).
* Store and fetch audio files then play audios.
* Using github actions & environments to build then deployed using Github Pages.

For demo click on title text if you like it give a :star:  or wants to improve please raise PR's. Have fun :wink:

repository: Pratikh/music-player

repo_name: Pratikh/music-player


text:
# PolyAuth Element

Webcomponents for the PolyAuth Web API.

### Introduction

PolyAuth can bring new ways of authentication to your application.
It makes your application much more accessible by providing
a simple authentication experience for users.
It syncs their profiles in the cloud
and takes care of an entire process of authentication.

Read [more][polyauth-home-page].

### How to use

`bower install polyauth-elements/polyauth-element`

### License

The source code is provided under the terms of [the MIT license][license].

[license]:http://www.opensource.org/licenses/MIT
[polyauth-home-page]:http://polyauth.com

repository: polyauth-elements/polyauth-element

repo_name: polyauth-elements/polyauth-element


text:
[![Build Status](https://travis-ci.org/cuzfrog/sbt-tmpfs.svg?branch=master)](https://travis-ci.org/cuzfrog/sbt-tmpfs)
[ ![Download](https://api.bintray.com/packages/cuzfrog/sbt-plugins/sbt-tmpfs/images/download.svg) ](https://bintray.com/cuzfrog/sbt-plugins/sbt-tmpfs/_latestVersion)

# sbt-tmpfs
sbt plugin that automatically "tmpfsifies" directories to speed up development.

sbt 1.0.0+.  For those of you who have trouble downloading `doc` and `src` through IDEA,  use `reload plugins` then `updateClassifiers` in console.

## Why tmpfs?

Comparison with common specs:

| Tpe  | Read speed | Response time | Power usage |
| ------- | ------ | ------- | ------- |
| ram  | 30GB/s  | 100 ns | 2 - 3 w |
| ssd  | 500MB/s  | 0.1 ms | 1 - 3 w |
| sas-hdd  | fast in raid  | 20+ ms | 15 w |

RAM is thousands of times faster than SSD. Tmpfs provides an easy way to leverage RAM.
More, **RAM is immune to the exertion brought by infinite compilation/clean cycles.**
While SSD is tolerant, developers are not.
[Latency Numbers Every Programmer Should Know](https://gist.github.com/jboner/2841832)

## Why sbt-tmpfs?

sbt-tmpfs brings automation to leverage tmpfs to speedup your development.

## How to use:

##### Note: due to [#1444](https://github.com/sbt/sbt/issues/1444), make sure sbt >= 0.13.14

Mount your `/tmp` with tmpfs, by adding this line to your `/etc/fstab` if you haven't yet:

    tmpfs /tmp tmpfs rw,nosuid,nodev,noatime

Reboot you pc.

Add below to `project/plugins.sbt`:

    addSbtPlugin("com.github.cuzfrog" % "sbt-tmpfs" % "0.3.4") //for sbt 1.1 and sbt 0.13

Now, enjoy RAM speed!

(If you use sbt-revolver `reStart`, run `compile` to trigger sbt-tmpfs first.)

## Detail and Configuration:

### Directory mode:
There are 2 strategies to use tmpfs:

* Symlink into existing tmpfs dir. (Harder management.)
* Directly mount the point with tmpfs. (Requires super privilege)

**Symlink** is the default one, since it does not require super.
Default linking dirs include `crossTarget` and `target/resolution-cache`. Add more dirs to be linked:
```scala
tmpfsLinkDirectories ++= Seq(//your dirs here.)
```
Broken symlink will be overwrite by sbt-tmpfs.
(Symlink of some dir like `streams` may lead to sbt error when symlink is broken after a reboot.)
The base tmpfs dir where symlinks point to, by default, is `/tmp`,
which is controlled by `tmpfsLinkBaseDirectory`.

When **Mount** mode is in use, sbt command line may require super password to execute shell command.
Mount size limit key:`tmpfsMountSizeLimit` , shell command can also be changed by `tmpfsMountCommand`.
Default mount point is `target`. Add more dirs to be mounted:
```scala
tmpfsMountDirectories ++= Seq(//your dirs here.)
```
In fact, _Mount_ mode is recommended. It's easier to handle in most cases,
and not likely to cause some unexpectation.

You can set below in your build.sbt.
```scala
tmpfsDirectoryMode := TmpfsDirectoryMode.Mount
onLoad in Global := {
  val insertCommand: State => State =
    (state: State) =>
      state.copy(remainingCommands = Exec(";project1/tmpfsOn;project2/tmpfsOn", None) +: state.remainingCommands)
  (onLoad in Global).value andThen insertCommand
}
```
------------------
Changing mode after the other has been done, will cause some minor inconsistency.
For example: if `target` has been mounted first, `tmpfsLink` task may have no effect.
It will realize that dirs inside `target` are all of tmpfs now, so it aborts linking.
Fortunately, most of the inconsistency will be repaired after a reboot or clean.

### Work flow:

sbt-tmpfs checks target dirs defined in key `tmpfsLinkDirectories` or `tmpfsMountDirectories`
 and mounts/links tmpfs when necessary.

Under _Symlink_ mode, when user does a `clean`, symlinks themselves will be purged.
When new symlinks are created, sbt-tmpfs deletes old dirs in tmpfs that old symlinks referenced.

Task `tmpfsOn`: check and link/mount when needed.
Dyn-defined by mode as `tmpfsLink` or `tmpfsMount`.

Task `tmpfsLink`: check and link when needed. runBefore `update`, triggeredBy `clean`.

Task `tmpfsMount`: check and mount when needed.

Task `tmpfsSyncMapping`: sync mapped dirs, triggered by above.

On initializing, sbt-tmpfs will try to clean dead(broken) symlinks, possibly created last time.

### Map and sync dirs:
Sometimes, we want to speedup some dirs while wanting to preserve them on disk, like `node_modules`,
we can map these dirs.
```scala
tmpfsMappingDirectories := Map(
  sourceDir -> Seq(destDir) //sourceDir is somewhere on disk.
)
```
sbt-tmpfs will link/mount `destDir` with tmpfs,
if they are not an active symlink or already of tmpfs,
and automatically does one-way-synchronization: from source to destination.

There is an Interesting [Test: sbt.IO-vs-rsync-vs-cp](fileSyncTest/FileSyncTest.md)
 about choosing which method to do the sync.

`destDir`s are added to `cleanKeepFiles` by sbt-tmpfs automatically
(but only direct children of `target` take effect).

### Debug info:
sbt-tmpfs has thorough debug log. Set log level to debug in tasks respectively:
```scala
logLevel in tmpfsOn := Level.Debug
logLevel in tmpfsLink := Level.Debug
logLevel in tmpfsMount := Level.Debug
logLevel in tmpfsSyncMapping := Level.Debug
```
## About

Author: Cause Chung<EMAIL_ADDRESS>
License: [Apache License Version 2.0](LICENSE)

repository: cuzfrog/sbt-tmpfs

gha_language: Scala

repo_name: cuzfrog/sbt-tmpfs


text:
app-authz-rest-employee: SpringBoot REST Service Protected Using Keycloak Authorization Services
===================================================

Level: Beginner
Technologies: SpringBoot
Summary: SpringBoot REST Service Protected Using Keycloak Authorization Services
Target Product: Keycloak
Source: <https://github.com/redhat-developer/redhat-sso-quickstarts>

What is it?
-----------

The `app-authz-rest-employee` quickstart demonstrates how to protect a SpringBoot REST service using Keycloak Authorization Services.

This quickstart provides a RESTful API exposing a single endpoint to obtain information about employees. Employees
can only obtain information about themselves, but access is not granted if trying to obtain information about other employee.

However, users granted with a role `people-manager` are also allowed to access information about any employee.

The endpoint is available at:

```$bash
http://localhost:8080/api/{employee}
```

Where `{employee}` should be replaced by the employee's username, such as `/api/alice`.

You can use two distinct users to access this application:

|Username|Password|Roles|
|---|---|---|
|alice|alice|user|
|jdoe|jdoe|user, people-manager|

The quickstart demonstrates how to use Keycloak Authorization Services to:

* Pass information about the execution environment to policies in order to evaluate permissions for a resource
* Use a JavaScript-based policy to define constraints based on the execution environment
* Mix different policies and define how permissions should be evaluated

System Requirements
-------------------

All you need to build this project is Java 8.0 (Java SDK 1.8) or later and Maven 3.1.1 or later.

Configuration in Keycloak
-----------------------

Prior to running the quickstart you need to create a `realm` in Keycloak with all the necessary configuration to deploy and run the quickstart.

Make sure your Keycloak server is running on <http://localhost:8180/>. For that, you can start the server using the command below:

   ````
   cd {KEYCLOAK_HOME}/bin
   ./standalone.sh -Djboss.socket.binding.port-offset=100

   ````

You should also deploy some JS policies into the Keycloak Server. For that, perform the following steps:

   ````
   mvn -f ../authz-js-policies clean install && cp ../authz-js-policies/target/authz-js-policies.jar {KEYCLOAK_HOME}/standalone/deployments
   ````

The following steps show how to create the realm required for this quickstart:

* Open the Keycloak Admin Console
* In the top left corner dropdown menu that is titled `Master`, click `Add Realm`. If you are logged in to the master realm this dropdown menu lists all the realms created.
* For this quickstart we are not going to manually create the realm, but import all configuration from a JSON file. Click on `Select File` and import the [config/quickstart-realm.json](config/quickstart-realm.json).
* Click `Create`

The steps above will result on a new `spring-boot-quickstart` realm.

Build and Run the Quickstart
-------------------------------

If your server is up and running, perform the following steps to start the application:

1. Open a terminal and navigate to the root directory of this quickstart.

2. The following shows the command to run the application:

   ````
   mvn spring-boot:run

   ````

Obtaining an OAuth2 Access Token
---------------------

First thing, your client needs to obtain an OAuth2 access token from a Keycloak server for user `alice`. You can use the same command to obtain tokens
on behalf of user `jdoe`, just make sure to change both `username` and `password` request parameters.

```bash
 export access_token=$(\
    curl -X POST http://localhost:8180/auth/realms/spring-boot-quickstart/protocol/openid-connect/token \
    -H 'Authorization: Basic YXBwLWF1dGh6LXJlc3QtZW1wbG95ZWU6c2VjcmV0' \
    -H 'content-type: application/x-www-form-urlencoded' \
    -d 'username=alice&password=alice&grant_type=password' | jq --raw-output '.access_token' \
 )
```

Accessing Protected Resources using an OAuth2 Access Token
---------------------

The most simple way to invoke resources protected by a policy enforcer is sending an OAuth2 Access Token. If you successfully obtained an OAuth2 Access Token in the previous section,
you can access resources in this application as follows:

```bash
curl http://localhost:8080/api/alice \
    -H "Authorization: Bearer "$access_token
```

User `alice` should be able to access information about herself and you should get a response as follows:

```$bash
{
    "name": "alice"
}
```

User `alice` can not access information about `jdoe` and you should get an access denied.

```bash
curl http://localhost:8080/api/jdoe \
  -H "Authorization: Bearer "$access_token
```

User `jdoe` is granted with role `people-manager` and you should be able to access information about any employee,
including `alice`. For that, make sure to obtain an access token for user `jdoe` and then send a request to:

```$bash
curl http://localhost:8080/api/alice \
    -H "Authorization: Bearer "$access_token
```

What to do next ?
----------------------------------

* Try to remove the policy `Only People Manager Policy` from the permission `Employee Permission` and you`ll see that `jdoe` is no longer granted with access to query information about `alice`.
* Try to change `Employee Policy`, a JavaScript-based policy, to change behavior.

Integration test of the Quickstart
----------------------------------

1. Make sure you have an Keycloak server running with an admin user in the `master` realm or use the provided docker image
2. Be sure to set the `TestHelper.keycloakBaseUrl` in the `createArchive` method (default URL is localhost:8180/auth).
3. Set accordingly the correct url for the `keycloak.auth-server-url` in the test [application.properties](src/test/resources/application.properties).
4. Run `mvn test -Pspring-boot`

repository: redhat-developer/redhat-sso-quickstarts

gha_language: Java

repo_name: redhat-developer/redhat-sso-quickstarts


text:
# Client-side Samples for monitoring primary status

At Saxobank, only one application can display realtime prices, if the customer is entitled to receive them. By default, an application gets delayed prices. To subscribe to realtime prices, the application must become "Primary".

This example shows how to become "Primary" and how to monitor this status. When Saxo Trader Go is launched, this app will become "Primary". This can be verified with this example.

For extending subscriptions and disconnecting, see the order update events example.

### Instructions for running the sample

1. Download and copy the three files to your local machine.

2. Open `index.html` in a browser (double click).

3. Get a token and paste it in the edit box.

4. Use the buttons to walk through the example.


text:
{
"title": "2 Factor Authentication",
"date": "2019-01-25T17:49:42Z",
"description": "How to enable 2-Factor authentication on your Netistrar account, to add additional security and better protect your internet assets.",

"categories": []
}

Netistrar supports 2-Factor authentication for additional security.  We strongly advise customers to enable 2-Factor authentication on their account particularly where they are managing assets and domains on behalf of others, e.g. Resellers, Professionals and Developers.

Currently Netistrar supports the following 2-Factor technology.

##### Google Authenticator

There are plenty of help articles, tutorials and blogs about to help you install Google Authenticator on your device.  Here are the links for the apps for Android and iPhone/iPad.

[Google Authenticator on Google Play](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_GB).

[Google Authenticator on iPhone and iPad](https://itunes.apple.com/gb/app/google-authenticator/id388497605?mt=8).

### To enable 2 Factor Authentication on your account

    From Dashboard > My Account > Security

Having setup your app following the instruction (above).  Click on the button to enable 2FA and follow the instructions (ie. scan the QR Code and keep a backup of the Two Factor backup code ).

{{< img src="netistrar_two_factor.png" alt="Netistrar Dashboard 2-factor authorisation example" title="Two factors authentication" caption="" wrapclasses="" figureclasses="" >}}

To test the system, logout and then login.  Having entered your username/email and password you will be prompted to enter your 2 Factor code using your device.

repository: OxfordInfoLabs/kinicart-example

repo_name: OxfordInfoLabs/kinicart-example


text:
# hyperterm-tabs

> [HyperTerm](https://hyperterm.org) tabs reordering support plugin

## Install

Add `hyperterm-tabs` to the `plugins` list in your `~/.hyperterm.js` config file.

## Usage

As drag&drop is currently [not possible](https://github.com/zeit/hyper/issues/911), only reordering with keyboard shortcuts is available.

To move active tab around, press `alt+shift+left/right arrow` or `ctrl+alt+shift+left/right arrow`

repository: jsdelivrbot/hyperterm-config

repo_name: jsdelivrbot/hyperterm-config


text:
---
title: "HNG Internship 5 Bug Report"
cover: "https://images.unsplash.com/photo-1418238035880-0851d416d150?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1053&q=80"
date: "2019-04-02"
dates: "April 2nd 2019"
category: "internship"
tags:
  - other
---

So I started the HNG Internship 5. It is a three-month long remote internship where you complete tasks in other to make it to the end - the 10th stage. The task to get to stage 2 is about finding any bug or problem at all on timbu.com.

So, here I am reporting on a error I have found on Timbu.com. The error can be found [HERE](http://timbu.com/flights). It is an error thrown as a result of a variable that has not been assigned a value hence, it throws an `Uncaught TypeError: Cannot read property 'origin' of null`

This is not an error that can lead to ground-breaking changes but one worth fixing. A screenshot of the error can be found below:

![Alt Text](https://res.cloudinary.com/cortehz/image/upload/v1554240748/Screenshot_2019-04-02_at_10.21.47_PM_nydcjm.png)

repository: cortehz/the-blog

repo_name: cortehz/the-blog


text:
# fastexpress

[![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)](https://github.com/ellerbrock/open-source-badges/)
[![Build Status](https://travis-ci.org/davidcostadev/fastexpress.svg?branch=master)](https://travis-ci.org/davidcostadev/fastexpress)
[![CircleCI](https://circleci.com/gh/davidcostadev/fastexpress.svg?style=svg)](https://circleci.com/gh/davidcostadev/fastexpress)
[![Maintainability](https://api.codeclimate.com/v1/badges/fbdb850163130e5fbde8/maintainability)](https://codeclimate.com/github/davidcostadev/fastexpress/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/fbdb850163130e5fbde8/test_coverage)](https://codeclimate.com/github/davidcostadev/fastexpress/test_coverage)
[![GitHub license](https://img.shields.io/github/license/davidcostadev/fastexpress.svg)](https://github.com/davidcostadev/fastexpress/blob/master/LICENSE)
[![npm version](https://img.shields.io/npm/v/fastexpress.svg)](https://www.npmjs.com/package/fastexpress)
[![Open Source Helpers](https://www.codetriage.com/davidcostadev/fastexpress/badges/users.svg)](https://www.codetriage.com/davidcostadev/fastexpress)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)

---

fastexpress is a library designed to speed up the development of APIs with express and sequelize. It's has a list of functionalities to create APIs with a small amount of lines of code, with possibility to customize it.

The main functionalities is:

- Improve the creation of model endpoints.
- Create CRUDs with few rows.
- Add rich integration with templates, allowing filters and joins.
- Add secure endpoints through token usage (jwt).

## Installation

- `npm install --global fastexpress`
- `fastexpress new [your-project-name]`
- `cd your-project-name`
- `npm install` or `yarn`
- `cp config/example.database.json config/database.json`
- `npm run sequelize db:create`

## Generate a resource

On root of your project

- `fastexpress resource [resourceName] --attributes title:string check:boolean birthday:date`
- `npm run sequelize db:migrate`
- `npm run sequelize db:seed:all` # **(optional)**

### Attributes

- string
- number or integer
- text
- boolean
- date or datetime

After that, you just need import and add the resource on Router. Like this on **src/routers.js** file:

```javascript
const { Resources } = require('fastexpress');
const [ResourceName] = require('./resources/[ResourceName]');

const routers = new Resources({
  namespace: '/api/v1/',
})
  .add('[resourceName]', [ResourceName])
  .getRouters();
```

### Development

- `npm run dev`

#### Basic Endpoints

- `[get]` /api
- `[get]` /api/v1

#### Resources Endpoints

- `[get]` /api/v1/[resourceName] - to list resource
- `[post]` /api/v1/[resourceName] - to add a new entity
- `[get]` /api/v1/[resourceName]/:id - to get a one entity
- `[delete]` /api/v1/[resourceName]/:id - to delete a entity
- `[put]` /api/v1/[resourceName]/:id - to edit a entity

## Examples

### Basic

This is a basic example of usage of the fastexpress.

- [Basic](examples/basic)
- [Auth](examples/auth)
- [Complete](examples/complete)

## fastexpress development

[CONTRIBUTING.md](https://github.com/davidcostadev/fastexpress/blob/master/CONTRIBUTING.md)

## Open Source

We uses the [MIT](https://github.com/davidcosta/fastexpress/blob/master/LICENSE) license.

If you have any question/bug/suggestion just create a new issue!

## Author

- [David Costa](https://github.com/davidcostadev)

repository: dinhoinz/fastexpress

repo_name: dinhoinz/fastexpress