ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

2
Lispマクロの典型的な用途は何ですか?
私はいくつかのLISPを学ぼうとしていますが、LISPマクロの重要性について多くのことを読みましたので、それらを使った実務経験を得たいと思います。 マクロを使用して実際の問題を解決し、このプログラミング構成の有用性を理解できる実用的なアプリケーション領域を提案できますか? 注意 これは一般的なプロジェクトではなく、次の質問を行うべきプロジェクトです。LISPマクロを使用して通常どのような問題が解決されるかを理解したいと思っています。たとえば、抽象データ型の実装に適していますか?なぜこのコンストラクトが言語に追加されたのですか?単純な機能では解決できない、どのような問題を解決しますか?

9
アサーションコードの匂いが多すぎますか?
私は本当に単体テストとTDDに夢中になりました-私はテストに感染しています。 ただし、ユニットテストは通常​​、パブリックメソッドに使用されます。ただし、プライベートメソッドでもいくつかの仮定(アサーション)をテストする必要がある場合があります。これは、それらの一部が "危険"であり、リファクタリングがそれ以上役に立たないためです。(フレームワークをテストすることでプライベートメソッドをテストできることはわかっています)。 したがって、プライベートメソッドの最初の行と最後の行の両方がアサーションであることが私の習慣になりました。 ただし、パブリックメソッド(およびプライベートメソッド)でアサーションを使用する傾向があることに注意してください。パブリックメソッドの前提条件は、ユニットテストフレームワークによって外部からテストされるため、これは「テストの重複」でしょうか。 誰かがあまりにも多くのアサーションをコードの匂いだと考えることはできますか?

4
プログラミングは空間適性の影響をどのように受けますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 バックグラウンド プロジェクトに長く携わるほど、明確さは低下します。頭の中でさまざまなクラス/オブジェクトを分離できなくなったようです。すべてが混同し始め、すべてを再び分解することは非常に困難です。本当に属していないクラスに関数を配置し始め、後で100%廃止されたコードを書くなどの愚かな間違いを犯します。頭の中で物事がはっきりと写像できなくなりました。数時間(または数日も!)戻って初めて、何が起こっているのかを実際に確認し、生産性を高めることができます。 私は通常これを戦おうとしますが、コーディングに非常に情熱を傾けているので、自分の人生のために他に何ができるかを知りません。これは、ものが本当に奇妙になることがあるとき、私は自分の頭の中で起きて、コップ一杯の水を注ぐなどのさまざまな行動がもはや意識的なレベルで起こらないという点で現実との接触をある程度失います。それは自動パイロットで発生し、その間、私の意識の集中のほとんどすべて(それも何か?)は、境界線の無意味な問題解決(コードの要素の分離を試みる)に専念します。負け戦のように感じます。 それで、私はしばらく前にIQテストを行った(Wechsler Adult Intelligence Scaleであったと思う)が、私の空間的適性はかなり低いことが判明した。私はまだ平均以上のまともな合計スコアを獲得しているので、生計のために棒で物を突く必要はありませんが、これはコンピュータープログラムを書いたりエンジニアリングするときにこれが非常にハンディキャップになることを少し心配しています真剣にまたは専門的にそれを行うことはできません。 質問 私は他の人がこれについてどう思うか非常に興味があります... 空間適性が低いことが、上記の問題の原因になる可能性がありますか? プログラミングは空間適性の影響をどのように受けますか? 17歳(5年前)にADDと診断されたので、ADDやそれに類似したものに沿ってもっと見る必要があるかもしれませんが、受け取った薬はそれほど影響を与えていないようで、服用したことはありませんそれはすべて深刻です。 私が知っている限りでは、人々は低/中/高の空間的適性を持って生まれているので、幸運な人が生まれながらに優れたプログラマーであるかどうかを知ることは興味深いと思います。

