このページはEtoJ逐語翻訳フィルタによって翻訳生成されました。

翻訳前ページへ


落ちる-through 宙返り飛行, a useful program structure -lt2SptFallThru.htm HOME  →  Lazarus Tutorials TOC     Other 構成要素 for programmers

The "落ちる-through 宙返り飛行": A useful structure

This page has good (警察などへの)密告,告訴(状), and a search button at the 底(に届く) of the page
Please don't 解任する it because it isn't 十分な of graphics, scripts, cookies, etc!

This page is "browser friendly". Make your browser window as wide as you want it. The text will flow nicely for you. It is easier to read in a 狭くする window. With most browsers, 圧力(をかける)ing 加える, minus or 無 while the 支配(する)/統制する 重要な (ctrl) is held 負かす/撃墜する will change the texts size. (大きくする, 減ずる, 回復する to default, それぞれ.) (This is more fully explained, and there's another tip, at my 力/強力にする Browsing page.)


I have one program which has been "growing" for more than 25 years. In 25 years, I've learned a thing or two, and someday I am going to re-令状 that program from scratch, and I'm going to use a "落ちる through" 宙返り飛行 (my 指名する) at the heart of it.

This essay explains what I mean by a "落ちる through" 宙返り飛行, and an explanation of how you might 器具/実施する one in Delphi or Lazarus. There is nothing to stop you from using the same idea in other languages though.



"Preface to the second 版"

許す my little whimsy, "2nd 版"? I 港/避難所't changed what follows, but, November 2018, I am "republishing it" under the に引き続いて "new idea".

I first wrote this tutorial in 2013. Looking at it again today, November 2018, I see in it germs of an approach to programming that I have been using more and more recently... because it helps me to do things.

I think what I am doing is looking at programming as creating "明言する/公表する machines". I think "doing 明言する/公表する diagrams" is part of that.

But I've had no formal training in that approach, so my 見解/翻訳/版 may be 欠陥d, or I may be misusing those 条件. Whatever you call it, though, I hope that some of what's "different" from some of my other programming comes across in what follows. See the main 索引 to these tutorials for some other "明言する/公表する machine"/ "明言する/公表する diagram" 構成要素.



The problem I 手配中の,お尋ね者 to solve

I'm going to 述べる the problem I had which could be solved with a 落ちる-through 宙返り飛行. Don't get distracted by the 詳細(に述べる)s of what I 手配中の,お尋ね者... many, many problems are 類似の. Use just a little imagination, and I 推定する/予想する that you will discover that a 落ちる-through 宙返り飛行 would be useful to you, too.

I have さまざまな electronic 装置s for taking 測定s of my 地元の 天候. 気温 sensors (indoor, outdoor, water leaving central heating furnace, etc), 気圧の 圧力, 勝利,勝つd 速度(を上げる), 湿度, etc, etc.

The heart of my program for 監視するing those 装置s could have, in pseudo-code form, consisted of....

InitializeEverything;

Repeat
  ReadAndDealWithIndoorTture;
  ReadAndDealWithOutdoorTture;
  ReadAndDealWithFurnaceTture;
  ReadAndDealWithBarometer;
  ReadAndDealWithAnemometer;
  ReadAndDealWithHumiditySensor;
Until 誤った;

Each line above (apart from the "Repeat" and "Until 誤った" is just a call to a subroutine I would have to 供給(する), to build the program this way.

By "ReadAndDealWith..." I mean to 示す that the subroutine would read the sensor, and take care of updating the 陳列する,発揮する which the 天候 watching program creates. (My program also 記録,記録的な/記録するs the data it collects to a machine readable とじ込み/提出する.)

There are all sorts of problems with the structure above.

Windows, and other multi-仕事ing 環境s, don't do 井戸/弁護士席 if a program has a 宙返り飛行 with no "breaks" in it. More modern 見解/翻訳/版s of Windows do a good 職業 of 対処するing, but it is so much better if the programmer 避けるs creating 宙返り飛行s which may try to 独占する the 加工業者.

The problem of working in a multi-仕事ing 環境 証明するd bigger than I had realized. Several days into working on this tutorial, I began discovering that what I 提案する in the に引き続いて just won't, やめる, work as I 手配中の,お尋ね者 it to. That nearly infinite "repeat/until" 宙返り飛行 was the heart of the problem. It is hard to get a Windows (or other multi-仕事ing 環境) program to "play nicely" when you create such 宙返り飛行s.

I can't at the moment afford the time to re-令状 all that you see here. For now, all I can say is that you can use the ideas 現在のd in a Windows program. The 封鎖する that is inside the "repeat" and "until" goes inside the handler for a timer. I don't really like that "解答", as it introduces "wasted" time, and will 妨げる the cycle from 遂行する/発効させるing as 急速な/放蕩な as it might. But I 港/避難所't yet 設立する a better 解答. Sorry. The "wasted" time will not 事柄 in many 事例/患者s, but it is inelegant. Sigh.

The "bad 計画(する)" (above) can be made いっそう少なく bad by sticking an "使用/適用.processmessages;" 声明 in, just before the "Until 誤った;" (While that might work, in theory, to make the program 答える/応じる to the usual "kill program" Windows 機械装置s (Clicking the red "x", upper left, 圧力(をかける)ing Alt-F4)... it doesn't. See "doing it in practice" at the 底(に届く) of the page.

Now, once in a while, at least, the program says to Windows, "Oh, if anyone else was trying to do something, tell me." But, as I said, it will only happen once in a while. Some of the subroutines which are 遂行する/発効させるd each time you go through the 宙返り飛行 may take a while to finish... and the cumulative 延期する may be too much. You could 結局最後にはーなる with a system which was annoyingly laggy. ("使用/適用.processmessages;" is a Delphi/ Lazarus 明確な/細部 命令(する). If you are using a different language, it will have something 同等(の).)

The bad 計画(する) also assumes that there is no ありふれた ground between the さまざまな sub-仕事s... and there is, in the 事例/患者 of my 天候 logging program. Each time you read a sensor, the result needs putting on the 審査する, if only as a number, and it needs logging to a data とじ込み/提出する.

So we're going to "分裂(する) out" those two activities.

To do it will mean that we need to 設立する at least three variable which will pass (警察などへの)密告,告訴(状) between the different parts of the program. We'll come to them in a moment, but first the 改善するd 計画(する) for the structure of our program....

InitializeEverything;

Repeat

  ReadIndoorTture;
  ReadOutdoorTture;
  ReadFurnaceTture;
  ReadBarometer;
  ReadAnemometer;
  ReadHumiditySensor;

  AddReadingToDisplay;
  SaveReadingInDataFile;

  使用/適用.processmessages;

Until 誤った;

But! Either we need a lot of variables, or we need other changes... the "AddReadingToDisplay" and "SaveReadingInDataFile" speak of READING, singular. Does only the 湿度 reading get 報告(する)/憶測d and saved? Not if you 修正する the 計画(する) as follows. iWhichTask and iWhichTaskMax are new variables. I hope you can infer what they are for from what you see below...

InitializeEverything;
iWhichTaskMax:=60;//Value in iWhichTaskMax doesn't change
iWhichTask:=0;

Repeat

  if iWhichTask=10 then ReadIndoorTture;
  if iWhichTask=20 then ReadOutdoorTture;
  if iWhichTask=30 then ReadFurnaceTture;
  if iWhichTask=40 then ReadBarometer;
  if iWhichTask=50 then ReadAnemometer;
  if iWhichTask=60 then ReadHumiditySensor;

  (Maybe)AddReadingToDisplay;
  (Maybe)SaveReadingInDataFile;

  iWhichTask:=iWhichTask+1;
  if iWhichTask>iWhichTaskMax then iWhichTask:=0;

  使用/適用.processmessages;

Until 誤った;

Whoa! THAT got "複雑にするd" 急速な/放蕩な!

No, not really. Just take a 深い breath, look at that again after reading a little その上の, think about it. Not so "複雑にするd" really.

The contents of iWhichTask will "tick" 上向き by one each time you go through the 宙返り飛行. (Until it gets too big, at which point, it will be 始める,決める 支援する to 無.)

Don't worry that many times, nothing will happen during a pass through the 宙返り飛行. There are no moving parts to wear out, and we have built in "room to grow".

Don't, for the moment, worry about how the reading gets from, say, "ReadHumidity" to "AddReadingToDisplay".

Don't worry about the fact that we don't do AddReadingToDisplay or SaveReadingInDataFile each time we pass through the 宙返り飛行. (We'll get to when DO we do them in a moment.)

Do worry about the 残り/休憩(する) though! What is going on? Why?

The "複雑さ" which we have introduced has two 抱擁する 利益s:

1) Now, each time through the "Repeat" 宙返り飛行, we are only doing, at most, one of the "Read sensor" 仕事s... so the 宙返り飛行 should 遂行する/発効させる more 速く,

2) Now it is やめる 平易な to 挿入する other 仕事s in the "grand 計画/陰謀", or change the order or frequency of their 死刑執行. We could, for instance, change the heart of the "落ちる-through 宙返り飛行" as follows...

  if iWhichTask=10 then ReadIndoorTture;
  if iWhichTask=20 then ReadOutdoorTture;
  if iWhichTask=25 then ReadIndoorTture;
  if iWhichTask=30 then ReadFurnaceTture;
  if iWhichTask=35 then ReadIndoorTture;
  if iWhichTask=40 then ReadBarometer;
  if iWhichTask=45 then ReadIndoorTture;
  if iWhichTask=50 then ReadAnemometer;
  if iWhichTask=55 then ReadIndoorTture;
  if iWhichTask=60 then ReadHumiditySensor;

.. to make the program do ReadIndoorTture more frequently than it reads the other sensors.

(If you weren't やめる (疑いを)晴らす about (almost) everything a moment ago, when I said "Take a 深い breath", go 支援する and GET (疑いを)晴らす on most things. In a moment I will talk about some variables we are going to use, and how the "maybe"s are 器具/実施するd. Try to get (疑いを)晴らす on other 面s of all of this.

First... two little asides....

1) Yes, I know that "iWhichTask:=iWhichTask+1;" can be 遂行するd with "inc(iWhichTask);"

2) Likewise, I know that there are more elegant ways to use variables to pass things in and out of subroutines. More elegant than the clumsy way I am going to do it in a moment. Have a little pity on the newbies?



Data passing, 含むing "旗s"

I hope that you will agree that the structure we have given out program is elegant and (疑いを)晴らす. There aren't many "dark corners" for bugs to hide in, are there?

The trouble is, it may not yet be やめる (疑いを)晴らす to you how our program can do what we want it to do.

What's 行方不明の so far are some variables. They will come in two 幅の広い classes. Some will 持つ/拘留する data, like the reading from a sensor. Others will 持つ/拘留する "旗s"... numbers which aren't meaningful in the usual way, but will, rather, 持つ/拘留する "codes" to carry messages from place to place.

Beware when you are using variables to carry messages. It is very 平易な to forget that a given variable is 存在 used for a given 職業, and "upset" the value 蓄える/店d in the variable before you are done using the number you are changing. Good 指名するing of variables helps you to 避ける this problem. As does (疑いを)晴らす program structure, and good in-line documentation, i.e. "comments" or "rems" in the sourcecode.

We're going to introduce the に引き続いて variables...

How will those help us? Before I discuss that, let's talk a little about the different sensors in connected to the computer which runs my 天候 監視するing system. (Most, by the way, are from the Dallas "1-Wire" family... but that doesn't 事柄 for the 目的s of our discussion.)

