管理人の趣味メインのメモto日記
AIONブログ RSS [情報サイト表示]
[注意] LinkやRSSについて

シエルサーバ RSS [情報サイト非表示]

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ -------- (--) --:-- ]  
   Category:スポンサー広告

・ω・)ノ
 
処理の競合か・・・・ (-ω-
 
 
 
 
<本日のトピックス>
[雑 記] RSSの一部不具合
 
 
[雑 記] RSSの一部不具合
RSSの自動更新の仕様として、
 
 1.RSSにアクセスがある
 2.前回のアクセスより2分経過しているかチェック
 3.2分以上経過していた場合、サイト1件分の更新チェック
  ※1件はチェックごとに別のサイトになる
 
を、繰り返しています。
で、この最終更新時間を外部のテキストファイルに記録しているのですが、
どうもこのファイル、壊れやすいようです。
正確には壊れているわけではないのですが、テキストを触る際の処理に
排他がかかっていないため、本来は「YYYYMMDDhhmm」と記録されているはずが
同時に処理が走り「YYYYMMDDhhmmYYYYMMDDhhmm」と、2倍の長さになる事が
しばしばあり、これが原因で自動更新が動かなくなっているようです。
 
対処法は、素直に排他処理をかけるか、テキスト内の文字数が12文字以上の場合
ファイルが壊れたと判断し、作り直す処理をいれるかですね。
 
両方、入れておくのが止まらない最善の修正かな・・・・。
 







スポンサーサイト
[ 2013-09-27 (Fri) 17:00 ]   Comment(0)
   Category:雑記:IT関連

・ω・)ノ
 
RSSの向上を図る。
 
 
 
 
<本日のトピックス>
[雑 記] RSSリーダー四苦八苦
 
 
[雑 記] RSSリーダー四苦八苦
WEBアプリケーション開発者なら一度は経験したことがあると思う、文字化け。
一言で言うと、WEBサイトとDBの文字コードの差異が原因なのですが・・・・
RSS作成で非常に悩まされました。
 
 
個人的な環境を言うと、ServerはEUC、DB(初期)はSJIS、提供されてる他サイトの
RSSはUTF-8と、見事ぜんぶバラバラ。これを統一するために3日ぐらい悩みました。
とりあえず、一番簡単な方法と思ったのが、全部UTF-8にすればよいのでは?
 
と思い、ソレに向けて調べることに。
 
サイト(出力されるRSSの結果)は、HTMLのメタタグでキャラセットすればOKのはず。
 
・ω・)っ「charset=utf-8」
 
DBの方は・・・・MySQLなので「mysql_set_charset」で、'utf8'("-"はつけない)を
指定すればよいとなっているのですが・・・・機種依存文字がばけばけ。
レンタルサーバなので、簡単にDB側の設定を変更できないのですが、いろいろ調べると
DBのスキーマのカラム単位で文字コードを指定していると言う事を知り、特定のカラムを
utf8に変更。
 
これで、やっとうまい事登録されました。
 
ので、今後文字化けは順に解決されていくはずです。
 
 
 
 
・・・・・が、もう1つの問題が。
それは、PHP(RSS側の作成に利用している言語)の問題で、文字列の桁数取得がどうも
上手くいっておらず、2byte以上の文字で端数が残る斬り方をすると最後に「?」が
ついてしまう・・・・。
2byte文字の1byteだけを切ってるわけだから、この事象は当然です。
つまり、全角、半角関係なく1文字は1文字で文字数を調べたり、切ったりする方法が必要。
こちらは、strlen ⇒ mb_strlen 変更すればよいらしいとグーグル先生に教えてもらい、
修正中です・・・・。
 
なんというか、文字コードとか考えないと上手くいかないってのが面倒だ・・・・。
やっぱりWEB系のプログラムは色々と腹が立つ・・・・自分にはあわない気がしてきました。
 
 


[ 2013-08-08 (Thu) 12:00 ]   Comment(0)
   Category:雑記:IT関連

・ω・)ノ
 
