「関数」を含む日記 RSS

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

2019-09-12

[] Haskell学習カリキュラム

  1. Haskell文法を学ぶ。
  2. 圏論を学ぶ。
  3. 圏論知識を基にして、再びHaskellを見直す。

Haskell文法書だけを読む

圏論Haskell対応関係

対象
関数

となっていることを、最初は知らなくてもOK

単にHaskell文法を学ぶだけで、背後にある考え方(圏論)は、まだ知らなくてもOK

圏論の基礎

圏論は元々数学で考案された考え方なので、直接的には代数やとトポロジー知識必要になるが、そこまでのレベルは求めていない。

とりあえず、プログラミングで使える程度の初歩的なレベル理解で十分。

圏論の具体的な応用例としてHaskellを見直す。

圏論知識を基にして、Haskell文法や仕組みを見直してみる。

注釈対象定義して、関数は射を定義していることが分かる。

ファンクター、アプリティブ、モナドで、手続き型の順次・反復・分岐表現できることが分かる。

2019-09-10

anond:20190910103350

それは助かる。

かに聞きたいところが全くかかれてなかった。

AI意思決定を作るのに凄く興味があって

人工知能本とか読み漁ってるんだ。最終的にUnityゲームを作ろうと思ってる。

まず、Listの<>の名称がListではない別のものになっている件。

このRewardやPlanはどこから来ているのか。別の.csファイルクラスとかから来ているのか。

class Plan {

public GoalType goalType; // 実行する目標種別

 public List<Reward> rewardProspects; // 報酬の見込み

}

//実行可能プランリストアップ

List<Plan> plans = EnumerateExectablePlans();

//最も評価の高いプランを算出

float maxValue = 0;

Plan execPlan = null;

foreach( var plan in plans ){

//プラン現在欲求と、プラン報酬に基づいて評価

float value = EvaluatePlan( plan );

  if( value >= maxValue ){

execPlan = plan;

}

}

//一番評価値の高かったプラン目標を設定

実行可能プランリストアップするための関数

List<Plan> EnumerateExectablePlans() {

List<Plan> plans = new List<Plan>();

//記憶登録されているオブジェクトを列挙

  List<Objectobjects = EnumerateMemolizedObjects();

  //オブジェクトに紐づいたプランを、リストに追加

foreach( var object in objects ){

plans.Add( objects.plan );

}

   ・

   ・

   ・

}

上記は謎が多くて分からない。結果をList<Plan>として保存?するみたいなイメージなのか?

List<Plan> plans = new List<Plan>();??

やっぱり初歩的なところから勉強しなおしたほうが良いかもしれない。

List系は苦手だった。

ソース元のサイトは以下

ゲームAI – 基礎編(2) – 『はじめてのエージェントベースアーキテクチャ

http://tech.cygames.co.jp/archives/2364/

2019-09-09

Cygamesじゃないけどデー子でエンジニアして退職して一年以上経ってた

当時の事を思い出したので箇条書きでやべーところを書いてみる。

未来のない業界で売ってたからそろそろやべーんじゃないかな。

今は新しい会社面白い仕事できてて心底やめてよかったと思ってる。

スクショ取ってエビデンスとか作ってる時間は本当に無駄だった。

世の中の新卒の子たちもこの会社やべえなと思ったらはやく見切りつけてほしい。

2019-09-07

行動主義心理学10分で理解する

はじめに

行動主義はJ.B.Watsonが最初提唱した心理学哲学だ。この哲学は、現代では下火のように見なされてたり、あるいは棄却すべき対立仮説のように扱われることが多い。

しかし、実際には認知心理学者、あるいは認知科学者が槍玉にあげる行動主義は、誤解に基づくものか、そうでなくても「その行動主義自称している行動主義者は現代はいないよ」と言わざるをえないような藁人形論法であることが少なくない。

そこで、行動主義誕生から現代的な展開までの歴史について、ごくごく簡単にまとめてみようと思う。

Watson の行動主義

行動主義は、Watson が 1913 年に提唱した。

Watson の基本的な主張は、ご存知の通り「心理学対象客観的に観察可能な行動に限る」というものだ。

