not president's blog

脳直で書きます。自分が覚えたい事を書いているだけです。

私は戦って負けた

だから戦わなかった君達とは一緒にいられない。
私は故郷に帰る。
というか帰ってきた。
もう大分前の話ですが。

航空自衛隊浜松広報館へ行ってきました


今回技術のお話はありません。

行き

  • 概要

    • 目的地は静岡県浜松。
    • 250CCのバイクで有料道路以外を使用。 (片道260kmくらい)
    • 午前六時出発~午後三時到着。 (九時間くらい。走行時間自体は七時間くらい?)
    • 一時間半おきに五分から十分の休憩と、一時間くらいの昼食以外はずっと走ってました。
    • 疲れました。
    • 大阪発の愛知県岡崎経由(知立バイパスを通りたくなかったので)
    • 国道25号(名阪国道)~国道1号(東海道)~国道23号(豊橋バイパス
    • 前回は豊橋バイパスで事故るかと思いましたが、今回は結構楽しかったです。なんせ昼ですから。明るい。
  • バイク(カワサキ Z250)

    • 容量17L(15年5月発売のZ250 ABSのスペックから)
    • 38k/L (15年5月発売のZ250 ABSのスペックから)
    • でも行きだけでほぼ全部燃料使いました。(レギュラー満タンで着いたらメモリ1(メモリ数は7?くらい))

広報館

  • 写真 f:id:orenodrupal:20150616231716j:plain f:id:orenodrupal:20150616231707j:plain f:id:orenodrupal:20150616231807j:plain 外の写真しか貼ってません。

  • 感想

    • 1日遊ぶには良いところでした。
    • 広報のためか、10分間隔くらいで飛行機が飛んでます。(正直これを見るのが一番楽しかった)
    • 中に大掛かりなフライトシミュレーター(飛行機の操縦席だけ切り取って、前面に飛行画面のスクリーンを置いた機械)があったので、やらせてもらいました。(無料だけどその場での予約が必要)結果はタイトルから推して知るべし。
    • 撮った写真を使用して良いか確認した際、広報館の人と話す機会がありました。柴田恭平さんに雰囲気が似ていたので、間違いなくこの人は空飛ぶ広報官の人のモデルだと重いましtが、まったく違う人でした。でも格好良い人でした。(写真はありません)

帰り

  • 写真 f:id:orenodrupal:20150617210050p:plain f:id:orenodrupal:20150616232037j:plain
    • 楽しかったのはここまで
    • 行きとほぼ同じ道を通って帰宅。
    • GWの渋滞にはまって暑さに耐えました。頑張った。そして私は帰ってきた。

フォームAPIの続き6

Ajaxを使用したフォーム要素の変更

Drupal6ではフォーム要素のうち、AHAHプロパティを
使うが、Drupal7ではAjaxを使用するようになっている。
以下の例では、Ajaxを使用してSubmitボタン押下時に
アニメーションを動かすようにする。

アニメアイコンを追加

1.Formの定義

<?php
/**
 * Hook_menuの実装
 */
 function ajax_test_menu(){
     $items['ajax_test'] = array(
        'title' => 'Ajaxのテスト',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('ajax_test_form'),
        'access arguments' => array('access content'),
     );
     $items['ajax_test/fade_js'] = array(
        'page callback' => 'ajax_test_fade_js',
        'type' => MENU_CALLBACK,
        'access arguments' => array('access content'),
     );
     return $items;
 }
 
 /**
  * フォーム定義
  */
  function ajax_test_form(){
      $form['target'] = array(
        '#type' => 'markup',
        '#prefix' => '<div id="target">',
        '#markup' => t('ボタンをクリックすると幸せな気分になれますが、それは幻想です'),
        '#suffix' => '</div>',
      );
      $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('クリックしてね!'),
        '#ajax' => array(
            'path' => 'ajax_test/fade_js',
            'wrapper' => 'target',
            'method' => 'replace',
            'effect' => 'fade',
        )
      );
   
      return $form;
  }
?>

2.コールバック関数を定義

<?php
/**
 * Ajaxを追加するためのコールバック
 */
 function ajax_test_fade_js(){
     $output = t('FADE!');
     drupal_json_output(array('status' => TRUE,'data' => $output));
 }
?>

これを表示して、Submitを押すと、
f:id:orenodrupal:20150427220934p:plain f:id:orenodrupal:20150427220944p:plain アニメアイコンが表示される。
次回でフォームAPIは最終回の予定です。

