MySQL:テーブル単位のダンプ&リストアのメモ

※ポイント –default-character-set=binary 文字化け対策

テーブル指定ダンプ
mysqldump -u testuser testdb -p --default-character-set=binary --tables testtable > [出力先ファイル名].sql
データベースを指定して、上記のテーブルデータのリストア
mysql -u testuser testdb -p --default-character-set=binary < [出力先ファイル名].sql
指定テーブル以外をダンプする場合
mysqldump -u testuser -p testdb --default-character-set=binary --ignore-table=testdb.testtable1 --ignore-table=testdb.testtable2 > [出力先ファイル名].sql

CentOS6.2にyumのMySQL5.5とソースのMySQL5.5を1台でレプリカした際のメモ

1台のサーバーで、2つのMySQLを入れるために、
yumでもともと入っているMySQL5.5に追加で、ソースのMySQL5.5を入れたメモ。
目的はサーバー1台でMaster-Slaveのレプリケーションの検証をするため。
(あくまで簡易めもなので、適宜自分の環境にあわせてください。^^汗)

構築環境
CentOS6.2 CentOS release 6.2 (Final)
マスター用:MySQL5.5(yumでインストール)Server version: 5.5.23-log MySQL Community Server (GPL) by Remi
スレーブ用:MySQL5.5(ソースからインストール)Server version: 5.5.30-log Source distribution

 

1.マスター用のMySQLをyumインストール
※デフォルトのyumでは5.5はなかったはずなので、remiから

RPMのepel,remiのインストール

現状のyumで利用できるmysqlのバージョンを確認(おそらく5.1xxxになっているはず)
# yum info mysql
# rpm -ivh ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/6/x86_64/epel-release-6-5.noarch.rpm
(CentOS 6.x, x86_64の場合)
DL元サイト:http://rpm.pbone.net/index.php3/stat/4/idpl/15279403/dir/redhat_el_6/com/epel-release-6-5.noarch.rpm.html

バージョン確認
# yum --enablerepo=epel,remi list mysql-server 

yumからインストール
# yum --enablerepo=epel,remi install mysql mysql-server mysql-devel mysql-libs

# service mysqld start
# mysql

2.スレーブ用のMySQLのソースインストール

存在しなければmysqlユーザーを登録
# groupadd mysql
# useradd -m mysql -g mysql -d /usr/local/mysql/data
# passwd mysql

コンパイラ系を準備
# yum install gcc gcc-c++ bison
# yum install ncurses-devel
# yum install cmake

自分は/usr/local/src/にとりあえずソースのmysqlをダウンロード
※ソースインストールの際のconfigreが5.5から使えなくなったので、cmakeを利用する。そのためcmakeファイルが入っているものをダウンロード!
# wget 'http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.30.tar.gz/from/http://cdn.mysql.com/'

# cd mysql-5.5.30xx/
cmakeのオプションはお好みで
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1

# make
# make install

# chown -R mysql:mysql /usr/local/mysql/

# cp /usr/local/mysql/support-files/my-large.cnf /usr/local/mysql/my.cnf

※適宜編集
# vi /usr/local/mysql/my.cnf

# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld_slave

# chmod 755 /etc/init.d/mysqld_slave

※適宜編集
# vim /etc/init.d/mysqld_slave
basedir=/usr/local/mysql
datadir=/usr/local/mysql/var
mysqld_pid_file_path=/var/run/mysqld/mysqld_slave.pid

インストールしたmysqlを起動
# /etc/init.d/mysqld_slave status
# /etc/init.d/mysqld_slave start

ログイン
# /usr/local/mysql/bin/mysql

自動起動になっているか確認
# chkconfig --add mysqld_slave
# chkconfig mysqld_slave on
# chkconfig --list | grep mysql

 

 

objective-c(objC) xcodeでAnalyzeした際の解析メッセージ翻訳メモ

コピペができなくて面倒だったので、翻訳しただけのものをメモ

value stored to 'cell' during its initialization is never read
その初期化処理中に"セル"に格納された値が読み取られることはありません
incorrect decrement of the reference count of an object that is not owned at this point by the caller

呼び出し側で、この時点で所有されていないオブジェクトの参照カウントのデクリメント誤っ

obective-c(iPhone)にて、UITabBar毎にUINavigationBarのページをコードで用意する。

最近iphoneアプリの開発をメインでやっており、色々調べながらやっているのですが、
どれもインターフェースビルダーや、ストーリーボードを使った説明が多く個人的にはやりずらい印象をもっております。

