そもそも社会貢献とは?

僕は社会人3年目の27歳、エンジニア。平日は10:00から21:00頃まで働く。仕事は結構忙しいので、家に帰ってからも仕事の続きをやることは多い。

最近「社会貢献」に興味がある。自分が、社会にとって価値のある存在でありたいからだ。人生の目的が、お金を得ることだったり、結婚をして普通の生活を営むだけでは満足できないと思っている。

けど「社会貢献」と口にするだけでは何も始まらないので、社会貢献活動には具体的にどんな選択肢があるか今日は考えてみたい。

そもそも社会貢献とはなんだろう?
僕の思う社会貢献は、困っている人たちを助けること。(今幸せじゃない人を幸せにすることと置き換えてもいい)
困っている人には、どんな人たちがいるだろう?
ぱっと思いつくだけでも、ホームレス・病人・障害者・貧困層・災害に見舞われた人・いじめられっこ・恋愛がうまくいかない人、受験がうまくいかない人...などなど色々な人たちがいることが分かる。

これら困っている人たちに対して、どんな手が打てるかを考えてみると、どんな社会貢献ができるか浮き彫りになってくると思う。ではそれぞれの人たちに対してどんなことができるか、箇条書きで考えてみた。
※もっと広い視点もあるかもしれないが、とりあえず考えすぎずに書き出してみた

①ホームレス に対してできること
 衣食住の支援、将来に対する不安の解消、就労支援
②病人 に対してできること
 病気の治癒、将来に対する不安の解消、就労支援
③障害者 に対してできること
 障害の治癒、バリアフリー促進、将来に対する不安の解消、就労支援
貧困層 に対してできること
 貧困からの脱出チャンスを作る、貧困でも幸せに生きる術を伝える、将来に対する不安の解消、就労支援
⑤災害に見舞われた人 に対してできること
 衣食住の支援
⑥いじめられっこ に対してできること
 心の傷のケア、強くなるための教育
⑦恋愛がうまくいかない人 に対してできること
 恋愛がうまくいくためのアドバイス、出会いの機会の提供
⑧受験がうまくいかない人 に対してできること

次に、これらのキーワードを元に、既に行われている支援活動、さらには国の制度を調べてみた。

1.ホームレス に対して行われている支援活動 / 国の制度
・Webサイト「脱ホームレスガイド」
http://tenohasi.org/difficulty/difficulty1.html
路上やネットカフェで寝起きしていたり、友人宅で居候をしている人のためのページ
・国の制度「生活保護
 日本の生活保護法によって規定されている、経済的に困窮する国民に対して、国や自治体が、健康で文化的な最低限度の生活を保障するために、生活費を給付する公的扶助制度
https://ja.wikipedia.org/wiki/%E7%94%9F%E6%B4%BB%E4%BF%9D%E8%AD%B7
都道府県の制度「自立支援」
 対人援助における対象者の自立に向けた支援
https://ja.wikipedia.org/wiki/%E8%87%AA%E7%AB%8B%E6%94%AF%E6%8F%B4
・【ホームレスを生み出さない社会を作る!】14歳からホームレス問題に向き合い続けた社会起業家が目指す「誤解や偏見のない未来」
http://next.rikunabi.com/journal/entry/20150929
 シェアサイクル事業「HUBchari」(ハブチャリ)などのホームレス就労支援事業、生活支援事業

2.病人 に対して行われている支援活動 / 国の制度
医療保険
https://ja.wikipedia.org/wiki/%E5%8C%BB%E7%99%82%E4%BF%9D%E9%99%BA
医療機関の受診により発生した医療費について、その一部又は全部を保険者が給付する仕組みの保険である。
cf. 健康保険証
・医療×貧困!失明白内障の危機を救うインドの眼科病院 Aravind Eye Hospital
http://www.borderless-japan.com/socialbusinesslabo/country/india/6841/

3.障害者 に対して行われている支援活動 / 国の制度
障がい者のための支援情報・通販サイト
http://shadan-shishin.com/
・大企業で障害者雇用が進んでいる
http://business.nikkeibp.co.jp/article/report/20120131/226713/

4.貧困層 に対して行われている支援活動 / 国の制度
・古着と労働力を交換、貧困地域にインフラを作る
http://bizacademy.nikkei.co.jp/career/social_interview/article.aspx?id=MMAC0d000005042013
富裕層から回収した古着を貧困層の労働力と交換

