定食屋おろポン

おろしポン酢と青ネギはかけ放題です

Rubyのワンライナーでファイルパスをファイル名に落としこみつつflattenする

自分でもタイトルの意味がわからんけど、要するに こいつを ./01/hoge.png ./02/fuga.png ./03/01/moga.png ./03/02/piyo.png こうしたいときがたまにある。 ./dest/01-hoge.png ./dest/02-fuga.png ./dest/03-01-moga.png ./dest/03-02-piyo.png ワンライナ…

楽しく学ぼう公開鍵暗号方式

仕事で「そろそろパスワードやめて公開鍵暗号つかいませんか..?」と近代化をすすめるにあたって、説明資料が必要かと思って公開鍵暗号方式の説明から作り始めた。 よく考えたら、興味のない人には仕組みとかどうでもよくて「なにがよいのか」「どうつかうの…

シカクいアタマでハスケルする

中学受験予備校の日能研が昔から、「シカクいアタマをマルくする」という広告を張っている。電車内のドア横・窓上ポスターによく掲載されているため、ご存じの方も多いだろう。 2015年2月掲載分(とウェブサイトに記載されているが、1月時点で既に掲載されて…

シグルイの最終話でなぜ三重は自害したかの国語的読解

シグルイ 1 (チャンピオンREDコミックス)作者: 山口貴由,南條範夫出版社/メーカー: 秋田書店発売日: 2013/09/13メディア: Kindle版この商品を含むブログを見る 漫画「シグルイ」の最終話でなぜ三重は自害したのか。 「シグルイ 最終回」 「シグルイ ラスト」…

Haskell / トップダウン or ボトムアップ

関数プログラミングの本がでるようです。とりあえずAmazonで予約注文しています。 関数プログラミング実践入門という本を書きました - ぼくのぬまち 出張版 関数プログラミング実践入門という本を書きました - ぼくのぬまち 出張版 日本語のHaskell本(Haske…

Rubyのnet/httpで重複するキーをもつパラメータをPostする

net/http を使うと、単純にPostするのは至って簡単だ。 Net::HTTP.post_formメソッドを叩くだけで事足りる。 library net/http require 'net/http' require 'uri' #例1: POSTするだけ res = Net::HTTP.post_form(URI.parse('http://www.example.com/search')…

中間値のroundによる丸め 〜Haskellのround関数を見て吹き出した件〜

C Way round(1.5)は、2になります。 round(2.5)は、3になります。 それが、C言語流。俗にいう「四捨五入」の処理です。 ISO/IEC 9899 p233にも記載されています。 The round functions round their argument to the nearest integer value in floating-point…

SwiftでNSTimerとかUIButtonを使うときはBlocksKit使うといいよ

Cocoaでは、引数にtargetとselectorを取るメソッドがいくつかありますね。 NSTimerの+ scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: UIControlの- addTarget:action:forControlEvents: こういうメソッドを、純粋なSwiftのクラス--つま…

Swiftのアクセスコントロールはファイル/モジュール単位だから気ィ付けや

公式ドキュメントはこちら The Swift Programming Language: Access Control ※ドキュメント以上のことは記載されていません。 SwiftにもXcode beta4からアクセスコントロールが可能になりました。 privateとかpublicとかinternalといった修飾子を付けること…

Swiftでも#pragma mark 的なのが使えます

もろもろの対応状況 ジャンプバーの見出しとセパレータ メニューのView→Show Document Itemsで表示されるアレです。 // Objective-C: #pragma mark - hogehoge - // Swift: // MARK: - hogehoge - TODO, FIXME 今までと同様です。 // Objective-C, Swift // …

Swift時代のDelegate通知

Objective-C時代のDelegate 今は昔、Objective-Cの時代ではOwnerへの通知にDelegateを使用していました。 言語仕様としてDelegate機構が用意されているわけでも、Delegateは通知のための機構であるというわけでもなく、CocoaフレームワークでDelegateパター…

SwiftでJSONを扱うライブラリ SwiftyJSON | json-swift

SwiftでJSONを扱う「つらみ」を解消するライブラリがトレンドにあがってたのでながめてみます。 つらみ SwiftでJSONを扱うとなったとき、まず頭に浮かぶのがFoundationフレームワークのNSJSONSerializationです。 JSONを渡すと、パースしてNSDictionaryやNSA…

Swiftのエラーハンドリング

Objective-Cにおいては、「Exceptionは処理するな」が鉄則です。 つまり、 「例外を投げるのは致命的な問題(復旧不可能な問題)が発生したときのみ」 「例外を受け取ったらアプリを終了させろ」 というポリシーです。 これは、そもそも例外を受け取ってキャ…

Swift情報の収集方法

情報源メモ。初心者向けチュートリアルは他の記事に任せて、Swiftの情報がなんか気になって仕方がない人達のために書いた。 Appleの公式ドキュメント とりあえずここらへんは基本。 iBooks iTunes - Books - The Swift Programming Language by Apple Inc. …

Swiftのmapは処理だけしてVoid返すことは出来ないから気ィ付けや

追記 この記事の情報は古いので注意して下さい。 最新のXcodeでは、mapに返り値を持たないクロージャを渡しても問題ありません。 追記ここまで SwiftのArrayは、非破壊的なメソッド、mapを持っています。素晴らしい。 enumerateObjectsUsingBlock:とか書いて…

Swiftでデバッグ出力(日時、メソッド名、行番号)

メソッド名と行番号 かつてObjective-Cではこのように書いていた時代があった。 NSLog(@"%s, %d", __PRETTY_FUNCTION__, __LINE__); 今日からはこう書ける!*1 println(__FUNCTION__, __LINE__) //=> (someFunction(), 60) Swiftのprintlnは、NSLogと違って…

Swiftでコマンドライン引数を取る

OS XのコマンドラインアプリをSwiftで作る時に役立ちます。どこにあるんだそんな需要。*1 StackOverflowではC_ARGCを使う方法が示されています。 これでも良いと思いますが、ちょっと冗長ですね。 osx - How do you access command line arguments in Swift?…

swiftでフィボナッチ数列

フィボナッチ数列を再帰で(遅いやつ) func fib(n:Int) -> Int { if n < 1 {return 0} if n == 1 {return 1} return fib(n-1)+fib(n-2) } func fibs(n:Int) -> Int[] { if n == 0 {return []} if n == 1 {return [1]} return fibs(n-1) + [fib(n)] } printl…

swiftでfizzbuzz

とりあえずfizzbuzzを書いてみる。 func fizzbuzz (#max: Int) { func fb(n:Int) -> String { let isFizz = n % 3 == 0 let isBuzz = n % 5 == 0 switch true { case isFizz && isBuzz: return "fizzbuzz" case isFizz: return "fizz" case isBuzz: return "…

RMagickを使ってアプリ用のサンプル画像を量産しよう

やりたいこと あなたはiOSアプリを開発しているとします。 一週間後に、デザイナーからimage1.pngからimage100.pngまでの100枚の画像リソースが届きます。あなたはこの画像をアプリに組み込んで表示しなければいけません。 しかし、デザインが届くのを待って…

GitHub Flavored Markdownを書くならAtomで決まりでしょ

先日、こんな記事を書きました。 AtomがGithub Flavored Markdownのエディタとして使える件について - 定食屋おろポン 要約すると、 GitHubがAtomってエディタ出したよね GitHub Flavored Markdown、いわゆるGFMてのがあるよ いわゆるMarkdown(Traditional …

分かんないことあったらTwitterで@飛ばせ VS プロに質問するなら金払えよボケ

ファイ! ※ちなみに僕はプロプログラマじゃないです。 3行で プログラマに質問するのは、プログラマ文化的にあたりまえのこと プログラマにタダで質問するのは、時間と金を費やして身につけたプロの知識をタダでよこせと言ってるようなもの ..どっちやねん …

Grunt使おうと思ってcoffee, scssファイルなどの配置を調べた

ファイル配置に悩む Gruntを使う時に 「.coffeeファイルや、.scssファイルをどこに置けばいいの?」 「ビルド後のファイルをどこに配置するのがいいの?」 って疑問に思っていたので調べてみた。 毎回悩んで適当に配置するより、良さそうな方法で決め打ちし…

サーバーにパシフィック・リムのイェーガーと怪獣の名前を付ける話

サーバー環境を立ち上げる時に、最初に考えねばならないことはなにか。それは名前です。 クールな名前を付けることが至上命題、最優先事項であります。 森羅万象、名前を付けることにより初めて魂が吹き込まれます。 しかし、VPSやらAWSやらVMやら、なにかと…

cabal hellから抜け出したくてあがいた話

「cabalでパッケージをインストールする際、依存の解消がイマイチでハマりがち」という噂が流れているのは知っていた。 自分が遭遇するまでは「ふーん」と右から左であった。 仔細は省略するが、このたび見事にハマり、cabal hellを目の当たりにした。 熟練H…

テスト崩壊

テストファーストを数学の勉強にあてはめるとするでしょ 問題集を解く=テストする 解けなかった問題がある=テストが失敗する 解けなかった問題について解法を学ぶ=実装する 再度問題集を解く=再度テストを回す 解ける=テストに通る 数日後、また問題集を解く…

AtomがGithub Flavored Markdownのエディタとして使える件について

「これが21世紀のエディタだ!」とGithubが喧伝しているAtomについて。 今まで クローズドベータ中なのでまだ作りが荒いところはあるようですが、なんとこれ、GFM(Github Flavored Markdown)のライブプレビューエディタ*1として使えます。 Markdown専用の…

Ninety-Nine Haskell Problems 解いてみた

H-99: Ninety-Nine Haskell Problems - HaskellWiki 99 questions/1 to 10 - HaskellWiki とりあえず1-10問目まで。 Preludeなどのライブラリ関数になるべく依存しない縛りで解いてみた。 そのため、myLastを書くのにhead', reverse', fold', flip'を書くこ…

HaskellのHspecでテストケースぶん回したいの巻

Hspecって(使いづらいけど)楽しいよね! 特に使いづらいと思ったのがこれ。 Hspecで関数fの振る舞いを記述するとき、テストケースとして[(a1,b1),(a2,b2),...]っていうリストを渡して「f a1 `shouldBe` b1」みたいに書きたいとか思ってもモナドに阻まれて…

RubyのModule#===について

==と===のおさらいは飛ばして記事の下の方を読む ==とか===とかequalとか ==での同値性判定は暗黙の型変換を行ってゆるーくふわっと判定するけど、===は型変換を行わずに同値性判定を行う言語ってありますよね。 PHPとかJavaScriptとか。 一方で、==はオブジ…

HaskellのnubとRubyのuniq

HaskellのData.List#nubと、 RubyのArray#uniqは、どちらもリスト/配列内の重複要素を取り除いた新しい配列を返す関数です。 どうもHaskellのnubはRubyに比べてだいぶ遅いなあと感じます。 リストと配列のデータ構造の違いに起因するのだろうと想像はできま…

バーコードジェネレータをゆるーくRubyで

「IOモナド難しい..Rubyで書いたらゆるふわ楽勝なのに..」 とか前に書いてたので、ほぼ同様のコードをゆるーく書いてみました。 gist8574615 # => #MJDRYCAD #CKLKCQSW #CHJAQKSZ #YWASAYMI #UHVRVEWW #以下略 重複する可能性を考慮して、必要な数の2倍のコ…

Common Lisp初め

「おろポンくん、プログラミングできるの?」 僕「うーんどうだろう、少しは書けますね」 「じゃあWindowsのプログラムとか作れちゃう?」 僕「いや、Windowsはちょっと」 「分かったJavaだ」 僕「Javaは全く。。」 「なんだ、Web系?PHPとか?」 僕「PHPは…

バーコードのチェックサムとHaskellの練習

コンビニの商品にも、スーパーの商品にも、たいていの売り物にはバーコードがついていますね。 すだれハゲみたいなアレです。 http://ja.wikipedia.org/wiki/バーコード 日本の商品に使用されるバーコードは JANコード というもので、8桁あるいは13桁の数字…

Haskell勉強日誌 -エラなんとかの篩-

練習のため、素数判定で有名なエラなんとかの篩を実装しました。 エラなんとかの篩 13行目のx ^ 2が毎回評価されると実行速度に悪影響を与えそうですが、参照透明性のお陰で1度しか評価されていないハズですね。 reverseはコストが高い処理ですが、1回しか…

Haskell勉強日誌 -RPN電卓-

Haskellで逆ポーランド記法電卓。関数型言語らしい題材で練習してみる。 まずは普通に書いてみる。 最初は、Stackを定義してpopやpushを実装するべきかと考えたけど、強力なパターンマッチのおかげでシンプルに書けた。 単なるリストをスタックとして使用し…

ふつうのHaskell勉強日誌

ふつうのHaskellプログラミング 初版 p246 練習問題 9.6問題: 新しい型"Line"を定義し、sortLines関数でソートする Line型は`data Lines = Lines {number::Int, string::String} deriving Show`で定義されるように、行番号とテキストで構成されます。 問題で…

iTunesHelperを殺せ!!

mac

Mac使ってると、iPhoneやiPadを繋ぐたびにiTunesが立ち上がってウザいですよね。 殺したくなりますよね。 犯人はiTunesHelperってやつです。殺せ!!ログイン項目からiTunesHelperを削除しても無駄です。なにかの拍子にiTunesを立ち上げた瞬間、一緒にiTunes…

メモ:マウスを使わずアプリケーションを強制終了

mac

Keynote使ってたら、Keynoteがバグってマウスクリックができなくなってしまった。 他のアプリケーションを開いても、ずっとKeynoteがマウスイベントを受け取り続けているせいで、他のアプリケーションがマウスイベントを受け取れない状態。 なぜかKeynoteを…

viewWillLoad/viewDidLoad on NSViewController

UIKitのUIViewControllerには - (void)viewWillLoad; - (void)viewDidLoad; が定義されています。UIViewControllerのサブクラスにおいて、これらのメソッドは頻繁にオーバーライドされます。 しかし、AppKitのNSViewControllerには存在しません。UIKitに慣れ…

ブログのコード表示フォントを等幅にしたら捗った

mac

バックスラッシュが¥になってて腹が立ったので、ブログのCSSを編集してみた。 html { font-family: sans-serif; } pre.syntax-highlight { font-family: 'Ricty', 'Osaka-mono', 'Osaka−等幅', monospace; } I love Ricty! Windows向けの設定じゃないけど、…

Objective-Cのボトルネック検出

パフォーマンスの改善には、ボトルネックの検出が欠かせません。 どの処理に時間がかかっているのか判別するため、処理の経過時間を記録します。stackoverflow*1では以下のような方法が提案されています。 NSDate *start = [NSDate date]; // do stuff... NS…

悩ましきコード整形

論理演算子のコード整形ってなんだか悩ましいですね。 まずは例を。UIViewのautoresizingMaskを設定するコード。いくつかの設定値の論理和を取ります。 view.autoresizingMask = ( UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMar…

RecursiveDescriptionについて

UIKitのUIViewクラスには、ビューのヒエラルキーを再帰的にダンプする -(NSString*)recursiveDescription というプライベートAPIが用意されています。 しかし、どうもこれはAppKitのNSViewクラスには定義されていないようです。 ないので書きました。UIView…

REKitを使ってみた

REKit自体の紹介は開発者に譲ります。これはもっと広まると思う。 https://github.com/zuccoi/REKit (ProjectのGitHubページ) https://github.com/zuccoi/REKit/blob/master/README_ja.md (日本語README) http://runlooprun.wordpress.com/2013/02/12/rekit-…

TextMate2でHaskellのRunが効かない件について

TextMate2はパス周りでどうもうまく動かない場合が多い気がする。 TextMateは「Cmd + Rで即実行」機能がついていて、涙がでるほど便利なんだけど、Haskell BundleのRunがちゃんと動いてくれなかったので直しました。っていうメモ。修正箇所は2点 1. Prefere…

「ベジェ曲線とはなんぞや」を説明するアプリケーション

なめらかな曲線を描くならベジェ曲線。 プログラマ、マークアップエンジニア、デザイナetc.. IT土方でベジェ曲線に縁がない職の方が少ないんではないかってくらい身近な存在ベジェ曲線。ベジェ曲線についてプレゼンする必要に迫られて、ざっくりとMacアプリ…

あまりにも美しいコードを書いてしまった

#import <Foundation/Foundation.h> @interface _ : NSObject typedef _* (^__)(); typedef __ (^___)(); typedef ___ (^____)(); typedef ____ (^_____)(); typedef _____ (^______)(); @property (readonly) _* _; @property (readonly) __ __; @property (readonly) ___ ___; @prop</foundation/foundation.h>…

NSRailsが面白いことをしていた

サーバサイドとiPhoneアプリの連携をしたくて、Ruby on Railsの勉強中です。優れたFWの勉強が楽しいのは、CocoaもRailsも一緒ですね。Railsでサーバサイドがある程度作れるようになると、iPhone側と連携したくなります。自前でNSURLConnectionをこねくり回す…

ドットインストール Ruby on Railsの基礎 #36 でAjaxによるPost削除処理が動かない

メモ $('a[data-method="delete"]').live('ajax:success', function(e, data, status, xhr) { $('#post_'+data.post.id).fadeOut("slow"); }); data-method="delete"って属性を持つaタグに、イベントハンドラを設定するコード。JSデバッガコンソールに'undef…