2016年11月20日 星期日

[聖地巡禮] 長騎美眉 第三話 (ろんぐらいだぁす!)

凌晨3:44


這次跑的是第三話的路線

分別是「大垂水峠」和「ヤビツ峠」,所以分兩次跑 XD

Part 1 : 「大垂水峠」
這是官方給的路線圖:

動畫裡出現的場景只有「長尾山」那一段
如果只是單獨來朝聖的話
是可以從長尾出發就好 XD


( 前半段是路途出現的風景,後半才有動畫出現的場景 )

2016年10月31日 星期一

[聖地巡禮] 長騎美眉 第二話 (ろんぐらいだぁす!)

清晨7:12

2016年10月20日 星期四

[Golang] 使用govendor管理packages

晚上10:02
使用govendor管理golang packages

前言:
因為工作使用Go當backend, 想當然一開始要把環境建構起來,
當時的專案裡,有一份環境建構的文件,
照著文件做,結果環境卻build failed !?

因為都是用 go get github.com/xxxx/packages 下載,
因為某些套件的更新,導致一些原本可以用的method變得不相容,
所以需要一個package管理的套件。

從Go的github wiki有列出幾個管理套件,
有試過govender以及glide,感覺govender比較適合我。

從Go 1.6以後就有支援vendor的功能,1.5可以藉由GO15VENDOREXPERIMENT=1的環境變數來實現vendor功能。

廢話有點多,來點實際的範例吧!

範例:
1. 從 https://github.com/kilfu0701/go-vendor-example 下載
git clone https://github.com/kilfu0701/go-vendor-example.git
cd go-vendor-example
export GOPATH=`pwd`
export PATH=$GOPATH/bin:$PATH

2. 安裝govender
go get -u github.com/kardianos/govendor
rm -rf src/github.com src/golang.org                # after install govender, remove "src/github.com" & "src/golang.org"

3. 安裝example需要的packages
cd src/app
govendor sync

4. 回到example主目錄 執行測試
cd $GOPATH
go run src/main.go

打開瀏覽器 http://localhost:8081/

參考資料(refs):
govender github
Goalng套件管理wiki

2014年10月29日 星期三

[NodeJS] domain-parser

晚上7:58
NodeJS - domain-parser
前言:
剛好想要這個功能,但是沒有現成的
有找到php版本,不過判斷的情況不是很完美
只好自己寫一個 XD

套件名稱:
domain-parser
https://www.npmjs.org/package/domain-parser

Version: 0.0.5 (2014/10/29)

Source Code on Github
https://github.com/kilfu0701/node-domain-parser


安裝方式 (Install)
npm install domain-parser

用法 (Usage)
var dp = require('domain-parser');

var result = dp('www.google.com.tw').domainName;
console.log(result);
// google.com.tw

result = dp('direct.jp-bank.japanpost.jp').domainName;
console.log(result);
// japanpost.jp

2014年6月10日 星期二

[Chome] 非chrome web store的套件被強制停用

凌晨2:51

2014年1月3日 星期五

[Python] sqlalchemy 輸出json格式

清晨6:57
sqlalchemy 輸出json格式

前言:
剛好有人發問,寫了一個範例,

做個記錄一下,也許以後自己會用到 XD

範例:
http://pastie.org/8595769
# -*- coding: utf-8 -*-
import hashlib
import sqlalchemy
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime, Table
from sqlalchemy.schema import MetaData
from sqlalchemy.orm import relationship
from sqlalchemy.orm import Bundle
from sqlalchemy.orm import lazyload
from sqlalchemy.orm.session import Session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base

engine = sqlalchemy.create_engine('mysql+mysqldb://user:passwd@host/your_db?charset=utf8')
connection = engine.connect()
session = Session(bind=connection)

my_declarative_base = lambda cls: declarative_base(cls=cls)

@my_declarative_base
class Base(object):
    @property
    def columns(self):
        return [ c.name for c in self.__table__.columns ]

    @property
    def columnitems(self):
        return dict([ (c, getattr(self, c)) for c in self.columns ])

    def __repr__(self):
        return u'{}({})'.format(self.__class__.__name__, self.columnitems)

    def to_json(self):
        return self.columnitems

    def rec_json(self, key_str):
        result = self.columnitems
        result[key_str] = getattr(self, key_str).columnitems

        return result
        
class User(Base):
    __tablename__ = 'user'
    __table_args__ = {
        'mysql_engine': 'InnoDB',
        'mysql_charset': 'utf8'
    }

    id = Column(Integer, primary_key=True)
    name = Column(String(64))
    username = Column(String(64))
    password = Column(String(256))
    address_id = Column(Integer, ForeignKey('user_address.id'))
    address = relationship("Address", lazy="joined")

    def __init__(self, name, username, password):
        self.name = name
        self.username = username
        self.password = hashlib.sha1(password).hexdigest()

    def __repr__(self):
       return u"[User('%s','%s', '%s')]" % \
           (self.name, self.username, self.password)


class Address(Base):
    __tablename__ = 'user_address'
    __table_args__ = {
        'mysql_engine': 'InnoDB',
        'mysql_charset': 'utf8'
    }

    id = Column(Integer, primary_key=True)
    address = Column(String(256), nullable=False)

    def __init__(self, address):
        self.address = address

    def __repr__(self):
        return u"[Address('%s')]" % self.address
        
        

# insert test data...
"""
Base.metadata.create_all(engine)

user_1 = User("user1", "username1", "password_1")
user_2 = User("user2", "username2", "password_2")
address_1 = Address(u'臺灣凱達格蘭大道')
user_1.address = address_1
user_2.address = address_1
session.add(user_1)
session.add(user_2)
session.commit()
"""

for r in session.query(User).options(lazyload('address')):
    print r.rec_json('address')


"""
Output Result:

{'username': 'username1', 'address_id': 17L, 'name': 'user1', 'address': {'id': 17L, 'address': u'\u81fa\u7063\u51f1\u9054\u683c\u862d\u5927\u9053'},
 'password': '3833b3a1c69cf71a31d86cb5bb4d3866789b4d1e', 'id': 33L}
{'username': 'username2', 'address_id': 17L, 'name': 'user2', 'address': {'id': 17L, 'address': u'\u81fa\u7063\u51f1\u9054\u683c\u862d\u5927\u9053'},
 'password': '148dfdc3c539d35004cb808ca84e17ff962af744', 'id': 34L}

"""

參考資料(Refs):
1. http://chimerhapsody.blogspot.tw/2013/09/python-sqlalchemy-orm-part-3-end.html
2. http://docs.sqlalchemy.org/en/rel_0_9/orm/relationships.html
3. http://blogs.gnome.org/danni/2013/03/07/generating-json-from-sqlalchemy-objects/