「プラクティス」を含む日記 RSS

はてなキーワード: プラクティスとは

2021-04-16

猫が轢かれた!どうしよう?

誰かベストプラクティスを共有して下さい。以下詳細。

道を歩いてると、どこっ、という何とも言えない音が車道から聞こえてきた。

ぱっと見やると、スクーターが何かを残して走り去っていく。落とし物か?と思いよく見ると、なんと猫ちゃん

うわー!と思ったものの動く前に後続車がノーブレーキで通過。幸い車体の中心線を潜り抜けて更なるダメージは免れた。

その後、他の人が抱えて車道から連れ出してくれたので、自分警察に連絡。10分経っても到着しなかったけど、その間に回復してぱっーと走って逃げた。

大丈夫かな…

と言うわけで今回の状況は閉じたけど、轢かれて息のある野良動物を目撃したらどう対処すべきか?をこの機会に覚えたいと思った。警察無難かもだけど、一刻を争う場合警察待ってると間に合わないかもだし、保護後にどうなるかも分からないので…

諸賢の知見をご共有下さい。

追記:

猫ちゃんは左顔面を打ったみたいで、鼻血と目の腫れがあったけど、運動器は無事だったっぽい。回復を願う。

轢き逃げ犯は許せない。でも、ぱっと状況判断してナンバーを控えるのは難しい…

スマホから110すると位置情報飛ばしてくれるのね。便利になったもんだ。

2021-04-12

anond:20210412121105

将棋に限らずほとんどの物事ベストプラクティスは分かっていませんよ。

あなたが創始して他言していない分野でもなければ、先達の知恵の積み重ねがあるはずですよ。

anond:20210412114051

将棋のように定石がある分野であればその戦略が真なんだろうけど、ベストプラクティスがない分野だと自分で考えるしかないんだよな。検索しても出てこないから。

下手な考えするしか選択肢がないわけよ。もちろん、大概の分野は探索空間が広いから、たくさんの屍が積み重なる。ただ、そういう人柱の上に、定石というもの確立するのだろうから、下手な考えも人類総体で見たとき有益な気がするから、俺はそういう人好きだけどな。

2021-04-03

[]2021年3月はてブあとで読むトップ30リスト

はてブホットエントリ(総合)で月内に数多く[あとで読む]タグを集めたエントリ

441あとで/3236users コグニカル

285あとで/1829users 経産省公表した「フリーランスとして安心して働ける環境を整備するためのガイドライン」はフリーランスじゃない人も必読らしい - Togetter

238あとで/1442users Python言語による実務で使える100+の最適化問題 | opt100

227あとで/2515users 山本ゆり(syunkon レンジは600W) on Twitter: "友達に「どうやって作ったん?!」と聞かれた自信作。衣ザックザクで中ジューシー!もう売りもんの域。 【レジチキン特別材料ナシ。油も少量でいける!袋2枚で作るから洗い物少ないし衣が飛び散らんし片付けがラク!下味の水と油、小… https://t.co/7gDCHTjdjB"

216あとで/1280users 主観客観を切り替える鍛錬|Miwa Kuramitsu|note

215あとで/1696users 庵野秀明2000) - 早稲田大学 人物研究会 公式サイト

202あとで/1882users note版 突然画力が伸びだした時、僕が発見した事|安倍吉俊note

200あとで/1416users 心のバリアを取り去って「正規表現」に取り組む一歩を踏み出すためのメモDTP Transit 別館|note

197あとで/1580users 地震発生から72時間NHK東日本大震災アーカイブス 証言webドキュメント

