「引数」を含む日記 RSS

はてなキーワード: 引数とは

2018-07-07

Haskell を書いてるわけではないんだけど Haskellメモ化したい関数ってどうするんだろう

OOP言語で書いてて

 

 

という条件なので、キャッシュを取って、キャッシュになければ計算して返すクラスを作った

純粋関数型でこれをやろうとするとモナドになったりして面倒臭そう

 

しかしながら

 

  1. メモ化は単なる最適化なので無限計算リソースがあれば不要。IOと違い、副作用自体を扱いたいわけではない。最適化の結果として副作用になるだけ。
  2. コンパイラに任せて低レイヤー隠蔽できるならその方がよい。上層レイヤー関数を書く人間が直接扱うようなものではない。
  3. メモ化できるのは参照透過性ゆえなのでむしろ関数純粋性が保証されてる Haskell とかの方が標準の言語機能として当然のごとく提供できるのでは。

 

と思ったのですがどうなんでしょう。

2018-06-28

Excel絶対参照を使って九九の表を作れと言われたら」ブコメ読んだ

Excel絶対参照を使って九九の表を作れと言われたら

https://www.watto.nagoya/entry/2018/06/28/003000

ブコメレベル低くて、しいたけさんがかわいそうなので応用例を書いておく。

別に九九に使わなくても二つのパラメータなど)引数もつ関数の値を表示したい場合はいつでも使える。

例えば正規分布標準偏差を変えて(平均は例えば0で固定して)値を得たりグラフを書きたい場合、1行目に標準偏差を入れて、1列目にxの値を並べておけば、

どのセルにも「=NORM.DIST($A:$A,0,$1:$1,FALSE)」と入力すればよい。

この記法メリットはどのセルも完全に同じ数式が入力されている点で、ミスが生じづらいこと。

2018-06-24

プログラミングのコツ(初歩)

「一つの関数には最小限の役割だけ与える」

「一つの関数は長くても20行以内に収める」

「できるだけ引数で受け取った値を戻り値に返すように書く」


これ、学校とかで教えておいてほしいコツだった

これ知った後、自分みたいなアホでも割と大規模なプログラム簡単に、

全容を把握しつつ読みやすい内容でかつ増築やすくなった

たぶんあらゆるプログラムに通じる基本的ことなんだろう

その割に過去読んだ教本では触れられてなかった気がする

心掛けるだけでだいぶ躓きにくくなるだろうからぜひ基本の知識として最初らへんに教えておいてほしい

2018-06-02

GetHoge(dbConnection, key), GetFuga(dbConnection, key, key2)

という関数があったとき

dbConnection引数を渡さずにその場でDB接続する版の関数 GetHoge(key), GetFuga(key, key2)

を作りたい

DataTable GetHoge(key) {

var c = CreateDbConnection);

return GetHoge(c, key);

}

DataTable GetFuga(key, key2) {

var c = CreateDbConnection);

return GetFuga(c, key, key2);

}

これでは関数の数だけ同じものを作らねばならないので煩雑である

もっと巧く書く方法はないか

ES2015であれば、

function OpenConnectionAndRun(runFunc, ...args) {

var c = CreateDbConnection);

return runFunc(c, ...args);

}

という関数を1つ用意すればそれで済む。

関数型言語でもカリー化や部分適用を使って似た感じのコードが書けると思う。

C#ではそういった方法はないのか?

2018-05-25

低能先生の消し方を考える

anond:20180523222112 参考

増田から低能先生を消したい場合はuBlockのマイフィルター

anond.hatelabo.jp##div.section:has-text(低能)

という設定を書き加えれば大体望み通りの結果が得られるわけだが、このhas-text()は引数として正規表現をうけとることができるらしい。

低能先生より複雑な安倍bot対応するためにもきっちり低能先生にだけマッチする正規表現を考えてみたいところである

低能先生投稿を一通り見たところ「は」「が」を付けて主語として使う場合と、「の」や「に」を付けて主語述語を修飾する場合と、文末に1単語だけ置く場合があるようだ。場合によっては「w」「w」付与される。

anond.hatelabo.jp##div.section:has-text(/低能[はがのにww]/)

