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

もやもやエンジニア

IT系のネタで思ったことや技術系のネタを備忘録的に綴っていきます。フロント率高め。

Elixir 入門 その11 - IO and the file system

The IO module # 標準出力 iex> IO.puts "hello world" hello world :ok # 標準入力 iex> IO.gets "yes or no? " yes or no? yes "yes\n" # :stderrをarg1に与えると出力先が標準エラーになる iex> IO.puts :stderr, "hello world" hello world :ok The File…

Elixir 入門 その10 - Processes

Process Elixirではすべてのコードはプロセス上で動作している。プロセスはお互いに分離していて、メッセージパッシングでやりとりする ElixirのプロセスはOSのプロセスと混同されるべきではない。Elixirのプロセスは多くの他のプログラミング言語のスレッド…

Elixir 入門 その9 - Enumerables and Streams

Enumerables ElixirはEnumerablesなデータを処理するのにEnumモジュールを提供している EnumはListやMapなど異なるデータ型を扱うように設計されている なのでデータによって特有の操作、例えばListの特定の位置に要素を追加したいというような場合はListモ…

Elixir 入門 その8 - Recursion

Loops through recursion Elixirでは他の関数型言語と同じように繰り返し処理を行うためのForやWhileが無い。 再帰を使って表現する。パターンマッチを効果的に使うことで可読性の高い再帰を表現できる。 defmodule Recursion do # ガードによって n が 1 以…

Elixir 入門 その7 - Modules

Compilation defmodule マクロでモジュールを定義できる defmodule内のdefでメソッドを定義できる defmodule Math do def sum(a, b) do a + b end end elixircコマンドでコンパイルできる > elixirc math.ex コンパイルすると Elixir.Math.beam という名前の…

Elixir 入門 その6 - Keyword lists, Maps

Elixir では連想配列を表現する手段として keyword list と mapの2つがある。 Keyword list 特定の条件のtupleのリストはkeyword list として扱われる tupleの要素数が2 1つ目の要素が atom listの拡張みたいな存在なので、listの特徴をそのまま受け継いでい…

Elixir 入門 その5 - Binaries, strings and char lists

UTF-8 and Unicode stringはUTF-8エンコードされたbinary byte-sizeとcode pointについて iex> string = "hełło" "hełło" # byte sizeは7。ł以外のコードポイントは0 ~ 255以内 = 1byteだけど ł は322で表現するためには2byte分必要だから iex> byte_size st…

Elixir 入門 その4 - case, cond and if

case パターンマッチを使った条件式を書くことができる。 例えばHTTPのレスポンスのパターンマッチは以下のように書くことができる。 1行目にマッチすると評価値のbodyの値(この場合はHello World !!)がcase内のbodyに束縛される。 最後の _ は何もマッチ…

Elixir 入門 その3 - パターンマッチの基本

パターンマッチの基本 The match operator Elixirにおける = はmatch operator 代入ではなくパターンマッチにおける束縛を意味する # これは一見代入しているように見える iex> x = 1 1 # xに1が束縛された状態で逆にしても通る iex> 1 = x 1 # これは通らな…

Elixir 入門 その2 - 演算子

++ -- 2つのリストを結合したり差分をとったり iex> [1,2,3] ++ [4,5,6] [1,2,3,4,5,6] iex> [1,2,3] -- [2] [1,3] iex> [1,2,2,3] -- [2] [1,2,3] iex> [1,3,2] -- [2,3] [1] <> 文字列のconcat 文字列同士でないと怒られる iex> "foo" <> "bar" "foobar" i…

Elixir 入門 その1 - REPL と 基本型

ElixirのページのGetting Startedを適当にサマってます。自分用メモ。間違ってたらコメントくらさい REPL iexで起動。 hでHelp見える。 h is_boolean/1 基本型 Integer 1 # integer 1.0 # float Booleans true / false Atoms symbolみたいなの。名前をそのま…

関数型プログラミング修行のためにHaskell触り始めてみた

関数型のパラダイムを感じるぞ!という意気込みで下の本を読み始めてます。とりあえずMacでHaskell動かす環境作ったメモ。 関数プログラミング実践入門 ──簡潔で、正しいコードを書くために (WEB+DB PRESS plus)作者: 大川徳之出版社/メーカー: 技術評論社発…

Web系エンジニアの僕が初めてAndroidアプリをリリースした話

