「django」を含む日記 RSS

はてなキーワード: djangoとは

2019-03-07

[]2019年3月6日水曜日増田

時間記事文字数文字数平均文字数中央値
0011721254181.735
01627895127.331.5
02313333107.551
03274672173.039
0418144680.364
0520171986.060.5
06384700123.757
07333367102.043
0884723086.152.5
09102690967.735
1096881891.946
11114734164.442
12113883378.240
13757898105.329
1470441963.140.5
15123779363.442
16103843881.938
1711317209152.346
18105798176.032
19115746864.933
208810262116.643
2110610921103.046.5
2216717576105.240
2310113873137.438
1日202120135599.640

本日の急増単語 ()内の数字単語が含まれ記事

django(4), ソイ(4), 演劇部(4), 肉離れ(5), 吹奏楽部(8), 深夜営業(3), 騙し討ち(3), 吹奏楽(5), 曲がら(3), カリフォルニアロール(3), 男受け(3), デマ(22), 結婚相談所(6), モブ(7), タブ(6), 傘(6), トヨタ(5), AM(12), 婚活(26), PM(12), 電子書籍(11), パスワード(8), 中古(8), ゴーン(7), そうじゃない(6), 繊細(6), 通報(28), スペース(11), はてなー(17), 痛く(10), 同性(9), おもう(9), 許容(10), 出身(10), おる(10)

頻出トラックバック先(簡易)

吹奏楽部演劇部出身者は雇わないほうがいい /20190306020912(18), ■sing a songみたいなのが好き /20190305185608(14), ■使ってると頭悪そうに見える言葉 /20190306105134(14), ■ネトウヨがまず「普通の日本人」と自称する理由 /20190306131003(13), ■ /20190306020634(12), ■金のかからない旅行を教えてください /20190306134244(11), ■パンで始まってティーで終わる言葉 /20190306191019(8), ■派遣プログラマ認証機能作らせたら /20190306220159(8), ■結婚物語。が嫌いだ /20190306151701(8), ■電子書籍って何であんなに安いの? /20190306153058(7), ■彼氏に触りたい /20190305150322(6), ■インフルエンサーの妻がつらい /20190306130409(6), ■繊細な人間社会はどう扱うべきか /20190306194411(5), ■プログラマだけど技術自体は好きじゃない /20190306215612(5), ■控えめに言って滅びろ /20190304214607(5), ■恥も外聞も無しに書く。増田結婚してくれ /20190306225513(5), ■とっても!不倫がしたい /20190305123601(5), ■お札の肖像画になりたい /20190305202800(5), ■あるところに売れないマンガ家Bがおりました。 /20190305234144(5), ■雑談ハラスメントという言葉はまだないのだろうか /20190306002833(5), ■「バグ無限ループ作ったら逮捕されるぞ!」って煽ってるエンジニア /20190306094446(5), ■17歳のJKだけど、萌え袖ってかわいくない? /20190306101722(5), ■適応障害転職 /20190306111639(5), ■ /20190306115305(5), ■リツイートって意味あるの? /20190306123512(5), ■もう限界なので明日会社休む /20190306125348(5), ■表現の自由戦士が /20190306165200(5)

増田合計ブックマーク数 ()内の数字は1日の増減

6073911(1772)

2019-03-06

anond:20190306011719

無事に自己解決(消極的)したので供養しておく

hello django

しかチュートリアル的なやつから引っかかりポイントが沢山あるのは……なんだかなあ……

もうだめだ たすけてくれ

djangowebアプリherokuに突っ込んだけどデプロイ成功application errorで何もできなくなる

色々探して色々やったけど設定ファイルがぐちゃぐちゃになっただけ

herokuまで書いてあるチュートリアル通りに進めてみる

失敗

この辺でteratailで聞いてみる

そもそも何がわからないのかがわからないので答えがもらえるわけがなかった

俺にhello worldをさせてくれ……

2018-11-25

anond:20181125094534

趣味プログラマーだけど絶対pythonかそれに類するものRubyとかもいいかもしれない,あんまよく知らんけどdfndfn)

プログラミングをやり始めた当初はCから教えられた。競技プログラミングとかもC,C++しか昔使えなかった。

今は色んな言語に便利なフレームワークがあるし、増田職業でやってるんでなければpythonオススメ。てか当時もっとpython勢いあったらpythonから入ってただろうな。

やってくうちにフロントエンドとか、もっと計算機理論アルゴリズムとか自分のしたい方向性とか興味が出てくるからそれに従って楽しめばいいと思う。

GUIだってpythonだったらpyGobjectとかで簡単に実現できる。流行りのdeeplearningも割と敷居は低い。webframeworkはdjangoがある。

リバースエンジニアリングとかの本もあるし。

自分はCから入ったけど、結局CTF系の領域脆弱性を探すゲーム)か配布されているソースコードコンパイル関連(gentooのemergeとか)とかしか使わない。

多分仕事にしている人は、これがいいとか別なのがあるんだろうけど、似たような境遇なら参考になるかも

Django+mysqlデプロイするのに一番簡単サーバーサービスを教えてくり〜

さくらVPSなのか

herokuはporstage何ちゃらでdjango-mysql使えないかパス

2018-11-21

djangoって何を目指してるの

htmlの中で

{{form}}とかやると受け取ったformを展開できて非常に便利なのだ

例えばbootstrapなどを使いたいときclass指定とかするのに困る時がある。特にテキストフィールドなど。

これに対しform.pyなどで定義した自作form内のコンストラクタclass=form-controlを付与することで対応できるそうだ。

でもそれだと何のために見た目と中身を分けているの?html内の記述対応できないと一貫性がなくない?

現にdjango-bootstrap-toolkitみたいなのがあってbootstrap4で使えるかはわからないけど

{{form | class-format}}みたいな記述ができるみたいだ。こういう方向性を目指すべきだと思うのに、何故フォーム作成コンストラクタ対応しようとするのか。

2017-08-26

Rails ってそんなにいいか・・・

Rails を使ってはや10年。

Rails のことはかなりわかっている方だと思う。

だが、最近 Django (Pythonウェブフレームワーク)を使いはじめて、いままで苦労して Rails を使ってきた努力は何だったのだろうと思った。

Rails だとすぐアプリが開発できると人はいう。

それは嘘じゃない・・・だが大きな犠牲を払ってだ。

RailsRuby の柔軟さを利用(悪用)して、徹底的に Ruby 言語が改変されている。

DSL が多用されている。

要するに、「レール」を外れると、どうしたらいいのかすぐわからなくなるのだ。

から四六時中、フレームワークプラグインgem)のソースコードを解読しようと格闘する羽目になる。

その点 DjangoPython らしく、フレームワークは余計なことをしない。こちらが何かしないかぎり、何も起こらない。

すべては明示的(explicit)に行う必要がある。

明示的なものは暗黙的(implicit)なものよりよい、というPython、そして Django思想

なんという安心感だろうか。

しかRails のほうが開発に必要記述量は少なくなるかもしれない。だけど、わずかな記述量を節約したところで、見通しが悪くなったら元も子もないではないか

私は、本当に Rails 教に洗脳されていたんだな、といま感じている。そして、洗脳から解放され、いま、より広くて成熟した Python コミュニティに参加しようとしている。Ruby も悪くない言語だし、Rails もよいフレームワークだけど、もういいかな。これからPython と共に歩もう。

2017-07-28

anond:20170728162408

雰囲気で考えていいなら好きなの選びなよとしか言えないけど、

仕事として考えてるならF/Wとの組み合わせで考えないとだめだよ。

ベンチとか見てみろ。

自分(アーキテクトなポジション)はここ最近Java8+SpringMVC4 で開発してるが、

クリティカルだったりパフォーマンス要求される案件でもこの組み合わせは安心できる。

