SSブログ
プログラミング ブログトップ
前の10件 | 次の10件

プログラミング言語は使われていてサポートされていれば終わりではない。 [プログラミング]

よくPHPは古いだの、jQueryは時代遅れだの言われているようですが、過去のシステムをそれで作っていたら、それを面倒見ないといけないわけで、古いだの新しいだの言っているわけにはいかないんですよね。というか、この世の案件で新規スクラッチのシステムがたくさん存在するかと言われると、既存のシステムを改築する方がよっぽど多いんじゃないかと思うんですよね。

特に他の会社に入ってSEやっているとかいう人は、そこで使われているツールやシステムの面倒を見る要員として雇われているわけだし、新しく作るっていうのはそこまでたくさんあるわけじゃない。まぁ所によるとは思うけど、たぶん大体そんな感じ。Perlは今はそんなに使われていないかもしれないけど、台湾のえらいひともPerl後継を扱っていたようだし、その言語が終わるという事はなかなかに難しいことなのかもしれない。


Rubyとかは好きだしRuby on Railsとかはよくできていると思う。だけども、使われているサイト数を考えるとPHPの比ではない。まぁ自分が見たデータはWordPressも含まれている可能性は十分にあるけれども、PHPで動いているシステムは拡張子で分かるので、よく見かけることはわかる。少なくともJavaのTomcatでの.jspや.doなどよりかはよく見かけるような気がするんですが。

まぁ他の言語と同じように拡張子の偽装はできるので、簡単にその数を測ることはできないけど、社内システムでわざわざ下のようなことをすることはあんまりないんじゃないかと思ったりはする。

https://dev.classmethod.jp/articles/rewrite_url_using_reweitevalue_in_tomcat/

PHPでもApacheの設定でうんぬんできるようなので、あれもPHPだったという事もあるかもしれません。だから使われているサイトが少ないという事に直結することもない。

https://ameblo.jp/web-designers/entry-10426619511.html

というか、外向けサーバで.phpな拡張子丸出しは、歴史的な脆弱性から言うとうれしくない気はしますね。今では脆弱性が少なくなったとはいえ、裏で何が動いているのか察せられることをよく思わない、少しばかりの慎重さを見せることがないこと自体が問題かなと思ったり。要するに付けこまれるカモとみられやすいというか…。


最終的にはセキュリティとレスポンスが維持されていれば、何の言語を使っても同じだとは思いますよね。確かに書きやすい言語とそうでない言語はあるとは思いますが、そもそもWebシステム構築に使われる言語ってそんなに多いとは思えないですしね。

自分がPHPをやるまでは、こんなに良く言われていない言語ってないなと思ったものでしたが、実際に使って調べてみると、現状はそんなに問題となることはない、と言っていいのではないでしょうか。大方のシステムは問題のある5系から7系に移行しているだろうし、言語的に問題がある部分はどんどんなくす傾向にはあるようですし。

何か必要があってPHPを自ら使い始めることは少ないかもなと思ったりはするんですが、それでも初期的な学習コストは低めだし、そこまで悪いとは言えないとは思います。言語としての厳密性という意味ではあまりよろしくない状況もありますが、そんなことを考えるよりも動くものを作ろうという気になれば、それは枝葉末節の事柄に当たるのだと気づきます。

もちろん、コンピューター言語をはじめに習うのにPHPが向いているとは思えません。お勉強の面からすると推奨されるようなものでもないかもしれません。学習コストは低いんだけど、あまりにもWeb寄りの言語であることに、他の言語に向かいづらくなってしまうかもしれないなと思ったりはします。最初からWebサイトをバリバリ作るという気持ちがない限りは、仕事でアサインされてから真剣に勉強するでも遅くない気はします。


それと最近はプログラミングスクールとかで、Webサイトのシステムを作るというお題で勉強するみたいですが、本当にまっとうな意味でプログラミングをしたいと考えているなら、Webシステムはお勧めできません。何にしても知っていなきゃいけないことが多すぎる。

フロントエンド:HTML、JavaScript
ビジネスロジック:いろいろな言語
バックエンド:SQLなど

と一人でやるなら知っておかないといけないことが山ほどあるからです。これは正直ビギナーにはやることが多すぎますし、それをスクラッチでという事になると、数個のフレームワークを使う事になるので、自分で作った部分が単なるジェネレーターが出したコードの装飾みたいになる、ことになりがちだろうからです。何かが起きた時には自分で対処しずらくなる。

初めからフルスタックエンジニアを求められるのはきついと思うので、Webは要件が多いかもしれないけど、入り口としては結構地雷なのかもしれないと思っておいた方がいいです。実際、昨今のプログラミングスクールから採用されることは少ないみたいですしね。


それでもPHPがやりたい人は止めないけど、さほど良いものではない。PHPがサポートを止められる日が来るのはそう早くはないだろうし、これからも新規には少なくても使われていくのは間違いないところです。だからPHPは安泰だというつもりはないですが、少なくともPHPだけをやっていたら安泰じゃないだろうなとは思います。

