「object」を含む日記 RSS

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

2019-09-13

anond:20190913093755

Object の filed(様々な型による) を展開した List を作りたいってことかな。実装はできるだろうが設計上は感心しない。なぜそんな仕様になるのか。

2019-09-11

[]2019年9月10日火曜日増田

時間記事文字数文字数平均文字数中央値
007511509153.535
01445135116.744.5
02354334123.874
03303632121.159.5
0424196181.748.5
05101261126.143.5
0636297082.538
07517077138.837
0843353982.342
0979730992.540
10107961689.933
111931418573.539
122211679076.036
132081829888.032
1410415113145.353
152311315957.028
161911715589.844
17143733151.327
1810011979119.838
1912417263139.239
20153998265.229
2112814585113.938.5
22102877986.130.5
238712714146.147
1日251923567693.637

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

agents(7), アイスボーン(6), 食品サンプル(7), ふくれる(3), List(5), Cygames(14), 傷病(11), cs(6), Object(3), クッキングパパ(3), ml(6), 休暇(16), 千葉(10), 機械学習(11), 改憲(9), 台風(16), 計画(28), 消さ(17), 今すぐ(8), 偏り(9), 形式的(8), 聞け(30), 膝(9), キャリア(18), 休む(12), ファイル(9), 告発(8), サンプル(7), 削除(17), 妊娠(24), 統計(23), 真実(14), ママ(18), 加害(11), 育児(22), 退職(16), クラス(17)

頻出トラックバック先 ()内の数字は被トラックバック件数

VR乱交に参加した /20190910193053(15), ■中途デザイナーとして入社したCygames退職しました /20190909200427(10), ■改憲なんて成立しないと思うんだけどどうなの? /20190910094131(10), ■インターネットでより確実に、安全告発をする方法 /20190910070638(9), ■千葉南部の状況 /20190910102136(9), (タイトル不明) /20190910101132(8), ■cygam○sの退職告発記事消えた件 /20190909141313(8), ■しょっぱくて音がしない菓子が欲しい /20190909170927(8), ■愛を主語にした歌ってありますか? /20190910112421(7), ■目が覚めたら知らない2019年になっていた /20190910010215(6), ■質問力の付け方 /20190909004654(6), ■席を譲るだけじゃだめなのか /20190910215143(6), ■夫婦漫才離婚したらどうなんの? /20190910150932(5), ■妊娠初期で鬱かもしれない /20190909175726(5), ■婚約指輪って女性差別では? /20190910005936(5), ■SNSTwitter)が下手なオタク孤独に呑まれてやがてしぬ /20190908205727(5), (タイトル不明) /20190910180553(5), ■ /20190910184128(5), ■飲食店で1人分を2人で食べるのってあり? /20190910202802(5), ■ /20190910104439(4), ■anond20190910111540 /20190910111901(4), ■ /20190909222633(4), ■ /20190910112756(4), ■anond20190910113405 /20190910113509(4), ■anond20190910115240 /20190910115458(4), ■オタクポルノ必要とか言ってるが /20190910125951(4), ■セックスの話しよ? /20190910130205(4), ■よく男のちんぽなんて見たくないとか言うやつおるけど /20190910132400(4), ■「加害する傾向がある子供以下略」ってやつを読んでいて /20190910133051(4), ■憲法改正国民投票の何が危険か /20190910134133(4), ■大人になってからどうやって友達できるの? /20190910134734(4), ■息子が発達障害衝動性が高く加害傾向があった /20190910142409(4), ■小泉進次郎って悪のプリンスなの?それともオビワン・ケノービなの? /20190910195530(4), ■ /20190910160005(4), ■ /20190909201430(4), ■すべてちがう /20190910214511(4), ■anond20190910182700 /20190910185202(4), ■お客様の中に /20190910191304(4), ■Archive.isがあるのにわざわざWeb魚拓使う理由 /20190909213319(4), ■Cygamesで働いていました /20190910093029(4), ■ /20190910071031(4), ■anond20190909175726 /20190909234318(4), ■anond20190910103350 /20190910104309(4)

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

6598186(3006)

2019-09-10

anond:20190910104714

List<Object>だったらそのインスタンスは「オブジェクトリスト」だし、List<シンドラー>だったら「シンドラーリスト」ってこと。

そのObjectとかシンドラーとかは急に現れたんだけれど、

元はどこから来ているんだろう?

ただの変数定義と一緒で、これから値が入っていく感じ?

それともclassとかでListに値が入っていく感じ?

classでListに値を入れていくにしても

この書き方だと良く分からない。

anond:20190910104309

List<なんとか>の<>は「ジェネリック」って機能な。

Listってのは名前の通り「(なんらかの)リスト」を表すんだが、その(なんらかの)を指定するのが<>の中ってこと。

List<Object>だったらそのインスタンスは「オブジェクトリスト」だし、List<シンドラー>だったら「シンドラーリスト」ってこと。

増田書き込みから察するにml-agentsだろ、やってること。

ある程度分かるからどんどん質問投げてみそ。答えるで。

anond:20190910103350

それは助かる。

かに聞きたいところが全くかかれてなかった。

AI意思決定を作るのに凄く興味があって

人工知能本とか読み漁ってるんだ。最終的にUnityゲームを作ろうと思ってる。

まず、Listの<>の名称がListではない別のものになっている件。

このRewardやPlanはどこから来ているのか。別の.csファイルクラスとかから来ているのか。

class Plan {

public GoalType goalType; // 実行する目標種別

 public List<Reward> rewardProspects; // 報酬の見込み

}

//実行可能プランリストアップ

List<Plan> plans = EnumerateExectablePlans();

//最も評価の高いプランを算出

float maxValue = 0;

Plan execPlan = null;

foreach( var plan in plans ){

//プラン現在欲求と、プラン報酬に基づいて評価

float value = EvaluatePlan( plan );

  if( value >= maxValue ){

execPlan = plan;

}

}

//一番評価値の高かったプラン目標を設定

実行可能プランリストアップするための関数