Pythonなんかは楽しそうな雰囲気はあるが業務系では Java+SpringMVC には遠く及ばないと自分は思う。今はね。

Django とかベンチマーク見る限り遅そうだしな。

2017-07-10

Webアプリを作るときにどの言語/WAFで書くべきか

使ったことあるモノもないモノもごちゃまぜにして経験雰囲気で書いてる。

PHP

Laravelは結構好き。DSL過ぎず、それなりにフルスタック生産性もいい。

何よりLaravel本体ソースコードが読みやすいのがいい。

まともな日本語情報が少ないのは弱点だけど、気になったところは本体コードを読めばすぐに分かる。

最大の欠点PHPってことだ。他のLL言語に比べてPHP自体生産性は低い。セキュリティ面の不安も大きい。それに安心して後を任せられるようなPHPerは一握りしかいない。

Perl

Mojolicious結構好き。これもDSL過ぎず分かりやすい。CPAN豊富ライブラリ群もある。

Perlは可読性が悪いなんて言うけど、ちゃんとしたライブラリ普通に読みやすいよ。

最大の欠点Perlってことだ。長期的に開発者を集めることを考えたら茨の道だろ?

Python

今でこそ機械学習Pythonが人気になっているけど、Web系はまだまだマイナーだ。

Djangoプロジェクト/アプリケーションという構成単位の考え方が好きじゃない。理論的な利点は分かるけど、現実問題それが必要になるケースが浮かばん。

Django以外でフルスタックのWAFが出てくればいいんだけど。Tornadoはフルスタックじゃないのでちょっと違う。

Python3で安心して開発できるならアリだと思うけど今はどうなの?使いたいライブラリが3系に対応していないとかで躓きたくないよ。

あと単純に速度が遅いよね。いや書き方を気をつければマシにはなるんだけど、書き方を気をつけなければいけない時点でつらい。

Ruby

Railsは便利だ。周辺ライブラリの充実度もすごい。情報玉石混交だけどまともな情報もたくさんある。

ただあまりにもDSL過ぎる。Railsプログラミングではなく、一つの巨大なDSLだ。

Railsプログラマの何割が、少しでもいいかRails本体ソースコードを読んだことがあるのか。めっちゃ読みにくいんだけど。Rubyは可読性が高いなんて嘘だろう。Perlと一緒でちゃんとしたコードは読みやすいけどそれはプログラマ依存する話で、言語自体に可読性の高さはない。言語思想の通り書くのは楽しいよ。でも読むのがつらい。

Rails自体DSLみたいなもんなのに、RSpecやらRakeやら周辺ツールDSL意識高すぎる。

問題があった時にググらずにコード読んで解決できるRailsエンジニアはどれだけいるのか。情報量が多いからググれば解決すると答えるやつは、底辺PHPerと大差ないからな。

あとバージョンアップ追従するのが面倒過ぎる。でも放置したら負債になるし。意識高くRailsで開発したやつの大半はバージョンアップやらの保守に入る頃にはもうそプロジェクトはいないんだろ?だからそのつらさを知らないんだろ?

散々罵ったけど、このDSLを覚えれば生産性が高いのは事実だ。だから結局ついていく確率が高い。モテ男なんだよ結局こいつは。

Java

SIerさんに敬礼

Scala

Playが王道だけど最新バージョンになるほど情報が少ない。このあたりがRailsと違う。公式(英語)とか本体コードを読める人じゃないとつらい。

そもそもJava、というかJVM周りの知識がないと本番運用はつらいだろう。LL言語運用経験しかない人は特につらい。LL言語でいうhot deployみたいなことがしたい時のやりかた分かってる?

コンパイルの遅さに耐えて開発し、運用時のGC問題を乗り越え、黒魔術を味方につけてライブラリコードリーディングが出来るならいいんじゃないか

動作は早いし、言語のものは強力だ。

Scalaを好むプログラマ関数型やらDDDやら意識高い人が多い。別にScala自体にそれらは必須ではないけど、そこら辺を意識しないならJava8でいいんじゃないかとも思う。

Node.js

非同期処理で開発することの難しさに耐えられるの?

ベストプラクティスがなく、移り変わり激しいJS界隈に流されてオレオレで書いたコード保守する自信があるならいいんじゃない。俺はない。

Go

API単体ならともかく、画面も担う普通Webアプリを書くような言語じゃない。少なくとも今は。

正確に言うと書けないことはないけど、Webアプリに関する周辺ライブラリの不足を乗り越えてまで書くメリットほとんどない。

ClojureとかElixirとか

運用実績ノウハウが少ない中で、自分で乗り越えていく気概があればいいんじゃない

結論

完璧選択などない。

2017-06-02

http://anond.hatelabo.jp/20170602182021

スクリプト言語として人気になったのは機械学習ブームが起因

htmlに埋め込むってMVCViewの話?それだったらdjangoテンプレートエンジンでも他のやつ既に確立されてるぞ

そうじゃなくてjsみたいに埋め込むっていう話?どっちみちお前は頭がおかし

2016-03-24

サーバスペックが低くても負荷の高いサイト運用したい

何を作りたいかというとマルチプレイヤーブラウザゲームが作りたいんだよね。

phpsymfonyを使ってみたけど重い。

俺の開発用のceleron 1コアのメモリ1GB環境では重すぎる。

isoファイルを10000個同時にダウンロードしてるぐらい重すぎる。

ページの読込みがなかなか完了しない。

こんなクソ重いフレームワークはそれなりのサーバスペックがないとパフォーマンスに影響が出すぎるので除外したい。

phpフレームワーク一般に言えるんだけどプロジェクト毎にプロジェクトルートなかにフレームワークのコアファイルを置くのがなんか嫌だ。

railsdjangoのように分離させてほしい。

nodejsシングルスレッドなので負荷の高いサイトで使うのは厳しそう。

pythonでもgolangでもwebsocketは使えるのでnodejsにこだわる必要もないしvert.xを使う選択肢もある。

日本ではvert.xの話題あんまり盛り上がってないよね。どこかの企業さんが実践で使いましたって記事を書いたら会社の知名度が上がると思う。

scala,golang,elixirこの3つの選択肢でいいのかな。

でも負荷の高いブラウザゲームやってる会社ってrailsとかphpだよね。

railsphpでも問題ないのかな。

redisをうまく活用しとけばあんまりそれ以外でボトルネックとなるようなことって無いのかな。

艦これやってるdmmとかは何使ってるんだろうね。

スクエニさんのオンラインドラクエもどうやってるんだろうね。

あと海外ブラウザゲームってほとんどがaws使ってるのでaws使えばいいのかな。

でも怖いよね高額料金を請求されたらさ。

金儲けの為にサイトを作らないとawsは使ってられない気がする。

初めのスタートダッシュは定額制のレンタルサーバクラウドでいいか。

2016-01-25

vim日本語ドキュメントの内容が古かった

最新のドキュメントマージして、未翻訳の箇所は英語のまま表記したほうがいいんじゃないかな。

英語でも説明とか読みたいじゃん。

英語が読めなくてもなんとなくこういう意味だな〜ってのはわかる事だってある。

後、未翻訳部分が気になれば気軽にコミットやすいと思うし。

今時はTransifexを使うのが定番だと思われるが、たぶんgithubvim-jpリポジトリコミットするやり方だと思われる。

翻訳活動がどのように行われているのか、この当りの事情は追ってないので知らない。

少なくともDjangoみたいに活動が行われてない感じではないとは思うが・・・

Django翻訳チームは活動してなくてやる気がない。

この状況に呆れて、個人的Djangoチュートリアルやそれ以外の適当なページを翻訳してブログに公開してるけど1週間もかからなかった。

でも、英語が分かる人にとっては翻訳作業だるいって事もわかる。

新たにDjango翻訳コミュニティーの結成も考えたが、Drupalのような揉め事(詳しくはぐぐれ)が起きるので分散はよくない。