anond.hatelabo.jp##div.section:has-text(/低能$/m)

1行目で「はがのにww」と続く場合を、2行目で行末に書かれた場合マッチさせて消そうと思ったのだけど、2行目の行末の場合機能してくれない。

uBlock Origin取説では正規表現解説AdBlock Plusのページに飛ばされ、AdBlock PlusからMozillaリンクが張られている。https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions おそらくuBlockの正規表現MozillaJavaScript準拠なのだろう。なのだろうけれどJavaScriptの改行にマッチしそうな特殊文字を一通り試したがどれも使えない。試しにuBlockのマニュアルページで

github.com##p:has-text(/ed.$/m)

を設定してみたところ、ちゃんと「ed.」で終わる行だけ消してくれた。ということは日本語から駄目なのだろうか?

JavaScriptに詳しい増田がいらっしゃったらアドバイスください。

2018-05-23

働く才能がないのでもう人生ダメかもしれない

・私について

20代後半 プログラマ

SES会社所属現在現場は2ヶ月目

資格 応用情報技術者

・悩み事

私は人並みの速度で作業することが、困難ということを確信しつつある。

今まで、数年経てば慣れてできるようになると自分に言い聞かせてきた。

しかし、たとえば、テストデータを作るのに工数に対して約2倍かかってしまうのだ。

作業のものは独力で遂行可能な内容だ。

1.基本設計と詳細設計インプットとする。

2.1をもとに画面遷移を網羅する引数テーブルデータ、想定結果、画面表示項目の表示をテスト仕様書記載する。

だが、「あのテストデータをどこと整合性合わせるんだっけ」「よくよく見たらテストパターンとして成立していなかった」という事象が発生する。

普通の人はうまくできているようなので、

私には普通の人に備わっているほどの記憶力が備わっていないのだと思う。

から不器用で、手を動かすアルバイトをしていたときに遅くて叱られていた覚えがある。

私は現代社会で働くことがやはりできないのかもしれない。

2018-05-15

捕鯨に関して

捕鯨ってインターネットではタブー視されているのかわからないけれど行きつけのクジラフグを出す料理屋が反捕鯨運動あおりを受けて潰れたので、捕鯨に関して考える材料になればと思い日記を書きます

そもそも日本が何で捕鯨でこんなにたたかれているかというと第二次世界国内物資が足りず、油もとれる肉もとれるクジラバカスカとっていたからで…そのあと戦勝国アメリカの言うことも聞いて漁獲引数個体(親は捕ってはならない、とか)は守り続けていたということを念頭に置いておいてほしい。はてな文法とかわからんから読みにくくてごめん。


主なエビデンス水産庁の出している調査捕鯨データです(http://www.jfa.maff.go.jp/j/whale/pdf/140513japanese.pdf)

調査捕鯨データ全然とれとらんやんけ!!やはり調査捕鯨無駄!!と憤る人、国もいますが、調査捕鯨によって得られたデータにより作成された論文拒否する媒体もあるので興味を持った方は論文を探す前に水産庁をディグったほうが良いです



Q.クジラ絶滅に瀕しているから捕っちゃダメ


A.そもそも資源量に関して「クジラ」っって大きなくくりで話している時点でおっ、こいつは面倒くさい奴だ、と思うのですが…

だってトキ絶滅に瀕している」とはいうけど「トリは絶滅に瀕している」って言わないじゃないですか

それは置いておいてクジラの多くの種類は豊富であったり過去の乱獲から数を増やし続けています

最近調査捕鯨採集されているみんな大好きミンククジラなんかは常に高水準で資源は安定しているし、ザトウクジラなんか増えすぎて南極ミンククジラの生息域を脅かしていたりしています

IWC国際捕鯨委員会)の科学委員会1992年資源安全捕獲計算方式(RMP)を算出しているのだけれど、国際捕鯨委員会会議では政治的理由がハバを聞かせていて、「絶対捕鯨を阻止するべきである」という反対国の意見に押し切られて採択はされていないです。



Q.だってクジラ特別な生き物じゃん


A.なぜなら彼は特別存在なら仕方がないですが、賢い云々で言うとクジラより脳が大きい動物もいます

