2010/12/21

MySQL 今月のデータを抽出

month を使用する。
-- 当月を表示
SELECT MONTH(NOW())
-- 当月の名前を表示
SELECT MONTHNAME(NOW())
なかなか便利な関数である。
これを抽出条件にする。
SELECT * FROM テーブル名 WHERE MONTH(now()) = MONTH( 日付型カラム ) 
スマートな感じでよい。

phpMyAdminのタイムアウト時間を変更

「libraries¥config.default.php」ファイルを変更する。

ログインのタイムアウト時間は「LoginCookieValidity」キーで変更。

$cfg['LoginCookieValidity'] = 1440;

SQL実行時などのタイムアウト時間を延ばすためには
「ExecTimeLimit」キーを変更する。

$cfg['ExecTimeLimit'] = 300;

2010/12/16

Firefoxの「新しいタブ」で表示されるページをカスタマイズ

NewTabURL
https://addons.mozilla.org/ja/firefox/addon/2221/

Firefoxで新しいタブを開く際、デフォルトだと空白のページが表示される。
これを任意のページに変更することができるアドオンだ。
かゆいところに手が届く。

2010/12/13

ASP.NETにおけるチルダの扱い

ASP.NETのマスターページでは、チルダ(~)で自動的に相対パスを作ってくれる。
しかし、マスターページのコンテンツプレースホルダにチルダを使用すると無視されてしまう。
<asp:content contentplaceholderid="HeaderContents" id="Head" runat="server">
<link href="~/CSS/Common.css" rel="stylesheet" type="text/css"></link>
</asp:content>
確かに自動的に相対パスを取得するのだから、各ページで設定というのはよくわからないはなしになってくる。チルダはマスターページのテンプレートに対しては有効である。

ただ、スクリプトファイルのリンクを張る場合に使用する「Control.ResolveClientUrl」メソッド。
これを使うとちゃんと取得してくれる。
<link href="<%= this.ResolveClientUrl("~/CSS/Common.css") %>" rel="stylesheet" type="text/css" />
なかなか奥深い。

2010/12/10

2010/12/09

A5:SQLでE_FAIL状態を返しました

「データプロバイダまたはほかのサービスが E_FAIL状態を返しました。」
A5:SQLで時折こんなエラーが出るときがある。
まぁ、ODBCのエラーということなのだろうが。

どうもこれは日付型のカラムに初期値(0000-00-00 00:00:00)が存在していると起こるエラーらしい。
update [テーブル名] set [日付カラム] = NOW() where [日付カラム] = '0000-00-00 00:00:00';
こんな感じで一気に直せる。

2010/12/02

Opera USBを日本語化

Opera USBはUSBメモリに入れて持ち運べるOperaである。
通常はメニュー等の表記が英語であるが、このまま使うことに抵抗がある場合 international version をダウンロードすれば日本語化できる。

[Menu] - [Settings] - [Preferences]を開き、[General]タブの[Language - Details]。
LanguagesのUser interface languageでOpera USBのフォルダの中にある[locale]から日本語(ja)を選択すれば即座に日本語になる。
もちろん言語ファイルを変更すれば、そのほかの言語にも簡単に切り替えることができる。


こうやってブラウザを持ち歩くことで、様々な環境のテストに使用することもできるので便利だ。

2010/12/01

Visual Studioでブレークポイントが設定できない?

Visual Studioでブレークポイントを挿入すると、このように赤丸が表示される。
が、しかし。
この赤丸が表示されない時がある。

[ツール]-[オプション]-[テキストエディタ]-[全般]
にある、インジゲータマージンが非表示になっているとこういう表示になる。

しばらくこれに気付かなかったが、知らないと意外と焦る……と思う。

2010/11/24

MySQLのコメント構文

一行(文末まで)
「#」
「-- 」 *気を付けたいのは半角スペースが入る。

複数行
「/* */」

chromeで好きなページで新しいタブを開く

chromeの拡張機能である「New Tab Redirect!」をインストールすると、新しいタブを開くときにページを指定することができる。しかもこの拡張機能はページだけではなくローカルマシンの任意のフォルダにもアクセスすることができる。

「よくアクセスするサイト」や「最近閉じたウィンドウやタブ」が気に入らない人におすすめだ。

2010/11/18

Office文章の個人情報を削除する(Office2003,XP)

