So-net無料ブログ作成
プログラミング ブログトップ
前の10件 | -

おめでおま! [プログラミング]

ドラクエウォークのゆっくりと貯めたふくびき券の10連が、金の箱が三つで虹色なしという結果に終わり泣くw。出てきた初めはみんな銀の箱だったので、死んだ…と思ったんだけど途中で三つ金に変わった。でも、金もほぼハズレでした。やっぱ人生のくじ引き全般に引きが弱いなぁと思うわけで…。やはり五つ星のアイテムが欲しいよなぁ。4つ星のアイテムだと強化するかどうかで迷う。五つ星だと間違いなく強化しても問題ないんだけどねぇ。


やっと次の仕事が決まったのだけれども(それで「おめ(でとう)でおま!」なんだけど)、提示された仕事とはちょっと違う方向にやることになりそう。来年からスパコン管理者だと思っていたけれど、その希望はあまりなさそうな感じ。いつも始めに応募した仕事をさせてもらえない私。最初の会社からそうだったけど、特に突出したスキルがあるわけじゃないから仕事のあるところに行くしかないんだよなぁ。

しばらくやっていない仕事なのでSQLあたりから勉強し直しかもしれない。SQLって言語的に苦手なんだよなぁ。そもそもデータがないと練習もできないし、そのデータもそこそこ量が多くないと話にならないしね。色々やるのに面倒。何をインターフェイスにするにしても、何のプログラミング言語を使うにしても、結局SQLは使うことになるから、HTMLよりか重要になってくる感じはある。まぁWebインターフェイスにしたら俄然と大きな問題になってくるのであるのだが。


今書棚を漁ってみたらSQLの本が三冊もあった。MySQLに絞った本も含めると四冊かな? それだけ以前も仕事に使うと思って買ったんだろうけど、内容が全然覚えていない。というか、それを使った時は読んで必要なところをパクってそれで終わりにしたから身についていないんだろうな。言語は使っているとそこそこ基本文法ぐらいは何も見なくても書けるくらいにはなるもんだけど、SQLはほとんど覚えていないなぁ。

最近DB使ったのRuby on Railsぐらいだし、基本ORマッパーを使うからSQLは使わなくてもいいんだよね。最近のORマッパーとかのライブラリとかは、SQLインジェクションを防ぐ仕組みが取り入れられていて、そういう意味でもSQLの出番は少なくて考えなくて良くはなってはいる。だからと言って、SQLが全くできませんじゃ通らないから、一応おさらいはしておこうと思う。

まぁDBの雛形を作るときと、select文ぐらいしか使わないんだけど、結局何も見ないで書くこともあるのかなぁ。リファレンス見て、例文をちょこっと変えて使うみたいなことになりそうだなぁ。たぶん、前もそういう使い方をしたのでSQLを覚えていないんだと思う。ASPで既存のDBちょこっとイジったぐらいだし。結局、どこまで求められるのかがわかんないんだよねぇ。とりあえず、仕事が来てからでもいいとは思うんだけど、ある程度のことは思い出さないとキツそう。

結局、Webアプリでデータストアしたいという目的でDBを使うもんだから、SQL自体を駆使してなんとかするということも以前なかったのかもしれない。業務系のSEだとSQLバリバリでいいんだろうけど、正直そこまでデータをいじり倒したい気持ちにもなれないし、今のフレームワークなどはSQLレスで構築できることも多くて、それもまたやる気を削ぐ原因になっている。


最終的には「PHP+なんかのDB+なんかのWebサーバ」でWebアプリを作るということになりそうなのだが、実際的にはフルスタック技術者にならなくてはいけなさそうなんだよね。チームで部分的にやればいいんだろうけど、結局いつものように一人プロジェクトみたいな形になっちまいそうで嫌な感じだw。まぁ一人の方が仕事量を抜きにしたら気楽というのもあるが、いざという時に技術的な相談ができる環境であると助かるんだが。助言をする方がバリバリわかっている人だと、なんとか使えばいいんじゃないの?で解決してしまうこともままあるし。

フルスタックという意味では、Webのフロンドエンドというか、JavaScriptとかがちょっとしんどいかもしれない。JavaScript自体はそこそこ書けはするけども、正直便利なライブラリを使いこなすぐらいの知識があるとは言えない。Webインターフェイスはかなり凝りがちがあるというか、ある程度力を入れないと使いやすいものにならないので結構しんどい気はする。これでデザインも云々と言われたらパンクしそうである。


基本的にあまり残業したくないって言って、それを承知してくれて入れてもらったと思ったら、やっぱりそうでもなかったという結果になりそう。まぁIT系に残業はつきものですものね。分かるけど程々にしたいものですね。

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