よく初心者に何の言語をやったらいいですか?という話を見たりしますが、なかなか難しいですよね。一時期、メジャーになり基本情報技術者試験の課題にもなったJavaがありますが、今ではそこまで案件が多いように思えないですしね。まぁ全体から見れば割合は多いのかもしれないですが。

とりあえず流行りで行くというのもいいのかもしれません。できれば、自分がやりたいことと合致しているものがいいのですが、そういうものがきっちりあるという人も多いとは思えないし。今だったらPythonとかやっておけばいいんじゃね?ぐらいの事しか言えません。というか、すごいマイナーな言語以外は差分となるところを除いたコアの部分はみんな同じなので、何をやってもそこそこ応用が効くだろうから、自分が信じた道を行くのもいいと思います。正直、どう転ぶのかは誰にもわからない…

タグ:PHP
コメント(0) 
共通テーマ:パソコン・インターネット

jQueryでクラスセレクタで複数のチェック判定ができていなかった。 [プログラミング]

jQueryでの話になりますが、

<input type="checkbox" id="chkbx01" class="cb" value="1">ひとつめ
<input type="checkbox" id="chkbx02" class="cb" value="2">ふたつめ
<input type="checkbox" id="chkbx03" class="cb" value="3">みっつめ


とあるとすべてのチェックボックスにチェックを付けたり外したりするのに、クラスが同じなのを利用して
$(".cb").prop("checked",true);

とか
$(".cb").prop("checked",false);

とかで操作できると思います。#でidのセレクタを使って個別に処理しないで済むので楽です。


その逆というか、どれか一つでもチェックがされているかどうかを取るときに
$(".cb").prop("checked")

とすると、trueかfalseで返ってくるんですが、全部の状態を反映したものではない罠があります。
結果的にid="chkbx01"の状態しか取れません。

一般的な挙動としてclassに指定されているもので初めに見つけたものを示すようになっているようです。chkbx01だけの挙動を見ると問題なく動いているように見えてしまうので、他のチェックボックスをいじったときにビビります。


解決の答えを先に言ってしまうと

var checked = false;
$(".cb:checked").each(function(){
  checked = true;
})

でtrueになる場合、少なくとも一つはチェックが付いていることになります。$(".cb").prop("checked") を判定文にいきなりぶち込むと初めの一つしか判定できないので、上のように一段階噛ましてから判定に使う必要があります。


結局、$(".cb:checked")で取れる情報が複数になってしまうので、個別に判断しないといけないわけですね。JavaScript側としては、全部か個別かの判断はできないですから、考えてみれば自然なことかもしれません。

なので複数出てくる情報をeach()で回して処理するしかないようです。他に簡単にできそうなやり方がありそうなんですが、自分には見つけられませんでした。

ただこの処理法だと、全部チェックが付いているかや付いていないなどのパターンも処理できるので、
というか、そのために分けられているのだろうから、融通が利くわけです。たぶん、そうだと思います。カウンタを使って、任意のチェックが2つ以上の判定とかいう処理も可能になってくるわけです(あ、length()とかもあるのか…)。


自分はそもそもセレクタの使い方から調べ始めたので、ここいらの仕様にはちょっと難儀しました。
たくさんのチェックボックスじゃなければidを列挙して処理してしまうところでしたが、数的にそうもいかなかったので。idで前方一致とかでも良かったんだけど、元のソースがそういう感じでもなかったので避けました。

でも、よく考えれば当然なわけですが、クラスで全部チェック入れたり外したりできるのを見てしまうと判定するときもできるのではないかと思っても仕方ないところもあるかもなと思ったり(安易ですが…)。そもそもチェックを付けたり外したりする時にeachとか使わず、再帰的に全部を処理できてしまうところが誤解の元なんだと思います。内部的には回しているはずなので、そこを明示的に書かせて見せるか、隠蔽化してみんなが楽になるかなんでしょうが。


というか、nameで使うなら複数が引っかかってくるのを前提に書かないといけないと思うのですが、
ググってもサンプルが単一のチェックを拾うだけとかのものが多くてしんどかったです。まだidで判断とかなら単一なのでわかるんですが、classを使う以上複数の判定を考えるのが普通でしょう。そうしないのは説明が面倒だから?

タグ:JavaScript
コメント(0) 
共通テーマ:パソコン・インターネット

PHPのデバッガで文字列が途中で切れる。 [プログラミング]

EclipseとかVSCodeのデバッガで実行中のPHPの変数の中身を見れたりするのだけれど、その中身が不完全だという話。

ヒアドキュメントでSQLとかの文字列をべた書きにしていたりするのだけれど、あんまり長い文字列だと表示が切れるようだった。初めはヒアドキュメントの文字列の長さ制限とか、文字列自体の長さ制限かなと思っていたんだけど、全然違った。調べたんだけどたぶん2GBとか、普通に使っていれば何の問題もない上限だったと思う。

