Author's Posts

HTML,CSSでレイアウトしているとき、いつも使っているブラウザで確認しているときはすごい綺麗だったのに、違うブラウザで確認すると崩れていて落ち込む、という経験をしたことがあると思います。

そういうとき、普通はHTMLやCSSを見直すのですが、どうしても面倒なときがありますよね。 そんなときに知っておくと便利なのがCSSハックです。 検索するといっぱい出てくるのですが、各種ばらばらだったりするのでこの1ページを見れば済むようにどんどん追加していこうと思います。

IE対策

<!DOCTYPE html>
<!--[if lt IE 7]><html class="ie6" lang="ja"><![endif]-->
<!--[if IE 7]><html class="ie7" lang="ja"><![endif]-->
<!--[if IE 8]><html class="ie8" lang="ja"><![endif]-->
<!--[if IE 9]><html class="ie9" lang="ja"><![endif]-->
<!--[if(gt IE 9)|!(IE)]><!-->
<html lang="ja"><!--<![endif]-->

このようにHTML要素を書いておけばIE用にCSSファイルを作らなくても、既存のCSSの好きなところで

.ie8 #commmon-place {}

のように書けばIE用にCSSを適用させることが出来ます。

Firefox

#common-place, x:-moz-any-link { color: red; }

Firefox 3.0以上

#common-place, x:-moz-any-link, x:default { color: red; }

Safari2-3

html[xmlns*=""] body:last-child #common-place { color: red; }

Safari2-3.1

html[xmlns*=""]:root #common-place { color: red; }

Safari2-3.1, Opera 9.25

*|html[xmlns*=""] #common-place { color: red; }

Safari3以上, Chrome, Opera 9以上, Firefox3.5以上

body:nth-of-type(1) #common-place { color: red; }
body:first-of-type #common-place { color: red; }

Opera 9.25以上

;;body #common-place { color: red; }
html:first-child #common-place { color: red; }

Opera 8, 9

body[class|="hypen-ated"] #common-place { color: red; }

iPhone

iPhone用CSSハックは、今はメディアクエリで行うのが一般ぽいです。

@media screen and (max-device-width: 480px) {
    #common-place { color: red; }
}

iPhoneだけCSSファイルを分離したい場合は以下のように書きます。

<link media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" rel="stylesheet" />

いかがでしたでしょうか。 こういうのは出来るだけ使わないほうがいいのですが、知っておくと絶対に役に立ちますよね。

Read more

みなさんはgitを使えますか? 僕は今まで複数で開発する経験がなかったのでバージョン管理システムすらほとんど使ったことがありませんでした。 ただ、1人で開発するにしても、履歴が残せるというのはすごいメリットだと思うので今回gitを勉強しました。 githubも使いたいですしね!

今回のこの記事では、僕がgitをまぁまぁ使えるレベルまでに行った勉強方法をまとめました。 もしこれから勉強しようとしている人がいたら参考にしてみてください。

まずはネットで概略をつかむ

gitとはどういうものなのかをつかみましょう。 この段階では手を動かして実際にgitを使ってみてもいいですし眺めるだけでもいいです。 どういうものなのか、どういうことが出来るのかを最初に俯瞰しておくとのちのち役に立つかもしれません。

以下は僕が参考にした記事です。 参考にしてみてください。

イラストでわかる!git入門の入門

Git入門

Git を使ってソース・コードを管理する

本でgitを知る

ネット上の資料だけだと習得は難しいかもしれないので本で一気に勉強してしまいましょう。

オススメの本は以下です。

入門git
入門git
posted with amazlet at 12.09.29
Travis Swicegood
オーム社
売り上げランキング: 17821
Read more

この記事はSMASHING HUBに掲載された 6 Commodious PHP Functions for Beginners の内容を日本語訳したものです。

PHPは公式リファレンスページで5000以上の主要な関数を用意しています。その膨大なリファレンスページの中には、開発者になったばかりの人が見ておくべきヒントやコツがたくさんつまっています。

