Skip to content

Instantly share code, notes, and snippets.

View 2color's full-sized avatar
🚢

Daniel Norman 2color

🚢
View GitHub Profile
@2color
2color / httpie-graphql.sh
Created April 16, 2020 13:35
How to send a GraphQL request with HTTPie
http POST https://graphqlapi.now.sh query="query { feed { id title } }"
@2color
2color / postgres-activity.sql
Created March 25, 2020 11:56
Postgres connections
select * from pg_stat_activity where datname = 'DB_NAME'
# by default, the Ghost image will use SQLite (and thus requires no separate database container)
# we have used MySQL here merely for demonstration purposes (especially environment-variable-based configuration)
version: '3.1'
services:
ghost:
image: ghost:3-alpine
restart: always
@2color
2color / get_tweet_replies.py
Created February 18, 2020 09:40
Extract replies to a tweet into a CSV
import csv
import tweepy
# get credentials at developer.twitter.com
auth = tweepy.OAuthHandler('API Key', 'API Secret')
auth.set_access_token('Access Token', 'Access Token Secret')
api = tweepy.API(auth)
# curl https://codeload.github.com/ORG/REPO/tar.gz/BRANCH
# tar -xz --strip=3 REPO-BRANCH/deployment-platforms/zeit-now/
curl https://codeload.github.com/prisma/prisma-examples/tar.gz/prisma2-deployment-zeit | tar -xz --strip=3 prisma-examples-prisma2-deployment-zeit/deployment-platforms/zeit-now/

ORM Patterns

In practice there are two common ORM patterns:

  • ActiveRecord: uses the model class to handle both business logic and database access.
  • DataMapper: a more complex approach which separates the in-memory objects from the database. Uses two class types:
    • Mapper: handles database access and mapping entities
    • Entities: in-memory representation with business logic

Some ORMs, like TypeORM support both patterns. Others like Sequelize support only ActiveRecord.

Failed calculateDatabaseSteps at 2019-12-18T10:35:02.979Z

RPC One-Liner

{"id":3,"jsonrpc":"2.0","method":"calculateDatabaseSteps","params":{"projectInfo":"","assumeToBeApplied":[{"stepType":"CreateModel","model":"User"},{"stepType":"CreateField","model":"User","field":"id","type":"String","arity":"required"},{"stepType":"CreateDirective","model":"User","field":"id","directive":"default"},{"stepType":"CreateDirectiveArgument","model":"User","field":"id","directive":"default","argument":"","value":"cuid()"},{"stepType":"CreateDirective","model":"User","field":"id","directive":"id"},{"stepType":"CreateDirective","model":"User","field":"id","directive":"unique"},{"stepType":"CreateField","model":"User","field":"email","type":"String","arity":"required"},{"stepType":"CreateDirective","model":"User","field":"email","directive":"unique"},{"stepType":"CreateField","model":"User","field":"name","type":"String","arity":"optional"},{"stepType":"CreateField","model":"User","field":"posts","type":"Post","arit

Failed calculateDatabaseSteps at 2019-12-17T17:44:16.463Z

RPC One-Liner

{"id":3,"jsonrpc":"2.0","method":"calculateDatabaseSteps","params":{"projectInfo":"","assumeToBeApplied":[{"stepType":"CreateModel","model":"User"},{"stepType":"CreateField","model":"User","field":"id","type":"String","arity":"required"},{"stepType":"CreateDirective","model":"User","field":"id","directive":"default"},{"stepType":"CreateDirectiveArgument","model":"User","field":"id","directive":"default","argument":"","value":"cuid()"},{"stepType":"CreateDirective","model":"User","field":"id","directive":"id"},{"stepType":"CreateField","model":"User","field":"email","type":"String","arity":"required"},{"stepType":"CreateDirective","model":"User","field":"email","directive":"unique"},{"stepType":"CreateField","model":"User","field":"name","type":"String","arity":"optional"}],"stepsToApply":[{"stepType":"CreateModel","model":"User"},{"stepType":"CreateField","model":"User","field":"id","type":"String","arity":"required"},{"stepT

Trigger cronjob manually

kubectl create job --from=cronjob/[CRONJOB] test-job-name

@2color
2color / publishReplay.js
Last active January 10, 2019 16:05
Example of how publishReplay works
// https://jsbin.com/gacexawuju/edit?js,console
//emit value every 1 second
const source = Rx.Observable.interval(1000).take(5);
const example = source
//side effects will be executed once
.do(() => console.log('Do Something!'))
//do nothing until connect() is called
// Cache the last 3 values
.publishReplay(3)