Hatena::Groupptech

ぷちてく RSSフィード

Archive
 
ProfileProfile

2016-09-06

Linux 32bit Flash Early Autumn/Fall 2016

03:29

2016-10-06 に 32bitでもまだ adobe-flashplugin 存在してることわかったのでUbuntu系な人はこれ入れましょう。見つからない人トラブってる可能性あります。新しく書いたこちら参照。

手元のLubuntuでは pepperflashplugin-nonfree がぶっ壊れてるのは解消しない・してないし、adobe-flashplugin に比べて利点が薄いので捨てましょう。adobe-flashplugin が無いディストリ・パッケージ気に食わない人は以下読んで頑張って下さい。

チェッカーと設定。


2016-03-03 あたりに書いた頃と状況がちょっと変わりました。

記事書いた直後から、

という状況。ただし、

という人はFirefox用とChromium用をバラバラに入れる必要がある。Ubuntu以外のArchとかDebian見た感じはパッケージしっかりしてそうなので、特に問題無く入りそうで更新もしっかりしてそうではある。

  1. Firefoxflashplugin-installer / flashplugin-nonfree は機能する
    • ただしNPAPIは 2017年初頭にサポート終了予定で動かなくなる
  2. Chromiumpepperflashplugin-nonfree がぶっ壊れててインストール出来ない
    • 手元の仮環境で失敗。環境によっていけるかも
  3. Pipelightfreshplayer-pluginWindowsのPPAPIを動かすハック手法は動いてそう

日本語更新も早いので、総合的にはArch Linuxのドキュメント読むのが良いと思います。

英語モドキの上、書きかけですが 2016年秋口の具体的な状況やマイナー系はGistにまとめてますのでよろしければ。

ぼくは Lubuntu で Flash自体を入れない という仮環境で生きていたので変化に気づきませんでした。

ハイクで少しやり取りあって見返したらひどい有様になってた。このツリーです。展開しまくって下さい。

id:Hikaru6309 さんありがとう。


Linux 自体が 32bit 捨てにかかって来ている時期なのでそのうち消えて終わる結末だと思います。

t_massannt_massann2016/10/06 23:44はてなスターありがとうございます。NPAPIのFlash Playerプラグインにバージョン23ベータ版が出ていて32bit版もあります。8月頃にバージョン22が出ていたらしいですが私が知ったのは最近です。 http://arekorebibouroku.hateblo.jp/entry/2016/10/06/230759

noromanbanoromanba2016/10/07 06:17> id:t_massann
はてなブログ、面白い記事たくさん載ってて嬉しいです。ありがとうございます。

Flash情報thxです。ベータ版再開については9月上旬に知ってました。
http://h.hatena.ne.jp/noromanba/298124991562291096
ただ、Flashをほぼ使っていないのと、保守的・面倒くさがりなので aptに降りてくるまでいらないかな、せめてdeb という感じでスルーしました。
DRM関連だとPC版 Amazon (Prime) Video が Chrome にロックインされてるのが多少困ってるくらいなので、Chromium/Firefoxサポートされるといいな、とは思ってます。

コメント頂いたことで、adobe-flashplugin 関連の間違いに気づいたので感謝感激雨あられです。
http://ptech.g.hatena.ne.jp/noromanba/20161006/1475785624
結果Lubuntuのバグ?っぽいです。LXDE/Lubuntuの情報、英語でも少ないのでその点でもはてなブログ嬉しいです。

2016-09-03

Ubuntu系でGUIログイン出来ないのファイル破損かもよ

08:19

同時にネット不通・既存の修正方法で直らないという特徴があって、携帯で情報チラ見しても日本語・英語に情報が無いので自力で解決した。症状に当てはまるなら試してみると直るかも。

よくある、

*ではない*

「暗号化周りのファイルがぶっ壊れて再インストールで直った」という珍しいやつ。Lubuntu 16.04.1 32bit LXDE

$ sudo apt install --reinstall libssl1.0.0

で直ったっぽいけど、まだWi-Fi繋がってないので Ethernet ケーブル刺してこれ書いてる。Wi-Fiしか手段無くて詰む人いそう。

その後再起動で無事WLAN繋がった。

tl;dr

ログ兼不運な人へ。


症状

これはヤバイ。この先は、

