2016年12月16日金曜日

料金別納郵便シールをテプラを使って印刷。営業DMを送付

透明ビニール袋に営業パンフレットと案内状を入れて、営業用DMを送ろうとしているときの覚書。

透明ビニール袋はAmazonで買える。料金別納マークをどうするか調べてみた。

環境: Windows 10 64bit, TEPRA SPC10 1.70, テプラ PRO SR970

日本郵便公式サイトで説明があった。

 

郵便局窓口で確認した要件

  • 直径20mm ~ 30mm
  • 差出事業所名はなくてもいい
  • 「一本線で」と言われた

 

テプラの36mmで作ったのがこれ。24mmはギリギリ(0.5mmぐらい)20mmに届かない。

image

画像として挿入すると荒くなるので、直接TEPRA SPC10で作った方がいい。

 

宛名も貼った状態で郵便局に持っていくと、120円×部数の金額を払うのと送付元を別用紙に記載して完了。

 

< Related Posts >

2016年12月14日水曜日

カゴヤ・クラウド/VPSのサーバーにrsyslogをインストール

log-rotationカゴヤ・クラウド/VPSの最小構成でインストールしたサーバーがログローテーションしていないのに気づいてインストールしたときの覚書。

ログローテーションしてなかったのはnginxのログファイル。access.logが120Mぐらいになってた。

環境: CentOS 7.2.1511

サービスとして登録してあるか確認
# systemctl list-unit-files --type=service | grep log

YUM経由でインストール
# yum install rsyslog

確認
# systemctl info rsyslog

起動
# systemctl start rsyslog

設定ファイルを確認
# less /etc/logrotate.conf

 

。。。と、ここまでやってから気付いた。

rsyslogはログを記録するサービス。ログローテーションはlogrotateコマンドを使う。logrotateはcronで実行される。

参考サイト

私の場合は、開発用サーバーにrsyslogがインストールされていてログローテーションされているので、こいつが原因かと思いカゴヤVPSにもインストールした。

分かったら追記予定。

nginxのログは2日後にログローテーションされたのを確認。

 

< Related Posts >

2016年12月12日月曜日

Titanium SDK 6.0.0.GAでAndroidモジュールをビルド

appcelerator-titanium_sdk-600gaTitanium SDK 6.0.0.GA向けにAndroidモジュールをリビルドしたときの覚書。

環境: Mac OS X 10.11.6, Titanium SDK 6.0.0.GA, Android SDK Tools 25.2.3

公式サイトでSDK 6.0.0.GAになって変わったところをチェック

 

< 2017/01/12 Modified >
参考になる記事を見つけた。

 

antのインストールが必須ではなくなって、ビルドコマンドは「ti build」に統一するようになったみたい。

ビルドし直したのはAndroid向けのプッシュ通知を受け取るモジュール

 

manifestを変更
$ less manifest

apiversion: 3
minsdk: 6.0.0.GA
architectures: armeabi-v7a x86

ビルド実行
$ appc ti build -p android --build-only

エラー

[ERROR] Failed to run ndk-build
[ERROR]
[ERROR] jni/Android.mk:35: warning: overriding commands for target `/Users/daiki/Documents/Appcelerator_Studio_Workspace/gcmjs/build/generated/KrollGeneratedBindings.cpp'
[ERROR] jni/Android.mk:35: warning: ignoring old commands for target `/Users/daiki/Documents/Appcelerator_Studio_Workspace/gcmjs/build/generated/KrollGeneratedBindings.cpp'
[ERROR] In file included from /Users/daiki/Library/Application Support/Titanium/mobilesdk/osx/6.0.0.GA/android/native/include/Proxy.h:11:0,
[ERROR]                  from jni/net.iamyellow.gcmjs.GcmjsModule.h:12,
[ERROR]                  from jni/net.iamyellow.gcmjs.GcmjsModule.cpp:10:
[ERROR] /Users/daiki/Library/Application Support/Titanium/mobilesdk/osx/6.0.0.GA/android/native/include/v8.h:345:1: error: expected unqualified-id before 'using'
[ERROR] /Users/daiki/Library/Application Support/Titanium/mobilesdk/osx/6.0.0.GA/android/native/include/v8.h:481:1: error: expected unqualified-id before 'using'
[ERROR] /Users/daiki/Library/Application Support/Titanium/mobilesdk/osx/6.0.0.GA/android/native/include/v8.h:882:1: error: expected unqualified-id before 'using'
[ERROR] /Users/daiki/Library/Application Support/Titanium/mobilesdk/osx/6.0.0.GA/android/native/include/v8.h:5424:35: error: 'virtual v8::EmbedderHeapTracer::~EmbedderHeapTracer()' declared virtual cannot be defaulted in the class body
[ERROR] make: *** [/Users/daiki/Documents/Appcelerator_Studio_Workspace/gcmjs/build/generated/obj/local/armeabi-v7a/objs/net.iamyellow.gcmjs/net.iamyellow.gcmjs.GcmjsModule.o] Error 1

 