List<Plan> EnumerateExectablePlans() {

List<Plan> plans = new List<Plan>();

//記憶登録されているオブジェクトを列挙

  List<Objectobjects = EnumerateMemolizedObjects();

  //オブジェクトに紐づいたプランを、リストに追加

foreach( var object in objects ){

plans.Add( objects.plan );

}

   ・

   ・

   ・

}

上記は謎が多くて分からない。結果をList<Plan>として保存?するみたいなイメージなのか?

List<Plan> plans = new List<Plan>();??

やっぱり初歩的なところから勉強しなおしたほうが良いかもしれない。

List系は苦手だった。

ソース元のサイトは以下

ゲームAI – 基礎編(2) – 『はじめてのエージェントベースアーキテクチャ

http://tech.cygames.co.jp/archives/2364/

2019-05-22

4000Stepを超えるVueコンポーネントを見た

もはやどこまでが methodでどこからがcomputedなのかも判断できなかった。

VuexのModuleも5000Stepを超えていた。管理しているstateの数は100近かった。

もちろんTypeScriptなどという高尚なものを使っているわけもなく。コメントからなんとなくObjectの型を推測してデバッグするしかなかった。

テストなんてあるわけない

chromeデバッグツールけが頼りだ。Vueデバック用の拡張機能は重すぎて動かなかった。

非同期処理のハンドリングも雑だった。

async関数の中で平気でコールバック関数を呼んでたりするし、

awaitがついていないことも多々あった。

アプリ挙動が安定しないのは明らかに雑な非同期処理のせいだったが、コードが巨大すぎて原因を突き止めるには至らなかった。

処理の途中でObjectの型が変わることもしょっちゅうだった。

さすがJavaScriptだ。必要になったら必要になった分だけいくらでもプロパティを追加できる。

でもごめんなさい。追加してくれたのはありがたいけど、僕には今目の前にあるObjectに何が入っているのかもはやわからないんだ。

君が好意で追加してくれたプロパティを、僕は活かすことができない。

このコードにらめっこを始めてから3日間、全く進捗はなかった。

今日やっとなんとなく全体像がつかめてきたところだ。

明日からは、何かしらの進捗が出せるかもしれない。

とりあえずModuleを分割するところから始めようか

いや、その前にテストを書く必要があるのかもしれない。

でもどうやって書けばよいのだろう。正解がわからないんじゃテストの書きようがないじゃないか

週末には、上司に何かしらの報告を入れなければいけない。

どう説明すればよいだろう。いっそさじを投げてしまおうか

「あまりにも難解すぎて私には無理です」

と。

でもたった3日で諦めてしまってよいのだろうか?

しかしたら、これはものすごい成長のチャンスなのかもしれない

僕が世間知らずなだけで、世の中にはこんなコードがいっぱいあって、みんなこの試練をくぐり抜けて一人前になっているのかもしれない。

たかだか4Kステップときでガタガタ言うなと言われてしまうかもしれない。

この程度でさじを投げていたら、なんの仕事もできないのかも・・・

とりあえず今日疲れた。もう寝てしまおう。

明日になったらなにかいアイデアが出てくるかもしれないし

しかしたら親切な増田たちが、あっと驚く素敵な解決方法を見つけてくれるかもしれない。



明日自分に幸あれ

2019/5/22 記

2019-05-06

論文読んだ

Automatic classification of trees using a UAV onboard camera and deep learning

https://arxiv.org/abs/1804.10390

やったこ

Ecologyの研究には、情報科学世界研究されている画像解析の技術を使えば解決可能ものがある。著者らは、この一つである植物分布の計測を試みている。具体的な解決方法は、UAVデータから撮影した画像データを元に、木々の種類を識別する分類器を作成である。手順として、最初に、UAVから画像と高度データを著者自らが撮影を行った。次にそのデータから学習用の教師データをいくつかの手順を踏んで作成する。この手順は、さらなる研究を行う際にも適用可能である。結果、識別器は良い識別性能をだしている(Model1で83.1%)。前処理として、画像を切り分けて分類器にかけなければならないという点は未解決である

しつもん

Introduction
Methods
  • UAV photography (orthomosaic photo)この2つは別の物のはずなので、同じように書くべきではないのでは?
  • 2.3.3. Each Tree Image Extraction with Ground Truth Label
  • 2.4. Deep Learning
    • 抜き出した木以外の領域は何で塗りつぶしたのか?単色?
    • 塗りつぶした色によって学習結果が変わるはず。
    • なぜ、これだけ良いデータ収集して識別タスクを行ったのか?segmentation のタスクを行うべきだ(SegNetなどの利用をしない理由は?)
    • GoogleLeNetのrandom seed がNoneになっているのは、どういう意味
  • Results
    • 1段落目は、具体的なデータを語らずに良い結果が得られたと言ってますが、なんのデータ
    • さらに、Resultsで突然データを増やしたと書かれているけど、どうやって増やしたのか?なぜ記述がないのか?
    • Ise 2018への引用はついていないが、Referenceには記述してあるのは、なぜですか?
    • model2がどのように作成されたのかがわかりません。
    • 木以外の領域を塗りつぶして、画像データ作成するため、切り分けの仕方(木の伸び形状)によって学習が進んでいる可能性がある。
      • 木の領域を単色で塗りつぶして識別器にかけると、正しく認識されてしまうのでは?
      • 木の領域の長軸と短軸の特徴で分類かのうなのでは?

2019-05-03

トマス・ピンチョン小説の『V.』の翻訳がひどい気がする

新潮社トマス・ピンチョン小説の『V.』を読み返していたら、ちょっと気になる箇所があって、これは原文ではどうなってんだろうと、図書館原書を借りてきてみました。そしたら、あれ、もしかしてこれ、この翻訳ひどい?

というわけで、原文と翻訳を照らし合わせたうちで、これはいくらなんでもという箇所を以下で検証していきます

第六章のⅡの最初の方にある段落です。

この段落ニューヨーク下水道に巣食うワニを狩るパトロール隊として雇われているプロフェインという男が第五章で書かれたワニ狩りのことを回想しているというところです。訳文とそれに対応する原文を引用していきます。訳文の引用は『V.』上巻の217,218から

 フェアリング神父教区を抜けてイースト・リヴァー近くまで、独りで追っていったワニのことを、プロフェインは振り返ってみた。

