Hi, here is a list of design and non-design tools that I use 😀. Most of the tools are free.
| --- PSQL queries which also duplicated from https://github.com/anvk/AwesomePSQLList/blob/master/README.md | |
| --- some of them taken from https://www.slideshare.net/alexeylesovsky/deep-dive-into-postgresql-statistics-54594192 | |
| -- I'm not an expert in PSQL. Just a developer who is trying to accumulate useful stat queries which could potentially explain problems in your Postgres DB. | |
| ------------ | |
| -- Basics -- | |
| ------------ | |
| -- Get indexes of tables |
| module ActiveRecord | |
| module Scopes | |
| module SetOperations | |
| extend ActiveSupport::Concern | |
| class_methods do | |
| def union_scope(*scopes) | |
| apply_operation 'UNION', scopes | |
| end |
| class PaymentGatewayCallbackService | |
| # New custom exception | |
| TransactionFailed = Class.new(StandardError) | |
| def callback(order_id, gateway_transaction_attributes) | |
| order = Order.find(order_id) | |
| transaction = order.order_transactions.create(callback: gateway_transaction_attributes) | |
| # raise the exception when things went wrong | |
| transaction.successful? or raise TransactionFailed | |
| order.paid! |
| class Bob | |
| def reply_to(statement) | |
| public_send("reply_to_#{statement.class}".downcase.to_sym) | |
| rescue NoMethodError | |
| default_reply | |
| end | |
| def reply_to_silence | |
| "Fine. Be that way!" | |
| end |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
#Simple Authentication with Bcrypt
This tutorial is for adding authentication to a vanilla Ruby on Rails app using Bcrypt and has_secure_password.
The steps below are based on Ryan Bates's approach from Railscast #250 Authentication from Scratch (revised).
You can see the final source code here: repo. I began with a stock rails app using rails new gif_vault
##Steps
| # 1) Create your private key (any password will do, we remove it below) | |
| $ cd ~/.ssh | |
| $ openssl genrsa -des3 -out server.orig.key 2048 | |
| # 2) Remove the password | |
| $ openssl rsa -in server.orig.key -out server.key |
The purpose of design is to allow you to do design later, and it's primary goal is to reduce the cost of change.
- Single Responsibility Principle: a class should have only a single responsibility
- Open-Closed Principle: Software entities should be open for extension, but closed for modification (inherit instead of modifying existing classes).
- Liskov Substitution: Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.
- Interface Segregation: Many client-specific interfaces are better than one general-purpose interface.