8
x = x ++が未定義なのはなぜですか?
xシーケンスポイント間で2回変更されるため、未定義です。標準では、定義されていないため、定義されていません。 それだけ知っています。 しかし、なぜ? 私の理解では、これを禁止することで、コンパイラーの最適化が向上します。Cが発明されたとき、これは理にかなっていたかもしれませんが、今は弱い議論のように思えます。 今日Cを再発明する場合、この方法でそれを行うのでしょうか、それとももっと良くすることができますか? または、より深い問題があり、そのような式に一貫したルールを定義するのが難しくなるので、それらを禁止するのが最善ですか? したがって、今日Cを再発明するとします。のような式の単純なルールを提案したいのx=x++ですが、これは既存のルールよりもうまく機能しているように思えます。 提案されたルールを既存のルールと比較したり、他の提案について意見を聞きたいと思います。 推奨ルール: シーケンスポイント間では、評価の順序は指定されていません。 副作用はすぐに起こります。 関連する未定義の動作はありません。式はこの値またはそれを評価しますが、確かにハードディスクをフォーマットしません(奇妙なことに、x=x++ハードディスクをフォーマットする実装を見たことはありません)。 式の例 x=x++-明確に定義され、変更されませんx。 最初に、x(x++評価されるとすぐに)インクリメントされ、次に古い値がに保存されxます。 x++ + ++x-2 x回インクリメントし、評価され2*x+2ます。 どちらかの側が最初に評価されますが、結果はx + (x+2)(左側が最初)または(x+1) + (x+1)(右側が最初)です。 x = x + (x=3)-指定なし、またはにx設定。 右側が最初に評価される場合、それはです。最初に評価される可能性もあるため、です。どちらの場合でも、評価は評価されるとすぐに行われるため、保存されている値は他の割り当てによって上書きされます。x+36x+3x=33+3x=3x=3 x+=(x=3)-明確に定義され、x6 に設定されます。 これは、上記の表現の単なる省略形であると言えます。 ただし、2つの部分(読み取り、評価、追加、新しい値の保存)ではなく、の+=後x=3に実行する必要があります。xx=3 利点は何ですか? いくつかのコメントはこの良い点を提起しました。 私は確かに、そのような表現x=x++は通常のコードで使用されるべきだとは思いません。 実は、私ははるかに厳しいものよりだ-私はのための唯一の良い使い方を考えるx++ようでx++;一人で。 ただし、言語のルールはできるだけシンプルでなければなりません。それ以外の場合、プログラマーはそれらを理解しません。シーケンスポイント間で変数を2回変更することを禁止する規則は、ほとんどのプログラマーが理解していない規則です。 非常に基本的なルールは次のとおり です。Aが有効で、Bが有効であり、それらが有効な方法で結合されている場合、結果は有効です。 xは有効なL値でx++あり、有効な式であり=、L値と式を組み合わせる有効な方法x=x++です。 C標準はここで例外を作成し、この例外はルールを複雑にします。stackoverflow.comを検索して、この例外がユーザーをどれほど混乱させるかを確認できます。 だから私は言う-この混乱を取り除く。 ===回答の要約=== どうしてですか? 上記のセクションで説明しようとしました-Cルールをシンプルにしたいのです。 最適化の可能性: これはコンパイラーからある程度の自由を奪いますが、それが重要であると私に納得させるものは見ませんでした。 ほとんどの最適化は引き続き実行できます。たとえばa=3;b=5;、標準で順序が指定されていても、並べ替えることができます。などの式もa=b[i++]同様に最適化できます。 …

1
人気のWebサイトが非常に複雑なセッション関連データをCookieに保存するのはなぜですか?それはどういう意味ですか?
Web開発者として、私たちは皆、セッションがHTTPのステートレスな性質に関連する問題を克服するのに役立つことを知っています。一意のセッションID を作成してブラウザーに送信します。ブラウザーが同じIDを送り返すと、ユーザーを簡単に識別できます。 これらはすべて簡単に聞こえますが、どの言語でも実装するのはそれほど複雑ではありません。 いま 私が撮った次のスクリーンショットを見てください。これらは、人気のあるWebサイトが保存するCookieの種類を示しています。複数のセッションIDを保存しているように見えるか、非常に多くのCookieを設定して実際のIDを非表示にしようとしているようです。または、何でも。 Gmail(ログイン前) Gmail(ログイン後) フェイスブック StackExchange (心配しないでください、あなたは私のセッションを盗むことはできません-それは古くて不完全です:)) だから、私の質問は-この複雑さはどのような目的に役立つのでしょうか?これらの異なるCookieの意味(一般的に)と、それらが設定されている目的を説明してください。最後に、自分のアプリでそれをどのように行うことができるか(そして、そうすべきかどうか)のヒント。 もう1つの質問:多くの場合、Cookieの値はURLエンコードされているように見えますが、なぜですか?
19 session 

