はてなキーワード: RubyGemsとは
すんません、タイトルは釣りです。多くの人に読んでほしいという煩悩に勝てなかった。
俺のプログラマのしての能力は、めちゃめちゃ高いとは言えないけど、多分高いほうだと思う。OSS にはそれなりに貢献している(特定を避けるために具体的なプロダクト名は出さないけど、rubygems で50万以上 DL されてるようなライブラリにコントリビュートしてる)。そういう背景もあって、最近は「教える側」みたいな立ち位置に配置されることが多くなってきた。そこで見かけるひどいコードの数々といったら、本当に目を疑うレベルのものが多い。正直、こんなやつらにイチから教えてたら俺が勉強する時間がねーよ。
で、そこで立たされたこの岐路である。自分がガリガリ書きまくるのを辞めて「後進を育てる」という部分(単に教えるとかそういうことだけじゃなくて、組織の中でスキルが継承され、さらに良くなって行く仕組み作りも含めての話ね)に重点を起くのか、今後もとにかくガリガリ書きまくって「プログラマとして寡黙にコードでひっぱっていく」みたいな「背中で語る」プログラマを目指すのか。
そういうことを考えてると、いつも自分がまだ駆け出しだったときのことを思い出すんだよね。その頃の自分のプログラミング能力は、それはそれはものすごく低かった。空間効率も時間効率もまったく意識しないから、平気でリソースを食いつぶすような処理を書いていた。「モジュールの凝集性?独立性?よくわからない……」という感じで、ある特定の機能を改修するために 1 行書き換えると平気で 100 行壊れるようなコードを書き散らかしていた。今の自分が見たら「こいつセンスないから育てるだけ無駄ですよ」って言っちゃいたくなるレベルのひどいコードを書いていた。そんな俺も、今はそれなりに書けるようになっている。それを考えると、「今この時点でできてない」というひとを切り捨てていいのかなぁ、って思うんだよね。
というのも、俺はあまり会社の先輩に恵まれなくて(これは転職とかでチャレンジしてこなかった俺も悪い)、ほとんど自学自習で勉強してきてようやく今のレベルになったんだけど、もし身近にもっといいコードが存在していたら、あるいは身近にいいメンターがいてくれたら、もっと早い段階で今くらい書けるようにはなっていただろうな、って。だから、プログラマとのエゴとして「俺よりできる人間たちの中で俺の能力をとことん伸ばして行きたい」って思う気持ちがありつつも、今なら(言い方は悪いけど)「ダメなやつらの底上げ」に関してもそれなりに意味のある仕事ができるだろうな、ってどうしても思っちゃうんだよ。
そりゃさー、世の中のすごいプログラマたちはさー、運もあるし、それ以上に自分が挑戦したことによって「身近にすごい人がいた」って環境に身を置くことができたと思うんだよ。で、そういう人は多分言うだろうね。「チャレンジする気がない人間に手を差し伸べてもしょうがない、できるやつはほっといてもできるようになる。そんなこと考えてないでとにかく良いコードを書け」って。でもさ、俺みたいな凡庸な人間って、チャレンジすることそのものがまず怖いんだよね。そういう人間にも、「良い環境」を与えることには意味があるんじゃないかなぁ。
多分、「いい環境に身を置けるかどうか」って、半分くらいは運だと思うんだよ。だったら、「いい環境」じゃなかった環境を「いい環境」にしていく仕事にも、きちんと意味があるんじゃないかなって思うんだよ。今俺の中には、そういう「環境作り」的な仕事をしてみたいなという気持ちと、いちプログラマとして今後もコードを追い続けていきたい気持ちがあって、どうしたらいいんだろうねマジで。少なくとも「最前線で戦えないと思ったプログラマの逃げの一手」としてマネージメントとか環境作りに逃げたくはないなぁ。
日記途中だけど緊急事態><、一番下まで呼んで誰か助けてください>< | |
---|---|
今日から夏休みが始まったのでプログラミングを勉強しようと思う。
3日坊主にならないようにがんばる。
去年の二の舞にならないようにモチベを維持するために日記を書く。
プログラミングができたらかっこいい!
サークルも友達もいなくさびしい夏休みを有意義にしようとするため
都内の大学に通う2年生。
前述のとおりサークルもやってない、友達もいない、典型的なインドアオタク。
でも顔はイケメン。
プログラミングは3年前にJavascriptとHTMLをネトゲでの戦いを整形するために覚えた程度。ほとんど忘れてる。
C言語を大学で習ったが「苦しんで覚えるC言語」というサイトにのっている範囲しかやってない。
一応プログラミングの知識は少しはある。
やっぱり、目標はあったほうがいい。
うーん、やっぱり完全に一致みたいな情報網羅サイトを作ってみようと思う。
色々な技術が手に入りそうだし。
色々な言語も学べそう
どんなサイトにするか? | 大規模情報サイト |
---|---|
学ぶ言語 | HTML,PHP,Ruby,Javascript,CSS |
とりあえずプログラミングにはエディタとアップロードするやつが必要なので色々いれてみた。
エディタ | |
---|---|
Netbeans | 重い、すごく重い |
phpエディタ | phpしか編集できない |
terapad | 色分けが出来ない |
K2Editor | これが一番最強。でもphpに対応してない |
HIDEMARU4000YEN | win7じゃ使えなかった。 |
アップするやつ | |
FileZilla | 使いづらい、糞 |
ALFTP | これが一番しっくりきた |
というわけで色々悩んだ結果、基本K2Editor、php編集はNetbeans,アップロードはALFTPにした。
phpとhtmlとrubyやjavascript対応してて色分けも出来るwin7で動くエディタないのが残念
実は1ヶ月前にプログラミングを勉強しようと思ってサーバーは借りてた。
ググったり、2chに質問したりして悩んで悩んでロリポップのチカッパプランを借りる事にした。
http://lolipop.jp/service/plan-chicappa/
初期費用 | ¥1,575 |
料金(6ヶ月) | ¥3,150 |
(1ヶ月あたり) | ¥525 |
合計金額 | ¥4,725 |
しかしながら無料のレンタルさばより色々といじれて、なにより「お金はもう払った、使わないともったいない」という意識を持つ事でだらけないで出来ると思う。
まず師匠の日記をみてみる。HTMLとCSSからはじめたと書いてあるが、多分これからはじめると飽きる。
なのでWebの情報を自動で集めてくれる(これをスクレイピングという)BOTを作ろうと思う。
日記を読むとMechaniseというのを使ってるらしい。
そうするとRuby jamというもので動いているものらしく、Ruby jamはRubyで動いている。
Rubyは鯖にはいっているがどうやらjamのほうははいっていないらしくMechaniseもはいっていない。ということで
ロリポップの解説ページをみてPuTTyていうのをいれてSSH操作ってやつをしてた。
http://d.hatna.ne.jp/taramonera/20100601/1275388515
このページをみながらやってたら
% vi ~/.cshrc
これを実行して
setenv RUBYLIB /home/アカウント名/lib
setenv GEM_HOME /home/アカウント名/lib/rubygems
:wqで保存終了らしいんだけど、入力したところで終われない><
教えて得ろい人><
結構苦労したので健忘録として。。
環境は以下のとおり
yum install mysql-server
/etc/init.d/mysqld start
mysql_secure_installation
jruby -S gem install rails jruby -S gem install warbler jruby -S gem install activerecord-jdbc-adapter jruby -S gem install activerecord-jdbcmysql-adapter jruby -S gem install jdbc-mysql
mysql -u root -p mysql> create database redmine character set utf8; mysql> grant all privileges on redmine.* to 'redmine'@'localhost' identified by 'redmine'; mysql> exit
(任意の場所にRedmineを解凍して、解凍先のディレクトリに移動した後)
cp config/database.yml.example config/database.yml vi config/database.yml
database.yml
production: adapter: jdbcmysql database: redmine host: localhost username: redmine password: redmine encoding: utf8 #development: # # #test: # #
後のwarbleでのエラーを防ぐため、developmentとtestをコメントアウト
jruby -S rake generate_session_store jruby -S rake db:migrate RAILS_ENV=production jruby -S rake load_default_data RAILS_ENV=production
script/serverで起動し、http://localhost:3000 にアクセスして正常に動作するか確認する
jruby script/server -e production
vi config/environments/production.rb config.logger = Logger.new(config.log_path) config.logger.level = Logger::INFO
warble.rbを生成
jruby -S warble config
warble.rbを修正
vi config/warble.rb config.dirs = %w(app config lib log vendor tmp extra files lang) config.gems = ["jdbc-mysql", "activerecord-jdbcmysql-adapter", "activerecord-jdbc-adapter"] config.gems["rails"] = "2.3.5" config.gems["rack"] = "1.0.1" config.webxml.rails.env = "production"
jruby -S warble
できたwarファイルをTomcatに配置して、Tomcatを起動する
mv redmine-0.9.3.war /usr/local/tomcat/webapps/redmine.war /usr/local/tomcat/bin/startup.sh
warblerのバグ(?)でwarに入らないファイルをコピーして入れる
cp vendor/gems/rubytree-0.5.2/.specification /usr/local/tomcat/webapps/redmine/WEB-INF/vendor/gems/rubytree-0.5.2
http://anchor18.blog77.fc2.com/blog-entry-195.html
と
http://ameblo.jp/omisedayori/entry-10184130642.html
で
teruyastar
["", "まいったね。 やはりWiiウェアなんかのDL方式か、ネトゲに移行せざるをえないか。"]
complex_cat
["何処をどう描いても完璧なデッサン力。", "これについてはWikiの記述は,確かに使う側を助けてしまっているかも。いや,ここを読むようなユーザーとの重複度は小さい
とは思うが。"]
silverscythe
["昔のはホントすごいよなあ", ""]
yachimon
["", ""]
shoku-in
["", ""]
mike_n
["", ""]
y_arim
["Dr.スランプの時点ですでに完成されていて、そこからさらに進化しているのはすごい。", "違法性の認識とか関係なく、便利なものがあるから使うってだけだろうな。たいていのひとは物事を深く考えないし自分の欲求には逆らわない。/そしてid:utd_sn3781の主張は増田に書かれた http://anond.hatelabo.jp/20081231201301"]
A410
["", ""]
tailtame
["やっぱり手書きの頃がいいなぁ…塗りが…塗りが…。>>66の赤いトカゲ?ドラゴン?の艶とかたまらんなー。画集っていくつあるんだろ…", "蔓延しすぎているってのも あるんだろうな…本屋に行けば目に付く本は……。子供の頃なんてゲームは半年に一本でいいよ。クリエイターも割れしてたしな…"]
dododod
["", "おやおや"]
retlet
["", ""]
kashmir108
["", ""]
tokuhirom
["", ""]
ocha39
["", ""]
whirl
["", ""]
kalmalogy
["「ビッチズ・ライフ」買おう。", "親が買い与えるのは絶対だめ。『公認意識』が子供に芽生える。自腹で買って『本当はよくないけど次善の策』という意識でないと。/ マジコン使うならせめて『良いと思ったモノに投資する』意識を教育すべきでは。"]
came8244
["", ""]
fujii_isana
["", ""]
lizy
["クロノトリガーの絵を見るだけで、頭にあのBGMが流れてくる", "モラルでの解決方法案としては、ゲーム作りの過程を理解してもらう、とかかな。どれだけ多くの人がどれだけ苦労してコストをかけて作っているのかを理解してもらうしか|それでもやる奴はもうダメですね"]
mochige
["", ""]
aohige9610
["中鶴の絵がまじってるので注意", ""]
gm333
["", ""]
posinega
["", ""]
pikayan
["", ""]
asitaki
#!ruby -Ku require "rubygems" require "json" require 'open-uri' url = ["http://anchor18.blog77.fc2.com/blog-entry-195.html", "http://ameblo.jp/omisedayori/entry-10184130642.html"] bookmarks = url.map{|u| open("http://b.hatena.ne.jp/entry/json/"+u){|f| JSON.parse(f.read.gsub(/\A\(|\)\Z/, "")) } } user_comment_map = bookmarks.map{|bm| h = {} bm["bookmarks"].each{|b| h[b["user"]] = b["comment"] } h } overlaped_users = user_comment_map.map{|bm| bm.keys }.inject{|a,b| a&b } overlaped_users.each{|user| puts user p user_comment_map.map{|b| b[user]} puts }
百万回繰り返された例の件について書いてみるよ。あ、タイトルは必要ないよね?このタグだけ見ればわかるものw
総評:とにかく微妙というか、中途半端につかいにくい。いまだにPerlが生きていたり、Rubyにキャッチアップされてるのも納得の出来。これがLL界を制覇したらPerlよりうっとうしい。
よもや、レスがついてるとは思わなかった。
興味を持ってもらえてサンクスです。
entry = diary.entry('20070712231804')
でエントリー指定してたからなんなんだろうと思って。
editもできるってことなのかな?
書き込んだあとの編集機能はいまんとこなし。
# get entry from id entry = diary.entry('20070712231804') # puts entry title puts entry.title # puts entry content puts entry.content
で、そもそもRubyに詳しくない自分からするとちゃんとした使い方がそれでもわからない。
バカでごめんねなんだけど、どうやって使えばいいの?
たとえば、エントリのタイトル一覧(1ページ目だけだけど)を出力するなら
diary = Masuda::Diary.new diary.entries do |entry| puts entry.title end
こんな感じかな。
新しいエントリを登録するなら
diary = Masuda::Diary.new diary.login('my_id', 'my_pass') diary.post('koko wa title ne', <<EOS) koko ni kizi no honbun wo kaku EOS
とか。
ずらーっと増田らしきものを読み込む。
そりゃそうだわなと思いながら文字化けの山。
文字化けなのは、たぶん増田のエントリ(UTF-8)をそのまんま取得しているせいだと思う。
~$ ruby hoge.rb | nkf -Ws
出力するときにSJISに変換するとか。
require 'rubygems' require 'masuda' require 'kconv' diary = Masuda::Diary.new diary.entries.each do |entry| puts entry.title.tosjis puts entry.content.tosjis end
あと
session[:diary] = diary.raw
diary = Masuda::Diary.restore(session[:diary])
の...って何でしょうか??
Masuda::Diary#rawはインスタンスをシリアライズするメソッド。
ログイン済みのインスタンスをシリアライズしてセッションにつっこんどいて、次のリクエストでも使いまわすとか。
わかりづらい文章で申し訳ない。
http://rubyforge.org/projects/masuda/
作った。
gem install masuda
require 'rubygems' require 'masuda' diary = Masuda::Diary.new diary.entries.each {|entry| puts entry.content } entry = diary.entry('20070712231804') puts <<EOS #{entry.title} #{entry.content} EOS entry.trackbacks.each {|trackback| puts trackback.snippet } diary.login('my_id', 'my_pass') diary.my_entries.each {|entry| puts entry.content } diary.post('Ruby is ...', <<EOS) A dynamic, open source programming language with a ... EOS session[:diary] = diary.raw ... diary = Masuda::Diary.restore(session[:diary])
http://anond.hatelabo.jp/20070615171101
俺は大学四年まで全くきちんとしたプログラミングをやったことが無くて(大学の講義でJavaの超簡単なのを教わったぐらい)で、卒論でプログラミングをしなくちゃならなくて、そのとき初めて Ruby を触った。
Ruby は OOP ですげーんだぜ、とか一部で云われていた時代で、有名なアプリケーションは tDiary ぐらいしかなかった。はじめはクラスとかも解らずに何が何だか。そのとき tDiary のプラグインはクラス使ってないから簡単に書けるよ、というどこかのチュートリアルをみて見よう見まねで。GD という画像ライブラリを使ったら、サンプルをちょっと弄るだけで画像が作れて面白かったんだ。で、それを日記で公開してみた。今見返すとものすごくしょぼいソース。
そのときたまたま Ruby ハカーの方がそのプラグインをリファクタリングしてくれて、クラスを使って抽象化してくれて、初めて OOP をほんの少しだけ理解して、こうやってクラスって使うんだなぁというのを知った。本当に運が良かった。
その後就職して仕事で php ハカーのすごい先輩にいろいろ教えてもらって php を使って基本的な OOP は理解した(PHP を DIS る人が多いけど、プログラミング初心者には良い言語だと今でも思ってる)。これまた運が良かった。
その後またまた Ruby を使い始めたら今までよくわからなかった部分もするする頭に入ってきてホント面白ろくて没頭して。今では一通りのことは Ruby でできるようになった。
プログラミングが解るなら、Rails のソース(トリッキーなことやりまくってるのでつらいかも。ActiveRecord や ActiveSupport はその中でも解りやすい)を読んで、解らなかったら rubygems で興味のありそうなライブラリのコード読んで、あたりが OOP と Ruby 覚えるには手っ取り早いかも。
今なら Rubyレシピブック 268の技 と Rubyクックブック ―エキスパートのための応用レシピ集 あたり読んでおけば良いんじゃないなぁ。
あと今はてダで Ruby を含む日記を書くともれなく ruby-dev な人たちがキーワードからたどって読んでくれるので、解らないことをつぶやいたりすると結構答えてくれるみたい。のではてダ使って勉強日記とか書くのも良いと思うよ。
とあんまり参考にならないと思うけど書いてみた。なんか目的見つけられて、楽しく覚えていけたら勝ちなんじゃないかな。たぶん。