Quantcast
Channel: パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください
Viewing all 138 articles
Browse latest View live

Kibana 4.3 に Basic 認証機能をつけるプラグインをつくってみた。

$
0
0

どうも、ちかです
最近めっちゃ忙しい。。

Kibana ってこんなの

Elasticsearch のデータを可視化するツールです。

こういうブログ記事では
まず導入として
Kibana ってこんなの」っていう話をするものですが
すでに知ってる人向けの記事ということで。

Kibana プラグイン

Kibana 4.2 からプラグインで機能を追加できるようになりました。

サーバー側は Node.js のフレームワーク hapi ベースで
クライアント側は AngularJS ベースで
とりあえずなんでもできます。

特に Elasticsearch へのアクセスは
サーバーから手軽にできるようになっています。
サーバー側でプロキシを作ればクライアントからも簡単にアクセスできます。

# Elasticsearch への GET メソッドのクチはデフォルトで開いてます。
# elasticsearch.js の API を
# サーバーでは server.plugins.elasticsearch.client として使えます。
# クライアントでは es という名前で依存性注入できます。

Kibana プラグインの作り方

Qiita に
Kibanaプラットフォームでアプリケーションをつくってみよう
という濃いぃ記事があるのでご参考に。

ミニマム構成では index.js と package.json があれば OK。

認証プラグイン


Kibana を使ってみて気になったのが
認証機能がないこと。

Shield という Elasticsearch プラグインがあるらしいのですが
有償らしいので (セキュリティ向けプラグインShieldのリリース(日本語訳))
とりあえずあきらめて

Authentication という Issue ページも立っているのですが
4.2 ⇒ 4.3 ⇒ 4.4 と先延ばし先延ばしにされているので
とりあえずあきらめて

作ってみました。

  • index.js
const Boom = require('boom');var users = {  chica: {    password: 'secret'  }};module.exports = kibana => new kibana.Plugin({  init(server, options) {    server.auth.scheme('basic', basic);    server.auth.strategy('default', 'basic');    server.auth.default('default');  }});function basic(server, options) {  return {    authenticate(request, reply) {      const authorization = request.raw.req.headers.authorization;      if (!authorization) {        return reply(Boom.unauthorized('Authentication required', 'Basic'));      }      const parts = authorization.split(/\s+/);      if (parts.length !== 2 || parts[0].toLowerCase() !== 'basic') {        return reply(Boom.unauthorized('Authentication failed.', 'Basic'));      }      const credentials = new Buffer(parts[1], 'base64').toString().split(':', 2);      const user = users[credentials[0]];      if (!user || user.password !== credentials[1]) {        return reply(Boom.unauthorized('Authentication failed.', 'Basic'));      }      return reply.continue({ credentials: { user: user } });    }  };}
  • package.json
{  "name": "basic-authentication",  "version": "0.0.1"}

index.js と package.json を tar.gz に固めて

kibana/bin/kibana plugin -i basic-authentication -u file://path/to/plugin.tar.gz

こんなので
一応ちゃんと認証が求められるようになります。

まぁでも
これを洗練するより
4.4 が出るのを待つかな。(本末転倒)

今回はこんなところで。


スタックいろいろ

$
0
0

bitnamiみてるとやる気のないアルファベットアイコンでナントカStackが並んでたのでまとめてみた。

LAMPスタック
Linux
Apache HTTPd
MySQL
PHP (Perl, Pythonの場合もあった)
これは従来から有名なWebサイト構築で基盤となるソフトウエア構成のことですね。

LAPPスタック
Linux
Apache HTTPd
PostgreSQL
PHP
LAMPからDBがPostgresになったようです。

WAMPスタック
Windows
Apache HTTPd
MySQL
PHP
LAMPのLinuxをWindowsに替えた構成ですね。