というのが前提になるので頑張ろう。続き。

  • Wi-Fi(wlan* | wls* | 無線LAN | ネット)が利用出来ない
    • NetworkManager / network-manager / nm-applet再起動/restartでも繋がらない
    • 繋がっているように見えるが外に出て行けない場合がある
    • ping/mtr は通る
  • apt系のコマンドが失敗する
  • pippythonのローカルコマンドが失敗する
    • segmentation fault(SEGV)で落ちる(!)
  • rsyncが失敗する(!)
  • w3m も動かない\(^o^)/
  • 再起動/rebootしても解消しない

チェックリスト

  • 何故か eth* | ens* | WiredConnection* | 有線LAN はつながる
  • 本当に「何もいじっていない」
  • /var/log/syslog に libcrypto.so という文字が出ている

無駄だったこと

原因と修復

https / TLS / SSL とか暗号化周りが怪しいかもと思ったら、SEGV の時に毎回 libcrypt のエラーが吐かれてたのでパッケージ調べる。

$ dpkg -S libcrypt
libc6:i386: /lib/i386-linux-gnu/libcrypt-2.23.so
libcryptsetup4:i386: /usr/share/doc/libcryptsetup4
libc6-dev:i386: /usr/lib/i386-linux-gnu/libcrypt.a
libcryptsetup4:i386: /lib/i386-linux-gnu/libcryptsetup.so.4
libcryptsetup4:i386: /usr/share/doc/libcryptsetup4/copyright
libc6:i386: /lib/i386-linux-gnu/libcrypt.so.1
libcryptsetup4:i386: /lib/i386-linux-gnu/libcryptsetup.so.4.6.0
libcryptsetup4:i386: /usr/share/doc/libcryptsetup4/changelog.Debian.gz
libssl1.0.0:i386: /lib/i386-linux-gnu/libcrypto.so.1.0.0
libc6-dev:i386: /usr/lib/i386-linux-gnu/libcrypt.so
libcryptsetup4:i386: /usr/share/doc/libcryptsetup4/NEWS.Debian.gz

どれだよ・・と思いつつ syslog をよく見ると "libcrypto.so.1.0.0〜" って書かれてるので、上の

libssl1.0.0:i386: /lib/i386-linux-gnu/libcrypto.so.1.0.0

が該当っぽいので入れなおす。libc6 よりマシだけど怖いには違いない。

$ sudo apt install --reinstall libssl1.0.0

結果直った。

$ apt-cache rdepends libssl1.0.0 | wc -l
759

ショエェェェッ!! OpenSSL ちゃん大人気!!! こわい!!!!


Environment

Lubuntu 16.04.1 LTS Xenial Xerus 32bit

USB pendrive w/ persistent

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial
$ cat /etc/debian_version 
stretch/sid
$ aptitude show libssl1.0.0
Package: libssl1.0.0                     
State: installed
Automatically installed: no
Multi-Arch: same
Version: 1.0.2g-1ubuntu4.2
Priority: important
Section: libs
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Uncompressed Size: 3,207 k
Depends: libc6 (>= 2.7), debconf (>= 0.5) | debconf-2.0
Description: Secure Sockets Layer toolkit - shared libraries
 This package is part of the OpenSSL project's implementation of the SSL and TLS cryptographic protocols for secure communication over the Internet. 
 
 It provides the libssl and libcrypto shared libraries.
トラックバック - http://ptech.g.hatena.ne.jp/noromanba/20160903

2016-04-29

Re: Template Strings (の使い方)

14:41

ES6のテンプレート文字列/リテラルは、 ` ` このようにバックティックで囲んだ高性能文字列のことなんだけど、具体的にどう便利かという解説があまり無いので、返信がてら実際の利用例書いた。via id:a-kuma3 k you!

ヒアドキュメントとか置換とか色々出来る。おおむね簡単なコードなのでわかりやすい、はず。

TL;DR

実はちょっと工夫すれば昔々から似たようなことが出来てた。長すぎて別記事調整中なので上げたらリンク貼ります。では庶民のコードをどうぞ。


WYSIWYG

Template Stringsのおかげでヒアドキュメント可能になったので、CSS書くのが格段に楽になった。

