プログラミング

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

13
Windows、Mac OS X、Linuxはどの言語で書かれていますか?
私は、Windows、Mac OS X、Linuxがどのプログラミング言語で構成され、OSの各部分(つまり、カーネル、プラグインアーキテクチャ、GUIコンポーネントなど)にどの言語が使用されているのか、誰が知っているのかと思っていました。 それぞれに複数の言語があると思いますが、LinuxカーネルがCで記述されていることは明らかです。 Mac OS XにはNeXTから派生したAppleの言語であるため、Mac OS Xには多くのObjective-Cコードが含まれていると私は完全に推測しています。 Windowsには、C、C ++、Intelアセンブリが含まれていると聞きました。LinuxまたはMac OSにはアセンブリコードが含まれていますか? また、OSの一部をスクリプト化するためにOS開発者が使用するRuby、Pythonなどのスクリプト言語はありますか?OSのどの部分が各言語で記述されますか?

4
共有オブジェクト(.so)、静的ライブラリ(.a)、DLL(.so)の違いは?
Linuxのライブラリに関していくつかの議論に参加しており、いくつかのことを確認したいと思います。 アプリケーションを構築するときにライブラリを使用する方法は2つあるというのは私の理解です(間違っている場合は修正してください。後で投稿を編集します)。 静的ライブラリー(.aファイル):リンク時に、ライブラリー全体のコピーが最終アプリケーションに入れられるため、ライブラリー内の関数は常に呼び出し側アプリケーションで使用できます。 共有オブジェクト(.soファイル):リンク時に、オブジェクトは対応するヘッダー(.h)ファイルを介してAPIに対して検証されるだけです。ライブラリは、実行時まで実際には使用されません。 静的ライブラリの明らかな利点は、アプリケーション全体を自己完結できることです。動的ライブラリの利点は、「。so」ファイルを置き換えることができることです(つまり、セキュリティのために更新する必要がある場合)バグ)ベースアプリケーションを再コンパイルする必要はありません。 どちらも「.so」ファイルですが、共有オブジェクトとダイナミックリンクライブラリ(DLL)を区別する人がいると聞いています。Linuxまたは他のPOSIX準拠OS(つまり、MINIX、UNIX、QNXなど)でのC / C ++開発に関して、共有オブジェクトとDLLの間に違いはありますか?(これまでのところ)1つの重要な違いは、共有オブジェクトは実行時に使用されるだけであり、アプリケーション内でdlopen()呼び出しを使用してDLLを最初に開く必要があるということです。 最後に、一部の開発者が「共有アーカイブ」について言及しているのを聞いたことがあります。これは、私の理解では静的ライブラリでもありますが、アプリケーションで直接使用されることはありません。代わりに、他の静的ライブラリが「共有アーカイブ」にリンクして、共有アーカイブから構築中の静的ライブラリに一部(すべてではない)の関数/リソースをプルします。 よろしくお願いします。 更新 これらの用語が私に提供された状況では、Linuxを学習する必要があるWindows開発者のチームが使用した事実上誤った用語でした。私はそれらを修正しようとしましたが、(正しくない)言語の規範が行き詰まりました。 共有オブジェクト:プログラムの起動時にプログラムに自動的にリンクされ、スタンドアロンファイルとして存在するライブラリ。ライブラリはコンパイル時にリンクリストに含まれます(つまりLDOPTS+=-lmylib、という名前のライブラリファイルの場合mylib.so)。ライブラリは、コンパイル時とアプリケーションの起動時に存在している必要があります。 静的ライブラリ:アプリケーションコードと、プログラムのビルド時にプログラムに自動的にリンクされるライブラリコード、および両方を含む最終バイナリを含む単一(大きい)アプリケーションのビルド時に実際のプログラム自体にマージされるライブラリメインプログラムとライブラリ自体は、単一のスタンドアロンバイナリファイルとして存在します。ライブラリは、コンパイル時にリンクリストに含まれます(つまりLDOPTS+=-lmylib、mylib.aという名前のライブラリファイルの場合)。ライブラリはコンパイル時に存在している必要があります。 DLL:基本的に共有オブジェクトと同じですが、ライブラリはコンパイル時にリンクリストに含まれるのではなく、dlopen()/ dlsym()コマンドを介してロードされるため、プログラムをコンパイルするためにライブラリがビルド時に存在する必要はありません。また、ライブラリは、dlopen/ dlsym呼び出しが行われたときにのみ必要になるため、アプリケーションの起動時またはコンパイル時に(必ずしも)存在する必要はありません。 共有アーカイブ:基本的に静的ライブラリと同じですが、「export-shared」フラグと「-fPIC」フラグを使用してコンパイルされます。ライブラリはコンパイル時にリンクリストに含まれます(つまりLDOPTS+=-lmylibS、という名前のライブラリファイルの場合mylibS.a)。2つの違いは、共有オブジェクトまたはDLLが共有アーカイブを独自のコードに静的にリンクし、共有オブジェクトの関数を他のプログラムで使用するだけでなく、他のプログラムで使用できるようにする場合に、この追加のフラグが必要になることです。 DLLの内部。これは、誰かが静的ライブラリを提供し、それをSOとして再パッケージ化したい場合に役立ちます。ライブラリはコンパイル時に存在している必要があります。 追加アップデート 「DLL」と「shared library」の違いは、私が当時働いていた会社での(怠惰で不正確な)口語表現(Windows開発者はLinux開発に移行せざるを得ず、用語は行き詰まっている)であり、上記の説明に忠実でした。 さらに、S「共有アーカイブ」の場合、ライブラリ名の後に続く「」リテラルは、その会社で使用されている規則であり、業界では一般的ではありませんでした。
273 c++  c  linux  dll  linker 

