牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

django-ckeditor の画像アップロードでハマったメモ

(django1.8, python2.7)

手順

ここ に書いてあるけど...

  1. Add ckeditor_uploader to your INSTALLED_APPS setting
  2. Add CKEDITOR_UPLOAD_PATH = "uploads/" setting
  3. Add (r'^ckeditor/', include('ckeditor_uploader.urls')), project's urls.py
  4. Install pillow and Add CKEDITOR_IMAGE_BACKEND = "pillow" setting

わかりづらかった箇所

models.py

wysiwyg editor 使う field を下記のように変更する

from django.db import models
from ckeditor_uploader.fields import RichTextUploadingField


class Hoge(models.Model):
    contents = RichTextUploadingField(u'内容', blank=True, default='')

forms.py

forms.Textarea(...) ではなく

forms.CharField(widget=CKEditorWidget()),

CharField!

ほか

画像アイコンを押すと アップロード タブが表示されてアップできるようになる。

リンク

https://github.com/django-ckeditor/django-ckeditor#required-for-using-widget-with-file-upload

Golangのコマンドラインツールパッケージ urfave/cli を使って御神籤を作ってみるメモ

(glang1.6)

Install

$ go get github.com/urfave/cli

code

package main

import (
    "fmt"
    "math/rand"
    "os"
    "time"

    "github.com/urfave/cli"
)

func suffle(arr []string) {
    rand.Seed(time.Now().UnixNano())
    n := len(arr)
    for i := n - 1; i > 0; i-- {
        j := rand.Intn(i + 1)
        arr[i], arr[j] = arr[j], arr[i]
    }
}

func main() {
    app := cli.NewApp()
    app.Name = "omikuji"
    app.Usage = "Get today's fortune!"
    app.Version = "0.1"

    app.Flags = []cli.Flag{
        cli.StringFlag{
            Name:  "level",
            Value: "normal",
            Usage: "Fortune level, it is hard, easy and normal",
        },
    }

    app.Action = func(c *cli.Context) error {
        fortunes := []string{
            "Dai-kichi",
            "Kichi",
            "Chu-kichi",
            "Shou-kichi",
            "Sue-kichi",
            "Kyou",
            "Shou-kyou",
            "Dai-kyou",
        }

        if c.String("level") == "hard" {
            fortunes = []string{
                "Dai-kichi",
                "Dai-kyou",
            }
        } else if c.String("level") == "easy" {
            fortunes = []string{
                "Dai-kichi",
                "Kichi",
                "Chu-kichi",
                "Shou-kichi",
                "Sue-kichi",
            }
        }

        suffle(fortunes)
        fmt.Println(fortunes[0])

        return nil
    }

    app.Run(os.Args)
}

Build

$ go build omikuji.go

Run

$ ./omikuji
Sue-kichi
$ ./omikuji --level=easy
Kichi
$ ./omikuji --level=hard
Dai-kyou
$ ./omikuji --version
omikuji version 0.1
$ ./omikuji --help
NAME:
   omikuji - Get today's fortune!

USAGE:
   omikuji [global options] command [command options] [arguments...]

VERSION:
   0.1

COMMANDS:
GLOBAL OPTIONS:
   --level value  Fortune level, it is hard, easy and normal (default: "normal")
   --help, -h     show help
   --version, -v  print the version

参考