死んでるコミュニティーとか派閥が出来るコミュニティーにはやっぱり貢献はしたくない。

昔はWordPressコミュニティーでも活動していた時期もあったが、あまり新人意見は聞き入れられない感じで活動をやめた。

一人でLaravelの翻訳活動をしてるKさん個人サイトWordPressドキュメントを私的に翻訳している人はすごいし尊敬しています

今は機械学習関連のライブラリ翻訳活動時間がかかるので、「Vim翻訳がしたいです!」と名乗り出られない俺が恥ずかしい。

2015-10-07

PHPWEBフレームワークを使いたくない理由

LaravelやCodeIgniterFuelphpCakePHPなど、プロジェクトごとにフレームワークインストールしなければならないので、使い回しが出来ない。

Zend Frameworkはそんなことないが、雛形がないのでルールを決めないととんでもないコードを生む。

プロジェクト内にコアファイルを置くのが気持ち悪い。

限られた容量のレンタルサーバを使うときにLaravelを置くだけで15MB以上消費するのが気になる。

人気なフレームワークLaravelやsymfonyCeleron 1コア、メモリ1GBの環境では重かった。

数年毎にトレンドが変わるのでrailsdjangoのような鉄板がないこと。

2015-03-05

営業出身の30代おっさんプログラミング人生を変えた話

俺の半生

大学一般教養Pascalを習った程度。専門課程に入る前に文法はすっかり忘れた。専攻は都市工学からその後プログラミングとは縁はなかった。卒業前に第一種情報処理技術者資格だけはとれてたのでプログラミングの何たるかとかオブジェクト指向なんかも知識としては知ってた。

大学卒業後にデスクトップユーティリティーのメーカー技術営業をやった。顧客製品仕様を説明するのが主な仕事なのでパワポばかり使ってた。その会社ではLinuxソフトも販売してたから、Linuxコマンドは打てるようになった。そこでシェルスクリプト習得しようと思ったがあえなく挫折

その後ネットワーク機器メーカー転職トラブルシューティングLinuxさらに使うようになった。そこではHTTPプロキシを主に扱っていたので、HTTPプロトコルについては一通り知識を身につけた。その知識を実際にLinux上でシミュレーションしてみたくなり、Cを習得しようと思ったがやっぱり挫折

部署移動でメールサーバーを扱うようになった。SMTPプロトコルの知識は身についた。ここでもSMTPLinux上でシミュレーションしてみたくなり、こんどはperl習得しようと思ったがやっぱり(ry

今はExchangeを扱ってる部署で働いてる。ここではExchangeメールメタ情報MySQL上で扱ってるからSQLSELECT文くらいは見よう見まねで使えるようになってる。

Pythonとの出会い

そんな俺も部下を持つようになり、デスクワーク時間が増え、比較自由時間が持てるようになった。そんなときはてブでみかけたCoursera(https://www.coursera.org/)で本当に偶然に「初心者のためのプログラミング」というコースを見つけた。

Programming for Everybody

https://www.coursera.org/course/pythonlearn

コース自体英語だが、別に教授と会話するわけではないし、Python文法以外は条件分岐や繰り返しといった過去挫折しながらも知識としてだけはぼんやりと覚えていたことの繰り返しだ。英語が少しくらいわからなくても、図を見ていれば何を解説しているかくらいはわかる。

結論から言えば、このコースを受講したおかげでいままで断片的に持っていた知識 -単語だけは知っていた「オブジェクト指向」、「条件分岐や繰り返し」「アルゴリズム」などなど- がパズルピースのようにかっちりと組み合わさり、Pythonが難なく習得できた。いままでにシェルスクリプトやCに挫折したのがウソのようだ。LinuxHTTPSMTPSQLといった周辺知識も余すところなく役に立った。何のことはない、Pythonの標準ライブラリを使えばHTTPSMTPシミュレーションなんて簡単にできたのだ。以前トラブルシューティングで夜中まで手作業でちまちまやっていた作業は、全部Python一発で解決したんじゃないか。

このコースをきっかけとして、俺の人生(といってはおおげさだが)が大きく変わった。小さいところで言えば、自宅PC上でバックアップにつぐバックアップでわけのわからなくなったフォルダ構造の中から、同一のファイルを探し出し削除できるようになった。(傍から見れば何を大げさなと思うかもしれないが、ここ10年くらいの俺の中で最大の懸案だったのだ。)仕事でも日次で発生する業務をバッチ化したり、繰り返し発生する手作業を全部Python自動化した。(経営陣へのレポート作成とかそんな類のものだ。)おかげで残業どころか定時前に帰宅できるようになり、自由時間さらに増えた(笑)

ひとつ言語習得してしまえば、あとは同じことの繰り返しだ。増えた自由時間を利用して、いまはPHPJavaScriptjQueryを身につけて何かWebサービスを立ち上げようと目論んでいる。出来上がったら、またここでそれまでの道のりを紹介したいと思っている。

こんなことが自分の身に起こるとは、1年前の自分には想像すらできなかっただろう。それまでは「Webサービス」なんて言葉自分とは一切縁がないと思っていたから。

欲を言えば10年前、いや5年前でもいいからこのコースに出会ってPythonを身につけていたら、今とはまったく違った人生を歩んでいたかもしれない。

コースを開講した教授との相性もよかったのだろう。彼の人柄にも好感をもてたし、「for Everybody」というだけあって、非常にわかりすい説明だった。英語だということを差し引いてもこのコースはおすすめだ。

3/6/2015 追記

たくさんのコメントありがとう。こんなチラ裏文章ホッテントリ入りしてかなりびびっている(笑)

いくつかのコメントに返答したい。

こういう反応があることは投稿したときに予想はしていた。だが、何がきっかけでプログラミングを身につけたのかを具体的に書かないと、何の役にも立たない本当のチラ裏になってしまうので、コース名を書くことにした。だがこのコースをはてブで見つけたのは単なる偶然だ。このとき見つけたのがドットインストールRuby講座だったら、Coursera→ドットインストールPythonRubyになっていただけのことだ。ここで言いたかったのは、断片的でも一度触れたことのある知識は後になってどこで役に立つか分からない、ということだ。Steve Jobsも言っていたが、「人生を振り返ったときに点と点をつなぐことはできるが、その点がなんの役に立つかをあらかじめ予想することなんてできない」ってやつが自分にも起こった、それだけのことだ。

なお、Courseraのこの教授自分の授業内容をすべてオープンにしている。http://www.pythonlearn.com/ 教科書さえもここで無料で手に入る。Courseraに登録するのに抵抗があり、自習上等という人はここで俺が受けたのとまったく同じ内容を確認することができる。ちなみに授業はすべてYoutube上で公開されている。

  • 「なぜPHP?Pythonでやればいいのに」について

これについてはまったくその通りだ。ただ、もう新たな言語を覚えることにまったく抵抗がなくなったのと、PHPRuby on RailsWebサービス界ではメジャーらしいので、とりあえずPHPもやってみよう、くらいの軽い気持ちで思いついただけだ。ひょっとしたら実際にはPython+Djangoとかで開発するかもしれない。

2015-01-16

http://anond.hatelabo.jp/20150116173631

別にPython3で使える画像処理ライブラリだってあるし、Webフレームワークdjangoみたいな人気あるやつは両対応してるし

そんなに公式サポート重要ならそもそもオープンソース自体使うべきじゃないし

Python自体は、ほとんどのLinuxの標準としてがっつり食い込んでて安泰だと思うけど

2014-10-15

http://anond.hatelabo.jp/20141011122833

盛大にスベってるなあ。

こういう「上から目線」のポジションに立ちたがる人たちが揃いも揃ってRails叩きたがる(でも自分陳腐自覚はない)のが面白い

たぶんPHP叩きは多数派に乗っかってる感があってイマイチだし、Pythonはなんか怖いし、Ruby/Railsは隙があって自分でも叩けそうな気がするんだろうね。

DjangoとかPlayとか、他のフレームワーク勉強してみることをお勧めするよ。自分の書いた批判素人のないものねだりに過ぎないことに気づけるんじゃないかな。

2013-06-26

エロ2ちゃんねるまとめサイトから画像を集約するサイト作成

作ったサイト概要

サイト名称
おなりん(正式名称おなぬらいんず)
サイト目的
おなぬをお手軽・お気軽にするためのサービスエロ2ちゃんねるまとめサイトから画像を収集して、お気に入り画像だけをスライドショーするだけのシンプルWEBサービスです。
サイトの特徴
1)準備をしなくてもすぐにはじめられる 2)毎日新鮮なおかずで 3)右手はいつもフリー、、、
サイトの説明
「おなりん」はおなぬが大好きだけど、おかずを準備するのが面倒というひとのために開発されました。本をおかずに使うと、利き手でページをめくる必要があるので、おなぬに大切なリズムが狂ってしまますインターネットエロサイトをおかずにすると、画像を切り替えるのにいちいちマウス操作せねばなりません。利き手マウス操作しないといけないので、これも大切なリズムを狂わせますもっと気軽におなぬが出来ないものか?そんなあなたの為に作られたWEBサービスです。厳選されたムフフサイト画像を表示し、気に入った画像お気に入り登録して、スライドショーで表示する。後は、右手の思うがままです。何にも集中を邪魔されることなくおなぬに集中することが可能です。

