セカイモンの裏側

★毎週木曜日更新★ 海外ショッピングサイト『セカイモン』のブログです。私たちスタッフの仕事風景や日々の出来事など、     “セカイモンの舞台裏”とも言える日常を綴っていきます。

つばめグリルでランチ会

品川駅のつばめグリルに行ってきました。

オフィスから10分ぐらいでつばめ風ハンバーグを4つ パン2つ ご飯2つでした。

 

はじめ銀紙で包まれていたので手で開けてい

 

いのか、フォークで開けていいのかわかららなかったけど、フォークであけました。

ボリュームは多かったです。

f:id:sekaimon-staff:20170609170226j:plain

f:id:sekaimon-staff:20170609170248j:plain

f:id:sekaimon-staff:20170609170305j:plain

これってスイートじゃなくてトマトでした。

 

MACでOracle にアクセスした時のtips

1.マックのターミナルでの話

oracleが文字化けで激しいのでというか未だにSJISなのでターミナルから入った場合、

文字列が炸裂します。

 

いつも忘れるのでここでメモ

export NLS_LANG=Japanese_Japan.AL32UTF8

マックは関係ないかも

 

2.他のテーブルを参照して更新

oracleでは update ** from ** where ** でもできなかったんで調べてみたら違うSQLのようです。

update (
select
A.ITEM_AMOUNT_DLLR A_ITEM_AMOUNT_DLLR, B.ITEM_AMOUNT_DLLR B_ITEM_AMOUNT_DLLR
from h_mypage_history A INNER join h_sales_dt_left B
on A.SALES_ID = B.SALES_ID
) set
A_ITEM_AMOUNT_DLLR = B_ITEM_AMOUNT_DLLR

 

これで違うテーブルから参照して更新できます。

「テーブル移動」「テーブル複数」って検索してもなかなか出てこなかったんでメモ

 

MySQLからORACLEにデータを移行するまでの道のり

ORACLEがライセンスの問題で複数サーバーを立てられない。

なのでバックアップサーバーとかはなかなか立てられない。。

という事でバックアップにMySQLサーバーに使っています。

あと分析用とかもMySQLを使わざる終えないのでOracle > MySQL

のデータ移行をしないといけないという悲しい状況です。

 

今回はそのバックアップを取っていたデータから新しいテーブルを作成してそれを本番のOracleDBに移行するっという作業でしたがいろいろ詰まったところがあったんでメモ

 

エンコードを合わせないといけない

バックアップの方はUTF8なので問題ないですが、オラクルの方はふる~~いのSJISでした。しかもエンコードを調べるSQLでの結果もわかりにくい。

SELECT VALUE FROM NLS_DATABASE_PARAMETERS
WHERE PARAMETER='NLS_CHARACTERSET';

「JA16SJIS」

見たこともないエンコードが。。なのではじめはSJISなのかEUCなのかさえわからなかったのですが、このコードでさらにぐぐると SJIS?っていう事がわかる。

www.atmarkit.co.jp

 

なのでmysqlでエクスポートしたテーブルをUTF8>SJISに変換しないといけない作業。

mysql> select * from h_mypage_history INTO OUTFILE "/tmp/h_mypage_history.tsv" FIELDS TERMINATED BY '\t';

,(カンマ)よりもタブの方がごみデータがすくないと重いTSVでエクスポート

nkf -s /tmp/h_mypage_history.tsv > /tmp/h_mypage_history_sjis.tsv

nkfSJISに変換

・NULLの取り扱いが違う

MySQLでは\Nっていう風に記載されているのに対し、オラクルはそういう記述の仕方ではないらしい。

なのでNULLをデータなしに変換。

sed -e 's/\\N//g' /tmp/h_mypage_history_tab_sjis.tsv > /tmp/h_mypage_history_tab_sjis2.tsv 

 

・インポートが難しい

[~]$ sqlldr ユーザー/パスワード control=mypage.ctl direct=true

というコマンドを叩く。そのまえにmypage.ctl

というコントロールファイルを作成しないといけない。

その内容は

LOAD DATA
INFILE '/tmp/h_mypage_history_sjis2.tsv'
INTO TABLE h_mypage_history
APPEND
FIELDS TERMINATED BY X'9' trailing nullcols
(
USER_ID

)

タブテキストの場合はFIELDS TERMINATED BY X'9'

としないといけないみたいです。

あと失敗すると、mypage.ctlファイルを作成する場合は

mypage.logていうログが生成されるのでそこからエラーなどを見てデバッグするみたいで直接のコマンドからエラーが見れないっていう遠まわしな。。。

 

なんだかんだ3人日ぐらいかかってデータ移行ができました。

参考URL

http://blog.livedoor.jp/ncad_webdb/archives/51384321.html

http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/ldr_control_file.html

http://www.shift-the-oracle.com/config/multibyte-characterset.html

http://www.oracle.co.jp/forum/thread.jspa?threadID=8008600

http://www.oracle.co.jp/forum/thread.jspa?threadID=35001617