その中から重要だと思われる部分を抜き出して記事にしています。

1, わかりにくい === 演算子

PHPは強力かつスマートな言語です。また、変数型が緩く型付けされた言語してよく知られています。ただ、そのせいか、多くの人が == と === の使い方について混乱しているのをリファレンスやブログのコメントから気づきました。これらはどう違うのでしょうか。

PHPは ‘431’を文字型として認識しますが、これをそのまま四則演算で使用することも出来ます。 このことはとても理にかなっています。 ただ問題が起きるのはこの数字が0の場合です。 0という数字は、0やfalseの意味で使われます。このことにより少し不思議で複雑なことがおきます。 そこで、=== を使用すると簡単にどちらの意味で使われているのか判断することが出来ます。

他の似たような言語では、== は変数を比較することに使われてることが多いですが、数字の0として比較したいとき、PHPではそれを数字の0として認識せずにfalseとして認識するかもしれません。 こういうときこそ、まさに === を使うべきタイミングです。 === は変数の値を比べるだけじゃなく、型まで調べます。 この演算子は数字の0かどうかを確定させたいときに使います。

使い方:

$myVar = false;

// true
if($myVar == 0) {}

// false
if($myVar === 0) {}

2, アプリケーションの中でグラバターを使う

グラバターとは?
これは読者を手助けし、共有する価値のあるものだと思った抜粋のうちの1つです。WordPressの絶大な人気も、グラバターの使用によってもらたされたものです。グラバターは綺麗はAPIを提供し、簡単に統合して使うことが出来ます。

/*
-myEmail- Email address to show gravatar for
-gSize - size of gravatar
-url - URL of default gravatar to use
-gRating - rating of Gravatar(G, PG, R, X)
*/
function myGravatar($myEmail, $gSize, $url, $gRating)
{
    echo '<img src="http://www.gravatar.com/avatar.php?gravatar_id='.md5($myEmail). '&default='.$url.'&size='.$gSize.'&rating='.$gRating.'" alt="" width="'.$gSize.'px" height="'.$gSize.'px" />';
}

一度、上記の関数を追加すれば、グラバターの画像を表示させたい部分のどこでも呼び出すことが出来ます。

myGravatar($myEmail, $gSize, $url, $gRating);

3, Empty()

他の言語ではほとんど使われることのない手軽なPHP関数の1つがempty()関数です。 この関数は使われる文脈により、違う動きをします。 この関数が実際に何をしているかは、変数が定義されていない場合と、何かの値を持っているときを調べてみるとわかります。 また、null,false,数字の0を調べて、返り値であるtrueかfalseを調べます。

if(!empty($_GET['myVal'])){

$myVar = $_GET['myVal'];

}else{

$myVar = 'SmashingHub';

}

// Or something like below does the same job

$myVar = 'SmashingHub';

if(!empty($_GET['myVal'])){

$myVar = $_GET['myVal'];

}

4, Function_exists()

この関数は、特定の名前の関数が存在しないかどうかをチェックします。 WordPressのようなCMSを触るとき、多くのプラグインとたくさんの関数が統合されています。実際に試してみましょう。

私のブログテーマを変更したとき、問題が発生しました。サイドバーにいくつかの未定義の関数エラーが発生しました。 いくつかのソースコードをみて、既に定義されている同じ関数を発見しました。

テーマ開発者は、下のサンプルのように、function_exists()を使用して既にインストールしているプラグインの中に同名の関数がないかどうか調べるべきです。

悪い例:

get_flickrrss();

良い例:

if (function_exists('get_flickrrss')) {

get_flickrrss();

}

5, 参照

参照は、返り値を持たず、グローバル変数を設置することなく関数に変数を渡すことが出来ます。 この方法は、元々の変数を変えることも出来ます。関数の始めに、「&」を使います。

例:

function lowercase(&$myString){

$myString= strtoupper($myString);

}

$myName = 'smashinghub';

