2013/08/03

[Instagram]埋め込み機能を使う その2

前回は、単体の画像を取得する方法を書きましたが、今回は、コメント数とお気に入り数込みの整形された形での取得方法。

手順としては、取得したい画像のページまで「・・・」をクリックして「写真ページを表示」を選択する。

そこからさらに右下にある下のような画像をクリックすると「embed」という文字が表示されるのでそれを選択してでてきたコードを貼付けるだけ。
 photo Instagram06_zps4d1d8faf.png
なんと便利なのでしょうか!!

2013/08/02

[Instagram]埋め込み機能を使う

ちょっとInstagramのAPIを調べる必要があったので。
写真を直接取得した場合の方法は、

手順1:取得したい写真を選ぶ。
 photo Instagram01_zps013b5147.png
手順2:右下の「・・・」をクリックする
 photo Instagram02_zpsd126c1dd.png
手順3:上の画像で「写真ページを表示」を選択する
 photo Instagram03_zpsebba829a.png
手順4:上の画像のようにURLを確認する
 photo Instagram04_zpsea62d436.png
手順5:取得したURLにmediaを末尾につけると表示される

ちなみに、手順5で作ったURLをquerystringにして、下のようにアクセスするともう少し詳細な情報をゲットできる。
http://api.instagram.com/oembed?url=http://instagr.am/p/BUG/

これで埋め込みも怖くないっすねー。

2013/08/01

[jQuery]on時の名前空間について

よくプラグインを見ていると下の様な記述に出くわすことがあります。

$('#hoge').bind('click._bar',function(e){


});
クリックイベントが実行されるのはわかるのですが、なぜ、後ろに文字列があるのか?

調べた結果、名前空間と呼ばれるもので、offのときにその名前空間を指定すると、指定されたイベントだけを削除できるようです。
<script>
jQuery(function($){

  $('#run').bind('click._default',function(e){
    e.preventDefault();
    console.log('click._default called')
  });

  $('#run').bind('click._custom',function(e){
    e.preventDefault();
    console.log('click._custom')
  });

  $('#detach').on('click',function(e){
    e.preventDefault();
    $('#run').off('click._custom');
  });

  $('#alldetach').on('click',function(e){
    e.preventDefault();
    $('#run').off('click');
  });

});
</script>
<input type="button" value="Run" id="run">
<input type="button" value="Detach" id="detach">
<input type="button" value="All Detach" id="alldetach">
上の例の場合、「Detach」を押した後、runをクリックすると「click._default」だけが表示されるのに対し、「All Detach」をクリックした後、runをクリックすると何も表示されなくなります。

一部だけunbindしたいときに便利ですね。

2013/07/31

[jQuery]background-imageを削除する

昔、書いたような気がしなくもないのですが、jQueryを使ってbackground-imageを削除したい場合は、どうすればいいのだろうか?

いくつか調べてみて下のようにすれば削除できるようです。

$('#hoge').css('background-image','none');
最初、
$('#hoge').css('background-image','');
でやっても削除されなかったので、何故かなーっと疑問に思っていたのですが、解決できてほっとしましたー。

2013/07/30

[Python][GoogleAppEngine]Task Queue

Task Queue Python API Overview

Using Push Queues in Python
を読みながら「Task Queue」の使い方を勉強してみた。

基本的に、「Task Queue」は
Push Queues

Pull Queues
に分かれており、デフォルトは、Push QueuesでFIFOでタスクを処理してくれる。

しかも、プログラムがめちゃくちゃ簡単で、Queueの名前をつけなくても実行することができちゃう。

こんな感じです。

import webapp2
from google.appengine.api import taskqueue

class HogeHandler(webapp2.RequestHandler):
    def get(self):
        # Add the task to the default queue.
        taskqueue.add(url='/bar', params={'key': key})
たったのこれだけでできてしまう。

しかも、Push Queuesの場合は、デフォルトがPOST通信なので、
class BarHandler(webapp2.RequestHandler):
    def post(self):
        key = self.request.get('key')
で、受け取ることができます。

無茶苦茶便利。

2013/07/29

[本]ジャック・ウェルチ わが経営 下

下巻も去年買ったんだけど、中古で安かったので、文庫版も購入。
ジャック・ウェルチ わが経営(下) (日経ビジネス人文庫)
ジャック・ウェルチ わが経営(下) (日経ビジネス人文庫)
ジャック・ウェルチ

2013/07/28

[本]ジャック・ウェルチ わが経営 上

ほぼ1年前に単行本を買ったが、ちょっと家が手狭になったので、文庫版を購入。
ジャック・ウェルチ わが経営(上) (日経ビジネス人文庫)
ジャック・ウェルチ わが経営(上) (日経ビジネス人文庫)
ジャック・ウェルチ