例えばイルカネズミ一種銀河ヒッチハイクガイドでは地球でが人間が3番目、イルカが2番目、ネズミが1番目に賢い生き物であるとされていたのですがあながち間違いではないのかも)。

また、マッコウクジラハーレムを作るだとかの社会構成を作る点に関しても同様にクジラより複雑な社会構成動物もいます

その地域での「神」としての特別な生き物という観点で考えるならば(ゴールデンカムイを見ればわかる通り)、異なる文化が集えばすべての生き物が「神」になる可能性があります

一番簡単なのが牛でしょうか。(どうでもいい余談ですけれど捕鯨日新丸がハラル認証されたので日本流通している鯨肉イスラム圏の人間でも口にすることができます

他に例を挙げるならば日本で神の使いとされている鹿は西欧ではスポーツハンティングとされ毎年ミリオン単位の鹿がスポーツとしての狩りで殺されています

西欧文化では鹿の狩猟管理釣り場ニジマスを釣る感覚と何ら変わらないと考えられます

(クジラは頭がよくて、歌を歌ってコミュニケーションして、親子で行動して、ハーレムを作って、絶滅に瀕していて…という複数クジラの特徴をかけ合わせ、人々の頭の中で考えられている理想クジラ象をスーパーホエールと呼びます。そんなクジラ、いません)



Q.捕鯨残酷


A.捕鯨は今の方法簡単に言うと銛ミサイル)が即死率が高く効率が良いとみなされ採択をされています

動物の命をいただく行為なのでもちろんもっとも苦しまずに屠殺する方法がとられていますし、改善もされています

参考までにですが牛はノッキングガンで気絶させ、その間に血を抜いて絶命させます人間勝手に肉を食べているわけですからエゴは介在しますよね。