He thought back to the one he'd chased solo almost to the East River, through Fairing's Parish.

「抜けて」とありますが、第五章を読めばわかるようにプロフェインは教区を抜けていません。ここのthroughは「~の間を通って」の意でしょう。

ちなみにフェアリング神父下水道ネズミキリスト教布教しようとしていた人物です。

そいつは、みずから歩をゆるめて追いつかせ、自分から求めるように撃たれていった。なにか取り決めでもあったのか。プロフェインが酔っぱらってか欲情してか、頭がポワンとしていたとき、ワニの足跡だらけの泥の上で、契約を交わしたのか?

It had lagged, let him catch up. Had been looking for it. It occurred to him that somewhere--when he was drunk, too horny to think straight, tired--he'd signed a contract above the paw-prints of what were now alligator ghosts.

「なにか取り決めでもあったのか」という訳文に対応する箇所がない。

これに対応するらしき原文はこのあと出てくるのですが、なぜここに置かれているのかわかりません。それ以外にも問題がありますが、それは後述。

It occurred to him thatが訳されていない。

tiredが訳されてない。

of what were now alligator ghostsが訳されていない。

この段落ではこのalligator ghostsなるものがどういう存在なのか、このあと縷々綴られていくので、これを落としてしまうのはちょっと。ここは訳すなら「今や幽霊であるワニたちが、かつてそうであった存在の」となるのでしょうか。あまり自信はないですが。

プロフェインはワニに死を与える、ワニは彼に職を与える、それでイーヴン、恨みっこなしと。

Almost as if there had been this agreement, a covenant, Profane giving death, the alligators giving him employment: tit for tat.

Almost as if there had been this agreement, a covenantが訳されていない。

上に出てきた「なにか取り決めでもあったのか」が訳文なのかもしれないけど、this agreement, a covenantとわざわざ言い直して二回言っているのを「取り決め」の一語にまとめるのはどうなんですか。しかもcovenantなんて「(神との)聖約」という強い意味の語なのに。そんな語がワニ相手に使われているというのがこの文のミソだと思うのですが。うーん。

プロフェインにワニは必要だが、ワニはなぜプロフェインが必要だったのか。その原始的な脳の回路に、記憶理解が生じていたのか。子供のころ自分たちはただの消費財で、財布やハンドバッグになった両親や親戚のおじさん、おばさんたちと一緒に、世界中デパートで、あらゆるガラクタと一緒に陳列されていたことを覚えていたのか。

He needed them and if they needed him at all it was because in some prehistoric circuit of the alligator brain they knew that as babies they'd been only another consumer-object, along with the wallets and pocketbooks of what might have been parents or kin, and all the junk of the world's Macy's.

息の長い原文を切って日本語として不自然じゃないようにしているのでしょうが、かえって意味のつながりが見えにくくなっているような。

it was becauseが訳されてない。

おかげで分かりづらい。これでは「必要だったのか」「生じていたのか」「覚えていたのか」と三つの疑問文がただ並列されているように見える。せめて「生じていたのか」「覚えていたのか」を「生じていたからなのか」「覚えていたからなのか」にした方が良いのでは。

the world's Macy'sを「世界中デパート」としているのは明らかに誤訳です。メイシーズ基本的アメリカしか展開していないようですし、なによりもこの挿話の元になった都市伝説ニューヨークのメイシーズで、ペット用に売られた赤ちゃんワニがトイレに流されて下水道で成長していたというものだったわけです。なのでthe world'sはここでは「ここらの界隈の」みたいな意味ではないでしょうか。

あと英語仮定法を日本語疑問文で訳すというのは翻訳テクニックとしてアリなのでしょうか。いや、アリならアリで全然いいんですけど。ただの素人なのでよくわかりません。

トイレを通って、地下の世界に流れてきたのは緊張の中の束の間の平和に――いずれは子供の、見かけだけ動きのあるオモチャに戻っていくしかない、それまでの借り物の時間に――すぎなかったのだろうか?

引用者注・「動きのある」のところにルビで「アニメート」)

And the soul's passage down the toilet and into the underworld was only a temporary peace-in-tension, borrowed time till they would have to return to being falsely animated kids' toys.

the soul's passageが訳されていない。

トイレジャバーっと流されて下水道に流れ着くという事態を「魂の道行き」なんて大げさな言い方をしているのが、面白いところなのになんで訳されていないのか。あとダッシュをいれて「――いずれは子供の(中略)借り物の時間に――」と挿入するくらいなら原文の語順通りに訳したほうがわかりやすいように思えます

もちろん自分から望んでのことではない。望みは、もとの自分たちの暮らしにある。それを叶える完璧な形は死ぬことだ。死んで、ネズミ職人の歯によってロココ様式の死骸になることしかない。そしてそのまま、教区の聖なる水に浸食され、あの日、あのワニの墓場を明るく満たした光のような燐光を発する、アンティークな骨細工になっていくしかない。

Of course they wouldn't like it. Would want to go back to what they'd been; and the most perfect shape of that was dead--what else?--to be gnawed into exquisite rococo by rat-artisans, eroded to an antique bone-finish by the holy water of the Parish, tinted to phosphorescence by whatever had made that one alligator's sepulchre so bright that night.

to go back to what they'd beenが「もとの自分たちの暮らしにある」でいいんでしょうか。このあとに続く文に則して意味をとるなら「暮らし」では変では? それに原文はto go backなのに「帰る」という意味が訳文から感じとれないです。

さて、ここから先が問題です。ここは第六章の中で非常に重要段落の中でも、さら重要な一文だと思うのですが、まともに訳されていなくて頭をかかえました。

まず、ダッシュで囲まれたwhat else?が訳されていない。

しかない」という形で間接的に訳されていると言えるかもしれませんが、それでもこれを落とす理由にはなりません。

exquisiteが訳されていない。

tinted toが訳されていない。

by whatever以後の節を「燐光」にかけて訳していますが、これは英文解釈的に無理なのではないでしょうか。また、そのせいなのか原文の語順がぐちゃぐちゃにされてしまっています。なぜeroded to an antique bone-finishとひとまとまりなっているのを千切って「浸食され」と「アンティークな骨細工」をかけ離れたところに置いているのでしょうか。