使わんかもしれないけどPHPを使ってみた。 [プログラミング]

よくプログラミング言語的にPHPはクソだという話は聞いていました。だけど、その成り立ちから言語というよりHTMLジェネレーターという側面が大きいような気がしています。

https://note.mu/shimakaze_soft/n/n03992e2e8c22

Rubyのまつもとさんも苦言を述べていますが、確かに初心者でも扱えるツールではあるけど、Webアプリケーションをなめるな、という言葉はわからんでもないです。確かに言語という前提から言うと、一貫性というものは欲しいものですし、そこまで厳密にやられたところで書きにくかったら本末転倒な気もします。本当の言語は割合いい加減で例外も多いですが、プログラミング言語はそうも言っていられません。

C言語は高級言語と言えないほど低級の(低レベルで使える)言語ですが、それほどボロカスに言われることは稀です。だけどPHPが貶されるのは、他でも代替が利くところでしょう。C言語はOSを開発したり、言語を開発したり、プアな環境でも動いたりしますが、PHPは別に使わなくて大丈夫というところにあるんじゃないでしょうか。単純な言語仕様でいろいろな書き方ができるという点に於いては、C言語もPHPもそんなに違いはない気はします。

C/C++は代替がないと言いましたが、それは一部の話で普通のツールは別に言語を使っても問題ありません。GolangもRustも今ではあるので、代替はできないわけではないでしょう。そういう意味ではPHPと同じなのかもしれません。ただ言語の素養の悪さは生まれの悪さに影響されていて、作った人も簡易言語にそんなことを言われてもねぇ、という感じではあるようです。まぁ言語を建て増しすると文句を言う人は出てくるものです。Visual Basicでもそんなのあった気がしたな。


とりあえず、Macに入っているか見てみたらデフォルトで入っていました。

$ php -v
PHP 7.1.32 (cli) (built: Oct  2 2019 02:04:02) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

$ which php
/usr/bin/php


というか、/usr/binに入っているなんて、システムの何かに使っているのかな?
まぁよくわからんですが新しいPHPは入っているようなので、別途Homebrewなどで入れる必要はないと。

このphpにスクリプトを食わせると、HTMLを出力するのでしょうが、Webサーバとして使うというところまでやらないとやった気になりません。なんか言語仕様だけを示したページがあったけど、それじゃお手軽にページを作れるという利点を体験できません。

つらつらと読んでいると、懐かしいLAMPという言葉が出てきました。Linux, Apache, MySQL, PHPということですね、PHPを使う場合。今回はMacでやろうと思っているので、ApacheとPHPは元から入ってますね。DBを入れるだけでいいんだけど、MAMPというものが揃えてくれるってどこかに出てた。

MAMP
https://www.mamp.info/en/mamp/

ううむ、立ち上がるのはいいが、PHPのスクリプトをどうやって喰わせるのとか英語でわからん。どこにphpのスクリプトを入れればいいのだろうか…。

DB使わないでいいから試せないかな?

https://qiita.com/shuntaro_tamura/items/bdabcb77926dc92617b1

そこそこ面倒臭い。XAMPPを使おう。これならどこに入れるのかとか書いてあったし。

https://www.apachefriends.org/jp/index.html

XAMPPの"Go to Application"からphpMyAdminを開こうとしたら

アクセス禁止!

新しいXAMPPのセキュリティコンセプト:
は、要求のディレクトリへのアクセスは、ローカルネットワークから入手可能です。
この設定は、ファイル"で設定することができますのhttpd - xampp.conf " 。

と出てきて良くわからなかった。MAMPの方はphpMyAdminを開けていた気がするなぁ。

やっぱMAMPにすることにして、「アプリケーション>MAMP>htdocs」にphpファイルを入れればいいことを知る。Launch Padじゃディレクトリ出てこんのかな?

https://web-camp.io/magazine/archives/5661

上のサイトのようにやってもダメだった。
http://localhost/ にアクセスしてもエラーが出る。

それは http://localhost:8888/ に変わっているみたいだ。MAMPで起動されるページがそうだから、それと同じようになっている。まぁ80ポートだと管理者権限で動かさないといけないだろうからな。

「phpinfo.php」は、以下の内容をコピーしてください。
<? phpphpinfo(); ?>

って書いてあるのでファイルを作って
http://localhost:8888/MAMP/phpinfo.php にアクセスしたんだけど、自分が作ったものと違うページだった。ただのテキストファイルを入れてもそれが出てこなかったから罠に引っかかるところだった。

自分が作ったファイルはこっちのURLでした。
http://localhost:8888/phpinfo.php
というか、そういうのどこかに書いてあるのかなぁ。

