Hatena::ブログ(Diary)

知のレバレッジを最大化せよ このページをアンテナに追加 RSSフィード Twitter

2013-02-15

App Store のダウンロード数を継続的に CLI から取得する

20:34 |  App Store のダウンロード数を継続的に CLI から取得するを含むブックマーク  App Store のダウンロード数を継続的に CLI から取得するのブックマークコメント

  • App Storeダウンロード集計は iTunes connect の GUI だと使いづらいので、Apple 公式な CLI ツールが便利
    • 以前はクロールするなど大変だった
    • 集計などもいまいち感がすごい。柔軟な集計が大変・・。
  • なお 14 日経過すると、データは取得できなくなるので適宜 cron で回すなどする必要がある
  • 2 日程度前のデータしか取得できない

簡単なやり方

0. JDK などがない場合は入れておく

1. 下記から java class をダウンロード

http://apple.com/itunesnews/docs/Autoingestion.class.zip

2. VENDOR ID を iTunes connect :: Sales and Trends セクションから調べておく

f:id:mabots:20130215202556p:image

3.下記実行

iTunes connect の id/pass を指定します

java Autoingestion YOUR@EMAIL_ADDRESS PASSWORD VENDOR_ID Sales Daily Summary 20130213

どんな結果が得られる?

こんな感じの要素がとれます。GUI よりも情報量が全然違います。

Provider	Provider Country	SKU	Developer	Title	Version	Product Type Identifier	
Units	Developer Proceeds	Begin Date	End Date	Customer Currency	Country Code
Currency of Proceeds	Apple Identifier	Customer Price	Promo Code
Parent Identifier	Subscription	Period

詳しくは

http://www.apple.com/itunesnews/docs/AppStoreReportingInstructions.pdf

トラックバック - http://d.hatena.ne.jp/mabots/20130215

2012-11-11

なぜ facebook をパソコンで開くのはなぜ辛いのか

17:51 | なぜ facebook をパソコンで開くのはなぜ辛いのかを含むブックマーク なぜ facebook をパソコンで開くのはなぜ辛いのかのブックマークコメント

PC で facebook を開くのはひどく億劫だ。私が facebook を起動するのはメッセージのやりとりをするくらいだが、それもほとんどスマホでやってしまう。PC で開く理由としては、おそらくニューズフィードの縦覧性が高いからだと思うが、私はすなくとも縦覧することに対してそこまで高いモチベーションがない。いや、むしろ疲れる。疲れるのであればその原因は何なのか考察してみる。

まずそもそも発言するのが疲れる

  • あなたは facebook に何か書き込むことを要求される。書き込まなければあなたの承認要求は満たされないからだ
  • しかし、書き込むという行為はそもそも疲れるのである
    • 会議で発言する時のエネルギー消耗率を考えてみれば良い
      • もし、会議で発言してスルーされたら、ひどく疲れてしまうだろう
    • あなたが、物書き的なマインドを持っていて書き込むことや自己顕示欲を満たすことにある種の快感を抱くならば、きっと満足できるはずだ。ともおもったが実際にはそうではないような気もする
      • 現実的には、建前的な「いいね」が知り合いのような人たちから押下されるだけだ
  • そもそもテーマを与えられてもいないのに書き込むということは通常難しい
    • 言い換えれば、よほど内発的にテーマを生み出せる気力がなければ難しいということだ
  • 私の承認要求を満たすにはあまりにも疲れる行為である

ニューズフィードに流れている情報は著しくリア充的なコンテンツで私を疲弊させる

  • そう、ニューズフィードに他人が流しているのは、前述の書き込みの障壁を乗り越えた「会心の一撃」的な情報なのである
  • 様々な人の「会心の一撃」的リア充コンテンツが積み重なることによる、自分だけイケていないという疎外感はなんとも形容しがたい
    • 学童保育でじっと親の帰宅を待っている子供が、クラスの他の生徒が放課後の様々なアクティビティについて自慢するのを聞かされている気持ちになる
  • 極めてリア充コンテンツを大量に持つものだけが生き残る。そんなデスマッチがニューズフィードで行われるのだ
    • ちなみにこの現象及び関係性の構築を私は「ドヤグラフ」と呼んでいる