通信のお話・・・・ (・ω・
 
 
<本日のトピックス>
[雑 記] TCPとUDP
 
 
[雑 記] TCPとUDP
自分の理解度を確認するための、ITメモです。
 
コンピュータの通信には大きく2種類の通信手段があります。
TCPとUDPと言われる2種類です。この2種類の特徴は以下の通りで・・・・
 
 ■ TCP
  通信する相手との間にSession確立後通信を始める
  信頼性が高いが、送達確認などの手順が内部的に存在するため遅い
  1回の受信で複数パケット受信する可能性あり
 
 ■ UDP
  通信する相手が、存在しようが、しまいがお構いなし
  早いが、パケロスが発生しても知らんぷり
  受信できている前提だと、1受信1パケット
 
 
どちらも、本来の通信速度は同じなのですが、TCPの場合プログラムが
通信情報を取得できる状態になる前に、投げ側の通信機器に「受け取ったじぇい」と
返事をする分どうしても遅くなるし、例えば受け取ったパケットが壊れていた場合など
再送依頼をするのでどうしてもUDPに比べると遅くなります。
 
逆にUDPの場合、どこかでパケロスが発生しても受け側はそれを知るすべがありません。
そのため、再度送ってよと言う仕組みはプログラム自身が自前で作成する必要があります。
例えば、送信するデータごとにシーケンス番号の項目を設けて、どこまで受け取ったか
管理するとか・・・・。また、必ずしも相手が投げた順で受け取るとも限らなかったりします。
 
 
ちなみに、TCPはホームページの閲覧やメールの送受信などに利用されています。
どちらも、信頼性が必要ですよね。例えば、メールで途中の情報が欠けていた場合、
全体的に文字化けして何が書いてあるかわからなくなりってしまいます。
また、MMOも基本的にTCPが多いです。TCPでないと、アイテムを使用したのに、パケロスで
アイテムが減ってないなんてことが発生します(TCP、UDP両方利用することもありますが)。
 
逆にUDPは、ストリーミングに利用されていることが多いです。
1フレーム分のどこかの情報が壊れていても、次のフレームに行くと修正されているので、
問題なく映像や音楽を認識できます。また、TCPの様な時間のかかる手法を取ると、遅延が
頻繁に発生して、止まりまくり・・・・なのかもしれません。
 
ネットゲームだと、格闘ゲームなどがUDPを利用することが多いです。
ロビー機能などはTCPだと思いますが・・・・。
 
 
 
根本的なところでいうと、TCPもUDPもネットワーク機器どうしの信号じたいは
変わらないのですが、OSレベルでのお作法が異なり前述したとおり、信頼性を高める努力を
自前でする必要があるのがUDP、勝手にやってくれるのがTCPと言った感じのような気がします。
 
 


[ 2013-04-15 (Mon) 12:00 ]   Comment(0)
   Category:雑記:IT関連

・ω・)ノ
 