でもそこにアクセスするも何も表示されない。エラーとかならわかるんだが何も出ないのはおかしいと思い、ソースを見ると、上の文字列がそのまま出てくる。何がおかしいのかと言うと

<? php phpinfo(); ?>

とphpの後に空白を入れるだけでした。というか、そういう凡ミスを何もわからない初心者のページでやるのかよ。クソサイトも甚だしいなw。バージョンとかで動かないならまだしも、これは単なるタイポでは? 最悪である。よくありがちなんだけどな。

そんなわけでphpファイルをインタプリタさせるだけでかなり試行錯誤をしなければなりませんでした。初心者は何が悪いのかがわからないから、とりあえず確実に動くことを書いておいてもらわないとハマるに決まっているじゃないですか。それなら公式サイトに書いてある方法を一からやったほうがいいような気がするんですがどうなんでしょうね。

この先、MySQLを絡めてやっていこうとすると、さらに面倒臭くなりそう。どうしようかなぁ。どこまでやろうかなぁ…。

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

いろいろ動き始めた。 [プログラミング]

今まで待ちの状態だったんだけど、ようやっと動き出せそうな予感がしている。勝手に自分で動くこともできたけど、自分でできることなんて割と少ないんだよねぇ。できないこともないんだけど、それが利益に直結するかは微妙なところで、まず金にならない。さらに気分がふさぎ込みがちで、何かを始めようとする気にはあまりならなかった。

ドラクエウォークとライザのアトリエは始めたけど、所詮遊びではあるしもちろんお金は生まない。だけど、まだ消費する気持ちができるだけマシになったというものだ。そういう心の動きは少しはある。正直何をしていいかわからない状態よりかはいい。積みアニメも積み本もたくさんあるけど手をつけられていないよなぁ。時間はそこそこあるんだけど、モチベーションが上がらないというのはある。だから仕事で強制的にやるというのも手なんだけど、自分がやりたいことをできるというわけでもないですし。

40も半ばにして言語を新しくやる事になるかもしれない。今はわりとWebで勉強できることも増えてはいるけれども、やっぱり本を買って体系的な情報を入れておくと安心できる。ピンポイントに知りたいことを知るにはWebでもいいというか、Webの方が楽に得られるんだけど、知っておいた方がいいものをドンと揃えるには本は欠かせないんですよね。確かにいらない情報も多いんですが、それはそれとして。

プロジェクトが立ち消えになる可能性というか、自分に任されないことも多そうなので、まだ本は買ったりはしないけど、立ち読みして当たりはつけておこうかなぁ。そういう時はフィジカルな本屋はいいよな。というか、今はAmazonとかに頼りすぎな気がする。


ソフトウェア技術的には久しぶりのガチの仕事なんだけど、初見の言語をやるというのは本当に久しぶり。15年ぶりくらいかなぁ。プライベートではGolangとかやったんだけど、それはなんとなく書けてしまうので、技術本は買っていないんだよなぁ。マカーなのでObjective-CもSwiftもやりましたが、そっちは分厚い本を両方とも一冊ずつ買っていました。あんまり読んではいないけどね。そしてあまりMacでは開発もしていない。

最近Rustも興味が出ていて4000円近くの分厚い本を買おうかなぁとちょっと思ってしまったんだけど、その前に開発環境を入れろとまともな天使が囁いたので買っていません。Rustも惹かれるんだよな。長いことコンパイル言語でメモリを気にしないで済む言語ってなかったから(あったとしてもマイナーだったと思う)、最近こういう言語らが出てきて嬉しく思う。

GolangにしてもGCでメモリを気にしないで済むし、Rustも静的にメモリ解放の処理をコンパイルの時に自動に埋め込んでくれているようだ。AppleのSwiftにしても同様なARCでメモリを解放できる。GCはJavaの頃からあったけど、方式はどうあれメモリの処理間違いを防ぐ方法が提供されているのは楽ができる。というか、今更そういう仕組みが導入されていない言語は使いたくはない。

一時期LL、スクリプト言語がもてはやされた時があった。古参のPerlを始めPythonやRubyなどが割と流行っていた時があった。それはそれでいいとは思っていたんだけど、実行速度やメモリの使用量が云々というのがあまり許せなかった。正直、実行速度やメモリ使用量を気にするほどのことをやっていないので、別にLLでもいいじゃねぇかという感じはしているんだけども。