原文を素直に読めば、ワニは死後、gnawed-齧られてrococo-ロココ彫刻になって、そのロココ彫刻がeroded-浸食されてan antique bone-finish-骨仕上げのアンティークになり(bone-finishというのは妙な言い方ですが、matte finish-つや消し仕上げをもじったような表現だととりました)、そのアンティークがtinted-染められてphosphorescence-燐光になると読めます

まりワニの死後、時間の経過によってワニがどのように変貌していくかの推移を追うことができるように読めるわけです。しか翻訳ではそのように読むことはほぼ不可能です。

さらにこの段落の一番最後に来るのは原文ではwhatever had made that one alligator's sepulchre so bright that nightなわけで、ここに意味上の大きな負荷がかかっていると思えるのですが翻訳では「燐光」の前に置かれて目立ちません。

これでは、4コママンガコマの順序を入れ替えてしまったために、オチ意味がわからなくなっているようなものです。

ここのところをわたしなりに試しに訳してみたので、ここに置いておきます

そして、その望みの最も完璧な形とは死ぬこと――他に何があろう?――であって、そうして工匠ネズミに齧られて精妙なるロココ彫刻とされ、教区の聖なる水に浸食されて骨仕上げのアンティークになり、何ものかに染められて澄んだ緑色燐光と化すのであり、そしてその何ものかこそ、あの晩、あのワニの地下埋葬所をあんなにも輝かしく光らせていたのだ。

(phosphorescenceという単語を見ていたら、どうしても『宝石の国』のフォスフォフィライトの顔がチラついてしまったので「澄んだ緑色燐光」としてしまいました)

とにかく第六章にはここ以外にも訳されていない語、節、文がたくさん出てきます。他にも誤訳誤訳とは言いにくいけどおかしい訳もままあります誤訳ではなくてもあまり使われない珍しい単語が使われていたり、凝った表現がされていたりするところが、平易な分かりやすい、いいかえれば、ありきたりでつまらない日本語になっていたりします。

いったいなんでこんなことになっているのでしょうか。ピンチョンが好きでこの『V.』も何度も繰り返し読んできたというのに、今まで読んできたものは何だったのかという気分で、ショックが大きいです。

訳者の一人、佐藤氏は何十年もピンチョン研究翻訳をされてきた人で、こんな訳をするとは思えないのですが。それとも、このころ『重力の虹』の翻訳に集中していて実は『V.』にはあまり関わっていなかったとか? しかしもうひとりの小山氏もイギリス大学院留学して英語著作もある人だそうですし。学生に下訳させて、ろくに直さずに出版したとか? まさか

ただ原文を横において検討したのは第六章だけなので他の章はちゃんとしている可能性はありますわたし英語力では全文チェックするなんてとうてい無理なので、誰か英語を読むのが苦ではなくて、現代アメリカ文学に詳しい人に『V.』全編の翻訳をチェックしてみてほしいです。

2018-10-05

anond:20181005103620

からこれだろ?

https://lwn.net/Articles/249460/

ここで「c++はクソ効率悪いコード吐くし、c++高速化しよう思ったらそれはCのコードと同じになる」なんて言ってない。

inefficient abstracted programming models where two years down the road

you notice that some abstraction wasn't very efficient, but now all

your code depends on all the nice object models around it, and you

cannot fix it without rewriting your app.

この文章で、非効率(inefficient)って言ってるのは、「abstracted programming models」「the nice object models」であって「c++はクソ効率悪いコード吐く」なんて話じゃない

実行ファイルの速度の話じゃなく、プログラムソースコードの話をしてるんだよ

2018-08-04

コミュニケーション能力()とは

具体的になんだろと思ってきたが、どうも下記のことを指しているのではないかと気づいた。

  • どんな形式のinputでも入力可能。それに対して不満を言わない。たとえinputがなかったとしても。
  • どんな形式のoutputでも出力可能。それに対して不満を言わない。たとえoutputの形式指定がなかったとしても。
  • それに必要ものはすべて自主的に入手すべし。

Object型の可変長の引数を受け取り、相手が求めている型(それがどんなものかは不明)で返却する関数を作ってください、それに必要リソース自分で確保してなと言われてるようなものでこれは不可能なのでは?と思ってる。

Nullpoは甘え。

2018-06-30

anond:20180630130834

>実力がないけど勝たなきゃないんだから、勝つためならルール内でなら何をしてもいい、という考え方はよくないよ。

完璧ルール作りが至難であるのだからルールには書かれてなくてもモラルでもって禁ずるべきことはあるし、

>それによって負けてしまうのであれば、それはまだ勝つべ存在ではなかったということで敗退を受け入れるべき。

うん、そういう思想信条主義主張があってもいいと思う。

>そして地道に力をつけて、堂々と勝てるようになった時に勝てばいい。

例えば1992年の星陵高校松井秀喜の5打席連続敬遠についてはどう思う? 当時の明徳義塾高校の馬淵監督は「当時の星陵には一人、松井と言うプロが混じっていた」と回想している。素人高校生が、事実上プロ松井にどうやって勝てばいいわけ

>勝ち進むことが最優先目的であり最上価値だと考える人間は「ルール内なら何をやっても、結果を出せばいい、結果が全て」とか言う人もいるけど、その価値観はよくない。

FIFA大会行動規範には「勝つためにプレーする」という文言がありますけど?

1.Play to Win

Winning is the object of playing any game. Never set out to lose. If you do not play to win, you are cheating your opponents, deceiving those who are watching, and also fooling yourself. Never give up against stronger opponents but never relent against weaker ones. It is an insult to any opponent to play at less than full strength. Play to win, until the final whistle.

卑劣な振る舞いをしたことで、一般人サッカーという競技に興味を失ったり、子供失望したり、世界から日本への信用(実力の有無への信用ではなく、誠実さへの信用)を失ったりして、それでもなお決勝トーナメント進出には無上の価値があるなんていうのは間違ってる。

卑劣かどうかは、主観によるよね。前述の松井五打席連続敬遠について言えば、当時は高知県民は比較好意的に受け止めていた。