なんとか無事にリリースできたので書ける範囲でセルフ振り返りしてみました。掲題の通り5年くらいずっと自社のWeb開発やってきたのですが、Androidアプリに初めてトライしてみたという話です。 期間と体制 2014/08 ~ 2015/6 ディレクター * 1 フロントのエン…

GulpのタスクでBabelで書かれたJSをES5形式に変換してみた

先日、こちらの勉強会に行って初めてBabelに触りました。ここ1年Androidばっかやってたからフロント界隈の進化に置いて行かれている感が。。。NodeSchool International Day in Tokyo (2015/05/23 13:30〜)nodejs.connpass.com実際に今の開発で使うならどう…

Androidでボタン押して外部ブラウザ起動するとこで showStatusIcon on inactive InputConnection

タイトルの通りですが、単に指定したURLのページをブラウザで開くボタンを作ってぽちっと押すと以下のWarningが出たので対応した話。 W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection 同じページ内に置いているEditTextにフォーカ…

AndroidでViewPager配下のFragment間でViewの状態を共有する

概要 タイトルだけだと何のこっちゃという話ですが、例えばTwitterとかでフォローするボタンがあるじゃないですか。で、ViewPager管理下の各Fragmentにフォローするボタンを置いてどこかでフォローするを押したら、押したページ以外にも押された結果を反映さ…

Androidのデザインパターンを考えてみた

一番最新のやつはこっち rei19.hatenablog.com 前提 新しいトライとしてAndroidを書き始めてだいたい半年くらいたったのですが、教科書通りにコードを書いていたもののAPIを呼ぶあたりの実装がどうにもしっくりこなくかったので、良い機会だと思い設計を見直…

越境 1歩踏み出すことの大切さ

このエントリはDevLOVE Advent Calendar 2014 「越境」の59日目の記事です。 自己紹介 一休という会社でエンジニアしてます。Twitterはrei_mでやってます。Facebookはこちら。 越境というテーマで何書くかなーということで、少し自分の身に起きたことについ…

GolangとTravisでCIしてみる

