問題タブ [future-proof]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - Perlスクリプトの移植性と将来の保証
グループ外からのプレッシャーのため、100を超えるPerlスクリプトをSparcからx86に移植する必要があります。これは、数十のシバンライン#!/home/Perl/bin/perl -w
を別のものに変更することを意味します。これは本当に苦痛です。これを行うための良い方法は何ですか( Lycosで何も見つかりません)?
また、x86から他の何か(Crayなど)に移動することを余儀なくされた場合はどうなりますか?「将来を保証する」方法はありますか?
future-proof - 下位互換性を犠牲にするのはいつですか?
基本的に、下位互換性を犠牲にして、新しいバージョンで古いバージョンで作成されたコンテンツを新しいバージョンの形式に (自動的に) 変換する必要があるアプリでこの動作を行うことについて疑問に思っています。
Visual Studio は、その.sln
ファイルに対してこれを行います。
この慣習に賛否両論はありますか?
私が書いているアプリ (3D コンテンツ作成) のコンテキストでは、古いコンテンツ ファイルの場合にのみ実装できる可能性のあるものを時間内に作成する (より速く、より良く、より効率的に) 潜在的に異なる方法を見つけることを考えていました。似たような方法で同じものを作成する新しい方法に変換されます。
たとえば、クラスを使用することで、これをより一般的かつ高速に実行できることに気付いv1
たShape
クラスがあったかもしれません。ただし、古いものを維持するには、古いコンテンツ ファイルを変換する必要があり、すべてが新しいバージョンと互換性があります。v2
PolySpline
Shapes
PolySplines
これは合理的な考えですか?
javascript - JavaScriptを使用して22034年第1四半期の計画をSafariで信頼できないのはなぜですか?
ブラウザー側(Safari 5.0.1)で文字列をDate()コンストラクターに渡す場合、遠い将来の日付の計算には厄介なことがあります。
22034年の2月から3月の移行に絞り込みました。
それ以降の日付をフィードすると、コンストラクターは常にDateオブジェクトを1日遅れて返します。
以前の日付はどうですか?2月の最終日はよさそうだ:
私の腸の感覚は、うるう年に関連するバグのように見えることを教えてくれます。しかし、ここでのパターンは何ですか、バグの説明は何でしょうか?
編集:
2月29日をお願いしたらどうですか?
これは、2月の最後と1日を返します(その標準的な動作)。
xml - 属性を追加しますか、それともXML階層に新しいレベルを作成しますか?
私は現在、2つのレベルしかないXML階層用に作成されたXMLドキュメントに取り組んでいます。今のところ、そのファイルで機能するコードのほとんどを壊してしまう1対多の分類を追加したいと思います。
その分類を新しいレベルとして追加することも、同じレベルの属性として実装することもできます(ほとんどタグ付けのように)。
現在:
提案:
また:
どちらの方法がより保守可能ですか?
arrays - Array.toString() は ActionScript 3 のままであることが保証されていますか?
の出力をArray.toString()
ユーザーに表示しても問題ありませんか?それとも、ActionScript 3 または他のコンパイラの将来のバージョンで文字列形式が変更される可能性はありますか?
c# - 拡張メソッドの前方互換性
拡張メソッドを使用すると、メソッドを任意の型に簡単に追加できます。明らかに、これにより、.net の将来のバージョンで、拡張メソッドが呼び出されなくなる可能性が開かれます (たとえば、タイプには、拡張メソッドと同一のシグネチャを持つメソッドが含まれるようになりました)。
これは心配する必要がありますか?
もしそうなら、これにどのように対処し、これが発生した場合にコードの変更を最小限に抑えるように拡張メソッドを設計する必要がありますか?
python - 25年後に実行されるプログラムの設計のヒント
現在実行する必要があり、おそらく 10 年後または 25 年後に実行する必要があるアプリケーション (主にデータ処理を行う) を作成する場合、そのようなアプリケーションにはどのような設計のヒントがありますか?
一般的なルールが適用されます。オープン ソース ソフトウェア、実績のあるプラットフォーム、およびフェイルセーフ データ形式に依存します。
読みやすさの理由から、言語は高級言語でなければなりません (元のコードをほとんど知らない人が 15 年以内にアプリケーションを書き直すしかないかもしれません)。
UNIX(Linux)+Python+YAML/JSON(/CSV/plaintext)、この選択または代替ツールセットに関するヒントはありますか? Scheme/lisp は何年も前から存在しており、すべてが自己完結型であることを考えると、言語の基本を台無しにすることも非常に困難です。
編集: 2038 年問題のような、実際の設計とコードに関するヒントを忘れないでください!
cross-browser - 新しいブラウザバージョンがリリースされたときに更新する必要のないjavascriptライブラリはありますか?
私の仕事ではdojoを使用していますが、ブラウザのメジャーアップグレードが発生すると、古いバージョンのdojoの一部が破損するという経験があります。Webアプリを最新バージョンのブラウザーで動作させ続けるには、実際には最新バージョンのdojoに更新し続ける必要があります。
私は現在、教授がすでに使用しているWebアプリであるmastersプロジェクトに取り組んでいるため、これがすべてのjavascriptライブラリに当てはまるかどうかを知りたいと思います。ライブラリの優れた機能のいくつかを使用したいのですが、このプロジェクトを永遠に維持し続けることは期待していません。ブラウザのアップグレードが公開されたときにアプリの動作を停止したくありません。
とにかく、誰かがこのトピックに関する情報やアドバイスを持っているなら、私は本当にそれをいただければ幸いです。
python - (Unicodeエラー)'unicodeescape'コーデックはバイトをデコードできません-'\u'の文字列
Python 2.6用のコードを書いていますが、Python 3を念頭に置いて、
一部のモジュールの上部にあります。言い換えれば、私は(将来それらを避けるために)トラブルを求めていますが、ここでいくつかの重要な知識が不足している可能性があります。ファイルパスを表す文字列を渡して、オブジェクトを次のように簡単にインスタンス化できるようにしたい
MyObject('H:\unittests')
Python 2.6では、これは問題なく機能します。。で始まるディレクトリの場合でも、二重の円記号や生の文字列を使用する必要はありませ'\u..'
ん。これはまさに私が望んでいることです。この方法では、、、、、、、、および(問題が残るだけ)のような特殊文字の前のものを含め、すべての単一の出現が''として解釈__init__
されることを確認し\
ます。また、(ローカル)エンコーディングを使用して指定された文字列をUnicodeにデコードすると、期待どおりに機能します。\\
\a
\b
\f
\n
\r
\t
\v
\x
Python 3.xの準備をし、エディターで実際の問題をシミュレートします(Python 2.6のクリーンなコンソールから開始します)。次のようになります。
(ここまでOK:'\u'
ローカルエンコーディングを使用してコンソールによってエンコードされます)
つまり、(ユニコード)文字列はユニコードとしてまったく解釈されず、ローカルエンコーディングで自動的にデコードされません。生の文字列の場合でも:
u'\u'
:と同じ
また、 unicode_literalsをインポートすると、すべての文字列型がユニコードになるはずなので、isinstance(str(''), unicode)
戻ることを期待します(そうではありません)。(編集:) Python 3では、すべての文字列がUnicode文字のシーケンスであるため、このようなユニコード文字列を返し、と (すべての文字列がユニコードであるため)の両方 であると期待しますが、 。すべての周りの混乱...True
str(''))
type(str(''))
<type 'unicode'>
<type 'str'>
<type 'unicode'> is not <type 'str'>
質問
- ''を含む文字列を渡すにはどうすればよい
\u
ですか?(''を書かずに\\u
) from __future__ import unicode_literals
完全なPython3文字列環境を取得できるように、Python 3に関連するすべてのUnicode変更を実際に実装していますか?
編集:Python 3では、<type 'str'>
はUnicodeオブジェクトであり、<type 'unicode'>
単に存在しません。私の場合、Python3で動作するPython2(.6)のコードを記述したいと思います。しかしimport unicode_literals
、私がそうすると、文字列が<type 'unicode'>
次の理由であるかどうかを確認できません。
unicode
名前空間の一部ではないと思いますunicode
が名前空間の一部である場合<type 'str'>
、同じモジュールで作成された場合、のリテラルは引き続きユニコードです。type(mystring)
Python3では常に<type 'str'>
Unicodeリテラルを返します
# coding: UTF-8
私のモジュールは、上部のコメントによって「utf-8」でエンコードされていましたが、 locale.getdefaultlocale()[1]
「cp1252」を返します。したがってMyObject('çça')
、コンソールから呼び出すと、Python 2では「cp1252」としてエンコードされMyObject('çça')
、モジュールから呼び出す場合は「utf-8」としてエンコードされます。Python 3では、エンコードされませんが、Unicodeリテラルになります。
編集:
u
私は(またはそのことについては)前に「\」を使用しないようにすることを許可されることへの希望をあきらめましたx
。また、インポートの制限も理解していunicode_literals
ます。ただし、文字列をモジュールからコンソールに、またはその逆に、それぞれ異なるエンコーディングで渡すことの多くの可能な組み合わせ、およびそのインポートの有無とPython2とPython3の組み合わせにunicode_literals
加えて、実際のテストで概要を作成したいと思いました。したがって、以下の表。
言い換えれば、Python 3でtype(str(''))
は戻りませんが、Python2の問題はすべて回避されているようです。<type 'str'>
<class 'str'>
r - R / Rcpp コードが再現可能 (「配布可能」) であることを確認するにはどうすればよいですか?
私は学位論文用の R コードをいくつか書きました。いくつかの外部パッケージ (たとえば、plyr
and reshape
) に依存し、 and を使用していくつかの比較的単純なインライン C++ 関数を作成inline
しRcppArmadillo
ました。
再現性を研究する目的で、自分のコンピューター (Win64) 以外のコンピューターで「そのまま」実行できることを確認したいと思います。
私の質問: 必要なパッケージをインストールするためのコードを含めたとします。RcppArmadillo
(およびRcpp
およびinline
) パッケージは で記述された関数をコンパイルするのに十分RcppArmadillo
でしょうか、それともエンド ユーザーは自分の Windows マシンでコンパイルするためにシステム パスを変更する必要がありますか? そうでない場合、コンパイルされた関数を自分の側から保存し、出荷している R コードに含めることは可能/推奨されますか?
また、コードをしばらくしてから (たとえば、数年後に) 実行する必要があるというまれなケースでは、現在のバージョンに関連するパッケージを含む完全な R インストールを含めて、コードを「将来に備えた」ものにするだけで十分ですか? ?
質問が明確であることを願っています。