ヒアドキュメントとはいえ、2GBを超えるテキストというのはなかなかないと思うので、これがボトルネックになっているわけではなかった。何が悪かったかというと、どうやらXdebugにボトルネックというか表示制限があったようだ。

これはvar_dump用なんだけど、他の出力にも効くかな?

https://mawatari.jp/archives/do-not-omit-the-result-of-var_dump


Eclipse側にも表示の限界が設定されていて、それを意図的に取り払わないと見られないようだ。

https://www.it-swarm-ja.tech/ja/java/eclipse%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E4%B8%AD%E3%81%AB%E5%AE%8C%E5%85%A8%E3%81%AA%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/969626321/

ん~上手くいかない。デバッガ出力には関係ないのかな? EclipseでもVSCodeでも同じところで切れてしまうのは変わっていなかった。切れる場所も設定前も後も同じ。

やっぱSQLの文字列とか抽出して見たいときとかあるから(実際に別のツールでエラーが出てるか投入したりできるしね)、やっぱり全部見たりできた方がいい。

VSCodeで設定しないと切れるという話があった。ちょっとやってみる。

https://www.saaria.info/archives/3897

ダメやった。何が悪いんだろう。php.iniと同じ名前にしたらいいかなと思ったけど、それだとデバッガが動かなかった。なんだろうねぇ。それと無制限の-1の設定とかはVSCode側ではできないっぽい。まぁとりあえずは見られているからいいんだけど、いざとなったとき困りそうな気がする。

https://kitigai.hatenablog.com/entry/2019/06/20/004843

やっぱ-1とかはダメみたい。今度はphp.iniと揃えてみっか。ううむ、php.iniとVSCodeを揃えてみたけれどうまくいかないな。何が悪いのだろう。


ここいらへん見たけど、何が関係しているのかわかんないし。

https://xdebug.org/docs/develop#display

そもそも文字列の長さと
xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
が関係しているのかどうかも怪しいんですけどね。

そもそも文字列の扱いが内部的に一文字ずつのarrayだったりしたら長さ的に話にならないし。それこそ-1で無制限にしないといけないんだろうけど、それだとVSCodeで扱えないみたいだしね。なんか面倒になってきて諦めました。


タグ:PHP
コメント(0) 
共通テーマ:パソコン・インターネット

今更、判定文で迷っている。 [プログラミング]

今、if文の中の判定文で迷っていた。元々判定をしているところに、!で否定を加えて判定している。

if ( !A ){
  処理1;
}
else
{
  処理2;
}

こんな感じ。

単体でやるならまだ分かるんだけど、その後に || で追加判定させなければならなかった。元のところが否定でひっくり返しているんだから、他の判定文もひっくり返して使えばいいんじゃ?、と普通に考えたのだが、追加条件が複数で訳がわからなくなってしまった。動作もうまくいっていない。


しょうがないからif文判定の元々の中身を!で否定せずに、その後のelseで分けられているところをひっくり返した。
if ( A || "追加の判定文"){
  処理2;
}
else
{
  処理1;
}


そうしたら論理的に非常にすっきりして、すんなり条件を足すことができた。そんなのわかんないのお前だけだよと言われそうだが、わざわざ条件を否定して、分岐実行させるところを逆にする理由も強い意味がない限りは使わない方がわかりやすい気がするんだけどなぁ。否定することによって、わかりやすい時もたくさんあるんだけど、後で条件を足すときには否定でない方がわかりやすい。

そしてAの判定文が範囲だったりすると、それを否定して逆にしちゃうと一筋縄に行かない気がする。実際上手くいかなかった。単純に変数の単一判定(イコール0とか)であれば、否定しても他のも否定で裏返せば何とかなる気はするんだけど、それをつなぐ演算子をひっくり返さないといけないとか直感的に非常にわかりづらい状態にはなる。複数の条件を足さないといけなかったりすると、もはや記述上上手くいくやり方を書くぐらいしかできなくなってしまう。

結局、true,falseの話なんだけど、ドモルガンの法則とかあんまり理解できなかったしね。今でも使い方がよくわかんないよ。プログラミングにはあんがい数学の知識はいらないところは多いけど、ある程度行くと知ってないと話にならない部分が出てくるのは公然の秘密w。機械学習には使うだけならそこまで難しい数学の知識はいらないけど、作ろうしたり細かいことをしようとするとやっぱりそこそこ必要になってきたり突き当ったりするわけで。

でも、画像扱う時にjpegのフーリエ変換がわからなくても使えるしね。まぁそういうもんだよね。プログラミングは内部処理がわかんなくても、APIさえわかっていれば使えるところがいいよね。

コメント(0) 
共通テーマ:パソコン・インターネット

プログラミングスクールの是非が問われているけれど。 [プログラミング]

