へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)! #vZkt8fc6J

ふつうのプログラマだけど、いまさらITパスポート試験を受けてきたのでいろいろ感想とか書きます

初期能力

  • プログラミング歴3年
  • プログラマ歴3年
  • 稀にいろいろ勉強した結果身についた知識(ブログの記事とかGitHubとか見てくれるとどんなことやってるか少しわかります▂▅▇█▓▒░('ω')░▒▓█▇▅▂)

なぜ受けようと思ったのか

  • たまに高校生にプログラミングを教える機会があって、「ITパスポートあるといいよ〜」とか言ってるくせにITパスポート受けたこともないし問題すら見たこともなかったし、酷すぎかって思ったので
  • あと10/15に応用情報技術者試験を受けようと思ったので、その前座として
  • ひまつぶし

勉強前のぼくのメンタリティ

  • まあITパスポートくらい楽勝でしょw
  • 合格率どのくらいかな?→48.1% ( ˘⊖˘) 。o(あれ?意外と低いな)
  • 万が一落ちたら恥ずかしいし参考書買って勉強するぞ!!!

勉強中のぼくのメンタリティ

  • ( :3) ×)〆 ~~~

勉強時間と勉強内容

  • 06/25(日) TOEICの試験も終わったし意気揚々と勉強し始めた。↓の本を読むだけのかんたんなお仕事。1時間くらい読んで飽きた。
  • 06/26(月) 30分くらい読んだ
  • 06/27(火) 会社のリリースで忙しくてそれどころじゃなかったけど5分くらい読んで寝た(なおニコニコ動画を2時間見てた模様)
  • 06/28(水) 連日の作業で疲れてたので勉強できなくてもしょうがないなと思いとりあえず5分読んで、勉強したという結果をでっちあげた
  • 06/29(木) あんまり疲れてなかったけど、「昨日も一昨日も勉強時間5分だったし流れで今日も」って感じで5分だけ読んだ
  • 06/30(金) 読んでて気がついたら1時間くらい経ってて、達成感に満ち溢れ寝た。
  • 07/01(土) さすがにまずいと思い4時間くらい読んだ(読み終わる)
  • 07/02(日) 早起きして過去問を1期分だけ解く。↓の本に載ってた問題が多くて萎える。30分ぐらいで全部一通り解き、900点/1000点だった。これは問題ないなと思い、見直し後お昼寝し、試験会場へ移動する。860点で合格

(合格証書とかは割とあとで送られてくるらしい。)

↓読んでた本
www.amazon.co.jp

本の感想はAmazonのレビューに書きました( 'ω')かなりの良書だと思います。ぼく基本amazonのレビュー星1とか2ばっかつけるけどこれは5にしました。

↓過去問はコッチ
https://www.amazon.co.jp/gp/product/4865102396/

なんかこの過去問の本に対策がどーのこーの書いてあるけどそっちは全く読んでないです。てか読んでもおもしろくなさそうだった。
付録のDVDにWindows専用の過去問プログラムが入っているので、それをインストールすると過去問が解けます。
これ結構いいアプリケーションだと思います。コスパ高し。

家にWindowsがあって本当によかった。


試験の所見

試験時間は120分なんだけど、40分で解いて退場したった(じまん)

どうせ見直ししてもどれが合ってるか確認できないし、さすがに合格はしてるでしょ!みたいな感じで終えた。
他の人がまだせっせと解いてる中を華麗に帰る、っていうのがやりたくて資格受けてるみたいなとこある。最悪か。

結果は総合860点。ストラテジ系もマネジメント系もテクノロジ系も全部800点台だった(820/880/825でした。なぜテクノロジ系が低いのだ……)。
結構間違えてて、「うわああああいっぱい間違えてるうううう▂▅▇█▓▒░('ω')░▒▓█▇▅▂」ってなった。

ちなみに合格って言ってるけど、経済産業大臣が認定するまでは合格じゃないので、名目上はまだ合格してない。

「試験で6割取るだけ」って考えれば、あんまり理解して無くてもできるだろうし、マグレで多少当たるだろうから簡単だけど、満点取ろうとして全部やろうとするとふつうにむずかしい。個人的に勉強時間が足りなかったと思う。憶測で工数を定義して、1週間前に勉強やり始めたのがバカだった。
ちゃんと勉強のタイムマネジメントして、スケジュール組んでから試験の申込みをするべきだと思った。
まさにプロジェクトマネジメントの失敗と言えそうだ。

