C#, C♯, C#相談室 Part93©2ch.net
レス数が900を超えています。1000を超えると表示できなくなるよ。
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part92
http://echo.2ch.net/test/read.cgi/tech/1485589613/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured >>807
海外の人も Unity 発表の数値には疑問を抱いている。
ちなみに、日本のゲーム業界の開発者数(プログラマ、
デザイナ、企画含む) は、2万5,000任程度だとされ、
世界でも1チームの平均人数は5.5人程度。
Unityには、450万人もの開発者が登録されているとされる。
Unity発表の数値が正しければ、世界には、
ゲーム開発チームが、160万〜200万チームも
あることになってしまう。
「How many game developers existed in 2016?」
https://www.quora.com/How-many-game-developers-existed-in-2016
A cached version of Unity’s public relations page from July 2016 states that
Unity has 45% of the global market share and 4.5 million developers using the
platform, indicating an estimated total of 10 million individual game developers
(my guess is that “developers” means people working in game development,
including roles such as artists and game designers as well as engineers, who
could potentially use the tool).
From a 2013 Game Development Magazine survey of 1051 developers (republished by GamaSutra):
Studio size and type: 7% of respondents are individual independent devs,
19% are teams of 2-5 people, 14% on 6-10, 18% on 11-30 , 9% on 31-50,
7% on 51-80, 5% on 81-100, 8% on 101-150, 4.5% on 151-200,
5.5% on 201-300, and 3% on teams of 300+.
This indicates an average team size between 5 and 6 team members.
If each of these members falls under Unity’s classification of “developers,”
we can estimate 1,600,000 - 2,000,000 game development studios (including
individuals developing games alone as well as teams). 2017/01/27時点で、GooglePlay には、260万個、AppStore には、
200万個のアプリがある。そのうちの25%がゲームだとして、Android
には、60万ゲームある。1チーム当たり 5個のゲームを公開している
としても、12万「チーム」あることになる。日本のプロのゲーム開発者
が2万5,000人程度しかいないことを考えると、凄い人数では有る。
そもそもアプリ全体の個数もかなり多いので、アマチュアプログラマがかなり
多い事は多い。
------
There are currently over 2.6 million apps in the Google Play Store and over
2 million in the App Store. I can’t find anything to say how many of those
are games. Let’s assume 25% are games. Lets just focus on Android as
our estimation. That would mean more than 600,000 games on Google Play.
I would say the average developer has 5 games on the store. Lets use 10
to be conservative. That would mean there are 60,000 different developers.
That’s my best guesstimate. My gut tells me it’s probably more but who
knows. I know for one thing, I am a developer and I have 4 games released.
Feel free to check them out: GooglePlayやAppStoreのAppって、250万個もあれば、その中に本当に同一のものが
含まれてないか、または、250万個も本当にあるかを調べることは不可能に近い
かも知れない。
そもそも本当はそんなに無かったりして。そもそも、Vectorに登録されているアプリ
だってそこまで無い気もするし。 うちゲーム会社じゃなくて製造業(けっこう大手)だけど、VR絡みはUnity使ってるよ。
同業他社も使ってるのは意見交換会で聞いたし。
映像系でも使われ始めてるから、ゲーム業界から離れたほうがわかりやすいかも。 確かに、VRまで含めれば説明が付く気はするんだよ。
使う人の人数は作る人の人数より100倍程度は居るのが普通だから。
ただ、GooglePlayに登録されているアプリ数が本当に250万本もあるかどうか、
そのまま信じていいかについては注意すべき。
そもそも250万種類の一覧表をテキストファイルで見られるかどうか。
旧 nifty serve なんかも、「シェアウェアは儲かる」と言ってパソコン通信
加入者を増やそうとしたらしい。その際、「秀丸エディタ」が1億円の売り上げ
がある、とされたが、その作者が富士通社員だったことは公然の秘密。 >>830
レコード数250万のDBなんてざらにあるぞ >>831
そういう意味じゃなくって、GooglePlay から、全てアプリが載った一覧表を一度に
ダウンロードできるのかってこと。
検索するだけだったら、本当に250万種類もあるかは誰にも分からないじゃない
かと。 儲かってると思うけどな。Unity。
18万円はProだろ。
Enterpriseは別だよ。 ダウンロードできるか?ってできるだろ
1レコードがMB単位でデータあるんか?
1レコード1KBで2.5GB
最近のゲームなんて10GB超えのダウンロード当たり前みたいなとこあるじゃん
250万行のテキストはあんま開きたくはないが なんの根拠もない空想だけどゲームとVRの比率、VRが10%とかじゃない?
もちろん両方もそれなりにいるだろうけど
それでVRまで含めれば説明がつく、って意味がわからん あんまり詳しくは言えないけど、VR以外にも使ってるものもあるし、エンタープライズだとお値段時価だし、
企業ユースでは数人のチームなんてのはあり得なくて結構な人数分揃えるからね。
CADと連携したりなんやかんやで、ゲーム開発より金はかかるから、プロダクトの割合とは一致しないよ。 Unity用のスレはあるからそっちでやれよ
VRプログラム雑談【Unity/UnrealEngine】【HTC Vive/Oculus Rift/その他VR】
https://mevius.5ch.net/test/read.cgi/tech/1478142101/
数レスならともかく赤いのまでいるし 質問いいでしょうか
webapiにて
var task = Task.Factory.StartNew
これで重い処理をバックグラウンドで処理させています。
このtask開始時にDBにProcessThread.IdとProcessThread.StartTimeを落として
別のwebapiでDBに落としたIdとStartTimeを使って
GetCurrentProcess().Threadsを検索して定期的に生きてるかのチェックを行っています。
これがけっこう不安定みたいで、バックグラウンドの処理が終わる前に
ProcessThreadが検索できなくなる場合があります。
最初にStartNewさせた際のProcessThreadが生きてる正しい確認方法はないでしょうか?
ブラウザを閉じた場合を考慮してProcessThreadで確認を行いたいです。 すいません。
変な質問ですね。
var taskを見るのではなく、その他の方法で
バックグラウンド処理が動いてるかの確認が行いたいです。 すいません。
自己解決です。
static public Task wkTaskを宣言しておいて
wkTask= Task.Factory.StartNewで作成したあと、ブラウザを閉じて
開き直してもwkTaskは生きてますね。
スレ汚しすいませんでした。 >>843
そのTaskが必ず1つしか動かないって保証があるならいいけどね。
ブラウザ閉じる->開くを繰り返したらどうなるんや ブラウザ閉じて開いて、サーバの同じスレッドに接続して同じタスク拾う保証どうやってるんだ Action.Invokeでvoidと比べてstatic voidの方が遅いのってC#7だと改善されたの? javaのtry-with-resouceみたいにusing書けるようにしてくれないかな
どうしてもネスト深くなるの辛い メソッドへのオブジェクト引数で、参照渡し(refをつける)、とオブジェクトの値渡し(refなしの値渡し。つまり、ポインター(アドレス)渡し)の違いがわかりません。
同じと思ってますが・・・・・。事実は違うようです。参照だと渡し元も変更される、っていう違いは分かります。
それ以外の違いはあるんでしょうか? >>850
オブジェクトの値渡しってどういうこと?
参照型なら全部参照渡しになると思うが refだと渡し元が変更されるって十分な違いだろ
どうあって欲しいんだよ一体 >>850
ここらへんを見てみればいいかと
https://dobon.net/vb/dotnet/beginner/byvalbyref.html#section3
かんたんに言うとどっちでも渡されたオブジェクトの中身は変えられるけど、ref付けないと新しいオブジェクトを設定して呼び出し元に返せないってこと 参照値でも、refつけない値渡しとref付ける参照渡しできる。
で、参照値以外の値...とりあえず非参照値と呼ぶと
非参照値でも、refつけない値渡しとref付ける参照渡しできる。
全部で4パターンあるってこと 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b) >>850
簡単なので難しく考えてはだめ。すごくシンプルな話。
その型の値(その型の変数に格納される値)を渡すのが値渡し。
その型の変数の「場所」を渡すのが参照渡し。
さらっと書いたけど、「その型の値 = その型の変数に格納される値」なのはよく理解する必要がある。
つまり、参照型の変数に格納される値って何だったか要再考。
変数とはメモリ上に割り当てられた特定の領域のこと。
だからその領域のバイト列のコピーを渡すのが値渡しで、
領域の先頭アドレスを渡すのが参照渡しだと思えばいい。
参照渡しでメソッドが受け取る情報は「変数の」場所なので、参照渡しの引数に
リテラルや式を渡すことは出来ない。 多分だけど参照渡しと値渡しの挙動自体は理解しているものの、
デフォ参照型とデフォ値型の区別がついておらずにデフォ参照型で実験をしてrefでも素渡しでも変わらないやんってことじゃないか TryParseみたいなのだと成否と値がtupleで返って来てもifの中でめんどい メソッド内で中身を変更するって理由で参照型のもref渡ししてるのみてイラッとしたことはある。イランヤン それVB6からの移植とかじゃない?
オフショアが移植したコードがそんなんばっかし ref の使いどころってライブラリから複数の返値欲しい時だから
他の手段使えるならそっちでいいわな
未初期化変数指定できんのも地味にイラッと来るし >>861
そういう場合はrefではなくoutを使う >>861
> 未初期化変数指定できんのも地味にイラッと来るし
out使えよ 引数いじるの好きじゃないわ
返り値だけで判別させて まあ参照型はoutの制約で十分かつ安全なのでrefはほぼ出番ないんじゃねえのん
Swap関数を定義する時くらしか適切な例が思い付かねえ そのswapがな、MVVMでお決まりのBindableBaseなりのSetPropertyでプロパティの値交換するときに使いまくりで、
androidでもMVVM使いまくってるけどrefないkotlinやjavaでやると... プロパティの値交換するときってのが想像つかんが
どういうときにそれを使いまくるんだ? BindableBase SetPropertyとかでぐぐってみれ
有り体に言えば自身のプロパティ(のバックストア)を差し替えるジェネリックメソッドを基底クラスで定義するのに使うだけ WPFとかUWPとか使ってればBindableBaseのありがたさはよくわかる
関係ないけどstaticメソッドって呼び出すときにいちいちインスタンスを生成する必要がないって以外のメリットあるのかな? >>871
まあメリットって発想がそもそもおかしい。
例えばDouble.Parseがstaticなのはその方が意味的に自然だから
インスタンスメソッドである必然性がないし、インスタンスメソッドでは不自然だから dictionaryとかのcollection系が手抜きなのなんで?
特にdictionaryとか拡張必須だし
割とc#好きだけどこれはほんとアカン テンプレート系はデータが増えればC++にでも勝てるのに
何が問題? Collection系はJavaの方がしっかりしてるよね。 queueは空っぽの時取り出そうとすると落ちやがるの許せん勝田
今はTryあるからいいけど 例外が発生することを落ちるって表現する男の人って… 例外っていろんな種類あるけど具体的に何を使えばいいのかよくわからなくて
とりあえずcatch(Exception e)とかしちゃってるけど本来はこんなのダメだよな…… 別にいいと思うぞ。下位の呼び出しのどこかで失敗したということに対して適切に処置するなら。 >>883
> 例外っていろんな種類あるけど具体的に何を使えばいいのかよくわからなくて
投げる方で悩むのはわかるけど
> とりあえずcatch(Exception e)とかしちゃってる
受ける方はどれ受けるべきかはわかってるでしょ
最終手段としてよくわからんけどエラーが発生したから終了するね
って言うならcatch(Exception e)もありだと思うが 終了というのがプログラムの終了のことなら逆にcatchしちゃだめだろう。 >>887
catch { }ではw
>>888
例外一つでプログラム終了していたら大概困るw 例外はありえない事態なんだからプログラム終了しなきゃまずいだろう >>889
それは逆で、プログラマが想定してない例外が発生したら
プログラムは停止してもらわないと困る。これが正しい考え方。
そもそも例外機構というのはそのためにある 最近部活の後輩が黒魔術みたいなコードを書くようになって困ってるんだが対策ない?
こんな感じのコードを後輩が書いてくるんだよ↓
public interface IMessenger {
__public MessageReceived();
}
public abstract class Messenger : IMessenger{
__public abstract void MessageReceived();
__public abstract void Retry();
} public class Mail : Messenger {
__public override void MessageReceived(){
____//処理
__}
__public override void Retry(){
____//処理
__}
}
public class Alarm : Messenger {
__public override void MessageReceived(){
____//処理
__}
__public override void Retry(){
____//処理
__}
}
public class Communication {
__public void SendMessage(IMesssenger message){
____SendMessage(message);
__}
__public void Received(){
____var received = GetMessage() as IMessage;
____received?.MessageReceived();
__}
} こんなんだったから
public class Communication{
__public void SendMessage(string message){
____SendMessage(message);
__}
__public void Received(){
____var received = GetMessage();
______switch(received.First()){
_______case "0":
_________MailEvent(received);
_________break;
_______case "1":
_________AlermEvent(received);
_________break
____}
__}
}
こんな感じで書くように矯正しといた
CSVで2文字で分けるって言ってるんだから
何が起こってるかわかるように書くことを意識してもらわないと まあ例外でプログラムは終了させるべきだよな
ただ客は例外が起きてもcatchで握りつぶしてスルーした方が文句言わないんだよな…… >>892
酷いな
MediatoRを使うようにアドバイスしてあげなよ >>892
2chのシステムは先頭の半角スーペースは除去するけど全角スペースは除去しない。
だから字下げは後者で >>889
> catch { }ではw
ごめん、何を言いたいのかわかん
処理部分も当然必要だけど何を受けるかの話だから(Exception e)の方が重要だろ? >>891
ちょっとMSに例外じゃなくエラーコード戻す設計にするようお前から言ってきてくんね?
W32APIはそうなってんのにFrameworkの方そうなってないじゃん byte*からbyte[]にする方法ってない?
new byte[64];みたいに新規確保してコピーしか方法ないんだろうか
Unsafe.As等で新規確保無しで出来るかと思って色々試してみたけど上手くいかない 「byte[]にする」が「byte[]とみなして扱えるようにする」って意味なら
全然別の型なんだしあるわけないでしょう。
そういう危なっかしい機能を排除してるのがC#の売りの一つだったはずなわけで
コピーする機能ならMarshalあたりにあるんじゃない? >>902
>「byte[]にする」が「byte[]とみなして扱えるようにする」って意味なら
そういうことです
あるわけないと言いますが、その逆はあるので出来るかなと思い
(byte*やref byteで先頭を指定し自作のstructとして読ませる。少しずらせばbyte[]を自作クラスとして読ませることも可能) >>903
>(byte*やref byteで先頭を指定し自作のstructとして読ませる。少しずらせばbyte[]を自作クラスとして読ませることも可能)
具体的なコード希望 その逆がマネージドじゃ難しいからね
無理じゃないかなあ
やっぱこれからはSpanですよスパンスパン >>904
public struct MyStruct { public int Value1, Value2, Value3, Value4 };
byte[] data = new byte[16] { 1,0,0,0, 2,0,0,0, 3,0,0,0, 4,0,0,0 };
ref var myStruct = ref Unsafe.As<byte, MyStruct>(ref data[0]);
これでmyStruct .Value1は1、myStruct .Value2は2, myStruct .Value3は3, myStruct .Value4は4と余計なコピー無しに直接読み書きできる
byte[]からclassの場合はFieldOffset指定して各フィールドを4バイト後ろにづらないと出来ないから実用は難しいけど一応可能 fixed (byte* ptr = &data[0]) *(MyStruct*)ptr;
と大体同じではあります やっぱりこういうことやりたければC++に池ってことなのでしょうか
記憶力悪いのでVSがC#ほど助けてくれないC++に行くのは億劫なため質問させてもらいました byte[]も参照型だからね、オブジェクトヘッダが付いてなければ扱えない
Span<T>でなければ、具体的なシナリオにも依るけど元からbyte[]で作って
TypeHandleとlengthのsizeof(IntPtr)*2分ずらした所を使い回す方が賢明
結局fiexdと一緒な訳だが、P/Invokeならbyte[]渡してもゼロコピーの筈だし
abstract class Union<T> where T : struct {
internal readonly IntPtr length;
public T Value;
}
みたいなオレオレ実装をILキャストした事もあったな…後はSafeBufferとか self containedって完全に依存なしになるわけじゃないのね
alpine用にself containedでビルドしても動かなかった
libstdc++とか色々インストールしたら動いたけどさ
dotnetコマンド同梱と比較してコンテナサイズも殆ど変わらないし意味あるのかなこれ SCDは.NETのランタイムを別途インストールじゃなくて同梱するってだけの話だしね
公式ドキュメントにも注釈あるけどLinuxは仕様上完全に断ち切るのは難しいんじゃない?
Windowsだと同梱のファイルだけでそのまま動くけど >>913
Windows配布用と割り切った方がいいのかもしれない
Linuxだと管理下のサーバーかコンテナが多いからSCに拘る必要もない 最近のバッチはみんなSCDにしてる
らくちんらくちん ちょくちょくポインタ代替機能についての質問があるけどさ
どんな用途でポインタを使いたいのかわかんないけど、大抵の場合はストリームで代用できるんじゃないのかな ポインタなんかアンマネージとのやり取りとBitmapdataでしか使ったことないな
アンマネージとのやり取りだとrefとかoutにしとけばあとは何も考えなくていいから助かる 「変数aが1,4,5,7のいずれかである場合」
という論理式を書く場合
(a==1) || (a==4) || (a==5) || (a==7)
とswitch文以外でもっと手っ取り早く書く方法ありますか? >>923
その表現が一番端的でわかりやすいのではないですか? レス数が900を超えています。1000を超えると表示できなくなるよ。