When I 令状 the code for, say, ReadIndoorTture, I will need to direct the computer to 接近 a particular 気温 sensor. The code for, say, ReadOutdoorTture will probably 接近 a 決まりきった仕事 株d with ReadIndoorTture, but the 決まりきった仕事 will 単に be "pointed" at a different sensor. The indoor tture sensor and outdoor tture sensor will probably be the same sort of electronics, 単に at different 演説(する)/住所s.

Hopefully, most of the time, the code for either will lead to a number. The sensors I use 変える 気温s to a 16 bit unsigned integer, so that "answer" from the 半導体素子 could be put in the variable I've 指名するd iReading.

Some of the time, however, when the code for ReadIndoorTture is 遂行する/発効させるd, something will go wrong. Suppose, for example, the wire to the 気温 sensor has been broken.

In such 事例/患者s, we have three variables we can use, as the creators of the ReadIndoorTture code, to send messages 支援する to the "higher" levels of the program. Those variables are bError0, bError1, and sErrorMessage.

Let's go 支援する to our main code, and 修正する it just to show what would be needed assuming we have "直す/買収する,八百長をするd" ReadIndoorTture to...

Put a number 比例する to the tture into iReading if the 試みる/企てる to read the sensor 後継するs, or to put a number other than 0 into bError0 if the 試みる/企てる fails. (In this instance, we are 簡単に not using bError1, sErrorMessage and rReading. They are 簡単に 利用できる for times when we need more channels for passing error messages, or have a reading which can't be 蓄える/店d in an "integer type" variable.)

... and we have 直す/買収する,八百長をするd AddReadingToDisplay to take the value in bReading and 陳列する,発揮する it nicely on the 審査する, and we have 直す/買収する,八百長をするd SaveReadingInDataFile to save that number to the program's growing data とじ込み/提出する. (You should have some "But...?"s in your mind... 耐える with me for the moment.)

Here's a better 見解/翻訳/版 of what we've done so far. The rems (comments) are VITAL to this 事業/計画(する) staying sensible. All new or changed lines have asterisks at their 権利 手渡す ends.

Not shown: Most of the code I will have to 令状 to 現実に do ReadIndoorTture, and 非,不,無 of the code for ReadOutdoorTture... AddReadingToDisplay, or SaveReadingInDataFile;

InitializeEverything;
iWhichTaskMax:=60;//Value in iWhichTaskMax doesn't change
iWhichTask:=0;

Repeat

  bError0:=255//255 存在 a code which MUST be changed *
     //to something else if ANY of the "if" 声明s *
     //below are 遂行する/発効させるd... even if in, say, trying *
     //to read the indoor 気温 the code fails, *
     //or 後継するs.

  if iWhichTask=10 then ReadIndoorTture;
  if iWhichTask=20 then ReadOutdoorTture;
  if iWhichTask=30 then ReadFurnaceTture;
  if iWhichTask=40 then ReadBarometer;
  if iWhichTask=50 then ReadAnemometer;
  if iWhichTask=60 then ReadHumiditySensor;

  if bError0<>255 then begin // *
     AddReadingToDisplay;
     SaveReadingInDataFile;
     end; // *

  iWhichTask:=iWhichTask+1;
  if iWhichTask>iWhichTaskMax then iWhichTask:=0;

  使用/適用.processmessages;

Until 誤った;

//==========                                          *
//Start of what will be needed for ReadIndoorTture... *
//In ReadIndoorTture...                               *
//  bKindOfSensor will be 始める,決める to 0
//  bChannel will be 始める,決める to 0                         *
//  If the sensor is 首尾よく read...             *
//    The reading will be in bReading                *
//    bError0 will be 始める,決める to 0... さもなければ...        *
//  If the sensor cannot be read                      *
//    bError0 will 持つ/拘留する something other than 0 or 255 *
//    bReading can be used to pass messages about     *
//         what sort of error was 遭遇(する)d, as can *
//         bError1, sErrorMessage and rReading        *


Once ReadIndoorTture has been written, and is doing to the sundry variables what it should. a start can be made on AddReadingToDisplay and SaveReadingInDataFile can now be written.

First they will look at what's in bError0. If it 持つ/拘留するs 無, then the 試みる/企てる to read the sensor was successful. さもなければ it wasn't. We'll 始める,決める up two 封鎖するs in both AddReadingToDisplay and SaveReadingInDataFile.. one to 扱う 陳列する,発揮するing (or saving) a "good" reading, the other to 扱う giving the 使用者 (and datafile) 指示,表示する物s that the 試みる/企てる to read the sensor failed.

In each of those 封鎖するs, the code will look at bKindOfSensor. For the sensor "behind" ReadIndoorTture, we know that the tture will be passed to AddReadingToDisplay and to SaveReadingInDataFile in the variable iReading. For another type of sensor the reading might have to be passed in rReading.

It is likely that we may want to be able to connect several instances of the same sort of sensor, e.g. 気温 sensor, to the system, but have readings from them 報告(する)/憶測d 分かれて. Hence the bChannel variable. If we'd chosen to 始める,決める bChannel to 0 in ReadIndoorTture, then we might choose to 始める,決める it to, say, 1, in ReadOutdoorTture... but, if we're using two instances of the same 肉親,親類d of sensor, then both will be able to send "the answer" 支援する in iReading. AddReadingToDisplay will be written to look in iReading for a reading from that 肉親,親類d of sensor, but to 陳列する,発揮する the readings of indoor 気温s and outdoor 気温s in different ways. The number in bChannel "tells" AddReadingToDisplay (and SaveReadingInDataFile) "where" the reading (機の)カム from.

So... to 繰り返し言う the above, in more general 条件:

At the start of the 落ちる-through 宙返り飛行, bError0 is 始める,決める to 255. If we 遂行する/発効させる ANY of the "if iWhichTask=... then..." then 条項s, the first thing we should do in the 関連した subroutine is to 始める,決める bError0 to 無.

In the 残り/休憩(する) of the subroutine, bError0 should be left undisturbed, unless an error of some 肉親,親類d arises, e.g. could not read sensor. If errors arise, any numbers from 1 to 254 (inclusive) can be used to 示す what sort of error arose. We do not, at this point, try to "扱う" the errors. We have "made a 公式文書,認める" of the presence (and type) of the error, and will を取り引きする it later. If there is 付加 (警察などへの)密告,告訴(状) about the error, that 付加 (警察などへの)密告,告訴(状) can be put in bError1, to augment the (警察などへの)密告,告訴(状) 伝えるd by the error code in bError0.

When 死刑執行 reaches "if bError0<>255 then begin.." there are three possible 条件s...

bError0=255. This should only happen if, passing through the 団体/死体 of the 宙返り飛行 this time, 非,不,無 of the "if..." 声明s were true. In which 事例/患者 we just skip over AddReadingToDisplay and SaveReadingInDataFile, as no Reading has even been 試みる/企てるd.

bError0 does not equal 255. This means that at least an 試みる/企てる to take a reading was made. If the 試みる/企てる was successful, bError0 will 持つ/拘留する 無, and we proceed with AddReadingToDisplay and SaveReadingInDataFile "普通は".

If bError0 does not equal 255, AND it does not equal 無, it means that an 試みる/企てる to take a reading was made, but that it failed. So we will still probably want to put some 肉親,親類d of 指示,表示する物 on the 陳列する,発揮する, and in the datafile (or perhaps a separate スピードを出す/記録につける of errors 遭遇(する)d). The 扱うing of the error can be inside AddReadingToDisplay and SaveReadingInDataFile.

That's about it...

That, folks, is just about it! Of course all of the subroutines would have to be written....

I'd like to 強調する/ストレス that you really do want to, "need" to, 令状 up at the start of each subroutine's code what variables it changes, and what values it may put in them. (I showed you what the 関連した section of ReadIndoorTture would look like.) You may also want to make a 公式文書,認める of 期待s. For instance, AddReadingToDisplay 推定する/予想するs to have meaningful values in bKindOfSensor, bChannel, and one (or maybe both, depending on the sensor type) of the result variables. And if bError0 does not equal 無, while bKindOfSensor must be used as it is when bError0 equals 無, what is in the other variables may have different meanings. It will all depend on how you wrote the "read sensor" subroutine. You must be careful to keep what is done to the "messenger" variables, the variables used to pass data between the subroutines under 支配(する)/統制する. Rems (comment lines) are a big help when you are using these techniques.

Neither AddReadingToDisplay nor SaveReadingInDataFile would be trivial subroutines, but both are manageable, if you keep your code tidy and (疑いを)晴らす.

Perhaps I should digress for a moment, talk about the structure which will be needed in AddReadingToDisplay?

That's going to 伴う/関わる two main 封鎖するs. One will を取り引きする 追加するing "good" readings to the 陳列する,発揮する, the other 封鎖する will を取り引きする errors as they arise. Within each, the code will first look at bKindOfSensor, as that will a) tell the next bit of code WHERE to find the "answer" from the sensor we've been 取引,協定ing with (bReading or rReading) and b) 決定する how to 解釈する/通訳する that number. The code in AddReadingToDisplay and SaveReadingInDataFile will also be considering the value in bChannel. At the very simplest level, you probably want to use different colors for the graphs of the indoor ttures and the outdoor ttures.

