@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

tengu_p

blog.magnolia.tech 実際、便利です。 自動テストの実行中にデバッグプリントすると、出力結果を探すのが大変です。 制御文字を使わなくても赤色で表示されるので、出力結果が簡単に見つかって便利です。 でも、毎回次のように書くのは面倒です。 特にIMEを…

LeetCodeをやってみた

解いてみた問題は次の2つです。 https://leetcode.com/problems/two-sum/ https://leetcode.com/problems/design-hashset/ 速く動くプログラムを書くために、データ構造とかアルゴリズムを考える力を求められる感じです。 今の時点の僕は「これを求めてなか…

RubyMineでMarkdownに埋め込まれたPlantUMLをプレビューする

[memo] IntelliJでMarkdown内のplantumlをPreviewで表示できるようにする - Qiita ⌘, -> Languages & Frameworks -> Markdown を選んでから、PlantUML framework isn't installed と書いてあったら、それをクリックして以下のようになればオッケー。 いまは…

組織パターン

組織パターン作者:James O. Coplien,Neil B. Harriosn翔泳社Amazon Sigh.We should talk.It’s far more nuanced than that.Go read @jcoplien’s “Organizational Patterns Of Agile Development”.— Grady Booch (@Grady_Booch) May 7, 2022 Grady Booch*1が…

Ubuntuをアップグレードしようとして22.04を見つけられなかった話

WSLで使っているUbuntuを軽い気持ちでアップグレードしようと思いました。 Releases - Ubuntu Wiki Ubuntu 22.04 LTS がリリースされています。今使っているのは20.04です。 ledsun@MSI:~/textae►lsb_release -a No LSB modules are available. Distributor …

あるリファクタリング