addStyle()GM_addStyle() のshimで、CSS足すやつ。 ぼくの定番コードで素のJavaScriptで書いてる。実際の中身はリンク先見て下さい。

jQueryよく知らないけど jQuery(document.head).append(`<style type="text/css">/*CSS*/</style>`) とか読みかえれば良い。イマイチ感あるけど上手いやり方あるのかな。

(() => {
  'use strict';
//...
    addStyle(`
        .flip-list-title-header {
            width: 50% !important;
            padding-left: initial !important;
        }
        .flip-entry-info {
            width: 50% !important;
        } .flip-entry-title {
            display: initial !important;
        }
    `);
})();
expand title on drive.google.com for UserScript ? GitHub

長いCSS文字列を普通のCSSファイルみたいに素直に書けるのでコードが整う。素晴らしい。

ES5以前

さて今まで見た目や可読性どうやってたかというと、こういうコード達見たことあると思う。CSSに限らず画像データとかに多い。

一時的にArrayを作り , で改行した後 join('/* お好み */') で連結。

var style = [
    '.klass {',
        'font-size: huge;',
//      'rule...',
    '}'
].join('\n');

style;
/* <-
".klass {
font-size: huge;
}"
*/

+ で連結するパターン。画像データとかの長大文字列によく使われてる。

var img = 'dataURIスキームの画像ですよ'
    + 'どうしても長くなるので連結する'
    + 'まだまだ延々と数十行続くよ'
    /*+ '...'*/
    +'やっと終わりですよ';

img;
/*
"dataURIスキームの画像ですよどうしても長くなるので連結するまだまだ延々と数十行続くよやっと終わりですよ"
*/

バックスラッシュでエスケープも出来るけど少数派。特徴としてインデント文字列に含まれる点がある。改行を除けば一番ヒアドキュメントに近い感じ。

var escaped = '超絶長い文字列だよ\
    インデントも\
    ちゃんと入るよ\
マジで長いんだよ\
途中改行入れられないよ';

escaped;
/*
"超絶長い文字列だよ    インデントも    ちゃんと入るよマジで長いんだよ途中改行入れられないよ"
*/

基本ですが、改行したい場合は \n を使い、 \ 出したい場合は \\ とエスケープが必要。

var linebreaked = 'この後改行ですよ\n\
\n\
\\ でごちゃごちゃしてしまう';

linebreaked;
/*
"この後改行ですよ

\ でごちゃごちゃしてしまう"
*/

\ の嵐に耐えられるなら良いでしょう。


こういったソース整形用タイプは大抵置き換えて問題ない。

素直さ

先の例はCSS足すだけなので気楽に使ってるけど、ヒアドキュメントなのでソースの見た目のまま出力されるのに注意。

(() => {
    return `Linebreakable
	HardTab
        Half Width Space x 8
`;
})();
/* <-
Linebreakable
	HardTab
        Half Width Space x 8

*/

このように文字列がソースの形のまま出る。

スペース・タブのインデントや改行入れたくない場合は整形してはいけない。

(() => {
    return `Linebreakable
trim HardTab
trim Half Width Space`;
})();
/* <-
Linebreakable
trim HardTab
trim Half Width Space
*/

何とも見た目が気持ち悪いのと、コーディングルール的にどうしましょうか、というのがヒアドキュメント系永遠の課題でしょう。先に上げた例の、シリアライズした画像の文字列クソ長いけどどう書くか、みたいな感じがまさにそう。

一応メリット取りつつ変形させるのさっと書いてみた。手抜きなのでもう少しスマートになると思います。

(() => {
    const heredoc = `Linebreakable
	HardTab
        Half Width Space x 8
    `;

    return [
        'インデント消去改行保持:' + heredoc.replace(/^\s+/gm, ''),
        '1スペース連結:' + heredoc.replace(/^\s+/gm, '').trim().replace(/\n/gm, ' '),
        'カンマ連結:' + heredoc.replace(/^\s+/gm, '').trim().replace(/\n/gm, ','),
        '文字のみ連結:' + heredoc.replace(/^\s+/gm, '').trim().replace(/\n/gm, '')
    ].join('\n----\n');
})();
/* <-
インデント消去改行保持:Linebreakable
HardTab
Half Width Space x 8

----
1スペース連結:Linebreakable HardTab Half Width Space x 8
----
カンマ連結:Linebreakable,HardTab,Half Width Space x 8
----
文字のみ連結:LinebreakableHardTabHalf Width Space x 8
*/