WAPPスタック
Windows
Apache HTTPd
PostgreSQL
PHP
LAPPのLinuxを(以下略

MAMPスタック
MacOS
Apache HTTPd
MySQL
PHP
LAMPのLinuxを(以下略

MAPPスタック
MacOS
Apache HTTPd
PostgreSQL
PHP
LAPPのLinuxを(以下略


結局OSの種類とDBがMySQLかPostgresのどちらかに振れるだけでした。。
MEANスタック(MongoDB-Express-AnglarJS-Node.js)みたいな新規性のある組み合わせじゃなかったようです。

エクセルマクロ Changeイベントで列の表示/非表示切り替え

$
0
0


セルに入力された値によって、列の表示/非表示を切り替えたいという時はありませんか?
そんな時は、Changeイベント(セルの値が変更された時に発生)を利用して制御します。


準備
① 開発→Visual Basic をクリック



② 対象のシートをダブルクリック


③ 「オブジェクトボックス」で「Worksheet」を選択
   「プロシージャーボックス」で「Change」を選択



サンプル
陸路を選択した場合にC列 空路を非表示にする



実行例
陸路選択で、C列(空路)が非表示


再度空路を選択すると再表示される


ソース


Private Sub Worksheet_Change(ByVal Target As Range)

''B4~B7 変更されたか
If Intersect(Target, Range("B4:B7")) Is Nothing Then Exit Sub
''"陸路"が選択された場合は"空路"列を非表示にする
If Target.Value = "陸路" Then
Columns("C").Hidden = True
Else
Columns("C").Hidden = False
End If
End Sub

Sikuliあれこれ

$
0
0

sikuliは画像認識を利用したGUI自動操作ツールです。

そんなsikuliを使った実装方法について記載します。

① 検索失敗例外(FindFailed)でも処理を止めない
  Find、Wait、Clickなどで対象が発見できなかった場合に、System Errorが発生してしまい処理が止まって しまいます。
そこで、例外処理(try、except)を記述し回避します。


try:
wait("1443602551072.png")
# 通常処理
except FindFailed:
# 例外処理

こんな使い方も
セーブボタンを押した後に、上書き確認があった場合の処理


② Findしたイメージの座標の取得

  g = find("xxxx.png")
print(g)

取得結果(赤文字が座標)
M[344,463 67x13]@S(S(0)[0,0 1366x768]) S:1.00 Target:377,469

③ 直接座標指定のClick
チェックボックスなどを、座標指定で直接クリックなどに
click(Location(200, 240))

④ キー処理

type(Key. ESC)
type(Key.TAB)
type(Key.DOWN*n)  #*n回実行
type(Key.ENTER)
type(Key. BACKSPACE)
type(Key. DELETE)
#キー処理複合
type(Key.RIGHT,KEY_CTRL | KEY_ALT) #エクセルで実行すると縦表示に!
type(“r”,KEY_WIN)  #ファイルを指定して実行


以上、どなたかのお役に立てれば幸いです

node-easymock で 簡単にWebAPIのモックサーバーを作る

$
0
0
こんにちは。ゆんゆんです。

WebAPIを使用したサーバークライアントシステムの開発において、
APIの仕様が決まれば、通常は同時進行で、サーバーとクライアントの開発が行われます。
そのため、クライアント側は、サーバーが完成していない状態で開発を進めないといけません。
そこで、モックサーバーの出番です。
モックサーバーでは、特定のリクエストに対して、特定のレスポンスを返します。

モックサーバーを使用するメリットは以下の通りです。
・サーバー側の完成を待たずに、クライアント開発ができる。
・安定して動作確認ができる。

今回は、WebAPIモックサーバーを簡単に作成できる node-easymock を紹介します。



■node-easymock のインストール

今回の動作確認した環境は以下の通りです。

・Windows 7 SP1 64bit
・Node.js v0.12.9

node-easymock は、Node.js 上で動作します。
まず、Node.js をインストールします。
下記のサイトで、「node-v0.12.9-x86.msi」をダウンロードして、インストールしてください。
Node.js (v0.12.9)のダウンロード

インストール後、コマンドプロンプトを起動します。
以下のコマンドを実行して、Node.js がインストールされていることを確認します。

$ node -v
v0.12.9

$ npm -v
v2.14.9

以下のコマンドを実行して、node-easymock をインストールします。

$ npm install -g easymock



■node-easymock のリソースの作成

以下のコマンドを実行して、node-easymock が起動します。

$ easymock

起動したフォルダ以下に、レスポンス用のJSONファイルを作成します。
例えば、「GET /books」 リクエストした場合、books_get.json ファイルの内容を返却します。
[リソース名]_[HTTPメソッド].json 形式のファイルを作成するだけで良いのです。

GitHub にサンプルのJSONファイルを用意しました。
「api」フォルダを node-easymock 起動フォルダにコピーします。
【サンプルはこちら】



■node-easymock の動作確認

Chromeアプリの REST クライアントを使用すれば
簡単に動作確認ができます。
Advanced REST clientのダウンロード

REST クライアントで以下のURLにアクセスしてみましょう。

JSONファイル: /api/1.0/users_get.json
1. [URL]を入力する。: http://localhost:3000/api/1.0/users
2. [GET]選択して、[SEND]ボタン押下する。

JSONファイル: /api/1.0/users_post.json
1. [URL]を入力する。: http://localhost:3000/api/1.0/users
2. [POST]選択して、[SEND]ボタン押下する。

JSONファイル: /api/1.0/users/user-id-001_get.json
1. [URL]を入力する。: http://localhost:3000/api/1.0/users/user-id-001
2. [GET]選択して、[SEND]ボタン押下する。

JSONファイル: /api/1.0/users/user-id-001_put.json
1. [URL]を入力する。: http://localhost:3000/api/1.0/users/user-id-001
2. [PUT]選択して、[SEND]ボタン押下する。

JSONファイル: /api/1.0/users/user-id-001_delete.json
1. [URL]を入力する。: http://localhost:3000/api/1.0/users/user-id-001
2. [DELETE]選択して、[SEND]ボタン押下する。



■node-easymock の便利な機能

◆ポートの変更

デフォルトのポートは 3000 です。
起動時に、-p オプションで任意のポート番号を指定することができます。

$ easymock -p 3001


◆API一覧の表示

以下のURLで、API 一覧を確認することができます。
APIをクリックすると、レスポンスを確認することができます。

API Documentation
http://localhost:3000/_documentation/


◆アクセスログの表示

以下のURLで、アクセスログを確認することができます。

Access Logs
http://localhost:3000/_logs/


◆レスポンスヘッダーの追加

JSONファイルに 「< @header」を追加すると、レスポンスヘッダーを付与することができます。


< @header Location: http://www.pa-rk.co.jp/
{
"userId":"user-id-002",
"userName":"Toyotomi Hideyoshi",
"gender":"male",
"age":"62",
"birthDay":"1536/02/02",
"address":"Osaka",
"message":"try cry hototogisu"
}



◆HTTPステータスの変更

デフォルトのHTTPステータスは 200 です。
JSONファイルに 「< @status」を追加すると、HTTPステータスを変更することができます。


< @status 401
{
"error":{
"status":401,
"message":"Unauthorized"
}
}



◆設定ファイル

node-easymock の起動フォルダに、設定ファイル config.json を置くことができます。


◆応答待ち時間の設定

設定ファイルにおいて
「simulated-lag」で応答待ち時間を設定することができます。単位はミリ秒です。


{
"simulated-lag": 1000
}


特定のパスだけ、応答待ち時間を変更することもできます。


{
"simulated-lag": {
"default": 1000,
"paths": [
{
"match": "user-id-003",
"lag": 5000
}
]
}
}



◆クロスドメイン通信エラーの回避

CORS(Cross-Origin Resource Sharing) とは、
WebブラウザがHTMLを読み込んだ以外のサーバからデータを取得する仕組みです。
各ブラウザは、クロスドメイン通信をエラーとする仕組みがあるため、
このエラーを回避する設定ができます。


{
"cors": true
}


以上です。

突然、Bluetoothマウスが動かなくなった!?

$
0
0

Bluetoothのマウスを使用してノートPCで仕事
カバーを閉じて、開いたらBluetoothマウスが動かなくなってしまった。
なんてことありませんか?

突然、動かなくなった場合の対処方法をいくつか紹介いたします。

<4>ではBIOSの設定を操作するので、十分に注意が必要となります。
また、<4>まで試してみても復活しない場合は、PCのメーカー等にお問合せ下さい。


<1>
 ・すべてを保存してノートPCを再起動する
 
<2>
 ・Bluetoothドライバを再インストール
 ・PCを再起動
 ・再度ペアリングを実施
 
<3>
 ・[スタート] →[コントロール パネル]→[ハードウェアとサウンド] →[デバイス マネージャー] をクリック。
 ・[Bluetooth 無線]→該当のものを選択して削除
 ・PCを再起動
 ・ドライバをインストール
 ・再度ペアリングを実施

<4>
 ・デバイスマネージャを開く
 ・[Bluetooth 無線]が存在していないことを確認
 ・BIOS画面を開く(開き方はPC/メーカーにより異なります)
 ・Bluetoothを「Disable」に設定
 ・再起動
 ・デバイスマネージに[Bluetooth無線]が存在しないことを確認
 ・シャットダウン
 ・BIOS画面を開く
 ・Bluetoothを「Enable」に設定
 ・再起動
 ・デバイスマネージに[Bluetooth無線]が存在していることを確認
 ・再度ペアリングを実施

アジャイル開発ではドキュメントは必要ない?!

$
0
0

最近、アジャイル開発では要件定義書や設計書等のドキュメントは必要ない。と小耳に挟んだので「アジャイル開発」について考えてみました。

色々調べた結果、以下の通りの結論となりました。

開発者、プロジェクト管理者としては、良いところ(楽なところ)だけをフォーカスせず、きちんと理解した上でプロジェクトの運営を行うようにしたほうがいいですね。

------------------------------------
 開発において「最低限必要なドキュメント」は作成する。
 というより、きちんとしたアジャイル開発では、ドキュメントは必須。
                 -----------------------------------------

<アジャイルではドキュメントを全く作らないし、必要ない>
 という認識や発言は大きな間違い、正しくアジャイル開発について理解せずに発言したこと。
 気を付けて発言するようにしたほうがいいですね。


----
 調査したまとめ
       ----

<文化>
 ウォーターフォール
  →プロジェクトの制御や命令系統を重視
   組織的な統制を重視
 アジャイル
  →プロジェクトチームの協力を重視
   協業による自由な結合を重視

<計画・管理>
 ウォーターフォール
  →統制を重視
   開発計画を立てやすく、プロジェクト管理が容易
 アジャイル
  →柔軟な変化に対応
   案件や規模に応じて管理するため管理方法に工夫が必要

<仕様変更>
 ウォーターフォール
  →基本的に仕様変更しない
   変更の発生は後工程に大きな影響を与える
 アジャイルは
  →柔軟な仕様変更に対応可能

<ドキュメント>
 ウォーターフォール
  →工程別に成果物としてドキュメントの作成が必須
 アジャイル
  →不必要なドキュメントは極力作成しない

<ユーザー承認>
 ウォーターフォール
  →ドキュメント等の成果物をもって承認。
 アジャイル
  →実際に動作するアプリケーションをもって承認。

<プログラミング>
 ウォーターフォール
  →要件定義~詳細設計の上流工程で設計された全機能をプログラミング
 アジャイル
  →優先順位で定められた機能を順番にプログラミング
   小規模な開発案件の場合は一気にプログラミングを行うこともある

<リリース>
 ウォーターフォール
  →原則的に全機能を一度にリリース
   サブシステム単位にリリースするケースもあり
 アジャイル
  →イテレーション毎にリリース
   ユーザーからのフィードバックを受け、次のイテレーションに移行

<開発規模>
 ウォーターフォール
  →大規模開発向き
   計画、管理が容易、指揮系統が重視等の理由により
 アジャイル
  →小規模開発向き
   管理方法の工夫により大規模なシステム開発にも

Slackって

$
0
0

会員番号 18です。

Slackっていずれ簡易的なIDEの機能を持ったりしそう。。書き途中で、または投稿されたコードをその場で実行できるといいなぁなんて。。
http://jp.techcrunch.com/2015/12/17/20151215trophy-emoji/


SharePointで「コンテンツエディター」や「スクリプトエディター」が追加できない時の力技。

$
0
0

Office365→SharePointのデザインと編集の権限を持っていても「コンテンツエディター」や「スクリプトエディター」等のWebパーツの追加ができないことがあります。

これは、スクリプト機能(カスタムスクリプト)が既定で無効になっているため
サイト コレクション オーナーとサイト オーナーは以下のようなWeb パーツと機能を利用できなくなることが原因となります。


++-----------------------------------------------------------++
Web パーツのカテゴリ
・Web パーツ
++-----------------------------------------------------------++
ブログ
・ブログ アーカイブ
・ブログの通知
・ブログ ツール
ビジネス データ
・ビジネス データ アクション
・ビジネス データ アイテム
・ビジネス データ アイテム ビルダー
・ビジネス データ リスト
・ビジネス データ関連リスト
・Excel Web Access
・インジケーターの詳細
・ステータス リスト
・Visio Web Access
コミュニティ
・このコミュニティについて
・参加
・個人用メンバーシップ
・ツール
・メッセージを入力
お勧めのコンテンツ
・カテゴリ
・プロジェクト サマリー
・関連ドキュメント
・RSS ビューアー
・サイトの集合表示
・カテゴリに属するサイト
・用語のプロパティ
・タイムライン
・WSRP ビューアー
・XML ビューアー
ドキュメント セット
・ドキュメント セットのコンテンツ
・ドキュメント セットのプロパティ
フォーム
・HTML フォームの Web パーツ
メディアおよびコンテンツ
・コンテンツ エディター
・スクリプト エディター
・Silverlight の Web パーツ
検索
・絞り込み
・検索ボックス
・検索ナビゲーション
・検索結果
検索型コンテンツ
・カタログ アイテムの再使用
++-----------------------------------------------------------++


かといって、コンテンツエディタやスクリプトエディタが追加できないので、お知らせやリンクの設定/更新はできません。では困ってしまいます。

Webコンテンツをフルコントロール権限を持つ管理者に登録してもらう。
設定や更新もしてもらうという方法もありますが、Webパーツを追加してもらった後で
リンクやお知らせをデザイン権限と編集権限を持った編集者が多少、力技で追加/編集するという方法をご紹介します。

-------------------------------+
「Office365」にログイン
該当のSharePointページにアクセスし、「ページの編集」
追加してもらったWebパーツを選択し、「</>埋め込みコード」を選択


<span unselectable="on" class="ms-rteFontSize-4">お知らせ</span><br unselectable="on">

 のようなコードを記述していく。
-----------------------------------------+
※力技なので、慣れない方は注意して下ださい。

ご紹介はしましたが、スクリプトを有効化できる環境であれば、有効化して運営した方が良いとは思いますので、
運用のことまで十分検討してSharePointの構築、設計を行ってください。

中途半端ではありますが、力技のご紹介でした。

レジストリキーの値からOSが32bitか64bitか判断する方法

$
0
0

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment配下の


PROCESSOR_ARCHITECTUREの値によって、下記のように判断できます。




x86  →32bit


AMD64→64bit


IA64  →64bit(for Itanium-based)




windows VISTA/7/8/8.1/10で使用できます。

業務で使えるシリーズ(マクロ:エビデンス整理)

$
0
0

業務で大量のキャプチャを取得し、その全てをExcelのシートに張り付けエビデンスとして提出する。
ということがありました。

1枚2枚のキャプチャなら手作業で実施してもいいのですが、何百枚、何千枚となると手作業では無理があります。
そのため、色々な方のマクロを参考にさせていただきながら、以下のようなマクロを作成してみました。

ご紹介させていただきます。


'PastePicturesマクロ
Sub PastePictures()
Dim filenames As Variant, filename As Variant

'画像ファイルを指定
filenames = Application.GetOpenFilename( _
FileFilter:="画像ファイル,*.png;*.jpg", _
MultiSelect:=True)
If IsArray(filenames) Then
For Each filename In filenames
'画像間を3行空ける
PastePicture CStr(filename), 3
Next filename
End If
End Sub

Sub PastePicture(filename As String, offset As Integer)
Dim picture As Shape

Set picture = ActiveSheet.Shapes.AddPicture( _
filename:=filename, _
LinkToFile:=False, SaveWithDocument:=True, _
Left:=Selection.Left, Top:=Selection.Top, _
Width:=0, Height:=0)

picture.ScaleHeight 1!, msoTrue
picture.ScaleWidth 1!, msoTrue
'picture.heightはポイント単位
'(ピクセル単位に変換するには96/72を掛ける)
MoveDown picture.Height, offset
End Sub

Sub MoveDown(pt As Double, offset As Integer)
Dim moved As Double

moved = 0
Do While moved <= pt
'ActiveCell.heightはポイント単位
moved = moved + ActiveCell.Height
ActiveCell.offset(1, 0).Activate
Loop
ActiveCell.offset(offset, 0).Activate
End Sub



手作業で実施する手間が省けて、お役立ちでした。

業務で使えるシリーズ(マクロ:メールアンケート)

$
0
0

メールでアンケート結果を収集する必要がありました。
Excelで実施して欲しい手順を展開し、手順の最後でお名前とメールアドレスを入力していただき、ポチっと押して貰うと
収集している人にメールが送信されるというマクロを作成してみました。

ご紹介させていただきます。


Sub SendMail()

On Error Resume Next

team = Sheets(1).Range("G65").Value
Uname = Sheets(1).Range("G67").Value
sendusername = Sheets(1).Range("G69").Value

'メール送信にSMTPサーバを使用しているので、場合によってはパスワードが必要となる
'が、今回はパスワードを設定せずにメール送信が可能な環境のためにコメントアウト

'sendpassword = Sheets(1).Range("G71").Value

If sendusername = "" Then
MsgBox "メールアドレスを入力して再度実行してください。"
Exit Sub
End If

Set objMail = CreateObject("CDO.Message")

objMail.From = sendusername
objMail.To = "メール収集者のメールアドレス"
objMail.Subject = "メールの件名(Subject)"
objMail.TextBody = "メール本文"

strConfigurationField = "http://schemas.microsoft.com/cdo/configuration/"
With objMail.Configuration.Fields
.Item(strConfigurationField & "sendusing") = 2
.Item(strConfigurationField & "smtpserver") = "SMTPサーバ"
.Item(strConfigurationField & "smtpserverport") = 25
.Item(strConfigurationField & "smtpusessl") = True
.Item(strConfigurationField & "smtpauthenticate") = 1
.Item(strConfigurationField & "sendusername") = sendusername
'.Item(strConfigurationField & "sendpassword") = sendpassword
.Item(strConfigurationField & "smtpconnectiontimeout") = 60
.Update
End With

objMail.Send

If Err.Number <> 0 Then
MsgBox "メール送信に失敗しました。"
ElseIf Err.Number = 0 Then
MsgBox "メール送信が完了しました。"
End If

Set objMail = Nothing


End Sub

Java のインタラクティブシェル (REPL) としての Groovy

$
0
0

こんにちわ、ちかです

Groovy は DSL としてしか生き残れないだろうと
勝手に想像しているちかですが
そもそも JVM 嫌いで自分の PC には JRE も入れたくない私の戯言は置いといて

Java とほぼ互換性のあるスクリプト言語 Groovy は
Java のインタラクティブシェルとして使えると思います。

ということで
まずはインストールから。

私はチョコ好きなので Chocolatey からインストールします。
バレンタインデー症候群の方は yum なり brew なり公式サイトなりからどうぞ。

C:\Windows\system32>cinst groovyInstalling the following packages:groovyBy installing you accept licenses for the packages.groovy v2.3.6The package groovy wants to run 'chocolateyInstall.ps1'.Note: If you don't run this script, the installation will fail.Note: To confirm automatically next time, use '-y' or consider setting 'allowGlobalConfirmation'. Run 'choco feature -h' for more details.Do you want to run the script? 1) yes 2) no 3) print1 Adding 'C:\bin\groovy-2.3.6' to the path and the current shell path Downloading groovy 32 bit   from 'http://dl.bintray.com/groovy/maven/groovy-binary-2.3.6.zip' Extracting C:\Users\chica\AppData\Local\Temp\chocolatey\groovy\2.3.6\groovyInstall.zip to C:\bin... 7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18 Processing archive: C:\Users\KAZUTO~1.TAK\AppData\Local\Temp\chocolatey\groovy\2.3.6\groovyInstall.zip Extracting  groovy-2.3.6 Extracting  groovy-2.3.6\NOTICE.txt Extracting  groovy-2.3.6\LICENSE.txt Extracting  groovy-2.3.6\lib Extracting  groovy-2.3.6\lib\groovy-2.3.6.jar(中略) Extracting  groovy-2.3.6\META-INF Everything is Ok Folders: 7 Files: 84 Size:       36558735 Compressed: 32927161 C:\bin 警告: Write-ChocolateySuccess is deprecated. If you are the maintainer, please remove it from your package file. The install of groovy was successful.Chocolatey installed 1/1 package(s). 0 package(s) failed. See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).C:\Windows\system32>

インストールできたら
インタラクティブシェル Groovysh を起動します。

C:\Windows\system32>groovyshGroovy Shell (2.3.6, JVM: 1.8.0_66)Type ':help' or ':h' for help.-----------------------------------------------------------------------------------------------------------------------groovy:000>

Groovy では
java.io.* と java.util.* がデフォルトで使えて
ArrayList や LinkedHashMap がリテラルで記述できるので
Java の標準ライブラリを手軽に試すことができます。

groovy:000> Math.sin(Math.PI / 2)===> 1.0groovy:000> [id: '001', name: 'chica'].get('name')===> chica

さらに
Groovy には Grape と呼ばれる依存関係管理のためのクラス群が含まれていて
Maven Central などにあるライブラリも手軽に試すことができます。

groovy:000> groovy.grape.Grape.grab(group:'org.apache.commons', module:'commons-lang3', version:'3.4')===> nullgroovy:000> import org.apache.commons.lang3.StringUtils===> org.apache.commons.lang3.StringUtilsgroovy:000> StringUtils.isEmpty(null)===> truegroovy:000> StringUtils.isEmpty('')===> truegroovy:000>

Java 8 のラムダ式は使えません。
代わりにクロージャを使います。
(Groovy ではコレクション操作に Groovy JDK API のメソッド群を使うことが多いと思いますが、 (残念なことに先行評価版しかないし、) 今回は Groovy の機能紹介ではなく Java の機能を試す用途で Groovy を使ってみることが目的なので触れません。)

groovy:000> import java.util.stream.*===> java.util.stream.*groovy:000> ['abc', 'def', 'ghi'].stream().map({it.toUpperCase()}).collect(Collectors.toList())===> [ABC, DEF, GHI]groovy:000>

終了するときは :exit または :x と入力します。

groovy:000> :exitC:\Windows\system32>

ところで
Windows で Groovysh を使うと瞬時に気付くことなのですが
非常に残念なことに
Windows 版では矢印キーが効きません。

↑↓キーで入力履歴を辿れないばかりか (代替: Ctrl+P / Ctrl+N)
←→キーでキャレットの移動もできません (代替: Ctrl+B / Ctrl+F)
(Groovysh 2.1.9 までは動いていたみたいですね... こんな大きなデグレードが 2 年間も修正されないところに活気のなさが表れているような...)

とてつもなく入力しづらいと言わざるを得ませんが...
ライブラリを試す用途であれば
使ってみる価値はあるのではないでしょうか。
でわでわ。

ナレッジ共有

$
0
0


 開発プロジェクト、評価プロジェクト、構築プロジェクト、エンハンスプロジェクト・・・、
 我々S/W開発にかかわる技術者は、同じプロジェクトにずっと在籍し、
 定年まで同じ技術で飯を食える人は皆無だと思う。
 
 新しいプロジェクトに参画したら知りたいことは、
  ・プロジェクトの目的
  ・体制
  ・役割
  ・スケジュール
  ・何を作るのか
  ・どうすればプロジェクトの成功となるのか
  ・納品物
  ・プロジェクトルール
  ・ノウハウ
  ・その他(常駐ならハウスルール、端末設定、環境関連)
 といった内容であろう。
 経験したことのない業種のプロジェクトに参加すると、文化や専門用語に
 ついて行くのが大変。
 
 大きなプロジェクトだとナレッジ共有という形でWikiやRedmine、その他ソリューションで
 情報を蓄積していく。
 
 運用で考慮したほうがいいこととして、
  ・情報(ナレッジ)を誰が持っているか
  ・協力者を作る(サクラ的な)
  ・全体を見渡せる管理者(情報をくれる人たちに顔がきく人)
  ・いいね!ボタン的な参加した人への満足感を与えるもの
  ・荒れないようにする意見サイト
 などがある。
 単に情報(ファイル)を突っ込むのではなく、他のPJへの流用や
 開発・評価プロジェクトならエンハンスでも使えるナレッジを視野に入れた
 環境構築が必要である。
 
以上

PJ管理

$
0
0


 昨今、進捗管理をWebシステムで行うプロジェクトが増えてきたように感じる。
 しかし、未だにEXCELやMS Projectを使用しているプロジェクトも多く存在している。
 ツールを選択するうえで自分がやりたいこと(重視したいこと)を考慮するべきである。

 ・進捗管理
 ・コミュニケーション
 ・工程の標準化
 
 管理するものは成果物の進捗だけではなく多くのものがある。

 ・ToDo
 ・仕様
 ・変更
 ・課題
 ・問題
 ・不具合
 ・障害
 ・環境
 ・コスト
 ・品質
 ・要員
 ・勤怠
 ・契約関連
 ・文書
 
 全てをパーフェクトに管理することは難しい。
 以下のツールなどを参考に自分(プロジェクト)に合ったものを選択すべきである。
 
 ・Redmine
 ・MS Project
 ・Brabio!
 ・backlog
 ・Teamoffice
 ・ジニーフレーム
 
以上

Webカメラでの監視環境構築

$
0
0


 昨今、コンビニや駅、繁華街など監視カメラが大量に設置されている。
 車もドライブレコーダーが普及し始めている。
 以前はカメラで勝手に録画されることに敏感であった人たちが
 防犯や犯罪者の早期逮捕につながるという効果から
 容認する風潮になってきていると感じている。
 プライベートな空間(自宅など)でもカメラの活用が
 これから進んでくると思う。
 自分で簡単に構築できる構成があるので紹介する。
 
 ○Webカメラ
   AXIS M1025 3万円くらい
   (HDTV 720p)
   本体は軽量なので、高い位置に設置することも可能。
   屋外設置はお勧めしない。
 
 ○撮像ソフト
   ContaCam 無料(フリーソフト)
   同時にカメラ5台まで撮像実績あり。
   カメラ単体の撮像を行えるフリーソフトは多いが、複数台となると少ない。
   お金があるなら有料で使いやすいソフトはあるが、ちょっと操作してみれば
   使い方はつかめる代物。
   
 ○バックアップ
   BunBackup 無料(フリーソフト)
   暗号化も可能
 
 上記3点とWindows7端末、HUBがあれば簡単に監視システムが構築できます。
 

以上

環境構築 第一回(端末編)

$
0
0


<<<はじめに>>>
みなさんこんにちは。
環境構築の仕事を2年前から始め、
いろいろ勉強させてもらったことを書きとめようと思います
環境構築関連の情報発信です。
全部で5回発信予定です。
(改訂するかもしれません)

・端末構築
・サーバ構築
・ツール
・導入および維持管理
・全体のまとめ

<<<第一回 端末構築>>>
 Windows7端末構築の際に考慮したもの
 (1)環境設計
   ・開発した製品の互換性
   →使用するライブラリのOS動作保障
   ・MS-Officeなどの製品の互換性
   →Excelマクロなど、動きの違い
   ・Font、各種ドライバ
   ・Bios設定
   →電源管理など
   ・自動更新、認証、セキュリティソフト
   →KMSなどの製品認証やS/Wの自動アップデートをどこ(サーバ)で行うか

 (2)ポリシー
   OSやMS製品の使用を限定するためや、媒体制御、電源管理を
   グループポリシーで行うケースがある。
   GPOは便利なようで、事前にきちんと設計しないと
   スパゲッティになるので要注意。
   MSに問い合わせられるチャネルが無い場合、問題解決が難しい。

 (3)配布
   一般的に世の中で使用されている製品を使うのが
   安全ではあるが、端末数が多い場合にきちんと運用で
   配布状況を簡単に管理できる製品を選択すべきである。
ex:Microsoft SMS、IBM Tivoli・・・

 (4)端末コピー
   機種が多い場合、ドライバなどが変わるので管理ツール側が
   機種依存部分を吸収できるものが望ましい。
   ただし、ローカライズされてなかったり、一般的に情報を入手できない
   製品はなるべく避けたほうが良い。

 (5)その他
   フォルダ権限やスタートアップの処理は安易に着手しないことをお奨めする。
   両方とも不具合が出やすく、調査に工数が掛かる。

 (6)ライセンス
   OS・Officeのライセンス確保、およびライセンス認証の手順を確立しておく。
   ライセンスの認証サーバを立てるケースも視野に入れて。

以上

環境構築 第二回(サーバ編)

$
0
0



<<<第二回 サーバ構築>>>
 ここではクラウド上に仮想サーバを構築した経験を元に
 記載する。
 (1)環境
    AWS
     メジャーな環境であり、セミナーや情報も結構世に出ている。
     デメリットを先にあげるが、否定的な考えではない。
     ・コストが高い
     ・N/W負荷が高いため、時間がかかる
     ・パフォーマンス検証はできない

     メリットはやはり簡単にサーバ構築できる。
     ただし、以下を行うことが必要。
     ・CloudFormationを使用してスクリプトでサーバを自動構築する
     ・Jenkinsなどを使用して構築後のサーバの変更チェックを行う
     ・自動化できない部分は分かりやすい手順書を用意する

    OpenStack
     AWSに比べコストが安い反面、資料が少ない。
     プラグインが多く用意されており、AWS相当のことはできる。
     構築の自動化、変更チェック、手順書準備はAWSと同様に必要である。


 (2)その他
    構築するサーバにサーバ間の同期が必要なケース(Exchangeなど)
    →同期に時間が掛かることを考慮すべきである
     また設定変更が片側でしか出来ていないと戻ってしまうこともある

環境構築 第三回(ツール編)

$
0
0


<<<第三回 ツール>>>

 (1)端末構築
    端末のIP取得および設定、ドメイン参加、KMS認証は、
    BatやPowerShellで実装し、準備しておく
    端末の設定情報もPowerShellで取得可能
    TeraTermやFFFTPは必須

 (2)サーバ構築
    仮想サーバの起動停止はAWSで用意されているUIは不便
    フリーの管理ツールが使いやすい
    (RDCManなど)

環境構築 第四回(維持管理編)

$
0
0


<<<第四回 維持管理>>>

  一旦リリースした環境は、イメージを管理しておく必要があるが、
  リリース後に更新されるものをイメージ作り直すかどうか、
  最初から方針を決めておくべきである。
  また、導入した端末が販売を終えてしまうケースも十分にあるため、
  後継機種は早めに手当て(検証)しておく必要がある。

  リリース後の維持管理では、障害に対応するうえでは、
  現象に応じてリモート操作、イベントログなどのログ収集、
  センドバックといった作業が発生する。

  管理資料等を事前に整理しておかないと、現場が混乱する元となる。
Viewing all 138 articles
Browse latest View live