Monthly Archives: 7月 2016

You are browsing the site archives by month.

(予告)第3回 Bluemixユーザー会@北陸 ~Virtualization on Bluemix~(予告)

第3回 Bluemixユーザー会@北陸 ~Virtualization on Bluemix~
を8月6日(土)に開催させて頂きます
場所は野々市市交遊舎 会議室3です

詳細はこちら
https://bmxug-hokuriku.doorkeeper.jp/events/43843

Bluemix上で仮想化技術を扱ってみるハンズオンイベントです

ハンズオンで体験して頂く仮想化技術のサービスは以下の2つになります

仮想サーバー
コンテナ

どちらも重要な技術です
この機にBluemixでどちらも味わっていただければ、と思います
立ち上げた仮想サーバー等をWebサーバーとして使用してみるといったことも行う予定です

ぜひ、お時間のある方、興味のある方は参加お願いします!

第2回 Bluemix × SoftLayer ユーザーグループ合同勉強会@北陸 〜IBMクラウドサービスを使って遊ぼう〜

第2回 Bluemix × SoftLayer ユーザーグループ合同勉強会@北陸 〜IBMクラウドサービスを使って遊ぼう〜 開催させて頂きました!

合同としては2回目です!

BMXUG北陸としては
「WordPress on Bluemix ハンズオン」
ということで、Bluemixを使ってWordpressの環境構築を行いました

今回の参加者は2人と少なかったですが、
質問が飛び交い有意義な時間となったのではないでしょうか!

次回の勉強会は
第3回 Bluemixユーザー会@北陸 ~Let’s アプリケーションサービス~
ということでBMXUG北陸単体の勉強会となります

日時と開催場所ですが、
2016-08-06(土)09:00 – 12:00 野々市市交遊舎 会議室3
で行います
参加はこちらから!
次回 勉強会!
内容はまだ決まっておりませんが、決まり次第更新します!

BMXUG北陸ではコアメンバーの募集をしております!
少しでも参加に興味がある方、お気軽にお声掛けください!

閏秒~20170101~

http://headlines.yahoo.co.jp/hl?a=20160708-00000067-impress-sci

次回の閏秒が2017年1月1日だそうです

閏秒って・・・?
うるう秒は、地球の運行(自転・公転)の観測結果に基づく時系“天文時”と、原子時計に基づく時系“原子時”とのずれを0.9秒以内に収めるために、不定期に実施されるもの。
だそうです

要するに
いつもは
□□時■■分59秒⇒00秒
だけど、
□□時■■分59秒⇒□□時■■分60秒⇒00秒
って感じで60秒って時間を作りますよーってことです

前回の閏秒の時は特に仕事の方でさほど影響は出なかった(確かサーバーのバックアップのcronでエラーになったのが1件)
ので、今回もそれほど問題は無いと思いますが・・・

1月1日から仕事でトラブルとか最悪ですね・・・

PDF作成ツール「reportlab」で「つちよし」を出力してみた

仕事で人名漢字を使いたい!ということで
色々調査しておりました

・Mysqlで保存、取り出し
・Excel出力
・PDF出力
などなど

今回はPDF出力で調査した内容をメモっておきたいと思います

前提として、
・windows(64bit)
・python2.7
・試すのは「つちよし」吉の士が土になっているやつ
・PDF出力にはreportlab
・フォントはipa明朝(ipamjm.ttf)
です

まずは
https://pypi.python.org/pypi/reportlab
から
reportlab-3.3.0-cp27-none-win_amd64.whlを落とします

解凍して、所定の場所に格納(お使いの環境でpythonのパッケージが入っているとこ)

フォントの入手方法は割愛します

[code lang=”py”]
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont #ipaのフォント使う時に必要
from reportlab.lib.units import cm #単位

pdfFile = canvas.Canvas("任意の場所/hoge.pdf")
pdfFile.saveState()

作成者

pdfFile.setAuthor("ちろぶろ")

タイトル

pdfFile.setTitle("つちよし")

サブタイトル

pdfFile.setSubject("出力するよー!")

pdfのサイズ A4

pdfFile.setPageSize((21.0cm,29.7cm))

フォント IPA明朝

fontname = "IPAmjMincho"

フォントファイルの場所

pdfmetrics.registerFont(TTFont(fontname, ‘任意の場所/ipamjm.ttf’))

pdfFile.setFont(fontname, 30)

文字書き込み

pdfFile.drawString(5cm,25cm,"?")

pdfFile.restoreState()

PDF出力

pdfFile.save()

[/code]
以上でPDFの出力は出来ます!
さぁやってみましょー!

・・・いかがでしたでしょうか
文字化けしますよね!

これだけでは、「つちよし」が出力出来ません

「つちよし」はサロゲートペア対象文字なので
python上で扱う際には
\uD842\uDFb7
てな感じで2文字の扱いを受けます
サロゲートペアについての説明は割愛します

それをそのままPDFに書き込んでいるので
\uD842に対応する文字
\uDFB7に対応する文字
の2文字を出力してしまっています

これは困った・・・
ということで
解凍したreportlabフォルダの中の
reportlab/pdfbase/ttfonts.py
の中を少しいじります

splitStringという関数を探してください
[code lang=”py”]
def splitString(self, text, doc, encoding=’utf-8′):
asciiReadable = self._asciiReadable
try: state = self.state[doc]
except KeyError: state = self.state[doc] = TTFont.State(asciiReadable)
curSet = -1
cur = []
results = []
temp_code = 0
if not isUnicode(text):
text = text.decode(‘utf-8’) # encoding defaults to utf-8
a = {}
a["test"] = text
print len(text)
assignments = state.assignments
subsets = state.subsets
for code in map(ord,text):
if code in assignments:
n = assignments[code]
else:
if state.frozen:



[/code]
この部分に少し付け加えます
変更前
[code lang=”py”]
subsets = state.subsets
for code in map(ord,text):
if code in assignments:
n = assignments[code]
[/code]
変更後
[code lang=”py”]
temp_code = 0
for code in map(ord,text):
if 0xD800 < code < 0xDBFF:
temp_code = code
continue
elif 0xDC00 < code < 0xDFFF:
code = 0x10000 + (temp_code – 0xD800) * 0x400 + (code – 0xDC00)
[/code]

何をしているかというと、
上位サロゲート(U+D800 ~ U+DBFF)が来た場合には、コードを保持し、その後の処理は行わない
下位サロゲート(U+DC00 ~ U+DFFF)が来た場合には、保持した上位サロゲートを使って
元の文字コードを生成しています

temp_codeにD842
codeにDFB7を入れて計算してもらうと
20BB7という値になるはずです(「つちよし」の文字コード)

この20BB7を処理で使用することで、「つちよし」を出力出来るようにします

PDFを出力してみてください!
上手くいったでしょうか?

ポテチ ○○味

IMG_1212

出ました

ネタになりそうなお菓子

気になって食べましたが・・・

ゴーゴーカレー感ない!

ただのカレー味ポテチ

まぁ予想してましたけどね・・・

ゴーゴーカレーは金沢カレーの中では1番好き
いつもロースカツカレーしか食べんけど・・・
マヨネーズかけるとうまいんじゃー!(学生時代太った原因の1つ)