ITパスポートの統計情報を調べたら、850点以上は全体で見ると1.4%(偏差値で言うと72〜76)、900点以上は0.4%(偏差値76〜84)らしい。
IT系の社会人は、平成28年度に11,428人も受けておきながら77人(0.6%)しか9割取れてないっぽい。
まあだからなんだって話だけど……ITパスポートだって全然バカにできないんだなあって思った。

試験内容に関して思ったこと

ITとか関係なく、何にも知識がなくても、国語+算数の問題みたいな感じの問題がちょこちょこあって、無勉でもこういうのは取れちゃうからダメでしょって思った。
あと問題に書いてある単語から、よくわかってなくても「なんとなくこれっぽい」とかで当たるやつとかも結構あった。選択式問題の限界が垣間見えた(#^ω^)
(ま、まあぼくはわかってたけどね!ほんとだよ)

テクノロジ系の問題に関しては、まあ当然というか、パッパッと解いていけた。「問題見る→答えこれやん→次」みたいな感じで解けた。
ただしセキュリティのへんは「ほわっ?」ってなってたりしてた。
セキュリティ関連の問題が多すぎる。

勉強についての感想

テクノロジ系でも
「うわこれそういうことやったんか……なんで知らなかったんだ……死にたい」みたいな知識が割とあって、いろいろ為になった。
あとは実践で身につけた「たぶんこういうことだろうな〜〜」っていう知識を確定させることができて「やっぱそうだったんか!」とか「微妙にちがったのか」とかわかったのがよかった。
広く浅く手をつけれたので、今後の基礎としてだいじに知識を保全しておきたい。

ぼくが勤めている会社はベンチャーなので、
ストラテジ系も、経営陣が考えていること・経営陣が考えたいこと・会社が目指していること・会社がやらなきゃいけないこと等推測しやすくなって、そのへんのコミュニケーションが円滑に進みそうな感じがした。
問題作った人はちゃんとそういうの考えて作ってたんだなあすごいなあって思った。

プログラマって言っても、こういう経営的な部分や法律・事務・経理部分を知っておくと「この部分の実装は、やるとプログラムが最悪な形になるけど、"政治的"な意味からやる必要がある」っていう認識ができるようになって
知らない場合は「やりたくないけど、やれって言われたから仕方なくやる」ってなってモチベーションだだ下がりなとこから
「やりたくないけど、やらないと会社が困ったりお金が入ってこなかったりするから仕方なくやる」というように、「なぜやらなきゃいけないか」が明確になって、モチベーションが下がりにくくなって問題解決の幅が広がりそうだった。

マネジメント系では
「こんな図書いたことないし、使わなそうだな」っていうのもあれば、「これは情報整理するのに使えそうだな」「Redmineもうちょっと使いこなしてみるか」っていう気分になった。
そもそもプログラミングで解決しなくていい問題・やらなくていい仕事の発見とかできそうで、良さそうだった。
暇なときにPMBOKわりとマジメに勉強しておいて、ひそかに会社に導入してみたい。

あとは、正直ストラテジ系の知識は業務やっててもなかなか身につかないし、マネジメント系の知識も能動的に調べないと手に入らないから、今後このへんも留意して、ふつうの勉強していきたい。

まとめ

受けてよかった⊂( ・∀・) 彡

Mac + Chromeで、Alt+ClickするとHTMLファイルとかをダウンロードしてしまってうざい問題の解決(disable alt+click on Chrome)

AltあるいはOptionキーを押しながらクリックするとダウンロードが始まってうざいのでなんとかした

概要

  • Karabinerを使う
  • AltキーをCtrlキーにRemap(割当て)する

詳細

Karabinerは、キーの割当てをしてくれるツール。
いまのところタダの模様。
全然詳しく知らないので、知りたい方はググってください。

Karabinerの設定(Preference)から、「Open private.xml」をクリック。とにかくこのprivate.xmlを編集できればいい。
f:id:haruharu1:20170614135954p:plain

private.htmlを以下のように編集。
Chromeのときだけ、AltをCtrlに割り当てるだけのかんたんなXMLファイル

<?xml version="1.0"?>
<root>
    <appdef>
        <appname>Chrome</appname>
        <equal>com.google.Chrome</equal>
    </appdef>
    <item>
        <name>Chrome</name>
        <identifier>private.appdef</identifier>
        <only>Chrome</only>
        <autogen>__KeyToKey__ KeyCode::OPTION_L, KeyCode::CONTROL_L</autogen>
    </item>
</root>

Chrome以外にも使えて汎用性高くて便利。

編集後は「Reload xml」と、「□Chrome」をチェックして「☑Chrome」にすることもお忘れなく
f:id:haruharu1:20170614140136p:plain

ぼくの環境はこれでいけたけど、いけない人はcom.google.Chromeのとこが違ってたりする可能性もあるかも。

追記

Altかえたせいでコンソール開けなかったので、コンソールのキーをCtrl + Command + Jに割当した
f:id:haruharu1:20170616122502p:plain
f:id:haruharu1:20170616122518p:plain

AWSでEC2のCPU使用率が100%になってSSHログインできなくなった場合の1つの対処法

gunicornというPython WSGI HTTP Serverがあって、それのワーカー数は、通常1とか3、多くてもまぁ10くらいにするんだけど
ノリで誤って3000にして再起動してしまい、当然ながらくっそ重くなった。

「重くなったワロス」と思っていたのだが、CPU使用率がほぼずっと100%になり、SSHログインができなくなった。

$ ssh [target-ec2-instance]

をやると、Operation Timed outが出続ける状態。

とりあえず本番サーバではないので、焦ることもなく、数時間放置したらなんとかなってるといいなと祈ったのだが、当然のようになんともなってなかったので改善することに。


ひとまずAWSで再起動をかけたのだが、何も変化しない。このへんで焦り始める。
その後いろいろググってここが一番マシだった。

https://forums.aws.amazon.com/message.jspa?messageID=678388

ここで、Have you tried restarting or stop/starting your instance?と書いてあったので、restartなんてとっくにしたわボケという思いを抱きながらも、restartとstop/startって変わんねえよなと思いつつも「まあとりあえずやってみるか」と考えを改めて、EC2を停止してみることに。

停止するとEC2についてるVPCへのClassic Linkとかは剥奪されるよとか出てきたので、わざわざ剥奪しなくてもいいじゃんと思いつつも了承。
VPC外にあるEC2から、VPC内に入っているRDSに接続したいのでこのClassic Linkとかいうのを使っている)

