ImageMagickでtrimを指定方向のみ行う「trim:edges」

ImageMagickで-trimとすると、四方全てで空白部分を除去してしまいます。

これを指定方向のみ行うことは以前は(現実的な方法では)できませんでしたが、現在の最新版では「入力画像.jpg -define trim:edges=south,east -trim 出力画像.jpg」のようにすることで、方角の英語方向に対してのみ(複数指定可)でtrimを行えます。

 

 

子供の育て方・接し方の違いをもたらす違い

子供の育て方・接し方の違いをもたらす違い

 

1.寄り添うこと

   気持ちを受け止める

2.一緒であること

   同じ目線で見る

   目を見る

3.親としては、状況説明をすること

   違いは、状況とは『現に起きていること』ということ

     A.たわしを触る前   (見る) たわしがあるね

     B.たわしを触った後  (触る) ざらざわしてるね

   よくある間違い

     C.たわしを触る前   (見る)たわしはざらざらしてるんだよ

   先回りしてしまう、という言い方もある間違い

 

よくある間違い

   乳児が乳を飲んでいるときに、スマホを見る

      AもBも、Cすら無い

   子犬にミルクをあげているとしましょう。

      スマホを見ながらミルクをあげますか?

      かわいいでちゅね!と言いながら、撫でながら、目を見つめて、ですよね。

      これは、母親が「自分がされなかった嫉妬」によるものです。

      違いは、すでに曾祖母の代から問題が起きていることです。

      なので、違和感があって当然です。嫉妬は自己認識が困難なのですから。

      でも、演技だと思ってもよいので、やってみてください。

      そして、自分もこうされたかった、と思ってみていいのです。

 

3歳の子の視点でみると、フィリピンは普段どんな生活なのか?


3歳の子の視点でみると、普段どんな生活なのか?


目的:
  • 日本とフィリピンとで子供の精神的な安定に違いをもたらす具体的な「違い」は何か?
  • 日本では、心が廃れている幼児が多い現状に際して、よい状態をキープしていると思ったフィリピンで子供から見た親、という視点で現地調査をする。

理由:

  • 日本では、公園で幼児を放置して、親はスマートフォンを見続けていているだけ、もしくは他の親と話しているだけ。 小さい公園で、幼児が「ママ来て!」とずっと叫んでいるのに一向に来ない母親。 バギー(ベビーカー)では幼児からは親が一切見えないまま。電車に乗れば親はスマホを見て、子供は親以外に何かを求めてキョロキョロ。
  • 『幼児からすれば、起きている1~4時間という中で、まさに起きている95%に母親が見えないのです。』
  • こんな状況下で、まともな人間に育つはずはないと直感しています。

 

