なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

Sqliteにさわってみた

f:id:nazuna_0124:20170403224602p:plain

せっかくの連休中だというのに風邪ひきました……

私の地域はいまだに夜は肌寒いのですよね。

早くあったかくならないかなー。


調子もよくないのでさらっと更新。


本日はSqliteさんです。1ファイルでデータベースということで、

AcceessにADO接続したみたいなノリです。

同時更新、いわゆる排他制御が苦手っていうのもだいたいおんなじ。


Sqliteで作っておいて、PDOにしておけば後でMysqliに変えるのも簡単です。

このあたり、SQLサーバーに変更しやすいAccessともやっぱり似てます。


動かすまでにやってみたのがこちら。

http://nahcew.com/post-1342/


わたしはNetbeansなのでプラグインを導入。

あとphp.iniでSqliteがコメアウトされてないか確認しましょう。


Netbeansからのデータベース接続で1点だけ注意。

リンクのサイトでは空のファイルを作成で接続できてますが、

わたしはできませんでした。


xamppからshell立ち上げて sqlite3 test.db

コマンドで作ってあげないとだめみたいです。


ぱっとみただのファイルですが、なんか違うようです。


後はPDO接続でユーザー名、パスワード名は省略してオッケーくらいですね。

操作自体はいつも通りです。


触ってみて思ったのですが、PDOに対する妙な拒否感がなくなっている!

どうやらJavaでクラスを勉強したからっぽいのですが、不思議な感じです。


思わぬ副産物に喜びつつ、今日は寝ます。

おやすみなさい!

追記

Sqliteにはカラムの削除機能がありません!

作成時には注意しましょう。

PHPのstdclassとjsonファイルへの追加~['hoge']のタイプが嫌い~

f:id:nazuna_0124:20170403224602p:plain

PHPMysqlを扱えるフリーサーバーはあんまりない!

Jsonとかcsvとかxmlなんかが候補にあがります。


と思いきやSqliteさんが優秀という説。

一方通行ならテキスト系ファイル、ソートやら追加更新が頻繁なら

Sqliteさんでしょうか。

使ったこと無いのでこっちはまた今度!


今回はなんかよくわかんないけど好きな形式で

Jsonファイルに追加するというもの。


具体的にはこう。

Jsonファイルに最初だけこうしておいて

{}


こうなります。

{
    "0": {
        "name": "abc",
        "date": "2017-05-05 21:37:05"
    },
    "1": {
        "name": "abc",
        "date": "2017-05-05 21:37:11"
    },
    "2": {
        "name": "abc",
        "date": "2017-05-05 21:37:13"
    }
}



“0"みたいに数字が入ってくれるのがすき。

いまいちこの数字がどこから湧いてくるのかわかりませんが。


PHPのコードです

<?php 
    $file = file_get_contents("data.json");
    
    $json = json_decode($file,true);
    
    $input = new stdClass();
    $input->name ="abc";
    $input->date = date('Y-m-d H:i:s');
    
    $json[]= $input;
    
    file_put_contents("data.json", json_encode((object)$json,JSON_PRETTY_PRINT))
?>


お題のもう一つStdclassさんです。

後からプロパティを足せる定義済みのクラスというものだそうな。


なんだろう、事前に決めたの以外は使わせないのも

クラスの大事な機能だったような……。


普通に連想配列書くとこうなっちゃいます。

$inputArray['name'] = "abc";
$inputArray['date'] = date('Y-m-d H:i:s');


[‘○○’]ってタイプするのいやなのですよ!

ほぼこれが理由だったり。


あとは、とりあえずStdclassにしておいて

あとで自作のクラスに変更するなんてのもよいかなと思ったり。

変更するの忘れそう


忘れてました!

驚くべきことにプロパティ部分には変数が使えます。

 $input = new stdClass();
    $property = "date";
    
    $input->name ="abc";
    $input->$property = date('Y-m-d H:i:s');


こういうふうにしてもおっけ!