194あとで/1964users 100均収納グッズのカタログ情報サイト MONO SIZE(モノサイズ

186あとで/987users 2021年JavaScriptNode.js勉強し始めたので、読んで良かった資料をまとめる | matsumanaの技術メモ

184あとで/1208users プロダクトマネジメント事業開発に関する私的な振り返り - 下町柚子黄昏by @yuzutas0

175あとで/1439users [速報]マイクロソフト無料RPA機能Power Automate Desktop」をWindows 10ユーザー提供開始。Microsoft Ignite 2021

175あとで/1975users 「ごめんなさい 救助のヘリじゃなくてごめんなさい」|NHK取材ノートnote

175あとで/1412users 長かった10代の終わり、エヴァが想い出になった日。(『シン・エヴァンゲリオン劇場版感想ネタバレ注意)|祥太note

174あとで/970users YouTubeで「中学生から分かるAI数学講座」が無料公開 E資格対応 | Ledge.ai

172あとで/1798users ジャンプ漫画学校講義録⑥ 作家編 松井優征先生「防御力をつければ勝率も上がる」 - ジャンプ漫画学校

167あとで/1331users カズオ・イシグロ語る「感情優先社会」の危うさ | 読書 | 東洋経済オンライン | 経済ニュース新基準

161あとで/892users Dockerfileのベストプラクティス Top 20 | Sysdig

157あとで/1386users 建築好きなら死ぬまでに見ておきたい建築100(日本国内編) | anond.hatelabo.jp

157あとで/1279users Microsoft文字起こしアプリGroup Transcrib‪e‬」を公開 - iPhone Mania

156あとで/1347users お金のことを考えたくない人はFP3級を勉強するといい - アオヤギさんたら読まずに食べた

156あとで/1290users 「プロフェッショナル 庵野秀明スペシャルNHK取材を後悔した庵野監督の生態 - Togetter

153あとで/1239users Keigo Hattori on Twitter: "YouTubeで学ぶコンピュータサイエンス。これを完了したら実質学位を取ったようなもん。という話だが、すごいなこれ・・・。全部無料でここまでの・・・https://t.co/xNHNvBM5Aa"

150あとで/1018users 「シン・エヴァンゲリオン劇場版」公開から1週間分の感想エントリまとめ - まなめはうす

148あとで/705users React を深く知るための入り口 | Panda_Program | Zenn

148あとで/1130users 情報ではなく経験アウトプットすること - lacolaco

144あとで/1159users 「浄土PDF一覧 | 法然上人鑽仰会

140あとで/1166users 売られている防災リュックがピンとこないので…カバンから食料まで『100均だけ』で防災グッズを揃えて検証してみた→防災士もオススメ - Togetter

137あとで/1028users こうやって切れば良かったんだ!鶏むね肉がぷるっぷるになる「うましおごま油漬け」が鶏ムネ肉を疑うレベルの柔らかさ | Gourmet Biz-グルメビズ-

トップのコグニカルは個人運営の"「分かりやすさ」と「心地良さ」を追求した学習サイト"だそう。

なぜか仏教雑誌浄土」がブクマを集める。無料公開されて古い号の歴史的価値面白がられている。読み切れなそう。

YouTubeで「中学生から分かるAI数学講座」……で紹介されていた動画を開いてみたが1000弱のブクマを集めている割に再生数数百止まり

2021-03-28

パンピー家族くらいしか生きがいにできないのでは

結局そうなんじゃないかと思い始めた

Twitterとかみてると、みんな結構人生辛そうなんだよな

べつに毎日手首切ってます!って感じでもないし、病み垢なんかを作って死にたい死にたい言ってますって人もそうはいないだろう

でも、なんか、毎日しんどいし、これが死ぬまで続くのか……っていう絶望感みたいなものをうっすら感じつつ、できるだけ意識しないようにしている、そういう人がかなり多いように思う(根拠、ナシ!w)

いくら愚痴っても Life goes on...なので言わないだけで、助けてくれ!と思ってる人はかなりいるんじゃないか

で、それの支えとしては、結局結婚して子供作って……っていう伝統的なアレが一番効くんだろうなと最近思う

そら一人で趣味やって充実してます!って人もいるだろうし、子供作ったけどぜんっぜんなんの感情も湧かなくて破滅!って人もいるだろう

しかし、やっぱりこう、全体としては、子ども作ってその成長に注力して辛さから目を逸らすっていうのがベストプラクティスなんじゃないか

はてなでも結構そういうこと言う人いるもんな

運否天賦で、というか、あんま何も考えんとエイヤっと子供を作って、育てるぞーと思ってるうちに老境、そんでまあええわと思いながら死ぬ そういう感じでやってきたんだろう、人類

残すもん何もないし、そもそも何かを残すことにこだわりを感じないし、大切な人は別にいない となると、モチベーション自分で生み出さないといけない

月に行くんだ!とか、良い絵を描くぞ!とか、武道館を満員にする!みたいな夢をもったりできると良いのかもしれないが、夢ってたぶん持つことにすら才能が必要で、パンピーにそれはできないんだよな

一緒に過ごしたい家族もいない、熱意を注げるものもない、叶えたい夢もない って状態で週40時間労働を40年以上やるのは、まあ相当しんどいわよね

どうなるんだ?この社会

俺は滅ぶだろうなと思うんだけど、じゃあ具体的にどんなふうに滅ぶのか、というかそもそもどうなったら滅んだことになるのか、というとわからない

個人的人類未来を全部見てみたいな、とは思うんだけど、実現不可能だし、夢ってほど夢じゃないな 呪術廻戦を完結まで見たいっていうのと大して変わらん熱量

俺ってどうしたらいい

なんのために生きたらいいんだ

まれ意味とかはどうでもいいので、仕事をしてまで生き続ける意味がほしいんですよね

いまマジで自殺するのはちょっと怖い」程度の消極的理由で生きてるもんな

ダメですよ〜マジで!助けて!

2021-03-27

anond:20210327213156

きょうのC#勉強LINQのSortBy()で止まった

参考書かにアルファベット順って呑気に書いてあるけどこれいわゆるASCII順だよねと思って

(彼らが揃いも揃ってアルファベットだけで構成された単語比較例だけしか出さず、数字開始あり・空白ありの文字列比較をさせないのは怠慢だと思う)

比較に使ってるメソッドなんだろうと思って、String.CompareToからString.Compareに行ってCompareOptionsを見て、

.NET での文字列の比較に関するベスト プラクティス | Microsoft Docs

うわー、うん、なんか見なかったことにしておく

もし俺が参考書書くときアルファベットだけで構成された単語比較例だけ出すことにしようと思う

2021-03-13

ITドカタが語るワースト現場思ひ出

底辺派遣ITドカタだが、いろんな現場に飛ばされてきた。

その中でもベストofクソ、つまりクソofクソだったのは、とある広告企業だった。

ワイが入った時点でひどい状態だった。

まず、Adobeとかソフトライセンス管理できておらず、一部は不正コピーを使っていた。

機器は、Windows機やLinux機もあったりしてめちゃくちゃ。

営業さんは「かっこいい」というだけでMacを選んだり、開発さんは「使いやすい」というだけでLinuxを選んでいるしまつ。

好き勝手バカスカソフトを入れたりしてるので情シスは把握・対応ができない。

しかソフト類は買ってから事後申請するしくみだったので悲惨だった。

また、情シス長は、いいと思ったシステムを後先考えずどんどん入れていて、

会計システム+(会計+在庫管理システム)+(会計+人事管理システム

というように、会計データが重複していて、それを毎月手作業インポートしていた。

そのためだけに人間を雇っているようなクソofクソなオペレーションだったのである

「ドカタくん、まずこのソフトライセンスの一覧を洗い出してくれ」

と言われたが、200以上もの有償ライセンスがありめまいがした。

当時はワイもスキルがなく、どのように収集して統計するかがわからなかったのだ。

かろうじてSKYSEAというシステムが入っていたのだが、当時はあまり優秀ではなく、

GUIもみずらくてえらく使いにくかった。(今は改善されているらしいが)

なのでロースキルな現場ロースキルな人間(ワイふくむ)という、

まさにクソofクソ、ヘルofヘルという地獄現場だった。

あれからウン年がたち、あの現場感謝している。

その後の現場で、そのクソ現場ワーストプラクティス造語)として活用できたからだ。

端末情報収集したりするのはAzure ADやWinRMというツールを使い、

ソフトライセンスはBIツールを使って自動統計することもできる。

それに気づいてなかったし、調べようともしていなかった。

そう、あのクソ現場において最もクソだったのは、

情シス長でもなくユーザーでもなく、自分自身だったのである

2021-02-18

anond:20210218084822

それはその通りで、日本の政治のものが密談傾向があったからなあ。

製造物流を除いて、ある意味一番変えにくい業界だと思うw

かい会社ベストプラクティスを作ってくれっていう要請なんだろうね。

2021-02-11

3匹の子豚の三男が褒められる意味がわからない

三匹の子豚を見るたびに思うんだけどさ

母親から突然追い出されて家を作ることになって、上の兄二人は自分たちがさっさと家を作り終えたから、のろまな一番下の弟を馬鹿にするけど、実は弟が一番丈夫な家を作ってて上の兄二人はオオカミに食べられる。三男は偉いっていうの

別に三男は深謀遠慮でレンガの家作ったわけでなく、たまたま手元にそれしかなかったから仕方なく作ったんだけど、狼が襲撃してくるという異常な状況下でたまたまベストプラクティスになっただけ、つまり

平常時なら長男次男コストや手軽さ的に正解なんだよね

家を作るっていうのに関して言えば別に一番下の弟の知恵もそこまで特別なことをしてるわけじゃないっていうところが

豚にしては賢いなってくらいで

なんで教訓話になってるかわかんないんだけど

ハプスブルク家暴政に怒って得意の射撃術で悪徳役人射殺したウィリアムテルの方がよほど根性据わってるし

魔女の婆さんを策略で倒して金銀財宝かっぱらったヘンゼルとグレーテルの方が頭も度胸もあるし

鬼の本拠地にカチコミかけてバッタバッタと薙ぎ倒して金銀財宝ぶんどった桃太郎の方がよほどこれから日本社会において教育と教訓になるよね

なんでそういう教育しないんだろうか

2021-02-09

「話してくれてありがとう」←これ

自分内面さらけ出すような、特にまだ自分でも整理できていないような悩みや、割り切れていない体験をふと話してしまったときに、

話し相手から「話してくれてありがとう」なんて言われると、一気に冷める。

(ああ、はいはい、そうですね、そういうときはまず肯定から入るんですよね)

(そういう研修なりプログラムなりがあって、それを修めたあなたは、この場をやり過ごす、ベストプラクティスできてますねー)

って感じがする。胡散が臭くて白々しいのよ。

ほんとはよ、もしも真剣にそんなことを私が話してしまときが来るならよ、ちょっとだけ、少しだけ私が話をして、

そしたらそいつはなんかぶつぶつ呟いてちょっとだけしかめっつら見せて、

数分だけ氷とグラスの音しかしない時間が流れて、「場所変えようか」ってなって、二軒目の居酒屋バーかでまた与太話を始める、ってのがいいな。

学生時代にはそんな友達いた気もするけど、今はいないな。

強く生きなきゃな。

2021-01-30

日本内需を支えられるくらいネットって需要喚起できないものなの?

K字回復だとか、Web需要は益々増加するとか、ニュースを見ていると出てくる。

一方で日本全体の統計を見ると、売り上げが下がっていて、政府需要喚起しないといけないといった声が出ている。


ネットもっと内需を支えられるくらい需要喚起することはできないものなのか?


個人情報も取っているし、少し調べたら売り上げを伸ばすにはこうすればいいだとか、ベストプラクティスを真似しようと言っている。

そんなに力があるのであれば、やって欲しい。

Google国家くらい力を持つようになったんじゃなかったの?

なのに地方飲食店に人を呼び込んで救うこともできないの?

機械学習で売り上げを伸ばせるんじゃなかったの?

2021-01-23

ベストプラクティスは、以下を実行することです。

IAM ユーザー作成し、そのユーザーアクセス許可可能な限り狭く定義します。

なぜ?

防犯とは言うが、そもそも不正アクセスパスワードを盗まれている時点でルートも盗まれている

少人数の会社で、そんなことをするメリットと、漏洩時に、作り直す作業デメリットを考えると

1つしかないほうが漏洩検知で、その1つを止めれば全部止まるんだから

へたに複数あると

もう1つが漏洩しているかどうかを確認しないといけない

 

6人の会社と600人の会社と6万人の会社ベストは同じではない

あくまでもティピカルなプラクティスしかない

 

人の出入りの頻度も違うし

まもっている情報重要性も違う

そんなものベターがあってもベストがあるとは思えない

2021-01-06

プログラミングスクールに通う意味がない理由、およびプログラミング独習

なんか巷では近頃プログラミングスクール流行ってるらしいが、知らないなら言っておく。それは完全に無意味だ。そんなのはプログラマーなら誰でもわかってるはずだが。情弱が金を搾り取られるのは資本主義社会の常であるにしても、さすがに偽の希望を抱いてプログラミングスクールに通うためだけに安定した大企業に勤めてたのに退職する人の話なんかが流れてきて看過できないなと思ったので書いておくわ。どうせ情弱には届かないだろうが。

そもそもプログラマーやってる奴はほとんど独学でプログラミング習得したという事実がある。GAFA 社員もそこらへんのいわゆる下流工程SEも。30年前はベーマガっていうプログラム投稿雑誌があって、当時プログラミング教室なんか当然ないが普通に小学生とかが独学して自作プログラム投稿してたわけだ。プログラミングスクール登場以前はプログラミングは独学するものだった。

かに既に分かってる人に指導されないと学べない分野は存在することはするんだが(定義定理証明スタイル大学以降の数学とかね)、プログラミングはそうじゃない。数学論理的に間違った証明を書いても最初自分では気づけないしだから独学で高等数学を学んだ人というのは控えめに言って悲惨なことになるんだが、プログラミングだと間違えたら分かるんだよな。エラー吐くし動かないし動いても間違った答えを出すので。

間違えたら即座にコンピューターが教えてくれるという最高のフィードバック環境が整っているのがプログラミングというものであって、独学が可能というだけでなく、この上なく独学に向いている。

そうは言っても誰かに教えてもらった方が効率がいいという議論はあるだろう。しかし1年前のベストプラクティス今日時代遅れになる、日進月歩のこの環境エンジニアやっていくなら独学は必須スキルだし、プログラミングという独学にうってつけの分野で独学だと著しく効率が悪くなるようならそもそもエンジニア向いてない。ゼロからプログラミングを独学してみるというのはその試金石でもあるわけ。よしんば今特定フレームワークの使い方を誰かに教えてもらって使えるようになったとして、次のフレームワークが出てきたらどうすんの?って話。

プログラミングを独学って具体的にどうするのよ?という人のために学び方を書いておく。

  1. プログラミング言語を選んで処理系インストールする
  2. その言語self-containedな解説書を買う(練習問題付きだと望ましい)
  3. その本を完全に理解するまでプログラムを書きながら読む。練習問題は全部解く

これが出来る奴はそんなに多くないかもしれないが、そもそもプログラミングというのは適性というものがあって、向いてない奴はやらない方がいい。絵心がない奴、音痴な奴、文才がない奴がいるようにプログラミングの適性がない奴がいる。そんなの当り前じゃないか?適性があるなら上の手順で難なく独学できるし、適性がないならプログラミングスクールに行っても無駄プログラミングスクールは金儲けさえ出来ればいいかプログラマーなら誰でも知ってる適性というもの存在を隠すんだよな。そんな詐欺被害に遭う人が出るのは嫌なのでこうして正しい情報を書いておいた次第。

2020-12-20

プライベートメソッドテストすべきか

「すべきでない」というのがたぶん多数派

テストすべきでない理由としてだいたい次の理由があげられる。

プライベートメソッド関数テストする必要は無いと考えていますプライベートメソッドは、実装の詳細であるからです。

多くの場合、そのクラスパブリックメソッド経由でプライベートメソッドテストも同時に行えます

プライベートメソッドのテストは書かないもの? - t-wadaのブログ

ほとんどの場合プライベート メソッドテストする必要はありません。 プライベート メソッド実装の詳細です。

プライベート メソッドがある場合は、パブリック メソッドを見つけて、そのメソッドに対してテスト記述します。

単体テストを記述するためのベスト プラクティス - .NET | Microsoft Docs

プライベートメソッドテストするな」と強く主張されるのは、ケント・ベックの影響もあるかもしれない。

例えばtwitterで、パブリックメソッドにだけテストを書き、テスト必要なほどプライベートメソッドが複雑ならそれを別のオブジェクトに切り出す必要があると発言している(twitter/kentbeck)ように、プライベートメソッドテストに強く反対している。

またベックの書いたSUnit(xUnitの源流にあたる)には「ひとつテストひとつオブジェクトで表し、それによってテスト独立性を高める」というアイディアが使われている(そのアイディアを実現するためにとても複雑な設計をしている Simple Smalltalk Testing: With Patterns)。テスト自身ひとつオブジェクトとして独立しているなら、テスト対象となるオブジェクトプライベートメソッドテストできないのは当然のことになる。

しかし「プライベートメソッドテストがしたい(したくなることがある)」と感じる人も相当数いる。

そう感じる人にとってはむしろここからが本題で、

問題になる。

テストファーストで開発するなら手を動かしながら軽い気持ちで書きたい。

例えそのクラスがprivateメソッド依存関係があっても。

コンストラクタインジェクションされたクラスのprivate メソッドでもテストファーストしたい - Qiita

privateなルーチンの自動テストは面倒だ。実際にコーディングするとき最初publicにしておいてテストしてうまく動いていそうならprivateにするのだけど、この「いそう」がくせ者。いっそのことすべてpublicにしたくなる。

私は元々メソッドはprivateにしない主義なのでメソッド場合問題ないのだけれど、ファイル内の「関数」が問題になる。和了計算だと和了形判定とか符計算とか和了役判定とか単体でテストしたい内部関数が山ほどある。(twitter/koba0367)

private メソッドテストすべきか問題原則論だけだと袋小路に入りがちだから、private メソッドテストしたくなる具体的な場面について議論したほうがいいと思う。

自分レビューでよく見る例としては、複数の public メソッドの重複部分を private メソッド抽出した結果、濃い private メソッドと薄い public メソッドが一対多関係になる場合が挙げられる。設計としては間違っていないし、わざわざ public メソッド経由でテストする意義があるかというと微妙。(twitter/ts7i)

きれいなインターフェースを作ろうとすればするほどpublicメソッドじゃない部分に複雑性を追いやることになり、壊れた時に手戻りが大きすぎると思ったら、プライベートバックドア開けてでもテスト書くようにしてます (twitter/mizchi)

しかプライベートメソッドに対するテストを書こうとすると大概リフレクションなどで可視性の制限をすり抜けるとかメソッド可視性を変更するといった回りくどさやコストの導入が必要になるので、じゃあプライベートに対するテストはそうしたコストに見合うのかが問題になる。

伊藤さんの答えは「原則書かないほうがいいという大前提のうえで、どうしてもというときは、"これはテストのためにpublic"にしているというコメントの上でpublicにする」だった。

自分は「テスタビリティのためにメソッドをpublicにする」っていう"実プログラム挙動を変えること"の方が、「privateなメソッドテストコードのみsendで叩く」よりも怖いって思ってることに気がついた。(twitter/highwide)


メソッドプライベートパブリックかという話とそれをテストするかどうかは別問題だろという意見もある。

単体テストホワイトボックステストだとするなら、publicかprivateかでテストの有無が変わるのは明らかにおかしいだろ。ややこしいロジックはprivateに隠蔽すべきだが、そこがテストできないなんて。 (twitter/kmaebashi)

private メソッドテストするかどうか? まず最初に言っておきたいのは public/private は抽象設計問題であって、テストすべきかどうかとは当然無関係だろうということ。(twitter/qeigoi)

特定言語の貧弱な機能思考制限を受けて誤った結論を出している典型的な例。

"テストを書くべき"と"上位層から可視性"は直交する概念

https://b.hatena.ne.jp/entry/4684049296462116226/comment/megumin1

テスト粒度メソッドアクセス権は独立したものなので、「プライベートメソッドテストすべきか否か」という切り方自体ナンセンスではあるのだが、現実問題としてはアクセス権がテストに影響するので難しい。(twitter/AoiMoe)

private メソッドテストはすべきかどうかというより、「できるべき」であって、それができないというのも、ある種、言語機能テストインピーダンスミスマッチと言えるのではないだろうか、と思っている。(twitter/aetos382)


プライベートメソッドテストがしやす言語での意見

RustやGoではプライベートメソッドに対するテスト簡単にできる。

そのためかプライベートメソッドテストすることに対して拒否反応があまりないようだ。

Rustのテストファイル内とtests/以下の2箇所に書ける。

テストには開発用のホワイトボックステスト仕様確認用のブラックボックステストがあり、前者をファイル内に、後者をtests/に書けば良い。

例えば度々議論になるプライベート関数テストについてはもちろんホワイトボックステスト。(twitter/blackenedgold)

Rustではプライベートに対して何の手間もなくテストが書ける。

概念的にはプライベートに対するテストは外部コードではなく内部コードの一部として見るべきなのだろう。

Rust入門を兼ねてプロジェクト・オイラーの問題を解く - 再帰の反復blog

Rustでprivateなメソッドテストを書きたいなら、そのメソッドのすぐ隣に書けば内部アクセスになるから普通に書けるよ、ってのは目からウロコだった。できるだけ近いところにテストを書こうっていう文化と相まって最高。(twitter/kuy)

Rustみたいに単体テストは同ファイルに書ければいいのに

assertionチックにprivateメソッドのすぐ下にテスト書きたい

ドキュメントにもなるし (twitter/takaya_tim)

Rust のようにユニットテストプロダクションに混ぜる方式はおれもいいと思ってて、テストプロダクションを分離することで private 関数テストができない問題があるけど(テストしたければクラスを分けよ/メソッドを公開せよ/テスト必要なし、に分かれるよね)、そもそもこの議論不要になるよね (twitter/nunulk)


go言語だとプライベートメソッドテスト普通にやりますね。(twitter/mattn_jp)

昨日「private method の単体テストは書くか否か」という話題がちょいとあったのだが、わしは当然書く感じの昨今を送ってきたもんで何で書かんのやくらいに思ってたんだけど、Go だと private なやつのテストが書きやすいってのがデカそう。(twitter/pankona)

golangのテスト書いてたけど、テストプログラム名前空間(パッケージ)が、対象プログラムと一緒で、そのためプライベートメソッドでもテストできるの良い感じ (twitter/74th)

Goテストコードテスト対象と同じパッケージにすればエクスポートしてない関数でもなんでもテストコードから参照できるんだけど、これってプライベートメソッドテストすべきか議論するよりテスト書けと言われているようで好き。(twitter/plan9user)

プライベートメソッドテストするか?」とは別にドキュメントソースコードと同じファイルに書いていい(文芸プログラミング)なら、単体テストテスト対象と同じファイルに書いてもいいのでは?」というのも論点になるかもしれない。

2020-12-04

anond:20201130214610

1についてだけ。

>分かるけれどこれでどうやって動画音楽エンコードをしたり画像処理をしたりするソフトウェアになるのか

エンコードに関してはプログラムエンコード理論に従って作られているだけ。大事なのは研究者の考えた理論

画像処理定型の処理の塊でこれも代替やり方は決まってる。"python 画像処理"とかでググれば多分出てくる

 

>あるいはWordとかExcelとかがどうやってこんなので作られているのかが分からない

まず基本的な、ウィンドウシステムがどのように実現されているかWin32アプリベースでも

よいので理解するべき。ユーザーマウス操作キーボード操作をどのようにプログラム認識し、

処理するかが理解できる。この仕組みは基本的にすべてのアプリ共通と思われ。

 

プログラミング入門書を読んでも、一般的に知られているソフトウェアの作り方みたいな事が書いてない

多くの人が共通的な作り方に挑み敗れているわけで、プログラム10個あれば10通りの作り方がある。

方法は一つではない、目的を達成する手順は無数にあるから

また、クラスレベル抽象化してソフトウェア構造を整理しようとする、オブジェクト指向(最近

クリーンアーキテクチャ昇華させる流れもあり)もあるけれど、オブジェクト指向に向かない

対象領域があったり、なんでもクラス病にかかる等して、銀の弾丸とは言い難い。

また自説だが、順次処理を基本とする、手続き型言語データと処理が入り乱れることになるため、

全てを設定しきることが極めて困難なため、きれいにすべてを設計するのであれば関数型言語を使う必要

あると感じている。

 

>だからそのフレームワークがどういう風になっているのかって説明からして欲しいって思う。

そのフレームワーク内包するベストプラクティスの量を鑑みれば、中身を意識せずに

インターフェイスをしっかり押さえて使うことをお勧めする。

あなた人生はすべてのコードを描けるほど長くない。

 

>つまり言いたいことは、実際に動くアプリケーションというのを作りたいのにも関わらず

プログラミング入門書は、これで判定と繰り返しという基礎ができますと言うだけ。

>これがもう滅茶苦茶イライラする。

天才的な人はコードを書きながら、考えられるけれど、常人はまず詳細設計と言われる

フローチャートを書けるようになったほうがよい。

次に"抽象化"を覚える。"抽象化"を使うことで少なくとも、処理は全体をざっくり設計できる

 

>つまり完成しているプログラムを参考にしようと思っているにも関わらずそれがないのでよく分からない。

githubに山のように転がっている。

ただそれを見て理解できるかは別問題モチベーションを保って継続学習可能な形に

消化できる人間の登場が待たれる

   

2020-12-02

IT(?)に立ち向かうための心構えとか考え方

anond:20201130214610

いろいろ面白かったので、適当に回答する。

> 1.具体的な事が分からない

プログラミングで主にやる事は下記の2つ。

①IFでAかBを選択させてどっちかの設定を実行

②Whileで決められた回数分繰り返す

これでやりたいことは分かる。分かるけれどこれでどうやって動画音楽エンコードをしたり

画像処理をしたりするソフトウェアになるのかというのがよく分からない。

とてつもなく複雑で冗長な処理によって実行されている。

複雑すぎて人間直感理解することは不可能だ。

わかりやすいので画像処理でいうと、数十万から数百万の画素(RGBAの24bitで表される数値)を小さなブロックに分解し、数学的に周波数の重なりとして計算して変換、含まれる頻出パターンテーブルにして圧縮伸張を行なう。みたいなことが瞬間的に行われている。

まさかそんな事できるわけないだろ」というレベルの処理が実際に行われており、これまた直感的でない。

適当リンクを挙げる。

からそれをどう書くんだよ。という答えはコレ。有名なjpeg実装だ。


フレームワークだとかよく分からないものを持ってきて使ってくださいってなっている。

libjpeg というライブラリを書くことはできるだろうか?画像圧縮理論から考え始めることはできるか?

正直無理だ。自分プログラマだがそんなに数学が得意ではなく、頑張ったとしても下手するとコレを作るのがライフワークになってしまい、他のことができなくなる。

例えばブラウザを0から作るとして、jpegの処理以外にも画像だけでpngとかgifとかwebpとか、その他もろもろとてつもない作業必要になる。

「とてつもなくて想像もできないので流石に無理だろう?」

いや、でも、実際動いてるのよ。ここ何十年、コツコツと積み重ねて実現している。

「積み重ね」とはライブラリであったりフレームワークであったりOSであったりする。

からそのフレームワークがどういう風になっているのかって説明からして欲しいって思う。

「どういう風になっているのか」

多くの場合、內部の実装に関しては詳しく知る必要はない。

外部に向けたインターフェイスがどうなっているのかは理解する必要がある。「使う」ために必要からだ。

この2つは分けて考えなければならない。

これでどうやってゲームを作ったり、検索エンジンを作ったりするんだとなってくる。

ちなみに、たとえばChromeのコアであるChromiumはのコードはコレだ。


まり言いたいことは、実際に動くアプリケーションというのを作りたいのにも関わらず

プログラミング入門書は、これで判定と繰り返しという基礎ができますと言うだけ。

これがもう滅茶苦茶イライラする。

「これで判定と繰り返しという基礎ができます」というのが基本的理論定理的なもの)で、その他に必然的だが唯一無二ではないベストプラクティスというものがある(法則的なもの)。