5.災害に見舞われた人 に対して行われている支援活動 / 国の制度
・復興支援情報サイト 助けあいジャパン
http://tasukeaijapan.jp/
茨城県常総市河川氾濫後の支援ボランティア
https://www.facebook.com/josovcenter/?fref=ts

6.いじめられっこ に対して行われている支援活動 / 国の制度
・いじめと戦おう!~対策と克服法~
http://www.ijimetotatakaou.com/html/goryousinhe.html
「いじめと戦おう!」は、いじめ対策を紹介するサイト

7.恋愛がうまくいかない人 に対して行われている支援活動 / 国の制度
・出会いの機会の提供
https://www.pairs.lv/
・恋愛ユニバーシティ
http://u-rennai.jp/consult/summary/
恋に悩む女性のための恋愛ポータルサイト

8.受験がうまくいかない人 に対して行われている支援活動 / 国の制度
・大学受験応援サイト
https://passnavi.evidus.com/sabro/ask

色々調べてみて思ったのは、既に色々な人・組織が助け合いの仕組みを創りだしているということ。
しかし一方で、それでもその恩恵を十分に受けていないも存在するはずである。だとしたら、自分はどういう方法でそれらの人らに手を差し伸べることができるのか。上で調べたような既存の組織に加わるのか。あるいは全く新しい手法を新たに確立するのか。

今はまだすぐに答えが出せずにいるが、今後そのあたりのことを見極めていきたい。見極めて自分に最も合う形で社会貢献していきたい。

Sublime Text 2で検索する(Command + F)際に日本語の文字を入力してEnterすると文字が消える現象への対処法

タイトルの通りです。

Preferences -> Key Bindings DefaultからDefault(OSX).sublime-keymapファイルを開いて編集。以下の行をコメントアウトします。

// Find panel key bindings
// serch内で日本語入力後Enterすると文字が消えないようにコメントアウト
// { "keys": ["enter"], "command": "find_next", "context":
// 	[{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
// },
{ "keys": ["shift+enter"], "command": "find_prev", "context":
	[{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
},
{ "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
	 "context": [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
},

// Replace panel key bindings
// serch内で日本語入力後Enterすると文字が消えないようにコメントアウト
// { "keys": ["enter"], "command": "find_next", "context":
// 	[{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
// },
{ "keys": ["shift+enter"], "command": "find_prev", "context":
	[{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
},
{ "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
	"context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
},
{ "keys": ["ctrl+alt+enter"], "command": "replace_all", "args": {"close_panel": true},
	 "context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
},

// Incremental find panel key bindings
// serch内で日本語入力後Enterすると文字が消えないようにコメントアウト
// { "keys": ["enter"], "command": "hide_panel", "context":
// 	[{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
// },
{ "keys": ["shift+enter"], "command": "find_prev", "context":
	[{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
},
{ "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
	"context": [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
},


これにて、検索時の日本語入力に苦戦させられる問題を解決しました。ちなみこのコメントアウトにより、EnterKeyを押してもfind_nextされなくなりますが、Command + Gすれば同じことができるので問題ないかと思います。find_prevはShift + Command + Gでできます。

プリンタがたまに使えなくなる理由とMacでの解決法

こんにちは、オークです。

 

うちの会社では急にプリンタが使えなくなることが多いので、原因を調べたら、プリンタのIPが関係しているんじゃないかという結論が浮上しました。

 

社内の無線LANDHCPに従っている時、PCやプリンタのIPアドレス無線LANアクセスポイント(【参考】1参照)が動的に振り分けています。

PCやプリンタが再起動されると、振り分けらていたIPアドレスは変更されます。

なのでプリンタが使えなくなる問題は、DHCPによってIPアドレスが変更されていたことによって起こるものと考えられます。

 

なので対処法(Mac)としては以下の2つになります。

Macでのプリンタの設定を更新する

[システム環境設定]→[プリンタとスキャナ]ページで左側に表示されているプリンタを[−]で削除して、[+]で追加し直す。これによって変更後のIPアドレスを持ったプリンタを追加することができます。

②プリンタのIPアドレスを固定してしまう

DHCPに従うとしょっちゅうIPアドレスが変更されて面倒な時は、プリンタのIPアドレスを固定すると良いでしょう。これによって①によって対処する必要がなくなると思われます。ただしAir Printなどの規格の方が影響している可能性もあるので、これが完全な解決策とは一概に言えません。これついて詳しいことがわかれば情報を更新しようと思います。

 

【参考】

1. ルーターとハブの違い 【図解・初心者向け】

http://www.officedaytime.com/tips/router.html

Facebook SDK × CakePHP × MAMPでFacebookログインサイトを開発(2)

前回の記事、「Facebook SDK × CakePHP × MAMPFacebookログインサイトを開発(1)」の続きです。

 

Facebook SDKの導入

③-1.

https://github.com/facebook/facebook-php-sdk からFacebook SDKをダウンロード

 

③-2.

facebook-php-sdk-masterフォルダを「facebook」に名称変更して、CakePHPのapp/Vendor/に設置

 

④ControllerとViewの作成

④-1.

UsersController(コード)

f:id:ork_shinnosuke:20140611162530p:plain

 

④-2.

users/index(コード)

f:id:ork_shinnosuke:20140611162816p:plain

 

users/index(Google Chrome上での表示:ログイン時)

f:id:ork_shinnosuke:20140611163724p:plain

 

users/index(Google Chrome上での表示:ログアウト時)

f:id:ork_shinnosuke:20140611163246p:plain

 

ポイントの1つ目は、createFacebook関数内で、appIDとsecretを記述するところです。これはFacebook Developersのアプリの設定ページに表示されているものを記述します。(下図参照)

ポイントの2つ目は、Facebook Developersのアプリの設定ページのSite URLとログイン処理をするページを一致させることです。今回はusers/loginページをログイン処理のページにしましたが、実装に従って、適宜調整して下さい。

(こちらも下図参照)

f:id:ork_shinnosuke:20140611165837p:plain

 

あとの部分は、CakePHPでの開発であれば、ここに書いてあるコード通りにやっていただければ動くかと思います。では。

 

【参考サイト】

・[CakePHP]ローカル環境のCakePHP2.3でFacebook接続して情報取得&投稿する | offsidenowの日常を綴ったブログ(http://offsidenow.phpapps.jp/archives/275)

cakePHPFacebookログイン - もぎゃろぐ(http://blog.mogya.com/2013/04/cakephpfacebook12.html)

facebook php sdk api でログアウトする方法 - いろいろつまみ食い(http://d.hatena.ne.jp/imaiworks/20120518/1337310167)

 

Facebook SDK × CakePHP × MAMPでFacebookログインサイトを開発(1)

ご無沙汰してます。オークです。

 

最近はFacebookでログインできるサイト作りを勉強していたので、それについて記事を書きます。

 

●環境:

Mac(OS X バージョン10.9.2)、CakePHP(2.4.10)、ローカル環境(MAMP)

 

●大まかな手順:

Facebook Developersへの登録

②アプリの登録

Facebook SDKの導入

④ControllerとViewの作成

 

●詳細な手順

Facebook Developersへの登録

①-1. 

https://developers.facebook.com へアクセス

 

①-2. 

左上の[Apps]→[Register as a Developers]

f:id:ork_shinnosuke:20140608202358p:plain

 

①-3. 

同意して[次へ]

f:id:ork_shinnosuke:20140608203644p:plain 

①-4.

携帯メールアドレスを登録して、[確認コードを取得]

f:id:ork_shinnosuke:20140608203738p:plain

 

①-5.

登録したメールアドレス宛てに確認コードが届くのでそれを[確認コード]へ入力→[完了]

 

②アプリの登録

②-1.

Developersのホーム画面の左上から[Create a New App]

f:id:ork_shinnosuke:20140608203807p:plain

 

②-2.

Display Nameとカテゴリを入力(Namespaceは入力しなくてもOK。Display NameとNamespaceは後で変更できるので何でもOK)→数値入力して完了

f:id:ork_shinnosuke:20140608205524p:plain

 

②-3.

[Apps]→[アプリ名]→[Settings]。App DomainsにCakeフォルダを置くサイトのドメインを入力。ただし、MAMPで開発する時は「localhost」ではなく「自分のPC名.local」という形で登録 f:id:ork_shinnosuke:20140609005051p:plain

 

②-4.

[Add Platform]→[Website]。[Site URL]は「自分のPC名.local/test2/users/login/」とする(「login」の後の「/」は必須)

f:id:ork_shinnosuke:20140611165108p:plain

 

次回は

Facebook SDKの導入

④Controllerの作成

について解説したいと思います。

VagrantのMacへの導入 & Apache, PHP, MySQL, memcachedのインストール

2014/04/24現在

 

①virtual Box のインストール

https://www.virtualbox.org/wiki/Downloads

 

vagrant のインストール

http://www.vagrantup.com/downloads.html

 

③どこでもよいがvagrant用のフォルダを作成

今回(2014/04/24)は~の下にCentOSフォルダを作った

作ったらそのフォルダに移動

 

④OSイメージの追加(2013/09/05時点の記事)

$ vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box

 

仮想マシンの作成

$ vagrant init centos

 

⑥Vagrantfileの設定を変更(一番下の【Vagrantfileの設定】を参照)

 

仮想マシンの起動

$ vagrant up

 

仮想マシンにログイン

$ vagrant ssh

 

仮想マシンに色々インストール(以下、複数行のコマンドは一気に貼り付け可能)

sudo yum -y upgrade

# リポジトリ追加

sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

sudo rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6

sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi

 

sudo vi /etc/yum.repos.d/remi.repo

# 下記を変更

[remi]

name=Les RPM de remi pour Enterprise Linux 6 - $basearch

#baseurl=http://rpms.famillecollet.com/enterprise/6/remi/$basearch/

mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror

enabled=0

enabled=1

 

# Apache(2.2.15-26)

sudo yum -y install httpd-devel

sudo yum -y install mod_ssl

 

# PHP(5.4.13-1)

sudo yum remove php php-*

sudo yum -y install php

sudo yum -y install php-devel

sudo yum -y install php-pdo

sudo yum -y install php-mysql

sudo yum -y install php-mbstring

sudo yum -y install php-mcrypt

sudo yum -y install php-gd

sudo yum -y install php-pear

sudo yum -y install php-pear-DB

sudo yum -y install php-pear-Auth-*

sudo yum -y install php-pecl-apc-devel

sudo yum -y install zlib-devel

 

# MySQL(5.5.30-1)

sudo yum -y install mysql-devel

sudo yum -y install mysql-server

 

# memcached(1.4.15-2)

sudo yum -y install memcached-devel

sudo yum -y install php-pecl-memcache

 

# リポジトリの無効化

sudo vi /etc/yum.repos.d/rpmforge.repo

# 下記を変更

[rpmforge]

name = RHEL $releasever - RPMforge.net - dag

baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge

mirrorlist = http://apt.sw.be/redhat/el6/en/mirrors-rpmforge

#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge

enabled = 1

enabled = 0

 

sudo vi /etc/yum.repos.d/epel.repo

# 下記を変更

[epel]

name=Extra Packages for Enterprise Linux 6 - $basearch

#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch

mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

failovermethod=priority

enabled=1

enabled=0



sudo vi /etc/yum.repos.d/remi.repo

# 下記を変更

[remi]

name=Les RPM de remi pour Enterprise Linux 6 - $basearch

#baseurl=http://rpms.famillecollet.com/enterprise/6/remi/$basearch/

mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror

enabled=1

enabled=0

 

# Apacheの設定

# 不要なコンフィグを読込まないようにする

sudo mv -i /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org

# 起動

sudo service httpd start

# 自動起動設定

sudo chkconfig httpd on

# /etc/httpd/conf/httpd.conf編集

sudo vi /etc/httpd/conf/httpd.conf

<Directory />

   Options FollowSymLinks

   AllowOverride All

</Directory>

 

# 上の設定で、ブラウザからアクセスした時に白い画面が表示される場合(というかやった方がいい)

<Directory “/var/www/html”>

   Options FollowSymLinks

   AllowOverride All

</Directory>

 

# PHPの設定

# エラーログ出力先作成

sudo mkdir /var/log/php

sudo chown apache /var/log/php

sudo chmod 755 /var/log/php

 

sudo vi /etc/php.ini

# 下記を変更

expose_php = On

expose_php = Off

 

;date.timezone =

date.timezone = 'Asia/Tokyo'

 

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

error_reporting = E_ALL & ~E_NOTICE

 

;error_log = php_errors.log

error_log = "/var/log/php/php_errors.log"

 

# セッションの保存先をmemcacheに設定

sudo vi /etc/php.d/memcache.ini

# 下記を変更

;session.save_handler=memcache

session.save_handler=memcache

 

;session.save_path="tcp://localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

session.save_path="tcp://localhost:11211"

 

sudo vi /etc/httpd/conf.d/php.conf

# 下記を変更

php_value session.save_handler "files"

php_value session.save_path "/var/lib/php/session"

#php_value session.save_handler "files"

#php_value session.save_path "/var/lib/php/session"

 

# memcachedの設定

# 自動起動設定

sudo chkconfig memcached on

 

# 起動

sudo service memcached start

sudo service httpd restart

 

# MySQLの設定

# ログの出力先作成

sudo mkdir /var/log/mysql

sudo chown -R mysql:mysql /var/log/mysql

 

# 起動

sudo service mysqld start

 

# 自動起動設定

sudo chkconfig mysqld on

 

# 初期設定

sudo mysql_secure_installation

# 対話式で設定が始まります。

# rootにパスワードを設定する以外は、すべてエンターでOKです。

Set root password? [Y/n]

New password: 任意のパスワード

Re-enter new password: 任意のパスワード

# 以下略

 

sudo rm -rf /var/www/html

# /home/vagrant/srcを/var/www/htmlにシンボリックリンクを設定

sudo ln -fs /home/vagrant/src /var/www/html

 

# iptable設定

sudo iptables -F

sudo /etc/init.d/iptables save

sudo /etc/init.d/iptables restart

# 追加

sudo iptables -P INPUT ACCEPT

sudo iptables -P FORWARD ACCEPT

sudo iptables -P OUTPUT ACCEPT

sudo iptables -F

sudo service iptables save

sudo service iptables restart

 

# postfix

sudo yum -y install postfix

sudo /etc/rc.d/init.d/postfix start

sudo chkconfig postfix on



# apacheのキャッシュでcssが更新されない時

# http://jun-ya.hatenablog.com/entry/2013/08/09/170335

# http://syati.info/?p=2123

 

sudo vi /etc/httpd/conf/httpd.conf

# 3箇所書き換えた

 

<Directory />

...

# 以下を追記

EnableSendfile Off

...

</Directory>

 

<Directory “/var/www/html”>

...

# 以下を追記

EnableSendfile Off

...

</Directory>

 

<Directory “/home/vagrant/src”>

...

# 以下を追記

EnableSendfile Off

...

</Directory>

 

CentOS/src/index.htmlというファイルをおく。index.htmlの中身は何でもいい ex. hello

 

http://localhost:8080/ にアクセス

すると⑩で作ったindex.htmlの中身が表示される

 

----------------------------------------以下、CakePHPの場合の設定----------------------------------------

CakePHP のcore.php に mask を2箇所追記

Cache::config('_cake_core_', array(

'engine' => $engine,

'prefix' => $prefix . 'cake_core_',

'path' => CACHE . 'persistent' . DS,

'serialize' => ($engine === 'File'),

'duration' => $duration,

'mask' => 0666 ←追加する

));

Cache::config('_cake_model_', array(

'engine' => $engine,

'prefix' => $prefix . 'cake_model_',

'path' => CACHE . 'models' . DS,

'serialize' => ($engine === 'File'),

'duration' => $duration,

'mask' => 0666 ←追加する

));

 

参考(http://qiita.com/pakiln/items/0f3e3ca4dc67495c8218)

以上




●【Vagrantfileの設定】

# -*- mode: ruby -*-

# vi: set ft=ruby :

 

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!

VAGRANTFILE_API_VERSION = "2"

 

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

 // この行を追加

 config.vbguest.auto_update = true

 # All Vagrant configuration is done here. The most common configuration

 # options are documented and commented below. For a complete reference,

 # please see the online documentation at vagrantup.com.

 

 # Every Vagrant virtual environment requires a box to build off of.

 config.vm.box = "base"

 

 # The url from where the 'config.vm.box' box will be fetched if it

 # doesn't already exist on the user's system.

 # config.vm.box_url = "http://domain.com/path/to/above.box"

 

 # Create a forwarded port mapping which allows access to a specific port

 # within the machine from a port on the host machine. In the example below,

 # accessing "localhost:8080" will access port 80 on the guest machine.

 // この行をコメントアウト

 config.vm.network :forwarded_port, guest: 80, host: 8080

 

 # Create a private network, which allows host-only access to the machine

 # using a specific IP.

 # config.vm.network :private_network, ip: "192.168.33.10"

 

 # Create a public network, which generally matched to bridged network.

 # Bridged networks make the machine appear as another physical device on

 # your network.

 # config.vm.network :public_network

 

 # If true, then any SSH connections made will enable agent forwarding.

 # Default value: false

 # config.ssh.forward_agent = true

 

 # Share an additional folder to the guest VM. The first argument is

 # the path on the host to the actual folder. The second argument is

 # the path on the guest to mount the folder. And the optional third

 # argument is a set of non-required options.

 // この行をコメントアウト

 config.vm.synced_folder "src/", "/home/vagrant/src", owner: 'vagrant', group: 'apache', mount_options: ['dmode=777', 'fmode=666']

 

 # Provider-specific configuration so you can fine-tune various

 # backing providers for Vagrant. These expose provider-specific options.

 # Example for VirtualBox:

 #

 # config.vm.provider :virtualbox do |vb|

 #   # Don't boot with headless mode

 #   vb.gui = true

 #

 #   # Use VBoxManage to customize the VM. For example to change memory:

 #   vb.customize ["modifyvm", :id, "--memory", "1024"]

 # end

 #

 # View the documentation for the provider you're using for more

 # information on available options.

 

 # Enable provisioning with Puppet stand alone.  Puppet manifests

 # are contained in a directory path relative to this Vagrantfile.

 # You will need to create the manifests directory and a manifest in

 # the file base.pp in the manifests_path directory.

 #

 # An example Puppet manifest to provision the message of the day:

 #

 # # group { "puppet":

 # #   ensure => "present",

 # # }

 # #

 # # File { owner => 0, group => 0, mode => 0644 }

 # #

 # # file { '/etc/motd':

 # #   content => "Welcome to your Vagrant-built virtual machine!

 # #               Managed by Puppet.\n"

 # # }

 #

 # config.vm.provision :puppet do |puppet|

 #   puppet.manifests_path = "manifests"

 #   puppet.manifest_file  = "site.pp"

 # end

 

 # Enable provisioning with chef solo, specifying a cookbooks path, roles

 # path, and data_bags path (all relative to this Vagrantfile), and adding

 # some recipes and/or roles.

 #

 # config.vm.provision :chef_solo do |chef|

 #   chef.cookbooks_path = "../my-recipes/cookbooks"

 #   chef.roles_path = "../my-recipes/roles"

 #   chef.data_bags_path = "../my-recipes/data_bags"

 #   chef.add_recipe "mysql"

 #   chef.add_role "web"

 #

 #   # You may also specify custom JSON attributes:

 #   chef.json = { :mysql_password => "foo" }

 # end

 

 # Enable provisioning with chef server, specifying the chef server URL,

 # and the path to the validation key (relative to this Vagrantfile).

 #

 # The Opscode Platform uses HTTPS. Substitute your organization for

 # ORGNAME in the URL and validation key.

 #

 # If you have your own Chef Server, use the appropriate URL, which may be

 # HTTP instead of HTTPS depending on your configuration. Also change the

 # validation key to validation.pem.

 #

 # config.vm.provision :chef_client do |chef|

 #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"

 #   chef.validation_key_path = "ORGNAME-validator.pem"

 # end

 #

 # If you're using the Opscode platform, your validator client is

 # ORGNAME-validator, replacing ORGNAME with your organization name.

 #

 # If you have your own Chef Server, the default validation client name is

 # chef-validator, unless you changed the configuration.

 #

 #   chef.validation_client_name = "ORGNAME-validator"

end





●トラブルシューティング

1. vagrant再起動($ vagrant reload)の時、以下のエラーメッセージが表示される

------------------------------------------------------------------------------------------

There are errors in the configuration of this machine. Please fix

the following errors and try again:

 

Vagrant:

* Unknown configuration section 'vbguest'.

------------------------------------------------------------------------------------------

# config.vbguest.auto_update = true //の行を以下のように修正

if Object.const_defined? 'VagrantVbguest'

   config.vbguest.auto_update = false

   config.vbguest.no_remote = true

end

 

参考(https://groups.google.com/forum/#!topic/vagrant-up/hNAyk57BLaM)



2. 1.で直してvagrant再起動($ vagrant reload)の時、以下のエラーメッセージが表示される

------------------------------------------------------------------------------------------

Failed to mount folders in Linux guest. This is usually because

the "vboxsf" file system is not available. Please verify that

the guest additions are properly installed in the guest and

can work properly. The command attempted was:

 

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group apache | cut -d: -f3`,dmode=777,fmode=666 /home/vagrant/src /home/vagrant/src

mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g apache`,dmode=777,fmode=666 /home/vagrant/src /home/vagrant/src

------------------------------------------------------------------------------------------

(★以下のことを実行する前提として、vagrantapacheがインストールされている必要がある)

①$ vagrant ssh

 

(効果があるかはわからないが、前もって

$ sudo mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group apache | cut -d: -f3`,dmode=777,fmode=666 /home/vagrant/src /home/vagrant/src

 

$ sudo mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g apache`,dmode=777,fmode=666 /home/vagrant/src /home/vagrant/src

の2つのコマンドを試した

)

 

②$ sudo /etc/init.d/vboxadd setup

実行終了したら $ exit

 

vagrant halt

 

vagrant up

 

参考(http://qiita.com/osamu1203/items/10e19c74c912d303ca0b)

 

3. http://localhost:8080/ にアクセスすると、「データを受信して​​いません」とブラウザに表示される

⑨の設定を全て行えば、このエラーは出ない

 

4. http://localhost:8080/ にアクセスすると、「Forbidden 403」とブラウザに表示される

/home/vagrant のアクセス権がないのが原因なので、以下のコマンドを入力

$ sudo chmod 755 /home/vagrant

参考(http://www.iscs.jp/tips/tips.php?id=22)

 

5. CakePHPのフォルダにアクセスしても「Not Found」と表示される

⑨の設定を全て行えば、このエラーは出ない

 

TCPDFはできないことが多い!と感じる

先日クライアントに、PDFファイルを出力できるようにしてくれと言われた。

「やってやろうじゃないか!htmlとcssを組み合わせればレイアウトも自由自在でしょ!」といきまいて作業にとりかかったが、あら大変。実際はそんなに単純じゃなくて、PDFファイルのレイアウトを色々いじるのは難しい!と感じたので、忘れないうちに今回学んだことをメモ。

(もしかしたら私の知識や検索が不足していて、ホントはもっと効率的なやり方があるのかもしれないが、もしそうだとしたら悪しからず)

環境:CakePHP2.4による開発、tcpdf Ver 6.0.055

0. 前提:CSSは効くものと効かないものがある。外部CSSは読み込まないので、styleタグ内にCSSを書くしかない。完全に効かない!とかならまだしも、効くものとそうでないのがあるのが質が悪い。

1. styleタグ内で、id指定は効かない。class指定は効く

//×ケース
<div id="content"></div>
<style>
#content {
 color: red;
}
</style>

//◯ケース
<div class="content"></div>
<style>
.content {
 color: red;
}
</style>

→よって、class指定すべし

2. margin, padding, float使えない。
→よって、レイアウトはtableタグを使ってやるべし

3.
全角スペースも半角スペースも正確に認識しない
→よって、「&nbsp;」で対応すべし

4.
太い線が引けない。cssで「border: solid 10px black」と指定しても、 10pxの線にならない。(色は変えられる。しかし、太さと線の形式(dotted, double等)は効かない

→よって、tcpdfの関数を使うべし。以下コード($pdfは最初に作成したインスタンス)

$pdf->SetLineWidth(0.8);  //0.8は線の太さ
$pdf->Line(10.0, 52.0, 153.0, 52.0);  
//10.0, 52.0は線の始点のX座標, Y座標
//153.0, 52.0は線の終点のX座標, Y座標

その他のできないことリスト
・centerタグが使えない

参考になるサイト
・PDFファイルを生成するためのPHPライブラリ「TCPDF」 | モノについてのモノ語り(http://www.near-mint.com/blog/5040)

以上。新情報あれば追加します。