月別アーカイブ 5月 2018

takahashi 著者:takahashi

GDPRの影響でWhois情報公開が停止する可能性

EUのGDPR(EU一般データ保護規則)の影響ががついにWhoisデータベースにまで及びました。

ドメイン所有者の連絡先などが含まれる「WHOIS」データがGDPR発効の影響で一時的に非公開になる可能性 – Gigazine

GDPRはEU圏内に住む人々の個人情報について、所定の許可なく公開することを禁止する法律で、特徴的なのは域外の企業や事業者に対しても適用される点。
具体的には、一人でもEU圏内の人の個人情報を登録しているサービスでは、GDPRに則らないと制裁をうけるということです。

発効を前に、対象になった企業や団体が対応に追われている状況ですが、最近のニュースで特に大きな影響を受けるだろうとされるサービスが浮上してきました。
それが、世界中のgTLDドメインを管理するICANNによるWhoisデータベースです。

ICANNでは、Whoisにドメイン取得者の情報を登録することを義務付けており、従わない場合はドメインの登録を停止、取り消される規約になっていました。
この情報の中に住所や取得者の氏名などの個人情報が含まれています。
gTLDは世界的に使われているドメインなので、当然EU圏内の人もドメインを登録しているはずです。結果的にこのGDPRの影響をもろに受ける形になりなり、ICANNはWhoisの制度を見直さざるを得なくなりました。

現在、ICANNでは議論がされているようですが、答えが出るのに相当な時間がかかるため、GDPR発効までに対応版Whoisを構築することは難しく、暫定的な対応としてWhoisデータベースの公開制限や停止が行われる可能性が浮上しているようです。

ICANNのWhois情報公開の意義としてドメインの不正利用や犯罪の防止の目的もあり、今回のICANNの対応に対して、海賊版コンテンツに悩む各国の著作権団体からは抗議も上がっているようです。

GDPR規制によるWHOIS情報の制限に権利者団体が反発「海賊版の取り締まりを難しくする」 – P2Pとかその辺のお話R

ここからは個人的な意見ですが、僕はむしろ今回のGDPRによって、Whois情報が非公開化することは、”インターネットの個人利用”という観点からよかったのではないかなと考えています。

というのも、Whoisデータベースに氏名や住所などを載せないといけないのは企業だけではなく、ドメイン取得するすべての利用者が対象になります。
勿論ドメインを取得するのは法人だけとは限らないので、個人でドメインを取得する場合は自宅の住所なども公開する必要があるのです。

こんな状況でドメインを登録してしまうと、ドメインから一般の人に自分の住所が特定されてしまったりなどかなりリスクが高く、かといって自分のドメインを取得できない場合、個人的にサーバやサイトを建てる際にかなり制限を受けてしまう(SSL証明書が取得できないなど)の問題があり、”個人のサービスやサイトを公開するのに自分の自宅の住所をさらさないといけない”状態になっていました。
最近ではパブリッククラウドの普及などで、個人でも普通にサーバーを持つ時代になっていますし、この”法人を前提”としたWhoisの仕組みについて、個人的にかなり疑問に思っていました。
また、対応策としてレジストラによってはWhois代行公開サービスを提供している場合もありますが、ICANNの方針的に、いつ禁止されるかもわからない状況でした。

今回のGDPRの影響で結果的にWhoisの”だれでも情報にアクセスできる”状況の見直しが必要になったことで、Whoisの情報公開方法が見直され、”個人ユーザーにやさしい”Whoisの仕組みになることを期待したいと思います。

  • この記事いいね! (0)
村上 著者:村上

【Xcode】ビルド時の「[プロジェクト名] has conflicting provisioning settings.」エラーの対処法

今回はXcodeでアプリをビルドしようとしたときに遭遇したエラーについて。
長文エラーって、英語が苦手な身からしては読む気すら失せるので、それだけで億劫かつ憂鬱になります。

エラー全文はこちらから。

[プロジェクト名] has conflicting provisioning settings. [プロジェクト名] is automatically signed for development, but a conflicting code signing identity iPhone Distribution has been manually specified. Set the code signing identity value to “iPhone Developer” in the build settings editor, or switch to manual signing in the project editor.