lowercase($myName);

echo $myName;  // returns SMASHINGHUB

上記の例では、strtoupper()関数を呼び出し、$myNameに値を渡して、実際の文字列を変更しています。

6, Similar_text

PHPは類似の2つの文字列をチェックするsimilar_text機能を持っています。

similar_text($myVar1, $myVar2, $sPercent);
// どのくらい似ているかをパーセンテージで返します
この記事はSMASHING HUBに掲載された 6 Commodious PHP Functions for Beginners の内容を日本語訳したものです。
Read more

この記事を見ているあなたはFacebookアプリを作成していますか?

現在Facebookアプリを作成している @DAI199 ですが、いきなり以下のようなエラーが出ました。

(#4) Application request limit reached

あーなんか上限に達したんだなってことはわかったんですが、自分自身そこまでAPIをコールしていなかったので意味が分かりませんでした。

FacebookStackOverFlowで検索してみたところ以下の記事が有力です。

Facebook Application Request limit reached

この記事によると、

There is a limit, but it’s pretty high, it should be difficult to hit unless they’re using the same access tokens for all calls and not caching results, etc. It’s 600 calls per 600 seconds per access token. GraphAPIをコールする回数には制限はあるが、その制限はとても高く、全てのコールを同じアクセストークンを使い、更に結果をキャッシュせずに使い続けない限り上限に達することは難しいだろう。1つのアクセストークン毎に600秒間で600コール出来る。

つまり僕はめちゃくちゃアクセスしてたってことになります。

結局原因としては、サーバー上でまわしてたcronの中に、Facebookアプリで使用していたアプリから作り出されたアクセストークンを使用していました。 このアクセストークンを別のアプリから作ったアクセストークンに変えたところ、今のところエラー発生していません。

FacebookAPIを叩ける回数は、アクセストークンに依存するんですね。まぁそりゃそうか。

もし同じようにつまずいている人がいれば参考にしてみてください。

Read more

あなたはcronを知っていますか? 既にLinuxをいじったことがある人、プログラムをある程度書いたことがある人はcronというものが何者か、わかっていると思います。

cronというのは定期的にスクリプトやコマンドを自動実行する仕組みのことです。 読み方は「クーロン」「クローン」とか言うみたいです。ちなみに僕は「クーロン」って言います。

今回は、このcronの設定方法を書いていきたいと思います。

cronの設定方法

まずはcronの設定の方法を知りましょう。 設定方法には以下の3つがあります。

  1. crontabコマンドを使用する
  2. /etc/crontab ファイルを編集する
  3. あるディレクトリにスクリプトを入れておく

今回主に説明するのは、1と2です。

1.crontabコマンドを使用する

これから書くコマンドは全てターミナルで動作します。 それでは早速いきましょう。

cron 設定の書き方

$ crontab -e

と入力して実行すると、エディタが開きます。 設定の書き方は、以下のように書きます。

分 時 日 月 曜日 コマンド

改行せずに1行で書きましょう。また値と値の間はスペースで区切っていきます。 たくさん設定したい場合は次の行に書いていけばOKです。

設定出来る値は以下の通りです。

分   ・・・ 1-59
時   ・・・ 0-23
日   ・・・ 1-31
月   ・・・ 1-12
曜日  ・・・ 0-6(日=0,月=1,火=2,水=3,木=4,金=5,土=6)
コマンド・・・ 実行したいもの

注意:

・「#」が行の先頭にあると、コメントとして扱われます
・「*」を指定すると、「毎」という意味で解釈されます
・「-」で数字をつなげると、範囲指定になります
・「,」で数字を区切ることが出来ます
・「/(数字)」と書くことが出来ます

例:

# 4時30分に実行
30 4 * * * /usr/bin/php /var/cron/example.php
# 1時間毎に実行
* */1 * * * /usr/bin/php /var/cron/example.php
# 10分おきに実行
0,10,20,30,40,50 * * * * /usr/bin/php /var/cron/example.php
# 3時間毎に0〜30分の間で10分毎に実行
0-30/10 */3 * * * /usr/bin/php /var/cron/example.php

2./etc/crontab ファイルを編集する

/etc/crontab というファイルを、1で紹介した書き方で書いていきます。 設定の変更や削除はこのファイルを変更すれば反映されます。

3.あるディレクトリにスクリプトを入れておく

あるディレクトリとは、以下のディレクトリです。

/etc/cron.hourly   ・・・ 1時間に1回実行
/etc/cron.daily     ・・・ 1日に1回実行
/etc/cron.weekly  ・・・ 1週間に1回実行
/etc/cron.monthly・・・ 1ヶ月に1回実行

最後に

ウェブサービスを作ろうとしたり、何かシステムを組むときにcronは必要な知識になってくると思います。 またおすすめのやり方はやはり自分の手で書いていく、1と2です。 実際に動いたときに感動するし勉強にもなるからです。 cronをうまく使って、素晴らしいサービスを生み出してください。

Read more

JavaScriptでiPhoneやAndroidのアプリが作れてしまうTitaniumMobileを開発した、Appcelerator社CEO Jeff Haynie氏、COO Sandeep Johri氏が来日すると聞いたので参加してきました。

イベントページはこちら→ Titanium Mobile ユーザー会 Meetup! Appcelerator CEO Jeff Haynie、COO Sandeep Johri 来日記念

Twitterハッシュタグはこちら→ #titaniumjp

Ustはこちら→ Titanium Mobileユーザー会Meetup! Appcelerator CEO&COO来日

CEO Jeff github: jhaynie

講演内容:

◯ COO Sandeep Johri氏 ご挨拶
◯ CEO ご講演
◯ 質疑応答
◯ TitaniumMobileユーザー会からのお知らせ
◯ LT

今回はTitaniumMobile3.0が出るということで、3.0で何が変わるかの紹介、新しい公式のMVCフレームワーク、「alloy」の紹介でした。

講演は全て英語で行われたのですが、自分の英語力が全く追いつかず、メモを取る時間が取れませんでした。
TwitterやUstにて、情報があると思うのでそちらを参考にしていただければと思います。

今後はTitaniumMobile日本ユーザー会がAPIドキュメントなどを訳していくらしいので、TitaniumMobileも注目していこうと思います。

TitaniumMobileユーザー会のURLはこちら→ http://titanium-mobile.jp/

TitaniumMobileグループはこちら→ https://groups.google.com/forum/#!forum/titanium-mobile-users-jp

ドキュメントの和訳はgithubでやってるよ https://github.com/titanium-mobile-doc-ja/Guides

追記:2012年9月26日 12:09 TitaniumMobileユーザー会の記事が出ました!

「生産性の向上」をコンセプトにしたTitanium 3.0、10月発表へ http://www.atmarkit.co.jp/news/201209/26/titanium.html

Read more

毎週Facebookの変更点やニュース、コラムをまとめて配信します。 今週は6個の記事を紹介! 記事は上から時系列順になっています。今週のFacebookを振り返ってみましょう!

Facebook、外部モバイルアプリへの広告表示をテスト

Facebook:「HTML5に賭けたのは間違い」発言の技術的な理由と反応

Facebook、新モバイル広告のテスト開始―サードパーティーのアプリやサイトにターゲット・バナー広告を表示

Facebook、今後は4~8週間サイクルでモバイルアプリをアップデート

Facebook、欧州で顔認識機能を無効に–規制当局の監査を受け

Facebookが共有アクティビティープラグインを公開。ユーザーは外部ウェブサイトからプライバシー設定が可能に

Read more

みなさんはプロジェクトを進行させていくとき、プロジェクト管理ツールは何を使っていますか?

僕が今まで使ったことがあるというか少し触ったことがあるのはTracでした。

ただ今回はこの記事を参考にした結果、Redmineを導入してみることにしました。 また、RedmineはRuby on Railsで出来ているということで、Rubyを触るきっかけにもしようと思って導入してみました。 Redmineって何?って人は以下の記事を読んでみてください。 Redmineとは – Redmine.JP

導入までに多少手こずる部分はありましたがなんとか導入することが出来たので、導入するときに参考になった記事を紹介したいと思います。

基本、Redmineの導入は、Redmine日本語公式ページのドキュメントにそってインストールしていきます。 Redmine 2.1をCentOS 6.3にインストールする手順 – Redmine日本語公式ページ ドキュメント

導入に使ったサーバーは、AmazonWebService EC2でAmazonLinux micro、AMIからインスタンスをlaunchせず、普通に空のインスタンスを作成しました。 以下参考記事になります。

参考記事

CentOS 5のRuby、はまり処

この記事、重要です! 特に、Redmine公式ドキュメント内の、Rubyをインストールする際、ソースからビルドする方法をとっていますが、yumで他のパッケージを同時にインストールしておかないとのちのちエラーで苦しむことになります。 自分自身がはまったのでぜひ以下のパッケージはインストールしておいてください。

◯ ruby
◯ ruby-devel
◯ ruby-irb
◯ ruby-libs
◯ ruby-rdoc
◯ ruby-ri

以下コピペすると便利ですよ。

yum -y install ruby ruby-devel ruby-irb ruby-libs ruby-rdoc ruby-ri

[install]Redmineのインストールと設定 – yuhei.kagaya

公式ドキュメントと同じことをしているのですが、作業的に少し違うことをしている部分があります。 またドキュメントでは触れていない細かいとこまで押さえてあるのでドキュメントを見つつ、この記事を見ながら作業をするとすんなりRedmineを使えるようになるかもしれません。 また、Gmailを用いた設定の方法も書いてあるので参考になる人には参考になると思います。

第11回: Bundler – Ruby on Rails with oiax

公式ドキュメントでは触れていませんが、bundleを使用するとき、bundle install を実行しないといけないです。 このページの「インストール」の部分を参考にするとすんなりインストールすることが出来ました。

Rubyのgemバージョン管理ができるBundlerを実行できなかった – kk_Atakaの日記

Gemを起動させるためにはGemfileが必要。 このことが、Gem超初心者というか今回初めて使った僕にとって、そうなのかと思うことでした。 なのでGemfileがあるディレクトリでGemを実行しないとインストール出来ないっていう。ちょっとつまずいた部分でした。

最後に

今回Redmineを導入してみましたが、依存関係のパッケージで悩むことが多かったです。 なのでこの記事を見てインストールする人は必ず一番上のrubyの様々なパッケージをインストールすることを忘れないでくださいねw もう一度そのコマンドを貼っておきます。コピペでどうぞ。

yum -y install ruby ruby-devel ruby-irb ruby-libs ruby-rdoc ruby-ri

これから運用するにあたって、また何かあればブログ書きたいと思います。

Read more

今日はライトな記事です。 Facebookに既に十分詳しい方は別の記事やブラウザをそっと閉じることをおすすめします。

OpenGraphAPIを使用してFacebookページの情報を取得する際に必要になるのがIDです。 OpenGraphAPIって何?って人は、Facebookから色んな情報を取得するための仲介役だと思っておけばOKです。 Facebookの全てのものには固有のIDが振られていて、そのIDを取得してOpenGraphAPIというものにつっこむとそれに関する色んな情報が取れるってわけです。

今回はFacebookページの固有なIDを取得する方法を紹介します。 今は必要なくてもいつか必要になるかもしれないしとても簡単なので読んでおいて損はないですよ!

FacebookページのIDを取得する方法、その方法とは、

「www.faecbook.com/◯◯」の「www」を「graph」に変える

ただこれだけです。

そうすると意味のわからない文字列が大量に画面に出たと思います。 慣れていない人は困惑するかもしれません。普段こういう画面をみないと思うので。 ただこの意味のわからない文字列を変換すると様々な情報になる、ということだけ覚えておきましょう。

そしてこの文字列の中に「id」と書いてある部分があるので探しましょう。 そう、ここです!

実際に見てみるのが一番わかりやすいですね。 例えば、次のURLにアクセスして確認してみてください。

https://graph.facebook.com/cocacolapark

idを見つけられましたか?そのIDと上の画像のIDが一致していれば正解です。

それではこのURLの「graph」の部分を「www」に戻してみましょう。

https://www.facebook.com/cocacolapark

実はコカ・コーラのFacebookページだったんですね。なるほど〜

今回はFacebookページの固有IDを取得する方法を紹介しました。 Facebookは開発者になると結構面白いことが多いですよ。 仕様変更が多いのが傷ですが、それにしっかりついていけば色々な情報を取得することが出来るので作れるものも広がります。

暇なひとはぜひいじってみては?

Read more

この記事はCSS-TRICKSに掲載された CSS Style Guides の内容を日本語訳したものです。

CSSプロパティを書く私たちの最近の意見をまとめたとき、CSSスタイルガイドの大きな問題点が持ち上がる。 プロパティを1つ選択することは、完璧なスタイル戦略をつくり上げるための1つの選択です。 ネーミングはそのパーツのうちの1つです。セクション分けもそのパーツのうちの1つです。 コメントやインデント、その他全てのファイル構成。これらはすべて完全なCSSスタイルガイドを作り上げます。

既存のCSSスタイルガイドを列挙しましょう。

しかし最初はパターンライブラリではありません。

私はパターンライブラリが大好きです。Twitter BootstrapGELを考えてみてください。これらは特に大きなサイトやウェブアプリを作るときに素晴らしい方法だと考えます。この記事はこれらの方法に関することではありません。それらのいくつかは非常に貴重だと思うので私たちはいくらかそれらを探しまわります。 この記事はCSS自体のスタイルガイドについてまとめています。

私は上記のことから、いくつか抜粋したCSSスタイルガイドをリストアップしていきます。

GitHub

GitHub CSS Style Guide →

経験則として、ネストは3レベル以上しないでください。あなた自身がそのようなコードを見つけたときは必要に応じてその特異なコードや入れ子のレイアウトを再構成することを考えてください。

Google

Google HTML/CSS Style Guide →

必要な限り、かつ出来るだけ短いIDやクラス名を使うべきだ。

例)#navigationではなく、#nav.authorではなく.atr