だけど、いちいち実行環境を揃えないといけないっていうのはしんどいかな。それもバージョンとかを気にしないといけないのは、中身をテキストでいじれたとしても動作を確定できない状態ってのはあまり嬉しくないですよね。というか、テキストをいじって動けるようにしてください、っていうのは長い間開発で使うには改造しやすくていいのかもしれないけど、ソースを残しておいてもらえば実行ファイルにしてもらった方が直感的に使えていいような気がする。実行環境を作るっていうのはどの言語にしても結構しんどいんだよね。だから、どの環境にもバイナリを提供できるGolangはその思想自体が好き。


Javaは1.2の頃に好きだったこともありました。今考えるといい思い出ではあるんですが、Write Once, Run Everywhere(だっけ?)がスローガンだけで終わってしまったのが残念でしたね。個人でJavaがネイティブで動くチップを搭載したマシンを買おうとかしていましたもん。そのうち、データベース周りのビジネスロジックを書く言語とおとしめられて、そんなもん使うかと思って離れてしまいましたが、中途半端だけどコンパイルしてくれていたし、コンパイルした上でGCが働いてメモリの解放を気にする必要もなかったのは良かった。

もともとGCはスクリプト言語のメモリ解放ツールだったと思うけど(LISPとか?)、コンパイル言語に来るのは割と遅かった気がする。Javaは初めからそうだったけど、きっちりコンパイル言語としてGCを使っていたのはGolangが大々的だった気がする。他にもコンパイル言語でGCを使っていた言語もあったんだろうけど、結局のところマイナーの域を出ないものだったろうし。

GCも色々と形式があって、得手不得手があるみたいなんだけど、実行時に解決するものなので、メモリもマシンパワーも食う。インターネットの黎明期にスクリプト言語が動いていたとか、プアな環境でEmacsがLISPで動いていたとか信じられないことがあるんだけど、便利なテクノロジーは使ってみたいという技術者のエゴが働いていたんでしょうね。

まぁ今Emacsが重くて動かないハードウェアはそんなにないだろうけど、そもそもユーザー数が少ないだろうしね。というか、Emacsはカスタマイズが命だけどもいろんなところで使うにはいちいちそんなことしていられないというのがあると思う。今だったらクラウドに状態を保存して、環境構築を自動でやらせるということもできなくはないんだろうけど、そういう観念が存在する頃の代物ではないしね。それと外と繋がっているとも限らんし。まぁ普通は内蔵エディタはviとかを使うよね。

コメント(0) 

excelからDBを見にいくにはどうすんのかなぁ [プログラミング]

DBは何使っているんだかわかんないんだけど、ExcelからRDBを読みに行くという話があった。事前に調べておこうと思ったんだけど、今までAccessでODBCを使ってOracleの中身を見にいったことぐらいしかなくて、VBAとかそんなのは関係なかった。GUIで設定できたので見れば思い出すと思うんだけど、昔の方法論がまだ生きていると言う意味ではOffice VBAと同じなので親和性はありそう。

http://excel.style-mods.net/tips_vbs/vbstips_9-01.htm

つなぐだけなら以下のコードでできるらしい。
Set objConn = CreateObject("ADO.Connection")
objConn.ConnectionString = "DSN=DSN1;UID=user1;PWD=password1;"
objConn.Open


UIDとPWDはDBを使っている人に聞くとして、DSNってなんだっけ?
DSNはたぶんGUIで作ったような気がするな、Accessの時でも。

https://docs.oracle.com/cd/E16662_01/quickstart/html/admin/dsn_setup_windows.html

そうそう、旧態然としたこのGUI。適宜情報を入れていけば自分の作った名前でDSNができたはず。これかどうかはわからないが、今でもODBCデータソース・アドミニストレータってあるのかしら。Macでこれを書いているので、Windows10で入っているのかどうかはよくわからない。まぁ入っていなかったら入れればいいんじゃないかとは思うけどどうなってるのかわからん。

https://docs.microsoft.com/ja-jp/sql/database-engine/configure-windows/open-the-odbc-data-source-administrator?view=sql-server-ver15

あ〜Windows10でもあるっぽい。まぁそうだよな。これでつなぐ設定はできそうなことはわかった。細かいところの設定がわからないのは別に探そう。



探していたらADOでつないで処理するソースが見つかった。

http://firebirdwiki.jp/webroot/?Excel%20VBA%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%28ADO%E3%80%81ODBC%29

ADODB.Connection.OpenにDSNやらの設定を全部突っ込めばいいっぽいが、如何せん細かい文字列をどこから取ってくればいいのかがわからない。ただそれさえわかれば、ODBCデータソース・アドミニストレーターでDSNを設定してあげなくても、そのままVBAを実行してつなぎに行けそうではある。


DSNを設定する場合にはこっちでもできるっぽい。

http://excel.style-mods.net/tips_vbs/vbstips_9-06.htm

