プログラミング

2014年8月 2日 (土)

Javscript

ほぼ、ひと月ぶりの書き込みであります。

週末は、野良仕事でくたくた。

平日は、暑さに閉口。

そんなことで、写真を撮らないし、この時期は私にとって写真向きではないのであります。

で、

ひねり出した話題は

「Javascriptでオブジェクト指向プログラミング」

いろいろ、Javascript の使用方法などを、Web 検索で引くのですが、あまり「オブジェクト指向プログラミング」では、記述されていなかったりします。

jQuery plugin では、結構オブジェクト指向で記述されていると思うのですが、Source code までは読まなかったり、熟知した方の記述で読み取れなかったり、ということが多いと思います。

Javascriptでオブジェクト指向プログラミングの例を見様見真似で、プログラムを書いてゆくと、とても快適で、速くて、高機能で、品質が良くて、読みやすいものができると、断言します。

Web Browser で、すぐ実行できて、debug も高機能なので、開発環境はとても優れていると思います。

したいことが、いろいろ出てきて、その気になれるのであります。

そんな Javascript プログラムは、業務システムの開発だって十分。
ここのところを、Google は狙って chrome を出してきたように思います。

そんなことで、今は Ruby よりも もっぱら Javascript。

それでも、Javascript には、 Class という定義自体はないので、「Class」と「New」を作ってみた。

初めは、あまり高い効果がなさそうで、Class という明確な記述と、override したとき Base Class の method を呼べるようにしただけという感じ。

ドメイン特化言語(DSL)を作ろうとしたとき、これがまことに役に立ちます。

ただし、メモリ管理で、Browser で異なる仕様になっていて、特に local object が正しく処理できないのかと、思ったのですが、これが思惑通りに動作します。

このあたりは、継承のように javascript で仕様化されているのでしょう。

一番厄介だったことは、やはり ie で起こるのですが、簡単に function 名が参照できないこと。

ここでは、うまく正規表現と string の function を利用するのですが、実は良く理解できていません。

とある例をもとにしているのですが、「?」なのであります。

ほかの、例は非常に冗長であったり、今くゆかなかったりなのです。

たった一行(20文字ほど)で実装できるのですが、中には数十行の例も。

参考したもので、うまくゆかないものが在って、修正するのにいろいろ確認したのですが、?なのです。

それが string.mach()

使用がようわからん。

 


| | コメント (0) | トラックバック (0)

2014年4月20日 (日)

久し振りに Ruby