ざっくり翻訳したところ、プロビジョニング設定が競合していることが問題とのことでした。
本来であれば、自動的に署名が行われている箇所に、手動で異なる設定が指定されているのだとか。
が、このあたりの設定を変更した記憶がないので、心当たりがありません…。

今回参考にさせていただいた記事はこちら。

iOS – iOSアプリ申請時のArchiveでconflicting provisioning settingsエラーが出る(56698)|Teratail
https://teratail.com/questions/56698

 

肝心な対処法ですが…「Automactically manage signing」のチェックを一度外し、再度チェックするだけ。
下の画像の下あたりにあるチェックボックスがそれです。

あとは、通常通りビルドを行ったところ、なんの問題もなくビルドが完了し、実機・Simulator のどちらでもアプリを実行することができました。
エラー文が長いので、最初に遭遇した時は身構えましたが、対処方法としてはなんてことはなかったですね。
チェックの解除・設定をおこなうと、プロビジョニングの設定がリセットされるので、今回のエラーが解消されるとのことでした。

以前も書いた気がしますが、とりあえず原因がわからないエラーに遭遇したら、丸々コピーして検索しましょう。

  • この記事いいね! (0)
著者:杉浦

グラフ理論のさわり

wikipediaから引用

グラフ理論(グラフりろん、: graph theory)は、ノード節点[英 1]頂点[英 2])の集合とエッジ[英 3])の集合で構成されるグラフ[英 4]に関する数学の理論である。グラフ (データ構造) などの応用がある。

 下図のまる数字がノード、直線がエッジです。

 グラフの考えを用いることで様々なものの関連性を表すことができます。例えば、以前紹介したRegexperの正規表現の表現です。

 これは分岐、ループ、グループ、特殊文字、複数候補、のようなものを区切りにノードを作っています。ソースコードもif、for、while、関数などを目印にノードとすることでグラフによって表すことができます。ソースコードからできあがったグラフの複雑さを目安にコードレビューを行うこともできます。また、データ構造でもグラフ理論は使われており、特に階層的なデータ構造は木構造として知られています。ファイルシステム、HTMLなどはよく見るところにある木構造のデータ構造を持つシステムです。データ構造から想像できる木が非常に複雑であったり、歪であったりすると大体可読性がまずいことになっています。
 通信ネットワーク、交通網の様な複雑にならざるをえないものもグラフ構造ならば秩序だって考えることができます。複雑すぎるものは隣接行列を用いて考えたりします。下が最初のグラフを表す隣接行列です。

 0ならば隣接しておらず、1ならば隣接していることを示します。この行列は隣接行列と名がついていますがノード間の接続を表す行列と考えた方が思い浮かべやすいです。というのも(1,2)=1,(2,1)=0のようにすると一方通行を表すことができ、01のみならず任意の値で多重路や距離の様な重みを設定することもできるからです。隣接行列の操作によってグラフの様々な情報を得ることができます。例えば、01で表されたn乗された隣接行列の(i,j)成分はiからjへの長さnの経路の数になります。

  • この記事いいね! (0)
著者:aoki

jQuery+masonry+autopager で躓く。isAnimated が false にならない!?

久々に頭が痛くなるほど躓きました。
とあるサイトで jQuery + masonry + autopager を使い、pinterest風のタイル表示且つページ遷移のしない読み込み+レスポンシブ対応を行っていました。
コードはこんな感じ


$(document).ready(function() {
    var $container = $('#container');
    $container.imagesLoaded(function() {
      $container.masonry({
          isAnimated : false,
          columnWidth: '.thumb',
          itemSelector: '.thumb'
      });
    });

    var maxpage = 10;
    $('#loading').css('display', 'none');
    $.autopager({
        content: '.grid',
        link: '#next a',
        autoLoad: false,
    
        start: function(current, next){
          $('#loading').css('display', 'block');
          $('#next a').css('display', 'none');
        },

        load: function(current, next){
            $container.imagesLoaded(function() {
                $container.masonry('reloadItems');
                $container.masonry('layout');
            
                $('#loading').css('display', 'none');
                $('#next a').css('display', 'block');
                if( current.page >= maxpage ){
                    $('#next a').hide();す
                }
            });
        }
    });
    $('#next a').click(function(){
        $.autopager('load');
        return false;
    });
});

