タグ

ブックマーク / qiita.com/mattn (7)

  • ホクホクのイモ - Qiita

    package main import ( "fmt" "math/rand" "time" ) func main() { rand.Seed(time.Now().UnixNano()) s := "" rs := []rune("ホイクモ") for _, j := range rand.Perm(4)[:2] { s += string(rs[j]) } s += s + "の" for _, j := range rand.Perm(4)[:2] { s += string(rs[j]) } fmt.Println(s) } #include <algorithm> #include <iostream> #include <vector> #include <locale> #include <iterator> #include <random> #include <code

    ホクホクのイモ - Qiita
  • golang で libvterm - Qiita

    空いていたので穴埋め libvterm とは libvterm は libtermkey の作者でおなじみの Paul Evans 氏によって作られた、VT220/xterm/ECMA-48 といった端末エミュレータの仕様を抽象化し疑似する為のライブラリです。このライブラリの仕様に従ってプログラミングするとプラットフォームや GUI/CUI に依存せず端末エミュレータが扱えるという物です。neovimvim の :terminal 機能として使われています。 libvterm はシェルではありません。またユーザインタフェースでもありません。純粋な仮想端末エミュレータの実装です。ですのでキーも読み取りませんし、何も描画しません。出来るのは端末のセルに対するエスケープシーケンス等の書き込みと、それによって制御された端末の出力結果を取得出来るのみです。 ですので例えばシェルを起動しユーザと

    golang で libvterm - Qiita
  • 男と女が寄りそうとどうなるのか - Qiita

    この記事は Go Advent Calendar 2017 の記事です。 アダムとイブ 男と女が寄りそうとどうなるのか。これは神様がアダムとイブという異なる性を地に授けた時から既に決まっている事なのもしれません。 このお題を解き明かしたい。Go 言語を使って。 ネタとしては以下の記事を参考にしました。 どうしたら「彼女」から「奥さん」になれるかを『Word2Vec』に聞いてみた | 人工知能ニュースメディア AINOW 男と女が寄りそう事。それはつまり「男」というベクトルと「女」というベクトルが合わさった時にどの様な結果が得られるのかという事なのです。 そこで今回は「男」というワードと「女」というワードのベクトルを合成する為に word2vec を使ってこのお題を調べてみようと思います。 word2vec とは 自然言語処理を行う手法の一つとして word2vec があります。word2v

    男と女が寄りそうとどうなるのか - Qiita
  • Vim のソースのいじり方(:terminal を作るまで) - Qiita

    この記事は Vim Advent Calendar 2016、18日目の記事です。 記事を執筆した2016年12月時点では vim に :terminal コマンドが実装されていませんでしたが、2017年7月に vim 体に :terminal コマンドが実装されました。以下は参考程度に参照して下さい。 はじめに ここ数年で、vim にコントリビュートする方が随分と増えた様に思います。リポジトリが GitHub に移ったのは vim-dev にとっても、そして vim-jp にとっても、やはり良い出来事だったと今更ながら感じています。 しかしながらその動きが遅かった事もあり neovim という派生が誕生する事になります。個人的には neovimエンジニアリングとしては成功しており、悪い事だとは感じてはいません。できれば良い競争相手でい続けられればと思います。 さて neovim

    Vim のソースのいじり方(:terminal を作るまで) - Qiita
  • Go1.6でポインタをcgoの関数へ渡す際に発生するcgoCheckPointerを回避する方法 - Qiita

    go1.6 はまだβなので以下の回避方法も変わる可能性があります。(おそらくそのままだと思いますが) そのため、下記の点を注意する必要があります cgoの関数の引数経由以外の方法でGoポインタをCに渡した場合は、そのGoポインタが指すメモリは保護されない cgoの関数から返ってくると保護されていたGoポインタの保護も外れるため、cgoの関数内でGoポインタをどこかに保存して次に呼ばれたcgoの関数内で再利用とかはできない GoポインタへのGoポインタをcgoの関数に渡すのは基ダメ 保護されるのは引数で渡されたGoポインタが指す先のみで、その指す先の更に指す先は保護されない go1.6beta2では、cgo関数呼び出し時のチェックに引っかかってcgo argument has Go pointer to Go pointerというエラーメッセージが表示される Cで確保されたメモリへのポイン

    Go1.6でポインタをcgoの関数へ渡す際に発生するcgoCheckPointerを回避する方法 - Qiita
  • golang で streem を実装した。 - Qiita

    この記事は Go Advent Calendar 2014、16日目の記事です。 はじめに Matz さんが streem という、ストリーム指向言語の開発を始めるらしいです。 まだ文法の設計段階ではあるけど、それなのにかなりの量の pull-req がバンバンと来てて凄いなーと思いつつも「この pull-req 量だと僕には出番無いなー」と思ったので、README.md に書かれているサンプルだけを頼りに streemgolang で実装してみました。 先日はネタで streem のマネをして yacc 定義部分だけ公開していましたが、日ネタが無い中にTLがヒートアップして焦りに焦って勢いで実装してみました。いやはや異様な追い込みを感じます。。。 まずは streem を知る streem は README.md に書かれている通り並列実行を行いつつストリームを処理する言語です。

    golang で streem を実装した。 - Qiita
  • golang で string を []byte にキャストしてもメモリコピーが走らない方法を考えてみる - Qiita

    package main import ( "unsafe" ) type foo struct { k int64 v int64 } func main() { f := &foo{3,4} // unsafe.Pointer() で匿名ポインタにして // uintptr() で演算可能にして // +8 バイト(64bit)足して // unsafe.Pointer で匿名ポインタに戻して // そこにはフィールド v があるはずなので *int64 にキャストして // デリファレンスすれば出来上がり *(*int64)(unsafe.Pointer((uintptr(unsafe.Pointer(f))+8))) = 5 // グヒヒ println(f.v) // 5 } 0x001c 00028 (stringbytes2.go:8) LEAL go.string."he

    golang で string を []byte にキャストしてもメモリコピーが走らない方法を考えてみる - Qiita
    kjw_junichi
    kjw_junichi 2015/02/04
    goのアセンブラ出力方法
  • 1