わたしの横顔

年齢
40代半ば
職業
システムエンジニア
プログラミング
25年以上
プログラミング実績
10数年前までフリーソフト作家的なことをしていました。窓の杜にも作成プログラムが掲載されていたことがあります
好きなプログラミング環境
PHPMySQL(だたし、「おなりん」はPython作成しています

作ったきっか

もともとは、2ちゃんねる系のまとめサイトを巡回して、Yahoo!ニュースのようなサイトを作っていました。(現在も鋭意開発中です。)

コンテンツの内容を解釈して自動的にジャンル分けをして・・・などと、出来るかわからない壮大なアイデアを実装しているので、いまだに完成時期が見えて来ません。

画像収集処理を作っている時に「これでエロ画像を集めたら面白そう」と思いついてしまいました。思い立ったら、すぐにやりたくなるのが人間の性というやつです。基本的な処理はほとんどできていたので、割に短期間で作成できました。エロ画像をどうせ集めるのなら、目的をもって役に立つサイトにしようと思い立ち、おなぬーをするためのWEBサービスにました。

作成したもう一つの目的として、月間10PV程度のサイト自分で運営したいという思いもありました。安直ですがエロ系のサイトであれば、それが可能なのではと考えた次第です。

なぜ匿名ダイアリーを書いているか

せっかくサイトを作ったのですが、エロ系のサイトは告知をするのが難しいとう事実を作り終わってから知りました。私自身もブログをやっているので、そこでお知らせをしても良いのですが、ブログ趣旨にあわないのと、PVがとてつもなく低いという理由で断念しました。

匿名ダイアリーは、かなりのPVがあるので、作ったサイトの告知ができるのではと思い匿名ダイアリーを書いています

せっかく作ったサイトですから、皆さんに利用してもらいたいし、役に立つサイトにしたいと思っています。ですので、サイトを見たらご意見をいただけたら嬉しいです。

おなりんの実行環境

「おなりん」は、Python/Djandoで作成しました。

もう、15年以上PHPPHP FIと言う名称の頃からユーザーです)でプログラムを作ってきました。PHPが持っている気軽さや気楽さは大好きなのですが、誰もが好き勝手コードが書けるというデメリットもありますプログラム言語にはある程度の厳しいルールがないと将来にわたってメンテナスしていけるプログラムを作るのは困難です。

せっかく新しプログラムを作るのだから、新しいプログラム言語で作ることにしました。

ある程度、厳しいルールがあって、誰もが同じようなプログラムが作れる言語はなんだろうと考えていくとPythonRubyが候補に上がりました。

Rubyはできるだけ手数を少なくプログラムを作ろうという基本思想があります。私の感覚では、熟練したプログラマが使う言語という印象が強いです。

Pythonは、プログラマレベルを問わず、熟練プログラマ新人プログラマも同じようなプログラムが書けるプログラム言語という印象でした。

私自身も将来誰かに教えられるようにと、今回はPythonを使用言語として選択しました。また、裸のPythonで書くのも面倒そうですので、フレームワークとしてDjangoを選択しています

「おなりん」は、そんな思いを乗せて以下の環境で構築しました。

サーバーさくらVPS(1G)
プログラミング言語Pytyhon 2.7.5 / Django 1.5.1
その他ツールBootstrap, jquery, wookmark, colorboxなど
WebサーバーApache 2.2
データベースMySQL 5.5

画像抽出について

「おなりん」は、登録されたまとめサイトを定期的に巡回して、各エントリーから記事内の画像URL抽出しています。取り出すのはURLだけで、画像の直接ダウンロードは行いません。ですので、リンク元画像がなくなれば、「おなりん」からの表示もなくなります

サイトエントリーRSSから取得しています。各記事のHTMLPythonライブラリurllib2を使って取り出し、HTMLから正規表現画像URL抽出しています

サイトによっては記事画像HTMLに決まった書き方がなされていないために、余計な画像抽出してしまうこともあります。おかず画像抽出精度は徐々に上げて行きたいと思ってます

さくらVPSについて

当初「おなりん」は、Amazon EC2(t1.micro)で構築する予定でした。構築までは完了したのですが、今ひとつ体感速度が上がらないのです。すでに利用しているさくらVPS比較したところ、3倍くらいの速度差(abコマンドの実行結果)があったので、Amazon EC2の利用を諦めました。

Amazon EC2は1年ほどの無料利用期間があります。これを過ぎると課金されていくのですが、Amazon EC2(t1.micro)を1ヶ月動かし続けると4000円近い料金が必要になりますさくらVPS(1G)は1年で1万円程度です。3倍早くて価格は4分の1なら、チープな私はさくらVPS以外選択余地がありません。

でも、拡張性を考えるとAmazon EC2も捨てがたいのです。

Python、初Django感想

Pythonはインデントプログラムブロックを表すます。他の言語のようにカッコを使いません。IFやFORを使ってインデントが深くなると、どんどん右寄りになってきて、全体的に斜めなプログラムが出来上がります最初は見慣れずに違和感を感じましたが、慣れればそうでもありません。

ただ、ネストしたIFでインデントが深くなりすぎると、インデントの位置で意図しない結果が出るので注意が必要です。慣れてしまえば、使いやす言語です。

Djangoは良いフレームワークだと思いますモデル定義してしまえば、モデルメンテナンスを行う、管理画面が一緒に生成されますテンプレートタグなどを自作すれば、かなり深いところまで手を加えることが可能です。慣れれば扱いも楽なので個人的には気に入っています

今後について

「おなりん」は、まだ作ったばっかりで、テストもまだ十分に行えていません。ですので皆様にも使っていただき、問題点があれば教えて頂きたいと思っています。開発しているマシンmacなのでIE系のテストは皆無です。IEの方、ぜひともレポートをください。

レポート感想などがありましたら、「おなりん」のサイトの下にある「お問い合わせ」リンクから送付をお願いします。また、巡回してほしいサイトも募集しています。ただし、日本国法律に準拠したサイトに限らさせて頂きます

機能的に今後は、画像の人気ランキング機能を組み込む予定です。また、サイト運営の足しにしたいのでひっそりと広告を入れます

また、リクエストがあれば、ソースコードGithubに公開したいと考えています

長文を読んでいただき、ありがとうございました。

2013-02-26