これで動いてはいたのですが、autopagerで読み込んだ時に読み込んだ要素をレイアウトしなおす関係で上からレイアウトが降ってくるような動きになってしまっていました。
何とかこれを直したいと試行錯誤をしたのですがうまくいかず・・・
そもそも isAnimated が false と指定しているのにアニメーションされてしまうのはなぜ?という事で調べたところ重大なことが分かりました。
isAnimated オプションは昔のバージョンのオプションで最新の物では既に廃止されているオプションという事でした。
それは動かないわ。

という事で対応できるオプションを探したところ、transitionDuration を設定することでアニメーションも解除されうまく表示されるようになりました。


$(document).ready(function() {
    var $container = $('#container');
    $container.imagesLoaded(function() {
      $container.masonry({
          transitionDuration: 0,
          columnWidth: '.thumb',
          itemSelector: '.thumb'
      });
    });

    var maxpage = 10;
    $('#loading').css('display', 'none');
    $.autopager({
        content: '.grid',
        link: '#next a',
        autoLoad: false,
    
        start: function(current, next){
          $('#loading').css('display', 'block');
          $('#next a').css('display', 'none');
        },

        load: function(current, next){
            $container.imagesLoaded(function() {
                $container.masonry('reloadItems');
                $container.masonry('layout');
            
                $('#loading').css('display', 'none');
                $('#next a').css('display', 'block');
                if( current.page >= maxpage ){
                    $('#next a').hide();す
                }
            });
        }
    });
    $('#next a').click(function(){
        $.autopager('load');
        return false;
    });
});

そもそも古い masonry のページをずっと見ていたことが一番の原因ですね。

現在のバージョン(v3)のページはこちらです。
https://masonry.desandro.com/

古いバージョン(v2)はこちら
https://masonry.desandro.com/v2/

  • この記事いいね! (0)
著者:ym

Amazon Chime と Alexa for Business

Amazon Chime は Amazon 製の オンライン会議 システムで、昔からあるのですが、今回ウェブアプリケーションに対応した様です。

確かに専用アプリだけでの対応では、他のオンライン会議システムにまけてしまいますが、これでブラウザだけあれば参加できる様になった形。

会議への参加方法も世界的に展開しているAmazonなだけに、Zoom と同じ様な形で参加できる。

  • Alexa for Business での参加
  • 固定電話や、携帯電話などの公衆回線での参加
  • SIPクライアントでの参加
  • Webブラウザでの参加
  • Android、iOS、Windows アプリでの参加

けど、さらに Alexa と連携して会議へ参加出来るようです。

確かに Amazon Echo で会議が出来ると便利かも。

Amazon Chime

Amazon Chime

  • この記事いいね! (0)
著者:ym

docker と Hyper-V

Bash on Ubuntu on Windows が利用できるようになり、Debianなどの Linux ディストリビューションも利用できる様になりました。

であれば、docker for Windows も Hyper-V じゃなくて、ネイティブで動くようになるのだろうか?

docker cli インタフェースは直接コマンドプロンプトで利用できるから直接利用している様な感じがするのですけどね。ただ、Hyper-V を動かしている時点で重たい、それに、さらに MobyLinuxVM 。確かに便利ではあるけどあと一歩。

  • この記事いいね! (0)
takahashi 著者:takahashi

[要注意]MySQL 5.7からは初期状態でrootにランダムなパスワードが設定されている

先日、自宅のPCにUbuntu 18.04 LTSをインストールしたことを書きましたが、18.04でデフォルトになっているMySQLのバージョン”5.7″からMySQLのrootユーザーのパスワードが初期状態で自動設定される仕様に変更になったようです。

MySQL 5.7 をインストールしたら最初に行うセットアップ – WEB ARCH LABO

初期設定をする際、このことを全く知らなかったため、いつも通りmysqladminでrootパスワードを設定しようとしたのですが、何度やってもaccess deniedになり、パスワードなしてrootにログインすることもできなかったのでかなり焦りました。

