サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
matope.hatenablog.com
衆議院選挙の党開票日が27日に迫る中、ふと、今回の投票にあたって自分が考えていることを書き起こしておこうという気持ちが湧いてきました。大上段に政治を語るのは少し気恥ずかしいですが、いい歳をした大人が政治についての考えをきちんと語れないほうがよほど恥ずかしいとの信念に基づいて、やってみようと思います。 今回の選挙で私が重視しているのは、個別の政策でいえば「刑事司法」、全体的な考え方で言えば「民主主義と経済」です。 刑事司法制度 いま、冤罪に関する再審無罪判決や再審開始の決定が相次いでいます。 袴田事件が、「5点の着衣」が警察による捏造証拠であったことを認定して再審無罪となったことはみなさんもご存じの通りですが、今週、1986年に発生した福井女子中学生殺害事件で7年の懲役判決が確定し服役した男性の再審の開始も決定されました。 福井中3事件では、新たに開示された検察側証拠から、検察が男性を有罪に
9月1日、ユーロスペースで『福田村事件』を観た。 www.youtube.com 関東大震災直後の千葉で香川からの行商15名のうち子供と妊婦を含む9名が、地元の自警団に朝鮮人と間違えられて殺害された実在の事件を基にした劇映画。 事件が起きたのは1923年(大正12年)9月6日、つまり100年前の今日だ。 監督は著名なドキュメンタリー監督の森達也氏。失礼ながらドキュメンタリー作家の初劇映画ということで正直期待していなかったが、観てみると意外にもしっかりした映画で驚いてしまった。 前半は狭い村でのドロドロとした愛憎が組み立てられていき、その情念が後半での虐殺事件に流れ込んでいく。冒頭から鍬や包丁など、日常の中に暴力の予感を忍ばせるのも上手いし、豆腐、白磁の指輪、朝鮮飴といった純白モチーフの使い方も手慣れている。 実はこの作品、森達也監督と同時期にたまたま劇映画畑の脚本スタッフ3名も「福田村事件
みなさんはまだXで消耗してますか?Blueskyに移住中の小野マトペです。 Go言語でBlueskyにポストを投稿するコードを書いたのですが、ベータ版とあってドキュメントも少なくやや難儀したので、メモとして残します。記事を通じて、Blueskyのアーキテクチャのユニークさも少しだけ伝われば良いなと思います。 クライアントには、Blueskyの公式Goリポジトリ github.com/bluesky-social/indigo のクライアント実装を使います。ただし、開発中で、今後使い方が変わる可能性もあるので気をつけてください。 github.com 概要 Bluesky は、大規模分散ソーシャルアプリケーションのための汎用連合プロトコル AT Protocol 上に構築されるアプリケーション実装であるという建て付けです。AT Protocolでは、クライアントやサーバーは XRPC という
会社を辞めたので、旅行なんかしたいと思ったことないのだけど、海外旅行をしてみようと思いたち、衝動的にExpediaとAirbnbでバリ島への航空券と宿泊先を予約した(出発8日前のチケットとか、取れるんですね)。で、どうせ海外行くならいい機会だからちゃんとしたカメラ買って風景とか撮りたいなとなり、以前からうっすら欲しかったカメラを買うことにした。私と同じカメラわからん人の助けになるように、購入に至るまでの検討過程をここに記す。また参考にしたWebサイトなども可能な限り添付していく。何を買ったかだけ知りたい人は末尾までスクロールしてくれ。ちなみに今これを書いている時点でカメラを箱から出していない。旅行までに練習する時間があるだろうか…。というか旅行の準備なにもしてない…。 やりたいこと 旅先で写真やムービーを撮りたい 日常でカメラを持ち歩いて、面白い構図とか撮りたい。 いい感じにボケてる写真と
こんにちは。GoでWeb開発していますか?私はしていません。Goに限らず、既成のWebアプリケーションフレームワークを使わずに自前でWebフォームを作る場合、なにも考えずに書くと CSRF (Cross Site Request Forgery) 脆弱性を作りこみ、不正なユーザー操作を実行されてしまう可能性があります。 ダメな例 例えば以下のGoコードで作成されるフォームにはCSRF脆弱性があります。SubmitSignupForm ハンドラは、受け取ったリクエストが自分のサイト上のフォームからサブミットされたものかチェックしていないので、攻撃者が他のサイト上のフォームを使い、第三者のユーザーのブラウザで任意の操作を実行させることができてしまいます。 func main() { r := mux.NewRouter() r.HandleFunc("/signup", ShowSignupF
昨日の記事で言ったようにうっかりSSD+ケースを買ってしまったのだが、最近はUSB3.1 Gen2もThunderbolt3も普及してきてデータ転送帯域がどんどん広がっているし、m.2?NVMe?とかもなんかちっちゃくてかっこいいし、SSDも価格爆下がり中って聞くし、「最近の外付けSSDはどうなの?」みたいなところをちょっと調べてみた。買ってから調べるという。容量は1TBを前提に調べた。 外付けSSDについての調査だが、単品のSSDにケースを調達して外付けSSDに自作する、ということを選択肢に入れて調べたのでほとんど内蔵SSDについてです。あとNANDとかTLCとかには触れません。 まず、SSDの製品を分類するには、サイズ規格とインターフェイスに注目する必要がある。 サイズ規格は以下のふたつがある。 2.5インチ HDD時代にお馴染みの、2.5インチのフォームファクタ規格。 対応しているイ
今年もよろしくお願いします、小野マトペです。去年の10月、MacBook Pro 2018 13インチを購入しました。 MacBook Pro 2018 13インチ届いた。Early 2013 15インチを使い続けていたので電源含めて重量が40%が減って軽さがすごい。 pic.twitter.com/796gF6sihS— 小野マトペ (@ono_matope) 2018年10月9日 今まで使っていた2013モデルでは性能重視で15インチを使用していましたが、今年のモデルはCPUのコア数が増え、13インチでも去年の15インチよりも高いCPUパフォーマンスが出るということだったので、モビリティのために13インチをチョイス。やっぱりノートパソコンは持ち運んでなんぼですね。軽くて最高。 japanese.engadget.com 13インチを購入するにあたって最後まで躊躇した要素はグラフィック性
今の部屋には、引っ越す前から育てている無印のパルプボードボックスを利用した本棚があるのだけど、じわじわと紙の本が増えて、そろそろ本が溢れるようになってきた。このままパルプボードを増設していってもよかったが、この製品は仕様上は5段までしか重ねられず、壁の上部が有効利用できない問題があったため、ここはひとつ背の高い本棚を導入し、本棚の設置面積を圧縮して部屋をより広く使うことにした。ゆくゆくはソファを置くなどもしたい。 before: 無印のパルプボードボックス 本棚選び 我が家の本棚としての要件は、大判の美術書から文庫版の漫画まで、効率よく収納するために可動棚をもつことと、スッキリしたデザインであることだったが、デザインについて納得できるものがなかなか見つからず、本棚選びは難航していた。 無印のパルプボードボックスがそうであったように、ぼんやりした曲線を排したソリッドなかたちの本棚が欲しかった
ゴールデンウィーク中、Appleがオープンソースとしてリリースした分散データベース FoundationDB のドキュメントを読んでいました。なかなか面白いデータベースだと思うのでこれについては別途書きたいですが、それはそれとしてFoundationDBでは、分散環境下でACIDトランザクションを実現するために、分散合意プロトコルとして有名なPaxosを採用しているようでした。 PaxosはGoogleのChubbyやCassandraのLight Weight Transactionなどで使われていますが、僕はいまだにPaxosがどのように動作するのかあまりよく分かっていませんでした。良い機会だと思い、FoundationDBの技術を理解するためにも連休の後半でLeslie LamportによるPaxosの論文の一つ Paxos Made Simple を読み、何となくわかった気持ちにな
正月で時間があったので、以前から触ってみたかったgRPCをGo言語から使い、キー・バリュー・ストアのようなものを作ってみた。 KVSといっても、GoのmapへのGet/Put/Delete/ScanをgRPC経由で叩けるようにしただけのもの。それだけだとあまり面白く無いので、gRPCらしく、Watch機能をつけてmapへの更新を監視できるようにした。 github.com 個人的には、HTTP/1.1 + JSON APIと比べた時のgRPC(HTTP/2 + ProtoBuf)のメリットや違いが気になっていたので、そのあたりを気をつけながら書いた。 開発の手順 サービス定義 まずはProtocol Buffers 3でKVSのサービスを定義する。サンプルを見ながら適当に書いた。 grpc-kvs/grpc-kvs.proto at master · matope/grpc-kvs · G
あけましておめでとうこざいます。 なんかみんな振り返っているので、少し出遅れましたが2015年を振り返りたいと思います。 アジェンダ 英会話教室に通い始めた Goにコントリビュートをした 仕事で作っているプロダクトがリリースできなかった 英会話教室に通い始めた 2014年はGo言語に全てをつぎ込んだ年だったので、2015年は英語を頑張ろうと思っていました。5月のTOEIC試験の結果が700点ラインを上回ったので、会社の教育補助を受けて英会話教室のGabaに通い始めました。 Gabaではほぼ毎週、40分のマンツーマンのレッスンを受けています。レッスンは雑談とテキストを主体に進みますが、雑談で話題を無茶振りされたりはしないので、無理なく進められます。趣味の話で盛り上がったりもあり、アニメ好きの女性講師とシン・ゴジラの話題で盛り上がるのはこう…いいよね…みたいなのもあります。 英会話教室は高価で
Web APIを開発していると、HTTPのヘッダについてRFCにおける規約を確認しなきゃいけない場面がたまにあるので、今回調べたことをまとめた。 HTTP/1.1のRFC HTTP/1.1のRFCといえば、長らくRFC2616であったが、2014年にRFC7230〜7239が発行され、2616は廃止された。 RFC2616 ハイパーテキスト転送プロトコル -- HTTP/1.1 RFC7230〜RFC2739 HTTP/1.1 — RFC 7230 〜 7235 — 日本語訳 両者の変更点については、RFC 723xの付録に記述されているので参照のこと。Content-MD5が廃止されたり、ちょいちょい面白い。文章としても723xの方が分かりやすくなっているので、一度目を通しておくことをお勧めする。 HTTP/1.1 が更新された | The Long Wait あたらしいHTTPの話をし
goのflag、”-hoge”だけじゃなくて”--hoge”を許してくれるだけで悩みの95%くらい解決するのになー…— Daisuke Maki (@lestrrat) 2014, 10月 21 これのためだけに別ライブラリをgo getするの若干抵抗ある— Daisuke Maki (@lestrrat) 2014, 10月 21 それヘルパー関数書くだけで出来ますよ! と言う訳で書いた double-dash hyphen この実装が実現するのは "-hoge" と "--hoge"を変数hoge *stringに受け取れる "-str"と"--str"を変数str stringに受け取れる UsageはflagのデフォルトFlagSetのものを使っているので、ダブルダッシュ版のFlagはUsageに出てこない ./flag2 -h Usage of ./flag2: -hoge="d
1024以下の番号のポートでサーバーをListenするには、rootで実行する必要がある。それはもちろん嫌なので、GoのWebサーバーを80番ポートでサービスするためにどういう方法があるのか調べた。 root権限で起動してListenしてからSetuidで権限降格 最初はroot権限で起動して、80番ポートをListenしてからsetuidで権限降格するやりかた。 Node.jsでもそんな感じだったし、まあそういう感じだろうと当たりをつけて調べたら、どうもLinuxではうまくいかないらしい。 コメント欄でのid:methaneさんの指摘によると、Linuxのsetuidシステムコールは、実行したスレッドにしか効力が無い。Goは自動的に複数スレッドに分散されるので、権限降格されないまま実行されるGoroutineが出てくる事になり、望ましくない。さらにGo 1.4ではLinuxでのSetui
こんにちは、小野マトペです。タイトル全部です。 昨日、現在時刻によって条件分岐するロジックを含むGoプログラムを書いていて、どうテストするか困ったのですが、うまい(と思う)やり方を思いついたのでここに書いておきます。 書いていたのはまあだいたいこういうソースコードです。 // main.go package main import ( "fmt" "time" ) func main() { fmt.Println(Greet("マトペ")) } func Greet(n string) string { t := time.Now() if 6 <= t.Hour() && t.Hour() <= 18 { return fmt.Sprintf("こんにちは%sさん。今は%d時ですよ!", n, t.Hour()) } else { return fmt.Sprintf("こんばんは%s
7月29日付けのgolang.orgブログエントリーで context というパッケージが紹介されました。 Go Concurrency Patterns: Context - The Go Blog 参考: Go言語のcontextパッケージについてのやりとり - ワザノバ | wazanova 今現在、業務でGo言語を使ったWebサービスを書いているのですが、contextはリクエストのキャンセルとタイムアウトとリクエストスコープの変数を扱う、Google社内で利用が標準化されているパッケージだという事なので、エントリーを翻訳しました。 以下和訳。 Introduction Goサーバーでは、入ってくる各リクエストは専用のgoroutineで処理されます。リクエストハンドラは、データベースやRPCサーバーにアクセスするためにしばしば追加のゴルーチンを開始します。リクエスト上のゴルーチン
Martin FowlerのPatterns of Enterprise Application ArchitectureすなわちPoEAA、何年か前に原著をKindleで買って読もうとして序盤で挫折していた。最近またデータソースアーキテクチャについて翻訳版と原著を合わせて読んでいるので、整理のためメモを残しておく。 パターン 本書で紹介されるパターンはアプリケーションアーキテクチャから通貨の値オブジェクトまで、粒度もレイヤーも様々。今回はデータソースアーキテクチャパターンを理解するのに必要な箇所だけ調べた。 ドメインロジックパターン トランザクションスクリプト ほとんど構造化されてない書き下しなロジックのこと。ちょろいスクリプトならこれでもいいけど、ちょっと複雑になるとすぐに破綻する。 ドメインモデル 業務上の概念をオブジェクト化して、それらを組み合わせて複雑なロジックを構成する。データ
覚えられなくて使うたびにググってしまうので、以後楽をするためにスニペットを記す。 パッケージ strconvパッケージを使う。 文字列 → 数値変換(パース) func Atoi(s string) (i int, err error) 文字列を10進数のint型にパースする。ParseInt(s, 10, 0)の省略形。 var i int i, _ = strconv.Atoi("255") fmt.Println(i) // => 255 func ParseBool(str string) (value bool, err error) 文字列をbool型にパースする。 var b bool b, _ = strconv.ParseBool("true") fmt.Println(b) // => true 受け付ける値は1, t, T, TRUE, true, True, 0,
go言語でのコマンドライン引数の使い方でやや混乱したのでまとめる。 まとめること flagの仕様 flagでgit push -fのようにオプション引数より前に非オプションの引数を置く方法・サブコマンドの例 go-flagパッケージのサブコマンドを試す flagの仕様 Golang標準のflagパッケージは以下のように使う。 package main import ( "flag" "fmt" "os" ) func main() { // -hオプション用文言 flag.Usage = func() { fmt.Fprintf(os.Stderr, ` Usage of %s: %s [OPTIONS] ARGS... Options\n`, os.Args[0],os.Args[0]) flag.PrintDefaults() } var ( opt1 = flag.String("o
最近、rebuild.fm で紹介されていたタスク管理ツールのTrelloを試しに使ってみたんですが、個人的にかなりヒットでした。このTrello、Joel on Softwareで有名なJoel Spolsky氏のサービスだと知って驚いたんですが、氏のTrelloに関するブログエントリーが興味深かったので、著者の許諾を得て翻訳します。 原文:How Trello is different - Joel on Software Trelloは何が違うのか(How Trello is different) 2012年1月6日 金曜日 つい数ヶ月前、私たちは非常にシンプルなWebベースのチーム・コラボレーション・システムのTrelloをローンチした。まだ始まったばかりの1.0状態だというのに、フィードバックは圧倒的に好感触で、採用の勢いは非常に力強い。 Fog Creekにとって、Trello
pyfes/201311.rst at develop · pyspa/pyfes Python Developers Festa 2013.11 - connpass Pyfesに行ってきました。土日に昼まで寝ている自分としては9時45分の開場期限に間に合っただけで快挙でしたが、Go, HTTP2.0, ストレージ, 構成管理と、今個人的に興味のある分野の話が聞けて有益な一日でした。会場のオラクル青山センターはトイレがオシャレでした。以下、発表内容メモ(聞き漏らし聞き間違いあり) Go ハンズオン @ymotongpoo 教材:Talks - The Go Programming Language P2Pチャットシステムを実装するハンズオン。自分は参加資格であるA Tour of Goが半分までしか終わらなかったので、参加するでもなく話を聴いてました。A Tour〜終わらせてから改めて挑
gemのslideshowを使ってMarkdownファイルをスライドhtmlに変換する slideshowとは? slideshowは、Markdownファイルを様々なJavaScriptスライドライブラリを使ったhtmlファイルをビルドするgem。 一つのMarkdownからいろいろなテンプレートのスライドを生成出来るので便利。 Slide Show (S9) - A Free Web Alternative to PowerPoint and KeyNote in Ruby markdownでスライド資料を作りたい | でつmblr インストールとサンプル $ gem install slideshow $ slideshow help #オプションを確認 $ slideshow help build #buildオプションを確認 $ slideshow new #サンプル用のwelc
Blender 2.67使用 こういう鳥の翼を作りたいとする。ただしメッシュはポーズ作業以降もX軸ミラーModifierを維持し、ポーズも左右反転コピーを使っていきたいものとする。 左半分のメッシュとボーンを作り、ウェイトをペイントして調整する。 ウェイトペイントすると*Lの頂点グループができるが、ここで同名のRの頂点グループを作っておく。_Rの頂点グループは空のままでよい。これをしておくと、Mirrorモディファイアを維持したまま左右反転のポーズが付けられる。(参考:Blenderで3DCG制作日記 操作メモ - Mirrorのまま左右非対称にポージングなど) Mirrorモディファイアを適用する。Vertex Groupsチェックはオン。Armatureモディファイアの上に配置。 ボーンも_LボーンをShift+Dで複製し、Bone -> Mirror -> X GlobalでX軸反転
MySQLで、マスタ系を動かしたまま、スレーブの更新を一時的に止めたいという状況はよくあります。スレーブ群の中から一台だけサービスアウトし、STOP SLAVE;してテーブル変更やリペアテーブルしてからSTART SLAVE;するというやつです。 このSTOP SLAVE;ですが、MySQLプロセスを再起動すると勝手にSLAVEが再開してしまいます。ですので、テーブル変更時にうっかり(ディスク増強などのために)MySQLを再起動するといつの間にかレプリケーションが始まってウワーッとなります。悲しいですね。 my.confにこのようなレプリケーションの自動開始の抑制オプションがないか探してみましたが、ないようです。skip-networkingを有効にしておけばスタンドアローン化するかと思いましたが、これは「TCPをリッスンしない」オプションなので、リッスン側のマスターでレプリケーションを抑
こんにちは、小野マトペです。 自宅サーバーをVirtualBox on Mac miniに移行してサービスする事が出来れば、面積、静音性、可搬性、サービス独立性の面で有利だと思って、いろいろやってる。VirtualBoxを選んだのは、無料だしライセンス的な面倒がなさそうだから。あとベンチマークも悪くなさそうだったから。 VirtualBox VMの仮想ストレージには色々な設定があるが、それぞれパフォーマンスにどのような影響を与えるか調べてみた。 調査項目 Dynamically allocated : VirtualBoxのディスクストレージには、実際に使われてから動的に領域が確保される "Dynamically allocated"と、作成時に全領域を実際に確保してしまう"Fixed size"の二つのモードがある。当然動的確保する前者の方がIOが遅くなるが、マニュアルには「動的確保によ
このページを最初にブックマークしてみませんか?
『小野マトペの納豆ペペロンチーノ日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く