タグ

*softwareと*programに関するsh19910711のブックマーク (184)

  • Rust製ツールのmiseでランタイムバージョンを管理する|Taro Yamashita

    アキッパの山下です。 手元の環境を汚さずに、PHP/Python/Node.jsなどのランタイムバージョンを切り替えたいというニーズでは、Dockerの利用がすっかり主流だと思いますが、シーンによってはPythonのvenvといったツールもまだまだ活躍するシーンは多いのではないでしょうか。 そんなツールの中で、今回はRust製ツールのmiseを紹介します。 ランタイムバージョン管理とは?あらためて、ITシステムやWebサービスを開発・運用していく場合、どのプログラミング言語で構築されているか?だけでなく、そのバージョンは?も重要なポイントです。 稼動しているサーバにインストールされている言語バージョンと、手元の開発環境でバージョンが異なれば、手元で動くのにサーバで動かない(あるいはその逆)が往々にして起こります。 開発環境にサーバと同じバージョンをインストールすれば良いのですが、サーバAで

    Rust製ツールのmiseでランタイムバージョンを管理する|Taro Yamashita
    sh19910711
    sh19910711 2024/05/28
    "手元の環境を汚さずに、PHP/Python/Node.jsなどのランタイムバージョンを切り替えたいというニーズ / mise: asdfと完全互換なうえに、速度面でも文句なし + rtxからmiseに名前が変わった"
  • 話題の組版エンジン Typst を触ってみた

    Typst — 新しい組版エンジン 今年の3月21日、Typst というソフトウェアが public beta となり、処理系がオープンソースで公開されました。 Typst is a new markup-based typesetting system for the sciences. Typst はマークアップベースの新しい組版システムです。独自の構文を持っており、Typst で書かれた文書をオンラインサービスまたはローカル上でコンパイルすることで PDF に変換(出力)することができます。 公式サイトには「科学分野向け」「LaTeX への不満から生まれた」とあり、数式や相互参照等の機能が充実していることから、メインターゲットも LaTeX ときわめて近いところにあると考えられます。とはいえそれ自体は汎用的な組版システムなので、用途も 論文・会議原稿 雑誌の記事 小説 技術書 スライ

    話題の組版エンジン Typst を触ってみた
    sh19910711
    sh19910711 2024/05/21
    "Typst: 組版システム + 公式サイトには「科学分野向け」「LaTeX への不満から生まれた」とあり / マークアップとプログラミングの両側面を両立するとなると様々な問題が生じがち(括弧の種類が足りないとか)" 2023
  • LaTeX と Typst を比較してみよう - 日常のカフスボタン

    LaTeX と Typst はともにテキストファイルから PDF を出力できる目的や方法が卑近なツールです。 これらにはよく知られた違いがいくつかありますが、これらの違いが明文化されている記事は無いようでした。 そこで、この 2 つのツールをさまざまな点で比較してみました。 注意:記事は LaTeX と Typst のどちらが良いツールかを検討する記事ではありません。単に比較することのみに終始することに注意してください。 環境構築 LaTeX を利用するには、以下のようなディストリビューションをインストールする必要があります。(W32TeX は配布終了しました) TeX Live MacTeX MiKTeX ...and more TeX Live のインストールには少なく見積もっても 1 時間弱、フルスキームに至っては 2 時間強ほど必要です。これは、多数のパッケージやフォント、それら

    LaTeX と Typst を比較してみよう - 日常のカフスボタン
    sh19910711
    sh19910711 2024/05/21
    "TeX ディストリビューションは、TDS と呼ばれるディレクトリ構成に従っています / TeX Live は毎年(概ね 3~4 月くらい)にバージョンが変更 + これは、毎年数時間かかる環境構築をする必要があることと同義"
  • 関数型言語XQueryで大量のXMLを楽にさばく - Qiita

    まえがき オープンデータ隆盛のこのご時世、意外と XML でデータを公開しているケースは多い。 XML形式で公開されているオープンデータを扱う際に XMLデータベース の一つである BaseX を活用してみた経験についてざっと書いてみる。 公開されている実世界のオープンデータを、事前知識なしで扱うのはなかなか大変だ。ドキュメントが整備されていなかったり、不揃いであったりして、ざっとデータの傾向を見てみないと活用しづらいケースが多々ある。 しかし、 帯域幅の制限もあって一回のアクセスでは十分な量のデータを得られない API があまり作り込まれていないため、欲しい情報をピンポイントで得るための検索ができない などというのは日常茶飯事だ。 そこで試しにちょっとしたスクリプトを書いて、まとまった量のデータをマイルドな周期でダウンロードすることになるけれど、 書き捨てのスクリプト一々書くのは億劫だ。

    関数型言語XQueryで大量のXMLを楽にさばく - Qiita
    sh19910711
    sh19910711 2024/04/29
    "テンポラリーなXMLの格納場所として XMLデータベースを使う / BaseX: XMLデータベース + XQuery が案外リッチで書いていて楽しかったり、同時に大量の XML ファイルを解析できて楽" 2015
  • 固有名詞をつけるとき - 詩と創作・思索のひろば

    ソフトウェアエンジニアリングにおいて大切なのは、人間のことをのぞけば名付けだと思っている。言葉がなければ世界は混沌としたままだけど、そこに名前をもたらすことがものごとを切り分け、ひとつの秩序をもった視点をつくる。この秩序は唯一絶対のものではなくて、なんらかの意志によって導かれたものである。ソフトウェアはあくまでも現実の抽象だから、問題をどういう視点で見るか、という軸があるわけだ。そういう意味では人間のことではある。 適切につけられた名前は、そのことによって他のものとの自然な境界を与えられていて、その他の名付けと一貫性を持っている。そういう名前は既存の名付けの体系になじむので、同じ言葉を使う人々のあいだに受けいられれて、共通のコンテキストに追加される。そして次第に暗黙のものになっていく。 たとえばユーザのフォローがあるSNSのようなウェブサービスをつくるときに、QueueとかBrokerみた

    固有名詞をつけるとき - 詩と創作・思索のひろば
    sh19910711
    sh19910711 2024/04/27
    "名前: ものごとを切り分け、ひとつの秩序をもった視点をつくる / Goはやりすぎだけど、定着するだけのパワーがあった / ecspressoみたいに固有名詞でありつつ中身を示唆している名前を考えられたら楽しい"
  • RustでRISC-Vエミュレータを書いてNOMMU Linuxをブラウザで動かした | MaybeUnInit

    RustRISC-Vエミュレータを書いてNOMMU Linuxをブラウザで動かした #2023-05-23 以前からRISC-Vエミュレータを書いてみようと思っていたのだが、書いては飽きてを繰り返して全然進められずにいた。そんな中、以下のRepositoryで、rv32ima,Zifencei,Zicsr、あとはCLINTを実装すればLinuxが動くと知り、飽きずに進められそうな気がしてきたので今度こそ、と実装してみることにした。 https://github.com/cnlohr/mini-rv32ima目次成果物 #Repositoryは以下。記事では実装の概要の記載もあるが、簡略化していたり抜粋だったりするので適宜参照いただきたい。基的にはcoreというcrateが実装の中枢となっている。appはcoreにcliの皮を被せただけだ。 また以下にPlaygroundも用意した。

    sh19910711
    sh19910711 2024/01/12
    "参考図書: RISC-V 原典 + 私はどのようにして Linux カーネルを学んだか / 記述量は 1000 行くらい / CPUのみではなく、割り込み機構やTimer/UARTがどういうものかも学ぶことができる" / 2023
  • Terraformのplan結果をChatGPTに説明してもらう機能をCI/CDに組み込んでみた! - Qiita

    背景 インフラエンジニア 「このterraformコードのPR、レビューお願いします。」 インフラエンジニア 「変更点はplan結果↓を見てください。」 An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create ~ update in-place - destroy -/+ destroy and then create replacement Terraform will perform the following actions: # aws_instance.example1 will be created + resource "aws_instance" "example1" { + ami

    Terraformのplan結果をChatGPTに説明してもらう機能をCI/CDに組み込んでみた! - Qiita
    sh19910711
    sh19910711 2023/07/12
    "変更点はplan結果↓を見てください / レビュアーがTerraformに精通していなくても、この機能により変更点を理解する手助け / レビューの際にChatGPTがどんなことを喋ってくれるのか少し楽しみになる、というメリットも"
  • Cのプロダクトを作るためにやったこと - Tomohisa Oda

    今年に入って Octopassというプロダクトを公開しました。それは、Linuxのユーザや権限をGithubのTeamと連携して運用を楽にするというツールでした。色んな方々のご協力により、多くのRetweetやはてぶいただいたことで、ある程度、Octopass を必要としそうな人の目に触れたのではないかと思っています。(Githubのスター数が少ないのは今後の課題)その中で「すごく便利」「ぜひ導入したい」というフィードバックは、継続して機能追加していくというモチベーションにつながっていて、非常にありがたいです。 さて、この Octopass は、Linuxユーザ名前解決をするためにの glibc の libnssモジュールをCで実装しています。cgoやその他の言語でShared Objectを吐き出しても良かったのですが、それだと技術的挑戦が足りないとして、触れてこなかったCに挑戦しました

    Cのプロダクトを作るためにやったこと - Tomohisa Oda
    sh19910711
    sh19910711 2023/03/09
    2017 / "Octopass: Linuxのユーザや権限をGithubのTeamと連携して運用を楽にする + Linuxユーザ名前解決をするためにの glibc の libnssモジュールをCで実装"
  • 大昔のgccのプリプロセッサに関する、極めてどうでもよい話 - のらりくらり

    sh19910711
    sh19910711 2023/03/07
    2017 / "昔のgccはプリプロセッサが#pragmaディレクティブを見つけるとコンパイルを中止してゲームを起動する / 当時のgccはどうも#pragmaをいけ好かないものとしていた / 「処理系ごとに決められた動作」としてゲームを起動"
  • fabric2いいかも • masu-mi's blog(dirty pages)

    最近になって「fabricで作業の自動化を増やしたい」と思うことがありました。 調べてみたらPython3対応されたfabricはfabric2として独立していました。そしてfabric2を待ちきれずにフォークされたfabric3はメンテされている様子はありません。 正解はfabric2です。 fabric2はfabricと違いinvokeのssh拡張がついたラッパーなようです。 使うにあたりConfig, Connection, Groupの違いを確認したりしました。 また気楽なタスクランナーとして使うためにヘルパーやパターンが出てきたのでメモします。 実験した残骸はここに残してます。 pkg version

    sh19910711
    sh19910711 2023/02/13
    2021 / "調べてみたらPython3対応されたfabricはfabric2として独立していました / fabric2を待ちきれずにフォークされたfabric3はメンテされている様子はありません。 正解はfabric2です"
  • 何がOS実装の理解を難しくしているのか(GNU assemblyのポイント)

    OS内部どうなってんのか知っといた方がいいんだろうなぁ、と思っている人向けになんか書きたいなぁ、と思って書きました。 OSを理解しようとすると、初回は挫折感をあじわって退場するのですが、原因いろいろあると思います。 C言語、アセンブリ(gnu assembly)、ELF, linker scriptの知識 boot処理時(の登場人物)で混乱する マルチタスク処理(switching, interrupt)がわからん OS自作しようぜ、みたいなはじめから強いが多い まぁ、最後のは冗談として(自分は凡人なので..)、 https://github.com/mit-pdos/xv6-public (Unix V6のx86(32bit) implementation。以下xv6と呼びます) と https://pdos.csail.mit.edu/6.828/2018/xv6.html がとても

    何がOS実装の理解を難しくしているのか(GNU assemblyのポイント)
    sh19910711
    sh19910711 2022/10/16
    2018 / "プログラム動作時のメモリの配置のイメージがかなりはっきり / お給料あがるかどうかはちょっとよくわかりません / xv6: assemblyのコードを読むためには%espレジスタと%eipレジスタの正確な把握が非常に重要"
  • ニコニコ生放送におけるWebフロントエンドBFFサーバーのKubernetes移行事例の紹介

    2022/06/13に「ニコニコ生放送 WebフロントエンドKubernetes移行ハンドブック 2022」を公開しました。発表ではハンドブックの内容とともに、WebフロントエンドにおけるKubernetesへの移行と運用がどのようなものか紹介します。 Playground

    ニコニコ生放送におけるWebフロントエンドBFFサーバーのKubernetes移行事例の紹介
    sh19910711
    sh19910711 2022/08/18
    "TypeScriptでManifestを書く / 型定義はOpenAPIから生成 / OpenAPI SchemaのdescriptionがEditorで見れるためWeb検索しなくてもいい"
  • (小ネタ) terraform graph で該当するリソースだけ絞り込むスクリプト | DevelopersIO

    お疲れ様です。小島です。 terraform のリソースは増えていくにつれ、関係性について把握が難しくなるのではないでしょうか。 その時、依存関係を dot 言語で出力してくれる terraform graph があります。 しかし、多くのリソースが含まれる図には多くの関係を示す線が含まれており、把握するには一苦労です。 terraform graph には module-depth という深さを指定し、出力を絞り込むことができるオプションがあります。 ですが、スモールスタートでの開発で徐々にリソースが増えていくような場合だと、 module のリファクタリングは state も考慮する必要があるので後回しになりがちです。 なので、正規表現に該当するリソースだけ吐き出すようなスクリプトを go で書きました。 スクリプト スクリプトの使い方 # Glue に関するリソースを絞り込む ter

    (小ネタ) terraform graph で該当するリソースだけ絞り込むスクリプト | DevelopersIO
    sh19910711
    sh19910711 2022/01/28
    terraform graphでdot言語出力できるの知らなかった / "dot 言語の解析と出力には https://gonum\.org のライブラリを使用 / 数値計算用ライブラリ、とのことですが、グラフ言語に関するコードも入っていました"
  • Stairlight というデータリネージツールをつくった - public note

    Stairlight*1 という、テーブルレベルのデータリネージができるツールをつくりましたので、その特徴や使い方について書きます。 github.com 背景 ETL(Extract, Transform, Load) と呼ばれる一連のデータ加工プロセスにおいて、バッチ処理での Transform は、ある程度まとまったデータのかたまりが、その形を変えることを指します。その変換処理は SQLで操作されるのが一般的で、データ移動の単位はテーブルです。そのSQLは、CREATE TABLE AS SELECT... や CREATE VIEW AS SELECT... など形は様々ですが、 突き詰めると SELECT 文です。データパイプラインにはたくさんの SELECT 文が登場しますが、加工や参照が行われる場所・タイミングは様々で、データがいつ生成されて、いつどこで参照されているのか、全

    Stairlight というデータリネージツールをつくった - public note
    sh19910711
    sh19910711 2021/11/21
    dbtもこういうマトリックス的に設定できる機能ないのかな / "Jinja パラメータがある場合は、アプリケーションで埋め込んでいるパラメータのパターンの数だけ設定すると、複数のクエリがあるものとして読込を行います"
  • Blender + Pythonでポイントクラウドを可視化する - やったことの説明

    はじめに ポイントクラウドデータをいい感じに可視化したい. matplotlibでも3次元データのscatterを描くことができるが,以下のような感じでいまいちな見た目になってしまう. もうちょっといい感じの図が描きたい.たとえはこんな感じのやつ. 調べてみると,blenderpythonが使えるらしいので,blenderなんもわからんけどやってみる. データはここで使われているShapenetの一部を用いた. 環境 Ubuntu 18.04 blender 2.80 ちょっと調べてでてくるスクリプトは動かないことが多かった(特にライト周り). 今使っているバージョン付近で大きめのアップデートがあったのか,blender自体がそういうアップデートの方針なのかわからないが,使っているバージョンによっては以下のスクリプトは動かないので注意. Blenderのインストール blenderはap

    Blender + Pythonでポイントクラウドを可視化する - やったことの説明
    sh19910711
    sh19910711 2021/11/03
    "Blenderから実行するpythonからはbpyというモジュールを使うことができ,これを使ってblenderの中のオブジェクトやカメラなどを操作できる"
  • makeのくびき - saneyuki_s log

    gulpって何だよ、makeでいいじゃん(要約」論争について、私もちょっと一講釈をぶってみることにする。あれやこれやといった実利的な話をするつもりはない。そういうものは既に書いた人がいるのでそちらを参照のこと。 Gruntの思い出 Gruntは、私の印象で言えば車輪の再発明の失敗作のようなもので、タスク間の依存関係が破滅への一途をたどり管理不能に至るなど、宣言型の負の側面が強く出てしまった。しかし、設定は当にサンプルコードのコピペだけで組み立てられるので、JSが不得手なデザイナーなどには非常に受けが良かったという点は忘れてはならない。ちょうど、html5ブームが格化して, Apache Antとかに慣れ親しんだJava(主にSIer)系の人が入ってきたタイミングにあった道具かつ、Yeomanファミリーにも組み込まれており、それでいて簡単な事をやらせるには悪くはない具合のシンプルさ、

    makeのくびき - saneyuki_s log
    sh19910711
    sh19910711 2021/08/10
    Grunt / "ちょうど html5 ブームが本格化して Apache Ant とかに慣れ親しんだJava系の人が入ってきたタイミング / 簡単な事をやらせるには悪くはない具合のシンプルさ / 「悪くない」塩梅だったために流行ったというのが私の感想
  • Streamlit on Cloud Run with Identity-Aware Proxy (IAP) - public note

    タイトルのとおり、Cloud Run で Streamlit を動かしてみました。また、特定の人のみがアクセスできるように、Identity-Aware Proxy(IAP) での保護を試しましたので、その設定やコードを紹介します。 Cloud Run で動かすのはすぐにできたのですが、複数の Streamlit コードを認証付きでいい感じにホストする手段を探すのにかなり苦戦しました... Streamlit 構成図 ソースコード リクエストから Streamlit が起動するまで よいところ 設定のポイント ユーザ認証方法 Cloud Run の Ingress 設定 IAP で必要な権限 パスルール設定 リクエストURL に Streamlit の起動URLを合わせる サーバーレス NEG と Cloud Run の設置リージョン 参考にしたページ Streamlit Streamli

    Streamlit on Cloud Run with Identity-Aware Proxy (IAP) - public note
    sh19910711
    sh19910711 2021/08/08
    "Matplotlib や Plotly のグラフをそのままアプリケーションに表示 / キャッシュ機構を備えておりその対象やクリアのタイミングを制御できる / cloud_run のあたりで 個別のサービスを指定せず url_mask を設定するのがポイント"
  • terraformをパースして自動で命名規則等のアラートを出したい! - Qiita

    やりたきこと いちいち命名規則を見に行きたくない tagとかも統一したい s3のloggingルールとかも忘れないように・・・ description書けるやつは忘れずに書きたい! tfファイルをパースして名前とかを正規表現で引っ掛けるしかない!! まずローカルでプログラムが動くように! 以下のサンプルを例にファイルから読み込んでパースできるようにする ohsawa0515/hcl_parse_sample 発生した問題 docker内のGoで以下のようなコードを書いていたのですが。。。 FROM golang:latest WORKDIR /go/src/app RUN go get -u github.com/golang/dep/cmd/dep ADD . . RUN dep ensure CMD ["go", "run", "main.go"] package main impor

    terraformをパースして自動で命名規則等のアラートを出したい! - Qiita
    sh19910711
    sh19910711 2021/03/27
    hashicorp/hcl/hcl/parser
  • Bazel の Remote caching を試してみた - Qiita

    この記事は 弁護士ドットコム Advent Calendar 2020 22日目の記事です。 昨日の記事は @komtaki さんの オオカミ少年にならないフロントエンドエラー監視システムの工夫 - Qiita でした。システム監視。大事ですね。 日は OSS ビルドツール Bazel のリモートキャッシュ機能を試してみた記事です。 Bazel とは? Bazel は Google が開発した Make, Maven, Gradle と似た OSS のビルド及びテストツールです。主な特徴としては下記が挙げられています。 High-level build language : 抽象的でヒトが読める記述を採用していて、従来の複雑な記述からユーザーを保護します。(その分内部で何をやっているかぱっと見てわからないところもあるかもしれませんが、後述する拡張性の恩恵を受けていると思います) Baze

    Bazel の Remote caching を試してみた - Qiita
    sh19910711
    sh19910711 2021/02/21
    GCSにキャッシュできる機能あるのか / "--remote_cache=https://storage.googleapis.com/バケット名"
  • hashicorp/hcl2 を使って独自 DSL を定義する - tellme.tokyo

    HCL2 とは HCL (HashiCorp Configuration Language) は HashiCorp によって作られた設定言語です。 HCL の目的はコマンドラインツールで使用するために、人間からも機械からも扱いやすく構成されていて、かつ特に DevOps ツールやサーバーなどを対象とした構造化構成言語であることです。 実装は hashicorp/hcl にあります。 実はこれの他に同時に Version 2 の実装も目下開発中のようです。 hashicorp/hcl2: Temporary home for experimental new version of HCL このリポジトリでは HCL が元から持つ iteration と補間言語 HIL を組み合わせて、任意の式をサポートする単一の構成言語を目指しているようです。 要するに、設定ファイルでありながら、演算処理

    hashicorp/hcl2 を使って独自 DSL を定義する - tellme.tokyo