>別の言い方をすれば、大会内の順位ではなく、競技日本サッカー界へのイメージへの影響なども含めてが結果なのであって、「結果が全て」ならそういうことも含めて考えるべきだ。

大会実績だけが結果じゃない、全てが結果なんだ。

そんなことを言い出したら、ハリル前監督西野監督の「ベスト8を目指す」という目標設定自体おかしい、という話になてくる。

2018-06-29

from typing import Sequence


class ReverseSequence(object):
    def __init__(self, sequence: Sequence):
        self.sequence = sequence  # reference to container
        self.index = len(sequence)  # current index

    # Step 1. define __iter__ method whitch returns self.
    def __iter__(self):
        return self

    # Step 2. define __next__ method
    #             rasing StopIteration at the end of iteration.
    def __next__(self):
        if self.index > 0:
            self.index = self.index - 1  # next index
            return self.sequence[self.index]
        else:
            raise StopIteration


class ReverseSequenceGenerator(object):
    def __init__(self, sequence: Sequence):
        self.sequence = sequence
        self.index = len(sequence)

    def __iter__(self):
        while self.index > 0:
            self.index = self.index - 1
            yield self.sequence[self.index]
        raise StopIteration


assert list.__eq__(
    [element for element in ReverseSequence('spam')],
    [element for element in ReverseSequenceGenerator('spam')]
)

class Reverse:
    def __init__(self, data):
        self.data = data
        self.index = len(data)

    def __iter__(self):
        return self

    def __next__(self):
        if self.index == 0:
            raise StopIteration
        self.index = self.index - 1
        return self.data[self.index]


class ReverseGenerator:
    def __init__(self, data):
        self.data = data
        self.index = len(data)

    def __iter__(self):
        while True:
            if self.index == 0:
                raise StopIteration
            self.index = self.index - 1
            yield self.data[self.index]


assert [s for s in Reverse('spam')] == [s for s in ReverseGenerator('spam')]

2017-07-29

今日替え歌

思いついてしまったものは仕方ない。

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="320" height="205" id="flvplayer" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="http://g.hatena.ne.jp/tools/flvplayer.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <param name="FlashVars" value="moviePath=https://www.youtube.com/watch?v=Ew4F9RB9e7I" /> <embed src="http://g.hatena.ne.jp/tools/flvplayer.swf" FlashVars="moviePath=https://www.youtube.com/watch?v=Ew4F9RB9e7I" quality="high" bgcolor="#ffffff" width="320" height="205" name="flvplayer" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object>

ちんちんプラプラソーセージ

お前の相手はどこにいる?

ナニ出せ汁出せ子ども出せorz

2017-03-28

[][]Blender眉毛を髪の毛で透過させる手順の分析メモ

@tomo_さんの

https://twitter.com/tomo_/status/835476208242442241

この「Blenderけものフレンズみたいに眉毛を髪の毛で透過させる手順」を自分なりに分析して書き起こしてみた。

