ひとりまとめ

もろもろのメモ

Vue.jsを使ってみたい!

Vue.jsの2.0プレビュー版が出たという記事を読んで、今更ながらVue.jsを使ってみました。「どうもデータを表示したりするのが簡単らしい」程度の前知識でスタートです。

しかも2.0ではなく1.0で、あくまでも初心者の入門、基礎の基礎ということで。

 

準備

とりあえず使ってみたいので、CDNを使って読み込みます。HTMLファイルのheadあたりで、これを記述。

<script src='https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.21/vue.js'>

※この時の安定版の最新が1.0.21なのでこれにしてみました。

 

仕組み

Vueというのをnewして使います。この人の変数とHTML内の記述を紐付けておくと、変数に合わせて描画を更新する仕組みのようです。(ざっくり)

なので、このオブジェクトをnewして以降しか機能しないので、最初からこれで描画するぞ!という場合は

window.onload = function() {}

の中で作っておいたりしないと、あれ??ってことになります。当たり前か。

 

やってみる

今回試してみようと思うのは、次のようなものです。

・ページ表示時点で、同じ変数の値を同一ページ内の複数の場所に表示する

・ボタンを押したら値が変わる

 

色々手抜きしたいので、HTMLファイルの中にscriptタグを書いて、そこで試してみることにしました。以降は<head></head>の間に書いた↓の中で書き進めて行くことにします。

<script>

// (1)
window.onload = function() {

  // (2)

}

// (3)

</script> 

先に、表示する場所を記述しておきます。<body></body>の間に適当に。

基本は{{ 変数名 }}という書き方のようです。

<div id="demo">

  <h1>{{ message }}</h1>

  <p>{{ message }}</p>

  <p>{{ num }}</p>

  // (4)

</div>

// (5)

(4)と(5)には後でボタンをおきます。

 

単に描画するだけでおしまいなら変数に入れなくてもいいのだけど、色々値を書き換えることを考慮して、demoという名前の変数に入れてみます。とりあえずこんな感じ。

varを先に宣言してるのは、この後(3)で書こうとしてるfunctionからも見えるようにするためです。

// ここは(1)に

var demo;

--------

// ここは(2)に

demo = new Vue({
  el: '#demo',
  data: {
    message: '最初のメッセージ',

    num: 3,
  },

  methods:{

    change: function(val){

      this.num = this.num * val;

    },

  }

});

newするときに渡す配列の値で、色々定義できるということみたい。ここで僕がよくやらかすのが、間の「,」を忘れること。何でもかんでも「,」入れとこ。

el

値を変えたい場所を指定します。 divのidでdemoと言うのを指定したので#demoと書いてます。classなら.demoのように。ただし、classであっても複数の場所に指定していると最初に登場する領域しか対象にならないっぽげ。なので結局idの方が用途にあってそう。

data

変数。インスタンス変数ってやつか?

methods

メソッド。ここでは自分の変数(this.num)の値を引数をもとに書き換えてます。この中に書いてもいいし、ここから別のfunctionを呼び出してもOK。returnで値を返すこともできるので、普通に使える。

 

とりあえずこのままこのファイルをブラウザで開くと、{{ message }} と{{ num }}の場所に値が表示されてるかと思います。何箇所書いてもOK!便利!注意すべきは、elで指定しているidあるいはclassの下に書かれている必要があるということです。

(2)のwindow.onload = function() {}の中に書いてるので、読み込んだら即生成されてるために、表示することができてます。

 

 

さて、ここまでなら別にVue.jsじゃなくてもいいやんってことで、値を変えて表示も変わるというのを試します。

まずは、インスタンスのメソッドを使って値を書き換えてみます。

 

ここで一つ、ボタンにイベントを仕掛ける方法。ボタンから直接そのインスタンスのメソッドを叩くには、さっきの「el」の下に入れておかないとダメ。

ということで、(4)に次のように書きました。

<input type="button" v-on:click="change(3)" value="numを変える" />

v-on:clickというので、クリックイベントを引っ付けてます。属性を書き換えるときは「v-なんちゃら」というのが使えるようです。ある値の時だけ表示するとかもできるみたい。ここでは引数「3」を一緒に渡してます。

methodsの下で書いてるchangeというメソッドの中で変数numを更新しているので、ボタンを押すたびに{{ num }}と書いた箇所の値が更新されていきます。

 

メソッド使って値を書き換えるのも面倒くさいなーって思ったら、直接変数を更新することもできるようです。(他から弄れるべきかどうかは考えるとして、ひとまず)

次はその方法。(5)に次のようなボタンを設置します。

