今話題の「面白いツイート」まとめ ます。 毎時15分と45分に更新。

このブログを検索

About This Site

Sorry but I'm not a native speaker of English.

So, some phrases will be difficult for you to understand.

Original text is written by Japanese.

If you are frequent speaker of Japanese, it will be easier to understand.

And please notice that it will be a difficult for me to understand English, either it might be difficult for you to understand Japanese.

==========================================================
【 Motivation to create this site. 】

 Recently,(actually not these days yet,) Yahoo!JAPAN which I have used a long time, sometimes has a column which introduce interesting tweets.

 I often read everything of introduced. But, there are only 6 tweets introduced. And I read it frequently while I'm not satisfied.

 While then I was registered Twitter, but not used. And finally delete account. But this is a good time to start twitter again. ( I know this is not a usual way to use twitter. ) I decided to analyze twitter as a weekend programmer ().

 I don't know there are similar bots ( at least in Japan ). Although, by the time I found the bots, I had written most code, and I had complete development.

 An Idea was about a year or half year ago. And actual development was for the past three or four months ( taking many rests ).

 I had be helped many sites and softs, to creat this site. I want to say "Thank you !" to these sites, softs and the people who amuse or arouse sympathy many of us through your tweets.

  2015.05.24

----------------------------------------------------------
below is original text.
----------------------------------------------------------

【 サイト作成の動機 】

  最近、と言っても随分と前ですが、長年愛用しているYahoo!JAPANのトップページの下の方に「あなたは知ってる? Twitterをにぎわす話題」のコーナー、が時々現れるようになりました。

  私は大抵この全てに目を通していたのですが、何しろ6個程度しか紹介しれくれないので、すぐに見終わってしまい、物足りない気持ちでした。

  それまで、twitterの登録はしていたものの、結局使わないので、アカウントも削除した状態でしたが、折角なので、この際にtwitterの解析をやってみようと一念発起しました。休日プログラマー()の血が騒ぎます。

  全くtwitterをやっていなかったため、類似のbotがあることもそれまで知りませんでしたが、botを発見した時には既に大半のコードを書き終えていたため、「折角だから」と最後まで完成させるに至ります。

  大体構想が半年か一年くらい前で、実際にコードを書いていたのは、休み休みですが、ここ3~4ヶ月程度になります。

  このサイトの作成にあたって、多くのサイト及びソフトウェアの力を借りました。これらサイトさま及びソフトウェアさまに御礼申し上げるとともに、素晴らしいツイートで多くの人を楽しませているツイート主の皆様に、厚く御礼申し上げます。

  2015.04.08. Rating_Sprite



【 記事について 】

  このブログでは、TwitterAPI (Twitter社が提供している機能) を用いてサイトに埋め込むためのHTMLコードを生成し、サイトに埋め込んでいます。人力では、ツイッターの「・・・」より、「ツイートをサイトに埋め込む」をクリックした場合に生成されるコードと同一のコードを埋め込むことによって、機能を実現しています。

  これはツイッターが公式に提供している機能を利用しており、ツイッター利用者とツイッター社との契約内容を見ても、特に問題のある行為ではありません。もし疑問があるようでしたら、ご自身のツイッター社との契約内容を今一度ご確認ください。

  基本的に、リツイート時にツイート主の許可が不要なように、公式の埋め込みコードを利用したサイトへの掲載にも許可は不要なものであると判断しています。

  このブログでは、公式の埋め込みコード、を使用しているため、ツイート主が対象のツイートを削除すると、写真などは閲覧できなくなります。ただし、URLに文字コードを割り当てない、通常のツイート本文は埋め込み用コードに含まれているため、閲覧可能な状態が続きます。

もし、上記以外の理由で何か問題があり、記事の削除を要求する場合は
→ 「 記事の削除要請 」へコメントをお願いします。

あるいは、単に掲載されることにご不満をお持ちの場合でも、削除要請は随時受け付けています。

※削除には時間が掛かる場合があります。
※特段の理由が無い限り、削除要請はツイート主ご本人からの要請に限らせていただきます。また、場合によっては、ご本人であることの確認を取らせていただく場合があります。
※botへ直接要請された場合は、他の通知に紛れて気が付かない場合があります。



【 ロゴについて 】

  私自身がツイートしている訳では無いので、万年筆のロゴはどうなのかと迷いましたが、休日プログラマー()だからと言って、キーボードなのもしっくり来なかったので、デザインが簡単で作成し易く、そこそこ見栄えが良さそうな万年筆とすることにしました。
(※万年筆です。)



