2010-01-01から1年間の記事一覧

iPhone3G、iPhone4、iPad用のアイコンをまとめて作成

自動でリサイズして名前を付けるシェルスクリプト書いた。 ImageMagic必須。icon.sh #!/bin/sh convert -resize 57x57 $1 Icon.png convert -resize 72x72 $1 Icon-72.png convert -resize 114x114 $1 Icon@2x.png convert -resize 29x29 $1 Icon-Small.png …

UINavigationControllerでナビゲーションバーの高さを取得する

CGFloat height = self.navigationController.navigationBar.frame.size.height;

動的にメソッド実行する

if ([delegate respondsToSelector:selector]) { [delegate performSelector:selector withObject:eventList]; }

速度を測る

NSDate *begin = [NSDate new]; /* なんかの処理。 */ NSLog(@"%f", [[NSDate new] timeIntervalSinceDate:begin]);

メインスレッドか判別する。

if ([[NSThread currentThread] isMainThread]) { NSLog(@"main"); } else { NSLog(@"not main"); }

GNU Screenの設定

256色にする。 ./configure --enable-colors256

現在のリファレンスカウントの参照数を表示する

NSLog(@"%d", [object retainCount]);

非同期にデータを受信したあとコールバック関数で処理する

NetConnection.h #import <Foundation/Foundation.h> @interface NetConnection : NSObject { NSURLConnection *connection; NSMutableData *data; id object; SEL selector; } - (void)initWithURL:(NSString *)url object:(id)object_ selector:(SEL)selector_; @end NetConnection.</foundation/foundation.h>…

ファイル名と行と関数名をいっしょにログ出力する。

#define LogPrintf(fmt, ...) NSLog(@"%s: %d: %s" fmt, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__) 最近はこうしてる。

動的にメソッドを書き換える

#import <objc/runtime.h> id length(id self, SEL _cmd, ...) { return 0; } int main(int argc, char *argv[]) { NSString *str = @"abcdefg"; NSLog(@"%d", [str length]);// => 7 Method method = class_getInstanceMethod([str class], @selector(length)); method->met</objc/runtime.h>…

コアの部分のデータ構造

