sidewalkcafe blog

日々是好日

ワード・エクセルファイルから画像を取り出すメモ

画像を取り出すのです

ワードやエクセルでデータもらっても、印刷所にまわす時はPDFかイラストレータファイルにしないといけないとか、写真が暗いので修正するとか、よくあると思います。

・docx,xlsx ファイルを解凍ソフトにぶちこむ(この手のファイルはzip圧縮されてるだけなので)
・できたフォルダの中身を開き、word(ワード)もしくはxl(エクセル)フォルダを開く
・mediaフォルダの中身がもと画像ファイル


・doc,xlsの場合は、docx,xlsxに保存し直してから上


画像の劣化

・ワード・エクセルに保存されてる時点で圧縮劣化してる場合もある
・なら最初から元画像おくれって話

新しいmini Macを買った

うちのmini Macが無事脂肪したので
Mac OS Snow Leopard(10.6)からHigh Sierra(10.13)に変えた時のお話

Windows共有の話

Windowsとのフォルダ共有を設定しようとして以下のページを参考にしてたけどうまく繋がらない
<参考>
無線 LAN や Wi-Fi 環境での Mac と Windows のファイル共有 - Macにスイッチしました


<症状>
Mac側、「ネットワーク」設定の「WINS」にある「ワークグループ」が変更できない。

Windows側でワークグループ名を変更してるので、Mac側でもワークグループ名の変更が必要なのだけれど、変えても元に戻る。


