Skip to content

Instantly share code, notes, and snippets.

View andrewmclagan's full-sized avatar
:octocat:
Opening The Sauce

(Rew) Andrew McLagan andrewmclagan

:octocat:
Opening The Sauce
  • Atomi
  • Melbourne, Australia
View GitHub Profile
@andrewmclagan
andrewmclagan / repository-interface.php
Created March 8, 2018 21:50
PHP Repository pattern
<?php
namespace EthicalJobs\Foundation\Storage;
use Illuminate\Support\Collection;
interface Repository
{
/**
* Find a model by its id
import React from 'react';
import PropTypes from 'prop-types';
import DataTable from 'components/DataTable';
import CollectionViewControls from 'components/CollectionViewControls';
/**
* Entity collection view
* @author Andrew McLagan <andrewmclagan@gmail.com>
*/
export default ({ collection, children, filters, className }) => (
@andrewmclagan
andrewmclagan / lannisters.js
Created May 22, 2017 02:06
React - Interview Question
import React from 'react';
window.__state = [
{ name: 'Jaime Lannister', age: 42, avatar: '//api.adorable.io/avatars/134/jaime@adorable.png' },
{ name: 'Cersei Lannister', age: 37, avatar: '//api.adorable.io/avatars/134/cersei@adorable.png' },
{ name: 'Joanna Lannister', age: 16, avatar: '//api.adorable.io/avatars/134/joanna@adorable.png' },
];
// Create react component(s) to display a list of Lannister family members
@andrewmclagan
andrewmclagan / CerseiLannister.php
Last active February 4, 2021 00:49
PHP - Interview Question
<?php
namespace Cinema\Cast;
class CerseiLannister
{
private string $name = 'Cersei Lannister';
private JoannaLannister $child;
@andrewmclagan
andrewmclagan / ElasticsearchIndexer.php
Created February 2, 2017 21:43
Elasticsearch indexer
<?php
namespace App\Services;
use Illuminate\Support\Collection;
use Illuminate\Database\Eloquent\Model;
use Elasticsearch\Client;
use App\Models;
/**
@andrewmclagan
andrewmclagan / from12to24.js
Last active December 9, 2016 02:11
Testing the conversation of 12 hour to 24 hour format
export function from12to24(hours, minutes, meridian) {
let h = parseInt(hours, 10);
const m = parseInt(minutes, 10);
if (meridian.toUpperCase() === 'PM') {
h = (h !== 12) ? h + 12 : h;
} else {
h = (h === 12) ? 0 : h;
}
return new Date((new Date()).setHours(h,m,0,0));
}
@andrewmclagan
andrewmclagan / entrypoint.sh
Created October 12, 2016 22:04
Laravel artisan docker entrypoint script
#!/bin/bash
set -e
cd /var/www
php artisan optimize --force
php artisan config:cache
@andrewmclagan
andrewmclagan / Dockerfile
Last active October 12, 2016 22:33
Example Laravel production alpine dockerfile
FROM andrewmclagan/aphex:latest
#
#--------------------------------------------------------------------------
# Configure
#--------------------------------------------------------------------------
#
ADD ./nginx.conf /etc/nginx/nginx.conf
@andrewmclagan
andrewmclagan / Dockerfile
Created October 12, 2016 00:15
Docker layer caching with php composer
# create our app directory
RUN mkdir -p /var/www
# Set it as our working dir
WORKDIR /var/www
# add our composer dependancies
ADD composer.json ./
# install our dependancies without running scripts
@andrewmclagan
andrewmclagan / Nginx, PHP-FPM, Supervisord: Installation steps
Last active June 6, 2017 08:56
Install PHP-FPM, Extensions, Nginx and supervisor in Alpine linux
#
#--------------------------------------------------------------------------
# Install
#--------------------------------------------------------------------------
#
RUN apk --no-cache add \
libmcrypt-dev \
freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev \
wget \