最近、新浪微博プラットフォームおよびビッグデータ部門のチーフアーキテクトであるホイ・シンチェン氏(「ブラザー・バード」として知られる)が新浪社を辞任し、蓮佳に入社したと報じられ、昨日、このニュースは蓮佳の関係者と本人によって確認された。報道によると、Hui Xinchen氏はLianjia入社後、テクノロジー担当副社長兼チーフアーキテクトに就任する予定だという。 InfoQ は、この転職について Hui Xinchen 氏にインタビューし、その背景にある物語と、プログラマーのキャリアパスに関する彼の経験について学びました。
Hui Xinchen (バード ブラザーとして知られる) は、中国で最も影響力のある PHP 技術専門家であり、PHP 開発チームの中心メンバーであり、PECL 開発者であり、Zend Company の外部コンサルタントでもあります。彼は Yahoo、Baidu、そして現在は Sina Weibo でプラットフォームおよびデータ部門のチーフ アーキテクトおよびチーフ PHP コンサルタントとして働いてきました。 Hui Xinchen は PHP NG のコア開発者であり、PHP5.4 および 5.5 の主要開発者です。 PECL 開発者として、Yaf、Yar、Yac、Taint などの多くの優れたオープンソース作品に貢献しており、APC、Opcache、Msgpack などのプロジェクトのメンテナーでもあります。
インターネットで PHP チュートリアルを検索する初心者から PHP 開発チームの中心メンバーに至るまで、Hui Xinchen はプロセス全体が「モンスターと戦い、アップグレードする」ようなものだと感じています。 Java と同じくブルーカラー言語として知られる PHP は、誰もがプログラミングできる時代には、より多くのプログラマーを育成できるゆりかごである、と同氏は考えています。彼は、PHP 言語と Zend エンジンに関連する研究、テクノロジー、ニュースをブログ Fengxuezhiyu で共有しています。左手に暗号、右手に詩。
Q: プログラミングに興味を持ったきっかけは何ですか?
私が初めて「プログラミング」をしたのはXiaobwang学習機だったようです。その後、大学でコンピューター サイエンスを学び、大学院生のときは、学校の多くの中等学部の Web サイトを含む、多くの Web 開発の仕事を積極的または受動的に担当しました。その際、学内BBSのメンテナンス等を行います。 考えてみると、私がプログラミングに夢中になったきっかけや出来事はひとつもなかったように思えます。この業界で働くのがとても自然で、嫌だとは思わなかったのでそのまま続けました。
Q: どのようにして PHP に夢中になったのですか?どのようにして PHP 開発チームの中心メンバーになったのでしょうか?
大学院生の頃、Webサイトを作りたいと思って、作り方がわからずネットで検索していたら、たまたまPHPの簡単なWebサイトの作り方を見つけたので作ってみました。これに従ってみると、インストール、デプロイ (当時はそのような一元的なデプロイ ツールはありませんでしたが、LAMP のデプロイ方法に関するチュートリアルが多数ありました)、コードの記述、およびテストが非常に便利であることがわかりました。 C 言語に似ており、多くの API の名前も libc API に似ています。こうして私と PHP との切っても切れない絆が始まりました。
2011年だったと思います。当時、Baidu 向けに開発した Ap (Yaf の前身プロジェクト) が、Baidu 社内でよく使われていたので、修正を加えて PECL に貢献しようと考えました。 (これもまた別のフレームワークですが、PHP には多くのフレームワークがあるため、この名前も少し自虐的です)、私は英語が苦手だったので、幸いなことに、このプロセスは非常に複雑でした。 , 当時、ピエール・ジョエは私を大いに助けてくれて、ヤフがPECLに入ることができました。
さらに、Yaf を提出する前に、私は実際に PHP のソース コードを勉強していたので、多くのバグや修正も提出しました。たとえば、ある日の正午に Rasmus (PHP の父) がこう言ったのを覚えています。 IRC はバグを発見したと報告し、ほぼ 5 分後に修正が行われました。
徐々に何人かの人と仲良くなり、皆の信頼を得た後、申請を開始し、PHPのコアコードを提出する許可を取得して、PHPの直接開発とバグ修正に参加し、メンバーになりました。開発チームのメンバーは1人。
核心に関しては、実際には、それは相互信頼のプロセスでもあります。誰もがあなたの仕事を認めれば、あなたの意見を尊重するでしょう。私は徐々に Dmitry Stogov と知り合いになり、Zend のコア部分の提出許可を取得し、多くのコアなバグ修正と新機能を提出しました。その後、私は Zend の外部コンサルタントとなり、徐々にコア開発者になりました。
それは、モンスターと戦ってアップグレードすることに少し似ています。
Q: Yaf はどのような状況で開発されましたか?当時、Baidu はどのように Yaf の開発をサポートしましたか?
Yaf が登場する前は、実はフレームワークを使用するかどうかについて古典的な議論がありました。「フレームワークを使用するとパフォーマンスが低下し、フレームワークを使用しないと開発効率が低下する」というものでした。
当時、Baidu 内には次のような多くのフレームワークがありました。オープンソースの Yii 、 ZF など (一部のチーム自身が作成したものを含む)。 1 つの問題は、クラス ライブラリでは、一部の周辺機能が相互に通信できないことです。
もう 1 つの理由は、多くのフレームワーク作成者がフレームワークをリリースした後、さまざまな人々がフレームワークにさまざまな変更を加えることに気づき、その結果、リリース後のフレームワークは時間の経過とともにさまざまなバリエーションになり、統一されることです。将来的にはアップグレードも不可能になります。
そこで、これらの問題を解決するフレームワークを実装するために PHP 拡張機能を使用することにしました。 もちろん、この拡張機能を作成する前はあまり自信がありませんでした。また、この拡張機能がどれだけパフォーマンスを向上させるかわかりませんでした。幸いなことに、最終結果は非常に良好です。
質問: Yaf を書くために C 言語を使用することにしたのはなぜですか?
PHPはC言語で書かれているので、その拡張機能もC言語で書かれているので、Yafを書くためにC言語を選択しました。
Q: なぜ百度を辞めて新浪微博に来たのですか?
これには実際には多くの理由があります。たとえば、当時私はBaiduのT7にいて、あまりビジネスに関わることがなかったので、少し感じていました。無駄だった。
さらに、私は当時百度の商業検索部門にいて、トラフィック量の多いシステムに直接触れていなかったので、もう一度練習するために大きなプラットフォームを見つけたいと思っていました、そして、たまたまWeiboがそのようなプラットフォームでした。
Weiboに来てから、確かにこれまでに経験したことのない多くの課題に直面し、自分の知識がより大きな舞台で活用できるようになったとも感じています。
Q: 現在、新浪微博で何を担当していますか?
私は現在、Weibo テクノロジー部門に所属しており、基本的なサービス チームを率いています。最初の 2 年間の主な仕事は、さまざまな基本的なフレームワークやツールの開発など、Weibo LAMP のパフォーマンスを最適化することです。 、最適化、仕様開発など。
過去 2 年間で、Weibo の LAMP アーキテクチャは安定し、全体的なパフォーマンスは数倍向上しました。また、独自の高性能 LAMP 全体ソリューションもあります。したがって、LAMP を最適化するための作業が少なくなります。現在は、キャッシュ中間層、トランスコーディングサービス、通信プラットフォームなどのインフラストラクチャの研究開発に主に焦点を当てています。
Q: PHP7 (PHPNG) は、Sina Weibo プラットフォームで PHP を使用する際のニーズと問題点を重要なフィードバックとして考慮しましたか?
もちろん、これは存在します。私が開発チームに加わって以来、他の多くのメンバーと同様の議論をしてきました。私はパフォーマンスが非常に重要だと考えていますが、新機能が非常に重要だと考えている人もいます。そのため、新機能がパフォーマンスに影響を与える場合があります。私たちは論争を起こすでしょう。
私はパフォーマンスの向上に非常に夢中になっています。そのため、後にドミトリー・ストゴフとさらにコラボレーションするようになりました。彼も特にパフォーマンスを重視しているからです。
私がパフォーマンスを気にする主な理由は、1% のパフォーマンス向上が中国最大の LNMP プラットフォームである Weibo にもたらす価値を私が実際に理解しているからです。 Weibo の全体的なパフォーマンスは 2 年前に比べて大幅に向上しましたが、開発効率に影響を与えずにさらなる改善を実現するには、言語と環境のパフォーマンスの向上のみが必要であると認識しています。したがって、この部分が Weibo の PHP に対する要求です。
PHP7 は 5.6 と比較して WordPress の実質パフォーマンス (QPS) が 100% 以上向上しています。来年、PHP7 がリリースされると、Weibo の全体的な LAMP プラットフォームのさまざまなビジネスも 100% のパフォーマンス向上を実現できると思います。
Q: PHP7 (PHPNG) 開発に参加するプロセスは何ですか?他の開発チームのメンバーとどのように協力していますか?
PHPNG は当時の秘密プロジェクトで、当初の参加者は Dmitry と私だけでした。PHP5 をベースにして進めていた JIT プロジェクトが、効果が不十分だったために棚上げになったのを今でも覚えています。誰もが落ち込んでいた。
Dmitry さんは、ZVAL を再設計し、サイズを圧縮してメモリ使用量を削減するというアイデアがあると述べました。それで二人で話し合ったんですけど、実は僕らも毎日いろんなアイデアを出しているので、その時は「なるほど、このアイデアはいけるかもしれない」って思ったんです。しかし、まだあまり自信がありません。
当時の主なアイデアは、効果をテストするために実用的なプロトタイプを迅速に作成することでした。このプロセスでは、主にアイデアを話し合って、やりたい部分を実装し、マージします。
協力のための主なツールは依然として Skype ですが、彼はサンクトペテルブルクにいて私たちと時差があるため、メールでのコミュニケーションも使用し、Github を介してコードをレビューします。
その後、プロジェクトがほぼ完了したとき、私たちは「これは良いアイデアで、うまくいく」と気づきました。その後、公になりました。その後は、アイデアがあれば RPC を送信し、パッチを送信し、投票して全員が反応し、マージするという通常のコラボレーション モードになりました。
Q: これまでに PHP7 で追加または削除された機能は何ですか?リリース前に他にどのようにパフォーマンスを改善できるでしょうか?
主にパフォーマンスの向上を提供する PHPNG ブランチに加えて、AST (抽象構文ツリー) のサポート、均一変数構文、64 ビット長の文字列のサポート、いくつかの新しい構文シュガー、そして最近ではネイティブ TLS などもあります。
PHP7 は 2015 年 10 月に正式リリースされる予定です。その前に、zend_array を使用して Hashtable を直接置き換えるなど、iTLB ミスを減らすための関数を指定して再セクション化やソートを行うなど、いくつかのアイデアが残っています。 JIT 最適化手段 (型オーバーターン) が PHP に導入され、いくつかの型固有の OPCodeHandler が高速化のために使用されます。別の例としては、コード データの局所性をさらに改善し、キャッシュ ミスを減らすことが挙げられます。
もちろん、並行して進めているJITプロジェクトもありますが、PHP7がリリースされたときにこのプロジェクトが完成するかどうかが心配です。
Q: 新しいバージョンの PHP は、PHP6 を介して PHP7 に直接アップグレードされますか?なぜ?
主な理由は、PHPにはPHP6という開発版があったのですが、後にこのバージョンが失敗してリリースされなかったことです。したがって、このバージョンは PHP7 である必要があります。
Q: Facebook がリリースした言語 Hack と PHP の関係は何ですか? Hack の目的は PHP を置き換えることですか?これら 2 つの言語の互いに対する利点は何ですか?
あまり問題ではありませんが、Hack は PHP ではありません。置き換えに関しては、彼ら(Facebook)はそのような考えを持っているかもしれないと思いますが、それはコミュニティがそれを受け入れるかどうかによります。
私は Hack については特に詳しくないので、具体的にコメントすることはできません。
Q: PHPは学びやすく敷居が低いため、プログラミングに向いていない人が入ってきたのではないかと考える人もいますが、この見方についてはどう思いますか?
私はこの考え方には本当に同意しません。私も学部卒業時に開発の仕事を探していくつかのユニットの面接を受けましたが、当時面接を受けた人たちの目には私はただのプログラミングに向いていない人間だったのかもしれません。
しかし、PHP は敷居が低いため、人々は自分の「プログラミング」の結果をすぐに確認することができ、初心者にポジティブなフィードバックとインセンティブ効果をもたらし、興味のある人々の興味をさらに高めます。 プログラムを作成する人が増えれば増えるほど、誰かが現れてテクノロジーの進歩に貢献する可能性が高くなります。
さらに、将来のプログラミング言語は使いやすさを目指して開発され、プログラミングの敷居がさらに下がる日が来るかもしれません。
Q: 資格のある PHP エンジニアの知識構造はどのようなものですか?
以前、「PHP エンジニアはみんなヘビの油だ」という格言があったのを思い出しました。実際、この言葉は PHP エンジニアにだけ当てはまるのではなく、すべてのエンジニアに当てはまるはずです。
知識構造は幅広くなければなりません。 Web 開発には、HTML、CSS、JS、SQL に加えて、Nginx、Linux、および Mysql の構成、メンテナンス、トラブルシューティングのためのいくつかの一般的な方法も知っておく必要があります。
Q: 技術力以外に面接で重視することは何ですか?
私は明確な思考、コミュニケーション、スピーキングに特に注意を払います。実際、率直に言って、将来一緒に仕事をする場合に障害はあるのか、大きな成長の可能性はあるのか。
質問: phpe.net の元ウェブマスターである Chen Bole は、現在男性用の靴下を販売しています。あなたの将来の計画は何ですか?あなたはずっとプログラマーであり続けますか?
実は私はとても怠け者なので、今日は酔うということはあまり考えません。ですから、実際のところ、将来についてはあまり明確ではありません。今でもプログラミングが好きで、自分の仕事を通じてみんなに利益をもたらし、コミュニティから賞賛されることが好きです。これは良いことだと思います。それ。
なぜ人々はあなたを「バード兄弟」と呼ぶのかとよく尋ねます。
私が若くて愛情を持っていたとき、私のQQ IMのニックネームは「雪の渡り鳥」で、その後、私は百度に行きました。将来的には、私が年をとったからでしょうか? ゆっくり、私は叫ぶ方法を知りません
実際、最初は「バードマン」は良い言葉ではありませんでしたが、その後、ますます多くの人が始めました。と叫んでいます。もう関係ありません
それで、Linux の民間開発者であるブラザー・ニアオは台湾人ですが、なぜ彼は「ブラザー・ニアオ」なのかという質問も台湾人のブラザー・ニアオにあります。と尋ねた。台湾出身のニアオ兄弟は、自分の姓が「蔡」であるため、中学校まではクラスメートから「蔡頭」と呼ばれ、高校入学後も「新人」と呼ばれ続けたと自身の証言で述べた。活動が多かったので、後輩からは「ルーキー先輩」と呼ばれることが多かったが、その両者が合わないと感じたため、名前を「ブラザーバード」に変更した。受け継がれ、より多くの人に浸透していきました。ネットワーク ID として「VBird」を使用した理由について、ニアオ兄弟は自分自身を笑いながら、最初は無知で、「ルーキー」が「ベジタブル」だと思ったと言いました(「ベジタブル」は英語で「ベジタブル」です)。 Niao 兄弟は、Linux 愛好家として広く知られるようになりました。
つまり、Linux Private Kitchen は私が書いたものではありませんし、Linux Private Kitchen は魚風味の細切り豚肉の作り方を教えてくれません。