2015年12月23日

JavaScriptで西暦和暦変換するライブラリ

JavaScriptで西暦→和暦変換をする必要が出てきたのでどこかに答えがあるはずと思って探しているとよさ気なライブラリを発見しました。

UltoraDate
https://github.com/hrdaya/UltraDate.js

実は、ライブラリ全体を使わず、和暦年を算出するとこだけを拝借しています。
新しい和暦になっても、一部変更するだけで終了です。

後は、PHPように移植して完了かな。


最後に、moment.jsと併用できるかまたは、置き換えができるかを検証しましょう。

2015年12月22日

AWS RDSでタイムゾーンの設定ができるようになったよ

 Amazon Web ServiceのRDS(MySQL)でタイムゾーンが設定できるようになったそうです。

SQLの中でNOW()を使うと9時間前の時間が返却されてましたが、タイムゾーンでAsia/Tokyoをシてすることでちゃんとした時間を返してくれます。

これで、レコードのタイムスタンプの設定が簡単になりますよ。
よかったよかった。


情報ソース
http://dev.classmethod.jp/cloud/aws/rds-local-time-zone/

Google Chromeをバージョンアップしたらが遅くなった


Google Chromeを47.0.2526.106 にバージョンアップしたら超遅くなりました。

WIndows10 Enterpriseで動かしているのですが、最近バージョン1511(OS ビルド 10586.36)にアップデートされたのでそれが原因かと思ってたのですが、違ったようです。

Google Chromeのプライバシーの設定を変更することでふつーの状態に戻りました。

使用統計データや障害レポートを自動的にGoogleに送信する」のチェックを外すことで通常の状態に戻りました。

もともとチェックがついていたのかGoogle Chromeをバージョンアップしたら付いたのか不明ですが外したら元に取りました。
まぁ、使用時計データを自動的にGoogleに送信しているということは毎回何か通信しているので遅くなるんだろうというのはわかります。

もし、遅くてたまらない時は、ここを確認してみたらいかがでしょうか?

2015年11月30日

新しいことを聞きたがるのはいいが

 知らない情報を聞きたがるのはいいですが、それを聞きたいだけの人は困る。
無いよりあったほうが良い理論では、教える方、聞く方はただの時間の無駄です。

聞きたい方は、聞いた時点でわかった気分になるだけで聞いたことを深掘りすることもなく忘れていく。

教えた方は、聞いたほうのなにか改善がされるのだったら良いが、聞きっぱなしでそのままになるので話損の感じになる。ひどくなると、同じことをまた聞かれたり、自分で深掘りして理解しないから使えない情報として片付ける。


自分が知らない情報を得たら、新しいことの入口に立たせてもらったと思ってそこから自分で歩き出さないと何も良いことはありません。
ただ情報が古くなっていくだけです。

皆さん気をつけましょう。新しい情報も教えてもらえなくなりますよ。




2015年11月19日

セミナーってそういう認識なんですよね

 先日、東京の某所でITのサービスのセミナーを受けてきました。
無料なんですが、中の人も出てきて話していたのでとても有意義でした。

 その時に、前の会社の元上司から電話が来て「今、東京なんですよー」って言ったら「遊びか?」って言われたんで「いや、セミナーに参加しにきてます」って言ったら、「なんだ、やっぱり遊びか」と言われました。

 うーん、セミナーと言うのはそういう認識なんですね。
内容も聞かずにそういう判断をするということは、自分が所属している会社でも何かのセミナーに出席するときは、仕事の息抜き程度にしか考えていないんでしょうね。
あと、自分の会社で何かのセミナーを開催するときもその程度で考えているのでしょうかね?
大丈夫か?って思ってしまいます。他人事ながら。

思い出すといろんなことをいう上司が居ました。

  • 楽しく仕事をしていると遊んでいると思う人
    仕事はつまらなくて辛いものという考えなんでしょう。
  • 趣味的なものだったら稟議は通さない(必要だから稟議書いてるんですが…)
    なんの稟議だったかはもう既に忘れてしまいましたが。
  • 給料もらいながら勉強できていいなー。
    いやいや、それをただの作業にしてしまうか、覚えて次に活かそうとするとはその人次第なんだけど。
  • 周りの人が技術的なことはあいつに聞けになっている人に対して答えられないとこを捕まえて勝ち誇る人
    技術的なことはなんでも分かると自分で言っているんだったらそうだけど周りがそう言ってるだけなんですけどね。
  • セミナーの感想を聞かれて良くなかったというと、「まぁ、息抜きさせようと思って行かせた」とかいう人
    結局、セミナーを開くんだけど出席者居ませんかというのを会社の付き合いで行かされただけみたいでした。それもセミナーの体をなしてなかった。参加者は自分ひとりだけだったし…。

自分の面子とか、主観で組織を動かすとよくないよ。
話はズレズレでした…。


2015年11月17日

その資料後に役に立ちますか?

 ある取引先でのことですが。

プロジェクトがトラブっている原因としてレビューがされていないとかという問題が上がったのだと思うのですが、レビュー記録表のフォーマットが社内で公開されているようです。

 レビュー記録票は大切だと思います。
作成したものの問題点を記録してその問題が解消されたかを管理し、後工程に課題を残さないようにする。
ある程度の規模のプロジェクトでは必須でしょう。(レビュー記録票というより、レビューがですが)

 で、今回問題かもしれないと思ったのが、レビュー記録表を何で作成して管理して将来どう役に立てるかです。

 この会社は今までのやり方を変えてもっと先進的に作業をしたいという社長の意向があるのですがなかなかうまくいっていないようです。
 「学習時間がない」とか「学習コストが高い」という言葉をよく耳にします。

新しい何かを始めようとしたら学習時間がかかるのは当たり前であり、0にすることはできません。
(生まれつき持っている技能だったら別ですが…。)
それを理由に昔ながらの手法でやってしまいます。

 よく悪の手法と思われるエクセル方眼紙の管理表です。
フォーマットを見ると昔々使われていた紙ベースのものをそのままエクセルに媒体変換したものです。
例えば、再レビューの要、不要を選択するところは、

 【再レビュー 要 ・ 不要】

という風になっていていずれかに「○」の記号を付けたりするのしょう。

この時点で、レビュー記録からのデータ集約ができなくなってしまいます。

 たぶん、担当の方たちは、レビュー記録が大切だ、記録するためのフォーマットはどこかにないか、新しく作成する時間が無い、無いよりあったほうが良いの頭になっているのでしょう。

 思うのは、レビュー記録はあるのが前提(作るのか、探し出すのかはどちらでもよい)であり、そのレビュー記録をどう使って、未来にどう生かしたいのかという考えが欠落しているしているのでないかということです。

 例えば、必要な情報を簡単に検索ができる、どんな指摘が多いのかの分類ができるとか後に役に立つ記録も同時にできるというのが大切だと思っています。


 エクセルでも良いのですが、後に役に立つような仕掛けを入れつつ使えるものを準備してほしいものです。
 きっと上司なる人たちは、その集約結果がほしいとか言い出すのは目に見えているので。
自分の組織はどこが弱いのかをあぶりだして改善するために使うと思います。
レビュー結果を記録して修正するだけのものにしたらもったいないです。組織を改善するチャンスを失っているかもしれません。


極論をいうとツールなんてなんでもいいのです。以下のことが解消できていれば。

  • 実際に使っている人が面倒でないこと
  • 集約したデータを将来役立てるために使えること
  • それほど高額でないこと
  • 学習コストがそれほど高くないこと



2015年11月11日

ガントチャートを何でつくるか

 あるIT会社のプロジェクトがトラブっている模様です。

アプリケーションの作成が遅れたり、テストが遅れたりしているようです。
 遅れた理由を観てみると、I/F部分が詰められていなかったり、作ったプログラムのソースがリポジトリ(Gitなのか、Subversionなのかは不明)登録されていない等いろいろあるようです。
まぁ、そこはいいのですが(ホントは良くないけど)、その遅れを回復するために各機能のテストスケジュールを作ったようです。

 それをちら見したところエクセルの方眼紙でガントチャートを作っていました。
稲妻線もあり、全体の状況を分るようにしようとしているなというのも解ります。

 でも、でも、もしスケジュールの変更とかがあったらどうするんでしょうかね?
あるまとまった単位で作業順番を変更するとか担当を変更するとかした時にガントチャートをまたちまちまと変更することになるんですよね。
 そういう管理資料を作るためだけに時間なんか掛けたくないと思うのですが、やってる感を出すためには必要なんでしょうか?

 そうならないために、プロジェクトが始まったばっかりの時やちいさいプロジェクトをやるときに管理ツールの練習をしながら使う必要があるのです。
 自分がたまたま携わっているプロジェクトは、2人しかいない(1人は別のことに時間を取られているので実質1人)のでそういうプロジェクトで試しにいろんなツールを使ってみればいいんですけどね。

 プロジェクト管理だったらMS Projectだったり、OpenProjだったり他にもクラウドな奴もたくさんありますけどね。
 Google Apps使ってるんだったら「gantter」がいいかなー。

 チケット管理だったら、RedmineとかTracとか…。


 チャンスなんだけどさ、その会社の中で第一人者の担当者になれるのですから。

会社員の頃はそれが嫌で裏でこそこそと練習していたけどね。
結局は新しいことを覚えるのが嫌だなー、面倒だなーという人(特に上司と言われる方々)が多かったので夢かなわずだったんですが。

2015年11月8日

IT機器を積極的に使うということで

 IT機器を積極的に使うということでちょっと前にKindleを購入してみました。
やっぱり、紙の本のように重くなくてとてもよいです。かさばらないのはとってもGoodです。
今まで紙の本ばっかりかって置く場所こまっているのですがこれだと場所をとらなくてとても良いです。
タブレットのKindleだったらカラーでも読めるしどこでも本読む人になりそう。


で、早速購入した本ですが

  • ザ・ゴール コミック版
  • 仕事で使える!Googleクラウド会議術 会議スタイル・イノベーションガイド
  • 仕事で使える!Googleフォーム Webフォーム Webフォーム&アンケート活用術
  • 漫画で読み解く 人を動かす
  • マンガでわかる 非常識な成功法則(サンプル)
  • ソース~あたの人生の源は、ワクワクすることにある。

気が向いたら読書感想文でも書こうかと思いますけどね。

2015年11月7日

Let's Noteとサヨウナラする時がやってきたかも

 PanasonicのLet's Noteシリーズが大好きでノートPCは、ほとんどがLet's Noteでしたがもうさようならの時期(だいぶ前から)がやってきたようです。

 今までは、他と比べると高額だったけど、性能がピカ一だったので迷わずにLet's Note内で選んで購入してましたが、もう無理かも。

