2018年7月19日

数値を均等に分割したいときはこうするよ

ある数値を決まった個数に均等に分割したい場合がたまにあると思います。
その場合、以下のようにすると、割り切れない数値を均等に分割してくれます。

例では、
100を3つに均等に分割する例です。

total..全体の数値
group..分割数
groubBox..分割した数値を入れる配列変数

var total = 100;
var group = 3;
var groupBox = [];
for(var i=0; i<group; i++) {
  var num = Math.floor((total + i) / group);
  groupBox.push(num);
}

console.log(groupBox);

[ 33, 33, 34 ]
どこかに証明されているのかわかりませんが…。

2017年4月28日

IE11はPromiseに対応していないだって?

JavaScriptで非同期処理の要のPromiseを使うアプリケーションをいろいろなブラウザに対応させるためちょっと調べました。
というか、Internet ExplorerやAndroidの標準ブラウザ(4.4以下?)は、Promiseに対応していないようです。

headタグ内に以下を記載しておくことで、Promiseに標準対応していないブラウザでも使うことができるようになります。

<script>window.Promise || document.write('<script src="//www.promisejs.org/polyfills/promise-7.0.4.min.js"><\/script>');</script>
<script>window.Promise || document.write('<script src="/js/promise-7.0.4.min.js"><\/script>');</script>
 
1行目は、CDNを使ってPromiseが使えるようにするスクリプトを読み込みます。
2行目は、CDNのサーバがダウンしている場合を考慮してPromiseが使えるようにするスクリプトを読み込みます。

どちらにも、「window.Promise ||」とありますが、グローバルオブジェクトにPromiseが定義されていない場合のみ、スクリプトを読み込むようにしています。
なので、Chromeなどモダンなブラウザの場合は、スクリプトを読み込むことなくNaitiveのPromiseを使用します。

よかった、よかった。これでどのブラウザでもPromiseが使用できます。

2017年4月8日

hostsの設定をミスる

 Webアプリケーションを作っているときに、IPアドレスでアクセスするのが嫌でhostsにドメイン名を定義して開発してます。

今回も設定してやってたんですが、Google Chrome57でアクセスするとなぜかレスポンスがとても悪くなってしまいました。
全然大きくもないアプリケーションなのに…。


デベロッパーツールのNetworkタブので見てみるとInitial Connectionが21.0sとかになっていました。
接続に時間がかかっていると…。

Apacheの何かの設定をミスったのでは無いかと、数時間調査したけど特段それらしいものも発見できず。

じゃ、Firefoxだったらどうか?
一瞬でレスポンスが返ってきました。

おかしい、ブラウザの問題か?
IE10でやってみてもそれほど遅くなくレスポンスが返ってくる。


もしかしてとpingを打ってみたら、思ったのと違うIPアドレスを返してきたのですよ。
「当然、要求がタイムアウトしました。」と宣ってます。

「がっくし…。」
はい、同じドメイン名に違うIPアドレスをふっていました。

アホな設定
192.168.33.13 app.example.com
192.168.33.12 app.example.com

でも、ブラウザによって使用する設定が違うってどういうことですかね?
ドメイン名の名前解決って通常DNSがやってくれるからブラウザ依存にはならないような気がするのですが…。

hostsファイルに書くときは、重複しないように書いてください。
こんなのに何時間も費やすのはアホ以外の何物でもありません。
(と自分に言い聞かせる)

2017年1月8日

tableタグのtrタグを指定したデータで追加するjQueryプラグイン作ってみた

業務アプリケーションを作っていると、テーブルに行を追加する処理が良く出てきます。
例えば、検索ウィンドウで条件を入力して検索するとその検索結果が行として表示され、選択するとメイン画面に反映するとか。

毎回同じコーディングをして面倒だったのでjQueryのプラグインにしてしまいました。
既にもっと高機能なものが提供されている可能性もありますが、自分がやりたいように改造もしたいので車輪の再発明をしました。


プラグインのダウンロードは、こちら(jQuery.tabler)から


    
    Tabler
    
    
    



    
    
