Top > チラ裏

チラ裏 Edit

node.js テーブル編集モジュール 18-07-21 Edit

高機能なモジュール。触ってみようと思います。

https://www.npmjs.com/package/editable-grid

Confluence UserMacro から Manager 系オブジェクトにアクセスする方法 18-06-21 Edit

例えば LikeManager ならこんな感じ。

  0
  1
  2
  3
#set($containerManagerClass = $content.class.forName('com.atlassian.spring.container.ContainerManager'))
#set($getInstanceMethod = $containerManagerClass.getDeclaredMethod('getInstance',null))
#set($containerManager = $getInstanceMethod.invoke(null,null))
#set($containerContext = $containerManager.containerContext)
#set($likeManager= $containerContext.getComponent('likeManager'))

参考元:
https://www.ricksoft.jp/qa/questions/19529917/answers/19529930

C#Script #load はスクリプトファイルの相対パスで指定 18-05-26 Edit

csi dir/Hoge.csx

とし,その Hoge.csx の中で

#load "./Other.csx"

と書いた場合, dir/Other.csx がロードされるようです。あくまでそのスクリプトファイルからの相対パスで検索されるみたいです。あまり情報なかったので書き残しておきます。

PowerShell class から別ファイルの class にアクセスできない 18-05-26 Edit

かなり厳しい仕様…。

http://www.vwnet.jp/windows/PowerShell/2017082402/ClassInClass.htm

New-Object して使用する分にはOKなのですが,別ファイルの class を継承元に指定したり,その class の static method を呼ぶこともできないようです。ひー。

C# mono(mac環境) でシャドーコピー実行に失敗する 18-05-25 Edit

こんなエラーが出ました。
シャドーコピー実行する exe が参照する dll がどうやらコピーされていない模様。

$ mono ./../AdelCommand.exe

Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'AdelDevKit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
File name: 'AdelDevKit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'


Server stack trace: 
  at (wrapper managed-to-native) System.AppDomain.ExecuteAssembly(System.AppDomain,System.Reflection.Assembly,string[])
  at System.AppDomain.ExecuteAssemblyInternal (System.Reflection.Assembly a, System.String[] args) [0x00029] in <bb7b695b8c6246b3ac1646577aea7650>:0 
  at System.AppDomain.ExecuteAssembly (System.String assemblyFile, System.String[] args) [0x00008] in <bb7b695b8c6246b3ac1646577aea7650>:0 
  at (wrapper remoting-invoke-with-check) System.AppDomain.ExecuteAssembly(string,string[])
  at (wrapper xdomain-dispatch) System.AppDomain.ExecuteAssembly(object,byte[]&,byte[]&,string,string[])

Exception rethrown at [0]: 
  at (wrapper xdomain-invoke) System.AppDomain.ExecuteAssembly(string,string[])
  at (wrapper remoting-invoke-with-check) System.AppDomain.ExecuteAssembly(string,string[])
  at AdelCommand.Program.Main (System.String[] args) [0x00071] in <e800117528bb4c58a0bba7a8c56c52d9>:0 

ApplicationBase を指定するようにしたら動くようになりました。

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 
 
 
 
 
 
-
|
|
!
 
            // 本体を実行
            var dllDir = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory.FullName + Path.DirectorySeparatorChar + @"Dll";
            var setup = new AppDomainSetup() { ShadowCopyFiles = "true", ApplicationBase = dllDir, };
            var appDomain = AppDomain.CreateDomain("AdelCommand_Host", AppDomain.CurrentDomain.Evidence, setup);
            var executablePath = dllDir + Path.DirectorySeparatorChar + @"AdelCommandMain.exe";
            if (!File.Exists(executablePath))
            {
                Console.Error.WriteLine("指定のファイルが見つかりません。'{0}'", executablePath);
                return 1;
            }
            return appDomain.ExecuteAssembly(executablePath, args);

bash 標準出力かエラー出力か確認する 18-05-23 Edit

それぞれ出力をオフにして実行してどちらかでているか確認するようにしてます。

  0
  1
  2
  3
  4
# 標準出力をオフにして実行
$ (command) 1>/dev/null
 
# 標準エラーをオフにして実行
$ (command) 2>/dev/null

参考:
https://qiita.com/laikuaut/items/e1cc312ffc7ec2c872fc

PowerShell クラス内で Invoke-Expression したときに標準出力とエラー出力をターミナルに出力させる方法 18-05-23 Edit