<結論>
ワークグループなんて飾りです、エロい人には(略

Windows側から「ネットワーク」を開いて、アドレスバーに以下のように直接NetBIOS名を打ち込むと繋がるw

¥¥設定してあるNetBIOS名

NetBIOS名の確認は「システム環境設定」→「ネットワーク」→左から接続済のネットワークを選んで「詳細」→「WINS」
名前が「MINI-MAC」だったら「¥¥mini-mac」→アカウント名とパスワードを入力でOK

CS製品インストールの話

※古いソフトなので動作は保証なし各自自己責任で

CS3ライセンスの話

CS3製品はAdobeアクティベーションサーバを停止したので、ライセンス認証(and解除)が出来なくなってる


<対策>
以下のページからログインして、対策版のCS3製品をダウンロードする
CS3 または Acrobat 8 の起動時に、ライセンス認証エラーまたは接続エラーが発生する

起動できない

appleJavaランタイムの提供を止めたのでインストールはできても起動はできない。


<対策>
以下のページの手順に従って空フォルダを作ると起動できる
macOS High Sierra でAdobe CSシリーズを起動する方法

    リカバリモードで起動
    Rootlessを一時的に無効化する
    再起動してOSを立ち上げる
    Java 6の2つのディレクトリを作成
    再びリカバリモードで起動
    Rootless を再び有効化
    再起動するとAdobe CSシリーズが使える
[以上引用]

illustratorアップデートの話

対策版のイラストレータはバージョンが13.0.0だった・・・。
このバージョンは保存時に「PDF互換ファイルの作成」オプションを外してもPDF互換として保存しちゃってくれるので
画像を配置してる時はべらぼうにファイルサイズが大きくなる(例:1.5MB→230MBって何だよ・・・)
ただ、パッチ充てようとしたらエラーが出る


<対策>
以下のページを参考にパッチファイルの内容をいじる
Muntain LionでCS3をアップデートしよ~(今更ながら) | 感覚パンダが申しておる

 デスクトップにパッチファイルをコピー
 右クリック([control]+クリック)でコンテクストメニューから「パッケージの内容を表示」を選ぶ
    [Contents]→[Resource]→[PatcherApplication]で再び「パッケージの内容を表示」
 [Contents]→[Resource]を開いて一旦おいとく
 新しいウィンドウから上メニュー「移動」→「フォルダへ移動」
 「/usr/bin」と入力してエンター
 [bspatch]というファイルを探して、先ほどの[Resourc]フォルダにコピー、上書き
 ウィンドウを閉じて[AdobePatcher]実行
[以上引用]

illustratorのフォントメニューが透明

<問題>
フォントを変えようとしたらフォント一覧が見れない
1行しか表示されない


<対策>
「システム環境設定」「アクセシビリティ」「ディスプレイ」にある
「透明度を下げる」にチェックを入れる

illustratorでフォントを変えようとしたら落ちる

<問題>
フォントを変えようとしたらイラストレーターが強制終了する


<対策>
「システム環境設定」「一般」にある
「メニューバーとDockを暗くする」のチェックを外す(デフォルトでは外れてる)

Office製品の話

古いMS Officeが動かないので以下のどれかを使う

Office online(MS)

MSアカウントがあれば無料で使える
products.office.com


<問題>
図が表示できない
「Excel Online」では使用できない機能 | SPeed LAND 365


その他、パスワード付きの書類は開けないのは対応策ないので、以下のソフトを使う

OpenOffice

なんか動作が不安定なので上のに変えた
http://www.openoffice.org/ja/

アンチウイルスソフトの話

やっぱり入れとかなあかんなあ
という事で動作が軽いと言われるAVGを入れる(Mac版は英語のみ)


<症状>
ネットとメールが繋がらない


<対策>
上メニュー「AVG AntiVirus」から「Preferences」
「Shields」→「Web Shield」で「Scan browser-based HTTPS connections」のチェックを外す
「Exceptions」→ 「Email Shield」で左下の鍵を外しパスワード入力、「+」で追加
「Server」にメール受信サーバを選んで「Service」は「php3」→「ADD」で追加
同じく「Server」にメール送信サーバ→「imap」追加


<問題>
メールもWebもほぼフリーアクセスなので対策する意味あまりないかなあと
まあウイルスチェックとかあるからマシかw

FirefoxThunderbirdの話

古いMac miniからプロファイルをコピペしてくる。
設定情報のバックアップ | Firefox ヘルプ

Finder高速化の話

Finderのアニメーションを止める
Mac OSX Sierraの高速化とおすすめ設定。 | WebEssentials

windows hostsファイルの編集

Windows版のXAMPPにサブドメインを設定しようとして、hostsファイルが編集できなくて困ってた件。

ウィルス対策ソフトが原因だった。(うちはAvira


<注意!>
hostsファイルを悪用されると、フィッシングサイトへの誘導が容易になります。
普段は編集禁止にしておいた方が無難

<対策>
Aviraの設定から [全般] > [セキュリティ]
[システムの保護]欄にある「Windows hosts ファイルへの書き込みを防ぐ」のチェックマークを外す
[OK]


<参考>
Avira で hosts ファイルのブロックを解除

ローカル環境(XAMPP)でサブドメインを使用 | Web Design Leaves


<内容>
管理者権限で編集しようとしてもできず、所有者権限の変更もできず、以下のようなエラーが出たらウィルス対策ソフトが原因かも

「このフォルダーを変更するには、SYSTEMからアクセス許可を得る必要があります。」


通常の編集方法は以下
Windows:Windows7でのhostsファイルの編集方法 | ARTICLE | goma

困った

テスト環境でデータベースからの表示に成功したのでサーバ環境でテストしてみたところ
エラーてんこもり^^;

ローカルテストでは出なかったのになんでかなと思ったら
ini_set( 'error_reporting', E_ALL ); 設定したら出たわ
警告表示レベルが低かったのね・・・

Deprecated: Function ereg() is deprecated

ereg は非推奨になったので変更すれという事か・・・

という訳でereg()はpreg_match()に、
ereg_replace()はpreg_replace()に置き換え

Fatal error: Call to undefined function password_hash()

パスワードハッシュ関連の関数はPHP5.5から
それ以前は定義されてないのでエラー

ライブラリがあるようなのでなんとかなる

Strict Standards: Non-static method htmltemplate::removeTag() should not be called statically 

staticではないクラスを静的コールしたら出るエラー
動的コールに直すかstaticを設定


phpのバージョン上げられれば良いんだけど
他のプログラムも書き換えないと動かなくなりそうやしなあ・・・

やっててよかったajax

今は投稿内容をapiで吸い出したjsonデータに変換してajaxで検索してたんだけど
これ、like検索したほうが精度高いしいろいろ設定楽そう

select * from bbs where comment like '検索語'

まあどのみちdb化したらjsから読めなくなるので改造は必須だけど

$(function() {
 $.ajax({
  url: api.php,
  success: function() {
    $.getJSON(data.json,
       function(data) {
        検索+表示処理
       })})}

こんな感じで書いてたけど

$.getJSON(api.php,
    function(data) {
        表示処理
    })

これで済みそう


まあpotiboard.php本体に組み込んだ方が話早いんだろうけど
処理を軽くするって意図があるから使える者は使うというアレ

暗黙の型変換はそんなに遅いのか

前に出た話題
暗黙の方変換の速度比較

//繰り返し
$r = 1000000 ;
//時間計測1
$start = microtime(true);
for($i = 0; $i < $r; $i++) {
	$d = "0";
	$d ++ ;
}
$end = microtime(true);
echo "処理時間1:" . ($end - $start) . "秒
"; //時間計測2 $start = microtime(true); for($i = 0; $i < $r; $i++) { $d ='0'; $d = (integer)$d; $d ++ ; } $end = microtime(true); echo "処理時間2:" . ($end - $start) . "秒
"; //時間計測3 $start = microtime(true); for($i = 0; $i < $r; $i++) { $d =0; $d ++ ; } $end = microtime(true); echo "処理時間3:" . ($end - $start) . "秒
";

1=約0.13秒
2=約0.16秒
3=約0.10秒


あれ、そんな違わない・・・
というかいちいち型変換してた方が遅い・・・?


という訳で追試

//繰り返し
$r = 1000000 ;
//時間計測1
$start = microtime(true);
for($i = 0; $i < $r; $i++) {
	$d = "0";
	if($d == 0){$d ++ ;}
}
$end = microtime(true);
echo "処理時間1:" . ($end - $start) . "秒
"; //時間計測2 $start = microtime(true); for($i = 0; $i < $r; $i++) { $d ='0'; $d = (integer)$d; if($d == 0){$d ++ ;} } $end = microtime(true); echo "処理時間2:" . ($end - $start) . "秒
"; //時間計測3 $start = microtime(true); for($i = 0; $i < $r; $i++) { $d =0; if($d == 0){$d ++ ;} } $end = microtime(true); echo "処理時間3:" . ($end - $start) . "秒
";

1=約0.20秒
2=約0.18秒
3=約0.10秒


比較が入ると違うなー
そして安定の無変換
最初から数字指定しとけと


でもSQliteのデータは数字指定でも文字で記録されてるとか、potiboardのconfigは定数の指定が数字でも文字(括弧付き)になってるとか

やってて良かったSQLite

範囲呼び出しの話
SQliteには BETWEEN というそのままな呼び出しコマンドがあった

select * from bbs where id BETWEEN 1 and 20

別にwhereで囲んでも結果は同じなんだけど、どっちが早いんだろ?

select * from bbs where id > 1 and id < 20


親記事の数を数える話
もとはtree.logの行数をcount()してたけど
sqlの場合、count(*)を使う

select count(*) from bbs where parent > 0

値の取得はforeachじゃなくて、1行取得のfetchを使うらしい

$query->fetchColumn();


レスコメント表示の話
DSP_RESで一覧画面のレス表示件数、DSP_RESIMGでレス内の画像表示件数が指示されてるので
レス取得のクエリに limitをつける

select * from bbs where tree == $res limit DSP_RES

ただ、クエリ内で定数が使えなかったので変数に格納して呼び出す


画像表示件数は画像をカウントして指定数になるとbreakする

$c_img = (DSP_RES)? 0:null;
if($filename) $c_img ++
if($c_img >= DSP_RES)break;

という訳で三項演算子
ifより少しばかり遅いけど記載が短くなるから好き


って三項演算子の速度比較みてたら

三項演算子よりも暗黙の型変換のほうが、速度低下が大きい

なんですとー!!

$a = '0';
$a ++

こういう記載よくやるけど駄目なんか