DSNを設定した方が楽そうだ。ただポータビリティは無くなる。どっちにせよつなぐだけの用であればDSNをGUIで作った方が早そうだ。どこでも動くようにしろと言われた時には、その時に対応しましょうかね。直でソースに書く文字列の調べ方はおいおいやっていくということで。

ODBCとOLE DBはやり方が違うみたいだけど、イマイチその違いがわかるまで見てない。どっちもADOみたいだしよくわかんないな。とりあえず動かすという観点で動こう。どっちがどうとかはまぁいいや。前に.NETのドライバを使っていると、COMなVBAでは使えんという話があったけれども、対応するDBが昔のままのODBCを使っているといいな。

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

プログラマとして一からスクラッチするのと、既存のソースを修正するのがうまいのと分かれる気がする。 [プログラミング]

プログラマーは、何もないところから作り上げるのが上手なタイプと、すでにあるソースに手を入れるのを得意とするタイプの二通りある気がする。どちらがどうというわけでもないのだが、相補的な関係ではあるかもしれない。

最終的にできるものを想像するのが得意な人は、一からスクラッチしてコーディングするのも苦ではないだろう。というか、そういう人を尊敬することも多い。やっぱり無から有に移行させるのは難しいことではあるからだ。

ただ、一からスクラッチというのはわりと限られていることかもしれないなと思ったりもする。大体のプログラミング言語には標準ライブラリ的なものが存在するし、スクラッチといってもそれから書く人はそんなにいないからだ。と思っていたらツイッターで、qmailがstdio.hすらも自分で書いているというのを見て、世の中には奇特な人もいるもんだと思った。


qmail懐かしいという話だが、僕もしばらく前にPostfixを仕事で使ってちょっと懐かしい。

https://www.orangeitems.com/entry/2019/10/08/171743

5年前くらいにPostfixの設定について書いた記事がそこそこ人が来ていて(6千PVくらい)、参考になればいいのだけれども、見た感じ直接解決できるような文章じゃないよなw。

https://miff.blog.ss-blog.jp/2014-09-28-1

まぁstdio.hを自作するようなものは狂った設計と言っていいのだろうけど、そこまで自作しなくてもいいよなぁと思うことはないこともない。そもそもLinuxだってminixを見て案外OSなんて自分でも作れるんじゃね?という感じで作ったみたいだし、OSをスクラッチすること自体はやっぱりかなり狂った行為であるとは思うんだよね。まぁgitを2週間で作ってしまう人ですから、OSぐらいは必死こけば作れるんでしょう。

そういえばOS自作入門なる本が出ていた時もあったな。正直ちょっと惹かれた。


30日でできる! OS自作入門

30日でできる! OS自作入門

  • 作者: 川合 秀実
  • 出版社/メーカー: 毎日コミュニケーションズ
  • 発売日: 2006/03/01
  • メディア: 単行本



OSまでは作らないにしても、OSに関連することってのは興味ある。脆弱性のこととか、デバドラのこととか。OSのことを気にしないといけないほどのソフトを使ったことがないというのが悔やまれるところだが、今からでも少しはやっていきたいとは思っている。だがいつも思うだけでやれてない。

Windowsのデバドラは仕様が結構コロコロ変わっているみたいだけど、Linuxはどうなんだろう。そもそもLinuxのデバドラってどういうものなんだろうな。本は買ったけど積ん読だ。ちょっとは読もうかな、遅ればせながら。


Linuxデバイスドライバプログラミング

Linuxデバイスドライバプログラミング

  • 作者: 平田 豊
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 2008/06/28
  • メディア: 大型本



かなり前にOSのリブートなしにデバドラなどの変更に耐えられるように作ってあるって書いてあった気がするんだけど、OS側の対応だけで実現できるものなんだろうか。ドライバ側の対応が必要なら面倒な話になっているだろうな。まぁちょっと前対応したカーネルを使っていても、機能をイネーブルにしていなかったみたいだから、今でも一般的に使われているんだろうか。

モノリシックカーネルとかマイクロカーネルとか名前は聞いているものの、結局のところ実際の状況がどうなっているかはわからない。少なくとも人に説明できるだけの知識だけでも仕入れていない。そこまで説明したがる人がいないってのが、わからない理由になっているのだけれど、自分で深掘りできるほどいろいろなことがわかっているわけではないしな。他人のC言語のソースを読むというのはそこそこ苦痛でもあるし。


多くの人は既存のものに手を加えるのが仕事になっていることが多いと思う。Linuxがスクラッチされたと言っても、それはごく初期の話で、そのあとは多くの人がパッチを当ててきたのだろう。確かにやり始めた人は偉いが、周りで寄ってたかっていじる人たちの存在も必要というのは間違いがないことだ。

