BLOGTIMES
» ArchiveList (Tag for "firefox / ruby" )
«Prev || 1 · 2 · 3 · 4 · 5 ·... | | Next»
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 |
2020/02/26

Firefox が米国で DoH(DNS over HTTPS) を有効に

firefox  dns  cloudflare 
Firefox DNS over HTTPS - Firefox が米国で DoH(DNS over HTTPS) を有効に

Firefox が米国で DoH(DNS over HTTPS) を有効にしたことがニュースになっていたのでメモ。

HTTP については 2016 年に始まった Let's Encrypt のおかげで急速に HTTPS 化が進みましたが、DNS の暗号化については DNS over TLS と DNS over HTTPS のどちらが良いか*1という解決が難しい問題もあり、すんなりとは行きそうにありません。

今回の Firefox の場合、クエリは初期設定の場合 Cloudflare に飛んでいくことになるので、Cloudflare にはユーザーがどのサイトに接続しようとしているのかが丸見えであることに注意が必要です。

Mozilla、「Firefox」の“DNS over HTTPS”をデフォルト有効化 ~米国で実施 - 窓の杜

「Firefox」の“DoH”機能は、米国でのみ既定で有効。米国外のユーザーも、オプション画面(about:preferences)の[一般]セクション最下部にあるネットワーク設定へアクセスし、[DNS over HTTPS を有効にする]というオプションを有効化すれば利用できる。初期設定のプロバイダーは“Cloudflare”になっているが、“NextDNS”などを指定することも可能だ。


at 22:54 |
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/10/20

    Mailvelope でウェブメールでも PGP

    firefox  chrome  pgp 
    Mailvelope - Mailvelope でウェブメールでも PGP

    Mailvelope というブラウザ上で PGP 暗号化/復号化ができるアドオンを見つけたのでメモ。
    中身は OpenPGP.jsを使って作られているようです。

    GnuPG から鍵を Export して使ってみたところ、Outlook Web 上暗号化されたメッセージが復号できました。
    ただ、送信時は PGP Inline 形式になるので、日本語を含んだメッセージを署名だけしようとすると検証できなくなるという問題があります

    Mailvelope

    The browser extension Mailvelope provides end-to-end encryption for your existing email address. Encrypt your mails without having to change your email provider! Encryption and decryption takes place exclusively on the end devices. This means that your private data will never leave your device unencrypted.

    Firefox や Chrome のプラグインは以下から導入が可能です。


      at 23:17 |
      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/08/02

        Twitter を旧バージョンに戻すアドオン

        firefox  chrome 

        Twitter はウェブの UI が大幅な変更が行なわれましたが、これを元に戻してしまうアドオンが公開されてたのでメモ。
        最近のウェブがスマホ重視なのはしょうがないのですが、PC で見ると余白が大きくなりすぎてしまって使い辛いんですよね。

        PC版Twitterの新デザインに戸惑う人に朗報 インストールするだけで旧式に戻せるブラウザ拡張が登場 - ねとらぼ

        使い方は各バージョンのページを開き、「Chromeに追加」や「Add to Firefox」をクリックし適用するだけ。導入以降にTwitterを開くと、自動的に旧デザインで表示されます。

          at 21:33 |
          2019/06/22

          CORS エラーを無理やり回避する

          firefox 

          AJAX を利用するウェブサイトを使っていると、たまに CORS に関するエラー*1に遭遇して動かないことがありますが、これは基本的に開発者が対処すべき問題*2なので、利用者としては利用をあきらめるくらいしかできないので困っていましたが、Allow CORS というアドオンを使うとこのエラーを無理やり回避できることが分かったのでメモ。

          これを常用するのは危険ですが、どうしても利用したいサイトがある場合には有効な打開策になります。

          Allow CORS: Access-Control-Allow-Origin – 🦊 Firefox (ja) 向け拡張機能を入手

          Simply activate the add-on and perform the request. CORS or Cross Origin Resource Sharing is blocked in modern browsers by default (in JavaScript APIs). Installing this add-on will allow you to unblock this feature. Please note that, when the add-on is added to your browser, it is in-active by default (toolbar icon is grey C letter). If you want to activate the add-on, please press on the toolbar icon once. The icon will turn to orange C letter.

          at 14:42 |
          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 |
              «Prev || 1 · 2 · 3 · 4 · 5 ·... | | Next»
              » ArchiveList (Tag for "firefox / ruby" )