- 月収30万円
- 週3勤務
- 残りの週2日については副業、勉強、大学院、転職活動等に充ててよい
- 曜日はいい感じに調整、応相談
- 土日祝日は休み、休日はちゃんと休め
朝バタバタしてクリアじゃなかった... ちょっと間違ってましたこういうことです:
- 多数同時並行するタスクがある場合
- 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とするようにするという話です。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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>() { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
interface HasDisposables { | |
fun Disposable.autoDispose() | |
fun dispose() | |
companion object { | |
operator fun invoke(): HasDisposables = object : HasDisposables { | |
private val disposables = CompositeDisposable() |
更新: | 2024-01-20 |
---|---|
作者: | @voluntas |
バージョン: | 2024.1 |
URL: | https://voluntas.github.io/ |
概要
重要な順で
優秀なプログラマーというのは寝ている間に異世界に召喚されて無双するのとはわけが違うんですよ。
自分の例で言うとプログラミングを始めた中学生の時から優秀なプログラマだったかって、そんなわけない。みんなヘッポコからスタートしているに決まってるわけです。以来二十余年、地道に生き恥を晒し続けてきた結果として、現在いちおう業界の末席を汚すところまで来ている。このプロセスから目を背けるべきではないです。優秀なプログラマーに生まれる人間なんかいない。優秀なプログラマーに「育つ」んだし、それには時間が必要。今日から無双したいと思うな。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
Console.WriteLine(Gender.Female.ToJapanese()); | |
Console.ReadLine(); | |
} | |
} | |
public enum Gender |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; |
NewerOlder