I have an array which gets filled with different error messages as my script runs. I need a way to check if it is empty of not at the end of the script and take a specific action if it is. I have already tried treating it like a normal VAR and using -z to check it, but that does not seem to work. Is there a way to check if an array is empty or not in Bash?
たしか メタプログラミングRuby 作者: Paolo Perrotta,角征典出版社/メーカー: KADOKAWA/アスキー・メディアワークス発売日: 2010/08/28メディア: 大型本購入: 18人 クリック: 533回この商品を含むブログ (125件) を見るに載ってたよなー、ActiveRecordで使ってるよーとか書いてたよなー、でもどうだったか思い出せないなー。 ということで検索してみて、やっと見つかりました。 class Hash def method_missing(name) return self[name] if key? name self.each { |k,v| return v if k.to_s.to_sym == name } super.method_missing name end end http://www.goodercode.com/wp/
今日は県立図書館に昨日購入したナニとメモ用端末を持ち込み勉強。 # 結局メモは取ってないんですが ... で、件のテキストに magic number なソレに関する記述あり。Knuth 先生は_乗数が 2^32 の黄金比に近いほどよい結果が得られる_と言われているとの事。hash_long の定義は include/linux/hash.h にて以下。 #if BITS_PER_LONG == 32 /* 2^31 + 2^29 - 2^25 + 2^22 - 2^19 - 2^16 + 1 */ #define GOLDEN_RATIO_PRIME 0x9e370001UL #elif BITS_PER_LONG == 64 /* 2^63 + 2^61 - 2^57 + 2^54 - 2^51 - 2^18 + 1 */ #define GOLDEN_RATIO_PRIME 0x9e
いくらでも方法はあるので、質問者さんが挙げられているサイトが実際にどうやっているかはわかりませんが、 6文字程度の文字列では、「衝突しないハッシュ関数」を作るのは非常に困難であり、「衝突が発生する」ことがあるのを前提にして設計しないとといけません。 こういう場合、「ハッシュテーブル」におけるハッシュの取り扱いが参考になるでしょう。 ハッシュテーブルにおけるハッシュ関数は、名前が同じ「ハッシュ」でも、取り扱い方はmd5やsha1などとは異なります。 ハッシュテーブル用のハッシュ関数にはいろいろありますが、 中でもKnuth のアルゴリズムが有名です。 そういったハッシュ関数を使って最大値[62^6]のハッシュを生成し、それを 62進数に6桁に変換して、それを文字列化すればいいでしょう。 Knuth のハッシュ関数: http://d.hatena.ne.jp/yamanetoshi/2009
【Perl】文字列をハッシュ関数でハッシュ値に変換 2013-06-04-1 [Algorithm][Programming] 自分用メモ。 任意の文字列をハッシュ値に変換する。 ハッシュ関数のサンプルとして。 ■コード(hash-function.pl): #!/usr/bin/perl use strict; use warnings; use Encode; use utf8; binmode STDOUT, ":utf8"; my $t = "これは This is ペン a pen デスね。東京タワーに行きましたYO"; my $hv = str2hv($t); print "$t\n"; printf "%08X\n", $hv; sub str2hv { my ($t) = @_; $t = Encode::encode_utf8($t) if utf8::is_utf8($
前回のエントリで紹介したBundleSaverを作成する際に、SparseArrayというクラスの存在を知りました。 SparseArrayは、Android向けにつくられたパフォーマンスに優れたHashMap代用とのことで、その使い方と気になる性能について調べてみました。 実際に測定することでメリットやデメリットがわかったので、ご紹介します。 SparseArrayってなぁに? どう使うの? HashMap と SparseArray の性能比較 考察 まとめ 参考(計測に利用したクラス) 1. SparseArrayってなぁに? SparseArrayは、キーにintを利用することを前提としたHashMapだと考えると分かりやすいかと思います。 (Integerではなく、intです。) また、SparseArrayでは、値にObject型を格納できますが、値がint, booleanの
レインボーテーブル (rainbow table) は、ハッシュから平文を得るために使われるテクニックの一つである。特殊なテーブルを使用して表引きを行うことで、時間と空間のトレードオフを実現している。 以降では、このテクニックの元となっているアイディアについて説明する。 3 種類の還元関数を使った簡単なレインボーテーブルの例 最も単純な方法[編集] レインボーテーブルは「あるハッシュ値に対して総当たり攻撃を行った際の計算結果を、別のハッシュ値を攻撃する際に使用する」というアイデアに端を発する。例えば、平文 Pi (i = 1, 2, ...) と、それらをハッシュ化した値 Ci をテーブルに格納しておき、このテーブルを逆引きすればハッシュ値から対応する平文が得られる。 ただし、この方法では、得られた平文とハッシュ値とのペアを全て記録しておく必要があり、実現には莫大な記憶領域を必要とする。
ハッシュテーブルからエントリーを検索する処理は,一般に定数時間で済むとされている。つまり,どんなにエントリーが増えても検索の速さは変わらない,ということ。データ構造の教科書には必ず載っていることだね。 でも実際には,ハッシュの衝突が起こった場合に,速度の低下が発生する可能性がある。例えば,一般的なチェイン法(オープンハッシュ)だと,衝突したエントリーに関して線形検索を行うことになるから,衝突が多ければ多いほど,定数時間からは遠のいてしまう。 この速度低下を防ぐ方法はいろいろある。なかでも cuckoo hashing (カッコウ・ハッシング)は仕組みが面白い。こいつは,エントリーの検索を必ず定数時間で済ませてくれるという優れものなんだ。 Cuckoo hashing では,2つのハッシュ関数と,2つのテーブルを用いる。ここでは,2つのハッシュ関数をそれぞれ h1, h2 として,2つのテー
ハッシュとは 一般的に理解すると抽象的で分かり難くなってしまうが、ハッシュとは、あるデータから、一定の計算をして求めた、目的に沿った数値、と思っている。それでは、どのような目的に利用されるのか?自分の知識で考えてみた。 暗号化 webアプリケーション等で、パスワードをDBに保存する時、生のパスワードをハッシュに変換して保存する。 Digest::SHA1.hexdigest等で求めたハッシュから、元のデータを復元するのが非常に困難という特性を利用する。 保存しているパスワードハッシュが、たとえ漏洩したとしても、不正利用を防止できる。 パスワードを照合するときも、ハッシュに変換して、保存しているパスワードハッシュと一致するかどうかで判断する。 同等の確認 長い文字列データを比較する時、全ての文字が等しいかチェックするのは非常に時間がかかる。 しかし、長い文字列データをハッシュに変換しておき、
このところ立て続けに表記の事実を理解していない俺実装のHash(しかもCで!)を見かけたので、おそらく知られていないんだと思う。以降、同じ轍を踏む人が少なくなればと思い、啓蒙のために公開しておく。 先に言っておくがおまえらはHashを再発明するんじゃねよボケが。おとなしくありもののライブラリ使えよ。つうかHashのある言語使えよ。Cとかマゾかよ。 言葉と前提とりあえずHashが何であるかとか、どういう作りになっているかとか、そういうことは既知とする。リストの配列ってことね。←これで何言ってるか分からないおまえらにはこの文章はちょっとはやい。先にデータ構造の教科書を読むことをおすすめ。以下ではHashに登録されるキーとデータのペアのことをentryと呼び、リストの配列と言ったときのリストのほうをbin、配列のほうをbucketと呼ぶ。つまり、 class Hash { typedef lis
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く