ブックマーク / blog.magnolia.tech (52)

  • Dockerを使ってSambaサーバを立てる - Magnolia Tech

    引き続きThinkCentre M75q Tiny Gen2上にインストールしたUbuntu Serverの環境構築を続けます。 blog.magnolia.tech メインPCとファイルを共有するためにSambaでファイルサーバを立てることにします。 直接Ubuntu Server上でSambaサーバを立ててしまうと管理が面倒なのでDockerで立てることにします。 Sambaのイメージを選ぶ ネットを検索するとdperson/sambaというイメージを使って構築する事例がよく出てきますが、残念ながらイメージの更新が止まっているようです。 他のイメージを探したところ、servercontainers/sambaというイメージが見つかりました。 GitHubのリポジトリを見たところ、具体的なバージョンを指定するのではなく、定期的にAlpineのイメージを取得してインストールできたSamba

    Dockerを使ってSambaサーバを立てる - Magnolia Tech
    toshikish
    toshikish 2023/01/19
  • 物理Linuxサーバ構築用にThinkCentre M75q Tiny Gen2を購入 - Magnolia Tech

    普段、メインで使っているPCMacBook Air 2018なので、さすがにDockerでコンテナをたくさん立ち上げたまま、ブラウザで調べ物する、みたいな使い方が辛くなってきた。夏場はファンも凄い回っちゃうし、レスポンスはすごく悪くなるし。 メインPCを買い替えようかとも思ったけど、ブラウザを使うくらいの作業なら特に不満は無い。それにそもそもメインPCLinuxが動いている必然性も無いし、画面も要らないのでサブPCとしてデスクトップPCを用意して、Linuxをインストールする方に方向に転換。 部屋に大きなデスクトップが有るとサイズ的に圧迫感が有るし、複数のマシンのファンの音が同時に鳴るのは苦手なので(データセンタではないので...)、作業している場所から離れた所の隙間に設置できるような、1リットルサイズの小型PCを探すことにした。 Amazonとかで探すと色々と出てくるけど、それなりの

    物理Linuxサーバ構築用にThinkCentre M75q Tiny Gen2を購入 - Magnolia Tech
    toshikish
    toshikish 2023/01/15
  • 『ちょうぜつソフトウェア設計入門――PHPで理解するオブジェクト指向の活用』は、現代ソフトウェア開発の”知の高速道路” - Magnolia Tech

    ちょうぜつソフトウェア設計入門――PHPで理解するオブジェクト指向の活用 作者:田中 ひさてる技術評論社Amazon 予約してまで買ったものの、なかなか時間が取れず、読めていなかった『ちょうぜつソフトウェア設計入門――PHPで理解するオブジェクト指向の活用』をようやく読み終わりました。 筆者である田中ひさてるさん自身で描かれた表紙の可愛らしさからは想像もできないハードな内容なので、一気に読もうとすると「分かった気」になるだけで全然理解していなかった、ということになりがちなので、3回くらいぐるぐる読むといいと思います(そうです、この文もイラストも丸っと同じ人が書いているのです!!)。 目次 第1章 クリーンアーキテクチャ 第2章 パッケージ原則 第3章 オブジェクト指向 第4章 UML(統一モデリング言語) 第5章 オブジェクト指向原則 SOLID 第6章 テスト駆動開発 第7章 依存

    『ちょうぜつソフトウェア設計入門――PHPで理解するオブジェクト指向の活用』は、現代ソフトウェア開発の”知の高速道路” - Magnolia Tech
    toshikish
    toshikish 2022/12/25
  • ソフトウェアエンジニアに必要な資質の一つ目は「エラーメッセージが出たら、読んで理解しようとする姿勢」です - Magnolia Tech

    ソフトウェアエンジニアに必要な資質の一つ目は「エラーメッセージが出たら、読んで理解しようとする姿勢」です— magnoliak🍧 (@magnolia_k_) 2022年12月11日 最近のプログラミング言語の傾向として、エラーメッセージを改善して、より分かりやすいメッセージが出力されるようになっていますね。 gihyo.jp techlife.cookpad.com 上記は、PythonRubyの事例ですが、最近の言語はどれもエラーメッセージが親切になってきました。 それでも読まないのはなぜなんでしょうね…一番の近道だと思うんでけどね。 とはいえ、エラーメッセージを読むだけで解決するバグばかりでもないので、エラーが解決しない時にさっさと方向転換するのも大事な方針ですよね。 二つ目は「何処で作業を打ち切って方向転換するか判断しようとする姿勢」です— magnoliak🍧 (@magn

    ソフトウェアエンジニアに必要な資質の一つ目は「エラーメッセージが出たら、読んで理解しようとする姿勢」です - Magnolia Tech
    toshikish
    toshikish 2022/12/19
  • 『Linuxのしくみ』は、アプリケーションの向こう側を知るために読むべき - Magnolia Tech

    [試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】 作者:武内 覚技術評論社Amazon 2022年も良い技術書がたくさん出版されましたが、その中でも『Linuxのしくみ』はぜひ手元に置いておきたい1冊ですね。 特に、主にアプリケーションレイヤーを主戦場としている人たちにとって、OSは各種ミドルウェアと比較すると「よく分からないもの」という存在になりがちです。しかし、OSがなければアプリケーションも動かないわけで、基的な知識としてこのに書かれているようなレベルのことを押さえておくと性能が出ない時に無闇に資源を増やす前に考えるべきことの気づきが得られます(無闇に資源を増やす、という選択肢が取れる時代になったのは、それはそれで良いことですが) 特に、前半のプロセス周りは、「sar」「taskset」など自分も今までちゃんと使ったことがない

    『Linuxのしくみ』は、アプリケーションの向こう側を知るために読むべき - Magnolia Tech
    toshikish
    toshikish 2022/11/13
  • ISUCON12予選問題をdocker-composeで起動する - Magnolia Tech

    説明のために手順を確認したので、その覚書。 作業環境にリポジトリを用意する github.com $ git clone git@github.com:isucon/isucon12-qualify.git Dockerをインストールする www.docker.com 値上げが最近話題になりましたが、個人利用は無料です。 www.docker.com 次回はRancher Desktopを試してみます。 rancherdesktop.io docker-compose.ymlを書き換える 一箇所だけ書き換えないと、起動しません。 Docker Hubから「mysql/mysql-server:8.0.29」のイメージが無くなっていて、MySQLが起動できません。8.0.30以降のバージョンを指定しましょう(無くなった理由は探せませんでした...)。 2022/11/06追記 mysql-s

    ISUCON12予選問題をdocker-composeで起動する - Magnolia Tech
    toshikish
    toshikish 2022/11/06
  • 設計の「why」を言語化する - Magnolia Tech

    設計の「why」を言語化できる人は強いんですよ— magnoliak🍧 (@magnolia_k_) 2022年10月29日 っていうか、驚くくらい「why」が上手く表現できないんですよ、普通は 手順は言えても、なぜ?が言えない— magnoliak🍧 (@magnolia_k_) 2022年10月29日 設計において、すべての決定について仔細に「なぜ、そうしたか?」を言えるべきなのだけど、これを上手く言語化できない人は多い。「このプロジェクトでは以前からそうしているから」「そうするのが当たり前だと思っていた」などなど、当に理解してないまま「設計という作業」を進めている人もいれば、上手く自分の行為を言語化できないだけの人もいる。 また、必ずしも自分が設計したことについて説明する場面ばかりとも限らない。既に存在する設計から「なぜ」を類推するしかない場面もある。他人のコードを読み取るとき

    設計の「why」を言語化する - Magnolia Tech
    toshikish
    toshikish 2022/10/31
  • 「ベタープログラマ」を読んだ - Magnolia Tech

    原著が出てたときから割と気になっていた「ベタープログラマ」を読んだ。 全体的な感想 第Ⅰ部はコードスタイルや、不要なコードの存在、テストコードを書く話など、非常に実践的な内容が多かった。 第Ⅱ部は割と考え方というか、思想的な話になっていって、第Ⅰ部をきちんと読んで危機感を持って行動を変えられる人であれば自然とそこに到達するのでは?と思った。 まずは第Ⅰ部をしっかり読んで、自分の置かれた環境との差異や、これから行動することを書き出す、みたいな読み方をすると良い。 第Ⅲ部以降は、もう完全に生き方というか、エンジニアとしての振るまいや、哲学の話になってくるので、一気に通読する、というより少し間を置いて拾い読みしながら読み進めて行くと良いかも。 流し読みしても全然役に立たないタイプの内容なので、読書メモは必ず書いた方がいいと思うし、書かれていることが万人にとって正解、といった類いのものでもないので

    「ベタープログラマ」を読んだ - Magnolia Tech
    toshikish
    toshikish 2022/09/21
  • `X-Forwarded-For`ヘッダからクライアントのIPアドレスを取得する - Magnolia Tech

    2022/7/24: Plack::Middleware::ReverseProxyが、X-Forwarded-Forをサポートしていますよ、と教えていただいたので、記載を修正しました。 @karupanerura++ Scalatra 3.0.0-M1がリリースされた。Scala3対応だ、めでたい。 github.com 最近Scalatraへあまり貢献できていなかったので、いくつかのコンパイル時の警告を消すPRを出した。コードを見直す中で、ふとX-Forwarded-ForヘッダからクライアントのIPアドレスを取得する箇所が目にとまった。 /** * The remote address the client is connected from. * This takes the load balancing header X-Forwarded-For into account *

    `X-Forwarded-For`ヘッダからクライアントのIPアドレスを取得する - Magnolia Tech
    toshikish
    toshikish 2022/07/31
  • 紙の技術書を開いたままコードを書く時は、クラスプクリップがおすすめです - Magnolia Tech

    紙の技術書を開いたままの状態にして、参考にしながらコードを書きたい時ってありますね。ただ、を開いた状態にしておくのが結構大変です。ブックスタンドなどもありますが、けっこう大きいし、持ち運びには向いていないです。 そんな時には、ステンレス製のクラスプ クリップがおすすめです。ペンケースにも入るサイズなので持ち運びもできます。 (写真のは、最近読んでいる『Learning Go』です) 紙の質にもよりますが、150ページくらいまでは止めておけるし、それ以上のページになれば自重で全体は開いたままの状態になるので、めくれないように手前のページを数ページ軽く挟んで押さえておけばいいだけです。 一番大きなサイズでも275円なので、試しに買えるレベルなのもオススメの理由の一つです。 ステンレスクラスプ クリップ シンプル 書類 整理 オフィス 備品 Lサイズ ステンレス製 DAS-2501 スリッ

    紙の技術書を開いたままコードを書く時は、クラスプクリップがおすすめです - Magnolia Tech
    toshikish
    toshikish 2022/06/26
  • 『システム運用アンチパターン ――エンジニアがDevOpsで解決する組織・自動化・コミュニケーション』は、誰が読み、実践すべきことが書かれているのか、その「誰」を考えながら読んでほしい1冊だった - Magnolia Tech

    システム運用アンチパターン ―エンジニアがDevOpsで解決する組織・自動化・コミュニケーション 作者:Jeffery D. SmithオライリージャパンAmazon いやー刺さりまくる名言のオンパレードみたいな1冊『システム運用アンチパターン 』。 こので最初に出てくる具体的な事例が「パターナリスト症候群」という内容なんですけど、これまでの技術書にありがちな「作業品質向上や、効率化のため」というより、組織のアジリティを下げてしまう「重い承認プロセス」を排除するために自動化しましょう、と言っているところが良い。 自動化をする理由が効率化とか、品質じゃなくて、重い承認プロセスを不要にするためである、というところが新しいし、アンチパターンに技術で立ち向かうところが、良い— magnoliak🍧 (@magnolia_k_) 2022年4月23日 なので、そもそも「承認プロセス」というのは何

    『システム運用アンチパターン ――エンジニアがDevOpsで解決する組織・自動化・コミュニケーション』は、誰が読み、実践すべきことが書かれているのか、その「誰」を考えながら読んでほしい1冊だった - Magnolia Tech
    toshikish
    toshikish 2022/04/23
  • 「ログを出す!ログを読む!」エンジニア版ベストキッド…「syslogに出す! loggerで出す!」「ログレベルアップ!ダウン!アップ!ダウン!」 - Magnolia Tech

    エンジニア版ベストキッド 師匠 「ログを出す!ログを読む!」「syslogに出す! loggerで出す!」「ログレベルアップ!ダウン!アップ!ダウン!」 生徒 「クラウドネイティブなマイクロサービスの作り方を教えてくれる約束だ!」 プロダクション環境にて… 生徒「ログが…有る!これだ!」— magnoliak🍧 (@magnolia_k_) 2022年4月10日 ふとベストキッドの台詞を思い出して、雑に書いてみたけど、案外いいこと書いてるなーって自分でも思ってしまった。 loggerの使い方は入門書に載ってたり載ってなかったりするし、どんなタイミングでどんな情報をどこに出すべきか?みたいな話は一子相伝の秘伝の技みたいになりがちだし。 まさにそう思います。https://t.co/ZKTTtdwB1d— Hideo Fukumori (@hideo_fukumori) 2022年4月11日

    「ログを出す!ログを読む!」エンジニア版ベストキッド…「syslogに出す! loggerで出す!」「ログレベルアップ!ダウン!アップ!ダウン!」 - Magnolia Tech
    toshikish
    toshikish 2022/04/14
  • 『ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ』を読めばアーキテクトになれるのだろうか - Magnolia Tech

    ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ 作者:Mark Richards,Neal FordオライリージャパンAmazon とても良いだ!アーキテクチャのパターンは体系的に整理されているし、アーキテクチャを議論する上で、共通の語彙となり得る用語を解説している(コンウェイの法則や、凝集度など)。 後半は、リスクや、チームビルディング、交渉術まで多岐に渡るトピックを網羅している。 必要なことは全部書いてある...けれど、なんとなく初めてPMBOKを読んだときに抱いた感想...読み始めてからすぐに「果たしてこのに書かれている通りの考え方に沿って振る舞えばアーキテクトになれるのか?」という気持ちになりはじめたところで1章の最後の方に出てくる「ソフトウェアアーキテクチャの法則」が出てきて、「そうだよなー」という気持ちに。 ソフトウェアアーキテクチャはトレード

    『ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ』を読めばアーキテクトになれるのだろうか - Magnolia Tech
    toshikish
    toshikish 2022/04/10
  • 『プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書』は書名に偽りのない、全部入りの1冊 - Magnolia Tech

    プロになるJava仕事で必要なプログラミングの知識がゼロから身につく最高の指南書 作者:きしだ なおき,山 裕介,杉山 貴章技術評論社Amazon 予約していたので、早速届きました。 Javaを使ってプログラミングを学ぼうとする人は、とりあえずこれ買っておけばいいんじゃね?っていう全部入りの1冊ですね。 JDKのインストールから、IDE/REPLの使い方、基的な文法、エラーメッセージの読み方、オブジェクト指向、関数型プログラミング、各種ツールチェーン(ユニットテスト、ビルドツール、バージョン管理)と、全部入りの全部入り。 全般的に単なる文法の解説に終始せず、初学者がつまづきやすいところにページを割いているところが良くて、特に「最初からIDEを使う」と、「エラーが出ることと、その読み方を最初から書いていること」、「理解が難しそうな”ループ”の概念にフォーカスしていること」あたりは、上手

    『プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書』は書名に偽りのない、全部入りの1冊 - Magnolia Tech
    toshikish
    toshikish 2022/03/20
  • 見通しの悪いコードができあがってしまう、その理由 - Magnolia Tech

    クソコードができあがるのは「影響の及ぼすコンポーネント量を最小にする」という個別最適の価値観が支配的になった時、です 影響の及ぶ範囲を小さくするために、巨大で複雑なコードの塊を一箇所に追加し始めたりするのです そうした方が関心の範囲が限定できるから...だけど、全体最適ではない— magnoliak🍧 (@magnolia_k_) 2022年3月12日 でも悪気はないんです 真面目に巨大で見通しの悪いコードを作り上げていくけど、影響範囲が最小になる方が常に正しい、という価値観は「わかりやすい」んですよ— magnoliak🍧 (@magnolia_k_) 2022年3月12日 「変更量が最小になる」「影響が最小になる」...目の前のタスクをこなすためには、それが一番良いことに見えるんですよね でも、「継続的に同じペースが保てるか?」「スケールするか?」というと、そんなことは無いけど、そ

    見通しの悪いコードができあがってしまう、その理由 - Magnolia Tech
    toshikish
    toshikish 2022/03/18
  • 『良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方 』と、『プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書』を注文した - Magnolia Tech

    良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方 作者:仙塲 大也技術評論社Amazon プロになるJava仕事で必要なプログラミングの知識がゼロから身につく最高の指南書 作者:きしだ なおき,山 裕介,杉山 貴章技術評論社Amazon 続けて2冊、今までとはちょっと違う感じのコードに関するが出版されるというので、両方注文した。 楽しみだ。 前者は、いつもクソコード動画で私たちを楽しませてくれる、ミノ駆動さんの作、ということで期待大。 後者は、Javaに精通した、きしだ なおきさん、山 裕介さん、杉山 貴章さんの三人の共著ということで期待大。 speakerdeck.com さっきまで前者と後者が逆だった...ご指摘ありがとうございました>ちゃちいさん 追記: 最近の、きしださんのオブジェクト指向に関する一連のツイートはとても興味深い。だから買ってみ

    toshikish
    toshikish 2022/03/12
  • ドメイン知識を隠すコード、隠さないコード - Magnolia Tech

    2021/12/20追記 指摘されて気づいてしまいましたが、間違ってますね... 以前スライドを書いた時に全然気づいていませんでした 反省のために消さずに、取り消して残しておきます 「年齢計算ニ関スル法律」という法律がある。 明治三十五年法律第五十号(年齢計算ニ関スル法律) | e-Gov法令検索 とても短い法律で条文は3つしかない。 ① 年齢ハ出生ノ日ヨリ之ヲ起算ス ② 民法第百四十三条ノ規定ハ年齢ノ計算ニ之ヲ準用ス ③ 明治六年第三十六号布告ハ之ヲ廃止ス ポイントは①で、生まれた日から起算するので法律上は1年が経過した時に1つ歳を取ることになる。つまり、誕生日の前の日の24時に年齢が加算されるので、日単位でみると誕生日の前の日にもう年齢は進んでいる、ということになる。 同じ年の4月2日生まれの人と、4月1日生まれの人とでは小学校に入学する年度が違う、というのはよく聞く話だと思う。 この

    ドメイン知識を隠すコード、隠さないコード - Magnolia Tech
    toshikish
    toshikish 2021/12/19
  • 問題が起きた時は、問題が起きた構造に注目する - Magnolia Tech

    大きな問題が起きて、その事象だけを深掘りしていくとすごく些細なミスだったりして「なんでこんな簡単なことができない!○○すればいいだけじゃないか!」って言い出す人が出てくるんだけど、その「○○するだけ」ができなかった環境はなぜ生まれたのかって所に注目しないと結局精神論になっちゃう— magnoliak🍧 (@magnolia_k_) 2021年9月10日 「○○すればいいだけのことをできる環境になっていましたか?」っていう問いかけが大事で、そうしないと仕組みや仕掛けに繋がっていかない— magnoliak🍧 (@magnolia_k_) 2021年9月10日 howの話をする前に、whyの話をする前に、まず問題の構造に対する認識が合ってるか、合ってない時はまずその共通認識を作り出すことが大事だって、裏の神社で中禅寺秋彦が言ってた— magnoliak🍧 (@magnolia_k_) 2

    問題が起きた時は、問題が起きた構造に注目する - Magnolia Tech
    toshikish
    toshikish 2021/09/19
  • 定期的に知識をリフレッシュする - Magnolia Tech

    IT系に身を置いていると、つい新しい知識ばかりを追いかけがちになるけど、CS的な基礎知識や、Linuxのコマンドとかの(もちろんソラでコマンド10個のオプションを言える必要は、無い)も当然大事なわけです。というか、土台となる知識が無いと、新しい知識がちゃんと身につきません。 だけど、普段使わない、手を動かさない分野のスキルはどんどん忘れていきます。歳をとると加速度的に忘れていきます。 そしてヤバいのは、分かっていることと、分かっていないこと、できること、できないことの区別がつかなくなることです。 人は分かる範囲でしか物事を理解しないので、「分かっていないことを知る」という行為を行なって「分かる範囲」を広げる、または最低でも維持する営みを続けていかないとどんどん判断する時に必要な材料が狭まっていきます。 Java 1.5の知識で、Java17時代の判断はできないですよね、10倍以上違うんだか

    定期的に知識をリフレッシュする - Magnolia Tech
    toshikish
    toshikish 2021/09/05
  • 運用に耐えられるコードを書くために - Magnolia Tech

    オブジェクト指向とか、DDDとか言う前に、「落ちる時は速やかに落ちる」「原因がきちんと解析できる情報を出す」「リトライポイントが用意されている」「最終的な結果の正当性、整合性を確認する方法が用意されている」っていうコードをですね.... https://t.co/I5bIfhZYN8— magnoliak🍧 (@magnolia_k_) 2021年5月3日 異常系への対処がちゃんとできているコードが書けるようになってこそ一人前、みたいな、そんな価値観— magnoliak🍧 (@magnolia_k_) 2021年5月3日 いや、その手前の「つべこべ言わず、エラーが起きる可能性があるところは全てエラーコードをチェックする」なんだよ https://t.co/zmJBWR0ybX— magnoliak🍧 (@magnolia_k_) 2021年5月3日

    運用に耐えられるコードを書くために - Magnolia Tech
    toshikish
    toshikish 2021/05/06