なんかこう居心地が悪く感じるのはわたしだけでしょうか。


さて、それではSqliteしらべてきまっす!

VBAで業務改善するとき注目すべき5つの目的

f:id:nazuna_0124:20170403224602p:plain

プログラムの基礎を覚えた人に何を作ってもらえばよいか。

これに対する答えがなかなか見つかりません。


Excelだったらいっぱいあるのにというのが

むしろ邪魔になってます


というわけで、以前の経験を活かしつつ先に

VBAでまとめです。



結論としては5つの目的、機能のうち一つ以上を

備えたものを作ってね、とゆーこと。


備えてない場合は、作らないほうがいいという点も注意。

一つ以上となってますが、5番目だけしか目的がないときは

必要ないかも?って疑っておきましょう。



効率化のため

早く終わらせたいって要望に答えます。

たまに他の目的とトレードオフになります。

圧力釜使えば煮物が早くできるよ!ということ。

そして圧力釜出すのめんどくさーい、のような。


コード的には少ないので最初に手を出すのはこれがいいです。


自動化のため

効率化とイコールではないのです。人の手が離れても動くことが重要。

↓のエラー回避のためと相性がいいです。

炊飯器のこと。時間だけ見れば土鍋や圧力鍋のが早く炊けますが、

みんな使うのは炊飯器というイメージ。


大カテゴリにするか迷う機能に通知のためってのがありまが、

自動化のために含まれることにしてます。

炊き上がったら音がなる機能のことです。


エラー回避、リスク回避のため

ヒューマンエラー防止のためにプログラムにやらせます。

手書きのものを電子化するような時に、この目的を含んでいる場合があります。

効率化とは相性が悪いことがあります。


データベース化のため

ExcelとHTMLはデータベースじゃない点が注意。

データ分析ができない(やりにくい)ので

改善に生かされない場合があります。


また、分析を現場に任せても役に立たないので

どこの数字を見るべきかもシステム側で押し付けるのがコツ。


データ化、電子化のため

稀に意味がない点はとても注意。

ExcelAccess の移行も同様の危険があります。


意味合いとしてはデータベース化は近いので一緒にやってしまうのが吉。

これしかメリットがないなら作らないほうがいいことが多い。




VBAではこんなかんじ!他で入りそうな娯楽(要するにゲーム)が

はいらないのですな。


ちょっと余談ですがこの目的にそって作っていると、改善前と後で

結果が数字で取れます

転職とかの実績には大いに役に立つと思う(たってほしい)ので

意識しとくといいことありそうです(あるといいな)


GW明けから面接ラッシュです。良い反応を記事に書けたらいいな!

なんも言及してなかったらそっとしておいてください←



話戻って、こんなのをJavaで考えたいのですけれど、本当に難しい。


小遣い帳(家計簿)、ゲームが一応の候補。

CMSとかいいと思うのですがPHPだし、Wordpress使えで終わりそうだし……


どなたかいい案ないですかー!

就職活動で悩んでるときに自己啓発本を読む?

f:id:nazuna_0124:20170403224602p:plain

みなさんは本を読むタイプですか?

私はどちらかといえば乱読家だと思います。


そして、どういうわけか私の周りにいるうまくいってる人

揃いも揃って本を読まないタイプです。

そんなわけで、本をよまないと成功しないとかは全く信じてません。


それはさておき、いわゆる自己啓発本の類を読むかどうかです。

別に読まんでもいいでしょと、結論出ちゃってますが、

新しい視点が欲しいときには悪くありません。


ちなみにこの手の本は聖書とか仏教あたりから

大抵同じこと書いてあるので直感で選んでオッケー。


そしてすっごい雑に言うと、今ある課題を全力でやれが根本的で

後はこれをやるといいかもって例が書いてあるだけです。


ダイエットで言うと、摂取カロリー減らして消費カロリー増やせ。

消費カロリー増やすには腹筋とスクワットがおすすめって書いてあるようなもんです。


自己啓発本と代表例は「カーネギー」と「7つの習慣」です。