首尾一貫しない私の生き方

■「生き方」(稲盛和夫著)読み始め

___________________________________________________

表題の事もあり、言動も一致しない自分に嫌気がさしてきたので、これを読みます。
前回の反省を踏まえて、今回は本書のプロローグをちゃんと読みました。
本書の目的は「人生を充実したものにするためのヒントを得る」ことで、
そのための手段として、稲盛さんのこれまでの経験から、
人間の生き方について真正面に、忌憚の無い意見を言う」事だそうです。

プロローグを読んでいるだけで心を蝕まれる気がしたのは、私の心が汚れている
せいでしょう。
それでも、何か一片でも得られるものがあるかもしれませんので、最後まで
読み進めたいと思います。

技術ブログはお休みではないので、進めたら合間に書きます。

知識は失敗より学ぶ

■失敗の本質読み終わり

とある上司が読んだことあると聞き、購入しました。
ジョン・ハンター曰く「外科医師が成功と失敗を書に記せなければ
外科技術の向上はない」
といったとも言われますし、タイトルに
期待して読んだのですが、本の目的を理解せずに読み始めるのは
失敗の元だと、読み終わって、これを書いている時に気づきました。
(実に四ヶ月近くかかりました)

序章に書いていましたが、この本の目的は「組織の失敗を解読する」
ことであって、個人的な考え方やら実践方法を教えてくれるものではありません。
あと凄く読みづらい文章でした。ここの文章の方が読みづらいですか?そうですか。

