タグ

programmingに関するpan150-051のブックマーク (46)

  • Rust3000行でテキストエディタを作るチュートリアルをやった

    想定よりだいぶ大変でした。 hecto 成果物はこれ↓ 参考サイトはこれです↓ インスパイア元↓ 感想 Rustはこのチュートリアルが初体験 ずっと勉強したいとは思っていたので良い機会だった チュートリアルを進めていくなかで所有権とかライフタイムとかを少しずつ導入していき説明も挟んでくれるので助かった しかし3000行の経験を積んだ程度ではまだまだエラーの読み解きは難しいな〜という印象 https://bsky.app/profile/kawarimidoll.bsky.social/post/3l3znqvdbx42q パターンマッチ、ResultやOptionといった概念は先にGleamをやっていたおかげで問題なく理解できた 外部依存ナシのC言語版が1000行程度だったので外部ライブラリを使えるRust版は行数が少ないのかしらと思ったが結果的に3000行になった C版は1週間ほどで完成

    Rust3000行でテキストエディタを作るチュートリアルをやった
  • タイムスタンプの精度を落とすときは切り捨てろ - methaneのブログ

    とあるプロジェクトでナノ秒からミリ秒への変換で四捨五入してきた人がいて、時刻を扱うときは保存精度未満は切り捨てるべきというのが常識になっていないなーと思ったので。 2023-10-01 を、何年か表示する時に、2024年に丸める人はいないだろう。 13:45 が何時か表示する時も、13時と表示するだろう。(口頭で何時?と聞かれたら14時と答えるかもしれないけれど) つまり、ある精度で表した時刻は、実際には次のような半開区間を示しているのである。 2023-01-01 00:00:00 <= 2023年 < 2024-01-01 00:00:00 13:45:00.000 <= 13:45 < 13:46:00.000 そして、そう決めたからには一貫して同じように、指定精度未満は切り捨てというルールを維持しなければならない。秒以下は四捨五入で、とかやってはいけないのだ。 一貫しないと何が問題

    タイムスタンプの精度を落とすときは切り捨てろ - methaneのブログ
  • はじめに | ちいさな Web ブラウザを作ってみよう

    はじめに | ちいさな Web ブラウザを作ってみよう
  • 個人開発の成功とはなにか - くらげになりたい。

    最近、ソフトウェアデザイン読んだり、個人開発LT会の話を聞いたりして、 個人開発の成功っていろいろあるよねーと思ったので、ちょっと整理してみたときの備忘録(*´ω`*) 収益化や売却だけが成功じゃないし、もしかしたら失敗もないかも知れない(*´ω`*)? individual-development.connpass.com 成功するとは あらためて、Wikipediaで意味を調べていみると、 こんなふうに書いてある。 成功は、計画などがうまくいき目標が達成できたことや、社会的に一定以上の地位を得たことを指す。失敗の対義。 成功 - Wikipedia 人それぞれ、サービスそれぞれで、 目標・目的は違うので、成功の意味も違う。 目的のタイプ/パターン ざっくり、この3つになるんじゃないだろうか? 収益 実現 経験 収益タイプ お小遣い程度、生きていけるほど、など度合いは違えど、 収益を目指

    個人開発の成功とはなにか - くらげになりたい。
  • ChatGPT AIとペアプログラミング

    OpenCVを使用して画像から複数のオブジェクトを認識し、切り出すための一般的な手順は以下のようになります: 前処理: 画像を読み込みます。必要に応じて画像をリサイズします。グレースケールに変換するか、あるいは必要に応じて色空間を変更します。オブジェクトの検出: エッジ検出、閾値処理、または色に基づくフィルタリングなどを使用してオブジェクトを検出します。輪郭検出を行い、オブジェクトの境界を見つけます。輪郭の処理: 検出された輪郭をフィルタリングして、ノイズや小さなオブジェクトを除去します。必要に応じて輪郭を近似します。オブジェクトの切り出し: 各オブジェクトの境界ボックスを使用して画像からオブジェクトを切り出します。オブジェクトごとに個別の画像として保存するか、表示します。後処理 (オプション): 切り出されたオブジェクトをさらに処理するためのステップを行います。例えば、オブジェクトのサイ

    ChatGPT AIとペアプログラミング
  • 最近プログラミングが楽しい - Blog::kobaken

    6/16(金) は、久々のオフライン開催の吉祥寺.pm #33でした。懇親会含め楽しませてもらいました!主催のid:magnoliak ありがとうございました! ここでは、話したことを書いてみたいと思います。 まず最初に、久々のオフライン開催おめでとうございます!いや〜〜〜、主催のmagnoliaさんよかったですね!おめでとうございます! 改めて、こんにちは。こばけんと言います。 エンジニア組織開発責任者をしたり、開発生産性の可視化サービスを作っていました。 今は、はてなさんやDiverseさんで業務委託をしながら、起業の準備をしています。 技術コミュニティでは、Japan Perl Associationの理事として、YAPCという技術カンファレンスの運営やPerlのドキュメントを整備するワーキング・グループを運営しています。 2019年にYAPC::Tokyoのリーダーをしていたのです

    最近プログラミングが楽しい - Blog::kobaken
  • これだけは知っておきたいクラス設計の基礎知識

    JJUG CCC 2023 Spring 発表資料(ステップアップセッション)。 私がクラス設計をするときに重視している考え方とやり方を紹介。 主な内容 ・クラス設計のスキル 3段階 ・クラス設計の技能を習得するシナリオ ・7つの基礎知識 ① 入出力と計算判断 ② プログラムの中核と周辺 …

    これだけは知っておきたいクラス設計の基礎知識
  • divはボタンではない、ボタンの実装について知っておくべきすべてのこと

    クリックできるボタンを実装するとき、HTMLの何をよく使用しますか? buttonタグ、もしくはdivタグ? divを使用してはいけない理由、buttonを使用するときの注意点、場合によってはaがよい理由を紹介します。 Everything you didn’t know you need to know about buttons by Steve Sewell 下記は各ポイントを意訳したものです。 ※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。 はじめに ボタンの実装にdivを使用したときの問題点 ボタンをbuttonで実装する buttonのスタイルに関する問題点 buttonのスタイルを正しく設定する方法 フォーム内のbuttonの動作を修正する 他のページへのリンクに使用する場合はaタグで ボタンの実装をコンポーネントにする 終わりに はじめに クリックで

    divはボタンではない、ボタンの実装について知っておくべきすべてのこと
  • LintオタクによるLint解説 / Introduction to Lints

    https://lintnight.connpass.com/event/263931/

    LintオタクによるLint解説 / Introduction to Lints
  • コーディングルールはマジでしっかり決めろって話

    どうも、フリーランスエンジニアの人です。 今まで関わったプロジェクトにおいてコーディングルールが曖昧だった環境で苦労したので、例に出しながら振り返ろうと思います。 ※ 記事に登場するコード例は実際に存在するコードではありませんがヤバさは忠実に再現しました。 2022/11/5 追記 曖昧かつ実態のズレた変数名 変数の命名というものはエンジニアによって少々偏った傾向が見られますが、その変数が指し示す実態と命名に大きなズレがなく、主旨が伝わればエンジニアリングにおいて大きな問題はないはずです。 ですが、世の中には曖昧かつ実態と一致しない変数名が書かれたプロダクトコードが存在します。 以下のコードをご覧ください。 ※ 今回はJSを例に出します // ユーザーのデータを取得 export const getUserData = async (id) => { const res = await

    コーディングルールはマジでしっかり決めろって話
  • 構文のことは忘れて、JSON, S式, XMLのデータモデルを比較する

    データをシリアライズするには、独自のフォーマットを定めるよりも、基的な定義済みの構造を組み合わせてフォーマットを作るほうが望ましい場合が多いです。 そのような仕組みとしてJSON, S式, XMLなどが存在しますが、これらは 「基的な構造」として何を選ぶか、という観点からそれぞれに個性を持っています。 記事では、具体的な構文のことは基的に忘れて、各フォーマットが採用するデータモデルの違いに焦点を絞って比較します。 JSON data JSON = Value data Value = -- Compounds Array [Value] | Object (Map String Value) -- Scalars | Null | Boolean Boolean | String String -- UCS-2 | Number IntegerOrFloat -- no NaNs

    構文のことは忘れて、JSON, S式, XMLのデータモデルを比較する
  • オブジェクト指向プログラミングは終わった - Qiita

    追記: 振り返りを書いてみました~ -- ここから元記事 別題: 抽象化って言葉もう。。 社内の記事にて、オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES) | アラン・シャロウェイ, ジェームズ・R・トロット, 村上 雅章 | | 通販 | Amazonを紹介してもらいました。 取り上げられた、共通性/可変性分析の解説を見て、はっと思うことがありポエムを仕立てました。 共通性/可変性分析 共通性/可変性分析については、書籍を読むかググって頂けると良いですが、社内記事が良かったので引用させて頂きます。 問題領域にある概念を見つける(共通性の分析) その流動的要素を洗い出す(可変性の分析) 流動的要素を見ながら、その概念が持つ責務を果たすための抽象的側面(≒インタフェース)を導く 各流動的要素の実装上の観点から、インタフェースが適切かどうかを見極め、補正する オ

    オブジェクト指向プログラミングは終わった - Qiita
  • サービスを停止せずにデータベースリファクタリングする - Pepabo Tech Portal

    2022年7月13日にカラーミーショップで提供開始した「副管理者機能」のアップデートにあたって、従前の挙動を変えずにデータベーススキーマの構造を変える必要がありました。また、サービスの提供を停止することなく、スキーマの構造の変更を進める必要がありました。 この記事では、サービスを停止せずにデータベースの構造を徐々に変更するデータベースリファクタリングをどのように進めたかについて紹介します。 「データベースリファクタリング」とは データベースリファクタリングについて体系的に述べた書籍として"Refactoring Databases"があります。このでは、データベースリファクタリングのさまざまなパターンにおいて、スキーマの変更、データマイグレーション(既存データの移行)、アプリケーションの変更それぞれをどのように進めるべきかについて解説しています。ここでは、"Refactoring Dat

    サービスを停止せずにデータベースリファクタリングする - Pepabo Tech Portal
  • 「謝って済む話じゃない」怒る客 通常の4倍来店も au通信障害 | 毎日新聞

    通信大手KDDI(au)の携帯電話サービスで2日未明に発生した大規模な通信障害を受け、状況説明やWi―Fiの電波を求める客がauショップに詰めかける場面もあった。 東京都心部にあるauショップの副店長によると、通信障害関連で訪れた客が午後2時時点で40~50人に上り、通常の4~5倍にあたるという。「お客様にはいつ改善するか分からないとお伝えするしかなく、心苦しいです」と話した。 別のショップでは午後3時半ごろ、若い男性客が「通信障害はいつ終わるの? 謝って済むレベルじゃねえだろ」と怒りながら店員に詰め寄る姿もあった。Wi―Fiを求めて来店した中野区の会社員女性(26)は「この後友人と待ち合わせをしているが、電話もできず連絡が取れないので困っている。美容室にも行く予定だったが予約の電話もできなかった。当に早く復旧してほしい」と嘆いた。

    「謝って済む話じゃない」怒る客 通常の4倍来店も au通信障害 | 毎日新聞
  • 20分で分かる人事・HR領域の学び方 / How to learn HR in 20 minutes

    社内勉強会の資料公開です

    20分で分かる人事・HR領域の学び方 / How to learn HR in 20 minutes
  • Google Cloud 上で 100 兆桁の円周率を計算 | Google Cloud 公式ブログ

    ※この投稿は米国時間 2022 年 6 月 8 日に、Google Cloud blog に投稿されたものの抄訳です。 記録は破るためにあります。2019 年、Google は 31 兆 4000 億桁の円周率を計算し、当時の世界記録を樹立しました。そして 2021 年には グラウビュンデン応用科学大学 の科学者が、さらに 31 兆 4000 億桁上回る計 62 兆 8000 億桁を計算しました。そして日、Google は100 兆桁の円周率を計算し、世界記録を更新したことを発表します。 Google Cloud を使って円周率の桁数の世界記録を更新1するのは今回で 2 度目で、わずか 3 年で桁数を 3 倍に伸ばしました。 この新記録は、 Google Cloud のインフラストラクチャが年々高速化していることの証とも言えます。記録達成の背景には、 Google Cloud の安全でカ

    Google Cloud 上で 100 兆桁の円周率を計算 | Google Cloud 公式ブログ
  • 3値論理

    なぜ「= NULL」ではなく「IS NULL」と書かなくてはならないのか? これは、気になっている人も多いはずです。まだ SQL に不慣れな頃、ある列が NULL である行を選択しようとして、 SELECT * FROM table_A WHERE col_1 = NULL; というクエリを書いてしまい、エラーになったり思い通りの結果が得られなかった、という経験は、ほぼ全ての人が持っているでしょう。ちょうど C言語や JAVA を習い始めのころに「if (a = 5)」と書いてしまう間違いとよく似ています。最初は、言語仕様の汚さにぶつぶつ文句をいいながらも、そのうち「IS NULL」という書き方に慣れてしまって、疑問を持たなくなります。 でもどう考えても奇妙な書き方ですよね。こんな素直でない書き方をしなくてはならないということには、やはりそれなりの理由があるのです。今からその理由を説明しま

  • シグナルハンドラにprintf()を書いてはいけない - Qiita

    三行でまとめると シグナルハンドラ内でprintf()してはいけない というより、余計な処理を書いてはいけない もう一度言う、シグナルハンドラで余計なことをするな、非常に大事なことだ はじめに シグナルハンドラでやってよい処理は非常に限られるのに、全くルールを守らないサンプルコードが世の中に大量に出回っている。printf()するなんてもってのほかなのだが、カジュアルにそこらじゅうで見かけて非常に悲しい。 この記事では、そんな状況を少しでも改善したいと思い初心者向きに書いたものだ。そのため、下記では、回避するにはどう実装すればよいのか、ルールを破るとどうなるのか、といった点を先に簡潔に記述する。 なぜしてはいけないのか、POSIXだとかリエントラントだとか、は下の方に追いやっている。玄人は読んでてウズウズするだろうが、細かい話はできるだけ目につかないような構成としたため了解いただきたい。

    シグナルハンドラにprintf()を書いてはいけない - Qiita
  • JavaScript: 文字数を正確にカウントするには? - Qiita

    この投稿ではJavaScriptで文字数をできるだけ正確にカウントする方法について取り上げます。 文字数とは? 要件で「文字数を表示してほしい」「○文字以上はバリデーションエラーにしたい」と文字数を考慮しないとならないことがあります。 そもそも文字数とは何でしょうか。 たとえば、アルファベットの「A」は1文字と数えられそうです。 次の絵文字は、何文字になるでしょうか? この絵文字はiOSであれば14.5の環境では、UI上では上のように1文字のように表示されます。しかし、それ以前のバージョンでは、同じ文字列データでも😵💫のように2文字で表示されます。なお、この絵文字は3つのコードポイントU+1F635 U+200D U+1F4ABからなります。この絵文字の「文字数」はいったい何文字として扱ったらよいのでしょうか。 以上のように、ひとことで文字数と言ってもデータと見た目と環境の3つのややこ

    JavaScript: 文字数を正確にカウントするには? - Qiita
  • 保守性の高いReact hooksコードの指針

    前提 記事は保守性の高いReact hooksコードの指針を記述します。指針はtipsに近いものから原則に近いものまで雑多に含まれます。総じてReact hooksの標準的なAPIを上手く扱う方法が多めです。 これらは保守性の低いコードを反面教師とした私的な経験則に基づきます。(思い出し次第随時追加していきます) ご留意ください。 解消したい痛み 再現が困難な不具合の発生 容易に無限ループが発生しうる 不具合発生箇所の特定が手間 分岐が多くコードリーディングに手間がかかる 解消する手法 useEffectは1ページに1つ useEffectにdeps自動補完除外コメントを入れる stateはプリミティブにする propsにフラグがある場合はコンポーネントを分ける useEffectは1ページに1つ 悪例: ユーザーイベントの処理 const [foo, setFoo] = useStat

    保守性の高いReact hooksコードの指針