stopすると、しっかり停止しはじめる。

全然restartと挙動違うやん……と悪態をつくも無事前進したのでホッと一息。

みなさんもRestartがうまくいかない場合はStop and Startをしましょう。

EC2がStoppedになったのを見て再起動。わくわくしながら見守る。

再起動が終わったあと

$ ssh [target-ec2-instance]

をしてみたのだが、状況変わらず。ふぁ?と思ったので、とりあえず、1万回ぐらいSSHログインさせることに。

たとえCPU使用率が高くても、たくさんやれば1回ぐらいは成功してくれるだろ!!!!!!!的なノリ。
戦いは数だよ

あと、~/.ssh/configで、ServerAliveInterval 12000 ぐらいにして(なんのいみもなかった)

$ for i in `seq 100`; do ssh [target-ec2-instance] "sudo lsof -i:8000 | awk '{print \$2}' | xargs -n 1 sudo kill -9"; done

(この'{print \$2}'の、$の前の\大事。ここで時間食った。)
これを100ウィンドウで同時実行。

しかしなにもおこらない。

えーまだCPU使用率高いのかな?これ詰んだなと思ってEC2のモニタリングを見に行くと、CPU使用率がほぼ0%になっている。

そしてよくみるとElastic IPが外れていた。そりゃ失敗するわ。
インスタンスを停止するとElastic IPも外れるんですね(白目)
しらなかったナァ。ぼくの1時間を返せ。だいたいこんだけで1時間も使ってるとか死にたい。

Elastic IPをつけ直してSSHログインすることに。

SSHログインはできるようになった。ばんじゃーい。

