Skip to content

Instantly share code, notes, and snippets.

View amay077's full-sized avatar
🏠
Working from home

amay077 amay077

🏠
Working from home
View GitHub Profile

[募集終了]NextInt社 つよつよ人材 腰掛け雇用枠

参考ツイート

雇用条件

  • 月収30万円
  • 週3勤務
    • 残りの週2日については副業、勉強、大学院、転職活動等に充ててよい
    • 曜日はいい感じに調整、応相談
  • 土日祝日は休み、休日はちゃんと休め
@kekyo
kekyo / task.md
Last active July 8, 2019 00:51
Task.Runで非同期APIをシミュレートすべきかどうかの判断

朝バタバタしてクリアじゃなかった... ちょっと間違ってましたこういうことです:

  • 多数同時並行するタスクがある場合
    • Windowsの場合はI/O完了ポートの「ブロックされたスレッドを検出するとワーカースレッドを世に放つ」機能があるので、同期APIがブロックしても、ワーカースレッド上限まではOK(ThreadPool.SetMaxThreadsの第二引数completionPortThreads)。
    • Windowsではない環境では必ず上記機能が使えるとは言えない(多分単純スレッドプール)ので、同期APIによるスレッドブロックが発生すると、同時並行動作数はそれ以上伸びない。これを避けたい場合、Task.Run を使わざるを得ない。
  • 多数同時並行したいタスクがない、GUIの場合
    • 同期APIでブロックすると、それがUIスレッドの場合はUIが固まってしまうので、それを避けたいなら Task.Run を使わざるを得ない。但し、継続処理がUIを操作する場合はUIスレッドにマーシャリングすることになり、そのコストはかなり高いことに注意(≒await後の処理でUI部品を操作する場合など)。
  • 多数同時並行したいタスクがない場合
    • 同期APIと非同期APIを比較すると、非同期APIのほうが余分なハンドリングを必要とするコストがあるので、この場合は同期APIをそのまま使うのがいい。

Taskを使うかValueTaskを使うかによる差については、本来はすべてをTaskを返す非同期APIとして定義したいが、ほとんどの場合同期的に完了してしまう(つまり一瞬で操作が完了する、待機する可能性が0ではないが殆ど待機しないというような)処理を、いつもTaskで管理するのはコストが高いので、代わりにValueTaskを使って初めから完了しているものはコストをほとんど0とするようにするという話です。

@yaraki
yaraki / ClockLiveData.kt
Last active December 21, 2019 07:02
This LiveData provides the time in hh:mm:ss format, updating the value every second
package io.github.yaraki.dependencyinjection
import android.arch.lifecycle.LiveData
import android.os.Handler
import android.os.Looper
import android.os.SystemClock
import android.text.format.DateFormat
import java.util.*
class ClockLiveData : LiveData<CharSequence>() {
<div id=root />
<script type=module>
import React from 'https://dev.jspm.io/react@16'
import ReactDOM from 'https://dev.jspm.io/react-dom@16'
ReactDOM.render(
React.createElement('h1', null, 'hello'),
document.querySelector('#root')
)
</script>
@k-kagurazaka
k-kagurazaka / Main.kt
Last active December 20, 2017 01:35
RxCommand with double context extension pattern
interface HasDisposables {
fun Disposable.autoDispose()
fun dispose()
companion object {
operator fun invoke(): HasDisposables = object : HasDisposables {
private val disposables = CompositeDisposable()
@voluntas
voluntas / working_time.rst
Last active February 13, 2024 15:22
時雨堂を支える固定時間労働 1 日 6 時間

時雨堂を支える固定時間労働 1 日 6 時間

更新

2024-01-20

作者

@voluntas

バージョン

2024.1

URL

https://voluntas.github.io/

概要

@shyouhei
shyouhei / gist:266178ffedab5767a5b69b972c76f88a
Created September 27, 2017 07:31
優秀なプログラマーになるためのコツ

優秀なプログラマーになるためのコツ

重要な順で

優秀なプログラマーになるには非常に長い時間がかかるという現実を直視すべし

優秀なプログラマーというのは寝ている間に異世界に召喚されて無双するのとはわけが違うんですよ。

自分の例で言うとプログラミングを始めた中学生の時から優秀なプログラマだったかって、そんなわけない。みんなヘッポコからスタートしているに決まってるわけです。以来二十余年、地道に生き恥を晒し続けてきた結果として、現在いちおう業界の末席を汚すところまで来ている。このプロセスから目を背けるべきではないです。優秀なプログラマーに生まれる人間なんかいない。優秀なプログラマーに「育つ」んだし、それには時間が必要。今日から無双したいと思うな。

@nuitsjp
nuitsjp / Enumに別名?をつけて表示する.cs
Last active March 13, 2020 21:45
Enumに別名?をつけて表示する
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Gender.Female.ToJapanese());
Console.ReadLine();
}
}
public enum Gender
@smallgeek
smallgeek / BusyNotifierCommand.cs
Created April 28, 2017 08:49
2度押し防止コマンド試作
using Reactive.Bindings.Notifiers;
using System;
using System.Threading.Tasks;
using System.Windows.Input;
namespace Reactive.Bindings
{
public class BusyNotifierCommand : BusyNotifierCommand<object>
{
public BusyNotifierCommand(Func<Task> execute)
@azyobuzin
azyobuzin / Program.cs
Created February 20, 2017 18:24
Xamarin の base メソッドを呼ばなければいけない/呼んではいけない奴を抽出
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Linq;
using Mono.Cecil;
using Mono.Cecil.Cil;
using Mono.Cecil.Rocks;