前からプログラミングスクールは授業料が高いわりには、ものになる奴が少ないと言われてきました。まぁ数か月習ったところで実戦配備できると考えている方がおかしいのだけれど、プログラミングスクール的には卒業すればすぐに仕事できますよ的なスタンスでいるのが問題なんだろう。

それとプログラミングスクールに行けば、普通の仕事をしているより高収入だろうからやりたいという人が集まってきている感じはしている。そもそも以前からプログラミングをしている人は少ないんじゃなかろうか。というか、今はプログラミングはおろかパソコンさえ持っていない人もいるくらいだ。

実際の採用の現場としては9割は落とすという話だ。まぁそれも仕方ないし、高い授業料が無駄になっているのは悲しいことである。

https://anond.hatelabo.jp/20210111163141

それで上手く就職できたとしてもブラック企業に引き渡されることが少なくないみたい。

https://anond.hatelabo.jp/20210106164243

簡単に儲けられる方法ってのはないってことですよね。ただ、素質のある人まで潰す必要はないんじゃないかなと思ったりはします。

プログラミングスクールの経歴はマイナスでしかないとまで言われるけれど、そこまで言われる筋合いはないと思ったりはする。それまでの採用実績から考えると、あまり採りたくないのはわからなくはないけど、何もしないよりかは数倍マシだ。

ただプログラミングスクールを出たからと言って、仕事がすんなりいくかと言えば、普通はそんなことはない。そこを危惧しているわけで、プログラミングスクールのお題をクリアしたからと言って、現場のコードをあっさり扱えるというわけではないのだ。プログラミングスクールを出ていれば、現場でも大丈夫だろうと思うのが普通に考えればその通りであって欲しいのだが、実際にはそこに乖離がある。

でも、プログラミングスクールを出てすぐに仕事をしようという人に対して、OSSの開発経験はあるのかとか聞く方も愚問だよなぁと思ったりはする。そもそも、そこまでプログラミングできる人はプログラミングスクールに行こうと思わないんじゃなかろうか。それでもプログラミングスクール+アルファの経験を求める会社も大概だと思う。プログラミングスクールに毛の生えた専門学校生を雇うのは年齢が若いからなんだろうか。自分の時は新卒一括採用でプログラミングを大してしたこともない、文系の学科を出た大学生をいっぱい入れていたぞ。

そう考えると、プログラミングスクールがやっていることは値段の割には足りないのだろうし、通っている人間はスクールに過度の期待を寄せすぎという事になるだろう。世間では取るのは無駄だと言われていたけれど、情報系の国家資格を取るスクールとかに行った方がまだやっていることの実効性は高いんじゃないかと思ったりする。

確かにプログラミングスクールは現場の作業のエッセンスを取得できることは間違いないんだろうけど、結局スクール生は過剰に期待しすぎだし、採用する方はあまりにないがしろにし過ぎだろう。ニーズが合致していないと言えば確かにそうなんだけど、やはりプログラミングスクールが期待させ過ぎて暴利をむさぼり過ぎという事なんだろう。

スクール卒業生は悪いとは思わないけど、世の中的にはそれ以上のものを望まれている。結局、未経験で通用するのは、新卒採用された人ぐらいという事なんだろうね。ただ、OSSなんかだと未経験だろうと何だろうと有用なことをする人は取り入れられるし、そこは自分の意識の高さなんだろうと思う。いきなり知らない人が入ってきても受け入れられる組織ってのはOSS以外にはあまり存在しないんじゃなかろうか。よく揶揄して意識高い系とか言うけれども、中途でプログラマになる人はそこそこ意識は高くないと入れないんじゃないかと思う。現場はあまり育てようとしないし、自分から育たないと話にならない。

何にしても仕事して食っていくのってのは大変ですよ。雇用者に甘い世界はないわけではないけど、それはIT業界にはそれほどないってことですよね。門外漢が入ってきてすぐ定着ってわけにはいかないのは世の常だと思います。

コメント(0) 
共通テーマ:資格・学び

ぺちぱーにねんせい [プログラミング]

PHPerになってから二年目に入りました。PHPばっかりやっていたのではないけれど、仕事ではPHPが主だなぁ。あとGitの操作にはまり、毎回ググっている始末。周りがほぼベテランで立つ瀬がないw

とはいえ、いい加減PHPも慣れなくて、気が付くと変数の$を書き忘れていて、何の違和感もなくするっと$が入れられたら、入門は卒業な気がします。とはいえ、他の言語に行ったときに$とか入れちゃいそうで、それはそれで悲しいですが。変数にプリフィックスを付ける言語って他にはあまりないのでね。インタプリタ的にはすぐに変数だとわかって、処理はしやすいのだろうけど、書く方としてはしんどいだけだったりはするよね。

一見C言語っぽいけど、標準ライブラリとか連想配列とかは便利で、いわゆるLL的な書き心地ではある。やはり言語の習得コストが低い方がみんなができるという点に於いて、広まり方が違うというのはあるだろう。オブジェクト指向言語は、クラスを使う時には楽なんだけど、いざ自分でクラス設計をしなくてはいけなくなるとしんどい面が出てくるというのがある。オブジェクト指向にもできたりできなかったりする点があるしね。一本筋で行けるわけがない。