GolangとTravisを連携したときのメモ。 Golangでテスト書くよ testingというTest用のパッケージがあらかじめ用意されているので、それを使ってみます。使い方はこんな感じ。テスト対象のコード sample.go package main func main(){ } func sum(v1 int, v2 i…

東京OtakuMode学園 #1 に参加してきました

東京OtakuMode学園 #1 (2014/09/19 19:30〜) 東京OtakuMode学園 #1 - connpassこちらに参加。Node.jsで個人的にアプリ作ってたりサイト立ててたりするので、Node.jsをガチで使ってるTOMさんには興味あったので参戦。会社に遊びに行ってみたいというミーハー…

SCRIPTY#1 〜フロントエンド紳士・淑女のための勉強会〜 に参加してきました

以下のイベントに行ってきました。SCRIPTY#1 〜フロントエンド紳士・淑女のための勉強会〜 http://scripty.connpass.com/event/8340/紳士かどうかはわからんですが、Yahooで使われているフロントエンドまわりの技術についての勉強会です。以下、セッション毎…

dwanGoに参加してきました (第2回)

GoLangやろうぜGoLangということでこちらのイベントに参加してきました。9月はGo関係の勉強会にいくつか登録してます。第2回 dwanGo (2014/09/03 19:30〜) 第2回 dwanGo - connpass久しぶりのドワンゴさんということで歌舞伎座にうぇーい。駅から直結は素敵…

AndroidでAsyncTaskLoaderを使ってネットワーク上の画像をImageViewに表示してみる

今回はAsyncTaskLoaderを使って外部リソースを表示するImageViewを作ってみます。単にResource内の画像を表示するだけならImageViewのsrc属性にResource内のidを指定すれば終わるのですが、ネットワーク上の画像を表示する場合は指定したURLを開いてInputStr…

PHPで最速という噂のPhalconフレームワークをさわってみる

諸事情によりPhalconをさわることになった!割と久しぶりのPHPです。今回は導入だけ。 Phalconフレームワークとは サイトはこちら http://phalconphp.com/en/「Phalconは、C拡張として実装され、ハイパフォーマンスに最適化された、オープンソースのPHP5向け…

AndroidでAPIを使ったListViewを表示してみる その1

最近、Android始めたので色々お試しした内容を作業メモ的に日記に残していきます。AndroidもJavaもそれほど造詣が深い訳でもないのでコード見てここはおかしいとかあったらコメントで指摘してもられると嬉しいです(゚∀゚)※ 続編書きました Androidのデザイン…

Node.js + Travis CIを試してみる その1

Node.jsでもCI(継続的インテグレーション:continuous integration)出来るのかな?と思い、調べたところ出来そうだったので、まずはTravis CIを使って回してみます。 概要 GitHubにpushしたらTravisが自動でテストを実行し、テスト結果をGitHubに表示してp…

AngularJSとFirebaseでリアルタイムチャットアプリ作ってみたよ

先月、社内の有志で各々好きなテーマを決めて1日もくもく勉強するという催しを開催したのですが、僕はクライアントサイドフレームワークを触ってみようーということでAngularJSを初めて触ってみました。以下の内容は1日でふんわり勉強しながら書いた内容な…

Node.jsで超簡単にスクレイピングを実装してみる

スクレイピングとは Webスクレイピングとは、WebサイトからWebページのHTMLデータを収集して、特定のデータを抽出、整形し直すことである。 http://www.sophia-it.com/content/Webスクレイピングよそ様のサイトのHTMLから情報を取得・解析して必要なデータを…

jQueryで作ったスライドショーを背景に設定してみる

内容 ちょっとココナラの依頼で苦戦したので備忘録的に書いときます。CSS苦手。。。依頼の内容はbodyの背景画像に設定していた画像にエフェクトをかけたいという話でスライドショーいれてみますかねーという流れ。 css3で解決してもよかったのですが、ちょっ…

jQueryで自動スクロールするプラグインを作ってみた

ブログのアクセスログを眺めていたら「jquery 自動スクロール」とか「jquery スクロール 自動」とかでアクセスする人がそれなりにいるので、簡単なプラグインを作ってみました。 コード https://github.com/rei-m/autoScroller ※ソースコードはgithubから落…

「脱 jQueryプラグイン ~プロのJavaScriptコードを書くために~」感想

脱 jQueryプラグイン ~プロのJavaScriptコードを書くために~ http://www.zusaar.com/event/3547008■内容 本セミナーでは一般的に使われるユーザーインターフェースをjQueryプラグインを使わずに実装する過程をご紹介し、Web制作の現場で制作者に求められる…

Node.jsでIT勉強会まとめサイト作りました

くしくも同じ内容が書いている日のフィードに流れてくるという奇跡。。。IT勉強会まとめサイトを作りました http://blog.clock-up.jp/entry/2014/01/02/221254 ※先日遊びに行ったCo-Edoで帰り際に少し話した方のサイトかな?記事のタイトルも捻りようがなか…

Node.js + Expressでロギングしてみる

最低、月1でなんか書こうという目標をすっかり忘れていました。今回はNode.js + ExpressでWebアプリを作っているので、ログ周りの実装について書いてみます。参考にしたのはこちら。 http://www.yoheim.net/blog.php?q=20130903といっても調べようと思った…

jQueryだけでコンテンツを自動スクロール表示してみる

ココナラの案件でクチコミを自動で流れるように表示したい!という依頼があったので何となく作ってみました。必要なライブラリはjQueryだけです。※いまいち最適解がわからんです。。。修行が足りないっす。⇒追記 自動スクロールするプラグイン作ってみた。 h…

続・Titanium Mobileで個人アプリをリリースしてみた結果 + iOS7対応でやったこととか

前回の記事が結構アクセスあるので続きの数値とTitanium MobileでiOS7対応した時の話なぞ。※前回の記事はこちら。アプリの内容や開発環境などは前回の記事を参照してください。 Titanium Mobileで個人アプリをリリースしてみた結果 http://rei19.hatenablog.…

OS X MavericksにアップデートしたらTitanium Studioが動かなくなって焦る

最近、ブログさぼり気味なので、いかんいかんと思いながら小話。MavericksにアップグレードしたらメニューバーにTitanium Studioが表示されなくなり、適当にいじっていたらクラッシュして終了するというはめに。困ったのでappcelerator公式を覗きに行ったらT…

JavaScriptで配列をソートする

最近ネタがないのでJavaScriptの小ネタでも。配列を並び替えるメソッドで[sort]が用意されています。 var ARY = ['ichi','ni','san','shi','go']; ARY = ARY.sort(); console.log(ARY); このようなコードを実行すると以下のように出力されます。 > ["go", "i…

TypeScriptを試してみた 3

前回に引き続きTypeScriptの話1回目 http://rei19.hatenablog.com/entry/2013/07/14/1833112回目 http://rei19.hatenablog.com/entry/2013/07/23/023008今回は関数についてです。 関数定義の基本 変数に型を付けられるようになったことで、関数の引数と返…

TypeScriptを試してみた 2

前回に引き続きTypeScriptの話前回はこちら http://rei19.hatenablog.com/entry/2013/07/14/183311今回は変数について書きます。 使える変数の型 プリミティブな型はJavaScriptと同じものが使えるみたいです。 module TSTest{ export class TypeTest{ // 型…

TypeScriptを試してみた 1

3連休を全部だらだらするのはもったいないので、かねてから気になっていたTypeScriptを触ってみました。 TypeScriptとは! マイクロソフトが開発したJavaScript系の新言語で「JavaScriptのスーパーセット(=上位拡張仕様)」で、ECMAScriptの次期標準である…

APエンジニアはコード書いてなんぼだと思う(ひどく個人的な意見です)

と思ってます。単にコード書くのが好きなだけなのですが、上に行けば行くほどコード書かなくなる仕事とかつまらんと思うのですね。泳ぎとかと一緒で書いていないと書く感覚を忘れてしまうし、人のソースのレビューも自信持って出来ないと思います。というわ…

jQueryでプレースホルダーを実装してみる

HTML5ではplaceholder属性が登場して、いとも簡単に実装できてしまうのですが、日本はまだまだIE8以下の勢力が強いので自前で実装する機会が多いと思います。すでにいろいろな方がライブラリを作って公開しているのですが、せっかくなので自分で実装してみま…

jQueryの話 attrとpropの違い

多分、知っている人にはいまさら何言ってんのとお叱りを受けそうな話ですが、知らんかったので備忘録的にメモ。仕事で作っているサイトはjQueryのバージョン1.3.2を使っているのですが、いい加減新しいの使おうよということで、こつこつ1.9系に書き直してい…

enchant.jsをTitanium Mobileで動かしてみる その1

そろそろ2個目のアプリを作ってみるかということで、Titanium Mobileでenchant.jsを動かしてゲーム的な何かを作ってみようと思います。 enchant.jsとは! http://enchantjs.com/ja/ユビキタスエンターテインメントが開発・運営しているフレームワークで、HTM…

Titanium Mobileで個人アプリをリリースしてみた結果

2月にリリースしたアプリについてダウンロード数とか利益とか振り返ってみました。 個人で作っている・作ろうとしている人の参考になれば。 こんなん作った ◎アプリ名 新刊カレンダー(iOSのみ) 2013/2/12リリース 現在 ver 2.0.1 https://itunes.apple.com…

web系エンジニア限定!『エンジニアのキャリアをハックする』勉強会 感想

本日は仕事の後にこちらのイベントに行ってきました。web系エンジニア限定!『エンジニアのキャリアをハックする』勉強会 http://coedo-dev.doorkeeper.jp/events/4063twitterはこちら #coedo https://twitter.com/search?q=%23coedo&src=typd今後、エンジニ…

プロトタイプベースのjavascript設計 (2)

前回はこちらプロトタイプベースのjavascript設計 (1) http://rei19.hatenablog.com/entry/2013/05/21/005713コンストラクタを作ってnewを使うとprototypeを引き継いだオブジェクトを作るよ!というところまで書きました。今回はjavascriptにおける継承の概…

プロトタイプベースのjavascript設計 (1)

一ヶ月に最低一本なんか書こうという目標のこのはてぶ。いきなり4月すっぽかしましたけど。 さて、人に説明出来る程度には理解してないとねということで、JavaScriptでオブジェクト指向的な設計をする場合について適当につらつら。 長そうなので何回かに分…

1画面内でバージョンの異なるjQueryを共存させるには

あんまり同じような問題に直面している人は少ないとは思いますが。。。まず、普通にjQueryを2個呼んでみます。 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> このようにした場合、jQueryのグローバル…

このブログについて

こんばんちは。 このブログはとあるIT企業でエンジニアをしている僕が日々、思ったことや作ったもの、セミナーへ行った感想などを気まぐれで紹介していくものです。 基本的には同業者さん向けの内容が多めになるかと思います。 よろしくお願いします。