当時の心理学は Wundt の提唱した「内観法」を用いて人間の持つ「観念連合」を記述する、というものであった (余談だが、内観法は単なる主観報告ではない。これもよくある誤解である。Wundt の提案した心理学は、繰り返しの刺激に対し、同じように報告するよう徹底的に訓練することにより、人間の持つ感覚の組み合わせについて首尾一貫とした反応を得ようという研究方針である)。

Watson が反対したのは、Wundt の方法である人間自己報告」を科学データとすることである。それに代わって、刺激と反応という共に客観的に観察可能事象関係研究対象とすべきであると主張した。Watson は Pavlov の条件反射概念を用いれば刺激–反応の連関を分析可能であるし、人間の持つ複雑で知的な行動も刺激–反応の連鎖に分解できると考えた。

また、情動や愛のような内的出来事は、身体の抹消 (内臓筋肉) の微細運動から考察された。Watson の心理学が「筋肉ピクピク心理学」と揶揄される所以であるが、現代身体性を重視する心理学認知科学を考えると、(そのまま受け入れることはできないにせよ) あながちバカにできない部分もあるような気がする。

さて、認知心理学者、認知科学者が批判するのは多くの場合 Watson の行動主義である場合によっては、次に登場する Skinner と Watson を混同して批判する。

注意しなければいけないのは、Watson の行動主義立場を取っている行動主義者は、この地球上にはもはや存在しないという点である。従って、Watson 批判歴史的な批判以上の何物でもなく、現代科学議論ではない。

では、行動主義を自認する現代研究者が寄って立つ立脚点は何なのか? その鍵になるのが、Skinner の徹底的行動主義である

Skinner の徹底的行動主義

Skinnerは、Pavlov の条件反射を「レスポンデント条件づけ (いわゆる古典的条件づけ)」、Thorndike の試行錯誤学習を「オペラント条件づけ」として区別し、概念、および実験上の手続きを整備した。そのためあってか、Skinner は20世紀で最も影響力のある心理学者 1 位の座についている。

Skinner は、科学目的を「予測 (prediction)」と「制御 (control)」とした。ここでは説明しないが、そのためにの強力な武器として概念としては「随伴性 (contingency)」、方法論として「単一事例研究」などを導入した。 彼の心理学は他の心理学とは大きく異なる用語法、研究方法を持つため、「行動分析学」と呼ばれる。

徹底的行動主義では、Watson が扱ったような客観的に観察可能な「公的事象」に対し、「私的事象 (ようは「意識」のこと)」もまた、同様の行動原理によって説明できると主張した。つまり、内的出来事も「行動」として捉えられる、ということだ。文字通り「徹底的」に行動主義なのである。実際に、Skinner の著書の中には「知覚」「感じること」「思考すること」といった、内的な事象についての考察も多く、それらは行動分析学重要対象であるとはっきりと述べている。

逆に Skinner が反対したのは、「心理主義的な説明である。心的な活動実在するし、それ自体研究対象ではあるが、「心的な活動によって行動が駆動される」という因果的な心理主義に対しては、Skinner は反対であった。つまり、「原因としての心的概念」の導入に反対したのだ。この点を間違えると、Skinner を完全に誤解してしまう。

ただし個人見解としては、行動分析学ほとんど顕在的な行動以外実際には扱っていないし、扱うための具体的な方法論を発展させてもいない。そこに関しては批判を免れないとは思う。

行動分析学の他に重要な特徴として以下の 3 つが挙げられる。

(1) 「反応」を運動パターンとして定義するのではなく、「どんな結果事象を引き起こすのか」から定義する機能主義
(2) 人間の営みを超えた真理探究ではなく、行動の予測制御という現実的有効性の上昇を目指すプラグマティズム
(3) 仮説構成体・仮説群から研究演繹するのではなく、実験結果から法則抽出する帰納主義

なお、帰納主義については「え?でも科学って演繹帰納の両輪で回ってるんじゃないの?」と考える人いるかもしれない。

Skinner は「行動について我々は知っているようでまるで知らない。そのような若い科学にはまず、具体的なデータ必要なのだ」と考えた。そのため、Skinner は環境 (刺激) と反応の間の関数関係データの蓄積を重視した。

