「def」を含む日記 RSS

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

2017-11-18

DJ TA-SHI「1992 MIX」- HIPHOP専門ラジオ局WREP 2017年11月18日放送

01. Gang Starr - Ex-Girl To Next Girl

02. Ill Al Skratch – Where My Homiez? (Come Around My Way)

03. Black Moon - I Gotcha Opin

04. The Pharcyde - Passin' Me By

05. Common - Breaker 1/9 (Beatnuts Remix)

06. HI-C - Sitting In The Park

07. Kool G Rap & DJ Polo - ill Street Blues

08. Black Sheep - Similak Child

09. Gang Starr - Gotta Get Over

10. Redman - Tonight's Da Night

11. Spice 1 - In My Neighborhood

12. The Pharcyde - Ya Mama

13. Arrested Development - People Everyday

14. Chubb Rock - Yabadabadoo

15. Das EFX - Mic Checka

16. Das EFX - Real Hip Hop (Pete Rock Remix)

17. ED O.G & Da Bulldogs - I Got To Have It

18. Nas - Halftime

19. Public Enemy - Shut Em Down

20. Eazy-E - Only If You Want It

21. 欠番https://twitter.com/WrepRadio/status/931818391764996098

22. Onyx - Throw Ya Gunz

23. Boogie Down Production - We In There

24. Dr. Dre & Snoop Dogg - Deep Cover

25. Leon Haywood - I Want'a Do Something Freaky To You

26. Dr. Dre - Nuthin' But A G Thang

27. Scraface - A Minutes To Prey

28. Brand New Heavies - Heavy Rhyme Experience Theme

29. Heavy D & The Boyz - Blue Funk

30. Above The Law - Call It What U Want

31. Digable Planets - Rebirth of Slick (Cool Like Dat)

32. Gang Starr - Take It Personal

33. 欠番https://twitter.com/WrepRadio/status/931822759562244096

34. Kool G Rap & DJ Polo - On The Run

35. Super Cat - Ghetto Red Hot

36. LB's - Bi*** Get A Job

37. Lords Of The Underground - Check It

38. Naughty By Nature - Hip Hop Hooray

39. Eric B. & Rakim - Paid In Full (Derek B's Urban Respray Version)

40. P.M Dawn - Set Adrift On Memory Bliss

41. Wrecks-N-Effect - Wreckx Shop (Full Crew Mix)

42. A Tribe Called Quest - Hot Sex

43. Main Source - Fakin The Funk

44. Zhiggie - Rankin' In The Dough

45. RUN DMC - Here We Go

46. A Tribe Called Quest - Scenario

47. Black Sheep - The Choice Is Yours

48. Naughty By Nature - Uptown Anthem

49. Wrecks-N-Effect - Rump Shaker (Remix)

50. Kris Kross - Jump (Supercat Mix)

51. M.C Breed & DFC - Ain't No Future In Yo' Frontin'

52. MC Serch - Back To The Grill

53. Pete Rock & C.L. Smooth – They Reminisce Over You

54. Tom Scott and The California Dreamers - Today

55. Mary J. Blige feat. C.L. Smooth - Reminisce (Bad Boy Remix)

56. Positive K - I Got A Man

57. Young Black Teenagers - Tap The Bottle

58. ArtOfficial - Don't Sweat The Technique

59. Def Jef - Cali's All That

60. EPMD - Cross Over

61. Redman - Time 4 Sum Aksion

62. House Of Pain - Jump Around

63. Wrecks-N-Effect - New Jack Swing

64. MC Lyte - Ice Cream

65. Tammy Lucas & Teddy Riley - Is It Good You

66. TLC - What About Your Friends

67. Bobby Brown - Humpin' Around

68. R. Kelly & Public Announcement - She's Got That Vibe

69. Nice & Smooth - Somethimes I Rhyme Slow

70. Jeff Redd - You Called And Told Me

71. Shinehead - Try My Love

72. Kris Kross - Warm It Up

73. Naughty By Nature - Everything's Gonna Be Alright

74. Ice Cube - Check Yo Self (feat. Das EFX)

---

上記の出所は WREP‏ @WrepRadio の https://twitter.com/WrepRadio/status/931810971282059265 から https://twitter.com/WrepRadio/status/931836391440506880 までの一連のツイートより転載

2017-10-28

anond:20171027101309

タデプログラミングやってみた

実行環境は、Windows 10はてなAPIは知らない

1)URL規則性を見つける

増田場合

https://anond.hatelabo.jp/?mode=top&page=1

page=1、page=1001、・・・

2)各ページの日記規則性を見つけて、投稿時刻の取得方法検討する

増田で、先頭の日記場合

<div class="section">
<h3>
<a href="/20171010162108"> ← (雑だが)ここらへんを取ればよさそう
<span class="sanchor">■</span>
</a>
<a href="/20171010161641">anond:20171010161641</a>
</h3>
~~~
</div>

3)定数、関数の雛形、ループURLを生成・出力するだけのソースをとりあえず作成・実行

実行すると、↓が出力されるだけ

https://anond.hatelabo.jp/?mode=top&page=1

https://anond.hatelabo.jp/?mode=top&page=1001

https://anond.hatelabo.jp/?mode=top&page=2001

・・・

4)「ruby web 取得(スクレイピング)」あたりでネット検索、内容を理解せずにコピペする

4-1) 標準のopen-uriを使うと取得できるよ等見つかる

open-uriを実行すると、謎のエラー発生

C:/Ruby23-x64/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

4-2)エラーメッセージ検索、内容を理解せずにコピペする

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

 

ここまでで、任意URLWebページ取得ができるようになる

5)Webページの内容を解析(パース)し、ページの先頭の日記のYYYY/MM/DD HH:MM:SSを取得

5-1)

HTMLはある程度構造化されているので、今回の場合だと、↓のようなとり方がいいと思う

「divタグ sectionセクション」直下の「最初のh3タグ直下の「最初のaタグhref

5-2)

思うけど、今回は、構造検索じゃなくて、単純に文字列検索だけで済ます

5-3)※

取得対象構造が変化する場合も多々あるが、構造が変化した場合でも、

構造的な取得方法を作っておけば、変化にもある程度対応やすい(パラメータの「1」を「2」にするとか)

文字列を解析的なやり方だと、取得対象の書式が変化した場合に、対処しにくいことが多い

ここらへんを、TODO:あとでやる、なんてするんだけど、もちろんあとでやらなくて不具合の温床になる

これ豆な

6)結果を出力

printコマンドプロンプトへ出力

 

例えばだが出力には、ファイルへ保存、メール送信クラウドへアップ、増田投稿 とかもある

 