<input type="button" value="messageを変える" onClick="changeMessage('別のメッセージ');"/>

onClickで指定したfunctionを(3)の場所に次のように書いてみました。

function changeMessage(val){
  demo.message = val;
}

ここでdemoというふうにいきなり使えてるのは、(1)でvar demo;のように宣言してるためです。そして変数messageに=で代入することでも、値を更新できます。ここでも変数を更新することで、すべての表示箇所の値が書き換わります。

 

 

他にもループが作れる「v-for」とか、条件によって表示/非表示を変えらる「v-show」などがあって、ちょっと何かやるには便利そうっす!

アニメーションでグリグリ動かすとかっていうのではなく、データを動的に表示しまくったりするときには楽そうかなーと思いました。

MacでOctaveを使いたい!

機械学習と言うのをかじってみたくて調べてたら、「Octave」っていうMATLABみたいなGNUなものがあるらしいことを知りました。

これを使えば僕も今日から機械学習!(甘い&誤解)

と言うことで早速入れてみました。

苦難でした。

訳も分からず試したため僕自身は前後してしまった作業が一部ありますが、どうもこういう順番でやればよかったっぽい と言う清書で。

 

■環境

El Capitan

 

■手順

1)Homebrewを入れる

詳しくはこちらで。

qiita.com

僕のはまりポイントとしては、以前入れていたHomebrewをアップデートしようとしたら「パーミッション ガー」と言われてしまいました。そのためこういうのを実行。

sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local 

 

2)AquaTermを入れる

これはdmgで配布されてるので、それを。

https://sourceforge.net/projects/aquaterm/files/latest/download

 

3)octaveなど色々入れる

ここからはこのページを参照。ここに書かれてる通りに実行した。

https://kiskeyix.org/articles/605

 

4)環境変数を設定

このままでもとりあえず動くのだけど、グラフを描画するたびに

warning: could not match any font: *-normal-normal-10

warning: ft_render: unable to load appropriate font

 と言うアラートが出る。ここによると、どうもパスが通ってないらしいとのこと。

stackoverflow.com

なので、.bash_profileに以下の内容を設定してみる。

export FONTCONFIG_PATH=/opt/X11/lib/X11/fontconfig

 これでアラートが消えた。

よくやらかしてしまうのが、これを書き換えただけでは設定が反映されないので、

source .bash_profile

をやるってことか。

 

5)fig2devを入れる

画像にして保存しようとすると次のようなアラートが出た。

warning: print.m: fig2dev binary is not available.

Some output formats are not available.

warning: called from

    __print_parse_opts__ at line 385 column 9

    print at line 288 column 8

そのため、こちらを参考にhpmebrewでfig2devを入れる。

www.aruneko.net

が、僕の環境では「brew install transfig」を実行した時に

Error: No available formula with the name "imake" (dependency of mistydemeo/xfig/transfig)

と言うのが出た。アラートの最後を見ると

brew install homebrew/x11/imake

と書かれていたので、これを実行。その後「brew install transfig」として、無事にインストールできて、アラートも消えた。

 

 

と言うことで、これでバシバシ機械学習るぞー!

 

 

注意

ただし・・・

この環境でprintなんちゃらとやってグラフの画像を保存しようとすると、グラフ部分が真っ黒になってしまった。どうやら利用しているgnuplotというのの5だと発生してしまうらしい。4.6.6を入れろと。。

www.kegamin.com

  

 

WordPress各ページのURLとテンプレートを知りたい!

またまたWordPress

こうして久しぶりにいじるために、毎回「あれ?このページのテンプレートってどれ?」「URLはどうなるんだっけ・・・」というのがしょっちゅうです。

そこで、備忘録。デフォルトの状態だと、どうもこうなっているらしいというのをまとめてみました。

なお、テンプレートについては優先度があり、該当の名前のテンプレートがなければ次のテンプレートを探しますが、ここでは簡単のため1つだけ記載しています。

 

まず、URLを決める設定はここにあります。

 設定>パーマリンク設定

これがURL全体に影響するので、今どうなってるかを確認します。

 

ということで、それぞれのページについて。 

ページの内容 URL テンプレート
"投稿"の個別の記事ページ 設定>パーマリンク設定で決めたURL single.php
"投稿"のアーカイブページ TOPページ top.php
"カスタム投稿タイプ"の個別の記事ページ /{カスタム投稿タイプのslug}/{タイトル} single-{カスタム投稿タイプのスラッグ}.php
"カスタム投稿タイプ"のアーカイブページ /{カスタム投稿タイプのslug}/ archive-{カスタム投稿タイプのスラッグ}.php
カテゴリーのアーカイブページ /category/{該当カテゴリーのスラッグ}/ category-{該当カテゴリーのスラッグ}.php
カスタムタクソノミーのアーカイブページ /{カスタムタクソノミーのslug}/{該当のタームのslug}/ taxonomy-{カスタムタクソノミーのslug}-{該当のタームのslug}/.php

 