まりあくまで当時の知的状況を鑑みての方針だったということは重要な点だ。

ちなみに、Skinner は自身の徹底的行動主義区別するため、Watson の行動主義を「方法論的行動主義 (methodological behaviorism)」と呼んでいる。

また、次に述べる Skinner の同時代の行動主義も、同様に方法論的行動主義とまとめられることが多い。

Skinner と同時代の行動主義 (新行動主義)

Watson のアイデアを発展的に継承したのは Skinner だけではない。

ただし、Skinner 以外の新行動主義に与している研究者は、現代には皆無なので、あくま歴史的な展開として捉えるべきである

Guthrie

Guthrie は刺激と反応の間にできる連合は「時間的接近」によって生じることを述べた。また、Hull や Tolman と異なり、心理学研究対象客観的に観察できる行動に限定すべきであるという姿勢は堅持した。

Hull

Skinner と大きく異なる点として、Hull は「仮説構成体による演繹」を重視した。「習慣強度」という潜在変数を導入したモデルを考案し、その潜在変数挙動の変化により行動の予測に挑戦した。

Hull の研究問題点は、いたずらに潜在変数いくらでも増やせてしまい、理論肥大化する危険はらんでいるためである特に Hull や Skinner の時代は、行動に関するデータがまだまだ少なく、行動研究には強固な地盤がなかったのである。Skinner は「理論必要か?」という論文理論研究批判していているのだが、Skinner が批判たかったのは Hull の心理学だったのである

Tolman

Tolman は刺激と反応の間に「仲介変数」を導入した心理学者だ。いわゆる S-O-R の枠組みである。彼は「潜在学習」の研究によって、「学習」と「成績」は必ずしも一致しないことを見出した。そのことから、刺激と反応の間には、それを仲介する隠れた変数がある、と考えた。

Tolman からすると、「感情」「期待」といった内的な出来事も、刺激と反応の間に存在する仲介変数である

現代視点で見ると、認知心理学下地になるアイデアを提出したのが Tolmanだ。

ところで、Tolmanと地続きである認知心理学もまた、徹底的行動主義立場からすると方法論的行動主義立脚した心理学である。そう、私たち現代心理学徒のほとんどは、意識せずとも方法論的行動主義なのだ

なぜか?認知心理学でも、公的事象と内的事象を分ける。内的事象には直接アクセスできないので、公的事象の「操作」と計測を通じて内的事象研究をする。公的事象操作 (実験条件) を通じて、内的事象定義を行う。これは、Stevens-Boringの「操作主義」と呼ばれる。操作主義では、操作と計測の対象公的事象であり、内的事象については「研究者間での合意」に基づいて議論される。つまり、例えば「この条件によって反応時間に変化があったら、作業記憶に影響があったということにしようね」というのが、研究集団によって暗に共有されている、ということだ。これが、認知心理学が「方法論的行動主義」と呼ばれる所以である

Skinner 以降の展開

1980年代以降、Skinner の弟子筋の研究者たちの間で、Skinner 以降の行動主義を巡って、研究方針多様化しつつある。その中でも最も影響力のある 3 つについて、簡単に紹介したい。

Heyes の機能文脈主義

Skinner の行動分析学プラグマティック科学であると言われているが、実は Skinner 自身は表立ってプラグマティズムに述べていたわけではない。例えば、近い時代を生きたパースジェームズデューイを直接引用して主張を行なっていたわけではない。一方、Heyes の機能文脈主義の特徴は、Skinner の徹底的行動主義の持つプラグマティズムをより明示的に推し進めた点にある。

Skinner は心的概念を導入することを否定した。私的出来事 (内的過程) は外的な行動の原因ではなく、それ自体独立した行動として捉えるべきだと考えたためだ。また、心的概念による説明は、行動分析学目的である予測制御寄与しないと考えたことも一因である

Heyes の場合、そのような概念でも、予測と変容 (influence) に寄与する場合は、十分に有用であると考える。

具体的には、「態度」を測る質問研究が好例だ。質問紙で測る「態度」は Skinner であれば「質問紙に回答行動」として見なされる。しかし、Heyes の場合「そのような研究問題点は、測ったところで、実際の行動を変容させるための操作変数が同定できないことだが、最終的に行動の予測と変容を目指すという目的がぶれない限り、足がかりとしては有用である」と主張する。