割りと本気で毎日腹筋とスクワット100回やったら痩せるって書いてます。

それができたら苦労はない


スクワットなんて方法があったのか!よし今からやろう!

って人は読んでみるといいです。


しかし、運動したくないから他の方法を求めて読むと

むしろダメージを受けるので要注意


うまくいくには頑張らなければならないという

前提がねじ込まれます

それが正しいかという話ではなく、向き不向きの話です。


向かない人は何やってもうまくいかない

(実際にはなにもやってない)

となり、鬱まっしぐらです。


その手のタイプにおすすめしたいのは自己承認系です。



などと、書きつつ本日はここまで!

まとまってないのを無理やり出力する癖が発動中。


オチとしては、就職活動前に自己認識が大事だとハロワでも教わりました。

その自己認識の中で、何かに全力で取り組んだことはあったか。


取り組めたなら、今ある課題にも同じように取り組めているか。


取り組めていなかったなら、それはなぜか。


そんなことを考え直しつつ、書類作成がんばろうと思います……


はい!職務経歴書めんどくさくて逃避したかっただけです!!

プログラムを書けるから始まる、こんな仕事してみたいのイメージ

f:id:nazuna_0124:20170403224602p:plain

授業がないので、なんとなく抽象的なおはなしばっかり。

書けるネタには困らないけど、書けそうなネタはあんまりない

とゆー微妙なジレンマ。


というわけで、本日はこんな感じの仕事あるの?ってやつです。

どっかで見たことあるのも含めてぼんやり書いてみるだけのコーナー。

してみたいと言いつつ、したくないのも含んでいたり。



テスター

主にブラックボックステストがメイン。ゲームソフトのデバッカーと同じ役割。

プログラム書けなくても別によかったんじゃ疑惑の仕事。

IT土方の代表その1


コーダー

設計に従ってコード書く人の一番下。純然たる翻訳業務。

事務作業とも言えるけど、業務量の調整がきかない。

IT土方の代表その2


ずっと客先常駐で保守

どこの会社所属なのかもはや謎。


研修講師

プロジェクトに送り出せるように新人を鍛える人。

そればっかりやってる人がいるのかどうかは知らない。


技術的視点の面接官

プログラムの技術を持ち、「一緒に働きたいか」ではなく、

使い物になりそうかの判断をする人。存在するかは知らない。

研修講師と兼務できるならベスト。


営業の技術的サポート

営業と見積もりの間くらいに出番。そもそも出来るのかと必要なのか

判断出来る人。ただし、必要かどうかを言ってくれるとは限らない。


社内SEのインフラ

仕事の割に待遇面では恵まれているイメージ。

仕事はつまんない。


社内SEの外部発注調整役

いわゆるITアナリストの卵とか見習いとか。

自分の会社のシステムには精通してるので、要件定義が楽になる。

自分たちでは出来ないが、よそなら作れるのを知ってる。

何を作ればいいのかもだいたい把握してる。


管理者向け社内ヘルプデスク

システム操作面ではなく、システム導入の意義をわかりやすく説明する人。

わかったような気になってくれればよい。

本来はアナリストかCIOの仕事なのかもしれない。


IT専用のカイゼン提案者

要するにVBAerのこと。Excelですら現場はなにができるかしらない。

サーバー使ってシステム化すればなんてイメージすらできない


この部分が自動化されてれば20%の削減くらいはできそう、とか

おおよその判断が出来る人。

5時間で自分が作れば1ヶ月で元が取れると判断して、実際に作っちゃうひと


OJTトレーナー

研修後の新人を面倒見る人。先輩だからとか、手が空いてたとかではなく

明確に向いていると判断されて役割を当てられた人。

退職率抑止のための最前線。


人財管理者

研修講師、面接官、OJTトレーナの上司。

採用から、OJT終了、稼いだお金とスキルの相関を見られる人。

上記3つにFBをする人。


自動化ルーチンの調整役

保守とはちょっと違う。自動化出来た結果その人意外はいなくても