面倒くさくなって個別ページでアーカイブを作ったりしてしまってましたが、ある機能は使ったほうがいいですよね。。

 

サイトの拡張性を飛躍的に高める WordPressプラグイン開発のバイブル

サイトの拡張性を飛躍的に高める WordPressプラグイン開発のバイブル

 

 

shopifyで表示をちょっとカスタマイズしたい!

海外のネットショップ作成サービスに「Shopify」というのがあります。

www.shopify.com

 

ネットショップに必要な一通りの機能を備えていて、見た目のテーマを選んで商品を登録するだけで、すぐに使うことができるサービスです。

このテーマ自体も種類があり、また、様々なデザインのテーマの販売も行われているため、設定画面からぽちぽち選んでいくだけで、大抵のことは出来てしまうようです。

 

ただ、そんな時でも「ちょーっとここにこう言う表示を出したいんだよなー」ということはあります。今回、まさにそういうちょっとだけイジリたい事態になったため、調べたことを備忘録。

 

どういう作りなのか?

Rubyのliquidというテンプレートエンジンが使われているようです。なので、文法に困ったらRubyで検索!

 

どこでいじれるのか?

管理画面から「Online Store」

f:id:g2_girichan:20160123124649p:plain

「Themes」を選んで

f:id:g2_girichan:20160123124740p:plain

目的のテーマを見つけて、「・・・」というボタンを押してプルダウンから「Edit HTML/CSS」を選びます。

f:id:g2_girichan:20160123124904p:plain

 

ファイル構成は?

・Layout:ページ全体の構成

・Templates:各ページのテンプレート

・Snippets:テンプレートから呼び出されるメニューなどの構成パーツ

・Assetes:cssや画像など

・Config:設定系のjson(ぽい。きちんと調べてません・・・)

・Locales:言語ファイル(ぽい。これまたきちんと調べてません!)

ページの一部をちょこっとイジル分には、TemplatesとSnippetsを触ればOKそうです。

 

いじり方

・テンプレート

見ていくとすぐわかると思いますが、主なページはそれぞれこんな感じ。

 TOPページ:index.liquid

 商品詳細ページ:product.liquid

 カテゴリーの商品一覧ページ:collection.liquid

 

続いて、処理のいろいろ

・任意のSnippetを呼び出す

 {% include '呼び出すSnippetのファイル名(拡張子の.liquidは不要)' %}

 

・変数の値を表示

{{ 変数名 }}

WordPressDrupalをイメージするとわかりやすいかも。システムがすでにテンプレートに引き渡している変数がいろいろあります。

既存のテンプレートを参照することでわかると思いますが、shopifyでよく使う変数の一部を列挙してみます。

 カテゴリー名:collection.title

 商品の名前:product.title

 商品の詳細:product.description

 

・複数の値が入った中身をループで処理

一覧ページなどや、商品自体に複数ついているタグなどは、ループを回して処理をしたりします。ある商品のタグをループして全部表示するとかってときは、こんな感じ。

 {% for tag in product.tags %}

  {{ tag }}

 {% endfor %}

 

・変数に値を入れる

テンプレートの中で何らか変数を使いたい場合は、こうしました。

 {% assign hoge = 'ほげ' %}

これを後でifで処理したり表示させたり。

 

・ある値を処理して表示

フィルタと言って、シェルのパイプみたいな感じで、値を利用していけるようです。

こちらを参考にさせていただきました。

www.slideshare.net

 

 

ほんの少し書き換えただけで、後で忘れてしまいそうだったため、ひとまずすぐ思い出せる程度にメモでした。

WordPressのカスタムフィールドを条件にして投稿を抽出したい!数値で!

Drupalについで、今度はWordPress

タイトルと本文以外の項目を入力できる「カスタムフィールド」というのがありますが、ここに入力した内容をもとに投稿を抽出したい場合の話です。

 

※WordPress4.2.2で検証しています。

 

まずは使う関数について。

get_posts()というのを今回は利用します。これに連想配列を渡してあげると、その条件にあった投稿が取得できるという仕組みです。

 

さっそくその指定する条件についてですが、気がつくのに時間を要した重要事項が1つあります。それは「普通に指定すると、文字列として判定されちゃう」というもの。それに気がつかず、なーんかおかしな結果が返ってくるなーと思って悩んでいました。。

 

