前回のポストで述べた方法ではWindows版のデフォルトの文字コードは変更されない。
変更してもUnityで生成する限りは元に戻るとのこと。
[wp_ad_camp_1]
解決策は次のリンクの通り。
DEBUG.LOG::スクリプトファイルのutf-8変換
前回のポストで述べた方法ではWindows版のデフォルトの文字コードは変更されない。
変更してもUnityで生成する限りは元に戻るとのこと。
[wp_ad_camp_1]
解決策は次のリンクの通り。
DEBUG.LOG::スクリプトファイルのutf-8変換
プロジェクトの途中、いろんな環境で作業しているスタッフが混在していたり、スタッフが途中で増員すると環境が一人だけ違っていたりする事がある。特にコミットされたファイルの文字コードが違っていたりすると後で変更することは可能だが、svnのdiffが効かなくなったりblameで変遷を追えなくなる。
とはいえ、Unityで生成されるファイルはデフォルトでUtf-8なので、これ以外を使おうとする場合はコミット前に毎度確認しなければならなくなる。
そういった事態を回避する為に、予め特定の文字コードでファイルが生成されるように設定しておくと後々の不幸な出来事が無くなるのでメモしておく。
[wp_ad_camp_1]
新規に生成されるファイルは特定のファイルをコピーしただけになるので、親ファイルを特定して変更すればすべて解決する。
NewBehaviourScript.csとかjsとかbooとかshaderとかのファイルがあるのでこれを書き換えておく。
生成時にこれがまるっとコピペされるので署名等も入れておくと便利。
ちなみにこれらは3.xの場合。
ファイルは.txtとして完全にテキストファイル化している。さらに、環境変数っぽいものも使えるようで、これを駆使して様々な記述ができそうではある。
4.xについては様々な問題により調査してません。が、多分Mac版同様の構成になってると思われるので次の単語で検索すると出てきそう。
– 80-Javascript-NewBehaviourScript.js.txt
– 81-C# Script-NewBehaviourScript.cs.txt
– 82-Boo Script-NewBehaviourScript.boo.txt
– 83-Shader-NewShader.shader.txt
– 84-Compute Shader-NewComputeShader.compute.txt
※最後のファイルは何なんでしょう…。はやく4.x環境に完全以降したい!
UnityのTextAssetはiOSむけにコンパイル後、UTF-16withBOMのファイルを読み込ませてパースしようとすると、BEだろうがLEだろうがパースエラーになって落ちる。
prefabはApplyしてもファイルシステムへの保存が即時なされるわけではない。
変更後にすぐに git や Subversion にコミットしても変化が無かったり、空のプレファブをコミットしてしまったりで混乱を招くことがある。
これを回避するにはコミット前にUnityを終了する必要がある。
終了時に未保存のPrefabはちゃんとOS側のファイルシステムへ書き込まれる。
しかしそんなことを毎度操作してたら効率が悪いので特定のコマンドを実行するショートカットを用意する。
using UnityEngine;
using UnityEditor;
public class Util : Editor
{
#if UNITY_EDITOR
[UnityEditor.MenuItem("Edit/SavePrefab %&s")]
static void SavePrefab(){
AssetDatabase.SaveAssets();
}
#endif
}
ショートカットキーとして次の文字を特殊なキーの代わりに設定できる。
%#s で Command + Shift + s といった具合。
Unity Scripting Reference MenuItem
通常、Library下にUnityプロジェクト用ファイルが生成されるが、AssetServerを使うのでないのであれば、各Prefabに何がアタッチされているのかとか、インスペクタ上ではどんんあ値が入力されているか、とかはmetaファイルに格納される。このmetaファイルは各リソースファイルと同じところに置く必要がある。
これをしないとコミットしたプレファブのインスペクタが初期値(コードで指定した値)になる。
metaファイルの生成方法は次の通り。
Edit -> Project Settings -> EditorでInspector上にEditor Settingsが表示される。
この VersionControl
の項目を MetaFiles
にし、AssetSerialization
を Force Text
にする。
これでprefabもTextベースになるのでDiffツール等で変更箇所が目視できるようになる。
[wp_ad_camp_1]
Mac OSX Mountain Lion にインストーラからインストールするだけで動作ができた。
該当マシンにはJenkinsが入っているのでポートを8081にする程度の変更は加えたもののDB等も含めたインストールが完了した。
ローカルエリア内からipを直接打ち込むことで別マシンからでもアクセスできるので、遠隔地のスタッフと共同等でないかぎりはこの環境でも十分やれそうだ。
しかし、Redmineからメールが送れなかったりSubversionとの連携が上手く行ってないので調べようと思ったら、Logを吐く設定をしていないことが発覚したので通常運行にはまだまだ事足らない。
Redmineのインストーラ
http://redmine.jp/download/
ここのAll-in-one
MacのApacheを機能させる
http://d.hatena.ne.jp/sakura_bird1/20120804/1344055999
http://d.aoikujira.com/blog/index.php?Mac%E3%81%AEMountain%20Lion%E3%81%A7Apache%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B
ログの場所
http://d.hatena.ne.jp/shigemk2/20120824/1345795386
ここを見なくてもConsoleを立ち上げればApache2の項目からLogを参照できる。
Photoshopでメタリックなテクスチャの制作方法を知りました。
が、キャンパスサイズによって感じがだいぶ変わってしまうので調度良いサイズを得るために何度か作り直していました。
これが徐々に面倒になりスクリプト化しようと思い立ち、何とか完成に。
この本に載ってます。本をみなくても下に記述したスクリプトに記述してます。
Photoshopに”ScriptingListener.plugin”というプラグインを入れます。(Mac)
プラグイン(adobe)
インストール方法も日本語で提供されてます。
このプラグインを入れている間は、デスクトップ上に”ScriptingListenerJS.log”というログファイルが出力されます。
開くとConsoleが立ち上がり中身を表示してくれます。
ただし、プラグインが入っている間はずっとログを出力しつづけるのでファイルが肥大化します。
気づかない間に容量を圧迫しているなんてことがないように、不要な時はプラグインを削除します。
やりた処理がわからない時はPhotoshop上で操作をし、それをLog上から解析することでスクリプトの記述方法がわかります。
解析には次の公式ドキュメントが助けになりました。
ADOBE PHOTOSHOP CS6 JAVASCRIPT SCRIPTING REFERENCE
ポイントになるのは以下の2点です。
何をするにも登場します。
このオブジェクトに色々な情報を付加し、特定の操作を定義します。
形式はDictionaryで、keyとValueで格納します。
特徴は、情報をKeyと値セットで保持します。
保持の際にデータ型をメソッド名を以て指定します。
function addBlur(angle,pix) { var idMtnB = charIDToTypeID( "MtnB" ); var desc170 = new ActionDescriptor(); var idAngl = charIDToTypeID( "Angl" ); desc170.putInteger( idAngl, angle ); var idDstn = charIDToTypeID( "Dstn" ); var idPxl = charIDToTypeID( "#Pxl" ); desc170.putUnitDouble( idDstn, idPxl, pix ); executeAction( idMtnB, desc170, DialogModes.NO ); }
こんな感じで入れ子になって各操作や数値が定義されます。
また、”MtnB”等の4文字KeyはAdobe側で定義されているのですが、先のドキュメントに載ってないものばかり吐出されるので、どうにかして欲しいところです。
ここは気合いで。
このオブジェクトはデータが時系列的に平行して存在する場合にまとめて定義します。
グラデーションの色データ等を格納するのに使います。
ログを解析すると似た様な箇所がけっこう出て来るので抽象化すると、構造の理解が深まって幸せになれます。
次に出来上がったものを示します。
以下のスクリプトをUTF8形式のテキストファイルに貼付けて、”xxx.jsx”という名前で保存します。
Photoshop上からFile > Script > Browse…で保存したファイルを指定すると実行されます。
//create metalic texture //Gradient var width = activeDocument.width; var height = activeDocument.height; var startP = new pos(width,0); var endP = new pos(0,height); gradient(startP,endP); //Noise addNoise(15.0, true, true); //Blur //これくらいが調度良かった。 addBlur(0,width/20); //Mono hueAndSaturation(0,-100,0); //data boj function pos(arg_x,arg_y){ this.x = arg_x; this.y = arg_y; } function hueAndSaturation(hue,saturation,lightness) { //hue / saturation var idHStr = charIDToTypeID( "HStr" ); var desc = new ActionDescriptor(); var idpresetKind = stringIDToTypeID( "presetKind" ); var idpresetKindType = stringIDToTypeID( "presetKindType" ); var idpresetKindCustom = stringIDToTypeID( "presetKindCustom" ); desc.putEnumerated( idpresetKind, idpresetKindType, idpresetKindCustom ); var idClrz = charIDToTypeID( "Clrz" ); //Colorize (色彩の統一) desc.putBoolean( idClrz, false ); var idAdjs = charIDToTypeID( "Adjs" ); var list10 = new ActionList(); var desc175 = new ActionDescriptor(); var idH = charIDToTypeID( "H " ); desc175.putInteger( idH, hue ); var idStrt = charIDToTypeID( "Strt" ); desc175.putInteger( idStrt, saturation ); var idLght = charIDToTypeID( "Lght" ); desc175.putInteger( idLght, lightness ); var idHsttwo = charIDToTypeID( "Hst2" ); list10.putObject( idHsttwo, desc175 ); desc.putList( idAdjs, list10 ); executeAction( idHStr, desc, DialogModes.NO ); } function addBlur(angle,pix) { var idMtnB = charIDToTypeID( "MtnB" ); var desc170 = new ActionDescriptor(); var idAngl = charIDToTypeID( "Angl" ); desc170.putInteger( idAngl, angle ); var idDstn = charIDToTypeID( "Dstn" ); var idPxl = charIDToTypeID( "#Pxl" ); desc170.putUnitDouble( idDstn, idPxl, pix ); executeAction( idMtnB, desc170, DialogModes.NO ); } function addNoise( p,isGsn,isMono ) { var idAdNs = charIDToTypeID( "AdNs" ); var noisDesc = new ActionDescriptor(); var gaussId; if(isGsn) { gaussId = charIDToTypeID( "Gsn " ); }else{ gaussId = charIDToTypeID( "Unfr" ); } var idDstr = charIDToTypeID( "Dstr" ); noisDesc.putEnumerated( idDstr, idDstr, gaussId ); var idNose = charIDToTypeID( "Nose" ); var idPrc = charIDToTypeID( "#Prc" ); //15% noisDesc.putUnitDouble( idNose, idPrc, p ); var idMnch = charIDToTypeID( "Mnch" ); noisDesc.putBoolean( idMnch, isMono ); var idFlRs = charIDToTypeID( "FlRs" ); noisDesc.putInteger( idFlRs, 5450347 ); executeAction( idAdNs, noisDesc, DialogModes.NO ); } function gradient(stratP,endP) { //各種情報入れとく場所 var master = new ActionDescriptor(); putStartPosition (master, startP.x, startP.y); putEndPosition (master, endP.x, endP.y); //終点 //Enumerated var idType = charIDToTypeID( "Type" ); var idGrdT = charIDToTypeID( "GrdT" ); var idLnr = charIDToTypeID( "Lnr " ); master.putEnumerated( idType, idGrdT, idLnr ); //Dthr var idDthr = charIDToTypeID( "Dthr" ); master.putBoolean( idDthr, true ); var idUsMs = charIDToTypeID( "UsMs" ); master.putBoolean( idUsMs, true ); var idGrad = charIDToTypeID( "Grad" ); var idNm = charIDToTypeID( "Nm " ); var desc12 = new ActionDescriptor(); //Asset gradient desc12.putString( idNm, """$$$/DefaultGradient/Copper=Copper""" ); var idGrdF = charIDToTypeID( "GrdF" ); var idCstS = charIDToTypeID( "CstS" ); desc12.putEnumerated( idGrdF, idGrdF, idCstS ); var idIntr = charIDToTypeID( "Intr" ); desc12.putDouble( idIntr, 4096.000000 ); var idClrs = charIDToTypeID( "Clrs" ); //最初の色データオブジェクト var list2 = new ActionList(); //RGBColorオブジェクト var colorObj1 = createRGBColorObj (151.000006, 70.000003, 26.000000); var desc13 = createRGBColorData(colorObj1,0,50); var idClrt = charIDToTypeID( "Clrt" ); list2.putObject( idClrt, desc13 ); //HSBColorオブジェクト /**/ var colorObj2 = createHSBColorObj(21.115723,21.568627,98.431373); var desc15 = createHSBColorData(colorObj2, 1229, 50); list2.putObject( idClrt, desc15 ); //色オブジェクト var colorObj3 = createRGBColorObj(108,46,22); var desc17 = createRGBColorData(colorObj3,3400,50); list2.putObject( idClrt, desc17 ); //色オブジェクト var colorObj4 = createRGBColorObj(239,219,205); var desc19 = createRGBColorData(colorObj4,4096,50); list2.putObject( idClrt, desc19 ); desc12.putList( idClrs, list2 ); //終了用リスト var list3 = new ActionList(); var desc21 = new ActionDescriptor(); putOpt (desc21, 100); putLctn (desc21, 0); putMdpn (desc21, 50) var idTrnS = charIDToTypeID( "TrnS" ); list3.putObject( idTrnS, desc21 ); var desc22 = new ActionDescriptor(); putOpt(desc22,100.0); putLctn (desc22, 4096); putMdpn (desc22, 50); var idTrnS = charIDToTypeID( "TrnS" ); list3.putObject( idTrnS, desc22 ); var idTrns = charIDToTypeID( "Trns" ); desc12.putList( idTrns, list3 ); var idGrdn = charIDToTypeID( "Grdn" ); master.putObject( idGrad, idGrdn, desc12 ); //実行 executeAction( idGrdn, master, DialogModes.NO ); } function putOpt(targetObj,Double) { var idOpct = charIDToTypeID( "Opct" ); var idPrc = charIDToTypeID( "#Prc" ); targetObj.putUnitDouble( idOpct ,idPrc ,Double ); } function putLctn(targetObj,Integer) { var idLctn = charIDToTypeID( "Lctn" ); targetObj.putInteger( idLctn, Integer ); } function putMdpn(targetObj,Integer) { var idMdpn = charIDToTypeID( "Mdpn" ); targetObj.putInteger( idMdpn, Integer ); } function createPositionDescriptor(x,y) { var desc = new ActionDescriptor(); var idHrzn = charIDToTypeID( "Hrzn" ); var idRlt = charIDToTypeID( "#Rlt" ); desc.putUnitDouble( idHrzn, idRlt, x );//key, unitID, value var idVrtc = charIDToTypeID( "Vrtc" ); var idRlt = charIDToTypeID( "#Rlt" ); desc.putUnitDouble( idVrtc, idRlt, y); return desc; } function putStartPosition(obj,x,y) { var pos = createPositionDescriptor(x,y); //開始位置のKey var idFrom = charIDToTypeID( "From" ); //開始位置のunitID var idPnt = charIDToTypeID( "Pnt " ); //開始位置オブジェクトをグラデーション実行オブジェクトに代入 obj.putObject( idFrom, idPnt, pos ); } function putEndPosition(obj,x,y) { var pos = createPositionDescriptor(x,y); //開始位置のKey var idFrom = charIDToTypeID( "T " ); //開始位置のunitID var idPnt = charIDToTypeID( "Pnt " ); //開始位置オブジェクトをグラデーション実行オブジェクトに代入 obj.putObject( idFrom, idPnt, pos ); } function createDescriptorWithGradientString(gradient) { if(gradient == null) { //文字列型のデータを追加。"で囲ったプリセットのグラデーション gradient = """$$$/DefaultGradient/BlackWhite=Black, White"""; gradient = """$$$/DefaultGradient/Copper=Copper"""; } var desc= new ActionDescriptor(); var idNm = charIDToTypeID( "Nm " ); desc.putString( idNm, gradient ); return desc; } function createCMYKColorObj(c,m,y,k) { var desc = new ActionDescriptor(); var idCyn = charIDToTypeID( "Cyn " ); desc.putDouble( idCyn, c); var idMgnt = charIDToTypeID( "Mgnt" ); desc.putDouble( idMgnt, m ); var idYlw = charIDToTypeID( "Ylw " ); desc.putDouble( idYlw, y); var idBlck = charIDToTypeID( "Blck" ); desc.putDouble( idBlck, k); return desc; } function createCMYKColorData( colorObj, Lctn) { var targetObj = new ActionDescriptor(); var idClr = charIDToTypeID( "Clr " ); var idCMYC = charIDToTypeID( "CMYC" ); targetObj.putObject( idClr, idCMYC, colorObj ); var idType = charIDToTypeID( "Type" ); var idClry = charIDToTypeID( "Clry" ); var idUsrS = charIDToTypeID( "UsrS" ); targetObj.putEnumerated( idType, idClry, idUsrS ); var idLctn = charIDToTypeID( "Lctn" ); targetObj.putInteger( idLctn, Lctn ); var idMdpn = charIDToTypeID( "Mdpn" ); targetObj.putInteger( idMdpn, 50 ); return targetObj; } function createRGBColorObj(r,g,b) { var desc = new ActionDescriptor(); var idRd = charIDToTypeID( "Rd " ); desc.putDouble( idRd, r ); var idGrn = charIDToTypeID( "Grn " ); desc.putDouble( idGrn, g); var idBl = charIDToTypeID( "Bl " ); desc.putDouble( idBl, b); return desc; } function createRGBColorData(colorObj,Lctn,Mdpn) { var desc = new ActionDescriptor(); var idClr = charIDToTypeID( "Clr " ); var idRGBC = charIDToTypeID( "RGBC" ); desc.putObject( idClr, idRGBC, colorObj ); var idType = charIDToTypeID( "Type" ); var idClry = charIDToTypeID( "Clry" ); var idUsrS = charIDToTypeID( "UsrS" ); desc.putEnumerated( idType, idClry, idUsrS ); putLctn (desc, Lctn); putMdpn (desc, Mdpn); return desc; } function createHSBColorObj(h,s,b) { var desc = new ActionDescriptor(); var idH = charIDToTypeID( "H " ); var idAng = charIDToTypeID( "#Ang" ); desc.putUnitDouble( idH, idAng, h); var idStrt = charIDToTypeID( "Strt" ); desc.putDouble( idStrt, s ); var idBrgh = charIDToTypeID( "Brgh" ); desc.putDouble( idBrgh, b); return desc; } function createHSBColorData(HSBObj,Lctn,Mdpn) { var desc = new ActionDescriptor(); var idClr = charIDToTypeID( "Clr " ); var idHSBC = charIDToTypeID( "HSBC" ); desc.putObject( idClr, idHSBC, HSBObj ); var idType = charIDToTypeID( "Type" ); var idClry = charIDToTypeID( "Clry" ); var idUsrS = charIDToTypeID( "UsrS" ); desc.putEnumerated( idType, idClry, idUsrS ); putLctn(desc,Lctn); putMdpn (desc, Mdpn); return desc; } function blackGradient() { //グラデーションを実行するオブジェクトを生成 var master = new ActionDescriptor(); putStartPosition(master,0.0,0.0); putEndPosition (master, 600, 0.0); var idType = charIDToTypeID( "Type" ); var idGrdT = charIDToTypeID( "GrdT" ); var idLnr = charIDToTypeID( "Lnr " ); master.putEnumerated( idType, idGrdT, idLnr ); var idDthr = charIDToTypeID( "Dthr" ); master.putBoolean( idDthr, true ); var idUsMs = charIDToTypeID( "UsMs" ); master.putBoolean( idUsMs, true );//bool 型のデータを追加 //ここからGradient Data var gradientData = createDescriptorWithGradientString(); //new ActionDescriptor(); var idIntr = charIDToTypeID( "Intr" ); gradientData.putDouble( idIntr, 4096.000000 ); //gradientData.putDouble( idIntr, 0.000000 ); // var colorList = new ActionList(); //black color obj var black = createCMYKColorObj(75.02,68.01,67,90.19); var colorData1 = createCMYKColorData(black,0); var idClrt = charIDToTypeID( "Clrt" ); colorList.putObject( idClrt, colorData1 ); var white = createCMYKColorObj(0,0,0,0); var colorData2 = createCMYKColorData(white,4096); colorList.putObject( idClrt, colorData2 ); var idClrs = charIDToTypeID( "Clrs" ); gradientData.putList( idClrs, colorList ); var list5 = new ActionList(); var desc34 = new ActionDescriptor(); putOpt(desc34,100.0); putLctn(desc34,0); putMdpn(desc34,50); var idTrnS = charIDToTypeID( "TrnS" ); list5.putObject( idTrnS, desc34 ); var desc35 = new ActionDescriptor(); putOpt(desc35,100.0); putLctn (desc35, 4096); putMdpn (desc35, 50); var idTrnS = charIDToTypeID( "TrnS" ); list5.putObject( idTrnS, desc35 ); var idTrns = charIDToTypeID( "Trns" ); gradientData.putList( idTrns, list5 ); var idGrad = charIDToTypeID( "Grad" );//key var idGrdn = charIDToTypeID( "Grdn" );//unitID master.putObject( idGrad, idGrdn, gradientData ); executeAction( idGrdn, master, DialogModes.NO ); }
色オブジェクト(次のサンプル部分)をgradient()に追加して複雑なグラデーションを作成してみると面白いかもしれません。
//色オブジェクト var colorObj3 = createRGBColorObj(108,46,22);//createRGBColorObj(r,g,b); var desc17 = createRGBColorData(colorObj3,3400,50); list2.putObject( idClrt, desc17 );
各種インストーラDLして入れておく
現在ではOpenPNE-3.6.4が最新?
※3.8.Xがリリースされてます。
同じ様なテーマで作業ログ残してるブログを参考にすすめてみる。
参考:http://d.hatena.ne.jp/s_kaneda/20090603/1244016722
上述の参考URI上にあるリンクのXAMPPのインストールから設定まわりは古過ぎて参考にならず。
MacOS LionにはUtilityにDirectory なんちゃらってのが無い。
ターミナルからsudoでセキュリティの設定を行う。
参考:http://www.youtube.com/watch?v=BPjpRzdrug8
作業はすべてsudoで行う
sudo vim /Applications/XAMPP/etc/httpd.conf
ファイルを開いたらset numberで行数を表示。
可能な限り何行目にどんな設定があるのかを把握しておく。
最後尾のコメントアウトを削除。vim は Ctrl + d でページ送り
vhostで設定したのディレクトリがちゃんとhtdocs下で一致している事を確認してからxamppのapacheを再起動。
エラーがあるとxamppがalert投げて知らせてくれる。
データベースは予め作成しておかなければならない。でないとCreatingTableでこける。
phpmyadminからDBを作成。
DB名はopenpne。
照合順序もutf8_unicode_ci
参考:http://technology.rey-net.com/?eid=1155855
ターミナルから以下を入力する。
sudo php /Applications/XAMPP/htdocs/OpenPNE-3.6.4/symfony openpne:install
require_onceでエラーが出たら、次の事をやってない可能性が高い。OpenPNE-3.6.4/config/ProjectConfiguration.class.php.sampleをコピーしてファイル名から.sampleを抜いたものを用意しておく。
インストールが開始されると青い箱で質問攻め。質問内容は参考URLを参考に。
あれ?インストール中どうしても
PDO Connection Error: SQLSTATE[HY000] [2002] No such file or directory
で止まる。
sudo vim でphp.iniを開く。参考URLではpdo_mysql.default_socketの項目があるようだけど俺のところには無かった。無かった!
結果・・・失敗。
参考:http://yasuwagon.blogspot.jp/2010/12/openpne3-pdo-connection-error.html
まずソケットの場所を探す。
find / -name "*sock"
ずらずらっと出て来るはずなのでそこからそれっぽいものを採択。
/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
これをインストール時に聞かれるType database socket path (optional)に入力。
結果・・・成功。
参考:http://weble.org/2011/05/07/openpne-mac-hemtel
成功すると
http://localhost/OpenPNE-3.6.4/web/
からアクセスできるようになる。
/config/OpenPNE.yml.sample -> /config/OpenPNE.yml /config/ProjectConfiguration.class.php.sample -> /config/ProjectConfiguration.class.php
ここまででインストール完了と管理画面へのログインはできたものの、ユーザー側のフロントエンドにはいけず。
なので色々見直したところ、OpenPNE.ymlのベースURLが間違っているっぽい事が分かったのでそこを修正してみる。
6行目
base_url: "http://example.com" -> base_url: "http://localhost/OpenPNE-3.6.4/web/"
pc_frontend: "https://example.com" mobile_frontend: "https://example.com" pc_backend: "https://example.com" -> pc_frontend: "http://localhost/OpenPNE-3.6.4/web" mobile_frontend: "http://localhost/OpenPNE-3.6.4/web" pc_backend: "http://localhost/OpenPNE-3.6.4/web"
結果・・・以下のエラーがでてAdmin側もアクセス不可能に…。
現在、サーバが混み合っているか、メンテナンス中です。 ご迷惑をおかけいたしますが、しばらく時間を空けて再度アクセスしてください。 Currently, our service is too busy or is under maintenance. We're sorry and please retry accessing later.
ここからbase_urlの最後のスラッシュだけ排除してもう一度インストール
結果・・・アクセス可能に!
しかし、相変わらずログインはできない。
table_prefix: "" -> table_prefix: "op_"
これは推奨、ということなのでやらなくてもいいっぽいけどやっとく。
参考:http://redmine.openpne.jp/issues/201
mcrypt:暗号化用関数。なぜかxamppのmac版には入ってない。
http://www.weblio.jp/content/Mcrypt+%E6%9A%97%E5%8F%B7%E5%8C%96%E9%96%A2%E6%95%B0
入ってるか確認。
http://forum.tsukaeru.net/viewtopic.php?p=24183
mcryptはhomebrew経由でinstallした。
APC拡張モジュールって何?
apcはhomebrew経由でのinstall方法が良くわからず…。
その後、発見するもhomebrewからだとダメらしい。
http://d.hatena.ne.jp/ken-ton/20111108/1320732105
そしてAPCをinstallするためにのphpizeが機能しない。
これはphp-develをインストールする必要があるらしい…。
現在の現象の種類
解決策、原因と思われるものの種類
公式の手順を読み返したら実際はなにも編集しなくても
http://example.com/pc_frontend_dev.php
でアクセス出来た。
やっとできた…。
でも相変わらずdev抜きURLではアクセスできないけれどもPluginを製作するにあたっては問題無いね。きっと。