タグ

ブックマーク / blog.mudatobunka.org (49)

  • JavaScript で割り算の商と余りを求める - 無駄と文化

    JavaScript で整数同士の割り算をして商と余りを求める方法について解説します。 まず2つの整数 m, n を受け取って商と余りの組を返す関数 div を定義しましょう。 const div = (f=>(u=>u(u))(x=>f(y=>x(x)(y))))(g=>m=>n=>m>=n?(b=>b?1+g(m-n)(n)(1):g(m-n)(n)(0)):(b=>b?0:m)); はい、書けました。 試しに 14 ÷ 3 = 4 ... 2 を計算してみます。 「商: 4, 余り: 2」と正しく表示されていますね! 私からは以上です。 解説 (蛇足) 上記のコードをどのように錬成したか分かりたい人向けです。 まず再帰を使って普通に div を書きます。 /** * @param {number} m 割られる数 * @param {number} n 割る数 * @returns

    JavaScript で割り算の商と余りを求める - 無駄と文化
    todays_mitsui
    todays_mitsui 2023/10/14
    初学者向けにJavaScriptで割り算の商と余りを求める方法をていねいに解説しました #駆け出しエンジニアと繋がりたい #駆け出しエンジニア応援 #今日の積み上げ #プログラミング学習 #侍エンジニア
  • Rust で借用 (参照) を取り扱うときの大事な心構え

    はっきり云って Rust は難しいです。 Rust は GC を持たず、 所有権という概念の上に構成されています。 そのため所有権のある値そのものを扱うより、借用 (参照) した値を扱うほうが難しくなりがちです。 なぜ借用のほうが扱いが難しいかと云うと、 所有権を持っていれば 自由に変更したり, 不要になったら破棄したり, 他の変数に所有権を移動したり できる一方で、借用は (人様のものを借りている状態なので) 可能な操作に制限がかかるからです。 もう一歩踏みこんで関数から借用を返そうと思うとさらに難しくなります。 借用を返す関数を書くためにはライフタイムを意識せざるを得ません。 関数スコープの中であればライフタイムを適切に推論してくれることが多いですが、スコープを超えて関数の外に借用を返そうと思うとライフタイム注釈を明示的に書かなければいけないことが増えます。 今回はそのように借用 (参

    Rust で借用 (参照) を取り扱うときの大事な心構え
    todays_mitsui
    todays_mitsui 2023/09/29
    書きました。Rust に叱られながら暮らしています
  • バイブスで覚える Rust - 借用 - 無駄と文化

    ご存知の通り Rust 言語はとても厳格な型システムを持っています。 そのためノリで書こうとしてもコンパイラや Language Server から「ここ、型が合わないよ」と言われて実行すらさせてもらえないことが稀によくあります。 ですが、そんなことばかり言っても初学者にとってはテン下げだと思うのでバイブス重視での解説を試みます。 今回のテーマは「借用」です。 変数 x や型 T の前に & がついたら借用 変数 x が &x になってたり、型 T が &T になってたりしたら借用です。 &mut x とか &mut T みたいなパターンもあって、なんか & がついてるのでこれも借用です。 「借用」とは何か?これからノリで説明します。 関数の型を見ていく fn f(arg: T) - 引数をうやつ 引数の型が T になってたら、その関数は引数をうやつです。 与えた引数はわれるので返っ

    バイブスで覚える Rust - 借用 - 無駄と文化
    todays_mitsui
    todays_mitsui 2023/07/18
    ピースな愛のバイブス🦀
  • return; で何が返されるか【Perl ネタ】 - 無駄と文化

    Perl ネタです。 sub f { return; } sub g { return undef; } 上記の f と g は違うという話をします。 違いのわかるコード sub f { return; } print Dumper f; # => '' print Dumper { map { $_ => f } (1..4) }; # => '{ 1 => 2, 3 => 4 }' sub g { return undef; } print Dumper g; # => 'undef' print Dumper { map { $_ => g } (1..4) }; # => '{ 1 => undef, 2 => undef, 3 => undef, 4 => undef }' return; しているサブルーチンを使って構成されている HashRef はなんだか思わぬ形をしています

    return; で何が返されるか【Perl ネタ】 - 無駄と文化
    todays_mitsui
    todays_mitsui 2023/07/10
    Perl ネタです
  • substr のマジカルな挙動を再現したい - 無駄と文化

    Perl に substr という関数があります。文字列を部分的に切り出したり、部分的に置換できる関数です。 典型的な使い方はこんな感じ、 my $s = 'The black cat climbed the green tree'; # 4文字読み飛ばしてから5文字取り出す my $color = substr $s, 4, 5; print $color; # => 'black' # 14文字読み飛ばしてから7文字分を別の文字列で置換する substr $s, 14, 7, 'jumped from'; print $s; # => 'The black cat jumped from the green tree' さて、Perl 界隈で有名な書籍「初めての Perl」を読んでいたら、この substr 関数について次のように書かれていました。 ここで当に素晴らしい機能を披露しま

    substr のマジカルな挙動を再現したい - 無駄と文化
    todays_mitsui
    todays_mitsui 2023/06/29
    Perl を学び始めていちばんキモかった substr について書きました。
  • PHPカンファレンス福岡2023にスタッフとして参加していました - 無駄と文化

    2023年6月24日に行われた PHPカンファレンス福岡2023 に運営スタッフとして参加していました。 当日は受付に座って主に Twitter をしていました。 4年ぶりの開催 コロナの影響を受け、実に4年ぶりの開催でした。 3年前、会場も日程も決まっているにも関わらず情勢を顧みて中止が決定されるのをみてとても寂しい気持ちになったのを覚えています。 そのころから「次回開催のときには運営側にまわってPHPカンファレンス福岡を支えたい」と思っていました。 実際に運営メンバーに手を挙げて、手伝うことができて良かったです。 多くの人に参加してもらい、刺激を受けて楽しんでもらって、スポンサーのみなさまにも喜んでもらえて、当に最高な気持ちになりました。 「どうしてこんなに勢いがあるんですか?」という質問の答え合わせ 懇親会の中で「福岡の PHP コミュニティはなぜこんなに勢いがあるんですか?」と聞

    PHPカンファレンス福岡2023にスタッフとして参加していました - 無駄と文化
    todays_mitsui
    todays_mitsui 2023/06/28
    PHPカンファレンス福岡たのしかったー
  • インナーブロックの情報を親ブロックから取得する (WordPress, カスタムブロック) - 無駄と文化

    todays_mitsui
    todays_mitsui 2022/03/11
    @wordpress/data の小ネタです。久しぶりに技術系の記事書いた。[WordPress][Gutenberg][ブロックエディタ]
  • スマートで便利な Polyfill 配信サービス Polyfill.io - 無駄と文化

    todays_mitsui
    todays_mitsui 2019/09/01
    JavaScript の Polyfill が数多く揃えられていてどれも簡単に読み込める Polyfill.io というハイパー便利サービスがあるんですが。感動レベルに便利だったので心を込めて記事にしました。
  • 不動点コンビネータで無名再帰を作る流れをおさらい - 無駄と文化

    どうも、趣味で関数型言語を書いている者です。 長らく関数型言語やってなかったら無名再帰を忘れかけていたので、おさらいがてら不動点コンビネータで無名再帰を作る流れを書き下します。 以下、Haskell の文法で書かれたコードをもとに説明していきます。 無名再帰とは? まずはモチベーションの確認から。 通常、再帰関数は、 sum :: Num a => [a] -> a sum [] = 0 sum (x:xs) = x + sum xs といったように、関数定義の中で自分自身を呼ぶことで再帰処理を記述できます。 この例では、 sum (x:xs) = x + sum xs の部分で自分自身を呼んでいますね。 では、以下のような制約をイメージしてみてください。 関数に名前を付けることができない 関数定義の中で自分自身を呼ぶことができない このような制限の中で再帰を書きたくなったらどうすればいい

    不動点コンビネータで無名再帰を作る流れをおさらい - 無駄と文化
    todays_mitsui
    todays_mitsui 2019/07/04
    書きました。無名再帰はたまに書かないと忘れるので。
  • サービス・プロジェクト改善のモチベーション - 無駄と文化

    この記事は GYOMUハック/業務ハック Advent Calendar 2018 の5日目の記事です! 4日目の担当は Kouta Sasaki さん、6日目の担当は otoan_u さんです。 どうも、未経験からたったの7年でエンジニアになった三井です。 プログラムを書き始めて16年ほど、プログラムを業務に活かしはじめて7年ほどになります。 今年に入って人生で初めて「プログラマ」という肩書きで働き始めました!ちなみに昨年は管理部所属で情シスやってました! プログラマやり始めて1年経ったので、なんとなく自社サービス・自社プロジェクトを改善していくモチベーションについて書きますね。 機能追加と改修・修正が繰り返されてゆく自社サービス 企業としてサービスを開発し、提供している場合、リリースして終わりというわけにはいかず、当然 機能追加と改修が繰り返されていくことになります。 もし大きな不具合

    サービス・プロジェクト改善のモチベーション - 無駄と文化
    todays_mitsui
    todays_mitsui 2018/12/05
    激エモエンジニアリングポエム書きましたー☝😉
  • チームのモチベーションを高める施策としての「夢見るユニコーン🦄」の導入について - 無駄と文化

    チームの生産性を高めるためにはチーム全体の雰囲気が重要です。 ポジティブで「やれる」という期待にあふれたチームは高い生産性を発揮します。 チームでお互いに讃えあい、感謝を伝え、モチベーションを高める施策として「夢見るユニコーン🦄」を導入しています。 このように、 ルール(流れ) 定例ミーティングにおいて「先週もっともチームのために尽力した人」に ユニコーン🦄 が贈られる 贈られた人は一週間手元に ユニコーン🦄 を置いておく(見せびらかす) 次週の定例ミーティングで ユニコーン🦄 を持っている人が思う 「先週もっともチームのために尽力した人」に ユニコーン🦄 を贈る 毎週繰り返し ポイント! ユニコーン🦄 は贈る人から送られる人へ感謝の気持ちを伝えます ユニコーン🦄 は世界に一匹(一頭?)だけ、珍しい生き物で、幸運を呼び寄せます 「夢見るユニコーン🦄」の取り組みはアメリカ西海

    チームのモチベーションを高める施策としての「夢見るユニコーン🦄」の導入について - 無駄と文化
    todays_mitsui
    todays_mitsui 2018/11/08
    近況です。真面目にやってます。
  • 魔法は無い - 無駄と文化

    高度な技術は、ともすると魔法のように見えるものです。 実際、世の技術は「複雑さや煩雑さを隠ぺいしてシンプルに目的を達成するために発達してきた」という側面があるので、技術の裏側について詳しくない人からして魔法のように見えるのは当然と言えば当然です。 エンジニアが作るシステム・プログラムも同様に、技術に詳しくない人から見れば魔法のように見えるようです。 私は、エンジニアでない人と技術との向き合い方はそのようなもので構わないと考えています。 しかし、技術を身に付けたいと願って自ら技術の世界に足を踏み入れた人はこの限りではありません。 魔法使いになるためにいちばん最初にするべきことは『魔法は無い』と自覚する事だと思います。 一見魔法のように見える技術でも、その裏側には馬鹿馬鹿しいほど地道で泥臭い実装が隠されているというのはよくある事です。 技術者として魔法の(ように見える)技術を身に付けるには、馬

    魔法は無い - 無駄と文化
  • Scrapy のクロール実行時 win32api の ImportError でコケる (Windows10, Python 3.5.2, Scrapy 1.5.0) - 無駄と文化

    Scrapy でバグっぽい挙動にぶつかったので状況と解決策の記録です。 クローラーの実行に失敗する いつものように Scrapy でクローラーを走らせようとしたらエラーでコケました。 エラーのログはこんな感じ。 2018-01-27 14:36:06 [scrapy.utils.log] INFO: Scrapy 1.5.0 started (bot: foo) 2018-01-27 14:36:06 [scrapy.utils.log] INFO: Versions: lxml 4.1.1.0, libxml2 2.9.5, cssselect 1.0.3, parsel 1.3.1, w3lib 1.19.0, Twisted 17.9.0, Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32

    Scrapy のクロール実行時 win32api の ImportError でコケる (Windows10, Python 3.5.2, Scrapy 1.5.0) - 無駄と文化
    todays_mitsui
    todays_mitsui 2018/01/27
    Scrapy 実行中にエラーでコケたのでご報告させていただきます。
  • いろいろなパッケージから提供されている ListT モナド変換子の違いについて調べてみる - 無駄と文化

    この記事は Haskell (その2) Advent Calendar 2017 の10日目の記事です。あけましておめでとうございます。 今回は ListT モナド変換子 について調べたことをまとめます。 hackage で検索をすると ListT と名の付くモナド変換子を提供しているパッケージは4つほど見つかります。 Control.Monad.Trans.List - transformers パッケージ Control.Monad.List - mtl パッケージ ListT - list-t パッケージ Pipes - pipes パッケージ このうち mtl パッケージで提供している ListT は transformers パッケージからインポートされているだけなので実装としては同一のものです。 また、pipes パッケージで提供されているものは Pipes と組み合わせて使う

    いろいろなパッケージから提供されている ListT モナド変換子の違いについて調べてみる - 無駄と文化
    todays_mitsui
    todays_mitsui 2018/01/03
    Haskell (その2) Advent Calendar 2017 の10日目を担当させていただきました!!!!
  • Haskellでλ計算のインタプリタを作っていこう ~ その2. パーザ - 無駄と文化

    引き続き Mogul という名前のλ計算インタプリタを作っていこうと思います。 前回、λ式を表現するデータ型を定義したので、今回はパーザを書きます。ソースコードを読ませて抽象構文木を生成するところまでです。 ソースコード全体は GitHub に置いておきます。 github.com Mogul の構文 パーザを書くにあたってまずは構文を決めなければいけません。 Mogul の構成要素で重要なのは 変数, 関数抽象, 関数適用 そして 関数定義 です。ぞれぞれ以下のような構文にしようと思います。 変数 変数の構成要素として許される文字は 英数字 + アンダースコア _ です。 ただし、英小文字は必ず1文字で一つの変数として解釈されます。英大文字, 数字, アンダースコアは複数連なっていればまとめて一つの変数だと解釈されます。 いくつかの例を挙げましょう、 a や x や FOO や FOO_

    Haskellでλ計算のインタプリタを作っていこう ~ その2. パーザ - 無駄と文化
    todays_mitsui
    todays_mitsui 2017/10/08
    書きました。今回は関数型パーザをぶん回して抽象構文木を作るところまでです。
  • Apps Script を使ってスプレッドシートに Google アナリティクスのアカウントを一覧表示する - 無駄と文化

    今回は Google アナリティクスのアカウント情報一覧をスプレッドシートに出力する方法をご紹介します。 アナリティクスは無料のプランでさえ 100 アカウントまでサイトを管理できるんですが、50 を越えてくると標準の管理画面ではさすがに見通しが悪くなってきます。 ときには自分の管理しているサイト一覧をスプレッドシートに並べて一覧したくなりますよね。そこで、Google Apps Script です。 出来上がりのイメージは、こんな感じです、 では早速コードを見ていきましょう。 gist.github.com putAccountsList() を実行すると Google アカウントの認証画面が現れ、Google アカウントが持つ全ての アカウント×プロパティ×ビュー の情報をスプレッドシートに書き出してくれます。 いつものように日語コメントをたっぷりと書き加えていますので、内容に興味が

    Apps Script を使ってスプレッドシートに Google アナリティクスのアカウントを一覧表示する - 無駄と文化
    todays_mitsui
    todays_mitsui 2017/09/26
    書きました。アナリティクス×Apps Script ネタで記事書いたらウケるんじゃないかと思いまして。
  • λ計算のインタプリタを作ろうとしている話 - 無駄と文化

    先月、八耐に参加してから 長年個人プロジェクトとして取り組み続けてきた『λ計算インタプリタを作りたい』という欲が再燃しています。 欲が燃えているのは結構なことなので、実際に作ろうと思います。その宣言のための記事です。 作ろうとしているもの λ計算(λ-calculus) における β簡約 の過程をエミュレートしてλ式が簡約さていく様を逐次(step-by-step)で見せていくようなインタプリタを作ろうと思います。 「λ計算の」と銘打ってますが、もう少し意欲的に コンビネータ理論 とλ計算の両方を同じ文脈の中に記述したものを評価できるように文法を拡張しようと考えています。 手っ取り早く実例を見せましょう。 お馴染みの S, K, I というコンビネータが次のように定義されていて、 S x y z = x z (y z) K x y = x I x = x というλ式をハット記号 ^ などを

    λ計算のインタプリタを作ろうとしている話 - 無駄と文化
    todays_mitsui
    todays_mitsui 2017/09/17
    書きました。取り組んでいこうと思います。
  • 八耐 in 東京 に参加してきました。 - 無駄と文化

    福岡で働いていた頃からの友人である 岩くん(@grem_ito) に声を掛けてもらったので 八時間耐久作品制作会(仮) in 東京 に参加してきました。 ふり返りつつレポートしてみます。 会場 会場は株式会社ドリコムのカフェスペースです。地上17回!高い!広い! 参加者は全員で13名ほど。 エンジニアが多いですが、デザイナーやプランナーの方も参加していました。 題材を決める 名前の通り8時間で何か作るイベントなので、題材を決めなければいけません。 この題材決めが難しいんですよね。 「作るものは何でも良いし、一つのものが完成しなくてもいいし、作りかけの物の続きでもいい」と言われてはいるものの、やっぱり何か成果物を出したいという下心は湧いてくるんで。 最初は手製で布張りのハードカバーを作ろうかと思ってたんですが、ちょっと 作業すぎる かなと思ってやめました。 結局、昨年作った Lazy_

    八耐 in 東京 に参加してきました。 - 無駄と文化
    todays_mitsui
    todays_mitsui 2017/08/31
    ブログ書きました。イベントに参加して Haskell 書いたこととか。
  • Python3 で言語処理100本ノック 2015 - 第3章 - 無駄と文化

    乾・岡崎研究室が公開している 言語処理100ノック 2015 に取り組んで行きます。 使用する言語は Python3 です。 第3章です。一部の方が大好きな 正規表現 の章です。 私は…、あんまり好きじゃないですね。 第3章: 正規表現 Wikipediaの記事を以下のフォーマットで書き出したファイルjawiki-country.json.gzがある. 1行に1記事の情報がJSON形式で格納される 各行には記事名が"title"キーに,記事文が"text"キーの辞書オブジェクトに格納され,そのオブジェクトがJSON形式で書き出される ファイル全体はgzipで圧縮される 以下の処理を行うプログラムを作成せよ. 20. JSONデータの読み込み Wikipedia記事のJSONファイルを読み込み,「イギリス」に関する記事文を表示せよ. 問題21-29では,ここで抽出した記事文に対して実

    Python3 で言語処理100本ノック 2015 - 第3章 - 無駄と文化
    todays_mitsui
    todays_mitsui 2017/06/03
    引き続き言語処理100本ノックに取り組んでいます。正規表現の章です。
  • Python3 で言語処理100本ノック 2015 - 第2章 - 無駄と文化

    まさか続くとは。 乾・岡崎研究室が公開している 言語処理100ノック 2015 に取り組んで行きます。 使用する言語は Python3 です。 第2章まで出来たんでまとめます。 第2章: UNIXコマンドの基礎 hightemp.txtは,日の最高気温の記録を「都道府県」「地点」「℃」「日」のタブ区切り形式で格納したファイルである. 以下の処理を行うプログラムを作成し,hightemp.txtを入力ファイルとして実行せよ.さらに,同様の処理をUNIXコマンドでも実行し,プログラムの実行結果を確認せよ. hightemp.txt の内容はこんな感じ、 高知県 江川崎 41 2013-08-12 埼玉県 熊谷 40.9 2007-08-16 岐阜県 多治見 40.9 2007-08-16 山形県 山形 40.8 1933-07-25 山梨県 甲府 40.7 2013-08-10 和歌山県

    Python3 で言語処理100本ノック 2015 - 第2章 - 無駄と文化
    todays_mitsui
    todays_mitsui 2017/05/06
    引き続き、言語処理100本ノック取り組んでます。