$(function() {
  'use strinct';

      // ポイント : tablerの準備
      //
      $("#search_list").tabler({
        rowTemplate: '.row_template',
        rowDetail: '.row_detail',
        addPoint: 'tr:last'
      });

      $("#button").on({
        click: function() {

            var data = [
                {id: 100, text: '100のデータ'},
                {id: 101, text: '101のデータ'},
                {id: 102, text: '102のデータ'},
                {id: 103, text: '103のデータ'},
                {id: 104, text: '104のデータ'},
            ];

            // ポイント : テーブルに行を追加する
            $("#search_list").tabler.bindData(data, {
                clear: true,
                // 行編集
                editRow: function(index, item, newRow) {
                $(".no", newRow).text(item.id);
                $(".タイトル", newRow).text(item.text);

                return true;
                }
            });
        }
     });
});
プラグインのダウンロードは、こちら(jQuery.tabler)から

2016年12月21日

なに!?マスタメンテナンスが1日で5本できたって?

 マスタメンテナンスほど時間をかけて作ってはならないものはありません。
(ちなみに、Webシステム。)
1本目はちょっと時間かけてもよいけどそれを真似れば一瞬にして何本も完成するほどにマスタメンテナンス機能の標準化をすれば良いだけです。

 隣の人が1日で5本できたという報告をプロジェクトリーダに報告してリーダは「えぇー」とびっくりしていたけど、「そりゃ、俺が基準になるマスタメンテを作ったんだからそれくらいのスピードでやってもらわないと困るわ」と心の中でつぶやいておきました。

 その隣の人もびっくりしたんじゃないですかね?
どこを触れば良いかがわかったときは、スルスルできるので。
(いや5本ではなくもっと作れるはず。他にもあれば進捗が一気に上る。)


 マスタメンテナンスはそれで良いですが、他の機能はてんでバラバラで作っているのでまとまりがないんだろうと思っています。
 多分モジュール分割の概念がないのか、めんどくさいのかわかりませんがコントローラ内でSQL発行したり共通化できる部分を共通化して外出にしたりすらされていないのを見ると他人事ながら腹が立ってきます。

 でも自分がメンテナンスするわけではないのでほっといていますが。

2016年12月12日

WebシステムのHTMLはできるだけ簡単に

Webシステムは通常ブラウザ上で動作させるのでHTMLを書きます。
HTML、CSSの知識が乏しい為とんでもないマークアップを書いてしまう人がいます。

よくある項目のタイトルと入力エリアがあるパターンでdivタグを5重くらい重ねて表現する人がいます。

こんな感じの入力欄を作るだけで下の「深いタグ」のようなHTMLを書く人がいます。
詳しくは覚えていませんが、各タグは、枠線の為のタグ、幅を決めるタグなどそれぞれ役割があるようです。
しかし、CSSを適切に使うことで「浅いタグ」くらいで済みます。修正も見た目もよくよくなります。

名前:

深いタグ
<div>
  <div>
    <div>
      <div>
        <div>
          <span>名前:</span>
          <input>
        </div>
      </div>
    </div>
  </div>
</div>


浅いタグ
<div>
  <label>名前:</label>
  <input>
</div>


具体的な正解は書きませんが(笑)

AWSのロードバランサーOutServiceにどきどき

AWSのEC2を再起動したあとでロードバランサーでずっとOutServiceになってるとときは焦るわー。

大抵はEC2をドードバランサーに付け直すことでInServiceになるんだけどたまに一向に状態が変わらないときがあります。

こんなときは、EC2自体を再起動してやるとInServiceになります。
(でもEC2の再起動でもインスタンスステータスのチェックでエラーになったりするんですけどね。そしたらもう一度再起動。)


さよならatom。よろしくVisualStudioCode。

プログラミングをするときのエディタはよく変更します。

最近は、githum製atomを使っていました。
いろんなプラットフォームで使用できるので統一しようとずっと使ってました。とても良かったです。
ですが、最近はちょっと遅い(いやだいぶもたつく)感じが出てきたのでほかへの乗り換えを検討していました。

 Visual Studio Codeを使って作業をしています。