社会性が生まれてこれがまた面倒である

  • どうやら上司のフィードに対して自動的に「いいね」を押下するシステムが存在するらしい
    • 興味のある方は http://shachikunomikata.com/
    • つまり社会性が生まれてしまっている
      • 昔は「イエスマン」という単語があったが、いまの時代は「いいねマン」といった趣きすらある
  • そしていいねを押下しているのは結構特定のクラスタに偏っていたりする
    • 異なったクラスタの人はいいねを押下しづらいし、興味が無いものが表示されたりもする
      • 人間はそもそも顔を使い分けする生き物なのであるならば、他方のクラスタからするとそれはノイズ
  • もちろん仕事の話をやりとりするのも危険だったりする
    • 危険の温度感は人によって異なっていることも物事を複雑にしてしまう
      • 常識というのは、きっと有効なレンジやクラスタが存在しているから
    • では何を書けばいいと言うんだ

まとめ

  • 下記の場合は疲れてしまうだろう
    • 人間性
      • 几帳面・まじめ
      • 社会性や常識を大切にする
      • スルーするのが苦手
    • コネクション
      • 複数のクラスタをまたがったリアルグラフを持っている
      • 複数の顔を使い分けしたい
    • 自己顕示と承認要求のバランス
      • 自己顕示欲は抑制されているが、承認要求がそれと比較して高い場合

イトウイトウ 2012/11/13 19:57 日本人じゃないのか?
冒頭でなぜが重複してたり
「まずそもそも」とか文章がやけにオカシイ

トラックバック - http://d.hatena.ne.jp/mabots/20121111

2012-02-14

i18n g11n l10n m17n とは何なのかまとめてみた

22:15 | i18n g11n l10n m17n とは何なのかまとめてみたを含むブックマーク i18n g11n l10n m17n とは何なのかまとめてみたのブックマークコメント

  • グローバリゼーションな実装において登場する i18n や m17n といった記号の意味について、ざっくりまとめてみた。
    • いろいろな作法や定義があり、混乱しがちだが、debian観点に則りいったん筋を通してみる

そもそも

とりあえず表にしてみる

省略記号正規名称単純な訳空気を読むと
i18n internationalization 国際化 地域化のために実装着手すること。Unicode, resource file management, Regional Date time, currency formats などである。GETTEXT 等はここに分類される
l10n localization 地域化 特定の国に対して、デザイン、インタフェース等も地域に応じて最適化すること。例えば住所の選択等を想像してみるとよい。MULE や各種の言語パッチはここに分類される
m17n multilingalization 多言語化 複数言語の処理が同時に実現できている。つまり、中国語と日本語と韓国語スウェーデン語で書かれたドキュメントを化けずに同時に処理・表示できる。
g11n globalization グローバル化 MicrosoftSun Microsystems によって i18n + l10n 両方が達成できた状態の別名定義。これは私の推測だが m17n のエイリアスと考えてよい

おのおのの関係性は?

  • まず i18n で技術基盤をそろえる。そして、地域ごとの最適化l10n で進める
    • l10nアプリケーション層でケアされる
    • 気をつけたいのは複数の国や言語向けに l10n をしたからといって必ずしも m17n を達成した訳ではない
  • 同時に複数の言語等を取り扱える状態こそが m17n が達成できたという状態
    • この定義は debian のやりとりから
    • もちろん m17n はアプリケーション層でケアされる
    • 複数の言語を設定等でスイッチして、l10n が達成されていても、韓国語スウェーデン語を同時に含むファイルを開くと壊れる、といった場合は、m17n は達成されたといえないだろう
図っぽくしてみる
  • 繰り返しにはなるが、下記に観点ごとにまとめた

1. 技術的な偉大さの観点

特定の言語等に l10n 対応 < 複数言語等について l10n 対応 < M17n に対応

2. 使役観点

(l10n or m17n) -uses-> i18n

リファレンス

2012-02-03

FacebookのHacker Wayを日本語で要約してみる

10:52 |  FacebookのHacker Wayを日本語で要約してみるを含むブックマーク  FacebookのHacker Wayを日本語で要約してみるのブックマークコメント