このような、伝統的な行動主義比較してある意味で軟化した態度を、Heyes は「行動主義心理学自由主義化」であると述べている。

少し脇道に逸れるが、Heyes は行動の「制御 (control)」とは言わず、「変容 (influence)」と表現する。これは、「制御」だと決定論的に操作できる印象を受けるが、実際の行動には確率的な変動性が必ずついてまわるため、表現を柔らかくする意図である

また、機能文脈主義では、研究の真偽の真理基準にも明示的にプラグマティズムを導入している。

行動主義科学には必ず目的がある (多くの場合、それは現実問題解決と結びついているが、そうでないものもある)。Heyes の標榜するプラグマティズムは、目的にかなうかどうかが、研究の真偽を決める、ということだ。

これは、「うまくいけばなんでもok」という主観主義ではない。問題解決としての科学として、発見というよりは創造プロセスで知見が生まれるということだ。ただし、解決されるべき「目的」の方はどうしても恣意的にはなってしまう、と Heyes は述べている。

Baum、Rachlin の巨視的行動主義

巨視的行動主義の特徴は以下の 2 つにまとめられる。

(1) 分析単位として「随伴性」ではなく「相関性 (correlation)」

Skinner はレスポンデント条件づけは刺激−反応という 2 項随伴性、オペラント条件づけは刺激–反応–刺激という 3 項随伴性によって定式化し、随伴性こそが考察されるべき基本単位であると考えた。

巨視的行動主義は、そうは考えず、よりマクロな「強化子–反応率」の相関性行動主義心理学分析単位であると主張している。

まりミクロな刺激と反応の関係を捉えるよりも、マクロ環境と行動の関係を捉えることを重視しているのが、巨視的行動主義である

行動主義心理学目的予測制御に置くならば、結局はマクロ記述で十分であり、その方が有用であるというのが彼らの主張だ。

(2) 内的出来事の導入の拒否

Skinner は外的な行動とは別に内的な出来事もまた行動として捉えられると考えた。巨視的行動主義ではそうは考えない。

彼らは、内的な出来事を「潜在的な行動 (covert behavior)」と呼んでいるが、心理学はそれを直接対象とする必要がないと論じている。なぜなら、潜在的な行動が実際に効力を持つならば、最終的には顕在的な行動 (overt behavior) として表出されるためである

このことを彼らは「時間スケールを長くとる (temporally extended)」と表現している。瞬間瞬間に我々には豊かな精神活動 (mental life) があるが、それを相手取らなくても、長い時間観察すれば、観察可能な行動として現れる、ということである

Staddon の理論的行動主義

Staddon の主張は、他の行動主義と大きく異なる。彼の場合は、心的概念の導入を許容する。そして、それを用いた「理論」こそが心理学必要であると考えた。その点は、実験結果から法則抽出する帰納を重視した Skinner の立場とは異なる。また、「心的概念による説明」は Skinner の反対した「原因としての内的過程」でもあり、それを採用する点も Staddon の特徴である

行動主義心理学目的は、予測制御だけではなく「説明」にもあると彼は主張した。Staddon の言う「説明」とは、概念同士の関係によって、現象記述することである。わかる人にとっては、David Marr の「アルゴリズム表現」の位置心理学位置づけている、と考えればすっきり理解できるように思う。

Staddon はやや言葉遣いが独特で、概念連関による記述を「メカニズム」と呼んでいる。そのメカニズムは必ずしも生理学的基盤を前提しないで、あくま心理学レベルでの記述である

ようは、行動のアルゴリズム的な理解なのであるが、事実 Staddon は「私の言うメカニズムとは、アルゴリズムのことである」とも述べている。

Skinner は反応率 (時間あたりの反応数) を分析の基本単位としたが、Staddon はより多元的である。ただし、なにを分析単位とするかは、それ自体研究立脚点を示しているものである。それを Staddon は「The model is the behavior」という言葉表現している。

