はてなキーワード: Perlとは
大規模開発にも使えるかどうかとIDEが自身で書かれているか、なんて全く関係ないじゃん。
↓
にしたら、C以外は大規模開発で使えないってことになるじゃん。
IDEについても、デスクトップGUIアプリケーションに向いてるかどうか、が重要で、規模は関係ない。
「大規模開発に向いてる」なんていってない。「大規模開発にも使える」といっている。
はっきりいって、世にあふれる軽量言語は大規模開発には使えない。
根拠の一つは、大規模ソフトウェアの代表であるIDEだ。私は、軽量言語の中で主要な開発環境として自身で実装されたIDEが使用されている例を知らない。Python IDELを常用している人は少ないだろうし、Emacs Lispを軽量言語にふくめていいかも疑問だ。PHPでかかれたPHP開発環境があるか? PerlでかかれたPerl開発環境は広く使われているか?
(この点、Visual Studioで開発されているVisual Studioは立派な環境だと思う)
Javaは軽量言語でできることの大部分を同じようにこなせる。そのうえ大規模開発にも使える、といっているのだ。同じように「奴隷向け言語」ともいってない。「奴隷でもつかえる言語」といっている。
なんか偉そうに書いてみた。
SFCには頭がおかしいプログラミング言語使いがたくさんいる。特に研究室に入ると、バイトでバリバリ書いている人間や、研究や趣味でライブラリを量産する人間に出会うこともあるだろう。彼らに惑わされてはいけない。最初は彼らの言っていることは一つも理解できないだろう、理解する必要は無い。彼らはプロダクションで安定するかどうかという縛りから自由だ。流行り廃りに敏感で、昨日言ってることと今日言ってることが違う。
これは実際に手を動かして使ってみて好感触かどうかささっと確かめられる人間だからできることで、プログラミングできない人がこれについていこうとしたら間違いなくプログラミングが嫌いになる。
こういう言葉に惑わされるな、コードを書くための勉強をするな、コードを書け。
できる人は概ね、できない人の気持ちがわからない。受動的になるな。積極的に書け。
「プログラミングなんて特殊技能で、少なくとも教養じゃないでしょ..」という認識が横行している今だけのチャンスとも言える。
webプログラミングができると「技術的には簡単だがアイデア一発で作ってみた」もので、ほんのちょっとだけ有名になれる可能性がある。論文を書いて学会に投稿したりニュースになったりするよりも、よっぽどお手軽に(一部での)社会的ステータスを高めることができる(かもしれない)。
↓ こういうのでいい(失礼だが)。
こう言っている人間を見て何を思うだろうか。
「いや少しずつでいいから今やれよ」とか「英語できたらもっと世界ひろがるのに..」とか「大学生なのにそれで恥ずかしくないの」とか思うかもしれない。
知らない世界を知らずにいることは大いなる機会損失である。プログラミングに金はいらない。金はないけど時間はある、時間を大量投入できる最後の機会、大学生である内に学んでおいた方が望ましい。
基本的なスタンスとして、講義ではプログラミングを教えてはくれない。講義に期待するな。プログラミングに限らず、全ての講義は自習への足がかりであり、興味のとっかかりである。実際に意思を持って積極的にコードを書かない限りプログラミングのことは好きになれない。自分で考えながら手を動かしてコードを書かなければ覚えないし、初学者が配られたプリントを写経しても血肉にならない。
「今日から俺は!」という感じでプログラミング講義を受けると爆死は約束された未来である。「腕試ししよう」「これなら楽勝じゃろ」という意気込みで講義を受けると、意外に学ぶことが多い。完全な初学者の域は脱しておいた方が講義は有効的に活用できる。少なくとも、最初の2週間をインストールと環境構築のみで終わらせるスジの悪い講義を取得してはいけない。
また、講師によってはJavaScriptのことをJavaと呼称したり、JavaScriptはLispに比べて読解が平易であるためハッキングを受けやすいと言ったことを平然と言ってのける。選別にあたっては「講義名」と「講師名」を明言した上で「先輩に聞く」「Twitterを活用する」等の手段をとるべきである。十二分に注意されたし。
道具を選ばないのはプロだけである。初学者は多少高くても自分をサポートしてくれる良いマシンを入手すべきである。1行のコードを書くだけでも恐ろしい手数が必要なアーキテクチャを選択するのは愚行だ。
モデルは何でもいい、無理して上位機種を買う必要は無い。お金が余ってるならMacBookProを買えばいいし、勿論一番安いMacBookAirでも全く問題ない。特にweb系のコードを書く際、インターネットで検索して出てくる記事はだいたい「OSがUNIX系であること」を前提としたサンプルである。これをWindowsの開発環境に読み替えるのは、初学者に取ってつらいだろう。
また、Macならばパフォーマンスは多少犠牲になるがwindowsも起動できる。どうしても光学機器が必要になればCNSコンサルタントで外部接続式の光学機器を貸し出してくれる。Macが気に入らなくてもどうせ研究が射程に入る3年生に上がったぐらいのタイミングでPCを買い替えるだろう。バイトして稼いだ金で「俺の考えた最強のマシン」に買い替えればいい。それまではMacを使え。
OSに固有の使い方なんて学ぶ価値はない、覚える価値も無い、操作時間が短縮されるだけだ。「普通の会社はWindowsなんでしょう?」というくだらない理由でWindowsPCを選択肢の第一候補にするな。Windowsを買うなら積極的選択としてWindowsを買え。
SFCにおいて、PCは毎日抱えて通学し、毎日開いて講義を受け、苦楽を共にする相棒だ。消極的に選択するな。
SFCには「共同購入PC」という制度がある、これを利用してはいけない。
もし要件が変更され、Macがラインナップに入れば積極的に利用するべきである。
条件を示す。
見た目に変化が無いと楽しくないだろう、こんなのを実行しても何も楽しくないはずだ。
#include <stdio.h> int main() { int a; a = 1 + 1; printf("%d", a); }
マイナーな言語を選択してはいけない。「ライトウェイト言語」と呼ばれるくくりから選択肢するのがいいだろう、以下のようなものがある。
中でもjavascriptとrubyは推薦できる、SFCでも書いている人間は多い。
phpとperlはおすすめできない。ドキュメントは多いが、不慣れであればロジック以外に割かれる労力が非常に多い。pythonは日本語のドキュメントが少ないため最初はつらいだろう。
最初にjavascriptをやるのは理に適っている。index.htmlというファイルを作り、scriptタグの中にコードを書き、ブラウザでindex.htmlを開けばもう実行されている。web上のドキュメント量も豊富だ。
rubyも推薦できるが、少なくとも「自分でHTTPサーバを立てる」という言葉にピンと来るようになってから使い始めた方がいいだろう。きっと何をしていいかわからないはずだ。
他にもProcessing(http://processing.org)などが推薦できる。ダウンロードに時間がかかるだけでインストール作業は必要ない。こちらに関しては旧プロダクト名である「proce55ing」をキーワードに検索すると記事が引っかかりやすいという暗黙のルールがあった、今はどうだか知らない。
最近ではnode.jsの採用事例も増えてきた(他に比べれば圧倒的少数、増加傾向にあるという意味)。クライアントでもサーバでも活躍できるjsは学習コストパフォーマンスが高いと思われる。
書ける言語は一つにしぼってはいけない。なるべくたくさんの言語を使ってみよ。ブログ記事を読みあさり、「その言語は何が得意なのか」調査しろ。不得意なことをその言語にやらせるな。
下記のような上達ストーリーが考えられる。
例えばpythonは音響処理や数学計算が得意だったりする。そういった特徴を徐々につかみながら書ける言語の種類を増やし、好きな言語を見つけて好きな言語のことをもっと好きになればいい。
自分が好きな言語のことを胸を張って自慢できるようになったなら、あなたは既に初学者ではない。
人に聞くとvimやemacsを推薦されるかもしれない。もしそれを使ったことが無いなら、あるいは「プラグインの導入方法がわからない」なら、やめろ。Terminalを開かなくても書けるGUIアプリのテキストエディタを使え。
具体的にはSublimeText(http://www.sublimetext.com/3)を使うのがよい、無料である。
ライセンスが必要だが、起動時に「買ってね!」というダイアログが出続けるだけで無料で使用し続けられる。信頼できるエディタだと思ったら買えばいい。
SublimeText3にPackageControlというものを導入すると、標準で備わっていない機能を拡張できるようになる。こちらのブログ(http://p.tl/Ev7b)の「インストール手順」セクションのみを実行する。たとえば「Jadeという言語を、文法に従って色付けしてほしい(SyntaxColoring)が、その機能が無い」という時に、「Jade用プラグイン」をSublimeText内で検索し、インストールすることができる。
もし使い方がわからないければ、回りにいる「プログラミングができる優しい人」に上の記事を見せ「インストールしてくれませんか?」と頼んでみろ。きっと戸惑いながらも正しい操作をしてくれるだろう、一挙手一投足を見逃さず学べ。
エロ画像を集め続けるツールが欲しいとする。どうやったらいいか考える。クライアントjsだけでは限界が来る。rubyなど別の言語を試すステップを踏む。
http://www.slideshare.net/shokai/ss-26387303
プログラマ同士じゃないと伝わりにくい用語が頻発すると思う。逐一人に聞いていてはラチが開かない。人に聞くな、適当に読み飛ばせ。
ブログ記事は本ではない、それを読解しなければならない理由はない。適当にはてブでもつけといて、次の記事を読め。たくさん読めば共通項が見えるだろう、コードが書けるようになるに従い読めるようになるだろう。
みんなが息をするようにコード書いてさ、みんなでしあわせになろうよ。
小学生の時に「こんにちはマイコン」を読んだことを除けば、自分がプログラミングに最初に触れたのはWindowsME上で動くHSPだった。
多分友達の家で「なんかパソコンあるし面白いこと出来ないかな」と話していて触ったのだと思う。3日ほどHSPを触っていたが、スプライトが動いてゲームっぽい何かが作れそうな予感がしたところで飽きた。導入としては良かったが、すごい偽物感があった。
次に目に入ったのはDelphiだった。当時、無料で入手でき、やりたいことがそれなりに出来そうで、かつ理解できそうな開発環境がそれしか無かったからだ。AphexTwinやAutechreにあこがれてDSPをやりたかったので、(1)とりあえず何か音を出そうといじくり回していた。
何日か触っていて、ようやくDelphiのGUI上で設置した「Button1」と関係がありそうな場所に、Webで見つけたコードをコピペすると、それが実行されることがわかった。実行された結果、エラーの文字列がIDEに表示されるか、運が良ければ音が出る。文字通りただのノイズがスピーカーから出ただけだが、とても嬉しかった。
さらに試行錯誤を続けているうちに、MSDNからコピペして"="を":="に書き換え頑張っていると、MSDNのサンプルコードのうちのいくつかは実行出来て何らかの音が出ることがわかった。楽しかったが、偽物の開発環境を使わされている感じもしていた。
またしばらくして、Delphiと同じ開発元からC++Builderというものが売られていることを知った。世の中ではpascalよりC++のほうが使われているらしいことは知っていた。なおかつ、(censored)したけどよくわからなかったVisualC++5.0よりDelphiに似ていて、ずっと使いやすそうだった。買った。8000円くらいだったと思う(2)。
C++はまったく意味がわからなかった。仕方ないので図書館に行って関係がありそうな本を片っ端から借りてきた。まったくの勘違いから、本屋で見つけた3000円くらいするDSPボードの解説書を買ってきて、自分が欲しいものとまるで違うとわかって枕を濡らしたりもした。
この頃借りた本の中に、「エキスパートCプログラミング」という本があった。ジョーク過多な原文を無理やり翻訳したような、典型的な翻訳技術書で、読んでいる間は楽しかった。内容は大雑把に言うと「これこれのコンパイラの場合メモリのアドレスがこうやって使われるのでスタックが云々ヒープが云々。あとCの仕様書書いた奴はタヒねアーグヴィーーアーグシーー」というもので、同じ頃図書館で借りたニューロマンサーのほうが100倍わかり易いと思った。
それでもなんとかポインタの操作くらいは出来るようになり、最終的にはBC++上で、wavファイルを読み込んでメモリに展開するプログラムと、コピペしたFFTのコードを元にソノグラムが表示できるプログラムが出来たと覚えている。今、それらのコードは手元には残っていない。
この後、3年ほどプログラミングには触れなかった。生活に忙しかったのと、人として腐っていたのと、あとは単に飽きたのだろう。
腰を痛めてコンビニのバイトが辛くなり、なんとかデスクワークがしたいと思ってテクニカルサポートの派遣業務を始め、紆余曲折、今はWebアプリのエンジニアをしている。普段はおもにPerlとJavaScriptを書いている。
ちょっとした処理をループ書くか再帰で書くか、といった時に、C++を触ってた時の経験がふっと役に立つことがある。
[1]この時にはまったく無意識だったが、新しい環境に飛び込むときに大事なポイントは、凄く低レベルな目標を決めてとりあえず進んで見ることだと思う。
10年前とかならCを最初に学ぶ理由も分かるけど、今の時代に初めての言語でCを推す奴は社会悪でしかない。
Cなんて、導入しづらい、分かりにくい、実用性ないの3ないでクソすぎる。
Androidを使っていればJava,iPhoneを使っていればObjective-C,ウェブサービスに興味があるならRails、この3択しか現代にはないだろう。
C#とかPerlはまだいい。Cを推す奴がどう社会悪かと言うと、Cで作れる簡単なソフトウェアがなさすぎて初心者が脱落するからだ。
黒い画面にカレンダーを出すだけのC言語なんかより、馴染みのあるスマホアプリや、ブラウザ上で動くアプリの方が明らかに発想も広がるしモチベーションも上がるから、結果的に開発スキルが伸びる。
そういうことも考えずに、「プログラムの基礎はC」とかドヤ顔で初心者に対して教えてる奴は、日本の未来の技術者のために居なくなって欲しい。
半分正解で半分間違い。
日本では、PHPがテンプレートエンジンとかで一気に盛り上がったんだな。
システム屋にとって、PHPだとシステムを作るのは面倒だった。
ポストPerlが必要だったのよ。そこで登場したのがRails。
一気に盛り上がる。
①時差問題
この時差の間に、Rails的な思想のPHPMVCフレームワークが誕生してしまうんだな。
だから、客のオーダーだったり枯れた技術こそみたいな思想が横行して使われない。
で、ここまで書いておいてなんだが、ぶっちゃけさらにこの裏があって
Node.jsってあるじゃん。あれも盛り上がったけどいわゆるこの業界での採用率なんてほとんどない。
でも、Node.js周辺の技術は、今やGithubの最大大手並みに盛り上がり続ける。
一攫千金と新しいモノ好きって近いところにいるんだな。
この熱だけを持ってきて、煽る奴らは確かにいるのよ。
俺は失読症持ちのプログラマーで、まぁ色々苦労してるってのを書き記しておく。
失読症、医者いわく、いろんな種類がいるらしく、文字が読みづらかったり、書けなかったり、その両方だったり、若い時におぼえた文字以外は新たに覚えられなかったりとかとか。
俺はその中では文字が読めない部類に入るらしい。
文字が読めないにも程度があるらしくアルファベットとかひらがな・カタカナはそれなりに読める。漢字も画数が少なくて記号として覚えやすかったらそれなりに読める。
ただ、俺は記号が認識しづらい、$とか*とか/とか。特に記号が連続すると全く読めなくなる。
プログラマの人ならわかると思うんだけど、プログラマで記号が使えないってのは結構致命的で、
シェルスクリプトをはじめとして記号をたくさん使う、Perlとか正規表現とかは全然書けないし読めない。
記号の意味や、構文がわからないんじゃなくて、どういう記号が連なっているのかが全く認識できない。同僚の書いた正規表現とか見てると読めなくてストレスがたまったりする。
あとはドキュメントを読めなかったりする。普通に活字だけの本は読めるんだけど、Perlとか正規表現のドキュメントは記号がたくさんあるから、文章を読んでる途中で記号が目に入って思考が止まっていまう。だから、manとかで調べ物をしているときはかなりしんどい。
Perlそのものは素晴らしい言語だけど、いかんせん記号があちこちに登場する。$の後にいろいろつくやつとか読めない($の後ろに何がついてるかはわかんないんだけども)
Perlは俺にとってはストレスの元だったけど、ものづくりはしていて楽しかったからなんとか続けていた。
最終的には、ストレスで心をやんでしまって、入退院を1年ぐらい繰り返して、今では社会復帰をして都内でRubyを書いている。
Rubyは@とか!とか?とか簡単な記号しか出てこないから読みやすい。
Rubyは記号を使おうと思えばいくらでも使えるらしいけど、使わなくても、アルファベットだけでも十分にコードを表現できる素晴らしい言語に出会えた。しばらくはRubyで戦えそう。
割りとブクマついてた。ありがと。
Rubyを選んだのは、入退院を繰り返してたときに医者に勧められて読書しろと言われて読んでいた本が「たのしいRuby」だったのよね。それを読んでいたのがきっかけ。
Javaは書いてたことあるけど、なんというか文字の密度とか大文字小文字が大量にあったりインデントが深いとちょっと読めない。Pythonはよさそうだね。
文字の密度が高いと読めないことがあるから俺のエディタはなるべく細身のフォントを使ったり行間を大きくとってたりする。
あと、失読症だから正規表現が読めないんじゃなくて、なんかおかしいって思ったら早く病院いったほうがいいと思う。ちゃんとしたところなら診断してくれるから。
あと id:believemeimaliar。君が精神疾患等にかかった時に、ブコメに書いてあるようなことを対面で言われるとつらい思いをするから、そういう排他的な考え方はやめて、俺みたいなやつでも許容できるようになるといいね。
ここ10年のBtoBの成果は、共通の技術基盤という妄想のために用意された
複雑大規模で、完全に閉じてて、他には誰も使えないEclipseで動く謎のゴミ。
自分達でも持て余して、パッケージ導入とか、結局Strutsスクラッチ開発だったね。
まあ、商売ネタとしては成立してたけど。
Struts1のサポートが切れる蓋を開けた時の状況は、笑いどころか失笑でした。
だからってBtoCも凄かったわけじゃない。
そこで事件が起きる。Railsの登場。
ビジネス的には、あんまりインパクトはなかったこれだが、歴史の転換を説明するのには便利。
Railsのアーキテクチャは、エンタープライズのアーキテクチャパターンを程よい感じに取りこんでいる。
Perlパクりから始まって、Javaのクラスパクッて、Railsも速攻パクった。
最近は、所謂関数系言語と分類されるパラダイムも最速でパクてる。
そんな感じで、RailsからパクッたフルスタックのMVCフレームワークが一気に広まる。
そしてこれらのフレームワークは、金魚のフンSierにとって銀の銃弾だったStrutsを、
鼻で笑えるもので、Strutsでドヤ顔してた彼らは、この時点からPHPerからも見下される存在になった。
エース開発リーダーさん。そろそろDIコンテナあたりは使えるようになった?
Javaの方が良いとか言うなら、せめてそのぐらいはフォローしたら良いんじゃないですかね。。。
ただ、これは結果から見たもので、本来の本当の流れは、ネットの普及にある。
BtoCの市場が巨大化し、パイが増えて、それだけ技術者も集まった。
優秀な人材がプロダクトを作れば、優秀なプロダクトが生まれる確率もあがる。
みんなで作れば凄いものが作れるという勘違いは、決してしないように。
これはアーキテクチャにも影響して、その方向性を決めるようになった。
SOAPは、優れていなかったわけじゃない。ただ単に閉じた世界すぎた。
RESTは、実用的なアーキテクチャなんてほとんど無い。ただみんなが適当にやってたのに名前付けただけだ。
だいたい今はそんな感じで
今後はアーキテクチャはBtoCが主導するだろう。
そこの社内SEさん。技術キーワードが凄いからって発注しちゃだめよ。
まともなもんが返ってくると期待しちゃいけない。
BtoBは、この鈍行の間、何もしなかったわけじゃない。
たった数パーセントの稼働率を上げるために、何十倍の時間や金をかけてきた。
彼らは、そういった品質に命をかけてきた。
サイト名 | onalife(オナライフ) |
---|---|
URL | http://www.onalife.com |
説明 | xvideos動画の共有・ユーザー参加型のまとめサイト |
Webサービスの勉強には「アダルトサイト」という記事をはてなの記事で何回か読んだことがあるため、今回は便乗しました。
ありきたりかも知れませんが、「Xvideosから誰でもお気に入り動画を追加してまとめる・みんなで共有」できるサービスを作ります。
協力していただける方は、サービスを使っていただいて、要望・コメントしていただけると助かります。
http://ja.wikipedia.org/wiki/PDCAサイクル
ではないですが、
試験リリース → テスターによるテスト → 問題抽出 → 問題解決のためのプラン → 解決 → 最初に戻る
を繰り返していき、
などを考察していければよいと思っています。(あくまで勉強目的)
ありません
※だって恥ずかしいし、煩わしいよね
シーンを登録してください
今回どうしても満たしたい仕様は以下です。
検索?
要望あれば検討ということにしました。(他に優先すべきことが多々あるため)
お仕事 | 主に組み込みLinux系 |
---|---|
Web開発経験 | なし(Wordpressを昔にちょこっと触った程度) |
プログラミング歴 | 10年目くらい |
---|---|
使える言語 | C言語、ShellScript、Perl、Make |
お触りした言語 | C++、C#、VisualBasic、Python |
時代の流れに乗ろうかと。
仕事内容は主に組み込みLinuxです。Linuxカーネルをごにょごにょしたり、開発環境の整備(プロジェクト全体のMakefile管理)、システム部分の機能実装などをやっており、PythonやRubyといった言語には縁がない状況です。
昔から機会があればRubyかPython、PHPとかでWeb系の知識も身につけたいと思っていましたが、今回思い切って勉強しようと思いました。
皆さんの中にも新しい言語を勉強するときに、とっかかりがよくわからなくて諦めた経験を持っている方は結構いらっしゃるのでは?
インターネットで検索するといろいろなサイトが出てきますが、なかなかゼロから学習するのには向いていない場合が多いです。
そ・こ・で!
私は以下のサービスを使いました。
Ruby on Railsの動画を何度も見て、基本的なプロジェクトの立ち上げ方・コーディング方法などが学べました。
平日 | 1時間/日 |
---|---|
休日 | 2~3時間/日 |
こんな程度です。
平日 | 0時間 |
---|---|
休日 | 1時間/日 |
平日は1時間未満が多かったですね。
ドットインストールの講座を1・2個見て終わりというような感じでした。
無理をしない、です。
私のように、長いスパンでコツコツ積み上げていくのがよいのかもしれません。
短いスパンでリリースしようとすると、1日あたりの学習&プログラミング時間が相当確保しないと難しいように思います。
この時間を確保することの困難さがモチベーションの低下の原因ではないかと思います。
一日平均4時間(休日含む)でやれば1カ月から2カ月くらいでそこそこのサービスをリリースできそうです。
結構はてなで「初心者がWebサービスをリリース」なんて記事を見ますが、みなさん本当にすごいな、と感じました。
自分でいざサービスを立ち上げてみて、初めてわかることもたくさんあります。
プログラミングの仕事しているにも関わらず、ベータ版リリースまで約半年ほどかかってしまいました。(そもそも時間をそれほど確保できなかったのも原因ですが)
もしよろしければwebサービスを使ってみて不満点をコメント欄にでもどんどん記入してください!
今後の参考にしたいです!
タグはなるべく詳細に入れてもらえると、自動的に動画を関連付けます。
んー、でもemath入れるよりは楽じゃないかなあ。
【Webサーバを作る】http://d.hatena.ne.jp/kmaebashi/20130804/p1
use Fcntl;
use strict;
use Socket;
use threads;
use POSIX qw(strftime);
use File::Spec::Functions qw(rel2abs);
my $thread = threads->new(\&serverThread, "");
$thread->join;
my $ret;
my %hashmap=(
"htm" => "text/html",
"txt" => "text/plain",
);
$ret = $hashmap{$_[0]};
if ($ret eq "") {
return "application/octet-stream";
} else {
return $ret;
}
}
my $documentRoot = rel2abs("D:/var/www/html");
my ($line, $path, @tmp, $ext, $data, $absPath);
socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
bind(SERVER, sockaddr_in("8001", INADDR_ANY)) || die;
listen(SERVER, SOMAXCONN) || die;
while (accept(CLIENT, SERVER)) {
while (<CLIENT>){
$line = $_;
last if ($line eq "" || $line eq "\r\n" || $line eq "\n");
if (index($line, "GET") == 0){
$path = (split(/ /, $line))[1];
@tmp = split(/\./, $path);
$ext = @tmp[$#tmp];
}
}
print CLIENT "HTTP/1.1 200 OK\r\n";
print CLIENT "Date: " .strftime("%a, %d %b %Y %H:%M:%S GMT", gmtime). "\r\n";
print CLIENT "Server: Sever03.java\r\n";
print CLIENT "Connection: close\r\n";
print CLIENT "Content-type: ". getContentType($ext). "\r\n";
$absPath = rel2abs($documentRoot. $path);
if (index($absPath,$documentRoot)==0 && sysopen(FH, $absPath, O_RDONLY | O_BINARY)) {
while ($data = <FH>) {
}
close FH;
}
close CLIENT;
}
}
コアモジュールだけ使った。
元ネタのJavaコードはディレクトリトラバーサルになってたんで、一応対策を盛り込んだ。
といっても絶対に外向けに動かさないように。無いと思うけど。
いろいろツッコミくれるとうれしいです。
最近、前からずっとあるのかもしれないが、ビギナープログラマへ向けた教訓めいたエントリなどを
よく見かける。
やれフレームワークから始めるなだとか、なんとかかんとかというものだ。
同時に、これは昔から変わらないが、プログラムを勉強したいけどどうしたら良いのかというような
質問などもよく見かける。
こういった数多のやり取りを見ていて、自身もプログラマとしての一面をもつ限りは
頑張っての一声もかけてやりたいと思うし、辛辣な内容のエントリに頷くこともあれば苦い顔をすることもある。
自分がプログラムの勉強を始めた当時は、プログラマを目指す者にとってはイバラの道だったと思う。
はいはい、懐古厨おつと言われてしまいそうだが、実際そうだったのだ。
まずなんたって、パソコンを手に入れるのが容易でない。
当時PC-9821全盛期であったが、1台40万くらいはした。
容量1.2MBしかないフロッピーにしこしこデータを保存していた。
そしてパソコンを手に入れたとしても、情報を調べる手段というのが確立されていない。
今でこそ、ブラウザを開いてGoogleで検索すれば、どんな情報だって手に入る。
ブロードバンドという言葉がまだなかった頃は、そうではなかった。
インターネットへ接続するのも、お金持ちの家はISDNだが、自分の家はモデムでピーがが~とつないでいた。
そのため、当時はWebサイトのページ容量は画像も含めて数キロバイト以内に収めましょうという
慣習があったように思う。
NTTのテレホーダイというサービスがあり、夜11時から朝の7時までは
特定の番号にかけ続けても一定料金でかけられるサービスがあり、みなそれを
利用していた。自然とパソコンを利用する人々の活動タイミングは夜間となった。
当時はまだGoogleがなかった。
なにより検索で情報にたどり着くということはほとんど概念としてなかったんじゃないかと思う。
Yahoo!が用意したカテゴリを元に、登録されたWebサイトへアクセスし、
サイトからのリンクで新しいサイトを発見するという、本当のインターネットサーフィンを
IntetnetExplorerはまだバージョン3くらいで、脆弱性がありまくり、危険なサイトへ
一番陰気な雰囲気を持っていたんじゃないでしょうか。
NetscapeNavigator(今のFirefoxの前身)が人気を博していた時代の話である。
さて、情報にアクセスできたとして、次に問題になるのは開発環境の話である。
昔の昔、基本ソフトがBASICだった時代は、パソコンを起ち上げるとBASIC言語を使って
プログラミングが出来たが、Windows95はそうではなかった。
開発環境、そしてコンパイラをまず準備できないと、そもそもプログラムの勉強が難しかった。
当時からMicrosoftの統合開発環境として、VisualStudioが存在したが、よほどの金持ちでないと
買えない値段がした。
そこで、LSI-C試食版であるとか、Borlandの無料開発環境であるとか、N-88互換BASICなどの
無料開発環境を探しだして、しこしことコマンドライン上で動く基本動作だけを勉強したものなのだ。
自マシン上に、Apache+PHP+MySQLをインストールする、なんて手法は夢のまた夢だった。
Webプログラムを勉強するには、自分でLinuxサーバーを起ち上げるか、CGIが利用できる
CGIで利用できる言語も、CかPerlかくらいしかなかった。
JavaScriptもまだまだ発展途上で、今のようにあれこれと使えるようになるのは
まだまだ数年先の話だった。
それが今やどうだろう。
パソコンも一家に1台あるだろう。それどころか職場の自分の机の上にも1台あるだろうし、
学校にいってもいくらでも使えるだろう。
開発環境なんて、よりどりみどり。メモ帳ソフトがあれば、もう勉強を始めることができる。
Windows上で動くアプリだって、VisualStudioが無料で手に入る。
それで敷居が高ければ、Excelを使ってもいい。VBAを使えば、Windowsアプリの勉強もできるだろう。
これだけ情報も溢れ、環境もどれを選ぶか難しいほどの状態になってしまっているのだ。
もはや、プログラムを勉強するには、必要以上のものが用意されている環境にあるといっても過言ではない。
がんばってください。
一人の社員がAndroidアプリのプロトタイプ作成に手を挙げます。
彼はなんとか自力でHackして仕様を満たせるよう努力しました。
そんな折、彼に信じがたい言葉を投げかける人がいました。
「まず報告しろ。」
たしかに、彼は報告を怠った。それは社会人としてあるまじき行為だった。
叱責や処罰の対象だろうか?
私は、そうは思わない。
「よちよち歩きでOKでちゅよ」
これはPerlの父、Larry Wallの言葉だ。
我々は、いつでも好奇心と研究心を歓迎するし、真に自由を愛している。
そういうとキチガイじみているが、狂気とmoralの境目くらいは認識している。
私はYellow Hackerだ。
黄色は警告の色だ。
私は警告する。
そのやり方は正しくないし、賢明でもないし、"The Answer"でもない。
それが私の唯一の答えであり、ドンキホーテのように立ち向かった証でもある。
最後に一つだけ。
プログラマー諸君、元気を出して働こう。
人間だ。
Because we are human beings.
「続きを読む」
「さらに続きを読む」
ありがとうございます。元増田です。
仕事にはするつもりないですが、
趣味でFLASH触るのが好きなのでAction Scriptできるようになりたいし、
つくりたいWebサイトがあるのでそのためにPerlとかPHPはそのうち勉強したいと思ってます。
一度何か別の言語でも授業でやった方が導入しやすいと思って取りました。
なので理論?とかもきちっと理解したいんです。
あと
はてぶでホッテントリ入ってるプログラミングの記事みるとそれ理解したいって思うし、
ギークな女ってかっこいいじゃないですか。
普段Perlを書いているんだけど、言語機能として欲しい機能がライブラリ任せだったりしていろいろしんどい。
何かいいプログラミング言語はないかなーと思っているんだけど、なかなか自分の好みとピタリとくるものがない。まぁ好みにピタリとくるものなんかプログラミング言語に限らずないんだろうけど。
なので夢想してたのを垂れ流してみる。最近OOPディスのエントリとかあったので話題作りになれば。
Web系のエンジニアなのでWebサービス作ることが前提で、範囲広げすぎるとまとまらないので今回はLLを想定してる。
だいたい PHP, Perl, Python, Ruby, JavaScript あたりをイメージしながら、さらにこんな機能があればいいなーと思って書いたよ。