officeファイルに個人情報がひっそりと保存されており、思わぬところから情報が流出してしまうケースも考えられる。Office2007以降ではメニューに統合されているが(http://office.microsoft.com/ja-jp/word-help/HP005190102.aspx)、Officeが2003の場合は削除ツールを使うのが確実だ。

Microsoftから提供されている、削除用のアドオンを追加する。
その名も「隠しデータ削除ツール(Remove Hidden Data Tool)」。
ダウンロードをしてインストールするだけだ。特別な作業は必要ない。

インストールを行うと、[ファイル(F)]-[隠しデータの削除(T)]があるので、これを実行する。

実行するのだが…実行して削除するファイルを選択しなければならない。
開いているファイルの隠しデータをそのまま削除できればよかったのだが、どうもそれはできない。後から作った感モリモリの微妙なツールである。

今さら2003であるが、まだ使っているところは多いと思われるので、情報の流出に敏感な場合は使ってみるといいかもしれない。

2010/11/12

発想の転換―『年収200万からの貯金生活宣言』


本書は具体的な貯金術に関しての記述はない。あるのはお金との付き合い方である。それも、よく考えてみれば至極当たり前のことであったりする。

現代社会において生きてゆくためにはお金との付き合いは避けられない。言ってみればお金との付き合い方というのは、生きていくために必要な一つのスキルであるといえる。
しかしそのスキルは、なんとなく親から教わり、なんとなく過ごしているという人が多いのだと思う。しかし、その「なんとなく」が最も危険であり、知らないうちに消費を繰り返してしまう「癖」がついてしまうのだ。

お金と付き合っていくかを考える手助けをしてくれる本であるといえる。

「何に、いくら使うのか」

それを意識するだけでも変わってくる。

年収200万というのはインパクトを与えるだけのタイトルだが、月末になるといつの間にか財布からお金が消えてしまう人に特にお勧めできると思う。
お金の使い方を考えていくうえで、3か月トレーニングの方法が書いてある。これを試すだけでだいぶ変わってくるだろう。

2010/11/10

アクセラレータボタンを表示させない。IE8の。

アクセラレータは、文章中のキーワードなどを検索する場合に便利だが、逆にコピペする際などにいちいちアクセラレータボタンが出現してうっとうしく感じる時がある。
機能自体の無効化とは違うのだが、表示されるボタンの無効化は以下の方法で行える。
ツール - インターネットオプション - 詳細設定 - ブラウズ 「選択時に[アクセラレータ]ボタンを表示する」チェックを外す。

2010/11/08

MySQLのrootパスワードを変更するコマンド

mysql> set password for root@localhost=PASSWORD(' 変更後のパスワード ');

すぐに忘れてしまうのでメモ。

TortoiseSVN 日本語化

インストール直後は英語である。
表記を日本語化するには言語パック(Language packs)をインストールする。

言語パックは以下でダウンロードできる。
http://tortoisesvn.net/downloads

落としたファイルをインストールして、
右クリックのTortoiseSVNメニューからSettingsを選択。

Generalから言語を日本語にすればOK。

2010/11/05

phpMyAdminのログイン情報

MySQLをGUIで管理したいと思った時に、XAMPP Liteに付属しているphpMyAdminが便利だ。しかし通常Liteに付属しているものはパスワードなしのrootで入る設定になっている。
これを既存のMySQLに変更する場合には設定ファイルを変更すればよい。

設定ファイルは phpmyadmin 以下の config.inc.php である。

$cfg['Servers'][$i]['auth_type'] → http
$cfg['Servers'][$i]['password'] → 設定済みパスワード
$cfg['Servers'][$i]['AllowNoPassword'] → パスワード有りなら false に。

Invalid attribute string

MySQLのODBCを作成後、作成したDSNが参照も削除もできなくなってしまう事態に遭遇した。

---------------------------
ドライバの ConfigDSN、ConfigDriver、または ConfigTranslator が失敗しました。
---------------------------
Invalid attribute string
---------------------------
OK
---------------------------

……なんだこれ。

レジストリをいじることで削除はできる。
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources

ここに登録したものがあるはずなので、該当するものを削除してしまう。

これでもう一度登録すればOKだが。
腑に落ちない。

2010/11/02

変更の保存が許可されていません。

SQLserver2008のManagement Studioでこのようなメッセージが出てテーブルの変更が行えない時がある。どうもこれはツールのオプションから許可するらしい。

[ツール] - [オプション] - [デザイナ]

テーブル変更することによるリスクを軽減するためにこのようなオプションができたのだろう。

2010/10/21

楽天ツールバーによって変更された検索エンジンを修正する

Firefoxに楽天ツールバーを入れると、デフォルトの検索エンジンが楽天に変更されてしまう場合がある。これは非常に不快だ。

1. アドレスバーに「about:config」と入力。
2. フィルタに「keyword.URL」を入力。
3. 右クリック- リセット

2010/10/01

chromeのフォントを固定

順調にバージョンアップを重ねるGoogle Chrome
以前、表示フォントをメイリオに強制したくて拡張機能を入れていたのだが、メイリオだけではなく気分によって他のフォントにも変更したいと思っていた。

Chrome6になり、User StyleSheetsにあるCustom.cssで変更できるようになったらしい。

WindowsXP
C:\Documents and Settings\[ユーザー名]\Local Settings\Application Data\Google\Chrome\User Data\Default\User StyleSheets

Windows7
C:\Users\[ユーザー名]\AppData\Local\Google\Chrome\User Data\Default\User StyleSheets

cssファイルの内容は、
例) メイリオ固定

* {
font-family : "メイリオ", sans-serif !important;
}

注意点は、UTF-8でファイルを保存すること。Shift-JISでは効かない。


すごいところは、保存した瞬間に開いているウェブページに即座に反映するところだ。

2010/09/29

同じキーシーケンスが別のアイテムに使用されていないかどうかを確認してください

複数のIMEを使用している場合、ホットキーでそれらを切り替えるのが便利である。
これはコントロールパネルの「地域と言語のオプション」-「言語」-「詳細」→「テキストサービスと入力言語」-「キーの設定」から行える。

しかし、ここでキー設定を別々にしているにもかかわらず「同じキーシーケンスが別のアイテムに使用されていないかどうかを確認してください」というエラーメッセージが表示されて設定できないことがある。

これはレジストリにゴミが残っているようで、それらを削除することで設定できるようになる。

具体的には、レジストリの以下の場所である。
HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys
Target IME が 00 00 00 00 ではないものをすべて削除。

いったんログオフすれば正常に戻るはずだ。

2010/09/01

Visual Studio 2008でHTML5のインテリセンスを有効に

大幅な改訂版となるHTML5だが、正式勧告前ではあるものの、
Visual Studio2008で組むことができる。

HTML 5 Intellisense for Visual Studio 2010 and 2008」は、
Visual Studio2008のHTMLソースエディタにHTML5のインテリセンスを追加する。

これはなかなか便利。


2010/08/31

ネスト(入れ子)したテーブルはauでは表示されない


<table>
<tr>
<td>
なんか
</td>
</tr>
<tr>
<td>
<table>
<tr>
<td>
入れ子にしたテーブル
</td>
</tr>
</table>
</td>
</tr>
</table>

2010/08/26

リストをある条件で検索して削除


var list = new List { "aaa", "bbba", "cccaa", "ddd" };
list.RemoveAll((string arg) => (arg.Contains("aa")) ? true : false);
// 結果
// bbba
// ddd

上記のコードでは"aa"が含まれている値を削除している。
このように柔軟に操作できて使いやすい。

2010/08/12

ASP.NETからFlickrNETを使ってFlickr画像にアクセスする

もはや死語となりつつあるが、Web2.0の先駆けともいえるFlickr。APIからユーザー情報や写真を取り出すことができるのだが、ASP.NETからスマートにAPIを呼び出したいという時にはFlickrNetというライブラリが便利だ。

ネットを探してみるといくらでも使用方法がみつかるので、詳しい使用方法はそちらにお任せ。その他、自分で改めて構築した際の注意点を挙げておく。

[変更されたクラス]
バージョン3系統になって多少クラスが変更されたようだ。特にFlickrクラスのPhotosSearchメソッドの戻り値はPhotoCollectionとなっている。旧コードでは動かない可能性が高いので注意が必要だ。


[レンタルサーバにアプリを配置する場合]
Flickrとアクセスし、データを受信した際に一度キャッシュを作る。なにも指定しないとこれはCドライブのテンプレート領域等に書き込みにいくのだが、レンタルサーバだとアクセス権がないためにランタイムエラーが起きて落ちる。
ローカルで問題なくてもアップしたとたんにエラーを出してしまう場合はこれを疑ってみる。
解決方法は、キャッシュ設定を変更すること。これはweb.configに記述する。

まず、以下を記載。
<section name="flickrNet" type="FlickrNet.FlickrConfigurationManager,FlickrNet">

configSections直後に、キャッシュ場所の変更を追加。
<flickrnet cacheDisabled="true" cacheLocation="D:\FlickrCache\"></flickrnet>

スタックトレース等で追いかけるとIOエラーが発生していたことから気づいたのだが、
解決までしばらく悩んだ。

2010/07/30

Opera10のキャッシュ位置を移動させる

Opera10のキャッシュ位置の移動は、Operaの設定ファイル(.ini)を編集すればよい。

C:\Documents and Settings\ユーザー\Application Data\Opera\Opera\operaprefs.ini

.iniファイルなので記述はシンプル。

[User Prefs]
Cache Directory4=R:\Opera

例はRドライブのOperaフォルダにキャッシュを指定している。
もともと高速なので、それほど劇的な変化はないかもしれないが、RAMディスクを作成してそれを有効活用したい場合にはいいかもしれない。

2010/07/29

Chromeのキャッシュ位置を移動させる

Chromeのキャッシュ位置を変更する場合、起動オプションを付け加えると簡単だ。
--disk-cache-dir=" R:\Cache "
R:\Cacheはキャッシュを置きたい場所

RAMディスクにキャッシュを移してみると、これは速い!
Choromeが速いと感じる理由は、体感的な分のキビキビ感なのだろうが、これは効く。

2010/07/26

日付文字列を日付型にスマートに変換

例えば時間を文字列に変換する場合は、

string d = DateTime.Now.ToString("yyyy/MM/dd");
// 出力: 2010/07/26

こんな形で簡単にできる。
しかし、変換対象となるデータが"20100726120000"のような場合だと例外が発生してしまう。

この場合はDateTime.ParseExactを使用する。
値がわからない場合には、DateTime.TryParseExactが使える。

string d = "20100726120000";
DateTime date;
if (DateTime.TryParseExact(d, "yyyyMMddHHmmss", null, DateTimeStyles.None, out date))
{
// 出力: 2010/07/26 12:00:00(日付型)
}

DateTimeStyles.Noneとなっている引数は、DateTimeStyles列挙体を指定するが、これはSystem.Globalization名前空間のものなので注意する。

2010/07/22

SQL ServerのExpress Editionについて

 SQL ServerのExpress Editionといえば、無償提供されているデータベースエンジンであり、中小規模なシステムでは業務にも採用していることは多いと思う。

「ここまで使えるSQL Server Express Edition」@IT

改めて最新版の特徴がまとめてある。
あまり考えなく「無償だから」と採用する技術者もいるかもしれないが、
有償版との違いをよく理解しておくべきだ。

ネックになるのは、使用可能な物理プロセッサ数よりもむしろメモリ使用量の1G縛りだと思う。
SQL Serverはこのあたりが自動管理されているので、1Gだと思うようなパフォーマンスが出ないケースも考えられる。
ただ、最近のものはExpressとはいえ、仮想化にも対応しているようだ。
仮想環境で使うのが合っているのかもしれない。



Management Studio ExpressでGUIによるDB管理もできるが、確かこれはインポートやエクスポートができなかった気がする。テーブルを一つ一つSQLコマンドで出したり入れたりするのはめんどくさいので、環境移行する際にはちょっと注意が必要。
あと、DLするところを間違えるとよく英語版を落としちゃったりするw
今は違うのだろうか。


他にも無償版DBはたくさんあるが、管理のしやすさやなじみ深さ、.NETとの親和性などの利点は多いと思う。

2010/07/14

通知領域の過去の項目を一気に削除する


フリーソフト「PastIconsFlusher」。
普段特に目に入るわけではないが、
履歴として残るのがなんとなく気になる。
そんな時にサッと使える便利ツールである。

2010/07/08

C#で金額のフォーマット

表記上の表現として、金額を桁区切りにすることはよくある。
そこでどのようにするのか方法は色々あるだろうが、Microsoft.VisualBasicのStrings.Formatを使用するケースがあると思う。

int amount = 100;
string ans = Strings.Format(amount, "#,##0");

ただし、このパターンだと3桁の数字が入ってきたときに、"#,##0"がそのまま出力される残念な結果となるw