ということで、その条件指定方法です。

$args = array(

    'meta_query' => array(

        'relation' => '[ORかANDで、これから記述する条件の関係を指定]',

        array(

            'key' => '[カスタムフィールドの名前]',

            'value' => '[比較したい値]',

            'compare' => '[以上以下などの記号]',

            'type' => '値の判定方法',

        ),

        array(

        [必要な数だけ↑のように条件をつらつらと書く]

        ),

    )

);

$posts = get_posts($args);

 

実際の記述でいうと、こんな感じ。

$args = array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => '価格',
            'value' => '5000',
            'compare' => '>',
            'type' => 'NUMERIC',

       ),

       array(
            'key' => '価格',
            'value' => '10000',
            'compare' => '<',
            'type' => 'NUMERIC',
       ),
    ),
);
$posts = get_posts($args);

 

1つの条件で抽出するだけなら、meta_queryを設定しなくても、meta_keyとmeta_value、meta_compare、meta_typeという名前で指定することで対応できました。また、上では数値の比較をやっていますが、DATEなんかも使えるようです。

 

compareで不等号などが使えるのでつい何気なくやってはまってしまいました。

Drupalの自作モジュールで表示する文字列も翻訳したい!

Drupalで、自作モジュールを作っておりました。

日本語と英語、どちらでも対応させてみたいと考えました。

調べてみるとt()と書けば良いとかなんとか。

むむ?

 

ということで、初歩的ですが翻訳までの道のりを備忘。

 

1)モジュールを入れる

Localization updateというモジュールをインストールします。実際に必要なのは、これを有効にすると使うことになるLocaleというモジュールみたい。

(これらはサイトを日本語化していれば、いれているハズ)

Localization update | Drupal.org

 

無事に入れ終わったら有効にしておきます。

 

 

2)自作モジュールに記述

モジュール内の好きな場所に

 t('<翻訳して使いたい文字列>')

で記述していきます。ただこれだけ。

例えば英語と日本語で翻訳したい場合、ここでは英語で記述しておく必要があるみたい。対応する日本語訳はこのあとのステップで記述します。

 

 

3)日本語訳を記述

環境設定 > インターフェースを翻訳 > 翻訳タブ を押します。

「含まれる文字列」の欄に2で使用した<翻訳して使いたい文字列>を入力してEnterキーを押すと、下の一覧が更新されてその文字列が出てくるはず。「編集」を押してその日本語訳を入力します。

 

 

すでに翻訳があるものの利用方法は知っていたのですが、いざ自分で自由に文字列を使うにはどうするんだろ?とふと分からなくなってしまったため、改めて試してみました。

 

なるほど、楽ちんでした。

トロピコ5をMacでも日本語で遊びたい!

SteamやAppStoreで購入可能なトロピコ5(TROPICO5)。

公式には日本語に対応していませんが、有志の方々の努力により日本語で遊ぶことができます。

ただ、さすがにWindows版の情報が多くて、Mac版の方法はなかなか見つからず。。

あちこち置き換えてみてどうにかできたのでメモ。

 

参考:

http://anago.2ch.net/test/read.cgi/game/1402643200/325

日本語化 - トロピコ5 日本語wiki

http://www1.axfc.net/u/3356688

 

 

注意:試しているのはSteam版です。App Store版ではディレクトリが異なると思いますので、参考にどうぞ。

 

1)掲示板にアップしてあるツールをダウンロード

Tropico 5 japaneseというフォルダ一式をDLします。

 

2)フォントを配置

1でDLしたフォルダに入っている

・CommonAssets

・Fonts

の2つのフォルダを

Macintosh HD ▸ ユーザ ▸ (ユーザー名) ▸ ライブラリ ▸ Application Support ▸ Steam ▸ SteamApps ▸ common 

以下にある「Tropico 5」のフォルダの直下にコピーします。

 

※最近のOSXでは、デフォルトでライブラリが非表示になっていますが、FInderのメニューにある「移動」をOptionキー押しながらクリックすることで「ライブラリ」を開くことができます。

 

3)日本語翻訳ファイルを配置

2でコピーしたのと同階層にあるTropico5Steam.appを右クリック→「パッケージの中身を表示」します。

そして、Contents ▸ MacOS直下に以下のフォルダをコピーします。

・CurrentLanguage

 

 

これで、起動すると無事に日本語になりました。

 


Save 50% on Tropico 5 on Steam

Tropico 5

Tropico 5

  • Kalypso Media
  • ゲーム
  • ¥4,000