ブログ内検索
とにかく速いブログサイトを目指す

カテゴリー : コンピュータ

 

AD変換器から出力されたデジタル値を読み込む

Tjwikcom - 投稿者自身による作品, パブリック・ドメイン, リンクによる前回のAD変換器の概要に触れるの記事でAD変換器がINのアナログ値をどのようにデジタル値に変換してOUTから出力するか?を見た。今回はOUTの値をどのようにしてマイコン等に送信するか?を見ていきたい。上の回路図は左からpHメーター等のアナログ値で測定するもの、AD変換器(MCP3208)、Raspberry Pi 4Bになっていて、測定したアナログ値をAD変換を介して、Raspberry P...

 

アナログとデジタル

某SNSでそろばんはデジタルという話題で盛り上がっているのを見かけた。このやりとりを見た時、最初はよくわからなかったけれども、どうやらこれからの内容にとって重要であることだろうという事はわかった。pH測定で用いるガラス電極法に触れてみるの記事で挙げたアナログ-デジタル変換はそろばんがデジタルであることを理解しないと本質はつかめないのだろう。というわけで、今回はアナログとデジタルに触れてみる。最初にアナログの説明をWikipediaからピックアップしてみると、/...

 

pH測定で用いるガラス電極法に触れてみる

自作用のpHメーターを購入した。Liquid PH Value Detection Detect Sensor Module – diymore購入理由はpHの測定を理解する為にリトマス試験紙から触れるの記事で触れたので、再び触れない事にする。市販されているpHメーターは先端にガラスのセンサーをpHを測定したい液体に浸して測る。リトマス試験紙は植物等が持つpHで色が変わる色素を利用するで学校の理科で扱うリトマス試験紙は色の変化を見ていたけれども...

 

プログラミング教育で注目すべきはARM + Debian + Pythonであるはずだ

今年もそろそろ終わるので、毎年好例の振り返りをしたいと思う。長男が小学校に入学したらやりたいと思っていたことにプログラミング教育の格差の公平化というものがあって、公平化に関するものを購入してみた。先にプログラミング教育の格差の公平化について触れておくと、パソコンという言葉で連想することとして、最初の購入の時点で他の学習と比較して高額になってしまうということがある。だからといって、安物のパソコンを購入すると動作が重くて、使い物にならないというストレスからの挫折を味わう事になり、世帯...

 

Raspberry PiのPWMでサーボモータを動かしてみる

Raspberry Piと赤色LEDでホタルのような点滅を試すの記事までで、パルス幅変調(PWM)が何なのか?についてを触れてきた。PWMの内容を見てみると、サーボモータではパルス幅 τ の小さい値を利用してモータを動かすという記載を時々見かけるので、今回はPWMでサーボモータを制御してみることにする。今回使用するサーボモータはGeekServo 9G Servo-Grayで仕様は下記の通り回転角:-45〜225°電圧は3.3Vか5Vのどちらでも良い。早速回路...

 

Raspberry Piと赤色LEDでホタルのような点滅を試す

Raspberry Piと赤色LEDでパルス幅変調を試すの記事でPWM(パルス幅変調)について触れ、Raspberry PiでLEDを点灯する際に明るさの調整をした。本に記載されているPWMを読んでみると、PWMで擬似アナログ信号を出力するという内容を頻繁に見かける。疑似アナログ信号とは何だろう?ということでPWMを更に整理してみることにした。※これからの内容は個人的な理解になるので、内容に誤りがあるかもしれない。前回の記事でPWMは周期Tとパルス幅 τ (タウ)で表...

 

Raspberry Piと赤色LEDでパルス幅変調を試す

大学は理系の学部だったと言っても、生物系で数学と物理をあまり触れてこなかった私がRaspberry Piに挑戦し始めた。オームの法則といった定義自体は簡単だけれども、実際に計算しながら回路を組むのが難しいといった壁がたくさんある。そんな中で、新たに現れた壁として、パルス幅変調(Pulse Width Modulation:PWM)がある。PWMはモータの制御で重要になるため、施設栽培を理解するためには避ける事ができない重要な内容となっている。環境制御を学ぶ為にMicro:bi...

 

Fritzingを使って、Raspberry Piの回路図を作成する

上のような図の作成することになったので、簡単に作成出来るアプリを探してみた。検索をしてみたところ、Fritzingというアプリがよく使用されているらしい。ということでFritzingを試してみることにした。※WindowsとMac版もあるFritzingUbuntu、Raspberry Pi OS共に下記の手順で使用できる。ターミナル(端末)を開き、下記のコマンドを実行する。$ sudo apt install fritzing$ fr...

 