日本と異なる点:
  • 特段異なるのは、普段の生活で、祖父から曾孫まで1つのベッドでギュッと一緒に寝る生活。(大家族で1つのテントでキャンプをするイメージ)    特に、背中・おなかを合わせて寝るというのが特に違うように感じました。
  • フィリピンでも大人はスマートフォンでビデオを見ていたりします。
  • ですが、子供と一緒の母親は子供を抱いているか、バスの中では膝に乗せていたり、ずっと肌身離さずといった感じでした。

 

  • 1~3歳児の母親の後追いの有無・程度について: 母親によく懐いていて、母親の近くでダーっと走る程度。 母親から離れる生活シーンが無い(狭い歩道でもバイク(タクシーとしてのバイク)がクラクションを鳴らしながら通るので、日本とは異なり母親から離れる状況そのものが見つかりませんでした。
  • ハイウェイからバイクで20分ほど山奥にいくと、5歳ぐらいの子供たちだけで缶蹴りのような遊びを道端でしていましたが、後追いとの関連付けはできません。
  • 次回、英語をもっと勉強して、細かいニュアンスとお願いしたいシチュエーション(と調べさせてもらいたい必要性)を伝えることが目標です。
日本で適用できるものがあるか:
  • 家族で一緒に『1つの布団』で寝る、といったことをしてみる。(キャンプだと思って)
  • 子供が幼児であれば、すぐにでも実行可能。(日本では8人で寝るまではいかないと思うので、寝返りなどで幼児の上に乗ってしまわないように、という注意は必要)
直感的に:
  • 特別・特殊なことはなく、細かく知ってみれば『そりゃ、すこやかに育つよ』という生活を送っていました。
  • 日本でも、子供も大人もキャンプとなれば『娯楽施設が無い』にも関わらずワクラクするというのも、フィリピンの家での生活は魅了するものがあると思いました。
  • ちなみに、引退したら南の島でゆっくり過ごす・・・というのを既にしているので、働く意欲は食事+ある程度、という程度のようで家族を大切にする文化が残ったままという違いも日本と異なるように思います。

インタビュー方法について:
  • 初めての滞在で宿泊はできなかったので、昼に自宅を案内して頂いての内容です。 なので、夜寝るときについては、インタビューのときに10人家族なのにベッドが1つ。では、どのように寝ているの?と質問した答えを用いています。 他の家も同様で、建物の大きさと住んでいる人数からすると、1つのベッドにギュッと寝ていて、床に麻を敷いて寝たり、という話でした。
  • 実際に、自宅を見せてもらいました。  平日お昼。奥さんとお子さん以外は仕事に出ていましたが、10人家族で住んでいます。

 

  • 子供は普段、お母さんと一緒の家にいる。買い物も一緒  買い物に行くときは3輪バイクにお母さんの膝に乗っていく。
  • オモチャは無い。  お母さんを見る。お母さんも私を見る。    特段、クスグリは無い。(クスグリをすると生きていることへの安心感の強化に直接的につながる)
  • バギー(ベビーカー)を買うお金は誰も持っていないので、抱っこのみ。
  • 一方で、おんぶ・肩車は見かけなかった。
  • 食事:朝と夜は10人みんなで食べる
  • 風呂:水浴びを数人で一緒にする (気候のせいなのか、タオルで拭くという習慣は無いようでした。洗濯物には手ぬぐい程度のサイズのタオルしかない)
  • 寝るとき:8人で1つのベッドにギュッと詰まって寝る。
  • 仲の良い親戚と一緒にキャンプへ行くことになり、大きいテントを買ったが、テントなので寝る場所は1か所なのでギュッと詰まって雑魚寝。朝起きたら火を焚いてみんなで食事夜も火を焚いてみんなで食事お風呂もみんなで水浴び食料はお母さんの膝にのってお店に行く。
  • これは、日本でもキャンプをすると子供が成長し、家族の仲が良くなる、というキャンプっていいよね!というような認識と合致します。(正確には表現できませんが・・・)
  • 大学新卒の青年に話を聞いたケースでは、朝6時に起きて朝食を食べ、8時に学校に付き、帰ったら勉強して6時には夕食を食べ、7時に寝る。朝ごはんを作る両親はもう少し早く起きてると思う?という質問に Yes ということでした。こんな毎日を胎児から大学生までずっとしていたということです。
  • なので、どう考えてもすこやかに育つと直感的に思いました。都市部でもフィリピンのミンダナオ島は同様の建物が一般的な家なので(高島屋より立派なデパートから20Mで、このような家が並んでいるのが普通です)

感想として:
  • ほぼ、常夏の島のキャンプ場があるとして、そこに仲の良い3家族で大きなテント1つに入ってキャンプをする、そんな生活に見えました。
  • 朝起きたら、なんとなくみんなが1か所に集まって朝食、というゆったりした時間の中で、キャンプする為に仕事をする、と考えればフィリピン人が仕事を急に休んだりといった話もスッと入ってきました。
  • トイレが便器だけ(便座を外した陶器部分だけ)、水を溜める大きなガメがあり、その水でお尻を流す、トイレを流す、水浴びに使う、洗濯に使う、という生活スタイルでした。
  • 日本国内で比較するとしたら、やはりキャンプという概念で見れば腑に落ちることが多いかと思います。 1つの大きなテントで、おじいちゃんから曾孫まで一緒に寝る、一緒に水浴びする、一緒に食べる。 建物も、キャンプするにはテントと比べれば、はるかにましです。
  • トイレも日本のキャンプ場のを思い返せば、問題はありません。
  • このようなキャンプをすれば家族の絆が強くなるというのが理解できると思います。これに似た環境で実際に生活しているのです。

物価について:
  • 教科書やパブリック校は無料です。
  • しかし、ノートは大きいメモ帳タイプが1冊40ページ程度で10ペソ(24円ぐらい) 1日の日給が300ペソ程度なのを考えると、日本人が日給8800円とすれば700円ぐらいの割合でしょうか。
  • 地元のいわゆる定食屋(カレンデリアと呼ぶ)が1食25ペソ(1750円ぐらいの割合)なのに対して、マクドナルドのハンバーガーが200ペソなのに混雑していたりと、物価に対する感覚がよくわからないシーンが多かったです。
  • お金のある人はそれなりにいて、海外で働いている子供の仕送りだったりするようです。親がフィリピン国内で稼いでいるケースもあると思いますが、実情はまだよくわかりませんでした。
  • ただ、お金があっても家はボロのまま、というのもあるようなので、お金のかけ方が日本と根本的に違うようです。
  • 周りがボロ家ばかりなので、相当お金が溜まったら建て替える程度なのかもしれません。経済成長率が高い状態を維持しているので、これからは個人宅の建て替えも増えると思います。(とはいっても、もう3世代は後ぐらい)
  • ただ、外食関係の仕事で財を成す人が多いように感じました。
  • それも、私が行ったのはミンダナオ島の北部なので、外国人はほとんど来ない地域です。なので、フィリピン人相手の国内消費で財を成せるようです。
  • 全体的に、日本よりも物価は高いです。日本と同一の
    商品が1.5倍くらいです。(日給700円ですが)
  • f:id:koga2020:20191130203501j:plain

    商店の家

    f:id:koga2020:20191130203600j:plain

    一般的な家

c# .Net でのオブジェクトの比較について(classの場合)

C#のような .Net 系で、オブジェクトの参照とその扱い方の記述とで、わかりずらかったので整理してみました。

ここでは、実際の内部処理を前提として、どのように操作するとどうなるのか?という順序で分類して書いてみました。

 

※クラスのオブジェクト同士の == での比較は、何を指示しているのかという意味合いの問題があるので、ここでは触れていません。

 

 

 

f:id:koga2020:20191130111849p:plain

クラスの比較

 

 

 

 

class TokyoInfo A = new class TokyoInfo();
class TokyoInfo B = new class TokyoInfo();
class TokyoInfo C = new class TokyoInfo();
class TokyoInfo D = C ;
class USAInfo F = new class USAinfo();
class USAInfo G = new class USAinfo();
class TokyoInfo
class TokyoInfo
class TokyoInfo
class USAInfo
class USAInfo
形状が同じか? same class ?
参照先の内部管理 ID が同じか?
A と同じ値のオブジェクトを作る。
実例: Class K = A . MemberwiseClone();
※さらに参照先のあるタイプ( List<int> やクラスなど )は、さらに同様にして同じ値となるように手書きでの記述が必要です。)
いわゆる【クラス変数 A と B は同じデータか?】
   異なる参照先だけれど、 A と B の参照先の「値」が同じかどうか?
   値ごとに比較するしかない!!
   しかも、参照先のあるタイプ( List<int> やクラスなど )は、さらに同様にして同じ値となるように手書きでの記述が必要です。)
