タグ

2022年9月5日のブックマーク (3件)

  • Prustiを使ってRustでプログラム検証をしよう

    導入に際し、ドキュメントに書いてないこととか色々あってつらかったため、軽くメモ代わりに投稿しておきます。 また、Prusti を使う最も簡単な方法は VSCode の拡張である Prusti-Assistant を使うことですが、Vimの使用を見越しコマンドだけで使えるようにアレコレ設定しました。 Prusti の紹介 プログラミングにおいて、関数に対してプログラマが明示的に制約を課すことはよくあります。 例えば、次のような単純な関数 max を考えます。 fn max(x: i32, y: i32) -> i32 { let result = if x > y { x } else { y }; result } さて、この関数は次のような性質を持つことが期待されます。 resultはx以上かつy以上 resultはxまたはy そういった情報は多くの場合ライブラリのドキュメントなどに書い

    Prustiを使ってRustでプログラム検証をしよう
    to-ke-i
    to-ke-i 2022/09/05
  • Gmailへのメール送信がエラーになって返ってくる現象でお困りのお客様へ | さくらのサポート情報

    「さくらのメールボックス」「さくらのレンタルサーバ」「さくらのマネージドサーバ」をご利用のお客様より、2023年4月頃から「Gmailへのメール送信がエラーとなりエラーメールが送られてくる」というお問い合わせが増加しています。 Gmailでは近年増加傾向にある「なりすましメール」の対策としてセキュリティを強化しており、これが要因でメールの受信拒否となっていると考えられるケースが多い傾向にあります。 送信元メールアドレスに対してSPFレコードを設定する事でセキュリティを通過し受信される例が多いため、お問い合わせの前にページの内容をご確認ください。 またGmailへの送信エラーについては、いくつかの原因が考えられますのでそれぞれの解決策をご案内している以下のトラブルシューティングページもご活用ください。 トラブルシューティング・Gmailへのメール送信に失敗する Gmailが受信拒否した際に

    Gmailへのメール送信がエラーになって返ってくる現象でお困りのお客様へ | さくらのサポート情報
  • Rustで型レベルプログラミング

    はじめに 通常のプログラムは実行時(ランタイム)に1 + 1など様々な計算を行う。一方でコンパイラーを持つ言語では、コンパイラーの型検査やジェネリクスなどの機構を利用して、コンパイル時にも計算を行うことができる。このようなプログラミングを、コンパイル時に検査・推論される“型”[1]に注目して型レベルプログラミングと呼ばれる。 ランタイムの計算の中にはたとえばwhile(1);のような簡単な計算で無限ループといった停止しない状況に陥いることがある。コンパイル時にできる計算でこのように無限ループに陥いってコンパイルが停止しなくなってしまったら、プログラムを実行することなく自明なエラー(型があってないとか、Rustであればfreeするタイミングが自明でないなど)を検出しようというモチベーションが崩壊してしまう。したがってコンパイル時にできる計算とはランタイムに比べて非常に限定された計算しか許可さ

    Rustで型レベルプログラミング