Raspberry Piのシリアルコンソールを試す

Raspberry Piの設定のインターフェースにシリアルコンソールという項目があるので試してみた。シリアルコンソールというのは、シリアルコンソールケーブルでRaspberry Piと操作用のPCを繋いで、ネット環境のない場所で有線でRaspberry Piを操作出来るようにする。※ネット環境があれば、ローカルネット経由でSSHで操作できるRaspberry PiをChromebookから操作するというわけで、早速試してみた。環境Raspberry P...

 

Raspberry PiでLCDに文字列を出力する

Raspberry PiでI2C(アイ・スクエアド・シー、アイ・アイ・シー)経由で、LCDに文字列を表示してみる。I2C - Wikipedia環境Raspberry Pi 4B 8GBOS:Raspberry Pi OS 64bitLCD:1602 LCD ディスプレイ(I2Cモジュールが既にハンダ付けされている)※LCDはliquid crystal display(液晶ディスプレイ)の略液晶ディスプレイ - WikipediaI2...

 

Rapberry PiとBBC Micro:bitでUSB経由のシリアル通信を試す

Rapberry PiとBBC Micro:bitでUARTを試すの記事ではUART経由でシリアル通信を試したが、USB経由でも出来るので触れておく。今回はRaspberry PiとMicro:bitをUSBケーブルのみで繋いでおく。Raspberry Pi側では前回触れたシリアルポートの設定は不要。※上のキャプチャではシリアルポートは有効になっているが、無効にチェックを付けた状態でいい。最初にMicro:bit側のコードを作成して転送(フラッ...

 

Rapberry PiとBBC Micro:bitでUARTを試す

UART(Universal Asynchronous Receiver/Transmitter、ユーアート)というシリアル通信に触れたくて、Raspberry PiとBBC Micro:bitで構築してみた。UART - Wikipedia構築した内容は、BBC Micro:bitの温度センサーで室温を測り、Raspberry Piに室温のデータを送信する。最終的には上の写真のようにジャンパー線で繋ぐ。※左下にあるMicro:bi...

 

NmapでLAN内のRaspberry Piを探してみる

Raspberry PiをChromebookから操作するの記事で、Raspberry PiをVNCサーバにして、Chromebookで操作出来るようにしてみた。前回の記事では、Raspberry Piの方でローカルのIPアドレスをメモしておいて、ChromebookでIPアドレスを指定して操作したが、念の為にChromebookからRaspberry PiのローカルのIPアドレスを探せるようにしてみたい。Nmapを使えば、気軽にLAN内の端末毎のIPアドレスを確認出来るらし...

 

Raspberry PiをChromebookから操作する

プログラミング教室でRaspberry Piに触れさせたいと思い、Raspberry Piを持参することにした。Raspberry Pi 4 Model Bを購入したただ、最近の諸事情により、教室にキーボードやディスプレイがなく、これらを持参する事が難しい状況になっている。Raspberry PiはVNCサーバにすることが超簡単という事を思い出し、軽量のChromebookでRaspberry Piを操作出来るようにしてみた。Virtual Network Computing...

 

Raspberry Pi 4 Model Bを購入した

Raspberry Piを購入した。先に購入の目的を挙げておくと、子供にはじめて与えるパソコンはChromebookにすべきか、それ以外の選択肢はないか?を検討するため。Chromebookはプログラミングの教育の端末として向いているか?を調査するプログラミング教室で、一日Chromebook縛りで過ごしてみたところ、Micro:bit関連(シリアル通信周り)でChromebookでは辛いなと思うところがあったため、Raspberry Piに触れたくなった。R...

 

Micro:bitで二種類のサーボモータの動作を比較してみる

Micro:bitでサーボモータの止め方を試すの記事の続き。サーボモータの動きがいまいち分からなかったので、他のサーボモータを購入してみた。色違いのように見えて、全然違う動きをする。先に今まで使っていた緑の方に仕様を確認してみると、Geekservo 9g 360°サーボ起動電圧:2.5 V動作電圧:3.3 - 6 V公称電圧:4.8 V公称電流:100 mA拘束電流:550 mA最大トルク:500 g.cm※参考:Geek...

 

Micro:bitでサーボモータの止め方を試す

環境制御を学ぶ為にMicro:bitでサーボモータを学ぶの記事で、Micro:bitでサーボモータを動かすことは出来たけれども、回転しっぱなしで止められなかった。というわけで、今回はサーボモータを止める方法を模索してみる。今回はブレットボードマニアックのケーキボードが届いたので、ケーキボードとジャンパー線で組んでみる。※ケーキボードはブレットボードの一種ブレットボード - WikipediaMicro:bitとケーキボードを繋ぐために、Vilrosの拡張ボード...

 

環境制御を学ぶ為にMicro:bitでサーボモータを学ぶ

トマト栽培で老化苗を定植したら微量要素の課題が付き纏うまでの記事で触れている植物学の観点から見たトマトの栽培と平行して、施設栽培の環境制御の方も見ていくことにする。とは書いたものの、環境制御についてハウス内の温度を測って、温度によって天窓を自動開閉したり、ファンを回したりといった漠然としたものしかわからなくて、実際にはどのように作成しているのか?は知らない。というわけで、電子工作を一から勉強してみることにした。最初の教材として選んだのがMi...

 

ARM版ChromebookにDropboxをインストールする

Chromebookはプログラミングの教育の端末として向いているか?を調査するの記事から半月ほど経過した。Chromebookを利用するにあたって、乱暴な表現にはなるかもしれないが、Chrome OSとAndroidの仮想環境とDebian系のLinuxの仮想環境が同居しているとイメージすると良いかもしれない。Google Chrome OS - WikipediaAndroid (オペレーティングシステム) - WikipediaLXC - WikipediaDebian ...

 

ChromebookのLinuxアプリで日本語入力をできるようにする

ChromebookでJava製のアプリを実行するの続き。ChromebookでJava製のアプリを立ち上げた時、日本語入力ができなかったので、手順は端折るけれども、Ubuntuのマシンで行った操作の後にJava製アプリを立ち上げたら、今の時点では日本語の対応はされていないという旨のメッセージが表示された。調べていくと、Google製の日本語入力のMozcとFcitxを利用すればいけるらしい。Google 日本語入力 - WikipediaFcitx - Wiki...

 

ChromebookでJava製のアプリを実行する

Chromebookはプログラミングの教育の端末として向いているか?を調査するの記事の続きで、今回はChromebookでJava製のアプリが使えるか?を調査する。なぜ、Java製のアプリを気にするか?というと、大阪市立大学の方が開発された初学者向けプログラミング学習環境 PENというScratch等のビジュアルプログラミング言語とGolang等の実務や研究で使える本格的な言語の間の学習に向いている言語があって、この言語がJavaのVM上で動く。※ビジュアルプログラミ...

 

Chromebookはプログラミングの教育の端末として向いているか?を調査する

表題の通り、Chromebookがプログラミングの教育の端末として向いているか?を調査してみるためにChromebookを購入してみた。実はChromebook自体は中学生にプログラミングを教えてみて。その1で話題に挙げているプログラミング教室で試しに購入していて、Chromebook発売当初から触れてはいたが、JavaとIDEの面であまり使用していなかった。※採用していたプログラミング教育のアプリがJava製だった。2019年に発売されたChromebookでLinuxが動...

 

Let's Encryptでwwwありなしに対応する

表題の通り、Let's Encryptでwwwのありなしに対応してみたので、その時の作業をメモとして残す。Let’s Encrypt SSL証明書で、wwwあり、なしに対応 - dbit.に記載されている内容を参考にした。Let's Encrypt - Free SSL/TLS Certificates先に環境を記載しておくOS:Ubuntu 18.04 ※20.04でも同じになるはずサーバ:Apache/2.4.46※ドキュメントルートは標準設定の/var/www/...

 

設置したお問い合わせフォームからの通知メールが届かない

当サイトではSOY Inquiryでお問い合わせフォームを設置しているが、ある日突然、お問い合わせがあっても手元に通知メールが届かなくなった。動作確認をしてみると、ユーザ向けメールは届くのに、管理者向けの通知メールが時々届かない。SOY Inquiryで悪質なお問い合わせをブロックする機能を追加しましたやSOY Inquiryで同一IPアドレスからの連続した問い合わせをブロックするで追加している機能が悪さをしているのかな?と思って調べてみても、処理自体は正常に動いている。とり...

 

様々な依頼からこれからの働き方を見た

花の色素と稲作とに引き続き、今年の振り返りをしてみる。今年は新型コロナウィルスの流行に伴い、世間では仕事や生活に大きな変化があったとされる年だった。外出自粛により営業に行けないという方が多く、それに伴い経済が回らないという心配の中、連鎖的に私の事業も影響を受けるだろうと予想し、収入の減少を覚悟した。予想外だったのが、経済の変化の先を見越して準備をしていた方々からの依頼が殺到して、納期のプレッシャが常にあった年だった。ちなみに私の事業は元々対面がほぼないので、仕事や生活はほぼ変...

 

WordPressのデータベースのスキーマを調べる

WordPressを使用することをやめたいという相談があったので、WordPressからデータを取り出す為の依頼があった。最近、WordPress疲れの方からのお問い合わせが増えましたCMS問わず、CMS間の引っ越しにおいて最初に知りたい事といえば、データベースのスキーマをどのバージョンにすれば良いか?という事なので、WordPressのデータベースに関するコードを探してみることにした。データベースの定義が頻繁に変わっているとなると、バージョンの対応が面倒だからね。はじめ...

 

UbuntuでMySQLのアップグレードが停止する原因を探る

ローカルマシンの開発環境で使用しているMySQLがapt upgradeの度に失敗する。実際にはupgradeの最中で停止するのだけれども、なんでいつも失敗するのだろう?と不思議でしょうがなかったが、原因がわかったのでメモとして記載しておく。※実稼働中のサーバでは上記のような失敗は今まで一度もない環境OS:Ubuntu 20.04MySQL:8系症状$ sudo apt update$ sudo apt upgrade実行後、mysql-serve...

 

データ構造のキューとリングバッファを見る

字句解析器を作る為にデータ構造のスタックを見るの記事で、データ構造のスタックを見た。オリジナルのアップロード者は英語版ウィキペディアのR. Kootさん - en.wikipedia からコモンズに移動されました。, CC 表示-継承 3.0, リンクによるスタックはデータの後入れ先出しで配列に値を入れた際、一番最後の値を取り出すというものだった。今回はデータ構造でスタックと合わせて紹介されるキューについて見てみる。This Image was created...

 

字句解析器を作る為にデータ構造のスタックを見る

PHPのハッシュテーブルを見るの記事で表題通り、PHPのハッシュテーブルを見て、ハッシュテーブルに関数を登録するところを見ようとしたが、共同体の記述の解釈で断念でした。一旦、ハッシュテーブル周りを見るのは保留にして、バーチャルマシン(VM)を含む機械がコードを解釈して実行する箇所を見ることにする。上記のコードを解釈して実行する過程はコンパイラもしくはインタプリタによって、人が書いたコードを機械が解釈できる形式に翻訳して実行する。コンパイラ - Wikipediaインタプリタ ...

 

PHPのハッシュテーブルを見る

ハッシュテーブルのチェイン法を見るまでの記事でデータ構造のハッシュテーブルを見た。ハッシュテーブルはPHPの変数や関数の登録の際にも利用されているので、PHPのハッシュテーブルを見る。ソースコードは今日現在のGitHub - php/php-src: The PHP Interpreterのソースコードとする。早速、HashTableで検索をしたら、php-src/Zend/zend_types.htypedef struct _zend_array HashTable;...

 

ハッシュテーブルのチェイン法を見る

データ構造のハッシュテーブルを見るの記事でデータ構想のハッシュテーブルに触れ、データ構造の単方向連結リストを見るの記事でデータ構造の連結リストを見た。これらを踏まえた上で、PHPで採用されているハッシュテーブルのチェイン法を見る事にする。技術評論社から発売されているPHPはどのように動くのか~PHPコアから読み解く仕組みと定石よるとPHPのハッシュテーブルのチェイン法では双方向連結リストを用いているが、前回触れた単方向連結リストでもニュアンスは伝わるはず。というわけで、今回もPH...

 

データ構造の単方向連結リストを見る

前回のデータ構造のハッシュテーブルを見るの記事でハッシュテーブルに触れたが、ハッシュテーブルの衝突の問題が残っている。PHPではハッシュテーブルの回避の手段としてチェイン法を採用しているが、チェイン法を見るためにはデータ構造の連結リストを把握する必要があるので、今回は連結リストを見ることにする。といっても、ここではPHPでシンプルな単方向連結リストのみ触れる事にする。連結リスト - Wikipedia今回も細かい説明は後回しにして、単方向連結リストに必要な関数を挙げる。※...

 

データ構造のハッシュテーブルを見る

PHPの関数の登録2の記事でPHPの実行中に関数が登録される過程を見た。PHPの深いところ(C言語レベル)で見ると、関数の登録にはデータ構造のハッシュテーブルというものが重要になってくる。ハッシュテーブルといえば、PHPのzvalと変数の作成を見るの記事で変数の登録時のシンボルテーブルでも登場した。PHPの深いところに向かう前にハッシュテーブルについて触れておく事にする。例えば、array(16) {[0] =string(6) "オヒシバ"[1]...

 

PHPの関数の登録2

PHPの関数の登録の記事で?php$funcs = get_defined_functions();var_dump($funcs);$a = myFunc();function myFunc(){return null;}このようにmyFunc関数の記述の前に、get_defined_functions関数を実行したらどうなるのか?を試してみたら、エラーなく実行された内容を記載した。この試みの後、2つほど疑問が生じた。・includeの...

 

PHPの関数の登録

PHPのオブジェクトの継承の負荷を見るの記事でオブジェクトの継承においてメモリの使用量で予想とは異なる結果になった。予想を外した要因は関数とメソッドを含むクラスの読み込み周りの知識不足であるので、関数やメソッドの登録周りを知りたくなった。例えば、下記のようなコードがあったとする。?phpfunction myFunc(){return null;}$a = myFunc();最後の行でmyFunc関数を実行する際、予めメモリにmyFuncの番地を登録...

 

【SEO対策】Core Web Vitals

PageSpeed Insightsに新たに加えられた指標としてWeb VItalsがある。このWeb Vitalsは今年末か来年のサイトの評価の重要な要因となるらしい。Google Developers Japan: Web Vitals の概要: サイトの健全性を示す重要指標要約すると、ページを読み込む時、HTMLを読み込み、CSSを読み込み、DOMで整形という経てブラウザに表示されるわけだけれども、新たなルールとしてDOMの処理を評価に加えるそうだ。...

 

PHPのオブジェクトの継承の負荷を見る

PHPでクラスのインスタンスを作成する際、他のクラスを親に持つクラスであった場合、メモリの使用量はどうなるのか?を見ることにする。実行せずともなんとなく結果は予想できるけれども、PHPのVLDでfor文を見る2のようなことがあるので、一応確認しておく。obj.php?phpclass Animal {function bark(){return "ばう";}}class Cat {}echo memory_get_usage...

 

PHPで関数内の変数のメモリ領域はいつ解放されるか?

前回のPHPのガベージコレクションを見るの記事で、PHPのガベージコレクションの基礎になる参照カウント法を見た。?php$a = new stdClass();$c = $b = $a;xdebug_debug_zval('c');というコードだと、各変数はこの図のような形になる。このコードを見て、コンストラクトしたオブジェクトをすぐに他の変数に入れる事なんてあるのか?という疑問が速攻で湧いた。色々と考えてみたら関数が当てはまるということで下記のような...

 

PHPのガベージコレクションを見る

PHPのzvalと変数の作成を見るの記事で、PHPの変数周りの内容を見た。前回の内容を踏まえて、PHPのガベージコレクション(以後、GCと略す)を学ぶための準備をしていく。PHPのガベージコレクションを学ぶにXdebugを入れるの記事でPHPの変数の詳細を確認できるxdebug_debug_zval関数を使用できるようにして、/path/to/dir/xdebug.php?php$a = new stdClass();xdebug_debug_zval('a');...

 

PHPのzvalと変数の作成を見る

PHPのガベージコレクションを理解する為のメモPHPは動的に変数を扱う事ができる言語で、この動的に変数を操作するためにzvalというものがある。動的に変数を扱う例として、/path/to/dir/var.php?php//変数aに数字の1を挿入する$a = 1;var_dump($a);//変数aに文字列のhogeを挿入する$a = "hoge";var_dump($a);//変数aに配列の値を挿入する$a = array(1, 2, ...

 

PHPのガベージコレクションを学ぶにXdebugを入れる

VLDでPHPのオペコードを確認するの記事でも記載した通り、SOY Shopの改修でメモリを意識する必要が生じたので、PHPの仕様を見始めた。現時点での一番の疑問は関数内で使用した変数はどのタイミングでメモリを解放するのか?もしくはPHPの関数内の変数の解放は手動で行わなければならないのか?PHPのCGI版やモジュール版はブラウザからリクエストを送信して、サーバでHTMLを組み立ててレスポンスを返した時点でプロセスを終了し、処理に関するメモリを解放するという仕様上、メモリにあまり...

 

Dropbox-Uploaderでサーバの負担を軽減する

保守をさせて頂いている会社のサーバは、Dropboxを連携させて、ネットショップに必要なファイルや写真を毎日バックアップしている。ところが、中に入れているDropboxの容量に圧迫されて落ちてしまうかもしれない状況になった。ちなみにDropboxがどのくらいサーバの容量を占めているか、リモートアクセスして調べてみると、サーバのメモリの約20%ほど占めていた。2Gのプランで契約しているので400M程つねにサーバを使用していることになる。※topコマンドでメモリの使用量を確認【 top ...

 

PHPのOPCacheで生成されるキャッシュを見る

【SEO対策】PHPのOPCacheの更新チェックの頻度を下げるでサイトの表示速度の向上の為に、OPCacheの更新チェックの頻度を2秒から1日に変更してみた。そもそもの話でOPCacheはどんな感じでキャッシュしているのだろう?という事が気になった。OPCacheの説明文を改めて読むと、コンパイル済みのバイトコードを共有メモリに保持と記載されている。メモリ上だとキャッシュを確認することは難しいなと思うが、デバック用にファイルに変更する事ができるらしい。というわけで早速変...

 

【SEO対策】PHPのOPCacheの更新チェックの頻度を下げる

今回の内容は高速化の検証で明らかな差が見られなかったので、あくまで仕組みとして話を進めます。PHPにはOPCacheというコンパイル済みのバイトコードを共有メモリに保存し、PHP がリクエストのたびにスクリプトを読み込み、パースする手間を省くことでパフォーマンスを向上できる機能があります。PHP: はじめに - ManualOPCacheは下記の記事に従って、PHPの環境を構築すれば自動で利用可能になります。さくらのVPSにUbuntu18.04を入れてSOY CMSを動かし...

 

PHPでforeach文の抜け方を見る

PHPで数字の配列の中に偶数があるか?という判定用の関数を作成したいとする。配列の中に偶数が一つでもあればtrue(真)を返すわけだから、?phpfunction isEven($arr){foreach($arr as $int){if($int % 2 === 0) return true;}return false;}このように偶数があった場合にreturn true;で終わ...

 

PHPで変数に割り当てた無名関数を解除できるか?

PHPのVLDで無名関数を見るの記事の続きで、?php$isEven = function($n){return ($n % 2 === 0);};if($isEven(2)){echo "even";}else{echo "odd";}$isEven変数に割り当てた無名関数の処理を解除できるか?が気になった。今回の内容に触れる前に割当の解除であるunsetについて触れておく。PHP: unset...

 

PHPのVLDで無名関数を見る

PHPのVLDで関数を見るの記事で、PHPの関数の処理をVLDで見てみた。C言語やGoのようなmain関数から始まる言語とは異なり、PHPはいきなり書き始められる言語では、他言語のmain関数の箇所でfunction nameがnullとして処理が開始していた。VLDで関数のオペコードを見た時、無名関数だとどうなるのだろう?と気になったので、今回は無名関数で試してみる。無名関数に関しては、オライリーから出版されているアンダースタンディングコンピューティション 単純...

 

PHPのVLDで関数を見る

PHPで関数がどのように実行されているか気になるので、下記のコードをVLDで確認してみることにした。even.php?phpfunction isEven($n){return ($n % 2 === 0);}if(isEven(2)){echo "even";}else{echo "odd";}偶数であればtrue(真)を返す簡単な関数だ。このコードのオペコードを確認してみると、$ ph...

 

PHPのVLDでforとforeachを比較する

$arr = range(1, 100000);のような配列があった場合の繰り返しで、$cnt = count($arr);for($i = 0; $i $cnt; ++$i){//処理を書く}foreach($arr as $i = $v){//}上記のようなfor文かforeach文のどちらを使えば良いか迷う。そんな時はVLDでオペコードを確認してみたり、実行速度を確認してみると迷いがなくなる。先に...

 

PHPのVLDでfor文を見る2

PHPのVLDでfor文を見るの記事の続きPHPのfor文の書き方で、//$arrには配列型のデータが格納されているfor($i = 0; $i count($arr); ++$i){//処理を書く}上記のコードのようなforの二番目の式でcount(配列)を書くのはよろしくないと記載されていることが多い。理由はfor文による繰り返しの際に都度、count関数を実行する事になり、関数の実行は処理が重いからすべきではないという。実際にどれ程...


Powered by SOY CMS  ↑トップへ