「眉の透過」(概要:透過させたいものを専用のレンダレイヤーに出力し、コンポジットMix

・眉と顔面(複製)を選択し別レイヤーに移動

・properties > Render Layers > レンダレイヤー新規追加

・新しいレンダレイヤーを眉だけ描画するように設定

ノードエディタコンポジットで2つのレンダレイヤーMix

さらに髪だけを透過させる」(概要:透過させたいobjにpass indexを設定しコンポジットid maskを使いmix係数に反映)

・髪を選択しproperties > Object > Relations > Pass Index に固有のid指定(2など)

・基本のレンダレイヤーのpass設定でObject Index有効にする( properties > Render Layers )

ノードエディタid maskを追加し、入力側に基本レンダレイヤーindexOBを接続し、Alpha出力をMixのFacに接続。髪のid指定

2017-02-09

原始時代を生きる弊社を見よ

http://anond.hatelabo.jp/20170209075944

Rails/PHP7で開発してる

PHP5.3。フレームワークすら導入していない。

Macとサブディスプレイ支給されてる

Win10シングルディスプレイデザイナーはPSDデータとかで容量を圧迫するに決まってるのに、低容量のSSD使用している。逆にプログラマーはそんなに容量使わないのに大容量のHDD使用している。頭悪い。

Vagrantとかで環境構築してる

VirtualBoxで全部手動ですが何か。ドキュメントもないので全員環境がバラバラですが何か。

自動デプロイしてる

huh...?

gitバージョン管理してる

サ ブ バ ー ジ ョ ン

チケット管理してる

口約束なら...

テスト書いてる/自動化してる

テスト工程を削ってる。受入テストすらも。テストせずにぶっつけ本番リリース。画面みたら即わかるnon objectエラーでさえも気にしない。言われるまで直さな

コードレビューしてる

みんな忙しいバリア貼ってるので...

チャットツールコミュニケーション取ってる

弊社のトレンドメールである

Excel方眼紙使ってない

wordやで。

アジャイル開発だ

ウォーターフォールすら理解してない。とりあえず空いてる人全員ぶっこんどけの人海戦術

裁量労働制

実質的な定時は22時やで

ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ

2016-09-30

JavaScript配列初期化の話

JavaScriptで、配列を各要素がユニーク新規オブジェクトになるよう初期化したい。

Ruby

ary = Array.new(8) { Hash.new }

みたいなことをしたいのだけど、うまい書き方がわからない。

単純な実装としては

const ary = [];
for(let i; i < 8; i++){
  ary[i] = {};
}

みたいな感じだけれどもこれはなんとも微妙であるワンライナーで書きたい。

ちょっとかっこつけると

const ary = Array.call(null, ...Array(8)).map(() => { return {}; } );

とか

const ary = [...Array(8)].map(() => new Object() );

とかできなくもないけど、これらもどうにも不格好である

何かもっとシンプルクレバースマートなやり方はないものであろうか。

const ary = Array(3).map(()=> new Object());

とかできたらよかったのだけれども、残念ながら空要素はスキップされるらしく、これでは空配列が返ってくるから

一旦展開させてundefinedで埋めた配列を生成してからmapしなければいけないらしい。最終的に得たい配列が1つなのに、その前に別の配列を2つも生成するのが気持ち悪い。

2016-09-13

現在どのネットワークにも接続していません

ネットにはつながるのに

現在どのネットワークにも接続していません 」

となるとき

http://geekostyle.blogspot.jp/2016/02/4-ways-to-fix-network-icon-shows-not.html

Open registry editor

Right Click on Network List by navigating HKey_Local_Machine\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList

Select Permission

Select Advance

The tick the box "replace all child object permissions with inheritable permissions from this object"

Then click enable inheritance.

reboot

2016-07-25

gitにおけるコミットログ/メッセージ例文集100

私はコミットログの書き方に悩む英語の苦手な人間である。実際、似たような人は世の中に結構いるようで、頻出単語を集計したりまとめたものは既にあって役に立つのだけれど、これらはあくま単語の話であり、具体的な文を構成する過程でやっぱり困る部分がかなりあった。

要するに、どういう時にどういう文が使われているのか、ということを示した例文集が欲しいのであるググると他にも「例文集があればいいのに」みたいな声はあるくせして、しかし誰も作ろうとしない。何なんだお前ら。それじゃ私が楽できないじゃないか

仕方なく自分でまとめたので、増田に垂れ流しておく。

はじめに

ここで挙げているコミットログは全て実際のコミットログから転載である。当然ながら各コミットログ著作権はそれぞれの書き手にある。いずれも各英文でググれば出てくるし、フェアユース範囲なら許してくれるだろうと考え名前プロジェクト名は割愛したが、ここにお詫びと感謝を述べておきたい。

抽出条件だが、参考にできそうなコミットログを多く含んでいそうなリポジトリGitHubSTARの多い方からざっと目で見て適当に選び、それぞれ最新コミットから5000件抽出した(あわせて前処理として、コミットログ冒頭のタグ情報は消去した)。

結果として対象としたリポジトリは以下の通り。

atomのみ5400件抽出していたため、計25400件のコミットログベースである。このうち、以下の条件に合致するものは参考例にすべきでないとして一律排除した。

こうして残った8540件を眺めながら、適当に切り出したのがこの用例集である個人的に「うーんこの」と思った表現も、散見される場合は載せた。

ということで、以下用例を羅列していく。

用例集

オプションフラグメニューを追加した
ファイルを追加した
メソッド機能を追加した
実装を別のものへ切り替えた
  • Use args.resourcePath instead of args.devResourcePath
  • Use arrays instead of while loops
  • Use auto instead of repeating explicit class names
  • Use weak pointer instead of manual bookkeeping
  • Change all uses of 'CInt' to 'Int32' in the SDK overlay
  • Change Integer#year to return a Fixnum instead of a Float to improve consistency
新しく何かに対応した/機能上の制約を取り払った
何かを使うようにした
より好ましい実装に改良した
何かを出来ない/しないようにした
  • Don't bail reading a metadata instance if swift_isaMask isn't available
  • Don't exit until the parent asks for an instance
  • Don't include Parent pointer in Nominal/BoundGeneric TypeRef uniquing
  • Don't use MatchesExtension for matching filters
  • Don't use ES6 class for AutoUpdater windows class
  • Don't use MatchesExtension for matching filters
  • Avoid `distinct` if a subquery has already materialized
  • Avoid infinite recursion when bad values are passed to tz aware fields
オブジェクトの内容や挙動確認やすくした
Assertを追加した
不要コードを除去した
コードを移動した
名前修正した
さなバグタイポ修正した, 警告を潰した
バグや好ましくない挙動修正した
テストコメントドキュメントを追加した
テストを削除した
テストコメント修正した
ドキュメント修正した

表現傾向とまとめ

以上の用例をふまえ、今回の参考ログ8540件から先頭の単語を出現回数で並べると次のようになった。

Add1149
Fix1014
Update584
Remove566
Use382
Don't260
Make228
Move178
Change103
Rename85
Improve76
Avoid68
Allow65
Implement60
Handle58

コミットログの基本形はもちろん動詞 + 名詞である名詞固有名詞複数形、不可算名詞が多いが、単数形場合冠詞は a が使われるか、あるいは省略される。the はまず使われない。

何かを追加した、という表現では非常に広く Add が使われる。メソッドからテストドキュメントに至るまで大概これでまかなえる。

一方、何かを修正した、という表現では広く Fix が使われる。「何か」は typocrash といった単語からメソッド名まで幅広い名詞を取るが、動名詞はあまり取らないのと、that節は取らないのでその点は注意が必要である

Fix は「何かが正しく動くようにした」ことを示し、正しい動作内容が何かを説明しない。そこで正しい動作内容に言及したい場合Make sure が使われる(こちらはthat節が取れる)。ただし Fix よりもニュアンス的に重い表現と思われ、Fix を使わず Make sure ばかり使うのはちょっとキモいのではないかと思う(Ensure はさらに重い表現っぽい)。

また、Fixtypo 以外でのドキュメント修正に対して使われることは稀である。対して Update はドキュメントコメントテストに使われ、本体コード修正に対しては使われない。本体コード修正にあわせてテスト更新したなら Update が使われる。ただ、テスト機構それ自体バグ修正したなら Fix である

無駄な何かを単純に除去したなら Remove を使う。これまでのもの(A)からのもの(B)に切り替えたのであれば Use B instead of A か Change A to B が使われる。新たに何かを利用するようにしたのであれば Use を、利用を取りやめた場合Don't use を使うことが多い。

何かをしないようにしたなら Don't を、内部実装効率化なら Make A + 比較級/形容詞Improve が使われる。

中身の変更を伴わない単なる名前の変更なら Rename A to B、コード機能論理上の場所を移動させたなら Move A to B である

この辺はリファクタリングと呼ばれる行為と思うが、Refactor というぼんやりした動詞はあまり使われず、このように変更内容の種類に応じて動詞が使い分けられている。

余談

コミットログにはWhyを書くべきだ、というのを何かで見かけたので because とか since を使ったログがどの程度あるかを調べたが、8540件のうち22件だった。基本的に短く、シンプルに、一目で意味が取れるログが好まれる傾向がある。例えば get rid of とか2件しか使われておらず、圧倒的に remove である

一方で、シンプル単語だけど開始単語としては使われないものもある。例えば次のような単語である。Expand(9)、Extend(8)、Print(5)、Optimize(5)、Publish(4)、Append(4)、Modify(3)、Manage(2)、Revise(2)、Dump(2)、Insert(2)、Migrate(2)、Enhance(1)、Edit(1) 。いずれもカッコ内は8540件に対する冒頭での登場回数である。結局、より一般的平易な単語で表せたり、Refactor同様に抽象度が高すぎると使われないのだろう。

おわりに

8000件もログを見たおかげで、迷いなくコミットメッセージが思いつくようになったのが個人的には今回書いてて最大の収穫だった。たぶんカンニングペーパーを作る行為それ自体効率のいい学習になるという話と同じだと思う。

このまとめも100以上用例を転載してあるので、それを読むだけでも多少は効果があるんじゃないかと思う。同じようにコミットログ書きたくねぇなぁ英語わっかんねぇなぁと思っている人にとって、何か役に立つところがあれば幸いである。

2016-05-29

富士通退職した話」に言及とついでに自分の話でも。

自分も前に富士通に居て既に退職してます。後で詳しく書くけど、ソフトウェア開発職に居たです。

富士通を退職した話

彼のへの感想

富士通はクソでっかい会社なんだし、サイト見ればメインフレームやってるのだって判るんだから、開発職を希望したらメインフレーム関連の開発やる可能性あるのは当然予見出来るだろうし、それを想像してなかったのなら情弱とかブコメで言われてしまうよね。あと何も記述が無いか想像だけど、「それほど有能ではない」と判断された可能性もある。と言っても学生が思う「開発者として有能かどうか」ってのと会社でのそれってのは別物で、要するに学生自身自分が実績もあって優秀だと思っても、会社的にはそうでないのよね。そうなると(後述の富士通入社して10年が経った人の話にもあるのだけど)新人能力客観的判断材料って大学資格応用情報レベル以上)程度なのよね。資格に関しても基本情報なんてMARCHクラス以上の人間なら受けたら取れて当然だから、「有能かどうか」の判断材料にならない。就活の際に本気でIT業界に入りたいかどうかの判断材料にはなる程度。自分の同世代富士通本体に入ってソフトウェア開発関連に配属された人のプロフィールを見たけど、確か偏差値的には少なくとも神戸大学とか千葉大学あたりの修士しか居なかった覚えがある。あと確か2~3人がソフ開持ってた気がする。だから、この増田がどの程度だったのかなと。

