タグ

ライブラリに関するhigedのブックマーク (10)

  • cgoでGolangとC++ライブラリをリンクするとき、何が起きているのか

    関東も秋が深まり、「紅葉を見にいこうよう」と言ってスベるシーズンがやってきました。みなさんいかがお過ごしでしょうか、れもんです。 さて、自社サイトでGoやるよって発表したので最近はずっとGoを書いているのですが、ついに難題がやってきました。C++で書かれたライブラリをGoで使うというやつです。今日は、GoからC++のライブラリを使おうとするときに何が起きているのかという話と、それゆえにこのオプションを指定するとドツボにはまるのでやめた方がいいよという話です。 GoからC++を使うときの基的な考え方はRubyとかPerlC++のライブラリを使うときと同じです。なので、いつものセオリーでやってみることにしました。まぁC++なら素直にSWIG使えよって話もあるんですが、何事も最初は挑戦だってことで手で書きます。 そのいつものセオリーとは何かというと、C++のライブラリをCインタフェースで使え

    cgoでGolangとC++ライブラリをリンクするとき、何が起きているのか
  • Semantic Versioningの闇 - knqyf263's blog

    今回も誰も興味ないシリーズなので今まで書いてこなかったのですが、Semantic Versioningに関して幻想を抱いている人がいる可能性があり、そういう方にどうしても現実を知っておいて欲しかったので書きました。3行要約(と可能なら余談)だけでも読んでいただけると幸いです。 3行要約 Semantic Versioning 2.0.0にはバージョン"比較"の定義はあるが、バージョン"制約"(>= 2.1.3みたいなやつ)の定義がない その結果、同じsemver準拠ライブラリでも制約の解釈が異なり結果が真逆になる というかそもそもsemver使ってるエコシステムが少なすぎる 背景 セキュリティアドバイザリでは特定のバージョンが脆弱であることを示すためにバージョン制約が使われることが多いです。例えば >=1.2.0 <1.2.6みたいなやつです。この場合、1.2.5は脆弱だが1.2.6は修正

    Semantic Versioningの闇 - knqyf263's blog
  • LD_PRELOADで動的ライブラリ関数を上書きする

    動的リンクされたプログラムでは、同じ関数が複数のライブラリで定義されている場合、最初に見つかった関数が利用される。 環境変数 LD_PRELOAD で指定した共有ライブラリは最優先で読み込まれるため、簡単にプログラムの挙動を変えることができる。 実験用のプログラム まずは乱数を10個表示するだけの簡単なプログラム(random_num.c)を用意。 /* random_num.c */ #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ srand(time(NULL)); int i = 10; while(i--) printf("%d\n",rand()); return 0; } 実験用プログラムの実行 コンパイルする $ gcc random_num.c -o random_num $ ldd

    LD_PRELOADで動的ライブラリ関数を上書きする
  • nuxt.js は axios を捨てて ky になる様子 - Qiita

    nuxt.js は node.js でもブラウザ上でも動作することが求められるため、統一したインターフェースで HTTP リクエストを行うには、何かしらのライブラリを利用する必要があります。 これまで nuxt.js が公式でサポートし、強く推奨していたのは axios と呼ばれるライブラリです。 これは、ブラウザでは XMLHttpRequest を用い、 node.js では http モジュールを用いる基的なユニバーサル HTTP リクエストライブラリです。 しかし、 service worker によるサポートを受けるためには fetch API を利用する必要があったり、 axios の実装自体が結構煩雑で使いづらいように見えたりと、弱点もありました。 そこで、コミュニティでは新しく @nuxt/http というモジュールを開発し始めました。 現在では WIP ですが、ほとんど

    nuxt.js は axios を捨てて ky になる様子 - Qiita
  • Neco プロジェクトのスキルシート

    neco_skills.md Neco プロジェクトのスキルチェックシート Neco は大量の物理サーバーを効率的に管理・運用することを目的とした開発プロジェクトです。 Kubernetes を中心に高度な自律運用の実現を目指しています。 文書はプロジェクトに参加しているメンバーが身に着けている要素技術を並べたものです。 応募時点ですべてを身に着けている必要はまったくありません。 社内にはチュートリアル資料が多数用意されていますので、必要に応じて学べます。 リストは以下の大項目で分類されています。 ドキュメント 利用しているサービス プログラミング テスト ネットワーク Kubernetes ドキュメント Neco プロジェクトではドキュメントを非常に重視しています。 仕様書はもちろん、各種ポリシーやチュートリアル、調査資料などあらゆる場面でドキュメントを作成しています。 Markdow

    Neco プロジェクトのスキルシート
  • なぜTypeScriptに失望してしまうのか - Islands in the byte stream

    追記: この件に関してエンジニアHubにもTypeScriptの記事を書きました: TypeScript再入門 ― 「がんばらないTypeScript」で、JavaScriptを“柔らかい”静的型付き言語に - エンジニアHub|Webエンジニアのキャリアを考える! TypeScriptに対する失望は2パターンあって、その理由は理解できるのですが、いずれにせよそこでTypeScriptを捨てる判断をするのはもったいないと思っています。この2つの失望を感じたとしてもなお、TypeScriptには導入する価値があると思っています。 パターン1: 実はJavaScriptに対する失望である そこらのブログやTwitterで観測していると、理由の7割くらいこれです。これは、TypeScriptが独立した言語ではなくJavaScriptへのトランスパイラ(言語変換ツール)であり、独立したランタイムを

    なぜTypeScriptに失望してしまうのか - Islands in the byte stream
  • 弊社でのJavaScriptの書き方 - Qiita

    まあこれは弊社(Claves)での取り組み方(別に相談してないので独断ですらある)です。 多分そのうち陳腐化するので金科玉条のごとき扱いはしない方が良いです。 書くにあたった動機 若い人間がJavaScriptを書く場合に、 参照しているものが古い 便利なライブラリとかがあるのに再発明とかしてる Railsで書く場合にどう書けば良いのか などが整理されていないと感じた。 都度説明していたが三回をこえて面倒なので書き下すことにした。 JavaScript? TypeScript? 正直モダンに書くのであればJavaScriptでもTypeScriptでも良いと思っている。 構文的にはTypeScriptはモダンなJavaScriptに型、抽象クラスなどが追加されていると思って良いかと思う。 継承とかゴリゴリ書くのであればTypeScriptは便利だし、後述するReactなんかも TypeSc

    弊社でのJavaScriptの書き方 - Qiita
  • 「悪い方が良い」原則と僕の体験談|Rui Ueyama

    ソフトウェアの世界には「悪い方が良い」原則という有名なエッセイがある。キレイにレイヤ分けされた一貫性のある良いデザインよりも、一見手抜きの悪いデザインのほうが実は良いときもあるという話だ。この逆説的なデザイン原則を僕は身をもって体験したことがある。それについてちょっと書いてみようと思う。 僕はlldというリンカの現行バージョンのオリジナル作者だ。リンカというのはコンパイラと組み合わせて使うもので、実行ファイルやDLLを作るのに使用される。lldはプロダクトとしてはかなり成功していて、標準のシステムリンカとして採用しているOSがいくつかあったり、GoogleやFacebookなど皆が知っているような大規模サイトの中で広く使われていたりする。 現在のlldは2世代目で、第1世代のlldは僕がプロジェクトに参加する前から存在していたのだけど、数年前にそれを捨てて一から書き直すということになった。

    「悪い方が良い」原則と僕の体験談|Rui Ueyama
  • ビルド職人になるために覚えたコマンドメモ - ainameの日記

    ここ2年ぐらいffmpegとかopencvとかRuby + CUDAみたいなやつとか たまーにビルド職人になることがあって上手くコンパイルするために各種コマンドを使うことがあるのだけど、 使い方はおろか、普段あんまり使わないのでコマンド名すら忘れることが多々あるためコマンド名とか使い時を覚えている限りざっくりメモしとく。 あとはmanを読めば良い。 pkg-config インストール済みのライブラリをコンパイルに利用するときに必要なコンパイルオプションを返してくれるやつ .pcファイルを元に返してくれる。 PKG_CONFIG_PATHを指定して利用したりする。 ldd .so(Shared Object)ファイルが動的リンクで依存しているライブラリへの依存関係を表示してくれる。 何かをコンパイルした結果、共有ライブラリがリンクできているかを調べるのに使える。 $ ldd `which f

    ビルド職人になるために覚えたコマンドメモ - ainameの日記
  • プライベートな Composer リポジトリを作成する - ngyukiの日記

    Composer のプライベートなリポジトリがあればいいなーと思って Composer のサイトを眺めていたら、思っていたより簡単にできました。ちょっとした社内ライブラリとかの配布を管理するのに便利かもしれません。 ディレクトリ構成 一連の作業をひと通り終えると次のようなディレクトリ構成になります、パスなどは適用に読み替えてください。なお、web/ が http://packages.example.org のドキュメントルートになっているものとします。 /var/www/vhost/composer/ composer.phar config.json web/ ← ここが http://packages.example.org のドキュメントルート index.html packages.json satis/* Composer リポジトリのセットアップ まずは Composer の

    プライベートな Composer リポジトリを作成する - ngyukiの日記
  • 1