松屋のマレーシア風牛肉煮込み~ルンダン~を食べたけど、味は異国の香辛料系の、角煮が入ったカレーって感じだった。
うまいけど、味が似てて具も入り過ぎな位入ってるチキンマサラカレーの方が良かったな。
松屋のマレーシア風牛肉煮込み~ルンダン~を食べたけど、味は異国の香辛料系の、角煮が入ったカレーって感じだった。
うまいけど、味が似てて具も入り過ぎな位入ってるチキンマサラカレーの方が良かったな。
Twitterで、ツイートが省略されてShow moreってリンクがある場合があるけど、あれって課金で長文書いてんのかと思ったら、そうじゃない場合もあるな。
開くの面倒だから、いちいち省略しないで欲しい。スクロールだけで見たいんだ
イベントのアンケートで割と設問がある、1カ月の趣味に使うお金っていつも思うけど難しい・・・
使う時は使うけど、使わない時は使わないから、今月趣味に何かつかったっけ・・・?ってなる
Twitterのインプレッションゾンビ、ほんと減らないなぁ。見かけたやつはほぼ全てブロックしてるのにまだ居るし、しかも最近作ったアカウントって訳でも無い事が多い。どうなってんだ
[注意喚起]ブラウザ互換ライブラリ「Polyfill\.io」がドメイン名ごと中国企業に売却、CloudflareとFastlyが代替となる配信を開始 - Publickey
一応polyfill.ioにリクエスト出さない様に設定しておくか。どうせpolyfillが必要になる様な古いブラウザは使ってないし。
新しすぎる機能でpolyfillが必要な場合もあるかもだけど、まぁ一旦は止めておこう
でもなー値なんだよなぁ。せっかくカスタム型やstructで、値オブジェクト的なのを値で作れるんだから、値で渡したいし、簡潔に書きたいんだよなぁ
-- go.mod --
module sample
go 1.22
-- foo/foo.go --
package foo
import "fmt"
var _ Bar = (*bar)(nil)
type Bar interface {
Value() int
Verify() error
}
type bar struct {
baz int
}
func (b *bar) Value() int {
return b.baz
}
func (b *bar) Verify() error {
if b.baz <= 0 {
return fmt.Errorf("arg must be more than 1 but %v given", b.baz)
}
return nil
}
func NewBar(i int) (Bar, error) {
subject := &bar{i}
err := subject.Verify()
if err != nil {
return subject, err
}
return subject, nil
}
-- main.go --
package main
import (
"fmt"
"sample/foo"
)
func main() {
fmt.Println(foo.NewBar(9))
fmt.Println(foo.NewBar(0)) // arg must be more than 1 but 0 given
//fmt.Println(foo.Bar{9}) // invalid composite literal type foo.Bar
//fmt.Println(foo.Bar{}) // invalid composite literal type foo.Bar
var bar foo.Bar
fmt.Println(bar) // nil
//bar, _ = foo.NewBar(9)
//fmt.Println(*bar) // invalid operation: cannot indirect bar (variable of type foo.Bar)
}
https://go.dev/play/p/jATJHDP-5WT-- go.mod --
module sample
go 1.22
-- foo/foo.go --
package foo
import "fmt"
type Bar struct {
bar int
}
func NewBar(i int) (Bar, error) {
if i <= 0 {
return Bar{}, fmt.Errorf("arg must be more than 1 but %v given", i)
}
return Bar{i}, nil
}
-- main.go --
package main
import (
"fmt"
"sample/foo"
)
func main() {
fmt.Println(foo.NewBar(9))
fmt.Println(foo.NewBar(0)) // arg must be more than 1 but 0 given
//fmt.Println(foo.Bar{9}) // implicit assignment to unexported field bar in struct literal of type foo.Bar
fmt.Println(foo.Bar{}) // 1未満は不正だがゼロ値でbar = 0になってしまう
var bar foo.Bar
fmt.Println(bar) // 1未満は不正だがゼロ値でbar = 0になってしまう
}
https://go.dev/play/p/oR2CRhGdnax0
という値が入ってしまうなぁ。そうだよなぁ
オブジェクト指向は必要なのか / Is object\-oriented needed? \- Speaker Deck
スライドだから端的すぎて良く分からなかったページもあるけど、プログラミング考古学的な観点もあって助かる