ここまでで、page=1の処理ができた

7)繰り返しに注意

page=1ができればあとは繰り返すだけ

繰り返すだけなんだが、取得ごとに10秒待つことにする

あんまが~~ってやると、怒られるので

 

愚直なまでの単純な繰り返しは、PCプログラム) > 人の操作 の最たるものだと思う

 

はいえ、ほんとうに愚直で、

タイムアウトしたらどうなるのか?

・古いページは構造が異なるかもしれないのでは?

・最終ページはどこ?

・・・などなど。これらの忖度AIでも解決しにくい・・・と思う。

8)余談1 プログラム関係ネット検索すると、はてな結構ひっかかる

なにかうれしいセロry

9)余談2 スクレイピングってなんだよ

的な英単語IT用語解説よりも、英和辞典を引くとスって理解できることがある

scraping ・・・ こすること、削ること、削り落としたもの、かきくず

・・・

rubyソース

require 'open-uri'
require 'openssl'

# なんかエラーが出る暫定対処
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

BASE_URL = 'https://anond.hatelabo.jp/?mode=top&page='
PAGE_INCR = 1000

# 4) 指定URLのページを取得
def get_page(url)
    open(url).read
end

# 5) 年月日時分秒を取得
#012345678901234567890123456789012345678901234567890
#<div class="section"><h3><a href="/20171010162108">
def get_ymdhms(page)
    pos = page.index("<div class=\"section\"><h3><a href=")
    #p pos
    #p page[(pos+35)..(pos+35+13)] # YYYYMMDDHHMMSS 14
    aa = page[(pos+35)..(pos+35+13)]
    sprintf("%s/%s/%s %s:%s:%s", aa[0..3], aa[4..5], aa[6..7], aa[8..9], aa[10..11], aa[12..13])
end

# 6) 結果を出力
def print_dat(inc, ymdhms)
    puts sprintf("%06d, %s", inc, ymdhms)
end


# メイン
def main
    inc = 1
    for i in 1..10
        sleep 10 unless i == 1 # 7)初回以外は10秒待つ
        url = BASE_URL + inc.to_s
        page = get_page(url)   # 4)webページ取得
        ymdhms = get_ymdhms(page) # 5)投稿年月日取得
        print_dat(inc, ymdhms) # 6)結果出力
        inc += PAGE_INCR
    end
end

# 実行
main

 

ソース記法で書くと文字化けするので、スーパーpreで)

実行結果

ano_his.rb:67: warning: already initialized constant OpenSSL::SSL::VERIFY_PEER
000001, 2017/10/28 15:04:51
001001, 2017/10/10 17:08:08
002001, 2017/09/19 17:22:26
003001, 2017/08/24 10:23:53
004001, 2017/07/27 11:57:49
005001, 2017/06/27 17:42:17
006001, 2017/05/28 22:57:26
007001, 2017/04/28 10:26:18
008001, 2017/03/21 10:10:38
009001, 2017/02/10 15:01:32

2017-10-13

anond:20171013044943

ruby

# 曜日定数定義
module YOUBI
    Sun = 0, Mon = 1, Tue = 2, Wed = 3, Thu = 4, Fri = 5, Sat = 6
end

# 指定年月日の曜日取得
# https://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week#Implementation-dependent_methods
def get_youbi(year, month, day)
    day += if month < 3 then year-=1;year+1 else year-2 end # <
    (23 * month / 9 + day + 4 + year / 4 - year / 100 + year / 400) % 7
end

# 13日の金曜日判定
def super_friday(year, month)
    get_youbi(year, month, 13) == YOUBI::Fri
end

# メイン関数
def main
    for year in 2000..2100
        msg = "#{year}年:"
        for month in 1..12
            if super_friday(year, month)
                msg += "#{month}月13日 "
            end
        end

        #print msg + "\n" # back-slash
        puts msg
    end
end

# 実行
main

出力

2000年10月13日 
2001年4月13日 7月13日 
2002年9月13日 12月13日 
2003年6月13日 
2004年2月13日 8月13日 
2005年5月13日 
2006年1月13日 10月13日 
2007年4月13日 7月13日 
2008年6月13日 
2009年2月13日 3月13日 11月13日 
2010年8月13日 
2011年5月13日 
2012年1月13日 4月13日 7月13日 
2013年9月13日 12月13日 
2014年6月13日 
2015年2月13日 3月13日 11月13日 
2016年5月13日 
2017年1月13日 10月13日 
2018年4月13日 7月13日 
2019年9月13日 12月13日 
2020年3月13日 11月13日 
2021年8月13日 
2022年5月13日 
2023年1月13日 10月13日 
2024年9月13日 12月13日 
2025年6月13日 
2026年2月13日 3月13日 11月13日 
2027年8月13日 
2028年10月13日 
2029年4月13日 7月13日 
2030年9月13日 12月13日 
2031年6月13日 
2032年2月13日 8月13日 
2033年5月13日 
2034年1月13日 10月13日 
2035年4月13日 7月13日 
2036年6月13日 
2037年2月13日 3月13日 11月13日 
2038年8月13日 
2039年5月13日 
2040年1月13日 4月13日 7月13日 
2041年9月13日 12月13日 
2042年6月13日 
2043年2月13日 3月13日 11月13日 
2044年5月13日 
2045年1月13日 10月13日 
2046年4月13日 7月13日 
2047年9月13日 12月13日 
2048年3月13日 11月13日 
2049年8月13日 
2050年5月13日 
2051年:1月13日 10月13日 
2052年:9月13日 12月13日 
2053年:6月13日 
2054年:2月13日 3月13日 11月13日 
2055年:8月13日 
2056年:10月13日 
2057年:4月13日 7月13日 
2058年9月13日 12月13日 
2059年:6月13日 
2060年:2月13日 8月13日 
2061年:5月13日 
2062年:1月13日 10月13日 
2063年:4月13日 7月13日 
2064年:6月13日 
2065年:2月13日 3月13日 11月13日 
2066年:8月13日 
2067年:5月13日 
2068年:1月13日 4月13日 7月13日 
2069年:9月13日 12月13日 
2070年:6月13日 
2071年:2月13日 3月13日 11月13日 
2072年:5月13日 
2073年:1月13日 10月13日 
2074年:4月13日 7月13日 
2075年:9月13日 12月13日 
2076年:3月13日 11月13日 
2077年8月13日 
2078年:5月13日 
2079年:1月13日 10月13日 
2080年:9月13日 12月13日 
2081年:6月13日 
2082年:2月13日 3月13日 11月13日 
2083年:8月13日 
2084年:10月13日 
2085年:4月13日 7月13日 
2086年:9月13日 12月13日 
2087年:6月13日 
2088年:2月13日 8月13日 
2089年:5月13日 
2090年:1月13日 10月13日 
2091年:4月13日 7月13日 
2092年:6月13日 
2093年:2月13日 3月13日 11月13日 
2094年:8月13日 
2095年:5月13日 
2096年:1月13日 4月13日 7月13日 
2097年:9月13日 12月13日 
2098年:6月13日 
2099年:2月13日 3月13日 11月13日 
2100年:8月13日 

28年周期なの?

wikiのSakamotoメソッドソースwiki記法不具合じゃないの?

と思いましたが、、。

 ↓

https://groups.google.com/forum/#!msg/comp.lang.c/GPA5wwrVnVw/hi2wB0TXGkAJ

 ↓

"-bed=pen+mad."[m] 文字列の添字なんだな・・。

2017-07-16

エディタで使いたいんですが、rubyrails辞書ファイル定番ってありますか?

自分抽出しようと思って単純に def キーワードgrep しようと思ったら privateメソッドも含まれてきてしまうのでダメそうです。

2017-06-27

ファイナルファンタジータクティクス』で召喚できる(新)本格作家

本気でかっこいいとおもってやりました。実在人物作品関係はありません。


・死屍の綾なす四ツ辻の、獅子も恐れる行く人の、知らぬは読者ばかりなり、綾辻行人ッ!

 [中範囲に防御無視ダメージダメージ量は詠唱者のHP残量に反比例)+範囲内の味方のDEFアップ]


・我が産みし死靈天上天下に及ぶものなし! 開け、聞け、探偵三道宝階ッ! 麻耶雄嵩ッ!

 [フィールドの天候がランダムに変化+各敵キャラの装備をランダムひとつ破壊(防具や魔法による回避不可)]


・私の城は美しいお城、私の頭文字は完全なる円にして王の証ッ、死ぬまで踊れっ、舞城王太郎ッ!

 [敵全体に混乱+詠唱者のSTR大幅アップ]


・実るほど頭を垂れる稲穂かな。不燃にして不稔に非ず、エリシャの奇跡の裔と知れッ! 米澤穂信ッ!

 [味方全体のHP回復+リレイズ]


・円心に居して惑うことなし、今宵ささめくあなた挽歌、参ります円居挽ッ!

 [味方全体にヘイスト+ランダムで敵の一人に死の宣告]


・連なる城は堅固にして絢爛、三度否まず三界を紀(おさ)むッ! 連城三紀彦ッ!

 [中範囲の敵味方すべてにMPHP入れ替え]


・その桜の木は一本でした。桜の木は満開でした。咲いて撃ち抜けッ! 桜庭一樹ッ! 

 [中範囲の敵にドンムブ+ドンアク+確率で防具破壊]


コケコッコッコ……コケーッ! 似鳥鶏ッ!

 [敵全体にチキン]


・清涼のうちに流水は苔むさず、命育みメフィストフェレスの女媧とならん! 清涼 in 流水ッ!

 [敵全体に水属性の大ダメージ+サイレス]


月光遊戯、双頭の悪魔国名を端から君に聞かせよう…… 英明なる都は祝福に満ちている。今出(いまいず)る川より通るがいい――アリスト(高貴なる)アリス有栖川有栖

 [敵全体にチャーム+ポイズン+faithアップ]


異能魔術師よ、奇跡をもって正邪を糺せ! 井上真偽ッ!

 [敵全体のステータス強化と味方全体の状態異常を解除]


・月は深(み)ちた……時よ止まれ辻村深月ッ!

 [敵全体にストップ]


・ひらかせていただき光栄です。皆川博子ッ!

 [味方全体にリジェネ+リレイズ+状態異常回復]


・朝明に白む山よッ! 一なる愛を識る永遠よッ! 枕木に憂う士(さむらい)よッ! 三位全一なる二文字に集えッ! 乙一ッ!

 [対象キャラの全能力値が大アップ]


・投之於冰上

 鳥何燠之

 何馮弓挾矢

 殊能将之ッ!

 [その戦闘第一ターンから仕切り直しに]


楽園死神、その胸中に二心あり。右はくろがね、左はからかね。楽園死神、その掌中に二刀あり。左は剔(そ)るもの、右は樵(こ)るものいのち捧げよッ! 汀こるものッ!

 [敵全体にレベル3デス]


・占うッ、亜細亜の星を――島々の星は荘と出たッ! 島田荘司ッ!

 [敵味方全体のアビリティシャッフル]


・いちかはじめか、はじめかいちか。どんととびでて折るか祈るか、心は螺旋折原一ッ!  

 [敵味方全体のうちランダムで一人にデス+ランダムで一人にレイズ(気絶キャラ存在する場合のみ)]


西尾維新(ハタチ)ーーーーーッッッッッッ!!!

 [敵全体に特攻ダメージ詠唱者は戦闘から除外(死亡ではない)]


・その本は本にして本に非ず、立体にして三次元に非ず、凶器にして狂気に非ず、どすこいどすこい京極夏彦ッ!

 [中範囲の敵に大ダメージ確率でスタン+三マス後方へノック]


黄昏に発つミネルヴァの梟は最強にてよしとする。駆けぬけろッ、笠井潔ッ!

 [フィールド上の敵味方全てに確率即死(即宝箱か石になる)]

2017-06-01

前/後ろがどっちかわからない問題

ABC|DEF

このように、カーソルがCとDの間にあったとする。

両方とも、Cのような気もするし、Dのような気もする。

2017-05-25

pull request request

def request(x):
    return request(x)

request(pull)

2017-02-20

http://anond.hatelabo.jp/20170220005414

順位はてブ割合ドメイン備考
12528.48%anond.hatelabo.jpごみ
22107.07%blog.livedoor.jpごみ
32046.87%togetter.comごみ
41936.5%www.itmedia.co.jp
51565.25%d.hatena.ne.jp
61294.34%www.asahi.com
7923.1%headlines.yahoo.co.jp
8802.69%gigazine.net
9762.56%www3.nhk.or.jp
10722.42%japan.cnet.com
11591.99%qiita.com
12501.68%www.lifehacker.jp
13391.31%www.slideshare.net
14351.18%alfalfalfa.com
15341.14%business.nikkeibp.co.jp
16341.14%internet.watch.impress.co.jp
17321.08%hatenanews.com
18321.08%hotwired.goo.ne.jp
19311.04%bylines.news.yahoo.co.jp
20290.98%nlab.itmedia.co.jp
21270.91%www.buzzfeed.com
22260.88%itpro.nikkeibp.co.jp
23240.81%hamusoku.com
24240.81%jp.techcrunch.com
25240.81%www.publickey1.jp
26240.81%www.yomiuri.co.jp
27230.77%japanese.engadget.com
28230.77%speakerdeck.com
29230.77%www.nikkei.com
30230.77%www.sankei.com
31230.77%www.welluneednt.com
32210.71%pc.watch.impress.co.jp
33210.71%pcweb.mycom.co.jp
34210.71%twitter.com
35190.64%kabumatome.doorblog.jp
36180.61%mainichi.jp
37180.61%www.atmarkit.co.jp
38170.57%himasoku.com
39170.57%news.livedoor.com
40170.57%www.huffingtonpost.jp
41170.57%www.watch.impress.co.jp
42160.54%toyokeizai.net
43160.54%www.47news.jp
44150.51%allabout.co.jp
45150.51%sankei.jp.msn.com
46150.51%www.ringolab.com
47140.47%nikkeibp.jp
48130.44%karapaia.livedoor.biz
49130.44%portal.nifty.com
50130.44%www.forest.impress.co.jp
51130.44%www.gizmodo.jp
52120.4%paiza.hatenablog.com
53120.4%shinta.tea-nifty.com
54110.37%news4vip.livedoor.biz
55110.37%weekly.ascii.jp
56110.37%www.geocities.jp
57110.37%www.youtube.com
58100.34%blog.goo.ne.jp
59100.34%kirik.tea-nifty.com
60100.34%phpspot.org
61100.34%r.nanapi.jp
62100.34%tabi-labo.com
63100.34%wired.jp
64100.34%www.afpbb.com
65100.34%www.cnn.co.jp
66100.34%www.hatena.ne.jp
67100.34%www.ideaxidea.com
6890.3%matome.naver.jp
6990.3%readingmonkey.blog45.fc2.com
7090.3%slashdot.jp
7180.27%coliss.com
7280.27%finalvent.cocolog-nifty.com
7380.27%japan.internet.com
7480.27%lineblog.me
7580.27%medium.com
7680.27%note.mu
7780.27%pipipipipi-www.hatenablog.com
7880.27%r.gnavi.co.jp
7980.27%www.mainichi-msn.co.jp
8070.24%bb.watch.impress.co.jp
8170.24%blog.bulknews.net
8270.24%blog.japan.cnet.com
8370.24%blog.tinect.jp
8470.24%diamond.jp
8570.24%e0166.blog89.fc2.com
8670.24%kachibito.net
8770.24%kiri.jblog.org
8870.24%naoya.dyndns.org
8970.24%photoshopvip.net
9070.24%workingnews.blog117.fc2.com
9170.24%www.appbank.net
9270.24%www.excite.co.jp
9370.24%www.future-planning.net
9460.2%blogos.com
9560.2%cards.hateblo.jp
9660.2%journal.mycom.co.jp
9760.2%macaro-ni.jp
9860.2%mudainodqnment.blog35.fc2.com
9960.2%satoshi.blogs.com
10060.2%www.j-cast.com
10160.2%www.nikkansports.com
10260.2%www.oshiete-kun.net
10360.2%www.yutorism.jp
10460.2%zasshi.news.yahoo.co.jp
10550.17%antipop.zapto.org
10650.17%blog.tatsuru.com
10750.17%blogs.itmedia.co.jp
10850.17%burusoku-vip.com
10950.17%gendai.ismedia.jp
11050.17%k-tai.impress.co.jp
11150.17%mantan-web.jp
11250.17%natalie.mu
11350.17%orecipe.hatenablog.com
11450.17%takagi-hiromitsu.jp
11550.17%techlife.cookpad.com
11650.17%this.kiji.is
11750.17%waranote.blog76.fc2.com
11850.17%www.newsweekjapan.jp
11950.17%www.nikkei.co.jp
12040.13%artifact-jp.com
12140.13%hail2u.net
12240.13%homepage.mac.com
12340.13%kengo.preston-net.com
12440.13%takekuma.cocolog-nifty.com
12540.13%www.100shiki.com
12640.13%www.geocities.co.jp
12740.13%www.sem-research.jp

そーす
#www.itmedia.co.jp(165)
#blog.livedoor.jp(103)

def main

    hatebu = {}
    total = 0

    open('hatebu.dat').each do |line|
        domain = line.split('(')[0]
        bukuma = line.split('(')[1].chomp[0..-2].to_i
        total += bukuma

        if hatebu.has_key?(domain)
            hatebu[domain] += bukuma
        else
            hatebu[domain] = bukuma
        end
    end

    index = 1
    hatebu.sort {|(k1, v1), (k2, v2)| v1 == v2 ? k1 <=> k2 : v2 <=> v1}.each do |kv|
        per = (kv[1].to_f / total * 100).round(2)
        print "|#{index}|#{kv[1]}|#{per}%|#{kv[0]}|\n"
        index += 1
    end

end

main

2017-01-14

http://anond.hatelabo.jp/20170114155348

明確な目標があるのに、もったいない

ネットだと、情報が多すぎるのかな

javascriptかな?と思ったけど、ruby

ifもforもでてこなくてスマ

eachが形を変えたforです

いろんなとこからコピペ量産して、2時間近くかかりました^^

api取得はすぐだったけど、json、hash、arrayでごにゃごにゃ)

rubyソース

# ライブラリ
require 'net/http';
require 'uri'
require 'json'

# 検索文字
$q = 'http://ci.nii.ac.jp/books/opensearch/search?q=%E7%B3%9E&format=json'

# web-apiから取得
# https://support.nii.ac.jp/ja/cib/api/b_opensearch
def search(q)
    uri = URI.parse(q)
    json = Net::HTTP.get(uri)
    result = JSON.parse(json)
end

=begin
取得データ1件サンプル
{"title":"糞土",
"link":{"@id":"http://ci.nii.ac.jp/ncid/AN00094249"},
"@id":"http://ci.nii.ac.jp/ncid/AN00094249",
"@type":"item",
"rdfs:seeAlso":{"@id":"http://ci.nii.ac.jp/ncid/AN00094249.json"},
"dc:date":"1953",
"dc:creator":"糞土会",
"dc:publisher":["糞土会"],
"prism:publicationDate":"1953",
"cinii:ownerCount":"8"},
=end

# データ整形
#
# 入力データ構造
# {"@id":"http://ci.nii.ac.jp/books/opensearch/search?q=%E7%B3%9E&format=json",
#  "@graph":[ { "items":[ ,,,
#
# 出力(ハッシュ)
# {title => dc:date ,,, }
def format(hash)
    title_date = Hash.new

    # ハッシュキー"@graph"の値の配列の先頭のハッシュキー"items"のハッシュ配列を取得
    items = hash['@graph'][0]['items']

    # タイトル出版年を取得して、戻り値ハッシュへ追加していく
    items.each do |item|
        title = item['title'].chomp
        date  = item['dc:date']
        title_date.store(title, date)
    end

    return title_date
end

# 並び替え
def sort(hash)
    hash.sort_by do |key, value|
        value
    end
end

# 出力
def print(hash)
    hash.each do |key, value|
        puts "#{value}年 #{key}"
    end
end

# メイン関数
def main
    # web-api検索して、
    result1 = search($q)
    # データを整形して、
    result2 = format(result1)
    # 出版年で並び替えて、
    result3 = sort(result2)
    # 出力する
    print(result3)
end

# 実行
main

rubyスクリプトの実行結果

C:\Users\unko\Desktop\prog>ruby webapi.rb
1848年 人欲辨 (じんよくべん)
1870年 雀糞論説
1920年 青瓷説
1933年 管内ニ於ケル鶏糞ノ利用状況
1947年 糞尿譚 : 小説1953年 糞土
1955年 黒い裾
1955年 形成
1959年 石糞
1972年 糞 : 海田真生個人文芸誌
1972年 乳幼児糞便図譜
1987年 糞尿と生活文化
1991年 皇居と糞尿と大嘗祭 : 皇居「糞尿」裁判を支える会ニュース
1995年 糞袋
2000年 糞尿史 : 遷都は糞尿汚染からの逃避だった
2005年 「糞尿」大全
2007年 糞虫たちの博物誌
2008年 うんちのはなし : う~んとげんきになる
2009年 糞神

2016-10-13

\documentclass[a4j,12pt]{teikei}

\usepackage{youshi}

\usepackage{txfonts}

\pagestyle{empty}

%

% box for separate paragraph

%

\newbox\separatebox

%

%\FRAMEOFF

%

\DPI=300

%

\def\frameout{{

\pageno=1

\hoffset=0mm

\voffset=0mm

\advance\hsize by -\hoffset

\advance\vsize by -\voffset

\OFFSET

\frameparama

\vbox{\if枠表示\framedisplaya\fi}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% 通常は以下部分を書き換えてどのパラグラフをどこに入れるかを決定

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

{\XYBC{\Xa}{\Ya}{\Xb}{\Yc}{\bunshostyle\患者}}

{\XYBC{\Xb}{\Ya}{\Xc}{\Yb}{\bunshostyle\氏名}}

{\XYBC{\Xb}{\Yb}{\Xc}{\Yc}{\bunshostyle\月日}}

{\XM=3mm\YM=3mm

\XYBP{\Xc}{\Ya}{\Xd}{\Yb}{\bunshostyle\患者氏名}}

{\XM=3mm\YM=3mm

\XYBP{\Xc}{\Yb}{\Xd}{\Yc}{\bunshostyle\患者生年月日}}

{\XYBC{\Xd}{\Ya}{\Xe}{\Yb}{\bunshostyle\性別}}

{\XM=1mm\YM=1mm

\XYBC{\Xe}{\Ya}{\Xf}{\Yb}{\bunshostyle\患者性別}}

{\XYBC{\Xd}{\Yb}{\Xe}{\Yc}{\bunshostyle\職業}}

{\XM=3mm\YM=1mm

\XYBC{\Xe}{\Yb}{\Xf}{\Yc}{\bunshostyle\患者職業}}

{\XYBC{\Xa}{\Yd}{\Xc}{\Ye}{\bunshostyle\紹介目的}}

{\XM=3mm \YM=4mm

\XYBP{\Xc}{\Yd}{\Xf}{\Ye}{\bunshostyle\患者紹介目的}}

{\XYBC{\Xa}{\Ye}{\Xc}{\Yf}{\bunshostyle\病名}}

{\XM=3mm \YM=4mm

\XYBP{\Xc}{\Ye}{\Xf}{\Yf}{\bunshostyle\患者病名}}

{\XM=7mm \YM=4mm\XYBP{\Xa}{\Yf}{\Xc}{\Yg}{\bunshostyle\既往}}

{\XM=3mm \YM=2mm

\XYBP{\Xc}{\Yf}{\Xf}{\Yg}{\bunshostyle\患者既往}}

{\XM=5mm \YM=34mm\XYBP{\Xa}{\Yg}{\Xc}{\Yh}{\bunshostyle\経過}}

{\XM=3mm \YM=2mm \INDENT=0.5zw

\XYBP{\Xc}{\Yg}{\Xf}{\Yh}{\bunshostyle\患者経過}}

{\XYBC{\Xa}{\Yh}{\Xc}{\Yi}{\bunshostyle\処方}}

{\XM=3mm \YM=0.5mm \INDENT=0.5zw

\XYBP{\Xc}{\Yh}{\Xf}{\Yh}{\bunshostyle\患者処方}}

{\XYBC{\Xa}{\Yi}{\Xc}{\Yj}{\bunshostyle\備考}}

{\XM=3mm \YM=1mm \INDENT=0.5zw

\XYBP{\Xc}{\Yi}{\Xf}{\Yj}{\bunshostyle\備考欄}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

}}

\def\framedisplaya{

%

\Brule{\Xa}{\Ya}{\Xf}{\Yc}{1pt}

%

\Brule{\Xa}{\Yd}{\Xf}{\Yj}{1pt}

% \Drule{\XW}{\Ya}{\Xa}{\Yg}

%

\Hrule{\Xb}{\Yb}{\Xf}{0.1pt}

\Vrule{\Xc}{\Yd}{\Yj}{0.1pt}

\Hrule{\Xa}{\Ye}{\Xf}{0.1pt}

\Hrule{\Xa}{\Yf}{\Xf}{0.1pt}

\Hrule{\Xa}{\Yg}{\Xf}{0.1pt}

\Hrule{\Xa}{\Yh}{\Xf}{0.1pt}

\Hrule{\Xa}{\Yi}{\Xf}{0.1pt}

\Vrule{\Xb}{\Ya}{\Yc}{0.1pt}

\Vrule{\Xc}{\Ya}{\Yc}{0.1pt}

\Vrule{\Xd}{\Ya}{\Yc}{0.1pt}

\Vrule{\Xe}{\Ya}{\Yc}{0.1pt}

%

}

%

%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%% parameters %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%

% 定型枠の各座標データ

% Xは右方向にYは下方向に正

%

\def\frameparama{

\Xa= 0.00cm

\Xb= 0.8cm

\Xc= 2.70cm

\Xd= 11.10cm

\Xe= 12.80cm

\Xf= 16.00cm

\Ya= 0.00cm

\Yb= 0.90cm

\Yc= 1.80cm

\Yd= 2.00cm

\Ye= 3.60cm

\Yf= 5.00cm

\Yg= 7.00cm

\Yh= 15.50cm

\Yi= 17.00cm

\Yj= 19.20cm

}

%

\def\患者{患者}

\def\氏名{氏名}

\def\性別{性別}

\def\月日{生年月日}

\def\職業{職業}

\def\紹介目的{紹介目的}

\def\病名{傷病名}

\def\既往{既往歴\\および\\家族歴}

\def\経過{症状経過\\および\\検査結果\\治療経過}

\def\処方{現在の処方}

\def\備考{備考}

%%ここから記入欄%%

\def\患者氏名{%

殿

}

\def\患者性別{%

%男性

%女性

}

\def\患者生年月日{%

}

\def\患者職業{%

なし

}

\def\患者紹介目的{%

今後のご加療をよろしくお願いしま

%ご報告

%御高診、ご加療をよろしくお願いしま

}

\def\患者病名{%

}

\def\患者既往{%

}

\def\患者経過{%

いつもお世話になっております

}

\def\患者処方{%

}

\def\備考欄{%

}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\hspace{55mm}{\LARGE 診療情報提供書}

\vspace{6mm}

\hspace{120mm}\today

\vspace{6mm}

\hspace{6mm}紹介先医療機関名 {\large %

}

\vspace{6mm}

\hspace{10mm}{\large %

担当先生}

\vspace{6mm}

\hspace{100mm}医療機関\hspace{6mm}

\vspace{2mm}

\hspace{100mm}医師氏名\hspace{6mm}

\vspace{6mm}

\HOFFSET=0mm

\frameout

\end{document}

2016-06-09

はろーわーるどー

見出し

t*1つ目の見出し

本文

t+1*2つ目の見出し

本文2

属性*見出し


[カテゴリ]日記カテゴリーを設定しま


小見出し

小々見出し記法
  1. リスト
    1. リスト
    2. リスト

:定義リスト

::定義リスト

テーブル

名前個数
りんご1
みかんだいだい2


引用ブロック(blockquote)を簡単記述しま


 整形したテキストをそのまま表示します(pre) 

 整形したHTMLなどのソースをそのまま表示します(pre) 

 class Foo
   def bar'baz' # return baz
   end
 end




脚注((脚注))

====

次の見出しまでその後の日記を「続きを読む」にしま

続き1

続き2

見出し


=====

見出しも含めてその後の内容を「続きを読む」にしま

続き1

続き2

続き3

見出し



自動リンクテスト

グーグルhttps://www.google.co.jp/

2016-03-29

関数(正確にはメソッドというのですが)は、処理を1つにまとめたものです。

例えば、次のようなプログラムを書かないといけないとします。

print('Hello, world!')
print('Good morning, world!')
print('Hello, world!')
print('Good morning, world!')
print('Hello, world!')
print('Good morning, world!')

でも面倒なので関数定義します。

def my_print():
  print('Hello, world!')
  print('Good morning, world!')

my_print()
my_print()
my_print()
my_print()
my_print()

2016-01-24

Python で list から csv ファイル作成する。

python の質問になります。 - 例えばlist = [[1,あ,い,う,え,お],[2,か,き,く,... - Yahoo!知恵袋

# make csv file
import csv
def make_csv_file(table_data, file_path):
  with open(file_path, 'w') as file:
    for row_data in table_data: 
      csv.writer(file).writerow(row_data)

# usage
list = [
  ['1','a','b','c','d','e'],
  ['2','f','g','h','i','j'],
  ['3','k','l','m','n','o']
]
make_csv(list, 'sample.csv')

2015-12-08

掛け算足し算にも順番があるなら

三角形の合同の証明で、

AB=DE

BC=EF

∠BAC=∠EDF

二辺狭角により

ABC≡△DEF

みたいに書くとき対応する点同士の順番が揃ってないとバツにされるが、これに関して数学的にはどうなの?

2015-12-07

# method
def func(n):
  l = []
  for i in range(n):
    l.append({
      "name":"name"+str(i+1),
      "id":str(1300+i+1)
    })
  return l

# result
func(3)
[{'name': 'name1', 'id': '1301'}, {'name': 'name2', 'id': '1302'}, {'name': 'name3', 'id': '1303'}]

2015-12-05

仕事ばかりつかれた

仕事ばかりつかれた

どうしたもの趣味もないし


class HtmlObjs

def GetHtmlObjs(init_url, n)

obj = URLList.new

urls = obj.GetURLListAll(init_url, n)

htmls = Array.new

Anemone.crawl(urls, :depth_limit => 0) do |anemone|

anemone.on_every_page do |page|

htmls << page.doc

end

end

return htmls

end

end

class ProductInfo

def GetProductName(html)

return html.css("h1[class='product-name']").text

end

end

2015-09-05

悪質勝手登録出会い系サイトcommunity site @ dkij2.b3qzt.com

配信停止依頼しようにもドメインデタラメでたぶん単純な返信メールには応じなさそうだし、

しかも無事Webフィルタリングソフト突破できても

配信停止依頼にはこちらのメールアドレス晒しメールを送らないといけないので、晒しておきますね。

特商法ではありません

ビジネス上の公開情報

http://dkij2.b3qzt.com/special.php?special=3&s=1441443363&code=def&ssl=1441443363&ssl=1441443363

運営者》

dkij2.b3qzt.com事務局

メールアドレス

info@dkij2.b3qzt.com

ドメイン名義:Whois Privacy Protection Service by onamae.com

2015-05-09

def 明日から本気出す():
  sleep(86400)
  来週から本気出す()

def 来週から本気出す():
  sleep(604800)
  来月から本気出す()

def 来月から本気出す():
  sleep(2592000)
  本気()

def 本気():
  raise NotImplementedError()

2015-01-24

http://anond.hatelabo.jp/20150124001319

そんなもん定義できねえよ。バカだなぁ。

三角不等式なりたたんだろ。

追記

Scala元増田のやりたそうなことを書いてみた。

n次元空間にあるn次元ベクトルとそのm次元部分空間にあるm次元ベクトルとの距離。

結構大変だったじゃねーか。

もし本当にこれが解けなくて困ってたんなら2000円ぐらい払って欲しい。

type Vector = Array[(Int, Double)]

def distanceWithProjection(p1: Vector, p2: Vector): Double = {
  def distance(p1: Vector, p2: Vector) = {
    var d = 0.0
    for (i <- 0 to (p1.size - 1)) {
      val dp = p1(i)._2 - p2(i)._2
      d += dp * dp 
    }
    Math.sqrt(d)
  }

  def find(vector: Vector, i: Int): Option[(Int, Double)] = {
    val filterd = vector filter (v => v._1 == i)
    if (filterd.size == 1)
      Some(filterd.head)
    else
      None
  }

  def projection(from: Vector, to: Vector): Vector = {
    var vector = Array.fill(to.size)((0,0.0))
    for (i <- 0 to (vector.size - 1)) {
      vector(i) = find(from, to(i)._1) match {
        case Some(v) => v
        case None => (0,0.0)
      }
    }
    vector
  }

  distance(projection(p1, p2), p2)
}

2014-06-19

http://anond.hatelabo.jp/20140619010953

純粋なrandom関数は、引数に渡したseed値に対して、同じseedには必ず同じ値を返す。

一つ前の乱数を再びseedにするやり方で、いくつもの乱数純粋に取り出せるよ。

もちろん初期値が一緒なら、起動するたびに同じ答えが返るけど。

で、初期値を起動するたびに変えたいってのを純粋にやるなら、IOモナド使うことになる。

手続き系とFPどっちのが分かりやすくなるかは、ケースバイケースだから使い分けろ、ってのは正しい。

追記:

ってよく見ると、ランダム値列の作り方じゃなくて、あくまでどうやって返す関数書くか、ってことか。

それならIOモナド使うまでもないので、自分的に書きやすScalafp形式で書いてしまうけど

val rands = Seq(10,20,1,6,8,0,0,0,20,10)

def f(xs: Seq[Int]) = xs.slice(0, xs.scanLeft(0){_ + _} takeWhile {_ <= 50} size)

f(rands)

でいけると思う。

2014-03-26

教えて!Scalaちゃん

// Scala

class Base {

protected def func = {}

}

class A extends Base {

(new A).func // (A)

}

class B extends A {

(new A).func // (B)

}

class C extends Base {

(new A).func // (C)

}

// ってやると(B)(C)がエラーになる。

// (C)はまだわからないでもないが、(B)がエラーになるのがわからない。

// (たとえoverrideされてたとしても)funcの中身まで知ってるのに呼べないとか。

// うーむ。

2014-02-15

Python無名関数っぽいUnixコマンド作った。

GitHubとかブログやってないからここに書いておく。

使い方

標準入力を使いまわしたいとき

... | fun x:: cmd1 x : cmd2 x : ... : cmdn x | ...

ただしcmdにはサブシェルパイプなどは使用できない。

標準入力をそのまま利用する場合と一行毎に処理する場合

一行毎に処理する場合はxargs -Iを利用する。

$ ls *txt
a.txt b.txt
$ cat a.txt
1
$ cat b.txt
2
$ ls *txt | fun x:: echo x : cat x
a.txt b.txt
1
2
$ ls *txt | xargs -Ix fun _:: echo x : cat x
a.txt
1
b.txt
2

コード(fun)

>と<はそれぞれ大小の不等号で置き換えてくださいな

#!/usr/bin/env python
import sys
from subprocess import *

def take_variable(var):
	# check the syntax of variable (http://www.gnu.org/software/bash/manual/bash.html)
	# variable ::= (_|[A-z])(_|[A-z]|[0-9])*
	# variable contained space
	if len(var.split()) > 1:
		raise Exception('fail: the variable contained space')
	# check head
	if not (var[0].isalpha() or var[0] == '_'):
		raise Exception('fail: the variable contained wrong character')
	# check the body of variable
	b = True
	i = 0
	for c in var[1:]:
		i += 1
		# is variable contained invalid character?
		if not (c.isalpha() or c.isdigit() or c == '_'):
			b = False
			break
	# no exception if thre are only spaces after variable
	if not b and not var[i:].isspace():
		raise Exception('fail: the variable contained wrong character')
	elif b:
		return var[0]
	else:
		return var[:i]

def parse(var_to_cmds):
	# check the position of '::'
	try:
		pos = var_to_cmds.index('::')
	except Exception:
		raise Exception('not exists "::"')
	var = var_to_cmds[:pos]
	cmd_str = var_to_cmds[pos+2:]
	# check the format of variable and commands
	if var ==  '':
		raise Exception('fail: no variable before "::"')
	elif cmd_str == '':
		raise Exception('fail: no commands after "::"')

	return (take_variable(var),cmd_str)


if __name__ == '__main__':
	# parse variable and commands
	try:
		var,cmd_str = parse(' '.join(sys.argv[1:]))
	except Exception, e:
		print >>sys.stderr, e
		sys.exit(1)

	# var -> val
	val = sys.stdin.read().replace('\n',' ')
	# mapping and split by ':' again
	commands = map(
			(lambda cmd: cmd.replace(' '+var+' ',' '+val+' ')),
			cmd_str.split(':'))

	# exec command
	for cmd in commands:
		try:
			# need split for remove spaces
			check_call(cmd.split())
		except Exception,e:
			# print >>sys.stderr, e
			sys.exit(1)

本当はfunじゃなくて\(バックスラッシュ)で、:: じゃなくて→にしたかったんだけど、シェルが置き換えちゃうからしかたない

シェルの改造は禁断の手段だし

2012-11-13

Python3でMeCab

python3.2にpythonバインディングを入れようとしても途中でエラーが出る

AttributeError: 'module' object has no attribute 'split'

setup.pyの中で使われているstring.splitがpython3.2では使えなくなってるからなので以下のように変更すればおk

setup.py

def cmd2(str):
    return string.split (cmd1(str))

を以下に変更

def cmd2(str):
    return cmd1(str).split()

これでいけます。困ってる人がいたら参考にしてください。

2012-08-13

C#基礎文法最速マスター

1. 基礎
classの作成

プログラムclass記述します。たとえばSampleという名前classを作る場合、Sample.csファイル内に次のように書きます。(C#場合ファイル名とクラス名は同一でなくても良い。複数のクラスを書いても良い)

public class Sample {

}
Mainメソッドの作成

プログラムclass内のMainメソッドの先頭から実行されます。Mainメソッドは次のように書きます

public class Sample {

    public static void Main( String[] args ) {
         // 処理を書く
     }

}
Console.WriteLineメソッド

文字列を表字するメソッドです。

Console.WriteLine( "Hello world" );
コメント

コメントです。

// 一行コメント

/*
   複数行コメント
 */
変数の宣言

変数の宣言です。変数の宣言時にはデータ型を指定します。

// 変数
int num;
データ型

データ型です。C#データ型には値型と参照型とがあります。以下は値型のデータ型です。

// int(整数)型
int num;
// char(文字)型
char c;
// float(単精度浮動小数点)型
float val;
// double(倍精度浮動小数点)型
double val;
// bool(論理)型
bool flag;
// DateTime(日付)型
DateTime date;

以下は参照型のデータ型です。

// StringString s;
// 配列String[] array;
プログラムのコンパイル

プログラムコンパイルするには、コマンドラインで以下のようにします。

csc Sample.cs
プログラムの実行

プログラムを実行するには、コマンドラインで以下のようにします。

.net framework on Windows場合

Sample.exe

Mono.frameworkの場合

mono ./Sample.exe
2. 数値
数値の表現

int、float、double型の変数に数値を代入できます。int型には整数だけ代入できます。float、double型には整数でも小数でも代入できます

int i = 2;
int i = 100000000;

float num = 1.234f;

double num = 1.234;
四則演算

四則演算です。

num = 1 + 1;
num = 1 - 1;
num = 1 * 2;
num = 1 / 2;

商の求め方です。割る数と割られる数が両方とも整数場合計算結果の小数点以下が切り捨てられます

num = 1 / 2;  // 0

割る数と割られる数のどちらかが小数場合計算結果の小数点以下が切り捨てられません。

num = 1.0 / 2;    // 0.5
num = 1 / 2.0;    // 0.5
num = 1.0 / 2.0;  // 0.5

余りの求め方です。

// 余り
mod = 4 % 2
インクリメントとデクリメント

インクリメントとデクリメントです。

// インクリメント
 ++i;

// デクリメント
 --i;
3. 文字列
文字列の表現

文字列ダブルクォートで囲みます

String str = "abc";
文字列操作

各種文字列操作です。

// 結合
String join = "aaa" + "bbb";

// 分割
String[] record = "aaa,bbb,ccc".Split( "," );

// 長さ
int length = "abcdef".Length();

// 切り出し
"abcd".Substring( 0, 2 )   // abc

// 検索
int result = "abcd".IndexOf( "cd" ) // 見つかった場合はその位置、見つからなかった場合は-1が返る
4. 配列
配列変数の宣言

配列です。

// 配列の宣言
int[] array;
配列の生成

配列の生成です。配列の生成時には要素数を指定するか、初期データを指定します。

int[] array;

// 要素数を指定して配列を生成
array = new int[5];

// 初期データを指定して配列を生成
array = new int[] { 1, 2, 3 };

// 宣言と同時に配列を生成
int[] array2 = new int[5];
配列の要素の参照と代入

配列の要素の参照と代入です。

// 要素の参照
array[0]
array[1]

// 要素の代入
array[0] = 1;
array[1] = 2;
配列の要素数

配列の要素数を取得するには以下のようにします。

array_num = array.Length;
配列のコピー

配列の要素を別の配列コピーするには以下のようにします。

int[] from = new int[] { 1, 2, 3 };
int[] to = new int[5];

from.CopyTo(to, 0);
5. 制御文
if文

if文です。

if ( 条件 )
{

}
if ~ else文

if ~ else文です。

if ( 条件 )
{

}
else
{

}
if ~ else if 文

if ~ else if文です。

if ( 条件 )
{

}
else if ( 条件 )
{

}
while文

while文です。

int i = 0;
while ( i < 5 )
{
    
    // 処理
    
    ++i;
}
for文

for文です。

for ( int i = 0; i < 5; ++i )
{
    // 処理
}
for-each文

for-each文です。配列の各要素を処理できます

int[] fields = new int[] { 1, 2, 3 };

foreach (int field in fields)
{
    // 処理
}
6. メソッド

C#では関数メソッドと言いますメソッドを作るには次のようにします。戻り値を返却するにはreturn文を使います

static int sum( int num1, int num2 )
{
    int total;

    total = num1 + num2;

    return total;
}
9. ファイル入出力

ファイル入出力です。ファイル入出力を行うには、プログラムの先頭に以下を記述します。

using System.IO;

以下がファイル入力の雛形になりますファイルオープンや読み込みに失敗した場合catch節に処理が移ります

String filename = "text.txt";
StreamReader reader = null;
try
{
    reader = new StreamReader(filename);

    String line;
    while ((line = reader.ReadLine()) != null)
    {

    }

}
catch (IOException e)
{
    // エラー処理:

}
finally
{
    if (reader != null)
    {
        try
        {
            reader.Close();
        }
        catch (IOException e) { }
    }
}

またはC#ではusing ステートメントと言うものがあり、この様にも書ける

String filename = "text.txt";
using (StreamReader reader = new StreamReader(filename))
{
    try
    {

        String line;
        while ((line = reader.ReadLine()) != null)
        {
            // 読み込んだ行を処理
        }

    }
    catch (IOException e)
    {
        // エラー処理:

    }
}

usingをつかうとCloseがなくなったことからわかるようにusing(){}を抜けるとき自動的にDisposeメソッドを呼び出し、オブジェクトを廃棄する。その分コードスッキリするが、使いにくい場面もあるので考えて使うこと。

以下がファイル出力の雛形になりますファイルオープンや書き込みに失敗した場合catch節に処理が移ります

String filename = "text.txt";
StreamWriter writer = null;

try
{
    writer = new StreamWriter(filename));

    writer.WriteLine("abc");
    writer.WriteLine("def");
    writer.WriteLine("fgh");

}
catch (IOException e)
{
    // エラー処理:

}
finally
{
    if (writer != null)
    {
        writer.Close();
    }
}

こちらもusingを使って書ける。が、割愛する。

知っておいたほうがよい文法

C#でよく出てくる知っておいたほうがよい文法の一覧です。

繰り返し文の途中で抜ける

繰り返し文の途中で抜けるにはbreak文を使用します。

for ( i = 0; i < 5; ++i ) {

    if ( 条件 ) {
        break;    // 条件を満たす場合、for文を抜ける。
    }

}
繰り返しの残り部分の処理をスキップする

残りの部分処理をスキップし、次の繰り返しに進むにはcontinue文を使用します。

for ( i = 0; i < 5; ++i ) {

    if ( 条件 ) {
        continue;    // 条件を満たす場合、残りの部分処理をスキップし、次の繰り返しに進む。
    }

}
例外処理

例外を投げるにはthrow文を使用します。

throw new Exception( "Error messsage" );

例外処理をするにはtrycatch文を使用します。

try {

    // 例外が発生する可能性のある処理

} catch ( Exception e ) {

    // 例外発生時の処理

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