タグ

ブックマーク / taichino.com (17)

  • Xcodeプロジェクト内の使われてないリソースを探す – taichino.com

    iOS7以降、主なアプリはほぼフラットなスタイルに移行していますね。iHeartRadioでもフラット+iOS7対応は一旦完了しているものの、まだ試行錯誤の途中でバージョンアップ毎に結構デザインを変更しています。 そこで問題になるのがリソースの管理です。プロジェクトの体制にもよると思いますが、一般に新しいファイルの追加は簡単でも、古いファイルを削除するのは当に使われてないか確認するコストが高くて面倒です。そうして気がついたらプロジェクトの中が古い画像ファイルだらけになっていて、これは良くないなというので使われてない(かもしれない)画像ファイルを列挙するスクリプトを書きました。 RubyにはXcodeprojというXcodeのプロジェクトファイルを色々弄れる便利なRubyGemがあります。Cocoa Podsでも使われているモジュールで、最初はPythonにポートして使おうと思っていたので

  • Hello GNU Assembler World – taichino.com

  • Hello PySide World – taichino.com

    面倒で放置してますが、2年くらい前からPySideを覚えたいなーと思っていました。昔少し触ってたんですけど綺麗に忘れていて、やっぱり記事書きながら覚えていこうと思います。 まずインストール。来はPython3.x環境で使った方が良いらしいので、pipで入れようとしたのですが色々エラーになって解決出来ませんでした。まだ気じゃないのでbrewで良しとしています。/usr/local/lib/python2.7/site-packagesにインストールされるのでパスを通しておきましょう。 $ brew install pyside 何も覚えてなかったので、チュートリアルの最初の方を見ながら、画像を読み込んで表示するだけのコードを書いてみました。 #!/usr/bin/env python # -*- coding: utf-8 -*- import os from PySide import

  • Pythonの隠された機能9つ – taichino.com

    StackOverflowでHidden features of Pythonという面白い質問がありました。原文の方では何十も項目があるのですが、独断と偏見で9個に絞って紹介します。 1. chaining comparision operator 不等式を連結出来るなんて初めて知りました。スーパーかっこいいです。今まで1 < x and x < 10とか書き続けてました。 x = 5 if 1 < x < 10: print "yay" if x < 10 < x*10 < 100: print "yaay!" if 5 == x > 4: print "yaaay!!" 他の言語でも出来んの?と思ってちょっと調べてみましたが、どうもPythonだけっぽいです。やっぱりPython最高ですね! 2013.03.05 追記 twitterで突っ込まれました。Pythonだけって言うのは嘘で

  • いまさらPython 3 – taichino.com

    とりあえず最新Stableの3.3をインストールしないと試せないですね。brewだとformulaがまだ無くて、この辺からも普及してなさが伺えますが、仕方が無くMac用のインストーラを使いました。 またPython3.3からはvenvというvirtualenvと似た機能がビルトインされている様なので、そちらを使って環境を作ります。体はvenvというモジュールですが、コマンドライン用にpyvenvというコマンドが用意されています。venvはデフォルトでdistributeもpipも入らないので、自前で入れる必要があって若干面倒です。まぁ公式モジュールなので仕方ないかもしれません。あとiPythonが3に対応してたので安心しました。 $ which pyvenv-3.3 /usr/local/bin/pyvenv-3.3 $ pyvenv-3.3 py3x_test $ tree . ├──

  • Djangoで国際化のメモ – taichino.com

    先日Bargain Net英語対応を行いました。何度か英語の対応はやってるはずなんですけど、毎回覚えてなくて調べ直すのでメモ書きです。 settings.py まずsettings.pyの設定です。USE_I18N等の設定に加えて、LOCALE_PATHSに翻訳ファイルのサーチパスを通しておく必要があります。毎回こんな設定あったっけと思います。 USE_I18N = True USE_L10N = True MIDDLEWARE_CLASSES = ( ... 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', ... ) LOCALE_PATHS = ['%s/../myapp/locale/' % (PROJECT_ROOT,)] 翻訳

  • CentOSのPostgreSQLを9.2にアップグレードする – taichino.com

    CentOS6系だとyumでPostgreSQLをインストールすると8.4が入ります。僕もこれで運用していました。ところが全文検索がデフォでサポートされているのは9.1以降なのでアップデートしたいという話です。 前もチラッと書きましたが、マルチバイト文字に対応するには若干コードを修正する必要があるので、自前でビルドという事になります。RPMを適当に探してきてというわけにはいきません。 またyum管理下のPostgreSQLを自前ビルドのバージョンで更新ということで、明らかに面倒そうなのでほったらかしていたのですが、先ほど重い腰を上げて作業したのでログを残しておきます。 基的にはオフィシャルのドキュメントのアップグレードの項目に沿った作業を行いました。とりあえず一読をお勧めします。 さて今回行いたい事は下記です。 運用中のPostgreSQLの8.4から9.2へのアップグレード 運用中のP

  • [シェルスクリプト] 未初期化と空文字列で初期化の違い – taichino.com

    自前で動かすデーモンとかが増えてきたので、CentOSの/etc/init.d/functionsをまともに理解しとこうと思って読んでいると、以下のようなコードが見つかりました。 status() { local base pid lock_file= pid_file= # Test syntax. if [ "$#" = 0 ] ; then echo $"Usage: status [-p pidfile] {program}" return 1 fi ... 4つの変数が宣言されていて、そのうちbaseとpidは未初期化、残りの2つは空文字列で初期化されています。まさか/etc/init.d/functionsのような枯れきっているコードにミスなんかは残ってないと思ったので調べてみました。 とりあえず以下のようなコードを走らせてみました。 func() { local a b= e

  • プログラミング言語総選挙作った – taichino.com

  • PythonでGoogleカレンダーのAPIを叩く – taichino.com

    ちょっとカレンダーを使った実験をしたくてGoogle CalendarのAPIを叩いてみたのですが、何度かバージョンが変わっている事もあって、少し手こずったのでメモしておきます。 まずAPIを叩く前に、https://code.google.com/apis/console/ にアクセスして使用するサービスを有効にしておきます。 現時点の最新APIバージョンは3なのですが、このバージョンのAPIを叩くにはgoogle-api-python-clientモジュールを使います。gdataという如何にもなモジュールもあるのですが、これは古いバージョンのAPI用なので注意しましょう。 $ pip install google-api-python-client OAuthの認証周りが何となく複雑で面倒な気がしますが、コードを見ると別に特に難しくはないですね。基的な処理の流れは以下の通りです。OA

  • LionにプリインストールされてるApacheが動かない時の話 – taichino.com

    OSXにはデフォルトでapacheがインストールされています。ところが普通にapachectl startとすると起動はするものの、localhostにアクセスするとエラーになります。エラーログ(/var/log/apache2/error_log)を見るとFile does not exist: /usr/htdocsと出ているのですが、/usr/htdocsに見覚えはありません。実際に/etc/apache2/httpd.confをみても下記のように設定されています。 DocumentRoot "/Library/WebServer/Documents" ちなみにシステム環境設定のWeb共有をONにすると、正常に動くんですが流石にダサいのでそんな操作はやりたくありませんよね。 なんでWeb共有やったら動くねんということで、ひとまずWeb共有をONにして起動オプションを確認してみます。

  • CentOSでnginx + uwsgi + Djangoを試してみた – taichino.com

    最近GAE上で書いていたサイトが、ちょっとGAEには向かないという事がわかりまして、仕方が無いので、普通のサーバ上で書き直す事にしました。巷ではapache + mod_pythonはもう古いらしく、じゃあ何が良いのと思って色々調べていると、このベンチマークエントリが見つかりまして、その中で良さそうだったuwsgiを使う事にしました。HTTPサーバは上記エントリで使われてたnginxです。ずっと気になっていたのでこの機会に触ってみました。なお環境はCentOS 5.5です。 思ったよりも長い記事になってしまいました。以下の手順を踏みます。 Pythonのインストール virtualenvやDjangoのインストールとテストプロジェクト作成 uwsgiのインストール nginxのインストール・設定・動作確認 Djangoのadminアプリを動かす(おまけ) 1. Pythonのインストール

  • ExcelのVBA使い方メモ – taichino.com

    友人ExcelでごにょごにょするVBA書いてくれと頼まれたのですが、数年ぶりですっかり忘れていましたので、メモ書きです。 MSDNを見ると割とたくさんのクラスがある訳ですが、Excel+VBAでやりたいのは、行ごとにまとまったデータを一度オブジェクトに吸い上げて、何らかの処理を施した後、表に出力するという事が多いので何となく使う分には、必要な語彙数は大して多くなさそうです。そこでとりあえず覚えておけば良さそうな表現を列挙してみました。 Explicit宣言 perlのuse strict varsと同じノリでコードの先頭に書いておけば、変数の宣言忘れを警告してくれます。 Option Explicit Debug.Print お決まりのHello WorldにはDebug.Printを使います。コンマ区切りで複数項目をイミーディエイトウィンドウに出力します。 Debug.Print "H

    atm_09_td
    atm_09_td 2010/11/23
    忘れた頃に使わなくてはならなくなるので。
  • RPMの使い方メモ – taichino.com

    普段はyumを使うので直接はあまり意識しないRPMなんですが、複数のHostを使用するようになって、ビルドが面倒なプログラムを自分でRPMにしておきたいという欲求が出てきましたので、RPM周辺についてメモしておきます。ド素人なので色々間違っているかもしれません。 まずrpmコマンドの基的な操作は以下のような感じでしょうか。特に自分でrpmファイルを作っている最中はrpm -qlpでパッケージの中身の確認を頻繁に使いました。 $ rpm -ihv hoge.rpm # install $ rpm -uhv hoge_new.rpm # update $ rpm -e hoge # uninstall $ rpm -qlp some.rpm # show file list $ rpm -qf /path/to/file # ファイルが所属するパッケージ取得 $ rpm -qa # インスト

    atm_09_td
    atm_09_td 2010/09/25
    RPMについてはあまり調べたことがないのでメモ。
  • Pythonでいろんなバイナリファイルを覗いてみる – taichino.com

    プログラマをしていると、ちょくちょくバイナリデータから情報を読みたくなりますね。そんな時は、ブツブツ言いながらバイナリエディタと睨めっこすることになるわけですが、これが結構大変なので、何とか楽にならないかなぁと思って探していると、hachoirというナイスなpythonモジュールが見つかりました。このモジュールを使うとバイナリデータをパースして様々なデータを取得できます。かなり多くのデータフォーマットに対応している(現時点で70種類)のが素晴らしいです。 hachoirはいくつかのモジュールに分かれているのですが、大抵は以下をインストールすれば良いと思います。 $ easy_install hachoir_parser $ easy_install hachoir_metadata このモジュールにはhachoir-metadataというコマンドラインツールが含まれていて、コードを書かなく

  • Hello Autotools World – taichino.com

    名前とぼんやりとした役割や機能だけは知ってるけど、腰が引けて使えないという状態だったautomakeやautoconfですが、覚える必要が出てきたので概要だけでも把握しようという事で調べてみました。出てくるツールや中間ファイルの種類が多いので、まずは図を書いて整理してみました。 パッと見は複雑で見て見ぬ振りをしたくなる図ですが、よく見ると自分で作成・編集する必要があるのは、オレンジの項目だけなので、ソースコードを除くとconfigure.acとMakefile.amの2つだけです。これなら何とか覚え始めようという気になりますね。 実際に図の手順を実行しながら追ってみますが、その前に手元のAutotoolsのバージョンを確認します。バージョンが違うと上手く動かないかもしれません。 $ autoconf --version autoconf (GNU Autoconf) 2.61 # 残りの出

    atm_09_td
    atm_09_td 2010/05/14
    automake autoconf
  • オンラインCookbookを集めてみた – taichino.com

    最近Python クックブックを良く眺めているのですが、Cookbookをまじめに活用しているのは実は初めてです。以前はプログラムは動けば良いと思っていたのですが、pythonを使い始めてから、他の言語を使う時も「どう書くのが正解なのか」を結構意識するようになりました。そうするとCookbookが非常に役に立つわけで、オンラインで使えるCookbook・逆引きサンプル集的なサイトを集めてみました。 python周辺

    atm_09_td
    atm_09_td 2010/02/01
    後で役立つかもしれん。
  • 1