検索するとAndroid NDK r12bにすると成功するという情報が。

今の最新はr13bなのでこちらをダウンロードして試してみる。
$ cd /Applications/
$ curl -O https://dl.google.com/android/repository/android-ndk-r13b-darwin-x86_64.zip
$ unzip android-ndk-r13b-darwin-x86_64.zip
$ rm android-ndk-r13b-darwin-x86_64.zip

環境変数変更。今はこれ不要かも。
$ less ~/.bash_profile

export ANDROID_NDK=/Applications/android-ndk-r13b

確認
$ source ~/.bash_profile
$ echo $ANDROID_NDK

Appcelerator CLIを設定
$ appc ti setup

[ERROR] Invalid Android NDK path
Required file does not exist: "/Applications/android-ndk-r13b/RELEASE.txt"

RELEASE.txtがないと指定できないので、コピーして作る
$ cp android-ndk-r9d/RELEASE.TXT android-ndk-r13b/
$ less android-ndk-r13b/RELEASE.TXT

r13b (64-bit)

もう一度Appcelerator CLIを設定
$ appc ti setup

プロジェクトに戻ってビルドしてみる。
$ cd ~/Documents/Appcelerator_Studio_Workspace/gcmjs/
$ appc ti build -p android --build-only

前とは違うエラー

[ERROR] Failed to run ndk-build
[ERROR]
[ERROR] jni/Android.mk:35: warning: overriding commands for target `/Users/daiki/Documents/Appcelerator_Studio_Workspace/gcmjs/build/generated/KrollGeneratedBindings.cpp'
[ERROR] jni/Android.mk:35: warning: ignoring old commands for target `/Users/daiki/Documents/Appcelerator_Studio_Workspace/gcmjs/build/generated/KrollGeneratedBindings.cpp'
[ERROR] warning: unknown warning option '-Wno-psabi' [-Wunknown-warning-option]
[ERROR] In file included from jni/net.iamyellow.gcmjs.GcmjsModule.cpp:12:
[ERROR] /Users/daiki/Library/Application Support/Titanium/mobilesdk/osx/6.0.0.GA/android/native/include/AndroidUtil.h:57:49: warning: format specifies type 'int' but the argument has type 'long' [-Wformat]

 

今度はandroid-ndk-r12bをインストールしたらビルド成功した。今までのr13bをr12bに変更するだけ。

 

でも6.0.0.GAでアプリをビルドしたらopenPhotoGalleryで選択した後エラーになったので、本番運用はしばらく様子見。

 

< Related Posts >

2016年12月11日日曜日

MFクラウド給与を使ってみた。Freeeとの比較

mf-cloud-salary会社作って初めての年末調整。そろそろ準備しないとなと思って調べているときの覚書。

今使っているMFクラウド会計の姉妹サービス「MFクラウド給与」が従業員1人だと無料だというので使ってみた。

 

freeeとの比較

  給与計算ソフト freee MFクラウド給与
無料期間 1ヶ月 従業員1名ならずっと無料
料金 1~3名:19,800円/年
4名以上:1人に付き+3,600円/年
2~5名:30,000円/年
6~50名:1人に付き+3,600円/年
50名以上:別途見積もり
概要 個人事業主に定評がある。
電子政府「e-Gov」に対応している
概ね高評価。
給与計算ソフト「MFクラウド給与」を使った給与計算とその後の仕訳
開始時期 2014年10月 2015年7月

 

給与の締め日と支払日をいつにするか迷った。

支払日は税務署に「給与支払事務所等の開設・移転・廃止届出書」を提出する際に25日と記載した。

締め日は検索すると15日に締めて25日払いが計算し易いらしいので15日締めに決定。

まだよくわかってない。

 

 

< Related Posts >

2016年12月7日水曜日

Node.js PM2をサーバー再起動後も自動起動するように登録