早速おばかなコードを直してサーバを再起動。ちなみに再起動時に1万回SSHログインするやつが処理を邪魔してたので全部killした。

Classic Linkもつなぎ直す

サーバが立ったのを確認してURLを入力して接続するもつながらない。
「ははーんElastic ロードバランサーだな?お前もStopのときにやられたクチか?」とあたりをつける。
(学習能力高い)

案の定OutOfServiceになっていたのでインスタンスの付け直し。InServiceになる。

これでDone。やっふぉおおおおお!


適当にサーバいじると困ることの典型例でした。
ワーカー数3000ってなんだよ……サーバ死んで当たり前だろ……
わかってしまえば簡単な対処法だった。わからなかったのはたぶんノイズが多すぎたせい。



あとAWSのElasticっていうのようやく意味わかった。
あれは普通はElasticじゃないもの(サーバとかロードバランサとかIPアドレスとか)をElasticにしてるから、Elasticってついてるんですね。エラーが出やすい(Errostic)とかじゃなくて。
だからEC2は、Computer + Elasticみたいに考えればよくて、ElasticなところをAWSで管理できる!マジ最高!ってことなわけで、それでみんなAWS使ってるんやでって感じなんですね。

なに当たり前なこと言ってんだって話だけど、でもこれわかってないと、Computer部分がおかしいのかElastic部分がおかしいのかがわからなくて、わからなすぎてハゲる状態になるので、明確にピンと来たのよかった。
だいたいComputerが悪いんだけど、Computer知らないとElasticでComputer部分が覆い隠されてしまうので、最終的にEC2が悪そうに見えるという感じ。

でもAWSはComputer部分に関しては何も悪くない。AWSマジ偉すてぃっく。

もぅマヂ無理。インフラ勉強しよ…

※書くのがめんどくさいのでEC2インスタンスのこともEC2、RDSインスタンスのこともRDSって言ってます。EC2って書いてあるのがEC2というサービスかEC2インスタンスのどちらかなのかは、文脈で判断してください。

Amazonのマーケットプレイスはトラブルが多い

マーケットプレイスはトラブルの巣窟

Amazonマーケットプレイスではトラブルが多い。

無保証・返品・初期不良・不達・詐欺

普通の人にとって、Amazonで「トラブルが多い」というのは、信じがたいことだと感じられるかもしれないけれど、Amazon厨にとっては純然真実本間にそれなの明白事実なのである。

ポチッと押すだけの購入に潜むリスク

なぜなら、出品者たちは95%程度の良い評価をもらっている人が多いからだ。
これは低い評価である。
(ただし、3人からの評価で100%と、100人からの評価で96%と、10000人からの評価で95%では、明らかに10000人から評価されている方が良い。それにもちろん、購入したあと特に不満がなければ出品者を評価しない人々が大半だと思うので、実際にはもう少し評価は高いのだろうけど。)

95%評価の出品者から購入するのはリスクだ。言うならばささやかな冒険である。

1回だけなら死ななくとも、10回購入すれば、40%の評価の出品者から1つ購入するのと変わりないわけだ。
戦車が長弓兵に勝つ確率が99.8%でも、あっけなく戦車が惨敗することなどままあるかのごとく、低確率も積み重なれば、しっかり顔を出してくるものだ。

95%の評価を仮になんやかんやと水増しして98%の評価だと仮定しても、やはり幾度となく買いまくれば何がしかの何かしらの不良品を掴まされたり返品の事態に陥ったりする。

今までに僕が遭遇したのは、以下のよう。一部結構昔のものも含まれるので現在ではレア遭遇のものもある。

  • 別の商品が届いた(その後連絡したら購入した商品が届いた。別の商品については返品しなくていいよと言われたのでもらった)
  • 初期不良
  • 配達完了になってるのに配達されてない
  • 完全に不良品をつかまされた
  • 送られてないのに送ったと言い張られ返金もされない
  • 2ヶ月後ぐらいに商品が届く(既に返金されたあとだったので、「商品今頃届いたんですが」と連絡したのだが、返さなくていいと言われた)

いまのところ、Amazon発送で来た荷物は、しっかり配達されている。
Amazon発送といっても、マーケットプレイスのものは不良品であることがたまにある。特に相場よりかなり安いものについて。


