再帰を使わない順列生成 : 1から9の数字を1回ずつ使ってできる数を、小さい方から順に列挙する(アルゴリズム編)

1から9の数字を1回ずつ使ってできる数を、小さい方から順に列挙するアルゴリズムです。 次に小さい数を求めるアルゴリズム ある数Nが与えられたとき、その数に使用されている数字を使用してできる数で、Nの次に大きい数を生成します。 ① Nの10^iの桁を、n[i]…

Groovyのクロージャ ④Groovyで独自のDSLの作成

背景 JenkinsというCIツールではGroovyのコードでCI挙動を記述できるJenkins pipelineがあります。 ここではGroovyのDSL(Domain-Specific Language:ドメイン固有言語)が使われています。 DSLにはクロージャが効果的に使用されています。 今回は独自のDSLの作…

Groovyのクロージャ ③名前解決方法(resolveStrategy)の挙動

背景 JenkinsというCIツールではGroovyのコードでCI挙動を記述できるJenkins pipelineがあります。 Jenkins pipelineではGroovyのDSL(Domain-Specific Language:ドメイン固有言語)が使われています。 DSLにはクロージャが効果的に使用されています。 今回は…

Groovyのクロージャ ②クロージャのthisとownerとdelegate

背景 JenkinsというCIツールではGroovyのコードでCI挙動を記述できるJenkins pipelineがあります。 Jenkins pipelineではGroovyのDSL(Domain-Specific Language:ドメイン固有言語)が使われています。 DSLにはクロージャが効果的に使用されています。 今回は…

Groovyのクロージャ ①クロージャ内のメソッド呼び出し基礎編

背景 JenkinsというCIツールではGroovyのコードでCI挙動を記述できるJenkins pipelineがあります。 Jenkins pipelineではGroovyのDSL(Domain-Specific Language:ドメイン固有言語)が使われています。 DSLにはクロージャが効果的に使用されています。 今回は…

「ピーターからの問題」1から9までを使って分数の穴埋め算。解答のJavaScriptプログラム

Qiitaでこちらの問題をみたので、解いてみました。 これをjsで解けと会社の上司に言われたんですが全然わからん。誰かわかります?笑 pic.twitter.com/ZM6VmigaVQ— ケイセイ@JavaScriptと仲良くなりたい (@keisei_otsuka) 2020年2月2日 アルゴリズム 考える…

JavaScriptでPython風のzip_longest関数を実装する

