- 1. 【Python】`comtypes==1.3.1`から`GetModule`で生成されるモジュールに静的型ヒントが導入
- 2. OSS HCI ソリューション Proxmoxの国内コミュニティを作った話
- 3. 初めてOSSにコントリビュートしました
- 4. Atom の作者達が作った Rust 製エディタ Zed (OSS)
- 5. Typoだっていい!OSSにコミットするチャンスだ!
- 6. SQLBuilderの仕様を考える DELETE仕様検討編
- 7. SQLBuilderの仕様を考える UPDATE仕様検討編
- 8. React に プルリクを送ったけど、マージされなかった話
- 9. 英語エラーメッセージ探訪
- 10. SQLBuilderの仕様を考える INSERT仕様検討編
- 11. ライブラリ自体のバグに遭遇したときにとるべき行動
- 12. SQLBuilderの仕様を考える SELECT仕様検討編
- 13. OSSなSNSの開発事情を調べてみた
- 14. SkillCred への 道 〜 Linux Foundation SkillCred (Vim, Bash, Git編)〜
- 15. 分散RedisロックとJedisクライアント
- 16. Github上の最新OSSプロジェクトを自動で紹介するアプリを作った
- 17. CentOSにOpenFOAM v2312をインストール
- 18. TensorFlowの内部構造を理解するために必要なことを考える(備忘録)
- 19. SQLiteのDBをWebAPIにするnpx cliツールを作った
- 20. 有名OSSに軽くIssueを立ててみた話
【Python】`comtypes==1.3.1`から`GetModule`で生成されるモジュールに静的型ヒントが導入
## 初めに
[2023年11月30日に行われたGuido van Rossum氏インタラクティブ記念講演会(#guidomeetup)](https://pyconjp.connpass.com/event/301716/)で[発表した`comtypes`へのコントリビュートについてのプレゼンテーション](https://docs.google.com/presentation/d/1sZ_tAlDRtgWb6JBG9Oumleu8wG45oGFx1_dRg2WnN7U/edit?pli=1#slide=id.p)内容を`main`ブランチに取り組み[`comtypes==1.3.1`](https://pypi.org/project/comtypes/1.3.1/)としてリリースしたので、その機能のご紹介です。## 概要
これまで`comtypes.client.GetModule`によって`comtypes.gen`以下に生成されるモジュールにあるCOMインターフェースにはPythonフレンドリーな静的型情報がなく、モダンなPython開発に比べてコーディング体験が低い状態
OSS HCI ソリューション Proxmoxの国内コミュニティを作った話
## TL;DR
– 国内コミュニティは突然に…
– 名前・アイコンなど悩みどころは多い…
– とりあえず勉強会でもやっちゃうか!## 概要
OSS の HCI ソリューション群 Proxmox の日本国内向けユーザーコミュニティを作成しました!https://jpmoxs.connpass.com/
というわけで、OSSの国内コミュニティを作った体験記です。
## きっかけ
### 始まりはアーリーアダプターとの打ち合わせアーリーアダプターなお客さんとの打ち合わせ時に「UG(ユーザーグループ)とかあるといいですよね」という話で盛り上がるシーンがありました。
そうおっしゃっていたのはUGに見識があり、自身も他のUG参加している方でした。自身もそのうち…ぐらいでは考えていたのですが、想像以上にニーズがあるというか、取り急ぎあったほうがいい、という感覚がなかったのでなるほどと思いました。
### 突如できる LINE OpneChat
とりあえず作ってみた
オープンチャット「Japan Proxmox VE User Group」https://t.co/zxjyBE55Pz
— nesk (@XI_nesk) February 4, 2024
上記の通り、
初めてOSSにコントリビュートしました
# はじめに
私はエンジニア3年目ですが、新卒でエンジニアになったときからいつかはOSSにコントリビュートしてみたいという目標がありました。そしてついに、普段お世話になっているリポジトリや機能に対してコントリビュートできたので、その背景をまとめたいと思います。
# コントリビュートの内容
マージされたPRは、以下です。https://github.com/composer/composer/pull/11816
リポジトリは、[Composer](https://getcomposer.org/)です。
PHPを使っている方ならお馴染みの、パッケージ管理ツールです。モダンなPHP開発では、ほぼ必ず用いられるツールです。
筆者も業務でPHPとLaravelを使って開発をしていますが、毎日当たり前のようにComposerを使っています。コントリビュートの内容は、テストコードの追加です。
self-updateコマンドという、Composer自身のバージョン管理を行えるコマンドがあるのですが、そのコマンドのテストケースをなにもない状態から作成しました。カバレッジは、4
Atom の作者達が作った Rust 製エディタ Zed (OSS)
## 1. 概要
2024年の1月24日に[ZedがOpen source化](https://zed.dev/blog/zed-is-now-open-source)しました! ということで、Zedとは何か、実際に使ってみてどうだったかというのを簡単にご紹介できればと思います。## 2. Zed とは何か?
AtomとTree-sitterのクリエイターによる、Rust製のコードエディターで、OSS (オープンソースソフトウェア) であり、 Githubのリポジトリ [こちら](https://github.com/zed-industries/zed?tab=readme-ov-file)で公開されています。公式サイトから一部抜粋すると下記のような特徴があるようです。
### 2.1 パフォーマンスを重視した設計
– ![スクリーンショット 2024-02-20 17.33.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210923/79c6a788-43c7-0ed3-23a0-7
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 がどのような技術で作られているか簡単にまとめました。
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