忍者ブログ
  • 2024.10
  • 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.12
[PR]
×

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

【2024/11/25 00:39 】 |
アセットカタログ
サイズ違いの画像を同じ名前で扱える。
内部はディレクトリ構造で持っている(Finder)で確認可能。

使い方

images.xcassets ディレクトリ以下に置かれる。
なのでResourcesディレクトリとか作らなくていい(2重に持つことになる)

しかしタブバーにもUIImageViewにもうまく表示されない。なぜだ
画像の種類が悪いのか??…そんなはずないと思うけど
PR
【2014/06/07 18:20 】 | iPhone | 有り難いご意見(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)
XCodeのビルド、scheme
ビルド種別を増やす方法
(デフォルトはDEBUG,RELEASEのふたつだけ。)

以下の場所。
プロジェクトを選択し、PROJECT(TARGETSではなく)を選択、Info の Configuration の部分。

ここの「+」記号を押す。
何をもとに追加するか(Duplicate "Debug" Configuration)とか選べるので、もとにしたいビルドを選ぶ。
で増やす。
そうすると、TARGETSの各種BuildSettingsとかにも追加される。

schemeの追加方法
schemeをクリックし、New Scheme をクリック。
Edit Scheme をクリックし、左ペインの各種を選択し、右ペインに出てくる BuildConfiguration を正しく選ぶ。
すると、スキームごとに決まったビルドで動作するようになる。
【2014/06/07 12:37 】 | iPhone | 有り難いご意見(0)
railsサーバ立ち上げ記
動くWebサーバを高速で立ち上げる練習

AWSの作業

まず、awsの自分のアカウントでEC2をLaunch。
設定はまあ適当でいいでしょう。m1.microで。
ただm1.microは立ち上げに時間がかかると中の人から聞いたことがあってやや不安。9:30に起動して、Initialize終わったのが9:32。普通じゃん。
鍵は新しいの作ってダウンロードしておく。
$ mv ~/Download/***.pem ~/.ssh
$ chmod 400 .ssh/***.pem
EC2コンソールから、インスタンスのPublic IPを確認して
$ vi ~/.ssh/config
にも書いておこう

あと、セキュリティグループの設定もお忘れなく。
HTTP ポートを空けておこう。デフォルトだとSSH しか開いてないからね。

環境確認

とりあえず慣れてるrailsにしてみる。
参考 http://tsuchikazu.net/linux_ruby_on_rails_install/

$ sudo yum update
$ sudo yum install git -y

Ruby

rubyは最初から入ってるんだよねー。
$ ruby -v
=> ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-linux]
このバージョンでいいの?はあとの話。

rails

でもrailsはない。

$ gem search -r rails
でgemが検索できるよ。railsは大量にある

$ gem install rails
でインストールする。ドキュメントをインストールしないオプションをつけると倍速だって。
$ gem install rails --no-ri --no-rdoc

あとからドキュメントがほしくなったら
$ gem rdoc --all --ri
とするとインストール済みの全部のgemのドキュメントがインストールできる。だから
$ gem rdoc rails --ri
とかでいいのかな?
http://easyramble.com/no-ri-no-rdoc.html

とりあえずインストール完了。
$ rails -v
=>Rails 4.1.0

じゃあrailsアプリ作ってみよう。
$ rails new first
=> /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- io/console (LoadError)
:
:

なんぞこれ。
うーん


rails その2

http://qiita.com/dahugani/items/858b3979c0da8ecafdbb
こっちのページに乗り換えてみよう。

違いはなんぞ?というと、rubyのバージョン。
前のサイトだと、rbenvをインストールしてrubyのバージョンをあげようとしていたけど、なぜかrbenvが動かない。(rubyのインストールがエラーになる)
まあ、自分が慣れてるのもruby 1.9.xでrails 3.xだし、それでいこう。

というわけでこのページの通りに進めてみる。
wgetのとこだけアクセスできなかったので、
ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.gz
に変えた。

意外と順調。
しかし
$ rails new myapp
が失敗。

OpenSSLのエラーが起きる

$ yum install openssl-devel -y

$bundl install

Could not load OpenSSL.
You must recompile Ruby with OpenSSL support or change the sources in your Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL using RVM are available at
http://rvm.io/packages/openssl.

うーん。どうしよう。探しても同じ問題にあたってる人あまりいない。
$ yum search openssl-devel
でもほかのバージョンない。っていうかdevelの問題じゃなくてrubyのソースの問題だし。
ということは、rubyのソースを再インストール?というか再getして再makeして再install?

再びruby

1.9.3-p392を入れてたんだけど、
1.9.3の最終版は1.9.3-p545らしい。

バージョンを消す方法
srcディレクトリの.installed.list にファイルが列挙してある野で、それを全部削除する
$ sudo su - root
$ cat .installed.list | xargs rm
参考 http://d.hatena.ne.jp/mikage014/20091021/p1
アップデートの場合は要らないかもね。このサイトはバージョンを下げたみたいだから

で、もう一度手順繰り返す。

$ cd ~/src
$ wget http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p545.tar.gz
$ tar xzf ruby-1.9.3-p545.tar.gz
$ cd ruby-1.9.3-p545.tar.gz
$ ./configure
$ make
$ make test
$ sudo su - root
$ make install
$ ruby -v
=> 1.9.3-p545


お、いけた。
もう一度新しいappを作る
$ rails new second
$ bundle install
いける。
ただワーニングが出た

\Warning: You're using Rubygems 1.8.23.2 with Spring. Upgrade to at least Rubygems 2.1.0 and run `gem pristine --all` for better startup performance.
* bin/rake: spring inserted
* bin/rails: spring inserted

rubygemsが古いと。その古いバージョンで入れたとあるgemがまた古いと。

$ gem -v
=> 1.8.23.2

なんで、gemをアップデートしてみる

$ sudo gem install rubygems-update
$ sudo su - root
$ update_rubygems
$ gem update
$ gem -v
=> 1.8.23.2
あれ、かわってない。…ひとまず置いとこう

gem自体のアップデートは要注意らしい。以下参考
http://ja.verbmode.net/2009/02/09/be_carefull_with_gems_verup
http://tacamy.hatenablog.com/entry/2013/03/31/230553

ともあれ、appはできてるので、サーバたてよう
$ rails s
が、失敗。javascriptの何ぞかが見つからないとか。
gemが足りてないのだな。

$ vi Gemfile
gem 'therubyracer', platforms: :ruby
という行のコメントを外す
$ bundle install

これでgemが入った。
再度
$rails s

さあ、ブラウザでアクセスしてみよう。デフォルトのポート番号は3000だよ。気をつけて。
http://XXXX:3000/



ようこそ、railsの世界へ!
【2014/04/18 11:43 】 | サーバ | 有り難いご意見(0)
WordPress
WordPressインストールして使ってみた。

インストールの参考


/var/www/wordpress 以下に作成したとして話を進める。


カスタマイズの参考


好きなテンプレートを探して使ってもいいけど、やっぱ自分で作りたいよね。

プラグインを入れてみる


まずは参考になるかと一つプラグインを入れてみた
recent-posts-plus
これは、最近の投稿をサイドバーに出すことができるプラグイン。カテゴリーやタグを選んで表示できるとかの機能がある。

READMEを読むと、以下の場所にファイルを置けばいいらしい。
/var/www/wordpress/wp-content/plugins/recent-posts-plus.php


サイト名にマウスオーバー→ウィジェット の項目を選ぶと、確かに追加されている。


設定すると、ブログページのサイドバーにRecentPostが表示された。


自作への道

じゃあ、自分で作ってみよう。

ウィジェットを作るのに必要なコードは何か。

ここが詳しい。
Codex
要するに3つの関数を定義する必要があって、

- widget() 実際のウィジェットのコンテンツを出力する。つまり、実際のブログページに出力するhtml文をechoする関数。
- update() 設定の保存を処理する。つまり、ウィジェット画面の設定を保存するボタンを押したときに走る処理。
- form() 設定フォームを出力する。つまり、ウィジェット画面のhtml文をechoする関数。

という訳だ。

自作のウィジェットクラスは、WP_Widgetを継承して作ることになっている。

class MyWidget extends WP_Widget







update()関数は割と分かりやすくて、

function update( $new_instance, $old_instance ) {
//....
return $instance;
}






新設定を書き込んだインスタンスをreturnするだけ。


form()関数も難しいことは別になくて、設定用の入力フォームを並べるだけ。
<input id="XXX" type="text" />
というふうに書いたフォームの値が、update()に
$new_instance['XXX']
という形で渡されてくるだけ。


一番大切なのがwidget()関数。
ここでは、update()で設定した値を使用しながら、サイドバーに実際に表示するhtmlを作らないといけない。
DBにアクセスすることにもなるだろう。

ここで作ったhtml(やjavascriptやjQueryとか)は、決まった場所(サイドバー用のdiv, "primary-sidebar"の後)に出力される。
じゃあ、cssとか使いたいときはどうする?ここには書けない。

ブログページのhtmlを見てみると、

<link rel='stylesheet' id='XXX-style-css' href='http://XXXX/wordpress/wp-content/themes/XXXX/style.css?ver=3.8.3' type='text/css' media='all' />



と書いてある。
ここに書いたら動くのかな?
【2014/04/07 21:59 】 | サーバ | 有り難いご意見(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)
sudoするには
/etc/sudoers
というファイルにユーザごと、またはグループごとなどに権限を書く。

直接このファイルを編集してもいいが、書き間違えるとことなので
visudo
コマンドを使う。

ファイル内に丁寧に説明がついているのでわかりやすいが、
パスワードなしで全コマンドを実行させたいときは

username ALL=(ALL) NOPASSWD: ALL




と書く。
グループ全員に対して設定したいときは、先頭にパーセントをつける。

%groupname ALL=(ALL) NOPASSWD: ALL




参考


ついでに…
ユーザ一覧を確認したいときは
% vi /etc/passwd
グループを確認したいときは
% vi /etc/group
でOK。





【2014/04/04 11:54 】 | サーバ | 有り難いご意見(0)
AWS で ssh
sshで入るには、公開鍵と秘密鍵。

AWSで作るのは簡単で、
AWSコンソール→EC2 ダッシュボード→Key Pairs で Create Key Pair を押す。
名前(仮にmykeyとする)を決めれば、もう完成。一覧に新しいキーペアが追加される。
さらに秘密鍵ファイル(mykey.pem)がダウンロードされる。
ちなみにノーパスワード。

これを使えばsshで入れる訳だが…その前に作業がある。

サーバ側で、
.ssh/authorized_keys
にこの公開鍵情報を書き足す必要がある。これをしないと、このキーペアを認証してくれない。

authorized_keysの中身は

ssh-rsa XXXXXXXXXXXXXXXXXX mykey



といった具合になっている。
このXXXの部分が公開鍵を表す訳だが…
そもそも今作ったキーペアの公開鍵ってどこ?秘密鍵はダウンロードしたけど…?

ということで、秘密鍵から公開鍵を取り出す。

$ chmod 600 mykey.pem
$ ssh-keygen -y -f mykey.pem > id_rsa.pub
-y は、秘密鍵から公開鍵を取り出すオプション。
-f は、ファイル名指定のオプション


これで公開鍵が手に入った。
id_rsa.pubの中身を見ると

ssh-rsa XXXXXXXXXXXXXXXXX



となっている。キー名が入ってない以外は、authorized_keysの中身と同じ。

これを先ほどのサーバのauthorized_keysにコピーし、キー名を末尾に付加すればOK.

これで
$ ssh -i mykey.pem username@hostname
でログインできる。
【2013/12/08 18:06 】 | サーバ | 有り難いご意見(0)
<<前ページ | ホーム | 次ページ>>