こちらの記事でPython風のzip関数を実装しました。 yucatio.hatenablog.com 今回はzip_longest関数を作成します。以下のように、各配列の同じインデックスの要素をまとめます。 const a1 = [1, 2, 3] const a2 = ["Jan", "Feb", "Mar"] const a3 = ["Garnet"…

JavaScriptでPython風のzip関数を実装する

JavaScriptにzip関数がなかったので実装してみました。以下のように、各配列の同じインデックスの要素をまとめます。 const a1 = [1, 2, 3] const a2 = ["Jan", "Feb", "Mar"] const a3 = ["Garnet", "Amethyst", "Aquamarine"] zip(a1, a2, a3) #=> [[1, "J…

プログラミングで初学者のときにつまづいたこと

プログラミングでつまづいてきたことというブログ記事を見たので、私も書いてみます。 satoru-takeuchi.hatenablog.com mizchi.hatenablog.com 自己紹介 記事をリンクしたお2人と違って大したプログラマではないですが、システムエンジニアとして働いて10年…

eclipseのJavadocの警告設定の各設定値の意味【後編】

Javadocの記述が不完全なときに警告を出そうとして、どのような設定があるか調べたメモです。 チーム開発でJavadocをどの程度書くかどうか、意識を統一するのにこの記事をご活用いただければと思います。 前編の記事 未指定の Javadoc タグ メンバーの可視性…

eclipseのJavadocの警告設定の各設定値の意味【前編】

Javadocの記述が不完全なときに警告を出そうとして、どのような設定があるか調べたメモです。 チーム開発で、Javadocをどの程度書くかどうか、意識を統一するのにこの記事をご活用いただければと思います。 Javadocの警告設定 Javadocコメントを処理 誤った…

eclipseの警告表示の重大度レベルごとの挙動

前回の記事で、eclipseの警告レベルをどれにするか迷ったので、各重大度レベルでの挙動を確認しました。 yucatio.hatenablog.com eclipseの警告表示の設定 eclipseを使用していると、黄色の波線と警告マーク(3角形の中に!)が表示されたことがあるでしょう。 …

うっかりミスを防ぐeclipseおすすめ設定6つ【後編】

前編に引き続き、うっかりミスを防止(警告)するeclipseの設定をまとめました。 前編の記事 セミコロン2つを検知 何も記述されていないブロックを検出 @Overrideのつけ忘れを防ぐ 環境 あとがき 前編の記事 yucatio.hatenablog.com セミコロン2つを検知 行末…

うっかりミスを防ぐeclipseおすすめ設定6つ【前編】

こんにちは。プログラミングでうっかりミスをしてしまうブログ主です。特にスペルミスがひどいです。 レビューで指摘されると申し訳無い気持ちになるので、そのようなうっかりミスを防止(警告)するeclipseの設定をまとめました。 空白の表示 スペルチェック …

Pythonで辞書が格納されたリストを複数のキーで並べ変える

辞書を格納したリストがある時、複数キーで並び変える方法を紹介します。例えば、以下のような辞書が格納された配列で、まずprice順に並び変え、priceが同じだったら、weightの順番に並び変えたい場合の方法です。 list1 = [ {'name': 'ぶどう', 'price': 50…

htmlのテーブルに使われるタグが覚えられないと思ったときに読む記事

こんにちは。htmlのtable関連タグが覚えられないブログ主です。特に<tr>と<td>がごちゃごちゃです。が、それぞれの何の英単語の略であるかを覚えたところ、ごちゃごちゃにならずにすみました。今回はそれぞれ何の英語の略なのかと、日本語訳を紹介します。 テーブル</td></tr>…

Pythonのconfigparserでセクションがない設定ファイルを(無理矢理)読む

背景 PythonでJavaのMANIFEST.MFファイルを読んで表示するプログラムを書く必要がありました。 MANIFEST.MFファイルは以下のような形式です。 Manifest-Version: 1.0 Built-By: yucatio Build-Jdk: 11.0.5 Created-By: Maven Integration for Eclipse Implem…

エラーメッセージ内では、"登録できる画像は3つまで"のように"つ"でものを数えてはいけない

仕事で印象に残っている小ネタ。 普段はEC関連のシステムエンジニアをしています。とあるアプリをチームメンバーが改修した時の話です。 改修内容 担当しているサービスで、商品画像の上限枚数を5枚から12枚に変更する改修をしました。 私のチームが担当して…

JavaScript Ruby Pythonで文字列中に変数を展開できる機能の名前と書き方

こんにちは。JavaScriptとRubyとPythonが頭の中でごちゃごちゃになっているブログ主です。 JavaScriptとRubyとPythonの文字列中に変数を展開できる機能の名前と書き方が頭の中でごちゃごちゃです。 RubyなのにJavaScriptの記法で書いてしまい、なぜ思った通…

JavaScript Ruby Pythonの配列やキーバリュー要素を展開したり多重代入したりする操作の名前と記号

こんにちは。JavaScriptとRubyとPythonが頭の中でごちゃごちゃになっているブログ主です。 JavaScriptとRubyとPythonの配列とキーバリューオブジェクトが頭の中でごちゃごちゃです。ググろうとしても、「あの、アスタリスクつける操作、なんだっけ」となり、…

date-fnsを使用してカレンダー作成する(その4: Material-UIのmakeStylesとpropsを使用してスタイルを変更する)

前回は組み込みコンポーネントをMaterial-UIのコンポーネントに置き換え、簡単なスタイルを適用しました。 今回はuseStyleにプロパティを渡して、プロパティごとに表示を切り替えます。 ★前回の記事 yucatio.hatenablog.com 今回の変更点 日曜日と土曜日の日…

date-fnsを使用してカレンダー作成する(その3: Material-UIのコンポーネントを使用して見た目を整える)

前回までで基本的なカレンダーの機能を作成することができました。今回は見た目を整えて行きましょう。Material-UIを利用します。 ★前回の記事 yucatio.hatenablog.com 今回の変更点 余白を作成する Material-UIのボタンを使用する ボタンを左端、中央、右端…

date-fnsを使用してカレンダー作成する(その2: React hooksを利用して月を移動する)

前回の記事の続きです。前の月や次の月に遷移できるようにします。Reactバージョン16.8.0から登場したReact hooksを使用します。 ★前回の記事 yucatio.hatenablog.com 要件 カレンダーを表示したい 最終的にはこちらが出来上がります↓ デモ : date-fns calen…

date-fnsを使用してカレンダー作成する(その1: 今月のカレンダーを表示する)

簡単なカレンダーを作成します。date-fnsというJavaScriptの日時ライブラリを使用します。 デモ : date-fns calendar 要件 今月のカレンダーを表示したい 仕様 今月のカレンダーを表示する 日曜日を行の一番始めにする 今回はこのような表示まで完成させます…

Pythonでひらがなカタカナの国語辞典の見出し語順ソート

前回の記事の続きです。 yucatio.hatenablog.com 今回はひらがなに加えて、カタカナも国語辞典の見出し語順に並べます。 大辞泉の見出しの配列のページから、ひらがなとカタカナに関係ある部分をを引用します。 見出しは、五十音順に配列した。一字目が同じ…

Pythonでひらがなの国語辞典の見出し語順ソート

Pythonなどのプログラミング言語では文字列のソートは 辞書式順序 - Wikipedia でされます。 これは、1文字目をみて、違う値であれば、その順序を、同じ値であれば2文字目を比較して…ということを繰り返す方法です。 例えば、 'はっか', 'はっぱ', 'はつか',…

date-fnsの日本語ファイルから月名を取得する

date-fnsの日本語ファイル( date-fns/index.js at master · date-fns/date-fns · GitHub )に、['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']という配列が用意されていたので、自分のプログラムから使えないかと…

date-fnsの日本語ファイルから曜日を取得する

date-fnsの日本語ファイル( date-fns/index.js at master · date-fns/date-fns · GitHub )に、['日', '月', '火', '水', '木', '金', '土']という配列が用意されていたので、自分のプログラムから使えないかと調べました。 調査結果 ja.localize.day(index, …

JavaScriptでn個ずつ配列を分割する

JavaScriptで配列を指定された個数ずつに分割します。 例えば、 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] という配列を3個ずつ分割するのであれば、 [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]] という配列になります。 実装方針 配列から一部を通り出すのには、 Arra…

date-fnsで「○分前」「約○時間前」「○日前」など現在時刻からのざっくりした時間経過を表示する

やりたいこと Twitterのように、投稿日付を表示したい。「○分前」「○時間前」「○日前」など、現在時刻からの経過時間をざっくり表示したい。 date-fnsのformatDistanceToNowでできる date-fnsのformatDistanceToNowを使えば、現在からのざっくりした経過時間…