【 パクツイについて 】

  当 bot 及び ブログ では、常習的にパクツイを繰り返すユーザのツイートは表示しないように勤めています。しかしながら、完全にパクツイをフィルタできている訳ではありません。したがって、表示されるツイート元はパクツイである場合があります。



【 ミュートまたはブロック 】

  当botを利用してパクツイを行っていると推測されるアカウントについては、ブロックしております。逆に、当botの活動を快く思わない方もいらっしゃることと思います。その場合は、お手数ではありますが、当botのミュートまたはブロックをお願いいたします。



【 返信について 】

  稀に、リプライやメッセージを下さるユーザ様、ありがとうございます。漏れが無い限りにおいて、全てのコンタクトを確認しております。しかしながら、一見すると常識的なユーザ様から、一見すると個性的なユーザ様までいらっしゃいます。したがって、トラブルを避けるため、全てのコンタクトに対して、一律に返信いたしません。同様の理由から、一切のフォローはいたしません。
(要約 : 管理人はコミュ障のため、申し訳ございませんが、言葉のボールをキャッチするだけで、決して投げ返しません。)





【 ソースコードについて 】

  基本的にインターネット上の他人から与えられた恩恵は、インターネット上の他人へ返すべきである、との理念からソースコードを公開しています.リファクタリングしたのち公開する予定でしたが,いつまでもリファクタリングをしていなかったので,現状のまま公開に踏み切りました.

  https://github.com/~/Tweet-TOPIX



【 広告について 】

  私がそうであるように、ユーザの皆様におかれましてはもっと、
当ブログの解析用サーバ費を負担したくはないことと思います。
したがって、広告を掲載します。
(ついでにこのブログとMailを支えているGoogleに32%か49%くらい入るらしい?ので、
この塵の様な規模のサイトから、塵の様な金額ですが、運用に回されるはずです。)

以下長文

  このサイトを立ち上げた当時はまだ時間に余裕があったので、
何かプログラミングをしたいと考えていました。
せっかく何か作るのであれば、何でも良かったのですが、
何か実用的な物を作りたいと、常々思っていました。
つまり、この"何でも良い"は本当の意味で"何でも"ではありませんでした。

  始めの内は何か電子工作的な物を思案しておりましたが、
この場合、実用的な物に仕上がっても、それは"自分一人にとって"実用的な工作であり、
全く人の役に立たず、スケールしない、純粋に趣味の領域を出ない、
自分一人だけのための努力だと感じていました。
もちろん、回路図やマイコンのソースを公開すれば、
多少は人の役に立つかもしれませんが、私が求める物とは違うように感じました。

  真に社会の役に立つために、本当に必要となるものは、何か。
私は、経済的な継続性を持つ活動だと考えます。
今はまだ、補助金や経済支援無しに活動できない活動でも、
仮に経済的に自立できれば、それに越したことは無いと思います。

  この時いつも思うのは、検索エンジンの様な、
収益を上げられなければ単なる慈善事業でも、
経済的合理性を確立できれば、強力に推進できる。
これは即ち、社会的な(正確には経済的な)価値を認められ、
その上さらに社会に貢献できるということです。

  とはいえ、これはたかだか趣味のレベルのサイトですので、
目標としては、人件費を含めずに、収支0、
即ち、私がお小遣いからサーバ費を支払わずとも、
維持できることを目標に立ち上げました。

  もし儲けたい方は、このような寄生型のサイトではなく、
新規に自立したプロジェクトを立ち上げることをお勧めいたします。

以下余談。

  私としても、次の何かアイデアと時間があれば、
何か大きな使命を持ちたいと思います。
意味の無いことに時間を割きたくはありませんから。

  例えば、
Google:全ての情報を検索可能にする(大体こんな感じ)
Amazon:全ての商品をインターネットから即日購入可能にする(?)
TED:プレゼンで世界を変革する(推測)
のような使命です。

  人生"もし"を考えると、妄想が膨らんで楽しいです。
もし、Googleで働けるのなら、
真の意味で手書きのノートをGoogleDriveにアップロードしたら、
文字を識別して検索可能にする機能とか、開発してみたいですね。
現状だと私の汚い文字は認識できないようなので。
(私の環境において、Gmailが全てのメールを重要スレッドと判断するため、重要が重要の意味を為さない問題なども。)
あるいは、
他の会社でも構いませんが、
強引にでもIP電話(050)から警察や消防に連絡できるようにして、
通信費用の安いIP電話へ移行させたいですね。
(費用が安いとは、それだけの効率的に運用されていると私は考えます。
本音を言えば、私が使わない電話回線に毎月700円支払いたくないだけです。)