変な商品を掴まされたりする場合のダメージは、鼻からミミズが出るほど大きい。

トラブル時の悲しみ

普通は、とどいた→やったー!
となるだけなのだが、

異常時は、とどいた→なんじゃこりゃ→金銭的にも精神的にも苦痛を負う→解決のために何らかの手段を取る必要がある(面倒・時給換算するとマイナスになることも)→必要であれば再購入
となる。

なまじ届くのを期待していた分相当面倒くさい。単なるマイナスではなく、気分が+10から-30ぐらいになるため、実質-40ぐらいの感覚になる。
500円だとか2000円のものだと、返品をするなどの労力をかける割に得られるものが少ない。
特にぼくは、お金よりも「やられた!」という気持ちや「めんどくさい」という気持ちが強いので、かなり悲しい。

そして面倒なことをやり終わったとしても、誰も得しない。復讐が何も生まないように。

悪いのは誰か。これは誰かというわけではなく、ごく一部の邪悪な人間の悪意を除けば、システムによるものである。
そういうわけで、Amazon厨はkonozamaを受ける前にこのAmazon系に対し、アマゾネスする必要があるのである。

How to アマゾネス

高い買い物はあまりAmazonでしないほうがいい。
Amazonで高い買い物をしないほうがいい」というよりは、「出品者から買う」という認識を強く持つ必要がある。
「この商品はAmazonにあって、安い」よりも「この商品をある出品者が安くAmazonに出しているから、安い」の方が本質を的確に表している。
Amazonは場を提供しているだけで、僕たちは謎の会社から買っていることが多いのだ。

「ほーん、そんなことわかっとるよ」という人の中にさえ、実際、もし彼がほんとうに少しもAmazonから買ってなかったとしても、Amazonで買ったんだ」と言うだけでAmazonでどこどこから買ったんだ」と言える人は多くなさそうだ。

一般的な買い物では「買う場」と「売り手の場所」が一致しているから、勘違いするのだろう。
事実、ヨドバシでヨドバシから買ったなんて誰も言わない。言うやつは変だ。
でも、サイバー空間では、買う場が売り手を決めない。
そういうわけで、家電製品やガジェットなどは、Amazonで安いからといって買うとめんどくさいことになりそうだ。

もちろん言うまでもなく、何の対策もしなくてもトラブルにはならないことの方が多い。

マーケットプレイスではいつでもトラブルに遭うとか、出品者は悪い人やバカだとかいうのは僕の意見ではないし、
たとえ出品者がものすごい善人だろうが、何度も購入していれば必然的にトラブルに遭遇するというだけの話で、マーケットプレイスでは、その確率が意外と高いということだ。
これを多いか少ないかのどちらかでみなすには個人の経験が依られ、運のいい人の中には少ない人もいるだろう。でもそれは僕にとってはただひたすらに羨ましいだけだ。

トラブルとの遭遇は局所的に見れば出品者や運送業者が悪いのだが、大局的に見れば自分にも、リスク回避の策を選べたのに選ばなかったという悪い點があるのだ。

そしてやれあーだこーだ、どーだいーだと文句を垂れるのだ。まあ、それは僕のことなんだけど。

ちなみに、メルカリやヤフオクなどはどうなんだという話だけれど、そっちはこれよりも外で、個人が誰でも、という点で、便利かつ安く売買できる反面、リスクに関してはAmazonより酷いだろう。
酷いというのは、トラブル遭遇率が高いの意であって、商品や運営が酷いだとかそういったことは、この話の論旨にはない。いま話しているのはリスクが高いということである。
謎個人は謎会社よりもっともっと信用できないと僕は思っているので使っていないから、実際のところどうなのかはわからないけれど。

Amazonは意外にも参入障壁が高く、トラブルを起こすとAmazon運営が出品者をボコボコにすることがあるので、しょーもなさすぎる個人は排除される、とシンパの僕は勝手にそうみなしている。

まあ閑話休題、システムがパーフェクトでない以上、そういったトラブルを面倒だと感じる人は対策を打つべしである。