オンラインブックマークサービスを作ってみました。

「らびっとブックマーク

http://rabbit-bookmark.com

管理をする」ことに重点を置いた(ノンソーシャルブックマークサービスです。

■作ったいきさつ

ブラウザブックマークが貯まりに貯まってたので、ブラウザじゃなくてオンライン管理しようと思ったところ

丁度いいブックマークサービスが無かったので

「じゃあ自分で作ってみるか」

ということで作りました

はてブは?

もちろんはてブでもブックマーク管理してたんですが「もっと一覧性が高かったらなぁ」とか、「ラベリングができたらいいなぁ」とか、

単純に管理するという点に注目したときもっと機能が欲しいと考えました。


制作について

製作期間は2ヶ月くらい。

使った言語PHPで、フレームワークは「CodeIgniter」というものを使いました。

日本CodeIgniterユーザ会」

http://codeigniter.jp/




Webサービス制作で紆余曲折した話

実はプログラミング勉強は1年半ぐらいやってて、Webサービス(のプロトタイプ)をいくつか作ったことがありますが、リリースまで出来たのは今回が初めてです。

最初流行の「Ruby on Railsから勉強しました。

本を買ったり、ネット上のチュートリアルを参考にしたりしました。

流行だったこともあって、情報収集にはそこまで困りませんでした。

そこで当時考えたToDoリストゲーム性を加えたWebアプリを作ろうとしたんですけど、どうしても本番環境へのデプロイができなくて、そこで挫折…。

デプロイだけで2~3週間ぐらい奮闘してたと思います。)

ならば別のフレームワークを!と思って次に手をつけたのがPythonフレームワークDjango

Railsより動作が速く、もともとPython勉強してたこともあり、親しみを持てた一方で書籍ネットでの情報が少なくて苦労もしました。

簡単なアプリを作ってデプロイを試みたんですけど、結局こちらでも成功まで辿りつけませんでした…。

サービスを作っても公開できなきゃ意味ないじゃん!」

と焦り始めたところで、次に目をつけたのがPHPの「CakePHP」でした。

PHPを使ったら負け」みたいな文言ネットでよく見かけていた

(結果として今現在かなりお世話になっていますが)

ので、あえて敬遠していたのですがここまでくると手を出さずにはいられませんでした。

結果から言うとこちらは先の2つでの苦労が嘘のようにいとも容易くデプロイができました。

このままCakePHP制作を進める予定でしたが、何故かここら辺で別の事に手を出して、構想していたToDoリストアプリの制作を中断しました。

そして数ヶ月の空白期間を隔て、今回のオンラインブックマークサービスネタを思いつきました。

その間に出会ったのが「CodeIgniter」というフレームワークで、CakePHP同様PHPベースですが、こちらは軽量フレームワークです。

動作が速く、学習コストも低いのが魅力的でした。(デプロイも簡単。)

ということでこちらを採用して制作し、今回リリースまでこぎつけました。

これから独力でWebサービスを作ろうと思ってる方は、使うフレームワークの仕組みだけでなく、本番環境デプロイすることまで見越した勉強をしないと

自分みたいにフレームワークに左右されて余計な時間を取られてしまうので、その辺は注意した方がいいかもしれません。

(ただそれらを通して学んだことは無駄にはならないと思います。)


感想

今回実質の製作期間は2ヶ月くらいでしたが、それに至るまでの勉強も含めるとかなりの時間と労力を費やしていて、Webサービスをちゃんとしたサービスとして

リリースするのは本当に大変なことだと痛感しました。

立ちはだかる壁としては

技術がなぁ…

デザインがなぁ…