後者をうまく説明する入門書出会っていないんだろうな。という印象。イライラはやめよう。つかれる。

ベストプラクティスはいろいろあるのだが「層の構造にする・レイヤーに分ける」というのは重要アイデアだ。

libjpegというのはjpegの処理を行う「ライブラリ」だ。他のアプリケーション...たとえばブラウザはこのライブラリを「使う」。

ブラウザではjpeg画像圧縮展開というとてつもなく難しい処理を「libjpegの使い方」の理解までで済ませ、過去の蓄積であるlibjpegコードを利用することで真の意味で0から実装しないようにしている。

この場合、libjpegが「低レベル・低レイヤー」の存在であり、中身については「使い方」つまり仕様」の理解までしか行わないことで、実際に作りたいものを作れるようにしているわけだ。

巨人肩に乗る」とよく言われる。

まり完成しているプログラムを参考にしようと思っているにも関わらずそれがないのでよく分からない。

完成しているプログラムは二例ほど挙げたがどうですかね?

複雑なことをする、特にレイヤーコードはとてつもなく難しい。

でも、とりあえずこんな感じのコードなら解るよね?

こういうレベルから理解して、ちょっとずつ難しい処理を学んでいくしかない。

から木材を渡されてこれで家を作れと言われるくらいハードルが高い。

