memo
apt update error
https://ameblo.jp/l-yotarou/entry-12722370981.html
sudo apt update
を実行した時に
署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: http://repo.mysql.com/apt/ubuntu focal InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 467B942D3A79BD29
が発生しました。
一瞬ドキリとしますが、こんな時には慌てずに
NO_PUBKEY 467B942D3A79BD29
最近変更したファイルをディレクトリを保持してコピー
cp --parents `find source -mmin -360 -type f` /mnt/c/temp/.
数字のみ入力させる
jQueryでinputに数字のみ入力させるための本当に正しい方法 <- 参照
[javascript]
$(document).on('keydown', '.input_number_only', function(e){
let k = e.keyCode;
let str = String.fromCharCode(k);
if(!(str.match(/[0-9]/) || (37 <= k && k <= 40) || k === 8 || k === 46)){
return false;
}
});
// フォーカスが外れた時に数値以外を削除する
$(document).on('blur', '.input_number_only',function(){
this.value = this.value.replace(/[^0-9]+/i,'');
});
[html] 番地:<input type="text" class="input_number_only" id="fld0001")><br>
禁則処理
禁則処理を行いつつ特定の文字数で折り返す。(半角文字を考慮してないので表示幅がずれる)
my $split = sub {
my $moji = shift;
my $in = shift;
my @out;
my $no_begin = "!%),.:;?]}、。々〉》」』】〕" .
"ぁぃぅぇぉっゃゅょゎゝゞァィゥェォッャュョヮヵヶ" .
"ーヽヾ!%),.:;?]}"; # 行頭禁則文字
my @char = $s->{dbh}->split_char($in);
my $t = '';
my $i = 0;
my $f = 0;
for(@char){
if($_ eq "\n" or $i >= $moji){
push @out,$t;
$i = 0;
$t = '';
}
if($i == 0 and $no_begin =~ /$_/ and $f == 0){
$out[-1] .= $_;
$f = 1;
next;
}
$f = 0;
next if($_ eq "\n");
$t .= $_;
$i++;
}
push @out,$t if($t ne '');
return @out;
};
#------------------------------------------------------------------
sub split_char{
#------------------------------------------------------------------
my $s = shift;
my $str = shift;
my $ascii = '[\x00-\x7F]';
my $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]';
my $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]';
my @chars = $str =~ /$ascii|$twoBytes|$threeBytes/go;
return @chars;
}
ヘッドレスchrome
- "C:\Program Files\Google\Chrome\Application\chrome.exe" --headless --disable-gpu --no-sandbox --print-to-pdf=C:\temp\bar.pdf https://qweer.info/api/menu/menu
- "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --headless --disable-gpu --no-sandbox --print-to-pdf=C:\temp\bar.pdf https://qweer.info/api/menu/menu
Puppeteer の概要
パペットコアを使用して Microsoft Edge を起動するhttps://docs.microsoft.com/ja-jp/microsoft-edge/puppeteer/
便利リンク
rowspanとcolspanで境界線を非表示にする
Make border invisible with rowspan and colspanより
Google Chromeのバグのようですが、疑似要素を使用して必要なビジュアルを用意するというアイデアは次のとおりです。
td {
border-style: solid;
}
.hide-border {
position:relative;
}
.hide-border:before {
content:"";
position:absolute;
top:-3px;
height:3px;
left:0;
right:0;
background:#fff;
}
<table style="border-collapse: collapse;"> <tr> <td rowspan="2">1</td> <td colspan="2">2</td> </tr> <tr> <td>3</td> <td class="hide-border">WANT NO BORDER ABOVE THIS CELL</td> </tr> </table>
-----
.leftBorderNone{
position: relative;
border-left-style: hidden;
}
.leftBorderNone:before{
content:"";
position:absolute;
top:0px;
bottom:0px;
left:0px;
width:1px;
background:#fff;
}
ORACLEのテーブル定義を確認する
https://qiita.com/ohs30359-nobuhara/items/a04637a1f2b26ee34896
SELECT DISTINCT
main.column_name AS カラム名,
main.data_type AS データ型,
main.data_length AS カラム長,
CASE main.nullable
WHEN 'N' THEN '×'
WHEN 'Y' THEN '○'
END AS NULL許可,
sub.constraint_type AS 主キー,
sub.last_change AS 最終更新日,
sub.index_name AS インデックス名
FROM
user_tab_columns main
LEFT JOIN
(SELECT
col.column_name AS column_name,
con.constraint_type AS constraint_type,
con.last_change AS last_change,
con.index_name AS index_name,
con.table_name AS table_name
FROM
user_constraints con
JOIN
user_cons_columns col
ON
con.constraint_name = col.constraint_name
AND
con.table_name = col.table_name
WHERE
con.constraint_type = 'P'
ORDER BY
con.table_name) sub
ON sub.column_name = main.column_name AND sub.table_name = main.table_name WHERE main.table_name = :table_name;
edge ENTER to next
function nextElementFocus(name){
var userAgent = window.navigator.userAgent;
if (userAgent.match(/MSIE/)){
window.event.keyCode = 0x09;
return;
}
var elements = Array.prototype.slice.call(document.getElementsByTagName('*'));
elements.sort(function(a,b){ return a.tabIndex - b.tabIndex;});
var ix=1;
for (var i=0;i<elements.length;i++){
if(elements[i].name == name){
while(1){
if((elements[i+ix].type == 'text'
|| elements[i+ix].type == 'textarea'
|| elements[i+ix].type == 'radio'
|| elements[i+ix].type == 'select-one'
|| elements[i+ix].type == 'button'
|| elements[i+ix].type == 'submit'
) && !elements[i+ix].disabled
&& !elements[i+ix].readOnly
&& elements[i+ix].name != name
&& elements[i+ix].name != ''
){
elements[i + ix].focus();
if(elements[i+ix].name == document.activeElement.name){
break;
}
}
ix++;
if(i+ix >= elements.length){
i=0;
ix=0;
}
}
//alert(elements[i+ix].name + "|" + JSON.stringify(document.activeElement));
//elements[i + ix].focus();
//elements[i + ix].select();
break;
}
}
event.preventDefault();
}
ie->edgeの修正内容
1.scriptXが使えないのでcssでページコントロールを行う。
@page {
size: A4 landscape; /* landscape:横 */
margin: 0px 0px 0px 0px; //side
}
.pageSetting{
margin: 0px 0px 0px 0px; //up /* 上 右 下 左 */ }
- @pageにてtopマージンを小さくしないと日付、タイトル、ページが印刷される。左右のマージンは@pageにて行い、上下のマージンはpageSettinngクラスで行う。各ページは<div class=pageSettinng> </div>でくくる事
2.ENTER入力時に次項目に移動する為の”window.event.keyCode = 0x09;”が効かない。
- JavaScriptにてnextElementFocusファンクションを作成しtabIndex順に移動するようにした。
3.tableタグに幅指定がないとieとイメージが違ってくる。(ハンコの欄とか)
- mmt.pmのprintoutサブルーチンにてtableでwidth指定のないものをwidth=100%に補正した。
4.<caption>タグのalignが効かない(廃止)
- mmt.pmのprintoutサブルーチンにて<caption align=....を<caption style='text-align:...に補正した。
5.text-alignがブロック要素には効かない (<td>の中の<table>とか)
ブロック要素にmargin-left:margin-right:をautoにする。 app201用にmmt.pmにて補正 中央寄せ <td style="text-align:center;"><table> . . . を <td style="text-align:center;"><table style="margin-left:auto;margin-right:auto"> に 右寄せ <td style="text-align:right;"><table> . . . を <td style="text-align:right;"><table style="margin-left:auto;"> に
6.翻訳しますか?のダイアログが表示される
- <html>を<html lang="ja">に変更。
なんかわかる気がする
svn管理のファイルをgitにコピー
svn管理しているファイル群を.svnを除いてgit管理しているフォルダへディレクトリ構造を維持したままコピーする。‘svn管理しているディレクトリにてfindでファイルを検索しtarで固めてgit管理しているディレクトリに展開する。‘
$ tar cf - $(find . -type d -name ".svn" -prune -o -type f) |tar xf - -C ../../git/mmt/toolmmt/
-pruneでディレクトリが選択されるんでgrep -vをパイプで繋いだ。あと、今日編集したファイルを選択したいので-mtime 1 も追加した。
$ tar cf - $(find . -type d -name ".svn" -prune -o -mtime 1 -type f |grep -v '/.svn')|tar xf - -C ../../git/mmt/toolmmt/
LAST_INSERT_ID()はauto_incrementedでなくてもいいしINSERTじゃなくてもいい
MySQLにLAST_INSERT_ID()という関数があります。auto_incrementedのフィールドがあって、そこにレコードが追加された時に、最後に追加されたidを取得するというものです。
ですが、LAST_INSERT_ID()には引数を渡すことができて、その結果をUPDATEに渡すと、「最後にUPDATEした数値」を取得することができます。
こんな感じ
-- 準備 CREATE TABLE sequence (id INT NOT NULL); INSERT INTO sequence VALUES (0); -- 採番 UPDATE sequence SET id=LAST_INSERT_ID(id+1); SELECT LAST_INSERT_ID();
まず、idというフィールドだけのテーブルを作り、1件だけレコードをINSERTしておきます。auto_incrementedでなくてもいいです。
採番時には、idをインクリメントしてUPDATEします。その際にLAST_INSERT_ID関数を経由してUPDATEします。同一セッションであれば、トランザクションで囲まなくても、先ほどUPDATEしたIDを取得することができています。INSERTじゃないので、レコードは1件のままです。
似たことは、トランザクションを区切ってやったりロックかけたりしてできないくはないのですが、こちらの方がデッドロックの心配もなく、ロジックはシンプルなのでおすすめです。
svn
svn switch --relocate <旧リポジトリ> <新リポジトリ>
- サーバーのバージョンアップ&移動でバージョンが不一致
svn: E155021: The path 'C:\aaa\bbbb\ccccc' appears to be part of a Subversion 1.7 or greater working copy. Please upgrade your Subversion client to use this working copy.
アップグレードする
svn upgrade
ローカルのバージョンが合わないと言われsvn環境を作り直す事に…
cd /var/www/cgi-bin/[localdir]
find . -name .svn -exec rm -fr {} \;
cd ..
svn checkout svn+ssh://user@hostname/usr/local/svnroot/[systemname]
cd [systemname]
svn staus で「local unversioned, incoming add upon update」が出るので下記コマンドを実行
svn resolved *
statusが'D'になるので変更を取り消す
svn revert -R .
Subversionのリポジトリを別のサーバーに移行する手順
Subversionのリポジトリを別のホストへ移行する作業を行ったので、方法を書き残します。
手順概要
Subversionにおけるリポジトリの移行には、Subversion の管理コマンド svnadmin を利用して、現行のリポジトリのダンプデータを出力し、そのダンプデータを基に新しいサーバーにリポジトリを復元させる必要があります。
今回の手順順序は以下の通りです。
- 現行のリポジトリのダンプデータを出力させる。(転送負荷を下げる為に)ダンプデータを圧縮させる。
- 圧縮したダンプデータを新しいサーバーに転送する。
- 圧縮されたダンプデータを解凍する。
- 新しいリポジトリにダンプデータを復元する。
※旧サーバー # svnadmin dump /usr/local/svnroot/systemName >/tmp/svn.dump # cd /tmp # gzip svn.dump # scp svn.dump.gz newHostName:/tmp/. ※新サーバー # mkdir /usr/local/svnroot/ # svnadmin create /usr/local/svnroot # cd /tmp # gzip -d svn.dump.gz # svnadmin load /usr/local/svnroot < svn.dump|tee /tmp/svnadmin.load.log ※クライアントのサバー切り替え $ svn switch --relocate svn+ssh://user@oldHostName/usr/local/svnroot/systemName svn+ssh://user@newHostName/usr/local/svnroot
位置情報
http://www21051ue.sakura.ne.jp/geolocation.html
複数ファイルをアップドード
http://www21051ue.sakura.ne.jp/album/album/album.cgi
- $cgi->filefield(-name=>'upload_file') + $cgi->filefield(-name=>'upload_file',-multiple=>'multiple')
- my $filename = $cgi->param('upload_file');
+ my @filename = $cgi->param('upload_file');
LINE ARTを背景に
http://www21051ue.sakura.ne.jp/lineArt/lineArt.html
MeCab
[2018/6/16]
mecabのバージョンが変わった(?)せいかText::MeCabが文字化けするようになってしまったのでText::MeCabをMeCabに変更した。https://github.com/john-smith-7701/mmt/commit/2e378c47731d991d4f54f4f75f277f71a78441d2#diff-c3bd1bdc903d833ff1fbe687f1ab4a68
$ perl -MMeCab -e 'print MeCab::Tagger->new()->parse("今日は良い天気ではない")'
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
良い 形容詞,自立,*,*,形容詞・アウオ段,基本形,良い,ヨイ,ヨイ
天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
ない 形容詞,自立,*,*,形容詞・アウオ段,基本形,ない,ナイ,ナイ
EOS
$
$ perl -MText::MeCab -E 'my $m = Text::MeCab->new();my $n = $m->parse(pop); do{say $n->surface;} while ($n = $n->next);' 'わたしはたわしをわたす'
わたし
は
たわし
を
わたす
$
PerlとMXNetで文章生成
http://film.rlss.okayama-u.ac.jp/~kgk/perl/mxnet-lstm/index.html
後で試す。
2枚の画像のdiff(差分)を超簡単に調べる方法
http://blog.mirakui.com/entry/20110326/1301111196
$ composite -compose difference A.jpg B.jpg diff.jpg
Debian(Ubuntu) apt-get upgrade の「E: 未解決の依存関係です。」ではまったら
https://server-setting.info/debian/apt-get-upgrade-error-loop.html より
apt-get upgrade の「E: 未解決の依存関係です。」ではまったら aptitude を使ってみることです。
6.いよいよ aptitude を使ってパッケージのアップグレードを行ってみる
$ aptitude updatereturn 発見 http://ftp.jp.debian.org squeeze Release.gpg 無視 http://ftp.jp.debian.org/debian/ squeeze/main Translation-en .... $ aptitude safe-upgradereturn 以下のパッケージが更新されます: libmysqlclient-dev libmysqlclient18 mysql-server-5.5 .... 以下の、インストールが完了していないパッケージが設定されます: initscripts linux-base linux-image-2.6.32-5-amd64 mysql-client-5.5 mysql-server-core-5.5 更新: 24 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。 21.2 MB のアーカイブを取得する必要があります。展開後に 2,619 kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] y .... mysql-server-5.5 を展開し、置換しています... dpkg: /var/cache/apt/archives/mysql-server-5.5_5.5.25-1~dotdeb.0_amd64.deb の処 理中にエラーが発生しました (--unpack): '/usr/lib/mysql/plugin/ha_example.so' を上書きしようとしています。これはパッケ ージ libmysqlclient-dev 5.5.24-1~dotdeb.1 にも存在します .... done 現在の状態: 更新が 24 個 [-1]。
とエラーが発生しますが、apt-getと異なるのは、インストール(アップグレード)できるものは、全てインストール(アップグレード)してしまう点です。apt-getでは、エラーが発生した時点で、処理を停止してしまいますから、そこから抜け出せなくなることが、よくあります。
続けて、再度、aptitude safe-upgrade を投入します。
7.aptitude safe-upgradeを再投入してみる
$ aptitude safe-upgradereturn 以下のパッケージが更新されます: libmysqlclient-dev libmysqlclient18 mysql-server-5.5 .... 更新: 23 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。 アーカイブ 20.4 MB 中 0 B を取得する必要があります。展開後に 2,296 kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] y .... mysql-server-5.5 を展開し、置換しています... dpkg: /var/cache/apt/archives/mysql-server-5.5_5.5.25-1~dotdeb.0_amd64.deb の処 理中にエラーが発生しました (--unpack): '/usr/lib/mysql/plugin/ha_example.so' を上書きしようとしています。これはパッケ ージ libmysqlclient-dev 5.5.24-1~dotdeb.1 にも存在します .... 現在の状態: 更新が 2 個 [-22]。
8.aptitude safe-upgradeを再再投入してみる
$ aptitude safe-upgradereturn 以下のパッケージが更新されます: mysql-server-5.5 更新: 1 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。 アーカイブ 8,860 kB 中 0 B を取得する必要があります。展開後に 841 kB のディスク 領域が新たに消費されます。 先に進みますか? [Y/n/?] y changelog を読んでいます... 完了 パッケージを事前設定しています ... (データベースを読み込んでいます ... 現在 41075 個のファイルとディレクトリがイン ストールされています。) mysql-server-5.5 5.5.24-1~dotdeb.1 を (.../mysql-server-5.5_5.5.25-1~dotdeb.0_amd64.deb で) 置換するための準備をしています ... Stopping MySQL database server: mysqld. Stopping MySQL database server: mysqld. mysql-server-5.5 を展開し、置換しています... man-db のトリガを処理しています ... mysql-server-5.5 (5.5.25-1~dotdeb.0) を設定しています ... Stopping MySQL database server: mysqld. Starting MySQL database server: mysqld .. Checking for tables which need an upgrade, are corrupt or were not closed cleanly.. 現在の状態: 依存関係破損が 0 個 [-1], 更新が 1 個 [-1]。
とエラーがなくなりました。
一応、確認のため、再度、aptitude safe-upgrade を投入します。
$ aptitude safe-upgradereturn インストール・削除・更新されるパッケージがありません。 更新: 0 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。 0 B のアーカイブを取得する必要があります。展開後に 0 B のディスク領域が新たに消 費されます。
レスポンスのheaderとbodyを確認する。
$ curl -i -s http://localhost:3000/api/json/json_test01
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 125
Server: Mojolicious (Perl)
Date: Fri, 01 Jul 2016 01:48:07 GMT
{"array":[1,2,3,4],"head":"Json Test Data","lang":["perl","ruby","php"],"日本語":["漢字","ひらがな","カタカナ"]}
$
UFT-16なんだ・・・
日本語で作ったMySQLのテーブルをDBIで読み込むとフィールド名がUTF-16で取得されてしまう。これはなかなか厄介だ!!
$VAR1 = [
{
'Extra' => '',
'Type' => 'decimal(16,0)',
'Field' => "\x{5546}\x{54c1}\x{30b3}\x{30fc}\x{30c9}",
'Default' => '0',
'Null' => 'NO',
'Key' => 'PRI'
},
{
'Extra' => '',
'Type' => 'char(30)',
'Field' => "\x{54c1}\x{540d}",
'Default' => undef,
'Null' => 'YES',
'Key' => ''
},
{
'Extra' => 'on update CURRENT_TIMESTAMP',
'Type' => 'timestamp',
'Field' => 'UPD_TIME',
'Default' => 'CURRENT_TIMESTAMP',
'Null' => 'NO',
'Key' => ''
},
{
'Extra' => '',
'Type' => 'decimal(9,0)',
'Field' => "\x{4e0a}\x{4ee3}",
'Default' => undef,
'Null' => 'NO',
'Key' => ''
},
{
'Extra' => '',
'Type' => 'decimal(9,0)',
'Field' => "\x{539f}\x{4fa1}",
'Default' => undef,
'Null' => 'NO',
'Key' => ''
},
{
'Extra' => '',
'Type' => 'char(2)',
'Field' => "\x{5546}\x{54c1}\x{533a}\x{5206}",
'Default' => undef,
'Null' => 'NO',
'Key' => ''
},
{
'Extra' => '',
'Type' => 'char(4)',
'Field' => "\x{5927}\x{5206}\x{985e}",
'Default' => undef,
'Null' => 'NO',
'Key' => ''
},
{
'Extra' => '',
'Type' => 'char(4)',
'Field' => "\x{4e2d}\x{5206}\x{985e}",
'Default' => undef,
'Null' => 'NO',
'Key' => ''
},
{
'Extra' => '',
'Type' => 'char(4)',
'Field' => "\x{5c0f}\x{5206}\x{985e}",
'Default' => undef,
'Null' => 'NO',
'Key' => ''
}
];
ubuntu 16.04 アップグレードにてmysqlでエラー
my.cnfをbackup&removeしてクリーンインストールすれば良い。http://askubuntu.com/questions/760724/16-04-upgrade-broke-mysql-server より
The instructions @andrew-beerman posted are on the right track, though they aren't quite clear to me and seem to recommend more than is necessary. I pieced together the answer from the above and a helpful post in the bug thread.
These are the steps I took to correct this:
- Back up your my.cnf file in /etc/mysql and remove it
- Remove the folder /etc/mysql/mysql.conf.d/
- Verify you don't have a my.cnf file stashed somewhere else (I did in my home dir!) or in /etc/alternatives/my.cnf.
- Backup and remove /etc/mysql/debian.cnf files (not sure if needed, but just in case)
sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7 sudo apt install mysql-server
- In case your syslog shows an error like "mysqld: Can't read dir of '/etc/mysql/conf.d/'" create a symbolic link ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d Then the service should be able to start with service mysql start.
memo
http://d.hatena.ne.jp/sugyan/touch/20100901/1283267925
http://www.wysiwyg.jp/imr/GDvsIM.htm
http://imager.perl.org/docs/Imager/Install.html
http://cpanmag.koneta.org/012-imager/
全テーブルのレコード数を取得
- oracle ねもぷらすより
SELECT
table_name,
TO_NUMBER(
EXTRACTVALUE(
xmltype(
dbms_xmlgen.getxml('SELECT COUNT(*) AS C FROM '||table_name)
),
'/ROWSET/ROW/C'
)
) AS count
FROM user_tables;
画像をフリックして画像を切り替える
<script type="text/javascript">
\$(function() {
\$('#flick').bind("touchstart touchmove touchend",touchHandler);
function touchHandler(e){
e.preventDefault();
var touch = e.originalEvent.touches[0];
if(e.type == "touchstart"){
startX = touch.pageX;
}else if(e.type == "touchmove"){
diffX = touch.pageX - startX;
}else if(e.type == "touchend"){
if(diffX > 50){
\$.ajax({
url: 'album.cgi',
type: 'GET',
data: {
_action: 'flick',
_name: document.img.src,
_count: '-1',
},
success: function( data,textStatus,jqXHR){
var res = JSON.parse(data);
document.img.src=res.name;
}
})
}
if(diffX < -50){
\$.ajax({
url: 'album.cgi',
type: 'GET',
data: {
_action: 'flick',
_name: document.img.src,
_count: '1',
},
success: function( data,textStatus,jqXHR){
var res = JSON.parse(data);
document.img.src=res.name;
}
})
}
}
}
});
</script>
EXCELでF2,[ENTER]の連打がめんどくさい
EXCELでセルに計算式が入っているのに再計算してくれない時があります。そんな時はF2で編集モードにして[ENTER]を入力すれば再計算してくれます。が、それが何十行、何百行も連打しなけれならないと時もあり、気力が続きません。(黙々と連打できる同僚もいるが…)そんな時は、置き換えで=を=に全て置き換えれば再計算してくれます。
- 手順
- ctrl+Hで置き換えのウインドを開く
- 置き換え前の文字に'='を入力
- 置き換え後の文字に'='を入力
- 全て置き換えボタンをクリック
- 以上
※区切り位置でもできるらしい
keyCodeを取り込む
サンプルを作ってみた
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<style type="text/css">
#item1 {color: red;
}
</style>
<script>
$(document).ready(function(){
$(window).keydown(function(e){
$("div").text(e.keyCode);
if (e.keyCode == 40) {
$('#item1').css({'margin-top': '+=10px'});
}else if (e.keyCode == 38) {
$('#item1').css({'margin-top': '-=10px'});
}else if (e.keyCode == 39) {
$('#item1').css({'margin-left': '+=10px'});
}else if (e.keyCode == 37) {
$('#item1').css({'margin-left': '-=10px'});
}
// return false;
});
});
</script>
</head>
<body>
<input type=text>
<input type=text>
<div id="item1" />
</body>
</html>
JQuery 1番下にスクロールする
[2014/4/14] JQueryでtextareaの1番下にスクロールする
// 1番下にスクロールする -- START
var go_bottom = function(targetId){
var $obj = $("#" + targetId);
if ($obj.length == 0) return;
$obj.scrollTop($obj[0].scrollHeight);
};
// 1番下にスクロールする -- END
html5 mp4
mp4をwebに埋め込む<video>タグ
<video src="$img/$1.mp4" preload="none" poster="$imagedir/$file" onclick="this.play();" width="640" controls> <source src="$img/$1.mp4"> </video>
ePOS-Device API
- ePOS-Device APIとはなに?google先生おしえて!
- Webブラウザーでレシートプリンターを制御する方
- ePOS-Print とは何か教えてください。
- ePOS-Print とは、コンピューター、スマートフォンやタブレット端末などの Web ブラウザーから、スマートレシートプリンターを制御する機能です。
HTML5 Canvas で描画した印刷イメージを印刷することもできます。
テキストを1文字づつ表示
http://zxcvbnmnbvcxz.com/demonstration/txtspan1.phpで教えてもらった。機動戦士ガンダムseedの起動画面みたいのを作ってみた。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<!-- links -->
<link href='http://fonts.googleapis.com/css?family=Monoton' rel='stylesheet' type='text/css' />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
</head>
<body>
<style type="text/css">
p:first-letter {
color: red;
font-size: 200%;
}
p{
margin: 0;
margin-top: 0;
margin-bottom: -0.8em;
}
.tgt {font-size: 50px; line-height: 1.3; letter-spacing: 5px; word-break:break-all;font-family: 'Monoton', Arial, sans-serif;}
.tgt {opacity: 0;}
.tgt span{opacity: 0;}
</style>
<script type="text/javascript">
$(window).bind('load',function(){
$('.tgt').children().andSelf().contents().each(function() {
if (this.nodeType == 3) {
$(this).replaceWith($(this).text().replace(/(\S)/g, '<span>$1</span>'));
}
});
// 一文字ずつフェードインさせる
$('.tgt').css({'opacity':1});
for (var i = 0; i <= $('.tgt').children().size(); i++) {
$('.tgt').children('span:eq('+i+')').delay(50*i).animate({'opacity':1},50);
};
});
</script>
<p class="tgt">
G eneral</p>
<p class="tgt">
U nilateral</p>
<p class="tgt">
N euro - link</p>
<p class="tgt">
D ispersive</p>
<p class="tgt">
A utonomic</p>
<p class="tgt">
M aneuver<br>
_______Synthesis System</p>
</body>
</html>
フォントをMagicRingに変更するとガンダムを動かす魔法の呪文のように見える。
--- gundam.html 水 4 23 11:06:23 2014
+++ gundam_magic.html 火 4 22 23:22:00 2014
@@ -9,16 +9,23 @@
</head>
<body>
<style type="text/css">
-p:first-letter {
- color: red;
+@font-face{
+ font-family: MagicRing;
+ src: url(http://www21051ue.sakura.ne.jp/font/MagicRing.ttf);
+}
+p:first-letter {
+ color: white;
font-size: 200%;
}
p{
margin: 0;
margin-top: 0;
margin-bottom: -0.8em;
+ color: white;
+ text-shadow: 1px 1px 20px red;
+ background-color: black;
}
-.tgt {font-size: 50px; line-height: 1.3; letter-spacing: 5px; word-break:break-all;font-family: 'Monoton', Arial, sans-serif;}
+.tgt {font-size: 50px; line-height: 1.3; letter-spacing: 5px; word-break:break-all;font-family: 'MagicRing','Monoton', Arial, sans-serif;}
.tgt {opacity: 0;}
.tgt span{opacity: 0;}
@@ -50,6 +57,6 @@
A utonomic</p>
<p class="tgt">
M aneuver<br>
-__________Synthesis System</p>
+_______Synthesis System</p>
</body>
</html>
ENTERでカーソル移動
行列固定TABLE
- cssだけで出来る事が判明
.fixed01,
.fixed02{
position: sticky;
top: 0;
left: 0;
}
.fixed01{
z-index: 2;
}
.fixed02{
z-index: 1;
}
sub matrixFixedCss{
my $s = shift;
my ($rows,$columns,@width) = @_;
my $css ='';
my $addLine = ':before{'
. 'content:""; position:absolute; pointer-events:none;'
. 'top:-1px; left:-1px; width:100%; height:100%;'
. 'border-right: 1px solid #888;'
. 'border-top: 1px solid #888;'
. '}';
my $left=0;
for ( my $i=1; $i<=$rows; $i++){
$left=0;
for (my $j=1;$j<=$columns;$j++){
$left+=$width[$j-1];
$css .= ".fixed${i}${j}{ position: sticky; top: @{[($i-1)*1]}rem; left: ${left}rem; z-index: 2;}\n"
. ".fixed${i}${j}${addLine}\n";
$css .= ".fixedd${j}{ position: sticky; top: 0; left: ${left}rem; z-index: 1;}\n"
. ".fixedd${j}${addLine}\n" if($i==1);
}
my $k = $columns+1;
$css .= ".fixed${i}${k}{ position: sticky; top: @{[($i-1)*1]}rem; left: 0; z-index: 1;}\n"
. ".fixed${i}${k}${addLine}\n";
}
return $css;
}
-style=>[{'src'=>$s->{cons}->{css}.'calendar.css'},
{'code'=>$s->{dbh}->matrixFixedCss(2,4,(0,7.6,10.8,4.1,4))},
↓↓↓
<style type="text/css">
<!--
.fixed11{ position: sticky; top: 0rem; left: 0rem; z-index: 2;}
.fixed11:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixedd1{ position: sticky; top: 0; left: 0rem; z-index: 1;}
.fixedd1:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixed12{ position: sticky; top: 0rem; left: 7.6rem; z-index: 2;}
.fixed12:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixedd2{ position: sticky; top: 0; left: 7.6rem; z-index: 1;}
.fixedd2:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixed13{ position: sticky; top: 0rem; left: 18.4rem; z-index: 2;}
.fixed13:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixedd3{ position: sticky; top: 0; left: 18.4rem; z-index: 1;}
.fixedd3:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixed14{ position: sticky; top: 0rem; left: 22.5rem; z-index: 2;}
.fixed14:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixedd4{ position: sticky; top: 0; left: 22.5rem; z-index: 1;}
.fixedd4:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixed15{ position: sticky; top: 0rem; left: 0; z-index: 1;}
.fixed15:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixed21{ position: sticky; top: 1rem; left: 0rem; z-index: 2;}
.fixed21:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixed22{ position: sticky; top: 1rem; left: 7.6rem; z-index: 2;}
.fixed22:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixed23{ position: sticky; top: 1rem; left: 18.4rem; z-index: 2;}
.fixed23:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixed24{ position: sticky; top: 1rem; left: 22.5rem; z-index: 2;}
.fixed24:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
.fixed25{ position: sticky; top: 1rem; left: 0; z-index: 1;}
.fixed25:before{content:""; position:absolute; pointer-events:none;top:-1px; left:-1px; width:100%; height:100%;border-right: 1px solid #888;border-top: 1px solid #888;}
-->
これが↓なかなか良い
サンプル作ってみた
CSSとjQueryでプルダウンメニュー(超簡単)
http://kachibito.net/snippets/simple-drop-down-menu-with-nestで教えてもらった。
サンプルを作ってみた。
wkhtmltopdfをUbuntuで使うためのメモ
LinuxでSSDのTrimコマンドを有効にする方法
http://d.hatena.ne.jp/pcmaster/20121108/p1
sarの読み方とか
- linuxチューニング (proc, sar, top でcpuボトルネックの調査)
- 【LAMPサイトのチューニング入門(1) -WWWサーバ編】
Perl 5.8.x Unicode関連
DBD::Oracle
サーバー SJIS クライアント eucの場合に ``$ENV{NLS_LANG} = 'JAPANESE_JAPAN.JA16EUC';''と設定するが半角カタカナをfetchすると DBD::Oracle::st fetchrow_hashref failed: ORA-01403: のエラーがでる。
- oci8.cを修正後make
# diff -c oci8.c.org oci8.c
*** oci8.c.org 2013-02-08 16:32:30.521068402 +0900
--- oci8.c 2013-02-08 16:55:10.110065190 +0900
***************
*** 3811,3817 ****
fbh->csid,fbh->csform,oci_csform_name(fbh->csform), fbh->disize);
if (fbh->ftype == 5)/* XXX need to handle wide chars somehow */
! fbh->disize += 1;/* allow for null terminator */
/* dbsize can be zero for 'select NULL ...'*/
--- 3811,3817 ----
fbh->csid,fbh->csform,oci_csform_name(fbh->csform), fbh->disize);
if (fbh->ftype == 5)/* XXX need to handle wide chars somehow */
! fbh->disize = fbh->disize*4 + 1; /* allow for null terminator */
/* dbsize can be zero for 'select NULL ...'*/
2007年頃同じようなパッチを当てて覚えがあるが、今(2013)でも同じ事をしなければいけないのか?(当時はDBI-Japanのページを参照してた気がするが、DBI-Japanはなくなったのか?…)
参考:
DBI(DBD::Oracle)で取得したデータのutf8フラグをまとめて落とす
DBIでoracleをunicodeで扱うとutf8フラグがもれなく付いてきます。DBD::MySQLの様にutf8フラグON,OFFの設定ができません。そこで下記の様になった場合DBIのサブクラスを使います。
- DBI(DBD::Oracle)で取得したデータにutf8フラグが付いてくる。
- 取得データは全てutf8フラグなしで扱いたい。
- 全ての箇所にutf8フラグ落とす処理を書くの面倒。
DBD::Oracleでutf8フラグが付いてくる条件はこのあたり参照。DBD::Oracle and Unicode - search.cpan.org
[hoge.pl]
#!/usr/bin/env perl
use strict;
use warnings;
use DBI;
use MySubDBI; # DBIサブクラス
my $dbh = DBI->connect("dbi:Oracle:localhost",
"scott", "tiger", { RootClass => "MySubDBI" });
my $sth = $dbh->prepare("SELECT 'ほげ' AS HOGE FROM DUAL");
$sth->execute;
while (my $row = $sth->fetchrow_hashref) {
print $row->{HOGE}."ほげ\n";
}
# => ほげほげ
[MySubDBI.pm]
use strict;
use warnings;
use Encode;
package MySubDBI;
use base qw(DBI);
package MySubDBI::db;
use base qw(DBI::db);
package MySubDBI::st;
use base qw(DBI::st);
sub fetch {
my ($self, @args) = @_;
my $row = $self->SUPER::fetch(@args) || return;
[ map { Encode::is_utf8($_) ? Encode::encode_utf8($_) : $_ } @$row ];
}
1;
Unicode 変換時の Jcode のエラー
Jcodeでユニコード(usc2)変換時にエラーがでる。
Undefined subroutine &Jcode::_Classic::euc_ucs2 called at /usr/local/share/perl5/Jcode/_Classic.pm line 250., referer:
ここにこうある。この原因は、ちゃんと Jcode.pm のインストール時に make; make install をして Unicode.pm を作成していないから。なので、本来なら make して、Unicode.pm を作ってやるのが一番だが、ホスティング環境によっては SSH 接続等でのシェル使用を許してなくて(FTP のみ可とかで) make 出来ないケースもあるしな。
解決策として、
Jcode/_Classic.pm の 255行目付近を、
sub utf8{
load_module("Jcode::Unicode");
euc_utf8(${$_[0]->[0]});
}
↓
sub utf8{
load_module("Jcode::Unicode");
Jcode::euc_utf8(${$_[0]->[0]});
}
と変更し、Jcode::Unicode(Unocode.pm)の euc_utf8 ではなく、Unicode/NoXS.pm 内の Jcode::euc_utf8 を呼ぶようにしてやると書いているサイトもあるが嘘。これだと、確かにエラーで落ちることはなくなるが、UTF-8 がらみの変換が正しく行われない。
UTF-8 がらみの変換、
$str = Jcode->new($str, 'utf8')->h2z->jis;
とか
$str = Jcode->new($str, 'utf8')->h2z->euc;
が正しく行われるようにするには、Jcode/Unicode/NoXS.pm を以下のように編集する。
% diff NoXS.pm NoXS.pm_org
56c56
< sub Jcode::_Classic::ucs2_euc{
---
> sub Jcode::ucs2_euc{
71c71
< sub Jcode::_Classic::euc_ucs2{
---
> sub Jcode::euc_ucs2{
87c87
< sub Jcode::_Classic::euc_utf8{
---
> sub Jcode::euc_utf8{
90,91c90,91
< &Jcode::_Classic::euc_ucs2($r_str);
< &Jcode::_Classic::ucs2_utf8($r_str);
---
> &Jcode::euc_ucs2($r_str);
> &Jcode::ucs2_utf8($r_str);
94c94
< sub Jcode::_Classic::utf8_euc{
---
> sub Jcode::utf8_euc{
97,98c97,98
< &Jcode::_Classic::utf8_ucs2($r_str);
< &Jcode::_Classic::ucs2_euc($r_str);
---
> &Jcode::utf8_ucs2($r_str);
> &Jcode::ucs2_euc($r_str);
101c101
< sub Jcode::_Classic::ucs2_utf8{
---
> sub Jcode::ucs2_utf8{
124c124
< sub Jcode::_Classic::utf8_ucs2{
---
> sub Jcode::utf8_ucs2{
これでバッチリ!Jcode/_Classic.pm の編集はしちゃあいかんぜ。
Jcode.pm 機種依存文字 変換
perlが5.10.1に上がったのでJcode(2.07)がEncodeのラッパーになり機種依存文字の変換が出来なくなった。JcodeがEncodeを使わないようにする為にMakefile.PLを書き換えインストール後Jcode.pmも変更した。
[、� ↓蝓�粼、��、��、��]
# vi Makefile.PL
#!/usr/local/bin/perl
#
# $Id: Makefile.PL,v 2.1 2005/06/20 06:21:06 dankogai Exp $
#
use strict;
use ExtUtils::MakeMaker;
my @EXTRA;
=pod
if ($] >= 5.008001){
@EXTRA = (
NORECURS => 1,
PM => { 'Jcode.pm' => '$(INST_LIB)/Jcode.pm',
'Jcode/Nihongo.pod'
=> '$(INST_LIB)/Jcode/Nihongo.pod'
},
);
}
=cut
WriteMakefile
(
NAME => 'Jcode',
VERSION_FROM => 'Jcode.pm',
PREREQ_PM => {
'MIME::Base64' => "2.1",
},
($] >= 5.005 ? ## Add these new keywords supported since 5.005
(ABSTRACT_FROM => 'Jcode.pm', # retrieve abstract from module
AUTHOR => 'Dan Kogai <dankogai@dan.co.jp>') : ()
),
@EXTRA,
);
# make install
make[1]: ディレクトリ `/home/download/tmp/Jcode-2.07/Unicode' に入ります
make[1]: ディレクトリ `/home/download/tmp/Jcode-2.07/Unicode' から出ます
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/local/lib64/perl5/auto/Jcode/Unicode/Unicode.so
Installing /usr/local/lib64/perl5/auto/Jcode/Unicode/Unicode.bs
Installing /usr/local/lib64/perl5/Jcode.pm
Installing /usr/local/lib64/perl5/Jcode/H2Z.pm
Installing /usr/local/lib64/perl5/Jcode/Nihongo.pod
Installing /usr/local/lib64/perl5/Jcode/Constants.pm
Installing /usr/local/lib64/perl5/Jcode/Unicode.pm
Installing /usr/local/lib64/perl5/Jcode/_Classic.pm
Installing /usr/local/lib64/perl5/Jcode/Tr.pm
Installing /usr/local/lib64/perl5/Jcode/Unicode/Constants.pm
Installing /usr/local/lib64/perl5/Jcode/Unicode/NoXS.pm
Installing /usr/local/share/man/man3/Jcode::Unicode.3pm
Installing /usr/local/share/man/man3/Jcode::Unicode::NoXS.3pm
Installing /usr/local/share/man/man3/Jcode::Unicode::Constants.3pm
Appending installation info to /usr/lib64/perl5/perllocal.pod
#
# vi /usr/local/lib64/perl5/Jcode.pm
#
# $Id: Jcode.pm,v 2.7 2008/05/10 18:15:19 dankogai Exp dankogai $
#
package Jcode;
use 5.005; # fair ?
use Carp;
use strict;
use vars qw($RCSID $VERSION $DEBUG);
$RCSID = q$Id: Jcode.pm,v 2.7 2008/05/10 18:15:19 dankogai Exp dankogai $;
$VERSION = do { my @r = (q$Revision: 2.7 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
$DEBUG = 0;
# we no longer use Exporter
use vars qw($USE_ENCODE);
#$USE_ENCODE = ($] >= 5.008001);
$USE_ENCODE = ($] >= 9.008001);
オレオレ証明書
http://thinkit.co.jp/cert/article/0706/3/7/2.htm
ユニコード表現(@XXXX)変換
mysqlの漢字のテーブル名がユニコード表現になった為にテーブルの実体のファイル名をutf8に変換するScript
http://bitwalker.dtiblog.com/blog-entry-114.html
http://www.takeash.net/wiki/?Perl%2F%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89
[decodeUni.pl]
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Encode;
binmode STDIN,":utf8";
while(my $line = <>){
chomp($line);
my $org = $line;
$line =~ s/@([0-9a-f]{4})/chr(hex($1))/ige;
$line =~ s/@([A-Za-z0-9])@/h2z($1)/ge;
print encode('utf-8',$line) . "\n";
}
sub h2z{
my $text = shift;
$text =~ tr/A-Za-z0-9/A-Za-z0-9/;
$text;
}
$ ls -l -rw-rw---- 1 mysql mysql 1565012 1月 15 19:14 2013 @4ed5@639b@54c1@68da@5378@30c7@30fc@30bf.MYD -rw-rw---- 1 mysql mysql 239616 1月 15 19:14 2013 @4ed5@639b@54c1@68da@5378@30c7@30fc@30bf.MYI -rw-rw---- 1 mysql mysql 9212 1月 15 19:14 2013 @4ed5@639b@54c1@68da@5378@30c7@30fc@30bf.frm -rw-rw---- 1 mysql mysql 128980 1月 15 19:14 2013 @4ed5@639b@54c1@8a55@4fa1@30d5@30a1@30a4@30eb.MYD -rw-rw---- 1 mysql mysql 8192 1月 15 19:14 2013 @4ed5@639b@54c1@8a55@4fa1@30d5@30a1@30a4@30eb.MYI -rw-rw---- 1 mysql mysql 10760 1月 15 19:14 2013 @4ed5@639b@54c1@8a55@4fa1@30d5@30a1@30a4@30eb.frm -rw-rw---- 1 mysql mysql 1530 1月 15 19:14 2013 @4ed5@639b@54c1@8cc3@7387@30d5@30a1@30a4@30eb.MYD -rw-rw---- 1 mysql mysql 2048 1月 15 19:14 2013 @4ed5@639b@54c1@8cc3@7387@30d5@30a1@30a4@30eb.MYI -rw-rw---- 1 mysql mysql 8890 1月 15 19:14 2013 @4ed5@639b@54c1@8cc3@7387@30d5@30a1@30a4@30eb.frm -rw-rw---- 1 mysql mysql 124919260 1月 15 19:15 2013 @4ed5@8a33@30c7@30fc@30bf.MYD -rw-rw---- 1 mysql mysql 35011584 1月 15 19:15 2013 @4ed5@8a33@30c7@30fc@30bf.MYI -rw-rw---- 1 mysql mysql 15350 1月 15 19:14 2013 @4ed5@8a33@30c7@30fc@30bf.frm $ ls -l |decodeUni.pl -rw-rw---- 1 mysql mysql 1565012 1月 15 19:14 2013 仕掛品棚卸データ.MYD -rw-rw---- 1 mysql mysql 239616 1月 15 19:14 2013 仕掛品棚卸データ.MYI -rw-rw---- 1 mysql mysql 9212 1月 15 19:14 2013 仕掛品棚卸データ.frm -rw-rw---- 1 mysql mysql 128980 1月 15 19:14 2013 仕掛品評価ファイル.MYD -rw-rw---- 1 mysql mysql 8192 1月 15 19:14 2013 仕掛品評価ファイル.MYI -rw-rw---- 1 mysql mysql 10760 1月 15 19:14 2013 仕掛品評価ファイル.frm -rw-rw---- 1 mysql mysql 1530 1月 15 19:14 2013 仕掛品賃率ファイル.MYD -rw-rw---- 1 mysql mysql 2048 1月 15 19:14 2013 仕掛品賃率ファイル.MYI -rw-rw---- 1 mysql mysql 8890 1月 15 19:14 2013 仕掛品賃率ファイル.frm -rw-rw---- 1 mysql mysql 124919260 1月 15 19:15 2013 仕訳データ.MYD -rw-rw---- 1 mysql mysql 35011584 1月 15 19:15 2013 仕訳データ.MYI -rw-rw---- 1 mysql mysql 15350 1月 15 19:14 2013 仕訳データ.frm
CentOSで固定
IPアドレスの設定を手動で行うメモ。
IPの設定確認コマンド # ifconfig -a # netstat -nr ネットワークeth0の設定を記入する # vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #←デバイス名 ONBOOT=yes #←システム起動時に有効にするか BOOTPROTO=none #←固定IP:none,static DHCPはdhcp HWADDR=XX:XX:XX:XX:XX:XX #←MACアドレス TYPE=Ethernet #←インタフェースのデバイスタイプ。他にxDSLなど #DHCP_HOSTNAME=example.com #←DHCPサーバに通知するホスト名 IPADDR=192.168.1.16 #←IPアドレスの指定 NETMASK=255.255.255.0 #←IPアドレスに対するネットマスクの指定 #NETADDR=192.168.1.0 #←ネットワークアドレス。通常IPアドレスとネットマスクより自動判断 #BROADCAST=192.168.1.255 #←ブロードキャストアドレス。通常IPアドレスとネットマスクより自動判断 USERCTL=no #←デバイスの制御をroot以外にも許すか。 PEERDNS=no #←DHCPによって取得したDNSサーバのアドレスを/etc/resolv.confに反映するか。DHCPを使う場合は通常yes。 GATEWAY=192.168.1.1 #←デフォルトのゲートウエイアドレス(普通はルータのIPアドレスを書く) IPV6INIT=no #←このデバイスでIPv6を有効にするかDNSの設定を記入する # vi /etc/resolv.conf nameserver XXX.XXX.XXX.XXX nameserver XXX.XXX.XXX.XXX ゲートウェイの設定を記入する # vi /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no GATEWAY=192.168.1.1 で、ネットワーク再起動 # service network restart
参照させて頂いたページ。(ありがとうございます)
GDライブラリ
- インストール
Ubuntuの場合、libgd-gd2-perlパッケージをインストールすればOK。ここ参照
$ sudo apt-get install libgd-gd2-perl
Tableのヘッダ(thead)を固定して、<tbody>内をスクロールさせる方法
http://giraffy.jp/blog/2009/09/11/css/107/
- ヘッダ固定の分かりやすいテーブルを簡単実装できるjQueryプラグイン「jQuery.FixedTable」
http://phpspot.org/blog/archives/2011/02/jqueryjqueryfix.html
チェックボックスをマウスでなめるようにドラッグするだけで切り替えるJavaScriptのサンプル
http://blog.fkoji.com/2007/03282238.html
/* require prototype.js */
if (typeof SAMPLE == "undefined") {
var SAMPLE = {};
}
SAMPLE.isMousedown = false;
SAMPLE.mousedown = function(e) {
SAMPLE.isMousedown = true;
}
SAMPLE.mouseup = function(e) {
SAMPLE.isMousedown = false;
}
SAMPLE.mouseover = function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
if (SAMPLE.isMousedown) {
if (target.type == "checkbox") {
target.click();
}
}
}
Event.observe(document, "mousedown", SAMPLE.mousedown);
Event.observe(document, "mouseup", SAMPLE.mouseup);
Event.observe(document, "mouseover", SAMPLE.mouseover);
IE7 page-break-before
IE7になって改頁が利かなくなった。(IE7のbug?)
<p style="page-break-before:always;">が安定しない(改頁したりしなかったり) を <div style="page-break-before:always;"> <br style="height:0; line-height:0"></div>に変えたら安定した?
Ajaxで入力補完(suggest)
http://cmf.ohtanz.com/suggest.html
http://www.drk7.jp/MT/archives/001324.html
load data
LOAD DATA INFILE '/tmp/ken_all.csv' INTO TABLE 郵便番号
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
( `全国地方公共団体コード`, `旧郵便番号` , `郵便番号`, `都道府県名カナ`, `市町村名カナ`, `町域名カナ`, `都道府県名`, `市町村名`, `町域名`)
sshにてパスワードを使用しないでログインする方法
http://www.turbolinux.co.jp/support/document/knowledge/152.html
【手順】
以下の解説の中で、local$ はローカルホスト上での操作を、remort$ はリモートホスト上での操作を表すプロンプトです。
[SSH protocol version 1 の場合]
(1) RSA キーを生成します。
local$ ssh-keygen
* 出力するファイル名、パスフレーズの入力を求められますが何も入力せずに全てEnteyキーを押下して下さい。
(2) 公開キーをリモートホストにコピーします。
local$ scp ~/.ssh/identity.pub name@remort.host:
(3) リモートホストにログインし、authorized_keys ファイルを生成します。
local$ ssh name@remort.host remort$ cd .ssh/ remort$ touch authorized_keys remort$ chmod 600 authorized_keys remort$ cat ~/identity.pub >> authorized_keys remort$ rm ~/identity.pub
(4) 設定完了です。動作を確認します。
remort$ logout local$ ssh name@remort.host
[SSH protocol version 2 の場合]
(1) DSA キーを生成します。
local$ ssh-keygen -t dsa
* 出力するファイル名、パスフレーズの入力を求められますが何も入力せずに全てEnteyキーを押下して下さい。
(2) 公開キーをリモートホストにコピーします。
local$ scp ~/.ssh/id_dsa.pub name@remort.host:
(3) リモートホストにログインし、authorized_keys2 ファイルを生成します。
local$ ssh name@remort.host remort$ mkdir .ssh remort$ chmod 700 .ssh/ remort$ cd .ssh/ remort$ touch authorized_keys2 remort$ chmod 600 authorized_keys2 remort$ cat ~/id_dsa.pub >>authorized_keys2 remort$ rm ~/id_dsa.pub
(4) 設定完了です。動作を確認します。
remort$ logout local$ ssh name@remort.host
【注意】
.ssh/authorized_keys(2) のパーミッションは、所有者に対しては read/write を許可し、他のユーザーには、アクセスを許可しないで下さい。同ファイルに至るディレクトリのパーミッションにも注意して下さい。ユーザー以外に write を許可してはいけません。パーミッションが正しく設定されていないと、パスワードを要求されてしまいます。
sshdへのアクセスは/etc/hosts.allowファイルの設定で許可しておく必要があります。
【参考】
protocol version の優先順位を変更するには、設定ファイルの Protocol 項目を修正してください。
[/etc/ssh/sshd_config] ------------------------- Protocol 2,1 ------------------------- [/etc/ssh/ssh_config] ------------------------- Protocol 2,1 -------------------------
キーワードssh authorized_keys ssh-keygen
関連文書
(none)
ubuntuのEvinceで日本語PDFが表示できない
http://ubulog.blogspot.com/2007/10/ubuntuevincepdf.html
sudo apt-get install evince ghostscript cmap-adobe-japan1 xpdf-japanese sudo mkdir -p /usr/share/poppler/cidToUnicode sudo ln --symbolic /usr/share/xpdf/japanese/Adobe-Japan1.cidToUnicode /usr/share/poppler/cidToUnicode/Adobe-Japan1 sudo mkdir -p /usr/share/poppler/cMap sudo ln --symbolic /usr/share/fonts/cmap/adobe-japan1 /usr/share/poppler/cMap/Adobe-Japan1
mysql
レプリケーション
http://d.hatena.ne.jp/i_youhei/20061211/1165803548
MySQLのレプリケーションでスレーブ側でエラー発生時、そのエラーが発生しているSQL文だけスキップする方法
SHOW SLAVE STATUS 等でスレーブのステータスを見ると、なんらかの原因であるSQL文でエラーが発生していることが稀にあります。
データの整合性的にそのSQL文をスキップしても問題ないことがわかっている場合は下記のSQL文を発行することでスキップさせることが可能です。
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql> SLAVE START;
memo
http://coderepos.org/share/browser/platform/firefox/pagesetup/trunk/README.txt
http://www.geocities.jp/mickindex/index.html
table sort (2)
JavaScriptでテーブルをソートする
http://blog.webcreativepark.net/2007/09/26-024416.html より
sortable_ja.jsを使いテーブルをソートするtable_sort.jsと違いsortable_ja.jsだけで実装出来るのでこちらを使ってみる
使用法:headにsortable_ja.jsを記述し対象テーブルにclass="sortable"を追加するだけである
mmt.pmの検索画面に入れてみる
Index: mmt.pm
===================================================================
RCS file: /usr/local/cvs/system/mmt.pm,v
retrieving revision 1.76
diff -c -r1.76 mmt.pm
*** mmt.pm 30 May 2008 08:35:27 -0000 1.76
--- mmt.pm 1 Jun 2008 23:34:23 -0000
***************
*** 202,207 ****
--- 202,210 ----
-style=>{'src'=>$s->{cons}->{css}.'sne.css'},
-script=>[{-language=>'JavaScript',
-src=>$s->{cons}->{js}.'prototype.js'
+ },
+ {-language=>'JavaScript',
+ -src=>$s->{cons}->{js}.'sortable_ja.js'
}],
# -head=>meta({-http_equiv=>'Pragma',
# -content=>'no-cache'}),
***************
*** 1140,1146 ****
$order = "order by $order" if($order);
$order = $s->{in}->param('OrderBy') if($s->{in}->param('OrderBy'));
$s->key_display();
! print "<table border=1>\n";
print "<thead>";
$s->head_line_disp;
print "</thead><tbody>";
--- 1143,1149 ----
$order = "order by $order" if($order);
$order = $s->{in}->param('OrderBy') if($s->{in}->param('OrderBy'));
$s->key_display();
! print qq{<table border=1 class="sortable" id="foo">\n};
print "<thead>";
$s->head_line_disp;
print "</thead><tbody>";
table sort
JavaScriptでテーブルをソートする
table-sort.jsを使いテーブルをソートできるmootools.jsを必要とする為prototype.jsとmootools.jsがバッティングするもよう?
使用法:mootools.jsとtable-sort.jsを使いSortableTableにてテーブルを指定する。
http://www.skuare.net/2007/10/javascripttablesort.html より
既存のテーブルを簡単にソートさせるjavascript「Table-Sort」
テーブルで作成した表をソートさせるjavascriptは多くありますが、内部を少し
いじらなければならないケースが多いです。
Table-Sortは、既存の仕組みでそのまま簡単にソートさせることができるjavascriptです。
使用方法
Table-Sortのtable-sort.jsを、mootoolsからmootools.jsをダウンロードします。
<script src="http://yourdomain/mootools.js" type="text/javascript"></script>
<script src="http://www.skuare.net/test/js/table-sort.js" type="text/javascript"></script>
<script type="text/javascript">
window.addEvent('domready', function() {
new SortableTable($('tableのid名'));
});
</script>
mmt.pmの検索画面に入れてみる
204,205c204,219
< -src=>$s->{cons}->{js}.'prototype.js'
< }],
---
> -src=>$s->{cons}->{js}.'xprototype.js'
> },
> {-language=>'JavaScript',
> -src=>$s->{cons}->{js}.'mootools.js'
> },
> {-language=>'JavaScript',
> -src=>$s->{cons}->{js}.'table-sort.js'
> },
> {-language=>'JavaScript',
> -code=>q{
> window.addEvent('domready',function(){
> new SortableTable($('data'));
> });
> }
> },
> ],
221,222c235,236
< print $s->formScript({'a5'=>$s->{m}->{editA5},
< 'f1'=>$s->{m}->{editF1}});
---
> # print $s->formScript({'a5'=>$s->{m}->{editA5},
> # 'f1'=>$s->{m}->{editF1}});
1143c1157
< print "<table border=1>\n";
---
> print qq{<table border=1 id="data">\n};
$ grep MAKING_C *|perl -nle '@a = split q{:} ; print "$a[0]"'|uniq|perl -lne '$a = `grep -m 1 $_ $_` ||$_ ;chomp $a;print $a'>/tmp/grep.list
my $ret;
for $name (`grep MAKING_C *|perl -nle '\@a = split q{:} ; print "\$a[0]"'|uniq`){
chomp $name;
$a = `grep -m 1 $name $name`||$name;
chomp $a;
$ret .= "$a\n";
}
return $ret;
http://80286.blog62.fc2.com/blog-entry-23.html
firefox2でセグメンテーション違反が発生 [対策] ファイル「firefox」の2行目に以下を追加 export GTK_IM_MODULE=xim
http://www.advancedsearch.co.jp/
http://www.geraid.com/archives/web/
http://park15.wakwak.com/~k-lovely/cgi-bin/stereo.cgi
http://digit.que.ne.jp/work/index.cgi?Perl%E3%83%A1%E3%83%A2%2FXML%E3%81%AE%E8%A7%A3%E6%9E%90
sub xml_to_array {
my $xml = shift;
my $tag_regex_ = q{<[^"'<>]*(?:"[^"]*"[^"'<>]*|'[^']*'[^"'<>]*)*(?:>|(?=<)|$(?!\n))};
my $comment_regex = '<!(?:--[^-]*-(?:[^-]+-)*?-(?:[^>-]*(?:-[^>-]+)*?)??)*(?:>|$(?!\n)|--.*$)';
my $cdata_regex = q{<!\[CDATA\[.*?(:?\]\]>|$(?!\n))};
my $tag_regex = qq{$cdata_regex|$comment_regex|$tag_regex_};
my $text_regex = q{[^<]*};
my @result;
while ($xml =~ /($text_regex)($tag_regex)?/gso) {
my ($text, $tag) = ($1, $2);
last if ($text eq '' and $tag eq '');
push (@result, grep {$_ ne ''} ($text, $tag));
}
return @result;
}
server
~/www/tool/toolmmt$ morbo script/* daemon -l "http://*:3003" & ~/www/chabo$ ./run.sh & ~/www/daemon$ nohup: ignoring input and appending output to `nohup.out' ~/www/album/photo_album$ script/photo_album daemon & ~/www/album/photo_album$ hypnotoad script/photo_album ~/www/chabo$ nohup ./chatbot_irc.sh & ~/www/websock$ ./run.sh ~/www/polygon$ nohup morbo polygon.pl daemon -l "http://*:5002" &
- 無精・短気・傲慢