パナマ文書(Panama Papers)とは、タックスヘイブン(租税回避地)の一つであるパナマの法律事務所「Mossack Fonseca(モサック・フォンセカ)」から流出した過去40年の業務内容に関する機密ファイル文書で、最初にドイツの新聞「Suddeutsche Zeitung (南ドイツ新聞)」が匿名の人物から入手したとされている。
さらに、ワシントンD.CのICIJ(International Consortium of Investigative Journalists:国際調査報道ジャーナリスト連合)へと渡り、ICIJが内容の分析を続けている。ICIJ事務局を運営するジェラルド・ライル氏は、「リークされた内容の規模からすると、オフショア取引(国境をまたぐ金融取引)に関与する人々にこれまでで最大の一撃となるでしょう」その影響の大きさを語っている。
ファイルの合計は2.6テラバイト (TB) に及び、2016年4月3日に149件の文書とともに発表された。関連企業・個人リストの完全版は同年5月初めに公開される予定となっている。
これまで、中国の習近平主席や幹部らの親族、ロシアのプーチン大統領の友人、アイスランド首相、イギリスのキャメロン首相などの名前が上げられており世界的に大きな話題となっている。
タックスヘイブンを利用する利用すること自体は違法ではないものの、犯罪組織が脱税やマネーロンダリング(資金洗浄)に利用しているとの指摘もあり、犯罪組織と同じ仕組を利用していると報道されることで企業や個人のイメージダウンは避けられないと思われる。
The Panama Papers ・ ICIJ
パナマ文書
世界を揺るがしかねない「パナマ文書」の衝撃
VIDEO
米ウォルト・ディズニーが、万物を司る力・フォースを操る「ジェダイの騎士」とフォースの暗黒面の力によって銀河を支配しようとする「シス」の戦いを描いた映画「スター・ウォーズ」シリーズ最新作「エピソード7」の出演者を発表した。
すでに当時の面影はなくなっているが、1977年の第1作(エピソード4)に出演したマーク・ハミル(ルーク・スカイウォーカー役)、ハリソン・フォード(ハン・ソロ役)、キャリー・フィッシャー(レイア姫役)、ピーター・メイヒュー(チューバッカー役)、アンソニー・ダニエルズ(ロボットのC-3PO)、ケニー・ベイカー(R2-D2)などの俳優陣が、同じキャラクターで登場するという。
主役陣の現在の画像
「スター・ウォーズ」シリーズは、以前は公式見解では6部作ということになっていたが、2012年10月にルーカスフィルムがウォルト・ディズニーに買収された際に、エピソード7の製作が発表され、9作目まで製作が予定されている。
スター・ウォーズ新作、ルークやハン・ソロも登場
スター・ウォーズ・シリーズ - Wikipedia
「スター・ウォーズ」新作、出演者が正式発表!ハリソン・フォードら旧作キャストもカムバック
スター・ウォーズ コンプリート・サーガ ブルーレイBOX (初回生産限定) [Blu-ray] 20世紀フォックス・ホーム・エンターテイメント・ジャパン 出演:リーアム・ニーソン,ヘイデン・クリステンセン,ユアン・マクレガー,ナタリー・ポートマン,マーク・ハミル
amazon.co.jpのカスタマーレビューを見る powered by amalink
苦しんで覚えるC言語(苦C) は、プログラミング初心者を対象としたC言語入門サイト。C言語の基本機能が体系立てて解説されていて、C言語の取得に苦しんでいる人に非常に勧めのサイト。
苦しんで覚えるC言語
苦Cとは
苦しんで覚えるC言語(苦C)は、初心者を対象としたC言語入門サイト。C言語の基本機能が体系立てて解説されており、市販書籍と同等以上の完成度となっている。
市販書籍には仕組みの説明を省略して読みやすさをアピールする本が多い中、苦Cではくどい説明を行っており、挫折経験のある初心者に最適だという。
苦Cのファイルをダウンロードすることもできる。
C言語(しーげんご、C language)とは
C言語は、1972年にアメリカAT&T社ベル研究所のデニス・M・リッチー(Dennis M. Ritchie)氏とブライアン・W・カーニハン(Brian. W. Kernighan)氏によって開発された、コンピュータのソフトウェアをつくる際に使用されるプログラミング言語の一つで、B言語(びーげんご、B language)というプログラミング言語の後継として開発されたことからC言語と呼ばれている。特定のハードウェアに依存した部分が言語仕様から切り離されているため、移植性の高いプログラムを書くことができる。
苦しんで覚えるC言語 書籍版
苦しんで覚えるC言語 秀和システム 著者:MMGames
amazon.co.jpのカスタマーレビューを見る powered by amalink
10進数を2進数文字列に変換する関数は前に作成してますが、逆に「1101」「10110000」などの2進数文字列を10進数の整数値に変換するC言語用の関数がなかったので作成してみました。
#include <stdio.h>
#include <string.h>
int bin2dec(char *src);
int main(void )
{
char binstr1[] = "1101" ;
char binstr2[] = "10110000" ;
char binstr3[] = "1000000100000000" ;
int dec = 0 ;
dec = bin2dec(binstr1);
printf("%s:%d(0x%02.2X)\n" , binstr1, dec, dec);
dec = bin2dec(binstr2);
printf("%s:%d(0x%02.2X)\n" , binstr2, dec, dec);
dec = bin2dec(binstr3);
printf("%s:%d(0x%02.2X)\n" , binstr3, dec, dec);
return 0 ;
}
int bin2dec(char *src)
{
int dec = 0 ;
for (;;) {
if (*src == '1' ) {
dec |= 1 ;
}
src++;
if (!*src) {
break ;
}
dec <<= 1 ;
}
return dec;
}
実行結果
$ ./bin2dec
1101:13(0x0D)
10110000:176(0xB0)
1000000100000000:33024(0x8100)
C言語 のstrncpy関数やmemcpy関数ではバイト単位の操作になるので、漢字、ひらがな、カタカナなどの全角文字を文字数で指定して部分
文字列 を取り出すことができません。そこで半角英数も全角文字も1文字として部分文字...
C言語のstrncpy関数やmemcpy関数ではバイト単位の操作になるので、漢字、ひらがな、カタカナなどの全角文字を文字数で指定して部分文字列を取り出すことができません。
そこで半角英数も全角文字も1文字として部分文字列を取り出すことができる関数を作成します。
以下はそのコードです。[C言語]UTF-8でエンコードされた文字列の文字数を取得するコード と同様に、文字の1バイト目のビットの状態を調べることによってその文字が何バイト文字を判定しています。
#include <stdio.h>
#include <string.h>
char *substr_utf8(char *dest, char *src, int offset, int len);
int _bytesize(unsigned char code);
int main(void )
{
char *testStr = "ABCDEFGあいうえおアイウエオ愛夢佐々木" ;
char strBuf[256 ];
memset(strBuf, 0 , sizeof strBuf);
printf("substr_utf8($testStr, 0, 5) = %s\n" , substr_utf8(strBuf, testStr, 0 , 5 ));
printf("substr_utf8($testStr, 3, 3) = %s\n" , substr_utf8(strBuf, testStr, 3 , 3 ));
printf("substr_utf8($testStr, 10, 4) = %s\n" , substr_utf8(strBuf, testStr, 10 , 4 ));
printf("substr_utf8($testStr, 13, 5) = %s\n" , substr_utf8(strBuf, testStr, 13 , 5 ));
return 0 ;
}
char *substr_utf8(char *dest, char *src, int offset, int len)
{
int srclen = strlen(src);
int pos = 0 ;
int count = 0 ;
char *cp = dest;
while (pos < srclen) {
unsigned char code;
code = *(src + pos);
int bytelen = _bytesize(code);
if (count >= offset && count < (offset + len)) {
memcpy(cp, (src + pos), bytelen);
cp += bytelen;
*cp = '\0' ;
}
pos += bytelen;
count++;
}
return dest;
}
int _bytesize(unsigned char code)
{
int size = 1 ;
int i;
if (0x80 & code) {
for (i = 2 ; i <= 8 ; i++) {
code <<= 1 ;
if (!(0x80 & code)) {
break ;
}
size++;
}
}
return size;
}
実行結果
$ ./substr_utf8
substr_utf8($testStr, 0, 5) = ABCDE
substr_utf8($testStr, 3, 3) = DEF
substr_utf8($testStr, 10, 4) = えおアイ
substr_utf8($testStr, 13, 5) = イウエオ愛
C言語 のstrlen関数では
文字列 の長さとして返ってくる値はバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。Webアプリケーションのテキスト処理で...
C言語のstrlen関数では文字列の長さとして返ってくる値はバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。
Webアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字(漢字、ひらがな、カタカナなど) も1文字としてカウントする関数を作成することにします。
#include <stdio.h>
#include <string.h>
int strlen_utf8(char *cp);
int _bytesize(unsigned char code);
int main(void )
{
char *testAscii = "ABCDEFG" ;
char *testHira = "あいうえお" ;
char *testKata = "アイウエ" ;
char *testKanji = "愛々木" ;
char *testAll = "ABCDEFGあいうえおアイウエオ愛夢佐々木" ;
printf("strlen(testAscii) = %d\n" , strlen(testAscii));
printf("strlen_utf8(testAscii) = %d\n" , strlen_utf8(testAscii));
printf("strlen(testHira) = %d\n" , strlen(testHira));
printf("strlen_utf8(testHira) = %d\n" , strlen_utf8(testHira));
printf("strlen(testKata) = %d\n" , strlen(testKata));
printf("strlen_utf8(testKata) = %d\n" , strlen_utf8(testKata));
printf("strlen(testKanji) = %d\n" , strlen(testKanji));
printf("strlen_utf8(testKanji) = %d\n" , strlen_utf8(testKanji));
printf("strlen(testAll) = %d\n" , strlen(testAll));
printf("strlen_utf8(testAll) = %d\n" , strlen_utf8(testAll));
return 0 ;
}
int strlen_utf8(char *cp)
{
int textlen = strlen(cp);
int pos = 0 ;
int count = 0 ;
while (pos < textlen) {
unsigned char code;
code = *(cp + pos);
int bytelen = _bytesize(code);
pos += bytelen;
count++;
}
return count;
}
int _bytesize(unsigned char code)
{
int size = 1 ;
int i;
if (0x80 & code) {
for (i = 2 ; i <= 8 ; i++) {
code <<= 1 ;
if (!(0x80 & code)) {
break ;
}
size++;
}
}
return size;
}
strlen_utf8関数では、1バイト目のASCIIコード値をパラメータとして_bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。
また、_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定して戻り値として返しています。
プロクラムの実行結果は以下のようになります。
kagahiro@kagahiro-PC ~/sample/c
$ ./strlen_utf8
strlen(testAscii) = 7
strlen_utf8(testAscii) = 7
strlen(testHira) = 15
strlen_utf8(testHira) = 5
strlen(testKata) = 12
strlen_utf8(testKata) = 4
strlen(testKanji) = 9
strlen_utf8(testKanji) = 3
strlen(testAll) = 52
strlen_utf8(testAll) = 22
Amazon ガチャ は、BearTail社が開始した毎月5000円の利用料金を支払うことで、毎月25日にシステムによってランダムで抽出された約4500円相当の(サービス手数料500円)複数の商品を購入できるというサービス。商品はA...
Amazonガチャ は、BearTail社が開始した毎月5000円の利用料金を支払うことで、毎月25日にシステムによってランダムで抽出された約4500円相当の(サービス手数料500円)複数の商品を購入できるというサービス。商品はAmazonから直送されるが、Amazon社の運営するサービスではない。
5000円で何か分からないものが購入できるサービスといえば、ノマドの女王として知られる安藤美冬さんが5000円で販売している「安藤美冬サバイバルキット」が知られているが、こちらは約4000円相当の内容のようだ。
Amazon上の商品をコンプするとか絶対無理なんで、私が購入することは無いと思いますが、
安藤美冬サバイバルキットも購入者はいるようなので、もしかしたらAmazonガチャも買う人がいるかも知れません。
Amazonガチャ
何が届くか分からない! 毎月ランダムにAmazonから定期的に代理購入する 「Amazonガチャ」を提供開始! ~あなたはAmazon上の商品をコンプできるか?
安藤美冬サバイバルキットが届いたので、中身を公開します。 | C-Graphiate
安藤美冬サバイバルキットは中身を確認して必要なものだけ自分で買う方が人生サバイバルできそう
1バイト(8bit)の10進数を2進数の文字列に変換するコードの
C言語 版です。
C言語 では、PerlやPHPなどのように2進文字列に変換してくれる便利な関数は関数はないので、ビット演算子を使ってビットのオン・オフを判定して...
1バイト(8bit)の10進数を2進数の文字列に変換するコードのC言語版です。
C言語では、PerlやPHPなどのように2進文字列に変換してくれる便利な関数は関数はないので、ビット演算子を使ってビットのオン・オフを判定して、2進文字列を作成していくしかありません。
#include <stdio.h>
#include <string.h>
void dec2bin(char src, char *dest);
const int buf_size = 9 ;
int main(void )
{
char buf[buf_size];
char str1[] = "あいうえお" ;
char *cp;
int num = 1 ;
for (cp = str1; *cp; cp++) {
memset(buf, '\0' , sizeof (buf));
dec2bin(*cp, buf);
printf("%d:%s (0x%02.2X)\n" , num, buf, 0x000000f f & *cp);
num++;
}
return 0 ;
}
void dec2bin(char src, char *dest)
{
const int bit_size = 8 ;
int i;
for (i = 0 ; i < bit_size; i++) {
dest[i] = (0x80 & src) ? '1' : '0' ;
src <<= 1 ;
}
}
解きながら学ぶC言語 ソフトバンククリエイティブ 著者:柴田 望洋,肘井 真一,高木 宏典,赤尾 浩
amazon.co.jpのカスタマーレビューを見る powered by amalink
Perl の関数を使用して、以下の手順で10進数を2進文字列に
変換 することができます。sprintf関数で10進数を16進文字列に
変換 pack関数で16進文字列をバイナリーにパックunpack関数で2進文字列に
変換 例えば、文字列の先頭...
Perlの関数を使用して、以下の手順で10進数を2進文字列に変換することができます。
sprintf関数で10進数を16進文字列に変換
pack関数で16進文字列をバイナリーにパック
unpack関数で2進文字列に変換
例えば、文字列の先頭文字のASCIIコード値(10進数)を取得し、それを2進文字列に変換に変換する場合は、
次のようなコードになります。
#!/usr/bin/perl
use strict;
use warnings;
my $ascii = "ABC";
my $asciicode = ord $ascii; # 先頭文字のASCIIコード値を取得
my $str = _bitstr($asciicode, 8);
print "str = $str\n"; # for debug
exit;
# 10進数を2進文字列に変換する関数
sub _bitstr {
my ($code, $len) = @_;
my $hexcode = sprintf("%X", $code); # 16進に変換
my $bitstr = unpack("B".$len, pack("H2", $hexcode));
}
10進数を単に2進文字列に変換するだけならこれでも構わないのですが、ビット演算子を使ってビットのオン・オフを判定して、
2進文字列を作成していく方法もあります。以下のコードはその実装例です。
#!/usr/bin/perl
use strict;
use warnings;
my $ascii = "ABC";
my $asciicode = ord $ascii; # 先頭文字のASCIIコード値を取得
my $str = _bitstrR($asciicode, 8);
print "str = $str\n"; # for debug
exit;
# ビット演算で10進数を2進文字列に変換する関数
sub _bitstrR {
my ($code, $len) = @_;
my $bitstr = '';
for my $i (1 .. $len) {
$bitstr .= (0x80 & $code) ? '1' : '0'; # 0x80(2進数:10000000)でビット論理積をとる
$code <<= 1;
}
return $bitstr;
}
ここで問題になるのはどちらの方法が処理速度が優れているかということですが、以下のコードのプロファイルを取ると・・・
#!/usr/bin/perl
use strict;
use warnings;
my $ascii = "ABC";
my $asciicode = ord $ascii; # 先頭文字のASCIIコード値を取得
my $str = '';
for my $j (1 .. 10000) {
$str = _bitstr($asciicode, 8);
$str = _bitstrR($asciicode, 8);
}
print "str = $str\n"; # for debug
exit;
sub _bitstr {
my ($code, $len) = @_;
my $hexcode = sprintf("%X", $code); # 16進に変換
my $bitstr = unpack("B".$len, pack("H2", $hexcode));
}
sub _bitstrR {
my ($code, $len) = @_;
my $bitstr = '';
for my $i (1 .. $len) {
$bitstr .= (0x80 & $code) ? '1' : '0'; # 0x80(2進数:10000000)でビット論理積をとる
$code <<= 1;
}
return $bitstr;
}
C:\xampp\htdocs\sample>perl -d:Dprof bitstr3.pl
str = 01000001
C:\xampp\htdocs\sample>dprofpp
Total Elapsed Time = 0.018988 Seconds
User+System Time = 0.016988 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
223. 0.038 0.038 10000 0.0000 0.0000 main::_bitstr
47.0 0.008 0.008 10000 0.0000 0.0000 main::_bitstrR
0.00 - -0.000 1 - - strict::import
0.00 - -0.000 1 - - warnings::import
0.00 - -0.000 1 - - strict::bits
0.00 - -0.000 2 - - main::BEGIN
やはり、ビット演算で2進文字列を作成するほうが早いようです。
プログラミングPerl〈VOLUME1〉 オライリー・ジャパン 著者:ラリー ウォール,ジョン オーワント,トム クリスチャンセン
amazon.co.jpのカスタマーレビューを見る powered by amalink
2038年問題とは、2038年1月19日3時14分7秒を過ぎると、
コンピュータ が誤動作する可能性があるとされる
問題 のこと。
C言語 の伝統的な実装ではtime_t型の範囲や精度はintとして実装されており、intは符号つき32ビットで...
2038年問題とは、2038年1月19日3時14分7秒を過ぎると、コンピュータが誤動作する可能性があるとされる問題のこと。
C言語の伝統的な実装ではtime_t型の範囲や精度はintとして実装されており、intは符号つき32ビットであったため、最大値は (231 - 1) = 2,147,483,647 となり、取り扱えるのは2,147,483,647秒までに限られていた。
そのため、これを前提として作成されたプログラムは、1970年1月1日0時0分0秒から2,147,483,647秒を経過した、2038年1月19日3時14分7秒(閏秒を考慮しない場合)を過ぎると、時刻がオーバーフローし正しくない値になるため、時刻を正しく扱えていることを前提としたコードは誤作動する。
例えば、Linuxのファイルシステムである、ext2、ext3、ReiserFSのタイムスタンプは同日付までしか対応していない。
2038年問題
スクープ】コンピュータの“西暦2038年問題”発生、早くも日本を揺るがす
KDDI、「2038年問題」で1346万円を過剰請求
日付・時刻関数の2038年問題
苦しんで覚えるC言語 秀和システム 著者:MMGames
amazon.co.jpのカスタマーレビューを見る powered by amalink
|< 先頭へ < 前へ 1 2 3 4 5 次へ >
アクセスランキング
SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (6 PV)
FC2まとめ (5 PV)
2ちゃんねる(2ch) (5 PV)
StartPage(スタートページ) - 匿名検索エンジン (4 PV)
Twitter Lite - 起動時や利用時の読み込み速度が最大30%アップ (3 PV)
「RPGツクールMV」製ゲームを簡単にiOS、Androidアプリ化する「Monaca for RPGツクール」 #テクノロジー (3 PV)
Google 日本語入力がオープンソースに (3 PV)
大人気のブランド品即時買取サービス「CASH」がDMM.comにたったの70億円で買い叩かれる (2 PV)
無料ダイヤルアッププロバイダ「Soloot(ソルート)」 (2 PV)
FC2ブログにコミュニティ機能 (2 PV)
FC2まとめ (13 PV)
SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (9 PV)
将棋ウォーズPCブラウザ版がchrome、Firefox、edgeなどに対応 (8 PV)
StartPage(スタートページ) - 匿名検索エンジン (5 PV)
掲示板CGI ThreadPlus 1.2 のリリース (5 PV)
「Kindle for the Web」 (5 PV)
2ちゃんねる(2ch) (5 PV)
FC2ブログにコミュニティ機能 (4 PV)
MySQLのINSERT ... SELECT文でLIMIT句を使用して上位3件のレコードをテーブルに追加する (4 PV)
Jipanguの配布は終了しました (4 PV)
アクセス統計
ディレクトリ
関連サイト