ハードルは高いんですよ。実際。

なので、木材からだと難しいかプレハブのキット的なものを探すとか、ログハウスカタログを読むとか、あるいは100人乗れる物置を買うのがいいかもしれない。そういうところから始める。

それらがフレームワークであったりライブラリであったりする。目的に合うものを探して、自分がやりたいことをどう実現するかとにかく考える。

「テキシコーhttps://www.nhk.or.jp/school/sougou/texico/ で言われる通り、「小さく分けて考える」「手順の組み合わせを考える」「パターンを見つける」「大事ものだけ抜き出して考える」「頭の中で手順をたどる」をひたすら実行する。

ゲーム作りにはそういうアプリを使えば楽だからそれを使えという人もいる。Unity?だっけ。

でもそれはそれ。そうじゃなくてプログラミングでどうやってそれが作られているのかが分からない。

unityコードが公開されているので、本当に読みたいなら。。


なぜそこでオブジェクト指向になるのかが分からない。

オブジェクト指向は内部構造を知らなくても直感的に利用できる素晴らしいものだとは思う。

オブジェクト指向は一旦忘れよう。

オブジェクト指向の「隠蔽」というのは層の構造が持っている重要な要素ではあるけど、「低いレイヤーについて考えない」のが基本的作戦だという理解の方が重要だ。