であるちやねる・・・・? (・ω・
 
 
<本日のトピックス>
[雑 記] 公式掲示板のネタ話
 
 
[雑 記] 公式掲示板のネタ話
ハードがらみはソコまで詳しくないのですが、仮にも業界人なのでちょっとりツッコミ。
 
[元ネタ:公式掲示板]
 http://www.ncsoft.jp/#!/aion/community/opinionBoard/view?bbsNo=2706&articleNo=1728
 
 
メモリのデュアル チャネルについてですが・・・・。
スレ主さんのスペックを元に考えると、1GB x 2枚、4GB x 2枚の合計10GBとなっています。
で、この組み合わせだとデュアル チャネルで動いてないとか、動いているとか意見が
分かれてますが・・・・例えば、
 
 DDR400(PC3200) 1GB x 2枚
 DDR400(PC3200) 4GB x 2枚
 
と言う、組み合わせだったり
 
 DDR200(PC1600) 1GB x 2枚
 DDR400(PC3200) 4GB x 2枚
 
と、言う組み合わせだった場合は問題なくデュアル チャネルとして動いてます。
また、以下の様な組み合わせの場合・・・・
 
 DDR400(PC3200) 1GB x 1枚
 DDR400(PC3200) 4GB x 2枚
 
4GB x 2枚の所だけデュアル チャネルとして動いて残り1GB x 1枚の所は
シングル チャネルとして動いていることになります。基本的にメモリ スロットの
挿し口さえ間違えなければ、対になるメモリ単位のDIMM設定と、メモリの容量が
同じならデュアル チャネルとして動作しています。
 
そのため、メモリを買いに行くと最近はだいたい2枚セットで売られていると思います。
 
 
 
で、"フレックスモード(Intelのフレックス・メモリ・テクノロジ)"とは
 
 DDR400(PC3200) 1GB x 2枚
 DDR400(PC3200) 2GB x 1枚
 DDR400(PC3200) 4GB x 1枚
 
上記の様な組み合わせの場合、1GB x 2枚は対になっているのでデュアル チャネルで
動作しますが、残りの部分が対になっていないため昔はシングル チャネルとなるのですが、
Intelが開発した、フレックスモード機能を搭載しているマザーボード(チップセット)を
利用すると、DDR400(PC3200) 2GB x 1枚と、DDR400(PC3200) 4GB x 1枚の2GB分までを
デュアル チャネルとして動作させ、DDR400(PC3200) 4GB x 1枚の残り2GBが
シングル チャネルとして動作します。
 
で、スレ主さんのデュアルチャネルとしての動作はメモリ スロットの挿し間違いさえ
していなければデュアル チャネルとして動作しています。つまり、デュアル チャネルで
動作させる場合において、メモリすべての容量をそろえる必要はありません。
 
 
 
が・・・・、しかし・・・・最近はトリプル チャネルやクアッド チャネルと言う技術が盛り
込まれており、トリプル チャネルは3枚1組、クアッド チャネルは4枚1組で考えます。
これを考えると、3枚とか4枚の容量は揃えておいた方が無難です・・・・ (-ω-
(最近といっても、だいぶ前からですけどね・・・・)
 
 
なお、デュアル ~ クアッド チャネルまで実装しているマザーボード(チップセット)の場合
 
 DDR400(PC3200) 4GB x 2枚
 
の8GBより、
 
 DDR400(PC3200) 2GB x 4枚
 
の方が、メモリに関しては性能が発揮されたりします。
ただ・・・・AIONに何らかの影響を与えるかと言うと、ほとんど影響ないと思います。
 
 
 


[ 2013-04-02 (Tue) 12:00 ]   Comment(0)
   Category:雑記:IT関連


・ω・)ノ
 
どこでもいっしょ・・・・ (-ω-
 
 
<本日のトピックス>
[雑 記] 改行コードあかさたな
 
 
[雑 記] 改行コードあかさたな
文字コード、改行コード、エンディアン・・・・、一般の家電製品と同じように
現状、この辺はOS(一部CPUのアーキ)ごとに独自の企画を採用しており、
共通性がありません。
 
基本的に1つのOS上でアプリケーションを作成する場合、こ差異による問題は
まったく影響しないのですが、例えばC/Sなどのシステムの場合、S(サーバ)側に
Unixだったり、Linuxだったりを採用し、C(クライアント)側にWindowsを
採用する事が多く、こうした場合気を付ける必要があります。
 
で・・・・、今回は簡単な改行コードのお話・・・・。
 
 
改行コードは、現在利用されることが多いOSでは3種類存在します。
 
 Windows : CR + LF
 UNIX、Linux : LF
 Mac : CR
 
となっています。
各々の名称、ASCIIコードは以下のようになっています。
 
 CR(Carriage Return) : 0x0D
 LF(Line Feed、newline など) : 0x0A
 
で、これの何が困るの(落とし穴なの)?と言うお話は、まず簡単な話で
言いますと、例えば以下のような文章を作成するとします。
 
 テスト、文章。
 2行目です。
 
上記のような2行からなる文章を作成した場合、バイナリで考えると目には見えない
改行コードが1行目と2行目の間には存在します。Windowsで作成した場合
 
 テスト、文章。(0x0D 0x0A)
 2行目です。
 
なのに対して、UNIX、Linuxの場合
 
 テスト、文章。(0x0A)
 2行目です。
 
となるのです。当然、Windowsの方が容量的に1byte多かったりもします。
ここまでは前置きで・・・・、プログラミングで文字を扱う再の改行として・・・・
無意識のうちに、"\n"、"/n"と言う制御コードを使う事が多いと思います。
自分もそうしてました(CでもJavaでも)。
 
基本的に、これで改行されるのですが、この文字列をファイル出力する場合
問題が発生することがあります。そもそも"\n"は、Newlineの意でASCIIコード的には、
0x0Aを提供してくれます。つまり、Windows上で出力した場合、改行コードとして
認識してくれない可能性があるのです(テキスト エディタ等の改行コードを
変換してくれるアプリケーションは別)。
 
Windows上で正確に改行コードと認識させるためには"\r\n"とする必要があるわけです。
ちなみに、ASCIIコード的に\rは0x0D。
 
OSごとに、改行コードが異なる可能性があるとか、Windowsの改行コードは2byteとか
理解していても、結構、見落としがちな改行コードの問題でした。
 
 
 
自分も、つい先日・・・・副職の方ではまってました (-ω-;
 
 


[ 2013-03-19 (Tue) 12:00 ]   Comment(0)
   Category:雑記:IT関連
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。