2
アグリツリーとは何ですか?
古いHacker Newsのアイテムを調べてみると、あるユーザーからの投稿に出会いました。 (ソフトウェアルーティングテーブルで使用するような)境界サイズの基数トライをLRUリストと結合し、パターンから集約(すべてのIPの1,000の観測値から10.0.0.0/16など)を自動的に合成するAguriツリー挿入の。これらはトラフィック分析で最もよく知られていますが、ランタイムメモリ分析でも使用されています。 〜tptacek 調べてみることにしました 簡単なGoogle検索でF1ドライバーに移動します。 ウィキペディアで検索すると、インドの農業カーストと日本からのいくつかのアイテムにつながります Stack Overflow hits 0 results /programming//search?q=aguri site:stackoverflow.com/questions aguri だから私は最終的にそれをユーザーにリンクしました。彼が彼のブログにリンクを持っているのを見てください http://www.matasano.com/log/1009/aguri-coolest-data-structure-youve-never-heard-of/ しかし、それは死んでいます。 それでは、このAguriデータ構造とは何ですか?それが実際のデータ構造である場合、他のどこにも文書化されていないのはなぜですか?

6
関数型プログラミングを使用して、完全なエンタープライズアプリケーションを開発できますか?
関数型プログラミング(FP)を学び始めたばかりです。私はすべてがオブジェクトであり、それらのほとんどが可変であるOOPの世界から来ています。関数には副作用がないという概念をまとめるのに苦労しています。 何かが可変ではない場合、従業員や個人などの一般的なオブジェクトはFPでどのように表されますか。 FPを使用して本格的なエンタープライズアプリケーションを作成できますか?

5
サーバー側のページレンダリングを使用すると、どのような利点が得られますか?
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 私はWebアプリを開発していますが、現在、Webサイト全体をhtml / js / cssで記述しており、バックエンドにはRESTFULサービスをホストするサーブレットがあります。すべてのプレゼンテーションロジックは、jsonオブジェクトを取得し、javascriptを使用してビューを変更することで実行されます。 アプリケーションは基本的に検索エンジンですが、異なるロールを持つユーザーアカウントがあります。 PlayやSpringなどのフレームワークを研究しています。私はかなりWeb開発に慣れていないので、サーバーサイドページレンダリングを使用するとどのような利点が得られるのだろうかと考えていましたか? それは:スピードですか?より簡単な開発とワークフロー?既存のライブラリへのアクセス?もっと?上記のすべて?

6
ハッシュアルゴリズムを「安全」にするものは何ですか?
この興味深い質問を読んだ後、必要な場合にどの安全でないハッシュアルゴリズムを使用するかについて良いアイデアがあると感じましたが、代わりに安全なアルゴリズムを使用する理由はわかりません。 それで、違いは何ですか?出力はハッシュされたものを表す単なる乱数ではありませんか?一部のハッシュアルゴリズムを安全にする理由は何ですか?
19 security  hashing 

6
より良い構文で、Cにトランスパイルする言語はありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 CoffeeScriptは、Rubyに触発された、きれいな構文でJavaScriptに変換する言語です。Cにトランスパイルして、パフォーマンスを犠牲にすることなく、より読みやすいコードを可能にする同様の言語はありますか?そのようなものが存在しない場合、それを作成しない正当な理由はありますか?
19 c  syntax  compiler 