2013/07/27

[jQuery]checkboxのcheckをはずす

昔に書いたエントリーにあるかなーっと思って探したら見当たらなかったので、ちょっと書いてみる。

checkboxのcheckをはずすためのソースは、How to check and uncheck a checkbox with jQueryにもあったが、下のようにできる。

$('input[name="checkbox"]').attr('checked',false);

2013/07/26

[Google]Google Site上でのGoogle AdSenseについて

どうやらもはやGoogle Site上でGoogle AdSenseが利用できなくなるかもしれない。

Starting August 30th 2013, it will no longer be possible to modify AdSense ad code on Google Sites pages. However, any ads you’ve previously placed on Google Sites will continue to show, and you’ll be credited for all valid earnings.

No change is required on the part of AdSense users. Any ads that you currently have running will not be altered or removed, though you’ll be free to delete ads yourself. However, it will no longer be possible to edit or add new AdSense ads to your existing Google Sites site or to new pages.

via:Changes to AdSense on Google Sites
一時はGoogle Site結構使っていたけど、最近は、ピタリと使わなくなったからたいしたことないと言えば、ないんだけど。

2013/07/25

[Google]chromecastがアメリカで発売

ちょっとこれほしいかも。

GoogleからChromecastが登場した。名前でも推測できるとおり、GoogleのChromeブラウザ/OSをベースにして家庭の大型テレビにクラウドからコンテンツをストリーミングするデバイスだ。

via:Google、Chromecastを35ドルで今日から発売―居間のテレビに取り付けるとビデオコンテンツをストリーミング受信できる
これ、スマホでゲームをやったり動画を見たりする人にとっては便利なアイテムではないだろうか?

こんな便利はガジェットできてしまったら一体、どうやってTV業界は収益を挙げればいいのだろうか?

今後の動きに乞うご期待ですな。

2013/07/24

[iOS][Objective-C]TTTAttributedLabelの文字を上寄せにする

TTTAttributedLabelの実装方法を紹介しましたが、上寄せにすることはできないのだろうか?

TTTAttributedLabelの実装ファイルをみたらやり方が書いてあった。

self. verticalAlignment = TTTAttributedLabelVerticalAlignmentTop;
でいけるっぽい。

実際にためしたらできたので、次回以降、上寄せする時は、これを使いたい。

2013/07/23

[YahooPure][CSS]PureのCDN

前回、Yahooが作ったCSSライブラリのPureを紹介しましたが、ちょっと興味があり勉強することに。

って、まずは、CSSを使うわけだが、ダウンロードしてサーバーにアップして使うにはめんどいなーっと思って、CDNないかなーっと思っていたらありました。

下のように記述すれば使えるようにです。

<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.2.1/pure-min.css">

便利、便利。

2013/07/22

[Twitter]BootstrapベースのフラットUI Furatto

先日、BootStrap3がリリースされたことを書きましたが、フラットデザインが採用されているBootstrapベースにフレームワークが公開されていることが、BootstrapベースのフラットUI実装フレームワーク「Furatto」で知ったのですが、3のサイトを見ているとフラット系のデザインになっているような気がして、デフォルトのものを使った方がよかったりして。

果たしてどうなのだろうか?
 photo furatto_zpsbc48aa0d.png

2013/07/21

[Python]md5を使ったハッシュ化

md5を使ってハッシュ化をするにはどうすればいいのだろうか?

マニュアルを見て確認。

import md5
m = md5.new()
m.update(" the spammish repetition")
m.hexdigest()
これでhash化も困らないぞと。

2013/07/19

[iOS][Objective-C]TTTAttributedLabelのリンクの設定

前回、TTTAttributedLabelの適用方法を書きましたが、今回はリンクの設定について

CGRect rect;
TTTAttributedLabel *tTTAttributedLabel = [[TTTAttributedLabel alloc] initWithFrame:rect];
tTTAttributedLabel.backgroundColor = [UIColor clearColor];
tTTAttributedLabel.font = [UIFont systemFontOfSize:10];
tTTAttributedLabel.lineBreakMode = UILineBreakModeTailTruncation;
tTTAttributedLabel.textColor = [UIColor redColor];
tTTAttributedLabel.textAlignment = UITextAlignmentLeft;
tTTAttributedLabel.numberOfLines = 0;
 
UIColor *fontColor;
 