理由は、

  • 解像度が低い(1920×1080では狭い)←これが一番の原因
  • 厚みがある
  • 高額
  • それほど軽くない

です。

今使っているのは、初期のB10です。当時は解像度高くていいなーって思ってたんですが、2560×1440の解像度のディスプレイ2台で仕事をするようになってからフルHDでは、狭く感じで効率が上がりません。


最近は、ちょっとMac熱が上昇しているのも原因の一つですが。
最近よく使おうと思っているオープンソースのツールをWindows上で動かそうとするとなかなかの準備が必要なのでそれを回避しようとするとやっぱり、UNIX系のOSになってしまいます。

後は、操作性でしょうか、Mac miniをもっているのですが、そのTrack Padの動きがとても気持ちいいんです。

かと言って、今まで使っていたWindows用のツールは手に馴染んでいるのでなかなかWindowsから手を話すことはできないんですけどね。
お客さんもWindowsが主ですし。

2015年11月6日

Japan IT Week 秋 2015行ってきた

 春に続いて秋も行ってきました!
Japan IT Week 秋2015に。

 新しいソリューションや開発中だったソリューションの展示が楽しみで朝から終わりまでずーっといました。
 幕張メッセなのでそれほど大きくはないですが興味が惹かれたものを紹介したいと思います。
やっぱり、IT関連の情報収集には欠かせません。


ウイングアーク

 帳票ツールの老舗です。

展示ソリューションは、SVF Cloudです。

Super Visual Formadeのクラウド版です。
KintoneやSaleforce版はリリースされているようですが、汎用版はβテスト中で、年明けにはリリー
スされる予定だそうです。

ブラウザ上で帳票デザインを行い、Webサービスを使って帳票を出力します。
クラウドのシステムにもかかわらず、プリンタへの直接印刷も可能と行っていました(ただし、ちょっと設定をする必要があるようです。詳しくは聞きませんでしたが)

自分がほしいのは、

  • PDFファイルが作成される
  • 帳票のデザインが簡単で自由にできる
    例えば1ページ目と2ページ目のデザインが違うとかいろいろとありますよね。
  • 設定が簡単にできる
  • 安い(小さい会社を相手にすることが多いので)
などです。

利用料金ですが、初期費用とランニングコストがかかります。
初期費用は、いいとしてランニングコストが問題です。
月払いでプラン(Sから無制限)により1枚の単価が決まる方式でした。1ヶ月で出力できる上限が1ヶ月の使用料金となってます。上限を超えた場合は、1枚の単価で加算されていくようです。
Sプランでもまぁまぁの金額をとられるので小さい、小さい会社ではちょっと「うーん」って感じなので、SSプランってのを用意したらいいと思いますと提案しておきました(1枚の単価は高くなりますが)。
説明員の人もそれは分かっていて、後は経営判断と言ってました。ぜひ、SSプラン完全従量制プランを実現して欲しいと思います。

 課金のタイミングは、PDFファイルをダウンロードしたタイミングで1枚とカウントされるそうです。
プレビューまでは一切カウントされないので良心的だと思います。

 デザイナーのライセンスも3つあるので1つは、会社つ会社残りは、エンドユーザということができます。


 今取引のある会社で作った帳票は、HTMLを駆使しているのでできないことがちょっとあったりします。
 明細行内で改行するとページのデザインが崩れて、予期しないところで改ページが発生したりします。なので明細を少なめに作ったりしています。

 たしか、Salesforce版のお試しライセンスを送ってくれると言っていたのですがまだ来てないです…。


株式会社ソフト技研
YubiOn
認証ツール

パソコンへのログインやWebシステムへのログインをUSBメモリーのようなハードウェアで行うものです。
挿しておくことでワンタイムパスワードを発行してくれるのでセキュリティ強化につながると言っていました。

例えば、YubiOn Windows ログオンというのものは、Windowsに予めソフトウェアをインストールしておくことでログインは、このYubiOnをUSBに挿しておくことで認証をすることができるようになります。
なので、キーボードでアカウントとパスワードを入力してログインしようとしてもできなくなります。
YubiOnを抜くとロック画面に変わります。

他にも、GoogleApps、Salesforce、Cybozuなどにシングルサインオンするためのサービスもありました。

1個4,000円弱なので試しに使ってみるのみ良いかもです。

株式会社ランドスケイプ
データ統合ツール(uSonar)

営業支援ツールを紹介していました。
まずすごいのは、日本にある法人データ820万件を自社で保持しおり、毎日メンテナンスしているそうです。
どうやってメンテナンスしてるんですか?と聞いた所

  • 有価証券報告書
  • 商工会・商工会議所データ
  • 電話帳データベース
  • 新設法人データベース
  • 官公庁、地方自治体の公開情報
  • ホームページチェック
  • 地図情報
  • 新聞・官報
を毎日チェックして人が更新してるそうです。

任意の条件で顧客を絞り込んだり、同じグループ会社(関連する顧客)の顧客をまとめて表示したるする機能や、自分のところのサイトを参照したというのをほぼリアルタイムに表示してくれたりしてました。
同じグループの顧客をまとめて表示してくれる機能はこのグループ会社を攻めるときに判りやすいです。
自分のサイトを参照したのに気づいたら即テレアポするとかいろいろとやり方が思いつきます。


そのデータベースへアクセスするAPIの公開もするそうなのでちょっと楽しみな感じがします。
結構高額だとは思いますが…


株式会社ユビキタス

最近良く耳にするIoTに関するソリューションです。

一番興味をそそられたのは、デバイスからのデータをユビキタスのサーバーに自動的に保存してくれる部分のハードウェアです。
このハードウェアが対応しているデバイスを使用することで簡単にデータの収集、蓄積、監視、管理をすることができます。
データを集めるところはおまかせをして後はそれをどう使うかはアイディア次第です。

データの送信方法としてEyefiを使ってデータ送信をするという話を聞きました。
デバイスがSDカードにデータを記録する機能があればWifiでデータを送信することができてデータの蓄積が簡単にできます。
なるほど、写真をクラウドに上げるだけが能ではないんですね。

はやく家帰ったら、エアコンの電源が入っていて部屋が暖かい状態を外から制御できるツールを作りたいです。


TOP Gate

Google Cloud Platformの紹介していました。
Googleが代わりに営業をしてくれるような技術者集団の会社と言ってました。
こういう会社いいですよね。好きです。

自分が今使っているクラウドサービス(Iaas)は、Amazon Web Serviceのみですが、話を聞いて興味が出てきました。
確かに、AWSほどサービスが揃っているわけではないですが、ネットワークが速い、安い、課金が1分単位というのが気になりました。

AWSの場合、1時間単位で課金されるのでクラッシュ・ビルドを繰り返すとどんどん料金が嵩んで
しまいます。

仮想マシンの起動速度が1分以内とか、データベースへのアクセスが無いときは、停止状態になっていてアクセスが来た時に起動する(止まっている間は課金されない)等です。

頭のなかが、AWS基準なのでこういうサービスは無いの?とか浮かんできてしょうがないのですが、対応方法はいくらでも考えられそうです。
例えば、メールサービスはGCPでは、直接持っていませんが、GoogleAppsのメールを使ったり、他のサービスのSendGridというサービスを使うことにより実現できます。

今、AWS上で動いているWebサービスをGCPに移行してみましたが特に問題なく動いています。
ちょっとデータベースのアクセスが遅いかな?とは思いますが、サーバースペックを上げる事で解決できるのかもしれません。

いろいろなサイトにもありますが、AWSでいうIAMというロールを管理する機能が貧弱なようです。
あなたには、これしかさせないというのができないようです。

気になったのが、AWSのRDSのMultiAZのようなマスタ・スレーブのような機能が無いのがちょっとうーんな感じがします。
Google的にはそんなことしなくてもサーバーが倒れてもすぐに立ち直るから大丈夫だよってことなのかもしれませんがね。

 でも、ちょっと注目のです。


株式会社ラクス

経費精算システム「楽楽精算

経費精算を簡単にするためのWebサービスです。
Suicaからデータを読み込んで登録したりもできます。

自分で使うことはありませんが、自分のクライアントが必要になるかもしれないので記憶にとどめておきたいと思います。
たしか、仕切で卸してくれて問い合わせはこの会社が受けるという話があったと思うのでそこは活用させていただきたいと思っています

このシステムでためたデータは、CSVでダウンロードできるので自社の経理システムにも簡単に取り込めますね。

2015年10月31日

ノベルティの言い間違い

 あるイベントの出店者側の言い間違いが面白かった

ノベルティグッズを配っているので、そういうと思ったのでしょうが、大きい声で

アメニティ

と叫んでました。

ちょっと、寒くなりました。



2015年10月29日

ドッグフーディングは大切だよ

 そもそも、ドッグフーディングなんて言葉があるのかしら?

自社開発した(ほとんどビジネスパートナーだより)アプリケーションを世の中に出す前に厳しくテストする必要はあると思いますが、自分たちで使いもせずに変なものは出せないといいテストだけし続けるのはどうかと思う。

 気持ちはわかりますが、今のままでは、永久にリリースすることはできませんよぉ。

まずは、小さく始めてから育てるでいいじゃないですか?
現在は、このブラウザだけ、この端末だけターゲットですという縛りで。


タブレッドで端末の向きが変わったのを検知する

iPadの向きが変わったことこののロジックで検知できます。

$(function() {
  $(window).bind("orientationchange", function() {
    if(Math.abs(window.orientation) === 90) {
      alert("横向き");
    }else {
      alert("縦向き");
    }
  });
});

2015年10月16日

CakePHPでセッションがよく切れてしまうのを回避

 CakePHPを使ってWebアプリケーションを運用していると特定の条件でセッション切れがよく発生します。(よく発生してはダメです…)

 ページからリクエストした時にサーバーで処理が終わらないうちに再度、リクエストをするとCakePHP内でセッションが無いことになってエラーになってイました。
 CakePHPのソースまで追ってみたら、セッションを管理しているファイルをReadした時にそのファイルが無いことになっていてダメだったようです。
 この時は、セッション内容を持っているファイルをロックすることができなくてエラーになっていたのかと思っていました(いや、もしかするとそうなのかもしれない)

 そのシステムを使っているお客様からURLの一覧から画面を複数連続で開くとセッションが頻繁に切れるようになったのでなんとかしてほしいという要望というかクレームが上がってきました。

 再度、速い連続リクエストが原因でセッションが切れる問題を解決する記事が無いかちょっと調査したところ答えがありました。

 
 WEB制作所インレットさんのサイトです。

