忍者ブログ
  ちゃんとカテゴリ分けされておりませんので、 記事をお探しならブログ内検索が便利です。 ご活用くださいませー+.(≧∀≦)゚+.゚
Admin*Write*Comment
[1]  [2]  [3]  [4]  [5]  [6]  [7

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。




redmineサーバのディスク容量がひっ迫してきたので、過去にアップロードして不要になったファイルを削除しよう!
みたいな話が出てきました。
それで何千とあるチケットの中からどうにかして、添付をしているチケット、並びにそのサイズを割り出せないか?
ということでいろいろ調べてみました。

まず、バックアップ方法を調べる。
http://redmine.jp/faq/system_management/backup/
これによりますと、
Redmineインストールディレクトリ以下のfilesディレクトリチケットやWikiに添付されたファイルが格納されています。

と、あります。
ではこれでファイルサイズがわかるわね。
でもファイルはなんだか暗号のよう。
ファイルとチケットの結びつけは、普通に考えればDBに格納されているはず!
でもまずは確定させるところから…
他に読み進めていくと。。。
添付ファイル以外の全ての情報がデータベースに格納されています。

と、あります。
ということは、やはりチケットとファイルの結びつけはDBを見ればわかるはず!!!
そこでshow tablesしてみると、、、
思ったよりテーブル数は少ない。。。
みたまんま、Issuesがチケットテーブルなのはわかるけど、、、
ここからはERもなしにたどり着くのは正直つらい…
と涙が出そうになったところで、attachmentsテーブルを発見!
見てみるとアップロードしたファイルに関する情報が!
でもそのファイルがどこに添付されたものなのかはカラム名からは推測が難しい…

かくなる手段は!
実際に添付されているチケットのページにアクセスしたときに発行されるSQLをみる!!!
と、いうことでクエリログを取ってみる。。。

attachments テーブルを使用しているログを見てみたところ、、
HITしましたぁ(*^ ^*)
container_id と container_type で引き抜いているみたいです。

  container_id: チケットのID
container_type: Issue(固定)

ちなみに attachments テーブルには filesize カラムがあるのでディスクを直接見なくても大きなサイズのファイルがすぐにわかりました。
これをもとにチケットを確認し、不要な添付ファイルの削除がなんとかできましたとさ。

そもそもメールで添付できない大きいファイルだからってなんでもかんでもRedmineを中継するような体質は何とかした方が…
とは言えないのでした…

Redmine version  2.6.0.stable

拍手

PR



これまたすぐに忘れてしまう、ポスグレでのカラム追加です。

ALTER
TABLE [table] ADD COLUMN [column_name] [data_type];

ex.)
ALTER TABLE table_a ADD COLUMN new_field varchar(255);

データ型を変えたい場合はこちら

検証)
PostgreSQL 9.3.5

拍手




pythonのseleniumでWEBのテストを行う方法です。
Firefoxに関する記事はいっぱいあるし、特にseleniumさえ導入できればすぐに使えるので問題ないのですが、Chromeになると情報が少ないので載せておきます。

大前提としてChromeさんをインストールしておいてね。

次に、ドライバをインストール。
zipを解凍して出てくる「chromedriver.exe」を任意のディレクトリに配置します。

前支度はこれくらい。
意外と簡単でした。

ユーザエージェントとプロキシを変更して、ハンドリングする場合のサンプルを掲載しておきます。

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--user-agent=Mozilla/5.0 (Linux; Android 4.2.2; SHL24 Build/S2040) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36")
options.add_argument("--proxy-server=localhost:8080")
options.add_argument("--disable-prompt-on-repost")
driver = webdriver.Chrome(r'C:\chromedriver.exe', chrome_options=options) 
driver.get("https://www.google.co.jp/")

add_argument()はおそらくみたとおり、chrome.exeの起動オプションがそのまま使えそうです。


参考文献
http://www.ericdlarson.com/misc/chrome_command_line_flags.html
http://www.mazn.net/blog/2014/07/08/1371.html
http://yuichi.tea-nifty.com/blog/2008/12/googlechrome-c0.html
http://www.yoheim.net/blog.php?q=20130402

拍手




Host 'hostname' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'
MySQL :: MySQL 4.1 リファレンスマニュアル :: A.2.5 Host '...' is blocked エラー

MySQLでよく見るエラーです^^
私はバッチ系の人なので、並列処理をうまくできなかったり、サーバのスペックを見誤ると大量に出たりします。

いつもはまってしまうことが2店あります++。

このエラーはクライアント側で見ることができます。
ですのでmysqladminコマンドはクライアント側でやってしまいがちですが、サーバ側で実施しましょう^^

も一つ、マニュアル通り'mysqladmin flush-hosts'をじっしするとたいていエラーになります。
これは'mysql'と同じくログインを必要とするため、たいていは下記のようになります。
mysqladmin flush-hosts -uroot -p