長々といらんことを書いたのだが、このリスクを回避する方法は簡単で、金の力で殴るだけである。

  • 直接買えるならなるべく直接買う
  • Amazon本体から買う
  • 公式サイトで購入できるならあえてAmazonを選ばずそっちで買う
  • 謎ガジェットは買わない
  • 謎安さのものは買わない
  • 謎会社から買わない(特に保証が必要なもの)
  • しかたなくマーケットプレイスを使用する場合はなるべくAmazonから発送のものを選ぶ
  • マーケットプレイスを利用する場合は、なるべく値段で選ばない。多少高かろうが評価で選ぶ。95%を10連続と、98%を10連続、99%を10連続では、それぞれ40%、18%、9%になる。
  • 本はどうしても紙の本でほしいのでなければなるべくKindleで買う
  • 嫌な目に遭ったら、低評価をつけて別のところから再購入(安い商品に固執するのは時間の無駄)

つまり、金持ちの買い方をすれば自然とリスクは減り、よりしあわせになる。

また、低評価をつけることは重要である。
これは人のためではなく、回り回って自分のためで、低評価の業者から買わない人間を増やし、彼らに、自分が使用していない別の業者を使わせるという手段である。
その業者はそのままでは売れないので今後は対応を良くせざるを得ないし、その業者から買わなかった人々が、別の業者の評価をすることにより、自分と僕が今後、役に立つのだ。

悪貨が良貨を駆逐する前に、悪貨を駆逐する必要があるのだ。

まあ別に絶対規則じゃなくて、僕が今後気をつけたいことを明文化しただけだから、他人にはどうでもよさげに見えるかもしれないけども。

まとめ

このリスク回避方法とは、いわば幸福のリスクヘッジである。
いや、なんだか幸福の科学みたいに聞こえてうさんくさいので、効用のリスクヘッジと言い換えよう。(「幸福の」という連体詞が一固有名詞を想起させるのは本当に楽天ヤフオクだと思うけどしかたがない)

経済学で効用という言葉があるのだが、これは「財を消費することによって得られるメリット」のことを示す。

ぼくがいう効用のリスクヘッジとは、「お金を投資することでマイナスの効用をなるべく低くして、結果的に効用を高くしよう」という概念をさしている。
一見、トラブル多発の場合と同じ効用を高価格で取得しているだけのように思えるが、トラブルが少なくなることによって、嫌な気持ちになり時間を使い下手をすると金すら失って残念な感じになる可能性も下がるのである。

ぶっちゃけて言うと「悲しいことが少なくなればもっと嬉しいはずだ」ということだ。

これはすごいすばらしいことだ。

20回注文して、1回悲しい目にあい1時間手間をかけるよりは、全ての商品に100円上乗せして買いトラブルなし、の方が断然お得だというわけだ。
僕は未来の僕を悲しませないために今日、お金を使う。そういうことが大事だったのだ。

そういうわけで、僕は今後Amazonをこういう目で見ていこうと思う。

また、システムに100%を求めることによって、こういったリスクヘッジに目がいかなくなるというリスクがあることも知ったので、今後はこれらに気をつけていき、最終的におのれヤマト運輸だと思った。

