読者です 読者をやめる 読者になる 読者になる

無駄と文化

実用的ブログ

数学を教わってみて思うこと ~ ベイズ統計学入門レポート

先月から すうがくぶんかのベイズ統計学入門 に通っています。 もちろん無料講座とかではなく月謝が掛かるタイプのもので、自腹でお金を出してます。 (向上心があって素晴らしいと評価してくれる方は今度会ったときにコーヒーでも奢ってください。学びをフィ…

Python3 で言語処理100本ノック 2015 - 第2章

まさか続くとは。 乾・岡崎研究室が公開している 言語処理100本ノック 2015 に取り組んで行きます。 使用する言語は Python3 です。 第2章まで出来たんでまとめます。 第2章: UNIXコマンドの基礎 hightemp.txtは,日本の最高気温の記録を「都道府県」「地点…

JavaScript のデータを CSV で保存する

意外と需要のある JavaScript のデータを CSV として保存するスニペットを書き留めます。 var data = [ ['name' , 'age', 'gender'], ['Andrew', 26 , 'male' ], ['Lisa' , 21 , 'female'], ['Fred' , 41 , 'male' ], ] このような多重配列を元にして、 この…

Python3 で言語処理100本ノック 2015 - 第1章

乾・岡崎研究室が公開している 言語処理100本ノック 2015 に取り組んで行きます。 使用する言語は Python3 です。 第1章から第10章で構成されているのでまずは第1章から。 ではスタート。 00. 文字列の逆順 文字列"stressed"の文字を逆に(末尾から先頭に向…

Python で日時計算 ~ 月初とか月末とか N ヵ月前とか

Python で日付計算と言えば datetime モジュールですね。まぁまぁ便利なんですが、標準では 月初 や 月末 を求めることができません。 なのでちょっとしたユーティリティコードとして書いておきました。 N ヶ月後・N ヶ月前 add_month() は N ヶ月後の同日同…

一手間加えた INSERT - レコードが未登録のとき、登録済みのとき、

DB にレコードを INSERT するとき、一手間加えて 未登録の場合に限って登録 や 登録済みなら一部フィールドだけ上書き などしたくなりますよね。 ここ最近、そのような SQL を書くことが多かったのでメモしておきます。 ちなみに MySQL の独自構文などもバリ…

Scrapy+AWS LambdaでWeb定点観測のイレギュラーに立ち向かう

この記事は クローラー/Webスクレイピング Advent Calendar 2016 の10日目の記事です。 9日目は @hotu_ta さん、11日目は @TakesxiSximada さん でした。 Web スクレイピングはイレギュラーとの戦いです。特にそれが Web 定点観測のためのスクレイピングで…

optparse-declarative のコードリーディングから型レベルプログラミングを学ぶ

この記事は Haskell Advent Calendar 2016 の9日目の記事です。 とか云ってもう11日ですね、ホントすみません。 8日目は @phi16_ さん、10日目は @bra_cat_ket さん でした。 Haskell を書き始めてはや5年、Monad や Applicative は使いこなしているけど、そ…

Python2 で日本語(Unicode)対応の PrettyPrint

通常、print はユニコード文字列であっても読みやすく表示してくれます。 print(u"ほげ") # => ほげ しかし pprint モジュールの pprint() を使うと、なぜだかユニコード文字列がエスケープされるようになります。 pprint.pprint(u"ほげ") # => u'\u307b\u30…

JavaScript のコールスタックが溢れていたのをどうにかしたら JS 要らなくなった話

約5ヶ月前にこんな記事を書いたわけですが、 blog.mudatobunka.org この記事が今になってよく見られるようになってます。 先週までは毎日1桁のPVをコツコツを積み重ねていたのが本日だけで130PVです。 どこかの誰かに拾っていただいたんでしょうね。はてブも…

毎月数時間を要していたスキャンデータ整理をOCRで自動化した

企業活動をするなかで見積書や請求書といった書類を発送するシーンは多いですよね。 私が勤める会社でもそういった書類をクライアントに郵送していますが、郵送する前の書類をスキャンしてスキャンデータを残しておく決まりになっています。 書類を作るのに…

Lazy_K で九九表のすべてのマスの和

前回の記事で [九九表のすべてのマスの和を求める問題] をいろいろな言語で書きました。 記事の最後でそのうち Lazy_K でも書きます的な事を宣言しておいたんですが、この度そのコードが完成しましたのでご報告します。

九九表のすべてのマスの和

takatoh 様 が同じ問題を Ruby と Scheme で解いてくださいました。許可を得て転記させていたいています。 Ruby 版の簡素さはさすがという感じです。そして、Scheme 版の S式 は慣れないと読めないし分からないのが面白いですね。takatoh 様、本当にありがと…

Python+OpenCV で顔検出 - OpenCV に付属の評価器を試す

画像の中から人の顔が写っている場所を自動的に判定する 顔検出 ってやつをやってみようと思います。 そのために OpenCV という有名なライブラリを使用します。OpenCV 自体は様々な言語と組み合わせて使うことが出来るのですが、今回は自分が書き慣れている …

Scrapy でエラーハンドリング for v1.1.3 (※一部未解決)

突然ですが Scrapy v1.1.0 から Python 3 に対応して嬉しいですね。これまで Scrapy のために 2.7 で通してきたんで。 さて、今回は Scrapy における エラーハンドリング(例外処理) についてまとめようと思います。 スクレイピングという行為は外部の構造化…

【jQueryの基本の"き"】パート4 - jQueryのいろんなバージョン

これまでjQueryの使い方についてねちっこく解説してきましたが...。 今回は「使い方」ではなく「選び方」です。 ビギナーズからよく飛び出す質問「どのバージョンのjQueryを使えばいいの?」について。 jQueryは最新版だけでも全部で8つ 2016年8月末時点でjQ…

【jQueryの基本の"き"】パート3 - 起動スクリプトを囲っているアレをひもとく

さて、前回までjQueryプラグインの基本的な使い方をおさらいして、さらに起動スクリプトについて詳しく解説してみました。 今回は、これまで意図的に触れずにスルーしてきた部分をピックアップします。 起動スクリプトを囲っているよく見るアレ についてです…

Scrapy のクローリング中に win32api が無くてコケる問題に対処(Windows10, 64bit, Python2.7)

昨日は Windows で Scrapy 1.1.2 をインストールするために必要な libxml2 のインストールについて解説しました。 blog.mudatobunka.org が、どうやら Windows ではクローリングを実行するときにもう一つ win32api というライブラリが必要になるようです。 w…

Scrapy インストール中に libxml2 が無くてコケる問題に対処(Windows10, 64bit, Python2.7)

Scrapy を最新版の v1.1.2 にしたくて pip install scrapy したらインストール中にコケました。 python -m virtualenv env env\Scripts\activate pip install scrapy とやっても... コケる。 なにやら libxml2 というライブラリが見つからないと言われていま…

【jQueryの基本の"き"】パート2 - 起動スクリプトを詳しく解説

前回はjQueryプラグインを設置するための基本的な流れを解説しました。 今回はプラグインを使いこなすための要(かなめ)になる 起動スクリプト についてイメージしやすい例で解説していきます。 起動スクリプトとは 前回解説しましたが、jQuery本体やプラグイ…

【jQueryの基本の"き"】 パート1 - jQueryプラグインの使い方

jQueryプラグインの 作り方 ではなく、使い方 です。 Web上には多くのjQueryプラグインが公開されていますが、どのプラグインにも共通する基本の使い方を解説します。 普段、サンプルコードをなんとなくコピペするだけで済ませてしまっている人も、基本さえ…

React で this.props.children に新しい Props を渡す

React でカスタムコンポーネントを作るとき、コンポーネントの子要素には this.props.children でアクセスできます。 この this.props.children はそのままレンダリングすることもできるのですが、何かしらの Props を渡したくなったらどうするのでしょうか…

【今日のバグ取り】 JavaScript でコールスタックが溢れていたのをどうにかした話

lazex さまのはてブコメントを受けて、animation プロパティを使った改良版を書きました。完全にこっちの方が良いので、参考にするならばどちらかというと新実装の方で。 lazex さま、ご指摘ありがとうございます。 JavaScript のコールスタックが溢れていた…

とあるCSSハックの弔い

CSS

今日、私の職場でデザイナーに向けて共有していたCSSの雛形から、とある2行を削除した。CSSとHTMLとを交互に見てもらえば分かるとおり、削除された2行のCSSは全く意味を成さない。だから削除した。が、意味を成さないこの2行にはちゃんと意味がある。実はこ…

Python で文字列の類似度を比較する

日本語の処理をしているときに厄介なのが表記揺れですよね。「問い合わせ」と「問い合せ」など。人間が見れば同じ単語だと分かっても、プログラムで処理する際に単純に等号で比較してしまうと別の単語扱いになってしまいます。 今回は類似度を用いて二つの単…

Fetch API が 4xx エラーを reject してくれない

最近のフロントエンド開発に関して、 jQuery への依存を極力減らしてPure JS だけでいろいろな処理を書くように心掛けています。 具体的には ECMAScript2015 で書いたものを Babel でトランスパイルして、Browserify でバンドルするというスタイルですね。ホ…

Slimフレームワークで整形された JSON レスポンスを返す

Slim フレームワークは PHP 製のマイクロフレームワークです。 Ruby 製の Sinatra というフレームワークにインスパイアされて作られたもので。リクエストのルーティングと、それに応答する処理を記述するだけで Web アプリが作れる、その名の通り最小限(マイ…

Google Analytics - セグメントの理解

はじめに この記事はデベロッパー向けに Google Analytics Core Reporting API のセグメントについて掘り下げて解説する記事です。 Google Analytics の初心者向けに「セグメントとは?」と解説するものではありません。 Reporting API で動的セグメントを最…

Scrapy で相対パスを解決して絶対パスに変換 for v1.0.4

スクレイピングネタです。 Scrapy は Spider の perse() メソッドの中で新しい Request オブジェクトを yield してあげるだけで、次々に URL を辿ってクローリングしていけるので便利ですね。 例えば、response.xpath("//a/@href").extract() とかすればペー…

いまさらまとめるブックマークレットの作り方 〜 2016年版 〜

これまでプライベート・業務の両面で個人的にブックマークレットを作っては利用してきました。このブログでもブックマークレット関連のネタは書いてきましたが、ブックマークレットそのものの作り方に関してまとめていなかったので、あらためて書いてみます。

Laravel5 ベースのプロジェクトに React が爆速で導入できた話

ここ3ヵ月ほどプライベートで Laravel 5.2 を使ってみています。 この度、バックエンドを Laravel、フロントエンドを React でWebアプリを組んでみようかと思い立ち、初めて React を導入してみました。 『下準備が面倒かもな...』とか思ってたんですが、Lar…

Scrapy の start_urls をファイルから読み込む for v1.0.4

Scrapy の start_urls を外部ファイルから読み込んで設定する方法を書き留めます。Scrapyのバージョンは 1.0.4 を想定しています。 現状だとスクレイピング対象の URL はハードコーディングされています。対象 URL をソースコードに直書きしつつ管理したいと…

CentOS で node-webshot によるスクリーンショットの保存が出来ない問題への対処

Webサイトのスクリーンショットを保存してくれる便利なライブラリ node-webshot ですが、Ubuntu では問題なく動くコードが CentOSでは動かないという問題にぶち当たりました。 ドハマりして時間を食ったので解決策を記録しておきます。 結論 結論から書きま…

ベンダー毎の SQL の相互変換を SQL::Translator で

先日の業務中に MySQL 用に書かれた SQL ファイルを SQLServer に読ませる必要が出てきました。 『こんなの絶対誰かがもうコンバーター作ってるでしょ!』と思って探したんですが、これが意外と無かったんですよね。唯一、見つけられた [SQL::Translator](ht…

JavaScript実行済みのDOMをHTMLファイルとして保存するブックマークレット

スクレイピングネタです。 クローリング+スクレイピングするにあたってパスワード認証の掛かったページから情報を取得するのはなかなかに厄介な課題ですよね。 今回は、いま表示しているページをHTMLとして保存するスクリプトをブックマークレットにしてみま…

Haskellで目指せワンライナー! 〜 1行コードでがんばる 〜

これはHaskellアドベントカレンダー2015の(2日遅れの)8日目の記事です。 本当にすみませんでした。 導入 小さな部品(関数)を組み合わせて大きなプログラム(関数)を作り上げる、これこそが関数型の醍醐味かなと思います。 しかもHaskellは標準関数も豊富で、…

統計を学んで今をときめこう! 〜 統計検定2級でこんなこと出来るよ編 〜

去る11月29日、統計検定の2級を受験してきました。 私は資格試験を受けるとき、業務独占性やブランド感よりも、資格の学習を通じてどれだけの知識を獲得できるかを重視しています。 なので、今回の統計検定についても、統計学の体系立った基礎知識が身につい…

Scrapy の Item Pipeline の中で settings を参照する for v1.0.3

最近はPython書いてます。 さて、settings.py に記述したカスタムの設定をItem Pipelineで使いましょう。 Scrapyのバージョンは1.0.3を想定しています。 まぁ、公式ドキュメントのサンプルそのままなんですけど。 まずは settings.py に適当に書く ssettings…

指定した範囲の整数配列の作り方 in JavaScript ES6

私はES6のコードを書いてみるなかで昇順に並んだ整数の配列が必要になりました。同時に、ES6にはそういう配列のための新しいコンストラクタがあるんじゃないか?と思ったのです。ES6にはこのようなrange()関数はありませんが、大丈夫。Python風の解法がある…

Vagrant+Chef zero+BerkshelfでMySQLをインストールしてユーザーの設定まで

つい先々週の話なんですが、Webアプリのテスト環境を構築するためにVagrantとChefを使ってみました。 きっかけはQiitaのこの記事、 qiita.com 事前準備から基本的な使い方・バグについての言及まで含まれた良記事で、これを見ながら手を動かすだけで、Chefを…

KimonoとApps Scriptでいつものスプレッドシートに自動更新の魔法をかける

今回はスクレイピングのお話です。 スクレイピング未経験者の方のために説明しておくと、スクレイピングとはWebサイト上にあるテキストなどのデータを 抜き出して→整形して→保存する 一連の行為のことです。クローリングとも呼ばれますね。 スクレイピング界…

普通のWebデザイナーがSass+gulp.jsでいい感じのコーディング環境を手に入れるまで ~後編~

という訳でgulp.jsを使ってのSass導入後篇です。 前編はこちらです、 普通のWebデザイナーがSass+gulp.jsでいい感じのコーディング環境を手に入れるまで ~前編~ - 無駄と文化 前回までで、諸々の環境構築とtasksリポジトリをPCのローカルに持ってくるとこ…

node-webshotをcoに対応させる

URLと保存先のパスを渡すだけでWebサイトのスクリーンショットを保存してくれるnode-webshotがなかなか便利。 オプションも豊富で真っ当で、ちょっと遅ぇけど余計な事考えずに使える。 なんですけど、coに対応してないのでちょっとツラいですね。 複数ページ…

サーバーでの重い処理の経過をリアルタイムに通知する

Webアプリケーションを作るとき、サーバーで重い処理を実行する際にはどうしても途中経過を通知したくなります。 この場合の重い処理とは完了までに時間が掛かる処理という意味合いです。 リクエストから結果の表示まで10分待たされる処理があったとして、「…

なんでも分からないプロを目指す

僕はなんだかんだで勉強が好きだ。 知的好奇心があり、自分なりに考えをめぐらせるのが好きなので、気になる事があれば半ば無意識に本を読んだり手を動かしたりして学んでいる。 そんな性格もあって、これまでは自分が知らないことをひとつでも知って、分か…

普通のWebデザイナーがSass+gulp.jsでいい感じのコーディング環境を手に入れるまで ~前編~

この記事は前後編です。後編はこちらに、 普通のWebデザイナーがSass+gulp.jsでいい感じのコーディング環境を手に入れるまで ~後編~ - 無駄と文化 弊社ではサイト制作も行っていますが、サイトの制作時にいわゆるデザインとコーディングでの分業(役割分担)…

シーケンス図をお手軽に保存できるtxt2seq2pngを作りました。

つい先日、js-sequence-diagramsというめっちゃっくそ便利なJSがある事を知りました。 シーケンス図をテキストベースで記述したものをSVGにレンダリングしてくれるというイカしたJSです。 ただ欲を言わせてもらえるならば、出来上がったシーケンス図を画像と…

CSSでネイティブな変数が使えるようになる日

CSS

お恥ずかしながら、 『CSSに変数はない』と先日まで思っていたのですが、CSSにもフツーに変数があったのでここに報告させていただきます。 「んなことは知ってるよ」という方は、ま、そっとしておいてください。 未来の技術『CSS Custom Properties』 正確に…

置換要素に::before使えなくてツラい問題

108つあるHTMLタグの中には置換要素と呼ばれるものがあるらしい。 簡単に言えば<img>タグのようなテキスト以外のものが描写される要素なんですが、その置換要素にはナントCSSの::before擬似要素や::after擬似要素が使えません。 これが非常に不便で、私のような『…