6
INIファイルまたはレジストリまたは個人用ファイル?
プロジェクトの構成を保存したい 画面サイズ スクリーン位置 フォルダーパス ユーザー設定など。 これらを保存できる標準的な場所は、構成値です。 登録 INIファイル 個人用ファイル(* .cfgなど) これらの場所からどのように選択しますか?また、それらのいずれかを使用することの長所と短所はありますか?

4
学ぶのが多すぎて、圧倒的な種類のテクノロジーに対処する[非公開]
ここで何が求められているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 7年前に閉鎖されました。 私は卒業しようとしています。すでに図書館のIT部門でWeb開発者として働いています。 求人情報を見ると、そこにある多種多様なテクノロジーに圧倒されます。 一部の企業は、数学+アルゴリズム+データ構造に関心があります。テクノロジースタックXYZの経験を気にする人もいます。SQL、CSS、HTML、フレームワーク、Javascript、デザインパターンなど。など...など ある時点で、私は基礎を習得することから始めて、より良い場所で雇用可能になり、そこから進む必要があることに気付きました。しかし、私をドアに入れるスキルセットはさまざまであり、すべてを学ぶ時間はありません。 この問題にどのように対処しますか?雇用可能になるために不可欠なスタックは何ですか?PHPまたはRORアリーナで発声してください。 おそらく、より賢明な動きは、.netのような多様性の少ないテクノロジースタックに移行することでしょうか?
19 skills 


7
「phpは悪い言語です」というパラダイムを破る方法は?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 PHPは悪い言語ではありません(または、少なくとも一部の人が示唆するほど悪くはありません)。PHPがオブジェクト指向であることさえ知らない教師がいたのです。私たちがPHP開発者であると言うとすぐに私たちを信用しないクライアントがいて、DjangoやRoRなどのシックな言語やフレームワーク、またはJavaやASP.NETなどの「エンタープライズで堅実な」言語を使用していないことに疑問を呈しています。 FacebookはPHP上に構築されています。企業や政府で使用されているJoomlaやDrupalのようなWebを動かす多くの堅実なプロジェクトがあります。すべての言語(Symfony 2、Doctrine)で見た中で最高のアーキテクチャを備えたフレームワークとライブラリがあります。PHPには、私が見た中で最高のドキュメントと、専門家の大きなコミュニティがあります。 PHPには、リフレクション、インターフェイスなどの高度なオブジェクト指向機能があります。もちろん、PHPはtraitを介してネイティブかつクリーンに水平再利用をサポートします。 PHPに悪い評判を与えるが、同時にPHPコミュニティに力を与える悪いプログラマーとスクリプトキディがあります。PHPの処理は非常に簡単であるため、多くの場合、間違った方法で物事を行うことができますが、なぜ言語?。 さて、これを実際の答えのできる質問に要約すると、あなたがPHP開発者であると言うとき、眉をひそめることを避け、偏見を一気に止めてあなたの名誉を守るための良い、堅実で短く、甘い議論は何でしょうか?。 (ホイップクリームを含む無料のCookieは、その場で誰か(クライアントまたはその他)を説得するという経験的証拠がある人に提供します) PS:私たちはSymfonyを使用し、コードは美しく、保守可能になりました PPS:Facebook は PHPで作成され、HipHopを介してC ++にコンパイルされ、Hadoopにデプロイされます。ここ:http : //arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/

4
JQueryおよび同様のツールをブラウザのインス​​トールに組み込むことはできますか?
JQueryとCDNについての別の質問を読んだ後、JQueryのようなツールがブラウザに「付属」し、CDNまたは独自のホストサーバーからの最初のダウンロードの必要性を削減/排除できるかどうか。 特に、JQueryファイルは非常に小さいため、ブラウザーのインストールの一部として、さまざまなバージョン(多数?)を簡単に作成できます。かなり公平になりましたが、これによりインストールのフットプリント、ブラウザ自体のダウンロード時間が増加します。 次に、サイトはCDN(キャッシュ)の前にまず「ローカル」をチェックし、最終的にWebサイトサーバー自体からのダウンロードにデフォルト設定することができます。 これが実行可能である場合、実行されているか、実行されていない場合、なぜ実行されないのか?

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