int amount = 100;
string ans = String.Format("{0:#,0}", amount);

これなら3桁の数値は無視されてそのままになるのでOK。
書式フォーマットは様々な値を入れてテストしてみないと後で痛い目を見る。

2010/06/25

MySQL DBに接続できない

Access denied for user: 'user name' (Using password: YES)

.NETからConnector/NET経由でMySQLへ接続する際,このエラーで悩まされた。

ユーザー名もパスワードも合っているはずだが,どうしたものかと思っていると,設定したサーバ名localhostに対しての権限の問題だったようだ。
Web.configの接続文字列で接続先をserver=localhostにしていたが,Hostが「%」になっていると接続できないようだ。

2010/06/18

デフラグツールは一体なにを使えばいいのか...

諸説あるが,デフラグは必要だと思う。で,色々とフリーのでフラグツールをあさって試すが,じゃあ一体なにを使えばいいのかと……。
以下,いくつか試した中で使ってみた感想。


[UltimateDefrag]
究極を名乗るデフラグツール。
通常のでフラグに加え,アクセス頻度の高いファイルをHDDの外周に配置させて高速化できたりする。


[MyDefrag]
WindowsAPIを使用したデフラグツールのため親和性は高いそうな。USBメモリやSSDにも対応。
まず「Slow Optimize」を実行し,そのあとはスケジューラーで「Fast Update」を実行するのが良いらしい。


[Auslogics Disk Defrag]
とにかく速い。スケジュール実行もできる。


上記三つだが。
デフラグの速度も効果も,
[Auslogics Disk Defrag] > [MyDefrag] > [UltimateDefrag]
こんな印象だった。

じっくりやる人,しっかり設定できる人はUltimateDefragがいいかもしれない。
MyDefragはスケジュールして毎日実行しないとあまり意味がなさそう……。
Auslogics Disk Defragは速すぎて逆に効果が出ているのかどうか疑問に思ってしまうw

2010/06/01

MySQLで日付フォーマットを指定

例えば、
SELECT DATE_FORMAT(register,'%Y年%m月') as d FROM hoge
結果: 2010年6月

%M 月の名前(January..December)。
%W 曜日名(Sunday..Saturday)。
%D 英語のサフィックス付きの日付(0th、1st、2nd、3rd など)。
%Y 4 桁の数値で表した年。
%y 2 桁の数値で表した年。
%X 日曜日を週の最初の日とした場合の週に使用する、4 桁の数値で表した年。%V と組み合わせて使用。
%x 月曜日を週の最初の日とした場合の週に使用する、4 桁の数値で表した年。%v と組み合わせて使用。
%a 略式の曜日名(Sun..Sat)。
%d 数値で表した日付(00..31)。
%e 数値で表した日付(0..31)。
%m 数値で表した月(00..12)。
%c 数値で表した月(0..12)。
%b 略式の月名(Jan..Dec)。
%j 年間を通した日にち(001..366)。
%H 時(00..23)。
%k 時(0..23)。
%h 時(01..12)。
%I 時(01..12)。
%l 時(1..12)。
%i 数値で表した分(00..59)。
%r 12 時間形式の時刻(hh:mm:ss に続けて AM または PM)。
%T 24 時間形式の時刻(hh:mm:ss)。
%S 秒(00..59)。
%s 秒(00..59)。
%f マイクロ秒(000000..999999)。
%p AM または PM
%w 曜日(0=Sunday..6=Saturday)。
%U 日曜日を週の最初の日とした場合の週(00..53)。
%u 月曜日を週の最初の日とした場合の週(00..53)。
%V 日曜日を週の最初の日とした場合の週(01..53)。%X と組み合わせて使用。
%v 月曜日を週の最初の日とした場合の週(01..53)。%x と組み合わせて使用。
%% リテラルの ‘%’。

IISのリライトツール


IISでよく使用される(という妄想)のがHeliconのISAPI_Rewriteというツール。

インストールしたあとに、IISのISAPIフィルタに登録することで動作し、そのルールはインストールしたフォルダにある"httpd.ini"に記述する。これはデフォルトではなぜか上書き禁止になっているので注意。

以下、俺式メモ。

# コメント

フラグ
[L] 以降の式は無視する。
[R] リライト

----------
ex1)
RewriteRule ^/([0-9]+)$ /test.html?id=$1 [R]

http://example.com/9999

http://example.com/test.html?id=9999


----------
ex2) 引数は出現順にセットされる。
RewriteRule ^/([0-9]+)/([a-z]+) /test.html?id=$1&key=$2 [R]

http://example.com/9999/abcd

http://example.com/test.html?id=9999&key=abcd


----------
ex3) ホスト指定
RewriteCond Host: localhost
RewriteRule /(.*) /test.html [L]

http://127.0.0.1/

NG

http://localhost/

test.html→評価→test.html...ループするw

以下のように指定する。
RewriteCond Host: localhost
RewriteRule /(.*) /test.html [R,L]

2010/05/28

chromeでデバッグしてはいけない

個人的な感想。

キャッシュがどういうタイミングで更新されるのかよくわからないが、古い画面を平気で出しまくるので動作しているのかどうかわからない。速いだけではダメだと思う。

Chromeでデバッグしていて動作していない? と思ったらブラウザを変えてみよう。

2010/05/26

Tempフォルダの場所

環境変数にあるTempの初期位置。
変更して戻したいときのためにメモ。

[Windows XP SP3]
TEMP
%USERPROFILE%\Local Settings\Temp
TMP
%USERPROFILE%\Local Settings\Temp

2010/05/19

SelectionListの項目を動的追加

ドロップダウンリスト(DropDownList)は、以下のように追加する。
ddl1.Items.Add(New ListItem("text", "value"))
*ddl1はコントロール名

モバイルWebフォームではSelectionListを使うのだが、これも似たような感じでできる。
ddl1.Items.Add(New MobileListItem("text", "value"))

ただし、引数はMobileListItemであるので注意。

2010/05/14

auでの文字化け

UTF-8では文字化けするらしい。
ASP.NETではデフォルトがUTF-8なので、文字コードを変更しないと文字化けする。

回避策は、Web.configのに文字コードを定義する。


auはShift_JISじゃないとダメらしい。
なにこの仕様。

2010/05/11

モバイルコントロールのロード順序

「ページ→モバイルコントロール」である。
しかし、ページでセットしたViewStateは参照できない。Sessionは参照できる。連動しているようで、意外と連動していない感じだ。

2010/04/28

IE8でcookieが削除されない

IE8では「お気に入り」のWebサイトデータは削除しない仕様。
http://windows.microsoft.com/ja-jp/windows-vista/Delete-your-Internet-cookies

1.
Internet Explorer で、[セーフティ] ボタンをクリックし、[閲覧の履歴の削除] をクリックします。
セーフティボタンって何やねん?

これらしいw
アイコンだけにしていたので一瞬なんのことだかわからなかった。

キーボードから「Ctrl + Shift + Delete」を押下した方が早い。

2.

削除する情報の各カテゴリの横のチェック ボックスをオンにします。

3.
お気に入りリストの Web サイト関連のクッキーやファイルを削除しない場合は、[お気に入り Web サイト データの保持] チェック ボックスをオンにします。

4.
[削除] をクリックします。ファイルや履歴の数が多いと、この処理にしばらくかかります。


「サイトに保存してあるパスワードが消えちゃったYO!」って言う初心者用にこういう仕様に変えたのか……。

2010/04/07

.designerファイルがない

Webアプリケーションにおいて構成されるファイルは、画面(.aspx)・コードビハインド ソース(.aspx.cs)・デザイナ用ソース(.aspx.designer.cs)である。
しかし、WebサイトからWebアプリケーションに変換をかけた際に.designerが作成されないことがあるようだ。

この状態で発行を行い配置をしたところ、パースエラーが出てえらくはまった。
どういうわけかデバッグしているときには大丈夫だったのだが、これは内部的にプロジェクトにキャッシュとして残っていると言うことなのだろうか……?

ファイル群が正しく構成されているかどうかチェックした上で発行しないと正しく動作しない。

2010/04/01

ビルドしても反映しない


dllを参照している際に編集内容が反映されないことがある。
何度ビルドしてもダメ。

原因を調べてみると、通常はあり得ないケースではあるが、
ファイルの更新日付が怪しかった。

Bin以下のdllのファイル更新日がビルド時の日付よりも新しい場合、
ビルドをかけても更新されないように見えた。
この場合、Bin以下をすべて削除して、もう一度ビルドすると再生成される。
そして、ようやく変更内容が反映されているdllができた。

日付を見ているのだろうか?


----------

関連記事:ビルドで変更内容が反映されない
http://www.remember-the-time.xyz/2015/11/visual-studio-build-dont-reflected.html

[Visual Studio] Console.Writeline はどこへ出力される?

サンプルコード等でもよく見かける Console.Writeline メソッド。
だが、これはいったいどこに出力されているのだろうかという疑問に誰しも一度はぶつかるはずだ(笑)。
その名の通りコンソールに出力されるわけだが、そもそもコンソールは、コンソールアプリケーションだった時の話で、通常の Windows Form や ASP.NET でデバッグしているときには「出力ウィンドウ」にも出力されないのだ。

using System.Diagnostics;
Debug.WriteLine("コンソール");

Debug.WriteLine メソッドであれば、「出力ウィンドウ」に値が出力される。
「出力ウィンドウ」は [表示] - [出力] にて表示させることができる。

2010/03/29

C#日付から末日を取得

年月の文字列変換をする。

string now = DateTime.Now.ToString("yyyy/MM/");

初日は必ず1日なので、

now += "01";

とでもやれば、「yyyy/MM/dd」で月初めが取得できる。

さて、月末だが。

DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);

これで取得できるのだが、これは戻り値がintだったりする。

now += DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month).ToString();

こんな感じ。

2010/03/18

2010/03/17

chromeのフォントをメイリオに固定

To set the font Meiryo
https://chrome.google.com/extensions/detail/fjhllifflfbfoaojdefkggfofohgckao?hl=ja

Chromeを使っていて個人的に一番気になったのがフォント固定ができないことだった。
しかし、この拡張機能を使えばフォントがメイリオ固定となる。
これはすばらしい。

いよいよFirefoxを捨てる日が来たのだろうか……。

2010/03/05

SelectedValueがリセットされる


ある条件によってドロップダウンリストの内容を動的に変えるというケースはよくある。
それほど難しいものではないのだが、ポストバックをするとSelectedValueの値がリセットされてしまう現象に遭遇。色々と原因を探っていたがどうもわからない。

原因はDataValueFieldプロパティにすべて同一の値を入れていたことだった。確かに同じ値を入れる意味はないのだが、たまたま内部的に他のコントロールのIDを保持させるようにしていた。こういうトリッキーな設計はそもそも大間違いなのだな……。

2010/03/02

データセットのコードビハインド


Webサイト


Webアプリケーション

比べてみれば一目瞭然。
データセットを作成。クラスを拡張したようと思ったのだが、
Webアプリケーションではコードファイルが別に作られない。

単純で基本的なことかもしれないが、これは意外な盲点だった。


なお、WebサイトからWebアプリケーションへの変換は意外と簡単。

新規にWebアプリケーションプロジェクトを作成し、
そこへ変換したいプロジェクトをバーバー追加していく。

追加が終わったらコンテキストメニューの「Webアプリケーションに変換」をクリックすれば自動的に変換してくれる。

このあたりを読んでおくとためになる。
http://msdn.microsoft.com/ja-jp/library/bb398858.aspx

2010/02/17

ashx内でユーザーエージェントを取得


context.Request.UserAgent

contextには他にも様々な情報が格納されている。

サーバー接続のオープン処理の遅延のためログインプロセスを完了できませんでした


Management Studioにて突然ログインできなくなった。
原因を色々と探ってみるもよくわからなかった。

DNSキャッシュをリセットすると直った。
ipconfig /flushdns

理由は不明...。

ashxでのSessionオブジェクト


public class Test : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
}

System.Web.SessionState.IRequiresSessionStateを継承する。
セッションIDを取得する場合は context.Session.SessionID と指定。

2010/02/16

Fatal error encountered during command execution.

例えばアプリからSQLを発行するこんなケース。

UPDATE test SET name = @1 WHERE id = @0

パラメータに値を入れていないとエラーになる。
配列にしてまとめてセットしている時などには注意する。

2010/02/12

PowerPoint2007で文字が自動的に小さくなるのを止める

PowerPointで文字を入力中、文字数が多くなってくると自動的にフォントのサイズを小さくして強引にプレースホルダに合わせてしまう。これはオートコレクトのオプションから変更できる。


「テキストをタイトルのプレースホルダに自動的に収める」
「テキストを本文のプレースホルダに自動的に収める」
チェックオフ。

2010/02/10

Excel 現在日時

=NOW() → 2010/2/10 10:00

ただし、フォーマットを揃える場合はTEXT関数とやらを使うらしい。
=TEXT(NOW(),"yyyy/MM/dd") → 2010/02/10
=TEXT(NOW(),"yyyy/M/d") → 2010/2/10
=TEXT(NOW(),"yyyy/M/d") & "現在" → 2010/2/10現在

ちなみにこれ、○日前とかも簡単にできる。
一週間前 =TEXT(NOW()-7,"yyyy/MM/dd") → 2010/02/03

やはりExcelは旧VBに感覚は近いか。
適当に指定しても何とかなったりする。

C#なら、String.FormatやString.FormatやDateTime.ToString("yyyy/MM/dd")である。

2010/02/09

iモードでのpng

シミュレータで確認してみたら、iモードはpng非対応だったのね……。
gifの特許がらみの対応でそのまま引き継いでいるのだろうが、これはさすがに盲点だった。

2010/02/08

アプリケーションの仮想パス

アプリケーション直下に戻したい場合などにたまに使う。

Request.ApplicationPath

ここからさらに下のフォルダに潜る場合、
"/"を忘れずに入れてから文字列を連結する。

Windows7がシャットダウンできない


よくあるトラブルのひとつに「シャットダウンできない」というものがある。
Vista Ultimate → 7 Ultimate にアップグレード後、全く問題なく使えていると思って喜んでいたのだが、シャットダウンしようとしたら「シャットダウンしています...」で止まった。

シャットダウンできないという原因にはハードウェアに原因がある場合が多く、原因を調べていくとサウンドボード(M-AUDIO DELTA 1010)くらいしかついていないので、これがかなり怪しかった。


ためしにデバイスを無効にすると正常にシャットダウン。
どうやらドライバが古かったようだ。

7をクリーンインストールした場合には新しいドライバを入れるはずなのでこういうトラブルはないのだろうが、アップブレードの場合はこういうこともあるようだ。

MicrosoftのWindows 7 アップグレード徹底ガイドは非常に役に立つ。

ハードウェアテストで確かに互換性の確認が取れていなかったが、アップグレード後に普通に使えていたので気がつかなかった。当たり前のようにドライバは最新にするべきであるね。

2010/02/05

最上位ディレクトリの先頭に .. を使用することはできません。

例えばこんな感じ。

Image im = (Image)Page.Master.FindControl("Img");
im.ImageUrl = "../../images/01.jpg";

動的に相対パスを指定し、ルートを超えてしまったケース。

htmlで指定場所が間違っている時には落ちるわけではないのだが、プログラム内で指定した場合には落ちる。これは意外と気づかない。

2010/02/01

Connector/NETでMySQLから日本語で検索できなくてハマる

.NETから単純なSELECT文を発行してutf8_general_ciのフィールドを検索。
しかし、データが取得できない。
phpMyAdminからSQLを発行してみると普通に取得できる。

いったい何が原因なのかと探っていたら、英数では取得できる。
ここで文字コードの問題だと気づく。

テーブルに文字コードを設定していればいいのかと思ったが、
接続文字列にもちゃんと文字コードを記述してあげないとダメらしい。

Charset=utf8
を追加したら解決。

MySQLはとにかく文字コードがらみでハマることが多いように思う……。

XAMPP Liteはインストールしなくても起動できる


XAMPP Liteをトップレベル(c:\xampp, d:\xampp等)に配置すると、直接起動することができる。
setup_xampp.batは実行しなくても良い。


これはお手軽だ。

2010/01/28

MySQLのDELETE

調べるまでもなく...DELETE文だということは想像できる。
しかし、

DELETE table_name WHERE pk = 1

これはダメ。
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near...


DELETE FROM table_name WHERE pk = 1

FROMがしっかり入っていないと弾かれてしまう。

SQLServerではFROMがなくてもいきなり削除できるのだが、
MySQLはどうもこういう部分は厳密に書かないといけないようだ。

世界に一つだけのメモ