拍手




5.5.15リリースの記事を書いている間に5.4.31もリリースなんてことになっていました。。。
http://php.net/archive/2014.php#id2014-07-24-2

なんとなく、悔しいのでこちらもコンパイルしてみます。
http://notebook.mor-maid.info/server/language/php/5.4.31.html

まったく同じようにコンパイルが通りました^^

拍手




PHP 5.5.15がリリースされたみたいですemoji
http://php.net/archive/2014.php#id2014-07-24-1

ということで早速コンパイルしてみましたーemoji
http://notebook.mor-maid.info/server/language/php/5.5.15.html

例によってそれだけの話です
リリース概要とか日本語訳してみたかったけど、それほど誤訳力あるわけじゃないし、
このあたりが限界なのです…emoji

拍手




これもすぐ忘れてしまうのでメモするのです。。。
手が空いたらCookieとか、もうちょっと武装します。
# -*- coding: utf-8 -*-
import pycurl
import StringIO

body = StringIO.StringIO()
header = StringIO.StringIO()
url = "http://localhost/"


ch = pycurl.Curl()
ch.setopt(curl.URL, url)
ch.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0")
ch.setopt(ch.PROXY, "http://localhost:8080/")
ch.setopt(ch.CONNECTTIMEOUT, 5)
ch.setopt(ch.TIMEOUT, 10)

ch.setopt(curl.WRITEFUNCTION, body.write)
ch.setopt(curl.HEADERFUNCTION, header.write)
ch.perform()

html = body.getvalue()
header = header.getvalue()

ch.close()

拍手




あと少しでリリースかしら?

http://distrowatch.com/?newsid=08514

CentOS7もRC番だし、ほぼ同時に解禁になるかもー

拍手




あるプロジェクトでsqlite3を使用してみようとおもって、導入したはいいものの
想定より、並列作業が発生したり、管理レコード数が伸びてしまい、パフォーマンスが
発揮できなかったのでMySQLへ移行しようと思いました。

その際、SQLの違いでスムーズにリストアがいかなかったので
あれこれこねくり回してしまった結果のメモです。

 db_file=sqlite.dmp
 grep -v 'PRAGMA' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 sed -e 's/TRANSACTION//g' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 sed -e 's/"//' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 sed -e 's/"//' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 sed -e 's/AUTOINCREMENT/AUTO_INCREMENT/' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 grep -v 'sqlite_sequence' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 grep -v 'CREATE INDEX' ${db_file} > ${db_file}.tmp; cat ${db_file}.tmp > ${db_file}
 rm ${db_file}.tmp
INDEXは無視です。
形式が違うので、こちらは必要に応じて後から手動で追加です。
そのほか、sqlite3は主に、INTとTEXTなので、場合によってはvarchar()にしたほうがいいと思います。
取り急ぎ、MySQLへ持ってきたかったので、かなり雑です。
テーブル構造によってはもっと複雑になるでしょう。
その時に直面したらまたUPDATEします。

拍手




ウィンドウズでハングアップしているバッチを停止しなくてはならない事案が発生しました。。。
ウィンドウズは正直苦手なのよね…
とはいえ、WindowsServer2003の構築経験があるので、この手の話はそう拒否るほどじゃないのがワ・タ・シ ←
最近PythonばかりなのでここでもPythonを使ってみることにします。
と、ここまで来てやっぱり不要という話になってしまったので、プロセスの確認までを備忘録的にあげておきます。


import subprocess
import csv
p = subprocess.Popen(
    ['TASKLIST',
    '/S',
    'remote-pc',
    '/U',
    'administrator',
    '/P',
    'pasword',
    # '/NH',
    '/FO',
    'CSV',
    '/V',
    '/FI',
    'CPUTIME lt 00:05:00',
    #'/FI',
    #'USERNAME eq administrator',
    '/FI',
    'IMAGENAME eq my_batch.bat'],
    stdout=subprocess.PIPE)
reader = csv.reader(p.stdout)
header = reader.next()
for row in reader:
    for i in xrange(len(row)):
        print header[i].rjust(25), row[i]
    print "-" * 60

p.stdout.close()

確認環境
Windows7 6.1.7601 Service Pack 1 ビルド 7601
Python2.7.6

拍手



ブログ内検索
カレンダー
03 2018/04 05
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
カウンター
最新コメント
最新トラックバック
プロフィール
+ハンドル+
y_ayamori(purple)
+職業+
IT系エンジニア
+すまい+
さいたま
バーコード
ブログパーツ
アバター
Copyright © アナログを愛するデジタル生活館 All Rights Reserved.
photo by Kun material by Atelier Black/White Template by Kaie
忍者ブログ [PR]