IISとPHPとMySQLが入っているところにbookedを入れる

https://www.bookedscheduler.com/
サンプルもさわったらいい感じだった。

手順の参考
Booked インストール (XAMPP)


ダウンロードして展開
c:\Apach24\htdocs\booked へコピー

c:\Apach24\htdocsbooked\config\config.dist.php を c:\Apach24\htdocs\booked\config\config\config.phpへコピー

httpd.confで

Listen 8000
#IISも動いているので、phpを変更しておいた

参考 80番以外のポート番号を使用した場合のWebサーバへのアクセス

/**
* Application configuration
*/
$conf['settings']['default.language'] = 'ja_jp';   
$conf['settings']['script.url'] = 'http://localhost/booked/Web';
$conf['settings']['image.upload.directory'] = 'booked/Web/uploads/images';
$conf['settings']['image.upload.url'] = 'booked/uploads/images';

http://localhost:8000/booked/Web/installにアクセス
ここで謎エラー発生

Missing config file: C:\Apache24\htdocs\booked\lib\Config/../../config/config.php. If there is a .dist config file in this location, please copy it as C:\Apache24\htdocs\booked\lib\Config/../../config/config.php
Fatal error: Call to a member function assign() on null in C:\Apache24\htdocs\booked\Pages\Page.php on line 244

3時間ほど悩んだ結果、configt.phpってなファイル名になっていた。帰りたい。

config.phpにパスワードを指定してから画面に同じパスワードを入力する。
$conf['settings']['install.password'] = '';

MySQLのユーザーとパスワードを入力(phpMyAdminで確認した)
3つチェックする
インストール実行

サンプルデータのインストール系のsqlが全滅だった。
ほったらかして、ログインしてみる

Warning: mysqli_connect(): (HY000/1045): Access denied for user 'booked_user'@'localhost' (using password: YES) in C:\Apache24\htdocs\booked\lib\Database\MySQL\MySqlConnection.php on line 52

Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in C:\Apache24\htdocs\booked\lib\Database\MySQL\MySqlConnection.php on line 53

Warning: mysqli_set_charset() expects parameter 1 to be mysqli, boolean given in C:\Apache24\htdocs\booked\lib\Database\MySQL\MySqlConnection.php on line 54

Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in C:\Apache24\htdocs\booked\lib\Database\MySQL\MySqlConnection.php on line 58

Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in C:\Apache24\htdocs\booked\lib\Database\MySQL\MySqlConnection.php on line 59

http://localhost:8000/booked/web/index.php#
データベースのエラーが出る

Warning: mysqli_connect(): (HY000/1045): Access denied for user 'bookedscheduler_use'@'localhost' (using password: YES) in C:\Apache24\htdocs\booked\lib\Database\MySQL\MySqlConnection.php on line 52

Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in C:\Apache24\htdocs\booked\lib\Database\MySQL\MySqlConnection.php on line 53

Warning: mysqli_set_charset() expects parameter 1 to be mysqli, boolean given in C:\Apache24\htdocs\booked\lib\Database\MySQL\MySqlConnection.php on line 54

Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in C:\Apache24\htdocs\booked\lib\Database\MySQL\MySqlConnection.php on line 58

Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in C:\Apache24\htdocs\booked\lib\Database\MySQL\MySqlConnection.php on line 59

ユーザー名が違っていた。
#$conf['settings']['database']['user'] = 'booked_user';
$conf['settings']['database']['user'] = 'bookedscheduler_user';

admin/passwordでログインが・・・できない。データベースのエラーでユーザーが作成されていないからだ。
phpMyAdminでデータベースを削除する。
もう一度やり直してみるがエラーが発生する。

実行中: ../../database_schema/create-data.sql

失敗 詳細: 

SQL 文: 
-- UPGRADE TO VERSION 2.1



insert into roles values (3, 'Resource Admin', 3)

エラーコード: 1062

エラーテキスト: Duplicate entry '3' for key 'PRIMARY'
(他にもエラーは出ている)

よくわからん。
コマンドプロンプトMySQLにアクセスしてみる。

C:\Users\Administrator>mysql -u booked_user -D booked -p
Enter password: ********

よくわからん。

phpMyAdminでbookedを削除する。
「サンプルデータをインポートする」のチェックを外してみた。それでも同じエラーになる。
ja_jpをen_usに変えてやり直す。

やりなおしたけど、エラーになる(堂々巡り)

C:\Users\Administrator>mysql -u booked_user -D booked -p

mysql> source create-data.sql

OKとエラーが入り乱れる。ブラウザでエラーが出たやつを全部だめした。

ここで間違いに気がつく。
Windows ServerにApachePHPを動かしていて、そこにbookedを入れた。そんでもって、サーバ上のIEで確認していた・・・そりゃーリダイレクト系は動かないね。クライアントで試したら動いている。

タスクスケジューラーの項目をバッチファイルで無効にしたい

こんな感じでbatファイルに記述する。

rem タスクスケジューラーで Adobe Acrobat Update Task 無効
schtasks /CHANGE /TN "Adobe Acrobat Update Task" /DISABLE

