はてなキーワード: HAtenaとは
テキストの説明が理解できないとき、学習者がすべきなのは自身の理解を正すことであって、自己流の解釈を思い付くことではない。つまり、
といったことをすべきなのであって、自分の腑に落ちるQiitaの記事とかを探すことは、全く理解に近づいていない。むしろ遠ざかっている。
というか、「明らかに分からない用語などがあるのに、そこを回避して全体を理解しようとする」のは、プログラミングに限らず勉強法として根本的に間違っている。
かつて、どうしても「コメント」の意味が理解できない新人がいた。
要するに彼は、プログラムの処理に関係の無い機構が存在する意味が理解できなかったらしい。
「コメントは、コードでは表現できない実装の意図をソースコード中に記述するときに用います」
などと説明してみても、
... // 15の倍数を先に判定しないと、たとえば15がFizzになってしまう if (n % 15 == 0) { return "FizzBuzz"; } else if (n % 3 == 0) { return "Fizz"; ...
「コメントは、処理をコメントアウトしてデバッグするための機構である」
と言う結論に達したようだった。勿論、普通のプログラマなら誰でも知ってるように、そういう使い方は良くない。
「プログラミング言語のあらゆる機能が、プログラムの何らかの処理と対応している」
という誤ったメンタルモデルを正すことである。それを放棄して、自分にとって都合の良い出典不明の情報を鵜呑みにしたのが、そもそもの間違いである。
こういうことは、何も新人に限った話ではない。自分では一丁前のつもりのプログラマにも、ライブラリ等の全く見当違いな使い方をしてくる奴がよくいるのである。
そういうのは、自分の経験のある別の言語の○○という機能に対応している、と勝手に思い込んでいたり、あるいは、実装とセマンティクスの区別ができず、インタフェースのような処理と直接関係ない機能が理解できなかったりする。
要するに、不明点を正しく理解することを放棄して、自分に都合の良い解釈を得て早合点しているのである。
そういう人はプログラマには向いていない。
増田長文腐女子のほうが原液だから濃くてヒドくて面白いよ(宣伝)。
2chネタを商業化されてから原文の2ch読みにきてハマる人もいたのだから、そういう意味での存在意義はあるけどね。
・本文
私は「同人女の感情」をネットで全部読んだ同人女です。「わたしのジャンルに神がいます」もコンセプトカフェの帰りにアニメイトで買いました。最近角川は腐女子ネタ頑張ってるね。たしかつづいさんもだっけ。お布施がてら、私は知ってるけど家族にもよませるために買える絶妙な立ち位置の本うまいね最近の角川。(家族に読ませない本は電書が重くなくて楽)
増田にもそれに先んじてネット掲載の最終話のアンチの話がリツイート数がもりあがらなかったって投稿 anond:20201110232328 がブクマをあつめておりました。
盛り上がらなかったのは、私の見たところ単純に、冒頭で一度綾城本人でなく取り巻きの中島のアンチ?の話をやってて、繰り返しになっちゃったからかとおもいます。理由はどうあれ、神にとってどう対処しようもないことを目障りな行動とうけとめ嫉妬してアンチになる構造は同じです。
(実際は本当に作風があわない場合、アンチというより地雷になるケースがありますし、真田氏も最終話では最初そちらを狙ったのだけれど商業化のせいでそこまで踏み込まなかったのかもしれません。し、最初から再話になってでもアンチ感情を主題として繰り返し突き詰めたかったのかもしれません。)
また、書籍化にあたり綾城がどのように中島と付き合い出したか、その同人の最初期のようすが描き下ろしで追加されています。
私からみると、あ~まぁだいたいそんな感じですよねぇ、という人物造形です。特に絵師の場合は専門学校・芸大などで一緒だったとかいうつながりも多いし、めちゃくちゃ馴れ馴れしい取り巻きがおるとおもったら家族だったり幼馴染な場合も。
だから綾城と中島の間には神も生育歴をもつタダの人間である以上どうにも他人には割って入れないんですよね。嫉妬するだけ無駄だったんだよというネタバラシ(もちろん創作に情熱を落とし込めたことは彼女の今後の人生によい影響があることでしょう)。
表紙4だったか帯だったかの実家の猫写真といい、本人はあまり神の自覚がない、ごく普通の、一分野だけセンスがちょっといいだけの女性が綾城ですし取り巻きの意識のない仲良しさんが中島です。(そういえば、この自覚がないまま神に祭り上げられる同人書きの「嫉妬や信仰を勝手に向けられる気持ち悪さ」の吐露も増田記事でなら読めるよ!宣伝)
ところで角川は「同人女のクソデカ感情」を帯の惹句に使うことにしたようですが、クソデカ感情って一体なんだろと思ってしまいました。
感情って表出しないとなかったも同然のものなのですよね。登場人物はどの人物も最終的に同人創作に手を染めるくらいなので作品へのクソデカ感情はある。そしてその創作に至るきっかけの部分で、綾城の文に出会い、それを書いた「神」へのクソデカ感情ももつわけです。作品のみならずそれを解釈する先達への感情も表出しているってのが主題なわけです。ただし綾城「神」本人以外。神は創作するのですごい感情を持っているのですがそれを全部作品に昇華した上、真田氏はその創作を直接は書かないので神がどういう感情をもっているかは読者からは徹底的に隠されています。それがまずおかしいわけです。
結局、人は、創作か行動で表すかしか感情を表出できないし、他人からみても感情サイズをクソデカと計測できる部分はない。そして創作も行動もできない人のほうが世の中は多いわけです。
同人、それも文章でクソデカ? いやいやこんなものじゃないでしょう、って思うんですよね。
鬼滅のなんとかを見てたらわかるじゃないですか。普通の善良なおとうさんおかあさんが子供を喜ばせたい感情を動機に、同人女が欲しくても手を出さないよう自制しているまがいもの商品を買ってしまったり。出版社のえらいひとも混乱してわけのわからないものを独占商標として出願しようとしてあわてて取り下げたり。
プリミティブなだけに行動は繊細さがなくドカドカジャンルを踏み荒らしていく。それをみてもともとジャンルにいた人がジャンルが売れたと喜んだり、新規ファンが粗暴だ公式が横暴だと悲しんだり、繊細に毎日毎時間ツイッターを見ながら感情をうごかしていますが、そんなもの世間ではなかったも同然なんですよね。
世間のほうが同人女なんかよりクソデカ感情によるクソデカ行動をツイッターの外でやってるんですよ。やらかしですよ。
さらにいうと、人はファンである自分を自覚し始めるとクソデカ感情(? 「私腐女子だから」「オレオタクだから」)を動機に簡単に法を踏み越えるケースがあるし、ネットと創作がからむとより簡単にやれてしまいます。そんなもん合法○○マニュアルみたいなもので商業誌に出すわけにいかないですが、2話3話あたりの垢移動先突き止め作業なんか出版会議ですれすれだったんじゃないかなとおもいます。
その暴れん坊の感情面をいい感じに抽出してここまでが合法ですよという綱渡り創作としてはお仲間からみて、さじ加減が見事で面白いってのはあります。
ただし感情を創作行為になんとか落とし込めている人たちは本当にレアケース、くそエリートです。同人やってたらねほりんぱほりんに招かれた人くらいレアでエリートです。
実際は真田さんは絵かきですよね(文章書きと兼任する人も多いですしよく調べてますがちょっと違うなと思う部分も)。
絵かきより文かきは個性が表出しづらいです。読みやすさ追求により互いに似てくる傾向があり、二次創作を追求するだけのことでも非常にこじれやすいケースがあります。というか、どうしても同じキャラ同じ性格を下敷きにするので同じシチュが流行る。再話に再話を重ねてしまう。伏線を自分が発見したのに~なんて嫉妬するのはものすごく流行ってるジャンルだと全監視できるわけないんで無理なんですよね。てか実況ツイでみんな同時に同じようなこといいだしますよ。今日もフォロイーさんが今日嬉しくなってツイした「今日発見した伏線かもしれないフカヨミ」、一応ググったら2年前の過去ツイに同案が居らしたって落ち込んでらした。ジャンル10年、ミニジャンルでも5年以上超えるとまあ誰かがどこかで同じことをお考えですね。もはやだれが考えついたのか区別がつかないくらいみんなでツイのまな板にのせてこね回した共有幻想ですから二次創作で自分の個性を出すことってものすごく難しいですよ。
そういえば増田(anond)では同人盗作騒ぎについても興味深い腐女子長文投稿がありました(宣伝)
他にも人は様々な理由で同人を始め、心をへし折られ、敗れてジャンルをさります。
そういえば一時期、増田でマキシ丈云々とかやってたのなんか単なる容姿が原因ですもんね(宣伝)
真田さんのマンガに出てくるクソデカ感情女さんはピアスの似合うセミロング美人ばかり。(いやよく見ると髪型が一時期の少年漫画みたいなお方もいらっしゃいますし、綾城は法則の外にいます)
だから物理でいえば等速直線運動くらい初歩の初歩のモデルケースなんです。「ただし弾性率は100%、摩擦は0とする」みたいな。
もっと複雑化された人間模様とクソデカ感情がみたければ増田で腐女子長文とかうんことかついてるやつ読むとめちゃくちゃおもしろいですよ。「1年前から増田にきてください、本当のクソデカ感情ってやつをお見せしますよ」とおりすがりの山岡くんもこういうはず。
はてなもね、なぜかジャンルを去る腐女子がちょくちょく長文捨て台詞を落としに来るという利点を自覚してまとめて本でも出せばいいのに。
(q.hatenaで2冊も商業出版されたことがあるじゃないですか)(知らないの? きみはもしかしてはてな初心者?)
腐女子のクソデカ感情がみたければ増田も濃くて面白いんですよというお話でした。
ついでにorangestarさんの801ちゃんコミックもよろしくね。あれもいにしえの腐女子のクソデカ感情(びたーんびたーん)が本当におもしろいしはてなブログから同人版買えるからね(宣伝)
柳の下のどじょう
蓮舫氏が立民新ポスター発表「国籍を問わず、私たちが届けるあなた方の政治に変わりありません」(東スポWeb) - Yahoo!ニュース
https://b.hatena.ne.jp/entry/s/news.yahoo.co.jp/articles/01a6aeafc71b0edf84e1c054b424d8781feebf91
この記事のブコメにはてなスターを投げていたユーザーを集計したんだけども
リストAの21人のユーザーがリストBの15個のブコメにはてなスターを投げていたのが判明した
これらのユーザーは(このエントリーでは)他のブコメにははてなスターを投げていない
21人が全く同じ組み合わせの15個のブコメにはてなスターを投げている
いくらなんでもこれは偶然とは言えないだろ
このエントリーのブコメに投げられたはてなスターには他にも不自然な点はあったが
A. ユーザ…21人
B. ブコメ…15個
ご安全に
.:-. :+*+=*- .-**+---=#- .. .+*=-----=*#====+++++++++==-::. ..-=+++*= -*+-:.-=+*+=-:::.........::::-==+++#*=---:=%- :*==+*+=::.........................:-+**-...#= =*=**=:..............................:.:-++-.#+ =#*#=:.....................................:=*#%. :##+:.........................................-#%. *%+.................:=+-.....................:.:#= :#*:................:=*#+--......................:#: :%=................:+*###*+:.....................:++ .+*:..................-**=::.......................=#. -+++++++=. .:+*=-::::::::...........::::.........................=#. ::---:-#%. . . .--. .:-*#*++*******##*****++++======-------:::::::::::..:.=#: =######%%. +##*. . :%#. .=#=--------=+%*#%#+%*====::---=+++#%#%%%*+#%###*++**+##+: .::::::#*..====. .=%= :%- +#==--------+%+-@@#:+#=--: .--+%+:#@*..-%+----------+#*. =#******: .-==-..+%+. =*. -%=----------+%--%%+.:#+--. :-*%::%%+..:#=---------=-=%+. .:-+****+=:. .+++++*%= :+-. .#+=----------=***%%=--+=::. .. .-#+=##-..:=--==++++++==-#%+*%#*+=====+*#*+: ------: .:. =#=---========----==---: .--. .-=*#**+******++===+=-=%@#+==-------:..:+##-. .#*-=*###########**=:. .=*#*+==-----------+@#=--=----==--. .-*#=. .%+====-------====-=+=: =*: :-.=*---------------+@*---------::. .-*#=:. .%+=------------. ..-#= :+###=. .=##*++********+----+@+--------+###+. .-*####+: .#*--=---==--====+++=.-#*:..=#*=-=*#*=--=#*: ..:-======----+@+-----=*#=..:+#+. ..:+%*: =%=--------=*+-.. .=**#%*------=+##=:. .:----------#%=---=+%+. :*#- :##: .*%+=-----=--: ..+%+------=#: :---------=%#=--=#@@- :@*. :%*. .-=++++++*****+**+-+%*==------- .+%+-----#*. :---------*@+---+#*#%= -%- .#@. .*%*=-=-::..... ..=#-:+*=-=--=--. .-##+--#*: :-----=-=+%*=----=-=*%- -%= :##. .#%=:.. :#= :+**=----: .-***+. :-------+#%*=-=------=#%: .+#-. :. :*#: .=#%%*. .+%- :+**+=-: . .------+#%*=-----------+%*. .=##+%#=..:=*#+. :%*. :*%*: .-+#*-. .-=--=*#%*=--------------*@= .-+==*##*=:. =%- .:-**- :=+*%#**=:. .-==+#%#+=----------------=%#. -#+. .---====--=+*#**+=====++++++++++++++*###**+=-------------------=#%: :+#*=-::-=-: .:-------------===++***++++++====++=+++===-----:-----------------=*@+ .:-=+++==*#+-:.----------------=*#%#=------------------::.. .-=--------------+@* .:=+**#*++=---=--=+*#%*%%=----------::... .---------------+%* .:-+########%#=:. -@*--------.. :--------------=%* ..:--:. .#%=------. .--------------+%* *%=-----. .--------------+%* .#%=----: .-------------=+@+ .=@*=----. .--------------*%: .:=******##*****%*=-----. .-------------=##. .+#*+=========+++++=------. .-------------=%+ .##:.---------------------- .-------------+@- .%*.----------------------- .-------------##. .##:-----------------------. .------------+%+ =%=------------------------. .-------------*%*: .*%-------------=++==---=---. :-------------%#+*+: .+#::---------=%%*#%%#*+===-: .:------------:#@+--=**: .+%-.:------.:%#. .:-=+*#%##+=-:. ..-------------:=@#=----=**-. -#*:..:::. -#*:.. .:-=+*####**+========-----------:-%%=-------=+*=. .+#*-.. ..=*###+. ..:-==++***#%+---------:.*%#*=--------=+*+: .=##+: .+#- -@+--------..=@=.:+#+=-=------=*+-. -%#- .##. -@=.:----:. -%+ :=**==-------=+*+: .+%+. -%+ -@= :%+. .-**==--=----::+=: -%= -#*. =@- :##. :+*=-----:. :==: .*#. .+%+. .+%*. :##: .-++-.. :+=. +%: .-+#*: +%-. :#*. :=+-. .=+. .+#*+===+*#+-. -%+ .*%- .-*=. .*- .:=++=-. -@+ .=%- .:++:. .+: .##: .+%- :+*++*= -%*. -%+ -%*. :%* :*#=. =%= :+#*=-:-*%+ .:=+=+-.
炎上というのをどうイメージしているだろうか。現実の、キャンプで見る炎は、木材を燃料として燃える。しかし、ネット上での炎上は、その発端を燃料としていない。
ここで言いたいのは、この炎上に、炎上したたった一つの理由は存在しないということだ。
ここ数日で、「タイツの件が炎上した理由は...」のような記事に、「炎上した理由はそうではなくて、...したのが原因」のようなブコメがつき、そこに星が集まっているのを観測した。(下記2つ以外にも見かけたが忘れた)
b.hatena.ne.jp/entry/s/b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20201104101226 | [メタブ] 黒タイツ=エロいが常識になることの脅威、母親としての思い |
b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20201103224649 | 例の絵師先生ファンの女性だけどツラくて憂鬱 |
要は、炎が批判的意見の集合体の虚構であることは理解しているのに、それに自分が含まれていることを理解していない。「私はタイツが嫌いだから批判します」というような、訳がわからない意見もあなたの意見も、同等に炎上の一部だと理解しなければいけない。
タイトルの「お前はATSUGIが炎上した理由を理解できない」というのは何の煽りでもなく、本当に理解できないのだ。私にも理解はできないし、一つの答えなどない。真に理解したいなら、Twitterをはじめとするネット上のすべての批判意見に目を通す必要があるだろう。そのすべてが理由である。
ATSUGIのツイートを燃料にしているのは、炎上が始まる前にそのツイートに違和感を持ち、批判した人のみだ。その批判意見がリツイートされ、炎上状態になれば、第三者は炎上しているということを前提として、燃料と離れた空中から自然発火する。その意見は、炎上への後付けであるので、発端となった意見と関連はない。
狭義の「炎上した理由」というのなら、発端となった批判ツイートの内容と、それがツイートされてしまったこと自体が炎上の理由なのではないだろうか。
私も広告を担当すれば、炎上するかもしれないし、あなたもそう。
本当は全種類の意見をコンプリートして、分類もしたかったが、モチベーションが保てなかった。
誰か暇だったらやって。
※あくまで批判的な意見の多様性を示すためのものなので、内容は適当に要約している。
言った人 | 内容の要約 |
b.hatena.ne.jp/s194959/ | google検索してAVの女子高生レイプの画像がゴロゴロ出てくる社会ではダメだから。 |
b.hatena.ne.jp/brightsoda/ | おっぱいはエロという考えが広まり隠すようになったのと同じように、タイツもそうなる可能性があるから。 |
b.hatena.ne.jp/nekokujira/ | 安全性を脅かす様な広告出したから。 |
b.hatena.ne.jp/vndn/ | 「安全性を脅かすもの」ではなく「安全性が脅かされてることを明らかにしてしまったもの」だから。 |
b.hatena.ne.jp/tGsQqV/ | 変に性的でキモいあんなの手に取りたくない思う人も多かったから炎上した。 |
b.hatena.ne.jp/njgj/ | 性的なアピールをする側面もある女性と、性的にみる男性の棲み分けがなされなかったから炎上した。 |
twitter.com/okayuaa | ラブコメでありそうなイラストにしたのがまずい。女性向けのPRで谷間を出すのはまずい。ATSUGIの人は性癖と好みを出しすぎて失敗した。 |
togetter.com/id/Lafiell | 「萌え絵」は幅広い年代の女性をターゲットとする、日用品の広告としては不適切。 |
togetter.com/id/Lafiell | iPhoneの新型機種の発表会に水着姿のキャンギャルが登場して、新しいiPhoneにキスしてみせる、ようなものだから。 |
togetter.com/id/1WCzPF0jcLKan43 | 機能性や商品の説明が何もなかったというか、紹介する気ゼロな所も炎上した要因。 |
togetter.com/id/aro_wt | ATSUGIは「日用の肌着のメーカー」であり、「従来のATSUGIのイメージ」への配慮が足りなかったから。 |
togetter.com/id/mutsuko_themoon | 描かれてる女性が特定のキャラクターじゃなかったから。 |
togetter.com/id/Ldc_316 | 萌え絵に慣れてない一般の女性が見たらやっぱりキモイから。 |
togetter.com/id/cgpr4 | 「イラストがキモい、キモくない」ではなくて、 このイラストを「企業PRとして採用」したのが不適当。 |
togetter.com/id/bbs_teck_shye | 強烈なミスマッチを受け取って気持ち悪いと思った。 |
togetter.com/id/peipei999 | 性的で女性向けのキャンペーンには向かない絵だから。 |
togetter.com/id/bbs_teck_shye | アツギは“女性に向けたタイツの広告のイラスト”として出したことが問題。 |
togetter.com/id/da3_vx | 胸の谷間を強調しているもの、ローアングルのものは女性向けに広告として出てきたら嫌な気持ちになる。 |
togetter.com/id/FzzVk | スカートまくり上げやまんぐり返しを下着メーカーがツイート・RTするのは気持ち悪いと思われるのは妥当。 |
togetter.com/id/bbs_teck_shye | 日常の中で【タイツを着用する女性に訴求するような】とコンセプトを打ち出して絵師にオファーしなかったから。 |
twitter.com/GnNvIkekfPzP38x/status/1323551212587773953 | 性的なイラストが問題ではなく、男性目線のマーケティングをしたから。 |
twitter.com/kurodewa | 女の子にタイツを履かせて扇情的なポーズをさせたイラストを使って、「なにを」「どの層に」アピールしたかったのかが分からないから。 |
twitter.com/_wa______ | オタクと世間一般の感覚はだいぶズレているのが原因。 |
twitter.com/end_clash_dia/status/1323546792730918913 | 「尊い」「エモい」のような感情に、性的な意味合いが付随していることを担当者と絵師が理解していなかったから。 |
twitter.com/mahironoame | 広告が写真からイラストになった途端それは主体的でなくなってしまうから。 |
twitter.com/0721_gg | 女性が嫌悪感を示しただけ。 |
twitter.com/pecorino1512 | スカートたくし上げースカートの中の股見えてるーな「いかにも」エロの匂いするのは普通に「キモい」から。 |
twitter.com/MyoyoShinnyo/status/1323569829673017344 | 萌え絵の是非ではなく、本来の顧客層と違うニーズに広告を打ったのが原因。 |
b.hatena.ne.jp/nowa_s/ | 担当者がラフ段階での指示等も碌にせず、絵師に丸投げしたから。 |
twitter.com/scriptforus/status/1323827959346573313 | ATSUGI のタイツは日用品であって、セクシーランジェリーじゃないから。 |
function pair(psns) { var i = -1; var cnt = 0; var flg = psns[0] &amp;&amp; psns[0].sex; // modified on 2018-12-31 by XXXX // var flg psns[0].sex; var j = -1; var tmp = null; // modified on 2020-12-31 by XXXX. // var k = -1; for(i = 0; i < psns.length; i++) { //console.log('■■■■■■■■■■■■■■■■■■■■ BEGIN ■■■■■■■■■■■■■■■■■■■■') //console.log(psns, 'i=' + i, 'cnt=' + cnt, 'flg=' + flg); if(psns[i].sex == flg) { //console.log('cnt: ' + cnt + '->' + (cnt+1)); cnt++; } else { j = i - cnt + 1; // j = i - cnt; // j = i - cnt - 1; //console.log('swap ' + i + '<-->' + j); tmp = psns[j]; psns[j] = psns[i]; psns[i] = tmp; i = j - 1; // <- 理由は分からないが、i = jだと上手くいかない(by XXXX)。 cnt = 0; // flg = !flg; // これはなぜか上手くいかない (by XXXX) flg = flg == MALE ? FEMALE : MALE; while(j > 1) { if(psns[j].height < psns[j-2].height) { //console.log('swap ' + j + '<-->' + (j-2)); tmp = psns[j-2]; psns[j-2] = psns[j]; psns[j] = tmp; } j -= 2; } // modified on 2018-12-31 by XXXX. // //for(k = 0; k + 2 < j;) { // if(psns[k].height > psns[k+2].height) { // tmp = psns[k+2]; // psns[k+2] = psns[k]; // psns[k] = tmp; // } // k += 2; //} } //console.log(psns, 'i=' + i, 'cnt=' + cnt, 'flg=' + flg); //console.log('■■■■■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■■■■■') //console.log('') } for(i = 0; i < psns.length; i++) { //console.log('■■■■■■■■■■■■■■■■■■■■ BEGIN ■■■■■■■■■■■■■■■■■■■■') //j = i / 2; j = Math.floor(i / 2); //console.log(psns, 'i=' + i, 'j=' + j); tmp = psns[i]; if(!(i % 2)) { psns[j] = [null, null]; } if(tmp.sex == MALE) { psns[j][0] = tmp; psns[j][1] = psns[i+1]; } else { psns[j][0] = psns[i+1]; psns[j][1] = tmp; } // modified on 2018-12-31 by XXXX. // //psns[j][0] = tmp; //psns[j][1] = psns[i+1]; i++; //console.log(psns, 'i=' + i, 'j=' + j); //console.log('■■■■■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■■■■■') } psns.splice(psns.length / 2, psns.length); // modified on 2020-12-31 by XXXX. // return psns.slice(0, psns.length / 2 + 1); // return psns.slice(0, psns.length / 2); }
public virtual class DataInfo { public Integer p; public Integer c; public Integer r; public Integer v; public String name; public DateTime time; // ... } public class CellInfo extends DataInfo { public String stl; public Integer cntl; public String[] lines; // ... } public class FormInfo extends CellInfo { public Integer err; public String org; public String mod; public String type; public Integer size; public Integer step; // .... }
プログラミングはセンスです。センスの無い人がプログラマになると、他のすべての人に迷惑がかかります。だから、センスの無い人は絶対にプログラマにならないで下さい。
プログラミングのセンスが無い人や、プログラミングをやったことの無い人は、知識を得たり経験を積んだりすれば、誰でも「良いプログラマ」になれると思っているようですが、無理です。
というのも、センスの無いプログラマの問題は、知識や経験の不足ではないからです。センスの無いプログラマの救いようの無い問題は「頭がおかしいこと」なのです。
題材は何でもいいのですが、具体的なコードを見た方がイメージがつきやすいと思いますので、とりあえず以下の問題を考えます。
住民のリストが与えられるので、背の低い順に男女ペアにしたリストを作って下さい。ただし、男女の数は同数であるとします。
const makePair = (persons) => { const males = persons.filter(person => person.sex === MALE) const females = persons.filter(person => person.sex === FEMALE) const compareHeight = (a, b) => a.height - b.height males.sort(compareHeight) females.sort(compareHeight) return males.map((male, idx) => [male, females[idx]]) // 男女の数は同数 }
この例はJavaScriptなので高階関数を使っていますが、仮にそういう機能が無かったとしても、
一方、センスの無いゴミプログラマは、以下のような名状しがたきコードを書いてきます。
function pair(psns) { var i = -1; var cnt = 0; var flg = psns[0] &amp;&amp; psns[0].sex; var j = -1; var tmp = null; for(i = 0; i < psns.length; i++) { //console.log('■■■■■■■■■■■■■■■■■■■■ BEGIN ■■■■■■■■■■■■■■■■■■■■') //console.log(psns, 'i=' + i, 'cnt=' + cnt, 'flg=' + flg); if(psns[i].sex == flg) { //console.log('cnt: ' + cnt + '->' + (cnt+1)); cnt++; } else { j = i - cnt + 1; //console.log('swap ' + i + '<-->' + j); tmp = psns[j]; psns[j] = psns[i]; psns[i] = tmp; i = j - 1; // <- 理由は分からないが、i = jだと上手くいかない(by XXXX)。 cnt = 0; flg = flg == MALE ? FEMALE : MALE; while(j > 1) { if(psns[j].height < psns[j-2].height) { //console.log('swap ' + j + '<-->' + (j-2)); tmp = psns[j-2]; psns[j-2] = psns[j]; psns[j] = tmp; } j -= 2; } } //console.log(psns, 'i=' + i, 'cnt=' + cnt, 'flg=' + flg); //console.log('■■■■■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■■■■■') //console.log('') } for(i = 0; i < psns.length; i++) { //console.log('■■■■■■■■■■■■■■■■■■■■ BEGIN ■■■■■■■■■■■■■■■■■■■■') j = Math.floor(i / 2); //console.log(psns, 'i=' + i, 'j=' + j); tmp = psns[i]; if(!(i % 2)) { psns[j] = [null, null]; } if(tmp.sex == MALE) { psns[j][0] = tmp; psns[j][1] = psns[i+1]; } else { psns[j][0] = psns[i+1]; psns[j][1] = tmp; } i++; //console.log(psns, 'i=' + i, 'j=' + j); //console.log('■■■■■■■■■■■■■■■■■■■■ END ■■■■■■■■■■■■■■■■■■■■') } psns.splice(psns.length / 2, psns.length); }
こんなコードのメンテナンスは御免被りたいです。一見して配列の要素を入れ替えていることが分かるだけで、実装を全て読まなければ(いや読んでも)処理の意図が全く分かりません。また、たとえば「i = j - 1」が間違って「i = j」などと書かれていてバグを起こしたとしても、原因を突き止めるのは困難を極めます。
さて、このコードは具体的に何がいけないのでしょうか。長すぎることがいけないのしょうか。変数名が分かりにくいのがいけないのでしょうか。引数を破壊的に変更しているのがいけないのでしょうか。不要なコメントが残っているのがいけないのでしょうか。よく見ると、ソート処理で車輪の再発明をしていたり、「j」や「tmp」などが場所によって意味が違うカメレオン変数になっていたりしますが、それがいけないのでしょうか。どれも正しいですが、それらを逐一直したところで、本質的な解決にはならないでしょう。
後者のコードはもはや「ここを直したら良くなる」とかいうレベルを超えています。たしかに、問題を具体的に挙げることはできます。このコードの致命的な問題が、凝集度の低さと、単一責任の原則(SRP)違反にあるのは間違いありません。しかし、後者のコードを書いてくる人に、
「住民リストを男女に分ける処理や、リストをソートをする処理、2つのリストをまとめる処理は、この問題とは独立して意味のある操作だから、別の関数として抽出しましょう。その方がコードの見通しがよくなるし、一部の処理を修正したときの影響も小さくなるし、単体テストも書きやすくなります」
なんて言ったって聞く耳を持たないでしょう。
そもそも、こういうコードを書く人は、この処理自体を「pair」なんて関数に抽出すらしません。まだこの問題では入出力のフォーマットが明確に定義されているので、他人が1から書き直せますが、実際のプロダクトでは、無数の副作用を起こす数千行のコードの迷路を彼の脳内フォーマットのデータが通るわけです。もちろん、テストコードなんてありません。
つまり、指摘をしても絶対に直らないのです。いくら言語の優れた機能やベストプラクティスを紹介しても、馬の耳に念仏。それらの利点を理解できるだけの脳みそが足りていないのです。
どうして、同じ処理を実装するのに、ここまでの違いが生じるのでしょうか。
これは、プログラミングの技術の問題ではありません。既に述べた通り、ふつうの人なら、特定の機能の有無とか知識の程度にかかわらず、ふつうのコードを書くのです。なぜなら、ふつうの人にはそちらの方が楽だからです。つまり、前者のコードは別に何か卓越した技術を身につけた結果書けるようになるものではなく、まともな感覚さえ持っていれば、プログラミング初心者にとっても前者のコードの方が書きやすいのです。
つまり、後者のようなコードを書いてくる奴というのは、現実世界の捉え方が常人とは著しくずれているのです。要するに、「頭がおかしい」のです。この病気はもう直りません。だから、センスの無い人は絶対にプログラマにはならないで下さい。
品質どうなってんだ。
全然関係ないですが、cf.takeover.on_panicというパラメータについてNetApp社のサイトを調べました。
すると、リリース日が違うけどタイトルが同じな2つのマニュアルを見つけました。
Data ONTAP(R) 8.2 High Availability and MetroCluster Configuration Guide For 7-Mode
Part number: 215-07985_A0
May 2013
Enable or disable automatic takeover on panic by entering the following command: options cf.takeover.on_panic {on|off} on enables immediate takeover of a panicked node. This is the default value. off disables immediate takeover of a panicked node. If you disable this option, normal takeover procedures apply: if a node panics and stays down without sending messages to its partner for 15 seconds, the partner then automatically takes over the failed node.
→ オフでも15秒後には切り替わるよ!
Data ONTAP(R) 8.2 High Availability and MetroCluster Configuration Guide For 7-Mode
October 2020 | 215-08524_B0
Enable or disable automatic takeover on panic by entering the following command: options cf.takeover.on_panic {on|off} If the cf.takeover.on_panic option is set to on, a node panic will cause an automatic takeover. If the cf.takeover.on_panic option is set to off, a node panic will not cause an automatic takeover. You should not turn this option off unless you are instructed by technical support to do so.
https://anond.hatelabo.jp/20201019173130
青13 赤12 緑11 白18 緑14 緑23 緑15 緑 8 白 6 青 1 白16 緑 3 緑21 緑22 青 2 緑17 白19 白 7 青25 青20 緑 × 白 4 > 1 赤 1 赤 5 緑 9 白10 赤 × 緑24 +--+--+--+--+--+ |赤|赤|赤|赤|赤| |白|青|白|白|白| |白|白|緑|白|緑| |白|緑|白|青|青| |緑|緑|緑|緑|青| 赤: 5枚 o ○ 3 × 1 緑: 7枚 ○ 11 × 1 白: 9枚 ○ 7 × 0 青: 4枚 ○ 5 × 0 問題数: 28 スルー: 0
% poetry cache clear --help USAGE poetry cache clear [--all] <cache> ARGUMENTS <cache> The name of the cache to clear. OPTIONS --all Clear all entries in the cache. GLOBAL OPTIONS -h (--help) Display this help message -q (--quiet) Do not output any message -v (--verbose) Increase the verbosity of messages: "-v" for normal output, "-vv" for more verbose output and "-vvv" for debug -V (--version) Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n (--no-interaction) Do not ask any interactive question
これ見ると
poetry cache clear pypi
で動きそうじゃん?
% poetry cache clear pypi RuntimeError Add the --all option if you want to clear all pypi caches at /usr/local/lib/python3.8/site-packages/poetry/console/commands/cache/clear.py:44 in handle 40│ ) 41│ 42│ if len(parts) == 1: 43│ if not self.option("all"): → 44│ raise RuntimeError( 45│ "Add the --all option if you want to clear all " 46│ "{} caches".format(parts[0]) 47│ ) 48│
ブブー
動きません
正しくはこう
poetry cache clear pypi --all
直感的には--allをついてたら全てのキャッシュを消すべきだと思うが
% poetry cache clear --all Not enough arguments (missing: "cache").
ブブー
動きません
意味不明に思ったのは俺だけではないらしくIssueが出ている
https://github.com/python-poetry/poetry/issues/521
opened this issue on 19 Oct 2018 · 18 comments
2年前ですよ2年前!
Issue700個も溜まってますよ
pipenvもアレだったけどpoetryもアレだな
もう少しマシな奴が欲しい
[B! セキュリティ] フェイスブックの暗号化、日米英などが見直し要求へ (写真=AP) 日本経済新聞
平文に一定のアルゴリズムに従って暗号鍵から生成したノイズデータを掛け合わせ、意味が読み取れない暗号文を作るのが暗号化である。逆に意味が取れない暗号文から平文を求める操作を復号と呼ぶ。アルゴリズムがよく知られていながら暗号鍵が無ければ復号できないものがよい暗号と言われる。一般には256bitAESでも使っておけばまずパッと見ても聞いても数学的にもほぼ乱数と区別できなくなる。
ノイズデータの生成方法には色々あり、事前に送り付けた乱数表を使い使用後は破棄するもの、事前に送り付けた共通鍵や公開鍵を使うもの、都度生成するものなどがある。掛け合わせる方法も色々あり、乱数表に書いてある数字と暗号文を足し合わせると平文になるもの、共通鍵を暗号文に使うと平文になるもの、公開鍵を使うと平文になるものなどがある。
共通鍵を平文に使うと暗号文になり、共通鍵を暗号文に使うと平文になるものを、対称暗号とか共通鍵暗号と呼ぶ。
公開鍵を平文に使うと暗号文になり、暗号文に秘密鍵を使うと平文になるものを公開鍵暗号と呼ぶ。非対称暗号ともいう。
共通鍵暗号でも公開鍵暗号でも「平文が、暗号文になり、平文に戻る」というところは同じだが、
共通鍵では「平文→ 鍵→暗号文→鍵 →平文」と同じ鍵を使い、
公開鍵では「平文→ 公開鍵→暗号文→秘密鍵 →平文」と二種類の鍵を順に使う。
なお、この二種類の鍵は順に使えば順序はどっちでも良い。先に秘密鍵で処理して公開鍵で処理することも可能だ。とにかく2種類両方を使えば良い。
共通鍵暗号は分かりやすい。zipのパスみたいなもんだ。Wi-Fiのパスワードも同じだ。だが公開鍵暗号については、二種類の鍵を順番に使うと何が良いのかと思う人も多いだろう。どうせ暗号で読めないのだからいいじゃないかと思うだろう。実は名前の通り鍵を公開しても全くノーダメージというところがメリットなのだ。書かなかったが公開鍵から秘密鍵を数学的に求めることは不可能である。逆も不可能である。そして処理する順番もどっちでもいい。つまり適当な暗号文と鍵の片割れを公開しておくことで、もう片割れの所有を証明できるのである。これが公開鍵暗号の醍醐味である。
この技術はHTTPSの証明書に使われている。というかすべての公開鍵基盤で使われている。.pemとか.cerとかid_rsa.pubはこの片割れであり、ウェブブラウザの「証明書の検証」とは、ネットを見てる時にサーバが送ってくる「適当な暗号文」として"*.hatena.ne.jp"のハッシュを知らん鍵で暗号化したもののハッシュを知らん鍵で暗号化したもののハッシュを暗号化したものに対して、事前にWindowsをインストールした時に付いてきたHatena-Masuda Ultra Global Root CAとかいったけったいな鍵の片割れを使ってみてちゃんと復号出来てるかチェックしているのである。
暗号化通信を行うには、暗号鍵でデータを暗号化すればいい。暗号化には共通鍵暗号を使うのが高速で便利だ。公開鍵暗号は原理的に計算量が多く低速である。しかし、どうやって共通鍵を事前に知らせればいい? 公開鍵暗号で共通鍵を暗号化すれば、受け取り手は自分の秘密鍵で復号できるだろう。しかし、秘密鍵は本当に秘密か? 暗号文と秘密鍵が手に入れば、公開鍵暗号でも解読できてしまうのではないか? HTTPS化しているウェブサービスでも、TLSをロードバランサで終端してデータセンタ内は平文だったりするのではないか? そこで鍵交換、セッション鍵生成の議論が登場する。
Diffie-Hellman-Merkle(Diffie-Hellman)鍵交換方式とは、ディッフィー君とヘルマン君が下宿で階段をドタドタやってる時に天啓のように降ってきたと言われる、ネット上に数字そのものを公開することなく、2者間で同じ1つの乱数を得る方法である。
送信者と受信者の間で共通の1つの乱数を得ることができ、その乱数を第三者に知られることがない。
上で何度か「公開鍵暗号の秘密鍵と公開鍵は、平文に対して両方使えば平文に戻り、順序は関係ない」と書いたのを覚えているだろうか。Diffie-Hellmanはこれに似た方式だ。まず、AさんとBさんは送信者がお互い本人であることを証明できるようにする(公開鍵基盤を使う)。そして、それぞれ手元で乱数AとBを生成する。次に、鍵用の乱数Aを適当な乱数で暗号化した鍵Aと、鍵用の乱数Bを適当な乱数で暗号化した鍵Bを計算し、お互いに送り付ける。この暗号Aと暗号Bは盗聴されているものとする。
AさんとBさんはそれぞれ鍵Bと鍵Aに対して暗号化を行う。すると鍵BAと鍵ABが生まれる。このとき数学的な都合により鍵BA == 鍵ABである。
では、暗号A、暗号B、適当A、適当Bのみから鍵ABや乱数Aを求めることはできないのか? 可能だが式変形などで「解く」ことができず、総当たりになるため計算量が膨大になる。従って実質的にはできない。
或は、暗号A、暗号Bを掛け合わせれば、鍵ABになるのではないか? これもできない。暗号AまたはBと掛け合わせるのは生の乱数AまたはBでなければ意味がない。第三者が乱数Cを作って暗号AやBと掛け合わせても、鍵ACや鍵BCになってしまい、鍵ABと一致しない。
これにより、手元で生成した乱数以外のすべての情報が公開で既知で盗聴されているにもかかわらず、2者間で秘密の暗号鍵用乱数を得ることができる。
原始的なDiffie-Hellman鍵交換の実際の計算は非常に簡単であり、この「暗号化」は事前に決めた別の方法で生成する既知の2つの整数X, Yと乱数A, Bに対して、
暗号A = XをA乗してYで割った余り、
暗号B = XをB乗してYで割った余り、
鍵AB = 暗号BをA乗してYで割った余り、
である。
なお、くれぐれも簡単と聞いてPython 2.7とかで実装しようとしないように。算数の上手い人が作ったライブラリを使え。暗号処理の自作は絶対バグらせて割られるのがオチだ。ちなみにDiffie-Hellman-Merkleの三人目のマークル氏というのは両名と何のゆかりもないので普通は名前に入れないのだが、Merkle氏の先行研究が直接の元ネタなので入れるべきだと主張する派閥もある。俺はどっちでもいいと思うが折角なので入れておく。
ここでやっとE2E暗号化が登場する。上のセクションでしれっと書いたが、DH鍵交換が完了した時に送信者と受信者が得る共通の乱数は、各々ローカルで都度生成する乱数を元にしている。身許保証は公開鍵によるが、鍵は公開鍵に縛られないのだ。つまり、SNSやメールサーバその他、身許を保証する機能と文章をやり取りする機能があるツールと、そのツールで間違いなく本人にDH鍵交換の暗号を送れるクライアントアプリがあれば、その経路で本人同士の間だけで共通の乱数を生成し、それを「セッション鍵」として共通鍵暗号方式による通信経路が設定できる。
この「公開鍵認証基盤で本人確認し、DH鍵交換でセッション鍵を設定し、鍵を端末に出し入れすることなく、受信側端末のメモリに入るまで暗号化を解くこともないまま、共通鍵暗号で通信する」のがいわゆる「End-to-End 暗号化」である。
E2E暗号化を行うと、鍵はDH鍵交換で生成され、端末の外に出ないし書き出す必要もなく、通信の中で割り出す事もできず、通信が終われば破棄してもよい。好きなだけ定期再生成してもよい。認証に使う公開鍵と数学的な関係もない。一度設定してしまえば、SNS運営にチャットログを出させても鍵交換した意味不明な履歴と意味不明な暗号文が出てくるのみで、盗聴者をなりすまさせて鍵を再設定させても前の鍵と何も関係のない新しい鍵が出てくるだけで、意味不明な暗号文の解読の助けにはならない。ちょっと量子コンピュータめいているが、端末となりすましの両方で鍵を一致させることもできない。
ざっくり言えば送信側端末と受信側端末に残っている平文か鍵をバレる前にぶっこ抜く以外に解読方法がない。
これは盗聴関係者にとって非常に大きな問題で、米国のFBIなどは盗聴能力を維持するには法規制以外に策がないと考えている。DH鍵交換のアルゴリズムは上に書いた剰余以外にも楕円曲線を用いた数学的に更に複雑なものもあり、ソースはネットにいくらでも転がっているし、電子計算機アルゴリズムの常でやたら強力な癖に計算量的には全然負担にならない。NSAなどは数学者を揃えて最高のアルゴリズムを提供する振りをして、規格書で事前に決めた一定の数学的特徴を備えているべき定数に備えていないものを指定するとか、実装でミスが出やすい関数を選ぶなど小細工を入れているが俺は二次関数も分からんので詳しいことは知らん。しばしば政府の陰謀にキレた若いITキッズが小細工を抜いて差し替えた再実装を公開したりして揉めている。
実際にSNSなどでE2E暗号化を実装する上での問題点は、本人確認、機種変とマルチデバイス、嫌がらせ対応がある。まず本人確認がコケればMITMは可能だ。E2Eでは鍵を外に出さないのがメリットなので複数端末ログインができず(鍵が変わって別端末で書いたメッセージは解読できなくなる)、運営で常時メッセージを監視できない(したら意味がない)ので嫌がらせ対応が多少困難になる。またMITBというか、改造偽アプリで抜かれる可能性は、まあ、ある。
よく「学問は役に立つことが重要なのではない」などと嘯く人がいるが、これは間違っている。学問の価値は役に立つかどうかで決まる。
まあ、大人になる過程でこういう「他人と違うことを言ってみたくなる時期」があるのは、別に悪いことではない。
しかし、高校生や大学生1, 2年生ならともかく、もうすぐ社会人になる人や既に就職している人がこういうことを言っているのは恥ずかしいことだ。
実際、プロの研究者なら誰でも知っていることだが、学問の世界ではその研究が役に立つかどうかは常に重視される。
自身の研究が既存の研究とどのように関連し、他の研究にいかに貢献するかを示すのは、論文を書く際の一般的なマナーである。他にも、研究予算の申請、大学教員の採用などのあらゆる場面で、「役に立つか」は重視される。
大学などの研究機関や国は別にボランティアで教員を採用したり予算を出しているわけではないのだから、これは当然のことである。
たとえば、以下のPythonのスクリプトを実行すれば、1億個の定理を証明した数学の論文が作れるが、それを投稿しても受理してくれる学術誌はひとつも無いだろう。学問的に何の価値も無い、つまり役に立たないからだ。
[print(f'{n} · {m} = {n * m}') for n in range(1, 10001) for m in range(1, 10001)]
要するに、研究者はこういうクズ論文ではないきちんとした研究をする必要があるし、その研究に価値がある、つまり役に立つことを必ずしも専門家とは限らない人に示さなくてはならない。
467 admin
238 pi
119 oracle
102 user
69
62 postgres
60 guest
57 ubnt
47 support
42 nagios
32 ftp
29 git
28 cablecom
26 user1
25 deploy
24 teamspea
24 osmc
24 Administ
ftp よりも ftpuser のほうがアクセス多いのちょっとおもしろい
git ユーザーは弊社プロダクトにありますわ。流石にパスワードではアクセスできないけども。
deploy も居そうー
admin 堂々の1位。正直 admin っていうユーザーのあるシステム見たこと無い。確かにわざわざ admin ユーザーで運営しているサーバーはセキュリティ低そう
lastb --file btmp --file btmp.1 | cut -d " " -f 1 | sort | uniq -c | sort -nr -k 1