ただ、20人月案件が具体的に何かは判らないのだけど、自分の在籍していた当時でも炎上巨大案件というのはあって、(自分が知ってるのは確かデジタルテレビがどうのこうのとか言ってた)、そういうのに入社して間もなく入ってしまうと自身勉強等が出来なかったり潰されたり最悪死んだりするんで、そういう意味でも逃げるのは正解の一つ。(自分炎上案件に放り込まれ新人が寮で死んでたとか話を聞いたことある

上司対応はまあこれだけ見ればクソだわな。

富士通を退職して思うこと

はあ、としか。この人がこう判断した際の判断材料にするであろう自己体験を具体的に書いてないので、意識高い系がフカしてるようにしか見えない。あと、たった3年しか居なくてあの巨大企業経営とか体制とか理解出来るんかね?と思わないでもない。自分とは部署が違うだろうから当然かもしれないけど、自分体験とは違うなーって感じ。自分は、外から見たら馬鹿みたいな事やってるように見えるかもしれないけど、経緯や目的巨大企業特有問題があってそうなってるんだなって思う事が多々あった。

富士通に入社して10年が経った - blog

近い時期に入社したと思われる。具体的な話が自分経験と一致してる。特に富士通ソフトウェア開発と言えばミドルウェアの開発が主だというのは、富士通内部じゃないとなかなか(特に学生なんかじゃ)判らないかなと。

それでこれらの話を見てどんな人が富士通(というか大企業)に向くのかなと考えたんだけど、「やりたいこと」そこまで明確じゃないけどコンピュータは嫌いじゃないって感じで、地頭がまあまあ良くて勉強に関しても要領よくやれる(要するにそこそこの大学に行って卒業した人)、それでそこそこ安定した職・収入目当てな人かなと。ってコレ書いててふわふわしてる人みたいであまり良い印象の人物像じゃないな。マッチングミスはどうしても起きると思うし、学生の頃に思う「やりたい事」って往々にして変わったり間違いだったりするし、そもそも学生の頃に明確な「やりたい事」がある人の方が少数派でしょ。だからこういうそこそこ優秀だけどふわふわしてる人の方が良いんじゃないかなとか。逆に、ちゃんと「やりたい事」が明確にあるけどまあ安定はしたいって人はどうしたらいいのかって言うと、自分みたく大企業の子会社を狙うと良いんじゃないかなと。子会社ならその会社がやってる事が理解やすいし、入った後の配属の希望も大きく違ったものにはなりにくいし。まあ子会社子会社で色々アルかもしれないけど。

で、自分入社から退社までの話。

入社10年ぐらい前。入ったのは富士通の子会社で主にミドルウェアの開発をやっている所でした。入社して1~2年したら子会社の統廃合とのことで富士通本体連携してる部署自分がそうだった)は富士通本体になりますとのことで富士通本体の方に移ったという経緯ですね。別に待遇とか元々本体と同じだったから変わらず、事務関連が小回りきかなくなったぐらい。入社してから退職までは5年ぐらいでした。辞めた理由実家事業を継ぐ事にしたため。

入社して数ヶ月の時にある温泉地にある某所でその手の開発をやってる子会社沢山と

富士通本体ソフト開発配属の人達研修をやったのだけど、その際に富士通本体人達と知り合った。(この際に全員のプロフィール冊子が配られた)そのときは流石子会社に入る人達本体とじゃレベルが違うな~と思いましたね。(ちなみに自分MARCHより下の院卒。)

