コンパイラかく語りき

import { Fun } from 'programming'

2015-01-01から1年間の記事一覧

JavaScriptで競技プログラミングを解く際のテンプレをつくった

これの続きです。 chuckwebtips.hatenablog.com JavaScriptで競技プログラミングを解く際の、ある程度のテンプレを作成しました。 ※ 筆者はまだ競技プログラミングを2回しか受験していません。今後テンプレには手が加えられる可能性があります。 こちらです…

競技プログラミング問題の共通点や課題感

競技プログラミングの過去問を2つこなした。 これまで見えてきたことを軽くリストアップしてみる。 ちなみに使用言語はJavaSciptです。 共通点 問題形式はIOである。 入力されたデータは文字列型として得られる。 最初の入力が「設定情報」である。 何度か…

【CSS】text-overflowとはなんなのか

2015年もいよいよ佳境。そしてこのタイミングで出会った”text-overflow”というCSS。 ちょっと深掘りしてみたいと思います。 Try it いじくり回して理解したい人は、こちらがオススメ。 http://www.w3schools.com/cssref/tryit.asp?filename=trycss3_js_text-…

CSSだけで文末に「…(三点リーダー)」をつける方法

CSS

今日デザイナーさんから良いこと聞いちゃいました。 CSSだけで、文末に…が付与できちゃうんですって! やり方はスタイルを3つ指定するだけ。 overflow: hidden; white-space: no-wrap; text-overflow: ellipsis; 以上です。 これで、文字列がはみ出てしまう…

セマンティックバージョニングとは

今日初めてセマンティックバージョンというものを知りました。 軽く調べたのでメモ。 参考: セマンティック バージョニング 2.0.0 qiita.com セマンティックバージョニングとは カンタンに言うと、バージョンの付け方のようです。 1.2.6というバージョンが…

JavaScriptで数値ソートする場合

JavaScriptで配列の内容をソートするとき、sort関数を使います。 ただし、sort関数はデフォルトで文字列比較を行ってしまうんですね。 数値比較をするには、引数に比較関数を渡してあげる必要があるんですね。 すっかり忘れていました。 サンプルコード gist…

配列よりもオブジェクトを使う局面があると学ぶ

競技プログラミングで初めて制限時間に引っかかりました。 対処法を考えているうちに、データ構造について1つ学びがあったのでメモします。 ちなみに、重くなった原因はユニーク判定の仕方でした。 最初に書いたコードがこちら。 gist9b15f1b88ba817838fc7 …

ダブリのある冗長な条件分岐はマッピングできると気づいた

例えば、以下のような2重のswitchがあるとします。 gist2f786f89069acd1edce1 まず、主語が何であるかによって分岐します。次に、時間帯によって分岐して、行動をalertします。 そんな2重の条件分岐があるとします。 でも、これってマッピングできるなあと…

【JavaScript】文字列としての数値を加算する関数を書いた。

今回は独自に作成した加算関数を紹介します。 これの続きです。 chuckwebtips.hatenablog.com 加算関数をつくる目的 JavaScriptのルールでは、'5' + '10'は'510'となります。 見た目的には数値なのに、クオーテーションで囲まれているために、文字列の結合が…

JavaScriptで「'6000' - ('40' + '10') * '50'」の答え分かります??

競技プログラミングで3分ほどハマった。検証が楽しくてさらに10分ほどハマった。 '6000' - ('40' + '10') * '50' の結果です。 パット見で分かりますか??? ' ' は文字列を表します。 ふつうに数値として計算したら、3500ですよね。 ところが答えは -19…

【JavaScript】splitとjoinで不純物探知

stringクラスのsplitとarrayクラスのjoinを使えば、不純物探知ができるよねというお話。 以下のコードを例に取ります。 gist2676ae0c57f3323742be 最初にhelloがたくさん並んだ文字列があります。一見、すべてhelloに見えますね。 次に、split('hello').join…

競技プログラミングはじめました

会社の人に誘われて競技プログラミングを始めました。 競技プログラミングとは? 与えられた問題を、素早く性格に解くプログラミングのイベントです。 競技プログラミング Wiki* Webプログラミングではなく、コンソール上で行えるIO(入出力)プログラミング…

スクレイピングした情報をRailsアプリケーション上で表示する

これの続き。 chuckwebtips.hatenablog.com データが取得できたので、ビュー側に表示をしてみます。 ビューとコントローラの作成 ちょっと表示するだけですが、のちのちのことを考えてMVCを採用しました。 いつもの↓ maeharin.hatenablog.com コントローラで…

Rubyでスクレイピングしたらencoding error : input conversion failed due to input error

トラブルシューティング。 Nokogiriを使ってHTMLを取得した際、文字化けしてしまうエラーについて。 encoding error : input conversion failed due to input error が出た場合の対処法。 以下のページを参考にして解決。 http://route477.net/d/?date=20110…

JavaScriptのsplitを自分で書くとこうなる

車輪の再発明です。 区切り文字列を配列にしたいとします。 それをいちいちfor文で走査して配列化してしまいました。でも、splitを使えば一瞬だよねというお話。 例えば、以下の変換をしたいとき、 var str = 'abc de fg'; var ary = ['abc', 'de', 'fg']; i…