↓(ある程度の妥協

デプロイがなぁ…

宣伝がなぁ…

運用がなぁ…

みたいな感じだと思います

最近はてブでも「Webサービス作った」系のエントリが上位に昇っていますが、

素人でも独力で数ヶ月でサービスを公開してしまう方は本当にすごいなと感じました。

自分はまだ勉強中の身で至らないところもありますが、どうぞよろしくお願いします。

2013-02-06

もしプログラミング初心者新人に基礎教育を施すなら

オープン系のデスクトップアプリ開発、Webプログラミングシステムプログラミングを仕事にする人向けとして考えてみた。

学習環境Ubuntu Linuxで、デスクトップ上のターミナルか、WindowsからTeraTermsshログインして行うことを想定。

なので前提知識としてLinuxabcくらいは教えておくとして、もし来年度やるならこんなもんかな。

結構分量多めだけど、これでも基礎の基礎に絞った感じ。


  1. Pythonで学ぶ手続き型プログラミング
  2. Javaで学ぶオブジェクト指向
  3. C言語で学ぶメモリの仕組み(主に配列ポインタ構造体関連)
  4. Perlで学ぶ文字列処理(正規表現ハッシュCGIを含む)

おまけ:Pythonで学ぶ関数型プログラミング


なお、上述のカリキュラムでやらない言語(VBjavascriptC++Objective-CC#PHPRubyなど)やWebフレームワーク(DjangoRuby on Railsなど)は、全てこれらの応用で覚えられると思うので、基礎教育終了後に各現場にてOJTで習得してもらう。

IDEも使わないけど、はじめの一歩で軽量エディタ+コマンドラインをやり込んでいれば正直どうにでもなるので省略。

あと最後がおまけ扱いな上にLISPで学ばないのは、要するに「リストすげー!超すげー!!」という感動を胸に今後も頑張ってもらうのが狙いなので(だって現状使う機会殆ど無いし)、最初にやって一番手に馴染んでいるツールで、理解のコアになる部分にサクッと触れて欲しいということ。


ちなみに来年度、自分教育係になる可能性は今のところ無い。

2013-01-01

全てのwebエンジニアPython勉強するべき2013年到来

 

あけおめ!今年は巳年。へび。へびと言えばPython。そう今年は全てのwebエンジニアPython勉強する最高の環境が整った年なのです。

 

既にPerlRubyを習得してるけど、それに加えてPython必要

必要です!必要だと思います。もはやPythonwebエンジニアにとって必修言語となりつつあると思いますLinuxの多くの箇所でシステム言語として用いられ、可読性の高さから多くの技術書籍のサンプルコードとして用いられ、科学技術系分野におけるエコシステムの充実っぷりはますます磨きがかかっており、様々なライブラリがどんどん出てくる現状を「Pythonからいか自分には関係無い」と遠巻きに眺めるのはもったいないです。

 

習得するのにどのくらい時間かかるの?

あなたが既に他の言語に慣れ親しんでいるなら、特にRubyなどに精通していれば「1週間」で基本的な読み書きは出来るようになるでしょう。そのくらいPythonは敷居の低い言語です。またweb上のチュートリアルドキュメントが大変に充実していますので(もちろん和訳済み!)費用0円で勉強開始できるお手軽言語でもあります

 

バージョン2系と3系のどちらをやればいい?

これは大変に悩ましい問題で、自信を持ってお薦めできるバージョンが無いのが残念な現状です。2系と3系は特に文字コード周りを中心に言語体系にそれなりの差があり、日本語を扱うエンジニアにとっては悩ましい問題です。結論としては「どちらも読み書きできる」ようにした上で「3系で書く」ですかね。2と3の違いを理解しておかないと必ずどこかで躓きます特にweb上の情報はまだほとんどが2系ですが、ぱっと見て2と3のどちらのバージョンで書かれた情報なのかを判断できないと多くのweb上の情報を利用できずにもったいないです。

 

お薦め和書は?

先述しましたが和訳済みのチュートリアルが充実しているのがPythonの特徴でもありますので、まずは目を通す事をお勧めします。

・2系ドキュメントTOP

http://docs.python.jp/2/

・3系ドキュメントTOP

http://docs.python.jp/3.3/

・公式ドキュメントでは無いがお薦め(少し進んだトピックが中心)

http://www.doughellmann.com/PyMOTW-ja/contents.html

ぜひ超充実したドキュメント群を覗いてみてください。「チュートリアル」を読めばだいたいの言語仕様がつかめるはずです。「ライブラリリファレンス」はあなたの最高の辞書となるでしょう。

その上で、やっぱり書籍勉強したいということでしたら以下の本がお薦めです。

プログラミング自体が初めての人向け

Pythonスタートブック(辻 真吾)

・他言語を既に知っている人向け

みんなのPython 第3版(柴田 淳) ・・・2版と3版で大きく内容が異なります 2版はPython2系、3版はPython3系を中心に解説

・進んだトピックを扱う中級者以上向け

エキスパートPythonプログラミング(Tarek Ziade/和書)

 

IDEで楽したい

pythonはインデント存在があるので無機能エディタで大規模なコードを書くのは案外骨が折れます。贅沢系IDEの代表格はPyCharm(有料$99)でMac,Windows,Linuxの3プラットフォーム対応しており、一つのアカウントでいくつものマシンインストールできます(同時に使う事はできない)。30日間の無料トライアルもありますトライアル期間が過ぎても一回あたり(たしか)5分ぐらいなら継続して使えます無料IDEだとEclipseプラグインNetbeansあたりでしょうか。Netbeansは公式開発は既に終了しておりあまり安定していません。

 

色んなライブラリなど

ここからは雑多に箇条書き風にお薦めしていきますね。

webフレームワーク

大規模な開発ならDjangoが第一候補。歴史が長いフルスタックフレームワークですがまだ正式版がpython3系に対応していない。最近勢いがあるPyramidは3系に対応済み。各webフレームワークについては各開発者同士が「筋が悪い」「Pythonとしておかしい」「トレンドから3年は遅れてる」などとガチンコで思いの丈をぶつけ合っている以下の記事も参考にしてください。http://www.atmarkit.co.jp/news/201209/24/pycon.html

とりあえず最低でもDjangoPyramidは両方使ってみてから自分にあった方を選択するといいと思います

・Numpy/Scipy

科学技術系の人が好んでpythonを使う理由の一つがNumpy。数値行列計算を内部でCを使って計算するために非常に高速。インターフェイスは書きやすpythonだけども実行速度はCネイティブ並みというとてもありがたいライブラリです。現在Pythonの盛り上がりに間違いなく大きく影響しているライブラリ

・nltk

言語処理で使われるライブラリ英語ベースとなってますが工夫すれば日本語でも全然使えます。参考文献 http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html

・multiprocessing

並列処理ライブラリCPUマルチコアを全て使い切って無駄無く高速に処理を行いたい時に重宝します。個人的に大好きなライブラリ。頑張ればちょっとした分散並列システムも作れます。このライブラリのお陰で自宅にある10台*(擬似)8コアでお手軽python並列処理クラスタを30分ぐらいで作る事ができました。

以上です

楽しいですよpythonもっと日本pythonエンジニアが増えることを祈ります

巳年元旦

2012-01-18

Python vs Ruby vs PHP vs Haskell プログラミング言語バトル part1

 

42 : デフォルト名無しさん : 2011/11/12(土) 23:53:51.20

Pythonの方が弄れる対象が多いのに、なんでウェブ系だとPHPの方が流行ってんだろ

端末からテキスト処理も楽だし、数値計算周りのライブラリも充実しているのに

PHPが優遇されているのって歴史的な経緯以外に何か他の理由でもあるのか?

けどまぁ、情弱文系SEが大半を占めているバカだらけの日本じゃ別にPHPで困ることもないか

45 : デフォルト名無しさん : 2011/11/13(日) 01:41:24.25

数値計算や端末からテキスト処理なんてWeb系じゃ大して使わないからなあ…

43 : デフォルト名無しさん : 2011/11/13(日) 00:04:23.30

PHPが未だに現役なのは、単に歴史的な経緯でしかないだろ

Pythonに関しては、ZopeさえコケていなければWebサーバLLとして大成功していたはずなのに、

Railsなんかが登場したおかげで、すっかり影が薄くなってしまますた....

44 : デフォルト名無しさん : 2011/11/13(日) 00:49:55.28

zopeってコケてたんだ

ってか、railsインスパイアされたフレームワークって今じゃ幾らでもあるよね

djangoとかCakePHPとか。rubyってRoRを使いたいユーザを除くと、

pythonPHPの方がユーザー数は圧倒的に多いと思うんだけど

本家railsって、他を遥かに越えるほど良いものなんだっけ?

48 : デフォルト名無しさん : 2011/11/13(日) 08:30:25.68

44

Zopeが登場した当時、RDB+PHPはもう古い、これからOODB+ZopeWebの中軸になる!」

さかんに宣伝され、雑誌でもZope特集が組まれていた

 

少なくとも自分ZopeからPythonという言語を知ったし、その時点でRubyは知らなかった

そして、その後のORM(RDB)+Railsの出現と華々しい革新性への注目は、誰もが知っているだろう

今でもZopeの開発は継続されてはいるが、結果的に当初の期待が大きく裏切られたという事実は動かしがたい

 

djangoCakePHPについては実際に触っていないので憶測になるが、おそらく技術水準ではRailsと同等だろう

しかしRailsはRailsコミュニティの活動が活発だし、その進化は異常に早い

 

Railsに何か致命的なトラブルが発生して開発が停滞する、あるいはdjangoCakePHPから

何かのイノベーションが提示されでもされない限り、後発のdjangoCakePHPRailsに追いつくのは無理

Railsは決して技術的に完璧Webフレームワークではないんだけどね....(たとえばSeaSideのような.... )

 

からこそ「もしもZopeが....だったなら」という「たら・れば」感はPythonコミュニティの潜在認識になっている

51 : デフォルト名無しさん : 2011/11/13(日) 12:55:40.83

 C a k e P H P は う ん こ   

遅い、設計が古い、動作がおかしいの3重苦

日本では流行ってないけど海外だとYiiが流行ってきてる

55 : デフォルト名無しさん : 2011/11/13(日) 17:31:12.14

CakePHP使ってんの?

可哀そうにw

53 : デフォルト名無しさん : 2011/11/13(日) 14:44:48.55

求人PHPばかりだからPHPやるしかないだろ。

57 : デフォルト名無しさん : 2011/11/13(日) 19:34:04.95

でもやっぱりいつもの使い慣れたLL(Python/Ruby)で

Webサービスを書きたいってのがある

73 : デフォルト名無しさん : 2011/11/15(火) 17:32:46.07

アメリカ言語ユーザー数は

Python>>>>>>>>Ruby

求人数は

Ruby on Rails>>>>>>>>Django

http://www.indeed.com/jobtrends?q=django%2Cruby+on+rails&l=

どういうことなの?

74 : デフォルト名無しさん : 2011/11/15(火) 17:48:15.59

RubyRails以外に使い道がないか

75 : デフォルト名無しさん : 2011/11/15(火) 17:54:35.50

海外ではRubyは昨今のRailsバブルのお陰で

もはやWebスタートアップ共通語になってるらしいからね

求人数が多いのはそのためだと思うよ

76 : デフォルト名無しさん : 2011/11/15(火) 18:03:23.05

なんかのミスかと思ったがアメリカでもRuby on Railsは人気があるのかなあ・・・

Pythonのほうが使いやすいと思うのだがフレームワークRailsが優位なんだろうか

77 : デフォルト名無しさん : 2011/11/15(火) 18:23:14.33

Djangoは周辺ライブラリ微妙だし本体も鈍くさい感じがする。

でも、FlaskはSinatraより好きだからPythonが嫌いってわけではない。むしろ好き。

 

ただ、いざ作り始めるとやっぱりRailsが楽だなあってなって、Railsを使い続けている。

78 : デフォルト名無しさん : 2011/11/15(火) 18:38:46.28

同感だ

同じように思っている人が他にもいて安心した

79 : デフォルト名無しさん : 2011/11/15(火) 18:54:37.13

PHPJavaScalaには

Railsみたいなフレームワークあるのに

Pythonはいいのないんだよな

80 : デフォルト名無しさん : 2011/11/15(火) 21:19:09.89

PHPフレームワークが乱立しすぎているから、RailsPHPで実装してみようというやつが出てきた。

Scalaも注目されだしたのはつい最近のことだしな。

それに比べてPythonは、Zopeというデファクトスタンダードが既に存在していたけど、

つの間にかフェードアウト

ただ、どうやってもRailsもどきRailsを超えることはできないのは間違いない。

83 : デフォルト名無しさん : 2011/11/15(火) 21:25:38.55

パクリオリジナルを超えられない(キリッ って定型句だけど、

これってキリッって言いたいだけだと思う。

後発品が先に出たものを超えたものなんていくらでもあるから

84 : デフォルト名無しさん : 2011/11/15(火) 21:30:04.39

D言語って超えたって?

85 : デフォルト名無しさん : 2011/11/15(火) 21:31:12.00

B言語って超えたって?

86 : デフォルト名無しさん : 2011/11/15(火) 21:53:33.76

でもRailsRubyの黒魔術を使いまくりから

PHPで同じ事をできないわけではないだろうけど、Ruby on Railsほど簡潔にはできない

90 : デフォルト名無しさん : 2011/11/15(火) 22:50:07.81

スタートアップなんて根無し草の集まりにとって、

googleが囲った言語coolさを見出せないんだろ

123 : デフォルト名無しさん : 2011/11/20(日) 11:32:16.79

まあくだらねえWEBサービス作って喜んでる情弱は早く死ねって事だよ

91 : デフォルト名無しさん : 2011/11/15(火) 22:52:42.98

そういう理由じゃなくてRailsのほうが単純に情報プラグインも多いからでしょ

3 : デフォルト名無しさん : 2011/11/15(火) 23:07:07.67

linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん

わざわざ不合理で不完全な言語を使うなんて

社会からハミ出た奴らの精神的な作用によるものじゃないの?

95 : デフォルト名無しさん : 2011/11/15(火) 23:20:20.21

django情報プラグインが増えないという、

現実に対する鬱憤を吐いてるようにしか聞こえないな

もしも

linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん

真実であるのなら、今頃はdjango情報プラグインが溢れかえっているはず

104 : デフォルト名無しさん : 2011/11/16(水) 01:20:49.05

Python信者乙。

yumや、gdbgnome拡張pythonであるからといって、それをwebアプリでも使いたいと思う人は少ないというだけのこと。

ソースからインストールする必要があったとしても、web開発ではrubyを使いたいという人が多いというだけのこと。

94 : デフォルト名無しさん : 2011/11/15(火) 23:15:11.93

というか、世界中Pythonプログラマが Remeber Zope!! を合い言葉

打倒RailsたるWebフレームワークを開発しているはずだけど、

いまだにRailsを超えるプロダクトが登場しないのはナゼ?

Railsも登場してから、かなりの年月が経過しているんだけどなぁ....

その間にもRailsRails 3が登場して、REST/AJAXの強化等の進化継続しているよ

347 : デフォルト名無しさん : 2011/12/09(金) 10:16:35.22

Ruby では

ary.map {|x| x**2}

となるものが、Python では

map(lambda x: x**2, ary)

となり、lambda の本体が1つの式では表現しきれなくなると

def mapper(x):

.....

map(mapper, ary)

書き換える必要があります

348 : デフォルト名無しさん : 2011/12/09(金) 10:24:20.94

Pythonのlambdaを用いた階乗計算

f = lambda x:(x and f(x-1)*x)or 1

RubyにはPythonのように「lambda本体は式でなければならない」という限定がありませんから

andやorを使った不自然記述をしなくても

f = lambda{|x|if x == 0 then 1 else x*f.call(x-1) end}

または

f = lambda{|x|x == 0 ? 1 : x*f.call(x-1)}

と書けます。lambda内でreturnが使えますから、書きたければ

f = lambda{|x|if x == 0 then return 1 else return x*f.call(x-1) end}

でもOKです。

390 : デフォルト名無しさん : 2011/12/10(土) 15:35:41.62

348

これはPythondisっているように見せかけてRubydisっているのか? と一瞬思ってしまったw

だってRubyのほうが長くない?CLのfuncallみたいなcall()がちょっとうざいし…

そしてどっちもlambda式の中で束縛変数名前再帰可能、と

350 : デフォルト名無しさん : 2011/12/09(金) 11:12:13.28

要素に対する関数適用と、抽出を組み合わせる場合

Python

print [x*2+100 for x in [1,2,3,4,5] if x > 2 and x < 5]

暗号のように見える。

Ruby

puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2+100}

思考の流れと、コードの流れが一致しているので書きやすい。

351 : デフォルト名無しさん : 2011/12/09(金) 11:22:55.04

だれだPythonなら書き方はひとつとか言ってるのは

map(lambda x: x*2+100, filter(lambda x: x > 2 and x < 5, [1,2,3,4,5]))

354 : デフォルト名無しさん : 2011/12/09(金) 12:22:07.37

pythonて可読性が高いのをうたってる割にはそこいまいちだよね

353 : デフォルト名無しさん : 2011/12/09(金) 12:10:08.46

Ruby場合には、左から右へと無名関数データフローあるいは

パイプラインのように並ぶからコードが読みやすい

 

関数型プログラミングに不慣れな初心者でも、参照透明性のあるコード自然に書ける

プログラマにとって優しい or プログラミングの楽しさを教えてくれるのがRuby

 

それと比較すると、Pythonコードは、関数型プログラミングというもの

いかに高度で難解なものであるかという事をもったいぶってプログラマ押し付け

 

もしもPythonしか知らないプログラマであれば、関数型 = 難解 という印象を持つだろう

356 : デフォルト名無しさん : 2011/12/09(金) 12:53:45.66

階乗計算くらいだと単純すぎて、ナゼ重要なのかが分かりづらいと思うのでコードで示す

result_list = source_list.map { |elem|

  x = foo(elem.x)  # ここが局所宣言を書く部分

  y = bar(elem.y)  # ここも局所宣言の続き

  x + y       # 最後に評価された式の値が、無名関数のリターン値になる

}

Rubyでは、map等に与える無名関数の中で局所的な環境(クロージャ)が作られるから

x = foo(...) のような代入文がいくつでも(= 複雑な処理でも)書ける

このポイントは、実用的なプログラム関数型風で書こうとした時に、威力を発揮する

357 : デフォルト名無しさん : 2011/12/09(金) 12:59:21.07

余計分かりづらくなった

358 : デフォルト名無しさん : 2011/12/09(金) 13:17:26.54

リスト内包表記が暗号みたいと言ってる奴は

高卒ドカタなんだろうなぁと可哀想になる

大学数学に触れる機会があれば

集合の表記に似せてることが分かるから

386 : デフォルト名無しさん : 2011/12/10(土) 01:41:34.46

数学とかで慣れてるし区切りが関数のがわかりやすい

359 : デフォルト名無しさん : 2011/12/09(金) 13:46:31.97

355

map/filterはfor/ifと同じだと言っているだけだから、難解という印象は持たない。

関数型プログラミングに慣れた、あるいは得意な人であれば、そういった印象なんだろね

Rubyの魅力はこれから関数型プログラミングを学ぼうとする初心者、 あるいはそんな初心者へ教える立場から見た、優しさ or 分かりやすさなんだ

360 : デフォルト名無しさん : 2011/12/09(金) 13:53:28.85

Rubyだと直感的に書けるコード

[1,4,3,2].sort.reverse.map{|x| x.to_s}.join('-')

Pythonだと読みにくい。

'-'.join(map(str, reversed(sorted([1,4,3,2]))))

361 : デフォルト名無しさん : 2011/12/09(金) 14:07:17.88

360

Pythonでは思考の流れと一致しないばかりか、「カッコだらけ」のコードになると.....

364 : デフォルト名無しさん : 2011/12/09(金) 14:28:55.99

カッコだらけのコードを分かりやすくする基本的な方法静的単一代入じゃないか

Rubyのやり方は基本ではなく玄人のやり方だろ

372 : 369 : 2011/12/09(金) 16:21:03.82

Pythonでは組み込みの型でメソッドチェインはやって欲しくないな

listにmap,filterメソッドができたとしても、

似たようなコレクションtuple,deque,array,queue等にも同じメソッドが必要になってくるし。

シーケンスプロトコルの利点が活かせない。

383 : デフォルト名無しさん : 2011/12/10(土) 01:17:28.39

372

外部のライブラリでも列挙可能なものは、たいていEnumerableモジュールをimportしてます

Rubyユーザーは列挙可能なものmapselectできて当然だろって思ってる気がしま

377 : デフォルト名無しさん : 2011/12/09(金) 18:41:51.79

Pythonは「何かを便利に書くためのしわ寄せ」をはっきり寄せてくる

得意と不得意を言語レベルではっきり主張するのでメリケン好みと言えなくもない

Rubyは全方位になんとなく八方美人なので、全体的になんとなく書きやすくてなんとなくキモくて遅い

379 : デフォルト名無しさん : 2011/12/09(金) 18:48:52.27

Pythonユーザー調教っぷりは異常

「書きにくいってことはその処理に向いてないってことだから諦めろ」を地で行く

387 : デフォルト名無しさん : 2011/12/10(土) 13:40:40.74

リストの内包表記はシンプルに書けるときは使うけど

基本その場でdefするのがPython風なんだと思う。

389 : デフォルト名無しさん : 2011/12/10(土) 14:40:31.04

無名関数が文を使うほど複雑なら名前を付けるのが Python 流と想像

384 : デフォルト名無しさん : 2011/12/10(土) 01:23:49.48

outer(center(inter( arg )))

これを読みづらいと感じるのは、左から右に流れる

日本語文に慣れているからだと思うが、

もしかしてアラビア語ネイティブな人からすると逆に読みやすいのか?

385 : デフォルト名無しさん : 2011/12/10(土) 01:34:57.89

なるほど、ということは右から左、左から右どっちでも行ける言語が最高ですね

F#パイプライン演算子最高ということで

2012-01-04

プログラミング初心者たわごと

JavaScript って生き物っぽいって思ったのがきっかけだった。

なんか菌?に遺伝子いれてたんぱく質生産させるやつ? Function は菌の細胞膜prototype遺伝子で、だから prototype全然関係ない違う生物遺伝子を生きてる菌に入れちゃったり。そうすると全然ちがうたんぱく質生産されたり。prototype にべべーっとコピーして追加するのなんてまさしくそれっぽい。

インスタンスからじゃないと複製できないのも生き物っぽい。

インスタンスって言い方になにか違和感があるなあ。

だってプロトタイプベースって、生き物しかいない世界じゃない?基本的に。インスタンスってのは生き物じゃない設計図があってそれにしたがって出来た生き物がインスタンスってイメージあんだけど。プロトタイプベース世界にはそんな設計図も生き物じゃないものもないよね?なのにわざわざインスタンスっていうのに何か違和感ご都合主義的なもの感じる。クラスは型で、インスタンスを実体だとかなんとかって氾濫してるせいかな。多分この辺の用語が JavaScript をわかりにくくさせてる気がする。

僕の感覚では、オブジェクトってのは生き物で、クラスベースってのは神が設計図に基づいて生き物を生産してる世界で、インスタンスベースってのは生き物が生き物を複製してる世界イメージだ。多分、原始の生物インスタンスベースみたいな世界で、海の中にうようよしてたんだろうな、とか。

オブジェクトじゃないものは、生き物じゃない死んでるたんぱく質RNA の破片みたいな。それだけじゃなにもできないみたいな。それだけじゃ命がないから、生き物の殻に詰めるってのが JavaScriptコンストラクタイメージ

Perl の bless したらこれはもう命入ったよ生き物だからねっあとは勝手にしてねってのも、Python名前空間さえあればなんとかなるよねってのも、JavaScriptハッシュさえあれば世界作れるよねってのも、みんなどこか似ている。ちゃんと OOP を理解できてるかは別としてもこの三つはわりとすぐやりたいことができた。昔 Java の本を買ってきて挫折したのにくらべたら、なぜかずっとわかりやすかった。(bless という命名はすごく洒落てる)

全然関係ないけど、Django日本語リファレンスは何か萌えるラクダ本日本語訳はむかつくのに。

プログラミングを始めたばっかりの時は、なんだか難しい用語の意味を理解しないと OOP がわからないと思ってた。それは僕らの住んでる世界とは全然関係のないプログラミング技術ってやつだと思ってた。

でも多分違う。

世界が動く仕組みさえあれば、あとは作り手に世界の成り立ちを抽象化する表現力さえあれば、世界勝手表現されていくし、動き出してく。たまたま僕らの世界オブジェクトもので溢れていて、プログラミング言語進化すれば世界に似るのも当然だろう。いや逆か。プログラミング言語世界に似てきたから、オブジェクトなんていう世界に似た概念が出てきたってことか。なんだか難しい用語ってのは、その表現の一部分の技術名前をつけてるだけなんだな、と。例えば何とか歌唱法や何々画法とか何とかレトリックとかパースの取り方みたいなのと同じ。それは表現を理解する手助けにはなるけど、その意味を知る事がイコール表現力をあげることにはならないんだよね。これに気づくのに遠回りしすぎたなあ。

(知識を得るだけで、100% 還元される人もいるかもしれないけど、そんなのは一部の天才だけだと思う。殆どの凡人はそうはいかない。とはいえ、元の錬度が低ければ、コツをいくつか教わるだけでいきなりうまくいくこともある。ただ、それをまるまんま実力だと思うのは、どんな分野でも危険だ。恋愛テクニックやらを必死に読んでる連中が男女間の深い人間関係を上手くやれてるとはちょっと想像できない!)

プログラミング表現力を上げるにはどうすればいいんだろう。きっと他と同じだろうな。いい表現を沢山味わって、世界をよく観察して、どう成り立ってるかどう動いてるか、私達はそれをどう認知しているのか、考えることかもしれない。漫画家を志す人が美術解剖学を学んだり、優れた画家が絵筆で世界を生々しく描写するように、優れたプログラマ世界のなりたちをプログラムに写し取ったり、世界の仕組みを作る事が出来るのだと思う。

やっとプログラミング面白くなってきた初心者より。

2010-11-18

日記2

前回:http://anond.hatelabo.jp/20101118000033


Rails勉強してみるかと思ってradrailsインストールしようと思ったら、インストールすら出来ない。

「あらゆる意味で俺には無理」―そんな言葉が脳裏に浮かぶ。

今日はもうやめておこう。いよいよ気が滅入って駄目になるだけだ。


自分に出来ることは少ない。

時間も少ない。


だったら何をすべきか?

いや自分は何をしたいのか?



やっぱりvimか?vimで頑張るしかないのか?

落ち着け

たかだか開発環境ひとつや二つ入れられなくて何だ?

自分はそもそもスキルが無い。序盤で転ぶことが多数あるだろう。

今日の失敗はその一個目だ。

この失敗をどうするか?継続してインストールしてみるか?

いや違うだろう。技術をつけたいのであれば、ひとまずvimで作ってても構わないだろ。

今はまだ開発環境に固執すべき時ではない。

つまりvimで頑張れば良い。

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん