Skip to content

Instantly share code, notes, and snippets.

View asSqr's full-sized avatar

as_sqr asSqr

  • The University of Tokyo
  • Tokyo, Japan
View GitHub Profile
@asSqr
asSqr / clean_architecture.md
Created December 8, 2022 12:55 — forked from mpppk/clean_architecture.md
クリーンアーキテクチャ完全に理解した

2020/5/31追記: 自分用のメモに書いていたつもりだったのですが、たくさんのスターを頂けてとても嬉しいです。
と同時に、書きかけで中途半端な状態のドキュメントをご覧いただくことになっており、大変心苦しく思っています。

このドキュメントを完成させるために、今後以下のような更新を予定しています。

  • TODO部分を埋める
  • 書籍を基にした理論・原則パートと、実装例パートを分割
    • 現在は4層のレイヤそれぞれごとに原則の確認→実装時の課題リスト→実装例という構成ですが、同じリポジトリへの言及箇所がバラバラになってしまう問題がありました。更新後は、実装時の課題リストを全て洗い出した後にまとめて実装を確認する構成とする予定です。

2021/1/22追記:

export const iso2TimeString = isoTime => {
const tIndex = isoTime.indexOf('T');
const dotIndex = isoTime.indexOf('.');
let date = isoTime.substr(0, tIndex);
const time = isoTime.substr(tIndex+1, dotIndex-tIndex-1);
date = date.replace(/-/g, '/');
return date + ' ' + time;
import { iso2TimeString } from '../../utils/util';
import Link from 'next/link';
import Head from 'next/head';
import { formatDate, unescapeHtml } from '../../utils/util';
import Header from '../../components/Header';
import Footer from '../../components/Footer';
import firebase, { db } from '../../firebase/firebase';
import { useState, useEffect } from 'react';
import { useSelector } from 'react-redux';
import { persistStore } from 'redux-persist';
import Link from 'next/link';
import Head from 'next/head';
import Router from 'next/router';
import { useRef, useEffect, useState } from 'react';
import { Editor, EditorState, RichUtils } from 'draft-js';
import 'draft-js/dist/Draft.css';
import { stateToHTML } from 'draft-js-export-html';
import Immutable from 'immutable';
import Header from '../components/Header';
import Footer from '../components/Footer';
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <algorithm>
#include <functional>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
class grid {
constructor( width, height ) {
this.width = width;
this.height = height;
this.orders = (new Array( this.height )).fill( null );
this.orders.forEach( (_, i) => this.orders[i] = (new Array( this.width )).fill( null ) );
this.dx = [ 1, 0, -1, 0 ];
this.dy = [ 0, 1, 0, -1 ];
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <algorithm>
#include <functional>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <fstream>
#include <sstream>
#include <string>
std::string fileName;
std::string tab;
void indent()
{
#include <algorithm> // for std::swap
#include <vector>
#include <cstddef>
#include <cassert>
// Matrix traits: This describes how a matrix is accessed. By
// externalizing this information into a traits class, the same code
// can be used both with native arrays and matrix classes. To use the
// default implementation of the traits class, a matrix type has to
// provide the following definitions as members:
#ifndef RATIONAL_NUM
#define RATIONAL_NUM
#include <sstream>
#include <string>
class Rational {
public:
Rational()