それでは認知心理学となにが違うのか?と思われるかもしれない。Staddon いわく、行動主義心理学伝統的に堅持してきた「強化履歴」は理論的行動主義でも重要であるというのが大きな違いらしい。つまり、行動や内的状態は、それまでの環境との相互作用に基づいている歴史性を有しているとういうのだ。当たり前といえば当たり前なのだが、その点を強調するか否かである

また、Staddon は「動的過程 (dynamics)」を重視した点も特徴である。他の行動主義は、基本的には刻一刻と変化するような過程というよりは、安定した反応の推移を対象としてきた。ややテクニカル議論ではあるが、現代では複雑な時系列データを扱う方法もたくさん用意されているので、動的な過程を取り上げるのは科学として自然な展開であると思う。

一方、認知心理学では「コンピュータアナロジー」のように、入力–出力関係を固定して考えることが多い。動的に内的状態は推移していることを重視した点も、Staddon の理論的行動主義認知心理学を分ける特徴の 1 つであるしかし、個人的にはこの差異は徐々に埋まっていくのではないかという期待もある。

おわりに

以上、行動主義 100 年の歴史簡単に振り返ってみた。

色々なアイデアはあるものの、基本的現在「行動主義」を標榜している人がいれば、Skinner の徹底的行動主義である。Watson、Hull、Guthrie、Tolman に依拠している者はいない。従って、歴史批判ではなく、科学議論として行動主義批判したければ、Skinner を相手にするべきである

行動主義はとにかく誤解されがちである。それは行動主義心理学者サイドにも問題があるにはあるのだが、科学において、無理解責任基本的には不勉強側に帰せられるべきだろう。

個人的には、アンチ信者より詳しくあってほしい。認知心理学者も、自分たちが寄って立つフレームワーク出自はどこにあって、なにに対するアンチテーゼだったのかをきちんと理解してみたら、何か発見があるかもしれない。

2019-09-05

1+1が2にも3にも4にもなるってよく言うけど

1+1が2にも3にも4にもなるって脳筋陽キャがよく言うけど、

ここで謎の演算子「+」を持つモノイドを考えてみたい。

まず、前提として、1,2,3,...はモノイドの元 α1,α2,α3,...の簡易記法とする。

モノイドの単位元はα0とする。

モノイドの次の元を得る関数SUCCが存在し、

α_n+1 = SUCC(α_n)と表すことができることとする。

まり

α2 = SUCC(α1)
α3 = SUCC(α2) = SUCC(SUCC(α1))
...

である

α0 は単位元であるので、単位元定義より、

α0 = α0 + α0
α1 = α1 + α0
α2 = α2 + α0
...

である

ここで、1+1が2にも3にも4 という定義より、

α1 + α1 = α2 = SUCC(α1)
   = α3 = SUCC(SUCC(α1))
   = α4 = SUCC(SUCC(SUCC(α1)))
...

となる。

これを満たすことができる関数SUCCは幾つか考えられるが

その1:

defun SUCC(x) = α0

その2:

defun SUCC(x) =
        if (x equals to α0) then α0
        else x

等とすることができる。

その1は 1bit の排他的論理和

α0 + α0 = α0
α0 + α1 = α1
α1 + α0 = α1
α1 + α1 = α2 = SUCC(α1) = α0

その2は 1bit の論理和

α0 + α0 = α0
α0 + α1 = α1
α1 + α0 = α1
α1 + α1 = α2 = SUCC(α1) = α1

である

脳筋って頭いいんだね

2019-09-04

これをやるだけで上位1%になれるRプログラミングTIPS

Rはプログラミング苦手な人にも覚えやす

が、そのためか、プログラミングの得意な人からしたら「ええ・・・」となるような行動を初学者が取りがちに思える

そこで、とりあえずこれだけ守ってほしいというアドバイスを書きました。

エラーが起きたとき

あれこれするより先にエラーメッセージを読め。ぶっちゃけエラーメッセージを読むだけで上位10%だ

あと、エラーメッセージとWarning messageは違うものからな。行間を読む前に行を読め

エラーメッセージの内容がわからなかったらエラーメッセージをコピペしてググれ

日本語サイト微妙だったとき英語でググれ

Stack Overflowにだいたい同じエラーで困ってる人が既に投稿してる

エラーは生じてないが思い通りの挙動になっていないとき