おわり(・ω・`)

恋愛の「軽い」と「重い」の違いについて。どれぐらいの重さならいいのか

はじめに

スーパーで買い物しおわったあとに「水重いなあ」と思ってたら、急に天啓のように答えが降って湧いてきたので共有しようかなと思いました。

結論から言いますと、

どれぐらいの重さがいいのかの答えは、
    貴様は日本語ができていないのだ

ということです。
ではその結論に至るまでの解説をします。

軽い人とは

恋愛において軽い人とは、まあ要は浮気する人です。
心変わりが激しい人で、いろんなものに手を出す人。
落ち着きがない。ふわふわな感じです。

だから軽い人です。

重い人とは

恋愛において重い人とは、一人に依存しまくる人です。
「自分がこれを提供するからあなたは代わりにこれを提供してね」という条件を提示してくるので、
相手にとっては、依存されすぎて重荷・重圧に感じてきます。

正反対っぽい説

これを一人に絞らない vs 一人に絞るのような構造で考えていると、一見これは真逆に見えます。
「軽くない人は重い人、重くない人は軽い人」のような、認知の歪みを生じさせるわけです。
だから「ほどよく軽く、ほどよく重い人が一番いい」などという馬鹿げた結論が出るわけです。

軽くない人とは

軽くない人とは、要は「いろんなものに手を出さず、一人に絞り込む人」です。
一言で言うと、誠実な人です。

ところで、「誠実な人=重い人」だとは考えにくいです。

なぜだろう!

重くない人とは

重くない人とは、要は「相手だけに頼らずに、自分でやっていける人」です。
一言で言うと、自立した人です。

なぜならば、依存の反対は自立だからです。

ところで、「自立した人=軽い人」ではないです。

「自立していて誠実な人」というのは両立します。
言い換えると、「全く軽くなく、全く重くない人」となりますが、これだと意味不明なので、こう言い換えます。

相手に真摯である気持ちは軽くなく、相手に依存する気持ちは重くない人

お、この表現ならだいぶ本質を示していますね。

軽い・重いの対象が違ったわけですね。ちょっと似てるから気付かなかったわけです。

軽くて重い人とは

こう考えてみると、軽くて重い人というのが見えてきます。

相手に真摯である気持ちは軽く、相手に依存する気持ちは重い人という人の存在です。

うわ、いるいる! こういうやつ!!!!!!!!!!!!!!! 最悪だ!!!!!!

というわけです。

結論

というわけで、日本語の省略による認知の歪みの一例を紹介しました。

なので「軽い人は嫌だったから重い人がいいな」とか「重すぎるとつらいから軽い人がいい」とかそういう風に考えるのはやめたほうがいいです。
「重いって言われた……軽くなればいいのか?」とかもよくないです。重いって言われるのは、依存しすぎなだけで、浮気したほうがいいよ!という意味じゃないです。

そういうわけで、この認知は、軽くて重い人たちが、自分の最悪なところを覆い隠すための罠だったのです。

気をつけてください!!!!!!!!!!!!!

そしてこれを全部まとめると、貴様は日本語ができていないのだということなのです。



というのを、スーパーの帰りにひらめいた。

おまけ

ググると、この件に関して日本人の大多数が気付いてない様子が伺えます。ぼくが第一人者!!!(`・ω・´)

f:id:haruharu1:20170225215334p:plainf:id:haruharu1:20170225215201p:plain
f:id:haruharu1:20170225215249p:plainf:id:haruharu1:20170225215254p:plain

reduxよくわかんなかったのでPythonでredux実装した

class createStore:
    """ほんとはシングルトンにしないといけないけどわかりづらくなるのでやめた

    関数にした場合は、Pythonだと "JavaScriptでは全然考えられてないローカルスコープ" で大変そうなのでクラスにした"""
    def __init__(self, reducer):
        self._state = None
        self._listeners = []
        self._reducer = reducer

    def subscribe(self, listener):
        self._listeners.append(listener)

        def unsubscribe(listener):
            self._listeners.remove(listener)

        return lambda: unsubscribe(listener)

    def dispatch(self, action):
        # Python特有の書き方
        if not self._state:
            self._state = self._reducer(action)
        else:
            self._state = self._reducer(action, self._state)
        # 特有の書き方ここまで
        for listener in self._listeners:
            listener()

    def getState(self):
        return self._state


# 実装ここまで(`・ω・´)
# あとは使い方だけ


# (state=0, action)という書き方はPythonではエラー
def counter(action, state=0):
    """いわゆるreducer。実際はこれをいっぱい書いてcombineReducersとかでまとめる"""

    # Pythonにはswitch文はない
    if action.type == "INCREMENT":
        return state + 1
    elif action.type == "DECREMENT":
        return state - 1
    else:
        return state


store = createStore(counter)


def printListener():
    """render()とかって名付けてReactDOM.render()呼べば幸せになれるリスナー"""
    print(store.getState())


store.subscribe(printListener)


# JSのObjectに相当するものをつくるだけ
class Action:
    def __init__(self, type, **kwargs):
        self.type = type
        for k, v in kwargs.items():
            setattr(self, k, v)

print("がんばるぞい!")
store.dispatch(Action(type="INCREMENT"))
store.dispatch(Action(type="INCREMENT"))
store.dispatch(Action(type="DECREMENT"))
store.dispatch(Action(type="DECREMENT"))
store.dispatch(Action(type="DECREMENT"))


# おまけ
def increment():
    """Action Creator"""
    return Action(type="INCREMENT")


