忍者ブログ
  • 2024.03
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.05
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/04/16 17:32 】 |
gitコマンド
git使っていてすぐ思い出せなくなる便利コマンドなど

参考

コミットした内容をワーキングディレクトリに戻したい(いったん取り消してコミットを分割したいとか)
$ git reset HEAD~1

コミットしてしまったファイルをリポジトリから削除したい(関係ないファイルをコミットしてしまってたなど)
$ git rm --cached filename

PR
【2014/08/28 16:39 】 | 未選択 | 有り難いご意見(0)
まとめ
データセーブ
[iOS][NSUserDefaults]

URLスキーム
[iOS]カンタン
[iOS]詳しめ
[Android]
なおAndroidでURLスキーム呼び出しを実験する際は、実際にhtml内のリンクを踏むしか無い。(iOSなら、safariのアドレスバーに xxx:// と入力すれば良いのだが.)
だから、このブログとかでリンクを埋め込んで、Android端末でこのページにアクセスしてリンクを踏むとかする必要がある。
例えばこんな感じ→ facebookのurlスキーム


twitter連携
[iOS]

facebook連携
[iOS]

ストアに飛ばす
[iOS]


レーティング
[iOS]iRate導入

push通知
[iOS]appCCloud
[Android]appCCloud

広告
アイモバイルSDK
[iOS]アイモバイル

[cocos]appCCloud
[Android]appCCloud
[iOS]appCCloud
【2014/08/23 11:39 】 | 未選択 | 有り難いご意見(0)
UITableViewCell
テーブルビューのセルは、フレームワークが自動で再利用している。

セルの形式が同じなら、中のtextとかimageViewとかだけ差し替えて再利用する。メモリの破棄・確保をせずに済ますため。

セルの形式が同じなのかどうかを、identifierで区別させている。

よくある書き方はこう。


UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: identifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleValue2 reuseIdentifier: identifier];
}




一行目で、指定のidentifierのセルで、使われていない(表示されていない)セルがあるかどうか、あればdequeueして取ってくる。
もし無ければ、スタイル指定しidentifier指定してセルを生成する。

で、このあとtextとかimageViewとか指定して使っている訳。
このセルが使われなくなったら、また同じidentifierが使われたときに再利用されるのを待つわけだ。

参考


再利用される見込みがなければ別に指定しなくてもいい。

なお、storyboardでCellIdentifierを指定していたら、それは必ず作成されていて、dequeueで取って来れるようになっている?
【2014/07/03 11:30 】 | 未選択 | 有り難いご意見(0)
ストーリーボードか、xibか、コードか
どれがいいのか。


参考1
全部コードだと、レイアウトを作成するコードが長くて面倒くなる。
ので、複雑な画面は単体でxibを使う

UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor darkGrayColor];
label.textAlignment = UITextAlignmentCenter;
label.frame = CGRectMake(10.f, 10.f, 100.f, 100.f);






ストーリーボードを使うと、
・分業しにくい
・対応するコードを探しにくい
・どこに何が定義されてるか分かりにくくなる
なので、ビューが複雑でしかも小さい範囲で


参考2
引用

ViewControllerは理想的には極限まで薄くするのがいいと思います。
ビジネスロジックはModelに書く、汎用処理はヘルパークラスや関数にする、DataSourceは切り離す、などいろいろありますが、Viewも別クラスに切り離しましょう。





MVC忘れずに



今の時点での答えは
・ストーリーボード使わない
・xibだけに留める
・いずれにせよViewとViewControllerはちゃんと分けて書く



脱・ストーリーボードの方法

1.
ストーリーボードファイルを削除(参照だけでなく実体も)

2.
Info.plistの"Main storyboard file base name"を削除。

3.
さらに以下のように記述する

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
var viewController: UIViewController?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window!.backgroundColor = UIColor.whiteColor()
self.viewController = RootViewController() // 自分で作成したViewController
self.window!.rootViewController = self.viewController
self.window!.makeKeyAndVisible()
return true
}



ViewController周りを追記すること。
なぜか分からないが、プロジェクトテンプレートをEmptyにして以上の記述を追記すると、ViewControllerのLoadViewやviewDidLoad関数が何回も呼び出される。

ストーリーボード付きのテンプレートから作成し、ストーリーボードを削除すると、同じ記述でも正しく動く(一度しか呼び出されない)。
参考
いったいなんぞこれ。

【2014/06/07 16:37 】 | 未選択 | 有り難いご意見(0)
storyboard
タブバーの名前変更

ナビゲーションウィンドウ(タブウィンドウのほうではなく)を拡大して表示
→タブバー部分をクリック
→右ペインの Bar Item の Title を変更
タブウィンドウのほうの名前も一緒に変わる



新しいビューをタブに追加する
右下のコンポーネント一覧からビューコントローラをドラッグ&ドロップ
→右ペイン3番目、Class名を指定
→ctrl押しながら、タブビューからナビゲーションビューにドラッグ&ドロップ
→ctrlを話すと小ウィンドウが出るので、Relationship Segue: view controllersを選択
すると繋がる。



クラス名を変える
storyboardのビューをクリックし、Class を変更
→ソースのファイル名を変更(または作成)、クラス名も同じに変更



【2014/06/07 15:57 】 | 未選択 | 有り難いご意見(0)
chkconfig コマンド
chkconfigコマンド。
起動スクリプトを管理する

何が管理されているかみてみよう
$ chkconfig --list


abrt-ccpp 0:off 1:off 2:off 3:off 4:off 5:off 6:off
abrt-oops 0:off 1:off 2:off 3:off 4:off 5:off 6:off
abrtd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
auditd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off
cpuspeed 0:off 1:on 2:off 3:off 4:off 5:off 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
haldaemon 0:off 1:off 2:off 3:off 4:off 5:off 6:off
htcacheclean 0:off 1:off 2:off 3:off 4:off 5:off 6:off
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
:
:




ずらっと出てくる。

試しに、httpdをOS起動時に自動で走るようにしてみよう。

$ chkconfig --level 35 httpd on

もう一度一覧を見てみる。
$ chkconfig --list


httpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off




2,3,4,5がonになっている。
そもそもこの0~6は何ぞや?

調べてみると、
/etc/rc[0~6]以下 にシンボリックリンクが並んでいる。どうやらこれと対応しているようだ。
みてみよう。


$ ls -la /etc/rc*.d/*httpd*
lrwxrwxrwx 1 root root 15 4月 4 12:41 2014 /etc/rc0.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 4月 4 12:41 2014 /etc/rc1.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 4月 4 12:41 2014 /etc/rc2.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 4月 4 12:41 2014 /etc/rc3.d/S85httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 4月 4 12:41 2014 /etc/rc4.d/K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 4月 4 12:41 2014 /etc/rc5.d/S85httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 15 4月 4 12:41 2014 /etc/rc6.d/K15httpd -> ../init.d/httpd



なるほど、確かにシンボリックリンクが全部についている。
そして、chkconfigが on になっているところはファイル名が S で始まり、off は K になっている。

この0~6、何かというとランレベル。

# ランレベルの一覧
0 : シャットダウンに向かう状態
1 : シングルユーザモード
2 : 使用されない
3 : 標準的な状態
4 : 使用されない
5 : GUIでログインする状態
6 : 再起動に向かう状態

OSによって少し違うかもしれないがだいたいこう。
つまり3,5のときが重要な訳で。
ランレベル参考

Sになってるファイルは起動時に
init.d/ 以下が実行されて自動起動するんでしょうな。


参考
参考
【2014/04/04 12:44 】 | 未選択 | 有り難いご意見(0)
apache インストール
$ sudo yum -y install httpd

インストールするパッケージはhttpd。
-yは、すべてにyと応答するオプション

インストールできたら、以下の設定ファイルを開く。

$ emacs /etc/httpd/conf/httpd.conf

DocumentRoot
ここがホームディレクトリになる。
ここ以下に置いたファイルがそのままブラウザのURL部分になる。

参考

$ sudo /etc/rc.d/init.d/httpd start
で起動。

DocumentRoot 直下に index.htmlを適当に書いておいてみて、ブラウザでサーバのIPアドレス直に打ってみると、表示される。




【2014/04/04 12:20 】 | 未選択 | 有り難いご意見(0)
playground
なんとなくKlabのplaygroundを使ってみる。

インストール手順発見。なんの因果かちょうど昨日今日ハッカソンやってる…
http://www.slideshare.net/KeiNakazawa/131102-playgroundthon


macportsのアップデートがうまくいかないので、面倒なのでhomebrewに乗り換えた
http://d.hatena.ne.jp/fuzzy31u/20130717/1374078678


でインストールできる。楽チンだ
インストールディレクトリは /usr/local/bin/以下。

$ ln -s /usr/local/bin/XXX ~/bin/XXX

oggencのみ、brew install oggenc ができなかった。ググると、

$ brew install vorbis-tools
というので行けた。

で、playgroundのソースはここ。git-hubにあるので取ってくる。
https://github.com/KLab/PlaygroundOSS




ここまでに実行したコマンド
$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
$ brew install lame
$ brew install lua
$ brew install swfmill
$ brew install vorbis-tools
$ ln -s /usr/local/bin/lame ~/bin/lame
$ ln -s /usr/local/bin/luac ~/bin/luac52
$ ln -s /usr/local/bin/swfmill ~/bin/swfmill
$ ln -s /usr/local/bin/oggenc ~/bin/oggenc
$ git clone https://github.com/KLab/PlaygroundOSS




で、README を読んだ(全部英語…)。
MacでiOSでサンプルプロジェクトを動かすための最短ルートをまとめるとこうなる。
(以降のディレクトリ表記は、取って来たgit管理下のトップディレクトリ PlaygroundOSS が基点)

XCodeを開いて、以下のプロジェクトを開く。
Engine/porting/iOS/Project/SampleProject/SampleProject.xcodeproj



左のプロジェクトビュー(Cmd + 1 で表示)の"ProjectResources"と"SampleProject" に、
Tutorial/01.SimpleItem/.publish/iphone
をドロップする。



するとこんな感じになる




で、Cmd + R で実行!

おお、動いた。





というわけだ。
要するに、.publish/iphone ができていればほぼ完成したも同然、というところだ。
そこをどうやって作るのかは次回の記事に。
(キーワードは Lua と Toboggan)

【2013/11/03 17:51 】 | 未選択 | 有り難いご意見(0)
macportsでgitをインストール
mac には yum とか apt-get とかが実は入っていなかった。

定番は MacPorts
http://www.macports.org/

インストールしたら、ターミナルを再起動して
まずmacportsを最新に更新
sudo port -v selfupdate

で、gitをインストール

sudo port install git-core

(XCodeが古いとインストールできないらしい。そのときはMac App StoreからXcodeの最新版をアップデートしよう)


【2013/08/18 13:51 】 | 未選択 | 有り難いご意見(0)
コマンドいろいろ
ファイルの中身をダンプ

$ od -tx1c ファイル名

odはOctal Dump の略
-t の後ろにオプションをいろいろ。
c 文字で表示
x1 1バイトずつ16進数で表示
d4 4バイトずる10進数で表示


類似のコマンド
$ hexdump -C ファイル名





【2013/01/13 14:29 】 | 未選択 | 有り難いご意見(0)
| ホーム | 次ページ>>