ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

Visual Studio For Mac キタ━━━━(゚∀゚)━━━━!!

ここからダウンロード

www.visualstudio.com

ダウンロード時間5時間wwwwwwwwww

さっきやっとおわった!!!!

f:id:aipacommander:20161117192509p:plain

!!?

VBが打てるっぽい!!!!!????

すげぇーーーーーーーーーーーーー!!!

f:id:aipacommander:20161117192521p:plain

だがしかしビルドエラー。

target named 'build' not found in the project

ってなに?

どゆこと?(´・ω・`)

Pythonのstatic site generatorで、Pelicanを使ってみた

static site generatorとは?

えーと、、、うん。静的な言語みたいにコンパイルしたHTMLとCSSを上げるやつ。でいいかな。(違うような気がしてきた)

んで、これが必要になったので、ちょっと試してみました。

install

pipで入りました。

$ pip install Pelican Markdown

markdownで記事を書きたい人はMarkdownも入れてあげてください。

とりあえずこれでおk

記事を書く

~/contentってディレクトリの中にmdを追加してください。

$ cat content/keyboard-review.md 
Title: My First Review
Date: 2010-12-03 10:20
Category: Review

Following is a review of my favorite mechanical keyboard.

これが記事になるっぽいです。

ビルド

$ pelican content

すると~/output/の中にソースが吐き出されます。そこをブラウザとかでみてみてください。

サイトが出来上がっているはず。

themeを自分で用意する

で、目的はブログ書くことじゃなくて、ブログサイトをとあるテーマに変更すること。なので、themeを自分で用意する。

ちなみに、テンプレートテーマがいくつかあるらしい。今回は使わない。

テーマのディレクトリを用意します。

Creating themes — Pelican 3.6.3 documentation

mkdir -p themes/custom-theme

んで、次は~/pelicanconf.pyに設定する。

$ vim ~/pelicanconf.py
# Specify name of a built-in theme
THEME = "/Users/user/project/pelican-sandbox/themes/custom-theme"

これでおk。再ビルドしたら、うまくいくと思います。

scssを使うためプラグインをロードする

scssを使いたいと思った人。プラグインがあります。

プロジェクトディレクトリにgit cloneでpluginリポジトリを落とします。

$  git clone https://github.com/getpelican/pelican-plugins.git

Pythonに必要なモジュールもインストール

$ pip install webassets cssmin

んで、設定ファイル~/pelicanconf.pyに追記

PLUGIN_PATHS = ['pelican-plugins']
PLUGINS = ['assets']

これでよし

また、使い方はテンプレートにこう書けばよい

        {% assets filters="cssmin", output="css/style.min.css", "scss/reset.scss", "scss/style.scss" %}
            <link rel="stylesheet" href="./{{ ASSET_URL }}">
        {% endassets %}

assetsがテンプレートのタグで、filtersが追加で通すpluginとかで、outputが吐き出されるファイル名で、そのあとのreset.scssstyle.scssはビルドされるファイル群です。

また、outputで吐き出されたファイルは、ASSET_URLに入ります。

これでビルドして問題なければおkです。

とりあえず今日はここまで。

使ってみて

CSSがそんなに得意じゃないので、ベンダープレフィックスとか使いたいときにどうしよう?ってなる。いつもはこういうのはnodeのgulpを利用しているので。

となると、templateはgulpで作成して、記事書くのはpelicanにお願いしようかしら。

めんどくさい。

参考になったリンク

クイックスタート Quickstart — Pelican 3.6.3 documentation

テンプレートのフォーマット Creating themes — Pelican 3.6.3 documentation

記事書くときの参考

http://docs.getpelican.com/en/stable/content.html

設定ファイルの説明

Settings — Pelican 3.6.3 documentation

テンプレートのシンタックス

http://jinja.pocoo.org/docs/dev/templates/

【CakePHP3.x】TableクラスでEnumを使う

DBでステータスのフィールドを用意した場合、0とか1とかでフラグを用意するんだけど、それじゃいまいちよくわからない。

なので、定数にして、DELETEとかCANCELとか名前を付けれるようにする。

CakePHP2.xでは、~/Config/const.phpってファイルを作成して、そこで管理していました。

しかし、定数が多くなると管理が面倒くさい。

CakePHP3.xのModelにはTableってクラスがある。そこで管理すればいいんじゃね!? とひらめく(?)

ぐぐったら、下記リンクが参考になった。

qiita.com

あんまりしっくりこなかった。というのも。

<?php
// ... 省略
define('DELETE', 0);
define('CANCEL', 1);

Configure::write('FLAG', array(
    DELETE => '削除',
    CANCEL => 'キャンセル'
));

CakePHP2.xでは、定数にラベルを用意していたのだ。カスタムしないといけないなと思う。

では、プラグインはないだろうか? ありました。

github.com

しかし、これはTableレベルでのEnumなのだ。できればクラスに書けるプロパティベースのがいい。

あった! ありがとうございます m(_ _ )m

k1low.hatenablog.com

さっきのプラグインを使った上でのプラグインである。

まず、CakeDC/Enumをインストールして、ロードするように設定する。

$ composer require cakedc/enum:~1.0
$ bin/cake plugin load CakeDC/Enum

次に、作っていただいたプラグインをインストール

$ composer require k1low/property-enum

あとは必要なTableクラスと~/Controller/AppController.phpに追記するのみ

  • ~/src/Model/Table/AdminUsersTable.php
<?php
// ... 省略
class AdminUsersTable extends Table
{

    public $enums = [
        'status' => [
            'unapproved' => 'unapproved' // 未承認
        ]
    ];

    public function initialize(array $config)
    {
        parent::initialize($config);
        // ... 省略
        $this->addBehavior('PropertyEnum.Enum', ['lists' => [
            'status' => [
                'strategy' => 'property'
            ]
        ]]);
// ... 省略
  • ~/src/Controller/AppController.php
<?php
// ... 省略
    public function initialize()
    {
        // ... 省略
        $this->loadComponent('PropertyEnum.AutoSet');
     }
// ... 省略

これでできた!

と、思われた。。。

ラベルをつけるの忘れていた。。。あと多言語化が必要なので、翻訳も取り入れたい。どうしたものか。。。

綺麗じゃないと思うんだけど、初期化の処理にプロパティに追加する方法を選んだ。

<?php
// ... 省略
class AdminUsersTable extends Table
{

    public $enums = [];

    /**
     * Initialize method
     *
     * @param array $config The configuration for the Table.
     * @return void
     */
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->enums = [
            'status' => [
                __('unapproved'),
                __('approved'),
                __('cancel')
            ]
        ];
        // ... 省略
        $this->addBehavior('PropertyEnum.Enum', ['lists' => [
            'status' => [
                'strategy' => 'property'
            ]
        ]]);
    }
// ... 省略

これでよし(一応)

設計大事

「よーし、あとは集計の画面を作れば。。。。」

(・ω・`・・・・?(なんかおかしいぞ。。。?)

・・・・!( ゚д゚)ハッ!

あー、やっぱり設計、というかタスクの整理整頓大事だな。。。

いま、ちょっとしたデモ画面作っていたんだけど、どうやらユーザーの意図とは違う画面を作っていたらしい。

この「どうやら」ってのが本当に自分のダメなところで、よく考えてみるとすぐわかることである。

俺はこういうことがよくある。難しいことやちょっと考え込むことが嫌いで、てきとうなところでスタートして、やっているうちに気づく。

むー。。。。このままじゃダメだ。これじゃダメや! これ仕事だったらおしまいや!(なぜ大阪

やっぱり最初は必要な情報を整理して、ちゃんとタスクにするクセをつけよう。。。あー、ちきしょー。

というわけで、今の気持ちを忘れないようブログっとく。

気分転換に久々に走ってくる。