ちょっと前までは、エディタの横割りができなかったのでうーんって感じで避けていたのですが最近やっと横割りになる機能が実現されたのでテスト的に乗り換えです。

通常出できば良いことは以下の通りです。

  • JavaScriptのminify化
  • LESSのCSS化
  • CSSのminify化
  • 開発言語のSnipet、色

あと良かったのはエディタ内にコンソールが出せるとこでしょうか(atomもあるはずですが使って無かった)。
今まで、Vagrantで開発サーバを起動する為にコンソールを別に起動してやっていたのですが「Ctrl+@」でワンタッチで起動できるのですごく便利です。
gitのコマンドもそこでたたいたりして。

あと、一番良いのはサクサク感です。スピードに関してはatomには戻れようにありません。
Pluginを入れすぎてるから遅いのでは?と考えられますけど…。

こんな感じで開発用のテキストエディタを乗り換えました。


余談ですが、もう一つNotepad++というエディタを使っています。
これは、開いたファイルをタブ形式で表示してくれ、エディタを再起動しても元に復元してくれるのでとても重宝しています。
よく使うやり方が、変更履歴やログファイルを常に開いておき、いつでもサクッっと変更したり見たるすることができます。
ちょっとしたビューワー代わりに使っています。
エディタとしての機能も申し分ないです(以前はこのエディタで開発をしていました)

なので。
さよならatom。よろしくVSCです。

2016年12月9日

老婆心ながらリハは必要ですよと言いたい

リリースやデータベースの移行の練習もせずに客先でやるみたいな話し声が聞こえてきて大丈夫か?この人達と他人事ながら心配になった。

客先でのリリースとかの作業は一回以上はリハーサルしないとだよね。

あと、今時点のソースをGitにPushしておいてくださいという声も聞こえてきたけど大丈夫かね?バックアップ場所ではないんですよ。
そのあと誰かに言われたんだと思うけど、「動く時点のものをアップしてください」と言ってました。
(そもそも当たり前にそういう運用をしないとダメなんだけどね)

Gitというかバージョン管理のツールとかあまり使ったことのないチームのようでとっても心配。
他人事ながら…。


メンバーがなんらかの問題点をリーダーに説明してるけど、リーダーは何を言われているか理解できていないと説明をしているメンバーはリーダーが理解できていないことに気づかずに専門的な言葉をならべて喋り続けているのがなんか滑稽な感じ。


多分トラブル。その頃自分はいない。


2016年11月10日

Google Chromeの拡張機能のSortdは使えそう

G Suite(旧Google Apps)を使って仕事をしています。
その中でもGmailは欠かせない機能です。

ときには、メールで状態を管理したくなり、状態用のタグを付けて管理をしていることがありました。

ですが、メールをレーン(状態)でビジュアル的に見て管理することができる拡張機能を見つけました。
よくあるカンバンと言われる機能だと思います。

Sortd Smart Skin for Gmail」というものです。
http://www.sortd.com/

今までは、来たメールで直接状態を管理することはできませんでしたが、これは、メールで状態を管理することができます。
メールに独自のタイトルを付けることでわかりやすく管理することもできます。


ちょっと真面目に使ってみようかと思います。

2016年11月8日

Visual Studio Code 1.7.1になる

Visual Studio Codeが1.7.1になってやっと上下の分割ができるようになりました。

速度的には、atomよりもとてもサクサクと動作するのはわかっていたのですが、上下の分割ができないという理由で本格利用を避けていました。

この点が解決したのでもうちょっとちゃんと使ってみようかと思っています。
atomの場合、上下左右の分割は自由にいくつでもできますが、実際問題、上下左右に細かく分割することはなく上下に3つ程度に分割し各ペインにファイルを開くということが多いでです。

PHP, JavaScript, Less(CSS)の開発のスピードが上がるか楽しみです。
※PHPは、NetBeansが良いなというのを最近体験してしまって、浮気しそう…。



