プログラミング

プロおよび熱狂的プログラマーのためのQ&A


30
インターフェイスと抽象クラス(一般的なOO)
最近、電話インタビューを2回行ったところ、インターフェースと抽象クラスの違いについて尋ねられました。私は考えられるすべての側面について説明しましたが、彼らは私が特定のことを述べるのを待っているようで、それが何であるかわかりません。 私の経験から、次のことが正しいと思います。重要な点が足りない場合はお知らせください。 インターフェース: インターフェースで宣言されたすべてのメソッドは、サブクラスで実装する必要があります。インターフェイスに存在できるのは、イベント、デリゲート、プロパティ(C#)、およびメソッドのみです。クラスは複数のインターフェースを実装できます。 抽象クラス: サブクラスでは、抽象メソッドのみを実装する必要があります。Abstractクラスは、実装を伴う通常のメソッドを持つことができます。抽象クラスは、イベント、デリゲート、プロパティ、メソッドの横にクラス変数を持つこともできます。C#にはマルチ継承が存在しないため、クラスは1つの抽象クラスしか実装できません。 結局のところ、インタビュアーは「抽象メソッドのみを持つ抽象クラスがあるとしたらどうでしょうか?それはインターフェースとどう違うのですか?」私は答えを知りませんでしたが、それは上記のように継承だと思いますか? 別のインタビュアーから、インターフェイス内にパブリック変数がある場合、抽象クラスとどう違うのかと尋ねられました。インターフェイス内にパブリック変数を含めることはできないと私は主張しました。私は彼が何を聞きたいのか知りませんでしたが、彼も満足していませんでした。 以下も参照してください。 抽象クラスの代わりにインターフェースを使用する場合、およびその逆の場合 インターフェースと抽象クラス 抽象クラスとインターフェースのどちらを使用するかをどのように決定しますか? インターフェイスと抽象クラスの違いは何ですか?

7
vimの「sudoで書き込む」トリックはどのように機能しますか?
sudoでvimを開くのを忘れた場合でも、root権限が必要なファイルに書き込むことができるコマンドは、おそらく多くの人が見たことがあるでしょう。 :w !sudo tee % ここで何が起こっているのか正確にはわかりません。 私はすでにこれを理解しています: wこれは *:w_c* *:write_c* :[range]w[rite] [++opt] !{cmd} Execute {cmd} with [range] lines as standard input (note the space in front of the '!'). {cmd} is executed like with ":!{cmd}", any '!' is replaced with the previous command |:!|. そのため、すべての行を標準入力として渡します。 !sudo tee一部には、呼び出しをtee管理者権限で。 すべてが意味をなすために、%はファイル名を(のパラメーターとしてtee)出力する必要がありますが、この動作のヘルプに関する参照が見つかりません。 tl; dr誰かがこのコマンドを分析するのを手伝ってくれませんか?
1412 vim  sudo 

30
ホストからDockerコンテナーのIPアドレスを取得する方法
新しいコンテナが作成された後、ホストから直接コンテナのIPアドレスを取得するために実行できるコマンドはありますか? 基本的に、Dockerがコンテナーを作成したら、独自のコードデプロイメントおよびコンテナー構成スクリプトをロールバックします。
1412 docker 

18
Gitリポジトリのみのサブディレクトリのクローンを作成するにはどうすればよいですか?
私のGitリポジトリには、ルートに2つのサブディレクトリがあります。 /finisht /static これがSVNに/finishtあったとき、次のように1か所で/staticチェックアウトされ、他の場所でチェックアウトされました。 svn co svn+ssh://admin@domain.com/home/admin/repos/finisht/static static Gitでこれを行う方法はありますか?

25
別のフォルダからファイルをインポートする
次のフォルダ構造があります。 application/app/folder/file.py にある別のPythonファイルのfile.pyからいくつかの関数をインポートしたい application/app2/some_folder/some_file.py 私はもう試した from application.app.folder.file import func_name 他にもさまざまな試みがありましたが、これまでは適切にインポートすることができませんでした。これどうやってするの?


30
JavaScriptは参照渡しまたは値渡しの言語ですか?
プリミティブ型(数値、文字列など)は値で渡されますが、オブジェクトは不明です。どちらも値で渡すことができるためです(オブジェクトを保持する変数が実際にオブジェクトへの参照であると考える場合) )および参照渡し(オブジェクトへの変数がオブジェクト自体を保持していると考える場合)。 最後にはそれほど重要ではありませんが、規則を渡す引数を提示する正しい方法は何かを知りたいです。これに関するセマンティクスがどうあるべきかを定義するJavaScript仕様の抜粋はありますか?

16
Markdownのコメント
マークダウンファイルにコメントを保存するための構文は何ですか(ファイルの先頭にあるCVS $ Id $コメントなど)。マークダウンプロジェクトには何も見つかりませんでした。
1402 syntax  comments  markdown 


