× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
サイズ違いの画像を同じ名前で扱える。
内部はディレクトリ構造で持っている(Finder)で確認可能。 使い方 images.xcassets ディレクトリ以下に置かれる。 なのでResourcesディレクトリとか作らなくていい(2重に持つことになる) しかしタブバーにもUIImageViewにもうまく表示されない。なぜだ 画像の種類が悪いのか??…そんなはずないと思うけど PR |
どれがいいのか。
参考1 全部コードだと、レイアウトを作成するコードが長くて面倒くなる。 ので、複雑な画面は単体でxibを使う
ストーリーボードを使うと、 ・分業しにくい ・対応するコードを探しにくい ・どこに何が定義されてるか分かりにくくなる なので、ビューが複雑でしかも小さい範囲で 参考2 引用
MVC忘れずに 今の時点での答えは ・ストーリーボード使わない ・xibだけに留める ・いずれにせよViewとViewControllerはちゃんと分けて書く 脱・ストーリーボードの方法 1. ストーリーボードファイルを削除(参照だけでなく実体も) 2. Info.plistの"Main storyboard file base name"を削除。 3. さらに以下のように記述する
ViewController周りを追記すること。 なぜか分からないが、プロジェクトテンプレートをEmptyにして以上の記述を追記すると、ViewControllerのLoadViewやviewDidLoad関数が何回も呼び出される。 ストーリーボード付きのテンプレートから作成し、ストーリーボードを削除すると、同じ記述でも正しく動く(一度しか呼び出されない)。 参考 いったいなんぞこれ。 |
動く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の世界へ! |
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を継承して作ることになっている。
update()関数は割と分かりやすくて、
新設定を書き込んだインスタンスをreturnするだけ。 form()関数も難しいことは別になくて、設定用の入力フォームを並べるだけ。 <input id="XXX" type="text" /> というふうに書いたフォームの値が、update()に $new_instance['XXX'] という形で渡されてくるだけ。 一番大切なのがwidget()関数。 ここでは、update()で設定した値を使用しながら、サイドバーに実際に表示するhtmlを作らないといけない。 DBにアクセスすることにもなるだろう。 ここで作ったhtml(やjavascriptやjQueryとか)は、決まった場所(サイドバー用のdiv, "primary-sidebar"の後)に出力される。 じゃあ、cssとか使いたいときはどうする?ここには書けない。 ブログページのhtmlを見てみると、
と書いてある。 ここに書いたら動くのかな? |
chkconfigコマンド。
起動スクリプトを管理する 何が管理されているかみてみよう $ chkconfig --list
ずらっと出てくる。 試しに、httpdをOS起動時に自動で走るようにしてみよう。 $ chkconfig --level 35 httpd on もう一度一覧を見てみる。 $ chkconfig --list
2,3,4,5がonになっている。 そもそもこの0~6は何ぞや? 調べてみると、 /etc/rc[0~6]以下 にシンボリックリンクが並んでいる。どうやらこれと対応しているようだ。 みてみよう。
なるほど、確かにシンボリックリンクが全部についている。 そして、chkconfigが on になっているところはファイル名が S で始まり、off は K になっている。 この0~6、何かというとランレベル。 # ランレベルの一覧 0 : シャットダウンに向かう状態 1 : シングルユーザモード 2 : 使用されない 3 : 標準的な状態 4 : 使用されない 5 : GUIでログインする状態 6 : 再起動に向かう状態 OSによって少し違うかもしれないがだいたいこう。 つまり3,5のときが重要な訳で。 ランレベル参考 Sになってるファイルは起動時に init.d/ 以下が実行されて自動起動するんでしょうな。 参考 参考 |
$ 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アドレス直に打ってみると、表示される。 |
/etc/sudoers
というファイルにユーザごと、またはグループごとなどに権限を書く。 直接このファイルを編集してもいいが、書き間違えるとことなので visudo コマンドを使う。 ファイル内に丁寧に説明がついているのでわかりやすいが、 パスワードなしで全コマンドを実行させたいときは
と書く。 グループ全員に対して設定したいときは、先頭にパーセントをつける。
参考 ついでに… ユーザ一覧を確認したいときは % vi /etc/passwd グループを確認したいときは % vi /etc/group でOK。 |
sshで入るには、公開鍵と秘密鍵。
AWSで作るのは簡単で、 AWSコンソール→EC2 ダッシュボード→Key Pairs で Create Key Pair を押す。 名前(仮にmykeyとする)を決めれば、もう完成。一覧に新しいキーペアが追加される。 さらに秘密鍵ファイル(mykey.pem)がダウンロードされる。 ちなみにノーパスワード。 これを使えばsshで入れる訳だが…その前に作業がある。 サーバ側で、 .ssh/authorized_keys にこの公開鍵情報を書き足す必要がある。これをしないと、このキーペアを認証してくれない。 authorized_keysの中身は
といった具合になっている。 このXXXの部分が公開鍵を表す訳だが… そもそも今作ったキーペアの公開鍵ってどこ?秘密鍵はダウンロードしたけど…? ということで、秘密鍵から公開鍵を取り出す。 $ chmod 600 mykey.pem $ ssh-keygen -y -f mykey.pem > id_rsa.pub -y は、秘密鍵から公開鍵を取り出すオプション。 -f は、ファイル名指定のオプション これで公開鍵が手に入った。 id_rsa.pubの中身を見ると
となっている。キー名が入ってない以外は、authorized_keysの中身と同じ。 これを先ほどのサーバのauthorized_keysにコピーし、キー名を末尾に付加すればOK. これで $ ssh -i mykey.pem username@hostname でログインできる。 |