タグ

ブックマーク / qiita.com (3,819)

  • 500行以内で自作言語作ってみた - Qiita

    はじめに 昨今、Rustの登場によりプログラミング言語は複雑化しつつあります。(彼にRustを貶す意図はありません) この現状を打破するため、私は最高にシンプルで完璧な言語作りに取り組みました。(彼は冗談を言っています) 最終的に当初の目論見とはかけ離れた言語になりましたが、その過程で苦労したことなどを綴っていこうと思います。 完成品はこちらになります 一応GCCでコンパイルして実行すれば乱数生成器が動くようになっています。 https://github.com/sxclij/sxcscript 特徴 C言語かつ500行以内のソースコード。(C言語を触ったことのある人なら無茶振り度合いがわかってくれるはず...) 動的メモリ確保なし(多分)固定長配列最高! 3種類の記号で記述可能。(なんというシンプル! 使用ライブラリはfcntl.h,stdint.h,unistd.hのみ 500行で収め

    500行以内で自作言語作ってみた - Qiita
    advblog
    advblog 2024/10/10
  • エンジニアが知っておくべき請負契約と準委任契約の違い - Qiita

    参考 IT業界では、請負契約と準委任契約がよく使われます。 委任契約はあまり使われることはなく、筆者も見たことがありません。 これは、エンジニアが法律行為を伴う業務を行うことが少ないためです。 請負契約と準委任契約の違い 請負契約と準委任契約は、どちらも業務委託契約の一種ですが、大きな違いがあります。 一言でいうと、請負契約は「成果物を納品することが目的」であり、準委任契約は「業務の遂行自体が目的」です。 請負契約では成果物を納品する責任が発生しますが、準委任契約ではその責任は発生しません。 ウォーターフォール開発で言うと、PoCや要件定義は準委任契約、設計や開発、テストは請負契約になることが多いです。 また、SES(システムエンジニアリングサービス)も準委任契約で結ばれることが多いですね。 PoCや要件定義が準委任契約になることが多いのは、不確定要素が多いため、確実に成果物を納品すること

    エンジニアが知っておくべき請負契約と準委任契約の違い - Qiita
    advblog
    advblog 2024/10/08
  • AWS コンテナ運用設計に関するアプローチ - Qiita

    ECSメインにAWSサービスを利用してコンテナの運用設計を考えてみます。 コンテナの運用設計 ECS 上で稼働するWebアプリケーションを前提に運用の要件を考えてみます。 コンテナを使用したマイクロサービスの運用は、モノシリックなシステム運用とは少し異なります、以下の項目を運用項目としてピックアップします。 可用性/スケーリング CI/CD ロギング トレース モニタリング ECS/ECR のアーキテクチャ まずはECS/ECR のアーキテクチャについて触れます。 Amazon ECSはコンテナの作成、実行、停止といった管理をメインとしたサービスであり、Amazon ECRは Dockerのレジストリサービスとなります。リポジトリにあるイメージをプッシュしたり、イメージの保管等を行います。 全体的なイメージを以下のように理解をしています。 ECSの機能 まずECSです。 ECSは複数のエン

    AWS コンテナ運用設計に関するアプローチ - Qiita
    advblog
    advblog 2024/10/04
  • ローカルテスト用SMTPメールサーバは Mailpit がオススメ! - Qiita

    はじめに 長らくローカルテスト用のメールサーバとして MailHog (DockerHub) を使ってきたのですが、以下のような不満がありました。 今現在(2024)メンテナンスが行われていない ローカル開発用とはいえ、UXが厳しい(日語を受け付けてくれない) アーキテクチャが amd64 しか対応していない そこで、MailHogよりベターな選択肢はないか調査してみたところ、 Mailpit (DockerHub) が以下の点で良いと感じ実際に使っているので、この記事で紹介します。 今現在(2024)メンテナンスが行われている 良いUX。ちゃんと日語でメールを検索できる アーキテクチャとして arm にも対応している (amd64/arm64/i386) ほか好ましい点 サーバ再起動後にちゃんとデータが残る (sqlite形式で残るようです) Goで実装されていて動作が軽い Goなの

    ローカルテスト用SMTPメールサーバは Mailpit がオススメ! - Qiita
    advblog
    advblog 2024/10/02
  • チームにテストコードを書く文化を定着させる - Qiita

    この記事は? 皆さんお久しぶりです。@cosmeの開発エンジニアをしております、村田です。@cosmeを運営する株式会社アイスタイルではPHP -> TypeScriptへの技術移行を進めており、フレームワークとしてはexpress, oclif, そして記事で紹介するJavaScript製のテスティングフレームワークであるjestなどの各種ツールを使って開発を進めています。 この記事で紹介する内容は、チームでテストコードを書く文化を定着していく話です。というのも、既存プロダクトにて元々テストコードが十分に書かれていない部分があったため、リプレース後のサービスではしっかりとテストを書いていこう、ということでチームで一致団結しました。今まではテスト記述に対する基準は開発者によって任されていたところ、私の担当しているバックエンドのプロジェクトでは、テスト記述の優先度を高くしてリリース基準とし

    チームにテストコードを書く文化を定着させる - Qiita
    advblog
    advblog 2024/10/01
  • 【図解解説】これ1本でGitをマスターできるチュートリアル!【完全版】 - Qiita

    はじめに こんにちは、Watanabe Jin(@Sicut_study)です。 今回は記事1で初心者が必要な知識を全て学べるGitチュートリアルを紹介していきます。 世の中にはたくさんのGitに関する教材があります。しかし、真に良いと思える教材はありません。 もちろん私も4年前はGitという言葉を知らない状態から、書籍などで学習をしました。 しかし、書籍で知識を得たとしても実際にコマンドを使って実践的に学んだわけではなかったのでほとんど身になりませんでした。 私が思う世の中にあるGitの教材のイケてない点は2つです。 結局ほとんどの人が、教材ではなく実際に使ってみて使えるようになっているはずです。 書籍でやったことを全部ちゃんとできるようになった人はいないと考えています。 実際に利用するコマンドは限られている、たまに使うコマンドを紹介しとしても「この記事1」で説明することができると思

    【図解解説】これ1本でGitをマスターできるチュートリアル!【完全版】 - Qiita
    advblog
    advblog 2024/10/01
  • 要件定義|2分で読める機能要件で使うドキュメントを調べてみた - Qiita

    はじめに エンジニアのみなさま、日々の学習当にお疲れ様です! また記事まで足を運んでいただき当に感謝です。 約2分程度で読めるので最後まで読んでもらえると幸いです。 要件定義関連の記事も投稿してます。時間あればぜひ読んでみてください! 今回は「機能要件」に関する内容について投稿します。 機能要件とは ※引用:IPA(独立行政法人 情報処理推進機構)図1 機能/非機能要求の相違点と課題 機能要件は、「必ず搭載すべき機能」 を指します。新規開発であっても既存のリプレイスであっても顧客としては業務内容に直結しているため、イメージしやすい機能になっています。機能要件をすり合わせすることにより、システムの動作が明確になり設計段階での誤解を防ぎます。これらの機能要件が適切に設定されていないと、後々の開発過程で手戻りが発生する可能性があるため、初期段階での詳細な定義が求められます。 どんなドキュメ

    要件定義|2分で読める機能要件で使うドキュメントを調べてみた - Qiita
    advblog
    advblog 2024/10/01
  • アクセスキーを使ったaws-cliはもうやめよう! - Qiita

    はじめに アクセスキー発行するのって非推奨なの? 普段、CLI操作はCloudShellや、Cloud9上で行うようにしているのですが(環境構築 したくない。)、デスクトップ上で操作したい時があります。 そこで、一番簡単な方法であるアクセスキーを発行しようとすると、こんな代替案を提案されます。 この警告にモヤモヤしていたので、今回は「IAM Identity Center」を使ってみた。っていう記事です。 実は、アクセスキーは丸見えだったり。 最近、職場の番リリース中に気づいたのですが、AWS CLIに保存したアクセスキーや、シークレットアクセスキーは丸見えだったりします。 (↓は既に削除しているキーたちです。) アクセスキーの何がいけないのか? おおむね以下の理由から、非推奨の模様。 永続的な認証情報だから。 キーが流出すると、攻撃者がリソースにアクセスし放題。 キーの管理が面倒。 複

    アクセスキーを使ったaws-cliはもうやめよう! - Qiita
    advblog
    advblog 2024/09/30
  • JavaScriptの非同期処理をしっかり理解する 〜async/await/Promise〜 - Qiita

    JavaScript での非同期処理について、身近な例や具体例を交えながら詳細に解説しています。 最後には練習問題も用意しています! 頑張って書いているので、良いと思ったらコメント・いいね・ストック・共有などしてもらえると嬉しいです!! 非同期処理とは 非同期処理とは、プログラムの処理が順番に実行されず、ある処理を実行している間に他の処理を並行して実行することができる仕組みです。非同期処理では、あるタスクが完了するのを待たずに次のタスクが実行されるため、効率的に複数の処理を進めることが可能です。 (by ChatGPT) 非同期処理とは、「同期処理」の対義語で、同期処理は「プログラムの処理が順番に実行され、ある処理が終わるまで次の処理を待つ仕組み」です。 非同期処理の最大のメリットは、 「時間のかかる処理を行っている間に別の処理を行うことができる」 ことです! 身近な例では、部下への仕事

    JavaScriptの非同期処理をしっかり理解する 〜async/await/Promise〜 - Qiita
    advblog
    advblog 2024/09/30
  • 【Python】VSCodeで関数の引数名を表示する神機能 - Qiita

    結論 引数が多くて、わかりずらかったコードが ↓ このように、引数の名前が表示されることでめちゃくちゃわかりやすくなります! 設定方法 設定方法は、設定からPython Analysis Inlay Hints: callArgumentNamesをallにするだけ。(画像の一番上の設定です) なお、この設定は、Pylanceという拡張機能のものです(ただし、Microsoft公式のPython拡張機能パックに入っているのでPythonユーザーであれば概ね設定可能だと思います)。 jsonで設定する場合は以下のようにsettings.jsonに追記してください。

    【Python】VSCodeで関数の引数名を表示する神機能 - Qiita
    advblog
    advblog 2024/09/27
  • 単純なのに間違える!?Pythonコードの落とし穴 - Qiita

    はじめに Pythonは、初心者でも扱いやすいと言われる、シンプルで直感的な構文が特徴のプログラミング言語です。そのため、初心者から上級者まで幅広く使われていますが、シンプルだからこそ思わぬミスを引き起こすことも少なくありません。 記事では、そんな「単純なのに間違えやすい」Pythonコードの落とし穴にスポットを当て、見逃しやすいポイントや、気をつけるべき注意点を解説します。具体的なコードを紹介するので、出力結果を予想してみましょう! 弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。 また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。

    単純なのに間違える!?Pythonコードの落とし穴 - Qiita
    advblog
    advblog 2024/09/25
  • 線形代数学+Rustで画像圧縮のアルゴリズムを実装する - Qiita

    こんにちは👋 長く暑い夏が終わろうとしている今ですが、筆者は秋の季節を満喫しております。 LabBaseでは線形代数学の基礎を使って検索エンジンを構築していますが、レコメンド、検索アルゴリズムによく使われる王道の手法について記事を書くことにしました。 概要 線形代数学の特異値分解(SVD)の知識を活かして、原始的な画像圧縮アルゴリズムをRustで実装します。 SVDとは? SVDは、線形代数学でよく使われる行列の分解です。行列の分解は、同じマトリックスを他のマトリックスに分けて表現することです。SVDの他に、LU三角分解、QR分解などがあります。 SVDは、あるAというマトリックスの列空間と行空間の固有ベクトルを計算して、それぞれをUとVというマトリックスに収めます。さらに、Σという対角行列に、固有値の平方根を入れます。Vの転置行列をV'と定義しますが、以下の分解になります。 Σの体格行

    線形代数学+Rustで画像圧縮のアルゴリズムを実装する - Qiita
    advblog
    advblog 2024/09/25
  • PythonとLLMで作る!カレー好きのための知識グラフQAシステム - Qiita

    はじめに こんにちは、カレー愛好家の皆さん!今回は、Pythonと大規模言語モデル(LLM)を使って、カレーに関する知識を管理し、質問に答えるシステムを作ってみました。このシステムでは、カレー好きの人々のネットワークや、お気に入りのカレー店、新しいメニューなどの情報をグラフ構造で表現し、それをベースに質問応答を行います。 システムの概要 このシステムは以下の主要な機能を持っています: カレー関連の知識をグラフ構造で表現 ユーザーのコメントを分析し、新しい知識をグラフに追加 グラフの可視化(日語対応) グラフ情報を基にした質問応答 それでは、知識グラフの魅力について詳しく見ていきましょう! 知識グラフのメリットと有益性 皆さんは「知識グラフ」という言葉を聞いて、どんなイメージを持ちますか?難しそう?複雑そう?確かに最初はそう感じるかもしれません。でも、実はとてもパワフルで、私たちの日常生活

    PythonとLLMで作る!カレー好きのための知識グラフQAシステム - Qiita
    advblog
    advblog 2024/09/24
  • プロジェクトにおける見積もり方法の種類と比較 - Qiita

    例えば要件定義の期待値は、上記の計算式に当てはめると (0.5 + 4×1 + 2) / 6 = 1.17時間になります。 類推見積もり 具体例 「Aという機能を持ったシステムを開発するのに、前回は3ヶ月かかった。今回のシステムも機能が似ているので、今回も3ヶ月程度で開発できるだろう。」 特徴 過去の類似プロジェクトのデータに基づいて見積もるため、迅速に概算を出すことができます。 (これ、実はみなさん日常で何気なくやっているのではないでしょうか??) 注意点 今回のプロジェクトと過去のプロジェクトが完全に同じであるとは限らないため、誤差が生じる可能性があります。 ボトムアップ見積もり 具体例 システム開発プロジェクトの場合 要件定義:1週間 設計:2週間 プログラミング:4週間 テスト:2週間 総合計:9週間 特徴 プロジェクトを細分化して見積もるため、より詳細で正確な見積もりが可能です。

    プロジェクトにおける見積もり方法の種類と比較 - Qiita
    advblog
    advblog 2024/09/24
  • パスワードマネージャーは必要か? そしてなぜKeeperか? - Qiita

    総当たりする所要時間を考えると、9桁以下や10桁でも文字の組み合わせに記号がないと、危険ですね。 尚、同ガイド「インターネットの安全・安心ハンドブック」には、第6章でパスワードに関することのみにフォーカスした章があり気になる方にはおススメです。 パスワードの使い回し禁止の人力は現実的? パスワード長く記号も使おうはわかったよと、そして次の節が「使い回しはだめよ」です。使い回しがだめなら単に最後の文字だけ変える、これもだめです。 それが、だめなのはわかるのですが、わかりますが長くて複雑かつ使い回さないものは覚えられないですよね、私は電話番号という数値のみの10~11桁をよく使うものなら覚えられ、それ以上は厳しいです。 覚えられないパスワードは保管して、適時利用することが推奨されます。次の節でその方法について説明します。 「ノートに書く」? 必要に応じてノートを開く、そこに複雑な文字列がある.

    パスワードマネージャーは必要か? そしてなぜKeeperか? - Qiita
    advblog
    advblog 2024/09/24
  • 結局 Git のブランチ戦略ってどうすればいいの? - Qiita

    1つのIssueが大きくなると1 Pull Requestで大量の差分が発生します。 そうなるとレビュワーに負担がかかり、コンフリクトの可能性も高まり、コードレビューを効率よく進めることができません。 このINVEST原則を守ることでチームはより効果的に作業を進め、柔軟に対応して開発を進めることができます。 Git Flow Git Flowは5種類(main, hotfix, release, develop, feature)のブランチを運用するブランチ戦略です。 2010年に提唱された有名なブランチ戦略です。 オンラインサービスのように継続的デリバリーするコードを想定して作られた戦略ではないです。 main ブランチ 常にリリースできる状態を保つ hotfix, develop へ切り出す このブランチへの直pushはNG hotfix ブランチ バグ修正など緊急時に対応するためのブ

    結局 Git のブランチ戦略ってどうすればいいの? - Qiita
    advblog
    advblog 2024/09/24
  • 要件定義|3分で読める非機能要件について - Qiita

    はじめに エンジニアのみなさま、日々の学習当にお疲れ様です! また記事まで足を運んでいただき当に感謝です。 約3分程度で読めるので最後まで読んでもらえると幸いです。 要件定義関連の記事の投稿をしました。時間あればぜひ読んでみてください。 今回は「非機能要件」の 可用性 性能・拡張性 運用・保守性 移行性 セキュリティ システム環境・エコロジー の6項目について理解を深めてアウトプットしようと思います。 非機能要件|6項目について 1. 可用性 システムが継続して利用可能な状態を維持する能力を指します。『稼働率』 で表現されます。システムは定期メンテナンスや予期しない障害により、一時的に利用できなくなることがあります。可用性は、稼働している時間と停止から復旧までの時間の割合で決まります。たとえば、Amazonの「Amazon ECS」サービスは 『99.99%』 の稼働率を保証しており

    要件定義|3分で読める非機能要件について - Qiita
    advblog
    advblog 2024/09/24
  • 私がマージンをできるだけ使いたくない理由 - Qiita

    はじめに 突然ですが、皆さんはCSSのmargin(マージン)をよく使いますか? 私はマージンを多用しないように気をつけています。というより、あまりマージンと関わりたくないと思っています。今回の記事では、「どうして避けているのか」について自分なりの考えをまとめてみたいと思います。 あくまでも個人の意見なので、こういう考えの人もいるのだなと捉えていただけますと幸いです。もっとこうしたら良くなるのに!というご意見は大募集しているので、どんどん教えてください。 マージンを使いたくない理由 マージンを使いたくない一番の理由に、スタイルが崩れるというものがあります。「崩れる」と一言で言っても、わかりずらいと思うので落ち着いて考えをまとめてみました。その結果、下記の2パターンに分かれるという結論に行きつきました。 マージンが不可解な挙動をする コンポーネントとして使い回しずらい この二つの観点から、マ

    私がマージンをできるだけ使いたくない理由 - Qiita
    advblog
    advblog 2024/09/22
  • PyCon JPの技術に対する不正の告発、並びに技術者と大衆に対しての警鐘 - Qiita

    概要 文章は、一般社団法人PyCon JP Associationが主催したPyCon APAC 2023の開催に際し、そのプロポーザル選考過程において行われていた不正行為の告発を目的とするものです。 文章が対象とする読者は技術者、及び、公衆です。技術者は技術『愛好家』との付き合い方について一考をするべきであり、公衆は「専門家ではないにも関わらず技術の専門家のフリをする不正な愛好家」に対して無自覚であるべきではない、という警鐘を鳴らすため、並びに、一般社団法人PyCon JP Associationの公衆に対する不正を告発するため、文章を公開します。 文章は、Qiitaが目指す、学びのある情報を技術者に共有することで、よりよい技術者コミュニティの形成を目指す内容であるため、Qiitaのガイドラインに沿った形式でQiita.com上で公開します。 告発する内容 PyCon APAC

    PyCon JPの技術に対する不正の告発、並びに技術者と大衆に対しての警鐘 - Qiita
    advblog
    advblog 2024/09/22
  • Array.fromAsync()とPromise.all()の違い【JavaScript】 - Qiita

    ようわからんかったのでメモ TL;DR Array.fromAsync()は順次実行 Promise.all()は同時実行 const sleep = delay => new Promise(resolve => setTimeout(resolve, delay)) console.time() await Array.fromAsync([200, 100, 300], sleep) console.timeEnd() // elapsed: 600ms console.time() await Promise.all([200, 100, 300].map(sleep)) console.timeEnd() // elapsed: 300ms const sleep = delay => new Promise(resolve => setTimeout(() => resolve

    Array.fromAsync()とPromise.all()の違い【JavaScript】 - Qiita
    advblog
    advblog 2024/09/19