ときどきの雑記帖'

I'd just be the catcher in the rye and all. I know it's crazy, but that's the only thing I'd really like to be. I know it's crazy.

The catcher in the rye
J. D. Salinger

著作権保護期間の70年延長に反対

検索エンジン経由でこられた方へ

このページの内容は日々更新されます。 そのため、検索エンジンに引っかかったものがここに残っているとは限りません。

最新エントリ (何日分あるかは不定)

2014年09月01日

■_

あるアセンブリコード(X64)で、je, pn ラベル みたいなのを見かけたんだけどなんだこれ。

■_

■_

今週はまたgdgdになる予定。

2014年08月31日

■_

TNG パトレイバー第4章観てきた。

機動警察パトレイバー 1/48 98式AV イングラム
機動警察パトレイバー 1/48 98式AV イングラム

■_

2014年08月30日

■_

久しぶりの shibuya.lisp、なにも YAPC::Asia にぶつけんでも… とはいえ今年の8月~9月の週末は色々あるからなあ(先週の土曜はLL Diverがあったし)。 Shibuya.lispテクニカル・トーク#8 : ATND

書影がついたのでぺたり ナポレオン ~覇道進撃~ (7) (ヤングキングコミックス)
ナポレオン ~覇道進撃~ (7) (ヤングキングコミックス)

ルイ=ニコラ・ダヴー ルイ=ニコラ・ダヴー - Wikipedia 軍事面で「不敗のダヴー」と呼ばれるほど優秀であったほか、 これはハセガー作品発祥じゃないかなあw>「不敗のダヴー」(という渾名)

Louis-Nicolas Davout - Wikipedia, the free encyclopedia

Nickname(s)
The Iron Marshal,
The Beast
Louis Nicolas Davout — Wikipédia

Surnom
« Le Maréchal de fer »
« La Bête »

■_

■_

GNU grep の変更も一段落したっぽいのですが grep.git - grep fix integer-width bugs in undossify_input etc. なんてのが目についたのでチェック


* src/dosbuf.c (undossify_input): Return size_t, not int.
* src/grep.c (fillbuf): Work portably even if safe_read returns a
value greater than SSIZE_MAX, e.g., if there's an I/O error.
---
diff --git a/src/dosbuf.c b/src/dosbuf.c
index 9ac2d13..3b4052a 100644
--- a/src/dosbuf.c
+++ b/src/dosbuf.c
@@ -90,15 +90,15 @@ guess_type (char *buf, size_t buflen)
 }
 
 /* Convert external DOS file representation to internal.
-   Return the count of characters left in the buffer.
+   Return the count of bytes left in the buffer.
    Build table to map character positions when reporting byte counts.  */
-static int
+static size_t
 undossify_input (char *buf, size_t buflen)
 {
   if (! O_BINARY)
     return buflen;
 
-  int chars_left = 0;
+  size_t bytes_left = 0;
 
   if (totalcc == 0)
     {
@@ -126,7 +126,7 @@ undossify_input (char *buf, size_t buflen)
           if (*buf != '\r')
             {
               *destp++ = *buf++;
-              chars_left++;
+              bytes_left++;
             }
           else
             {
@@ -176,7 +176,7 @@ undossify_input (char *buf, size_t buflen)
             }
         }
 
-      return chars_left;
+      return bytes_left;
     }
 
   return buflen;
diff --git a/src/grep.c b/src/grep.c
index 5e6c5c6..6b930dc 100644
--- a/src/grep.c
+++ b/src/grep.c
@@ -397,7 +397,7 @@ static int grepdesc (int, int);
 
 static void dos_binary (void);
 static void dos_unix_byte_offsets (void);
-static int undossify_input (char *, size_t);
+static size_t undossify_input (char *, size_t);
 
 static int
 is_device_mode (mode_t m)