しかし、
そんな未来は当然やって来ないし降って来ないので、
全力で掴みに行くか、
しかし、
全力で掛かっても統計的に考えて確率は限りなく0なので、
せいぜい身の丈に合った次の目標を考えたいと思います。



【 謝辞 】

  以下、勝手ながら、お世話になったサイト及びソフトを紹介させていただきます。
▼順番はレイアウトと関連性を重視した配置であること以外に、特に意味はありません。
▼当 bot 及び ブログ とは一切関係ありませんので、くれぐれもご注意ください。
▼実装の選択肢が複数あった場合、どちらを採用するのか検討するために、多くのサイトを参考にさせていただきました。そのため、実際に実装の参考にしたページも、そうでないページもありますが、大変お世話になっているので、そのどちらであっても、掲載しています。
▼掲載基準として、兎も角、お気に入りに入っていたサイトを紹介しているため、お世話になったサイトでも、お気に入りから漏れている場合は、掲載されていません。

(敬称略)

Twitter
  APIの提供
  TwitterAPIのドキュメント

Google
  検索 (言うまでもない)
  Blogger (このブログの基盤)
  Gmail
  levelDB (使い易い) → 現在は諸事情でハッシュテーブルとテキストログへ移行

Microsoft
  Windows7
  VisualStudio2012(一部コードをVC++で作成してから、Linuxへ移植した。VC++のデバッグ機能は強力)
  ペイント(ロゴの作成)
  メモ帳(この何気なさが好きです。)
  電卓(Ctrl+C,Ctrl+Vが使えるのは便利。)