業務が回るようになった人。その人がいればよいとも言う。

今後ガチなAIが来てもその人は必要なのかもという役割。


労働集約型教祖

労働集約型のビジネスの段階で末端はブラックになりがち。

それを人柄のみで覆す人 最高ランクはあの人と一緒に働けるだけで十分。

美人やイケメンとは限らない。働いてる人たち自体は満足してる。



つい出来心です!参考にしちゃだめですよ!!

うまいコードを書こうとしない

f:id:nazuna_0124:20170319171727p:plain

絶賛作業が停滞中。

なんとなく、やる気がおきないのですが、

そういうときはそれ自体を深掘りしてみるのもあり。


jsstudy.hatenablog.com


そんなときに見かけたこちら。

少々耳の痛いおはなしです。


記事様では言及されてなかったのですが、進まない理由がもう一つ。

かっこいいコードを書こうとしてると手が止まります。


この辺はプレゼンテーションをうまくやろうとしてると

ものすごく緊張するにも通じるものがあります。


強引な方法(平たく言うと適当な手続き型)でコードで書けば

すぐ出来上がるけど、なんだかなぁ……とか思ってると

手を付けること自体がいやになります。


最近思うのですが、プログラミングも上を見るときりがないので

諦めてもいいかなって。

だって、どーせ、そのすごい人でも

自分のほしいの作ってくれるわけじゃないですし!


なんでもいいから動くものを!とか思ってると

驚くほど進む作業。

保守は知りません


それでも進まない時は!

お部屋の掃除から初めてはどうでしょう←

Javaでキーボードの入力を検知する

f:id:nazuna_0124:20170403224602p:plain

う~む なんとか望みの処理は出来ましたが、

JavaWindowsをどうにかするのが苦手っぽいです。

本格的に作るならC系言語を覚えたほうが早いのかもしれません。

具体的にはC#なんでしょうか。


とりあえず、準備が必要なので1こずつ。

ライブラリのダウンロード

jna.jaとjna-platform.jarが必要です。

github.com


ここからダウンロードして解凍した中に入ってます。


ライブラリに追加

Netbeansでの方法です。もっとやりやすい方法があるのかも?

プロジェクト右クリック>ライブラリ>JAR/フォルダの追加


ソースコード

なんで動いてるのかびっくりするくらいわかってません!

User32とかkaernel32とかおなじみのくくりを呼び出して、

メソッドの引数、戻り値の型を合わせておけばいいっぽいです。


import com.sun.jna.Native;
import com.sun.jna.win32.StdCallLibrary;

public class Windows 
{
    public static interface User32 extends StdCallLibrary
    {
         final User32 instance = (User32) Native.loadLibrary ("user32", User32.class);

         short  GetAsyncKeyState(int key);  

    }

    public static void main(String[] args)
    {
 
        while(User32.instance.GetAsyncKeyState(101) == 0){

        }
        
        System.out.println("テンキーの5が押されました");
    }
}


よくわからんのだけど、インターフェースのくせにインスタンスをもってて、

Newしなくていいようになってる???

素直に継承してメソッドにしておけばいいのかな……


なにはともあれ、これを実行しておいてテンキーの5押すと

無限ループが止まってprintが表示されます。


User32.instance.GetAsyncKeyState(101) これの101は

Keycodeとはまた別です。いろんなとこで紹介されてます。


<Excel, VBA> キー操作をシュミレート - ねこゆきのメモ


参考にさせていただきました!


引数かえればいろんなキーで応用可能です。

ただし、なんらかのキーが押されたのを感知してそれが何か調べる

のは出来ません。 GetKeyboardStateでいけそうなんですが、難しくて挫折。


配列を与えて格納してもらうので、こっちで配列ループにしても

結局変わらないんじゃとおもったり。


Windows API使うたぐいはこれでなんとか応用可能っぽいです。

キーイベントを発生させるのはRobotクラスなるものがあるらしいので

そっちのがよさげです。