オープンソース調べOSS 

オープンソース調べOSS 

Typoだっていい!OSSにコミットするチャンスだ!

# こんな重箱の隅を突くようなコミットに価値があるのか…?

(最近やっていないのですが)私は競技プログラミングを趣味としており、コード作成・テスト・提出に[online-judge-tools](https://github.com/online-judge-tools/oj)を利用しています。
そこで、個人的に新機能を作成したいと思いコードを読んでいた所、思う所があり[Pull Requestを出しApproveを頂きました](https://github.com/online-judge-tools/oj/pull/921)。
まだmergeされてはいませんが、クリティカルな部分ではないですし、問題はありません。

何のPRを上げたでしょうか?そう、**Typo**です。

# これじゃ、俺…コードやコメントを書けなくなっちまうよ

Typo(タイプミス)はプログラムを書く上で一定の確率で起こり、実行時またはコンパイル時にエラーが引き起こされます。
最近は静的解析ツールなどが優秀なので、キーワードや予約語、変数等のハイライトやインデント等で開発者が間違いに気づきやすくな

元記事を表示

SQLBuilderの仕様を考える DELETE仕様検討編

# 目的
GolangのSQLBuilerを作ってみたくて、仕様を考える。
今回はDELETE文の仕様を考える。また、TRUNCATEも併せて考える。

# 目指す形
ここではusersというTableに対応したUserというTableモデル構造体がある場合とする。
宣言としては、
“`
CREATE TABLE users (
id int,
name varchar(10)
)

CREATE TABLE tokens (
id int,
user_id int REFERENCES users.id,
token varchar(10)
)
“`
を想定する

## DELETE

パッケージ名は仮でpkとして

“`go
pk.DELETE(pk.Table(“users”))

// DELETE FROM users
“`

とすることを考えている。

WHERE句の利用は

“`go
pk.DELETE(pk.Table(“users”)).WHERE(pk.Eq(“users.id”), 1)

// DELETE FROM users W

元記事を表示

SQLBuilderの仕様を考える UPDATE仕様検討編

# 目的
GolangのSQLBuilerを作ってみたくて、仕様を考える。
今回はUPDATE文の仕様を考える。

# 目指す形
ここではusersというTableに対応したUserというTableモデル構造体がある場合とする。
宣言としては、
“`
CREATE TABLE users (
id int,
name varchar(10)
)

CREATE TABLE tokens (
id int,
user_id int REFERENCES users.id,
token varchar(10)
)
“`
を想定する

## Update

パッケージ名は仮でpkとして

“`go
pk.Update(pk.Table(“users”)).Set(“name”, “test”)

// UPDATE users set name = ‘test’
“`

とすることを考えている。

複数カラムに関しては

“`go
pk.Update(pk.Table(“users”)).Set(“id”, 2).Set(“name”, “test”)

//

元記事を表示

React に プルリクを送ったけど、マージされなかった話

## 短くまとめると

[React](https://github.com/facebook/react) に PR を送ったら、メンテナからの反応が渋そうだったので萎えていたら、メンテナが自分でブランチ切って修正してマージしていた。

## 教訓

1. OSS ではメンテナの言葉に一喜一憂しない鋼の心が必要
2. OSS では調査に時間がかかっても、できるだけすぐレスする
3. OSS で PR を送る前に テストとリント(と React の場合はタイプチェック, Flow)を通す

## PR を送る前からメンテナがマージするまでの流れ

#### 普段自分がしていたこと

去年の12月になって、1年間業務で使っている Next.js の内部構造を知らないのも変だなと思い Next.js のソースコードを読むようになりました。その過程で、server とちょっと build と client が分かるようになったので、今年の 1月から issue を探して、そのバグ修正を行うようになりました。

#### ことの発端

今回のことの発端は、この issue でした。

htt

元記事を表示

英語エラーメッセージ探訪

# 序

英語でそれっぽいエラーメッセージを書けるようになりたいので、OSSのソースを読むとき、ついでにいろんなエラーメッセージやコメントを収集しています。自分が書くときの参考用に、今までに集めたものから記事を書いてみることにしました。

– 英語が得意じゃないにしても、それなりに伝わるようにメッセージを書けるようになりたいという意図です
– 引用してるものと、私がそれっぽく書いたものが混在しています
– 誤りを見つけたら、ぜひ編集リクエストをください。よろしくお願いします

– 主にJavaScript/TypeScript製のフレームワークやライブラリから拾っています

:::note warn
以下には「よく見る」、「あまり見ない」、「多い」など頻度についての言及がありますが、あくまでも私の主観に基づく記述であり、統計など具体的な根拠に基づくものではありません。
:::

## エラーが発生しました系

– エラーが発生したことを示したい時に
– 具体的な対応策を追加で提示することが望ましいでしょう
– 異常系が雑に作られてるとトラブル対応で死に

元記事を表示

SQLBuilderの仕様を考える INSERT仕様検討編

# 目的
GolangのSQLBuilerを作ってみたくて、仕様を考える。
今回はINSERT文の仕様を考えるが、SELECT+INSERTまで考えると複雑になるので
一旦保留にする

# 目指す形
ここではusersというTableに対応したUserというTableモデル構造体がある場合とする。
宣言としては、
“`
CREATE TABLE users (
id int,
name varchar(10)
)

CREATE TABLE tokens (
id int,
user_id int REFERENCES users.id,
token varchar(10)
)
“`
を想定する

## Insert

パッケージ名は仮でpkとして

“`go
pk.Insert().Into(pk.Table(“users”)).Value(1, “test”)

// INSERT INTO users VALUES(1, ‘test’)
“`

とすることを考えている。

カラムを限定する場合は

“`go
pk.Insert(“id”).Into(

元記事を表示

ライブラリ自体のバグに遭遇したときにとるべき行動

https://qiita.com/laineus/items/00edd8a7abdb336cde3f

「ライブラリ自体がバグってるなら俺にはもうどうすることもできん!」
「OSS活動なんてごく一部のつよつよエンジニアだけができるんでしょ?」

って思っている方も、諦めるのは早いです。

ライブラリ側起因の問題でも解決できるかもしれませんし、もしかしたらライブラリに貢献できるかもしれません。

# 1. 調査

:::note info
まずは問題をよく調査することが重要です。
問題の原因が詳しく理解できているほど、このあとにとれる手段も広がっていきます。
:::

## ライブラリのバグなのか見極める

発生している問題が本当にライブラリのバグによるものなのか、自分のコードに問題があるのかを見極める必要があります。

そのためには、自分のプロジェクトのコードをひたすら削っていきながら、**最小限の再現コードを作成**します。

この最小限の再現コードは後で色々と役に立ちます。

## ライブラリのバージョンを変えてみる

ライブラリのあるバージョンから発生した不具合の可

元記事を表示

SQLBuilderの仕様を考える SELECT仕様検討編

## 目的

GolangのSQLBuilerを作ってみたくて、仕様を考える。
今回はSELECT文の仕様を考えるが、サブクエリまで考えると複雑になるので
一旦保留にする

## 目指す形

ここではusersというTableに対応したUserというTableモデル構造体がある場合とする。
宣言としては、

“`sql
CREATE TABLE users (
id int,
name varchar(10)
)

CREATE TABLE tokens (
id int,
user_id int REFERENCES users.id,
token varchar(10)
)
“`

を想定する

## Select

パッケージ名は仮でpkとして

“`go
pk.Select().From(pk.Table(“users”))

// SELECT * FROM users;
“`

とすることを考えている。

カラムを限定する場合は

“`go
pk.Select(“id”).From(pk.Table(“users”))

// SELECT i

元記事を表示

OSSなSNSの開発事情を調べてみた

ここ最近、我らが Twitter が X になってから、なんやかんや X にいつつもどこのサービスに移行しようかと議論されています。

そこで、Twitter に似たオープンソースな SNS がどのような技術で作られているか簡単にまとめました。

# Bluesky

Twitter の共同創業者のジャック・ドーシーらが発案した分散型 SNS です。

https://github.com/bluesky-social

[Social-app](https://github.com/bluesky-social) のリポジトリがサービスへ直接関わるリポジトリになります。

– 技術: [React Native](https://r

元記事を表示

SkillCred への 道 〜 Linux Foundation SkillCred (Vim, Bash, Git編)〜

こんにちわ。
以前、「[LFCS への道](https://qiita.com/maabou512/items/740a1a2bd3d35c38ddab)」で Linux システム管理者の認定について取り上げました。

OSSのジャーニーとして実践的なパフォーマンスベースで「スキルを証明する」ことができるようになり、その選択肢も増えてきました。クラウドネイティブや AI 周りといった新しめの領域も気になるところです、はい。
でも、ワタシはコツコツ型なところもあり、「急がばまわれ」で高度な話は一旦置いておいて(横目でチラ見はしちゃいますけど)、少し新しめの技量認定「**SkillCred**」にトライしてみました。その備忘録的な内容になります。

※試験の内容については触れてませんのでご了承ください。

![Screenshot from 2024-01-29 07-47-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3085729/aa5ff033-2b1e-92b5-dbe7-6aa896ce0

元記事を表示

分散RedisロックとJedisクライアント

# はじめに
以前、Redis上でセマフォを実装する必要がありました。驚いたことに、私たちが使用しているJedisクライアントとLettuceクライアントの両方には、それに対する良い準備ができた解決策がないことがわかりました(Redissonにはそのようなものがあります)。
そのため、私はその隙間を埋め、JedisとLettuceの両方のRedisクライアント向けの解決策を提供することにしました。

# セマフォが使用したい理由は何ですか?
リソースの相互利用を制限する必要がある状況を想像してみてください。たとえば、バックグラウンドタスクで実行されている重いSQLクエリが全体のサービスパフォーマンスに悪影響を及ぼす可能性がある場合、許可された回数よりも同時にそのクエリが発行されないようにする必要があります。
セマフォを使用することで、共通リソースのクロスプロセス競合状態を解決し、共通リソースへのアクセスを特定の量に制限することができます。

# 解決策はこちらです
[RedPulsar](https://github.com/himadieievsv/redpulsar) が、セマフォ

元記事を表示

Github上の最新OSSプロジェクトを自動で紹介するアプリを作った

Github上では日々多くのOSS(オープンソースソフトウェア)が生まれていますが、それらをフォローし続けるのは全ての人ができることはありません。また昨今では英語は無論、中国語のOSSプロジェクトも勢いを伸ばしてきています。そういった**言語の壁**を超えた情報提供が為されることを含め、そういった**OSSプロジェクトの見つけにくさ・分かりにくさ等の問題**を緩和させることをゴールに作られたのが、今回ご紹介する「[Open Source DB(オープンソースデータベース)](https://shortener.work/s/opensourcedb3)」です。

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3666436/ebb10250-613a-54f5-84d8-f5690ab3d0fb.png)
> 「AutoGPT」を紹介するページより。(Open Source DB)

元記事を表示

CentOSにOpenFOAM v2312をインストール

この記事は流体解析のオープンソースソフトウェアであるOpenFOAMのバージョンv2312を,CentOS 7.xにインストールした際の手順を備忘録としてまとめたものです.

# OpenFOAMのダウンロード

OpenFOAMのバイナリパッケージ及びソースコードは以下のサイトから入手できます.

* [OpenFOAM – The Open Source CFD Toolbox](http://www.openfoam.com/)
* [The OpenFOAM Foundation](http://openfoam.org/)

1つめのサイトはESIグループによるものです.一方,2つめのサイトはOpenFOAM Foundationによるものです.リリースされた年月でバージョンがついてるもの,すなわち今回のv2312(2023年12月リリース)は前者のESIのサイトから入手できます.

# インストールの種類

ESIのサイトでは,Windows,Mac,Linuxのバイナリがダウンロードできます.Windowsでは,Windows Subsystem for Linux (

元記事を表示

TensorFlowの内部構造を理解するために必要なことを考える(備忘録)

この記事は[OSS Advent Calendar 2023](https://qiita.com/advent-calendar/2023/open_source_software) 20日目の投稿です。

# 概要
TensorFlowの内部構造について理解したら仕事の幅が広がる現場に異動しました。なぜなら、新しい部署では次世代スーパーコンピュータ向けにTensorFlow、PyTorch、scikit-learnを移植するというミッションがあるからです。しかし、公式GitHubのソースコードを一度でも読もうと挑戦された方は気付くと思います。この膨大な量のソースコードをどうやって読めば良いのかと。。。ましてや内部構造を理解するなんて。。。筆者にも答えは有りません。有りませんが、無いなりに仮説を立てて、今後検証していこうと思います。

https://github.com/tensorflow/tensorflow

# 何をすべきか?
当然こう書けば、TensorFlowのソースコードを読むという結論に達するでしょう。しかし、いきなりは難しいでしょう。よって筆者はステップアップ方式

元記事を表示

SQLiteのDBをWebAPIにするnpx cliツールを作った

## 序

フロントエンドの実験中や、開発の初期の初期、PoCの段階などで、**DBを使いたいんだけどバックエンドを書くのめんどくさい**ってこと、ないでしょうか。私は割とあります。
そこで、SQLiteのDBを即席WebAPIにする開発用ツールを作りました。

#### npm

https://www.npmjs.com/package/apifi-sqlite

#### GitHub

https://github.com/kedama-t/apifi-sqlite

## Usage

– `npx`で一撃です。

“`sh
npx apifi-sqlite ./hoge.db 3000
“`

– このコマンドを実行すると、`hoge.db`のテーブルごとに、`http://localhost:3000/`以下にエンドポイントが生えます。
– ポートは省略可能で、デフォルトは`3000`です。
– `http://localhost:3000/`にアクセスすると、APIのリストが~~雑に~~出ます。
– ほんとは[Swagger](https://swagger

元記事を表示

有名OSSに軽くIssueを立ててみた話

本記事は[Nihon University Advent Calendar 2023](https://qiita.com/advent-calendar/2023/nihon-u)の8日目の記事です。

# はじめ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1206692/2b9da12d-cbfd-882b-6466-ae0202b6b6eb.png)

[Bun](https://bun.sh/)というOSSにissueを立ててコントリビュートしました。

[Bun](https://bun.sh/)とは以下の引用の通り、テストランナー、バンドラー、トランスパイラー、ランタイムやパッケージマネージャーを兼ね備えているオールインワンのツールです。他のパッケージマネージャーやテストランナーより良いパフォーマンスが出ているとアピールしています。また、Lockfileがバイナリーファイルであるのが特徴的です。

>Develop, test, run, and bundle Java

元記事を表示

2023年末のElixirが出来ること⑩データ操作ライブラリ編(最新Elixirのキャッチアップと、アドカレのネタ探しに読んでください)

この記事は、[Elixir Advent Calendar 2023 シリーズ14](https://qiita.com/advent-calendar/2023/elixir) の24日目です

昨日は、 私で [「【TIPS】Elixirでループのbreak」](https://qiita.com/piacerex/items/1472eacf2f1df50138ee) でした

【本コラムは、10分で読めます】 ※各ライブラリをお試しいただく場合は各自次第で

[piacere](https://twitter.com/piacere_ex) です、ご覧いただいてありがとございます :bow:

2023年末の時点で、Elixirにいったい何が出来るのかを紐解いていくシリーズで、[前回は「⑨ マイクロサービスライブラリ編」](https://qiita.com/piacerex/items/7e4b15e4dd9a94e58b3b)でしたが、今回は「⑩ データ操作ライブラリ編」です

:::note warn
[① 2023年の新たなライブラリ/FW編](https:/

元記事を表示

25日間のまとめ -OpenChain Japan Advent Calendar 2023-

こんにちは!
昨日に続き、3度目の登場の遠藤です。
今年のアドベントカレンダーもいよいよ最終日です。
そこで、本日はこの25日のまとめをやっていきたいと思います。
![IMG_3589.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/537313/de1f863f-4098-ad3a-69b1-f4f14b9aebbb.jpeg)

# 生成AIの衝撃
なんといっても2023年のテック業界のキーワードは生成AI(GAI)でしょう。
その可能性についてはここで語るまでもありませんが、そのポテンシャルの高さがゆえにビジネス活用時の課題などもたくさん出てきており、まさに過渡期という感じです。
OSSのライセンスコンプライアンスに関わる課題も出てきているので引き続き私たちも注目していきたいと思います。
[生成AIの知財リスク](https://qiita.com/MasatoENDO/items/c482dde9216385f3dba4)
[生成AIにおけるライセンスリスク及びセキュリティリスク](https:/

元記事を表示

yumemi_lints を開発したお話

## はじめに

2023 年 11 月に pub.dev でゆめみ初のパッケージを公開しました。

https://pub.dev/packages/yumemi_lints

https://github.com/yumemi-inc/flutter-yumemi-lints

## [yumemi_lints] の特徴

ざっくり特徴をまとめると次のとおりです。

– Dart / Flutter のバージョンごとのリントルールセットを提供しています
– Dart 2.17 / Flutter 3.0.0 以降の全てのバージョンをサポートしています
– 提供しているリントルールセットは自動生成しています
– 推奨リントルールセット以外に全てのルールが入っているリントルールセットも提供しているため、簡単にカスタマイズできます

詳しくは [yumemi_lints] の README をご覧ください。

## 開発することになったきっかけ

個人的には、2022 年 1 月に Flutter ギルドを立ち上げた当初から、会社として pub.dev へ何かパッケージを公開したいと考

元記事を表示

個人ゲーム開発・TRPG関連のOSS

https://qiita.com/Subara3/items/c6874fe04504fa7148b3

上の記事でAdvent Currenderに参加したついでに、「身近で自分がお世話になっているOSSって何があるのかな~」と思ってリストアップしてみました。
私の趣味です。

# TRPG関連

## BCDice
https://github.com/bcdice/BCDice

Discordのダイスボットや、各セッションツールで使用されているダイスシステム、BCDice。

## ユドナリウム

https://github.com/TK11235/udonarium

セッションツール、ユドナリウムはオープンソースです。
カードの操作がしやすく、インセインやマーダーミステリーでお世話になっています。

# ゲーム制作関連

## godot
https://github.com/godotengine/godot

これは大きいところ、ゲームエンジンgodotはオープンソースです。

## Suika2
https://github.com/suika2engine/s

元記事を表示

OTHERカテゴリの最新記事