Q.捕鯨法律禁止されている(商業捕鯨モラトリアム


A.商業捕鯨モラトリアムとは国際捕鯨取締条約によって商業捕鯨猶予期間が設けられてたことを指します。

よく引き合いにされるのが1983年に発行されたこの附表第10項(e)で


この10規定にかかわらず、あらゆる資源についての商業目的のための鯨の捕獲頭数は、1986年の鯨体処理場による捕鯨の解禁期及び1985年から1986年までの母船による捕鯨の解禁期において並びにそれ以降の解禁期において零とする。この(e) の規定は、最良の科学的助言に基づいて検討されるものとし、委員会は、遅くとも1990年までに、同規定の鯨資源に与える影響につき包括的評価を行うとともに(e)の規定修正及び他の捕獲頭数の設定につき検討する。


と記されています

この項の前半を読むと「商業目的捕鯨数はゼロにする」と読み取れますが後半をでは「遅くとも1990年までにはクジラに対して資源評価を行って、捕獲頭数を検討する」と書かれています

日本はこの後半の資源評価を行うために現在調査捕鯨を行っているわけです。調査捕鯨に関しては同条約8条で定められています


1.この条約規定にかかわらず、締約政府は、同政府適当と認める数の制限及び他の条件に従って自国民のいずれかが科学研究のために鯨を捕獲し、殺し、及び処理することを認可する特別許可書をこれに与えることができる。また、この条の規定による鯨の捕獲殺害及び処理は、この条約適用から除外する。各締約政府は、その与えたすべての前記の認可を直ちに委員会に報告しなければならない。各締約政府は、その与えた前記の特別許可書をいつでも取り消すことができる。

2.前記の特別許可書に基いて捕獲した鯨は、実行可能な限り加工し、また、取得金は、許可を与えた政府の発給した指令書に従って処分しなければならない。

3.各締約政府は、この条の第l項及び第4条に従って行われた研究調査の結果を含めて鯨及び捕鯨について同政府が入手しうる科学資料を、委員会指定する団体に、実行可能な限り、且つ、l年をこえない期間ごとに送付しなければならない。

4.母船及び鯨体処理場の作業に関連する生物学資料継続的収集及び分析捕鯨業の健全建設的な運営に不可欠であることを認め、締約政府は、この資料を得るために実行可能なすべての措置を執るものとする。

未だに調査捕鯨なのはこのモラトリアムが続いているからですね。1990年にはちゃん漁獲量が決まるはずだったのに。おかしいな。



言いたいことは言えたのですっきりしました。またなんかあったら追記します。


シーシェパード妨害活動を行っている船が総何トンなのか調べましたが出てこず…単純に長さは50~60mくらいなんで総トン数200~400トンの船でしょうかね?

対する日新丸は全長約130m、総トン数8030トン。第〇勇新丸などの目視調査船は総トン数700トンです。

人間をこのような狂気の行動に駆り立てるクジラという動物、とんだカリスマ動物ですね。

とりあえずクジラ資源なのか、守るべき生き物なのか、そこらへんはっきりさせたほうがよさそうです。

これだけ書いていたらクジラ食べたくなったのでスーパーで買って帰りますガツが好きなんだよなぁ。酢味噌でさ。

2018-04-17

Quick Tutorial for Pyramidをやってみる

PyramidPython向けWebフレームワーク

Quick Tutorial for Pyramid公式チュートリアル

https://docs.pylonsproject.org/projects/pyramid/en/latest/quick_tutorial/index.html

Prelude: Quick Project Startup with Cookiecutters

$ $VENV/bin/cookiecutter gh:Pylons/pyramid-cookiecutter-starter --checkout 1.9-branch

として、プロンプトの問いに答えるとサンプル的なアプリができる。

ghはgithubか。

引数指定できるテンプレートhttps://github.com/Pylons?q=pyramid-cookiecutter

sqlalchemyを使うものは分かるけど、zodbって何?

アプリは以下のようにして起動する。

$ env/bin/pserve development.ini --reload

このpserveというPythonモジュールアプリ動かしたりする。

01: Single-File Web Applications

超単純なPyramidアプリを作って、WSGIイメージをつかむ。

app.py を書き写して動かしたらHello Worldが動いた。

Analysisの項:
2. Lines 12-14. Use Pyramid's configurator in a context manager to connect view code to a particular URL route.

viewURLの紐付けはconfig.add_routeしてconfig.add_viewする。add_viewしてからadd_routeしても大丈夫だった。

3. Lines 6-8. Implement the view code that generates the response.

viewにはrequestが渡される。requestに色々入ってそう。

4. Lines 15-17. Publish a WSGI app using an HTTP server.

waitressは知らないけど、serveでHTTPサーバ作ってWSGIアプリを公開できるのかな?

Extra creditの項:
1. Why do we do this:
print('Incoming request')

...instead of:

print 'Incoming request'

Python3だから

2. What happens if you return a string of HTML? A sequence of integers?

Inernal Server Errorになった。アプリのほうではValueErrorresponseを返すようにと怒られていた。text/plainとか返すには何かしないとダメっぽい。

3. Put something invalid, such as print xyz, in the view function. Kill your python app.py with ctrl-C and restart, then reload your browser. See the exception in the console?

print(xyz)してみろ、ということかな。1と同じくInernal Server Errorになって、コンソールにはNameErrorが出た。

4. The GI in WSGI stands for "Gateway Interface". What web standard is this modelled after?

CGIかな?

2018-04-10

anond:20180410165141

引数禁止。全部グローバル変数で渡せ」

えー、グローバル変数変わるタイミング分かりづれー

サブルーチンを使うとあちこちに飛んでわかりにくい。同じ処理をするときコピペでそれぞれの場所に同じコードを書きなさい」

むかーし、「ふんどしプログラム」って呼ばれてたやつか。

サブルーチン無しのメインだらだら書くやつ。

プロジェクトで開発した事無い奴らなのか?

それともそのプロジェクトで失敗して変に原点回帰しようとしてるのか?

何れにしても悲惨現場だな。

anond:20180409181511

サブルーチンに値を引数で渡してたら「引数禁止。全部グローバル変数で渡せ」とか、「サブルーチンを使うとあちこちに飛んでわかりにくい。同じ処理をするときコピペでそれぞれの場所に同じコードを書きなさい」とか言われたことがあるわ。

そこまでひどくなくてもレヴューを受けると「うわ、こいつレベル低っ」「この人Excelばっかりでコードいたことないんだろうな」みたいな人ばっかり。

レビュー機能してる現場に遭遇したことない。

2018-04-03

anond:20180403111540

よく考えたらそうだな。

構造体はそのまま引数にする利用が一般的

クラスインスタンスポインタを渡す利用が一般的

なんでそこでは差がつくが、構造体のポインタ渡すなら確かに結果は変わらんな。

anond:20180403111253

メソッド構造体を引数として渡せば言ってるとおり「超でかいint」となって

速度にかなりの影響を与えるはずだが… 違ったっけ?

anond:20180403105350

考え方としては「構造体は超でっかいサイズのint」クラスは「常にint」

で、速度が必要な処理で構造体そのもの引数としてやり取りしようとすると超でっかいintであるが故にメモリ読み込み/書き込み時間を取られる。

逆にクラス(のインスタンス)はint(メモリアドレス)のみをやり取りするので比較して高速になる。

逆に、インスタンスアドレスしかやり取りしないので、メソッド呼び出し時にはインスタンスの内部変数がそのままになってしまう。

これはメリットのように見えるがそうでない場合もあるので、

一般には座標計算等の最初から計算し直す系のデータについてはクラスではなく構造体で管理するパターンの方が多い。

2018-03-18

()を見ると

自動的に直前を関数名に、中身を引数脳内変換

そしてそれはどんな関数なのだろうとしばし妄想してしまう。

2018-03-17

anond:20180316232605

Excelを持っているならはてブJSONデータをそのまま取り込めるそうだからそのデータを使ってブクマが付いた時間グラフが描けそう。

例えばこんな感じでJSONデータが取れる。 http://b.hatena.ne.jp/entry/jsonlite/https://anond.hatelabo.jp/20180315232737

Excel持ってないならスクリプトCSVにしてしまえばいい。

rubyスクリプトだとこんな感じ。(Mechanize無し版に差し替え。なぜMechanizeを使っていたかと言うとはてブUser-Agentが空だと値を返してくれないから。ちょっと長くなるが自前でUAを渡すようにした。)

#!/usr/bin/ruby

require 'uri'

require 'net/http'

require 'json'

require 'csv'

site = ARGV[0]

json_uri = URI.parse("http://b.hatena.ne.jp/entry/jsonlite/%s" % [site])

response = Net::HTTP.start(json_uri.host, json_uri.port) do |http|

http.get(json_uri.path, "User-Agent" => "Mozilla/5.0")

end

json_data = JSON.parse(response.body)

json_data['bookmarks'].each do |bookmark|

puts [bookmark['user'], bookmark['timestamp'], bookmark['comment'], bookmark['tags'].to_s].to_csv

end

引数に取得したいページのURLを入れる。hatebuapi-csv.rbという名前で保存したとしたらこんな感じで実行。

% hatebuapi-csv.rb https://anond.hatelabo.jp/20180315######## > 結果.csv

このケースでは朝の7時から爆発的にブクマが付き始める様子が分かる。

https://imgur.com/66FlJIB

2018-01-16

anond:20180113193527

大丈夫引数をいんすうって読んじゃうのは誰でも通る道だから

2018-01-13

引数

れいんすうじゃなくてひきすうなのな

なんであいつら教えてくんねーんだよ今までずっといんすうって読んでたぞくそくそ

2017-12-04

anond:20171204164348

サブルーチンの先頭で引数をチェックして異常ならすぐそこでリターンするって書き方は、ガード節って名前がついてるくらいだし、OKだと思う。

swiftだとガード節が文法に組み込まれてる。

2017-11-10

おっさんメソッド引数なしで長くなる理由

どうやら「メソッド細かくして~戻り値変数作って~引数渡しして~」という行為が面倒くさいというか短期記憶で処理しきれなくなるようだ

引数なし戻り値もほぼなしのメソッドが5行くらい並んでる(使うデータや出力されるデータは外部のどっかの広域変数に置いてある)、というのはその間に何か挟まれるとカタマリとしてわけがからなくなるから

過去おっさんメソッド/サブルーチンが長いのは現代プログラミングに触れてない世代だったからという解釈があったのだが、ぶっちゃけ加齢が主原因であった


40歳になったからわかったわ

2017-11-09

MVCモデルがよくわからない

正確には「じゃあコレをどう分けて書けばいいのか」がわからない

変数持つ場所とか引数受け渡しとかクラスの分け方とかそういうのがわからない

特に変数を持つ場所相手を知らなかったら相手に指示できないじゃないか

まとまってる本でも読むしかいか

2017-10-13

anond:20171013100220

puts警察だ! Rubyにおいて単純な文字列を特段厳密な制御なしに改行つきで標準出力に出したい場合printではなくputsを使え!

print msg + "\n" # back-slash
puts msg

ちなみに文字列nilだったり空文字列だったりする場合は改行が出ちゃうので注意だ!

あと文字列が改行で終わっている場合はその改行を流用してputsはなにもしないのでこれも注意だ!

それと引数文字列でも配列でもない場合はまずto_aryが試され(てそのあとto_sす)るのでものによってはprint+"\n"とは違う表示になるぞ!

うん、この例外挙動覚えて慎重に運用するくらいなら最初からprintでいいな!

2017-10-10

Ruby界隈の人

動的vs静的型言語みたい話題炎上案件があると、クラスメソッド引数は全部覚えているから型チェックいらないとか、くだらないスペルミスなんて自分はしない、そんなのするのは頭悪いとか、そんな発言ポンポン飛びだして、スキル高い低い以前にまとまった量のコードを書いたことあるのか疑わしいレベルの人が高濃度で混じってる。

2017-10-09

#addと#plus

arr = [1,2,3] というコレクション配列リスト)があったとして

