- blogs:
- cles::blog
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.
- *1: Elastic 社による Elasticsearch および Kibana のライセンス変更にともなう AWS の対応方針のご案内 | Amazon Web Services ブログ
- *2: オープンへの新たなる挑戦、パート2 | Elastic Blog
- *3: The SSPL is Not an Open Source License | Open Source Initiative
php + MariaDB で Malformed communication packet というエラーが出るときは
mysql
php
centos7 今日は朝から php + MariaDB の環境で以下のエラーが発生して困ってしまいました。
Malformed communication packet というエラーは初めて見たかもしれません。
† MariaDB をダウングレードして暫定対処
原因としては MariaDB のバージョンアップに起因するようなので、以下のように MariaDB をダウングレードして暫定対象しました。
† 同じ話題が Stack Overflow にも
以下の Stack Overflow のエントリににもあるように、意外と同じところでハマった人は多いようです。
これを見ると PHP 7.3 では発生しないという話も出ているので PHP 7.1 と最新版の Maria DB の問題みたいですね。
Laravel でパスワードを忘れたときの再設定方法
php
laravel Laravel の Auth を使うとパスワードは DB にハッシュ化された状態で格納されます。
これはこれでセキュリティのために必要な挙動なので、これに文句を言うつもりはありません。
しかしながら、例えば管理者用のパスワードを忘れてしまい、DBを強制的に上書きしてログインしたいような場合、このハッシュがどのように作られているのか分からないとお手上げです。今日はまさにそんな状態に陥ってしまったので、解決方法を調べてみました。結論から言うと、以下のようにインタラクティブな php (artisan の tinker)を起動して、プログラムで DB を書き換えることができます。
これだと一撃で実行できるので、楽ちんです。
[Laravel でパスワードを忘れたときの再設定方法 の続きを読む]
Stack Overflow のコード片は CC BY-SA
licence
softwareengineering 先日の ICSE 2019 勉強会で紹介されていた「Usage and Attribution of Stack Overflow Code Snippets in GitHub Projects」という論文が興味深かったのでメモ。
- Sebastian Baltes, Stephan Diehl, "Usage and Attribution of Stack Overflow Code Snippets in GitHub Projects," Empirical Software Engineering, Vol. 24, Issue 3, pp. 1259–1295, June 2019. ( DOI: 10.1007/s10664-018-9650-5 )
この論文の要点は 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.
PHP の内容を AST で解析する
php
softwareengineering
tutorial PHP のファイルが静的解析したくなったので、ソースから AST を得る方法を調べてみました。
以前、Eclipse の ASTParser を使う話を書いたことがありましたが、それの PHP 版になります。
今回の作業にあたって、以下のスライドがとても参考になりました。
PHP は 7 になってから内部的に AST が利用されているため、以前よりも AST を得るのは簡単になっています。
既に以下のような extension が提供されているので、いずれかをインストールすれば大丈夫です。
- nikic/php-ast: Extension exposing PHP 7 abstract syntax tree
- sgolemon/astkit: Parser kit for PHP7 ASTs
今回はマニュアルが充実している前者の nikic/php-ast を入れてみることにしました。
以下、構築メモになります。
Oracle クリティカルパッチアップデートに注意(2019 年 4 月)
oracle
java
licence Oracle が定例のクリティカルパッチアップデートを出しました。
ちなみに Oracle JDK は 4/16 よりライセンスが改訂されて、個人利用・開発目的のみという使途制限がついている*1ので注意が必要です。
- Oracle Critical Patch Update - April 2019
- JDK 12.0.1, 11.0.3, 8u211, 8u212, and 7u221 Have Been Released! | Oracle The Java Tutorials Blog
† 参考
商用利用をしている場合の OpenJDK 等への移行対応については以下が参考になります。
React は MIT ライセンスに
facebook
licence 特許紛争に関わる条文が問題になっていた React のライセンス(Facebook BSD + Patents license)問題は、結局 Facebook 側が折れて MIT ライセンスとすることになったようです。
この件が表沙汰になって以来、React から逃げ出す人が続出し、 Apache からも Category X (使用禁止)ライセンスとして名指しされたりしていたので、そのあたりがかなり厳しかったんでしょうね。
Relicensing React, Jest, Flow, and Immutable.js | Engineering Blog | Facebook Code | Facebook
Next week, we are going to relicense our open source projects React, Jest, Flow, and Immutable.js under the MIT license. We're relicensing these projects because React is the foundation of a broad ecosystem of open source software for the web, and we don't want to hold back forward progress for nontechnical reasons.
PHP 7.1 リリース
php PHP 7.1 がリリースされました*1。
昨年 12 月の PHP 7.0 リリース以来の大型バージョンアップとなります。
詳細な変更点については PHP: PHP 7 ChangeLog に記載がありますが、型まわりでいろいろと改良が加わっているようです。
「PHP 7.1」リリース、型関連の機能を強化 | OSDN Magazine
PHP開発チームは12月1日、プログラミング言語の最新版「PHP 7.1.0」をリリースした。Nullable型が導入されたほか、関数の戻り値としてvoidを指定できるようになるなど、多数の新機能が加わっている。
MySQL で implode() のようなことがしたい
mysql
php MySQL (MariaDB)で PHP で言うところの implode() をやりたいと思っていろいろ調べてみたら、GROUP_CONCAT()*1 を使えば一撃で実現できることが分かったのでメモ。
例えば以下のようなテーブルがあったときに GROUP_CONCAT() を使うとこんな感じになります。
GROUP_CONCAT() には DISTINCT や ORDER BY が効くところもポイントです。
† カンマ区切りのデータの検索は FIND_IN_SET() で
カンマ区切りになった1つのフィールドから、一致するデータの個数を返してくれるのが FIND_IN_SET()*2。
真っ当な正規化を行っていればこんな関数のお世話になる機会はないはずですが、テーブル設計の時に「どうせ検索条件としてこのフィールドは使わないはずだから、非正規形のままカンマ区切りでフィールドにいれちゃえ」なんていう無精をしたりするとお世話になることがあります。真っ当な解決方法としてはテーブル構造を正規化することですが、それがイヤな場合はFULLTEXT インデックスを使ったりしていましたが、一番お手軽に解決できるのが FIND_IN_SET() です。パフォーマンス的にはアレかもしれないので注意は必要ですけどね。
実際の例としては以下のような感じになります。FIND_IN_SET() の第1引数は検索する文字列、第2引数はカンマ区切りの文字列で、返り値は見つかった個数(見つからないときは 0 )になります。GROUP_CONCAT() と違ってセパレーターが指定できないので、元になる文字列の構造には注意が必要です。
Cookie を JavaScript から取得させない
malware
javascript
php
java
chrome
rfc Chrome の機能拡張にマルウェアが仕込まれていて騒ぎになっているようです。
- HTTP Headers という 5万人が使っている Chrome 拡張のマルウェア疑惑。セッション盗まれて BTC も盗まれそうになった話。 - clock-up-blog
- Zaif のセッション情報が盗まれた原因のひとつについて。JavaScript からクッキー値を取得させない方法。 - clock-up-blog
その中で紹介されていた Cookie の httponly という属性*1が興味深かったのでメモ。
Cookie の仕様とセキュリティ
httponly 属性をつけると、そのクッキーは Cookie ヘッダ以外から読み取ることができなくなりなり、JavaScript から参照できなくなります。 Secureの反対の意味、 http でしか送信されないCookieという意味では ない ので気をつけて下さい。
このオプションはXSS脆弱性があった場合の被害を小さくします。 XSS脆弱性によって攻撃者が任意のJavaScriptが実行できてしまうと、 document.cookie の値を読んで Session ID などのログイン情報などを盗み見れてしまう可能性がありますが、 HttpOnly属性をつけておくとクッキーが XSS 脆弱性によって読み取られることがなくなります。
アプリを書くときに Cookie の Secure 属性は意識してつけていたものの、HttpOnly は Secure の逆かと勘違いしていて、完全にスルーしていました。なかなかの大失態です。
Java の場合には Servlet 3.0 から HttpOnly を指定するためのメソッド javax.servlet.http.Cookie#setHttpOnly()*2があります。また、PHP の場合には PHP 5.2 以降であれば setcookie()*3の第7引数を使って設定することができます。
- *1: RFC 6265 — HTTP State Management Mechanism (日本語訳)
- *2: Cookie (Java EE 6 )
- *3: PHP: setcookie - Manual
- sadpkv
- CACHEMANAGER.phpというのはどうだろうかと
- pairb1m
- Lightning のToDoリストを複数のPCで共有できるアドオン
- majodca
- 九州旅行から帰ってきました
- majodca
- 九州旅行から帰ってきました
- hot534
- yum を使って OpenVPN をインストールする
- dresssu3
- NP_Trackbackを騙るトラックバックspamについて
- zippern7o
- NP_SpamBayesJP jp1b
- park81o
- Google Docs をメールフォームとして使う
- fogmpl
- なんで官庁の文章はPDFなんだろうか
- cutjw9
- 即席スライドショーを作る
- frightenlho
- 添付ファイルの容量を表示する「Attachment Sizes」
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(5062)
3 . GitHub が全ての公開リポジトリへのシークレットスキャンを有効に(4198)
4 . 年次の人間ドックへ(4129)
5 . 2023 年分の確定申告完了!(1つめ)(3987)
Academic[574]
Book[155]
Diary[522]
Disaster[101]
Foodlogue[1425]
Game[284]
Goods[805]
Healthcare[341]
Hobby[32]
IT[1195]
Military[343]
misc.[1570]
Mobile[510]
Music[38]
Neta[106]
News[95]
Photo[391]
RealEstate[120]
Security[1178]
SEO Contest[36]
Software[634]
Tips[1886]
Travelogue[1238]
Web[675]
Work[193]