Linux系
  VirtualBox
  CentOS7
  manページ(日本語版)
  gedit(日本語を変換しようとすると、頻繁に落ちるの(´・ω・`))
  g++11
  OpenSSL

PictBear
  ロゴの作成

ソケット通信
  Linux manページのサンプルより。

OpenSSL
  SSL/TLS でアクセスしてみよう (1)
  OpenSSLで安全なネットワークプログラム
  OpenSSLライブラリを使ってプログラミング(1)
  1.SSLサイトへアクセスしてデータを取得するサンプル。(Win用)

ソケット通信、タイムアウト
  OpenSSLでタイムアウト付の最適なデータ読み込み処理 - Windows 2000 Blog
  プログラミング - 詳細表示 - udumbara的なメモ - Yahoo!ブログ
  仙石浩明の日記 SSL_pending
  POP3S 【OKWave】
  メールサーバーの違いによる受信方法の違いはあるのでしょうか? 【OKWave】

HTML
  HTTP入門
  図解で学ぶネットワークの基礎:HTTP編 - Lesson3:データを「GET」、「OK」で完了、人が読める文字情報をやりとり:ITpro

URL encode
  UrlEncode.net URLエンコード
  ASCII記号のURLエンコード対応表phpspot開発日誌
  c++でcgi ー URLエンコード ~ プログラムのメモ
  パーセントエンコーディング - Wikipedia

Base64encodeについて
  ahref (えーエイチレフ) WEBアプリケーション > BASE64変換
  Base64エンコード

HMAC-SHA1
  堕(惰)プログラマ開発記録
  Openssl HMAC SHA1を試す

Unicode値のUTF-8やUTF16への相互変換
  Unicodeエスケープシーケンス変換ツール
  UTF-16からUTF-8への文字コード変換
  サロゲートペア入門
  文字コードに関する覚え書きと実験
  wiki Unicode
  ASCII文字コード : IT用語辞典

ツイートをWebサイトやブログに埋め込む
  ツイートをWebサイトやブログに埋め込む  Twitterの使い方  ぼくらのハウツーノート
  ブログにツイートを埋め込み引用する方法

OAuth認証
  Syncer Twitter API
    特に、OAuth1.0の署名(Signature)を作成する方法
  [PHP] ライブラリに頼らないTwitterAPI入門
  休日奮闘記 C/C++でTwitterのXAuth認証を行うCommentsAdd Star
  hirokan55の日記 Twitter APIでカーソル (cursor) を使って全フォロワーを取得するPHPスクリプト
  日々量産 [プログラミング]OAuth認証
  山登りとプログラムとtoridge
  pine -program diary- 再帰とクラスとクロージャと(謎 C++ で Twitter OAuth 認証をしてみる
  trial and error Twitter API を OAuth で認証するスクリプトを 0 から書いてみた
  みむらの手記手帳 Twitter の OAuth 1.0 認証 – 解説。
  東京伊勢海老通信 TwitterのStreamingAPIを使ってみた(ruby & OAuth認証)

API
  【保存版】TwitterAPI1.1 REST API 全項目解説
  TwitterAPIのデータの中身をまとめてみた - 生涯未熟

Streaming_API
  【php】twitter Streaming API の statuses-filter を試す at softelメモ
  Baker Tech Note [Twitter Streaming API] Twitterの中心でappleを叫ぶ
  SplunkにTwitterのデータをぶちこむ(自分のタイムライン)。 - Qiita
  TwitterのStreamingAPIを使ってみた – 2(ruby twitter gem編) - 東京伊勢海老通信
  第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack

ツイートする
  OAuth への道 ―― C++で、OAuth認証(ただし、単純な Bot 限定) ここですという名前のブログやさん ←文字コードの件では助かりました。
  Twitter APIで、つぶやきを投稿する方法[statuses-update]

ツイートの取得
  【C#でTwitter】ユーザタイムラインを取得する(API v1.0)  Black Everyday Company
  Twitter APIのsince_idの仕様を勘違いしていた… - 風柳メモ
  TwitterAPI 1.1でリツイートランキングを作る  Tips Note
  twt-tnk  Twitter API  user_timeline
  user_timelineのsince_idの仕様に注意 - Cyber Passion ごった煮版

名前とIDの相互変換
  TwitterIDを調べる簡単なプログラムを作りました。 – tik weblog

データ形
  データ型の範囲
  基本的な決まり

std::map
  ViVi C++ 連想配列クラス std::map 入門
  ●Programing Place ●C++編(標準ライブラリ) 第10章 map
  午後Tブログ stl mapで独自の型(構造体など)をキーにする方法

std::unordered_map
  ViVi ハッシュ連想配列クラス unordered_map とは
  ez-net 連想配列 stdunordered_map を使用する - C++ プログラミング
  Hadoopを使わずにWikipediaのテキスト処理を400倍高速化
  ■[c++]mapとunordered_mapのアイテム全走査の比較とmapの存在意義について考える
  頻度計数における unordered_map の調整(C++)

std::stringでsprintf
  stringの中身を書式化する場合
  vsprintf、_vsprintf_l、vswprintf、_vswprintf_l、__vswprintf_l
  その12 printfな可変長引数で文字列を返す関数
  なぱらます. stdstringでsprintfみたいなやつ
  フォーマット文字列を展開するバッファの確保 - ryouke's sub page

std::string
  C++ 文字列クラス stdstring 入門

std::vector
  C++ 動的配列クラス stdvector 入門

std::list
  C++ 双方向リストクラス stdlist 入門

ソート
  いろいろなソートアルゴリズム
  Wiki ソート
  50以下挿入ソート、5万以下マージソート、あとはクイックソート TECHSCORE BLOG
  C の qsort と STL の sort の速度比較 - bkブログ
  C++ - 配列をオリジナルデータは変更せずにソートしたい - Qiita
  C++で構造体をソートする4つの方法(おまけあり) - minus9d's diary
  STL のソート(stdsort関数)
  アルゴリズムに関する質問です。 1~300までの数字がランダ… - 人力検索はてな
  クイックソートの処理時間のnlog2nはどのような手順で計算するのでしょ... - Yahoo!知恵袋
  ロベールのC++教室 - 第28章 たのしいソート5 -

デバック技術
  バイナリファイルの16進表示

時間の取得
  UNIXTIME相互変換ツール - konisimple
  C言語プログラミング入門 - ライブラリ関数 - 日付および時間ライブラリ(2-3)-
  LinuxC  時間・時刻処理について(4)
  時間の計測を行う - 日進月歩
  Man page of STRFTIME
  誰もが一度は陥る日付処理。各種プログラミング言語におけるDateTime型-TimeStamp型の変換方法のまとめ - Web就活日記 ←このページは目から鱗だった。

Gmail
  Google Gmail APIでメールを取得する - Qiita
  googleapi - Google API OAuth2.0のアクセストークン&リフレッシュトークン取得手順メモ - Qiita
  Check for SMTP TLS from command line with OpenSSL  scottlinux.com  Linux Blog
  Gmailにopensslで接続してhtmlメールを送る - Qiita
  Gmailにつなぐための実証コード - 最終的に作ったコード:毎回サブタイトル考えるの面倒いなぁ:So-net blog
  HTMLメールの作成方法  コリス
  HTMLメールの送信法法:その2  コリス
  socketでgoogle経由メール送信ができない 【OKWave】
  TCP-IPアレルギー撲滅ドリル(3):SMTPでメール送信の舞台裏をあやつる - @IT
  Tech TIPS:メーラーからGmailへの接続時に認証(パスワード)のエラーが生じる場合の対処方法 - @IT
  Use email clients with IMAP or POP - Gmail Help
  送信ドメイン認証  3流プログラマのメモ書き
  謎のC言語ブログ libcurl によるGMAIL送信

  [FYI] PHP でメールを送ると subject が文字化けする  Eriane ver 0.8.3
  FAQ for rt100i-users(users mailing-list) 'MailBody'
  mail - コマンドラインでMIMEヘッダーをエンコード&デコードする方法 - Qiita
  MIMEエンコード-デコード確認ツール WWWフロンティア~IT-TOP.BIZ
  MIMEでエンコードされたMailのSubjectのデコード、エンコード - C・C++  教えて!goo
  utf-8でメールを送信すると件名が文字化け - CGI  教えて!goo
  シフトJIS⇒MIMEエンコード(RFC2047) - C・C++  教えて!goo
  メールのSubjectヘッダのエンコード - うまいぼうblog

levelDB
  google-leveldb · GitHub
  和訳
      leveldbのドキュメントを訳してみた - 冥冥乃志
      LevelDBの設計ドキュメント和訳 - Qiita

  LevelDBをつかってみた - katashiyo515's diary

  importするだけで使えるgolang製kvsのgoleveldb - Qiita
  LevelDBの(低レベル)I-O処理構造 - めもめも

スレッドの作成
  スレッドと排他処理とデッドロック
スレッドのタイムアウト
  Man page of PTHREAD_TRYJOIN_NP
スレッドの引数
  pthread スレッドに値を渡す方法 - C言語入門
スレッドの戻り値
  pthread_join() の第2引数の値を参照するサンプル - tomohikosevenの日記
スレッドの速度に関する考察
  マルチスレッドでの開発
  ホイール欲しい ハンドル欲しい » スレッド同期命令の比較 C++11 とコンパイラ
  最近のCPUの同期性能を調べてみた - maropuのメモ墓場
  短時間でできる汎用の同期オブジェクト
  Emerge Technology スレッドとプロセスのできるまでの時間を比べる
スレッド・メモリーリークへの注意
  pthread_createで作ったスレッドはdetachしない限りはjoinしないとスタックなどのリソースが 解放されない。
スレッド・その他
  TECOの技術研究室 Win32APIでのミューテックス、クリティカルセクション、セマフォの違い
  スレッドプログラミング (pthread)  Netsphere Laboratories
  デッドロックのサンプルクエリ at SE の雑記
  スレッドの操作の概要

void型ポインタ
  void型ポインタ 【OKWave】
  void型のポインタとint型を相互変換するなという話  おおたの物置

C++クラスの文法
  C++ class
  一週間で身につくC++言語の基本第4日目:コンストラクタとデストラクタ

言語コード
  言語コードと国コード

デバッグについて
  gcoreコマンドで実行中のプロセスのコアイメージを取得する方法
  恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!!

  Cのエラーメッセージ出力に関数名や行番号を付加する

  「ps aux」コマンドで表示される項目の意味を知りたい

  valgrindコマンドの使い方

ハッシュテーブル
  あなたの知らないハッシュテーブルの世界
  あなたの知らないハッシュテーブルの世界 - #DSIRNLP 3.5

  http://people.csail.mit.edu/shanir/publications/disc2008_submission_98.pdf
  http://mcg.cs.tau.ac.il/papers/disc2008-hopscotch.pdf

  std::unordered_map のキーに独自の型を使用する

  ハッシュテーブル
  動的配列への追加コストはなぜ O(1)?
  プログラミング :: 高速なプログラムを書く為に :: メモリ
  ハッシュ関数ベンチマーク
  C/C++ で使える Hashtable
  12 3 Linear Probing 1437

  [プログラミング] C言語で64bit整数定数を扱う場合の注意

  [C++]構造体のコンストラクタとデストラクタと継承と初期化式
  コンストラクタとデストラクタ

  サイズによるmalloc(3)の負荷の違い


行数が気になった時
  プログラムのステップ数をカウントする方法


その他プログラミングの解説サイトなど多数。

このサイトを立ち上げることができたのは、ひとえに多くのソフトウェア技術者の方々が日々惜しみなく知識をインターネット上で公開して下さっているおかげです。ありがとうございます。大変お世話になりました。m(_ _)m



【 障害情報 】

▼2016年03月27日~03月30日

[2016年3月27日 23時45分]
のツイートを最後にTwitterよりSMS認証を要求されておりましたが、携帯電話の契約変更に伴いSMSを受信できませんでした。

[2016年3月30日 03時15分]
の投稿を最後にGmailの仕様厳格化により、ブログの更新ができない状況となっておりました。
(具体的には、
SendMsg  = "EHLO\r\n";

SendMsg  = "EHLO localhost\r\n";
に変更することでメールの送信に成功。)

[2016年3月30日 21時15分]
の投稿より、上記の問題を解決いたしました。

大変ご不便をお掛けいたしました。
引き続き、注目を集めるツイート元の探査に、ぜひTweet-TOPIXをご活用ください。

▼2016年04月03日18時00分~04月04日(火)9時00分
http://tweet-topix.blogspot.jp/2016/04/blog-post.html

実験中に、ルータに保存されていたPPPoE接続用のidとパスワードを、誤って削除してしまいたしました。そのため、現在インターネット回線が使用できません。たびたびご不便をお掛けしてしまい申し訳ありませんが、接続idとパスワードを紛失したため、再発行に一週間程度掛かります。その間の更新は停止します。モバイル回線による復旧も考えましたが、必要となるデータ量が桁違いに不足しているため、断念いたしました。m(_ _)m

->04月04日(火)09時00分
再発行が指定された期間よりも早く済んだため、再開します。

▼2016年05月07日01時30分~12時00分
メンテナンスのため更新が断続的でした.

▼2016年07月02日
引用を含むツイートに対して、引用ツイート先の評価と引用元の評価を混同するバグが発生しております。今までなかったケースですので、twitter社がJSONの形式を変更した可能性を考えております。しかしながら、現在時間が足りないので、バグの修正には数日から数週間程度掛かる見通しです。(引用を除去するため、一時的にhttpテキストに含むツイートを全て除去しております。これにより、リンクを含むツイートは表示されません。)


->07月09日(土)04時45分の投稿より、問題を解決しいたしました。
長期間に渡り、大変ご不便をお掛けいたしました。
引き続き、注目を集めるツイート元の探査に、ぜひTweet-TOPIXをご活用ください。

(具体的には、諸事情により突貫工事のままとなっていたJSONのパースを、
RapidJSON https://github.com/miloyip/rapidjson を用いてリファクタリングしました。

[参考資料]
http://qiita.com/k2ymg/items/eef3b15eaa27a89353ab
http://befool.co.jp/blog/chainzhang/cocos2dx-rapid-json/
大変お世話になります。)


▼2016年07月16日03時45分~04時14分の間から、12時15分まで停止。
RapidJSONのエラーが原因。

EXEfile: ./My_function/../rapidjson/document.h:1648: uint64_t rapidjson::GenericValue<Encoding, Allocator>::GetUint64() const [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; uint64_t = long unsigned int]: Assertion `data_.f.flags & kUint64Flag' failed.

いくら高速でも、エラー処理を上手く行えなければ、使い物にならないため、修正可能か検討中。
(エラー処理の方法が分からない。できるのかも分からない。)

▼2016年08月10日
RapidJSONのエラーが原因。

修正する時間が無いので、暫らく停止する予感。

素晴らしいサービスを発見したのでメモ
(他のパーサはパース結果をインデントを保持したままメモ帳にコピーできなかった。)
ctrlshift.net JSON整形サービス
……と思ったのだが、「Error: Extra data: line 1 column 8058 - line 1 column 8059 (char 8057 - 8058)」で長いJSONは解析してくれない(;ω;)
->できたりできなかったり。

P.S.
恐らく下記のツイートが原因で停止している。
->想定していない形のJSONだった。(今まで問題無かったので、新種?)
->兎も角、エラーチェックなど追加。

{"created_at":"Wed Aug 10 02:29:29 +0000 2016","id":763200568072568832,"id_str":"763200568072568832","text":"\u0627\u0644\u0644\u0647\u0645 \u0625\u0646\u064a \u0623\u0639\u0648\u0630 \u0628\u0643 \u0645\u0646 \u0627\u0644\u0647\u0645 \u0648\u0627\u0644\u062d\u0632\u0646\u060c \u0648\u0623\u0639\u0648\u0630 \u0628\u0643 \u0645\u0646 \u0627\u0644\u0639\u062c\u0632 \u0648\u0627\u0644\u0643\u0633\u0644\u060c \u0648\u0623\u0639\u0648\u0630 \u0628\u0643 \u0645\u0646 \u0627\u0644\u062c\u0628\u0646 \u0648\u0627\u0644\u0628\u062e\u0644\u060c \u0648\u0623\u0639\u0648\u0630 \u0628\u0643 \u0645\u0646 \u063a\u0644\u0628\u0629 \u0627\u0644\u062f\u0651\u064a\u0646 \u0648\u0642\u0647\u0631 \u0627\u0644\u0631\u062c\u0627\u0644. (\u0631\u0648\u0627\u0647 \u0623\u0628\u0648\u062f\u0627\u0648\u062f)","source":"\u003ca href=\"http:\/ \/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a \u003e","truncated":false,"in_reply_to_status_id":null,"in_reply_to_status_id_str":null,"in_reply_to_user_id":null,"in_reply_to_user_id_str":null,"in_re ply_to_screen_name":null,"user": {"id":1102623343,"id_str":"1102623343","name":"azooz","screen_name":"azooz91578712","location":null,"url":null,"description":"The smile is a famous word without letters","protected":false,"verified":false,"followers_count":3941,"friends_count":4188,"listed_count":0,"favourites_count":705,"statuses_count":20356," created_at":"Sat Jan 19 02:52:29 +0000 2013","utc_offset":null,"time_zone":null,"geo_enabled":false,"lang":"ar","contributors_enabled":false,"is_translator":false,"profile_background_color":" C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/ \/abs.twimg.com\/images\/themes \/theme1\/bg.png","profile_background_tile":false,"profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DD EEF6","profile_text_color":"333333","profile_use_background_image":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images \/547564161505308672\/wSGTnoHS_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images \/547564161505308672\/wSGTnoHS_normal.png","default_profile":true,"default_profile_image":false,"following":null,"follow_request_sent":null,"notificatio ns":null},"geo":null,"coordinates":null,"place":null,"contributors":null,"is_quote_status":false,"retweet_count":0,"favorite_count":0,"entities": {"hashtags":[],"urls":[],"user_mentions":[],"symbols":[]},"favorited":false,"retweeted":false,"filter_level":"low","timestamp_ms":"1470796169666"} 

EXEfile: ./My_function/../rapidjson/document.h:1053: rapidjson::GenericValue& rapidjson::GenericValue::operator[](const rapidjson::GenericValue&) [with SourceAllocator = rapidjson::MemoryPoolAllocator<>; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>]: Assertion `false' failed.


▼2016年08月20日(メモ)

まだ、良く分かっていないのだが、
RapidJSONについても、読み込む型が違ったりするとassertに引っかかるので、実際に使う場合は、マクロでRAPIDJSON_ASSERTをオーバーライドし、例外を投げるなどの自前のコードを仕込んでおくのを推奨します。
と説明されているように、オーバーライドした方が良い。(サービスが停止するので。)
場所は上記リンクでもリンクされている通り、
の下記である。

「include/rapidjson/rapidjson.h」
///////////////////////////////////////////////////////////////////////////////
// RAPIDJSON_ASSERT

//! Assertion.
/*! \ingroup RAPIDJSON_CONFIG
    By default, rapidjson uses C \c assert() for internal assertions.
    User can override it by defining RAPIDJSON_ASSERT(x) macro.
    \note Parsing errors are handled and can be customized by the
          \ref RAPIDJSON_ERRORS APIs.
*/
#ifndef RAPIDJSON_ASSERT
#include <cassert>
#define RAPIDJSON_ASSERT(x) assert(x)
#endif // RAPIDJSON_ASSERT

///////////////////////////////////////////////////////////////////////////////

しかし、処理の流れが
(returnしたら何処に飛ぶのかが)分からない。
(自分のコードにエラーを伝えたいだけなのだが……。)

実際にエラーを穿いているのは以下の行
「document.h」

    template <typename SourceAllocator>
    GenericValue& operator[](const GenericValue<Encoding, SourceAllocator>& name) {
        MemberIterator member = FindMember(name);
        if (member != MemberEnd())
            return member->value;
        else {
            RAPIDJSON_ASSERT(false);    // see above note<-この行がエラーを吐いていらっしゃる。

            // This will generate -Wexit-time-destructors in clang
            // static GenericValue NullValue;
            // return NullValue;

            // Use static buffer and placement-new to prevent destruction
            static char buffer[sizeof(GenericValue)];
            return *new (buffer) GenericValue();
        }
    }


しかし、よく見ると、単に、

if (member != MemberEnd())

としてあるだけなので、エラーの場合は、
RAPIDJSON_ASSERT()、つまり、#define RAPIDJSON_ASSERT(x) assert(x)
なので、assert()を無効にすれば、(falseは「0」、trueは「0以外」だから、<-毎回忘れる。)
NULL(false)が帰っていることになる。

で、(運用中にデバッグ用の)、assert()を無効にするには、
assertを使って問題を早期発見しよう
曰く、

プログラム中で「NDEBUG」が#defineによって定義されていると、すべてのassertは空の文字列に置き換わります。結果として、assertをすべて取り除くのと同じことになります。
すべてのプログラムに「#define NDEBUG」を書くのも大変ですので、通常はコンパイラのオプションで指定します。ccやgccは「-DNDEBUG」というオプションを付けることによってそれぞれのファイルの先頭に「#define NDEBUG」を書いたのと同じ効果になります。一般的には、これをMakefileに追加することでassertを削除します。

です。ふむふむ。
したがって、下記のように追加。

「include/rapidjson/rapidjson.h」
///////////////////////////////////////////////////////////////////////////////
// RAPIDJSON_ASSERT

//! Assertion.
/*! \ingroup RAPIDJSON_CONFIG
    By default, rapidjson uses C \c assert() for internal assertions.
    User can override it by defining RAPIDJSON_ASSERT(x) macro.
    \note Parsing errors are handled and can be customized by the
          \ref RAPIDJSON_ERRORS APIs.
*/
#define RAPIDJSON_ASSERT
#ifndef RAPIDJSON_ASSERT
#include <cassert>
#define RAPIDJSON_ASSERT(x) assert(x)
#endif // RAPIDJSON_ASSERT

///////////////////////////////////////////////////////////////////////////////

問題は、値に[0]を返されても、文字列は、兎も角、
受け取る値がそもそも[__int64]とかの場合は、falseの[0]だと判定できないこと。
ただし、今回に限っては、クリティカルな処理でないので、問題にはならない。
(RapidJSONに問題が無いとは言っていない。)

▼2016年09月20日19時45分から、2016年09月29日17時45分まで停止。
tweetのHTMLコード取得中にフリーズ。

2016年09月29日17時45分ごろリブートし復旧いたしました。
大変ご迷惑をおかけいたしました。


▼2016年10月21日08時15分の投稿から、2016年10月22日13時15分の投稿まで停止。
急にタイムアウトが発生し,接続できなくなる.

リブートしたところ,
「HTTP/1.1 420 Enhance Your Calm」のメッセージにより接続できず.

24 時間後に再接続したところ,
始め「HTTP/1.1 420 Enhance Your Calm」は表示されなかったが,接続できず.
(数回試行後,再び「HTTP/1.1 420 Enhance Your Calm」が表示されるようになる)

Tweet-TOPIX (bot) のパスワードと OAuth 認証用の Consumer Key (API Key), Consumer Secret (API Secret), Access Token, Access Token Secret を 「Create New App」より,アプリケーションごと作り直し,設定を変更たところ,正常に接続できるようになる.

考えられる原因:
・単純に規制を受けた
  -> 他の類似 bot が規制を受けていないことが引っかかる.
・Twitter Application Manager に設定していた URL が古い URL で消失していたため,
  Twitter 社が規制をかけた.<- br=""> ・8 月 22 日に覚えのない未読のパスワード変更リクエストのメールが届いている.
  -> 単に自分で忘れている.
     また,本当にリクエストがあったとしても,
     メールアドレスにアクセスできていなければ,変更できないはず.
     また,実際にログインされていた場合,(消されていなければ)
     新規ログインを警告するメールが届いているはず.
・「10月21日以降、米国で断続的にインターネットへのアクセスができなくなる問題が発生しています。これは大規模なDDoS攻撃が米国でDNSサービスを提供するDynに対して仕掛けられているため。Dynが運営するサービス「Managed DNS」が標的とされ、関連するDNSサービスのレスポンスが極端に低下したため、TwitterやNetflix、Reddit、Spotify、Box、Pinterest、PayPal、PSN(PlayStation Network)といった著名インターネットサービスも軒並みアクセスができなくなる状態が断続的に発生しています。

Dynの報告によれば、21日の午前11時すぎにManeged DNSサービスの米国東海岸区域に対してDDoS攻撃が始まり、午後4時前には第2波がManaged DNSサービス全体に対して押し寄せました。」(http://japanese.engadget.com/2016/10/22/dns-ddos-twitter-spotify-psn/より)
時差などを確認していないので,不明だが,これの影響を受けていた可能性もある.(ただし,類似サービスで停止していないサービスがあったため,違う可能性も高い)

▼2016年11月03日21時15分の投稿から、2016年11月04日00時45分の投稿まで停止。
==========================================================
このページを最後まで読まれた方へ

あなたは非常にまれな方でありますので、お礼申し上げます。

m ( __ __ ) m
============================================================

0 件のコメント:

コメントを投稿