arr.plus(4)は[1,2,3,4]というコレクションを作って返す

arr.add(4)は元のオブジェクトを[1,2,3,4]にする

うん、まあよろしい

が、これがIDE上になると「要素をいっこ追加したいけど書き方なんだったかな」という意図うろ覚えでplusメソッドを使ったりする(そして案の定増えない)

レシーバを変更するかどうかのコメントとかついて欲しい


あと、ネット上でアフィなのかなんなのか知らないけどこの手の解説書いてる人は関数が実行された結果どうなるのかまで書いて欲しい

上の例だと「引数を追加する」としか書いてないようなのが多い(追加した結果どうなるんだろうって気にならないのだろうか)

どうせコピペなんだろうけども

2017-09-14

引数が可変のメソッドを作りたい

引数がA,B,C,D,Eあるとして

A,Bだけ渡したら、内部でC,D,Eを自動的解釈するメソッドが作りたかった

 

これ、例えば

func hogeAll(A a, B b, C c, D d, E e) {

 全部入りメソッド

}

func hoge(A a, B b) {

 ここでhogeAllを呼べば解決する

}

 

んだけど、ABCDE全てに対して有/無のメソッドを全て定義すると果てしなくなる

これをスッキリ書ける言語ってのを知らない

 

方法があるとしたら引数Classを作ってしまう手がある

実際にこれはよくやられると思う

 

HikisuClass hikisu = HikisuClass.create(a,b)  // これで内部で自動的にc,d,eを解釈する

 

でもメソッド一個のためにクラスを作るのってクソ面倒だなと思う

もう一個方法があるとしたら、Classに値を入力したあとメソッドを実行する方法

 

Hoge hoge = new Hoge()

hoge.a = a

hoge.b = b

hoge.do()

 

しかしこれも長くなり煩雑だ、結局

hoge(a,b,null,null,null) みたいなことになりそう

 

ちなみに何でそういうことをしたいかと言えば、自然言語がそうなってるから

大抵の引数が省略されるし、省略されたりされなかったりする、非常に柔軟なんだ

もちろん受ける側の作り込みが大変になるが、ちゃんとリーダブルに作ろうとしたらそっちのほうが良いんじゃないかと思える

引数のoptional,require指定できればもっと良い

例えばコンソールで使うオプションとかって自由だよなあ

 

これってポリモーフィズムあたりの話か?

 

___

 

追記:

あ、DIコンテナみたいな話かな

でも結局煩雑だし使いたくない

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