が、プログラミングでは、その内部構造を作らなきゃいけないのだからそれを知る必要がある。

前述の通り「できる限り作らない」んですよ。「使う」だけ。知るべきことを最小化する。

巨人肩に乗り、車輪の再発明基本的に避ける。

そして本当に作るべきものに関しては、利用する下のレイヤーライブラリなりを探して・仕様理解して、どう組み合わせてfor, if, あるいは計算させれば実現できるのかをひたすら考える。

じゃあ具体的に何を作りたいのかというと、英語フリーソフト言語表示を日本語翻訳するソフト

単に翻訳がしたいのか?表示に割り込む方法を知りたい?日本語翻訳するのは実行時なのか開発時なのか?

要求される表示エリア言語によって異なるために、デザイン調整が必要になる問題をどうするか?

解決したい問題もっと分解したほうがいい。

分解が甘いので何をしたらいいか調べることができないんだと思う。

たまに便利なフリーソフト海外版の時があるんだけれど、日本語化が出来ない事があるので、自分自由

日本語化できるようにできれば凄くストレスが減る。だからやりたいのだけれどそういうのがよく分からない。

ちなみに、アプリ内の文言というのはアプリの外部から変更できないように実装されている事が多いので、利用者が上書きする仕組みはかなり難しい。

AndroidなりiOS仕様にもそのへんに割り込める機能はないはずなので、OSの開発に入っていく必要がある。結構大変だとおもう。

