タグ

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

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

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

  • [アメリカ日記14] 僕が英語話せないのは日本の教育のせい – taichino.com

    30才目前でこんな事をいうのはアレなんですけど、もう愚痴らずにはいれないです。 iHeartRadioで働き始めて1ヶ月が経ちました。技術的なスキルの観点では通用してるので、プログラマ的な仕事はこなせてますが、英語が全然通用してないです。これで良くチームに受け入れてもらってるなと思います。 ジョブインタビューではそこそこ大丈夫だったので、意外となんとかなるんじゃないのと思ってたのですが、対面でかつ1対1で、さらに相手がソコソコ気を使ってくれていて、やっとコミュニケーションが取れる状態なんだと痛感している毎日です。 まず雑談がキツいです。1日に数回くらいの頻度で、冗談とか仕事の愚痴(この部分のコードが汚い的な)を誰かが言い出して雑談タイムになります。周りの皆が盛り上がってる中で、会話に入れないので僕だけヘラヘラ笑いを浮かべながら仕事しています。この時の疎外感っていったらありません。仕事の愚痴

  • CentOSでfluentdとzabbixを使い始めたメモ – taichino.com

    このエントリを読んでからfluentdを導入したいと思ってたのですが、手元に頑張って監視するに値するサーバが無くてほったらかしてました。最近Bargain Netが監視しても良いかな位になったのでfluentdを導入してみました。先ほどのリンク中のスライドでzabbixにグラフを書かせてたので、真似してzabbixもついでに導入しています。 まずfluentdをインストールします。td-agentという名前でRPMパッケージが提供されていますので、そちらを利用します。 $ vi /etc/yum.repos.d/td.repo --- [treasuredata] name=TreasureData baseurl=http://packages.treasure-data.com/redhat/$basearch gpgcheck=0 $ sudo yum install td-agen

  • [Python] 正規表現でHTMLからテキストだけ抽出する – taichino.com

    あまり使う事はないのですが、たまにあれどうするんだっけと思うので記事にしておきます。 とりあえず何となく自分で書いてみたのが以下のようなコードなんですが、タグも取りきれてないし色々微妙で、正規表現面倒くさくて辛いです。 def strip_tag(url): resp = requests.get(url) texts = re.findall(r'<[^>]+?>(.+?)<\/[^>]+?>', resp.content) return " ".join(texts) それでなんか無いのと思って調べていると、DjangoとNLTKがHTMLからタグを取り除くユーティリティ関数をもっている事がわかりました。こちらがDjangoのユーティリティ関数。別に何でもないですが、あーテキスト取り出すんじゃなくてタグを消せば良いのかということですね。 # django/utils/html.py d

  • Pythonの連続forループが読めない – taichino.com

    入門自然言語処理を読んでいると以下のようなコードがやたらでてきますが全然読めるようにならないので覚え書きです。for文が連続して2回来てます。StackOverflowにも同様の質問があがっています。 all_tags = [tag for article in articles for tag in article.tags] これは記事の配列から記事につけられているタグの一覧を取得するコードで、forループを分解して書くと以下のようになります。 all_tags = [] for article in articles: for tag in article.tags: all_tags.append(tag) 何が気持ち悪いかというと左から順にforが処理されているのに、配列の要素になる最後の式が一番左にあることです。一番左のtagが最初のfor ~ inではなく、2つめのfor ~

  • wordpress上でのlatex使用について – taichino.com

  • SQLiteでCSVのインポート/エクスポートしたい件 – taichino.com

    データベースを使っていると、よくcsvファイルと相互に変換したくなります。MySQLやPostgreSQLでは標準でcsvのインポート/エクスポートができるので、SQLiteでも出来るだろうという事で調べてみました。 結論から言うとSQLiteで使えるCSVのインポート/エクスポートは制約が強くて使い辛いです。というのも、カラムの文字列内にセパレータ(標準ではカンマ)が含まれている場合は、クォートされていても、セパレータとして認識されてしまい、正常なcsvとして扱われないからです。(例えば”Hi, Nice to meet you.”は2カラムとして扱われます。) ちなみにSQLite標準のインポート/エクスポートは以下のように行います。 # 標準で以下のようにインポート/エクスポートできるが、セパレータが上手くパースされない .mode csv table_name # エクスポート S

  • BeautifulSoupでスクレイピングのまとめ – taichino.com

    何度かBeautifulSoupについては書いているのですが、未だに使い方が覚えられずにイライラします。仕方が無いのでまとめて置く事にしました。BeautifulSoupはHTMLから情報を取得するだけ無く、HTMLの編集もできますが、ここではスクレイピング用途のみに絞っています。 使用するのは以下のHTMLです。 このHTMLを使って色々と情報を取得したのが以下です。覚えるべきはfindAllだけです。注意する必要があるのは、textを指定した場合にタグオブジェクトが取れずに、テキストオブジェクトが取れるので、一旦parentで親のタグ取りましょうという事と、正規表現で条件指定する場合は、re.compileで正規表現オブジェクトを渡すという事位ですか。 #!/usr/bin/python # -*- coding: utf-8 -*- import re import urllib f

  • CentOS上のzshで日本語入力が文字化けする件 « taichino.com

    CentOSのzsh上で日語を入力すると文字化けしていて、svnコマンド等での入力に支障が生じていたのですが、これはzshのバージョン問題のようです。 CentOSでyumを使用してインストールしたバージョンは 4.2.6なのですが、この辺とかこの辺によると4.3.xでコマンドライン上での 日本語入力に対応したようです。 そういうわけで最新の4.3.9に入れ替えます。 # wget "http://downloads.sourceforge.net/zsh/zsh-4.3.9.tar.gz?modtime=1225708695&big_mirror=0" # tar zxvf zsh-4.3.9.tar.gz # cd zsh-4.3.9 # ./configure --enable-multibyte --enable-locale # make install # echo /usr

  • 美人時計も美男時計もAV時計も全部一括でダウンロードしたい件 – taichino.com

  • オンラインCookbookを集めてみた – taichino.com

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

  • pythonのORMを色々試してみた – taichino.com

    そろそろpythonでもSQLを直に書くのが面倒になってきたので、O/Rマッパーを探してみたところ、幾つか種類があったので有名どころを使ってみることにしました。今回試したのは以下の4つです。 SQLAlchemy SQLObject Elixir Storm まず用途についてですが、僕はテーブルスキーマはSQLで直に書きますので、ORMでDDLを扱うつもりはありません。DMLを簡単に扱いたいというのが一番の目標です。そこで予め作成して置いたテーブルに対してCRUD操作のし易さを比べてみました。比較に使用したのは以下のテーブルです。 CREATE TABLE `books` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) DEFAULT NULL, `price` int(11) DEFAULT NULL, `isbn

  • pythonでtwitterのStreaming APIを使ってみた – taichino.com

    twitterのように更新頻度が高いサービスのAPIはポーリングとあまり相性がよくありません。どうせtwitter API使うプログラム書くなら、リアルタイムなイベントベースっぽいAPIの方が色々と都合が良いので調べてみました。なんとなくXMPPに対応してる気がしてたんですが、実際はStreaming APIという独自のインターフェースが用意されていました。 Streaming API自体はただのHTTPリクエストで、リクエストのコネクションを張りっぱなしにして、都度データが流れてくる様な形になります。見るからに相性が良さそうなのでgeneratorで書いてみました。この例では幾つか種類があるStreaming APIの中からfilterを使っています。 #!/usr/bin/python # -*- coding: utf-8 -*- import sys import base64 i

  • 1