Class struct objc_class { struct objc_class *isa; struct objc_class *super_class; const char *name; long version; long info; long instance_size; struct objc_ivar_list *ivars; struct objc_method_list **methodLists; struct objc_cache *cache;…

YouTubeの動画を組み込む

メソッド - (void)embedYouTube:(NSString*)url frame:(CGRect)frame { NSString* embedHTML = @"\ <html><head>\ <style type=\"text/css\">\ body {\ background-color: transparent;\ color: white;\ }\ </style>\ </head><body style=\"margin:0\">\ </body></html>

Foundation Classの定義を調べる

class-dumpをパスが通ってる場所に置く。 class-dump /System/Library/Frameworks/Foundation.framework/Foundation > ~/out.h

livedoorReaderを広くして使う

Chromeで使うのに修正した。 function fullWindow() { var style = document.createElement('style') style.type = 'text/css'; style.innerHTML = '#header, #menu, #control, #ads_bottom {display: none;}'; document.body.appendChild(style); } functio…

ChromeでAutoPagerizeでSITEINFOを書く

リロードautopagerize.user.jsにwedataに登録する前にテストする時に書き換えてブラウザをリロードしても反映されないので、 ソースコードが全部入ってるディレクトリを直接読み込んで拡張機能の再読込を使ってリロードした。FirefoxのGreasemonkey版にあっ…

ふぁぼったーのを見れるようにするChromeExtension

Chrome版を作りました。ダウンロードページ

ふぁぼったーのを見れるようにするGreasemonkeyスクリプト(AutoPagerize対応)

インストール // ==UserScript== // @name show censored // @namespace http://d.hatena.ne.jp/f96q/ // @include http://favotter.net/* // ==/UserScript== function $X(xpath, context) { context = context || document; var result = document.evaluat…

debug.js

Chromeでwindow.onerror使えなかった。 window.onerror = function(error, name, line) { alert(name + ':' + line + ':' + error); } function alert(v) { var div =document.createElement('div'); div.innerHTML = v; document.body.appendChild(div); } …

Chrome Extensionsの開発について

Google Chromeの5.0.342.3devで確認。ファイルにアクセスpopup.htmlにアクセスする場合。 IDはchrome://extensions/の拡張機能を読み込んだ時表示されるID。 chrome-extension://[ID]/popup.htmlソースコードの反映FirefoxでGreasemonkey書いてた時みたいに…

WindowsXPのプロファイルディレクトリ

Firefox C:\Documents and Settings\[user]\Application Data\Mozilla\Firefox\ProfilesChrome C:\Documents and Settings\[user]\Local Settings\Application Data\Google\Chrome\User Data

テキスト処理

テキストの置換とか加工するのに使うひな形。 #!/usr/bin/env ruby in = open("in.txt") res = in.read; res = res.gsub(/ /, " ") out = open("out.txt", "w") out.puts res

メンバ変数アクセスの高速化

C++でメンバ変数のアクセスが遅いので、頻繁にアクセスする場合一端ローカル変数に入れてそこにアクセスすることにより高速化するという方法がある。 JavaScriptでもどれぐらい違うかやってみた。 Function.prototype.bench = function(thisObject) { var be…

BitlBeeの設定

インストール aptitude install bitlbee 使うポートを指定する。ポートは任意の番号を指定する。 /etc/bitlbee/bitlbee.conf DaemonPort = 6677 起動 /usr/sbin/bitlbee -c /etc/bitlbee/bitlbee.conf Tiarraの設定tiarra.conf networks { name: bb } bb { h…

WEBrick

require "webrick" s = WEBrick::HTTPServer.new({ :Port => 8080, :BindAddress => "localhost", :DocumentRoot => "C:\web", #:CGIInterpreter => "", }) trap("INT") { s.shutdown } s.start

とあるJSの正規表現2

部分マッチングとマッチした結果を分けるように修正した。デモ var Class = {}; Class.create = function() { var cl = function() { this.initialize.apply(this, arguments); }; cl.extend = function(method) { for (var i in method) { this.prototype[i…

エラーの補足とalert

htmlのファイルの一番上にscriptタグで以下を書いておくとJavaScriptのエラーがあった場合、ファイル名、エラーのあった行、エラーの内容が補足できる。alertは別ウインドウで表示されたくなかったのとループでalert入れると厄介なので、一回しか実行されな…

とあるJSの正規表現

正規表現にマッチした物をハイライトする。デモ var Class = {}; Class.create = function() { var cl = function() { this.initialize.apply(this, arguments); }; cl.extend = function(method) { for (var i in method) { this.prototype[i] = method[i];…

アッカーマン関数

JavaScriptでもアッカーマン関数を書いてみた。 (function(m, n) { if (m == 0) return n + 1; else if (n == 0) return arguments.callee(m - 1, 1); else return arguments.callee(m - 1, arguments.callee(m, n - 1)); })(3, 7);

Ruby1.9でのダンプの仕方

1.9ではVMの命令にダンプできます。 puts RubyVM::InstructionSequence.new('puts "hoge"').disasm ほかにeval、to_aとかが使える。 == disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>========== 0000 trace 1 ( 1) 0002 putnil 0003 putstring "hoge" 0005 send :puts, 1, nil, 8, <ic> 0011 leave</ic></compiled></rubyvm::instructionsequence:<compiled>…

forEach

JavaScriptだとブロックでスコープ切れないのでforEachとかmapとかを頻繁に使うので、 ブラウザによって使えないのがあるのでその対策。 Array.prototype.forEach = function(func, thisObject) { for (var i = 0, len = this.length; i < len; i++) func.ca…