それは手書きで行う。( . Net での用意や仕様は存在しない。)
利用しやすいように関数で作っておく、という手法が基本。
変数名に新しいオブジェクトを作って、紐づけする 例: new class TokyoInfo()
変数名の参照先を他の参照先に変える場合 A = C A の参照先を C の参照先(内部管理 ID 002)にします。
そして A が参照していた内部管理 ID 001 は、それを参照する変数が無い状態となる。
内部管理 ID は知りようがない状態なので、つまりは今後は利用不可能。
これを .Net は独自のタイミングで捨てる(ガベージコレクション
実在するデータの値が同じか?
クラスのプロパティを1つずつ比較する方法  具体例: if ( A . 人数 == B . 人数 )
全てのプロパティが同じ値かまとめて行う   具体例: if ( A . 人数 == B . 人数 )
.Net メモリ上に実在するオブジェクト(データ)
プログラマに見える内容 . Net の内部管理なので、プログラマからは見えない内容
値は A . 人数 と書くことで、プログラマから見えるように
. Net にその趣旨を伝えます。
具体例: C . Equals ( D ) は true 。参照先の内部管理 ID が同じ
具体例: B . Equals ( C ) は false 。参照先の内部管理 ID が異なる
値が同じかどうか(複数の変数があれば、その全てにおいて)
参照先の内部管理 ID と紐付け
変数名(A ~ G)の参照先の内部管理 ID と紐付け

 

買い換え:サムソン製ZIPEL 冷蔵庫を買った! SRT746VWML

この冷蔵庫を韓国から直輸入したblogを見直すと当時は2008年。もう10年も経つんですね。
当時の佐川グローバルロジスティクスの韓国駐在の方、ありがとうございました。
さすがに内部の劣化があり、買い換えることになりました。
買い換えは日立の大型冷蔵庫なのですが、使い勝手はやはり観音開きタイプ(アメリカの家庭によくあるタイプ)ですね。
当時のこのZIPELは、取っ手に工夫がなされていて、ヒンジのようになっていました。
引っ張るとテコの原理により、軽い力で少し空きます。冷蔵庫はこの最初の密閉から開くのに力が一番かかるところです。
ここが軽くなるように工夫されていました。
ですが、この後のZIPELは単純に引っ張るタイプなので、結構力がいります。(私は体重100Kgほどあるのですが・・・)

東芝のように、電動で開くというのもいいんですけれどね。

この「冷蔵庫はこの最初の密閉から開くのに力が一番かかるところ」ですが、なんとドイツBLUM社ではこの最初の部分だけ電動というタイプの「押し出す電動金具」がありました。
雰囲気としては、高級システムキッチンの壁面収納で、壁面に冷蔵庫を組み込む、という用途で、そのドア(壁面)を軽く押すと「フッ」と壁が少し開くので、その隙間から手で開くというものです。
ちなみに、blumはドイツのメーカーなのですが、そのプロモーションビデオに出てくる壁面収納対応の冷蔵庫は「LG」製でした・・・
日本が設置型にこだわる一方で、韓国勢は次世代型を模索して市場を広げているようです。(とっくに)
日本もそうですが、高品質なものを作る人と、「何を作ってほしい」と考える人は別部門なのと同様で、その「何を作ってほしい」と考える人に柔軟な思考の人が多い、というのが残念ながら韓国メーカーのヨーロッパ・アメリカ担当部門の人たちなのでしょう。

ちなみに金具ですが、YouTubeで「blum SERVO-DRIVE」にて検索すると結構出てきます。
しかも個人で、今ある家具や壁面収納のものを電動化できるキット!!!として、わかりやすい組み込み方の動画まで用意されているというものです。
家具・キッチンに興味のある方でしたら、結構衝撃的なものなので、見てみる価値はあると思います。

日本ではDIYのように後から組み込む分には国の認証とか不要ですので、このBLIMの引き出し用のが1種類だけですが、
『実はIKEAで普通に買えてしまう』のは内緒です。
https://www.ikea.com/jp/ja/catalog/products/70238701/
UTRUSTA ウートルスタ
電動プッシュオープナー
\ 9,900
商品番号: 702.387.01
軽くタッチするだけで、扉や引き出しが自動で開閉します。ゴミ箱のふたを開けたいのに両手がふさがっている、そんなときに特に便利です



日本の輸入代理店に聞いたのですが、日本では法令の関係で電動を組み込むと国からの認証をもらわないと販売不可のようで、結局販売できていないようです。

RealVNCなどで日本語系のキーを通すコツ

無変換や変換・半角/全角といったキーを英語圏VNCサーバ・クライアント間で通す(使えるようにする)コツです。
AutoHotkeyというマクロ系の常駐ソフトを使うことで、以下の概要で簡単にできます。
具体的には
1.クライアントでVNC利用中のとき
2.「変換」キーを押されたら(押しっぱなしではなく・・・)
3.クライアント側では「Ctrl+Shift+F12」を押したことにする(AutoHotkeyでSend,+^{F12})
4.VNC英語圏であっても、「Ctrl+Shift+F12」であればそのままサーバへと送られます。
5.サーバ側のAutoHotkeyでは「Ctrl+Shift+F12」が押されたら(受信したら?)、「変換」キーを押したことにします。

もちろん、クライアントやサーバ内は日本語OSなので、AutoHotkeyが発生させる「変換」キーのキーコードは正しく動作する、というものです。

また、「Ctrl+Shift+F12」は【まず使わない組み合わせ】だろう、ということで設定していますが、ATOKなどで使うケースがあるので、そのときは「Ctrl+Shift+F12」を変えるか、ATOKのキー設定を変えるか、どちらかになると思います。

デスクトップ上のアイコンを選択状態にする方法

表題の通りですが、なかなか方法を編み出すことが難しかったので、AutoHotkeyスクリプトでできたので、以下に記載しておきます。
アプリが終了したら、特定のアイコンが選択状態になっている、という目的で呼出すといい感じ、という用途です。

EXE化して、引数にアイコン名(デスクトップ上に表示されているファイル名)を渡してください。



;
; ClickDeskIcon.ahk
;
; 引数はデスクトップ上で選択状態にしたいファイル(アイコン)名
; 引数の対象となるファイルがクリック可能状態なら「左クリックをして」選択状態にします。
; それ以外のケース(上にウインドウが存在して隠れている等)では、何もしません。(瞬間的にカーソルが動きましますが)
; 2018.1.22 koga2020
; 2018.1.23 get_ClickIconOnDesktopのXとYの値をglobal変数への代入から、ByRef引数方式へと変えた



ArgCount=%0%
if(ArgCount==0)
{
Msgbox, 引数はデスクトップ上で選択状態にしたいファイル(アイコン)名`n引数の対象となるファイルがクリック可能状態なら「左クリックをして」選択状態にします。`nそれ以外のケース(上にウインドウが存在して隠れている等)では`n何もしません。(瞬間的にカーソルが動きましますが)
ExitApp
}



Sleep,200 ; このahkの起動元が終了して(ウインドウが消える時間を加味して)デスクトップが表示されるまでのウェイトとして、0.2秒待ちます。(環境に応じて変える箇所です。)



ToClickIconName_on_Desktop = %1%
ret:=get_ClickIconOnDesktop(ToClickIconName_on_Desktop, click_X, click_Y)

if(ret==0) ; デスクトップ上に引数名のアイコンが存在して無かったケース
{
ExitApp
}

;
; デスクトップ上に引数名のアイコンが存在していたケース(他のウインドウに隠れて見えないケースを含む) 
;
CoordMode, Mouse, Screen
MouseGetPos, MOTO_posX, MOTO_posY
MouseMove, click_X, click_Y, 0
;Sleep, 10
tmp_is_MouseOnDesktop:=is_MouseOnDesktop() ; マウスカーソル位置がデスクトップ上の見える位置なら 1。(他のウィンドウで隠れているような状態であれば 0)
if(tmp_is_MouseOnDesktop==0)
{
MouseMove, MOTO_posX, MOTO_posY, 0
ExitApp
}

;
;msgbox, 指定アイコン名はデスクトップ上の見える位置にあります。
;
MouseClick, Left, %click_X%, %click_Y%, ,0 ; VNC経由なので CLICK では【ズレ】が生じるケースがあり、ドラッグドロップとなってしまうケースもあるので注意!

ExitApp





is_MouseOnDesktop() ; マウスカーソル位置がデスクトップ上なら1。(他のウィンドウ上などであれば0)
{
MouseGetPos, , , OutputVarWin, OutputVarControl,

exe_list =
WinGet, list, list
Loop %list%
{
WinGet, tmp_exeName, ProcessName, % "ahk_id " . list%A_Index%
IfNotInString, exe_list, %tmp_exeName%`n
{
tmp_ahkid_text=list%A_Index%
tmp_ahkid:=%tmp_ahkid_text%
;msgbox, tmp_ahkid_text:%tmp_ahkid_text% tmp_ahkid:%tmp_ahkid% OutputVarWin:%OutputVarWin%
if(OutputVarWin==tmp_ahkid)
{
if(tmp_exeName=="Explorer.EXE")
{
;msgbox, tmp_exeName:%tmp_exeName%
WinGet, tmp_Style, Style, % "ahk_id " . list%A_Index%
;msgbox, tmp_Style:%tmp_Style%
if(tmp_Style==0x96000000) ; エクスプローラー上か、デスクトップ上かでの判別(暫定だが、これで大丈夫そう)
{
;msgbox, デスクトップ
return 1
}
}
return 0
}
}
}
return 0
}



