タグ

ブックマーク / blog.shibayu36.org (17)

  • スムーズに進行するためのエンジニアリングタスク分割の工夫 - $shibayu36->blog;

    会社の振り返りで「エンジニアリングの作業タスクがうまく分割できていそうだったが、その知見を共有してほしい」と言われたので、自分がどう考えてタスク分割をしているかをこの記事で共有したい。 この記事のスコープとすること・しないこと タスク分割をするときの工夫点 少なくとも1スプリント以内で終わるタスクになっている 完了条件が明確である 開始から終了まで他タスクによる待ち時間がない 他タスクが待ち状態になる時間を最小限にする 自分にとって難易度の高いものが1タスクの中で1つである 初めから完璧なタスク分割を目指さない 工夫を考慮した分割例 まとめ この記事のスコープとすること・しないこと 今回の記事では、あるユーザーストーリーが存在するとして、その設計・実装・テストなどをスムーズに進行するための工夫について書く。 逆に次のようなタスク分割については取り扱わない。 ユーザーに提供すべき価値があると

    スムーズに進行するためのエンジニアリングタスク分割の工夫 - $shibayu36->blog;
  • I/Oを多重化するためのシステムコール(select, poll, epoll, kqueue) - $shibayu36->blog;

    サーバ周りの勉強していると、たまにselectとかepollとか言葉が出てきて、理解できてなかったので調べてみた。 I/Oの多重化 例えばサーバ周りの実装を、特に何も考えずにやると、I/Oでブロッキングが発生し、一つのクライアントとしか通信できないということが起こります。これを解決するために fork threads I/Oの多重化 非同期I/O といった方法があります。 この中のI/Oの多重化を実装するためのシステムコールとして、select, poll, epoll, kqueueなどは実装されているようです。 少し調べてみると、次のような記述のような機能をそれぞれが実装するようです。 プログラムで複数のファイルディスクリプタを監視し、 一つ以上のファイルディスクリプタがある種の I/O 操作の 「ready (準備ができた)」状態 (例えば、読み込み可能になった状態) になるまで待つ

    I/Oを多重化するためのシステムコール(select, poll, epoll, kqueue) - $shibayu36->blog;
  • 睡眠に関する本を読んだ - $shibayu36->blog;

    睡眠を学びたいと思ったので読んだ。最近自分が全然睡眠足りてなかったということに気づけて良かった。 スタンフォード式 最高の睡眠 作者:西野 精治サンマーク出版Amazon 睡眠こそ最強の解決策である 作者:マシュー・ウォーカーSBクリエイティブAmazon 「スタンフォード式最高の睡眠」の読書ノート * 睡眠負債を返すには3~4週間程度かかるので、週末の寝だめくらいでは機能しない 569 * 睡眠メンテナンスで意識したいのは「最初のノンレム睡眠」をいかに深くするか 620 * グロースホルモンが最も多く分泌されるのも最初のノンレム睡眠 * 睡眠圧も最初のノンレム睡眠で多くが解消される * 最初の90分を阻害すると、その後の睡眠は計測不能となる程乱れる 634 * 普通の人は最低でも6時間以上は睡眠が必要 644 * 眠りが足りているかの一番簡単な点検は自分の感覚。眠りの前後の「眠さ」 +

    睡眠に関する本を読んだ - $shibayu36->blog;
  • 締め切りが厳しいプロジェクトで、プロジェクト初期にまずやっておきたいこと - $shibayu36->blog;

    これまで僕は締切がかなり厳しいプロジェクトを数回経験してきた。その経験から、締切が厳しいという特性を持ったプロジェクトの初期にまずこれだけはやったほうが良いということがいくつか見つかったので、今回はそれらを紹介していこうと思う。 前提となるプロジェクト 今回紹介する方法は、次のような特性を持ったプロジェクトを前提とする。 細かい仕様は決まっていないが、作るものの要件はある程度明確である アジャイルの定義におけるスコープ・コスト・品質・スケジュールの中で、スケジュールを特に優先したい(スケジュールを変えられないなど) 数ヶ月以上のプロジェクトである 短いスパンでリリースしてユーザーの様子を見てその後のプロダクトバックログの優先度を変えるような性質のプロジェクトでは、別のやり方を取る必要があると思う。そこは注意してほしい。 プロジェクト初期にやっておきたいことは何か 上記のようなプロジェクト

    締め切りが厳しいプロジェクトで、プロジェクト初期にまずやっておきたいこと - $shibayu36->blog;
  • Emacsを26.1にアップグレードした - $shibayu36->blog;

    eglotというlspのクライアントを使いたくてEmacs 26.1を入れた。なんかめっちゃ苦労した。辛いのでvscodeとかに脱出したくはあるが、慣れ親しんでいて完全脱出は無理かもしれない。 インストール 最初はEmacs 25.3/26.1 を EMP版で快適に使う - Qiitaを参考にEMP版を使おうと思ったのだけど、なぜか外部ディスプレイだとフォントが薄くなってしまう問題に遭遇し断念(ちなみに https://hatebu.me/entry/mojavefont はやっています)。仕方ないので Emacs-25.3/26.3(Mojave, Catalina, BigSur)/27.2/28.x にインラインパッチをあてて使う(macOS) - Qiita の野良ビルドを参考にし、26.1のGoogle IME用のやつを利用してインストールした。 ビルド時になぜかlibxml2の

    Emacsを26.1にアップグレードした - $shibayu36->blog;
    pogin
    pogin 2019/01/24
  • web-modeでペースト時に自動でインデントされるのをやめる - $shibayu36->blog;

    Emacsのweb-mode.elはHTMLを編集するにあたって非常に便利なmodeなのだけど、気を利かせすぎてて微妙に使いにくいところがある。例えばペースト時に自動でインデントされるのは個人的にはちょっと困っていて、改行で自動インデントされたいけど、ペースト時は特にインデントされずに自分で確認しながらインデントしたい。 web-modeの中を見ていたら、web-mode-enable-auto-indentationというのがあったので、この設定を変えたらペースト時の自動インデントを止められる。 以下を追加するとOK。 (add-hook 'web-mode-hook '(lambda () (setq web-mode-enable-auto-indentation nil)))

    web-modeでペースト時に自動でインデントされるのをやめる - $shibayu36->blog;
    pogin
    pogin 2018/02/10
  • ScalaでのJDBCによるDB操作の勉強をした - $shibayu36->blog;

    ScalaでPlay+Slickの勉強をし始めたのだけど、DIを使ってDBオブジェクトを取得したり、コネクションプールを使っていたり、クエリ発行はDSLだったりと、色々なことをやっていて全く理解できなかった。そのため、とりあえず地道に下の方から学習して、分からないところを減らしていこうと思ったので、まずはJDBCによるDB操作の勉強をした。 とりあえず使い方をさっと理解するために https://www.postgresql.jp/document/7.4/html/jdbc.html が参考になった。 JDBCとは PerlDBIみたいなやつとおぼえた。ドライバの組み合わせもDBD::mysqlDBD::pgみたいなものとおぼえた。 依存の追加 今回はPostgreSQLを使って操作をしようと思ったので、そのドライバを依存に追加する。build.sbtに以下のように記述する。 lib

    ScalaでのJDBCによるDB操作の勉強をした - $shibayu36->blog;
    pogin
    pogin 2017/09/14
  • Scalaの開発環境をセットアップした - $shibayu36->blog;

    Scalaを書くことになったので、Scalaの開発環境をセットアップした。Emacsで編集できるように scala-modeを使って編集 ensimeを導入し、できる限り動作が重くならないように tagsファイルを使って定義ジャンプをできるように IntelliJとEmacsを行き来できるように あたりを行った。 scala-modeを使って編集 昔はscala-mode2を使っていたみたいだけど、最近はscala-mode を使うみたい。 (require 'scala-mode) ensimeを導入し、できる限り動作が重くならないように EmacsでもScalaのシンタックスチェックや定義ジャンプなどを使えるように ensime を導入する。ensimeを使えるように Emacs + ENSIME でScalaの開発環境を作る - Qiita とかに書いてあるとおり、 Emacs上でe

    Scalaの開発環境をセットアップした - $shibayu36->blog;
  • Emacsでscala-mode2とensimeを使ってScala環境を作る - $shibayu36->blog;

    Scalaを書くにはIntelliJを使うのが良さそうだったのだけど、使ってみたらいつもの感覚で使うのがけっこう難しかった。そこでEmacsでの環境構築を行ってみた。今回はscala-mode2とensimeを利用した。特にensimeに関してけっこうはまってしまったので、そのあたりを多めに書く。 scala-mode2 最近はscalaemacsで書くならscala-mode2を使うみたい。セットアップは簡単でM-x package-list-packagesしてscala-mode2をインストールした後、以下をどこかに書いておけば良いだけ。 ;;; scala mode (require 'scala-mode2) これでひとまずハイライトなどを行うことが出来た。 ensime(セットアップ編) 続いてensimeのセットアップを行う。ensimeを利用することで、型を利用した補完、

    Emacsでscala-mode2とensimeを使ってScala環境を作る - $shibayu36->blog;
  • 基礎技術の学習のモチベーションをどう保つか - $shibayu36->blog;

    最近、コンピュータサイエンスなどの基礎的な知識を学習するように心がけている。できる限り今後も長い期間役に立つ、寿命の長い技術や知識を付けておきたいためである。その一貫で アルゴリズムを学習 してみている。 学習をはじめて感じた課題 しかし、とりあえずアルゴリズムを学習してみると、学習を続けられるか分からないという課題も感じた。 寿命の長い技術であるほど、日々の開発にすぐに利用できないことが多い 例えばアルゴリズムを学んだとしても、それが役立つまでいくにはある程度長い時間が必要 日々の開発に利用できていないと、モチベーションをずっと保ち続けるのが難しい モチベーションが保てないと、結局途中で勉強をやめてしまい、日々の開発に利用できるレベルまでたどり着けない 流行りの技術とかは、すぐに開発に導入してみるとかができるので、とりあえずモチベーションは保ちやすい。しかし、数学とかアルゴリズムとかLi

    基礎技術の学習のモチベーションをどう保つか - $shibayu36->blog;
  • ある文字列は含まれているけど、ある文字列は含まれていないファイルを探すワンライナー - $shibayu36->blog;

    ちょっと便利だったので自分用にメモ。 git grepにはgrepに引っかかったファイル名を出す --name-onlyオプションがある またgit grepでは逆にgrepに引っかからなかったファイル名を出す --files-without-matchオプションがある これを利用すると以下のコマンドで、ある文字は含まれているけど、ある文字は含まれていないファイルをワンライナーで探せる。 例えば「ほげほげ」は含まれているファイル中で、「ふがふが」が含まれていないものを探すには以下のようにする。 $ git grep --name-only -e 'ほげほげ' | xargs git grep --files-without-match -e 'ふがふが' 適当にやっただけなので、他にいい方法がありそうではある。

    ある文字列は含まれているけど、ある文字列は含まれていないファイルを探すワンライナー - $shibayu36->blog;
  • 「イシューからはじめよ」を読んだ - $shibayu36->blog;

    最近やることがたくさんあってどうしたら良いか分からなかったので、同僚の薦めもあって「イシューからはじめよ」を読んだ。結構面白かった。 イシューからはじめよ──知的生産の「シンプルな質」 作者:安宅和人英治出版Amazon このには、やるべきことがたくさんあった時に、タスクをやる効率をどんどん上げていくという方向にまず走るのではなく、その中で重要なイシューを見極めてそれを重点的に取り組むべきである、というようなことが書かれていた。とにかくやるのではなく、まずやることを見極めよみたいな感じ。確かに忙しい時はとにかくやるとなりがちだけど、とにかくやっててもあんまり成果が上がらないことがあるので、まず見極めないといけないと思った。 このの中で 悩まずに考える 「これは何に答えを出すものなのか」を明確にしてから問題に取り組む 一次情報を死守 という言葉が印象に残ったので、それについて書く。 悩

    「イシューからはじめよ」を読んだ - $shibayu36->blog;
  • 自分流の .emacs管理 - $shibayu36->blog;

    この記事は.emacs Advent Calendar 2013の三日目です。.emacs Advent Calendarということなので、今回は僕自身がどうやって.emacsを管理しているかということについて書こうかなと思います。 .emacsの管理ってなかなか難しくて、init.elにずっと書き続けていたりするとあっという間に管理不能になったりします。そこで今回は僕自身がどういう構成で、どういう考え方で管理しているかについて、参考程度に紹介したいと思います*1。僕の.emacsはhttps://github.com/shibayu36/emacs に公開しています。 大雑把な構成 基的に以下の様な感じです。 外部elispの管理はpackage.el + el-getを利用 MELPAにあるものはpackage.el それ以外はel-getを利用 自分の設定の管理・分割はinit-l

    自分流の .emacs管理 - $shibayu36->blog;
  • elispをpackageとel-get両方で管理する - $shibayu36->blog;

    関西Emacsに行って、elispをちゃんとpackage管理みたいなので管理しないとなあという機運が高まったので、管理の方法を見なおしてみました。 これまでの管理方法としては、 基的にはelispをcurlで落とし、git管理 最近はel-getを使ってみていた という感じにしていました。 しかし、el-getは結構はまるところがあったり、elispをあまり使えない身としてはなかなか厳しいところがありました。そこでpackage.elにしてしまおうかなと思っていました。 ただし、package.elにも一つだけ問題があって、MELPA等に登録しないとpackage管理できないということです。そのため、個人でちょっと書いてgithubにおいてあるelispをpackage管理できません。 そこで以下の様な方針で管理することにしました。 基的にはpackage.elを使う package

    elispをpackageとel-get両方で管理する - $shibayu36->blog;
  • emacsの正規表現をもっと便利に使う - $shibayu36->blog;

    emacsで正規表現を使って置換したいみたいな要求はそれなりにあると思いますが、それをやろうとするとemacsの正規表現のバックスラッシュ地獄みたいなものに遭遇することがよくあります。そんな時に使いたいtipsを少しだけ紹介します。 re-builderを使う emacsにはre-builderというものがあって、書いている正規表現のマッチ状況をリアルタイムにプレビューすることが出来るツールが存在します。M-x re-builderして、いろいろ書いてみると現在のマッチ状況がプレビューされます。 実行中にC-c C-wすればその正規表現をコピーでき、C-c C-qで終了出来ます。emacsにはいろいろな正規表現syntaxがあるので、C-c C-iで切り替えもできます。 詳しくは以下の記事を見るとよいでしょう。 Emacsの正規表現編集モード re-builder とややこしいバックスラッ

    emacsの正規表現をもっと便利に使う - $shibayu36->blog;
  • Plackコードリーディングした時のメモ - $shibayu36->blog;

    Plackをコードリーディングしたのだけれど、適当にメモしたのを公開しておく。 Plack/PSGI PSGI仕様 : http://search.cpan.org/dist/PSGI/PSGI.pod antitpopさんの勉強資料 : http://d.hatena.ne.jp/antipop/20090924/1253761509 PSGI env HTTP_*はHTTPヘッダ REQUEST_METHOD psgi.* psgi.url_scheme, psgi.errors response [status, [headers], [content]] Plack::Request env受け取る それっぽいやつを返す cookieのparse _parse_request_body inputからbodyを読み込んで行く処理 Plack::Response responseを作

    Plackコードリーディングした時のメモ - $shibayu36->blog;
  • emacsの設定ファイルをバージョン管理してみた - $shibayu36->blog;

    二つ以上のPCemacsを利用していると、設定ファイルの共有が面倒になってきたので、gitでバージョン管理してみました。 構成 自分の場合は、さくらインターネットを共用リポジトリにしました。また、ローカルの方では、ホームディレクトリにemacs/ディレクトリをローカルリポジトリとして作成し、その中に.emacsファイルと.emacs.d/ディレクトリ(カスタマイズ用のelispファイル等はここに入れています)を設置しました。 さくらインターネットでの共用リポジトリの作成はhttp://d.hatena.ne.jp/shiba1029196473/20100324/1269406164も参照してください。 サーバ側に共用リポジトリを作成 すぐできます。 [server]$ mkdir -p repository/emacs.git [server]$ cd repository/emacs

    emacsの設定ファイルをバージョン管理してみた - $shibayu36->blog;
  • 1