読み終わって覚えているのは、話し合うって大事だなということくらいです。
感想がこれだけであんまりなので、下に概要と感想の追記を書きます。
間違ってても責任持ちません。

  1. 序章
     ・この本の目的と手段
      ・目的:大東亜戦争における日本軍の負け方から、組織の欠陥を抜き出して、
          組織的な失敗を解読する。
      ・手段:
       ①6つの事例から、日本軍の組織的欠陥を抜き出す。
       ②①の内容を整理して、米軍の組織的特性と比較する。
       ③①②を踏まえて、日本軍の組織的欠陥を理論的に考察する。
        また、現代組織にその欠陥が反映されているかも考察する。
  2. 一章
     ・6つの作戦失敗事例
      それぞれの事例の作戦目的や経過を説明して、アナリシスという形で
      振り返りを行う。
      →すべてに一環しているのは、おれの空気を読めという感じの人が
       出てくること・・・。
  3. 二章
     ・一章で抜き出した欠陥要因を、戦略上と組織上に分けて分析する。
      →とにかく日本軍はひどいという点がこれでもかと挙げられる。
       (それがこの章では目的なんでしょうが・・・)
       あと、目的が不明確で技術体系が一点豪華主義というところは、
       なぜかすごく納得できました。
  4. 三章
     ・日本軍が欠陥要因を持つようになった戦争への適応方法と、
      環境変化へ適応できなかった理由を考察する。
      それと現代組織へその欠陥が反映されているか考察する。
      →何かの本でも読みましたが、とにかく前例を重視する。
       新しい手法が結果を出しても、それを無視して過去最もうまく
       いった方法を採用し続けるだそうです。
       はい。私も時々現実を無視します。(^^

フォームAPIの続き5

form再表示の際にform_stateの値を使用する方法

formを再構築させれば良い。
具体的には、hook_form_submitの中で
$form_state['rebuild'] = TRUE;
を定義してやればよい。

Formが再表示する際にカウントアップ

1.Formの定義

<?php
/**
  * hook_menu()の例
  */
  function multiform_menu(){
      $items['multiform'] = array(
           'title' => t('Multi Page'),
           'page callback' => 'drupal_get_form',
           'page arguments' => array('multiform_exampleform'),
           'type' => MENU_NORMAL_ITEM,
           'access arguments' => array('access content'),
      );
      return $items;
  }
  
  function multiform_exampleform($form,&$form_state){
    $step = isset($form_state['values']) ?(int)$form_state['storage']['step'] : 0;
    $form_state['storage']['step'] = $step + 1;    
    $form['indicator'] = array(
            '#type' => 'fieldset',
            '#title' => t('Step @number',array('@number' => $step))
    );
    $form['submit'] = array(
            '#type' => 'submit',
            '#value' => 'submit'
    );
    return $form;
}
?>

2.Submit関数を定義

<?php
/**
 * 
 */
function multiform_exampleform_submit($form,&$form_state){
    $form_state['rebuild'] = TRUE;
     return;
}
?>

これを表示して、Submitを押すと、
(初期表示) f:id:orenodrupal:20150405223235j:plain (Submit1回目) f:id:orenodrupal:20150405223244j:plain (Submit2回目) f:id:orenodrupal:20150405223251j:plain カウントアップされる。
php $form_state['rebuild'] = TRUE;を設定していると、
Submit後にFomrが再構築される。(=form_stateの値がmultiform_exampleformで使用 できる) ただそれだけです。

フォームAPIの続き4

form_alterへの復讐

hook_form_alterの実装を試します。
作成されたFormに変更を加える技です。
本来は既存のFormを変更する際に使われますが、
ここでは新しく作ったFormにわざと変更を加えます。

既存のForm情報を表示

1.formファンクションの最後でdebug($form)にてform内容表示。
(ちなみにこのDebugファンクションは適当なソース上に書いても
、配列を引数にしても中身をきれいに表示してくれる、
ものすごく優秀な子です)

<?php
/**
 * フォームを定義する
 */
function simpleform_nameform() {
    $form['user_name'] = array('#title' => t('あなたの名前'), '#type' => 'textfield', '#description' => t('あなたの名前を入力して下さい'));
    $form['animal'] = array('#prefix' => '<hr />', '#title' => t('動物'), '#type' => 'fieldset'
    ,'#collapsible' => TRUE, '#collapsed' => FALSE, '#description' => t('ここには動物しかいない!'), '#suffix' => '<div class="privacy-warning">' . t('この情報は公共性のある情報だ') . '</div>');
    $allowed_keys = array(t('家のカギ'), t('会社のカギ'), t('銀行のカギ'));
    $form['keys'] = array('#type' => 'textfield', '#title' => 'カギ', '#allowed_keys' => $allowed_keys, '#element_validate' => array('simpleform_keys_validate'));
    $form['homestay'] = array('#title' => t('とまる場所'), '#type' => 'textfield', '#description' => t('泊まる場所を記す場所'));
    $form['submit'] = array('#type' => 'submit', '#value' => t('Submit'));    
 // フォーム内容を表示
    debug($form);    
    return $form;
}
?>

f:id:orenodrupal:20150329223630j:plain フォームに用意されているフィールド、submit、validateの情報が 表示される。 keysフィールドにはsimpleform_keys_validateが設定されている。

2.hook_form_alterを実装
フォームID_form_alterで実装すると、そのフォームIDが呼び出される際だけ このファンクションも呼ばれる・・・らしい。

<?php
/**
 * hook_form_alter実装
 */
function simpleform_form_alter(&$form, &$form_state, $form_id) {
 // validateを追加
     $form['#validate'][] = 'simpleform_test_alter_validate';
}
/*
 *  Validate
 */
function simpleform_test_alter_validate($form, &$form_state){
        if(!isset($form_state['values']['homestay'][0]['value']) && 
        empty($form_state['values']['homestay'][0]['value'])){
            form_error($form,'test alterエラーのテスト');
        }
  return $form;
}
?>

これでSubmitしてみると。
f:id:orenodrupal:20150329223653j:plain ちなみにさきほど追加したValidateの中でDebug( debug($form['#validate']);)をしてみると、 Validateが追加されているのが確認できる。 f:id:orenodrupal:20150329223705j:plain

右利きは左手でコップを持たない

Aptana3によるPHPコメント切り替えショートカット

Drupalのhook_form_alterについて学習していましたが、上手くいかないので
題名の記事を書きます。
でもDrupalも続けます。
なぜなら、
こんなこと言っても意味はないかもしれないけど、
やり遂げる可能性はあるんだ(迫真)。

Aptana3の設定

1.ウィンドウ→設定→一般→キーを選択
f:id:orenodrupal:20150309215905j:plain 2.「コメント」で検索して、場合でソートすると、いくつかコマンドが出てくる。
f:id:orenodrupal:20150309215912j:plain 3.いろいろあって邪魔なので、ひとつを残して全部アンバインド。
  (ここではCtrl+/を残しました)
f:id:orenodrupal:20150309215918j:plain 4.Ctrl+/で検索して、他で使われているところを削除
f:id:orenodrupal:20150309215925j:plain 5.試してみる。
Ctrl+/
f:id:orenodrupal:20150309215933j:plain Ctrl+/
f:id:orenodrupal:20150309215940j:plain