アプリ開発者が、そういう機能を備えた多言語化のためのライブラリを使うようになれば実現可能ではあるので、そっちの方向で頑張るのがおすすめだが、英語圏の開発者には多言語化のモチベーションが低いという基本的問題はあるのよね。

この辺の「できる・できない・むずかしい」の判断は、いろいろな勉強をすると常識としてある程度みえてくる...気がする。

ついでに。ウェブサイトウェブサービス翻訳だとこういうサービスがあったりする。

ブラウザはページの描画処理のなかに割り込む余地が大きく取ってあるので、ブラウザのExtensionとかならできることがいくらかあるかもしれない。

> 2.説明が出来ても説明が出来ない

個人的に気に入らない話はOSアップデートは使いやすくなるからとてもいい事だからすぐにやった方がいいと宣伝されている事。

セキュリティが高まりますというのが宣伝文句だけれど、これで大体老人たちやIT知識に疎い人は躓く。

まあ、半分は嘘だよね。古いものが残っていると先に進めないんだよ...。

現在クライアントOSは、巨大なプラットフォームのパーツの一部として理解したほうが正しくて、古いパーツが残っているとツライんですよ。

そして「サービスを受けるための道具であって、あなたが何でも好きにできる機械ではないです」みたいな世界になりつつあって、ちょっと問題と言われてもいる。

