BLOGTIMES
» ArchiveList (Tag for "licence / ruby" )
«Prev || 1 · 2 · 3 · 4 · 5 ·... | | Next»
2021/01/27

AWS が Elasticsearch と Kibana をフォーク

aws  licence 

AWS がライセンスの問題により Elasticsearch と Kibana をフォークした*1ことがニュースになっていたのでメモ。

先日、Elastic が Elasticsearch と Kibana のライセンスを Apache License 2.0 から Server Side Public License(SSPL)と Elastic License のデュアルライセンスに変更することを公表*2していたので、これに対する AWS の対抗措置ということになります。これは一足先に SSPL にライセンス変更をしている MongoDBと同じ展開ですね。

AWSがElasticとKibanaをフォークへ | OSDN Magazine

AWSの動きの背景には、ElasticsearchとKibanaを開発するオランダElasticの方針変更がある。Elasticは1月15日、これまでApache License 2の下で公開していたElasticsearchとKibanaについて、ライセンス方針を変更し、独自ライセンスのElastic LicenseとSSPL(Server Side Public License)のデュアルライセンスにすることを発表した。理由について、クラウド事業者が貢献せずにオープンソース技術を活用していると説明していた。

ただ、SSPL は OSS ライセンスとしては認められていない*3という大きな問題があるので、ソースコードは手に入りますが OSS ではないというちょっと特殊な状態になります。具体的には RedHat を始めとする主要なディストリビューションがサポートすることがないということになります。過去に MongoDB が AWS 等のクラウドベンダーを非難していた内容は以下の通りですが、それからだいぶ時間が経ったものの AWS は頑なに歩み寄らないですね。一時は MS や Oracle が OSS の敵のような感じでしたが、最近はすっかり AWS が悪者のようです。

MongoDB now released under the Server Side Public License | MongoDB

The reality, however, is that once an open source project becomes interesting, it is too easy for large cloud vendors to capture most of the value while contributing little or nothing back to the community.


at 23:06 |
2020/12/28

Ruby 3.0.0 がリリースされてた

ruby 

しばらくウォッチしていないうちに Ruby 3.0.0 がリリースされていました。
Ruby 2.7 からの変更がいろいろとある*1ので、時間をとって確認する必要がありそうです。

Ruby 3.0.0 リリース

Ruby 3.0系初のリリースである、Ruby 3.0.0 が公開されました。


at 19:36 |
2019/11/06

mysql2 をスレッドセーフに

ruby 

gem mysql2 をマルチスレッドで使っていたら、以下のようなエラーがでて困ってしまいました。

This connection is in use by: #<Thread:0x000000020e0c70 sleep> (Mysql2::Error)

どうやら mysql2 はスレッドセーフではないことが原因の模様。

いろいろと調べてみたら、MutexLockedQuerying*1というモジュールを書いている人を見つけたので、ちょっと改造して取り込んでみました。元の実装だとクラス変数を使っているのでロックがインスタンス単位ではなく、グローバルにかかってしまうので、インスタンス変数に変更してあります。ロックの粒度的にはこちらの方が望ましいはずです。

require 'mysql2' module MutexLockedQuerying def initialize(*) @semaphore = Mutex.new super end def query(*) @semaphore.synchronize { super } end end Mysql2::Client.send(:prepend, MutexLockedQuerying)

at 19:11 |
2019/10/29

gem mysql から mysql2 に移行してみる

ruby  mysql 

昔書いた Ruby のプログラムを CentOS 7 上で動かそうとしたのですが、MariaDB が 10.4 と比較的新しいバージョンだったので gem で mysql がインストールできないので困ってしまいました。

mysqlを見ると、最終アップデート日が 2013 年になっていて、最近はメンテナンスされていないようです。このまま粘っても解決の見込みも立たないので、mysql2 に移行してしまうことにしました。

ソースの書き換えは大きく3箇所

基本的には以下の3箇所を変更してやれば、基本的な動作はするようです。
Date などの部分を自動的に cast する機能がついたようですが、これは :cast => false でオフにしてあります。