@@ -583,7 +583,7 @@ reset (int fd, struct stat const *st)
 static int
 fillbuf (size_t save, struct stat const *st)
 {
-  ssize_t fillsize;
+  size_t fillsize;
   int cc = 1;
   char *readbuf;
   size_t readsize;
@@ -645,7 +645,7 @@ fillbuf (size_t save, struct stat const *st)
   readsize -= readsize % pagesize;
 
   fillsize = safe_read (bufdesc, readbuf, readsize);
-  if (fillsize < 0)
+  if (fillsize == SAFE_READ_ERROR)
     fillsize = cc = 0;
   bufoffset += fillsize;
   fillsize = undossify_input (readbuf, fillsize);

ふうむ。

2014年08月29日

■_

YAPC 行ってきた以下略

■_

■_

1/1000 の成功率で成功するまでの試行回数を求めたいと思った。で、R。

> f <- function() { cnt<-1;while(1==1){v<-runif(1); if(v<0.001) return(cnt); cnt=cnt+1;}}
> f()
[1] 117
> f()
[1] 231
> f()
[1] 539
> f()
[1] 139
> f()
[1] 1307
> f()
[1] 5056
> f()
[1] 106
> f()
[1] 794
> f()
[1] 70
> f()
[1] 1003
> f()
[1] 246
> f()
[1] 1683
> f()
[1] 1416
> f()
[1] 444
> rep(1,10)
 [1] 1 1 1 1 1 1 1 1 1 1
> rep(1,10)->xx
> sapply(xx,f)
 [1] 1091 1913 1005 1519  889 2072 1591  743 1365   28
> sapply(xx,f)
 [1]  338  802  104  215  733   60 1011  229  104  649
> ll<-rep(1,1000)
> sapply(ll,f)
   [1]  389  458  350   16  757 2260  868 1566 1181  580 1720 1872  323
  [14] 3706   36  754 1046 1940 1150 1240 1558 2412 1676  655  723  684
(略)
 [976]  274 1796  412 1052 1793  671  265   44 1258  444 1621   47  699
 [989]  699  278 1875 1702  585   29  928 1070  339  954  755  558
> sapply(ll,f)->data
> max(data)
[1] 5537
> min(data)
[1] 1
> mean(data)
[1] 974.847

などとあーでもないこーでもないとやってしまったが、 実は組み込みのもの一つで済んでしまうという

> rgeom(100000, 0.001)->dd
> 
> max(dd)
[1] 14180
> summary(dd)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    0.0   289.0   694.0   999.9  1385.0 14180.0 

で、プロットしてみた。

> plot(1:100000,dd,type="h",lwd=1)

さすがに要素数が大きすぎるので先頭の1000個だけで。

  > plot(1:1000,dd[1:1000],type="h",lwd=1)

最大値けっこうでかくなるんだなあ。

2014年08月28日

■_

「ご意見募集」→「ファイルサーバーに置いてるExecl のファイルに書いていってね」→ 「○○さん(意見募集した人)が編集中なので読み取り専用でオープンします」 → どうしろとw

■_

■_

この辺から Embedded in Academia : Proposal for a Friendly Dialect of C : programming Proposal for a Friendly Dialect of C | Hacker News

Embedded in Academia : Proposal for a Friendly Dialect of C

ざっくり略

Here are some features we propose for friendly C:

    The value of a pointer to an object whose lifetime has ended remains the same as it was when the object was alive.

    Signed integer overflow results in two’s complement wrapping behavior at the bitwidth of the promoted type.

    Shift by negative or shift-past-bitwidth produces an unspecified result.

    Reading from an invalid pointer either traps or produces an unspecified value. In particular, all but the
    most arcane hardware platforms can produce a trap when dereferencing a null pointer, and the compiler should
    preserve this behavior.

    Division-related overflows either produce an unspecified result or else a machine-specific trap occurs.

    If possible, we want math- and memory-related traps to be treated as externally visible side-effects that
    must not be reordered with respect to other externally visible side-effects (much less be assumed to be
    impossible), but we recognize this may result in significant runtime overhead in some cases.

    The result of any signed left-shift is the same as if the left-hand shift argument was cast to unsigned,
    the shift performed, and the result cast back to the signed type.

    A read from uninitialized storage returns an unspecified value.

    It is permissible to compute out-of-bounds pointer values including performing pointer arithmetic on the
    null pointer. This works as if the pointers had been cast to uintptr_t. However, the translation from
    pointer math to integer math is not completely straightforward since incrementing a pointer by one is
    equivalent to incrementing the integer-typed variable by the size of the pointed-to type.

    The strict aliasing rules simply do not exist: the representations of integers, floating-point values and
    pointers can be accessed with different types.

    A data race results in unspecified behavior. Informally, we expect that the result of a data race is the same
    as in C99: threads are compiled independently and then data races have a result that is dictated by the
    details of the underlying scheduler and memory system. Sequentially consistent behavior may not be assumed
    when data races occur.

    memcpy() is implemented by memmove(). Additionally, both functions are no-ops when asked to copy zero bytes,
    regardless of the validity of their pointer arguments.

    The compiler is granted no additional optimization power when it is able to infer that a pointer is invalid.
    In other words, the compiler is obligated to assume that any pointer might be valid at any time, and to
    generate code accordingly. The compiler retains the ability to optimize away pointer dereferences that it
    can prove are redundant or otherwise useless.

    When a non-void function returns without returning a value, an unspecified result is returned to the caller. 

© 2014 John Regehr

過去の雑記帖

  1. 2014年9月(上旬)
  2. 2014年8月(下旬)
  3. 2014年8月(中旬)
  4. 2014年8月(上旬)
  5. 2014年7月(下旬)
  6. 2014年7月(中旬)
  7. 2014年7月(上旬)
  8. 2014年6月(下旬)
  9. 2014年6月(中旬)
  10. 2014年6月(上旬)
  11. 2014年5月(下旬)
  12. 2014年5月(中旬)
  13. 2014年5月(上旬)
  14. 2014年4月(下旬)
  15. 2014年4月(中旬)
  16. 2014年4月(上旬)
  17. 2014年3月(下旬)
  18. 2014年3月(中旬)
  19. 2014年3月(上旬)
  20. 2014年2月(下旬)
  21. 2014年2月(中旬)
  22. 2014年2月(上旬)
  23. 2014年1月(下旬)
  24. 2014年1月(中旬)
  25. 2014年1月(上旬)
  1. 2013年
  2. 2012年
  3. 2011年
  4. 2010年
  5. 2009年
  6. 2008年
  7. 2007年
  8. さらに前
リンクはご自由にどうぞ。

メールの宛先はこちらkbk AT kt DOT rim DOT or DOT jp