あと案外、標準ライブラリの関数が便利で揃っているのもいいですね。実装に困って、これは自分でスクラッチしないといけないかなぁと思ってググってみると、大体既存の関数で行けることが多かったりします。やはり、Webアプリを書く専用の言語という事で、みんなやりたいことが同じだったりすると思います。大方誰かが書こうとして頻繁に出てきて面倒だったので、標準ライブラリの中にも入ったという事なのでしょう。

ただ結構関数の数は多いので、すべて覚えているというわけにはいかないので、そういう事ができそうで調べればすぐに使えるよな、という状態にはしておくべきでしょう。全く、そういう機能があるかどうかもわからないというところから始めるのはしんどいですから。そして自分で作った挙句に、機能強化版の標準関数があったりしたら泣くしかありませんからねw。


PHPをやりだした初めは新しい言語はしんどいなぁと思っていました。それに聞きしに及ぶところ、PHPは評判が悪かったですから、あんまりやりたいとは思っていませんでしたね。ただ、そういう声が多い中、案件は少なくなかったり、実際に使われているケースが少なくなかったりしたので、よく使われるから悪いところも見える、という事だと納得したつもりでいました。

確かにPHP5以前というか、5あたりまではひどいことも多かったらしく、次々にセキュリティホールが見つかって、それを使っていたWordPressはひどい言われようでした。今もセキュリティに関しては、WordPressは良いようには言われませんが、PHP7になってセキュリティにも気を配るようになったみたいなので、PHPの土台から瓦解するようなことはないと考えていいでしょう。ただ今はあまりないのかもしれませんが、PHP5のままのWordPressを使っていたとしたら問題が出ることはあるとは思います。作ったまま放置状態にされているサイトとかあるので、そういうのは攻撃の対象にされるでしょうね。

Rubyのまつもとゆきひろさんも、Webの構築言語をなめてもらっちゃ困る、みたいなことを言われていましたが、たぶんサイトの数としてはRubyよりかPHPの方がはるかに多いんだろうなとは思います。PHPは言語の素養うんぬんよりも、実際に書きやすいか、書いて使われているかに重点が置かれているような気がします。元々の言語の生まれが、名前にもある通り、簡単なHTMLのプリプロセッサであるので、万能の一般的な言語ではないことは確かです。

https://www.php.net/manual/ja/faq.general.php#faq.general.acronym

Javaにせよ、PHPにせよ、使う人が多いからその分悪いところも見えてくるというところなんでしょうね。悪口が少ない言語はそれはそれで、マイナーの域を脱していないのかもしれません。


あとは型がうにょうにょしているのがどうにかならんかという気はしている。特にNULLとかの扱いが万能すぎて、厳密に本気で考えると熱が出そうだ。あと数字でも文字列で比較しても、ベアな数字で大小を判断してもOKという、そういうおおらかさに逆に大丈夫なのかと思ってしまう。誰にでも股を開く女的なw。配列と連想配列の垣根もないも同然だしね。

普通のプログラマは今使っている変数の型を理解して使っていると思うが、PHPには良くも悪くもそれがないのが気持ち悪い。それで弊害が出なければいいんだけど、どこまで信用していいんだろうという信頼の担保が少ない気がしていて、実行の時でもコンパイルする時でも怒られた方が逆に安心するような気がする。なので、わけわからないけど気分で動いちゃってるソースがわりとあるんじゃないかと思うんだよね。


ぺちぱーはお気楽でいいけど、外向けの負荷が重いサイトにはどうなのかなと思ったりもする。ただ、そんなに処理が重くないサイトだったら、お手軽に書ける方がいいに決まってますよね。ただ、PHPでもかなり重い処理をさせていることも少なくないので、できてしまえば手段を問わないというのもあるのかも知れません。

にしても、PHP用のEclipseが悪いのか、LinuxのEclipseが悪いのか、わかりませんがいい加減エディタ周りが腐っていて辟易します。ほんとイヤ。

タグ:PHP
コメント(0) 
共通テーマ:パソコン・インターネット

Ruby3.0が出たらしい。 [プログラミング]

TwitterでRuby3.0.0がローンチされました、とありました。年も押し迫っている頃にリリースとか、あまり世の中を考えていない感じがしますが、そういうところ意識しているのかしていないのかわからないけど、そういう空気読めないの嫌いじゃないですw。

Rubyは1.9ぐらいの時にRuby on Railsをいじったっきりであんまり触っていなかったのだけれど、ver.2をすっ飛ばして3で状況を調べてみようかと思ったりしました。そもそも2で実現されていることはあんまり意識にないので、どこまで理解できるのか怪しいですが、静的型付けが何とかという話が出てきていた気がします。

