ドゥードゥリング

趣味や技術など、
役に立つのかよくわからない話が中心。

【備忘録】制約の変更はできない【SQL】

2018年04月04日 23時11分48秒 | 技術

概要
前日の日記と同じくOracle SQLの話題です。 タイトルにもありますが、制約の中身は途中で変更することができないようです。

 

経緯

蛇足ではありますが、誤解が溶けた理由を一つ...

SQLの勉強がてらに練習用のDBであれこれSQL文を試していた時、一度定義した制約の中身を途中で変更する必要になりました。

CREATE TABLE employees (
     id NUMBER(4) PRIMARY KEY,
     name VARCHAR2(20),
     branch_id VARCHAR(10) CONSTRAINT emp_fname_fk REFERENCES branch(id) //この列に「ON DELETE CASCADE」オプションを付け加えたい
)

その時の私は制約のオプションも NOT NULLの様に途中で変更できるものと思っていたため、ALTER TABLE文を使って変えようとしたのですがうまくいかず。

日本語のサイトを回っても「制約を途中で変更する方法」がどこにも載っておらず途方にくれたのですが、stack overflowに解決方法がありました。

制約を途中で変更する方法がSQLにはなく、どうしても変えるには一度制約を削除して変更後の内容に新しく作り変える必要があるようです。

 

...しかし日本のサイトには上記について記しているサイトがどこにもなく正直困りました。

当たり前すぎて書くまでもない事なのかもしれませんが、次回からは英語のサイトも見ていこうと思います ^^;)


【備忘録】文字列と比較演算子の処理の内容について【SQL】

2018年04月03日 00時23分52秒 | 技術

はじめに

現在仕事の関係上SQLについて学習しているのですが、
比較演算子の一つであるBETWEEN演算子、および比較演算子の挙動についてはっきりとしなかった部分がありました。

初歩的な部分ではありますが、個人的に詰まった部分ですので忘れないうちに残しておこうと思います。

 

勘違いしていた点

BETWEEN演算子というものに対して、それまで私は「BETWEEN演算子は文字には使用できない」と思い込んでいたのですが、実際は違うようです。

こちらのサイト様を参考とさせて頂いたのですが、BETWEEN演算子とは「対象となるデータが2つのデータの間のものを返す」のではなく、

「対象となるデータが演算子の左辺以上、尚且つ右辺以下のものを返す」という処理のようです。

 つまり、BETWEEN演算子を他の演算子で表現すると以下のようになります。

「値A BETWEEN 値B AND 値C」 =「 値A >= 値B AND 値A <= 値C」

また、比較演算子は文字列には使えないわけでもなく、文字列を対象のデータとした場合、文字コードによって比較されるのだそうです。


より調べてみたら

上記の事実を知った後、練習問題の中でSQL文を入力しました。

以下のSQL文は「列yomiに含まれた文字列のうち's'より頭のほうの文字列のみを抽出する」ことを目的とした文章です。

 データベースの列yomiの中身: 
  saito
  suzuki
  tanaka

 最初のSQL文のWHERE句の内容: 
   WHERE yomi > 's'

上記のWHERE句で実行した際、データベースの中身がすべて(saito, suzukiを含めて)表示されてしまいました。

その時は訳が分からず、しばらく参考書とウェブサイトを見て回る作業に徹したのですが、

 正しいSQL文のWHERE句の内容:    
   WHERE SUBSTR(yomi, 1,1) > 's'

上記の条件で正しい答えを得ることができました。
単純に、頭文字だけを抽出したうえで文字コードを比較させるだけでよかったのです。

また上記の結果から、文字列と比較演算子による条件の場合、
文字列側は文字コード全てを足し合わせた値と条件値を比較する仕組みになっていることもそこで知りました。

 例(Shift-JIS): saito(554) = s(115) + a(97) + i(105) + t(116) + o(111)

...というかこんなこと、改めて参考書をよく見るとちゃんと書いてあったりするのですが。

今回の教訓としては「参考書は隅々まで読もう」ということです。(_ _ ; ) 


[PC] Steam版HOMEFRONT ムービーだけ⽇本語化

2017年10月29日 19時57分44秒 | ゲーム

HOMEFRONTについて

