アプリ制作実習〜データベースの編集〜

こんにちは。
作ったデータベースの中身を見る方法を学んだので報告します。

まず、ターミナルを開いて、

1.adbと入力

するとandroid debug bridgeが立ち上がります。(そんなコマンド無い!って怒られる人はPATHが通っていないのでPATHを通してください➡参考サイト:http://gadgemin.blog84.fc2.com/blog-entry-15.html

2.adb shellと入力

すると

adb server is out of date.  killing...
* daemon started successfully *
# 

と、こんな感じにdaemonというのが立ち上がります。
これでエミュレータに保存されたファイルやデータベースへアクセスできます。

3.データベースのパスへGO

プロジェクトのデータベースは/data/data/(プロジェクト名)/databases
にあります。このdatabasesの中には見覚えのある「Images」の文字が。
どうやらデータベースの作成は出来ているようです。

4.データベースの操作

コマンドライン

# splite3 Images

と入力するとSQLiteのコマンドでデータベースが操作できます。
テーブルの全セルを表示させてみました。

sqlite> select * from images;
1|| super||
2||tttt

||
3||||
4|||?PNG

|
5||iiii ||
6||iiii |?PNG

|
7||ssssssss ||
8||ssssssss |?PNG

|
9||?????||
10||?????|?PNG

|

という訳で、入力した写真のタイトルと何らかの画像が入っていました!!

また、普段は実機で検証しているのですが、実機のdataファイルは暗号化されているため、
今回はエミュレーターを使わざるをえませんでした。エミュレーター遅っ!!!!

アプリ制作実習〜アダプター〜

こんばんは!本日はアダプターについて書きます。


アダプターというのは、レイアウトとビューの間にかませて
両者の接着剤になるというものです。

同じようなビューを連続で表示したいときに使うのですが
直接乗せるのではだめなのかというと、
このアダプター接着剤の他にポジション情報も持っていて
例えばスクロールして表示位置が変わっても再描画の必要がなければ
リサイクル、というオプションがついているのです。

直接乗せた場合、毎回描画することになるためメモリーに非常に優しくないです。
Adapter便利ですねー✨

以下、毎度恥ずかしながらソースです。

public class ImageAdapter extends BaseAdapter{
	Context context;

	public OldU(Context context) {
		super();
		this.context = context;
	}

	@Override
	public int getCount() {
		return Images.length;
	}

	@Override
	public Object getItem(int position) {
		return null;
	}

	@Override
	public long getItemId(int position) {
		return 0;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ImageView imageView;
		if (convertView == null){
			imageView = new ImageView(context);
			imageView.setImageResource(R.layout.listitem);
		}else{
			imageView = (ImageView) convertView;
		}
		imageView.setImageResource(images[position]);
		return imageView;

	}
    private Integer[] images = {
            R.drawable.image, R.drawable.image,
            R.drawable.image, R.drawable.image,
            R.drawable.image, R.drawable.image,
            R.drawable.image, R.drawable.image

    };

}

本当は、データベースを実装するためそれに適した
CursorAdapterというAdapterを実装したかったのですが、
制作したデータベースがめちゃくちゃだったために
代用のBaseAdapterを乗せてます。

締め切りがー💦💦

@dynamicを自前で実装する

こんにちは ビンゴ中西です。

Objective-Cメタプログラミングを勉強中です。

Cora Dataを使っていると出てくる @dynamicこれは、
setterとgetterをどうやら実行時に作成するときに使われるみたい。

つまり、@dynamicはメタプログラミングでsetterとgetter作るよってことを示しているんですね。

やってみよう

Hoge.h

@property (nonatomic, retain) NSString *hoge;

Hoge.m

static Hoge* hogeSingle = nil;

- (id)init
{
    self = [super init];
    if (self) {
        void (^setBlock)(id o, NSString *s) = ^(id o, NSString *s){ NSLog(@">>> %@",s); };
        NSString *(^getBlock)(id o) = ^(id o){
            NSLog(@"%@", o);
            return @"Test";
        };
        SEL setSel = NSSelectorFromString(@"setHoge:");
        SEL getSel = NSSelectorFromString(@"hoge");
        IMP setImp = imp_implementationWithBlock(setBlock);
        IMP getImp = imp_implementationWithBlock(getBlock);
        class_addMethod([Hoge class], setSel, setImp, "v@:@");
        class_addMethod([Hoge class], getSel, getImp, "v@:");
    }
    return self;
}

// シングルトン
+(Hoge*)sharedManager{
    @synchronized(self) {
        if (hogeSingle == nil) {
            hogeSingle = [[self alloc] init];
        }
    }
    return hogeSingle;
}

imp_implementationWithBlockの第1引数には呼び出しもとのインスタンスが入るみたいです。
Perlでのオブジェクト指向と一緒ですね。Perlも関数でオブジェクト指向をするために、第1引数に呼び出したインスタンスをもらってますし。

使い方

[[Hoge sharedManager] setHoge:@"AA"];    // sharedManagerでシングルトンをゲットしています。
NSLog(@"%@", [Hoge sharedManager].hoge);

結果:

>>> AA
Test

それっぽく動いています。

私の .gitconfig

ビンゴ中西です。 gitを使い始めているので.gitconfigも書きました。

diffがlessで表示されるのが嫌だったので、pagerの指定をなくしています。

[user]
	name = ひみつ
	email = ひみつ
[core]
	quotepath = false
	excludesfile = /Users/ユーザ名/.gitignore
	pager = 
	editor = /usr/bin/vim

[color]
	ui = true

[color "diff"]
  meta = white reverse
  frag = magenta bold
  old = green
  new = green
  whitespace = white reverse

[color "status"]
  added = yellow
  changed = green
  untracked = cyan reverse
  branch = magenta
[alias]
	ci = commit

私の.zshrc

ビンゴ中西です。
zshを使いだしたので、.zshrcを書きました。

################################################################
# デフォルトの補完機能を有効にする
################################################################
autoload -U compinit
compinit -u

################################################################
# 環境変数
################################################################
export LANG=ja_JP.UTF-8

################################################################
# プロンプト
################################################################
PROMPT="%n@%~%# "

################################################################
# alias
################################################################
alias ll="ls -l"
alias di="dirs | tr ' ' '\n'"

################################################################
# ディレクトリ移動
################################################################
setopt auto_cd            #ディレクトリ名だけで移動する
setopt auto_pushd         #自動でディレクトリをpushする

################################################################
# 補完
################################################################
setopt noautoremoveslash  #末尾の/を自動的に消さない
setopt nolistbeep         #ビープ音をならさない
setopt list_packed        #リスト表示をつめて表示
setopt correct            #存在しないコマンドのとき近いコマンドを表示
setopt complete_aliases   #エイリアスも補完


################################################################
# Emacsバインド
################################################################
bindkey -e

autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^p" history-beginning-search-backward-end
bindkey "^n" history-beginning-search-forward-end
bindkey "\\ep" history-beginning-search-backward-end
bindkey "\\en" history-beginning-search-forward-end
bindkey "^[[Z" reverse-menu-complete  # Shift-Tabで補完候補を逆順する

################################################################
# history
################################################################
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
function history-all { history -E 1 } # 全履歴の一覧を出力する
setopt hist_ignore_dups # ダブった履歴を無視する
setopt share_history    # ヒストリを共有する

アプリ制作実習〜アプリアイコン〜

こんばんは!haneoです。

今日はデザイナーさんにお願いしていたアプリのアイコンが出来上がった
(デザイナーさんありがとうございます!!)
ので、アイコンを変更してみました。

方法は簡単、res/drawable-?dpiのファイルの中に画像を入れて
Manifestファイルの~タグの

android:icon="@drawable/~~~~"

の部分がこのアプリのアイコンはこの画像ですよと指定しているので、
~~~~に画像ファイル名を入れます。

また、アイコンとなる画像は以下のサイズに決まっています
ldpi=36×36px
mdpi=48×48px
hdpi=72×72px
xhdpi=96×96px

しかし、今までの変な緑のロボットのアイコン使ってた時とはやる気全然変わってきますね。
ちゃんとしたもの作らなきゃなー