そもそもプログラミングというものが既存のソースを自分のいいように改造するというスタンスがわりと一般的だと思うので、作っていく過程がそういう改造的なものになっていくってのは必然なのかもしれない。ただLinuxのようなデカいプロジェクトで烏合の衆がうまくまとまっていくのは、論理的な論議が不可欠なんだろうなと思う。


なんにしても切り目をつけて色々しっかりしたい。結果が出ても出なくてもやってみるというのがスタートラインだって今更思った。40過ぎたおじさんの言葉じゃないけど、やりたいことをやるということを改めて実行していきたい。

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

ドライバとスタブって何だったっけ? [プログラミング]

ドライバとスタブなんて基本情報技術者試験とかにしか出てこないと思うのだけれど、一人プロジェクトとかが多かったため、言葉の意味合いを細かく考えたことなかった。第二種情報処理技術者試験の時にはきちんと覚えたんだろうけど、正直使わない言葉は忘れる。

この下のサイトの図を見て納得したんだけど、呼ぶ呼ばれる関係はそんな感じである。
http://tooljp.com/windows/chigai/html/Programming/driver-stub-chigai.html

ドライバ
 ↓(コール)
テスト対象
 ↓(コール)
スタブ

言葉で書くと位置関係がわけわかんなくなるけど、図示してしまえばそれで終わりである。上位モジュール下位モジュールとか書いてあると余計にわからなくなる。
https://www.fe-siken.com/kakomon/19_haru/q44.html

テスト対象を呼ぶのがドライバである。
テスト対象に呼ばれるのがスタブである。

状況から考えると、テスト対象のものを作ったけど、ミニモジュールに呼んでもらうとそのミニモジュールがドライバだということになる(ドライバは上位とされる)。テスト対象から呼び出そうとするけれども、呼び出そうとされる側が出来上がってないとかでミニモジュールを作って呼ばれるものを作った場合、それはスタブである(スタブは下位とされる)。

自分が書いたテスト対象は、ドライバでもスタブでもないところが混乱してしまう原因の一つかもしれない。本当なら本番環境で結合試験をしたいのだが、それができないので擬似的なモジュールで対応しようという話だからそもそも面倒ではある。


デバイスドライバという言葉があるが、「デバイスを呼ぶ」という意味で「ドライバ」という言葉が使われているのかもしれない。というか、一般的にはドライバと言うとデバイスドライバのことを言うので、そこから覚えてしまえばいいと思う。デバイスを従えるためのソフトみたいな。

何にしても位置関係がわかりにくいと思うのは私だけでしょうか。それに上位下位は結果的にそうなると思うので、呼ぶ呼ばれるで覚えた方がいい気はします。

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

SwiftとGolang並行してやるとわけわかんなくなりがち。 [プログラミング]

どっちもそれほどクセが強い言語ではないので、いわゆる常識的な範囲では混乱する事はあまりない。もともと用意されたライブラリを使ったり、ありもののソースを改造したりするので、そこまで文法で引っかかる事はないのだが、細かいところはやっぱり引っかかる。

最近の言語はお互いに参考にしているところが多いので、プログラマのコモンセンスが割と役に立つ。とはいえ、やはり別々の独立した言語なので、そもそもの演算子がなかったりあったりで、こっちはそういうのなかったんだったっけという場面も少なくない。

Swiftは再三の要求を受けてAppleがOSS化したんだけれど、僕がOSS版を使った時はまだまだだった。そもそもAPTなどでパッケージ化されていなかったり、コマンドラインで必要な部分のライブラリがスタブ状態で実装されていなかったり、コマンドラインのツールを作る程度の状態にはなっていなかった。

今の状態はわからないけど、たぶんSwiftは基本的にMacやiOSのアプリケーションを作る言語であるという前提条件を出ない域であろうと思う。言語の素養は悪くないので、コンパイル言語としてもっと活躍してくれていないのは残念である。


同じコンパイル言語として、ガベージコレクションを使っているGolangだが、SwiftのARCにしてもメモリの解放を考えなくていいのは楽だ。というか、本来の処理を考えるとメモリの確保と解放は本来的な部分ではないことが多いので、言語側で処理してくれるのは正しい進化ではある。旧Objective-CとかC++がダメなのはそういうところだったから、LLのようなスクリプト言語のようなメモリの処理は期待されるところである。