これはかなり困った傾向なんだけど、全体としての流れはあんまり変わりそうにない。

たここでオブジェクト指向が出てくる。

オブジェクト指向好きですな...。ここではオブジェクト指向特に気にしなくていいですよ。

からパソコンはたまに不具合を引き起こすんですという説明が着地点になる。

とてつもなく複雑なことをやっているために、すべてのバグを潰すことはコストが高すぎてできないんですよね。

それよりバグ未来を先取りするコストと考えて、本質的価値のある機能を増やしていくというのが基本的な方向になっている。

からパソコンはたまに不具合を引き起こすんです。しゃーない。

しか中途半端理解している老人などは、そんなことじゃ分からん自分に分かるように説明しろと言い出す。

説明は出来る。しか相手イライラするし理解されない。よって説明をしてはいけないという状況に追い込まれる。

ここでどうすればいいのだと理解不能に陥る。

まあ、説明って得てして難しいよ。しゃーない。

何故なら自分OSアップデート不具合の原因というのが分からいから。

Microsoftが、Appleが、Googleがそうしているんですとしか言えない。

そのとおりです。

プログラムソースコードのどこかにエラーがあるのだろうけれど、どこにあるのかなんて当然知らない。

そもそもソースコードを調べるのは違法なのでやれないし。

オープンソースプロダクトなら原理的には調べられるけどね。Androidとかはオープンになってる。


だけどみんなそんなものを使っているし自分も使っている。正直こんなんでいいのか人類と思う事がある。

それを許容することで先に進んできているという事実は受け入れたほうがいいと思う。

「把握・理解可能範囲」に留めていたら、数十年前のコンピュータ世界から抜け出せなかった。

deep learning世界ではそれがより一層進むかも。この辺は詳しくないけど。

当然仕組みを理解している人はいるし、そんな人にとってみれば当然のことであっても、全ての中身を知っているわけではない。

どれだけ知っていても知らない事があるのがIT理解しがたい。理解が出来ない。

ここでの「理解」についてはそのとおり。これはもう諦めるしかない。

> 3.自分頭が悪い

これが常にある。IT関連は常に新しい情報が出てくるのでそれに送れると無知になってしまう。

なんでこんなことも分からないんだとか言われ放題で、IT系の企業に努めている人は常に新しい知識を入れられる

面倒くさがらない人が向いている。

「面倒くさがり」の方が問題に気づいて「頑張って面倒じゃなくする」ことができるので、プログラマにとっては美徳なんて言われますけどね。

同時にくじけないとか諦めない、しつこいみたいな素養必要かも。

表計算ならいけるんじゃないかと思ったときがあるのだけれど「射影」とかいきなり意味不明な言葉が出てきて、

勉強しろ

それから受験していない。だから持っているのはITパスポートだけ。情けない。

応用まではとろうな。がんばれ。

> 4.最後

USB-TypeCをTypeAに変換してはいけないとか最近まで知らなかった。

このへん自分も知らんですよ。べつに全部知っている必要はない。

面白いからたまに調べたりもするけど。

追記: はてな記法引用すらもさっきまで知らなかったしな!そんなもん)

更にレガシー、すなわち過去遺産なるものについても理解ができない。古い物がずっと使われ続けているIT環境

もう誰もメンテナンスが出来ないものが延々と使われているという事実

層の構造をとっているということと関係があるんですが、仕様が変わると、その上に乗っているものを全部なおさないといけないんですよね。

なので「互換性」というのが非常に重要なのです。

でも革新のために互換性を捨てなければいけないケースも多い。このへんはハードでもソフトでも同じ。

そして、メンテコストが上がっても使い続けたほうがトータルで安上がりという場合は、古いものが残ってしまう。

あるいは「(多少の問題はあっても)動いているものは変えるな」という経験則から意図的に残す場合もある。

西暦2020年にもなって、プログラミング簡単には出来ないし、ハードウェアの規格も完全に統一はされていない。

というかプログラミング言語自体多すぎる。ソフトウェアデファクトスタンダードのモノ程度は知っているが、

いまは原始時代にいると思ってもらって構わないと思いますよ。

ぜんぜん完成していない荒っぽいものを目にしているのだと理解したほうが的確。

それなのに毎日理解のできないパソコンスマートフォンを使っている。

オブジェクト指向のおかげ様だがオブジェクト指向に対して無性に腹が立つ。

自分の全く知らない場所いけしゃあしゃあ演算を行い、そして結果を出す。それも大半が正しい結果で

利便性が抜群だ。些細なミス(バグなど)はあるが圧倒的に利便性が勝っている。

そんな道具に踊らされている自分が滑稽だ。理解できない愚かな自分は正に機械奴隷のようだ。

本当に理解できない。辛い。

勘違いしてはいけないのは、それらはすべて先人の努力の蓄積によって成り立っているということ。

「よくわからないけど存在している道具」ではなくて、信じられないほど複雑だけど、多くの人々の行動によってなんとかかんとか実現した道具なんですよ。

オブジェクト指向のおかげ様」じゃないんです。(もちろんオブジェクト指向というのも大きな発明の一つですが)

そしてブラックボックスとして使うのは多くの場合正しいです。そこは諦めましょう。

でもエンジニアとしての立場からは、その裏に隠れているとてつもない技術思考の蓄積に感動してほしいなと思う。

なので、ちょっとずつがんばって勉強してください。

人類がこんなもん作れたのって、かなりすごいよ?

2020-11-18

そんなレベル大丈夫か?

登場してから、その効率の良さで永らく使われてきたものの、同時に様々なセキュリティホールを生み出した結果、

今や「可能な限り使わないことがベストプラクティス」と言われているC/C++言語

実際、PythonGo言語などで書けそうなら、絶対そっちで書くべきだと心底思う。

(ただしVBテメーは絶対ダメだ)

以下のような、ド素人しか思えない実装によるやらかしを見てきたこともあって、その思いは一層強くなった。


いわゆる下手のC/C++あるあるで、もう本当にうんざりするほど見かけるのが、

char型の巨大な配列グローバル宣言し、それを使い回す」

という、色んな意味頭痛がしてくる実装