対応策に3つのことをする必要があるのですが、(1)と(3)は、対応していたので、(2)の対応をすることにしました。

結論からいうと、セッション切れになることもなく、連続表示したページは全て正しく表示されました。

 ただ、1点だけ腑に落ちないところがあります。
CakePHPのCore.php内のSessionの設定のろ頃でどこにセッションを作成するかの指定が効いていないようでした。
 私の環境では、"cake"としているのでCakePHPのセッション用ディレクトリに作成されるはずのところが、Apacheのphp.confで指定されているパス(php_value)で指定しているディレクトリに作成されています。

 1サーバーで複数のサイトを運用しているのでちょっと気持ち悪いですが、何か案がないか考えて見ようと思います。
 ※もしかすると、php_valueを各サイトのconfに書けば良いのかもしれないです。

この処理を追加します。

if(!isset($_SESSION)) {
    session_start();
}
関連記事
CakePHPにAjaxで連続リクエストするとダメなの?

2015年10月4日

AWSのELBを使っている場合のタイムアウト対応

 AWSを使ってシステム構築をしています。
今回、ファイルアップロードをしてデータ登録をする処理をつくったのですが、ある程度大きなファイルをアップロードするとHTTP Status 504のタイムアウトになってしまいました。
※実際のところはファイルのアップロードではなく、アップロードしたファイルの処理に時間がかかっています。


エラーになる場合は、60秒前に504ステータスが返ってきていました。
(504は、Webブラウザからのリクエストを受けたサーバーがされに別のサーバーにリクエストを送信した際に、別のサーバーからの応答が一定時間に返ってこないことを表しています。)


今回のシステムの構成は以下のようになっています。

[Webブラウザ] - [ELB] - [Webサーバ(Apache)]

Webサーバのタイムアウト時間は設定していないのでデフォルトの300秒らしいです。

で、60秒以内で504が返ってくるのはおかいいのでApacheではない。
てことは、504の意味を考えていると、ELBとWebサーバの間でしかないので、ELBの設定を確認したところ、「接続設定 アイドルタイムアウト: 60秒」という設定がありました。

で、これを編集し、Apacheと同じ300秒に変更してファイルアップロード処理をしてみたところ正常動作をしました。
めでたし、めでたし。


まぁ、もともと、このあたりの設定(ELBに限らず)とかは、全然やったことがなかったので新しい知識がついたということで大OKとしたいと思います。
このあたりをちゃんと考えられるプロの人だったら一瞬でわかったり、あらかじめ長めにしたりするんでしょうね。

2015年9月20日

Windows10とVirtualBox5.0とVagrantではまったの巻その2

 以前の記事で、Windows10とVirtualBox 5.0は、正しく動作しないがあるという記事を書きました。
VirtualBox5.0.4をインストールすることで解決されているようなのでインストールしてみたら既存の仮想マシンが正しく動作しない場合があるという現象がありました。
 具体的には、Guest Additions 5.0.4が使用できないという問題です。

 それを解決する方法です。

ホストOS:Windows 10
ゲストOS:CentOS6.7 64bit版


すでに作成されていたVirtualBoxの仮想マシンにGuest Additionsのバージョンが4.3.4がインストールされている場合、VirtualBox 5.0.4をインストールしているとGuest Additionsが正しく動作しないという問題があります。


VagrantのPluginの「vagrant-vbguest」をインストールしていると本来は、正しいバージョンの「Guest Additions」をインストールしてくれるのですが、なんだかと途中でエラーを起こしてインストールできていないようなのです。

 グーグル先生に聞いてみるとLinuxのカーネルのバージョンが古いのが問題なので新しいものをインストールするようにというのが書いてありました。
※エラーメッセージにも「yum install kernel-devel-2.6.32-431.el6.x86_64」と表示されるので、その通りにしてみます。

>yum install kernel-devel-2.6.32-431.el6.x86_64
 言われたとおりにやってみる→なぜかうまくいかない
 Error: Nothing to doとメセージがでる

>sudo yum install kernel kernel-devel
 グーグル先生に聞いた通りにやっている→うまくいかない
 Error: Nothing to doとメセージがでる

これで新しいカーネルがインストールされるのでゲストOSを再起動すると新しいGuestAddionsがインストールされるはずです。
ですが、インストール自体がされません。

Qiitaでこの問題を解決している記事がありました。

Vagrantのフォルダ同期のエラーの対処

そもそも、yumでkernelのインストールを止めているようでした。
カーネルのアップグレードをする為には、「/etc/yum.conf」のカーネルを対象外にする(?)設定をコメントアウトする必要があるようです。

exclude=kernel*

#exclude=kernel*

これで、「sudo yum install kernel kernel-devel」をすると正しくインストールされます。

あとは、ゲストOSを再起動するだけです。



まとめると
  1. 同期フォルダが同期されなくなった場合、GuestAddionsのバージョンを疑う
  2. Vagrant pluginの「vagrant-vbguest」をインストールする
    vagrant plugin install vagrant-vbguest
  3. なぜか、「GuestAddions」のインストールに失敗する
    Kernelのdevelがインストールされていない為、正しくコンパイルができない。
  4. kernel-develをインストールする
    sudo yum install kernel kernel-devel

    インストールされない場合は、/etc/yum.confのexclude=kernel*をコメントアウトして再度、カーネルをインストールする
  5. ゲストOSを再起動し、フォルダ共有ができるか確認する
    できなかったら、別の問題なので解決方法を探す

これが、VagrantとVirtualBoxの最後のハマりどころになれば良いのですが…。

2015年9月7日

Google Chromeの機嫌が悪い←ごめんなさいChrome

 多分そうなんですが、Google Chromeを45.0.2454.85m (64-bit)にバージョンアップしたら、頻繁に応答なしになってしまいます。
 誰か何かヒントがありましたら教えて下さい。

もしかすると、ベータ版とかにすれば治るのかな?


一応PCの環境も書いておきます。
OS:Windows 10 Enterprise
メモリ:32GB
ディスク:SSD 256GB


インストールしているソフトウェアとの相性の問題だったようです。
IBMのインターネットバンキング専用のRapportというソフトウェアのバージョンが古かったのが問題だったようです。
 Chrome45に対応してバージョンをインストールしたら問題なくなりました。

失礼しました。

もしかしてと思って、一旦アンインストールしたら調子良くなったので、もしかしたら新しいバージョンとか出てる?と思って見てみたら案の定リリースされていました。

とほほな感じです…。

2015年9月6日

ScanSnap iX100A買ってみた

 経費で落とす領収書とかを紙で保管しているのですが場所とったり、なくしたりするので電子化して管理したいと思ってました。
 一応、複合機を持っているのでそれ使ってもできるのですがもっと簡単にする方法は無いかと探してました。

 で、EvernoteのMarketでSCANSNAP EVERNOTE EDITION スキャナってのを販売していたのでちょっといろいろと調べてました。
 49,800円!うーん、それほど高額なわけではないですがなんとか安く購入できないかな?と調べてたらSnapScap iX500と同じものであると。
 すると、ScanSnap ix100というちょっと小さい手軽に持ち運べるほど小さくて安いのも発見。

結局、それほど頻繁に使うわけでもないのでお試し感覚にScanSnap iX100を購入することい決定しました。

 まだほとんど触ってませんが、名刺をスキャン後に起動されるCardMinderがとても素晴らしかったです。
横向きの名刺を縦にスキャンしても横向きに変更してくれます。
一番いいと思ったのはOCRの機能です、氏名や氏名フリガナ、会社名部署、役職等ほぼ完璧に認識してくれます(100%ではありませんが)
 ※ちなみに自分の名刺は、グダグダになりました
スピードも申し分無いですよ。


名刺管理と領収書やレシートの管理に活躍してもらおうと思います。
あと、紙でもらった仕事の資料とかも同様です。