出力したい文字列
NSString *newDispComment;  
[tTTAttributedLabel setText:newDispComment afterInheritingLabelAttributesAndConfiguringWithBlock:^ NSMutableAttributedString *(NSMutableAttributedString *mutableAttributedString) {
                                     
    //途中で色を変更する
    NSUInteger toIdx;
    NSRange colorChangeRange = [[mutableAttributedString string] rangeOfString:username options:NSCaseInsensitiveSearch range:NSMakeRange(0, toIdx)];
                                     
    [mutableAttributedString addAttribute:(NSString *)kCTForegroundColorAttributeName value:(id)[fontColor CGColor] range:colorChangeRange];
    return mutableAttributedString;
}];

tTTAttributedLabel.delegate = self;
                                
//リンクの設定
NSString moveToURL;
NSUInteger toIdx;
[tTTAttributedLabel addLinkToURL:[NSURL URLWithString:moveToURL] withRange:NSMakeRange(0,toIdx)];
こうすることによって、ある特定の位置をタッチした場合のリンク処理を追加することができて、実際にタッチした場合は、delegateメソッドの- (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)urlが呼ばれるので、そこで処理を実行すればいい。

ちなみに、リンク線をなくす場合は、
NSMutableDictionary *mutableLinkAttributes = [NSMutableDictionary dictionary];
[mutableLinkAttributes setValue:[NSNumber numberWithBool:NO] forKey:(NSString *)kCTUnderlineStyleAttributeName];
tTTAttributedLabel.linkAttributes = mutableLinkAttributes;
で実現することができる。リンクの色を変更したい場合は、
//リンクの色
NSMutableDictionary *mutableActiveLinkAttributes = [NSMutableDictionary dictionary];
 [mutableActiveLinkAttributes setValue:(id)[fontColor CGColor] forKey:(NSString *)kCTForegroundColorAttributeName];
tTTAttributedLabel.activeLinkAttributes = mutableActiveLinkAttributes;
で変更することができます。

無茶苦茶便利です。

2013/07/18

[iOS][Objective-C]TTTAttributedLabelの適用方法

iOS5対応のアプリを作る時に困るのは、NSStringやUILabelを使って文字列を出力する時に、途中で、色をかえたり、リンクを追加するのが非常にめんどいということ。

CoreTextを使えばできるのだが、めんどいのでオープンソースでカバーできないかなーっと思っていたら、
TTTAttributedLabel
という素敵なコードがあったので、適用方法を勉強することに。

基本的には、githubのソースを見ればいいのだが、下のような感じで使うことができる。

CGRect rect;
TTTAttributedLabel *tTTAttributedLabel = [[TTTAttributedLabel alloc] initWithFrame:rect];
tTTAttributedLabel.backgroundColor = [UIColor clearColor];
tTTAttributedLabel.font = [UIFont systemFontOfSize:10];
tTTAttributedLabel.lineBreakMode = UILineBreakModeTailTruncation;
tTTAttributedLabel.textColor = [UIColor redColor];
tTTAttributedLabel.textAlignment = UITextAlignmentLeft;
tTTAttributedLabel.numberOfLines = 0;

UIColor *fontColor;

出力したい文字列
NSString *newDispComment;  
 [tTTAttributedLabel setText:newDispComment afterInheritingLabelAttributesAndConfiguringWithBlock:^ NSMutableAttributedString *(NSMutableAttributedString *mutableAttributedString) {
                                    
    //途中で色を変更する
    NSUInteger toIdx;
    NSRange colorChangeRange = [[mutableAttributedString string] rangeOfString:username options:NSCaseInsensitiveSearch range:NSMakeRange(0, toIdx)];
                                    
    [mutableAttributedString addAttribute:(NSString *)kCTForegroundColorAttributeName value:(id)[fontColor CGColor] range:colorChangeRange];
    return mutableAttributedString;
}]; 
こんな風に実装すれば、文字列の途中で色を変更することは可能です。

ARCでコンパイルできるので、当然、iOS5以降にも対応しています。

めちゃ便利。

2013/07/17

[Twitter][iOS][Objective-C]user_idとusernameを取得する

前回、認証の方法をさらっと書きましたが、今回は、usernameとidの取得方法について。