get_ClickIconOnDesktop(NameOfIcon, ByRef ref_click_X, ByRef ref_click_Y) ; デスクトップ上のファイル(アイコン)名の座標を ref_click_X ref_click_Y にセットします。対象ファイルがあれば 1 を、無ければ 0 を返します。
{
Critical
static MEM_COMMIT := 0x1000, PAGE_READWRITE := 0x04, MEM_RELEASE := 0x8000
static LVM_GETITEMPOSITION := 0x00001010, LVM_SETITEMPOSITION := 0x0000100F, WM_SETREDRAW := 0x000B

ControlGet, hwWindow, HWND,, SysListView321, ahk_class Progman
if !hwWindow ; #D mode
ControlGet, hwWindow, HWND,, SysListView321, A
IfWinExist ahk_id %hwWindow% ; last-found window set
WinGet, iProcessID, PID
hProcess := DllCall("OpenProcess" , "UInt", 0x438 ; PROCESS-OPERATION|READ|WRITE|QUERY_INFORMATION
, "Int", FALSE ; inherit = false
, "UInt", iProcessID)
if hwWindow and hProcess
{
ControlGet, list, list,Col1
{
VarSetCapacity(iCoord, 8)
pItemCoord := DllCall("VirtualAllocEx", "UInt", hProcess, "UInt", 0, "UInt", 8, "UInt", MEM_COMMIT, "UInt", PAGE_READWRITE)
Loop, Parse, list, `n
{
if(A_LoopField==NameOfIcon)
{
SendMessage, %LVM_GETITEMPOSITION%, % A_Index-1, %pItemCoord%
DllCall("ReadProcessMemory", "UInt", hProcess, "UInt", pItemCoord, "UInt", &iCoord, "UInt", 8, "UIntP", cbReadWritten)
ret .= A_LoopField ":" (NumGet(iCoord) & 0xFFFF) | ((Numget(iCoord, 4) & 0xFFFF) << 16) "`n"
THE_X_COORD := NumGet(iCoord,"Int")
THE_Y_COORD := Numget(iCoord, 4,"Int")
DllCall("VirtualFreeEx", "UInt", hProcess, "UInt", pItemCoord, "UInt", 0, "UInt", MEM_RELEASE)
;msgbox, %A_LoopField% X:%THE_X_COORD% Y:%THE_Y_COORD%
ref_click_X:=THE_X_COORD+10
ref_click_Y:=THE_Y_COORD+10

DllCall("CloseHandle", "UInt", hProcess)
return 1
}
}
}
}
DllCall("CloseHandle", "UInt", hProcess)
return 0
}