ここまでするなら普通の文字列かArray連結でいいんじゃないの、という感じもあるけど、長くても書きやすいので今後増えてきそうな気がしてる。メソッドチェーンはお好みなので、 ``.replace(/pattern/, (m, c) => {/* 一気に変換 */}) とかもいいと思います。

実際使うときはこんな感じでしょう。カンマ連結のやつ、Array使う方法にちょっと変えてみた例。最後のカンマ区切り処理を .join(',') ではなく + ''代替してる。

`Linebreakable
	HardTab
        Half Width Space x 8
`.split('\n').map(s => s.trim()).filter(s => !!s) + '';
//.replace(/^\s+/gm, '').trim().replace(/\n/gm, ',');
/* <-
Linebreakable,HardTab,Half Width Space x 8
*/

配列最後尾に空の値が入るので .filter() 必要。もう少し短く出来るけど、

`Linebreakable
	HardTab
        Half Width Space x 8
`.split('\n').map(s => s.trim()).slice(0 ,-1) + '';
//`.split('\n').map(s => s.trim()).filter(s => !!s) + '';

わかりやすさイマイチですね。後述するタグ付きテンプレートのハンドラ作っておくと便利に使えそう。

小さいテンプレートたち

素朴さ重要。Template Literals 、 `${expression}` と書くと、フレームワーク(FW)のテンプレートエンジンみたいに置換された文字列になる。これがテンプレートリテラル。置換部分は変数関数プロパティの処理結果が勝手に入ってくれる。

これが一番画期的なところで、あまり着目されないけどDOMで絶大な効果を発揮する。

  • プロパティを一時変数に入れる必要がない
    • DOMも直で置換部分に書き込める
  • +join()文字列連結する必要がない
    • ' 書きまくる面倒が無い

といった多大なメリットがあり、冗長なコードが大分短く出来る。後述になるけどFirefoxの人はより幸せ度が高まるでしょう。

よくあるタイトルとURLを改行付きで取得するやつ。Bookmarkletとかショートさが要求されるシーンに最高。

// e.g. GitHub insane CSP constraint to Bookmarklet in Firefox,
//      use w/ Scratchpad or Console in Devtools panel
`${document.title}
${location.href}`
/* <-
put title and URL w/ linebreak
https://gist.github.com/noromanba/b9a3d4108d4f4d4055375856740db6bb
*/
put title and URL w/ linebreak ? GitHub

ただ、サイトとブラウザ次第では、 javascript:/*...*/ の形であってもBookmarklet使えません。あまり知られてないけど、Content Security Policy(CSP)にはクロスブラウザ問題がある。上記コメントのようにGitHubFirefoxの組み合わせが代表的なところです。

よってこういう場面ではローカルにjsファイルを置いておき、

  1. Shift + F4 で最強召喚獣スクラッチパッドを呼ぶ
  2. Ctrl + O でローカルコード開く
  3. Ctrl + L で実行
  4. コピペ or 切り取り or DnD

もしくはコンソールにぶち込む、というのがWebバトルには必須と言えるでしょう。Markdownのリンクとかもこんだけ短いワンライナーで済みます。

`[${document.title}](${location.href})`;
/* <-
[put Markdown link syntax](https://gist.github.com/noromanba/2d79d49b4467f2e693cc5f2bcef29399)
*/
put Markdown link syntax ? GitHub

一々 ' で囲って + する必要ない幸せ。素晴らしい。同じことES5以前だとこうです。

'[' + document.title + ']' + '(' + location.href + ')';

つらい。もう戻る気はない。

もう少しES6してまともに使ってる例。 C:。ミ タコいストリーミングサイトの情報補うやつ。

長いのでリンク先でどうぞ。

CSP vs Bookmarklet

CSPとブックマークレットの問題は id:mono0x さんが詳しいので以下がオススメ。

GitHubのCSP/CORSはやりすぎだと思う。Firefox側のCSP解釈に難があるのか、GitHubがヘッダ分けてるのか。前者だと思いますが。

タグ付きテンプレート