ちなみにUbuntu 18.04の場合、初期状態であれば

sudo mysql

と、ユーザ名・PWすべて省いて実行したとことパスワード無しでログインできました。わかるかッ!!!
ちなみに、設定したrootパスワードも、デフォルトで一定期間後にパスワード変更が求められるらしく、その際はパスワードを変更しない限りログインできなくなるようです。(設定の記述で無期限化は可能。)

とかなりセキュリティ的に厳しい仕様になっていますので、これから使われる方はご注意ください。

  • この記事いいね! (0)
takahashi 著者:takahashi

電話回線移設に伴ってISDNデジタル通信モードが終了へ

NTT東西の電話網が、従来のものから”IP網”へ移行するに伴って、ISDNのデジタル通信モードの提供が終了になるようです。

ISDNのディジタル通信モードが2020年度にも終了へ、企業間の自動発注システムに大きな影響? JISAが対策を呼び掛け – Internet Watch

自分はギリギリADSL世代なので、ISDNは使ったことは全くないのですが、企業や一部のシステムではいまだに使われているらしく、そういった場合はあらかじめ移行の準備をしておく必要があるらしいです。

しかしながら、NTTの電話回線自体がIP網になるなんで、時代の流れを感じますね。

  • この記事いいね! (0)
村上 著者:村上

【CSS】複数行の長い文章の文末を省略する方法

以前紹介した、長い文章の文末を省略して末尾に「…」を表示させる方法の複数行対応バージョンです。
前回のやり方では、一行のみの表示しかできないので、複数行で文末を表示させたいときはこちらの方法をお試しください。
ただし、ChromeSafari 限定ですので、その点はご注意ください。

今回参考にさせていただいた記事はこちら。

【複数行にも対応】長過ぎる文字列を省略して末尾を三点リーダー(…)にする方法いろいろ – PSYENCE:MEDIA
https://tech.recruit-mp.co.jp/front-end/tips-ellipsis/

ちなみに、以前投稿したCSSで文末を省略する方法はこちら。

【CSS】長い文章の文末を省略して末尾に「…」を表示させる方法
https://cpoint-lab.co.jp/article/201805/【css】長い文章の文末を省略して末尾に「」を

 

コードはこちら。

<p>春はあけぼの。やうやう白くなりゆく山際、少し明かりて、紫だちたる雲の細くたなびきたる。</p>
#text{
    width: 300px;
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

overflow: hidden; を使うところは、前回と同じです。
-webkit-line-clamp を使うことで、指定した行に三点リーダー(クランプ)を追加することができます。
こちらのプロパティの値は、三点リーダを追加したい行数を指定します。
display: -webkit-box; は、-webkit-line-clamp と併用することにより、-webkit-line-clamp で指定した行数までを表示するようにしてくれます。

 

以上、複数行の行末尾を省略する方法でした。
上で紹介したサイトでは、ChromeSafari 以外のブラウザでも同じことを行う方法もありますので、IEでもこの表示にしたいときは参考にしてみてはいかがでしょうか。
ちなみに、少しトリッキーな方法とのことです。

  • この記事いいね! (0)
著者:杉浦

テキスト比較ツール difffの紹介

 difff
 gitにあるソースコード
 difffは手軽にweb上で差分によるテキストの比較ができるツールです。difffは文字単位での細かい差分表示をしてくれるため、人間の目で比較するような小さな文を比較するときに特に役に立ちます。web上のやりとりのため、あまり巨大な文字列を比較するとタイムアウトをもらったりするのが玉に瑕です。巨大なのはよくないと書きましたが10万文字同士ぐらいなら時間こそかかりますが、問題なく動きました。また、テキストエリアに文字列を入力する形なのでdifff単独で複数のファイル間の比較を行うのも手間です。
 windowsのコマンドラインにはfcという行単位でファイルを比較する命令があります。他のものにも同じようなものはあるでしょう。手軽さの他にも巨大なファイル、多数のファイル、行単位の比較で十分などなど目的に合わせて使い分けるとよいと思います。

  • この記事いいね! (0)