Invoke-Expression "& `"$exePath`" $aArg" | Out-Host

色々試してこれにたどりつきました。
pwsh 6.0 macos 環境で確認したところ,この書き方をすると一定時間か改行を検知されたら出力されるようでした。
標準出力は標準出力に,エラー出力はエラー出力に出力されます。
実行時間が長いコマンドだったとしてもターミナルが止まって見えないので安心!

PowerShell クラスのコンストラクタやメソッドの中で Write-Output してもターミナルに出力されない 18-05-23 Edit

そういう仕様っぽいです。これは分かりにくい…。
https://stackoverflow.com/questions/39413401/powershell-5-class-write-debug-or-write-verbose-output-in-constructor-or-method

とりあえず標準出力するなら Write-Host を使う。デバッグ用途ならこれが手軽。

こんな記事もありました。

https://stackoverflow.com/questions/4998173/how-do-i-write-to-standard-error-in-powershell

C# .net core に移行するか検討 18-03-17 Edit

engineplan にて、せっかくだし勉強も込みで移行を検討。

https://docs.microsoft.com/ja-jp/dotnet/core/porting/libraries#net-framework-technologies-unavailable-on-net-core

AppDomain が使えないらしい。代わりの機能はあるらしいが検索するもまだまだ情報が少ない状況。
移行は見送ります。

C# async/await のコンパイル結果 18-01-17 Edit

CIL レベルではどういう実装になるのかなぁと調べていたところ、ほぼ答えとなる情報がこちらに!
クラスを自動生成してたんですね。納得!

http://blog.xin9le.net/entry/2012/08/06/123916

C++ マクロをインクルードパスの一部に使用する 17-10-05 Edit

できたー!

Everything is expanded.Everything is shortened.
  1
  2
  3
 
 
 
#define HEADER_DIR foo
#define AE_INCLUDE_PATH(x) <x>
#include AE_INCLUDE_PATH(HEADER_DIR/hoge.hpp)

Windows C++ 不正なメモリアクセス時にコールバック処理をする方法 17-10-04 Edit

SetUnhandledExceptionFilter を使うと、NULLアクセス時の例外発生時など死ぬ直前に特定の処理を実行できるらしいです。

http://d.hatena.ne.jp/s-kita/20130502/1367497803

Xcode プロパティリストファイルの解析 17-09-26 Edit

pbxproj はプロパティリスト(リンク先:wikipedia)
これをC#で読み書きするライブラリがあるみたいです。ありがたや!

https://github.com/claunia/plist-cil

Xcode pbxproj の仕様 17-09-26 Edit

自動生成するために仕様を知りたくて調査。
公式のドキュメントは見つからず、以下のサイトを参考にします。ありがたや!

http://www.monobjc.net/xcode-project-file-format.html
https://qiita.com/yokomotod/items/02e395e99bb891d27f67

Xcode pbxproj の中にあるハッシュ値(UUID) 17-09-25 Edit

96bit の文字列。手動でいじる場合ランダムでいいのかなぁとネットの海をみていたらランダムでよさそう。

https://stackoverflow.com/questions/22648347/project-pbxproj-hashing-for-files-what-hash-is-used-and-how

Xcode ビルドしたアプリのターゲットOSの指定方法 17-09-24 Edit

よく勘違いしがちで自分も忘れがち。
OSX SDK 10.11 でビルドしたアプリが 10.11 じゃないと動かない、というわけではなくビルドの設定で指定した OS 以上のバージョンで動きます。

http://blog.imple.co.jp/archives/103

PowerShell 空白を含む実行ファイルを引数有りで実行する方法 17-09-22 Edit

自力で分からず、検索するもなかなか見つからず。やっとようやく見つけました。

Invoke-Expression "& `"$scriptPath`" $argumentList"

Powershell: how to invoke a second script with arguments from a script

C# コマンドライン引数を解析するライブラリ 17-09-17 Edit

こんなものがあるらしいです。

https://wiki.dobon.net/index.php?.NET%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%A6%B5%E6%2F108

(実際使ったら少し使い勝手が悪く、結局導入は見送り。)

C# MEF と AppDomain でDLLをシャドウコピーする 17-09-13 Edit

分かりやすいサンプル。ありがたや!

https://coderwall.com/p/fusuww/remove-mef-plugin-at-runtime

C# で DLL を Assembly やら AppDomain を使わず簡単に読み込む 17-09-13 Edit

MEF というものがあるらしいです。やってみたらめちゃんこ簡単でした。
そしてホットリロードにも対応しているっぽい?DLL のファイルロックを回避できるかどうかが気になります。
https://tocsworld.wordpress.com/2014/02/16/mef%E3%81%AB%E3%82%88%E3%82%8Bc%E3%82%A2%E3%83%89%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%9C%E6%88%90/

