2019年5月6日のブックマーク (7件)

  • 【python・ネタ】exit()ではなくexitで終了できるexitコマンドを作る - 静かなる名辞

    概要 むしゃくしゃして書いた。冷静に考えたら疲れてた。 問題点 >>> exit Use exit() or Ctrl-Z plus Return to exit ウザい! exitで落ちるようにしたい! 実装 簡単に書けます。5行くらい。 import sys class Exit: def __repr__(self): sys.exit() exit = Exit() __repr__を悪用します。あとは、適当な方法で起動時に読み込まれるようにしておきます。 参考: pythonインタプリタ起動時に良く使うmoduleをimportする - Qiita IPython起動時にいつも使うモジュールをimportする設定 - Qiita 【Python学習】Python起動時に自動でスクリプトを実行する方法 – SECAT exitするとそのまま落ちるようになります。 まとめ 実用するな

    【python・ネタ】exit()ではなくexitで終了できるexitコマンドを作る - 静かなる名辞
    yarumato
    yarumato 2019/05/06
    “__repr__を悪用します。適当な方法で起動時に読み込まれるようにしておきます。実用するなよ!”
  • JavaScriptの数値型完全理解 - Qiita

    数値というのはプログラミングにおいて極めて基的な対象です。ほとんどのプログラミング言語は何らかの形で数値の操作を行うことができ、もちろんJavaScriptにおいても例外ではありません。 プログラミングにおける数値の特徴的な点は、往々にしてその性質に応じた複数の型1が与えられている点です。まず、数値は整数か小数かによって分類されます。さらに、値を表すのに使われるビット数、また整数に関しては符号ありか符号なしかという分類ができます。例えば、Rustという言語ではこれらの分類が分かりやすく表れています2。Rustにおける数値の型はi32, i64, u32, u64, f32, f64などがあり、見ただけでどのような特徴を持つ数値なのかが分かりやすくなっています。iというのは符号あり整数、uというのは符号なし整数、fは小数で、その後の数字がビット数ですね。 では、JavaScriptにおいて

    JavaScriptの数値型完全理解 - Qiita
    yarumato
    yarumato 2019/05/06
    “数値関係メソッド parseInt”
  • はてなブックマークのブックマークレット(別ウィンドウで開く版)

    はてな公式ブックマークレット はてな公式であるにはあるのだけど… はてなブックマーク - はてなブックマークをはじめる (セットアップ) 上の方にある「ブックマークする」では javascript:(function(){var d=(new Date);var s=document.createElement('script');s.charset='UTF-8';s.src='http://b.hatena.ne.jp/js/Hatena/Bookmark/let.js?'+d.getFullYear()+d.getMonth()+d.getDate();(document.getElementsByTagName('head')[0]||document.body).appendChild(s);})(); という内容でブックマークレットが作成されるが、私のChromeの環境では動作

    yarumato
    yarumato 2019/05/06
    Firefox v56のはてブ拡張が無効化。このbookmarkletはJS ONなら動作した。width=450にするとスマホ向けのtextarea狭くて使いやすい版の画面になる
  • 家を出てから「ガス締めたっけ…」ってなる強迫性障害の方々が安心できそうなアイディアグッズ「早速予約した」→でもこんなデメリットも…?

    リンク www.amazon.co.jp Amazon|コモライフ 火の元・戸締りチェッカー 鍵 ガス元栓 消し忘れ 閉め忘れ 不安 物忘れ 施錠確認 敬老 ストーブ チェック|コモライフ - ショッピングバッグ・キャリー 通販 ショッピングバッグ・キャリーをお探しなら低価格・豊富な品ぞろえのAmazon.co.jpで、コモライフ 火の元・戸締りチェッカー 鍵 ガス元栓 消し忘れ 閉め忘れ 不安 物忘れ 施錠確認 敬老 ストーブ チェックを通販でいつでもお安く。アマゾン配送商品なら通常配送無料(一部除く)。 1 user 42

    家を出てから「ガス締めたっけ…」ってなる強迫性障害の方々が安心できそうなアイディアグッズ「早速予約した」→でもこんなデメリットも…?
    yarumato
    yarumato 2019/05/06
    “「しんどい状態を一生続けるなら、鍵を閉め忘れた方がマシだ」と思って、不安になっても無視して外出するようにした”
  • コンテナはなぜ安全(または安全でない)なのか - sometimes I laugh

    CVE-2019-5736を覚えていますか?今年の2月に見つかったrunc(Dockerがデフォルトで利用しているコンテナのランタイム)の脆弱性で、ホストのruncバイナリを好き勝手にコンテナ内部から書き換えることができるというものです。 脆弱性の仕組みに興味があったので調べたところ、コンテナを攻撃する方法というのは他にもいろいろあって、runcは頑張ってそれを塞いでいるようです。これまとめると面白いかも、と思ったので以下のようなおもちゃを作りました。 Drofuneは簡単なコンテナランタイムです。drofune runとかdrofune execなどでコンテナを起動したり、入ったりすることができます、といえば想像がつくでしょうか。 これだけでは何も面白くないので、Drofuneはわざと安全でない実装になっています。なので、今回発見されたCVE-2019-5736を利用した攻撃も成立します

    コンテナはなぜ安全(または安全でない)なのか - sometimes I laugh
    yarumato
    yarumato 2019/05/06
    “わざと安全でない実装を作った。コンテナー攻撃コードがどのように動き、どうすれば防げるかを試す”
  • DBマイグレーションを行う技術 - 発明のための再発明

    データベースのスキーマを変更するということはデータをいじる行為であり、最悪の場合データが消えます。 最悪の事態にはならなくとも、思わぬ場所に影響が起きたり、データの不整合が発生する恐怖と戦う必要が有ります。 テストや切り戻しを含めて計画し、大きな変更の場合にはダウンタイムまで考慮する必要があります。 そこで、RDBを対象にデータベースの変更を行う方法について書いていきます。 スキーマ変更 まずは、スキーマ変更について、 カラムを追加する 一番簡単で、影響も少ない変更です。 気をつけるのは、 ソースコードの変更よりも前にスキーマ変更を完了させる (長時間)ロックがかからない方法を選ぶ といったところでしょうか。 大抵の場合は、スキーマの変更とソースコードの変更の順番にさえ気をつければ問題は発生しません。 カラム名を変更する 「ALTER」でさくっと変えたくなりますが、ソースコードの変更が同時

    DBマイグレーションを行う技術 - 発明のための再発明
    yarumato
    yarumato 2019/05/06
    DBカラム・テーブルの追加・削除と、アプリのソースコード変更の、適切な順序
  • 競技プログラミングで使う有名グラフアルゴリズムまとめ

    0. はじめに AtCoderなどでは、グラフを扱った問題が多く出るが、その度に一から実装していると時間が掛かりすぎてしまうため、有名なものをあらかじめ持っておく必要がありそう。そこで、Pythonを用いて、ダイクストラ法、ベルマンフォード法、プリム法、クラスカル法、ワーシャルフロイド法を実装した。 コメント、意見等ある方は是非! お待ちしてます! 1. ダイクストラ法 1.1. ダイクストラ法(defaultdictで実装) defaultdictで実装すると、リストで実装するよりも、ノード数$N$が大きい際には高速に動作する。ただし、経路復元の関数は、うまく書けなかった......。 (2019/7/6 追記)結局できました。1.1.1. を参照してください。 import collections import heapq class Dijkstra: def __init__(se

    競技プログラミングで使う有名グラフアルゴリズムまとめ
    yarumato
    yarumato 2019/05/06
    “AtCoderでグラフを扱った問題が多く出る。有名なアルゴリズムをPythonで実装:ダイクストラ法、ベルマンフォード法、プリム法、クラスカル法、ワーシャルフロイド法”