http://www.searchman.info/tips/1150.html

http://vertex.air-nifty.com/blog/2008/10/oraclecsv-fe87.html

ORACLEのゾンビテーブル

オラクルでは大文字小文字を区別してテーブルも作れるらしい。

でも区別しなくてもいい設定もできるらしい。

どっちかにして欲しい

今回間違えて小文字で作成して、大文字でも作成して、削除したのにまだ残ってしまうっていうおかしな現象に突入しました。

 

selectは受け付けない 表がないから。。。

dropは受け付けない 表があるから。。。

うわぁー。

 

hito4-t.hatenablog.com

google analytics(GA)のビューのフィルタはビュー毎に独立していない

google analyticsのフィルタ設定で次のような問題起こってしまった。


1.google analyticsの管理>コピー対象のビューを選択>ビュー設定>ビューをコピー
2.コピー元のビューにフィルタ設定がされていました(今回の場合は社内からのIPを制限するフィルタ)
3.コピーして新規で作成したビューは「社内からのIPのみを許可する」フィルタを設定
4.コピー元のフィルタ設定まで「社内からのIPのみを許可する」に変わってしまった。

 

■過ち
コピー元ビューのもともと設定されていた「社内からのIPを制限する」フィルタを編集してしまった。正しいやりかたは新規でフィルタを作成する。

■結論
フィルタは各ビュー間で共通の設定を持っていてビュー毎に独立していない。

手習いHTML5 (3)

今回は、実際にブラウザに表示される領域での基本的なタグをいくつか覚え書きする。

■<HEADER>
<HEAD>とよく似た名称であるが、表示上のヘッダー領域は<HEADER>タグ内に収納される。

<HEAD>はページ本体の基本情報を収納しているため、<HEAD>タグもヘッダーとして表現されることが多く、非常にややこしい。

<HEADER>タグに収納された情報は、表示されるブラウザの上部に配置され、スクロールされても上部は表示を固定されていることが多い。
トップページや主要ページへのリンクが表示される。

■<FOOTER>
<FOOTER>は<HEADER>とは対照的に、表示されたブラウザの下部に配置される。
<HEADER>とは異なり、最下部までスクロールされて初めて確認されるものが多く、商標表示や各種リンクがコンパクトにまとめられていることが多い。


これら2つのタグは、</HEADER>あるいは</FOOTER>によって閉じることで機能する。
なお、それぞれのタグ内部に<HEADER><FOOTER>の構造を挿入することはできないようだ。

セカイモンLinux テクニック

その1 ディレクトサイズを知りたいコマンド

フォルダ・ディレクトリのサイズを一覧で出したい時のコマンド

意外とぐぐっても出てこないんで記載しておきます。

du -sh

例:

du -sh /var/www/forum/*

14M /var/www/forum/app
4.0K /var/www/forum/artisan
16K /var/www/forum/bootstrap
4.0K /var/www/forum/Capfile
4.0K /var/www/forum/composer.json
120K /var/www/forum/composer.lock
1.8M /var/www/forum/composer.phar
36K /var/www/forum/config
816K /var/www/forum/lib
4.0K /var/www/forum/phpunit.xml
51M /var/www/forum/public
8.0K /var/www/forum/README.md
4.0K /var/www/forum/server.php
59M /var/www/forum/vendor

その2 ログを見るコマンド

ログをLinux上で見るときはおなじみのtail コマンド等があると思いますが、それぞれメリットデメリットがあります。

そこで一番個人的によく使うコマンドはlessです。なぜかという理由を記載しながら書いていきます。

・tailコマンド

デメリット

tailコマンドは上ボタンでそれ以上見れない

引数がややこしい

あとtailfに比べると遅い

メリット

行数を指定できる

リアルタイムで監視できる

tailfコマンド

デメリット

上ボタンでそれ以上見れない

メリット

tailに比べると早い

なのでリアルタイム監視をしたい時はtailfコマンドをよく使っています。

・viコマンド

デメリット

遅い

メリット

編集できる

大量のログを見るときはviだととても遅いので見れない場合が過去にありました。

編集できてもログファイルなのであんまりいみないですね。

・viewコマンド

デメリット

編集できない、なので大事なファイルをいじるときはメリットとも言えるかも

メリット

特にない?

・catコマンド

大量ログのファイルをcatすると考えたら恐ろしくてできない。

・lessコマンド

デメリット

編集できない

メリット

高速

自由にスクロールできる

なのでlessコマンドでいいんじゃないでしょうか?

www.softel.co.jp

その3 文字化けに困ったら

viによるShift-JISのファイル開き方

OracleSJISメッセージをだし、文字化けをするのでsjisの開き方とか少々便利かと思い、念のため記載。

vi
ファイルを開く
# vi logs/test.log

その後、基本viでは直接編集はできないコマンドモードと呼ばれる状態でファイルを開いており、【:】を押すとコマンド受付になる。

:e ++enc=sjis

:eはファイルをオープンする命令で++encで文字コードを指定できる。