# モジュールの読み込み require 'mysql' require 'mysql2' # 接続 @db = Mysql::connect('localhost', 'user_name', 'pass', 'db_name') @db = Mysql2::Client.new(:host => 'localhost', :username => 'user_name', :password=> 'pass', :database => 'db_name', :cast => false) # 結果の取得 rows.each_hash rows.each
[gem mysql から mysql2 に移行してみる の続きを読む]

    at 22:24 |
    2019/09/09

    CentOS 7 + MariaDB の組み合わせで gem mysql2 がエラーになるときは

    ruby  centos7  mysql 

    CentOS 7 に MariaDB をインストールして、Ruby の gem mysql2 実行したらエラーになってしまって困ってしまいました。

    エラーメッセージを読む限りリンカのエラーのようなので、もう一度良く MariaDB のインストールを確認したら MariaDB-shared が入っていないのが原因だったようで、以下のコマンド1行で解決でした。MariaDB-devel だけでいけると思っていたのが、勘違いでしたね。

    yum install -y MariaDB-shared

    CentOS 7 への MariaDB のインストール

    ハマらないように次回からは以下のような感じでインストールすることにしようと思います。

    curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash yum install -y MariaDB-server MariaDB-client MariaDB-devel MariaDB-shared systemctl start mariadb systemctl enable mariadb mysql_secure_installation

      at 16:28 |
      2019/07/22

      Stack Overflow のコード片は CC BY-SA

      licence  softwareengineering 

      先日の ICSE 2019 勉強会で紹介されていた「Usage and Attribution of Stack Overflow Code Snippets in GitHub Projects」という論文が興味深かったのでメモ。

      この論文の要点は Stack Overflow の載っているコード片は CC BY-SA 3.0 ライセンスなのに、それを使っている OSS のプロジェクトがライセンス違反になっていることがあるということです。CC BY-SA はクレジット表示し自分の貢献部分を元の作品と同じライセンスの下に頒布しなければならないというライセンスです。

      ソフトウェア開発で困ったときにググると Stack Overflow のページがヒットすることがありますが、そのライセンスに注意しなければならないというのは盲点でした。調べてみると以下にちゃんと書いてありますね。

      What is the license for the content I post? - Help Center - Stack Overflow

      As noted in the Stack Exchange Terms of Service and in the footer of every page, all user contributions are licensed under Creative Commons Attribution-Share Alike. Proper attribution is required if you republish any Stack Exchange content.


        at 12:48 |
        2019/04/17

        Oracle クリティカルパッチアップデートに注意(2019 年 4 月)

        oracle  java  licence 

        Oracle が定例のクリティカルパッチアップデートを出しました。
        ちなみに Oracle JDK は 4/16 よりライセンスが改訂されて、個人利用・開発目的のみという使途制限がついている*1ので注意が必要です。

        参考

        商用利用をしている場合の OpenJDK 等への移行対応については以下が参考になります。


        at 20:14 |
        2019/01/10

        IPアドレスのリストからCIDR表現を作る(Ruby編)

        ruby  networking 

        大量の IP アドレスの始点と終点の組(例えば 192.168.0.0~192.168.0.255 のようなもの)組を上手に纏めて CIDR 表現を作る必要があったので、Ruby でスクリプトを書いてみました。

        IP アドレスの範囲を扱うのに altmetric/ip_ranger 、IP アドレスの集約に ipaddress-gem/ipaddress を使っているので、あらかじめ gem install ip_ranger ipaddress でインストールをしておきます。

        コード的にはこんな感じでしょうか。

        ip_summarize.rb

        #!/bin/env ruby require 'ip_ranger' require 'ipaddress' ranges = [] STDIN.each_line do |line| (s, e) = line.chomp.split(',') range = IPRanger::IPRange.new(s, e) ranges += range.cidrs end ranges = ranges.map{|net| IPAddress(net.to_cidr)} summarized = IPAddress::IPv4::summarize(*ranges).map{|i| i.to_string} summarized.each { |r| puts r }

        実際の実行してみると、こんな感じになります。
        IP の範囲は標準入力から1行毎にカンマ区切りで開始,終了のような感じで与えています。

        echo "192.168.0.0,192.168.0.1 192.168.0.2,192.168.0.5 192.168.0.6,192.168.0.11 192.168.0.12,192.168.0.17 192.168.0.18,192.168.0.18" | ruby ip_summarize.rb 192.168.0.0/28 192.168.0.16/31 192.168.0.18/32

          at 23:23 |
          2018/06/03

          Ruby 2.6 から JIT コンパイルが可能に

          ruby 

          JIT コンパイラが搭載された Ruby 2.6.0 の Preview 版が公開されました。

          Java やその他の言語と違って、C 言語のソースコードを生成してコンパイルする方法を取るようです。
          ちょっとどんな感じで動作するのか気になりますね。

          [ruby-dev:50555] Ruby 2.6.0-preview2 Released

          Ruby 2.6ではJIT (Just-in-time) コンパイラが導入されました。 JITコンパイラはあらゆるRubyプログラムの実行を高速化することを目的としています。 他言語の一般的なJITコンパイラと異なり、RubyのJITコンパイラはC言語のソースコードをファイルとしてディスクに書き、通常のCコンパイラを用いてネイティブコードに変換することでJITコンパイルを行うという手法を用いています。(参考: https://github.com/vnmakarov/ruby/tree/rtl_mjit_branch#mjit-organization)


            at 23:21 |
            2018/02/10

            ActiveRecord で ROW_FORMAT=DYNAMIC を自動でつけるようにするには

            ruby  mysql 

            ActiveRecord でテーブルが CREATE TABLE されるときに、ROW_FORMAT=DYNAMIC を自動的に追加する方法を見つけたのでメモ。
            とりあえず RAILS_ROOT で以下のシェルスクリプトを流せば OK です。

            cat << 'EOS' > config/initializers/ar_innodb_row_format.rb # https://qiita.com/kamipo/items/101aaf8159cf1470d823#comment-6a9c50b52e94b8d2cc08 module InnodbRowFormat def create_table(table_name, options = {}) table_options = options.merge(options: 'ENGINE=InnoDB ROW_FORMAT=DYNAMIC') super(table_name, table_options) do |td| yield td if block_given? end end end ActiveSupport.on_load :active_record do module ActiveRecord::ConnectionAdapters class AbstractMysqlAdapter prepend InnodbRowFormat end end end EOS

            参考


              at 19:33 |
              «Prev || 1 · 2 · 3 · 4 · 5 ·... | | Next»
              » ArchiveList (Tag for "licence / ruby" )