Rubyでスクレイピングに挑戦してみた

こちら読み始めました。 vsanna.sakura.ne.jp 前々から興味があったスクレイピング。ついにデビューしちゃいました。 スクレイピングとは あるサイトのあるページからHTMLを取得して欲しい情報を取得することです。 やったこと ローソンの公式サイトから、販…

npmbrewをインストールした

しました。 すごいですね。homebrew, nodebrewと来て、npmbrewなんてものもあるんですね。 これでnpmのバージョンは自由自在です。 すべてはこちらに。 qiita.com npm install npmbrewにはsudoでのインストールが必要でした。

Macにzshをインストールした

先日、会社のMacにzshをインストールしました。 慣れてきたので、プライベートのMacにもインストールしてみました。 さらっと言いましたが、先月までzshが何かも知りませんでした。ゼッシュと読むらしいです。 バッシュじゃない方のシェルですね。(説明する…

数値がある範囲内にあるかチェックする

RubyでAという数値が、min以上かつmax以下かどうか調べる方法。 JavaScriptなら A >= min && A <= max コレ書くのいっつも面倒くさい…。coffeeならカンタンだけど。 Rubyなら (min..max).include? A あるいは、 A.between?(min, max) 前者がRangeクラスのメ…

Rubyでループ処理

JavaScriptエンジニアが学ぶRuby入門シリーズ。今回はループ処理です。 Rubyには色々なループがあって面白いですね。 今回は、新しく学習したループについてメモします。なので、for文、while文は省きます。 とは言え、ホントにメモ書き程度。 gist2ade2ecea…

【Ruby】splitメソッドと多重代入を合わせて、変数代入をワンライナー化

競技プログラミングで学んだのでメモ。 splitメソッドと多重代入を組み合わせれば、変数代入をワンライナー(1行)でできるよねという気付きです。 splitメソッド まずはsplitメソッドで文字列を分割。 giste026c601636d080615c4 多重代入 次に変数への格納…

Rubyでの数値丸め処理(ceil, floor, round, truncate)

どうも、Ruby初心者です。 Rubyでの丸め処理についてメモ。切り上げ、切り捨て、四捨五入ですね。 gistbbdc3e12709553a378c3 なるほど。truncate以外はJavaScriptと一緒ですね。 参考URL: code-examples-ja.hateblo.jp 追記 : JavaScriptにもあった。(知ら…

atomに乗り換えたので、インストールしたプラグインリストをメモ

atomに乗り換えました。 というわけで恒例のプラグインインストール。まずはコーディング環境を整えないと!ですね! 公式: atom.io 参考にした記事: qiita.com mae.chab.in monokai プラグインではないですが、シンタックスカラーをまずは設定。SublimeTe…

JavaScriptで処理時間を計測してみよう!

最近はじめてconsoloe.time()を知りました。 この関数を使うと、JavaScriptの処理時間を計測できるようです。 使い方 以下のように使います。 gista72712964611fe8743f7 使ってみる まずは空の状態で使ってみます。nodeで実行するとこのとおり。 処理がない…

【関数型プログラミング】underscore.jsを使って高階関数を書いた

こちらの続きみたいな感じ。 chuckwebtips.hatenablog.com 続きにしては文量多い。「JavaScriptで学ぶ関数型プログラミング」の第4章をひたすら写経しました。 ので、ブログに残します。 所感 高階関数自体はそこまで難しくない。複雑でなければ。 いや、複…

「プログラマが知るべき97のこと」を読んだ。

非常に勉強になったので、所感とともに10個引用してみます。 [02] 関数型プログラミングを学ぶことの重要性 いきなり関数型プログラミングかい!って感じですが。 最近「JavaScriptで学ぶ関数型プログラミング」を読んでいて、非常に共感できる内容だったの…

君はもうJavaScriptの標準入出力を体験したか!?

僕は先日はじめて体験しました(遅い) 自分ができるようになったのを良いことに、自慢気に書いていこうと思います。JavaScriptの標準入出力について。 標準入出力って?? Web系の人にはピンと来ないかもしれませんね。 ターミナル(コマンドライン)上での…

Vagrantにsync機能があるって知ってました?(エラーとの戦いもあるよ!)

あったんです。sync機能。 今の会社ではじめて知りました。もうファイル転送ツールを使わなくていい!やったー! どういうこと? vagrantはあれですね。ローカル仮想環境をつくります。 つまりパソコンの中に、もう1台のパソコンをつくります。 外側のパソ…

JSファイル内でJSファイルを読み込む方法

小ネタです。 JSファイル内でJSファイルを読み込む。今までやったことなかったので、メモしときます。 今まで いままではHTMLで読み込んでました。 こんな感じですね。 これから requireという関数?を使えばよいらしいです。 こんな感じです。 同じディレク…

【関数型プログラミング】JavaScriptの高階関数を書いてみる

いまこちらの本を読んでいます。 JavaScriptで学ぶ関数型プログラミング。 まだ半分しか読んでいませんが、ちょっとメモしておきます。 今回は高階関数について。 JavaScriptには高階関数というものがあります。 書籍によると、その定義は 関数を引数にとる …