6
文字列/文字のベクトルを連結します
文字型のベクトルがある場合、値を文字列に連結するにはどうすればよいですか?ここにpaste()でそれを行う方法があります: sdata = c('a', 'b', 'c') paste(sdata[1], sdata[2], sdata[3], sep ='') 降伏"abc"。 しかしもちろん、それは私が事前にsdataの長さを知っている場合にのみ機能します。
273 r  string  r-faq 

13
リスト内の要素の検索と置換
リストを検索して、ある要素のすべての出現箇所を別の要素で置き換える必要があります。これまでのところ、コードでの試みはどこにも行きませんでした。これを行うための最良の方法は何ですか? たとえば、私のリストに次の整数があるとします >>> a = [1,2,3,4,5,1,2,3,4,5,1] そして、私は数値1のすべての出現を値10に置き換える必要があるので、必要な出力は >>> a = [10, 2, 3, 4, 5, 10, 2, 3, 4, 5, 10] したがって、私の目標は、数値1のすべてのインスタンスを数値10に置き換えることです。
273 python  list  replace 



12
Node.jsの安全なランダムトークン
で、この質問エリックはNode.js.で安全なランダムなトークンを生成する必要があります crypto.randomBytesランダムなバッファを生成するメソッドがあります。しかし、ノード内のbase64エンコードは、URLセーフではありません、それは、/と+の代わりに-と_。したがって、私が見つけたそのようなトークンを生成する最も簡単な方法は require('crypto').randomBytes(48, function(ex, buf) { token = buf.toString('base64').replace(/\//g,'_').replace(/\+/g,'-'); }); よりエレガントな方法はありますか?


14
Javaで文字列連結よりもString.formatを使用する方が良いでしょうか?
String.formatJavaでのとString連結の使用の間に、目に見える違いはありますか? 私は使用する傾向がありますString.formatが、時々スリップして連結を使用します。私はどちらがより優れているのかと思っていました。 私がそれを見ると、String.format文字列を「フォーマット」する上でより大きな力を与えます。連結することで、誤って余分な%sを入れたり、見落としたりする心配がありません。 String.format また短いです。 どちらがより読みやすいかは、頭の動きによって異なります。

3
Typescriptエクスポートとデフォルトエクスポート
間の活字体の違いは何であるexportとはdefault export。すべてのチュートリアルで、人々exportがクラスを使用していることを確認していますdefault。エクスポートする前にキーワードを追加しないと、コードをコンパイルできません。 また、公式のtypescriptドキュメントでデフォルトのエクスポートキーワードの痕跡を見つけることができませんでした。 export class MyClass { collection = [1,2,3]; } コンパイルしません。だが: export default class MyClass { collection = [1,2,3]; } します。 エラーは: error TS1192: Module '"src/app/MyClass"' has no default export.


5
Webpackを使用したvue.jsプロジェクトのat( '@')サインインパスを使用したES6インポート
私は新しいvue.jsプロジェクトを開始しているので、vue-cliツールを使用して、新しいWebpackプロジェクト(つまりvue init webpack)を足場しました。 生成されたファイルを調べていると、src/router/index.jsファイルに次のインポートが含まれていることに気付きました。 import Vue from 'vue' import Router from 'vue-router' import Hello from '@/components/Hello' // <- this one is what my qusestion is about Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'Hello', component: Hello } ] }) これまでに@パスのアットマーク()を見たことがない。私はそれが相対パスを許可しているのではないかと思っています(たぶん?)。 オンラインで検索してみましたが、説明が見つかりませんでした( "アットマーク"を検索するか、リテラル文字を使用し@ても検索条件として役に立たないためです)。 @このパスでは何をしますか(ドキュメントへのリンクは素晴らしいでしょう)、これはes6のものですか?ウェブパックのこと?ビューローダーのこと? 更新 Felix Klingに、この同じ質問について別の重複したStackoverflow質問/回答を教えてくれてありがとう。 …

3
ジンジャに変数を設定する
jinjaで変数を別の変数に設定する方法を知りたいのですが。説明します。サブメニューがあり、どのリンクがアクティブであるかを表示したいと思います。私はこれを試しました: {% set active_link = {{recordtype}} -%} ここで、recordtypeはテンプレートに指定された変数です。

7
特定のtable.columnを参照し、それらの外部キーの値を持つ外部キーを持つすべてのテーブルを見つける方法は?
主キーが他のいくつかのテーブルで外部キーとして参照されているテーブルがあります。例えば: CREATE TABLE `X` ( `X_id` int NOT NULL auto_increment, `name` varchar(255) NOT NULL, PRIMARY KEY (`X_id`) ) CREATE TABLE `Y` ( `Y_id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `X_id` int DEFAULT NULL, PRIMARY KEY (`Y_id`), CONSTRAINT `Y_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`) ) CREATE TABLE `Z` …


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