Homefrontは2011年にTHQから発売されたFPSです。

このゲームの⽇本語版はサイバーフロントより発売されていますが、 Steamから購⼊できるバージョンは⽇本語化されていません。

Steamストアページ

しかしどうにかして⽇本語化できまいかと弄ってみた結果、 キャンペーンのムービー部分だけ⽇本語化できたので
一旦載せておこうと思います。

※以下の⼿順は⾃⼰責任でお願いいたします。

 

ムービーの⽇本語化の⽅法

今回、「ゲームMEMO」様のサイトを参考とさせて頂きました。この場を借りてお礼申し上げます。

Deadfall Adventures ⽇本語化

上記のサイトにて記載されていた方法を応⽤することでムービーの字幕と音声を⽇本語化できました。

  1. Unreal Tournament3⽇本語化MODをステキな私的さんのサイトからダウンロードする。

  2.  ダウンロードしたファイル内の「JPN_Fonts.upk」というファイルを
    「steamapps\common\HOMEFRONT\GCGame\CookedPC\UI\」内に移動する。

  3.  ファイル「steamapps\common\HOMEFRONT\Engine\Config\BaseEngine.ini」をテキストエディタ等で開き、
    34⾏⽬ :
    「SubtitleFontName=PC_UI_Fonts.TradGothicBoldCondensed」を
    「SubtitleFontName=JPN_Fonts.Font.JPN_Font」に書き換えて保存する。

  4.  ファイル「steamapps\common\HOMEFRONT\GCGame\Config\DefaultEngine.ini」をテキストエディタで開き、
    594⾏⽬ :
    「FontName="PC_UI_Fonts.TradGothicBoldCondensed"」を
    「FontName="JPN_Fonts.Font.JPN_Font"」に書き換えて保存する。「steamapps\appmanifest_<ゲームID>.acf」を開き、「english」から「japanese」に書き換える。

  5. Steamアプリを再起動してゲームを実⾏する。

実行結果

ゲームを実⾏すると、シングルモードのステージ前に挟まれるムービーが⽇本語化されます。
⾳声も⽇本語化されるため、もしかするとsteam版にも⽇本語⾳声のデータが埋まったままなのかもしれません。

 mu-bi-

 ⼀⽅、タイトル画⾯とポーズ画⾯のメニューは⽂字化けしてしまいます。

 

また、ゲーム中の字幕は英数字や記号以外がすべて空白となってしまいます。

 

おわりに

ムービーとメニュー画面、字幕ではそれぞれ使用されているフォントファイルが違うのでしょうか?ウーム分からん...

今後も日本語化できるか模索してみたいと思います。


我が家のアサガオ

2016年06月09日 22時03分46秒 | 朝顔
つい先ほど「プログラムのことについて記す」とほざいていたのに2回目からITとか関係のない話。

我が家では3年前の9月頃から朝顔を育てています。
初めの年はホームセンターで苗の状態として購入し、出てきた種を翌年から植えています。


2年目のアサガオ(7月3日撮影)


3年目のアサガオ(8月撮影)

3年目のアサガオは2年目のそれと比べて少し弱々しい花しか咲かなかった印象があります。
おそらく、2年目に使用して放置した土をそのまま流用したからだと思います。
今年からは、新しい土を買ってそれに植えようと考えています。


ブログ始めました

2016年06月09日 21時50分36秒 | 日記
もとは別においてあるHPにてちまちまと書いてはいたのですが、こちらのほうでブログを書いたほうがやりやすいと感じ移動しました。
ゲームプログラミングを主にプログラムのことや、趣味のことについてあげたりする予定です(やるとは言っていません ^^;)

text

<iframe height="'265'" scrolling="'no'" title="'GitHub" Icon' src="'//codepen.io/kristinadinellari/embed/gXzGmW/?height=265&theme-id=0&default-tab=css,result&embed-version=2'" frameborder="'no'" allowtransparency="'true'" allowfullscreen="'true'" style="'width:" 100%;'>See the Pen <a href="'https://codepen.io/kristinadinellari/pen/gXzGmW/'">GitHub Icon</a> by Kristina (<a href="'https://codepen.io/kristinadinellari'">@kristinadinellari</a>) on <a href="'https://codepen.io'">CodePen. </iframe>