Hacker Way 要約

  • 背景と前提
    • Hacker Wayというユニークな文化とマネジメントアプローチをFacebookでは育ててきた
    • 他の優れた人から学ぶことができるというのがポイント
    • これは主にエンジニアプロセスでの話だが、これを昇華させて会社を運営する中核としている
  • Hackerという語彙について
    • いわゆるコンピューターに侵入するようなネガティブな意味合いではない
    • hackingとは、凄い速さでものをつくる、あるいは、何が良いのかテストしていくことを意味している
    • hackerの多くは、世の中に良いインパクトを与えることに理想をもった人たちであることを実際にあって感じている
  • Hacker Wayという手段
    • それは継続的な改善をイテレーションで繰り返していくこと
    • Hackerは常になにかより優れた方法があると考えているし、完成するということは考えていない
    • そして「現状でいい」とか「そんなの無理だ」という人に対してシンプルに対抗していく
  • Facebookはどうやってベストなサービスを長期にわたって提供するか
    • 小さな期間のイテレーションとリリースを繰り返して学んでいく
    • Facebookでは、数千のバージョンを試せるテストフレームワークを用意
    • 壁には、“Done is better than perfect”という標語が描かれいて常に意識して仕事をすすめている
      • 完璧を追従するより、実行を優先しよう、ということである
  • Hackingは手を動かしてコードを書くのが原則
    • アイデアが可能かどうか議論する変わりに、プロトタイプを作ってでどうやって動くのか検証するために実際に作ってしまう
    • “Code wins arguments.”(コードは議論に勝る) というマントラFacebookオフィスでは沢山見かけるだろう
  • Hacker文化
    • 極めてオープンで実力主義
    • hackerは最も優れた実装とアイデアが常に生き残ると信じている
      • アイデアのためロビー活動に精を出したり多くの人を管理するような人とは異なった人種である
  • どうやって継続するのか?
    • 新しいエンジニアはたとえ彼が前職でコードを書いていなかったとしてもブートキャンプに参加してもらっている
      • ブートキャンプでは、コードベースやツール、開発アプローチを学ぶ
      • IT業界にはコードを書かないで管理だけやっているような奴がいるが、私たちが求めるハンズオンな人材というのは、ブートキャンプに参加したがるし、実際うまくやってのける


原文

http://www.wired.com/epicenter/2012/02/zuck-letter/

The Hacker Way

As part of building a strong company, we work hard at making Facebook the best place for great people to have a big impact on the world and learn from other great people. We have cultivated a unique culture and management approach that we call the Hacker Way.

The word “hacker” has an unfairly negative connotation from being portrayed in the media as people who break into computers. In reality, hacking just means building something quickly or testing the boundaries of what can be done. Like most things, it can be used for good or bad, but the vast majority of hackers I’ve met tend to be idealistic people who want to have a positive impact on the world.

The Hacker Way is an approach to building that involves continuous improvement and iteration. Hackers believe that something can always be better, and that nothing is ever complete. They just have to go fix it ? often in the face of people who say it’s impossible or are content with the status quo.

Hackers try to build the best services over the long term by quickly releasing and learning from smaller iterations rather than trying to get everything right all at once. To support this, we have built a testing framework that at any given time can try out thousands of versions of Facebook. We have the words “Done is better than perfect” painted on our walls to remind ourselves to always keep shipping.

Hacking is also an inherently hands-on and active discipline. Instead of debating for days whether a new idea is possible or what the best way to build something is, hackers would rather just prototype something and see what works. There’s a hacker mantra that you’ll hear a lot around Facebook offices: “Code wins arguments.”

Hacker culture is also extremely open and meritocratic. Hackers believe that the best idea and implementation should always win ? not the person who is best at lobbying for an idea or the person who manages the most people.

To encourage this approach, every few months we have a hackathon, where everyone builds prototypes for new ideas they have. At the end, the whole team gets together and looks at everything that has been built. Many of our most successful products came out of hackathons, including Timeline, chat, video, our mobile development framework and some of our most important infrastructure like the HipHop compiler.

To make sure all our engineers share this approach, we require all new engineers / even managers whose primary job will not be to write code / to go through a program called Bootcamp where they learn our codebase, our tools and our approach. There are a lot of folks in the industry who manage engineers and don’t want to code themselves, but the type of hands-on people we’re looking for are willing and able to go through Bootcamp.

The examples above all relate to engineering, but we have distilled these principles into five core values for how we run Facebook:

2011-12-02

mac portsからmysqlをいれると起動時にエラーとなる

| 10:35 | mac portsからmysqlをいれると起動時にエラーとなるを含むブックマーク mac portsからmysqlをいれると起動時にエラーとなるのブックマークコメント

  • macmac portからmysql5-server入れたが起動しなかった・・
  • redhatlinuxのといろいろ違うので少し戸惑いつつ復帰できたのでメモ

事象

  • macports で mysql5-serverをintallしても起動時にエラーとなる
    • port info: mysql5-server @5.1.56 (databases)
    • sw_vers: ProductVersion: 10.6.8

インストールと起動

$ sudo port install mysql5 mysql5-server
$ sudo mysql_install_db5
$ sudo /opt/local/share/mysql5/mysql/mysql.server start

がエラー

Starting MySQL
...... ERROR! Manager of pid-file quit without updating file.

調べてみる

エラーログみる

