【Mac】標準の画面分割機能SplitViewに使いづらさを感じている全てのMacユーザー向け
Macで画面分割できるアプリ「ShiftIt」が神がかっているのでご紹介。超今更感あるかもだけど。自分がわりと半年前くらいにやっと使い始めたもんで。 github.com
Macの画面分割って標準だとSplitViewがあるけど、フルスクリーンになっちゃってメニューバーとか隠れちゃうしショートカットも使えないしぶっちゃけ使いづらい。そんな悩みを完全に解消してくれるのがShiftIt。
詳しいインストール方法などは下記サイトの目次#3以降をご参照ください。とても分かりやすく説明されてます。
iphone-trouble.biz
全てのMac画面分割loverに幸あれ。
【CakePHP3】簡易あいまい検索
ドットインストールのCakePHP3レッスンにお世話になり始めて2日目。
基礎を学びつつ、応用して簡易あいまい検索機能(GET送信)を作りました。ブログを想定。タイトルにでも本文にでも検索ワードが含まれていれば該当記事がヒットする仕様。
# PostsController.php public function index() { if (isset($_GET['search'])) { # 検索ワードがGETで渡ってきていたら $posts = $this->Posts->find('all')->where([ 'OR' => [ ['title LIKE' => '%'.$_GET['search'].'%'], # 検索ワードが含まれるタイトルを検索 ['body LIKE' => '%'.$_GET['search'].'%'] # 検索ワードが含まれる本文を検索 ] ]); } else { # 検索実行前は全記事一覧表示 $posts = $this->Posts->find('all'); } $this->set(compact('posts')); }
# index.ctp <?= $this->Form->create(null, ['type' => 'get']); ?> <!-- GETで送信指定 --> <?= $this->Form->control('search', ['label' => 'キーワード検索', 'default' => $this->request->query('search')]); ?> <!-- 検索実行後にフォームに入力ワードを保持 --> <?= $this->Form->button('検索') ?> <?= $this->Form->end(); ?> <table> <tr> <th>ID</th> <th>タイトル</th> <th>本文</th> </tr> <?php foreach ($posts as $post) : ?> <tr> <td><?= h($post->id); ?></td> <td><?= $this->Html->link($post->title, ['action' => 'view', $post->id]); ?></td> <td><?= h($post->body); ?></td> </tr> <?php endforeach; ?> </table>
CakePHPはOR句の書き方が複雑でややこしいね。
【CakePHP3】Rails独学者が初めてCakePHP3を触って得た超基礎知識とRailsとの比較
これまでRailsを独学してましたが、業務でCakePHP3を触ることになったのでドットインストールにお世話になった1日目。
大前提の知識として大事だったこととして、CakePHPでは、Controller内で受け取ったデータをViewに渡す処理を書かなければいけないという点が重要。
# Controller/PostsController.php # ブログの投稿記事一覧を取得する場合 $posts = $this->Posts->find('all') ->order(['created' => 'DESC']); # いろんな条件メソッドチェーンで繋げられる # この$postsはそのままではViewでは使えないので、Viewでも$postsという変数(または任意の名前)で扱えるようにしなくてはいけない $this->set('posts', $posts) # OR 全く同じ処理でこうも書ける→ $this->set(compact('posts'))
# Template/Posts/index.ctp <ul> <?php foreach ($posts as $post) : ?> <!-- CakePHPではhtmlspecialchars()をh()と略して記述できる --> <li><?= h($post->title) ?></li> <?php endforeach; ?> </ul>
$this->set()
が、Railsでいうところのインスタンス変数に代入する的な感じだと思う。同じ処理をRailsで書くとこう↓
# controllers/posts_controller.rb @posts = Post.all.order('created_at DESC')
# views/posts/index.html.erb <ul> <% @posts.each do |post| %> <li><%= post.title %></li> <% end %> </ul>
フォルダ構成もファイルの命名規則も微妙に違うからわりと混乱する><
【Ruby】英単語しりとりプログラム
Rubyの個人練習で、英単語しりとりができる超簡単なプログラムを書いた。 以下、簡単な説明付きでコード晒します。色々雑なので要注意。
def game(word) array = ['elephant', 'eggplant', 'reader', 'real', 'station', 'small', 'link', 'lion', 'tiny', 'time'] # 候補単語の配列(実用時には要カスタマイズ) first_letter = word.slice(-1) # 入力単語の最後の一文字を取り出す options = array.grep(/^#{first_letter}/) # 候補単語のリストアップ puts options.sample # 候補単語リストからランダムで1つ出力 end game('apple') # => eggplant
万一間違いがあった場合はコメント欄よりご指摘ください。
【Rails】ターミナルを使わずにルーティング一覧を見やすく表示する裏技
開発中、ルーティングのネストしたりしててパスやヘルパーが訳わからなくなってしまった時とか、単純にルーティング一覧を見たい時に使える裏技のようなもの。
方法はとても簡単。開発中のアプリで絶対に存在しないようなURLにわざとアクセスしましょう。localhost:3000/yayとかなんでもいいです。すると当然Railsのエラーページが表示されますが、そこにルーティングの一覧が見やすく載っています。(スクショの通り)
もちろんターミナルでrake routes
するのが正規方法だけど、それより見やすくて便利じゃないですか...?あとDockerで開発してる場合はrake routes
するだけでもいちいちdocker-compose
コマンド打たなきゃいけなくてめんどくさいというのもある...。
実際のところ裏技でもなんでもないけど。あんまり知られてない方法かな...?と。個人的にはこっちの方がよく使ってます。
余談
この記事を書くにあたってこの方法がどの程度マイナーなのかちょびっと調べてみたら、思わぬ方法を見つけました。ブラウザで確認したい時はlocalhost:3000/rails/infoにアクセスするのが正規方法らしいです。まぁ個人的にはタイプする文字数も少ないしlocalhost:3000/yayで十分ですけど...。
参考文献
【Rails】resourcesが訳わからなくなる人のためのド基本まとめ
ルーティングする際にかっこつけてresources
使うけど、ネストとかしていくうちにprefixもURI patternも段々わけ分からなくなってくる私。毎回ググるのももう疲れたので自分でまとめることにした。似たような人がもし存在するのならばそんな人の役にも多分立つはず。ド初心者のための超基本のまとめなので、shallow
とかそういうワンステップ上っぽいことには触れてません。
resources :posts # メイン7つ全て resources :posts, only: [:◯◯, :△△] # 特定のアクションだけ resources :posts, except: [:◯◯, :△△] # 特定のアクション以外
prefix | verb | URI pattern | controller#action |
---|---|---|---|
posts | GET | /posts | posts#index |
new_post | GET | /posts/new | posts#new |
posts | POST | /posts | posts#create |
post | GET | /posts/:id | posts#show |
edit_post | GET | /posts/:id/edit | posts#edit |
post | PATCH/PUT | /posts/:id | posts#update |
post | DELETE | /posts/:id | posts#destroy |
# ネスト resources :posts do resources :comments end
prefix | verb | URI pattern | controller#action |
---|---|---|---|
post_comments | GET | /posts/:post_id/comments | comments#index |
new_post_comment | GET | /posts/:post_id/comments/new | comments#new |
post_comments | POST | /posts/:post_id/comments | comments#create |
post_comment | GET | /posts/:post_id/comments/:id | comments#show |
edit_post_comment | GET | /posts/:post_id/comments/:id/edit | comments#edit |
post_comment | PATCH/PUT | /posts/:post_id/comments/:id | comments#update |
post_comment | DELETE | /posts/:post_id/comments/:id | comments#destroy |
index
とcreate
が同じprefixとURI pattern(HTTPメソッドで送信先を使い分ける)
show
とupdate
とdestroy
が同じprefixとURI pattern(HTTPメソッドで送信先を使い分ける)
多分慣れてくるとshallow
あたりを理解したくなってくるんだと思う。そんな時に読みたいメモ。
resources を nest するときは shallow を使うと幸せになれる - Qiita