と言う事で、色々探した結果、コードでUITabbarUINavigationBarを共存させる方法が見つからなかったので、自力でとりあえず動いた方法を下記にメモします。
余力があればgithubにあげたいと思います。

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    _window= [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    _tabBarController = [[UITabBarController alloc] init];  //tabbarコントローラ初期化

    // TabBarControllerに加える3つのViewController
    UIViewController *firstViewController = [[FirstViewController alloc] init];
    UIViewController *secondViewController = [[SecondViewController alloc] init];
    UIViewController *thirdViewController = [[ThirdViewController alloc] init];

    //first用UINavigationController のルート画面 
    UINavigationController *naviFirstViewController = [[UINavigationController alloc] initWithRootViewController:scanViewController];

    //UINavigationController のルート画面 
    UINavigationController *naviSecondListController = [[UINavigationController alloc] initWithRootViewController:secondViewController];

    // tab bar controller の初期化
    self.tabBarController.viewControllers =[NSArray arrayWithObjects:naviFirstViewController, naviSecondListController, thirdViewController, nil];

    [self.window addSubview:self.tabBarController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

上記は、左から2つ目までのタブはそれぞれ、ナビゲーションバーをもっていて、それを最後にタブバーにセットしています。

やっぱりコードで書いた方が、何をやっているかしっくりくるし、
IBXibもあわせてみる必要がなく大変扱いやすいです。

Android ListView内のボタンイベントの取得 シンプル!メモ

AndroidのListViewのレイアウトの使い方にとまどうこの頃w

AndroidでListViewレイアウトをつくっていてハマったのでメモします。

ListView内にButtonなどを設置してそのイベントと押したitemの番号を取得したい場合に簡単な方法を検証してて見つけ

たので忘れないうちにストックします。

@Override public View getView(int position, View view, ViewGroup viewGroup) { 
ーーー 
Button deleteBtn = (Button) view.findViewById(R.id.deleteBtn); 
deleteBtn.setTag(position); 
ーーー 
}

次に上記Buttonのレイアウト用にxmlにonCLickを追加

<Button 
android:id="@+id/deleteBtn" 
android:onClick="deleteGo" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:focusable="false" 
android:text="delete" />

あとはメソッドでpostionを取得してやりくします!

public void deleteGo(View view) {
 Log.v("yorosiku!",view.getTag()); 
}

だいぶシンプルになったと思います、この方法がわかるまで色々見まわりましたが、
難しかったのでこれぐらいシンプルだと初心者でもすぐに使えるかと思います。

(iOS)objective-c 共通で使える変数 Singletonまとめ

久しぶりの投稿!

objective-cを最近さわりはじめて、どうしても共通で利用したいグローバル変数的なものがほしかったので、色々しらべて見ました!
せっかく自分でメモリ管理できるobjective-cなので、一度作ったメモリをいろんなクラスから利用できたらなということで、参考になったサイトを下記にまとめました。

http://d.hatena.ne.jp/koichirohonda/20120325

http://blog.syuhari.jp/archives/2178

http://ylb.jp/iOSDev/SingletonSample.pdf

 

 

Android LMK( Low Memory Killer)に殺されたw

Androidアプリを作っていて、端末によって、バッググラウンドの処理が動いたり動かなかったりしたので、調べてみたらどうやらLMKという空きメモリが少なくなるとプロセスを殺すものがあるようだったので、メモ!

下記のようなログがそいつです!

Low Memory:No more background processes.

Android特有のものらしい、Killされる基準など下記サイトが参考なりました。

http://techbooster.jpn.org/andriod/application/1517/

http://d.hatena.ne.jp/hyoromo/20100509/1273399359

http://blog.cnu.jp/2010/10/11/android-process-kill/

http://d.hatena.ne.jp/misetu/20110108/1294490981

特にonPause等で裏側にまわるアプリなどバッググラウンド処理は、
消される可能性が高いようです。

adbを使って、androidのエミュレータ内のsqlite3やプリファレンスをチェックする

アンドロイド開発で、sqliteのデータや、
プリファレンスの中身を見たい時のチェック方法メモ。

まずadbが使える状況で、

$ adb devices

で、利用できるデバイス一覧が表示されます。

$ adb devices
List of devices attached 
37c70c34320b3d7 device

利用したいデバイスを下記コマンドで指定し、shell。

$ adb -s emulator-5554 shell

するとエミュレータ内で色々コマンドが実行できるようになる。

#ls
#pwd
#cd
#cat
・・・等々

本題のsqlite3やプリファレンスのデータを見るにはまず、そのファイルの場所にいきます。

◆プリファレンスの場所は下記、

#cat /data/data/対象のアプリのパッケージ名/shared_prefs/プリファレンス名.xml

実はxml形式だったのね。

◆sqlite3のデータの場所は下記、

#sqlite3 /data/data/対象のアプリのパッケージ名/databases/データベース名.db 
あとは好きなようにsqlite3のコマンドで、.tableしたりselectしたりできます。