pm2_nodejs仮想サーバーがメンテナンスで再起動してもPM2が自動起動するように設定したときの覚書。

環境: CentOS 7.2.1511, Node.js 4.6.2, PM2 2.1.6

PM2はNode.js向けの高機能プロセスマネージャー。自動起動のスクリプトを自動生成してくれる機能がある。

$ pm2 startup

[PM2] You have to run this command as root. Execute the following command:
      sudo su -c "env PATH=$PATH:/home/node/.nvm/versions/node/v4.6.2/bin pm2 startup linux -u node --hp /home/node"

 

rootになって、言われた通りのコマンドを実行してみる
# sudo su -c "env PATH=$PATH:/home/node/.nvm/versions/node/v4.6.2/bin pm2 startup linux -u node --hp /home/node"

-bash: sudo: コマンドが見つかりません

 

sudoなしで実行
# su -c "env PATH=$PATH:/home/node/.nvm/versions/node/v4.6.2/bin pm2
startup linux -u node --hp /home/node"

bash: update-rc.d: コマンドが見つかりません

 

platformオプションをcentosに変更して実行
# su -c "env PATH=$PATH:/home/node/.nvm/versions/node/v4.6.2/bin pm2
startup centos -u node --hp /home/node"

[PM2] Done.

[PM2] Now you can type
$ pm2 save

 

nodeユーザーになって今のプロセスリストを保存
# su - node
# pm2 save

 

自動起動登録されているか確認
# chkconfig --list

スクリプト実体は/etc/init.d/に配置される。これをSysVが読み込んで実行される。

ちなみにCentOS7からはsystemdでサービス管理するようになったので、そちらで管理されているサービスを表示するにはsystemctlを使う。
# systemctl list-unit-files --state=enabled

 

SysVとsystemdの違いに関する参考サイト

 

Node.jsはnvmで管理しているのでNode.jsをアップデートしたら自動登録し直さないといけない。

 

< Related Posts >

2016年12月5日月曜日

Appcelerator Titaniumで作った「犬猫家族」アプリ

Appcelerator Titanium Advent Calendar 2016の5日目。今年作ったアプリの紹介。

仕事とは全く関係なく思い付いたので作ってみた。

 

スクリーンショット

Simulator Screen Shot Dec 5, 2016, 11.32.01 AM Simulator Screen Shot Dec 5, 2016, 11.32.11 AM Simulator Screen Shot Dec 5, 2016, 11.32.19 AM Simulator Screen Shot Dec 5, 2016, 11.32.29 AM Simulator Screen Shot Dec 5, 2016, 11.32.38 AM Simulator Screen Shot Dec 5, 2016, 11.32.51 AM

 

技術(Titanium)的な特徴

  • Titanium SDK 5.5.1.GA
  • Alloyは使ってない
  • ListViewを頑張ってる
  • サーバーAPIはNode.js
  • WordPressをフレームワーク的に使っている。画像の変換とかはNode.jsからPHP(WordPressのhook)をキックする

 

Titaniumで良かったこと

  • iOSとAndroidを同時開発出来るのは楽。特に修正するときに手間が省ける
  • 慣れればiOSシミュレータで開発して、最後にAndroid端末で確認するだけで終わる
  • サーバーはNode.jsで記述しているので全部JavaScriptで完結できる
    → 嘘です。サーバーサイドで一部PHP使ってます

 

このアプリの課題とか

  • Android 6で画像を使っているListViewの描画が遅い。Wi-Fiの環境だと許せるぐらいには速い。Android 4.0.3の端末の方がなぜかサクサク
    yagi_さんの記事を読んで、ここで紹介されているアプリはListViewでたくさん画像使っているのに早い。もうちょっと頑張れる気がしてきた
  • Galaxy S7 Edge(Android6だから?)で画像を選択すると、上下逆だったりauto rotateが正しく機能しない
  • プッシュ通知をオフにされると応募があっても気付かない。でもメール通知はしたくない
    → 応募があって返信しないとメール通知する仕組みする予定
  • 「自分の地域で検索したい」という要望あり
  • Instagramみたいに画像だけ敷き詰めるレイアウトの方が良かったかも

 

今後

  • Appcelerator Titaniumの将来に不安があり、Firebaseも活用したいのでAndroid開発はKotlinを使ったネイティブ開発に移行していく予定。
  • iOSは今後もTitaniumで開発予定。

 

< Related Posts >

Related Posts Plugin for WordPress, Blogger...

Blog Archives