ScanSnap iX100(http://scansnap.fujitsu.com/jp/product/ix100/)


2015年8月30日

検索を声でやってみた

無線のヘッドセットを買ったのでGoogle Chromeに話しかけて検索してみましたがとても便利。
複雑ではない検索だったらサクッっと検索してくれます。
普通は、検索窓にキーワードを入力しますが、マイクのアイコンをクリックして話すだけなのでキーボードを叩かなくてよいので楽です。

文書を書くのも声でやりたいのですが誰か実現してませんか?

【備忘録】好きなバージョンのRubyインストール

最近のオープンソースの管理ツールとかがRubyで動くものが多くなってきているので任意のバージョンのRubyのインストールをするほうほうをスッキリまとめて見ました。
いろんなツールは自動的にインストールをしてくれますが自分でもできるようになりたいという欲求から調べてみました。
Ruby on Railsのこともは後で書くことにします。


【やりたいこと】

  • バージョンの切り替えを自由にしたい
  • 共通の場所にインストールしたい
    /usr/localにインストールする
【参考にしたサイト】


【準備】
  • OSは、Amazon Linuxを使いました
  • gitのインストール
    >sudo yum install -y git
  • 開発コンパイルツールのインストール
    Cコンパイラ等をまとめてインストールしてくれます
    >suodo yum groupinstall "Development Tools"
【rbenv関連のインストール】

rbenvのインストール
/usr/localにrbenvをインストールします。
>sudo -s

>cd /usr/local
>git clone git://github.com/sstephenson/rbenv.git rbenv

ruby-buildのインストール(プラグイン)
Rubyの異なるバージョンをコンパイルしてインストールするrbenvのプラグイン


/usr/local/rbenv/plugins/ruby-buildへインストールします
>git clone https://github.com/sstephenson/ruby-build.git rbenv/plugins/ruby-build

パスを通す準備
/etc/profile.d/にスクリプトファイルを置いておくとログイン時に自動に読み込んで実行してくれるものです。
>vim /etc/profile.d/rbenv.sh
 このファイルは無いので新規で作成します
  ファイルの内容は以下のとおりです。
  export RBENV_ROOT="/usr/local/rbenv"
  export PATH="/usr/local/rbenv/bin:$PATH"
  eval "$(rbenv init -)"

 ※このファイルを作成しておくだけだと、Permissionエラーが発生します。
 一旦rootになって、上記コマンドを入力して実行してください。そうすれば次回からエラーがでなくなります。
 この辺りはlinuxの理解が不十分なのでちょっと深掘りして理解しいないと…。


これで準備は終わりです。


【Rubyのインストール】

rbenvの確認してみる
Usageが表示されればパスもとおている
>rbenv
  rbenv 0.4.0-153-g3b6faa8
  Usage: rbenv <command> [<args>]
  :

インストール可能なRubyの一覧を表示してみる
>rbenv install -l
  Available versions:
  1.8.6-p383
  1.8.6-p420
  :
  2.2.3
  :

rubyをインストールしてみる
今時点の最新バージョンの2.2.3をインストールする
>rbenv install -v 2.2.3
  Rubyのソースがダウンロードされコンパイルとインストールがされます。
  マシンスペックにもよりますが結構時間がかかります。

rbenvに反映?
もはや、今のruby-buildのバージョンでは不要らしい
>rbenv rehash

rubyのバージョンの切り替え
>rbenv global 2.2.3
 OS内で認識するrubyのバージョンを2.2.3に切り替えます

>rbenv local 2.2.3
  ログインしているユーザの環境かでバージョンを2.2.3に切り替えます。
  ホームディレクトリで実行します(.ruby-versionというファイルが作成される)

rbenvでインストールされたRubyの一覧を表示してみる
>rbenv versions
  system
  2.2.2
  * 2.2.3 (set by /usr/local/rbenv/version)

  *が付いているのがカレントバージョン
  systemというのは、おそらくrbenv外でインストールされたバージョンだと思います。


以上で終わり。


更にメモ
bundlerのインストール
>gem install bundler


2015年8月24日

Windows10とACCESS2010でちょっと

 仕事でAccess2010でのシステム開発をしているのですが、ちょとぉ、ちょっと、ちょっとというのに気づきました。

 まぁ、今のところ致命的な実害があったわけではないのですが、ちょっと気になる点の指摘を。

 テーブルのデザインの時のフィールドのプロパティや、フォームデザインのプロパティシートの書き換えが遅いのです。
 Windows7(Windows8系を真面目に使ってなかったので)では、何も気になりませんでしたが(というか、人が気になるほどの遅さでなかったって言うこと)、Windows10では、カーテンが閉まるようにスーっとゆっくりと白くなって、パッっと表示されるのが目に見てわかるようになりました。
 フォームのプロパティシートの場合、プロパティの一つ一つでフォーカス移動するだけで、書き換えているのがわかります(ちらつく)。

 今のところアプリケーションの実行で問題が起きているわけではないのでちょっと我慢できますが、アプリケーションの動きで問題が出始めたら、Windows7に戻ります。実際は、Access2010の開発の時だけですけどね。
 
 別のPCにインストールしたWindows7かVHDブートできるよにしたWindows7のどちらかですけどね。
 やっぱり開発者は、VHDブートできるWindowsを環境毎に持っているといいかもしれませんね。

2015年8月22日

VHDで運用していたWindows10をSSDへ移行する

 仕事上いろいろな環境で作業をする必要があるので最近はWindows事態をVHDにインストールしています。
 Windows10がリリースされてすぐにインストールして仕事の環境をWindows10に移行(新しくアプリケーションのインストールとか)してテストをしていたのですがほとんど問題がなくなったのでVHDでなく実パーティションに移すことにしました。
 今回は初のSSDを採用ですっ!

通常であれば、SSDにWindows10をインストール後、必要なアプリケーションのインストールと設定をするのですが、VHDで構築したWindows10をそのまま移行する方法を検討しました。

SSDは、予めPCに接続しておきます。

1.VHDにインストールしたWindowsをSDDへ丸ごとコピーする

 「EaseUS Todo Backup」などパーティションを丸ごとコピーするツールを使用します。

2.ブートメニューに追加する
実はここにちょっと時間がかかりました。きっと「bcdedit」コマンドでできるはずだと思ってグーグル先生に聞いたり試行錯誤しました。

1.適当なOSを起動します。(WindowsのインストールDVDでもよいです)
 Windowsのコマンドが入力できれば良いです。

2.diskpartコマンドを起動し、list volumeコマンドを実行します。
 そのPC内のVolume(パーティション)の一覧が表示されます。

 以下のコマンドを実行します。
DISKPART>list volume
Volume ###  Ltr Label        Fs    Type        Size     Status     Info
----------  --- -----------  ----  ----------  -------  ---------  --------
Volume 0     Q                       DVD-ROM         0 B  メディアなし
Volume 1     R                       DVD-ROM         0 B  メディアなし
Volume 2         システムで予約済み    NTFS   Partition    350 MB  正常         システム
Volume 3     C                NTFS   Partition     79 GB  正常         ブート
Volume 4     D                NTFS   Partition    149 GB  正常
Volume 5     E   Windows10    NTFS   Partition    238 GB  正常         

 上記では、Windows10をコピーしたボリュームは、Volume 5というのがわかりました。
(環境によって違うので注意が必要)

3.bcdeditでブートメニューを追加します

2.で調べたVolumeのドライブレターが必要になります。
bcdeditは管理者コマンドで実行します。
以下のようにエントリを作成してどこから起動するかを指定します
注意として最後の「/addlast」は忘れないようにしてください。忘れると今回登録したブートメニューしか残りません。
C:\> bcdedit /create /d “Windows 10” /application OSLOADER

エントリ {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} は正常に作成されました。

C:\>bcdedit /set {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} device partition=F:
C:\>bcdedit /set {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} osdevice partition=F:
C:\>bcdedit /set {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} path  \Windows\system32\winload.exe
C:\>bcdedit /set {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} systemroot \Windows
C:\>bcdedit /set {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} locale ja-JP
C:\>bcdedit /displayorder {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9} /addlast

4.ブートメニューの確認
Windows ブート ローダーの最後に今回追加したものがあれば完成です。
C:\>bcdedit

Windows ブート マネージャー
 :
 :

Windows ブート ローダー
--------------------------------
identifier              {0f1a3ed0-4881-11e5-a550-c3b8c8143ee9}
device                  partition=F:
path                    \Windows\system32\winload.exe
description             Windows 10
locale                  ja-JP
osdevice                partition=F:
systemroot              \Windows
resumeobject            {940bff88-4888-11e5-825d-806e6f6e6963}

5.Windowsを再起動して追加したブートメニューを起動します。

 起動すればOKですが、自分の場合、Google Chromeがログインが切断されていたようでした。
他にもライセンスの再認証や再ログインなどをする必要があるかもしれません。
 多分Windows10もプロダクトキーを入力しないとダメかもですね(確認する前に入力したのでどうかわかりませんが)


参考にしたサイト
第11回 Windows7のVHDブートを試す
http://www.atmarkit.co.jp/ait/articles/1004/22/news101.html



2015年8月4日

Windows10とVirtualBox5.0とVagrant稼働マシンが起動しない場合がある

 自分だけの現象化もしれませんが、一応メモとして記録。

 Windows10にマイクロソフトアカウントでログイン中に「vagrant up」をすると仮想マシンの起動に失敗するようです。
 一旦、「vagrant halt」で仮想マシンを電源オフにし、再度「vagrant up」をしても起動に失敗します。


で、ローカルアカウントでログインした場合、一発目の起動では、失敗しますが、仮想マシンを一度電源オフにしてから、起動すると正常起動するようです。


仕事はマイクロソフトアカウントではなく、ローカルアカウントですることに決めました。

でも、Windows10ストアのアプリって、マイクロソフトアカウントでないとダメなんだっけ?

2015年8月2日

Windows10とVirtualBox5.0とVagrantではまったの巻

 今まで、Windows7+VirtualBox5.0+Vagrantで問題なく仮想環境を作ってアプリケーション開発をしてきたのですが、せっかくWindows10が発売されたのでWindows10で開発環境をつくろうと思い、やってみたのですがハマりました。
 一応解決はしたのですが、これが正解とは思えないのでちょっと心配です。

うまくいかなかった流れ
  1. Windows10のインストール
  2. VirtualBox5.0のインストール
  3. Vagrantのインストール
  4. Windows7時代に使用していたVagrantのBOXを追加
  5. Vagrantファイルの作成と内容の編集
    メモリサイズだったり、共有フォルダの名前だったり。
  6. 仮想マシンの起動(vagrant up)する
    ここで問題が発生しました。
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set network interfaces...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: E_FAIL
VBoxManage.exe: error: Failed to create the host-only adapter
VBoxManage.exe: error: Code E_FAIL (0x80004005) - Unspecified error (extended info not available)
VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleCreate(struct HandlerArg *)" at line 70 of file VBoxManageHostonly.cpp

こんなエラーが発生してしまいました。
(vagrant upコマンドを実行すると毎回、毎回、「Host-Only Ethernet Adapterを作りますか?」的な確認がされて、はいにするとたくさんできてしまいます…。)
「ホストオンリーアダプターの作成に失敗しました」的なエラーのようです。
Vagrantでは、ネットワークアダプターを2つ(natとhostonly)使うようで1つ目はできてるのですが2つ目がなんかうまくいかないらしいのです。

 グーグル先生に聞いても明確な答えにたどり着けず(検索キーワードが適切で無いのでしょう)。
で、ネットワークに関連しそうなとこを手当たりしだい見てみようということで。

VirtualBox マネージャーの[ファイル(F)]-[環境設定(P)]のネットワークのホストオンリーネットワーク(H)を確認です。

  1. ここには、VirtualBox Host-Only Ethernet Adapterの設定がありまして、ドライバーのアイコンをクリックする
  2. アダプターのIPアドレスの設定欄があるのでIPアドレスとネットマスクを今起動しようとした仮想マシンと同じ値を入れます(違っても良いのかも。もしかするとネットマスク255.255.0.0だったのがダメだっただけかも)。
    例えば、IPアドレス=>192.168.33.10 ネットマスク=>255.255.255.0
  3. 再度、vagrant upコマンドで仮想マシンを起動します。

これでちゃんと今まで通りに仮想マシンが起動するようになります。
同時に別の仮想マシン(当然IPアドレスは別のもの)を起動してもちゃんと起動します。


2015年7月29日

MySQLのダンプをタイムスタンプ付きのファイル名で作る(ちょっと更新1)

 MySQLデータベースのダンプを作るときに毎回コマンドをコピペして作るのが面倒になったので一連のコマンド作りました。
とりあえずLinux版

ダンプしたファイルを圧縮する機能を入れてみました。

仕様
  • ダンプファイル名には、タイムスタンプをつける
  • ワンコマンドで実行できる
  • ファイルを圧縮する
  • ダンプフィアルを削除する

DB_TIMESTAMP=`date +%Y%m%d_%H%M%S`
DB_HOST=192.168.0.132
DB_USER=XXXXX_user
DB_PW=XXXXX_pw
DB_NAME=XXXXX_db
mysqldump -h $DB_HOST -u$DB_USER -p$DB_PW $DB_NAME > $DB_NAME\_$DB_TIMESTAMP.dump
tar cfvj $DB_NAME\_$DB_TIMESTAMP.tar.bz2 $DB_NAME\_$DB_TIMESTAMP.dump
rm $DB_NAME\_$DB_TIMESTAMP.dump

パスワードをコマンドラインに直接書いているので「セキュアでないよ」というメッセージは出ますがまぁ、OKです。

2015年7月28日

オレオレ証明書の取り扱い

 オレオレ証明書ってHTTPSのテストをするために使用するものだと思ってました。

不特定多数の人に対してのWebサービスでなければ(自分しか使わないとか、チームだけで使うとか)オレオレ証明書を発行して証明書をブラウザにインストール(表現あってる?)しておけば通常の証明書として使うことができるんですね。
 イマイチ自身がなかったから自分専用のWebサービスなのに証明書屋さんから証明書買ってやってましたよ。
 さらには、ワイルドカードのちょっと高いやつを。

 これでお客さんのサイト(社内システム)もオレオレ証明書で良いかな?なんて思っています。
いやいや、買ってもらうべきだすよ。


 このサイトを読んで自分にOKを出しました。
http://www.webtech.co.jp/blog/optpix_labs/server/1159/


と思いましたが、
startssl.com」という無料でSSL証明書を発行してくれるところがあるのでそっちをとって使うべきでしょうね。
ちゃんとブラウザでも対応されているようなので。


2015年7月26日

Windows10のリリースは?

Windows10のリリースは、2015/7/29となっていますが、MSDN サブスクリプションも同様なのだろうか?

今までだったら、ちょっとはやくリリースさていたような気がするのですが…。

2015年7月24日

AWSのELBとHTTPSとCakePHPでハマりました

 Webサイトを作るときには、HTTPSにしてセキュアにする必要があります。


なので、AWSでELBに証明書をインストールして以下のような構成にします。

リクエスト(HTTPS:443)

ELB(HTTPS:443→HTTP:80)

Webサーバ(HTTP:80)

ですが、httpsでアクセスしているにもかかわらず、Router::fullBaseUrl()を参照すると「http」が返却されて来てしまい困ったこととになります。
例えば送信メールにURLをつけるときに「http://ホスト名/~」となってしまいます。
他にもページ遷移がちゃんとできなくなってしまうような現象もあったような気がします。

確かに、Webサーバー内に入ってくるときは、HTTP:80なので間違いではないのかもしれません。


じゃあ、どうするか。


app/Config/bootstrap.phpに以下のロジックを書いておきます。
if(isset($_SERVER['HTTP_X_FORWARDED_PORT']) && 443 == $_SERVER['HTTP_X_FORWARDED_PORT']) {
    Router::fullBaseUrl('https://'.$_SERVER['HTTP_HOST']);
}
するとちゃんと、Router::fullBaseUrl()で「https://ホスト名」を返してくれます。

2015年7月10日

AWS CodeCommitがリリースされた

 やっとAWS CodeCommitがリリースされたようです。

今まで、サーバーを借りてそこでSubversionでソース管理していたけどこれでバックアップとかを余り気にせずにソース管理をすることができるかもです。

ですが、このサービスは、GitリポジトリのホスティングらしいのでGitの練習及び、Subversionのリポジトリの移行が必要…。

 頑張って練習しようっ。

https://aws.amazon.com/jp/codecommit/

2015年7月7日

真面目に検討しようと思う(VCSのブランチの運用ルール)

 当然のごとくVCS(Subversion)を使ってソースのバージョン管理をしているのですが、複数のテーマ(バグ対応、仕様変更等)を同時に対応しなければならないことが多々あります。

 一人でやっているのでソースのバージョンを緻密に管理していれば事故ることは殆どないのですが、それが3つ以上のテーマになると他のことに気が回らなくなってしまい壊していくことがあります。
 こんなとき、VCSのブランチの機能が有効だと思っています。  でも、通常は、一人が1テーマの対応をするはずなので開発環境はひとつ持っていれば良いと思うのですが、一人で複数のテーマを対応するする場合、複数のブランチができてしまい切り替えが大変そうな予感がしています。
 
 まぁ、そこは、いろんなテクニックがあるでしょうから使いながら調整でしょうかね?

-trunk
-branch
 -テーマ1のブランチ
 -テーマ2のブランチ
 -テーマ3のブランチ
-tags

 きっと上記のような構造になるんだと思うのですが、テーマ1のブランチを対応中は、そのソースの塊で開発環境へもっていくという必要があるんですようね。

例えば、テーマ1のブランチのディレクトリを開発環境下にシンボリックリンクでリンクを作成することで上手く行くのではないかと考えています。

テーマ1のブランチを対応中
開発環境(実行環境) ← ここは普遍
  テーマ1のブランチ ← シンボリックリンクで修正するソースを参照する

開発環境の共通的な部分は1つで済むのではないかと考えています。

2015年7月3日

JavaScriptで全角カタカナの配列をソートしたい(サクではない)


 JavaScriptのsortメソッドは、アルファベット順で並び替えるのに全角カタカナの場合はちゃんと並び替えてくれません。
そこで、sortメソッドに並び替えのルールを指定します。


例題)
ア~オのランダムにならんだ配列のカタカナを昇順に並び替えます。
カタカナをそのまま比較するとちゃんと並ばないので、encodeURIまたは、encodeURIComponentでエンコードして大小を比較します。
今回は、カタカナだけなのでどちらでも良いです。
var sorting = function(f, t) {

  var f1 = encodeURIComponent(f);
  var t1 = encodeURIComponent(t);

  if(f1 > t1) {
    return 1;
  }else if(f1 < t1) {
    return -1;
  }else {
    return 0;
  }

}