$ less /opt/local/var/db/mysql5/*.err

すると

Can’t find file: ‘./mysql/host.frm

原因と対応

/opt/local/var/db/mysql5/以下の所有者がrootになっていた

sudo chown -R _mysql /opt/local/var/db/mysql5/
sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5.plist
sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
トラックバック - http://d.hatena.ne.jp/mabots/20111202

2011-11-18

AppStoreのスクリーンショット更新時のハマリポイント

12:47 | AppStoreのスクリーンショット更新時のハマリポイントを含むブックマーク AppStoreのスクリーンショット更新時のハマリポイントのブックマークコメント

異なった解像度で入稿してる?

事象
  • retina / 非retinaの解像度でiTunes Connectで入稿できるようになってます。
  • が、これら解像度を混在した場合、いくつかのスクリーンショットが表示されない時があります。
    • たとえば非retinaの画像をiPhone 4等retina解像度で端末で見ると見えなくなる
対策
  • retina 或いは 非retinaの解像度に統一して入稿する

そもそも反映には時間がかかる

事象
対策
  • 多分下記のケースに分かれるので各々対応する
    • 1時間停止で復旧
    • 6時間くらいかかる
    • まったく復旧しない→お問い合わせコース

多言語対応の時はlocale毎にスクリーンショットを投稿する必要がある?

事象
対策

PNGよりもJPGのほうが確実

事象
対策
  • PNG画像をやめてJPG画像にしたところ改善するケースがあった。
  • 他のはまりポイントと複合要因で発生しているかもしれないので、1つずつ確認していくこと

参考

トラックバック - http://d.hatena.ne.jp/mabots/20111118

2011-07-27

APKファイル設置パスいろいろ (Market/SD Card/Preinstalled)

| 17:59 | APKファイル設置パスいろいろ (Market/SD Card/Preinstalled)を含むブックマーク APKファイル設置パスいろいろ (Market/SD Card/Preinstalled)のブックマークコメント

Android MarketからダウンロードしたAPKファイルの置き場

  • 設置先は/data/app/以下
    • /data以下はroot permissionが必要 (rootないけどls的なことがしたい場合は後述)
    • 後述するが直接apkのファイルPATHを直接指定すればrootは不要。
adb pull /data/app/XXXX.apk
どのパッケージが入っているか確認する
  • package managerからfile pathを取得できる
adb shell pm list packages -f | grep パッケージ名
上記package managerから取得したpathを直接指定する
adb pull /data/app/パッケージ名-1.apk等

SDカードに移動した場合

  • Android 2.2からSDカードアプリを移動できるようになった
  • Apkの実態形式ではなく機種ごとに固有のキーで暗号化されたapkファイルが設置される。
    • /mnt/sdcard以下はrootでなくても操作できるため
    • アプリ固有なプライベート("the dex files, private data directories, and native shared libraries")なデータについては引き続き本体に残る
  • 設置先は/mnt/asec/以下にパッケージ名のpathが作られ、そこ以下にdex等がばらされた上で暗号化されたapkとして保管される

プリインストールされているアプリ

トラックバック - http://d.hatena.ne.jp/mabots/20110727

2011-05-31

WebViewやアプリケーションの機種判定で利用する機種名の取得

| 16:27 | WebViewやアプリケーションの機種判定で利用する機種名の取得を含むブックマーク WebViewやアプリケーションの機種判定で利用する機種名の取得のブックマークコメント

  • いくつかのAndroid端末では、標準ブラウザアプリ内WebViewの機種ごとの端末名の戻り値が違うようなので、WebViewの場合の機種名の取得方法を調べてみた。

取得

  • ここで取得した機種名がWeb ViewからのUser Agentとして送出されているようである
    • (書き換えるにはadb pullしてpushする)
  • 事前条件
    • Android SDKがセットアップされていてadbのPATHを通していること
adb pull /system/build.prop
less build.prop | grep ro.product.model
ro.product.model=機種名

関連資料

トラックバック - http://d.hatena.ne.jp/mabots/20110531

2011-04-12

Mac OS X 10.6でのターミナルの文字化け対応

| 21:27 | Mac OS X 10.6でのターミナルの文字化け対応を含むブックマーク Mac OS X 10.6でのターミナルの文字化け対応のブックマークコメント

vi $HOME/.bash_profile
//以下追記。ページャを介しても日本語OKになる。
export LANG=ja_JP.UTF-8
export LESSCHARSET=utf-8
トラックバック - http://d.hatena.ne.jp/mabots/20110412

2011-04-11

Mac OS Xでのrootユーザーになるには

| 22:24 | Mac OS Xでのrootユーザーになるにはを含むブックマーク Mac OS Xでのrootユーザーになるにはのブックマークコメント

watermintwatermint 2011/04/28 15:43 sudo su -
でなれますよ

トラックバック - http://d.hatena.ne.jp/mabots/20110411