ブックマーク / bugrammer.hateblo.jp (24)

  • 明日は誕生日なので本当の乞食というものをお見せしますよ - Line 1: Error: Invalid Blog('by Esehara' )

    今日の風景 今年も生き伸びてしまった。 誕生日 in 山谷 とうとう33歳となった。33歳といったところで特別に何かが変わるわけではない。変ったことと言えば、山谷のドヤ街でゴロゴロし、隙間から這い出る虫(具体的な名前は付せる)の姿を見るにつけて、侘しい気持ちになったりするくらいのものである。そんな暮しとはいえ、パソコンさえあれば、プログラミングができるので、それで時間を潰し、その知見というものをブログに書くという日常を送っている。 時折、酒で酔っぱらった老人の唸り声が、薄い壁越しに聞こえてはくるが、文明の力であるところの耳栓があれば解決する。耳栓は下のものを使っている。しかし、半日ほどつけているため、耳の垢が貯まるのが唯一の弱点である。 MOLDEX 使い捨て耳栓 コード無し 6620 Goin'Green 10ペアパック 出版社/メーカー: MOLDEX(モルデックス)メディア: ヘルス

    明日は誕生日なので本当の乞食というものをお見せしますよ - Line 1: Error: Invalid Blog('by Esehara' )
  • プログラミングがわからない彼に、すこしだけプログラミングがわかっている自分が言えること - Line 1: Error: Invalid Blog('by Esehara' )

    今日の風景 こういう記事を書いてドヤ顔をするような人間は、大抵人が思っているより能力にたけているわけでは無いという法則が、どこかの民族の諺としてあるとかないとか。 はじめに 石田祐希というブロガーの方が、起業をしたのはいいけれども、プログラミングがわからなくて、書籍が欲しいというエントリを書いている。 この一件に関しては、自分は特に言うこともなく(自分もレールから外れたが、文才の無い自分がその経路を書いても凡庸になるだけだと思って書いていない)、ただ傍観していただけだが、プログラミングのことだったら、自分の知識が無くても教えられることがあるだろう、とは思ったので、彼自身がこれを参考にするかどうかは兎も角として、せっかくなので書いてみようと思う。 ちなみに、記事の性質上、Web系に偏っていることをお断りしておく。 読みたい記事 まず最初に、プログラミングとは何だろうということを考えたときに

    プログラミングがわからない彼に、すこしだけプログラミングがわかっている自分が言えること - Line 1: Error: Invalid Blog('by Esehara' )
  • イケてないRubyのコードのリファクタリングって奴をSmallTalkでやってみる - Line 1: Error: Invalid Blog('by Esehara' )

    日の料理 コードも豚肉も煮こむに限る はじめに Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その1 - Ruby on Railsのビシバシはぁはぁ日記というブログの記事がどうもバズっていて、色んな方面からつっこみが入っていたりする。また、別にこれはオーバーエンジニアリングだから、この程度のコードでもいいのではないか、という指摘も挙がっている。 自分ならどうするかというとこういう感じかな。要するに条件に合う注文を足し算したいだけなので、条件に合う注文を足し算しようよ、という。https://t.co/HEhsO5q2nr— Rui Ueyama (@rui314) 2016年7月17日 コードを書く人によって「これが良いアプローチだ」というのは千差万別であることは間違いない。元の記事を読む限り、これはどうもRubyの特殊事情な

    イケてないRubyのコードのリファクタリングって奴をSmallTalkでやってみる - Line 1: Error: Invalid Blog('by Esehara' )
  • 型をさらに拡張するーーRefinement Typesについて - Line 1: Error: Invalid Blog('by Esehara' )

    日の料理 パン粉でカツ丼の味になるレシピをためしたところだが、世界はそれほど甘くないことを実感させられた。 文 「型」といえば普通何を考えるだろうか。大抵の場合、「型」というものは、Integerであったり、あるいはStringといったようなものを想像するだろう。例えば、Typed Racketの場合、引数で受けとったIntegerをそのまま返すとした場合、次のような定義ができる。 (: simple-integer : (-> Integer Integer)) (define (simple-integer x) x) さて、このように型付けされた場合、型チェックのシステムとしては、引数として入ってくるxがIntegerかどうかにしか興味がない。その値が具体的にどのような形を取るか、ということに関しては、関数の内部においての責務ということになっている。 しかし、ここでちょっと立ちど

    型をさらに拡張するーーRefinement Typesについて - Line 1: Error: Invalid Blog('by Esehara' )
  • Rubyで書いていたら破滅したので、Lisp/Racket で書きなおしたお話 (『プログラミング言語の基礎概念』について) - Line 1: Error: Invalid Blog('by Esehara' )

    今日のアート mograg garageで行われたKYOTAROさんという方が描かれた絵です。 手帳にも描いてもらいました。ありがとうございます!! 概要 タイトルが釣りっぽくなって申しわけない(だったらやらなきゃいいじゃん……)。 普段は練習にRubyを利用しており、あるコードを規則に従ってステップを作成するプログラムを作っていたところ、とてもではないが、メンテすることが不可能になってしまった。なので、Lispの方言の一つであるところのRacketを使ったところ、サクサクと実装できるようになった。なぜこの違いが生まれてしまったのか、できるだけプログラミング言語の特性に依存せずに、この違いを語ろうと思う。 はじめに つい最近、知人と出あったところ、『プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト)』が話題にのぼった。このテキストはオンラインによる問題集が付属しており、知人に

    Rubyで書いていたら破滅したので、Lisp/Racket で書きなおしたお話 (『プログラミング言語の基礎概念』について) - Line 1: Error: Invalid Blog('by Esehara' )
  • Pharo/Smalltalkで足し算できた!!!(全加算器と半加算器で) - Line 1: Error: Invalid Blog('by Esehara' )

    概要 ビット同士を足しあわせる際、ビット同士による繰りあがりを表現する必要がある。これらを実現するため、論理回路として、全加算器と半加算器を作る必要がある。これらを作ることによって、最終的にビットの足し算ができるようにする。 はじめに ゲームの中で、単純な足し算をする計算機を作りたい場合、登場するのが全加算器と半加算器だ。計算機の場合、2進法だと、フラグのオンとオフ(つまり、0と1)で表現できるので、数字を2進法で表現することが多いと思う。実際に、ゲームでの計算機は、マリオメーカーや、マインクラフトなんかで作られている。 【minecraft】マイクラで電卓を作ってみた 【論理演算】マリオメーカーに「3+3=6」を計算させてみた で、こういうのを見ると関心すると同時に、実際のところ、全加算器だとか、半加算器だとか、そういうものについて全く理解が及んでないことがわかった。そういう自分を愚直に

    Pharo/Smalltalkで足し算できた!!!(全加算器と半加算器で) - Line 1: Error: Invalid Blog('by Esehara' )
  • 余は何故キーボード配列をqwerty配列からColemak配列にしたか - Line 1: Error: Invalid Blog('by Esehara' )

    簡単な概要 普段使うキーボード配列をcolemakに変更した。採用した理由としては、colemakが、qwerty配列を改良したものであるという理由からた。ただし、キーボード配列を変更することは、多くのデメリットがある。例としては、他人に自分のPCを利用することが困難になること、そしてまた自分もキーボード配列を1から覚えなおす必要が出てくることである。 はじめに qwerty配列はタイプライターのときから使われている標準的なキーボード配列である。とはいえ、このキーボード配列がタイピングにおいで、果たして最適な配列かといわれると、以前から疑問視はされている。例えば、この配列がタイプライターをあまりにも早く打ちすぎると、文字を打つ金具がこんがらがる、という都市伝説が説得力を持って流布されているように。とはいえ、配列にも、時代に即した最適化の限界というものはきっと存在している。 だからこそ、時代

    余は何故キーボード配列をqwerty配列からColemak配列にしたか - Line 1: Error: Invalid Blog('by Esehara' )
    kybernetes
    kybernetes 2016/04/06
  • 何故、「そのプログラミング言語」で関数型プログラミングをするのが難しいのか - Line 1: Error: Invalid Blog('by Esehara' )

    近況 未来が脅す右手の指 ナイフが滑る左手首 朦朧と過ぎる日曜日 消えた秒針 数えた生久伸 このままでいいのか 俺はお前は 迷路の中 IT'S MY WORLD ――『KOKORO WARP』SHAKKAZOMBIE 問題 多くの人々にとって、既存の慣れ親しんだプログラミング言語で、最新のスタイルを身に着けたいと思うのが人の常だと思う。今宵、流行りのスタイルと言えば、恐らく「関数型プログラミング」になると思う。 混乱を避けるために、ここで一つ定義をする。ここで言う「関数型プログラミング」の定義とは、「副作用を出来るだけ避け、関数の連続によって書くプログラミング手法」という風にする。そして、このときの「関数」とは、「ある入力に対して、一定の出力を返すもの」という風に定義することが出来る。 さて、ここで二つの主題がある。まずひとつに、「副作用を出来るだけ避ける」という点と、「関数の連続によって

    何故、「そのプログラミング言語」で関数型プログラミングをするのが難しいのか - Line 1: Error: Invalid Blog('by Esehara' )
  • 『プログラミング言語の基礎概念』第一章の復習と、自分が躓いたところをメモする - Line 1: Error: Invalid Blog('by Esehara' )

    近況 神様あなたは 何でも知っていて 心悪しき人を打ち負かすんだろう でも真夏の太陽は 罪を溶かして 見えないが確かに 背中にそれを焼き付ける ―― eastern youth『夏の日の午後』 要旨 今月の最後に『プログラミング言語の基礎概念』第二章の読書会があるので、それに向けて復習をする。意味論を記述するために、最少の推論規則から判断を導くための、導出システムを考える。これらには、ペアノ自然数を利用したりしている。 はじめに こないだ、『プログラミング言語の基礎概念』の第一章の読書会に潜り込んできて、そういえば今月の最後にも第二章の奴が始まるので、せっかく惰性で参加するのだし、惰性で読書メモをとっておくのも、あとで勉強する人にとっては有益なのではないかと思ったので、メモしておく。 文 最初のひっかかりポイント: n plus Z is nはどうやって導くの? 何らかの判断を形式化する

    『プログラミング言語の基礎概念』第一章の復習と、自分が躓いたところをメモする - Line 1: Error: Invalid Blog('by Esehara' )
  • 今日のポエム: コードレビューについての一側面 - Line 1: Error: Invalid Blog('by Esehara' )

    近況 自分の歓迎会があったときに財布を無くしていたのですが、他の人のカバンから出てくるという超常現象が発生してしまった……。 概要 声で指摘されると比較的「まっとうだな」と思えることでも、文章にすると「こんなクソコード書くな無能」と読み取ってしまうという問題はあるので、メシをったりして「そういう人なんだな」というのを理解したり、あるいは専属の声優が「だめだぞ」と優しく読み上げるなどの対策が求められる。— えせはら(似非原重雄) (@esehara) 2015, 7月 3 例えば、コードレビューで「なんでこんなコードを書いたんですか?」が、レビュアーにとっては「単純に意図を聞きたい」だけだったのに、レビューを受けている人には「責められている」と感じることはあるので、お互い信頼の問題もあるし、声優が優しく読み上げれば解決する問題でもある。— えせはら(似非原重雄) (@esehara) 20

    今日のポエム: コードレビューについての一側面 - Line 1: Error: Invalid Blog('by Esehara' )
    kybernetes
    kybernetes 2015/07/04
    怖くて褒める以外のことができない
  • 大学に入学します - Line 1: Error: Invalid Blog('by Esehara' )

    はじめに 退職エントリとか、入社エントリは大量に腐るほどあるけれど、入学エントリなんていうのはほとんどないと思うので、書いてみると面白そうだったので書いた。 入学する先は? 入学先は放送大学で、全科履修生として届けを出した。学部は教養学部の情報コースであり、単位としては、初歩的な数学からネットワーク、デジタル情報などを受講するつもりである。無事、満額を支払ったので、何も問題なければ、四月から大学生になっている筈である。満額といっても、一般的な大学ならばそんな問題はない額ではあるけれど、支払ってみると、結構痛い感じになった。 入学するまでの経路 自分の背景を説明すると、二流大学私立中退という経歴がある。で、紆余曲折がありながら、現在、プログラマとして三年ほど、見よう見真似で仕事をさせてもらっている。 しかし、仕事をすればするほど、あるいは技術的に面白いことをやろうとしたりすると、そもそも基礎

    大学に入学します - Line 1: Error: Invalid Blog('by Esehara' )
  • 在宅勤務始めました - Line 1: Error: Invalid Blog('by Esehara' )

    この記事について この記事はHeartRails Advent Calendar3日目の筈でした。 趣旨 HeartRailsに入社した。そこで、リモートを通じて受託開発などを行っている。ちょうど1ヶ月ほど経ったので、リモートワークに関しての所感をメモしておこうというのが今回の記事の趣旨。 なぜリモートワークをやろうと考えたの? 割と働き方で体調を崩すことが多くあったので、「これは自分の働き方を見直さないとマズイな」と思い、あまり一般的な働き方に囚われず、自分にあった働き方を見つけようと思ったのがきっかけ。そうなると、現状として二つの働き方があって、「リモートワーク」か、あるいは「短時間勤務」になるかなと考えたので、そのあたりを中心に見直した結果、HeartRailsの働き方がマッチしているかなと思ったので、そういう経路で働き始めたという経路。 リモートワークを中心にすることに関して不安は

    在宅勤務始めました - Line 1: Error: Invalid Blog('by Esehara' )
  • 自分がプログラマになったときに、Webアプリケーション開発の独習で学びにくかったところをまとめる - Line 1: Error: Invalid Blog('by Esehara' )

    はじめに 独学でプログラミングを勉強しても実務に通用しにくい理由 - 25歳ニートが35万円で上京を企むブログを読んだときに、僕自身もまた不安定労働から、ある程度「これだったら自分できそうだ」という気持ちで取り組み、独習のつもりで幾つものプログラムを書いたりしていた。だから、ニートからプログラマを目指して、社員として今頑張ってます、というのはすごく仲間意識を持ってしまうし、同じように頑張ってほしいという気持ちはある。 確かに、上の記事の趣旨自体、つまり「独習で学ぶことは、実務上でカバーできない部分がある」という側面があることは認めつつ、しかし、自分自身は独習したことが案外実務上で役に立っている部分もあり、その部分は明確にしたほうが、今後同じように独習して、今度プログラマを目指す人々において役に立つのではないか、と思うので、この記事を書こうと思う。 この記事で扱う「Webアプリケーション開発

    自分がプログラマになったときに、Webアプリケーション開発の独習で学びにくかったところをまとめる - Line 1: Error: Invalid Blog('by Esehara' )
  • 東亜飯店で飯を食べた - Line 1: Error: Invalid Blog('by Esehara' )

    誕生日ということもあり、かねてから行きたかった東亜飯店で飯をうことにした。 イベントを立てて、行きたい人を募り、実際に飯をいに行った。 結論からすると、上の写真を撮らせてくれたし、中華屋としても美味しく、また値段も手頃であり、飲みいしているときに、ちゃんとお皿を定期的に片付けてくれたりなど、変なチェーン居酒屋を利用するよりも、かなり良い店だった。そこらへんのレポートを書こうと思う。 東亜飯店は実在するの? 実在します。べログにも、店情報がある。ここに書いてない情報としては、ランチは11:00~15:00の間、夜は18:00~22:30の間で開店していることが多いようだ。 で、この画像なんなの? 東亜飯店とは? と思う人もいるだろうから、東亜飯店がこれほどまでに有名になった経緯は、このエントリに詳しい。こちらにも念のため、画像を張り付けておく。 別にIT系(特にWeb系)でこの画像が

    東亜飯店で飯を食べた - Line 1: Error: Invalid Blog('by Esehara' )
  • 俺が偏差値35だったころにやっていたもの - Line 1: Error: Invalid Blog('by Esehara' )

    はじめのはじめのはじめに 学生一般的には、いまは夏休みということなので、こういう「ゆるふわライフハック」的な記事もいいかなと思ったので、書いておく。 はじめのはじめに「勉強法」に振り回されないこと いまから書くことは、全てではない。 勉強法というか、そういうメソッドは腐るほどある。 間違ってはいけないのは、勉強というのは、まず「勉強法を選ぶ」というところから始まる、と俺は思う。 もちろん、ここから「勉強法マニア」になってはいけない。かくいう俺もそうだったが、そういう知識ばかり増えると、「こういう勉強方法があるよ」ということを教えてまわるけど、実際の勉強は全く出来ないという、単になんか偉そうで嫌なやつになるだけだ。 なにより、自分が「これなら出来る」という勉強方法を考え、身につけ、それによって成果を上げることは、何よりも貴方の自信になる。この記事も同じことが言えるが、自分の成功体験を持ってし

    俺が偏差値35だったころにやっていたもの - Line 1: Error: Invalid Blog('by Esehara' )
  • バブルソートよりも非効率なソートアルゴリズムを探して ―― ストゥージソートとスローソート - Line 1: Error: Invalid Blog('by Esehara' )

    はじめに 恐らく、プログラマの中で配列内の要素を整列させたりするソートにお世話にならなかった人、というのは余り考えられないのではないでしょうか。しかし、とはいえ、大抵はソートを自前で実装せず、組み込み関数であったり、あるいは何らかのライブラリで済ませることが殆どだと思う。 車輪の再発明というよりも、バグとか、自分が考慮していなかった挙動などを避けるために、自前でソートを組むことは余りないのですが、とはいえ、自分なりにソートを実装して見ると、それがどういう特徴を持ったソートであるか、というのがわかりますし、また、ソートというのはいったいどういう操作で実現されるのかという洞察が深まってくるなあ、という実感があったりする。 なので、今回はあるソート二つについての話を書くのが趣旨です。 最高のアルゴリズムはある、だが最悪のアルゴリズムは何か 一口にソートといったところで、ソート自体にも銀の弾丸があ

    バブルソートよりも非効率なソートアルゴリズムを探して ―― ストゥージソートとスローソート - Line 1: Error: Invalid Blog('by Esehara' )
  • 文系にして数学が苦手だった俺が、如何にして(初等)整数論にハマッたか - Line 1: Error: Invalid Blog('by Esehara' )

    はじめに 数学に対してコンプレックスがあるエンジニアというのは、多少なりともいるかとは思う。かくいう自分も、「数学」に対しては、出来ないというコンプレックスがあった。とはいえ、単なるコンプレックスならば、それを克服すればよく、取っ掛かりになる分野を探したりしていた。 もちろん、数学とはいえ、いろんな分野がある。例えば、論理学であったり、集合論であったり、あるいは解析学や、幾何学、巨大数論といったように、さまざまな分野がある。そして、これらの分野は、少なくともある程度までは、プログラミングの世界にも通じている。 例えば、条件分岐を考えるときに、ドモルガンの法則を使うとすっきりするパターンとかもある。だから、全ての数学の分野がそのまま実務に使えるとは限らないけれども、しかしその分野と密接な部分は少なからずあることは疑い得ない。 とはいえ、例えば微分・積分を現実の業務に使う必要性が出てきたからと

    文系にして数学が苦手だった俺が、如何にして(初等)整数論にハマッたか - Line 1: Error: Invalid Blog('by Esehara' )
  • エンジニアサポートCROSS 2014雑感 - Line 1: Error: Invalid Blog('by Esehara' )

    事前告知をしておけばよかったなーと思ったのですが、実はCROSS 2014で、「言語CROSS」という、いわばマイナー言語勢が集まって、自分たちの使っている言語についての魅力を語るというイベントで、Clojure使いとして発言させて頂きました。これらのレポートについては、後で述べるとして、少し自分が覗いたセッションについてのメモをしたいなあと思います。 アセンブラ短歌×バイナリカルタ で、最初のセッションはバイナリカルタのセッションを覗いてきました。バイナリカルタって何なの、というのはこちらのサイトを見ればわかるかと思います。 これ、面白いのは「バイナリ」だから、そもそもエンタメにならないんじゃないの、という懸念が正直あったのだけれど、実際のところ、カルタを作る人のセンスがいいのか、普通にテキスト部分を見ていればわかる問題が大半で、いわゆる「バイナリ解読」という部分よりは、「カルタ」のほう

    エンジニアサポートCROSS 2014雑感 - Line 1: Error: Invalid Blog('by Esehara' )
  • 宇宙ステーション上にFacebookを再現したらどうなるかが、コンセプトの『Redshirt』というゲームについて - Line 1: Error: Invalid Blog('by Esehara' )

    自分はプログラマの他にぬるいゲーマーという顔もあり、Steam上では100個以上のゲームが既に詰んであり、さらにAndroidではガチャのように有料ゲームを購入しまくるという荒んだゲームプレイをプライベートでやっているのですが、最近、Steamで半額になっていた『Redshirt』というゲームが嫌な気持ちになったので、ご紹介しておきます。ちなみに光の戦士の職については全く興味ありません。 ちなみに、自分は自然に英語でやるのが当たり前になっているので気がつきませんでしたが、全部英語なので、その辺気になる人は、PLAYISMが日語対応してくれることを祈りましょう(ちなみに、UNEPICというインディーズゲームが日語になっているので、そっちもお薦め) どんなゲーム? Redshirt Trailer HD - YouTube 上のTrailerを見ればわかりやすい。前書きにも書いた通り、Fa

    宇宙ステーション上にFacebookを再現したらどうなるかが、コンセプトの『Redshirt』というゲームについて - Line 1: Error: Invalid Blog('by Esehara' )
  • ユニットテストを書かないことについて - Line 1: Error: Invalid Blog('by Esehara' )

    はじめに 最近は、同じ職場で働いている人に対して、『テスト駆動開発入門』のを貸したり、自分自身でも全く更地のところにユニットテストを書くという作業をやったり、あるいは実装中にもユニットテストを書かないと、コードを書く手が少し滞ってしまうくらいには、テストに依存している自分がいる。 さて、ここ最近で一連のテストの話が各方面から出ていて、それらの議論について興味深く感じる一方で、たとえば自分はそうだけど、「執拗にテストを書いているけれども、これで前に進んでいるんだろうが」という罪悪感みたいなのを抱えている人というのは、それなりにいるんじゃないかと。特にユニットテストを腐らせて、テスト自体を負債にしてしまった人であるなら特に。 ここ最近の、アジャイル開発であったりとか、あるいはプログラマのためのみたいなのを開いたりすると、たいてい「他のことは良いからテスト書け」と載っている一方で、見回してみ

    ユニットテストを書かないことについて - Line 1: Error: Invalid Blog('by Esehara' )