Skip to content

Instantly share code, notes, and snippets.

Avatar

numa08 numa08

View GitHub Profile
View m5stickc_speaker.ino
#include <M5StickCPlus.h>
// the setup routine runs once when M5Stack starts up
void setup(){
// Initialize the M5Stack object
M5.begin();
/*
Power chip connected to gpio21, gpio22, I2C device
@numa08
numa08 / TSSP.kt
Created Mar 30, 2020
Type safe SharedPreferences
View TSSP.kt
package net.numa08.typesafesharedpreferences
import android.content.SharedPreferences
sealed class Key<T> {
abstract val key: String
object Address : Key<String>() {
override val key: String = "address"
}
@numa08
numa08 / No11.md
Last active Jan 21, 2019
アジャイルマニフェスト輪読会
View No11.md

「最良のアーキテクチャ・要求・設計は、自己組織的なチームから生み出されます」 The best architectures, requirements, and designs emerge from self-organizing teams.

どういうことだろうか?

IPA のまとめによれば、よいモノはよいチームから生まれるとされている。良い製品を作るにはチームを良い物に育てる必要があるとしている。

なぜなのか

自律的なチームや自己組織化されたチームが複雑で変化の激しい問題に対応できるということは、Elastic Leader Ship でも語られていた。チームを自己組織化されたものとするために、バス因子の除去や知識の共有、作業のオープン化などが求められる。この原則もまた開発者だけではなく、開発に関わるチーム内のすべての人に対して求められる。誰かが誰かの作業に依存すること無く自分の作業をできるようになれば、開発される製品の品質やスケジュールの改善が見込まれるかもしれない。

View ImageDecoder.mm
//
// CVImageDecorder.m
// Turkey
//
// Created by numa08 on 2018/05/10.
// Copyright © 2018年 numa08. All rights reserved.
//
#include <sys/types.h>
#include <sys/stat.h>
extern "C" {
@numa08
numa08 / doc.md
Last active Mar 7, 2018
why dagger2
View doc.md

どうして Dagger を利用するのか、同じことは setter を実装して外部から利用するインスタンスを変更することで実現できるのではないのか?

結論から言うと Dagger を利用した依存性の解決(注入)を実現することが楽だからです。

そもそも、広い意味での DI の実現方法には setter を利用した DI が存在します。setter injection と言うそうです。

以前の勉強会のコード を setter injection を利用して実装すると、だいたい次のようになると思います。

setter injection による実現

@numa08
numa08 / AndroidManifest.xml
Created Jul 19, 2016
かっこいいcoordinatoryalut
View AndroidManifest.xml
<activity
android:name=".ui.activities.ProfileDetailActivity"
android:configChanges="orientation|screenSize"
android:theme="@style/DefaultApplicationTheme.NoActionBar.NoStatusBar" />
View codeStyleSettings.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value />
</option>
View shinsoku.swift
/**
Swift では厳密に Set<T<S>> の様な表現は不可能だと思います。
Set の場合、型パラメータ T は Hashable かつ、型パラメータ S をとりうる型である必要があります.
それは即ち T は Hashable で associatetype S が宣言された protocol であると言えます.
そこで Hashable であり associatetype S を宣言した Myp を宣言し,
Myp を実装した型パラメータ T をパラメータにとるメソッドで Set<T> を作ることで、
実質的に Set<T<S>> を実現できます.
ただ、わりとトリッキーなので使いドコロは微妙かも...
*/
View val_is_not_final.kt
fun failedSuruyo() {
throw Exception("error")
}
fun main(args: Array<String>) {
val res : String
try {
res = "succedd"
failedSuruyo()
View emoji.java
private InputFilter mEmojiFilter = (source, start, end, dest, dstart, dend) -> {
if (source.length() == 0) {
return source;
}
// 入力された1文字が2バイト以上の物について、絵文字かどうか判断をする。
// UTF-8 の絵文字の文字コードについては、 Wikipedia を参照した
// https://en.wikipedia.org/wiki/Emoji#Unicode_blocks
final int codePoint = Character.codePointAt(source, 0);
if (
(codePoint >= 0x1F300 && codePoint <= 0x1F5FF ) ||