ImportMany を使わない場合はこんな感じ。

Everything is expanded.Everything is shortened.
  1
 
var plugins = container.GetExportedValues<IPlugin>().ToArray();

C# の DLL をファイルロックせずに読み込む 17-09-12 Edit

シャドウコピーという機能を使えばいけるみたい。いちいちコピーしなくてもいいんですね!
http://d.hatena.ne.jp/akiramei/20071111/1194786373

高速なハッシュ関数 17-08-20 Edit

まとめページ。ありがたや!
http://www.yosbits.com/wordpress/?p=1442

[スライド] スクールガールストライカーズの内製クライアントエンジン 17-08-20 Edit

キャッシュにのりやすくすると消費電力が減る、あまり考えてなかったなぁ。参考になりました!
http://www.jp.square-enix.com/info/images/image_technical_seminar2014_06/pdf/SQEX_DevCon_sugimoto.pdf

シフト演算の"31" 17-07-12 Edit

シフト演算を使うC#からはき出されたILコード。
突如出てくる31に最初はてなマークだったんですが、これは32以上シフトさせないようにしてるんですね。
std::max(val, 2の累乗-1) は and でできるってことなんですね。はー!知らなかった!

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
 
 
-
|
!
// 元コード(C#)
        public static uint ShiftRight(uint aA0, int aA1)
        {
            return aA0 >> aA1;
        }
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
// IL
.method public hidebysig static uint32  ShiftRight(uint32 aA0,
                                                   int32 aA1) cil managed
{
  // コード サイズ       7 (0x7)
  .maxstack  8
  IL_0000:  ldarg.0
  IL_0001:  ldarg.1
  IL_0002:  ldc.i4.s   31
  IL_0004:  and
  IL_0005:  shr.un
  IL_0006:  ret
} // end of method BinaryOpExpression::ShiftRight

CILをC#から読み込む 17-07-06 Edit

CILバイトコードを解析してC#で扱いやすい形にする方法。とても丁寧なサンプル!
http://badamczewski.blogspot.jp/2011/02/il-reading.html

CILでGeneric 17-07-06 Edit

びっくりマークの意味は分かった。ILのGeneric表現もっと知りたいー!
https://stackoverflow.com/questions/9811456/generics-with-il

CIL命令一覧その2 17-07-06 Edit

自動翻訳だけど日本語!ありがたい!
https://msdn.microsoft.com/ja-jp/library/system.reflection.emit.opcodes(v=vs.110).aspx

CIL命令一覧 17-07-04 Edit

wikipediaさん。pdfより軽いのでありがたい!
https://en.wikipedia.org/wiki/List_of_CIL_instructions

ノイズ関数 17-07-04 Edit

シェーダー上で時々使うノイズ関数。シンプル&便利ー!
https://www.shadertoy.com/view/4lf3DH

以下、コードの転載。

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 
 
-
|
!
 
 
-
|
!
 
-
|
!
 
 
 
 
-
|
|
|
|
!
 
-
|
!
 
 
-
|
!
 
 
 
-
|
!
 
-
|
|
|
|
|
|
|
!
 
-
|
|
|
|
|
|
|
|
!
 
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
|
!
 
-
|
!
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
|
|
!
 
-
|
!
 
 
-
|
|
|
|
|
|
|
|
|
|
|
!
 
//note: normalized rand, [0;1[
float nhash21( vec2 n )
{
  return fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* 43758.5453);
}
 
vec2 nhash22( vec2 n )
{
  return fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* vec2(43758.5453,35458.5734));
}
vec2 shash22( vec2 p )
{
    return nhash22(p)*2.0-1.0;
}
 
//note: [-1;1]
//note: honestly stolen from iq: https://www.shadertoy.com/view/Xsl3Dl
vec3 nhash33( vec3 p )
{
    p = vec3( dot(p,vec3(127.1,311.7, 74.7)),
              dot(p,vec3(269.5,183.3,246.1)),
              dot(p,vec3(113.5,271.9,124.6)));
    return fract(sin(p)*43758.5453123);
}
vec3 shash33( vec3 p )
{
    return -1.0+2.0*nhash33(p);
}
 
vec2 smootherstep( vec2 t )
{
    return t*t*t*(t*(t*6.0-15.0)+10.0);
}
 
