はてなキーワード: エラーとは
もと増田だけど、気分まぐれに書いた駄文なので気にしないといてくれ。
それはさておき、Python が好きってことはプログラミングが好きってことで良いね?だとすると、最終的には C 言語やることになるけど、今は Python をやろう。なんと言っても、Python は C 言語できているけど、C言語は謎いので無視してオッケー!
そんでもって、Python の「公式ドキュメント」をきちんと読みこなせるようになろう。最初はから全部は必要ないけど、最終的には読みこなせるようになろう。そんでもって、プログラミングをしたいってことは「何かを作りたい」のだろ?たとえば、増田を作りたかったら Python だと Django や Flask を、人工知能を作りたかったら PyTorch を使うことになるだろうけど、その手のフレームワークの「公式ドキュメント」を読みこなせるようになろう。プログラミングスクール(やめとけよ)や本は「公式ドキュメント」を読めるようにする手段だと思ってくれ。間違っても「本に書いてあったのに、動かない!」なんて、喚かないでね。洋書も和書も「公式ドキュメント」以外のテキストは間違っていることがあるので。
次に「エラーは友達」ということ。エラーはあなたを否定したのでなく、コードを否定したのであって、エラーが出ても気にしないでください。そんでもって、エラー文を丁寧に解決していけば、すごくスキルが身につきます。
最後に、Python 言語だけじゃ解決できないプログラミングの問題は多々あります。データベースを操作するには SQL が、ウェブサイトを動かすには JavaScript が、ウェブサイトを作るには HTML/CSS が、サーバーを設置するにはシェル言語が、Python を高速化するには C言語が、必要になる場合がありますが Python を使いこなせると、おそらく習得は容易でしょう。なぜかというと「Python だとチョメチョメだったっよなー、これでいけないか?」という勘が形成されるので。
チューリング完全な言語はどれも表現力は同じだから、「この言語だから成功する」というのは無いよ。Python は interface が無くて、class が弱くて、動的型付けを用いているけど、これらがないと「制約」を課すことができないというフリーダム過ぎるから、嫌らわれることはあるけどね。制約が強い言語は、ハンターハンターふうに言うと「制約が念能力を強くする」みたいな要素はあるよ。
どうしても教育を受けたいという希望があるのなら、ハーバードの CS50 という講義が無料で見れるから、推薦したいね。あれみると、我が国は計算機科学は負けていると思った。
ここまではよくわかる。それで物理学と数学的なカオス理論を押す連中が間違っていると思うのが、
二度目の入力の際に手間を惜しみ、初期値の僅かな違いは最終的な計算結果に与える影響もまた小さいだろうと考えて、小数のある桁以降の入力を省いたところ、
ここ。ここが諸悪の根源だ。まず計算機科学の連中が大学に入って最初に引っかかるミスに大御所がひっかっている。たとえば、0.4 - 0.3 は計算機科学では 0.1 じゃない。それは十進法から二進法に変換するという計算機の特性を理解してない人がやるミスだ。嘘だと思ったら、0.4 - 0.3 == 0.1 と C なり Ruby なり Python なり Java なり Haskell なりでやってくれ。ちなみに JavaScript なら 0.4 - 0.3 === 0.1、Lisp族の Clojure は (== (- 0.4 0.3) 0.1)、PHP はちょっと自信がないので省かせてもらう...。浮動演算ユニットがついているプロセッサで IEEE 754 の類をサポートしているなら「偽」となるはずだ。ここでは「桁あふれ」「丸め誤差」なんかは説明しないが、計算機で小数を扱うのは注意が必要ってことだ。閑話休題、つまり計算機で数学や物理学が実数のように小数点を扱うなら 3.0 と 3.1と 3.14 は別物として扱う必要があって、カオス理論の創始者であるローレンツは「有史に残る」ミスを犯した。
結果が大きく異なった。
これは金融界隈のエンジニアたちにとっては、コンピュータが現れてからは悪夢のような形で襲っていて、ゴースト・イン・ザ・シェルの題材にすらなっている「既知の未知」という類のエラーだ。はっきりいうと、大御所にこんなことを言うことは憚れるが、エンジニアだと3年目以降だとしないミスを MIT のエリートがやっているという、なんというか「そりゃ、そうなるだろ」的なミスをしでかした結果なんだよ。例えば、古典物理学だと有効数字のひとつ下の数値は切り上げて四捨五入するというのは教科書的には正しい。だがね、計算機科学だと小数点の扱いは事故の元なんだよ。具体例を出すと「Ruby で円周率を100回掛け合わせる、Ππ(パイパイ、n=100)みたいなことをする。
puts [3.0, 3.1, 3.14].map{|i| 100.times.reduce(i) {|j, k| j *= k + 1}} # 2.7997864633183236e+158 # 2.893112678762268e+158 # 2.930443164939848e+158
もう一度、特に高校の物理をやった人は考えてほしい。数値を切り捨てしないだけで、これだけの差が生じるのだ。そりゃ、ローレンツ大先生も驚くわな。現実世界では起きないような気がするのはなぜか?、と思うじゃん。そこで、わたしはこう思うわけですよ、
とね。だからこそ、
というものを科学する学問があって良いのじゃないかと。つまり、
なのではないかと。
逆に聞くけど、質問を質問で返すのは詭弁のガイドラインに抵触するのは承知の上で、貴方は「計算機が実数を扱っているという前提が間違っている」のを知っているのか?たとえば、カオス理論が起きるのは「計算機科学で物理学と同じように小数を扱ったから」なのだけど、あれは古典物理学を学んてきた人がおかすミスなんだよ。あれはローレンツが有効数字というまやかしに引っかかって起きたのと、十進法と二進法の互換性が無いことに起因したケアレスミスなんだよ。俺はカオス理論を否定するのじゃなくて、カオス理論も偶然が生んだ産物だという上で言っているのよ、念の為。それで、主訴に戻るけど、この複雑性が計算機というレイヤーの上で物理学(放射線などのビットのエラー)や計算機科学の限界を無視して数学で演繹的に表すことが可能なのか?、という疑問に対して「無理」なんではないかと思っているわけ。
リ○ジャス利用してるんだけど、ユーザー管理や請求システムがゴミ過ぎて凄い。
・その修正処理を間違える
・勝手に増額した請求が払われてないので早く払えと主張される(架空請求)
・結局この請求額異常・(請求支払の)バランス異常の修正に1年近くかかる
・システム移行してからは、マイアカウントへのログインすら時々弾かれるログインゲーに
・さらに最近ログイン周り改修して、長いURLのログイン画面になり、ブラウザに記憶させておいたID/パスが表示されなかった(初回のみ)
・クレカ新規登録をしたらエラー(エラーコード無し)。でもクレカは登録されてる。
そもそも配布済みのバーコード側にチェックデジットがついていない、という根本的な問題らしいんだよねぇ。何が問題かというと、読み取りエラーになるのはまだ良くて、違う人間が接種したことになるのが怖い。当初はスキャナ側の問題もあったんだろうが、ここが解決しないと高性能なスキャナを持ってきても誤入力の問題が付き纏うってことなんじゃないか。高いスキャナを買うにも追加予算がいるしね。でなければ、自治体側があんな頑なに利用を拒否しないだろう。
https://maonline.jp/articles/corona_vaccination_ticket_problem_is_elementary_mistake210520
変数や構文などのプログラミングの基礎は覚えた人向けに、ソースコードを書くときのコツを紹介していきます。どれも今日から実践できるものばかりです。他のプログラマと差をつけることができる技術ですので、ぜひ意識するようにして下さい。良い子はまねしないで下さい。
理想は、aやxなどの一文字です。ただし、これだけだと26文字しか使えないので、a1, a2, ...のように連番でグルーピングすると良いです。
また、変数の宣言と使用箇所が離れた場合に、変数の型がすぐに分かるように、たとえばint型であればi1, i2, ...、string型であればs1, s2, ...のように命名すると、読む人に親切で自分もミスしにくくなります。
変数名を長くするのは、以下のデメリットがあるため、絶対にやめましょう。
多くのプログラミング言語には、クラスや関数といった機能がありますが、これらは基本的にライブラリ提供者などが使う想定の機能であり、一般のプログラマが使うのは好ましくありません。したがって、クラスや関数はなるべく使わないようにして下さい。
不要な関数を作らないためのテクニックには、以下のようなものがあります。
まず、関数の引数に「フラグ」を渡し、関数内部で処理を切り替えれば、1つの関数で複数の処理をすることができます。
function f(i) { switch(i) { case 1: // i = 1のときの処理 break; case 2: // i = 2のときの処理 break; case 3: // i = 3のときの処理 break; // ... } }
この方法は、以下に述べる「変数の寿命を伸ばす」効果もあります。つまり、この関数内で宣言された変数は、すべての処理で共通して使用することができます。
クラスに不要な関数を作らないようにするには、「継承」を用います。複数のクラスで用いる関数を定義したクラスを1つ作っておき、そのクラスを継承すれば、新しいクラスに関数を定義する必要はありません。
理想的には、プログラム内のすべての関数を同一のクラスに定義し、それを継承するべきです。そのようなクラスは俗に「神」と呼ばれ、その利便性からプログラマからはこの上なく尊ばれています。
class God { f1() { // 関数1 } f2() { // 関数2 } // ... } class C1 extends God { // 何も書かなくても上の関数が使える! } class C2 extends God { // 何も書かなくても上の関数が使える! } // ...
変数は宣言する場所によって、ソースコードのどの範囲から参照できるかが決まっています。この範囲が広いことを、「変数の寿命が長い」と言います。
たとえば、以下のコードのaは、関数定義の外側からは参照することができません。
function f() { var a = 1; return a; }
一方、以下のコードのaは関数の内外どちらからでも参照することができます。
var a = 1; function f() { a = 2; return a; }
せっかく作った変数がすぐに死んでしまうのは、非常にもったいないです。ソースコードの表面には現れませんが、変数を作ったり捨てたりするのには、計算コストがかかります。したがって、寿命の短い変数を作りすぎてしまうと、プログラムが遅くなってしまいます。
また、変数の寿命が長いということは、変数をたくさん作らなくても、1つの変数を色々なところで利用できるということであり、とても便利です。たとえば、上記の前者のコードでは、関数の外部からaの値を参照したくなっても、参照することができません。後者のように書いておけば、プログラムのどの箇所からでも、aの値を参照したり、更新することができます。したがって、変数の寿命を長くするとプログラムを変更しやすくなります。つまり、保守性が上がります。
例外とは、プログラムが予期しない処理をしようとした場合に、プログラムの実行を停止し、呼び出し元にエラーを通知する機能です。たとえば、「test.txt」というファイルを開こうとしても、そのファイルが存在しない場合は、例外となります。
例外が発生すると、プログラムが停止してしまうため、非常に困ります。したがって、プログラマは例外をきちんと処理しなければなりません。
ほとんどのプログラミング言語には、例外処理のための機構があります。たとえば、以下のような構文です。
try { // 例外が発生し得る処理 // ex. ファイルを開く } catch (e) { // 例外が発生したときに、実行する処理 }
例外への対処は実はとても簡単です。是非ここで覚えて下さい。上記のような機構のある言語であれば、catch節の中身を何も書かなければ、例外が発生しても、何事もなくプログラムは動作を続けます。
try { // 例外が発生し得る処理 } catch () {}
全ての例外を潰せば、決して不慮の動作で停止することのないプログラムを作ることができます。ですから、例外が発生し得るコードは、積極的に上記のtry-catch構文を用いて、例外を潰すようにしましょう。
過剰予約(かじょうよやく)とは、用意できる最大数を超えて予約を受け付けることである。オーバーブッキング(英語: overbooking)と呼ばれる事もある。ある程度のキャンセルを見越して意図的に行う場合のほか、何らかのエラーにより意図せずに発生する場合もあり、これは二重予約(にじゅうよやく、ダブルブッキングともいう)とも呼ばれる。
https://ja.wikipedia.org/wiki/%E9%81%8E%E5%89%B0%E4%BA%88%E7%B4%84
これだろ。急がせたら必ずみんなが急いで達成できることが確定してるならこんなことにならないけど、予測は難しいよ。
毎日新聞 2021/6/28 10:15(最終更新 6/28 12:16) 509文字
店舗前で感謝状を手にする3人=三重県伊賀市のセブンイレブン伊賀平野北谷店で、大西康裕撮影
三重県警伊賀署は25日、特殊詐欺の被害を防いだとして、伊賀市平野北谷のセブンイレブン伊賀平野北谷店アルバイトの山田春香さん(28)と有村加歩さん(18)、同店を担当するセブンイレブン・ジャパン社員の小林哲さん(29)の3人に感謝状を贈った。
伊賀署によると、5月27日午前11時40分ごろ、市内の70代の無職男性が、同店で25万円分の電子マネーを買おうとした。山田さんと有村さんは詐欺の可能性があるとして思いとどまるよう声をかけたが男性は応じず、2人は小林さんに電話。他店にいた小林さんは警察に通報するので、警官の到着まで引き留めるよう指示した。
2人は相談して「システムエラーが起きてます」と男性に伝え、時間を稼いでいると同署員が到着し、被害を防ぐことができた。男性はインターネットのサイトで会員登録料の支払いを求める架空請求詐欺の手口に遭っていた。山澤正和署長から感謝状を受け取った山田さんは「助けられてよかった」と語り、有村さんは「絶対止めないといけないと必死だった」と振り返った。
伊賀署管内では25日までに、4件、被害総額566万円の特殊詐欺が確認され、前年同期比で3件、363万円増えている。【大西康裕】
これはすごい機転の聞かせ方だな
全員が有能すぎる
なかなか完了されない
エラー報告レシートが出てくる、PayPay側にも金額が増えていない
万札が飲まれた
横の受話器とって連絡しろと画面に出る
レシートには他に連絡先窓口が書いて無いので仕方なく備え付けの受話器取る
備え付けの受話器とってもつながらず
受話器置いたりとったり、2-3回でつながる
オペレーターへ電話が繋がっても周りがうるさくて声がよく聞こえない
電話が難しい、後で連絡できる他の手段はないかを尋ねるが無いと言われる
オペレーター(バイト)が偉そうなオペレーター(上長)へ変わる、早口
聞き取るだけで精一杯で上手く返事ができない
返金は
1、今アルソックが金持ってATMに向かうので待つ(30分ぐらい待ってくれとのこと)
2、後で銀行振込
今回は3で返金してもらった
脳が焼き切れるぐらい疲れた……
世の中は電話口だと4桁の数列が聞き取れなかったり、
聞くことと話すことが同時にできないガイジ用にできてないのはそうなんだけど
金回りのトラブルサポートが電話オンリーなのはほんとどうにかして
IQ120あっても耳が悪いだけですごいガイジ扱いされるのつらい
いや、ガイジ扱いでもいい
ゆっくり話してくれたり聞き返してもうろたえたりしないで
ただ繰り返し淡々と話してくれる人だと助かる…
めっちゃいいひと~~ありがてぇ~で終わり。
たいていそうじゃないので、いきるのつらい