そもそもver.1.8の頃、まつもとさんがRubyはもういいや的なことを言っていたので、プログラマ的に死んじゃったのかなと思っていたけど、mrubyとかやってたんですよね。そっちは本家Rubyほど盛り上がっていないみたいですけど詳しくは知りません。IoTは一時期もてはやされましたけど、そこまで仕事が増えている気はしませんし。まぁそういうメーカーだとたくさん仕事はあるのかも知れませんが、一般的にはRaspberry piとかArduinoとかぐらいしか聞き及ばないし、それ以外になると以前の組み込みな感じになっちゃうのかなぁ。


ともあれ、どんな感じになっているのか調べてみる。
 https://techracho.bpsinc.jp/hachi8833/2020_12_25/102455
たぶん静的型付けの話だと思うけど、rbsとかTypeProfとかはその関係だろう。実験的なものも含めると結構あるっぽい。ただ破壊的な変更ってのはなるべく止めて欲しい気はする。

とはいえ、新しい進化がないと言語として終わりかも知れないし。とはいえ、いまだにしつこくC言語は使われているしな。いや、C言語は嫌いじゃないけど、言語としてプリミティブすぎて、今から同じものを作るなら別の言語を使うだろう。とはいえC++に行こうとも思えないんだよな。あまりにもC言語に寄り添いすぎなのと、演算子オーバーロードなんていう基本的なところから定義すら可能ってところなどから、あまりに低レベルすぎて可読性が高くないのもある。演算子の挙動から考えないといけないとか言語としてしんどすぎるしな。


低レベルというと、やっていることのレベルが低いと誤解されることもあると思うんだけど、本で低レイヤーという言葉を書いていて、その言葉は誤解がなくていいなと思った。言語としては低レイヤーと書くのは、システム自体ではないのでレイヤというのは違う気もするけど、そういう概念であることは大きな違いはない。概念というよりも低レイヤ向きの言語ということなのかな。


Interface(インターフェース) 2021年 2 月号

Interface(インターフェース) 2021年 2 月号

  • 出版社/メーカー: CQ出版
  • 発売日: 2020/12/25
  • メディア: 雑誌



とりあえず、Twitterで見かけたので、この雑誌は買ってみた。技術者もおじさんになると、低レイヤーの方向に向かわざるを得ないのかも知れない。というか、表面のところは大体いじってわかっているので、根源的なところに向かいがちというのはあるのかも知れない。ただ、低レイヤと言われるところは、ある程度量と力技が必要だろうから、効率的にやらないとおじさんにはしんどい。

Ruby3.0もしばらくしたら技評の雑誌とかでも紹介されそうな気がするな。Ruby2.0の時もやってた気がするし、もしかしたらもうやっているかも知れない。最近、技術的な雑誌は全然観ていないから、今どういうトレンドになっているのかとか全然わかっていない。Pythonとかは相変わらず人気があるとかいうざっくりとした印象しか持っていない。

Ruby3.0も面白いかも知れないけど、そもそも以前のRubyを使いこなせていたかと言われると、仕事で使っているわけでもなかったからそうでもないと言わざるを得ない。やはり仕事で使わないと本気になってやらないんだよね。これを買ったけど読んでないしな〜。時間がないわけではないのだけれど、時間が取れないのは確か。


メタプログラミングRuby 第2版

メタプログラミングRuby 第2版

  • 出版社/メーカー: オライリージャパン
  • 発売日: 2015/10/10
  • メディア: 大型本



やっぱりRubyを使うならRubyでしかできそうもないやり方をしたいじゃん。そういう意味で、Rubyは掘れる言語ではあるんでしょうね。Golangでもそうだったけど、やりたいと思うことにわりと最短距離的なアプローチで到達できた気がします。何より書いていて楽で楽しい。そしてGolangよりかはRubyの方がより自由度が高い気がしていて、先進的な方向性を感じます。まぁGolangはより良いC言語という方向性もあると思うので、そもそも目指していたところは違うとは思うんですがね。

何にしてもプログラマはプログラムを書かないと始まらないよなと思うわけで。特に最近は自分のためのコードを書いていないので、仕事がユルくなってきたらちょっといろいろ考えようかなと思ったり。昨今のビックデータや機械学習には舌を巻くものがあったけれど、コーディングでできる力というところを信じていきたいと思う。

タグ:Ruby3
コメント(0) 
共通テーマ:パソコン・インターネット

eclipseはエディタとか基本的なところがダメなんだよなぁ… [プログラミング]

IT土方必携のアプリケーション、Eclipseですがエディタがずっと悪いよなぁ。改善はしていってはいるんだけど、必ずどこか変なところにバグか妙な仕様があって、IDEやる前にエディタから出直しなと思う点がかなりあったりする。これらはLinuxのEclipseなのでメジャーなWindowsとかでは違うかも知れない。まぁ大差はないとは思うけど。