//note: value noise
float nhash11( float n )
{
    return fract(sin(n)*43758.5453);
}
float nvnoise21( vec2 x )
{
    vec2 p = floor(x);
    vec2 f = fract(x);
    f = smoothstep(0.0,1.0,f);
    float n = p.x + p.y*57.0;
    float res = mix( mix( nhash11(n+  0.0), nhash11(n+  1.0),f.x),
                     mix( nhash11(n+ 57.0), nhash11(n+ 58.0),f.x), f.y);
    return res;
}
float nfbm21( vec2 p )
{
    mat2 m = mat2( 0.80,  0.60, -0.60,  0.80 );
    float f = 0.0;
    f += 0.50000*nvnoise21( p ); p = m*p*2.02;
    f += 0.25000*nvnoise21( p ); p = m*p*2.03;
    f += 0.12500*nvnoise21( p ); p = m*p*2.01;
    f += 0.06250*nvnoise21( p ); p = m*p*2.04;
    f += 0.03125*nvnoise21( p );
    return f / (0.5+0.25+0.125+0.06250+0.03125);
}
 
 
//note: gradient noise
float sgnoise21( vec2 p )
{
    vec2 i = floor( p );
    vec2 f = fract( p );
    vec2 u = smoothstep( 0.0, 1.0, f );
    //vec2 u = smootherstep( f );
 
    //return dot( f-vec2(1.0,0.0), vec2(0.5,0.5) );
    //return dot( shash22( i + vec2(1.0,0.0) ), f - vec2(1.0,0.0) );
    
   return mix( mix( dot( shash22( i + vec2(0.0,0.0) ), f - vec2(0.0,0.0) ),
                    dot( shash22( i + vec2(1.0,0.0) ), f - vec2(1.0,0.0) ), u.x),
               mix( dot( shash22( i + vec2(0.0,1.0) ), f - vec2(0.0,1.0) ), 
                    dot( shash22( i + vec2(1.0,1.0) ), f - vec2(1.0,1.0) ), u.x), u.y);
}
float ngnoise21( vec2 p )
{
    return 0.5 + 0.5 * sgnoise21( p );
}
 
//note: [-1;1]
float sgnoise31( in vec3 p )
{
   vec3 i = floor( p );
   vec3 f = fract( p );
 
    vec3 u = f*f*(3.0-2.0*f);
 
   return mix( mix( mix( dot( shash33( i + vec3(0.0,0.0,0.0) ), f - vec3(0.0,0.0,0.0) ), 
                         dot( shash33( i + vec3(1.0,0.0,0.0) ), f - vec3(1.0,0.0,0.0) ), u.x),
                    mix( dot( shash33( i + vec3(0.0,1.0,0.0) ), f - vec3(0.0,1.0,0.0) ), 
                         dot( shash33( i + vec3(1.0,1.0,0.0) ), f - vec3(1.0,1.0,0.0) ), u.x), u.y),
               mix( mix( dot( shash33( i + vec3(0.0,0.0,1.0) ), f - vec3(0.0,0.0,1.0) ), 
                         dot( shash33( i + vec3(1.0,0.0,1.0) ), f - vec3(1.0,0.0,1.0) ), u.x),
                    mix( dot( shash33( i + vec3(0.0,1.0,1.0) ), f - vec3(0.0,1.0,1.0) ), 
                         dot( shash33( i + vec3(1.0,1.0,1.0) ), f - vec3(1.0,1.0,1.0) ), u.x), u.y), u.z );
}
float ngnoise31( in vec3 p )
{
    return 0.5 + 0.5 * sgnoise31( p );
}
 
float nfbm31( vec3 q )
{
    const mat3 m = mat3( 0.00,  0.80,  0.60,
                    -0.80,  0.36, -0.48,
                    -0.60, -0.48,  0.64 );
 
    float f = 0.0;
    f  = 0.5000*ngnoise31( q ); q = m*q*2.01;
    f += 0.2500*ngnoise31( q ); q = m*q*2.02;
    f += 0.1250*ngnoise31( q ); q = m*q*2.03;
    f += 0.0625*ngnoise31( q ); q = m*q*2.01;
    
    return f;
}

xenko さんを触ってみた 17-07-03 Edit

シリコンスタジオさん制作のオープンソースなゲームエンジン。たぶん Made in Japan!わくわく!
https://xenko.com/

UIの参考にと思って触ってみました。

プロパティグリッドの戻るボタンはシンプルな解決法で良いなぁと思いました。
Unity さんだとアセットをドラッグしようとして誤ってシングルクリックしてプロパティウィンドウの内容が変わる事故が頻発する私。
Unity さんでも戻る方法ってあるんですかね?


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: (1490d)