2013-10-31

スマフォってさあ…

でもです。

Google+にPostしようとして、そこそこ長くなったので、Blogにしました。

いやー、Android Firefoxも今回のVersionで25MBなんてサイズだし。
旧Virsion を一旦UnInstalせにゃ入れられんのよ。

Chromeは?って言われそうだけど、PreInstallのアプリってSDに移動できんからダメなのよ。
Chromeの最新Versionが27MB、PreInstallされてるVersion(18.0)が2.4MB。
最新VersionをInstallすると、単純計算で29.4MBの内部ストレージを消費する‥って何もできなくなる!orz
Google+とGMail は使用頻度高いしアプデした方が確実に使いやすのが分かってるからしてるけど、どっちもSDに追い出せなくって‥ねぇ。

因みに、Google+(Ver.4.12) は、アプリのサイズだけで23.13MB。
GMail(Ver.4.6)はアプリのサイズだけで6.8MB。
ホントは、Mapもアプデしたいんだけど現在(Ver.6.14.2)はアプリだけで5.43MB。最新Ver(7.3.0)は、Downloadサイズが6.9MB、PreInstallだから、これも6.8MB + 6.9MB で、13.7MB。

Root取ったら?って話もあるけど、今の自分の端末(Willcom DIGNO Dual(京セラ))ではRoot取れたって話は無いらしい、人柱になれる程金銭的に余裕もないのサ。

という訳で、チマチマやりくりしてる状況。

メーカーサイドでいろいろいれてくれるのは分かります。ユーザーが手にとってすぐ使えるようにって配慮。

でも、フィーチャフォンと違って、アプリはアプデするのが普通。しかもほとんどの場合、アプデする度にサイズは大きくなるのも普通。
そう考えたら、PreInstallのアプリに手を出せないって状況は、長い目で見ればユーザーの利便性に寄与していない事にならないんじゃないかと思う。
PreInstallのアプリは入れてもらってもいい、でも、ユーザーの自己責任でUnInstall出来るようにはしておいて欲しい。ましてや、アプデするのに更新とか言いながら実質旧Version を動かないようにして新Version をInstallするってやり方は誤っていると言ってもいいんじゃないかと思う。

でなきゃ、十分すぎるほどのサイズの内部ストレージを用意するか…だね。
少なくとも、 内部ストレージ 1GB ってのはもう、少ないと思う。せめて2GBは欲しいな。

という訳で、チマチマやるしかないんですわな。

でわ〜。

2013-10-12

ABAP boolc( log_exp )

どもです。

久々の更新。

今回は、ABAP ネタを少し。


みなさんは BAPI 使ってますか?
最近は、Batch Input よりもBAPI を使って伝票作ったりすることも多いんじゃないかと思います。
というか、個人的にBatch Input は使う頻度を下げて行きたいと思ってます。

ま、それはそれとして。

伝票の生成を行う系統の BAPIを使っていて一番面倒なのが

  使う項目について、別の構造体やテーブルにフラグを設定する必要がある。

という点。
まあ、これが予め決まっていて「それ以外無い」 なら決め打ちで 'X' しちゃえばいいんですけどユーザーのアクション(数値などの設定)によって使う/使わないが決まる場合、どうしてもこんな処理をしなきゃいけません。

IF L_GENERALDATA-DESCRIPT2 is initial.
     L_GENERALDATAX-DESCRIPT2  =  space.
ELSE.
     L_GENERALDATAX-DESCRIPT2  =  'X'.
ENDIF.

※わざと冗長に書いてます。

これは、固定資産のBAPIの一部です。
やってることは、 DESCRIPT2 に何か設定されていれば GENERALDATAX の DESCRIPT2 に ’X' を設定する。
と言うもの。

多かれ少なかれ、 BAPI で処理を記述するとこういった部分が出てくると思います。

自分も最近こういった記述をすることになって、「面倒だな〜」と思いながらものは試しにと

もっと簡単に記述できるんじゃないか

と思い Help を漁ってみました。例えば、Lines のような関数でもあれば…なんて。

そうしたらば、見慣れない関数が、
Boolc
Boolx
 これは、こんな風に記述します。

L_GENERALDATAX-DESCRIPT2 = Boolc( L_GENERALDATA-DESCRIPT2 is initial ).