現実に Doing It...

Hmm. All of the above sounds so good, doesn't it? Sadly, it doesn't (やめる) work... at least not 正確に/まさに as shown. But it should! And here's something that DOES work, in Delphi and Windows, XP, anyway. It may not be the best way to do it, but it 作品.

The problem which the に引き続いて 打ち勝つs is that the 使用/適用.processmessages 挿入するd inside the big "repeat/until" 宙返り飛行 is not enough to give you a way to "kill" the program. So here's something which will work. I'd be 利益/興味d in advice from anyone who knows how to do all of these bits BETTER. (At the same time, I'd like to know how to 原因(となる) a "spash 審査する" to appear when the program is started. In the big 事業/計画(する) I am building up from these humble beginnings, the "init" 過程s can take やめる some time, and I don't want the 使用者 wondering what is going on.) Also, with some of things I tried, although the program seemed to be running okay, the form was not 存在 陳列する,発揮するd!

Keep the 使用/適用.processmessages... I think it has a 役割, even if it didn't do all I had hoped it would.

Create a 全世界の boolean variable called boDone.

Change the "until" 条件 to "until boDone=true".

Put the 構成要素 which comes before the "repeat" into the main form's OnFormCreate handler, and 含む somewhere in that "boDone:=誤った;"

Put the "Repeat/Until" 宙返り飛行 in the form's OnActivate handler.

Make the form's OnCloseQuery handler "boDone:=true;".

(You can 追加する a "やめる" button to the form, too, if you wish. Make it's OnClick handler "boDone:=true;".)

I thought that would do it, and it almost does. It "作品" in Delphi, anyway, up to a point. Sadly, when running thus, the program ignores, say, most button clicks. (I 追加するd a button to the form which should have drawn a line on an image. It didn't.) The program runs. The form is 陳列する,発揮するd. You can やめる the program by the normal channels (click red "x" at upper 権利, or do Alt-F4, or click "やめる" button, if you 供給するd one.)

I 港/避難所't tried the code yet, 割り当てるd to handlers as above, in Lazarus. I would be 利益/興味d to hear what luck anyone has. It "should" work....

Thank you for reading!

... 特に considering the major 欠陥: my 失敗, so far, to 統合する this idea into a Windows program for you. The ideas in this are valid and 価値のある. I just need to 令状 up a working Delphi program, to 明らかにする for you how the "repeat/until" can be 遂行するd by using the event that goes with a timer. That approach DOES work, by the way!

This is the first in what I 心配する 結局 存在 several essay on Structure, Planning and 実験(する)ing.... a "different sort" of essay from what I usually do. I hope it was useful to you! Comments welcome, there's "how to 接触する me" just a little さらに先に 負かす/撃墜する the page.

You've done the "hard work" if you've mastered the above. I've written a "postscript" with more on using 落ちる-though 宙返り飛行s. It 延長するs what is above; it introduces a useful frill. Useful for making a 基本的に asynchronus program have bits which are tied to "real" (hours/minutes/seconds) time, as needed. A frill with other uses too.

The postscript isn't nearly as much work as you have done in reading this page!





Search across all my 場所/位置s with the Google search...

Custom Search

Or search just SheepdogGuides.com with the Freefind 道具...

   Search this 場所/位置 or the web          力/強力にするd by FreeFind
  場所/位置 search Web search
場所/位置 地図/計画する    What's New    Search

This search 単に looks for the words you enter. It won't answer "Where can I download InpOut32?"


If you visit 1&1's 場所/位置 from here, it helps me. They host my website, and I wouldn't put this link up for them if I wasn't happy with their service. They 申し込む/申し出 things for the beginner and the 会社/団体.www.1and1.com icon

広告 from page's editor: Yes.. I do enjoy 収集するing these things for you. I hope they are helpful. However... this doesn't 支払う/賃金 my 法案s!!! Sheepdog ソフトウェア (tm) is supposed to help do that, so if you 設立する this stuff useful, (and you run a Windows or MS-DOS PC) please visit my freeware and shareware page, download something, and 循環させる it for me? Links on your page to this page would also be 高く評価する/(相場などが)上がるd!
Click here to visit editor's freeware, shareware page.

Link to Lazarus Tutorials main page
How to 接触する the editor of this page, Tom Boyd


Please consider 与える/捧げるing to the author of this 場所/位置... and if you don't want to do that, at least check out his introduction to the new micro-寄付s system Flattr.htm....


Valid HTML 4.01 Transitional Page 実験(する)d for 同意/服従 with INDUSTRY (not MS-only) 基準s, using the 解放する/自由な, 公然と accessible validator at validator.w3.org. Mostly passes. There were two "unknown せいにするs" in Google+ button code. Sigh.


If this page 原因(となる)s a script to run, why? Because of things like Google パネル盤s, and the code for the search button. Why do I について言及する scripts? Be sure you know all you need to about spyware.

....... P a g e . . . E n d s .....