定義した変数の中身を逐一確認して予定してる内容になってるか確認しろ

試行錯誤しすぎてわけがからなくなったら変数を全部削除して一番上から実行し直せ

変数の全削除は rm(list=ls()) でできる

実行し直してるときに、一行ずつ予定通りの挙動になってるか確認しろ

変数の型を逐一str()関数確認しろ

予定通りの型になっているか特に、因子型と数値型、因子型と文字型の混同で生じるミス多い

原因と思しき箇所の関数の使い方が正しいか確認しろ

ヘルプを見て使い方が合ってるのか確認

関数名 R 」でググれ

いきなりやりたいことを全部書くんじゃなくてデータを縮小 (例えば、一部の日にちのデータ) したり、処理を簡略化して小さいプログラムを作って徐々に拡張しろ

作図が思い通りにできないとき

関数名でググれ

日本語ダメなら英語でググれ

画像検索を使え (google検索の「画像」タブ)

自分が描きたい図に近い画像からそのウェブサイトに飛んでいけ

知らなきゃ検索できないから、よく使う用語は覚えておけ

例えば・・・

group (変数グループ化、例えば「条件毎に折れ線を引く」)

facet (「●●ごとに図を描く」)

alpha (透過度)

tick (目盛り線)

axis (軸)

background (背景)

legend (凡例)

例えば「●●条件毎に線を引きたいけど、geom_line()でどうしたらいいのか?」と思ったら「geom_line group」で検索したら、だいたいやりたいことをやってる画像が出てくるので、それを参考したらいい

検索がうまく引っかからない

日本語ダメだったら英語検索しろ (再掲)

“how to” と入れるとだいたいヒットする

例えば「how to change colors gradient ggplot2」でググると色をグラデーション様に変える方法が出てくる

人に質問するときのコツ

「○○でうまくいきますか?」「〇〇だとダメですか?」と質問してくる人、本当に多いけど、その質問は、以下の2つの理由で良くない

そもそもプログラムなんて同じ目的を達成するのに何通りも答えがあるので、「○○でうまくいきますか?」という質問には「それは書き方次第だなぁ」としか言いようがない

・試せばわかるのだから、人に聞くより実行してみたらいい。エラーの数だけお前は強くなる。エラーを受け取るのを恐れるな

答えやす質問は以下のような形だ

「○○を実行したら、こういうエラーが生じるんですけど、エラーの内容が理解できません」

「○○という形のデータを作りたいんですけど、この処理だとこの形にならないのはどこが原因ですか?」

「○○という処理を行ってくれる関数が探しても見つからないんですけど、ありますか?」

2019-08-31

anond:20190831143701

指数関数的成長を考えると長さに価値はない、とワアは思います

2019-08-28

php 関数を実行する関数

call_user_func

まぁコールバックなんだけどコールバックていうより、第一引数を省略するタイプ関数を実行できない環境で、関数を実行する必要があってしょうがなく使うって感じ。

具体的に言うとsmartyでの引数なしでの関数呼び出し。

2019-08-25

anond:20190825151139

オー人事オー人事 脳内BGM再生された。あれ曲名はなんなんだろう。ググれ

チャイコフスキー 弦楽セレナーデ だった。

Ctrl+P って Ctrl+Vの間違い? C V はセットで使いますからねぇ。

エクセルが使えるとは……必要な処理をするマクロが作れることでは?関数ググるよりもFunction作った方が速くね?

2019-08-24

[] プログラミングHaskell 第2版

https://www.lambdanote.com/products/haskell

著者前書き

狙い

Haskell純粋関数型のプログラミング言語です。

Haskell を使うことで、明瞭簡潔にして正確なソフトウェアを素早く開発できます

本書の対象読者は、その Haskell を学ぼうとする現役のプログラマー大学生高校生などの幅広い方々です。

プログラミング経験がなくてもかまいません。

読者が何も知らないことを前提に、あらゆる概念についてゼロから説明していきます

そのために例題と練習問題も慎重に選びました。

題材のほとんどは、科学的な考え方になじみがあれば、16 才くらいでも十分に理解できるでしょう。

2019-08-22

anond:20190822094152

