Saturday, September 7, 2013

コードイグナイターが超簡単!!

まじ簡単でびっくりした。
データの取り出しを簡単にできるし、まじびっくり!!

以下メモ

・データベースについては、application/modelsに(データベース名)_model.phpに以下のコードを書く


class News_model extends CI_Model {

        public function __construct()
        {
                $this->load->database();
        }

        public function get_news ($slug = false) {
                if ($slug === FALSE) {
                        $query = $this->db->get('news');
                        return $query->result_array();
                }

                $query = $this->db->get_where('news', array('slug' => $slug));
                return $query->row_array();
        }
}

コントローラーにおける->dbはデータベースにつなげるだけだから、(テーブル名)_modelにしたからってそのテーブルだけしかつなげないということではない

・コントローラー(モデルとビューの橋渡し)はapplication/controllersに(テーブル名 || urlにしたい文字列).phpに以下のコードを書く
・functoinの名前は(クラス名)/(function名)のurlにアクセスされたときの処理


class News extends CI_Controller {

        public function __construct()
        {
                parent::__construct();
                $this->load->model('news_model');
        }

        public function index()
        {
                $data['news'] = $this->news_model->get_news();
                $this->load->view('news_index', $data);
        }

        public function view($slug)
        {
                $data['news'] = $this->news_model->get_news($slug);
        }
}

・ビュー。コントローラーで処理されたデータを表示する



こんにちは!



viewで変数にアクセスするには、$dataの連想配列のキーになる

<追記>
複雑なselectを書けたいときに参考になる
http://ellislab.com/codeigniter/user-guide/database/active_record.html#select

複数のメソッドをつなげる
こんな感じに
$this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20);
$query = $this->db->get();

詳細はMethod Chainingを参照

rowをカウントする

$this->db->where('id', 2);
$this->db->count_all_results();


Sunday, September 1, 2013

そのた (フロントエンド)

ユーザーのアクセス環境を取得
http://www.myu-zin.com/webridge/archives/1038.html
cssではうまくできなかったから、phpでやたた
phpはフロントエンドもできるけどサーバー系だし、どうやって記事を分類したら良いのかを迷うw

JSでウィンドーサイズの変更を取得するプラグイン
http://d.hatena.ne.jp/cyokodog/20101101/exresize01

コピーしましたってやつを実装
http://tech.genestream.co.jp/2013/09/11/clipbord_copy_of_web_application/
このブログを書いていた人の勤務先がつい最近知り合った人のインターン先だったw

一行で左右に文字をおきたいとき。
http://the-zombis.sakura.ne.jp/wp/?p=1564

firstクラスとsecondクラスを同じ行に入れたい

// html
こちらがfirstです
こちらがsecondです
// css .first { float: left; } .second { text-align: right; }

これでいける

文字を省略して...と表示させたいとき
http://ameblo.jp/linking/entry-10268808742.html
// html
これはとても長い文章です。それはとてもとても長いです。まるで、象の鼻みたい。もしくはキリンくらい。。。ちょっと言い過ぎたかも。。。
// css .third { width: 150px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -webkit-text-overflow: ellipsis; -o-text-overflow: ellipsis; }

phpでもやる方法があったんだけど、また次使うときに調べる

CSSで図形を作る
http://css-tricks.com/examples/ShapesOfCSS/

要素に影をつける
http://www.paulund.co.uk/creating-different-css3-box-shadows-effects
アイコン系のCSSリンク
CSS3 Image Styles

beforeとafterの説明。超絶わかりやすい
http://www.hongkiat.com/blog/pseudo-element-before-after/

JSで要素を追加。ついでにクラスも二つくらいつけちゃうし、style属性も決めちゃう
いつもはjQueryでやってるんだけど、事情でJSだけでしからやらないといけないときのために

var p = document.createElement('p');
p.innerText = 'Hello, This is SAMPLE SENTENCE';
          
// クラスを追加
p.classList.add('red');
p.classList.add('sample');

// sytle属性を追加
p.style.color = 'red';
p.style.fontSize = 35;

document.getElementById('sample').appendChild(p);

テキストの色を背景色で変えるプラグイン
http://www.kennethcachia.com/background-check/index.html

要素を反転させるjQueryプラグイン
http://lab.smashup.it/flip/
絶対役に立つ

サーバー関連

ssh ... -vvv
とかくとなにをやっているか見せてくれる。
早く理解できるようになりたい

sshのconfigファイルをいじくって、簡単にssh接続できるようになった!
Permission denied(publickey)とエラーが出ていたのだが、こちらの方のエントリーをみて解決!
http://nick.hateblo.jp/entry/20111209/1323455748

自分のサーバーのドキュメントルートを知る
httpd.confをまずみつける
デフォルトではきっと/etc/httpd/conf/httpd.confとある。

そのファイルを開き、DocumentRootを検索
参考→http://www.adminweb.jp/apache/docroot/index1.html

サーバーを再起動
sudo service network restart
sudo service httpd restart
httpd.confをいじったときはこれが必要
参考→http://blog.livedoor.jp/yuppi0412/archives/22480485.html

ディレクトリにアクセスされたときに表示するファイルを決める
httpd.confを編集
DirectoryIndexを検索して編集
参考→http://www.linuxmaster.jp/linux_skill/2013/07/apache-4.html

アパッチのバージョンを確認
httpd -v

所用であるディレクトリのときにこちらにアクセスさせたいというときがあり、.htaccessをいじっていたのだが、apacheで.htaccessが聞いていなかったためにひどいめにあった

httpd.confの<Directory /var/www/html>
のAllowOverrideをAllに変更する
参考→http://www.masatom.in/pukiwiki/Apache/.htaccess%A4%CE%CD%AD%B8%FA%B2%BD/

ログファイルの出力先
/var/log/httpd/error_log

php.iniの場所
/etc/php.ini

mysqlの設定ファイル場所を調べる
 mysql --help | grep -A1 "Default options"

左から順に表示される
参考→http://qiita.com/kengos@github/items/2ede226c1bec86459920

Basic認証
プログラムからも出来たらしい
参考→http://www.phpbook.jp/tutorial/auth/index1.html

CodeIgniterでやる方法も調べたからのせておく
参考リンク
http://immature.01kawa.com/php/codeigniter/codeigniter%E3%81%A7basic%E8%AA%8D%E8%A8%BC/
http://codeigniter.jp/user_guide_ja/general/creating_libraries.htmlhttp://codeigniter.jp/user_guide_ja/general/creating_libraries.html(ライブラリー)

エンティティ化とmysqlインジェクション

mysqlインジェクションはPDOを使って対策。これも結構使えるようになるまでめんどくさかったけどもう覚えてない。

んじゃ、エンティティかのコードをば。言語はphp

 function entity ($str) {
         $search = array('<', '>');
         $change = array('<', '>');
         return str_replace($search, $change, $str);
 }

Unixのパーミッションの見方

Unixだとls -laで現ディレクトリ配下のパーミッションが見れる。

今までどうやってみるかしらなかったので調べた。

パーミッション、読み権利、書く権利、実行する権利についてはこちら。
非常にわかりやすい
http://www.din.or.jp/~raelian/unix_permission.html

説明へ、ls -laで以下の表示があったとする

-rw----r-- 1 root root 2197 Aug 29 13:44 index.html 
-rwxrwxr-x 1 root root 144 Aug 29 13:45 sample.html 
drwxrwxrwx 6 root root 512 Jun 22 18:46 top.html

それぞれの記号の説明

「r」   =  readable       よみこみ可能
「w」  =  writable        書き込み可能
「x」  =  executable    実行可能

1桁目 -- ディレクトリかディレクトリじゃないか、ディレクトリだったら「d」違ったら「-」が表示される

2 - 4桁目 ファイル所有者の説明

5 - 7桁目 グループに所属するユーザー

8 - 10桁目 グループに所属しないユーザー

以上でした

<追記>

パーミッションを変更したいときはchmod パーミッションコード (読み書き実行すべてのユーザーにオールオッケー) パス

を実行すればとりあえずmkdir() Permission deniedというエラーは出なくなるでしょー

多分大変な問題を引き起こすはずだけど、まだそこは勉強不足

Wednesday, August 7, 2013

[iPhoneアプリ]画像を縮小する

iPhoneの画像をサーバーに保存する際に画像サイズが大きくなってしまうので、iPhone側で画像を縮小しようと思います。


// 横200pxの画像にtrim
- (UIImage *)trimImage:(UIImage *)image {
    UIImage *trimmedImage;
    float ratio = image.size.width / 200;
    
    CGSize sz = CGSizeMake(image.size.width * ratio,
                           image.size.height * ratio);
    UIGraphicsBeginImageContext(sz);
    [image drawInRect:CGRectMake(0, 0, sz.width, sz.height)];
    trimmedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return trimmedImage;
}

このリンク先がとても役立つ→http://iphone-tora.sakura.ne.jp/uiimage.html

Monday, August 5, 2013

データを読み込むときのロード画面を作る

前回の更新から長らく時間が空いてしまいましたが、最近は開発を再会しております。

今回はデータを読み込むときの待機画面を作ってみましょう
これです


こんな感じに書けばOKです。
下のviewへのタッチイベントも吸収してくれます

    UIView *loading_view = [[UIView alloc]initWithFrame:self.view.bounds];
    loading_view.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
    
    UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    indicator.center = CGPointMake(loading_view.bounds.size.width / 2, loading_view.bounds.size.height / 2);
    
    [indicator startAnimating];
    [loading_view addSubview:indicator];
    
    [self.view addSubview:loading_view];


あとちゃんと読み込んでるよーとユーザーに伝えるために、上のちっちゃいくるくるも動かすと良いですね。これです。

    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];