理解や一覧性を高めるために、ハイフン以外の全ての文字によってセレクタ内の単語や略語を連結しないでください。

例).demoimage.demo_imageではなく、.demo-image

Idiomatic CSS

Nicolas Gallagher’s Idiomatic CSS →

「不可視文字を表示」するようにエディタを設定します。これは、空白行の終わりを取り除くようになり、意図しない空白行を取り除き、コミットを汚染することを防ぎます。

CSS Wizardry

Harry Robert’s CSS Style →

Smashing Magazine

Vitaly Friedman’s “Improving Code Readability With CSS Styleguides”

大規模プロジェクトや大規模な開発チームにとって、簡単なアップデートのための資料を作っておくと便利です。

ThinkUp

ThinkUp CSS Style Guide →

幅、または高さの値が0である場合、単位を指定しない。
セレクタのブロックを参照するコメントは、参照するブロックの直前に別々の行で指定する必要があります。

WordPress

WordPress CSS Coding Standards →

セクションブロックの間にあるセクションや一つの空白には2行の空白行を追加します。

SMACSS

Jonathan Snook’s Scalable and Modular Architecture for CSS →

この記事はCSS-TRICKSに掲載された CSS Style Guides の内容を日本語訳したものです。
CSSをチーム内でどのように規約を決めたらよいか決めかねたのでこの記事に頼りました。 CSSスタイルガイドはたくさんの企業や団体が作成しているのでこれらを参考にそれぞれの規約を作っていけばよいと思います。
Read more