はてなキーワード: SECとは
【お知らせ】2011/09/07
http://d.hatena.ne.jp/uniqueweb/20110906/1315285545
プログラムは全く得意じゃないけれど最近よく見かけるようになったエロ動画検索を自分でも作ってみたくて頑張ってみました。
近年、インターネットの普及によりエロ動画が自宅で簡単に見れるという素晴らしい時代になりました。
自分が若い頃はインターネットなんてものはなくエロビデオが主流でドキドキしながらレンタルビデオ屋に行き、可愛い女の子がレジにいない隙を見計らってお兄さんにパッケージを伏せて空箱を渡しビデオを借りたものでした。
お兄さんにビデオの空箱を渡そうとした時に可愛い子がレジに戻ってきて焦って渡すのをやめてものすごく変な動きをしながらエロビコーナーに引き返していくなんてことも多々ありましたw
僕のお気に入りといえば「白石ひとみ」や「あいだもも」といった女優でよく借りてました。エロビを借りるということがものすごく恥ずかしい時代?年頃?でカモフラージュに普通のビデオと一緒に借りるということもしていました。それはそれは大変な思いでオナニーしてたんです!
しかも、ビデオデッキ自体が貴重な時代でリビングに一台しかないのが当たり前でした。
深夜家族が寝静まってからヘッドフォンとビデオを抱えリビングに行き暗がりの中でヘッドフォンをテレビに差し込んでビデオの再生ボタンを期待に胸をふくらませながら押したものです。いいシーンを何回も見るためにビデオを巻き戻すんですが、ビデオを巻き戻すガチャンガチャンという機械音で家族が起きてこないか?とかそれはそれはドキドキしながら見てました。一仕事終えたあとヘッドフォンを外したらジャックが外れていて大音量で喘ぎ声が響き渡っていたなんてこともありました。誰も起きてこなかったのは優しさなんでしょうか?w
さて、大分前置きが長くなりましたがエロというものはものすごい技術発展させるものだと思います。エロのおかげで日本でビデオは普及しエロのおかげで日本でインターネットはものすごく普及したと言っていいと思います。自分もエロを通して技術の発展に貢献し自分自身のスキルアップになれば。という高い志を持ってこのサイトを制作しました。決して自らのオナニーライフの充実と性癖を充たすため作ったわけではありません・・・w
※2011.08.07 利用中のサーバーに障害が発生しているようで現在サーバーに接続できない状態となっています・・・
サイト名の由来は抜きネタからきています。抜きネーター、ヌキネーターという感じですw
エロサイトの制作工程を日記にしてみたんで良かったら読んで下さい。そしてこのサイトを使って夜いろいろと励んでくれたら嬉しいです。
まず前提条件としてお金をほとんどかけたくない。アダルトサイトであるということから
月の予算は5000円以内で考えていたのでけっこう探すのが大変でした。
日本でアダルトサイトを許可している所はかなり限られていてさらにやりたいことができるのは
専用サーバーかVPSしかないのでそうなると専用サーバーは予算オーバーなので
VPSで探すことになり検索しまくってはじめに見つけたVPSはKAGOYAのVPSだったのですがβ版で募集を締め切っていて泣く泣く諦めました。
KAGOYAはかなり評判がいいみたいなので使ってみたかった。
次に見つけたのが○○○VPS。海外サーバーで日本語サポートがあり転送量の制限なしディスク容量100G
月1300円程度で借りれるということで初期設定費用に5000円程度かかりましたが借りてみました。
結果、ここは最悪でした。
あまりの酷さに1ヶ月で解約。
よく調べてみたら評判がものすごく悪い某VPSの再販らしいです。
もう失敗したくないと思い今度は比較的有名な海外サーバーLINODE。
iptablesの設定でどうしてもうまくいかなくて拙い英語でメールしてみたら
10分しないうちに返信がきました!
メールに書かれているとおりにコマンドを入力したらあっさり解決。
担当のブライアンはなぜか分からないけどとてもフレンドリーで親切に感じましたw
LINODEは複数のディストリビューションから好きなものを選択できるので
とりあえず、64bit版を選択。
一番面倒だけど重要だということで
Tripwire
ほんとに面倒でした。
はじめはmysqlにストレージエンジンgroongaを使おうと思ったのですが
初めに借りた最悪なVPSはOSが32bit版だったのでgroongaがのソースが見つからずなぜかと思っていたら
どこかで見つけた記事で32bit版ではgroongaの性能を発揮しきれないということで32bit版の提供をやめてしまったらしいと書いてたので
じゃあ、sennaにするかということで最悪VPSでsennaをインストール。
その後LINODEに変更したのでOSに64bit版を選択し念願のgroongaをインストール。
しかし、調べてみると
プログラムもそれに合わせてその都度書き換えたので2度手間どころか3度手間4度手間でした・・・
まず
そして下記の順番でインストール
rpm -ivh mecab-0.98-tritonn.1.0.12a.x86_64.rpm
rpm -ivh mecab-ipadic-2.7.0.20070801-tritonn.1.0.12a.x86_64.rpm
rpm -ivh senna-1.1.4-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-shared-5.0.87-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-client-5.0.87-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-server-5.0.87-tritonn.1.0.12a.x86_64.rpm
rpm -ivh MySQL-devel-5.0.87-tritonn.1.0.12a.x86_64.rpm
my.cnfの設定をして終了
で肝心の全文検索ですがデータ件数が5万件程度で少ないせいなのか、あいまい検索と比べてそれほど速さを実感できなかったです・・・
でもきっとすごく速くなったはず!
ちなみに「麻美ゆま おっぱい」で検索した場合、0.01 secで結果が返ってきました。
さて、動画データの作成ですがいくつかのエロサイト等制作記事でもあるようにスクレイピングということをします。
スクレイピングとはWEBサイトから特定の情報だけを取得することでネット上にあるサイトをクロールして必要なデータだけを拾ってデータを作るといった感じでしょうか。
スクレイピングのプログラム自体は以前にTidy関数を使って為替データを10分おきに取得するような物を作ったことがあったのでそれほど時間はかからないかなと思ったのですがけっこう時間かかりました。
スクレイピングにはTidyとhtmlSQL、それにPHP Simple HTML DOM Parserを使いました。
SQL みたいな文法で HTML を抽出する PHP のライブラリ
htmlSQLよりアツい!?jQueryみたいにセレクタでHTMLをparse(解析)する「PHP Simple HTML DOM Parser」
3つの中で抜群に使えるのはPHP Simple HTML DOM Parserだったんですが
ループ処理させるとメモリがすごいことになって今回のようなスクレイピングに向いてないみたいで
結局、htmlSQLとTidyの両方を使ってスクレイピングしました。
両方ともPHP Simple HTML DOM Parserに比べるとうまくデータの取得ができないことが多く残念な感じなんですが他に選択肢がないので・・・
使える順に並べると
といった感じかもしれません。
おおまかにデータを取得して正規表現で特定データを抜き出しました。
http://affiliate.dmm.com/link.html
利用可能な物はパッケージ画像、サンプル画像(縮小)と書かれていたのでそれに従い画像を利用。
注記に※ユーザーレビューは引用いただけません。とだけ書かれているのでそれ以外は引用ありと判断して説明文とタイトルなどを利用
女優データとジャンルデータ、DVDデータ、を紐付けたデータベースを作成し検索ワードに応じて検索結果に関連する商品を表示させるようにしました。
現状、売り上げ0で意味があるのか分かりませんけどw
エロサイトということで多少はチューニングとか設定とかしないとまずいかもと思い色々調べて設定しました。
やったこと
KeepAlive On MaxKeepAliveRequests 60 KeepAliveTimeout 3 <IfModule prefork.c> StartServers 7 MinSpareServers 5 MaxSpareServers 10 ServerLimit 30 MaxClients 30 MaxRequestsPerChild 4000 </IfModule>
様子見ということで2日間で設定してみました。
query_cache_limit=1M
query_cache_min_res_unit=4k
query_cache_size=16M
query_cache_type=1
とりあえずこんなところを設定してみましたが、爆発的なアクセスがあるわけでもないので有効なのか今のところ分かりません(-_-;)
Apache Benchでテストはしてみましたけど問題はない感じですが実際にチューニングができているか分かりません。
プログラマーとして有名なゆうすけさんのサイトとgoogleを参考にしました。
シンプルで使いやすいようにしようと思いこのデザインにしました。
クロスブラウザはIE7、firefox3、chromeで行いました。
可変ものって作ったことなかったんですがけっこう面倒なんですね。
ブックマーク機能とメニューの折りたたみ機能、検索結果の表示方法切替を作りました。
まず、ブックマーク機能ですがログインなしで気に入った動画をブックマークできるようにしました。
ブックマークに追加した動画はブックマークページで確認できるようにしました。
cookie機能を利用したらいけると思い色々調べてjquery.cookie.jsを利用。
保存したクッキー情報を呼び出してphpに渡して処理し指定要素にブックマーク一覧をloadメソッドで表示させるという感じです。
$(function(){ $("#youso").load("xxx.php"); });
メニューの折りたたみ機能は人気AV女優やAV女優別、人気タグなどをそのまま表示させるとずらっと長くなって邪魔だったのでつけました。
これには同じくjquery.cookie.jsを利用しました。
参考サイト:http://blog.caraldo.net/2009/03/newjqqookiemenu.php
検索結果の表示方法切替にはZoomer Galleryを利用しました。
参考URL:http://phpjavascriptroom.com/?t=ajax&p=jquery_plugin_zoom#a_zoomergallery
検索結果ページで表示される
[ここの画像]
××× の検索結果
44件中 1~10件目を表示
ここの画像の部分をクリックするとgoogleイメージ検索みたいに一覧でイメージ表示できるようにしてみました。
基本的に動画の埋め込みを許可しているサイトのみプレイヤー表示をしそれ以外は画像を表示し動画データへリンクするようにしました。
埋め込み部分はあらかじめそれぞれのサイトに対応したプレーヤー部分のコードを記述しVIDEOIDの部分に置き換えるような形にしました。
XVIDEOSを例にすると
XVIDEOSの場合かならず動画のurlがhttp://www.xvideos.com/videoXXXXXX/のようになりますのでXXXXXXの部分を
VIDEOID部分に置き換えるようにプログラムを組みました、
埋め込み部のソース
>||<object width="510" height="400" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" ><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="allowScriptAccess" value="always" /><param name="movie" value="http://static.xvideos.com/swf/flv_player_site_v4.swf" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="id_video=VIDEOID" /><embed src="http://static.xvideos.com/swf/flv_player_site_v4.swf" allowscriptaccess="always" width="510" height="400" menu="false" quality="high" bgcolor="#000000" allowfullscreen="true" flashvars="id_video=VIDEOID" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>
||<
その他の動画サイトもURLの一部分のデータを使っているので同様の処理をしました。
実際の作業は2、3週間ですが色々調べる時間が多くて制作に2ヶ月くらいかかりました。
自分でエロ動画検索を作ってみて有名プログラマーさん達がいかに優秀なのか思い知らされました。
全くWEBの知識がない人で4、5ヶ月ですごいの作っちゃう人とかもいるみたいですし世の中広いな~と思います。
大分、色んな知識を得ることができました。
これからプラグラムを勉強しようと思う人はぜひエロサイトから入ってみて下さい。
そんなこんなで?頑張って作ってみたエロ動画検索、良かったら使ってみて下さい。
これで少しは技術の発展に役立てたでしょうか?w
P.S エロサイトを作っていてはじめは楽しくて興奮しながら作ってたのですが最後の方はエロい物を見ても全く反応しなくなりましたw
不能ではないんですけど・・・今現在も性欲が著しく減退しております・・・
そしてスーパーpre記法がうまういかないのはなぜ?はてな匿名ダイアリー初投稿で全然分からない・・・
そしてそしてプログラマーさんとかデザイナーさんとかエロい人とかお気軽にお声をおかけ下さい。
【お知らせ】2011/09/07
まったくもってナンセンス。話の桁が違いすぎる。
大域ってテキスト情報の大域なんざ静止画の数百分の一も食わない。音声通話の数万分の一も食わない。動画の百万分の一も食わない。
同様の事を千人でやっても大域に関してはまったく問題が無いという話をしてるんだ。
TCPコネクションにしてもたとえばMicrosoft.comは毎秒平均7000~9000回もの攻撃を受けていると言われる。
Librahack氏は毎秒一回ではなく、アクセス毎に1秒のウェイトを入れていた。瞬時の返答があった場合の最高1回/secに過ぎない。
これが、どんだぇ少ないアクセス頻度だか。HTTPコネクション数に限って言えば100人がクローラ使ったとしても中古パソコンで裁ける程度の話。
バックエンドDBがあってもそう。オラクル使っといて一人当たり数万アクセス程度でこけるとか無駄遣いもいいところ。
今回の状況って、個人用に図書館の目録作りたいんですとかいって図書館の全部の棚の前にびっしり大量の人がはりついて他の人が棚使えなくなってるような状況と一緒でしょう。
鳴門海峡に割り箸千本さしたら海流が止まってしまったというぐらいナンセンス。常識的に考えてちっとも大量の人ではない。
ご自由におとりくださいと書いてある店のチラシを1人で無意味にごっそり全部持っていくようなもんだよね。
限りあるリソースの占有ではない。チラシをとろうとしたら突然床が抜けて屋根が落ちてきたようなもの。
まさかこの程度で落ちるわけないし、適切なエラーが返ってこないし、どうなってるんだ?と思っていたら逮捕されました。あまりに理不尽。
はじまり
http://docs.google.com/viewer?a=v&q=cache%3A1pQdFwpyFP4J%3Awww2c.comm.eng.osaka-u.ac.jp%2F~eise%2Fnetwork.pdf
教えてくん
http://pc12.2ch.net/test/read.cgi/tech/1240226599/
112 :デフォルトの名無しさん:2009/04 /23(木) 19:27:16 [1] 授業単元: 通信ネットワーク演習 [2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9073.txt [3] 環境 [3.1] OS: (Windows/Linux/等々) Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc [3.3] 言語: (C/C++/どちらでも可 のいずれか) C [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 2009年5月10日 [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 資料が多すぎてややこしいかもですがよろしくお願いします。
親切な人
196 :デフォルトの名無しさん:2009/04 /26(日) 02:25:51 >>112 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9088.zip ・とりあえず動いてρ<1.0の時なら ̄Nが大体一致した。 ・途中で飽きてコメントがいい加減になってる。 ・シミュレータの正当性については理論値との誤差率を出すとかして自分で調べてくれ。 (理論値の公式はググってみてもよくわからなかった。)
教えてくんふたたび
199 :デフォルトの名無しさん:2009/04 /26(日) 10:55:39 >>196 ありがとうございます! すいません、 サーバの平均の処理時間を1で正規化して、これを基準とした相対的な時間を用いる仕様にして欲しいのですが、無理でしょうか?
呼ばう声に耳を傾ける親切な人
203 :デフォルトの名無しさん:2009/04 /26(日) 13:26:37 >>199 よく言っている意味がわからないんだけど、 arrivalRate /= serviceRate; serviceRate = 1.0; じゃだめなの?
教えてくんみたび
204 :デフォルトの名無しさん:2009/04 /26(日) 15:36:40 >>203 シミュレーション時間の単位のことです。 実際の物理的な時間単位(sec等)でもよいが、>>199であるような仕様にしたほうがよいと書いてあるので・・
--
☆まとめ☆
課題が分からないからといってネットで助けを求めてしまうと、こうして1年後に意味も無く晒されてしまったりする
みんなも気をつけよう
508 :名無しさん@お金いっぱい。:2010/02/04(木) 22:27:12 ID:UmutD1lF0
お前ら切込隊長の凄まじい経歴にひれ伏せよ。
2001年9月に謎のハッカーが911の混乱に乗じて流出させた山本一郎のプロフィールだ。切込本人もガチ情報だと認めている。
なんでもシカゴ大学のベンチャーキャピタルが作ったプロフで、当時はラムズフェルド国務長官も危険人物として切込をマークしてたんだとか
山本 一郎(英登記名 Ralph Yamamoto,NL) 最終更新日:2001年 02月 04日
生年月日:****年 **月 **日
留学その他:シカゴ大学(1994:米),モナーシュ大学(1995:豪),モスク ワ大学(1993:ソ)
主要取り扱い銀行:***銀行(スイス),**銀行(蘭),****銀行(アイルランド)
職歴等:関連データ参照
経歴特記事項(略記):
筑前竹中家庶流。赤穂藩淡路山本家分家。祖父**、四男父**。
始祖父代に武家売役、回船問屋泉屋、蔵問屋泉屋を名乗る。以後、中央区八重洲界隈の地主として現在に至る。
父**は*士*学*業(同族企業)を経営する他、三菱の流れを汲む四社 の代表取締役を勤める。(1990)
国際電気入社。人事部配属(1996)
父**、不動産管理業の失敗が理由で全ての保証人を山本*郎に移す。
金利等減免措置適用さる(1996)
同年退社(1996)
企業調査では特に秀でた実績を有す(1997)
******・****・***証券(英)傘下****・****社
慶応義塾大学時代、中道右派系学生自治会の委員長を務めていたこと が判明(1999)
米国株売却益により*士*学*業等同族企業の債務の過半を返済(2000)
この頃、在米資産の過半が処分される(2001)
性格: 生真面目、頑固、議論好き、完璧主義という証言が大半を占める。他に
補記: 中学、高校時代は数学オタク、嘘つきなど風評芳しからざる学生だったという証言あり。
大学進学後は態度が改まり自治会:文化団体連盟の委員長に選出されるなど、
この頃、代議士熊谷弘、大平正芳、橋本龍太郎らの子息と親交を結ぶ。
ファンタジー研究会に所属。この頃、偽名でライトノベルを出版。シリーズ累計400万部を超えるベストセラーになる。
大学時代は射撃部、体育会本部を経て自治会の委員長に推薦され、主に体制側として手腕を振るう。(1995)
******・****・***証券(英)傘下****・****社においては、
取引先に言い寄られ、ストーカー容疑で二件の被害届を提出している(1999)
オラクルとDELL投資により30億の利益を獲得(個人資産) (1999)
金融監督庁デリバティブ査察チームのアドバイス業務を行っていた形跡あり(1999)
この頃、同僚が自殺(2000)
http://www41.tok2.com/home/unkoumaka/は削除されるかもしれないので、全部ファイルをダウンロードして自分のサーバーに設置して楽しんでる。
Rank : AA
Score : 188693
Max Combo : 213
Complete : 10
Solve : 6
Miss : 6
Minus Score : 0
Corrected Character : 272/284
Corrected Percent : 95%
Typespeed/min : 287/min
Correct / Miss : 272/278
Corrected Percent (Solve Cut) : 97%
http://www41.tok2.com/home/unkoumaka/
Rank : AA
Score : 181571
Max Combo : 71
Complete : 14
Solve : 8
Miss : 25
Minus Score : -5136
Corrected Character : 315/348
Corrected Percent : 90%
Typespeed/min : 288/min
Correct / Miss : 315/340
Corrected Percent (Solve Cut) : 92%
http://www41.tok2.com/home/unkoumaka/
Rank : AAA
Score : 197285
Max Combo : 120
Complete : 11
Solve : 0
Miss : 6
Minus Score : -2715
Corrected Character : 219/225
Corrected Percent : 97%
Typespeed/min : 305/min
Correct / Miss : 219/225
Corrected Percent (Solve Cut) : 97%
やっぱりこういうの苦手だわ。
http://www41.tok2.com/home/unkoumaka/
Music : vestige
Rank : AAA
Score : 194251
Max Combo : 79
Complete : 30
Solve : 0
Miss : 38
Minus Score : -5749
Corrected Character : 655/693
Corrected Percent : 94%
Typespeed/min : 285/min
Correct / Miss : 655/693
Corrected Percent (Solve Cut) : 94%
Music : 翼 Rank : S Score : 200889 Max Combo : 226 Complete : 9 Solve : 0 Miss : 0 Minus Score : 0 Corrected Character : 226/226 Corrected Percent : 100% Typespeed/min : 416/min Typespeed/sec : 6.93/sec Correct / Miss : 226/226 Corrected Percent (Solve Cut) : 100%
http://www41.tok2.com/home/unkoumaka/index.php
Music : 翼
Rank : AA
Score : 176444
Max Combo : 47
Complete : 7
Solve : 6
Miss : 25
Minus Score : -8445
Corrected Character : 213/244
Corrected Percent : 87%
Typespeed/min : 288/min
Correct / Miss : 213/238
Corrected Percent (Solve Cut) : 89%
http://www41.tok2.com/home/unkoumaka/
Rank : B
Score : 140922
Max Combo : 112
Complete : 5
Solve : 40
Miss : 49
Minus Score : -2594
Corrected Character : 282/371
Corrected Percent : 76%
Typespeed/min : 264/min
Correct / Miss : 282/331
Corrected Percent (Solve Cut) : 85%
JavaならコードシンプルになるようにAPI調べるんじゃね?
Calendarクラス使うとか。
import java.util.Calendar; class sec{ public static void main(String args[]){ int year = 2009; int month = 6; int day = 4; long sec = 0; Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); cal1.set(year,month,day); cal2.set(1,1,1); sec = (cal1.getTimeInMillis() - cal2.getTimeInMillis())/1000; System.out.println("The number of seconds until 0:0:0, " + month + " " + day + ", " + year + "is ten seconds. "); } }
もちろん、
switch(month){ case 12: sec += 2592000; case 11: sec += 2678400; case 10: sec += 2592000; case 9: sec += 2678400; case 8: sec += 2678400; case 7: sec += 2592000; case 6: sec += 2678400; case 5: sec += 2592000; case 4: sec += 2678400; case 3: sec += ur ? 2505600 : 2419200; case 2: sec += 2678400; case 1: break; default: system.out.println("Error"); }
が正解。
よく分かりません。誰か解説してください。
まず変数宣言。
時間と日付を変数に入れてる。2009-6-5 23:53:0だね。
最初のfor文で、2008年までの秒数を足そうとしてる。
しかし、閏年の処理が変なので上手くいかない。
(400で割って1余る年と、4で割って1余る年は、別に閏年じゃない)
月が2だったら、2678400を足してる。
その後は特筆のおもしろさ。
monthが2でかつ、monthが3でかつ、urがtrueなら2505600を足してる。
(さっきのurの扱いに注目。去年が400で割って1余る年か、4で割って1余る年の時だけ)
しかし、判るとおりmonth が 2 で かつ 3 なんて素っ頓狂な事にはならない。
つまりここは、month が 2 かそれ以外かの処理しかない。
if(month == 2){
sec += 2678400;
}
要はこう圧縮できる。
最後に日付(月の頭からその日付)の前日までの秒数を足して
時間と分と秒を、全部秒に直して足して、
表示してる。
Cだとこんな感じか。
#include <stdio.h> int isLeap(int year) { return ((year%400 == 0) || (year%4 == 0) &amp;&amp; (year%100 != 0)) ? 1 : 0; } int todays(int year, int month, int day) { int MonthDays[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int days = 0; int i = 0; days += ((month > 2) &amp;&amp; isLeap(year)) ? 1 : 0; for (i = 0; i < month-1; i++) { days += MonthDays[i]; } days += day; /* printf("leap %d days %d\n", isLeap(year), days); */ return days; } int cntLeap(Syear, Eyear) { int i = 0; int cnt = 0; for (i = Syear; i < Eyear; i++) { cnt += isLeap(i); } return cnt; } int main() { int year = 2009; int month = 6; int day = 4; long days = 0; unsigned long long sec = 0; int DaysSec = 60 * 60 * 24; days += (year-1)*365 + cntLeap(0, year); days += todays(year, month, day); days -= 1; sec = days * DaysSec; printf("%d %d %d:days %d: sec %llu\n", year, month, day, days, sec); /* 2009 6 4:days 733566: sec 18446744072665144576 */ return 0; }
追記。
タイトルのせいで、僕が書いたみたいになってるけど。
修正版を送ってきた。修正になってないと思うけど。
public class sec { public static void main(String args[]){ int year,month,day,i,hour,minute,second; long sec; boolean ur; year = 2009; //年を入力 month = 6; //月を入力 day = 5; //日付を入力 hour = 23; //時を入力 minute = 53; //分を入力 second = 0; //秒を入力 sec = 0; ur = false; for(i = 1;i < year;i++){ if(i / 400 == 1){ sec += 31622400; ur = true; } else if(i / 100 == 1){ sec += 31536000; ur = false; } else if(i / 4 == 1){ sec += 31622400; ur = true; } else{ sec += 31536000; ur = false; } } if(month == 2){ sec += 2678400; if(month == 3){ if(ur == true){ sec += 2505600; } else{ sec += 2419200; } if(month == 4){ sec += 2678400; if(month == 5){ sec += 2592000; if(month == 6){ sec += 2678400; if(month == 7){ sec += 2592000; if(month == 8){ sec += 2678400; if(month == 9){ sec += 2678400; if(month == 10){ sec += 2592000; if(month == 11){ sec += 2678400; if(month == 12){ sec += 2592000; } } } } } } } } } } } sec += (day -1)*86400; sec += hour * 3600; sec += minute * 60; sec += second; System.out.println("西暦1年1月1日0時0分0秒から"); System.out.println("西暦" + year + "年" + month + "月" + day + "日" + hour + "時" + minute + "分" + second + "秒までの秒数は" + sec + "秒です"); } }
よく分かりません。誰か解説してください。
ちょっとまて。
// (略)
if(month == 2){
sec += 2678400;
if(month == 3){
// (略)
って、おかしくね?else ifか>=の間違いだろ。
ファンタジックな処理だと思うけど、コード自動生成ツールで作ったんかなあ。
pythonだとこんな感じになると思ふ
もっとエレガントにかけるやもしれんが
import calendar DAYS_sec = 60*60*24 YEAR_sec = DAYS_sec * 365 MONTH_day = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] year, month, day = 2009, 6, 4 ans = year * YEAR_sec + calendar.leapdays(0, year)*DAYS_sec ans = ans + sum(MONTH_day[:month]) * DAYS_sec if calendar.isleap(year) and (month > 2): ans = ans + DAYS_sec ans = ans + day * DAYS_sec print day, month, year, '23:59:59 is', ans-1, 'sec'
でも実は日本でグレゴリオ歴が採用されたのって1872年からだからほんとは駄目だけどね〜
----
いろいろバグってたー。検算大事ね。
プログラマーってのがかっこ良く見えて、プログラミングを始めた。プログラマーなんかにはなりたくないけど。
友達もプログラミングをしていて、僕に問題を出してきた。
よく覚えてないけど、その友達のコードを見れば分かるんじゃないかな。
これが友達が書いたコード。
public class sec { public static void main(String args[]){ int year,month,day,i; long sec; boolean ur; year = 2009; month = 6; day = 4; //日付を入力してください。 sec = 0; ur = false; for(i = 1;i < year;i++){ if(i / 400 == 1){ sec += 31622400; ur = true; } else if(i / 100 == 1){ sec += 31536000; ur = false; } else if(i / 4 == 1){ sec += 31622400; ur = true; } else{ sec += 31536000; ur = false; } } if(month == 2){ sec += 2678400; if(month == 3){ if(ur == true){ sec += 2505600; } else{ sec += 2419200; } if(month == 4){ sec += 2678400; if(month == 5){ sec += 2592000; if(month == 6){ sec += 2678400; if(month == 7){ sec += 2592000; if(month == 8){ sec += 2678400; if(month == 9){ sec += 2678400; if(month == 10){ sec += 2592000; if(month == 11){ sec += 2678400; if(month == 12){ sec += 2592000; } } } } } } } } } } } sec += (day -1)*86400; System.out.println(year + "年" + month + "月" + day + "日0時0分0秒までの秒数は、" + sec + "秒です"); } }
…プログラミングのことはよく分からないけど、友達が書いたこのコードはあまり良いとは思わなかった。ifの連続で見にくくなっているし、最後のほうのインデントの位置も間違ってる。
その友達が言うにはJavaは最高の言語らしい。でも、僕はそれがよく分からない。Javaってこんな言語か、と思ったんだけど基本的なことしか使ってなくてほかの言語と変わらないような気がした。
Javaは良い言語だと思うけれど、なんでもかんでもJavaはよくないと思う。そして、よくネット上でなんでもかんでも○○の人を見かける。
自分もこの問題を解いたのですが、書いたコードを無くしてしまいました。小さいプログラムにはPerlを使うのが好きなので、Perlで書いた記憶があります。
もちろん、こんなコードではないですよ:)