Telerik ListBoxにデータを流し込む方法 ASP.NET MVC5の場合
Day.cshtml
@(Html.Kendo().ListBox()
.Name("optional")
.Toolbar(toolbar => {
toolbar.Position(Kendo.Mvc.UI.Fluent.ListBoxToolbarPosition.Right);
toolbar.Tools(tools => tools
.TransferTo()
.TransferFrom()
.TransferAllTo()
.TransferAllFrom()
.Remove()
);
})
.ConnectWith("selected")
)
@(Html.Kendo().ListBox()
.Name("selected")
.Selectable(ListBoxSelectable.Multiple)
.BindTo(ViewBag.SelectUsers)
)
DayController.cs
//
List<SelectListItem> selectusers = new List<SelectListItem>();
var item = new SelectListItem();
item.Text = "担当者";
item.Value = "0101";
selectusers.Add(item);
ViewBag.SelectUsers = selectusers;
2017年12月26日火曜日
2017年12月25日月曜日
PHP mb_send_mail でのメール送信で日本語が化ける
PHP mb_send_mail でのメー^ル送信で日本語が化ける
PHPのソースがsjisなら
mb_internal_encoding("SJIS");
PHPのソースがsjisなら
mb_internal_encoding("SJIS");
上記の設定を追加する。
ラベル:
mb_send_mail,
PHP,
文字化け
2017年12月21日木曜日
Centos7 Oracle11.2 起動起動の設定
Centos7 Oracle11.2 起動起動の設定
元ネタ
CentOS7にOracle11gをインストールする
自動起動の設定
/etc/oratabの編集
oratabでdbstartとdbshutスクリプトによる起動と停止の対象にするかどうかを指定します。vim /etc/oratab
#orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_1:N orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_1:Y
起動スクリプト作成
#! /bin/sh export PATH=/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/:${PATH} export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 export NLS_LANG=Japanese_Japan.UTF8 export ORACLE_SID=orcl ${ORACLE_HOME}/bin/lsnrctl start ${ORACLE_HOME}/bin/dbstart ${ORACLE_HOME}
停止スクリプト作成
#! /bin/sh export PATH=/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/:${PATH} export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 export NLS_LANG=Japanese_Japan.UTF8 export ORACLE_SID=orcl ${ORACLE_HOME}/bin/lsnrctl stop ${ORACLE_HOME}/bin/dbshut ${ORACLE_HOME}
systemdの設定
[Unit] Description=oracle After=network.target
[Service] Type=forking #EnvironmentFile=/etc/sysconfig/oracle ExecStart=/home/oracle/bin/startOracle.sh ExecStop=/home/oracle/bin/stopOracle.sh User=oracle [Install] WantedBy=multi-user.target
systemdの登録
systemctl enable oracle.service
元ネタ
CentOS7にOracle11gをインストールする
自動起動の設定
/etc/oratabの編集
oratabでdbstartとdbshutスクリプトによる起動と停止の対象にするかどうかを指定します。vim /etc/oratab
#orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_1:N orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_1:Y
起動スクリプト作成
#! /bin/sh export PATH=/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/:${PATH} export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 export NLS_LANG=Japanese_Japan.UTF8 export ORACLE_SID=orcl ${ORACLE_HOME}/bin/lsnrctl start ${ORACLE_HOME}/bin/dbstart ${ORACLE_HOME}
停止スクリプト作成
#! /bin/sh export PATH=/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/:${PATH} export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 export NLS_LANG=Japanese_Japan.UTF8 export ORACLE_SID=orcl ${ORACLE_HOME}/bin/lsnrctl stop ${ORACLE_HOME}/bin/dbshut ${ORACLE_HOME}
systemdの設定
[Unit] Description=oracle After=network.target
[Service] Type=forking #EnvironmentFile=/etc/sysconfig/oracle ExecStart=/home/oracle/bin/startOracle.sh ExecStop=/home/oracle/bin/stopOracle.sh User=oracle [Install] WantedBy=multi-user.target
systemdの登録
systemctl enable oracle.service
2017年12月19日火曜日
久々にOrcaleチューニング
設定方法忘れたので、他からメモを拝借
DBAの知識ないから、DBの設定ぶっ壊して、1から入れなおしかなーなんて思える状態から脱却できたので、メモっておこう!
SGAの現在のメモリ割当を確認。
sqlplus / as sysdba
show parameter sga_;
NAME TYPE VALUE
------------- ------------ -------
sga_max_size big integer 2G
sga_target big integer 2G
ここで、以下のように容量変更を実行するのはダメ。
sqlplus / as sysdba
alter system set sga_max_size = 4G scope=spfile;
alter system set sga_target = 4G scope=spfile;
なぜなら、メモリの物理的な割当を超過したSGAを設定すると、壊れる。
以下を実行し、memory_max_target、memory_targetがそれにあたる。
メモリ割当容量を変更する場合には、この物理的な割当容量を確認する手順は必須だ。
MEMORY_MAX_TAEGET、MEMORY_TARGETの説明によると、MEMORY_TARGETがOracleが利用するメモリ割当量で、その範囲内でSGAやPGAを設定する。
つまり、いきなりSGAのメモリ割当量を変更し、MEMORY_TARGET割当量≦SGA割当量となると、設定としてはNGだ。
以下を実行し、memory_max_target、memory_targetがそれにあたる。
メモリ割当容量を変更する場合には、この物理的な割当容量を確認する手順は必須だ。
sqlplus / as sysdba
show parameter memory_;
NAME TYPE VALUE
------------------------- ------------ --------
hi_shared_memory_address integer 0
memory_max_target big integer 3G
memory_target big integer 3G
shared_memory_address integer 0
MEMORY_MAX_TAEGET、MEMORY_TARGETの説明によると、MEMORY_TARGETがOracleが利用するメモリ割当量で、その範囲内でSGAやPGAを設定する。
つまり、いきなりSGAのメモリ割当量を変更し、MEMORY_TARGET割当量≦SGA割当量となると、設定としてはNGだ。
よって、まず変更すべきはSGAではなくMEMORY_TARGETだ。
また、SGAに4GBを割り当てたいなら、MEMORY_TARGETは4GBより大きくなければならない。
それぞれの項目の説明はSGA_MAX_SIZE、SGA_TARGETを参照してほしい。
また、SGAに4GBを割り当てたいなら、MEMORY_TARGETは4GBより大きくなければならない。
それぞれの項目の説明はSGA_MAX_SIZE、SGA_TARGETを参照してほしい。
sqlplus / as sysdba
alter system set memory_max_target = 5G scope=spfile;
alter system set memory_target = 5G scope=spfile;
そのあとにSGAを変更する。
sqlplus / as sysdba
alter system set sga_max_size = 4G scope=spfile;
alter system set sga_target = 4G scope=spfile;
んでインスタンス再起動
sqlplus / as sysdba
shutdown immediate
startup
これで、Oracleで利用する物理メモリ容量の増加と、SGA容量の増加を行える。
で、これから俺がやらかした状態と、解消手順。
壊した経緯
1.もともと物理的に1.6GBくらいしか割り当ててない。
2.物理割当を確認せずにSGAを4GBに変更。
3.インスタンスの再起動ができなくなる。
壊した経緯
1.もともと物理的に1.6GBくらいしか割り当ててない。
2.物理割当を確認せずにSGAを4GBに変更。
3.インスタンスの再起動ができなくなる。
再起動すると、こんなメッセージが。
ORA-00844: Parameter not taking MEMORY_TARGET into account
ORA-00851: SGA_MAX_SIZE 4294967296 cannot be set to more than MEMORY_TARGET 1690304512.
SGA_MAX_SIZEがMEMORY_TARGETを超えてんぞコラってことみたい。
こうなると、もうインスタンスへの接続もできないので、以下の手順を踏まないと直せない。
こうなると、もうインスタンスへの接続もできないので、以下の手順を踏まないと直せない。
1.spfileからpfileを生成する。
%ORACLE_HOME%\database\INIT<SID>.ORAが作成されます。
%ORACLE_HOME%は、11gのデフォルトなら「D:\app\Administrator\product\11.2.0\dbhome_1」とかで、
INIT<SID>.ORAは、インスタンス名が「HOGE」なら「INIThoge.ORA」ってファイルがある。
2.INIT<SID>.ORAをテキストエディタで編集する。
以下では、MEMORY_TARGETを5GB、SGAを4GBに設定してみる。
3.INIT<SID>.ORAを利用してインスタンスを起動する。
注意する点は、指定するのはファイル名だけではなくてフルパスで指定する。
4.起動できたら、pfileの設定をspfileに書き戻す。
注意する点は、指定するのはファイル名だけでいい。
5.んでいつも通りのインスタンスの再起動をしてみて、起動すればOK。
/ as sysdba
create pfile from spfile;
%ORACLE_HOME%\database\INIT<SID>.ORAが作成されます。
%ORACLE_HOME%は、11gのデフォルトなら「D:\app\Administrator\product\11.2.0\dbhome_1」とかで、
INIT<SID>.ORAは、インスタンス名が「HOGE」なら「INIThoge.ORA」ってファイルがある。
2.INIT<SID>.ORAをテキストエディタで編集する。
以下では、MEMORY_TARGETを5GB、SGAを4GBに設定してみる。
<SID>.__sga_target=4294967296
*.memory_target=5368709120
*.sga_max_size=4294967296
*.sga_target=4294967296
3.INIT<SID>.ORAを利用してインスタンスを起動する。
注意する点は、指定するのはファイル名だけではなくてフルパスで指定する。
sqlplus / as sysdba
startup pfile="D:\app\Administrator\product\11.2.0\dbhome_1\database\INIT<SID>.ORA"
4.起動できたら、pfileの設定をspfileに書き戻す。
注意する点は、指定するのはファイル名だけでいい。
/ as sysdba
create spfile='SPFILE<SID>.ORA' from pfile='INIT<SID>.ORA';
5.んでいつも通りのインスタンスの再起動をしてみて、起動すればOK。
sqlplus / as sysdba
shutdown immediate
startup
2017年12月15日金曜日
ASP.NET MVC でKENDO UI GridViewから 行選択時の値を取得する
@(Html.Kendo().Grid<Works.Models.BBSViewModel>()
.Name("BBSGrid")
.Columns(columns => {
columns.Bound(p => p.ID).Title("ID").Width(40);
columns.Bound(p => p.AttachFile).HeaderTemplate("<i class='fa fa-paperclip fa-lg'></i>").Width(20);
columns.Bound(p => p.PublishedDate).Width(100).Format("{0:yyyy/MM/dd HH:mm}").Title("掲載日時");
columns.Bound(p => p.Title).Title("件名");
columns.Bound(p => p.SectionName).Width(90).Title("掲載部門");
columns.Bound(p => p.EmployeeName).Width(70).Title("掲載者");
})
.HtmlAttributes(new { style = "height: 500px;" })
.Scrollable()
.Selectable(selectable => selectable
.Mode(GridSelectionMode.Single)
.Type(GridSelectionType.Row))
.Events(events => events
.Change("onChange")
)
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("BBS_Read", "BBS"))
)
)
</div>
<script type="text/javascript">
function onChange(args) {
/*
var selected = $.map(this.select(), function (item) {
return $(item).text() + "|";
});
alert(selected);
*/
var goods = this.select();
goodsID = this.dataItem(goods).ID;
alert(goodsID);
}
</script>
.Name("BBSGrid")
.Columns(columns => {
columns.Bound(p => p.ID).Title("ID").Width(40);
columns.Bound(p => p.AttachFile).HeaderTemplate("<i class='fa fa-paperclip fa-lg'></i>").Width(20);
columns.Bound(p => p.PublishedDate).Width(100).Format("{0:yyyy/MM/dd HH:mm}").Title("掲載日時");
columns.Bound(p => p.Title).Title("件名");
columns.Bound(p => p.SectionName).Width(90).Title("掲載部門");
columns.Bound(p => p.EmployeeName).Width(70).Title("掲載者");
})
.HtmlAttributes(new { style = "height: 500px;" })
.Scrollable()
.Selectable(selectable => selectable
.Mode(GridSelectionMode.Single)
.Type(GridSelectionType.Row))
.Events(events => events
.Change("onChange")
)
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("BBS_Read", "BBS"))
)
)
</div>
<script type="text/javascript">
function onChange(args) {
/*
var selected = $.map(this.select(), function (item) {
return $(item).text() + "|";
});
alert(selected);
*/
var goods = this.select();
goodsID = this.dataItem(goods).ID;
alert(goodsID);
}
</script>
ラベル:
ASP.NET MVC,
kendo ui,
行選択,
選択,
値取得
Dapperでレコードインサート後にidentifyの値を取得する方法
string sql = @"
INSERT INTO [MyTable] ([Stuff]) VALUES (@Stuff);
SELECT CAST(SCOPE_IDENTITY() as int)";
var id = connection.Query<int>(sql, new { Stuff = mystuff}).Single();
InsertのSQLを発行後、SELECTでSCOPE_IDENTITY()を発行してIdentityの値を取得する。
1回のSQL内に二つのSQLを入れてやればOK
この発行は無かったからとても良いコーディングだと思います。
レコード追加後、Identityの値でフォルダを作成して、その中に添付ファイルを
保存するロジックが楽になりました。
2017年12月13日水曜日
ASP.NET MVCでJavascriptで使うUrlを動的に変更したい
ASP.NET MVCでJavascriptで使うurlを動的に変更したい
例
/Home/Index
と
/
この場合、Javascriptから画像を表示する場合
.././Images
と
./Images 別々に記述しないと画像にたどり着けない
Razarの場合は、 @Url.Content("~/Images") でOK
元ネタ http://www.processinginfinity.com/weblog/2014/07/17/Get-App-Base-URL-in-Script
例
/Home/Index
と
/
この場合、Javascriptから画像を表示する場合
.././Images
と
./Images 別々に記述しないと画像にたどり着けない
Razarの場合は、 @Url.Content("~/Images") でOK
元ネタ http://www.processinginfinity.com/weblog/2014/07/17/Get-App-Base-URL-in-Script
index.cshtml
app.js
2017年12月9日土曜日
bootstrap admin template
Visual Studio 2017のギャラリーに AdminLTEのテンプレートがある。
これでMVCのテンプレートProjectを作ってくれる。
でも、自分が選択したのは SB Admin2でした。
SB Admin2をgithubよりDownload後
MVC Projectに SB Admin2のdist内のcssとjsをbundleに追加
vendorにある、metisMenuも同様
font-awesomeはnugetからインストールすればOkでした。
metisMenuもnugetからインストール出来ました。
これでMVCのテンプレートProjectを作ってくれる。
でも、自分が選択したのは SB Admin2でした。
SB Admin2をgithubよりDownload後
MVC Projectに SB Admin2のdist内のcssとjsをbundleに追加
font-awesomeはnugetからインストールすればOkでした。
metisMenuもnugetからインストール出来ました。
2017年12月2日土曜日
MS-SQL / SQL Server / fnReplaceZenkakuToHankaku 全角の文字列を半角に変換する方法
CREATE FUNCTION [dbo].[fnReplaceZenkakuToHankaku]
(
@StrVal nvarchar(100)
)
RETURNS nvarchar(100)
BEGIN
DECLARE @Result nvarchar(100)
DECLARE @TempStr nchar(1)
DECLARE @i int
DECLARE @UniCode int
SET @Result = ''
SET @i = 1
WHILE (@i <= LEN(@StrVal))
BEGIN
SET @UniCode = UNICODE(SUBSTRING(@StrVal,@i,1))
IF (@UniCode = 12288) --空欄の場合。
SET @TempStr = N''
ELSE IF ((@UniCode >= 65280) AND (@UniCode <= 65519)) --全角の場合。
SET @TempStr = NCHAR(@UniCode-65248)
ELSE
SET @TempStr = SUBSTRING(@StrVal,@i,1)
SET @Result = @Result + @TempStr
SET @i = @i + 1
END
RETURN @Result
END
登録:
投稿 (Atom)