VisualStudioCode(http://code.visualstudio.com/)

2016年11月7日

仕事でLaravelを使ってますよ。

 LaravelはPHPのフレームワークで、最近人気が出てきているようです。

一番使っていたのは、CakePHP 2系なのですが、Laravelも手に馴染みそうです。
(CakePHP3も練習したいのですが…。)

何が一番いいかというと、教えてくれる人が居ることです。
新しい道具を使うときはやっぱり基準になる人がいると聞けるし楽ちんです。
後はプロジェクト内で足りないものを付け足していくたでだし。

 CakePHPや、JavaScriptで磨いた腕が発揮できそうです。

2016年11月5日

Googleカレンダーでバグなのか仕様なのか?


Googleカレンダーのバグを発見しました。
2日に渡るカレンダーの設定をして、開始の時間が終了の時間より大きいとカレンダー上に帯がでない。
仕様なのかバグなのかわかりませんが、多分バグ何だと思います。

なぜなら、3日以上だと帯が出るので。

2016年10月20日

コミットログに。

 今、手伝っているプロジェクトでは、ソース管理にSubversionを使っています。
それはそれで全然問題ないないです。

問題点はそのSubversionにコミットしたときのコメントがすごい。


  • 「障害修正(10/18)」
  • 何も書いていない


まぁ、その組織の問題なのでなんか言ったところで変わらないと思うし、もう少しで終了なのでなにかをいうつもりもないんですけど。
とても、残念です。
でも、昔から知ってる人で昔々にそのあたりの話しはしたことがあるので言わなくてもいいかなとも思っています。

なぜかっ!
特に困っている様子もないので。

でも、自分のプロジェクトのときは厳しく対応はしてもらいますけどね。

2016年8月12日

IT技術者の人は(だけではないですが)

 IT技術とか変化が激しかったり、いろいろな技術があって日常業務ではできないようなことを身に着けるためには、長い休みはとても良い時間だと思います。
 日頃の疲れを癒すために過ごすこともとても大切ということも認識しています。

ですが、通常業務中にできないようなことは長期の休みの間にいろいろと学習や挑戦をしたほうが良いと思います。
というか、しなければなりません。

業務時間中に与えられた作業をこなすことが仕事と思っている人は「なぜお金ももらえないことをしなければならないの?」となるかもしれませんが、目先の利益よりももう少し先の利益を考えてもよいのではないかと思います。

新しい技術(自分にとって)を覚えたことによって新しい面白いことができるかもしれませんし、今やっていることが楽になるかもしれません。


まぁ、こんなことはIT技術者だけではなくて全部の仕事に言えることですけどね。

2016年8月6日

そのツールを使うのはただの手段とはいうが。

 システム開発や管理をする為に有料無料を問わずにいろいろな製品が発表されています。
当然何かの問題を解決する為に開発された製品達ばかりです。

自分たちが抱えている課題を解決するために導入したツールがマッチするととてつもない効果を発揮してくれます。

 ですがマッチしなかったり、どう使っていくかも考えずに導入していくと逆に足を引っ張ってくれるものになります。

 で、よく「ツールを使うことが目的では無いんだっっっ!」と声高々にいう人が居ますが、これは一般的には正解です。間違っているとも言いません。

 ですがなんですよ。
そのツールが自分たちの課題を解決できるものかどうかを評価しているは、「ツールを使うことを目的にする」ということもしないと正しい評価だったり判断ができなくなってしまします。

※ここで間違ってほしくないのは「本来やらなくてはならないことをならなくても良いということにはなりません

新しい何かを導入するときはそれなりのコストを代償として払う必要があるということです。
お金だったり、時間だったり。(一番大きいのは時間だと思いますが)


もし自分が新しいツールを導入しようとした時は、現状(現在のやり方)を維持しながら新しいことも同時にやっていきます(時間というコストを支払っています)。
そうしないと自分のものにならずに一番よくない「使うことが目的」になってしまいます。

よくあるパターンが下請けの仕事をする時にこんなパターンになってしまう場合があります。



ここから現在の自分の状態ですが。

ある会社のプロジェクトに参加していて、プロジェクト管理のツールを使っているのですが、(自分も相手の会社も)初めて使うものです。※全社で同じものを使って管理をしたいそうです。
結局使い方を調査したり、どうやって運用していくかを決めているのは自分なんですよね(自分もそれを使って管理とかをしたいので何の苦でも逆に嬉しい)。
相手の会社の人と話をしていると使い方だけ(それらしい答え)を習得したいらしいです(時間という代償は払わない)。

多分、なぜこういう使い方にしているとかを知らないので全社に展開したあとに最悪の「使うことが目的」みたいになってしまうのではないかと感じています。


まぁ、自分の血肉が強化されていくので問題は無いんですけどね。

2016年7月25日

AWSで開発してるのになぜ?

 んー。
なぜかわかりませんが、せっかくクラウド上(AWS)でシステム開発をしてるのにその機能を精一杯使って開発をしないのかがわからない。

 サーバの設定を変えてテストをする必要があるようなので新しいサーバを立てて、そこで動作確認をすればいいのに。
 でも、運用しているサーバにちょこちょこと何かを設定して頃合いを見て再起動とかしようとしているらしい。

 もしうまく行かなかったらどうするつもりんなんだろう?(まぁ、対して使われていない管理サーバだけど)

 もう、効率悪いというか、なにも考えられないというとか、外から見ていてイライラするっす!


EC2 → AMI → テスト用の新しいEC2でテストする。
とすればいいだけなんだけど?

 うーん、何もしらな過ぎませんか?なんか、勉強してるんだよね?

だめだ、考えるだけでイライラする。

2016年7月18日

当たり前なんだと思うが、ちょっと感動。Gitの話。

 ソース管理をGitに切り替えてから1年くらい経ちます。

メインブランチとそこから派生させたフィーチャーブランチで同時開発をしてました。

メインブランチにコミットしたら、フィーチャーブランチへのマージを真面目にやってました。

とうとうフィーチャーブランチをマージする時がやってきて、マージしてみるとコンフリクト無しでマージができました。
当たり前と、言えば当たり前ですが、感動モノです。
なぜなら、フィーチャブランチのコミット回数が534回(マージも含めてですが)もあるもんで。

メインブランチにマージした時に何かおきると思ってたのでちょっと感動してしまいました。

2016年7月16日

多分終わらないと思うよ、その作業。

 ある会社の若手の話です。

 ある作業は、直ぐに何か問題になるほど急いでいるわけではないけど、既に手を付けているがいつになっても終わりましたという報告が無い。

 急いでいないという(先輩の言葉)ことから、「自分の作業が空いた時にやっています。」という。
まだちょっと調べないとダメなところもあるらしいことも言っている。

 きっとですが、そのスタンスだとその作業は当分終わらないと思います。
空いた時っていつ?会社にいる間は全ての時間を自由使えるの?他人からの依頼作業とかないの?

 仕事や作業への向き方ですが、終わらせるという意識がない限り終わることは無いです。
やらない理由、終わらない理由は無限にあるのでね。

ちょっとくらい残業してでも、終わらせるという気概がほしいと思いました。

他の会社の人のことなのであーだ、こーだとあまり言いたくないですが、言いたくてうずうずしてます。
そんな教育じみた事は自分の仕事外のことなので言わないほうが良いのですが、自分の価値を上げるためには言ったほうがいいんだろうなーとちょっとは思ったりします。


まぁ、頑張ってね。

2016年7月14日

大抵守らないのはリーダー


課題の登録は、JIRAへと言っているのにSlackに投稿するダメな人。 今回もそうだけど、大抵は、プロジェクトリーダーとか管理者という肩書を持っている人人がルールを守らない。

というか、把握していないというか、使い方を解ってないというか、その瞬間に近くにある何かを使う(口頭も含まれる)。

自分が音を発すれば、誰かが何かをしてくれると思っている。


超イラつく。