おお!一行で書ける!

つまり、括弧内の論理式が 真の場合、左辺に ’X' を返し、偽の場合、左辺に空白を返します。

  便利ーーーーー!

いままで、 IF でちまちまやってたのが嘘みたい!

まあ、どっかで出たんでしょうね要望が。
 「ちまちまやってられんゾ! (#゚Д゚)ゴルァ!!」

かどうかは、わかりませんが。

あ。因みに(大事なこと)、パッケージの状況によってはこれ(Boolc/Boolx)が使えない場合もあるのでご了承を。

と言う訳で、今日はこのへんで。

では〜。

2013-09-25

生存確認

どもです。

生存確認です。
今度、もうチョッとまともに書きますね。

因みに、この投稿はBlogger App からの投稿です。

では~。

2013-07-12

「ガッチャマン」の事(映画レビューじゃないよ)

どもです。
前回の更新から、約3ヶ月ぶり…。わはは。

で、「ガッチャマン」です。
往年のアニメ作品て言うかTV番組の実写映画化。

こちらの予告も観ました。


うん。まあ、悪くは無いんじゃない。

最初、この映画のスチール見たときは、「タイバニ」方向を向いているのかと思ったんだけどねぇ。

でもYouTubeのコメにも有るように、「なんか違う」感はありますね。
特に自分のようにリアルタイムで観ていたら尚更。

で、その 「なんか違う」感ってなんだろうと考えたら、やっぱりカン違いしてるんじゃないかと。

ガッチャマンって、端的に言えば「戦隊」なんですよね。

でも、予告見る限り映画は「戦隊ノリじゃない」んですよ。

いや、人間ドラマもあるし、派手なアクションもあるし、そういう部分では良いと思うんですけど目線が完全に「大人に観てもらう」事を意識してる。

でもねぇ。

今の大人(特に40代後半から50代前半)はリアルタイムにオリジナルアニメを見てる層なんですよ。

全然、ガッチャマンなんて見たこと無い(年齢的にもっと上の)層なら、今回の映画でもいいと思うんだけど、リアルタイムに観た層以降について言えば、

「なんか違う」

と…。

うーーん。タツノコさん、いっそのこと次に御社のアニメ作品を実写化するなら、東映の戦隊スタッフにお願いしたらいいんじゃない?



てな、わけで「まだ、観てもいない映画に色々言う」でした。


では〜〜。

2013-04-05

[SAP] eCATTのこと

どもです。

まさかの連投。大丈夫か > 自分


えと、今
「今後の作業で使うから」
と言う理由で eCATT の勉強してます。

CATTと言うもの自体、話には聞いていたけど使った事が無かったのでいい機会だと思ってSAPのOnlie Helpを中心に調べてるんですが…イイなぁ…これ。

いや、何がいいってスクリプトとデータ用意すれば自動でやってくれるんですよ。

で、こう思うんです。
「なんでどこも使わないんだろう?」


答えは簡単。
「テスト結果にスクショが付かないから」

恐らくこれ。

いままで関わったプロジェクトでテスト(単体、結合問わず)と言えば ー> スクリーンショット。
これ必須。

つまり、テストの結果として
「検証可能な資料」を残す、と言う意味で「スクショ必須」なんですね。

でも、eCATTの場合、テスト結果はLogの形で保存される。
んだけど、これ「見方が分からない」と検証できないんですね。

で、実はeCATTなんて誰もマトモに使って居ないから、テスト結果としての「Logの見方が分からない」んですね。
今回のeCATTの使用はあくまでも大量データ投入であってテストの為じゃないんですね。


ううーーーん。
ハッキリ言って、イチイチスクショ取る単体テスト。
その後、Excelにまとめるんだけど、その時間と労力って、投入しただけのものは有るんだろうか?
なんて思ったりするんですね。
SAP(と言うかABAPというか)にはカバレッジツールなんかも有るんです。ですが、これも有効活用されているとは言い難い状況。

テスト工数を削減するんなら、こういうツールを積極的に使って見ればいいのにねぇ。


 と言う訳で、まあ、お勉強はまだ続きます。


では〜。

「人類の歴史を変えた発明1001」

どもです。

最近、図書館から借りてきて、「大当たり」だった本を紹介します。



人類の歴史を変えた発明1001

とにかく、一家に一冊あってもいい程の内容。

紀元前260万年頃の石器に始まって、最後は2008年の大型ハドロン衝突型加速器までが年代ごとにまとめられています。
ほぼ1ページ1項目なのでそれぞれの解説はそれほど詳しくは無いものの、ページをめくれば「ほ〜っ」「へぇ〜っ」ってなること請け合い。

で、最後が2008年…なので当然知っているものも出てきます、iPhoneとかブルーレイとか初代マッキントッシュとかね。
あと、意外なものが意外な年代に出てきたり(例えば、エスカレーターが1891年に出てきたり)
意外なものが意外なところに出てきたり(これは…ひみつ…読んだらいいよ)

考えてみれば、今の50代から40代後半頃(までかな?)は家庭に百科事典が有ったんじゃないかと思います。(少なくともウチにはあった)
自分なんかは、学校の教科書見る時間よりも百科辞典見てた時間のほうが長いんじゃないかと思います。でも、今はネットで調べ物は済むし、少なくとも紙の書籍であったものよりもずっと最新情報だしで、出版社ももうどこも出してないですよね。
でも、いつでもPCが使えるわけじゃないウチの子供らにしてみれば書籍の形で手元にあると暇つぶしに手にとって拾い読みしてますが、それで十分だと思うんです。
そうする中で自分ながらに発見とかがあれば、そういうモノって結構忘れないものですからね。
ま、話のタネにはなるんじゃないかと思うんです。


あと、大人が読んでもおもしろいし、ワンボードマイコンの頃からの事を知ってる人なら、この本の中の例えばハードディスク・ドライブのページで「おーっ、このデカイハードディスク使ったこと有るぞ」とかそういう話を”誇らしげに”出来ますよん。


個人的には、これ借りてきて子供たちがこっちの思惑通りに喰い付いてくれたことが一番嬉しかったりするんですけどね。  へへへぇ。



てなわけで。

では〜。

2013-04-02

ABAP: Loop AT 〜 [INTO | ASSIGN](改)

どもです。

前回、書いた「ABAP: Loop AT 〜 [INTO | ASSIGN]」なのですが……
ごめんなさい、間違ってましたぁ

と、言う訳で修正したやつをUpします。
間違った奴は、自戒を込めて残しときます。


久々のSAPネタ。
忘れないうちに書いときます。

Loop AT [内部テーブル] INTO [構造体].

  AT NEW [コンポーネント].

  ENDAT.

ENDLOOP.

とした場合、 [コンポーネント]に書けるのは、[構造体]内の項目になります。
しかも、この書き方の場合、 [構造体]がこんな
 ITEM001     TYPE    C LENGTH 10
 ITEM002     TYPE    C LENGTH 10
 ITEM003     TYPE    C LENGTH 10
内容だとして、[コンポーネント]ITEM001 だとすると、
AT NEW でブレイクすると AT NEW 〜 ENDAT 内で参照できるのは、ITEM001だけで
ITEM002以降については文字項目の場合 '*' が詰められて参照できません。

これが最初分からなくって、随分ハマりましたし、恐らくABAPでAT NEW とか「使いにくい」って感じてる人はこれが原因じゃないかと思います。

ところが。
LOOP AT 〜 にはもうひとつの記法が有るのはご存知だと思います。
そう!

LOOP AT [内部テーブル] ASSIGN <フィールドシンボル>.

この書き方の場合でも、先程のAT NEW の書き方がチョット違ってきます同様の書き方になります。

LOOP AT [内部テーブル] ASSIGN <フィールドシンボル>.

  AT NEW [コンポーネント].

  ENDAT.

ENDLOOP.
2013/4/1記
 先の”AT NEW [コンポーネント]”の記述で分かる通り、INTOでもASSIGNでも基本は同じ動作になります。従って、これ以降については、まるまる意味のない記述になります。

誤った原因は、”AT NEW” に続けて書くのが[コンポーネント]で有ることを失念したところ。
自分でテストPG書いた時に何を勘違いしたのか、
AT NEW <フィールドシンボル>-[コンポーネント].
 なんて書いちゃった。当然コンパイラからはエラーメッセージ出されます。
そもそも、書くべきは[コンポーネント]のみで、[構造体]等で修飾する必要も無いもの。

という訳で、これ以降については、「なんぞおかしなこと言っとる」って事で無視して下さい。

多くの方に見に来ていただいてるのに、ホントにすみません。
以後、気を付けます。


INTO では、AT NEW に書けるのは<構造体>内の1項目でしたが、
ASSIGN の場合は、<フィールドシンボル> そのものを書きます。

じゃあこれでどうなるかって言うと、<フィールドシンボル> の参照元の内部テーブルの構造全体がキーとして認識されます。

「…え?じゃあ…どうなるの?」

極端なことをいえば、<内部テーブル>内の全レコードがAT NEWの対象になります。
つまり、”必ずAT NEW”を通ります。
それじゃあ、NEWの意味が無いんですが、重要な点が2つ。
  1. INTOの場合、指定した項目(先の例で言えばITEM001)以降の項目の参照ができませんでしたが、ASSIGNの場合、全ての項目の参照が出来ます。
  2. 任意の複数項目を一つのキーとして使用することができる。
と言う事になります。

例えば、こんなの。

TYPES:
  BEGIN OF TYP001,                    " 内部テーブル構造体1
    ITEM001     TYPE C LENGTH 10,
    ITEM002     TYPE C LENGTH 10,
    ITEM003     TYPE C LENGTH 10,
    ITEM004     TYPE C LENGTH 10,
  END OF TYP001.

TYPES:
  BEGIN OF TYP00A,                    " ブレイクキー構造体
    ITEM001     TYPE C LENGTH 10,
    ITEM002     TYPE C LENGTH 10,
  END OF TYP00A.

TYPES:
  BEGIN OF TYP002,                    " 内部テーブル構造体2
    ITEM00A     TYPE TYP00A,          " ブレイクキー項目
    ITEM003     TYPE C LENGTH 10,
    ITEM004     TYPE C LENGTH 10,
  END OF TYP002.

DATA:
  TB001      TYPE STANDARD TABLE  TYP001,  " 内部テーブル1
  TB002      TYPE STANDARD TABLE  TYP002,  " 内部テーブル2(キー構造有り)
  KEY        TYPE TYP00A.             " キー退避項目
 
FIELD-SYMBOLS:
         TYPE TYP002.             " フィールドシンボル

* 既に TB001 にはデータが入っていてSORTまでされているとします
* ブレイクキー項目の有る内部テーブルにコピー
  TB002[]  =  TB001[].

LOOP AT TB002 ASSIGN .

  AT NEW  .
    IF -ITEM00A <> KEY.
*** ここにブレイク時の処理を記述(今回はWRITEします)
      WRITE: /1(10)   -ITEM00A-ITEM001,
              13(10)  -ITEM00A-ITEM002.

      KEY = -ITEM00A. " KEY項目の更新(これをしないとブレイクしない)
    ELSE.
      NEW-LINE.       " ブレイクしない場合、ただ改行だけ
    ENDIF.
  ENDAT.

  WRITE: 26(10)  -ITEM003, " 非キー項目はそのままWRITE

         39(10)  -ITEM004.

ENDLOOP.

これを実行するとこんな感じに出力される(はず)。

aaaaa   aaaaa  xxxxx yyyyy
               xxxxx yyy00
               xxxxx yyy01
aaaaa   bbbbb  xxxxx yyyyy
               x00xx yyyyy
abbbb   bbbbb  xxxxx yyyyy

キー部分がブレイクした時だけ出力されて、非キー項目はレコード毎に出力されます。

ちょっと面倒な感じもあるし、比較項目を2つ用意してLOOPさせながらIFで比較するって言う旧来のやり方と殆ど変わらない気もするんですが、 フィールドシンボルの場合AT NEW 内で
「全項目へのアクセスができる」
って所が個人的には
すげーーーーー!Σ(・ω・;|||
って単純に思っちゃたんです。(^^;

まあ、覚えておいて…どっかで使うこと…あるかな????


では〜。

SSH Keyを作成してGitHubなどに接続してみる - Qiita

大事なことなので。 SSH Keyを作成してGitHubなどに接続してみる - Qiita : GitHubやGitLab上のリポジトリへgitコマンドでファイルをpushする時に、上手く接続出来なかったのでSSH Keyの作成からやり直してみました。これはその作業ログなので自分...