27
List <T>を継承しないのはなぜですか?
私のプログラムを計画するとき、私はしばしば次のような一連の思考から始めます。 サッカーチームは、サッカー選手のリストにすぎません。したがって、私はそれを次のように表現する必要があります: var football_team = new List&lt;FootballPlayer&gt;(); このリストの順序は、プレーヤーが名簿にリストされている順序を表しています。 しかし、後でチームが記録する必要があるのは、単なるプレーヤーのリストに加えて、他のプロパティもあることに気づきました。たとえば、今シーズンのスコアの累計、現在の予算、均一な色、stringチームの名前を表すなど。 だから私は思う: さて、サッカーチームは選手のリストのようなものですが、それに加えて、名前(a string)と現在の合計スコア(an int)があります。.NETはサッカーチームを格納するためのクラスを提供していないため、自分でクラスを作成します。最も類似し、関連する既存の構造はList&lt;FootballPlayer&gt;なので、それを継承します。 class FootballTeam : List&lt;FootballPlayer&gt; { public string TeamName; public int RunningTotal } しかし、ガイドラインでは、から継承してはならないList&lt;T&gt;ことがわかっています。このガイドラインは2つの点で完全に混乱しています。 何故なの? どうやらList、何らかの形でパフォーマンスが最適化されています。どうして?拡張すると、どのようなパフォーマンスの問題が発生しListますか?正確には何が壊れますか? 私が見たもう1つの理由Listは、Microsoftから提供されたものであり、私はそれを制御できないため、「パブリックAPI」を公開した後で後で変更することはできません。しかし、私はこれを理解するのに苦労しています。パブリックAPIとは何ですか。なぜ気にする必要があるのですか。現在のプロジェクトにこのパブリックAPIが含まれていない可能性がある場合、このガイドラインを無視しても安全ですか?私は、継承を行う場合List と、、それは私が公共のAPIを必要と判明し、どのような困難私が持っているのだろうか? なぜそれが重要なのですか?リストはリストです。何が変わる可能性がありますか?何を変更したいですか? そして最後に、Microsoftがからの継承を望まないのであればList、なぜ彼らはクラスを作らなかったのでしょうか。sealedですか? 他に何を使うべきですか? どうやら、カスタムコレクションの場合、Microsoft Collectionはの代わりに拡張する必要のあるクラスを提供していListます。しかし、このクラスは非常に裸であり、たとえばなどAddRange、多くの有用なものはありません。jvitor83の答えは、その特定のメソッドのパフォーマンスの根拠を提供しますが、遅いのAddRangeは遅いよりも良いですAddRangeどうしてですか からのCollection継承はList、からの継承よりもはるかに多くの作業であり、私には利点がないと思います。確かにMicrosoftは理由もなく余分な作業をするように言わないので、何かを誤解しているように感じずにはいられず、継承Collectionは私の問題の正しい解決策ではありません。 実装などの提案を見てきました IList。いいえ。これは何十行ものボイラープレートコードで、何も得られません。 最後に、List何かを何かにラップすることを提案する人もいます: class FootballTeam { public List&lt;FootballPlayer&gt; Players; } これには2つの問題があります。 それは私のコードを不必要に冗長にします。my_team.Players.Countただ電話をする代わりに今すぐ電話しなければなりませんmy_team.Count。ありがたいことに、C#を使用すると、インデックス作成を透過的にするようにインデクサーを定義し、内部のすべてのメソッドを転送できますList...しかし、これは大量のコードです。すべての作業で何が得られますか? それだけでは意味がありません。サッカーチームは、選手のリストを「持っていません」。これは、ある選手のリスト。「John McFootballerがSomeTeamのプレーヤーに参加した」とは言わないでください。あなたは「ジョンがSomeTeamに参加した」と言います。「文字列の文字」に文字を追加するのではなく、文字列に文字を追加します。図書館の本に本を追加するのではなく、本を図書館に追加します。 …
1400 c#  .net  list  oop  inheritance 

13
JavaScriptでsetInterval呼び出しを停止する
setInterval(fname, 10000);JavaScriptで10秒ごとに関数を呼び出すために使用しています。何かのイベントでそれを呼び出すのをやめることは可能ですか? ユーザーが繰り返し行われるデータの更新を停止できるようにしたい。

30
JavaScriptでの日付のフォーマットに関するドキュメントはどこにありますか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 2年前休業。 JavaScriptのnew Date()関数は、いくつかの形式の日付を受け入れるのに非常に優れていることに気付きました。 Xmas95 = new Date("25 Dec, 1995 23:15:00") Xmas95 = new Date("2009 06 12,12:52:39") Xmas95 = new Date("20 09 2006,12:52:39") new Date()関数を呼び出しているときに、すべての有効な文字列形式を示すドキュメントをどこにも見つけることができませんでした。 これは文字列を日付に変換するためのものです。反対側、つまり日付オブジェクトを文字列に変換すると、今までJavaScriptには日付オブジェクトを文字列にフォーマットする組み込みのAPIがないという印象を受けました。 編集者注:次のアプローチは、特定のブラウザでは機能したが一般には機能しない質問者の試みです。このページの回答を見て、実際の解決策をいくつか見てください。 今日、私はtoString()日付オブジェクトのメソッドを操作しましたが、驚くべきことに、日付を文字列にフォーマットする目的に役立ちます。 var d1 = new Date(); d1.toString('yyyy-MM-dd'); //Returns "2009-06-29" in Internet Explorer, but not Firefox or Chrome d1.toString('dddd, MMMM ,yyyy') …



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.