Eclipseの最初の頃は、Tabの表示がかなりおかしかった。他のエディタで揃っているテキストが、Eclipseで見ると縦で揃っているところがガチャガチャだったりして、見るも無残なものでした。それはさすがに最近では直ったんだけど、たぶんマルチバイトの問題だったんじゃないかなぁと思ったりはした。海外製のアプリがマルチバイトにぞんざいなのはあるあるなんですが、IBM謹製のソフトがこんなんじゃダメだろと思ったりしました。まぁ元々IBMのものではなかった気はするんですが、OSSだからいいと許されるものではないですよね。

最近でもカーソルが消えるというひどいバグがあって、Insキーを二度押せば元に戻るものの、いちいち直すのが面倒だったりします。というか、エディタにしてもコンソールにしても、プロンプトというかカーソルが消えるとか前代未聞ですよね。わけわからない。Insキーを押せば直ればいいけど、何度もそれを繰り返していると戻らなくなって、Eclipse自体を再起動しなくてはいけない。面倒すぎる。そもそもEclipse自体が軽いアプリではないので、再起動は気軽にするものではない。

確かにGUIでデバッグできるというメリットなどはいいし、Javaなどで培われた便利ツールが組み込まれているのも、使わないよりかは使った方がいいに決まっている。だけど、細かいところに癖があって、知らないとハマる場所が結構ある。そしてその設定がそれほどわかりやすいものではなかったりして、ググればすぐ解決することも多いけど、自力ではキツイこともちらほらある。

そういえば、コーディングのサジェスト機能もガンだ。どうでもいいところで、「デフォルト候補がありません」ウインドウが出てきて、次の動ける範囲が非常に制限される。カーソルで動けなくなるとかどういうこと? 便利にしようとして不便になっている典型だよね。うまくいっている時はいいけど、それ以外のこと考えてないで機能追加するやつ。そういうのは害でしかないよな。

エディタぐらいと馬鹿にしているような奴が作っているのかも知れないが、開発者にとってエディタこそ命であり、枯れてくれなきゃ使いたくないものではあります。便利にしようという気持ちはわかるんだけど、それによって基本機能が阻害されてしまうようでは本末転倒も甚だしい。バグを埋め込むなとまでは言わないけど、積極的にバグを入れ込むのはよして欲しい。


Windows上で開発しているとかなら、テキストを別のエディタで編集することもそんなに問題ではないのかもしれないけど、仮想環境のLinuxだときつかった。今更viでコーディングするのはきついし、viは設定ファイルをちょこっと変える程度で、常用したいと思うほど直観的なエディタではないしな。でもVSCodeでSSH接続できるようになって、OSSを扱うにあたって俄然楽ができるようになった。viにろemacsにしろ玄人が使う趣が強いので、お気軽にWindowsエディタでLinuxとかの編集ができるようになったのは良いことである。さすがにgeditとかでコーディングする気にはならんしな。

にしてもVSCodeせよ、ATOMにせよ、メモリの消費量が半端なくて、昔のエディタでは考えられないほどメモリを使うんだよね。少なくとも設定ファイルを修正するくらいであればToo Muchである。色々機能を付けていくとそうなるのかもしれないけど、エディタはやること限られてそうなのにわりとやることが多岐にわたっているんだよね。それというのも、エディタを使うのがプログラマが多いってのもあると思うんだけど、それにしたってファットになりすぎっていうのも気になるところです。

そのうちWebの開発環境も、Docker + Xdebug + VSCodeになっちゃうんかなぁ。何にしてもLinuxのデスクトップを仮想環境でやるのってはあまり流行らないのではないかと思うけど、みんなが使っているからしばらくは移行しないんだろうなぁ。何にしても重い処理はしない方向に行く気がします。あと、無駄に知識のいる環境もいらないです。Dockerも簡単に使えなければ、VirtualBoxを使っていた方がまだマシです。やっぱGUIにはGUIの良さはある。自動化しにくくても、見ていじっていれば何とか使えるようになったりもするし、全く知識がなくても使える可能性があるという点においては、コマンドラインよりかはマシな面もあるんだけどねぇ。まぁ適材適所で。

タグ:Eclipse
コメント(0) 
共通テーマ:パソコン・インターネット

〜をPHPで使ったら文字列がごっそり消えた話。 [プログラミング]

〜と検索してもGoogleでは一般的にヒットしないのだが、「にょろ」とか「波線」とかするとやっと引っかかる。Googleも良し悪しだなと思うところがあるが、競合他社があんまりいないところで寡占状態で問題が出るところもあるのだろう。

PHPのWebシステムで、〜をWindowsからコピーして、VirtualBoxのCentOSに貼り付けた時に出た不具合があった。PHPに食わせるとその所の文字列が空っぽになる。初めはどの文字列が悪さをしているのかわからなかったが、HTMLの操作が悪いというわけではなく、PHPで操作するとその文字列が消えるらしかった。