#import <Accounts/Accounts.h>
ACAccountStore *aCAccountStore = [[ACAccountStore alloc] init];
ACAccountType *aCAccountType = [aCAccountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
[aCAccountStore requestAccessToAccountsWithType:aCAccountType withCompletionHandler:^(BOOL granted, NSError *error) {
    if (granted) {
        NSArray *account = [aCAccountStore accountsWithAccountType:aCAccountType];
        NSUInteger count = [account count];
        for (NSUInteger i=0; i<count; i++) {
            ACAccount *acAccount = [account objectAtIndex:i];
            NSLog(@"twitter id is %@",[acAccount valueForKeyPath:@"properties.user_id"]);
            NSLog(@"username is %@",acAccount.username);             
        }
        
    }else{
        NSLog(@"not grandted");
    }

}];
usernameはACAccountに記述されていたから問題はなかったのですが、user_idは迷いました。

いくつか検索してみて、ACAccount Twitterのuser_idを取得する

NSString *idStr = [self valueForKeyPath:@"properties.user_id"];
という記述が書いてあったので、NSObjectクラスに標準装備されているvalueForKeyPathメソッドを使って取得することができましたー。

一度、こうしてまとめておけば次回以降は困ることがないので、いいですね。

2013/07/16

[本]お金が教えてくれること ~マイクロ起業で自由に生きる

読了
お金が教えてくれること  ~マイクロ起業で自由に生きる~
お金が教えてくれること ~マイクロ起業で自由に生きる~
家入 一真

はじめにーお金の話しをする前に。

01 ~お金との付き合い方~ お金に「思考」を奪われない

絶対知っておくべき 「いくら稼ぐか」


妄想貧乏に陥らない
お金に「思考」を奪われない
「あの時、お金があったら」
十数億円あっても、お金はなくなる
お金に代わる価値を持つ
評価経済のなかのお金の価値
消費時代の終焉
02 ~お金の使い方~ キャリアの借金


今しかない時間を買う
カッコいいお金の使い方
不満や愚痴にお金を費やさない
投資の醍醐味は人と場所
貯金はないけど「おもしろい人間」
03 ~給料に依存しない働き方~ 最大のリスクは「何もしない」こと

雇われるリスクを考えてみる
給料0円でも働きたくなる仕事
会社じゃない組織の可能性
「何もしない」はもはやリスクでしかない
仕事をおもしろくするのがクリエイティブ
仕事は会社のなかに落ちているわけじゃない
04 ~お金の稼ぎ方~ 小さく始めて小さく稼ぐマイクロ起業

とりあえずやってみる
「何もない」は「何でもできる」ってこと
肩書きで、人は変わることもある
「やらない理由」を考えない
「新しいアイデア」より「見せ方」を考える
1を100にしてくれるフォロワーを作る
05 ~ビジネスの描き方~ ストーリーを売る


ビジネスはもっと自由でアートでいい
わがままな経営者になる
「儲かりそうだから」ではビジネスにならない
ものを売るのではなく、ストーリーを買わせる
お金だけじゃなく、ファンも集めよう
100円マックに文句言うな
06 ~人生の転がり方~ 失敗しても、最悪死なない

失敗したら「成長できる」
気の弱いリーダーですみません
プライドは役に立たない
借金なんて怖くない
経営者であっても、会社にしがみつかない
執着心は捨てる
ゼロになったら、また1にすればいい
「個の時代」がやって来た
後書きーそれでもお金は必要。

via:目次
ペパボの創業者ということで、興味があり手に取ってみることに。

書いてあることはしごくまっとうなこと。

著者も言っているように、経営者に対する固定観念みたいなものってあるけど、会社を一種の表現方法と捉えれば、別に人それぞれでいいということ。

こだわらず柔軟に生きていきたいですね。

2013/07/15

[Twitter][iOS][Objective-C]Twitterの認証を行う

iOS5からtwitterの認証がデフォルトで装備されましたが、一体どうやって使うの?

色々調べた結果、めちゃくちゃ簡単に使えることが判明。

#import <Accounts/Accounts.h>
ACAccountStore *aCAccountStore = [[ACAccountStore alloc] init];
ACAccountType *aCAccountType = [aCAccountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
[aCAccountStore requestAccessToAccountsWithType:aCAccountType withCompletionHandler:^(BOOL granted, NSError *error) {
    if (granted) {
        NSLog(@"grandted");        
    }else{
        NSLog(@"not grandted");
    }
}];
AccountsFrameworkをインポートして上のようにコードすればおk

gratedがYESの場合、twitterの情報を取得することができるようになります。
 photo twitter_login_zps83a4a823.jpg
上のようなアラートがでて、「OK」を押せば取得することができるようになります。

むちゃくちゃ便利。

2013/07/14

[BootStrap]CDNサポート

昨日、BootStrap3のリリース書きましたが、Getting startedを読んでいたら、どうやらCDNがサポートされている模様。

<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/css/bootstrap.min.css">

<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/js/bootstrap.min.js"></script>
前からサポートしてほしいなーっと思っていたのだが、他にも声があったのだろうか?

これで毎回、毎回、ダウンロードせずに使うことができそうだ。