var ar = ["オ", "イ", "ア", "ウ", "エ"];

console.log(ar);   // ソート前

ar.sort(sorting);

console.log(ar);   // ソート後


// 結果(nodejsを使って実行したのですが、文字化けしています)
[ '・スI', '・スC', '・スA', '・スE', '・スG' ]
[ '・スA', '・スC', '・スE', '・スG', '・スI' ]
↓変換された文字を見てカタカナに置き換えるとちゃんとソートされています。
["オ", "イ", "ア", "ウ", "エ"]
["ア", "イ", "ウ", "エ", "オ"]

2015年7月2日

いつになくPCが遅いなと思ったら

 いつになくPCが遅いなと思ったら、使っていない仮想マシン起動していて1GBもメモリを無駄に掴んでたという…。
こんなミスも気にならないくらい程のメモリを積んだPCを早く購入したい。
一応Windows10がリリースされるタイミングでPCを買い換える予定。

 今でもの充分使えるのですが、6年経ってサクサク感を感じなくなってきたのでそろそろ退場してもらう予定。 あー、楽しみ。

2015年6月29日

JavaScriptで数値の配列をサクッっとソートしたい


 JavaScriptのsortメソッドは、アルファベット順で並び替えるので数値の場合はちゃんと並び替えてくれません。
そこで、sortメソッドに並び替えのルールを指定します。


例題)
1~5のランダムにならんだ配列の数値を昇順に並び替えます。


var ar = [4, 2, 1, 3, 5];
var ar_sort = ar.sort(function(f, t) {return f>t});

console.log(ar_sort);


// 結果
[1, 2, 3, 4, 5]

2015年6月9日

atom(テキストエディタ)が使える様になってきた

 以前、使うと宣言して画面分割してそのペインがマウスでサイズ変更できないということで使っていませんでいした。

 最近、そういえば、atomはどうなったかな?と思い、使ってみたら、画面分割したペインはちゃんとマウスでサイズ変更できるようになっていました。

 合わせて、以下のことができるか改めて確認したところ思った通りに動作するようになっていたのでとりあえずVisualStudioから開放されそうです。


  • LESS→CSS(minify化も)
  • JavaScript→minify化

実は、たったこれだけです。
他にも有用なプラグインもありますが、これから本当に必要な物と設定をまとめていつでも同じ環境が作れるようにしようと思っています。

仕事がらproject-managerが無いと仕事の効率が上がりません。
これは、ディレクトリをまとめて管理してくれる為のプラグインです。
プロジェクトとして登録しておくことで、簡単に自分が使うディレクトリの構成をTreeに出してくれます。


あとは、以下の機能を変更できればいいかなと思っています(ホントはほかに沢山ありますけどね。)。
  • Ctrl+H
    バックスペースキー
  • Ctrl+M
    エンターキー
  • Ctril+I
    タブキー


2015年5月21日

EC2インスタンスが止まってて死ぬかと思った

 運用直前のシステムをaws上で開発しているのですが今朝突然接続できなくなっていました。

 ロードバランサー(ELB)配下のEC2インスタンスがOutServiceになっていたのでおかしいなと思い、SSHでつなごうとしてもログインもできず。
 前日に設定を変更したわけでもないのに(何もしてないわけではないですが)何をしてもダメです。

今のところ原因は不明ですが以下の手順で復旧したので次回同じことが起きても焦らないようにメモって起きます。


最後の悪足掻きをしてみる


  1. 接続不能になったEC2インスタンスを停止→起動をする。
  2. ステータスチェックが「2/2 checkes passed」になっているか確認しなっていればOK
    今回の場合、「1/2 checkes passed」のままずーっと止まってました。
  3. 2.がNGだったら諦める。

EC2を再作成する

  1. 予め作成しておいたAMIからEC2を再作成する。
    もし作ってなかったら、再起動しても接続ができないEC2から作って対応します。
    今回は、ちょっと古いAMIしか無かったので再作成しました。
  2. 新しいEC2インスタンスを起動し、ステータスチェックが「2/2 checkes passed」になるのを待ちます。
    ここで「1/2 checked passed」のまま止まったら諦めるしかないのかもしれません。新しいEC2インスタンスを作ってシステムの入れなおしですね、きっと。
  3. ロードバランサに付け直す。
  4. Public IPを古いEC2から付け直す。
  5. システムの動作確認する。

次は、RDSをMultiA-Zにしているのに何か障害が発生した時に正しく対応ができるかどうかでしょうか?

2015年5月20日

CakePHPにAjaxで連続リクエストするとダメなの?

 どうしたものかと悩んでします。

 CakePHPで動作しているサーバーに対してAjaxを使って連続リクエストをすると403のステータスが返ってくる場合がある現象に遭遇しました。

 直接の原因は、AuthComponentクラスの_getUserメソッドで認証済みのユーザ情報が取得できないために、次の処理の_unauthenticatedメソッド内で403を返却してしまっているようです。