rem タスクスケジューラーで CorelUpdateHelperTaskCore 無効
schtasks /CHANGE /TN "CorelUpdateHelperTaskCore" /DISABLE

マウスでホバーしたら画像を入れ替える

なんだか面白いサービスを見つけた
https://zk-phi.github.io/MEGAMOJI/

静止画像を動画GIFにできるって知ったら、ホバーで入れ替えるよね?

html

<div id="hop_hoge"><img src="img/hoge.png"></div>

JavaScript

/* 画像の入れ替え */
$(function(){
	$("#hop_hoge > img").hover(function(){
		$(this).attr("src","img/dance.gif");
	},function(){
		$(this).attr("src","img/hoge.png");
	});
});

Railsのcheck_boxの謎

チェックボックをチェック済みにしたい。
チェックされたときに送られるデータはString型の「"1"」、だったら@chk_valに代入してやればチェックされるんじゃないかと思う。

<%= r.check_box(:monthly, {:checked=>@chk_val}) %>

でもならない。

コントローラーでチェックを判定して真ならtrueを入れてやる必要がある。
テキトーなイメージだとこんなかんじ

@user.monthly = ture unless params[:hoge][:monthly].blank?

で、ビューはこれだけ。

<%= r.check_box(:monthly) %>

ビットフラグを追加する

「2つの地区で利用したい」という想定外の使い方をリクエストされて頭を抱えている。
自分の地区以外でもリストに名前を表示するってな感じが目的です。

  • モデルに数値型のotherを作る
  • 4地区をビットで表現して保存するときに10進数にする
  • 編集は強引に2進数に戻す

4地区で5ビット使っていますが、10ビットまで用意してからの変換にすれば楽だったなーとか思う。

AptanaStudioが起動しない

AptanaStudio.exe(lnkではない)を管理者として実行する(cleanオプションも付けた)

マイグレーションファイルを作る

rails generate migration AddOtherToUsers

名前は何やっているかわかるようなネーミングにした

マイグレーションファイルを編集する

class AddOtherToUsers < ActiveRecord::Migration
  def change
    add_column :users, :other, :integer, :after=>:campus
  end
end

テーブルを操作する

rake db:migrate
rake aborted!
ActiveRecord::StatementInvalid: Could not find table 'members'

見覚えのあるようおなエラー

rake db:migrate RAILS_ENV=production

流れに沿って作る。

new
#user_controller.rb
  def new
    @user = User.new
    @basyo = [false, false, false, false, false] #場所の初期値
  end
#new.html.erb
<%- if context=="edit" -%>
<%- if @user.campus !=1 %>
	A地区<%= check_box_tag 'basyo[0]', true, @basyo[0], {} %>
<%- end %>
<%- if @user.campus !=2 %>
	B地区<%= check_box_tag 'basyo[1]', true, @basyo[1], {} %>
<%- end %>
<%- if @user.campus !=4 %>
	C地区<%= check_box_tag 'basyo[2]', true, @basyo[2], {} %>
<%- end %>
<%- if @user.campus !=16 %>
	D地区<%= check_box_tag 'basyo[4]', true, @basyo[4], {} %>
<%- end %>
<%- end %>
create
  def create
    @user = User.new(params[:user])    
    @user.other = basyo_to_bit(params[:basyo])
(省略)
  # ビットを数値に変換する
  def basyo_to_bit(parameters)
    unless parameters.nil?
      rtn=0
      parameters.each{|key, value|
      rtn += 2**key.to_i if value == "true"
      }
    else
      rtn = nil
    end
    return rtn
  end
show
<%= other_edit(usr.other) %>
#users_helper.rb
  def other_edit(m)
    unless m.nil?
      rt =""
      $campuses.each{|c|
        #ビット演算
        if c[1] & m == c[1]
          rt += "/" unless rt.blank?
          rt += c[0] 
        end
        }
      return rt
    end
  end
edit

既存の未入力対策と初期値の設定、なんだかかっこわるい。

  def edit
    @user = User.find(params[:id])
    #logger.debug(@user.other)
    if @user.other.nil?
      @basyo = [false, false, false, false, false]
    else
      tmp = @user.other.to_s(2).split("")
      if tmp.size < 5
        (5-tmp.size).times{ tmp.unshift("0") }
      end
      @basyo = []
      tmp.each{|n|
        rt = n == "1" ? true : false
        @basyo << rt
        }
    end  
  end
 ||<
***update
>||
  def update
    @user = User.find(params[:id])
    @user.other = basyo_to_bit(params[:basyo])
(省略)

windows8.1に.NET3.5が入らん

Windows 8.1 .NET Framework 3.5 をインストールできない問題が発生していて、0x800f0906というエラーが出る。

.NET Framework 3.5 インストール時のエラー: 0x800F0906、0x800F081F、0x800F0907というそれっぽいサイトが存在するけど解決しない。

Windows 8、Windows 8.1、Windows Server 2012、および Windows Server 2012 R2 上の .NET Framework 3.5 の更新プログラムを参考にすると改善した。