Tagged Templates という機能で、テンプレート関数名のタグが付けられる。今の所庶民にはあまり縁が無さそう。

handler`${expression}` と任意の関数名を前に書くと、 handler 関数テンプレートに対して処理した結果が得られる。

handler は自前で書く必要がある。引数は以下のように、ただの文字列部分の配列と、 ${expression} を可変長な引数でとる形で処理する。

function handler(strings, ...expression) {
    // hard work
    //...

    return 'handled string';
}
// or
const handler = (strings, ...expression) => {
    // hard work
    //...

    return 'handled string';
};

大体どこのサイトも同じような説明なので、GoogleがEarly 2015に出したコード貼ります。

// Contextual auto-escaping
qsa`.${className}`;
safehtml`<a href="${url}?q=${query}" onclick="alert('${message}')" style="color: ${color}">${message}</a>`;

// Localization and formatting
l10n`Hello ${name}; you are visitor number ${visitor}:n! You have ${money}:c in your account!`

// Embedded HTML/XML
jsx`<a href="${url}">${text}</a>` // becomes React.DOM.a({ href: url }, text)

// DSLs for code execution
var childProcess = sh`ps ax | grep ${pid}`;
Getting Literal With ES6 Template Strings  |  Web  |  Google Developers

これ何が便利かというと、FWがこういうタグ用のフィルタ関数を用意しておけば、ユーザは楽々エスケープとか多言語対応とか出来ますね、という妄想。リンク先見ると、 html() をこんな感じでさらっと使ってるけど、

//...
var username = "Domenic Denicola";
var tag = "& is a fun tag";
console.log(html`<b>${username} says</b>: "${tag}"`);
//=> <b>Domenic Denicola says</b>: "&amp; is a fun tag"
Getting Literal With ES6 Template Strings  |  Web  |  Google Developers

エスケープするために地獄のような関数をシコシコ書いている。庶民にはつらい。あるいはコメントにあるように、自前でDSLとかFW書くような人には非常に便利そう。・・という位です今のところ。

標準でタグ用の関数が色々用意されると便利で面白いと思う。

String.raw との併用

これは具体例あるのでよかった。js正規表現リテラル/ / と、スラッシュでしか定義できないので、URLのスラッシュエスケープが特にダルい。さらに RegExp文字列コンストラクタ/ファクトリした場合、かなり複雑な2重エスケープする必要があるので避けるべきとされてる。ぼくは覚えられない。

それを解消した a-kuma3 さんの面白いコード。ライトな人には一見だとわかりづらいので、コメント消して引用注釈を † で入れてある。なお String.raw は、タグの為のメソッドと言って過言でないと思う。

var s = "http://q.hatena.ne.jp/";
var re;

// † / / な普通の正規表現リテラル
//    - スラッシュを \/ とエスケープする必要あり
re = /https?:\/\/\S+(\.\S+)*\//;
console.log(re.test(s));	// true

// <snip>

// † RegExp("") な通常文字列コンストラクタ
//    - スラッシュは / とそのまま書ける
//    - バックスラッシュは \\ とエスケープ必要
re = new RegExp("https?://\\S+(\\.\\S+)*/");
console.log(re.test(s));	// true

// † RegExp(``) テンプレート文字列で文字列コンストラクタ
//    - 通常文字列コンストラクタ同様、 \\ とエスケープ必要
//    -  RegExp(`https?://\\S+(\\.\\S+)*/`) で true
re = new RegExp(`https?://\S+(\.\S+)*/`);
console.log(re.test(s));	// false

//  † String.raw のおかげで余計なエスケープ要らない、便利!
re = new RegExp(String.raw`https?://\S+(\.\S+)*/`);
console.log(re.test(s));	// true
Template Strings - おまえ、うまそうだな

ぼくは滅多なことが無い限り極力文字列コンストラクタ/ファクトリは使わないようにしてるのだけど、最後のコードは良さそう。String.raw`` パターン、わかりづらいけど String.raw が特殊なタグでハンドラ、なはず。

Tagged Templates 詳細

役立ちそうなやつ厳選したので貼っておく。この2つだけでいい。ES6 全般で有名なやつです。

後者の 2ality は面白いハックが載ってる。両者とも実装内部の話が載ってるのでいい感じ。


近況