関数型プログラミング支援がない、昔のJavaとかPHPとかCで関数型やろうとしてネスト深くするやつとか、それを見て「関数型は糞だな」って思うやつとか、まあ、あるあるやね

anond:20190822094152

パイプライン演算子いいよね・・・

材料(ふるいにかけた(小麦粉)、卵、牛乳

|> 混ぜて

|> 焼いて

|> 食う

やっぱ関数型でも、命令は順に列挙する形の方が人間の頭にフィットするのか

命令クッキング

  1. 小麦粉をふるいにかける
  2. そいつ牛乳を加える
  3. そいつに卵も加える
  4. そいつらをよく混ぜる
  5. そいつを焼く
  6. 食らいつくす


関数クッキング

これを食らいつくす → (

  こいつを焼いてから →(

    こいつらを混ぜてから →(

      これをふるいにかけてから →(小麦粉

      牛乳

      卵

    )

  )

2019-08-21

自動指定URLからファイルダウンロードするマクロ

って独学で作れる?

ちなみに自分事務職1年半。

マクロは組めない。

関数はindirect index muchが限界

前職はマクロが組める人がたくさんいたけど転職したら全然いなくて、APIから成果をDLする作業を手作業毎日行っているが面倒だし生産性なさすぎて時間もったいない…。

ちなみに、ダウンロードページの際には日付を選んだり、項目を選んだりと、条件にチェックを入れる必要もある。

これってマクロ自動化できないかなーって。

無理ならサクッと諦めるからOK

追記

自分システムもなにもかじったことないです。増田にかけば詳しい人いるかと思い投稿した次第。

2019-08-14

保育園用の証明書発行マシーン(人力)

こんにちは証明書発行マシーンです。

みなさん、事業所の総務が毎年、何枚の保育園用の提出書類を書いているかご存知ですか?

もちろん事業所によりますが、うちはだいたい年間500枚です。大企業ならもっと多いです。

保育園用の証明書は2種類あって、「これから入園したい人のための書類」と「すでに入園している人がちゃんと勤務しているか確認する書類」です。

「いうて名前かいて判子押すだけでしょ?」

違います。氏名・住所・就業場所仕事内容はもちろん、過去6か月の出勤日数、過去の産育休の取得状況、育短制度活用の有無、過去6か月の賃金夜勤の有無・単身赴任の有無・育休短縮の可否・勤務パターンを書き込んだ上で、シフト表の提出などを行います

いいでしょう。保育園には入るべき人がいて、優先順位をつけるべき。わかります

でもせめて、せめて、

市ごとに違う様式統一してくれ~~~~~~~~~~~~~~~~~~~~!!!

PDFじゃなくてExcelを公開してくれ~~~~~~~~~~~~~~~~~~~~~~~~!!!

Excelを公開しててもシートに保護かけるのやめてくれ~~~~~~~~~~~~~~!!!

お願いします・・・。手書きは勘弁して・・・。せっかくExcel公開しててもシートが保護されてるから関数既存データからデータひっぱることもできないし。市ごとに様式全然違って煩雑だし……。

また、1歳こえても育休手当金をもらい続けるためには、保育園に落ちたという証明必要なので、入る気がない人のためにも、せっせと入園チャレンジ用の証明書を作り続けます

リスト化して公印をポンと押すだけじゃだめか・・・。ひとりひとり作らないといけないのか…。

「せめて県内様式統一してほしい」「PDFしか様式を公開しない自治体は滅びろ」

この2点だけでも押さえてほしい。

証明書発行マシーンは、普段からずっと証明書発行マシーンな訳ではなく、他の業務も当然あるので、休日出勤して証明書を発行しています。タスケテ

2019-08-06

anond:20190806125002

元増田にいってねえんだよなあ

桁と倍を混同する指数関数増田にいってるんだよなあ

2019-07-28

ちょっと気持ちいい事

関数名や変数名を考えるときに、シンプル単語に集約できたとき

これは名作だ…って一人で感動する。

まあ、codicでそれっぽい言葉で作っちゃう時の方が多いけど。

2019-07-23

rewrite_rules_array がタイミング依存で実行されない

WordPressにはパーマリンク機能があるんだけどそれは内部のrewrite_ruleとかい機能実装されている

そんで、rewrite_ruleはまぁ文字の通り書き換えルール何だけど、リクエストパスを良きように読み替えてくれる機能です。

んで、どうやってrewrite_ruleを書き換えるかと言うと、add_filter で 'rewrite_rules_array' にルールを追加するのが一般的っぽいです。

それを更新するために $wp_rewrite->flush_rules() を実行するんだけど、これ実は、アクセスごとに実行しては行けない機能っぽい。下記みたいな記事でinitフックで実行する用例がネット上には転がってるんだけど、これを鵜呑み実装するとバグる

https://qiita.com/M-Ikezawa/items/22d24455f776065865ea

wpdocs.osdn.jp にすらこの方法が書かれてるの…まずくね?

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Rewrite

具体的にどうバグるかと言うと、rewrite_rules_array に設定した関数ときどき実行されません。

なんで rewrite_rules_array に登録した関数が呼ばれないかと言うと、WP_Rewrite::wp_rewrite_rulesっていうメソッドの中でget_option('rewrite_rules') して、DBに保存していたルールがなければ、新規ルール作成するっていう処理をしている。その新規ルール作成する処理ってのの一環でrewrite_rules_arrayに登録した関数も呼ばれます

まぁこDBアクセスしているのが怪しいですね。怪しいんですよ。そのものズバリflush_rules()を実行するとこのDB値を一旦削除して、ルールを作り直すっていう処理が動くんです。

なので並列アクセスしていると、DBの中身が作成されたり削除されたりといった動作が繰り返され、「flush_rules()実行しているのに、rewrite_rules_arrayに登録した関数が呼ばれない」といった動作になります。つまりバグます


flush_rules() 実行する代わりに、パーマリンクの設定を更新するべきだった

そもそも rewrite_rules_array に登録された処理はアクセスごとに実行されるべきものではありません。WordPressでのリライトルール上記の通りDB管理されていて、DBに保存されたものを使い回すので、rewrite_rules_array の実行は一度だけ行われれば十分になるような処理を書くべきです。rewrit_ruleは処理が重いので毎回ルールを書き換えるような利用は想定外なのでしょう。

そして rewrite_rules_array に登録した関数を変更したら、WordPressパーマリンク設定で設定を変更するボタンを押せば、処理内部でflush_rules()が実行され、rewrite_rules_array に登録した関数の処理が適用されます

rewrite_rules_array 登録関数で動的にルールを作りたい。

できるといえばできるけど、毎回アクセスごとに動作させるのがNGとなると実質出来ないってことになります。rewrite_ruleで対応するのは諦めましょう。

2019-07-20

anond:20190720173550

次に予想されるコード提案

されるから携帯とかの入力補完の強化版でしょう。

タブ連打してたら関数丸ごとコピペされるよ。

イチ関数程度の量じゃの著作権が認められないというならまあ、うーん議論余地があるのかもしれない

2019-07-19

昔は、CentOSサーバ管理もやったのになー。 ハードの抜き差しもしたのになー。

Macもいじってたのになー。

最近事務職は、エクセル関数ネスト入れ子に)したり、してるじゃねーか。

やべーなー。転職してーなー。

2019-07-18

誰だよ、Excelはvlookup関数が出来れば中級者っていったのは。求められているのはネ申エクセルやん。

全く転職先が見つからへんー。

anond:20190718114255

どっちでもいいし、べつにどっちでも判定ロジックに影響はない

それはユーザーが画面から入力した内容が格納されているグローバル変数かもしれないし、DB接続してテーブルからデータを取ってくる関数かもしれない

anond:20190718114010

そのロジックでは、

「親と喋ったことある 」は変数なんですか?関数なんですか?

anond:20190718113048

元増田の主張はこういうことなんだよ!親が居る居ないは関係ない

以下のis普通()関数の判定ロジックは正しくないのではないか?

function is普通() {
	if (!親と喋ったことある      ) return false;
	if (!親に触ったことある      ) return false;
	if (!親に相談事する          ) return false;
	if (!親は困ったら助けてくれる) return false;
	if (!親の所在がわかっている  ) return false;
	if (!親に連絡いつでも取れる  ) return false;
	return true;
}
アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん