はてなキーワード: HAtenaとは
変数や構文などのプログラミングの基礎は覚えた人向けに、ソースコードを書くときのコツを紹介していきます。どれも今日から実践できるものばかりです。他のプログラマと差をつけることができる技術ですので、ぜひ意識するようにして下さい。良い子はまねしないで下さい。
理想は、aやxなどの一文字です。ただし、これだけだと26文字しか使えないので、a1, a2, ...のように連番でグルーピングすると良いです。
また、変数の宣言と使用箇所が離れた場合に、変数の型がすぐに分かるように、たとえばint型であればi1, i2, ...、string型であればs1, s2, ...のように命名すると、読む人に親切で自分もミスしにくくなります。
変数名を長くするのは、以下のデメリットがあるため、絶対にやめましょう。
多くのプログラミング言語には、クラスや関数といった機能がありますが、これらは基本的にライブラリ提供者などが使う想定の機能であり、一般のプログラマが使うのは好ましくありません。したがって、クラスや関数はなるべく使わないようにして下さい。
不要な関数を作らないためのテクニックには、以下のようなものがあります。
まず、関数の引数に「フラグ」を渡し、関数内部で処理を切り替えれば、1つの関数で複数の処理をすることができます。
function f(i) { switch(i) { case 1: // i = 1のときの処理 break; case 2: // i = 2のときの処理 break; case 3: // i = 3のときの処理 break; // ... } }
この方法は、以下に述べる「変数の寿命を伸ばす」効果もあります。つまり、この関数内で宣言された変数は、すべての処理で共通して使用することができます。
クラスに不要な関数を作らないようにするには、「継承」を用います。複数のクラスで用いる関数を定義したクラスを1つ作っておき、そのクラスを継承すれば、新しいクラスに関数を定義する必要はありません。
理想的には、プログラム内のすべての関数を同一のクラスに定義し、それを継承するべきです。そのようなクラスは俗に「神」と呼ばれ、その利便性からプログラマからはこの上なく尊ばれています。
class God { f1() { // 関数1 } f2() { // 関数2 } // ... } class C1 extends God { // 何も書かなくても上の関数が使える! } class C2 extends God { // 何も書かなくても上の関数が使える! } // ...
変数は宣言する場所によって、ソースコードのどの範囲から参照できるかが決まっています。この範囲が広いことを、「変数の寿命が長い」と言います。
たとえば、以下のコードのaは、関数定義の外側からは参照することができません。
function f() { var a = 1; return a; }
一方、以下のコードのaは関数の内外どちらからでも参照することができます。
var a = 1; function f() { a = 2; return a; }
せっかく作った変数がすぐに死んでしまうのは、非常にもったいないです。ソースコードの表面には現れませんが、変数を作ったり捨てたりするのには、計算コストがかかります。したがって、寿命の短い変数を作りすぎてしまうと、プログラムが遅くなってしまいます。
また、変数の寿命が長いということは、変数をたくさん作らなくても、1つの変数を色々なところで利用できるということであり、とても便利です。たとえば、上記の前者のコードでは、関数の外部からaの値を参照したくなっても、参照することができません。後者のように書いておけば、プログラムのどの箇所からでも、aの値を参照したり、更新することができます。したがって、変数の寿命を長くするとプログラムを変更しやすくなります。つまり、保守性が上がります。
例外とは、プログラムが予期しない処理をしようとした場合に、プログラムの実行を停止し、呼び出し元にエラーを通知する機能です。たとえば、「test.txt」というファイルを開こうとしても、そのファイルが存在しない場合は、例外となります。
例外が発生すると、プログラムが停止してしまうため、非常に困ります。したがって、プログラマは例外をきちんと処理しなければなりません。
ほとんどのプログラミング言語には、例外処理のための機構があります。たとえば、以下のような構文です。
try { // 例外が発生し得る処理 // ex. ファイルを開く } catch (e) { // 例外が発生したときに、実行する処理 }
例外への対処は実はとても簡単です。是非ここで覚えて下さい。上記のような機構のある言語であれば、catch節の中身を何も書かなければ、例外が発生しても、何事もなくプログラムは動作を続けます。
try { // 例外が発生し得る処理 } catch () {}
全ての例外を潰せば、決して不慮の動作で停止することのないプログラムを作ることができます。ですから、例外が発生し得るコードは、積極的に上記のtry-catch構文を用いて、例外を潰すようにしましょう。
殺伐とした増田にアレが!! ____ /´-―――-、\ // ,-―=ヽ、 \ \ / / (_ノ-t Y )-、 ヽ ヽ .l i ノっ \ーi | i | | | く、 (_`し´ | | 家庭科でよく使うアレwwwwwwww .l i i_/ Y ./ / ヽヽ / / / / \\_ ` ̄ ´ // フ ,_⌒) (⌒´、く く く  ̄  ̄´> > ヽ ヽ / / ヽ i´ ) ( `i / .ヽー´ `ー/ |⊂二⊃| ヽ====ノ `i-/´ V . ∧ / \ \ / . ヽ / ∨ ┏━━━┓┏┓ ┗┓┏┓┃┃┃ ┃┣┛┃┃┃ ┏┓ ┃┣━┛┃┃┏┛ ┃ ┃┃ ┃┗┛┏┛ ┗┛ ┗━━┛
Articles that describe how to study English are popular in Hatena Bookmark.
In spite of that, there are few articles written in English here.
That is why, I am writing this now and also highly recommend writing anonymous diary in English to everyone.
たとえばスレッド型掲示板で、各レスに何回アンカーがついたか調べるのに、↓のどっちがいいのかとか考えないのか
int[] replyCount = new int[thread.Length]; for (int to = 0; to < thread.Length; to++) { for (int from = 0; from < thread.Length; from++) { if (thread[from].To.Contains(to)) { replyCount[to] += 1; } } }
int[] replyCount = new int[thread.Length]; for (int from = 0; from < thread.Length; from++) { foreach (int to in thread[from].To) { replyCount[to] += 1; } }
いや、俺は別に自民支持ではないから、その言説を殊更に否定しようとは思わないけどさ。
ただ、もしも仮に”国民全員が高い政治的リテラシーを持って適切な投票行動ができる社会”なんてモノが実現したとして、そうなったら立憲も票を剝がれる側だと思うけど、そこのところはどう考えているの?
現状、立憲に投票している人たちの中には「自民が与党の座に居座っているのは嫌だけど野党のどこが良い政党なのか分からないから、とりあえず野党第一党で一番目立って自民批判している立憲に投票しよう」という馬鹿が少なくない数いるということは想像に難くない。
立憲はそういう馬鹿を煽って戦略的に取り込もうとしている節が見られるし、はてなで見られる立憲支持者も自民を批判して間接的に立憲をageするだけで立憲自体の良い所を語ろうとしない奴や、もっとあからさまに「今の問題ある与党を追い落とすために野党第一党に投票しよう」と言い出す奴がたくさんいる。
実際のところ立憲は、自民とはターゲティング対象が違うだけで、負けず劣らず馬鹿の取り込み戦略が上手な政党だよ。
だから仮に、その手の戦略に乗せられて立憲へ投票しているような層が政治リテラシーを得てしまったら、立憲の集票能力がガクンと落ちることになる。
当たり前だが、国民の政治リテラシーが上がった結果としてバンドワゴン効果や現状維持層の取り込みという与党ボーナスがなくなるという仮定を立てるのならば、短絡的な与党アンチ層を取り込める野党第一党ボーナスもなくなるという想定でないと、フェアな見方とは言えないだろう。
結局、国民が本当に質の高い政党や政治家を見る目を持つ世界が到来したとして、それで日の目を見るのは勢力的には弱小だけど地道にコツコツ政治を行っていたような人たちであって、間違っても既にだいぶボーナスを得て野党第一党に居座ることができている立憲ではないよ。
1万程度ではまだまだです
お前もナンバーワンだ!
途中に「しの(77.0kg)」さんの名前を見つけて悲しくなった…
このコメ見るまで有名な人だと知らんかった
ブクマカとしてそりゃ当然
そのうちIDも消すよ、せっかくなので振り返り的に見返してなんとなく消したくなったからブクマ消した。
なぜどこぞのニュースサイトのようにページを分割しまくるのか。
助けてワンページマン!
こんなに細かく分ける必要はないのでは
もともと2万字ぐらいのひとまとめで作ってたけど何故か50行ぐらいを超えると増田に投稿しても反映されなかったので泣きながら分割投稿した。増田のバグなのか仕様なのか知らんけど誰か調べて
-----------------------------------------------------
Q.いつ辞めるの?
A.来月ぐらいにはアカウント消す予定。既にはてなのサービスのデータ全部消しているので問題なし。
Q.移行するなら下書きしてた方が良くない?
A.インターネットの塵と化すので移行する準備は問題なし。一応txtに下書きはしてた。欲しいなら上げることは可能。
A.めんどくさいので代わりにやってほしい
Q.やめるなら記法について書いといてほしい。枠とか線とか見やすいから参考にしたい
A.枠内はこんな感じ(大なり小なりが勝手にlt;gt;になってるけど記号ね)
>> ブコメ - id: <a href="https://www.hatena.ne.jp/">ブコメページ</a> - <a>ページタイトル</a> <<
Q.インフォシーク はまだあるぞ
A.infoseek iswebのことをインフォシークと書いてたわ
------------------
Q.なんでやめるの?
A.別増田にid名指しでアホやろって言われてなんかもうどうでもいいやって思ったから。匿名で卑怯だぞという気持ちがないではないが、どうでもいいや感のほうが大きかったため。
2009年からブクマ始めて気が付けば約10000ブクマしてた。もともとはてなに来たのはうごメモはてなからで、ブクマ始めた当時(12年前)は中2。ブクマの機能すらよくわからず使ってた。
初期はちきりんのサイトとかライフハックの記事をよくブクマしてた、若い。
hagexさんとかcyberglassさんのブログとかもブクマしてて懐かしさを感じた。
全体的に感じたのは、インターネットのコンテンツ(記事)は永遠ではないということ。本当に必要なものがあるのならオフラインに保存必須。それとブクマページがコンテンツの墓標のようになっていたこと。webコンテンツの存在を残すために、ブクマカはこれからも色んなページをブクマしてほしいと思う。
どうでもいいけどブクマ全部見返して削除するのめちゃくちゃ時間がかかった。とても大変だった…
ブクマカはこれが見たいんでしょ、わかるよ。
確認したらブコメが消えていたものはid省略して記載。なんで消えてるブコメを把握してるかって?ブコメページをブクマしてたからだよ。
ページを「ブクマ」しようとするって事は、逆にブコメページを「ブクマ」されるかもしれないという危険を常に『覚悟して来ている人』ってわけですよね…
ランクイン(?)したブクマカはおめでとう。ランクインしてないブコメも別に悲しむ必要はないと思う。
そいつらって「ただ学校が一緒だった」だけで、友達じゃないよ。友達って、年齢関係なく、横並びだから。 - id:privates
これが教員側または親の側からの心構えとしては、失敗する権利を奪うなとなる。老婆心やお節介で能動的に手伝いたくなるがそれは自己満足。教育とは自ら学ぶ人間に育てること。そしてそこから学ぶことなのである - id:Miroc
ブコメページ - 大学の恩師に教わった、「なにがわからないか、わからない」ときの質問のしかた。 | Books&Apps
え、勉強や努力って誰かの結果と比較する為にやる事じゃなくて、自分の伸び代を最大限に伸ばす為にやるものでしょ?勝つとか負けるとか言ってる時点で自分人生の主導権を他人に委ねてる。精神が負けてるよ。 - id:kanagawakama
人格に問題あり。 そもそも食糧のありがたみを感じるのは満腹の人ではなく空腹の人だろう。 金のありがたみがわかるのは金欠の人だろう。 国のありがたみがわかるのは、国を失った人だろう。 - id:osakana110
SNSは人を折れるまで先鋭化させる。大勢からの肯定と大勢からの否定に曝され続けて前者に寄って行かないことは難しいんだろうな。自主的洗脳装置 - id:mame_3
ブコメページ - キクマコ先生「河野大臣が質問を4連続で無視したことを非難した立憲民主党は外交能力がない」 - Togetter
ここ数年考え続けている「SNSは人を壊す」という問題の端的な例だったのかも。情報を発信して承認される繰り返しの中で、書き手はだんだん視野が狭まり、平衡感覚を失い、狂っていく。 - id:muchonov
今のツイッターからは離れた方がいい。自分が本来関わってはいけない話題に軽率に関わり始めて、結果的に精神を磨耗することになる。弱くてちっぽけな人間が世界中の不幸にわざわざ付き合うことはない。 - ブコメ削除
SNSの暗黒面に落ちるな。反応を求めると誰が見込み客で何のために投稿しているかを忘れてしまう。いいね欲しさに道を誤り、反応してくれたのはエロい男のみだったと。見込み客に向けた投稿をしないと。 - ブコメ削除
インターネットでは、自分が他人にとって「何の反応も示す価値のない、特別ではない他人」であることを知るのはかなり初期段階だと思う。「自分が特別でないことを知る」のは全く特別なことではない。 - id:kuzudokuzu
https://togetter.com/li/1731973
if(isEnabled) { return true; } else { return else; }
「isEnabledがtrueかfalseの2つの値だけをとることを信用していない」(お前より型つき静的解析のほうが頭いいんだから無理するなという指摘はまあその通り)
「この関数で返す真偽値はEnabledかどうかという意味ではないのでreturn(isEnabled)と素通しで返すとなんかキモい、あとreturn(!!isEnabled)は老眼にやさしくない」
このへんだろうか
とげったー内にもあったけど、この議論ではEnabledというのがあまりよくなくて、たとえばif(flag)だとしたら喜んでreturn(flag)と書く気がする
まあウェットな感覚ですわ
【問題】 次の文章を読んで筆者の気持ちを100文字以内で述べよ(15点)
北大助手時代に「東京は恐ろしい所だ」と思ったことが一度だけあります。国際会議のロジやっていた時、同時通訳を派遣してもらいました。最初は研究者なんだから通訳くらいできるだろうと思ってたのですが通訳は甘いものではなくまるでうまくいかなかったのです。まして同時通訳など訓練なしには無理。 アカデミアの国際会議でしたから専門用語だらけですが、事前に資料渡しておいたら、それはそれは見事な同時通訳がなされました。通訳者はすべて女性だったのですが、これが皆さん、専業主婦だったのです。東大やICUを卒業した専業主婦です。セレブバイトだったのです。 東大やICUや東外大(ICUや東外大は大学院を駒場で修了してたりする人もいました)出身者が専業主婦やってるのです。ジェンダーの問題は本件ではちょっとおいておきます。とにかく北北海道の辺境出身の私にはあまりにもイカツイ学歴の持ち主が専業主婦やって、セレブバイトしている。衝撃と畏怖でした。 繰り返しますが、ジェンダーの問題は専門外なのでおいておきます。彼女らは比較的余裕で超一流大学に入り、普通に教養を積み、しかしキャリアをガリガリ重ねることには関心がなく、恐ろしく給料の高い旦那のパートナーとして読書し語学を磨き子育てしている。雲の上より私には高かったです。 あり得ないのです。あり得ない世界だったのです私には。研究者としては、彼女らの旦那(が研究者だった場合)を凌ぐことができるかもしれない。しかしあの高学歴と語学力でキャリア志向のない妻を迎えることは想像もできなかった。つまり僕は絶対に勝てない。一体どんな世界なんだと背筋が凍りました。 そもそも白人見たのが、大学に入ってからというのが私です。一月に2〜3日しか太陽の出ない土地でガリ勉して、浪人して北大に入った、それが私です。もう(誰かマシンガン持ってきてくれ、一回ゼロにしないと俺はもうこの世では浮かび上がれない)とまで思いなやみ懊悩しました。
ネトウヨはなぜ大坂なおみを忌み嫌うのか - 読む・考える・書く
"嫌ってるのはネトウヨだけ"なんて誰も言ってないですよね?w
ネトウヨはなぜ大坂なおみを忌み嫌うのか - 読む・考える・書く
このブックマークは合計 Normal Star124 のスターを獲得しています!
aceraceaeさん がスターを付けました。
kokosokoさん がスターを付けました。
lizyさん がスターを付けました。
lont_inさん がスターを付けました。
voodoo5さん がスターを付けました。
a_horuruさん がスターを付けました。
metamixさん がスターを付けました。
oyagee1120さん がスターを付けました。
b_taroさん がスターを付けました。
hocopiさん がスターを付けました。
g2Gさん がスターを付けました。
whkrさん がスターを付けました。
qwertonさん がスターを付けました。
coppercrapさん がスターを付けました。
tomoya_edwさん がスターを付けました。
choliroさん がスターを付けました。
kabochatoriさん がスターを付けました。
WinterMuteさん がスターを付けました。
pulp_literatureさん がスターを付けました。
the_sun_also_risesさん がスターを付けました。
sumika_09さん がスターを付けました。
tomoPさん がスターを付けました。
ar50mamaさん がスターを付けました。
annoyさん がスターを付けました。
heroweenさん がスターを付けました。
sizxさん がスターを付けました。
nazo0526さん がスターを付けました。
satoshieさん がスターを付けました。
satoshieさん がスターを付けました。
satoshieさん がスターを付けました。
satoshieさん がスターを付けました。
satoshieさん がスターを付けました。
junglejungleさん がスターを付けました。
Dursanさん がスターを付けました。
takashi1211さん がスターを付けました。
skycommuさん がスターを付けました。
colonoeさん がスターを付けました。
nippondanjiさん がスターを付けました。
dozさん がスターを付けました。
small_treeさん がスターを付けました。
flatfiveさん がスターを付けました。
lady_jokerさん がスターを付けました。
hobo_kingさん がスターを付けました。
kotobuki_84さん がスターを付けました。
coluliさん がスターを付けました。
norinorisan42さん がスターを付けました。
amane60さん がスターを付けました。
shohei909さん がスターを付けました。
lainofさん がスターを付けました。
h1rotoさん がスターを付けました。
Fukkeyさん がスターを付けました。
chaos_tagさん がスターを付けました。
youcan22さん がスターを付けました。
poissonsolubleさん がスターを付けました。
tyoshikiさん がスターを付けました。
nrelearivさん がスターを付けました。
savorinhoさん がスターを付けました。
nununeさん がスターを付けました。
nearlyinhumanさん がスターを付けました。
Ychengさん がスターを付けました。
ken530000さん がスターを付けました。
bigburnさん がスターを付けました。
riyanorieさん がスターを付けました。
kurato3kuraさん がスターを付けました。
kurato3kuraさん がスターを付けました。
kurato3kuraさん がスターを付けました。
iwwさん がスターを付けました。
vbwmleさん がスターを付けました。
bwmleさん がスターを付けました。
monzi28さん がスターを付けました。
strangerxxxさん がスターを付けました。
dada_loveさん がスターを付けました。
fishmaさん がスターを付けました。
fishmaさん がスターを付けました。
fishmaさん がスターを付けました。
fishmaさん がスターを付けました。
fishmaさん がスターを付けました。
seitoenaさん がスターを付けました。
nakana79さん がスターを付けました。
circmaさん がスターを付けました。
sigwygさん がスターを付けました。
amourkarinさん がスターを付けました。
yukitan_iさん がスターを付けました。
calmazin2さん がスターを付けました。
mkotatsuさん がスターを付けました。
tet8127605さん がスターを付けました。
cLzxy7Aj40d68bNZAさん がスターを付けました。
hachi_pochiさん がスターを付けました。
guldeenさん がスターを付けました。
whirlさん がスターを付けました。
qomp8さん がスターを付けました。
d_sugawaraさん がスターを付けました。
mirutoさん がスターを付けました。
serioさん がスターを付けました。
civic800さん がスターを付けました。
moqojiyさん がスターを付けました。
u_eichiさん がスターを付けました。
eggheadoscarさん がスターを付けました。
warabiさん がスターを付けました。
file = open('helloworld.py', 'r') line = file.readline() while line: print line line = file.readline()
https://github.com/kokorohamoe/OpenProfile/blob/simple/700_sample/python/helloworld.py
入力が7の自乗 つまり49 である場合に1 7である場合に0 それ以外の数字である場合-1を表示するプログラムを作れ
#!/usr/bin/python i = input('#') if i==7*7: print 1 elif i==0: print 0 else: print -1
https://github.com/kokorohamoe/OpenProfile/blob/master/700_sample/python.2/input.py
極簡単には こうなんだけど
じゃぁ なにがいじわるって
文字列がきたら?
いきなり改行コードだったら?
全角で49だったらなどなど
想定外の処理というのが追加になる
しかし、異常な入力をきちんと処理できるか?というパターンは無数にある
これがプログラムの難しさ
do{ }while(flag)
と
while(true){ if(!flag) break; }
なにがちがうのか?
厳密に言うと 後者のほうが2倍遅い
書くのも仕事だし
それじゃぁメンテナンスが大変なのである程度遅くとも人が読みやすく書くのも仕事
腕の違いが出るところ
教えてほしくないことは、こうすれば良い ↑含む という模範解答は現実にはないため
全体の中での調整となるため、
教科書どおりなど無いため
こうすればいいみたいなことは教えないでほしい
というか生徒に変な癖つけて、企業に送り込まないでほしい
file = open('helloworld.py', 'r') lineno = None while lineno != file.tell(): lineno = file.tell() print file.readline()
対して違わないけど数万行だと、すごい違う
file = open('helloworld.py', 'r') line = file.readline() while line: print line line = file.readline()
何が違うか?
前のプログラムは、1行読み込んで、行番号が変わっていなければ
次のプログラムは
読み込みバッファを見て、残りがなければ終了
極簡単な違いだけど
読み込みバッファってなに?
とか、行数が数万行あったらどうするの?
おっきなプログラムだと性能が2倍3倍とかわる
それが、プログラムの怖さ
いじめないでほしいよ
file = open('helloworld.py', 'r') lwhile True line = file.readline() if not line: break print line
https://github.com/kokorohamoe/OpenProfile/blob/master/700_sample/python/helloworld.py
file = open('helloworld.py', 'r') no = None while no != file.tell(): no = file.tell() print file.readline()
これをわかりにくくはなるがPython的にシンプルに書くとこうなる
↓
https://github.com/kokorohamoe/OpenProfile/blob/simple/700_sample/python/helloworld.py
file = open('helloworld.py', 'r') line = file.readline while line: print line line = file.readline()
管理者として記名はするがコードはソングウェアとする(なんか作業中に聞いている音楽のために1曲買って)
tellってのは、行番号取得だから行番号が変わらなくなったら全部表示したから終わる というのが初心者向けコード
Pytonの機能を使って while line 行がある間ループ って書いちゃえるのが差分 ちょっと覚えることは増えるがPythonはファイル操作に便利な機能が入っているよ
初心者向けに話すのがプロ おぼえとけよ じゃない 感じろ シールドを アンプにさせよ それがアバロンの術
with open("helloworld") as f: for line in f: try: x = int(line) if x >= 0: line = "*" except ValueError: pass print(line.strip())
ワイも初心者やが、ファイルの内容表示するだけならこれでいいのではないかな。
with open('helloworld', 'r') as f: print(f.read())