それとGolangがいいのは他の人が作ったパッケージをサクッと使える仕組みである。gitリポジトリから取ってくるのかHTTPでアクセスして取ってくるのかは知らないけど、パスを指定してあげるだけで取り入れられるのは作る点においてしんどさが少なくていい。ソフトウェアは手元に自己管理で持っているというのがかなりしんどいことで、どこかで一元管理してくれていればそれに乗っかってしまった方がいい場合も多い。一度固めてしまったソースを弄られたくないとかなら、参照先が新しくなってしまうのはきついが、まぁセキュリティーも上がるのであればそれに追随すべきなのかもしれない。

SwiftがまともにApple以外の用途で使えないのであれば、Golangでやるのが筋なのかもしれない。というか、まともなオブジェクト指向のコンパイル言語が出てきたと思ったら、やっぱりAppleで使うのがせいぜいなんかいというのが、やっぱりAppleという企業の懐の浅さを示したところだろう。そもそもOSSにするのさえ渋っていたのだから、そのままOSSになったという時点でまだ歓迎するべきなのかもしれないが、その後があまり良くない。そもそもAppleとOSSというのはあまり相性が良くないのだ。それは多分最近のMSを下回るレベルだと思われる。


というか、Golangが出来てから、別に無理にオブジェクト指向にしなくていいんじゃね?という流れができた気がする。オブジェクト指向ではないのに加え、ライブラリパッケージが薄めにできているのも、Golangの性格が出ているようだ。あまり階層を深くして作ったところで、使うときに調べたりするのに面倒なのは余計な労力だろう。MSの.Net FrameworkやMacのCocoaはオブジェクト指向でシステムのAPIを組んでいるが、Linuxとかでオブジェクト指向のライブラリは少数派なんじゃなかろうか。結局、べったり平らな単純な関数が並んでいるAPIの方が使いやすいとされているような気がする。

一度はオブジェクト指向万歳な時もあったが、そのライブラリを作っている方としては組み直しがきついということを念頭に置いて設計しているとは思えなかった。Cocoaはやたらdeprecatedなメソッドがたくさんあった気がしたし、何年かしたら使えなくなるライブラリなんて使いたくない。


今、Swiftを全体をさらっておこうかなと思っていたんだけど、どうせAppleでしか使えない知識は覚えるに値しないんじゃないかと思い出した。その場で本などを見つつ書ければいいレベルの頻度しか使わないんだから、もっと別のことをすべきかもなぁと。でも文法の本ってさらっと流して読むってことがしにくいんだよね。どうしようか。

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

Swiftの関数の引数のアンダーバー。 [プログラミング]

Swiftをやる時にいつも忘れているんだけど、わりとすぐに思い出せないので書いておく。

Swiftの関数で引数のところにアンダーバーが出てくるのが気になる。

