Skip to content

Instantly share code, notes, and snippets.

@hikoma
hikoma / pre-push
Created August 3, 2017 06:18
Git pre-push hook
#!/usr/bin/env bash
while read local_ref local_sha1 remote_ref remote_sha1
do
if [[ "${remote_ref##refs/heads/}" =~ (master|develop) ]]; then
exec < /dev/tty
read -p "Push to ${remote_ref##refs/heads/}? [Y/n] " answer
if [[ "${answer}" =~ ^[Yy] ]]; then
exit
~ $ java -XX:+PrintFlagsFinal -version
[Global flags]
uintx AdaptiveSizeDecrementScaleFactor = 4 {product}
uintx AdaptiveSizeMajorGCDecayTimeScale = 10 {product}
uintx AdaptiveSizePausePolicy = 0 {product}
uintx AdaptiveSizePolicyCollectionCostMargin = 50 {product}
uintx AdaptiveSizePolicyInitializingSteps = 20 {product}
uintx AdaptiveSizePolicyOutputInterval = 0 {product}
uintx AdaptiveSizePolicyWeight = 10 {product}
uintx AdaptiveSizeThroughPutPolicy = 0 {product}
@hikoma
hikoma / spring-breakpoints.md
Last active September 21, 2017 12:37
Spring ブレークポイントメモ

リクエスト関連

DispatcherServlet#getHandler

AbstractHandlerMapping#setOrder

コントローラー関連

@hikoma
hikoma / FlywayCleanAutoConfiguration.java
Created March 17, 2015 09:44
Force clean detabase before flyway migration
import org.flywaydb.core.Flyway;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Function ConvertFrom-Base64String {
[CmdletBinding()]
Param (
[Parameter(Mandatory=$True, ValueFromPipeline=$True)]
[ValidateNotNullOrEmpty()]
[string] $Base64String
)
Process {
$bytes = [System.Convert]::FromBase64String($Base64string)
[System.Text.Encoding]::UTF8.GetString($bytes)
@hikoma
hikoma / Install-WindowsUpdate.ps1
Last active January 27, 2017 20:36
Run windows update from powershell
Function Install-WindowsUpdate {
[CmdletBinding()]
Param ()
Process {
$updateSession = New-Object -ComObject "Microsoft.Update.Session"
Write-Host "Searching updates..."
$searcher = $updateSession.CreateupdateSearcher()
$searchResult = $searcher.Search("IsInstalled=0 and AutoSelectOnWebSites=1")
@hikoma
hikoma / wiki.css
Last active December 13, 2015 19:59
Custom CSS for MediaWIki
@charset "utf-8";
h1, h2, h3, h4, h5, h6 {
color: #556;
font-weight: normal;
line-height: 1.4;
margin: 15px 0;
border: none;
}

1 Introduction

この本のイントロダクション。

  • CPU はクロック数を上げるのではなく、マルチプロセッサにすることで高速化する傾向
    • マルチプロセッサに適したプログラミングをしないとソフトウェアが高速化されない時代
      • 複数のプロセッサは共有メモリでやりとりする
    • マルチプロセッサのプログラミングは難しい
  • 最近のコンピュータシステムは非同期なので、予測できない中断や遅延が発生しうる
@hikoma
hikoma / 7 Spin Locks and Contention.md
Created September 23, 2012 00:53
7 Spin Locks and Contention

7 Spin Locks and Contention

マルチプロセッサプログラミングではハードを意識する必要あり。 ハードが与えるパフォーマンスの影響を考慮し、効率的な並行プログラミングに活用しましょう。

排他制御プロトコルの問題:ロックが取得できなかった時どうする?

  • 再挑戦(spin, busy wait)
    • 遅延が短いときは良い
  • 諦めてスケジューラに任せる(ブロッキング)
@hikoma
hikoma / 4 Foundations of Shared Memory.md
Created August 11, 2012 15:22
4 Foundations of Shared Memory

4 Foundations of Shared Memory

シーケンシャルコンピューティングの基礎は 1930 年代に Alan Turing と Alonzo Church の Church-Turing Thesis で確立した(Turing Machine, Church’s Lambda Calculus)。 「何が計算可能か?」を正確に定義していないので、命題(thesis)であって定理(theorem)ではないよ!

この章では、並行共有メモリ計算の基礎を説明。
複数スレッドで計算されるが、各スレッド自体はシーケンシャルで、 共有メモリのオブジェクトのメソッドを介してコミュニケートする。