CentOS上で〜を打ったら、文字列が全部消える現象は治まったのだが、何が悪かったのかいまいちわからずで、最終的には文字コードが関係しているのではないかということで納得した(あんまりちゃんと理解していないけど…)。とにかく〜が問題の原因となっていることはわかった。

状況としては、WindowsはShift-JISで扱っていて、CentOSの方は過去の資産だったためにeuc-jpを使っていた。というかWindowsもShiftJISかどうかはわからない。ShiftJISを扱うアプリも、API的には内部的にユニコードを使っていたりするらしいので、そこで問題が起こらないのかと思ってしまうのだが。現実としてはExcelの文字列をコピペして、VirtualBoxのペーストボードの共有で貼り付けたので、Windows側がUTF-8であるかも知れないけど、どちらにせよ文字コードが違うことは明らかであった。

波ダッシュ問題と言われているらしいが、かなり面倒な事になっていそうな感じではある。
http://blog.rodoku.net/article/28326088.html
https://qiita.com/kasei-san/items/3ce2249f0a1c1af1cbd2

とにかく文字コードによって扱いが違うということはわかる。OS間でのコピペが何やっているのかはわからないんだけど、一応見た目上は文字化けしていないので、表面上の処理はうまく行っているようだ。というか、そこで化けるようになっていれば、PHPに食わせて文字列が全部消えるみたいなことにはならなかったのだ。


文字コードが違うとなんで文字が消えるかという話になるのだが、PHPの関数が関係しているぽい。
https://qiita.com/CloudRemix/items/f1bc967984cf8bb121b5
https://php-archive.net/php/htmlspecialchars/

今回がhtmlspecialchars()が絡んできているかどうかまでは検証しなかったが、文字列が全て消えるという所は同じでした。というか、一部の不正な文字コードで変換する文字列が全部消えるとか、あまりにも切り捨てすぎな気がしませんかね。まぁそれでセキュリティホールになっちゃたまらんですが。

というかユニコードが一般的になって普通UTF-8でしょという世の中になっていますが、そこまでレガシーなシステムじゃなくてもEUCは残っていたりするので、まだまだ面倒なことになりそうな気がします。とりあえず文字コードが悪さをするということだけは覚えておきましょう。

タグ:PHP
コメント(0) 
共通テーマ:パソコン・インターネット

Javaいや [プログラミング]

職場でJavaはメモリ食い過ぎてクソだとかいう話になっていますが、JavaVMが悪いんですかね。コンパイルはするけど、結局バイトコードを実行するインタプリタ的なところありますからね。そのわりには、昨今の動的スクリプトのようには融通が利く感じではないのですが、ダックタイピングを許すような柔らかいものを作るものではないですからねぇ。

というか、使えるメモリを指定してあげるとか、昔のMacのアプリみたいでどうにも旧時代的に思えるのですが、それだけメモリが漏れやすいのかもしれません。それかGCがきちんと開放してくれないか。どっちにしてもメモリ関係で問題が起きやすい感じなのは否めません。

にしてもわりとOSSでもJavaで作っているプロダクト多いよな。Web系なら他にいくらでも言語があるっていうのに、Javaでがっちり作っているものも結構ある。Javaがいいというメリットみたいなものは、書いたり読んだりできる人が多いってことなんだろうけど、それは仕事に直結しているってことの裏返しに他ならない。結局、バックエンドのビジネスロジックを書く言語なんだろうなと思うけど、プログラミングを楽しくやろうという気持ちが伝わってこない。


その昔、ゴスリングを殴りに行こうぜ、みたいなことをどこかで書いてあったけど、Emacsのこともあり、Javaでもわりと悪名高いプログラマーである。基本的に金に魂を売ったプログラマーみたいに取られることが多いのかもしれないが、ある程度優秀なプログラマーであることは間違いない。だけど、多くの間違いも犯しているようだ。

そんなわけでJavaも普及してしまって必要悪みたいになっているけれども、Write Once, Run Everywhereを掲げていた時には、Javaはかなり光って見えていたね。僕としてはGUIのプラットフォームとして注目していたけれど、結局Swingとかは流行らなかったしね。多くのソフトウェアは作った人の思ったようにいかないってのはあるあるなのかもしれない。

仕事でかなり長い間Javaをしていなかったのだけれど、言語感覚としてequalsで文字列を比較するとか信じられない感じではある。シンタックスシュガーは少なめだし、どうにも書きにくいという印象がある。そして、書きにくい言語は気持ちよくないのである。色々な面で書いてあることや書くことが直観性から遠のくと非常にしんどくなる。

とりあえず、仕事道具として広まったJavaは嫌い。そして厳密すぎるオブジェクト指向もあんまり好きになれない。とはいえ、やれと言われたらやるけどさ。ただC++ができたからと言って、Javaがスラスラできると思うなよと言ってやりたい(誰に?)。

コメント(0) 
共通テーマ:パソコン・インターネット
前の10件 | 次の10件 プログラミング ブログトップ