タグ

ブックマーク / qiita.com/hnw (3)

  • ES2017でawaitのネストを避ける - Qiita

    async/await前提のライブラリ(例:Puppeteer)を使っていると、awaitをネストしたくなることがあります。例えば次のような状況です。 const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)); class Foo { async getBar() { console.log('getBar()'); return new Promise(resolve => resolve(new Bar())); } } class Bar { async baz() { console.log('baz()'); await sleep(5000); console.log('baz finished'); } } (async () => { const foo = new Foo(); await (a

    ES2017でawaitのネストを避ける - Qiita
  • PHP7調査(23)致命的エラーが例外としてキャッチできるようになった - Qiita

    (2015/07/02追記:PHP 7.0.0alpha2に合わせて修正しました) PHPのエラーは、エラー文言を表示するだけの警告・注意と、その場で処理を終了してしまう致命的エラー(fatal error)の2種類に大別できます。 ところで、PHP5の致命的エラーには不便な点があります。それは、set_error_handler()やその他の方法でエラーハンドリングできず、必ず終了してしまう点です。これでは致命的エラーをユニットテストするのも不便ですし、ReactPHPのようにサーバ動作させるようなプログラムも安心して使えません。 PHP7では致命的エラーが例外として実現されるようになり、エラーハンドリングの自由度が格段に上がりました。この変更の概要を紹介します。 例外のクラス階層の変更 まず、PHP7で例外クラスの階層がどう変わるかを説明します。PHP5までの例外のクラス階層は次のよう

    PHP7調査(23)致命的エラーが例外としてキャッチできるようになった - Qiita
    kathew
    kathew 2019/06/05
  • GCEのf1-microインスタンスを真にタダで使う方法 - Qiita

    USから中国・オーストラリア以外への外向き通信には1GBの無料枠があるのですが、中国・オーストラリア宛の外向き通信は1バイト目から料金が発生することになります。上の画像は中国への外向き通信が0.02円(約1MB)発生したことを示しています。 課金の原因はなんとSSH総当たり攻撃 しかし、今回のインスタンスはWebサーバやその他のサービスを動かしているわけではありません。このマシンで唯一listenしているポートはSSHの22番ポートで、それ以外のポートはGCEのファイアウォール機能でパケットフィルタリングされています。 つまり、課金の原因となった通信は攻撃者によるSSHログイン試行以外に考えられません。実際、ログを確認してみると世界中からのSSHログイン失敗のログが残されていました。 課金を防ぐには 自分のせいじゃないのに課金されるなんてひどい!とも思いましたが、GCP全体としても攻撃者に

    GCEのf1-microインスタンスを真にタダで使う方法 - Qiita
  • 1