The PocketMod[http://www.pocketmod.com/]

A4コピー用紙を使ってオリジナルのメモを作ることができる。
画面右上の Create a PocketMod をクリック。
そのあとはHelpを見ればわかるのだが...

1.Widgetsから用紙を選択(カバーなどは情報を編集できる)
2.選択された用紙を右側にドラッグ&ドロップ
3.Print PocketMod! で印刷

捨ててもいいようなちょっとしたメモ書き用に重宝する。
寄付も受け付けているようだ。

2010/01/25

Firefox3.6 リンクを新しいタブで開く

最近のFirefoxはタブ関係でいきなり仕様変更がされるようだ。
3.6では新しいタブを開く際に、現在開いているタブのすぐ隣に新しいタブが開くようになった。これはIEに合わせた仕様変更なのかもしれないが、従来の仕様に慣れていると違和感がある。

1.about:config;
2.browser.tabs.insertRalatedAfterCurrent = false (tabs.でインテリセンス )

どちらが使いやすいかはユーザー次第だが、こうやって自分の使いやすいようにすぐにカスタマイズできるのがいいですね。

2010/01/22

AJAX.NETのCalendarExtenderのカレンダーを日本語に

日本語にするだけなら……
配置してある ScriptManager の EnableScriptGlobalization=true に。

MySQLのAUTO_INCREMENT取得

INSERTしながら新しく追加したキーをもとに更新をかけたいというケースはよくあると思う。

INSERT INTO test1 (a1) VALUES ('hoge');
INSERT INTO test2 (key) VALUES (LAST_INSERT_ID());

LAST_INSERT_ID()は直前に自動挿入されたキーを取得する。test1 に自動挿入フィールドがあった場合、挿入されたキーを取得し、それを元に test2 を更新する。

MySQLのtopやらrownumやら特定の行を取得するコマンド


limit 0, 1

SQLServer: top 1
Oracle: rownum = 1

Unable to convert MySQL date/time value to System.DateTime

テーブルに途中から日付型のフィールドを追加したケースにて。
すでに存在するレコードには「0000-00-00 00:00:00」が入ってしまう。これはデフォルト値であり、SQLでSELECT文を発行しても普通に取得できる。

しかしながら、これを.NETからMySQL Connector.NET経由で取得した際には話が違うらしく日付型に変換できずに落ちてしまう。


.NETからは不正なデータに見えるようだ。
無効なレコードが発生しないように注意を払わなければいけない。

MySQLの予約語に注意

SQLコマンドにおいて、列名が予約語とかぶっていないかは基本であるのだが。
phpMyAdminでテーブルを作っていたときに実は予約語を使ってフィールドを作っていた。
普通はすぐに気づきそうなものだが……

SELECT * FROM test

このように全フィールドを参照しているとエラーにはならなかった。
しかし、

SELECT show FROM test

このように書くとエラーになった。
エラーが発生しているが原因がいまいちつかめないときはフィールド名が予約語とぶつかっていないかチェックしてみるといいかもしれない。普通はすぐに気づくが(笑)。


ちなみに、MySQLの予約語は以下のようなものがある。
すべてではないが。
ADD
ALL
ALTER
ANALYZE
AND
AS
ASC
BEFORE
BETWEEN
BIGINT
BINARY
BLOB
BOTH
BY
CASCADE
CASE
CHANGE
CHAR
CHARACTER
CHECK
COLLATE
COLUMN
COLUMNS
CONSTRAINT
CONVERT
CREATE
CROSS
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_USER
DATABASE
DATABASES
DAY_HOUR
DAY_MICROSECOND
DAY_MINUTE
DAY_SECOND
DEC
DECIMAL
DEFAULT
DELAYED
DELETE
DESC
DESCRIBE
DISTINCT
DISTINCTROW
DIV
DOUBLE
DROP
DUAL
ELSE
ENCLOSED
ESCAPED
EXISTS
EXPLAIN
FALSE
FIELDS
FLOAT
FLOAT4
FLOAT8
FOR
FORCE
FOREIGN
FROM
FULLTEXT
GRANT
GROUP
HAVING
HIGH_PRIORITY
HOUR_MICROSECOND
HOUR_MINUTE
HOUR_SECOND
IF
IGNORE
IN
INDEX
INFILE
INNER
INSERT
INT
INT1
INT2
INT3
INT4
INT8
INTEGER
INTERVAL
INTO
IS
JOIN
KEY
KEYS
KILL
LEADING
LEFT
LIKE
LIMIT
LINES
LOAD
LOCALTIME
LOCALTIMESTAMP
LOCK
LONG
LONGBLOB
LONGTEXT
LOW_PRIORITY
MATCH
MEDIUMBLOB
MEDIUMINT
MEDIUMTEXT
MIDDLEINT
MINUTE_MICROSECOND
MINUTE_SECOND
MOD
NATURAL
NOT
NO_WRITE_TO_BINLOG
NULL
NUMERIC
ON
OPTIMIZE
OPTION
OPTIONALLY
OR
ORDER
OUTER
OUTFILE
PRECISION
PRIMARY
PRIVILEGES
PROCEDURE
PURGE
READ
REAL
REFERENCES
REGEXP
RENAME
REPLACE
REQUIRE
RESTRICT
REVOKE
RIGHT
RLIKE
SECOND_MICROSECOND
SELECT
SEPARATOR
SET
SHOW
SMALLINT
SONAME
SPATIAL
SQL_BIG_RESULT
SQL_CALC_FOUND_ROWS
SQL_SMALL_RESULT
SSL
STARTING
STRAIGHT_JOIN
TABLE
TABLES
TERMINATED
THEN
TINYBLOB
TINYINT
TINYTEXT
TO
TRAILING
TRUE
UNION
UNIQUE
UNLOCK
UNSIGNED
UPDATE
USAGE
USE
USING
UTC_DATE
UTC_TIME
UTC_TIMESTAMP
VALUES
VARBINARY
VARCHAR
VARCHARACTER
VARYING
WHEN
WHERE
WITH
WRITE
XOR
YEAR_MONTH
ZEROFILL

ちなみに、ASP.NETから。
データバインドをした際には前述した show フィールドは特にエラーにならずにバインドできていた。

2010/01/20

バーベイタム(verbatim)

文字列を扱う際に、「\」(円マーク, バックスラッシュ)は通常エスケープ文字として使用される。したがって、「\」そのものを使用する際には二つつなげてあげる必要がある。

string s1 = "C:\WINDOWS"; // NG (認識できないエスケープ シーケンスです。)
string s2 = "C:\\WINDOWS"; // OK

文字列の前に「@」(アットマーク)を付けてやることで(verbatim文字列)そのまま出力可能。

string s1 = @"C:\WINDOWS"; // OK
string s2 = "C:\\WINDOWS"; // OK
Console.WriteLine(s1); // C:\WINDOWS
Console.WriteLine(s2); // C:\WINDOWS

可読性はこちらの方が良いかもしれないが、好みもあると思う。ただ、覚えておいて損はないと思う。

ちなみにVB.NETでは...

Dim s1 As String = "C:\WINDOWS"
Dim s2 As String = "C:\\WINDOWS"
Console.WriteLine(s1) ' C:\WINDOWS
Console.WriteLine(s2) ' C:\\WINDOWS

そのまま出力可能。

2010/01/19

ASP.NET アクセスが拒否されました

ファイルをコピーしてプロジェクトを開いたときにありがちなエラー。


"ASP.NETコンピュータアカウント"にアクセス権を付与する。
コンピュータ名\ASPNET である。

他にも読み取り専用になっていることもあるので解除する。

.NETインデクサによる文字列アクセス

文字列から任意の位置の文字を取り出すことができる。
書き方はまるで配列のようだ。

C#

string s = "あいうえお";
Console.WriteLine(s[1]); // 出力: い

VB.NET

Dim s As String = "あいうえお"
Console.WriteLine(s(1)) ' 出力:い


「○文字目を切り出す」とかいうのが簡単にできるのね。

2010/01/15

ASP.NETのマスターページでCSSを即適応

マスターページを使用しているページにて、CSSを変更しても反映されていない時がある。これはマスターページをキャッシュしているためだと思われる。

IISのワーカープロセスのインスタンス(aspnet_wp.exe)を再起動すると適応されるはずだ。

このあたり[msdn.microsoft.com]が勉強になる。

2010/01/14

Adobe Acrobatその余計なる読み上げ機能

PDFファイルを読み込む度に読み上げダイアログが出て非常にうっとうしい。調べてみると、どうやらキャンセルできないらしい。最低だ。


スタートアップ時にこれまた余計なものが起動されてしまうので、それを止める。

どうしてこう昔からAdobeは余計なことばっかりするのかね。

追記
C:\Program Files\Adobe\Reader 9.0\Reader\plug_ins にある
accessibility.JPN
Accessibility.api
を削除するといいらしい。

マウスジェスチャ IE,Chrome,Explorer


HandyGesturesも便利だったが、Vista,7,Chromeなどにも幅広く対応しているかざぐるマウス[staticflower.net]が一番便利そうだ。すばらしい。

IE8:セキュリティで保護されたWebページコンテンツのみを表示しますか?


httpsページは暗号化通信を行っているが、http通信でデータ取得を行うコンテンツが混在している場合にはこんなメッセージが出る(以前から出ていた)。


[ツール]-[インターネットオプション]-[セキュリティ]-[レベルのカスタマイズ]-[その他]
「混在したコンテンツを表示する」を「有効」に。

ただし、暗号通信中に暗号化されていないコンテンツが含まれていても警告を出さない。
これはセキュリティ上のリスクが発生するので、わかっている場合のみ設定すること。

2010/01/13

iGoogleの友だち表示を消す

FirefoxのStylish用だが。


@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("google.co.jp")
{
#updates_left_nav, #contacts_left_nav, #bottom_nav, #chat_nav, #promo
{
display:none !important;
}
}

消すものは以下の通り。
 更新情報
 友だち
 更新情報を投稿したり友だちとゲームを楽しんだりするにはソーシャル ガジェットを追加します。

逆に使っている人がいるのだろうか…!?

2010/01/12

GridViewの背景色を動的に変更する

たいていの場合セルの値の条件によって変更すると思う。そのため、「GridViewのRowDataBound」イベントにて行う。当然、値のフィールドのみ対象とする。


// C#
if (e.Row.RowType == DataControlRowType.DataRow)
{
// なんか条件

// 色変更
e.Row.BackColor = System.Drawing.Color.Yellow;
}


' VB.NET
If e.Row.RowType = DataControlRowType.DataRow Then
' なんか条件

' 色変更
e.Row.BackColor = Drawing.Color.Yellow
End If

MSDN

2010/01/07

explorerでもマウスジェスチャを

ブラウザでマウスジェスチャを使っていると、Windowsのエクスプローラ操作時にもつい同じ感覚でマウスジェスチャをしてしまうことがある。当然そんな機能は無いわけだが、そういう願望を実現してくれるソフトもあるようだ。


HandyGesturesはそのひとつであり、
試しにインストールしてみたら使い勝手が良い。ありがとう。
http://www.vector.co.jp/soft/winnt/util/se372511.html

なお、インストールはバッチ処理で自動完了し、再起動等は行わなくてもよいのだが、エクスプローラやIEを開いていた場合は一度全部閉じる必要がある。

2010/01/05

GodMode


新しいフォルダを作る。


GodMode.{ED7BA470-8E54-465E-825C-99712043E01C} にリネーム。先頭の文字列は何でも良い。



アイコンが変わる。



Windows7もしくはVistaでも可能(64bitではクラッシュの危険あり)。すごく役に立つわけでもないかもしれないが、この手の隠し機能はワクワクしますね。
Related Posts Plugin for WordPress, Blogger...