ぼくは昔から黙々とコード書いてコードでやり取りする、というのが活動の主体なのでGist更新が多いです。フィード拾っとくと何かと便利かもしれません。2012年頃から長い間隠されてたatomタグが最近復活してますが、一応貼っておきます。.atom 足すだけなんですけど。

このブログよりは更新頻度多いです。ただ、何故かGistのアクティティが出ない。相当昔のリニューアル時にバグってから直ってないので、今のところGist追う目的のFollowは機能しません。過去のスクリプト更新とかもしょっちゅうしてるので、Recently updated見ると便利でしょう。

欠点としては、他の方がStarやコメント付けても更新扱いで上がってくる事です。この点通知に変えるとか、何とかして欲しい。

Hatena::Letも大分使ってましたが、残念ながら今後上げる予定は今の所無いです。滅茶苦茶不便で断腸の思いですが、更新もしてない。今度理由書きます。とはいえパブリックな物だけで208個もあるので参考にはなると思います。ユーザページから参照して下さい。

あるいはポータルサイト覗くほうが便利かもしれません。

js無いと動かないのが気に喰わないので、GitHub Pages お手軽に作れるやつとかに移行したい。

Hubサイト探してます

CodeRepos とか Userscripts.org とか Hatena::Let みたいな 黙々素朴Hubサイト欲しい。切実。いいのあったら教えて下さい。

P.S.

http://a-kuma3.hatenablog.com/entry/javascript_template_strings

日付無しなページ作れるの良いですね。AboutMe これで作っても良いかも。

超絶 TL;DR

トラックバック - http://ptech.g.hatena.ne.jp/noromanba/20160429

2016-03-21

Ubuntu 16.04のfglrxは間に合うのか

09:32

三行説明すると、

  • 現状、Ubuntu 16.04 LTSにはAMDのプロプラドライバ fglrx 間に合ってない
  • 更新時は、自動で fglrx と xorg.conf 消してオープンドライバ入れるよ
  • 今開発頑張ってるのでご期待下さい!絶賛開発中!!!!

と言う感じ。以下にコメントで書いたけど長すぎた。

f:id:noromanba:20160322091836p:image

Ubuntu 16.04 LTSではRADEONドライバーが公式サポートされないらしい件 - Sickly Life Blog

ひどい。id:sicklylife さんごめんなさい & いつもの便利ページ相変わらず早い、ありがとうございます。

screenshot

fglrx無いと何なの?

一番の問題はパフォーマンスで、プロプライエタリAMDドライバを100とすると、オープンドライバは大体50〜70位というのが手元の体感だし世間の評判もそんな感じ。性能面で劣るのでゲームやる/動画見る・編集する人は致命傷になってしまう。最近の Gallium オープンドライバはかなりマシになったけどまだ色々バグもある。

オープンドライバのメリットとしてはカーネル更新来ても平然としてられるしXorg周りで困らない。これはうれしく思ってる。昔々にNVIDIAのプロプラドライバでXが立ち上がらなかったり、設定ファイル破壊してくれたり、設定間違えてGUI起動しなかったりエラい苦労した。今のUbuntuではそんなに苦労は無いはずだけど、他のディストリだと困るかも。

Linuxのグラフィック周りで楽して過ごしたいなら IntelGPU/APU使いましょう。一番オープンソースに理解あるしオープンドライバ頑張ってるので性能差そこまで大きくない、はず。


以上、fglrxはもちろん、 fglrx-legacy ですらサポート外でパッケージdropされ、ずっとオープンドライバ使わざるを得ないマシンからお届けしました。

詳細

記事にある本家 Slashdot、本家なら日本より切れ味あるかと思ったらやっぱりアレだったので、

本当か確認しに辿って前述の通りこんなのを書いた。物凄いバケツリレー。 ---- までツリーしたの初めてに近い。

のろまんば (id:noromanba)

源流まで辿ると、bridgman「公式見解じゃないけど、(非業務ディストロでは)近いうちオープンソースドライバとfglrxの両スタックに対応するよう頑張ってるよ」 と言ってて、「まぁ信じられそう」という論調みたいですね。14.04.5出せはちょっと…

bridgman、昨日今日でも「がんばります」と言ってるので、頑張らなきゃいけない状況は大丈夫なのかって感も。