override func draggingExited(_ sender: NSDraggingInfo?) {


例えば上のだと関数のところにsenderという引数があって、その型はNSDraggingInfoだということだけども、アンダーバーはなんだということになる。

答えはObjective-Cにあって、メソッドの引数に名前をつける習慣があって、C言語みたいに関数でやっている分には引数の順番で判別するのだが、クラスの中のメソッドの引数はキーバリューみたいに一揃えにしていかなければならない。だからそれを省略して書く時にアンダーバーが必要になってくる。

Objective-CのCocoaに対応するためにSwiftでも引数が順番だけじゃなくて名前で判別する仕組みを取っているというわけだ。引数が一つだけだとかは面倒だから省略するのが普通なわけだが、なんかいちいち省略しますよと宣言するというのが気持ち悪いがしょうがない。

なんでこんな事を毎回やっているのかというと、この事実を明示的に書いているところがあまりないからだ。Swiftをやっている人は大体Objective-Cのことを知っているし、僕みたいにいきなり思い立ってやり直すという人が少ないというのもあると思う。そもそも_で検索しても情報がなかなか出てこないしね。文法とかはやっぱり本とかがあったほうがいいに越したことはない。Swiftは一冊買ってあるからいいとして、Golangって持ってないんだよな。
これあたり欲しい。翻訳本で高いがな。

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

  • 作者: Alan A.A. Donovan
  • 出版社/メーカー: 丸善出版
  • 発売日: 2016/06/20
  • メディア: 単行本(ソフトカバー)



Swift本はこれを持っている。簡単すぎないから大体のことはよく読めば載っている。あまり親切とは言えないが、少なくともググってすぐ出てくる情報ばかりではない。

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

  • 作者: 石川 洋資
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/01/17
  • メディア: 単行本(ソフトカバー)



[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus

  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/11/14
  • メディア: Kindle版




それにしてもguard文は必ずしも必要な感じはしないなぁ。便利は便利だけれど、他の言語であまり見慣れないものを見ると一瞬ムムムと感じてしまう。まぁ書いてあることを読める程度にはなっているけれども…。Swiftはコンパイラで検知できるバグは文法的に取っていく方針にあるみたいなので、ある程度書き方を強制されるところはあるかも。

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

コマンドラインアプリをGUIアプリにする前の下調べ。 [プログラミング]

MacでWindowsのShellExecute()のようなことをしたい場合どうしたいか、調べたらすぐに出てきた。

https://codeday.me/jp/qa/20190508/790510.html

壊れたような日本語に翻訳されたサイトですが事足りるので別にいい。要するにopenコマンドをsystem()関数で呼び出せば済むだけなので、ファイルのパスを探してくるだけで、手間はShellExecute()と大して変わりません。面倒がなくていいね。というか、コマンドになっているからシェルスクリプトに書けるというメリットがありますね。

そういやsystem()関数とか呼ぶのは、Swiftではどうやってたかな。というか、Swiftあんまりやってないんだよなぁ。SwiftとC言語の関数とかどう互換性があったのかよくわからない。

http://moapp.hateblo.jp/entry/2017/01/04/221623

system()関数を呼び出そうとするとエラーになるそうで。Cocoa的にNSTaskを使えばいいっぽい。

https://qiita.com/kitanoow/items/8b551a2d121ff95ef553

細々なことをしようとすると面倒臭いっぽいが、コマンドを発行する程度ならそんなに面倒じゃなさそう。ただコマンドのフルパスを指定しないといけないとか、UNIXのお作法的に気持ち悪すぎる。普通パスが通っているところにフルパスを指定するとか謎仕様なんだけど、パスを指定する設定がないので仕方ないのかな。

まぁMacだけで使うのでパスが固定されていてもそれほど問題はないのかもしれないけど、なんらかの変更があった時には対応できないよな。というか、そういう仕様はUNIXとしてかなり腐っている感じがするのは私だけでしょうか。

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

golangで次なにしようかな〜 [プログラミング]

これまでルータを超えてアプリを晒すことをGolangでやってきました。UPnPではある程度やったんだけど、ルータの腐れ具合がそれを邪魔していました。まぁできないことはないんだけど、一般的に動きづらい困難さはある。

IPv6での操作も考えたんだけど、これもルータの設定が必要でUPnPよりか(手動操作的に)面倒な気がした。そもそもGolangでのIPv6対応がまだまだというところもあって、今すぐがっつり使うには足りていない気はした。


そんなわけでP2Pアプリみたいなことをしたい自分としては頓挫したわけですが、Webアプリ的なところはGolangでもできていた方がいいなと思ったのでちょっと探したらginが簡潔で良さそうな感じ。

https://qiita.com/Anharu/items/ce644c521a4d52fafb7e

フルスタックなものは求めていないし、覚えるにもコストがかかるのでリスクが大きい。HTMLファイルに埋め込めて、サクッとテンプレート作成できればそれでいい。元々Golang自体薄い言語なので、組み合わせてファットなものは使わないというのがセオリーな気がするのですが。

アプリとはいえ特にDBは必須ではないにしろ、今更使わないという選択肢はあまりないのだろうな。色々なものをストアするのに手動でやる方が面倒だって気もする。だけど、そこまでやるほど大掛かりにしたいわけでも、自分の窺い知れない操作をやってほしいわけでもないんだよね。

gormという名前は直球というか単純というか。goのorマッパーだからってことなんでしょうけど、golangはオブジェクト指向ではないよなと思ったり。SQL作るのしんどいので、使うことになるんだろうなぁ。sqlxというのでも良さそうな気はするけど、SQLが嫌いなのでねぇ。

ORマッパーでググると頭に百害あって一利なしとか出てくるのですが、SQLを書くのがしんどい人にとっては他の色々なことも気にしないで済むのも楽できていいのかなと。少し訳のわかった人がラッパーの重鈍さを嘆く・叩くというよくありがちな行動なのですが、みんなメリットがあるから使っているのだから何言っても、正論だけど主流と違うよねというところに落ち着くのでしょう。なんつーか、物知り顔のおじさんばっかでこの業界ウザいw。


Ajax的なこともできたらいいなと思っている。今更Ajaxかよと言われるかもしれないが、やればやったで面倒だったり使うときには便利だったりするのでやれておいた方がいい。というか、Webアプリでも面倒でやっていないと思われる場面もあるので、訳がわかっておいた方がいいんだろうなと思ったり。

ごちゃごちゃ言ってきたけど、P2Pで使えるような機能が実装できればいいので、あんまり長く書かずにサクッと終わらせられればいいとは思っています。GolangでWebアプリを作るのがいいのかどうかは微妙なところですが、まぁそこそこ用意されているし、できないことはないし、Webサーバ自体はお気楽に短い行で作れるし、やってみる価値はありそうです。


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