サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
codehex.hateblo.jp
YAPC::Kyoto 2023 めっちゃ最高でした。オフラインカンファレンスはやっぱり参加すると楽しいー! YAPC::Kyoto 2023 Reject Con YAPC::Kyoto 2023 は個人スポンサーとして参加しました。ついでに最近やっていることを話したいなと思い応募したのですが落選してしまいました。しかし、スタッフの素敵な心遣いで前日祭の Reject Con で話せることになりました。以下は当日私が話したことの要約です。 NOT A HOTEL AI コンシェルジュ「Kevin」の開発秘話 スライドは、以下のURLからご覧いただけます。 NOT A HOTEL の AI コンシェルジュ「Kevin」の開発についてお話しました。 まず、NOT A HOTEL の紹介から始めました。NOT A HOTEL は、オーナーが使いたい分だけ購入できる別荘型物件で、使わない時にはホ
基本的に郷に入れば郷に従いたいので arm64 のバイナリを扱うようにする。homebrew はここに従って arm64 版のみインストールした。 インストールしたバイナリが arm64 かどうかを確認するために下記のコマンドを使う。 $ lipo -archs $(which command) Go arm64 の Go をインストールするために仕方なく x86_64 の Go のバイナリをここからインストールする。 golang.org pkg なのでいい感じに設置してくれる。その後 go get golang.org/dl/gotip をする。これで gotip コマンドが使えるようになる。 このコマンドを使って arm64 の Go を手に入れる。 GODEBUG=asyncpreemptoff=1 GOARCH=arm64 gotip download を行うことで master
メモっておくかーってという気分になったので書いている。 私は会社でアプリの新機能を開発したり、バグの修正を行っている。いわゆるエンジニアという職種で働いている。 新卒として入社した頃は「エンジニアって設計してコードを書くのが仕事でしょ」という考えを持っていたが、ミーティングや立ち話だったり、チャット上で色んな人とコミュニケーションを行うことが多いなと思った。 当時の私にはコミュ力の高いメンター*1がいて、その人のコミュニケーションの取り方が勉強になった。 実際にあったコミュニケーションの例 入社した当時私がいたチームは Product Manager (PM) や Customer Support (CS) という非エンジニアメンバーも所属しており、一緒に機能開発もしていた。 よく彼らがエンジニアへ質問をしていた内容を簡単に振り返ってみる。 Product Manager 実現可能性 開発
あ…ありのまま今日、起こった事を話すぜ! 「おれは プルリクエストが送られてきたと思ったら いつのまにかスカウトメッセージを読んでいた」な… 何を言っているのか わからねーと思うが、おれも 何をされたのか わからなかった…頭がどうにかなりそうだった… Linkdinだとかスカウトメールだとかそんなチャチなもんじゃあ 断じてねえ もっと恐ろしいものの片鱗を 味わったぜ… 私の GitHub repository に中国企業からスカウト Pull Request が届いた。 github.com 中国企業から届いたスカウトPRの図 送り主の contribution を見ると 1 日で 700 件以上(8/31 21:43 現在)の contribute に成功してる。
環境は macOS 10.14.4 で go1.12.5 です。 まずは次のコードを読んでみましょう package main import ( "fmt" "io/ioutil" ) const script = ` #!perl print "Hello, Perl World!!"; __END__ ` func init() { ioutil.Discard.Write([]byte(script)) } func main() { fmt.Println("This is Go world!!") } これをビルドして実行してみます go build -o main main.go こうすると main という実行用のバイナリができますね。 通常通り実行してみましょう。 $ ./main This is Go world!! 今度は Perl で実行してみましょう $ perl
ソースは tumblr 公式の engineering tumblr より。 https://engineering.tumblr.com/post/183075992674/how-to-be-a-great-engineerengineering.tumblr.com 簡潔にとても良いことが書かれてたので、これを自分なりに翻訳する。 エンジニアだけじゃなくて世の中の社会人にも言えそうなことだと思う。 最高のエンジニアになる方法 間違うことのコツをマスターしましょう。 自分の答えに自信を持ちながら、新しい意見も受け入れていきましょう。一番無知な人が一番成長します。 誰かが間違っていると思うとき、彼らへ叱らずに教えましょう。 問題を解決するために、他人の意見を押し切る必要がない方法があります。パワフルなエンジニアは、同じ解決策を他の人が見つけられるように手助けしながら、自分で解決させること
twitter とか facebook のタイムラインを見てると、URL が共有されてて場合にいい感じにその URL 内で使われてる画像が表示されるはず。 今回 GitHub の変更でリポジトリの URL を共有する際に表示される画像である og:image をカスタマイズできるようになった。 github.blog こんな感じで好きな画像を設定できるが、最低限の画像サイズとして 640×320px、 推奨として 1280×640px が挙げられてる。 はてなブログでも小さく反映されてる。 github.com 追記 なんか反映されないなと思ってたら Some platforms have tag caching that may initially affect your link’s unfurling. (一部のプラットフォームでは、タグのキャッシュ機能があり、最初はリンクの展開に影
こちらは Perl Advent Calendar 2018 の 25 日目です。 gRPC を Perl でやってみようと思ったのですがインターネット上に Perl で Protobuf を扱うような文献がなかったので、まずはここから書かないとだめでしょう!ということで内容を変更してお届けします。 Perl で Protobuf を扱うのに適したモジュールは 2018 年現在だと Google::ProtocolBuffers::Dynamic が一番良さげっぽい。しかし、proto2 には対応しているが proto3 の機能に一部対応できてないとのこと*1。 metacpan.org Synopsis を試す Synopsis に記述されていたコードを proto3 で試してみる。 use feature qw/say/; use Data::Dumper; use Google::P
僕自身 C 言語を使って Perl を拡張することが好きだということもあって、今まで何回か XS を使ったモジュールの公開や、それらについての内容で登壇もしました。 (今までリリースしてきたモジュール一覧) Kei Kamikawa (CODEHEX) - metacpan.org 寄稿内容は Perl をやっていれば一度は絶対耳にする Inline::C モジュールについてです。 metacpan.org Inline::C がどんなモジュール化簡単に紹介しますと、Perl のソースコード上で C 言語のコードを埋め込み実行することが可能になる超変態モジュールです。C 言語で記述した部分はちゃんとコンパイルされるので実行速度も Perl よりも格段と早くなります。 この内容に関して知っている方はとても多いとは思いますが、実際に Inline::C を使ってコードを書いたことのある方って実
お世話になってる皆さんへ あけましておめでとうございます。 今年も一年よろしくお願いいたします🙇 さて、新年早々 Pull Request を提出したわけだが、テストの自動生成でファイル量がかなり多くなってしまい、レビューに必要もないファイルまで diff に表示されて困っていた。 そこで .gitattributes を次の行を追加することで回避することに成功した。 <file-pattern> linguist-generated 今回の場合だと、テストが自動生成されたディレクトリ(t/perl/)上に .gitattributes を追加し、 *.t linguist-generated と追記した。 そうすると GitHub 上では次のような感じになる。 Files changed が ∞ となるがクリックしてみると、diff を行って欲しいファイルのみが表示されるため、最高であ
Datadog のブログで公開されている "Monitoring 101: Collecting the right data" を読んだ。本記事は紹介した Datadog のブログ記事を独自に簡略化したものである。もっと詳しく知りたい場合は Datadog の記事を読むと良い。 記事では次の項目を実現するためにどんなデータを収集し分類するかが記載されている。 自動検知によって潜在的な問題に効果的なアラートを受信する。 素早く調査を行いパフォーマンスに関する原因へ到達する。 Metrics メトリクスはある時点のシステムに関連する値を取得する。通常 1 秒間に 1 回もしくは 1 分間に 1 回など時間の経過とともに監視する。 メトリクスを以下の 2 つのとても大切なカテゴリに分けられる。 Work metrics システムのトップレベルでの health 状態を表せられるメトリクスを指す
随時更新予定です。 Perl-guts 一番最初に読むべきドキュメント。pod に書かれていて色んなところで読むことができるが、個人的に GitHub 上で読むのが好き github.com Compiled code Perl のコンパイルについての記述がある。もし使ってる Perl が -DDEBUGGING というオプションを有効にしてコンパイルされているものならば、次のように実行することで構文木を見ることができる。 perl -Dx hoge.pl また perl -D で利用可能なフラグを確認することが可能。 Backwards compatibility 例えば既存の API について知りたいとき下記のように実行するとさまざまなAPI呼び出しの互換性情報を取得することもできることが分かる。 $ perl ppport.h --api-info=sv_magicext https
今回は Go + gRPC でファイルアップローダーを書いたので紹介します。しかも、ファイルのアップロードだけではなくメタデータも同時に送れるように作成しました。 イメージ 今回作成するにあたって、次のようなイメージで作成しました。 前提は stream 通信(ファイルのアップロードに必要不可欠) クライアントから送信したいファイルのメタ情報を送る ファイルデータを少しずつ送信 結果を受け取る アップロード周りの protobuf これを実現するために oneof を用いました。 理由としては次の通りです。 If you have a message with many fields and where at most one field will be set at the same time, you can enforce this behavior and save memory
参加しました。 shibuyapm.connpass.com ついでに XS 入門した時を振り替えつつ LT をしました。 実は Package::Prototype の中身について LT をしようと思ってましたが、会場の雰囲気を見てこのスライドじゃないなーと思い急遽作り変えたのです。一応貼っておきます。 参加してみて 東京に来た目的の1つとして全ての都会.pm に参加することを掲げていて、shibuya.pm だけは無理だろうなーと思っていたのですが、なんと 3 年と 1 ヶ月ぶりに開催されました!! 3年と1ヶ月ぶり #shibuyapm— jitsu (@jitsu) 2018年7月5日 しかも SHOWROOM を利用したライブ配信もあり、沖縄でも盛り上がっていたそう。 沖縄会場 #shibuyapm pic.twitter.com/iU3GcEvGBA— 八雲アナグラ (@Ana
sqlx-transactionmanager github.com これは Perl でいう @nekokak さん作の DBIx-TransactionManager をベースに作ったもの。今担当している会社のプロジェクト内で github.com/jmoiron/sqlx を使っており、それの transaction manager があるといいよねーとなったので作成した。 既に sqlx を使っている場合、import に書かれているパッケージ名を次のように変えるだけで、sqlx で提供されている全てのメソッドが今までと同じように使える。 import sqlx "github.com/Code-Hex/sqlx-transactionmanager" 単純に sqlx をラップしているだけなため、これだけでエラーをあまり吐かずに置き換えることが可能。しかし、database/sq
mercari.connpass.com mercari.go #1 で Web アプリケーションにおけるテスト実装パターンについて話しました。 スライドに書いたパターンはあくまで「僕の環境で必要になったからこう書いた」集なので、環境に応じた書き方を行うことが絶対ベストエフォートだと思っています。しかし、「テストを楽にするための設計」は必ず私達を後々楽にしてくれるので、最初の設計段階から心がけるべきです。 DB の設計に関しては github.com/jmoiron/sqlx を参考にしました。 github.com めっちゃ最強の mock 技法考えた!と思ったんですが、先駆者(@haya14busa さん)がすでにいたのでここに参考になるリンクを書いておきます。 haya14busa.com しかし、自動生成ツールは僕が作ってるので是非 github に星ください!! github.c
今回 CFP を提出して選ばれ、念願だった GoCon へ参加することができた。 そして、本当に良い体験をしたため忘れないうちに記録する。 この記事を読んでて GoCon に参加しようか迷っている人がいれば勇気を出して是非参加して欲しいと思っている。 こういう自分の好きな言語やサービスのコミュニティが開催する大きなイベントは、みんな自分と同じ共通の趣味を持っている人達だから、絶対に楽しい会話ができるため、沢山の人に話しかけてみるといいと思った。 なお登壇した内容の記事は以下のリンクで。 codehex.hateblo.jp トークについて どれもとても面白い内容のトークだったが、中でも kaneshin0120 さんの「How to write go code」を聞いて「こういう風なトークの形も在るんだ」と感慨深いものがあった。 内容は基本的にライブブラウジングで、Go 初心者がどのページ
Goroutine meets a signal というタイトルで登壇しました。 これは Golet という Perl でいう Proclet を Go に移植した際に閃いたアイディアでした。 親プロセスである Proclet へ SIGTERM, SIGHUP が送信された場合に、Proclet で管理している子プロセスへ SIGTERM を送信するといった挙動を持っていました。SIGTERM は処理を終了させるために用いられますが、プログラムによってはシグナルを受け取った時の挙動を上書きされている場合があるため実質、シグナルの情報を子プロセスへ送信することになると僕個人で解釈してました。 そのため、Go に移植する場合は goroutine で管理するようにし、主プロセスである Golet へシグナルが送られてきた場合、その情報を全ての goroutine へ通知することを目標としまし
今日から無職です。決してエイプリルフールなどではありませんので宜しくお願いします。— 沖縄のヒートシンカー (@codehex) 2018年4月1日 昨日まで無職でしたが、本日より社員になりました。 メルカリは現在、エンジニアとしてベストを尽くせる環境を提供していると思っているので選択しました。優秀な同期も沢山いるので、とてもワクワクしています。 現在の目標 大学生活では自分の作りたいものを積極的に開発してきましたが、今後はオープンソースも含め、誰かの役に立つようなプロダクトを開発していけるといいなと思っています。 とりあえず開発以外でやっていきたいこととして 積極的に新しいことにチャレンジする。 定期的に沖縄へ還元していけるように何か沖縄でもやりたい。 楽しむ!! なかなか困っています 【緩募】新卒が移住して最初の給与を得るまでに大金を使わなければいけない現象名— 沖縄のヒートシンカー
gotanda-pm.connpass.com で LT してきた。 XS を触ったことない人にとっては内容がちんぷんかんぷんだったはずなため、そのカバーをこの記事でできればいいなと思う。 今回作成しようとしたクロージャは次のような、どこかで作成した一つの値をサブルーチン内に保存して返すようなものである。 my $i = 0; my $c = sub { $i }; まず XSUB は extarnal subroutine の略で、その名の通り Perl コードとしてではなく外部にサブルーチンを定義することを意味している。 今回の LT で紹介した 2 パターンの内 XS(subroutine_name) で定義した場合のコードをちょこっとおさらいしたい。 XS(XS_prototype_getter) { dVAR; dXSARGS; SV *retval = (SV *)CvXSUB
卒研発表で LT をしました。そのスライドです。 今なって考えると、これ「コード生成器を用いた」だなぁ... 前回の続きなので前回のリンクはこちら。 codehex.hateblo.jp 今回の研究?で使った Compiler::CodeGenerator::LLVM は improvement/wasm ブランチ。 github.com デモで用いたコードはこんな感じ #!/usr/bin/env perl use feature 'say'; say "Hello, World"; say 1 + 1; say "---------------"; sub loop { my $a = 10; for (my $i = 1; $i < $a; $i++) { if ($i == 9) { say "Last!!"; } else { say $i; } } } loop(); これは関
約 4 年前になると思うが、@goccy54 さんが LLVM のライブラリを用いて、Perl のコードから LLVM IR を生成するといった夢のようなモジュールを作成されていた。 それが Compiler::CodeGenerator::LLVM である。 これをどのような感じで使うのかは、@papix さんによって以下のリンクで解説されている。 Compiler::CodeGenerator::LLVMで遊ぼう! | Hachioji.pm 日めくりテックトーク 上の記事が Publish されてから 1 年後に僕は Perl をやり始めて、Perl に関する情報を仕入れる中でこの記事に出会い、こういうことをやってみたいなーと強く憧れていたのを今でも覚えている... それは置いといて、約 4 年間更新が止まった Compiler::CodeGenerator::LLVM を LLVM
タイトルの通り、vscode を使って XS のデバッグを行う。 環境は Mac OS X El capitan MacBook Air (11-inch, Mid 2012) で lldb を用いる。Perl は 5.24.1 で plenv を使って管理している。 まずはデバッグしたいプロジェクトを vscode で開き、launch.json を以下のように編集しなければならない。 { "version": "0.2.0", "configurations": [ { "name": "(lldb) Launch", "type": "cppdbg", "request": "launch", "program": "/Users/codehex/.plenv/versions/5.24.1/bin/perl5.24.1", "args": ["-Iblib/arch", "-Ibl
この記事は「Perl Advent Calendar 2017」の 25 日目の記事です。 まさか全部埋まるとは思っていませんでした。これも皆さんのおかげ様です。 ありがとうございました! qiita.com Perl には隠れ演算子なるものが存在します。 これらは、言語開発者が意図して作ったわけではなく、偶然発見されたものです。それを誰かが命名することで有名になっていきました。 今回はそれらの演算子を perlsecret に沿った形でお届けします。 環境は Perl 5.26.0 で Mac OSX Elcapitan です。 隠れ演算子一覧 Venus 0+ +0 Venus 演算子は文字列を数値にキャストしてくれることで有名な演算子です。 print 0+ '23a'; # 23 print 0+ '3.00'; # 3 print 0+ '1.2e3'; # 1200 print
この記事は Go Advent Calendar 2017 の記事です。 僕が Go で Web Application を開発するときに主に利用するのが labstack/echo です。 github.com その際に副産物として生産された記事が Qiita にあがっているのでそちらも参照してもらえると嬉しいです。 qiita.com echo.Context を活用する タイトル通りに最大限に活用されていなければ、本当に申し訳ありません... さて、 echo で Controller 側のコードを書く際に良く用いられるのが echo.Context です。例えば良く扱う例として、api を作成する際に、アプリケーション側でバリデーションも同時に行うことを想定するならば、先に go-playground/validator を利用したバリデーションを行うためにセットアップを行い、コン
前々から凄く参加したかった吉祥寺.pm へついに参加することができた! しかし、電車関連のトラブルがいろいろ発生して見事に遅刻してしまった... 約20分の遅刻です。 すみませんすみません #kichijojipm— K (@CodeHex) 2017年10月20日 今回はトップバッターでの登壇予定だったが、遅刻のせいで 3 番目くらいでの発表となってしまい、沢山の方々へ迷惑をかけてしまった。 (本当に申し訳ございませんでした!!) 今回登壇した内容はこれ。 本来は Perl6 で計算機を書いた話をしたかったが、色々忙しくてネタを作成するための時間が 1 日半しか取れず、完成しなかった。そのため、 JWT の貯めた知見について発表した。 登壇中 JWT の簡単なでもも行った。その時に使った WAF は Mojolicious で、 JWT に使ったモジュールは XAICRON さん作の J
twilio BLOG で Google Chrome の API を使ったスクリーン共有機能を javascript で構築するチュートリアルがあったので試してみた。以下の GIF のようなことができる。 画像は twilio BLOG から引用している 必要なもの Google Chrome 静的ファイルをサーブできるローカルサーバー(今回は Go を使った) スクリーンの共有 現時点では mediaDevices API から画面上のコンテンツへのアクセスはセキュリティ上多くの懸念点があるためできないとのこと。 しかし、 getDisplayMedia メソッドの仕様ドラフトは存在するため、将来的にサポートされるのかなーと。 こういった制限があるため、現状は Chrome の拡張機能を自分で作成することでアプリケーションウィンドウ、Chrome のタブのリソースへアクセスする権限を得
前回の「MXNet の基礎を Perl で学んでみた part 1」では NDArray api, Symbol api を組み合わせて計算を試した。今回は、前回使用した api も使ってデータセットをどう準備するか、ニューラルネットをどのように組み立ていくかのチュートリアルを行う。 以下のサイトを参考にしながら進めた。 medium.com データセットの定義 これから扱うデータセットは想定としてサンプル数が 1000 個あるとする。 各サンプルは 100 の特徴を持っている その特徴は float で 0 ~ 1 の範囲で表現される サンプルは 10 個のカテゴリで分けられる。与えられたサンプルを 10 個のカテゴリの中からどれか予測する サンプル数が 1000 個あるうちの 800 個を学習に用いて、残りの 200 個を検証用に利用する 学習と検証に使うバッチサイズは 10 とする
最近 MXNet の論文を読んだり、MXNet はこれから使われるのかどうかについて調査していた。 結構将来ありそうな感じがした。 MXNet についてのレポートです pic.twitter.com/n6gjOcxNIQ— K (@CodeHex) 2017年9月5日 そこで、何かしら基本になりそうなチュートリアルはないかと漁っていたら以下のページにたどり着いた。 becominghuman.ai MXNet の基礎をそれぞれ重要だろうなと思った部分部分で分けてやっていこうと思う。 Perl の repl である Reply を用いた結果を記していく。 Symbol: Declarative Symbolic Expressions これについてはここを参考にするとかなり詳しく把握することができる。 Symbol API は各プログラミング間での MXNet 関連の情報のやりとりについてと
次のページ
このページを最初にブックマークしてみませんか?
『codehex.hateblo.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く