現状 "upgrade時に自動でflgrxとxorg.conf削除してamdgpu/radeon driverが入る" という挙動ですね @Ubuntu Wiki

http://sicklylife.hatenablog.com/entry/2016/03/10/183110#comment-10328537792368054902

朝から英語ガンガン読んでつらかったけど内容よくわかった。

  • TODO 後でコメント内容補足、バケツリレーも補足するかも

💡TIPS💡 Feedly使ってる人、こういう時初回取得から永遠に内容更新されない。Inoreaderがマシだと思う。

トラックバック - http://ptech.g.hatena.ne.jp/noromanba/20160321

2016-03-03

Chrome Linux 32bit版の後始末とFlash問題

08:12

予想以上にリンクされたり検索上位に来てるのと、詳しい情報が出てこないので新しいの書いた。

Flashにフォーカスしたものなので、Chromeと後始末の話は以下のやつ読んで下さい。


事前にChromiumに切り替えてたけどついにサポート終了で死亡した模様。

32bit/i386|x86 だと 404 で aptがエラー吐く。

W: http://dl.google.com/linux/chrome/deb/dists/stable/Release を取得できませんでした: 期待されるエントリ 'main/binary-i386/Packages' が Release ファイル内に見つかりません (誤った sources.list エントリか、壊れたファイル)
E: 一部のインデックスファイルのダウンロードに失敗しました。無視されたか古いものを代わりに利用しています。
E: パッケージキャッシュを再構築できませんでした

とりあえずFirefox使って早急にChromiumに移行しよう。 2016-03-02の v49 stableリリースで切られたっぽい。

Chromiumはパッケージ降ってくるの遅いのでzipでも良い強者はここから落とせる、はずなんだけどchrome-linux.zipが落ちてくるのはなぜだろう。

screenshot

ppaで良いならそこそこ落ちるstagingがある。ほとんどの日本人気づいてない。

betaとdevはGoogle APIの取得とかいるので完全におすすめしない。

まぁ素直に公式パッケージ待った方がいいと思う。

aptソース廃棄

CLIわかんねーって人は Ubuntuの場合 「設定」→「ソフトウェアアップデート」→「他のソフトウェア」タブからチェック外す。後はGUIのSynapticからも外せるはず。

$ sudo mv /etc/apt/sources.list.d/google-chrome.list /etc/apt/sources.list.d/google-chrome.list.org
$ sudo aptitude update # sudo apt-get update

最終版deb保全

必要なら一応debパッケージ取っておく。

$ ls /var/cache/apt/archives/google-chrome-stable_* | tail -1
/var/cache/apt/archives/google-chrome-stable_48.0.2564.116-1_i386.deb

aptキャッシュから適当な場所にコピー。

$ ls /var/cache/apt/archives/google-chrome-stable_* | tail -1 | xargs -I% cp -av % .
`/var/cache/apt/archives/google-chrome-stable_48.0.2564.116-1_i386.deb' -> `./google-chrome-stable_48.0.2564.116-1_i386.deb'
$ 
$ ls -l --time-style=long google-chrome-stable_48.0.2564.116-1_i386.deb 
-rw-r--r-- 1 noro noro 47539368 2016-02-19 05:22 google-chrome-stable_48.0.2564.116-1_i386.deb

48.0.2564.116(-1) で Chromiumと同じバージョンが最終だった。

Linux + Flash

可能なら捨てる。まぁそうもいかないので仕方ないのはわかるけど、普段は切って運用してる。

aptで以下を入れるのが枯れた手法だった。

  • flashplugin-installerFirefox系のNPAPI
    • Debianflashplugin-nonfree
  • pepperflashplugin-nonfreeChromium用のPPAPI
    • ただしこちらは32bit終了してPPAPIのメンテも終わった模様。後述

adobe-flashplugin

新パッケージ。 id:sicklylife さんというUbuntu初心者にとって神様みたいな人がいるので、この辺読みながらやるとよい。

adobe-flashplugin はNPAPI/PPAPIがいっぺんに入ってくれる上にaptの更新でPPAPIも更新済むので素晴らしいのだけど、PPAPI版が微妙に古いおかしさがあったので、早く治ってほしい。まだ手元では最終更新の pepperflashplugin-nonfree のままにしてある。