自分が配属されたのは某製品部署API部分チーム。その製品C言語Java言語からも使えるように出入り口を用意する部分。中でやってる事は指定されたIPポートプロトコルに沿ってデータ投げるだけなんだけどね。ちなみに配属希望の際は「そこそこの忙しさの所がイイ」と言っていました。「バリバリに働きたい」と言ってた同期は多忙ヤバい所に配属されてました。他にもチームがいくつかあったけど、それらのうちの一つは例の「山奥の工場」でしたね。自分が配属された当時はC言語APIリニューアルするって開発してたのだけど、設計担当Javaしかやったことない人で色々とC言語流儀に反してて後々のメンテが大変でした。まあそれでもリニューアル前よりは遙かに良くて、以前はユーザに見せてる関数名が ○○search1 ○○search2 ○○search3 とかでしたね(ちなみに機能はそれサーチか?思うのもあった)。もっと酷かったのが初期製品Javaの公開メソッドで、マニュアルには「このメソッド引数○○を□□を指定した場合戻り値Objectを△△にキャストしてください。××を指定場合は…」という「これ製品にして売ってたんだ…」と思うレベル。もちろんコレがダメだったってのは開発側も認識していて当時は既にリニューアル済みだったけど。リニューアル済みでも少し微妙だったけどね。

これは、ミドルウェアの開発をやってる人達って基本的C言語が主でJavaとかをやってる人がほぼ居なかったからだと思う。上司もそういうのは良くないってのは認識してた。対象OSWindowsLinuxSolarisだったけど、そんなにたいした事やってなかったからほぼ同じコードだったような。ソケットの一部だけ違ってたっけかな。

それでそのバージョンの開発が終わったあたりで、.NET Frameworkが出始めてきたので次バージョンでは.NET FrameworkAPIを作る事になりまして、自分が少し勉強していたのでそれの設計から担当する事に。当時は.NET Framework 1.1で今思えば少し時期が早かったと思う。2.0Genericが出てからやった方が良かったと思うんだけど、そういうの政治的判断だし結果論だしなー。それまでにRubyとかオブジェクト指向言語に触れてその辺の勉強もしていたので、.NET用のAPIに関しては設計実装結構良い感じに出来たと思う。ああ、そういえばRuby用のAPI効率化の開発ツールとかの名目仕事中に勝手に作ってたなあ。他にもC言語APIも内部実装がクソすぎ!とキレてユーザ公開関数インターフェースだけ同じで中身をフルスクラッチした事も。もちろん絶対LDしてるんで完全に趣味なんだけどな。これでAPIC言語Java.NETになった訳だけど、現場案件で使われたのってほぼ全てJavaだったと思う。(開発中のサーバテストアプリC言語だけど)。要するに自分が数年関わったコードが世の中ではほぼ使われてない訳でして、取りそろえとして必要だったとはいえ世の中の役に立ってないってのは嬉しくは無かったですね。まあ、大企業仕事なんてそういうもんです。.NETに関してはそのバージョンが出る頃はその製品があまり売れてなかったんだか使われたって話は聞かなかったですね。ほほほ。大企業に勤めるのならこういう覚悟必要かもね。

で、.NETAPIが出来たあたりに開発ネタがなくなって保守気味になってきたので、人員整理作業整理との事でインストーラと切りたいけど一度やったからには切れない補助製品担当が増える事に。インストーラWindowsがInstallShieldというクソみたいな言語上で作られたものLinuxSolarisシェルスクリプトのもので、InsallShieldの方のコードはあまりにクソなのでリファクタリングさせてもらった。この辺の開発は少なかったのだけど新OS対応(Vistaとか)とか保守作業が大変だった覚えある。

んで、これらの作業が終わったあたりでこの製品でやることが無くなってきたのと同時に、この製品派生製品の話が出てきてて、それは1機能1exeで提供されてて、それらを纏めるバッチ処理機能部分を担当することに。バッチ処理の内容・順番を記述するのにXMLを使う事になったのでXMLのパーサが必要なのだけど、色々調べたら富士通内部でパーサ作ってたのでそれをもらって使う事に。そのパーサはC++からじゃないと使えなかったのだけど、趣味C++勉強してたので何とかなった。あと、結構OSの知識(プロセスとか)が必要WindowsLinuxSolarisで動くコードを書く必要があってまあまあ大変でした(と言ってもifdefで切り分けるだけなんだけど)。けど、これらの開発は自分が一から設計してコードを書いていたので楽しかったですね。それでこれが完成するかしないかあたりで、このバッチ処理機能が他の開発中の製品バッチ処理に使えないかとか話が出てきたあたりで自分退職する事に。(退職の話は1年ぐらい前に話し合って決定済み)引き継ぎをして退職ということになりました。最後は溜まった有給を使う予定でまだ在籍中だけど部屋を引き払って実家に帰ってたのだけど、打ち合わせに来て欲しいって言われてしま実家から何日か通ったのは良い想い出。というかまさか実家から朝8時に間に合うとは思って無かった。

振り返ってみて残業時間は月40~60時間が多かったかな。100時間超えた時は上司に怒られた。あと退職前の1年ぐらいはうちの事業本部(だったかな?)単位残業禁止になってホント残業0時間になった時期があった。他の部署の人の話で、どう考えても狂ってる上司の話とかを聞いてると上司とかの運は良かったと思う。あと、やっぱり仕事でみっちりプログラミングが出来たのは運が良かったと思う。富士通ソフト開発で C C++ C# Java シェルスクリプト InstallShieldとか(そんなに深くはないけど)色々やれた人間はそうそう居ないんじゃないかな。同期とかの仕事は年上の人の派遣の人に指示出したり取り仕切ったりする仕事とか、保守サポートみたいな開発じゃない仕事の話も良く聞いていたので、ソフト開発のキモ体験出来たのは良かったです(こなみ)。

2016-03-26

Accessクエリが楽すぎて

長らくODBC接続Accessからクエリデータを触っていた

テーブルの結合とかGUIでできてすごい楽

が、標準PCOffice入れててもAccessは入ってない現場もそこそこ多い

Accessクエリに代わるようなソフトってなんかないですか

Object Browserは使ったことあるけど、GUIメインで操作するというものではない感じ

とにかくAccessクエリに慣れてしまって、自前でAccess単品で買おうかってくらい

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