普段使わないコマンドをすぐ忘れてしまうシリーズ(汗)
yoo グループに www-data ユーザ(Debianでいう Apacheユーザ)を追加する場合、
# usermod -G yoo www-data
グループ追加の確認
# cat /etc/group yoo:x:1000:www-data
vigr コマンドで直接 /etc/group を書き換える方法もありですが、探したり何か消してしまったりとかちょっとリスキーかも。
Debianで Apacheの場合、/etc/apache2/mods-available から /etc/apache2/mods-enabled にシンボリックリンクをはるが、そのコマンドを良く忘れてしまうのでメモ。 (手動でコマンドをうつのもいいですが・・・)
mod-rewriteを有効にする場合は、
a2enmod rewrite
シンボリックリンクはいかのように張られている
rewrite.load -> ../mods-available/rewrite.load
Lavishという Rails製のデザインフレームワークを試そうと思ったら Rails3 でscript/rails server できずにハマリしました。
どうやらXcodeのバージョンで、Ruby on Railsの挙動が異なるみたいです。
/Users/yoo/src/lavish/config/initializers/session_store.rb:3: syntax error, unexpected ':', expecting $end (SyntaxError)
そもそも、Rails3 x Ruby1.9.2 のちゃんと構築をしていないので怒られながらメモ
rvm(Rubyバージョン管理)が入っていなかったのでインストール
$ sudo gem install rvm
でうまくいかないので、
$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
.bash_profile に書き込み
$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
確認したらbashの読み込み
source ~/.bash_profile
※複数ターミナルを起動していると誤動作するので、全てのターミナルで再ログインが安全
※追記 MBAでやったら上記の方法でうまくいかなかったので、一旦Homebrewを削除、再インストールして「Installing RVM」を参照にした。
$ curl -L get.rvm.io | bash -s stable $ source ~/.rvm/scripts/'rvm'
とりあえず rvmの環境確認をする。
rvm requirements
どうやらXcode4.3 は根本的にruby 1.9.3が必要みたいです。
Xcode 4.3+ users - please be warned - only ruby-1.9.3-p125+ is partially supported - in case of any compilation issues: * downgrade to Xcode 4.1 * uninstall Xcode and install osx-gcc-installer
$ rvm get latest $ rvm pkg install readline $ rvm install 1.9.3 --with-openssl-dir=$rvm_path/usr
$ ruby -v ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]
bundle install をしようとしたら「ImageMagick」でコケます。
$ bundle install An error occured while installing rmagick (2.13.1), and Bundler cannot continue. Make sure that `gem install rmagick -v '2.13.1'` succeeds before bundling.
rmagick がないのか?と思いきや、
$ gem install rmagick
してもエラーになる。
どうやらHomebrewを利用しているので、ImageMagickをインストールするがうまくいかないようです。 ネットで「RMagick のインストールでコケる問題」や「MacでImageMagick+RMagickを使う」などを参考にゴニョゴニョしてみる。
$ brew doctor Warning: Your compilers are different from the standard versions for your Xcode. If you have Xcode 4.3 or newer, you should install the Command Line Tools for Xcode from within Xcode's Download preferences. Otherwise, you should reinstall Xcode. Warning: Your Xcode is configured with an invalid path. You should change it to the correct path. Please note that there is no correct path at this time if you have *only* installed the Command Line Tools for Xcode. If your Xcode is pre-4.3 or you installed the whole of Xcode 4.3 then one of these is (probably) what you want: sudo xcode-select -switch /Developer sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
Xcode4.3で Developerが削除されたとかの関係(?)、そして gemsのパスも変わっているみたいです。 念のため、Xcode4.3 の仕様どおりのパスにした。
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
また、rvm/gemsのパスも異なる模様。
/Users/ユーザ名/.rvm/gems/
以上の事から、imagemagickの再インストールをしてみる。
$ brew uninstall little-cms $ brew install little-cms $ brew uninstall imagemagick $ brew install -f imagemagick --disable-openmp
1番のポイントは「-f imagemagick --disable-openmp」とすることでした(多分)。
あとは、rmagickのパーミッションやオーナーの問題(権限がない場合)もありました。
sudo chown -R ユーザ名 rmagick-2.13.1
そんなこんなで、rmagick をインストール
$ gem install rmagick $ bundle install
できた!ってことで「Lavish」でBootstrapをつくってみた。
このブログもデザイン含めてGWに作り直したいと思いますが、時間あるかなぁ。。
「画像処理に使えるUIImageのTips10個」を参考に、UIImage のカラーを変更してみます。 UIimageのカラーを変更する場合、UIImageからピクセルを取得し新たな画像を作成してやります。
任意の red値でカラーを変更する。
- (UIImage *)changeRImage:(UIImage *)image red:(CGFloat)value {
CFDataRef cfDataRef = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
NSData* pixelData = (__bridge NSData*) cfDataRef;
unsigned char* bitmap = (unsigned char *)[pixelData bytes];
CGFloat width = image.size.width;
CGFloat height = image.size.height;
for(int i = 0; i < [pixelData length]; i += 4) {
CGFloat _value = bitmap[i] + value;
if (_value > 255) _value = 255;
bitmap[i] = _value;
bitmap[i+1] = bitmap[i+1];
bitmap[i+2] = bitmap[i+2];
bitmap[i+3] = bitmap[i+3];
}
CGDataProviderRef dataProviderRef = CGDataProviderCreateWithData(NULL, bitmap, width*height*4, NULL);
CGImageRef result = CGImageCreate(image.size.width, image.size.height, 8, 32, width*4, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaLast, dataProviderRef, NULL, 0, kCGRenderingIntentDefault);
UIImage *newImage = [[UIImage alloc] initWithCGImage:result];
CGImageRelease(result);
//CFRelease(dataProviderRef);
return newImage;
}
UIImage から CFDataRef を作成し、bytes を取得するとビッチマップデータになります。 ※ARCを利用する場合は、CFDataRef と NSData のキャストでブリッジしてやる必要があり
ビットマップのRGBAは、for文の通り「+4」ステップで取得し、ピクセル値を変更してやります。
後は、CGDataProviderCreateWithData() などでごにょごにょして UIImage を作成します。
またアルファチャンネルとマスクでカラー変更する方法が「Bezelボタンを作る[12]画像をグレースケールで表示する(その2) 」に記載されていました。
- (UIImage *)grayscale:(UIImage *)image {
CGRect rect = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef alphaContext = CGBitmapContextCreate(nil, image.size.width, image.size.height, 8, 0,
colorSpace, kCGImageAlphaOnly);
CGContextDrawImage(alphaContext, rect, [image CGImage]);
CGImageRef alphaImage = CGBitmapContextCreateImage(alphaContext);
CGContextRelease(alphaContext);
CGContextRef context = CGBitmapContextCreate(nil, image.size.width, image.size.height, 8, 0,
colorSpace, kCGImageAlphaNone);
CGContextDrawImage(context, rect, [image CGImage]);
CGImageRef grayScaleImage = CGBitmapContextCreateImage(context);
CGContextRelease(context);
UIImage* grayScaleUIImage = [UIImage imageWithCGImage:
CGImageCreateWithMask(grayScaleImage, alphaImage)];
CGImageRelease(grayScaleImage);
CGImageRelease(alphaImage);
CGColorSpaceRelease(colorSpace);
return grayScaleUIImage;
}
Zipファイルを解凍するには、「ZipArchive」を使うのが手っ取り早いと思います。
ZipArchiveを利用するには、「llibz.1.2.5.dylib」が必要があります。
ZipArchive はARC版がありませんので ARC対象からはずす必要があります。 ARCでプログラムする場合は、「ARC未対応のファイルを利用する」を参照して下さい。
Documents ディレクトリの test.zipを解凍してみるサンプルです。 「UnzipOpenFile」と「UnzipFileTo」してやるだけで非常にシンプルです。
- (void)archiveContents {
NSString *documentDirectory = [self documentDirectoryPath];
NSFileManager* fileManager = [NSFileManager defaultManager];
NSString *contentsPath = [NSString stringWithFormat:@"%@/%@", documentDirectory, @"test.zip"];
ZipArchive *archiver = [[ZipArchive alloc] init];
if ([fileManager fileExistsAtPath:contentsPath]) {
[archiver UnzipOpenFile:zipPath];
BOOL isAchived = [archiver UnzipFileTo:documentDirectory overWrite:YES];
if (isAchived) {
} else {
}
[archiver UnzipCloseFile];
} else {
}
}
iOS5でARC対応になって便利になったが、他のライブラリでARC対応になってないと利用できない。 例えば、ZipArchiveのライブラリを利用しようとした時にビルドエラーになってしまう。
以下の設定をする事で、ビルド時にARCの対象をはずすことができる。
-fno-objc-arc
久々に、Eclipseを開いたら Androidプロジェクトがビルドできない。 原因は自分はDeveloperフォルダに Android SDKを入れていたので、Xcode のアップデートをした時に根こそぎ削除された事によるもの。 (OSX も Lion にしたのもあるか?)
幸いゴミ箱を空にしなかったので、Developerフォルダを戻して Eclipseを再起動してみる。 しかし、
Your Project contains error s please fix them before running your application
プロジェクトクリーンしてもダメです。
色々面倒くさそうなので EclipseをHelios から Indigoに、Android SDKも最初からセットアップする事に。 しかし、それでも解決しない。 こうなると何かの設定が残ってるしか考えられないので調べたら、 your applicationエラー の記事を見つけた。 「debug.keystoreの有効期限切れ」が原因で、debug.keystoreを削除するだけだったというオチでした。 感謝。
あと、自分で有効期限設定できるみたいです。 [Android][SDK]祝 Androider1周年
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 1800 -dname "CN=Android Debug,O=Android,C=US"
UITextView を直接入力する場合、【option】とリターンで改行するが、コーディングで直接入力する場合は、
【option】+ 【¥】
でバックスラッシュを入力する。
これは例文です。\n改行しました。