次のような関数がありました。 どうしたもんかなあ?と悩みました。 import validateAnnotation from './validateAnnotation' import convertBeginAndEndToInteger from './convertBeginAndEndToInteger' export default function ( spanContainer, entityCo…

質問・雑談会(仮)

会社の人とslackのハドルで30分の技術にまつわる雑談をしました。 ハドルなので顔出しなし、時々画面共有あり、slackでURL送ったりくらいのコミュニケーションでした。 予想していたより、だいぶ体験が良いです。社外の勉強会で久しぶりに会った人と「最近な…

レコード削除時 ActiveRecord::StaleObjectError は発生する?

楽観的ロックシリーズの三回目です。 楽観的ロックを使ったRuby on Railsアプリケーションを作って動きを確かめる - @ledsun blog 楽観的ロックをあつかう編集画面 - @ledsun blog レコード削除時は ActiveRecord::StaleObjectError は発生するのか? します…

楽観的ロックをあつかう編集画面

楽観的ロックを使ったRuby on Railsアプリケーションを作って動きを確かめる - @ledsun blog の続きです。 楽観的ロックで競合が起きるとActiveRecord::StaleObjectErrorが起きます。 エラー画面が表示されます。 編集画面に競合エラーを表示 ActiveRecord::…

WSLにDockerをインストールする

結論から言うと、なんのことはなくUbuntuにインストールするのと同じです。 Dockerをインストール Install Docker Engine on Debian | Docker Documentation に従って、インストールします。 普段fish-shellを使っています。 読み替えが面倒臭いので、各コマ…

RubyMineからWSL上のRubyを動かす

Ruby on Railsアプリケーションのソースコードを読もうとしました。 ソースコード読むにしてもアプリケーションを動かしたいです。 WSLにソースコードをおき、環境を作ってRuby on Railsアプリケーションを起動しました。 おもむろにVS Codeで読み始めたので…

楽観的ロックを使ったRuby on Railsアプリケーションを作って動きを確かめる

昔からある機能です。 Rails 0.9.3からの機能あったようです*1。 よくわかっていないので、説明してみます。 Railsガイドの説明 Railsガイドでは次のように説明されています。 Active Record クエリインターフェイス - Railsガイド 楽観的ロックでは、複数の…

PHPで作っているTODOリストアプリケーションにPRGパターンを適用する

PHPでTODOリストをつくる、追加まで - @ledsun blog で、タスクを追加したときの画面遷移にPRGパターンを使うと良いことに気がつきました。 次のように実装しました。 <head> <title>TODOリスト</title> </head> <body> <form method="post"> <input type="text" name="name" autofocus> <button>追加</button> </form> <ul> </ul></body>

人はFat Modelを恐れサービスを求め ドメインモデルは貧血に至る

この文章は祈りです。 主にRuby on Railsアプリケーションを想定した話です。 Ruby on Railsアプリケーションでは、Fat Model問題という問題が起きることがあります。 ドメインオブジェクトが肥大化しメンテナンスしにくくなる問題です。 Fat Model問題に対…

Romeは本当に速かった

RomeプロジェクトのJavaScriptフォーマッターがリリースされました。 rome.tools ちょうどPrettier を使っているプロジェクトがあったので比較してみました。 本当にめちゃくちゃ速い。prettierで8秒掛かるのが0.5秒とかで終わる。— ぎゃばん@手洗い (@ledsu…

rails ujsを学ぶ

一昔前のRailsではJavaScriptを簡単に使う機能としてrails ujsがありました。 Rails ガイドにも説明があります。 railsguides.jp 「UJS: Unobtrusive(控えめな)JavaScript」 主な用途は www.inodev.jp JSの処理で確認ダイアログとして「マジでログアウトす…

PHPでTODOリストをつくる、追加まで

PHPを勉強しています。 WebアプリケーションとしてPHPを動かすことが出来たので何か作ってみましょう。 公式マニュアルをみていたらsetcookie関数を見つけました。 Cookieに値が保存できるならTODOリストアプリケーションが作れそうです。 ここでイメージし…

PHPでエコーするWebアプリケーションをつくる

スラスラ読める PHPふりがなプログラミング (ふりがなプログラミングシリーズ)作者:リブロワークスインプレスAmazon を参考にしています。 環境構築時にインストールしたMAPMで、Apacheが自動的にインストールされてPHPが実行できます。 環境設定はこれに全…

$( document ).ready()

コールバック関数が実行されるタイミング $( document ).ready()はJavaScriptでDOMを操作するに当たって、DOMの読込完了を待つためのjQueryの便利関数です。 ブラウザにloadイベントしか実装されていなかった時代がありました。 loadイベントは次の2つを待ち…

PHPを学ぶ

数ヶ月後にPHPを扱う可能性が出てきたのでゆるゆると勉強しようと思います。 もっと近づいてからガッと勉強してもいいんですが、そうすると実利に近づきすぎるというか、遊びがなくなります。 ゆっくりダラダラ学んだほうが周辺情報がわかって良いかもしれま…

標準入力とはなにか?

雑に言うと、UNIX用のプログラムがキーボードからの文字入力を受けとる口です。 プログラムの標準入力は、親プロセスの標準入力を引き継ぎます。 対話シェル(Bashとかzshとか)は入力をキーボードから受け取ります。 シェルからプログラムを起動すると、こ…

WARNING: collation "ja-x-icu" has version mismatch

PostgreSQLで次の警告が表示されました。 2022-03-22 18:00:35.147 JST [68445] WARNING: collation "ja-x-icu" has version mismatch 2022-03-22 18:00:35.147 JST [68445] DETAIL: The collation in the database was created using version 153.14.39, bu…

データモデリング

主にサーバーサイドのRDBMSのデータモデリングの話です。 最近、流行らないのですが・・・T字形ERに取り組むのが早道なんじゃないかなあ?と思っています。 例えば、TM(T字形ER)によるモデリング で説明されているものです。 ただ、僕が知った10年前ですら…

WSLのバージョン

WSL2とかでなくて、もうちょっと細かいバージョンについてです。 github.com Githubでは0.56.2とかってバージョンがついています。 docs.microsoft.com Release NoteではBuild 21364です。 要するに自分のPCに入っているWSLってどのバージョンなのでしょうか…

WSLを終了する

Windowsターミナルを閉じてもWSLは終了しません。 sudo shutdow -h nowでも終了するっぽいのですが、Distrodがエラーメッセージを表示します。 ledsun@MSI:~►sudo shutdown -h now [sudo] password for ledsun: ledsun@MSI:~►[Distrod][ERROR] Failed to spa…

marmaid.jsを使ってシーケンス図を書くためのHTMLファイルのテンプレート

SPAのような、あるページを表示するときにブラウザからサーバーへ複数回のリクエストを送るWebサイトがあります。 シーケンスそのものは複雑ではありませんが、複数種類のリクエストを送信していることを強調したいことがあります。 そんなときにサッとシー…

Windows10のWSL起動時にfish-shellからrbenvの初期化に失敗する

WSL起動時に次のエラーメッセージが表示されます。 source: Error encountered while sourcing file '/tmp/.psub.N1u4nIBokn': source: No such file or directory rm: cannot remove '/tmp/.psub.N1u4nIBokn': No such file or directory Welcome to fish, …

Fat Model問題

Fat Model問題を説明してみましょう。 ここでいうFat Model問題とはRuby on Raisを使って書かれたWebアプリケーションにおいてモデルクラスが大きくなりすぎる問題のことをいいます。 Ruby on Railsでは、MVC(model-view-controller)というアーキテクチャ…

ブラウザからJavaScriptモジュールをjQueryとともに使う

ブラウザでJavaScriptモジュールが使えるようになりました。 <script type="module">って書くやつです。 これを使うとimport/exportを使ってモジュール感の依存関係が解決できます。 これまでは人間がscriptタグの順番を決めるか、Webpackのようなモジュールバンドラーで事前処理す…

git force pullはない

変更が激しいブランチのソースコードレビューをするときなど、リモートのForce pushされたブランチをローカルブランチに反映したいことがあります。 自分が作業しているわけではないのでローカルの変更は全部捨ててかまいません。 git push -fみたいなオプシ…