サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
qiita.com/shuhei
unset() で要素を削除した後、必要があれば array_values() で歯抜けになったのを詰めます。 $arr = array(0, 1, 2, 3); unset($arr[1]); foreach ($arr as $key => $value) { echo $key . ' => ' . $value . "\n"; } // 0 => 0 // 2 => 2 // 3 => 3 $arr = array_values($arr); foreach ($arr as $key => $value) { echo $key . ' => ' . $value . "\n"; } // 0 => 0 // 1 => 2 // 2 => 3 array_splice() でもできますが、毎回インデックスを詰め直すため、複数のバラバラな要素を削除する場合はパフォーマンスが落ちるか
define('WP_DEBUG', true); define('WP_DEBUG_DISPLAY', false); define('WP_DEBUG_LOG', true); if(!function_exists('_log')){ function _log($message) { if (WP_DEBUG === true) { if (is_array($message) || is_object($message)) { error_log(print_r($message, true)); } else { error_log($message); } } } }
ES6 で Angular アプリを書くのに使っている方法を書きます。(だいぶ前に書いて公開したつもりが、公開できてなかった・・・。) コンパイル ES6 で書いて ES5 にコンパイルします。ES6 module も使いたいので、コンパイルには browserify と 6to5ify を使っています。Traceur でなく 6to5 を使うのは、基本的には比較的自然なコードが出力されるのと、(ある程度までは)ランタイムなしで動くためです。 6to5 は Traceur と違ってコメントをいい感じに保持してくれるので ng-annotate と一緒に使えます(後で詳述)。 // Gulp var gulp = require('gulp'); var source = require('vinyl-source-stream'); var buffer = require('vinyl-
UI Bootstrap の datepicker-popup は、クリックしたら Datepicker を表示するようにするためのディレクティブです。日付選択のためのカレンダーですね。 こんなやつです。 まずはコード 以下のような感じで利用することができます。 <div class="input-group" ng-controller="DatePickerController"> <input type="text" class="form-control" ng-model="date" datepicker-popup is-open="datePickerOpen"> <div class="input-group-addon" ng-click="toggleDatePicker($event)"> <i class="glyphicon glyphicon-calendar
import { foo, bar } from './foobar'; console.log(foo); bar.changeFoo(); console.log(foo); babel-node index.js と実行すると Foo Bar と 出力されます。Foo Foo ではありません。Node.js で CommonJS を書いていた人からすると、???となる挙動ですね。index.jsでの foo はただの変数ではないのです。 CommonJS なら・・・ CommonJS で素直に同じようなモジュールを書こうとすると、以下のようになると思います。これだと当然 Foo Foo と出力されますね。bar.changeFoo() を呼んでも foobar.js の module.exports.foo も更新されませんし、index.js の foo も更新されません。
Angular 2 alpha.11, alpha.13 時点の情報です。現時点の最新版とは全く異なる内容です。現在では公式サイトのドキュメントが充実しているので、そちらを参照することをおすすめします。 昨日参加してきた ng-japan の間、Angular 2 の 5 Min Quickstart という Hello World 的なサンプルから始めて、貧弱な TODO アプリを作ってみました。感想と、その過程でいろいろハマったところを書いてみます。 まずは感想から。 別のフレームワーク? やっぱり Angular 1.x とは別のフレームワークだなあという印象です。概念も書き方もツールも違う。ライブラリもそのまま使えない。Angular とは別の名前にした方がいいのでは、というくらいです。 現時点では、他のコンポーネント志向のフレームワークに乗り換えてもコストは同じな気がします。Ne
元のファイルのレイヤーパレットで、コピーしたいレイヤーまたはグループを選択。 右クリックして Duplicate Layer/Group(レイヤー/グループを複製?)を選択。 出てくるダイアログで複製先のファイルを選択できる。 参考 http://forums.adobe.com/thread/661617
こわくない Protractor という記事で書けなかった Angular 同期関連についてです。 Angular との同期 Protractor は Angular プロジェクトの一部として開発されているだけあり、Angular に特化した機能があります。その一つが Angular と同期してくれるというもの。 ここで言う同期というのは、具体的には $digest loop, $timeout や $http による AJAX リクエストが完了するまで待ってくれるということです。これにより、他の E2E テストフレームワークのように sleep したり、期待する値が取得できるまでポーリングするタイプの wait をする必要がなくなります。より速く不確実さを排除したテストを書けるわけです。 直接実行するには browser.waitForAngular() を呼びます。これはざっくりいうと
制御文字を入れるだけで、色をつけることができます。用が終わったら、リセット用の制御文字でもとに戻しましょう。 var black = '\u001b[30m'; var red = '\u001b[31m'; var green = '\u001b[32m'; var yellow = '\u001b[33m'; var blue = '\u001b[34m'; var magenta = '\u001b[35m'; var cyan = '\u001b[36m'; var white = '\u001b[37m'; var reset = '\u001b[0m'; console.log(red + 'This text is red. ' + green + 'Greeeeeeen!' + reset);
Angular Advent Calendar 2014 の 17 日目の記事です。Angular そのものではなく、AngularJS 用の E2E テストツールである Protactor について書きます。(日付越えてしまいました。すみません・・・。) Angular チームが作っているという Protractor。Angular アプリの E2E テストをするならこれに違いないと思いつつも、使い始める前はいろいろこわい点がありました。 コードがどこで動いているかわからなくてこわい。 処理がどういう順序で実行されるかわからなくてこわい。 この記事ではこれらの点について説明し、Protractor を自信を持って使えるようになることを目的としています。 読者としては以下のような方を想定します(主に先日の自分)。 Protractor のインストールをして動かしてみた。 日頃から Prom
SBT の sbteclipse プラグインを使って Eclipse 用のファイルを出力します。 まず PROJECT_DIR/project/plugins.sbt に以下を書きます。なければ作ります。
AngularJS v2.0 Design Docs の中で、directive 周りについて書かれている Templating の内容をざっと読んでまとめてみました。Controller がなくなる 2.0 では最も気になる部分です。 2014/11/3 当時の内容であり、どんどん変わっていくと思われます。かなり内容をはしょってあるので悪しからず。 また ng-europe での発表と食い違ってるところもあり、どっちが新しいのか不明です。あくまでも、雰囲気を掴む程度に・・・。 まだの方は、まず ng-europe のビデオ を見ることをおすすめします。 まとめ 最初にまとめを。 1.x の自由で複雑すぎた directive を、3 つのパターンに分類。 @ アノテーションでいろいろ設定。 DI で他のディレクティブと通信できる。 Web Components 的な方向に。まだしっかり詰
ng-europe での発表を見て湧いてきた疑問を、GitHub で公開されている Angular 2.0 用のレポジトリを見ながらこんな感じかな、と書いてみました。いろいろ間違ってると思いますし、そもそも公開までにどんどん変わるでしょうからまったく信頼性のない情報です。 これを書いてて Design Docs の新しいのも公開されていることに気がついたので、読んだら更新するかもしれません。 情報ソース ng-europe のビデオ GitHub で参考になるプロジェクト どれも数ヶ月前から更新されていないことを考えると、最新の開発状況は公開されていないようです。ng-europe で発表された属性のバインディング記法なんかは出てこないので、他の部分も最新のものとはいろいろ変わっているでしょう。 angular/projects: Angular 2.0 アプリの参照実装です。 angul
template_redirect アクションをフックすることで、特定の URL に対する処理を記述することができます。 ひな形 上記をまとめると、だいたい以下のような感じです。 <?php /* Plugin Name: Foo Description: Foo plugin Version: 1.0 Author: Foo Bar */ global $foo_db_version; $foo_db_version = '1.0'; // Create/update db table for foo count function foo_install() { global $foo_db_version; global $wpdb; $installed_ver = get_option("foo_db_version"); if ($installed_ver != $foo_db
入れたくないとは思っていても、止むに止まれぬ事情で Word, Excel, PowerPoint などのファイルを git レポジトリの中で管理することはありませんか?この記事では、Mac で Office ファイルの diff を取る方法を紹介します。Linux でも多分動くはず。 textconv 普通、バイナリファイルを git diff しても、変更内容がわかりません。ところが、git には textconv という、バイナリファイル(別にバイナリじゃなくてもいいんですが)をコマンドに渡した結果を diff に使う機能があります。ドキュメントには、JPEG の Exif 情報の diff を取る例等が載っています。 Office ファイルからのテキスト抽出 では、Office ファイルからテキストを抽出するにはどうすればいいでしょう?Windows の msysgit には as
Angular の Service, Factory, Value, Constant, Provider の違いって?JavaScriptAngular Angular 勉強中なのですが、公式ドキュメントの Provider のところを読んでやっとわかったのでメモしておきます。 Service には二つの意味がある。一つは、DI 対象のうち、書く人が API を決められるもの。もう一つは、DI 対象の Object の作り方(Provider Recipe)のうちの一つ service()。 factory() でできる Object も Service。 Service(二つ目の意味), Factory, Value, Constant, Provider は DI 対象 Object の作り方の名前。 よくわからなければ factory() を使う。service() の中で ret
いや、別に秘密でも何でもなく、ただ私が最近社内勉強会用に調べるまで知らなかっただけですが・・・。 grunt.initConfig() で渡す Object がありますよね。Gruntfile.js のほとんどを占めるあの長大なオブジェクト。あまり良くわかっていなくても、ドキュメントやブログの例を真似すれば、どうにか Grunt を使うことはできます。 しかし、これってよく見ると、?なところがたくさんあります。 options とかあるけど、options に入れるのと入れないの(src, dest など)は何が違うの? トップレベルに pkg とかタスク名じゃなさそうなものを入れてる例を見るけど? grunt connect:server:keepalive とか見るけど keepalive はどこから来たの? Grunt の基本概念から調べつつ、これらの疑問に答えていきます。 普通のタ
Google の Material Design のカラーパレットを CSS/Sass/Scss/Less/Stylus で簡単に使うCSSSasslessscss Google の Material Design 良いですよね。特にカラーパレットがいいなと思いました。 これを使いたい!と思うんですが、16 進数のカラーコードをコピペするのも面倒だし、コピペ先では何の色だったかわからなくなってしまいます。 そこで CSS, Sass, Scss, Less, Stylus で簡単に使えるように、ライブラリ(?)を作ってみました。 使い方 dist ディレクトリから直接ダウンロードしてもいいですし、Bower を利用しているなら bower install material-colors でインストールできます。 Sass, Scss, Less, Stylus の変数 一番わかりやすい使い
Ruby などの snake case を多用する言語でプラグラムを書いていると、foo_bar_baz の foo だけ書き換えたいとき、cw して全部消えてしまい、うわあ!となることはありませんか? もちろん ct_ とすればいいのですが、1 タイプ増えてしまうし cw の押しやすさにはかないません。そもそも _ で区切っているのは単語なので、word と言ってもいい気がします。 そこで _ を区切り文字に含めるには以下のようにします。区切り文字に含めるというより、_ を単語を構成する文字から除外する感じですね。
(jQuery 1.7.2 を対象としています。1.8pre では then() が pipe() と同じものになっているので、かわりに then() を使っても動くようです。) 対象の要素が同じであれば、以下のように animate() を連続して呼ぶと queue にアニメーションが溜まり、順番に実行されます。 $elem1.animate({left: 500}, 1000) .animate({top: 300}, 1000) .animate({left: 0}, 1000); $.Deferred(function(dfd) { dfd.pipe(function() { return $elem1.animate({left: 500}, 1000); }) .pipe(function() { return $elem2.animate({top: 300}, 1000);
先日から Learn You a Haskell for Great Good! の書籍で Haskell を勉強し始めました。 まだよくわかりませんが、GHCI では let をつけないと関数を宣言できないなどいろいろ制約があるようです。Types and Typeclasses で明示的な関数の型宣言が出てきましたが、GHCI にそのまま打つとエラーになってしまいます。
Git にコミットする時に文句を言われたりする例のあれ。保存時に自動で消す設定もありますが、何となく気持ち悪いです。 (ちなみに "trim_trailing_white_space_on_save": true です。) そこで TrailingSpaces plugin をインストール。Package Manager でインストールできます。
最近 HHKB Professional 2 を買いました。音が何とも言えずいいですね。 最初は MacBook の前やトラックパッドの上に置いて使っていましたが、トラックパッドが使えなくなるためマウスも必要になり、何かと不便です。 そこで、外付けキーボードを内蔵キーボードの上に置けないかと考えました。しかし、ただ置くだけだと外付けキーボードが下のキーを押してしまって問題です。 この記事では Karabiner というソフトを使って、外付けキーボードを接続したときだけ内蔵キーボードを無効化します。以前は ControlPlane と kextunload/kextloadを使って行う方法を紹介していましたが、新しい Macbook では動かないことと Karabiner を使った方法の方が圧倒的に簡単なため改めました。 Karabiner の設定 Karabiner は、Macbook の
RSpec 2.14.0 からは allow, expect_any_instance_of, allow_any_instance_of も使えるようになりました。 obj.should ... expect(obj).to ... obj.should_not ... expect(obj).not_to ... obj.should =~ // expect(obj).to match(//) [1, 2, 3].should =~ [3, 2, 1] expect([1, 2, 3]).to match_array([3, 2, 1]) obj.should > 3 expect(obj).to be > 3 lambda { ... }.should raise_error expect { ... }.to raise_error # RSpec 2.14.0 or later
var nested = [ [0, 1, 2], [3, 4, 5], [6, 7, 8] ]; Array.prototype.concat.apply([], nested); // -> [0, 1, 2, 3, 4, 5, 6, 7, 8]
Mac には Linux の rename コマンドがありません。Homebrew に似たのがあるので、入れてみます。(名前は同じですが別物のようです。)
まず、前提としてレポジトリに 入れるのは LF のみが良いようです。 core.autocrlf という git の global オプションで改行コードの自動変換を設定できます。 true: コミット時に CRLF -> LF。チェックアウト時に LF -> CRLF。 input: コミット時にのみ CRLF -> LF に変換。Windows の場合のみ true と同じ。 false: 変換しない。 では、自動変換をするべきか? する派 Windows, Mac, Linux で以下の設定。
document.body.style.webkittransform = 'rotate(180deg)'; document.body.style.setProperty('webkitTransform', 'rotate(180deg)'); document.body.style.setProperty('WebkitTransform', 'rotate(180deg)'); どうやら setProperty() で CSS のプロパティ名(例 -webkit-transform)で指定するか、JavaScript のプロパティ名(例 WebkitTransform)で直接指定する方法があるようです。 JavaScript で使えるプロパティ名を取得する では適切なプロパティ名を取得するには? JavaScript のプロパティ名の方(例 WebkitTransform)は、e
chai でオブジェクトをまるっと比較するのに deep.equal を使っています。もっと細かく assertion 書いた方がいいよというのはわかりますが、便利なので・・・。 expect(obj).to.be.deep.equal({ foo: 1, bar: 2, baz: 3 });
次のページ
このページを最初にブックマークしてみませんか?
『qiita.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く