store.dispatch(increment())
$ python3 redux.py
がんばるぞい!
1
2
1
0
-1
0

蛇足な解説

reduxって何するものなの?

状態を一元管理したい!!!!!!!!!
いろんなところに、いろんな状態が散らばってるの最悪だ!!!!!

だからなんとかしよう
ってやつ

reactとはどう関係するの?

作る動機がreact関連のFluxだっただけで、reactは関係ない

reactと連携するには?

react-redux とかいうのを使う
それはこのソースには入ってないので注意!

react-reduxっていっても、Providerと、connect関数しかないのでかんたん……かと思いきやよくわかんなかった
……(´・ω・`)

reduxのしくみ
  • storeというところでstateを一元管理
  • stateを変えるには、Actionを実行するしかない
  • Actionとは、stateを変更するために何を起こすのかを書いたJSのPlain Object(Plain Objectについて知らない人はググってください。lodashの中のソースがおすすめです)
  • Actionと、現在のstateから、どうstateを変更するのか(要はActionに書いたものの具体的な中身)を決めるのがReducer
store.dispatch(アクション)

こう書いてstore.dispatchすると、reducerに処理が委譲されて、storeの中のstateが変更される。

  • combineReducers()すると、reducerの関数名がstateのキーになる
  • storeに入ってるstateを取るにはstore.getState()すればいい
  • store.subscribe(リスナー)で、「stateが変更されたときに(詳しく言うとstore.dispatch関数が呼ばれたときに)呼びたい関数」を登録する

あとはオマケ

react-redux
  • store.subscribe(リスナー)の部分をconnect()という関数で隠蔽した。変更されたstateをpropsに渡してreactのレンダーまでしてくれるだけ(たぶん)

コメント

reduxはわかったけど、なんかまだもやもやってしてるので、react-reduxとか詳しい人や、プロジェクト走らせてる人から話がききたいです

ツイートをフィルターして見えなくするChrome拡張つくりました

目的

ぼくはTwitterの公式ページを普段使用しているんですが、

最近、キングコング西野とその絵本たちの話題がタイムラインにあがってきてて、まあ別にどうでもいいなと思ってたんですが、これに言及するツイートもタイムラインで増殖しはじめていて、全員不愉快だったのでフィルターしたくなったんですが、探してもいいエクステンションが見つからなかったので「自分でつくればいいや」と思ってつくりました。

どういうものなの?

こういうページがあって、『Iraqi』とかいう文字死んでもみたくないなと思ったら

f:id:haruharu1:20170122224148p:plain

こう入力して

f:id:haruharu1:20170122224136p:plain

見えなくしてしまうぜ!

f:id:haruharu1:20170122224214p:plain

というやつです。

インストール方法

ここからインストールしてください。

chrome.google.com

使い方

Google Chromeの右上にある『F』のマークをクリックします。

f:id:haruharu1:20170122222156p:plain

こんな感じで『オプション』と出るのでクリックします。

f:id:haruharu1:20170122222336p:plain

こういうページが出るので、『Input regex(JavaScript) here to filter tweets.』の欄にフィルターしたいテキストを入力してください。

f:id:haruharu1:20170122222636p:plain

書いたら『Save』ボタンを忘れずに押してください。

これで終わりです。

複数フィルターしたい!!

『|』で区切ると複数フィルターすることができます。半角スペースや全角スペースではないことに注意してください。

f:id:haruharu1:20170122222815p:plain

応用編

正規表現という書き方を使って、まとめることができます。

くわしい正規表現については公式のドキュメントを見てください。多少のプログラミングの知識があるとわかるかもしれません。

ドキュメント → 正規表現 - JavaScript | MDN

f:id:haruharu1:20170122222945p:plain

『Filter tests for text』で、ちゃんとフィルターできるかどうかチェックすることができます。ご活用ください。

f:id:haruharu1:20170122223419p:plain

バグ報告について

できればGitHubのissuesにあげてもらえると嬉しいかもですが、ここのコメントに書いてくださっても大丈夫です。 もっとできればBugFixしてからPR出してもらえると最高です(๑•̀ㅂ•́)و✧

ソースについて(開発者向け)

github.com

その他

  • Firefox向けに作る予定は一切ありません。