このところ、 Javascript ばかり(ちょっぴり C#)で、システムを作成しているのですが、

本当に久しぶりに Ruby プログラムの修正を行ってみた。

Fortran , Assembler , C , C++ をやってきた身としては、
Javascript の方が心地よい。

Class と New という function を作成して、

多重継承も基底Class の object へのアクセス、
コンストラクタもサポートしたので、かなり使いやすい

ただ、object 内の member 参照で in で順次取り出せるものと
そうでないものが判別できないのが、ちょっと痛かった。

Internet explore 7 以下は、厳しいものがあるのですが、まぁ何とかしています。

.net プログラムから Web コンポーネントを使うと、ie 7 対応が必要になってしまうのです。

こうすると、ほとんどの機能は、Windows 上では Javascript で作成できる。

.net は、言語仕様が安全志向でテクニックを駆使できないので「非常につまらない」。

 

| | コメント (0) | トラックバック (0)

2013年2月26日 (火)

Firefox OS smartphone が日本に登場する

このところ、Javascript で、DOM をいじくったり、XML等を Parse したりして、Object 化も 仮想化、継承も行えるようにして、いろいろやっております。

此処の Page をいじくることをきっかけとして、警察で運用されるものに発展させ、また此処の Page を飾っております。

このページの右上に青い月が輝くように昨日しましたが、それも Javascript (jQuery) のおかげであります。

今や、Javascript は、 Server side application として稼働するなど、Server と Client の言語が同一にできるなど、用途が広がっています。

そんななか、B2G(Boot to Gecko) 改め Firefox OS の Smart phone が、日本でも発売になるとのこと。

これで、いよいよ私も Smartphone へ行こうかなっと、思ったりもします。

同じ、 au なのでかなり確率高いですが、ガラケイも良いところがあるので...

Javascript で作成するということになると、気になるのは動作速度とともに、Security であります。

そこは、 Firefox にゆだねられるわけですが、まぁきちんと考えられていることでしょう。期待します。

危ないのは、ie 。こんなのを主 Web Browser にする人の気持ちがしれません。特に業務で使うなんて自殺行為。

それにしても、同じ concept の Chrome OS は、耳にしなくなりました。

こちらも iPod,iPhone,iPad に対抗する、安価な端末が必要なので、製品化されてきているようです。

Windows Surface は、かなり厳しいと思います。Table PC の  Surfaceから名前を横取りしたのに、がっかりしなければ良いですが?

| | コメント (0) | トラックバック (0)

2012年8月24日 (金)

夕刻の閑谷学校

今年も、学生中心で若い人たちが Ruby プログラミング合宿をするので、企業代表の講師として交流会に参加してまいりました。

場所は、国宝の講堂のある旧閑谷学校に隣接する「岡山県青少年教育センター」であります。

企業からは、採用についての話が多くなります。

参加者は、まったく Ruby 初体験ということで今日からの 4日間がんばってもらい。

Ssn3v0023

午後7時ごろの、 旧閑谷学校。

この時間に訪れることもほとんどないので、納めてみました。

| | コメント (0) | トラックバック (0)

2012年3月10日 (土)

使わにゃ損! AJAX library

Javascript で、HTML ドキュメントの操作して、その library の使い方が理解できてくると、Ajax によりいろいろできそう!

JQuery を使って、さらに Javascript でとことん オブジェクト指向の記述をすると、かなり気持ち良くプログラムが書けます。

これで、Server side の resource に Ajax でアクセスすれば、かなり強力になる。

さらに、HTML5 で local Database を使用すれば、立派な Client Alpplication。

Javascript で、オブジェクト指向の記述を始めたばかりなのでまだまだ、これからであります。

| | コメント (0) | トラックバック (0)

2012年2月19日 (日)

三年日記(Nokogiri Ruby)

Ruby で Nokogiri を使って、XML や HTML を編集すると構造的な Document で記述できるので、とても気に入っています。

実際、Web を見るときは、 JavaScript で動的処理を行うので、こちらは JQuery にご厄介になっております。
JQuery も素晴らしいであります。

ただし、Ruby と JavaScript では文法が違いますし、Nokogiri と JQuery も同じ処理が異なる記述になるので、なかなか頭の切り替えが難しいです。

そんなことで、プライベートでは此処の三年日記のページの編集をしております。

今までは、結構手作業で追加する部分があって手間だったので、自動化を進めましたが、今回並び順を変更しています。

バックナンバーの目出し説明は、記事を参照してサマリを記入しているので、三年日記の内容を読み込んで処理するのですが、手作業の部分はかなり想定外の構造になっていて四苦八苦。
Nokogiri を熟知していないと厳しいので、時間がかかります。
自宅の場合は、環境も整わなくて、これまた四苦八苦。

そんなことで、表の四半期とバックナンバーを古い順に結果がこちら → 三年日記

| | コメント (0) | トラックバック (0)

2012年1月29日 (日)

Jvascript に Ruby

人材育成やら品質管理や、商品企画に客先への提案が主な仕事となって、あまりプログラミングを行うことはなく、 MS Visio や Word でドキュメントを作成することがほとんどだったのですが、このところ プログラミングを行っております。

最初は、仕様確定ためにプロトタイプ的に Ruby でシステムを作成したい他のですが、Web でかなり複雑な処理をさせることが必用になって、JavaScript もやり始めました。

本来ならば、担当者に実施してもらうことなのですが、リソースも開発期間も厳しくて、実績のないものを尾kなっています。

Ruby も JavaScriptも、XML と HTML Document の処理がほとんどであります。

つまりは、この Document 構造の仕組みと処理 Library との戦いであります。
さらには、これらの言語処理系が体にしみこまないと、思ったように進みません。

それからJavaScript  で作りこんでゆくと、なかなか凝った処理ができますが、結構オブジェクト指向的に記述できることも分かりました。

ただ、画面関係のことを行うと、かなり見栄えが気になって、プログラミングよりもスタイルに時間を費やすことになります。

さらには、これらの成果や生成ファイルを管理するために Windows のバッチファイルも細かの制御を詰め込みます。こちらは、機能が乏しいので大変であります。


そんなことをやっていると、自分のプライベートなプログラムも改良したくなって、がんばってしまいました。

結果がこちら → 三年日記

バックナンバーを収集して、三年日記にまとめるのですが、年が変わったときなどは、手作業だったので自動化しました。
まだ、四半期や年代わりの処理はできていないのですが、そのときに追加したいと思います。

こうして、プログラミングしていると、まだ処理系が体にじみるいていないので結構はまってしまいました。
どうしても、 error が発生したり、おもいどおりに行かない部分を深く調べるのですが、時に全体を見ることが必用になります。

まさに、

微視的と巨視的

であります。

| | コメント (0) | トラックバック (0)

2011年12月11日 (日)

Amazon の注文で

このところ、Amazon で続けて購入しているのですが、以前より「注文の確認」メールが届くのが遅くなったと思ったら、昨日はついにやって来ない。

実際は、メールが遅いので、「アカウントサービス > 注文履歴を見る」を見ると、「支払い待ち」に綯っているので、そのまま支払いをして、すでに発送済みと発送準備になっております。

まぁ、Web で注文しているので、メールが届くのを待つよりも、Web Page で確認できた方が良いのですが、そんな説明はしらないし、第一「アカウントサービスのTop」や「カートを見る」、そしてやはりログインしているのだから、Page の上部に Status を表示してもらいたいものであります。

その辺の、気の利いたサービス、システムが“できるか”、“できないか”、これは大きな差があるのであります。

これって、使う人の視線でものづくりを行うことと、その開発環境にもよるものだと思うのであります。

このところ、また Ruby でプログラムを作成しているのですが、ここのところが Ruby はよろしい。

もう少し便利な機能を実装した方が良いのだけれど、

必須事項ではないし、実装がちょっと面倒
納期は短いし、コスト増になってしまう

ということは、結構あるものです。

Ruby なら、早く安く システムが開発できると Matz もたびたび口にされますが、それもそうですが、Ruby なら、この便利な機能を追加で「実装する気になる」のであります。

本当に、「今までならやらないことが、サービス(実装)できる」これが、Ruby のよさであります。
エンジニアなら誰でも、より良いものを提供したいと思っているわけで、それが実現できるというのは、エンジニアにとっても楽しいことであります。
それが可能な、Ruby とRuby などの開発言語向けに開発された library に感謝!

さらに、Web で便利な UI 実現することになるので、JQuery に感謝であります。

| | コメント (0) | トラックバック (0)

2011年11月12日 (土)

久しぶりに Ruby プログラミング

このところ、地元での Ruby 推進、啓蒙活動に参加して、若手プログラマ実習合宿や中高校生のRubyプログラムコンテストの審査などを行いましたが、自分自身は少し実際にコードを書いておりませんでした。

今回、XSL(XMLスタイルシート)で処理していたものに対して、かなり複雑な処理を加える必要に迫られ、一気にRuby に移植しました。
構文解析に強いRubyであり、優秀なXML、HTML処理の外部libraryがあり、Ruby で思い通りのプログラムが作成できます。

特に、今回は、XSL で複雑な処理を行っていたので、短いTemplate を数多く設けていたのが幸いして、それにしたがってRuby で記述するとかなりきれいなコードになってゆきました。
1,2箇所、今となっては改良したいところがあるのですが、今回のような構造のプログラムはRuby では初めてで、手探り状態だったので仕方ありません。
何より、納期があって、修正はかなりあとになりそう。

HTML を出力する処理なのですが、プレーンテキストして書き出せば、非常に簡単なのですが、一度生成した後に、編集を加えるので、ちゃんと要素を生成して、Attribute を付与して、ノードに積んでゆくということをしたので、手間取ってしまいました。

それでも、Ruby の柔軟性、特に仮想化、純粋仮想を考えなくてもちゃんと実行できるので、簡単で、きれいなクラスが記述できました。

ただし、XML,HTML のParser (外部library)の内部処理ができなく、期待通りに動作しないとき、Emacs を使用してデバックするのですが、なかなか効率的に行きません。

結局、print 分とコードを読んで解決。

| | コメント (0) | トラックバック (0)

2011年10月30日 (日)

目を立てないと Nokogiri は、切れない

久々にプログラムのはなし。

XML を スタイルシート(XSL) で処理していたのですが、かなり複雑な処理が必要になったので、プログラムを作成することにしました。

.NET はかなり複雑になるので、やはりそこは Ruby 。といっても、もっぱら外部libraryの世界であります。

XMLの変換先は HTML なので、Nokogiri を使用します。
以前、Nokogiri  を使用したときも、XSL も HTML の TAG を TEXT で記述していたので簡単なのですが、今回は、生成した HTML 自体も編集する可能性があるので、Tree に突っ込むことにしました。

もとの XSL 自体がかなり複雑で、同じ処理を再現するだけで大変。さらに、XSLT でできることは実現しないといけないので、再帰可能にするため、CLASS 設計をきっちりする必要あり。

まだ、 Ruby 深いところを理解していなし Nokogiri も Parse しかしていなくて、調べながらの実装であります。

個々の要素を TEXT で記述して即 Node が生成できれば良いのですが、要素を生成しては、Tree に追加を繰り返して、かなり手間であります。

そんなことで、Nokogiri を使うには、確り準備が必要。つまり、目立てしないと Nokogiri(鋸)は切れないのであります。

さらに、この鋸は、押(Parse)しても引い(Add)ても切れるわけで、まさに Push Pull。

ところで、Push Pull といえば Audio Amplifier でございます。
その、Single Amplifierと比較して Push Pull を説明する記事を読んだのですが、Single は自転車の漕ぐようなものとあるのですが、これは自転車を知らないお方の認識。

ペダリングは、引き脚が大事あります。引き脚で加速して、引き脚で坂を上ってゆきます。
上手く引き脚が使えるように、片足ペダリングというトレーニングもします。

自転車をやられる方は、写真とか Audio が好きな方が多いようですが、Audio が自転車を好きなわけではないようでございます。

さてさて、私は無事 Nokogiri を Push Pull で効率よく使いきれるのでしょうか?
ここ2,3日で完成させたいのであります。

 

| | コメント (0) | トラックバック (0)