以下からバージョンチェック出来る。

現在の最新版は 20.0.0.306

pepperflashplugin-nonfree の死

ぼくはflashplugin-installerpepperflashplugin-nonfree 両方入れて更新してたけど、やはり32bit版の pepperflashplugin-nonfree は死んだっぽい。

$ sudo update-pepperflashplugin-nonfree --status --verbose # same as --install
options :  --status --verbose --
temporary directory: /tmp/pepperflashplugin-nonfree.zYzobZQEtA
doing apt-get update on google repository

$

何もメッセージ出なくなりDebianサーバから消えた模様。現在手元では最新版の 20.0.0.306 が入ってる。

chrome://flash

Flash plugin 20.0.0.306 /usr/lib/pepperflashplugin-nonfree/libpepflashplayer.so

今後アップデートが来た場合、

という感じ。困った。

DRM

現在PPAPIではどうしようもないのでFirefox + NPAPIの話。以下でhal系をインストールすればいいとあるが、

いささかhal-flashが古いので検索してみたら、ppaから libhal1-flash を入れるだけでNPAPIで動いた。

以下が作者ページ。

DRM認証できてるかの確認は、launchpad 通り、

  1. http://drmtest2.adobe.com:8080/SVP/SampleVideoPlayer_FP.html にアクセス
  2. フォームに以下のURL入れる
  3. 下のボタン押して再生

で再生されればOKとした。ここの手順多少わかりづらかった。HuluNetflixはこれで動くはず。

Amazon (Prime) Video はChrome以外で動かない問題が残る。DRMである Widevine Content Decryption Module も入ってるのにUA変えても動かない。


Chromium/Firefoxのきちんとしたサポート願いか、いい加減FlashDRMやめるよう訴えていく必要がある。FirefoxでNPAPIも近日廃止されるので、Windows含め、混乱する気がする。

FirefoxHTML5DRMにSurrenderした意味は何だったのか、ユーザや各動画配信ベンダーは考えて欲しい。



APPENDIX

GET/HEAD
$ GET http://dl.google.com/linux/chrome/deb/dists/stable/Release
Origin: Google, Inc.
Label: Google
Suite: stable
Codename: stable
Version: 1.0
Date: Wed, 02 Mar 2016 20:06:03 +0000
Architectures: amd64
Components: main
Description: Google chrome-linux repository.
MD5Sum:
 89704f9af9e6ccd87c192de11ba4c511 145 main/binary-amd64/Release
 f6b564f73fe97e866a0a5d093cae6006 4162 main/binary-amd64/Packages
 8e9eca702d86b5262e58558f18a43377 963 main/binary-amd64/Packages.gz
 01e89d641ae66e265bbd28d0ae56b23e 1191 main/binary-amd64/Packages.bz2
SHA1:
 153199d8f866350b7853365a4adc95ee687603dd 145 main/binary-amd64/Release
 6958758454ad2d56383996b75e91a42f381ad0b7 4162 main/binary-amd64/Packages
 05f149ee4d2573f77f3bedc5488da595ac96f42a 963 main/binary-amd64/Packages.gz
 ca925350845fc461954148f34730a1be2ee6f9be 1191 main/binary-amd64/Packages.bz2

amd64/64bit のみに。

バイナリも消えた。

$ HEAD https://dl.google.com/linux/direct/google-chrome-stable_current.deb
404 Not Found
Connection: close
Date: Thu, 03 Mar 2016 22:20:34 GMT
Server: downloads
Content-Length: 1449
Content-Type: text/html; charset=utf-8
Alt-Svc: quic=":443"; ma=2592000; v="30,29,28,27,26,25"
Alternate-Protocol: 443:quic,p=1
Client-Date: Thu, 03 Mar 2016 22:20:34 GMT
Client-Peer: 216.58.197.238:443
Client-Response-Num: 1
Client-SSL-Cert-Issuer: /C=US/O=Google Inc/CN=Google Internet Authority G2
Client-SSL-Cert-Subject: /C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.com
Client-SSL-Cipher: ECDHE-ECDSA-AES128-GCM-SHA256
Client-SSL-Socket-Class: IO::Socket::SSL
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Xss-Protection: 1; mode=block


Copylight (c) noromanba 2012-2017