もしかしてだけど、もしかしてだけどー。
 軽くソースを見たところ認証ユーザ情報をセッションから取ってきているようです。現在セッションは、ファイルに保存するようにしているのでそこが問題なのかもしれないです。例えば、セッションを読む時にロック掛けて他からさわることができないうにするため、取得できずに何も返さないとか。


 どこで「通常ではないこと」が発生しているかはわかったので対策を建てることはできるかもしれませんが、フレームワーク内を修正するわけにもいかないので困っています。

 とりあえず対応として、業務アプリケーション内で対応することはできているので最悪の自体は回避できてはいます。



 セッション毎の問題のようなのでフレームワークを別のものにするとかはしなくても良さそうです。

関連記事
CakePHPでセッションがよく切れてしまうのを回避

Google Chrome 43になってから?hostsを使った名前解決がおかしい?

 Webのシステムを作っているときローカル環境で開発するする時はドメイン名をhostsファイルに設定して名前解決をしています。

 今回、Google Chromeを43系(64bitで確認)にバージョンアップしたら、今まで使っていたhostsファイルに設定していたドメイン名が効かなくなってしまいました。

 全てがおかしいのではなく、あるパターンのものが問題あるようです。

ドメイン名の最後に「.localhost」と付いているとhostsに書いてあっても名前解決してくれないようです。

NGのパターン
192.168.0.100 hogehoge.localhost

OKのパターン
192.168.0.100 hogehoge.local
192.168.0.101 hogehoge.localhost.com


解決方法がわかったので直近はOKですが、ダメだろこれは?


バグでもなんでもなく、RFCの仕様仕様だそうです。
localhostのサブドメインは使えないようです。
43になったそのバグが解消されたとういうですね。チャンチャン。

2015年5月18日

MySQLのダンプとリストアコマンド

 MySQLのダンプとリストアコマンドを覚えられないのでメモっておく。

構造部とデータ部を分けてエクスポートします。
理由は後で追記しておきます。ちょっと検証が必要だったので。

データベースのエクスポート


>mysqldump -u hoge_user1 -p --no-data --skip-triggers hoge_db1 > hoge_db1_20150518_1000.dump

>mysqldump -u hoge_user1 -p --no-create-info --skip-triggers hoge_db1 > hoge_db1_data_20150518_1000.dump

データベースのインポート

>mysql -u hoge_user2 -p hoge_db2 < hoge_db1_20150518_1000.dump

>mysql -u hoge_user2 -p hoge_db2 < hoge_db1_data_20150518_1000.dump

トリガーを作成

トリガーがある場合は、全てのインポートが完了した後に、ソースから投入します。
ソートが無い場合は、もらってください。

2015年5月16日

Japan IT Week 春 2015行ってきた

 毎年の春の楽しみにしている「Japan IT Week 春」に行ってきました。
これに行かないと自分の春が始まりません(笑)

今、取引しているクライアントの課題を解決することを念頭に見てきました。
当然、次の仕事のネタになりそうなものも気にしているんですけどね。

帳票ソリューション

Webのシステムを作成している時に帳票をどうするかをよく検討するのですが、どんな開発ツールでも同じ方式で帳票(PDF等)を出力したいのですが、なかなかそういったものがありません。
デザインもGUIでわかりやすく設計したいですし。
帳票デザイナと印刷エンジンが開発ツールに依存しないものを探していました。
今だったら、Webサービスを使ったものを探していました。

SVF Cloud


 言わずと知れた帳票ソリューションを提供している会社(ウイングアーク)の展示です。
Webサービスを使った印刷は現在作成中らしいです(リリースは未定)
CybozuのKintoneやSalesforce用の印刷サービスはリリースしているそうです。
 汎用のWebサービスがまだないのだったら、SVFを使って自分でWebサービスを作るというのを考えました。
 一応、説明員をしていた人にライセンス的にはどうか聞いてみたら、そのあたりは、今は検討していないけどありだとは言っていました。
 SVF自体結構高額ですがちょっと汎用の印刷Webサービスを考えて見たいと思いました。

OPRO ARTS


 初めて聞いた会社(日本オプロ株式会社)でしたが、こちらもウイングアークのように老舗のようです。
ですが、クラウドでの帳票ソリューションは、こちらのほうが先行しているようです。
出力した帳票の管理、出力先のコントロール(PDFやFAX等)等のWebアプリケーション込のものや、最低限必要なエンジン部分のみなどいくつかありました。
自分がほしい物は、デザイナと印刷エンジンなのでOPRO Arts LiveとOPRO Arts Coreです。
Liveは帳票デザイン、Coreは印刷エンジンです。
年間12,000枚まで帳票作成が可能なようです。プレビューしても1枚と言っていました。

全文検索をしたいの

Kintone


 いろいろな部品を組み合わせることで簡単にWebアプリケーションを作成することができます。
 テンプレートもあるのですぐに必要なアプリケーションを短時間で作成でき、改造も簡単なようです。
 実は、現在のクライアントから開発中のシステムのデータ(RDMSで作ったデータベース)を全文検索したいんだけどどうなの?という依頼があってどうやってやればいいか考えていたところ内部のデータを全文検索できる機能があるというのがわかったのでそれが使えるのではないかと検討しています。
 開発中のデータをすべてKintoneに取り込むことで全文検索させ、そのデータのキーを含んだURLで開発中のシステムへリンクすることで全文検索が実現できるのではないかと考えたわけです。
 Kintoneには、RESTのAPIがあるのでもしかしたら実現できるかも知れません。
あとはパフォーマンスとクライアントが利用料金に対してOKを出すかどうかです。

請求書後払いをなんとかしたい

 掛売の金額を踏み倒されないようにするために、掛け売りはできるだけしないように指導しているようです。
 それでも必要な場合は、帝国データバンクで調べて掛け売りしてもOKかNGかを社長が判断しているそうです。

NP後払い(BtoB)


 NP後払いのBtoCがあるのは前から知っていたいのですが、BtoBのサービスもやったいるようです。
 1社に対しての補償金額が30万円というのはちょっと低いような気がするのですが(100万円までは相談に応じるとありましが)試しいやってみるのはいいかもです。
 手数料も3〜5%ということでしたのでそれほど高額なわけではないようです。
プランによって手数料は変動するようです。
 相手の与信チェックも30分程度ででき、98%くらいでOKなそうなので試さないては内容です。
 回収保証をしている会社はいくつかありますが、この会社をクライアントに紹介してみようかと思います。



 他にも棚卸しの工数を削減するためのソリューションもありましたが結構高額だったりするんですよね。
 RFIDを使ったものなのですが、棚卸しのデータを管理するためのツールと合わせて、RFID読み取りのハードウェアもセットで40万円とかありました。
 話を聞くと、RDIDリーダーとWebアプリケーションの間のミドルウェア(Windows CEらしい)も含んでいるそうです。そのミドルの部分だけだったらおいくら万円?と聞いてみたのですが答えはもらえませんでした。まぁ、そうでしょうねとは思いましたが(笑)


 今回は、二日間最初から最後まで個別の展示を見ていましたがネタとしてよいものが結構ありました。
 クライアント様向けのソリューションや自分が作って売るためのソリューションネタ(帳票とか)もありました。
次回は、秋に幕張メッセであるはずなので楽しみにしておきたいと思います。

2015年5月12日

電話料金を安くしたいということで。

 電話料金を安くしたいということでSkype電話を導入しました。
自分が使えるキャリアは今のところソフトバンクだけ(2台持ちなのに)なのでそこ宛だったら無料でかけることができるのですが、仕事してると相手は、固定電話だったり、ドコモだったりします。

 余り電話をかけることは無いのですが掛けるときは長電話になったりするのでできるだけ安い回線にしたかったのです。

 Skypeだと固定電話相手だと2.26円/分なので超安いのです(接続料は別途かかりますが)
PCの前だったらヘッドセットつけていれば耳も痛くならないし、キーボード打ちながらの作業もできます。便利!
 試しにSkypeクレジットを使ってやってみてます。

一応Skype番号も取ったのですが、相手の電話に番号を伝えることはできないようです。
日本と他の数か国がその対象になっています、残念。番号がでないと怪しまれる感じがしますが。

Sykpeでも携帯電話相手だと10円/分くらいかかります。
ドコモやauに掛けるときは、楽天電話経由で半額で掛けるようにしています。

で、まとめると

ソフトバンク宛の場合は、自分の携帯(ソフトバンク)で。→0円/分
ドコモ、au宛の場合は、楽天電話経由で自分の携帯で。→10円/分くらい。
固定電話宛は、Skype電話で。→2.26円/分くらい。

多分これで今年の電話料金は安くなるはず。

それと、Skypeの品質はとっても良いと思います。
ビデオ会議でGoogle Hangoutを使っているのですがもしかするとそれより良いかもしれません。

2015年4月27日

【備忘録】年齢を計算する素敵な計算式

 年齢を計算する超簡単なロジックです。  

echo (int) ((date('Ymd') - 19710608) / 10000);
// 43

参考サイト(というかそのまま)
生年月日から年齢を簡単に求める方法

2015年4月26日

【備忘録】CakePHPトランザクション処理の仕方

 CakePHPでトランザクション処理のトランザクション処理の書き方をわかりやすくするためのコンポーネントとかを書いたのに別のプロジェクトをやった時に中途半端にロジックを書いてちゃんと動かなかったので忘れないようにするために記録しておきます。

 共通部品化できているの使いまわせると思います。

 まず、アプリケーションを作る時どこでトランザクションを管理すべきかですが、やっぱりコントローラで管理するのが正しいと思っています。
 CakePHPの場合、DataSourceに対してトランザクションをかけるのですが、DataSourceはモデルが持っているので、イマイチなコーディングになっていまします。
 テーブルが1つの場合は、良いですが、複数のテーブルになった途端見た目がおかしなことになってしまいます。

テーブル1つの場合
トランザクションをかけたいテーブルが1つに明確なのでbeginの意味はわかりやすいです。
    $this->Table1->begin();

    $this->Table1->save($data);

    $this->Table1->commit();

テーブル2つの場合
Table1のbegin()を実行した時点でデータソースに対してトランザクションがかかるので、Table2もトランザクション対象になります。
でも、見た目、Table2はトランザクション対象にならない感じがします。
    $this->Table1->begin();

    $this->Table1->save($data1);
    $this->Table2->save($data2);  // ←トランザクション対象外に見える

    $this->Table1->commit();


じゃぁ、どうするか!

複数のテーブルにトランザクションをかける場合、明示的に使用するモデルを指定する方式をとります。
トランザクション用のコンポーネントとモデルにトランザクション用のメソッドの追加をします。

TransactionComponent.php
class TransactionComponent extends Component {
  /**
   * トランザクション開始
   *
   * @param array $models トランザクション処理するモデルを全て指定する
   */
  public function begin($models) {
    $this->models = $models;
    foreach ($models as $model) {
      $model->begin();
    }
  }