それ、今どきのWindowsとかでやられると、ビルドないし実行したタイミングウィルス対策ソフト誤検知したりするんだわー。

しろ人によってはint型の最大数を要素数として配列作るとか、無茶しやがって…みたいな事するんだから無理もない。

てかさー、それポインタを全く活用できてねーじゃん。

必要とき必要な分だけ領域確保して、ポインタで適切に参照させるとか、基本中の基本じゃねーの?

誰でも初心者の時期があるのは仕方ないが、お前初心者レベルのまま何年コード書いてんだ?いい加減にしろマジで


そうやって書いてしまったものリファクタリングするのも、他の安全言語移植するのも諦めて、今日誤検知させる奴がいる。

そもそも本来コンピュータのことを詳しく知っている専門家が使うことを前提とした言語が、こうも広まってしまたことが歴史の過ちだったのかも。

2020-10-30

お願いだからセンスの無い人はプログラマにならないで下さい

プログラミングセンスです。センスの無い人がプログラマになると、他のすべての人に迷惑がかかります。だからセンスの無い人は絶対プログラマにならないで下さい。

プログラミングセンスが無い人や、プログラミングをやったことの無い人は、知識を得たり経験を積んだりすれば、誰でも「良いプログラマ」になれると思っているようですが、無理です。

というのも、センスの無いプログラマ問題は、知識経験の不足ではないからです。センスの無いプログラマの救いようの無い問題は「頭がおかしいこと」なのです。

題材は何でもいいのですが、具体的なコードを見た方がイメージがつきやすいと思いますので、とりあえず以下の問題を考えます

問題

住民リストが与えられるので、背の低い順に男女ペアにしたリストを作って下さい。ただし、男女の数は同数であるします。

コード

ふつうの人は、難しく考えずに以下のようなコードを書きます

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] && 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から書き直せますが、実際のプロダクトでは、無数の副作用を起こす数千行のコード迷路を彼の脳内フォーマットデータが通るわけです。もちろん、テストコードなんてありません。

まり、指摘をしても絶対に直らないのです。いくら言語の優れた機能ベストプラクティスを紹介しても、馬の耳に念仏。それらの利点を理解できるだけの脳みそが足りていないのです。

どうして、同じ処理を実装するのに、ここまでの違いが生じるのでしょうか。

これは、プログラミング技術問題ではありません。既に述べた通り、ふつうの人なら、特定機能の有無とか知識の程度にかかわらず、ふつうコードを書くのです。なぜなら、ふつうの人にはそちらの方が楽だからです。つまり、前者のコード別に何か卓越した技術を身につけた結果書けるようになるものではなく、まともな感覚さえ持っていれば、プログラミング初心者にとっても前者のコードの方が書きやすいのです。

まり後者のようなコードを書いてくる奴というのは、現実世界の捉え方が常人とは著しくずれているのです。要するに、「頭がおかしい」のです。この病気はもう直りません。だからセンスの無い人は絶対プログラマにはならないで下さい。

2020-10-28

なぜ素人自分プログラミングができると勘違いしてしまうのか

プログラミングで食っていくためには、他の職業と同様に様々なスキル必要になる。単に技術的な面だけに絞っても、以下のようなことが出来なければ話にならない。

  1. 少なくとも1つのプログラミング言語が書ける(当たり前)
  2. その言語の主要なライブラリパッケージ管理ツール自動テストツール等の周辺ツールについても深く理解している
  3. ソート木構造のような基礎的なアルゴリズム理解しており、プログラム計算量を見積もれる
  4. HTTPSSL/TLSRDBMSSQLOSシステムコールファイルシステムメモリ管理などのアプリケーションよりも低レイヤーの基礎技術理解している
  5. 「Code Complete」「Clean Code」などに書いてあるようなソフトウェア設計ベストプラクティス理解している

プログラミングスクールなどを卒業したゴミには、(1)〜(2)もしくは(1)だけを以て「自分プログラミングが出来る」と勘違いしている奴が多い印象がある。

2020-10-22

anond:20201022005749

多くの場合後者方法が、もっと言えば

「AをラップしたクラスA'と、BをラップしたクラスB'を作り、A'とB'に共通インタフェース実装する」

のがベストプラクティスではないか

コード量は増えるが、外部に副作用を及ぼさない限り、ゴミコードはA'とB'内で閉じている。

2020-10-10

日本プログラマ募集してもまともな奴が応募してこない

本当に嫌になる。

見よう見まねでコード書いてるだけのゴミプログラマ名乗らないでくれ。

以下、「プログラマ」を名乗るための最低要件:

他にもいろいろ書きたいこと(ネットワークデータベースセキュリティOSハードウェア等)はあるが、ソースコードが書けるという点だけにフォーカスすれば、この程度は最低限できないと困る。

上に書いたようなことが完璧にできると断言できない奴が、プログラマを名乗るのがいか非常識で恥ずかしいことなのか、よく理解して欲しい。

2020-09-21

anond:20200921232952

お前それ、2020年現在C言語ベストプラクティスを知ってて言ってるのか?

知らないなら教えてやるけど、

可能な限りC言語を使わない

からな。


まり時代go言語

2020-09-03

毎日自殺

今日も誰かがどこかで死んだ。

自ら生を終えた。

https://www.npa.go.jp/publications/statistics/safetylife/jisatsu.html

今日じゃなかったかもしれない。でも、明日か、明後日か、少なくとも今週か来週には2人以上が死にゆくことが「確定している」。

根性なんてもの存在しないし「責任」なんて概念科学にはない。環境と、手法や手順、試行、反応、結果があるだけだ。得られた結果や反応が想定と違ったなら、手法や手順を変えてやり直せばいいだけのことなのだ。

なぜ学校ではそのことを教えない?なぜ企業は「体調管理しろ」としか言わない?お前は癌のコントロールができるのか?

人の意識24時間365日安定しているものではない。夢を見たり、薬で精神に影響を受けることからその絶対性のなさが分かる。コミュニケーションにおいてもわプラクティスとされる手法が行き渡らないばかりに、無用ストレスを生んでしまっている。

言葉を発したその瞬間に、我々は他人の脳に指を突っ込んでいるようなものだと、その影響力の自覚と、曖昧さに意識を向けるようにしたい。

ログイン ユーザー登録
ようこそ ゲスト さん