タグ

ブックマーク / hnw.hatenablog.com (18)

  • 自宅のPC環境を改善したら四十肩が治った話 - hnwの日記

    コロナの影響もあり、この3年ほどで在宅勤務の会社さんが多くなった印象があります。 それに伴い、自宅のPC環境を改善した人って多いんじゃないでしょうか。 ご多分に漏れず私もPC環境改善を行いまして、下記のような環境が普段使いの環境になりました。 筆者のメインPC環境 一見ありふれた環境に見えるかもしれませんが、私はこの環境を手に入れてから、それまで悩んでいた四十肩の症状が大きく改善しました。 稿では、この環境に至った経緯と購入した製品を紹介していきます。同じ悩みを持つ方はもちろん、四十肩・五十肩予備軍の方も参考にして頂ければと思います。 キーボード環境の紹介 上記の写真だとわかる人にしかわからないと思うので、実際の使い方を紹介します。 通常ポジション コンパクトキーボード(HHKB)2台を1つのPCに接続し、左右分割キーボードのように利用しています。 トラックボール使用時ポジション マウス

    自宅のPC環境を改善したら四十肩が治った話 - hnwの日記
    kitokitoki
    kitokitoki 2022/09/14
    水平のトレーニングベンチにハーフカットストレッチポールを固定し、2.5kg などの軽めのダンベルで胸を開くストレッチを行えるような自宅の環境構築もおすすめです。
  • 勝手にMarkdownプレビューを開くVS Codeのエクステンションを書いた - hnwの日記

    Visual Studio Code(以下VS Code)、みなさん使ってますか?VS CodeはMicrosoftが開発しているオープンソースのエディタです。Electronベースという意味ではAtomと似た存在ですが、Atomより軽いという評判を聞いたりします。 私も最近VS Codeを使い始めました。いまのところMarkdown編集専用という状況ではありますが、便利に使っています。それだけでなく、「Auto-open Markdown Preview」というエクステンションを書いて自分好みの挙動になるようにしてみました。稿ではその顛末について紹介します。 ちなみに作業はすべてMacOSX上で行いましたが、WindowsでもLinuxでも同様だと思います。 作ったもの 今回、「Auto-Open Markdown Preview」というエクステンションを作りました。Markdown

    勝手にMarkdownプレビューを開くVS Codeのエクステンションを書いた - hnwの日記
    kitokitoki
    kitokitoki 2017/08/14
    hnw さん emacs やめたのか。感慨深い。
  • PHPのround関数とは一体なんだったのか - hnwの日記

    (7/3 14:05追記)Javaに関する記述について誤認があったので盛大に書き換えました。Java 6、Java 7、Java 8それぞれで実装が変わっていたようです。 (7/13 23:55追記)記事中ではroundを四捨五入と言い切ってしまっています。これは筆者がC99のroundを基準に考えているためですが、言語によっては偶数丸めになっているround関数も珍しくありません。ご注意ください。 PHPのround関数について、ネット上で次のような記述を見つけました。 PHP 四捨五入の計算を間違える唯一の言語として畏れられていましたが、そのバグは治っているかもしれません(治ってないかもしれません) 主要なプログラミング言語8種をぐったり解説 - 鍋あり谷あり 各言語を面白おかしく紹介する内容とはいえ、ずいぶん雑な理解だなーという印象です。ゆるふわな話だけでPHPがdisられ続けるの

    PHPのround関数とは一体なんだったのか - hnwの日記
  • 新MacBook (12-inch, Early 2016)を買ったので性能比較してみた - hnwの日記

    先日発表された12-inch MacBookの2代目を衝動買いしました。MacBook Air (13-inch, Mid 2012)からの買い替えです。MacBook Airは不満の少ないマシンでしたが、持ち歩いていたら肩こりがひどくなったので、性能が落ちずに物理的に軽くなるならと考えて買い換えてみました。 スペック比較 両方ともBTOなしの上位モデルです。 MacBook Air (13-inch, Mid 2012) MacBook (12-inch, Early 2016) CPU 2.0GHz Intel Core i7 (最大3.2GHz) 1.2GHz Intel Core m5 (最大2.7GHz) Memory 4GB 8GB SSD 256GB 512GB Weight 1.35kg 0.92kg ネット上の情報からするとCPU性能も大差ないと判断して買ったのですが、動

    新MacBook (12-inch, Early 2016)を買ったので性能比較してみた - hnwの日記
  • RubyとPythonとC#のround関数のバグっぽい挙動について - hnwの日記

    (12/29 20:40追記)「(追記)なぜMySQLのdecimal型を例に使ったかについて」というセクションを追加しました。また、コメントを頂戴したので返信しました。 (12/29 21:30追記)C#について言えば「Math.Round メソッド (Double, Int32)」に内部実装がどうなっているか書いてあるので仕様通りであり、誤解しようが無いという情報を頂きました。ありがとうございます。そしてごめんなさい、確かにバグじゃないです! (12/29 21:50追記)Pythonのround関数のドキュメントにも誤差が入るかもしれないという記述があります。しかし、内部実装の紹介があった方がいつどういう誤差が入るかわかるので親切かなという気がします。また、浮動小数点数の性質上誤差が入るのは仕方が無いかのような記述に見えるのですが、浮動小数点数を使っていても誤差の入らない実装がありう

    RubyとPythonとC#のround関数のバグっぽい挙動について - hnwの日記
    kitokitoki
    kitokitoki 2013/12/29
    昔の記事かと思ったら、2013年でした
  • gitが無くてもgit cloneするコマンドfakegitを作りました - hnwの日記

    最近は一段とGitHubが流行してきたように思います。多くのオープンソースプロジェクトGitHubに移転するなど、いまやOSS開発者にとっては無くてはならない存在ですね。 ところで、GitHubホストされているプロジェクトの中には、インストール方法として「git cloneしてね」などと書いてあるものがあります。確かに開発者の立場からはgit cloneが一番自然な方法かもしれませんが、ソフトウェアのユーザー全員がgitコマンドを用意しているとは限りません。 もし、こうした意識のズレがソフトウェアの普及を妨げているとすれば不幸なことです。この事態を解決するため、gitコマンドがなくてもGitHubからのgit cloneをエミュレートするbashスクリプト「fakegit」を作ってみました。 fakegitは、指定されたGitHubリポジトリからのダウンロードをgit以外のコマンドで実

    gitが無くてもgit cloneするコマンドfakegitを作りました - hnwの日記
    kitokitoki
    kitokitoki 2012/06/02
    使うことはないがシェルスクリプトの参考用。
  • シェルスクリプトでシンボリックリンク先が同一かチェックする方法 - hnwの日記

    「シェルスクリプト中でシンボリックリンクのリンク先を比較したい -OKWave」というページを見つけたんですが、もっとスマートに出来る気がしたので紹介します。どうやら-ef演算子が利用できるようです。(確証は無いのですが、私の手近では反例を見つけられませんでした) $ touch a b; ln -s a c ; ln -s c d $ ls -lai [abcd] 188974 -rw-r--r-- 1 hanawa hanawa 0 2009-01-05 03:52 a 188976 -rw-r--r-- 1 hanawa hanawa 0 2009-01-05 03:52 b 188977 lrwxrwxrwx 1 hanawa hanawa 1 2009-01-05 03:52 c -> a 188978 lrwxrwxrwx 1 hanawa hanawa 1 2009-01-0

    シェルスクリプトでシンボリックリンク先が同一かチェックする方法 - hnwの日記
  • ポータブルなシェルスクリプトによるパズル (1) find - hnwの日記

    追記:内容を伴っていなかったのでタイトルを変更しました。どう考えても入門講座になる気配がありません。 以前の記事「シェルスクリプトでシンボリックリンク先が同一かチェックする方法」での疑問点は「自分の書いたシェルスクリプトがポータブルかどうか調べる方法って何だろう?」ということでしたが、id:odzさん、きむら(K)さん、tsekineさんの3人から「POSIXのman page見たら?」とアドバイスを頂きました。ありがとうございます!なるほど、こんな便利なドキュメントがあるんですね。 The Single UNIX Specification, Version 2 これさえあれば僕にも模範的なシェルスクリプトが書けちゃうぞ!ということで連載記事化します。第一回目のお題はfindコマンドです。 今回、findに関して同内容の質問を2つ見つけました。GNUじゃないfindで-maxdepth

    ポータブルなシェルスクリプトによるパズル (1) find - hnwの日記
  • WebスクレイピングライブラリGoutteで遊んでみる - hnwの日記

    新年あけましておめでとうございます。今年もボチボチやっていきます。 稿ではPHP製のWebスクレイピングライブラリGoutteを紹介します。 Goutte(グット)とは Goutteは必要十分な機能を持ったWebスクレイピングライブラリです。そもそもWebスクレイピングというのは、外部Webページから必要なデータを取ってくるくらいの意味です。つまり、GoutteはWebスクレイピングを簡単に行う道具だと考えればいいでしょう。 具体的には、GoutteはWebクローラとHTMLパーサを組み合わせたようなものです。Cookieやフォームの扱いなどWebブラウザとしての機能は一通り揃っていますし、CSS風の要素指定もできるなど、機能面では他のライブラリと遜色ないように感じます。 さらに僕個人がGoutteに期待している点は、安定性とロングサポートです。Goutteは主要機能をSymfony2お

    WebスクレイピングライブラリGoutteで遊んでみる - hnwの日記
  • ログインシェルが気に食わなかった場合の対処 - hnwの日記

    自分がroot権限を持っていないサーバで、ログインシェルが気にわないことが稀にあるかと思います。自分は**sh使いなのにデフォルトは**shかよ、みたいな。そんなときのために。 これは有名なネタの部類だと思うんですが、案外不便に耐えて使っている人が多い気がします。僕の使っているものは下記のようなものです。 # .profile # # ログインシェルがshだった場合に好きなシェルを起動する。 # ログインシェルがbashの場合にも利用可能。 # (ただし.bash_profileや.bash_loginがある場合は読まれない) # chshできるならした方が良いが、chshできない環境で重宝する。 #If not running interactively, dont't do anything [ -z "$PS1" ] && return FAVORIT_SHELL=/bin/bas

    ログインシェルが気に食わなかった場合の対処 - hnwの日記
  • GitHubへpull requestする際のベストプラクティス - hnwの日記

    みなさん、Git使ってますか?僕はまだメインのVCSがSubversionなのもあって、なかなか慣れません。せっかくGitを使っているのに、ちょっと不便なSubversionくらいの位置づけです。でも、同じような理解度の人って多いんじゃないでしょうか。 一方で、最近はGitHub管理のオープンソースプロジェクトが増えてきました。バグレポートを送るにしてもpull request*1が前提のような空気があり、Git初心者には少し敷居が高い印象があります。 そんな僕も先日初pull requestをしてみたんですが、色々な失敗の積み重ねで残念なpull requestになってしまいました。その反省を元に、稿ではpull requestする際のベストプラクティスを紹介します。これは「Git Workflow」をベースにコマンド例などを加筆したものです。 概要 pull requestする際は、

    GitHubへpull requestする際のベストプラクティス - hnwの日記
  • Emacs+Firefox+MozReplでファイルセーブと同時にリロード - hnwの日記

    Webアプリケーションの開発効率向上のため、Emacsでファイルをセーブすると同時にFirefoxをリロードするような仕組みをMozReplというFirefox拡張を利用して実現しました。毎度おなじみ、数年前に流行ったネタを蒸し返すコーナーです。 MozRepl拡張を使えば、Firefoxを外部から好き放題に操作することができます。理屈としては、この拡張を有効にするとFirefoxがlocalhostのTCP 4242番ポートで待ち受けるようになり、このポート経由でブラウザレベル(chrome://レベルとでも言うんでしょうか…イマイチうまく言えませんが)の任意のJavaScriptが利用できるというものです。 今回は「Emacsでセーブしたら、Firefoxで見ているページがlocalhostのときだけリロードする」ようにしました。最初はセーブするたびに常にFirefoxをリロードする設

    Emacs+Firefox+MozReplでファイルセーブと同時にリロード - hnwの日記
  • PHPの独特な正規表現関数:mb_ereg_search - hnwの日記

    直前の記事「mb_ereg_replace関数でe修飾子を使う際の注意点」で利用しているmb_ereg_search_ナントカという関数群は特徴的な関数ですが、あまり使用例を見ない関数です。今回はこの関数群の概要を紹介します。 この関数群は正規表現マッチを行うmb_ereg系関数のバリエーションの一つです。前回正規表現マッチした場所を覚えていて、再度呼び出すと前回のマッチングに引き続いて正規表現マッチを行います。これを使うと、次のように正規表現マッチ毎に何かの処理を行うループが作れます。 <?php mb_ereg_search_init($subject, $pattern, $option); while (mb_ereg_search()) { $matches = mb_ereg_search_getregs(); // マッチした内容ごとの処理 } Perlだとm/../gでルー

    PHPの独特な正規表現関数:mb_ereg_search - hnwの日記
  • PHPMatsuriに参加してきました - hnwの日記

    10月2日から3日にかけて、PHPMatsuriに参加してきました。1日目の午前中は大部屋でセッション、午後からは部屋を区切ってセッション+ワークショップの2並列、1日目の夜から2日目の昼まで各自ハック、2日目の午後からハックしたものについてのLT大会、というような流れでした。 事前情報をほとんどチェックできておらず、宿つきのハック大会+ごく小規模なセッションというくらいの認識で行ったのですが、とんでもない勘違いでした。セッションだけでも非常に充実していて、裏側のワークショップも非常に楽しそうで、それだけでヘロヘロなのに深夜までハックする人が多数という、ひょっとしたら通常の4日分くらいが詰めこまれた2日間でした。 僕はずっとセッションを聞いていたのですが、Nate Abeleの「Practical PHP 5.3」とJoel Perras&Nate Abeleの「フレームワーク嫌いの人の為

    PHPMatsuriに参加してきました - hnwの日記
  • ファイル末尾の連続する改行を取り除く - hnwの日記

    テキストファイルの末尾に改行がたくさんついてたり、逆に1個もついていなかったりすることってありますよね。たくさんあるファイルについて、末尾改行1個だけの形に統一したいなー、と思ったら意外と苦労したので紹介します。 当はもっとシンプルに書けそうな気もするんですが…。 perl -i.bak -pe 'BEGIN{undef $/}s/([^\n])\n*$/$1\n/;' hoge.txt ポイントは「undef $/」です。$/は入力の区切り文字を意味し、デフォルトでは改行文字となっています。これを未定義値にすると、1行を取得しようとしてファイル全体を取得するので、改行を跨いだ置換が可能になります(ファイルが巨大なときには死にかねませんが、手元で作業する分にはいいでしょう)。 ただ、改行を含む文字列の置換ははまりどころが多いので注意が必要です。僕だけかもしれませんが、毎度のことなのにsフ

    ファイル末尾の連続する改行を取り除く - hnwの日記
  • PHP 5.3の無名関数を試してみた - hnwの日記

    何番煎じかわからないですが、PHP 5.3からは無名関数が実装されたということで、試しに使ってみました。 見なくても何となく使えるようなものだと思いますが、ドキュメントが「PHP: 無名関数 - Manual」にありますので、ざっと目を通した方がいいと思います。 僕は「どうせ無名関数って中身はcreate_functionなんでしょ?」と思っていたんですが、Closureクラスを使って実装されているなんてことも書いてあります。PHPにしてはマトモっぽくて意外に感じました。 コールバック関数としての無名関数 PHPには引数としてコールバック関数を要求する関数がありますが、PHP5.3.0からは無名関数を引数にしても動くようになりました。 無名関数は、普段の関数と同じノリで「function」から書き始めればOKです。関数宣言との違いは関数名を書かない点だけで、引数やタイプヒンティングについて

    PHP 5.3の無名関数を試してみた - hnwの日記
  • Symfony Event Dispatcherで遊んでみた - hnwの日記

    Symfony Event Dispatcher とは Symfony Event DispatcherというのはPHPフレームワークであるsymfonyに含まれるライブラリで、GoF*1のObserverパターンの変種です。 このクラスは現在Symfony Event Dispatcherという名前で単体公開されていますので、symfony以外のプロジェクトでも気軽に利用できると思います。全部で300行程度の小さいライブラリで、テストコードが29件書かれています。 また、ガイドとAPIリファレンスが書かれています。レシピ集を見ればsymfonyでどう利用されているかを垣間見ることが出来ます。テストカバレッジ率100%なんてことも書いてありますね。 稿では、PHP5に対応したObserverパターンの実装としてのSymfony Event Dispatcherについて紹介します。 Obs

    Symfony Event Dispatcherで遊んでみた - hnwの日記
  • PCREはUnicode文字プロパティをサポートするとは限らない - hnwの日記

    (2011/05/19追記)CentOS5のpcreパッケージについて言えば、2010年7月以降Unicode文字プロパティが有効になっているそうです。安心ですね!(via「 CentOS5.5でCakePHP1.3系のInflector::slugを正常動作させる方法 - Lism.in * blog - nekoya (id:studio-m)」) PCREというのは、Perl互換の正規表現ライブラリです。PCREは例えばPHPのpreg系関数で利用されていますし、他の処理系でも多く利用されているかと思います。ところで、PCREの挙動は環境ごとに異なる可能性があることをご存知でしょうか。具体的には、Unicode文字プロパティをサポートする環境としない環境とがあり、同じ正規表現でも挙動が変わることがあります。僕はそんなことを考えた事もなかったので、ビックリしました。 同じ原因で、以前の

    PCREはUnicode文字プロパティをサポートするとは限らない - hnwの日記
  • 1