|
2009,12,09, Wednesday
自己メモ備忘録です。
select文ならdistinct keyで重複を省いて結果を返してくれますが、レコードその物を消したいときどうするか考えてみました。 1.まずは現在のテーブルのレコード数を算出 mysql> select count(*) from table_now; +----------+ | count(*) | +----------+ | 348748 | +----------+ 1 row in set (0.00 sec) 2.distinct tel で電話番号のユニーク数を確認 mysql> select count(distinct tel) from table_now; +---------------------+ | count(distinct tel) | +---------------------+ | 238354 | +---------------------+ 1 row in set (3.15 sec) 3.telとname(念の為)でグループをかけたものをtemp_tableに格納 mysql> CREATE TABLE temp_table as SELECT * FROM table_now GROUP BY tel,name; Query OK, 238354 rows affected (18.05 sec) Records: 238354 Duplicates: 0 Warnings: 0 4.temp_tableのレコード数を確認 mysql> select count(*) from temp_table; +----------+ | count(*) | +----------+ | 238354 | +----------+ 1 row in set (0.00 sec) 5.ユニーク数と合致したので、table_nowを削除 mysql> DROP TABLE table_now; Query OK, 0 rows affected (0.18 sec) 6.temp_tableをtable_nowにalter table mysql> ALTER TABLE temp_table RENAME TO table_now; Query OK, 0 rows affected (0.00 sec) 7.一応確認 mysql> select count(*) from table_now; +----------+ | count(*) | +----------+ | 238354 | +----------+ 1 row in set (0.00 sec) これで完了です。 PHPで関数作っておけば引数渡すだけで一瞬で終わっちゃいます☆ |
|
2009,12,02, Wednesday
datetime型の集計で月別とか時間別とかMySQLだけで集計できないかな??って思ってテスト
うまくできたんで自己メモ select substring(datetime,6,2) as month,substring(datetime,12,2) as hour,concat(format(count(*),0),"件") as cnt from t_record where datetime >= '2009-06-01 00:00:00' and datetime <= '2009-11-30 23:59:59' group by month,hour; |
|
2009,08,26, Wednesday
VPN上にsambaサーバー立ち上げて、セグメント毎にパーティション分けて、ネットワークアドレスでアクセスコントロールして、cronで定期的にバックアップうっかり削除なんかも復元できるようにしているサーバーがあるんですが、ひょんなことから特定の人だけで使いたいという要望がでてきました。
特定の人は2拠点に分かれており、その2拠点には大勢の社員がいてるので、ネットワークアドレス(24bitまで)の制御ではダメで、仮に32bitまでみてコントロールさせてもいいのですが手動でそのアドレスさえ割り振っちゃえばその2拠点からなら誰でもアクセスできてしまうので、ちょいと試行錯誤しました。 まずはsmb.confに以下の内容を追記 [passwdFolder] comment = パスワード制限共有フォルダ path = /usr/local/share/xxx/yyy guest ok = no hosts allow = 192.168.101. 192.168.102. 127. writable = yes printable = no security = user browseable = no client ntlmv2 auth = yes valid users = User1 User2 ポイントはこの3行 1.通常 globalに入れちゃう security = user を[passwdFolder]にだけ適用 2.browseable = no これを入れることによって、フォルダが非表示になるので、フォルダ名まで知っている人だけがわかる。 3.client ntlmv2 auth = yes Vista business,Vista home basic,XP Pro,XP Homeなど様々なOSがあり、動きが異なったので、認証方式を明示。 またすべてのOSで \\192.168.100.1(Sever IP)\passwdFolder\にアクセスすると、なぜかユーザ名が192.168.100.1\Guestになり変更できない… なので、 Vista business,Vista home basic,XP Pro は コントロールパネル -> ユーザ (ログオンするユーザを選択し)ネットワークパスワードの管理に server 192.168.100.1 ユーザ 192.168.100.1\loginUserName を登録してしまえばOK。 あとは認証方式を揃えるために、レジストリエディタで以下の値を2に変更。 HKEY_LOCAL_MACHINE>System>CurrentControlSet>Control\Lsa\LmCompatibilityLevel でもXP Homeにはネットワークパスワードの管理に追加はありません(^^; でそこでcmd立ち上げて、 net use \\192.168.100.1\passwdFolder /user:User1 と入力すればパスワードを求められますので、 smbpasswd -s User1 で指定したパスワードを入力すればOKです。 この接続が確認できれば、ファイル名を指定して実行から \\192.168.100.1\passwdFolder でアクセスすればフォルダの中身が見えるはずです。 案外こういう運用されて例って少なかったし、Windowsとの相互設定の問題もあったので自己メモとして。 |
|
2009,04,29, Wednesday
squidで社内PCを業務に関係あるサイトのみ接続できるようにしました。
vi /etc/squid/squid.conf acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl localnet src 192.168.1.0/255.255.255.0 acl localnet src 192.168.10.0/255.255.255.0 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT acl allowlist url_regex "/etc/squid/list.txt" /etc/squid/list.txt に許可サイトを正規表現で記述。 vi /etc/squid/list.txt ^http://maps.google.co.jp/ ^http://www.google.com/ あとはクライアントPC(Windows)のレジストリを編集して、proxyを外せないようにし、念のため接続タブも消しておきました。 HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel\Proxy 1:プロキシ設定変更不可 0:可 HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel\ConnectionsTab 1:接続タブ無効化 0:有効化 |