  /**
   * ロールバック
   */
  public function rollback() {

    foreach ($this->models as $model) {
      $model->rollback();
    }
  }

  /**
   * コミット
   */
  public function commit() {

    foreach ($this->models as $model) {
      $model->commit();
    }

  }
}
AppModel.php
モデルに対して、トランザクションの開始、commit、rollbackのメソッドを追加する。
class AppModel extends Component {
App::uses('Model', 'Model');
class AppModel extends Model {

  /**
  * トランザクション開始
  */
  public function begin() {
   $db = $this->getDataSource($this->useDbConfig);
    $db->begin();
  }

  /*
  * トランザクションコミット
  */
  public function commit() {
    $db = $this->getDataSource($this->useDbConfig);
    $db->commit();
  }

  /*
  * トランザクションロールバック
  */
  public function rollback() {
    $db = $this->getDataSource($this->useDbConfig);
    $db->rollback();
  }

}
HogeController.php
使うモデルを明示的に指定するので、わかりやすくなる
App::uses('Model', 'Model');
class HogeController extends AppController {

  public $uses = array("Table1", "Table2");
  public $components = array("Transaction");

  private function register($data) {

    try {
      $this->Transaction->begin(array("Table1", "Table2"));

      if(!$this->Table1->save($data)) {
        $this->rollback();
        return false;
      )

      if(!$this->Table2->save($data)) {
        $this->rollback();
        return false;
      )

      $this->commit();

      return true;

    }catch(Exception $e) {
      $this->rollback();
      return false;
    }

  }

}
これは、CakePHPを使い始めてDBのトランザクションはどうやって扱ったら良いかというのを調査していたらあるサイト(今もあると思いますが忘れました)で一つの解として紹介されていたもものです。  実際の所、ルールなので、複数テーブルにトランザクション処理をするときは、代表のテーブルに対してbegin、commit、rollbackをするということにすればいちいちこんなめんどくさいことをしなくても良いのですけどね。

2015年4月23日

新システムがリリースされました

 1年以上前から手がけていたシステムが本日プレリリースを迎えました。
と言っても社内システムなので世の中の人には関係ないのですけどね。

 本当は、去年の10月にリリースする目標でやっていたのですが、いろんな問題が紛失して今になってしまっています。

 で、何かとういうと、システム移行の過渡期なので旧システムと新システムが同時に運用されます。
 新しい伝票データは新システムで登録して、既に作成されているデータは旧システムで運用していきます。
 システムを使う現場の人はとても大変だと思いますが頑張って新しい方を使って頂きたいです。


 実は、システムを作った側も大変になります。

  • 課題が沢山残っているので随時対応
  • ステージング環境、プロダクション環境と開発環境の3環境を面倒見る必要がある。
  • ステージング、本番環境のリリースを間違わないようする。
    プログラムだけだったらいいんですが、データベースもあるのでいろいろと難儀

 開発環境以外は、AWSなのでこれを機械に開発環境もAWSに作ってしまおうかとちょっと考えてもいます。
 でも、お金が掛かるのがちょっと気になるんですが…。


 これをしながら別のシステム開発もしていくので頭の切り替えが大変です。
新システムのリリース後は何かと問い合わせがあると思いますが頑張っていこうかと。


 でも、これを期にリリースのためのツールや手順のパターン化などが整理できていくはずと思って、勉強期間としても捉えています。
 動けばOKではないのです。いろんなことがスムーズになって属人性の排除ができればよりグッドです。

2015年4月22日

Google+のイベントのタイムゾーン

 Google+のイベントをよく使うのですが、そのデフォルトのタイムゾーンが「日本の東京」ではなく、「東ティモール」になっているのがとても気になる。

 時間的には「+9:00」なので何の問題もないのですが気持ち悪いので毎回変更しています。

きっとどこかの設定が「東ティモール」になっているんでしょうね。

赤丸をしたところが問題のところ

AWSのコンソールが日本語化された

 AWS(Amazon Web Services)のコンソールが日本語化されました。
これで、これってなんだろう?ってのが短時間で解消されそうです。

でも、英語版を見慣れていたせいかなんかスッキリしない感じがします。


【AWS発表】AWS マネージメントコンソールの日本語対応

2015年4月18日

Gitを使う前にgit svnで練習がよいのかな?

 近い将来プログラムソースのバージョン管理をGitに切り替えていこうかと思っています。
 現在は、Subversionでやってます。
 いきなりGitってのも良いのですが、Gitを使ってSubversionのリポジトリを使うためのgit svnというのがあるというのを知りました。
 Subversionを捨てて、Gitに移行してもよいのですが慣れていないツールを使って振り回されて本来やりたいことができなくなると困るのでね。
 新しいプロジェクトが始まったら、Gitを本格的に使っていくことにしました。

で、git svnは。
やっていることは、以下の以下のとおりです。
準備

  1. Subversionのtrunkをコミット毎にローカルのgitリポジトリに取り込む。
    完了すると、ローカルのgitでバージョン管理ができるようになる。
運用
  1. プログラムソースを修正する。
  2. 修正したソースをステージングへ追加する。
  3. gitのリポジトリにコミットする。
    ↑ここまでが通常のGitの操作
  4. git svnでsubversion用のコミットをする
    git svn dcommitコマンドでSubversionのリポジトリにコミットする。
かるく動かしてみたらできたので行けそうです。

 これの何がいいかというと、Subversionの場合、リポジトリが見えてないとコミットできないので直したものがどんどんたまって、ポイント毎に戻りにくくなってしまいます。
 ですが、Gitであれば、ローカルのGitリポジトリに対してコミットをできるのでポイント毎に戻ることができるようになります。
 Subversionのリポジトリが見える環境では、Subversionを使って、つながってない時はgit svnを使ってローカルにコミットをためる。で、Subversionが見えるタイミングになったら、dcommitをしてSubversionにコミットです。

 これで、どこでもソース管理ができるという寸法です。いかがですか?

本当はGitを直接使うのが良いので早くGitに移りたいです。
OSも関係なく、コマンドラインでもさくさくと作業ができればプロっぽいですよね(笑)

Git svnの使い方サイトとか

データフォーマットって大事だよという話

 残念なことは続くよねー。
 移行データを作って送ってもらったのはいいのですが、フォーマットが違うため使うことができないです。
 初めて送ってきたんだったら何かの間違いと思って何も思わずに、直してくださいと言うんですが、それが何回も続くと大丈夫かこの人?ってなってしまいます。
 前回も違っていてそれを指摘すると、自分の責任ではなく業者の問題とかって言って、逆に叱られたんですよね。でも、そんなのには負けずに言い返しますけどね。

 本当の期限が迫っているので、それまで送られてくればいいんですが…。

もう、リリースを何回も伸ばしてるんだからこれが最後だろうな。


2015年4月10日

テキストエディタを変える宣言をしたにもかかわらず

 テキストエディタをSublimeTextからatomに変更すると宣言したにもかかわらず、未だに移行できず。
 理由は、画面分割をした時にマウスでサイズ変更ができないようなんです。
キーボードでできるようにするプラグインがあるようですが、キーボードで操作する為の練習をしないとならないということでなかなか次の一歩が踏み出せません…。

 でも、いつか必ずや!

 

2015年4月8日

やっぱり自分の開発環境は最高

 出向先から舞い戻ってきて(*1)自分の事務所で開発作業をしてるのですが、やっぱり日頃使い慣れている環境での作業は快適だし、捗りますよね。

 いくらCPUが早いPCだったとしても画面解像度が低いと効率の良い開発はできなです。
自分のディスプレイの解像度が高過ぎる(2,560X1,440)のだと思いますが、ノートPCでメインの開発はやっぱり無理があります。
 あと、キーボードが手に馴染んでいるかもとても大事です。
 ワープロやってるだけだったらいいけど。


*1
 出向先に居てもプロパーの人が他の作業につきっきりでなにも進まないのでここに居なくてもいいですよねと言い続けて作業することになりました。
 まぁ、やるべきこともいまいちあやふやですが目指すところはだいたい理解できたので自分の理解のなかで進めることになっています。
 で、週1で見せて整える作戦です。



うまくいくかどうかわかりませんが挑戦中です。
出向先の人(会社)も新しいことに挑戦の年だということで了承してくれたのだと思いますが…。

2015年4月2日

Vagrant使って開発してみます

 Vagrantというオープンソースのソフトウェアがあります。
仮想環境をソフトウェアで簡単にコントロールすることができるツールです。

予め作っておいたOSのイメージをとっておくことで簡単環境を再構築をしたりすることができます。

 自分は、Windowsがメインの環境なので、Linux上で動くWebのアプリケーションとかは、Windows環境で開発、単体テストをしてから、Linux上デプロイして再度テストをするということをしていました。
 Linuxのディレクトリにファイルを置くのは、むずかしいというか一手間必要だったりするのでちょっと面倒だと思っていました。
 ですが、Vagrantを使うと仮想環境のLinux上のディレクトリをクライアントPC(Windows)フォルダのマッピングを簡単にやってくれるのでそのフォルダ上で開発をすることで直ぐのデプロイしたことになるのでちょー便利です。



 で今回はこんな環境で開発をします。

作るアプリの運用環境
(※本当の運用環境は、aws上ですけどね)
  • OS:CentOS
  • Webサーバ:Apache
  • 開発言語:PHP
  • DB:MySQL

開発で使うツール達
  • OS:Windows7
  • DBツール:A5:SQL Mk-2
  • テキストエディタ:Atom
  • 仮想環境:VirtualBox
  • 仮想環境構築ツール:Vagrant

当分、この環境でシステム開発したいなーって思いますわ。

2015年3月31日

やっぱりGitを練習しよう

 ITデベロッパーとしてはやはり、トレンドを追っていきたいです。
ずーっと、Subversionでしたが、そろそろ(遅いですが)Gitの練習をしていこうかと思います。

Gitできないの?えーっ!!って言われないように。

 GitHubのアカウントは持っていたとしても、練習用にGitLabあたりのインストールから始めようかと思います。

以下の開設が良いらしいです。
 http://d.hatena.ne.jp/toritori0318/20140523/1400863038

合わせて、コマンドラインでのGitの練習。
とりあえず↓ができれば良いかな?

  • コンフリクトが起きた時の対応
  • コミットしたのを戻す方法
  • ブランチの有効な使い方
  • リポジトリのアクセス権の設定、制御
    例えば、コメントを必須にするとか。(もともと必須になってるとか?)
  • Windows以外の環境でも使えるようにする
  • GUIなしでも行けるようにする

まだ、頭がSubversionなので切り替えが必要です。



MSDNサブスクリプションを3年契約しているが…

 以前はマイクロソフト製品での開発が多かったのでずーっと、MSDNサブスクリプションを契約していますが、去年は殆ど使っていませんでした。
 ダウンロードさえしてないし、どんな製品が登録されているかも見ていないです。

で、今年2年めなので払い込みました。そんなに安くないです。

 以前、開発でマイクロソフト製品が必要になった時に有効期限が切れていて再度高額スタートになってしまったので安い状態を継続するために毎年マイクロソフトに支払をしています(あまり使わないのに…)
 使わないんだったらやめればって思われるかもしれませんが、OSをいくつもインストールしたりするのでやっぱり欲しいのです。
 じゃぁ、OSだけのにすれば…。確かにそうですよね。でもデベロッパーとしては、いつでも発進できる状態にしておきたいんですよねー。

 最近使っているツールは、CentOS(サーバー)、Apache、PHP、MySQLなので実は、全部無料でいけたりします。

2015年3月30日

新しいサブPCが欲しい

 最近新しいサブPCが欲しいです。

Let's note Y4にUbuntu系のLinuxディストリビューション(Linux Mint)をインストールしてWeb見たりしてるんですが、Pentium M+メモリ 1.5GBなので遅くてたまりません。
 ブラウザにGoogle Chromeを使っているのですが、やっぱりタブをいくつも開くと固まってしまうレベルなので新しいPCを検討しています。

 ASUSは、かっこいいんだけど、ちょっと高いです。
調べてたら、エプソンダイレクトの Endeavor NY40S-Bという安めでスペックもそこそこのを発見しました。

 OSがWindows 8.1 with Bingなので安くなっているようです。
せっかくWindows8.1が入っているのですがちょっと改造して高速化しようと企んでいます。


  • HDDを外して、手元にあるSSDを換装。
  • メモリを+2GBで4GBに変更。
  • OSをLinuxディストリビューションへ(Ubuntu系の予定)


バッテリー駆動時間が約3.9時間と短いですが、SSDにすることでちょっとは延長できるかもしれません。
まぁ、外に持って行くことはと思うのであまり気にしないですけどね。

Linux上でアプリケーション開発をする練習にもなるかもしれませんしね。



2015年3月24日

テキストエディタをatomに変更することを決意。その理由とは…。

 先日、テキストエディタのatomが良さそうという記事を書きましたが、やはりSublime Textから乗り換えることに決めました。

やっぱり、無料で使わせていただけるというのが一番大きいです。
画面分割も細かくできるのが良いです。

あと、LESS(CSS)とJavaScriptのminifyがエディタ無いでできるのが良いです。
今までは、LESSとJavaScriptは、minifyをしたいが為に、VisualStudioを使っていました。

 ホントは、今の手掛けているプロジェクトも切り替えたいところなんですが、minifyしなおした瞬間からテストをし直さないとならないだろうという恐怖から切り替えられないです。
 徐々にminify化しながら切り替えかな。


2015年3月21日

テキストエディタを変更しようかと画策中

 プログラミングをするときにテキストエディタは欠かせません。
今のところ、SublimeTextをプログラミングをしていますが、去年くらいから話題のatomを使ってみようかと思っています。

やりたいこと

  • キーバインドの変更
  • LESSや、JavaScriptのminifyができること
  • シンタックスの色分けに対応する
  • UTF-8、ShiftJISなどの文字コード
  • 改行コードの変更
  • 日本語化(なれれば良いだけなのでなくてもOK)
  • 情報がたくさんあること
  • 画面分割ができること
  • 安いこと(無料だったら最高)

ちょっと試してみたのですが、画面分割が縦横無尽にできるようなのでちょっといいかもしれません。

 試しに使って見ようかと思いますた。



2015年3月16日

Google Apps for Workのサイト機能の使い道

 メールやカレンダー等、仕事で使うツールをGoogle Appsに寄せています。
 以前、サイト機能を使って自分の仕事用のホームページを作っていたいのですが上手く作ることができずに、WordPressに移行してしまいました。

 それから、ずっとサイトって一人でやっているうちは、余り使い道が無いなーと思っていたのですが、自分が抱えている仕事のプロジェクト用のポータルサイトを作っておくととても便利というのに気づきました。

 完全ではないですがよく見るドキュメントを、スプレッドシートで作ってリンクを置いておけばGoogle Driveを参照しなくても直ぐに見ることができます。
 ある意味ショートカット置き場的な…。

 これはまだやっていないのですが、複数人でプロジェクトを行うときには、ここを中心のドキュメントを置いておけば情報共有が簡単にできるようになります。
 本来はこれが目的なんだと思いますが…。

 でも、一人で使っているとあまり楽しくないですよね。変更通知を受け取るとかにしても、自分が変更したのしか来ないと思うし。

 これから大活用することを決めたので頑張って使えるようになりたいと思います。


って、何の宣言だ…。

2015年3月9日

プロジェクト管理のツールご紹介

 以前、MS Projectを使って、スケジュールの管理をやっていました。
あのガントチャートがとってもいいんですよね。
視覚的にもわかりやすいし、タスクの順番の入れ替えも簡単にできたし。

でも、プロジェクトメンバー全員に使ってもらうとすると、結構「¥」が掛かるんですよね。

 で、無料で使えるものが無いかと探した所、デスクトップ版の「OpenProj」というMS Projectの代替となるアプリケーションを発見しました。
 これも結構よかったのですが、実際の所、どう使っていくかのテスト段階で使う必要が無くなってしまい、そのままになってしまいました。

 今は、いろいろなツールをGoogle Appsに寄せているので、Google Apps上で使えるクラウドなやつは無いかなと探した所「gantter for Google Drive」というものを発見しました。

 MS Projectほど機能はありませんが、無料ですし、一番欲しいガントチャートがあるのでちょっと体感しています。
 タスクの始まりや終わりを揃えたり、期間を会えたりもできるのでとっても良いです。
更には、複数人同時で触ることもできるようです。

これだったら複数人のプロジェクトも簡単に進捗管理ができますよね。


ここがそのサイト
gantter

2015年3月7日

PRESIDENTの記事にマッチするAndroidアプリを紹介

PRESIDENTという雑誌を読んでた時に「残業しないで稼ぐ技術」という記事の中で初級編 「記録するだけ」で仕事がどんどんスピードアップというものがありました。
 内容は、一日の行動を細かく記録→振り返るを繰り返すことで無駄を省くことができるようになるというものです。
 この記事では、EXCELで作業内容、開始時間、終了時間を記録していくというものでした。
 以前、会社員時代に上司だったり、管理者にこれだけ、スケジュール上に表せないいろいろな細かい作業をしてるから「本来のスケジュールが遅れたり、遅くまで残業をしてるんですよ!」というのを同じ事を試みようと思っていました(PRESIDENTの記事とは目的は違いますが…)。
 ですが、毎回EXCEL等に記録することが面倒だったり、PCが無いところでの作業の場合、記録できないというのがあったのでアイディアだけでそのままに指定ました。
 で、このことを思い出して以前Androidで作ったアプリがまさにこれにマッチするのではないかと思い紹介します。
 予め、タスクを登録しておくことで、ワンタッチでタスクの開始を記録できます。
 人はマルチタスクで動いているとおもいきや実はシングルタスクなのでこれで充分なのです。

ダウンロードはこちら↓

2015年2月16日

永久にリリースできないシステムのはなし

 去年の今頃から始まったプロジェクトを未だにやっています。
当初のリリースは、10月だったのですが、無駄にののびのびになってまだ、要望が上がってきています。

 そもそも、設計というものをせずに現行の機能をみてつくり始めたのでこうなるのは予想がつきましたが。
 (内心もっと、積んでおけばよかったと思っています。)

 テストと称してユーザに運用ができるように操作指導をしているようなのですが、その時にあがってるああしたい、こうしたいというを全て課題表に上げているようなのです。
 アホらしくて笑いが出てしまいます。

 まぁ、ユーザは言えばやってくれると思っているようですが、こっちはただではやりません。
終わるまでまたは、対応する要望をやった分の作業料は、間に入ってアホな動きをしている人に請求するつもりです。

 数が減らない限り運用なんて始めたくないし、させません。

2015年2月11日

ディスプレイの解像度は高いに越したことはない話

 現在、出向先の会社で仕事をしています。
高スペックのノートPCをあてがってもらって作業をしているのですがディスプレイの解像度が自宅で使っているのよりも低いのでなかなか難儀をしています(慣れてはきましたが)。

 そのPCの解像度はフルHD(1920×1080)なのですが、やはり小さいです。
テキストエディタを縦に二分割下だけで文字の見える量が格段に減ってしまいます。

 別に自宅の環境自慢ではないですが、メインディスプレイは、2560×1440(27インチ)で、サブディスプレイは、1600×1200です。

 メインディスプレイは大きすぎたかなとはじめは思っていましたが、なれるとちょうどいいというかもう少しこうなってほしいと欲も出てきてしまいます。

 もしかすると、24インチ位(解像度はフルHD以上)のディスプレイを縦置きにして2台の方が良いのかもしれません。

2015年1月30日

誤って大量印刷をしてしまうあなたへの施策

 エクセルで作った文書はチェックの為に一度印刷したりすると思います。
よくあるミスがちょっと横に長かったばかりにはみ出した部分を含んだページが大量に印刷されてしまう場合があります。

 これを解決するための無料でできる最高の方法が発見されました(というか自分でやってる方法)!


 プリンターを常に「一時停止」にしておきますおくのです。




ほらすごく簡単!
これで、誤って大量印刷とかしてしまっても「紙がもったいない!プリンタ専有しすぎっ!」って怒られることがなくなります。

印刷ボタンを押したら、直ぐに印刷されないと困るということなんてそうそう無いと思うのでとくに問題はないとおもいますしね。
 これが一番有効なのは、お客さんのところや出向先で仕事をしている時だったりします。
紙だって、トナーだってお客さんのものですからね。


 ただ、印刷が終わったら「一時停止をする」という習慣が身につかないとダメですねどね(笑)

2015年1月12日

linuxでコマンドで消せなくなったファイルを削除する

 ファイル名に制御コードが入ってしまった場合等にrmコマンドでファイルが消せなくなってしまいます。
 それのファイルを消す方法です。

1.i-node番号を調べる

$ ls -li
ファイルの枚にnode番号が表示される

2.ファイル名を変更する。
find . -inum 9999 -ok mv '{}' aaaa.dat \;

yを入力して続行。

9999は、i-node番号
例では、aaaa.datにファイル名が変更される

3.ファイルを削除する
$ rm aaaa.dat



サイト
消せないファイルの削除の仕方(linux)