分类 【乱七八糟】 下的文章

Mac OS X下JAVA_HOME的另一则快捷入口

直接执行

/usr/libexec/java_home

的结果就是默认的JAVA_HOME目录了,比如我的就会得到回显:

tan9le_mbp:~ tan9le$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

另外,关于MacOSX下多版本JAVA环境的管理,请参考:https://github.com/linux-china/jenv/wiki/Chinese-Introduction

jenv: Java enVironment Manager,管理Java的开发环境。 当你从github clone出代码后,发现build.xml, pom.xml和build.gradle等文件,你突然发现Ant,Maven和Gradle还米有安装,太悲催啦。 你发现一个gist非常不错,想要运行一下,突然发现gist是Groovy代码,靠,还没有安装Groovy。开发完成后,应用要做jdk 1.5的兼容,突然发现1.5的环境还没有。所有这些和环境相关的问题就是jenv要解决的问题,而且以一种非常简单的方式。

jenv的安装非常简单,你只需要打开你喜欢的控制台(xterm,iTerm等),然后输入

curl -s get.jenv.io | bash 

就可以完成安装,然后你重新打开控制台或一个控制台tab或者在控制台输入

source $HOME/.jenv/bin/jenv-init.sh

即可。升级也非常简单,只需要执行

jenv selfupdate

然后重新打开terminal即可。由于jenv采用离线方式存储相关的数据,所以建议你每1-2天使用

jenv repo update

进行软件版本信息更新。 jenv支持bash completion,你只要在.bash_profile中添加

source "$HOME/.jenv/commands/completion.sh"

Mac OS X下设置vmware fusion的端口映射

编辑/Library/Preferences/VMware Fusion/vmnet8/nat.conf文件,按照以下格式编写:

[incomingtcp]
# Use these with care - anyone can enter into your VM through these...
# The format and example are as follows:
#<external port number> = <VM's IP address>:<VM's port number>
#35 = 172.16.126.128:22

Linux bitnami redmine的相关总结

  1. 只有HTTP,沒有HTTPS,資料被人看光光,Oh my god!

    1. Email永遠通知不到要通知的人﹍Holy shit!
    2. Subversion根本還沒設定!不過這不能怪BitNami啦,我們又沒跟他說我們要用Subversion!搞不好有人想用Git不行嗎?
    3. Subversion就算照README.txt設定好,媽的!怎麽只支援svn://﹍連source code也被看光光﹍給我https啦!

BitNami會將所有的東西放在安裝目錄中,也就是/opt/redmine-1.2.0-0目錄下,啟動與停止系統可以這樣做:

 啟動所有servers
 $ sudo ./ctlscript.sh start

 只啟動特定server
 $ sudo ./ctlscript.sh start apache
 $ sudo ./ctlscript.sh start mysql
 $ sudo ./ctlscript.sh start subversion
 $ sudo ./ctlscript.sh start redmine

 停止所有servers
 $ sudo ./ctlscript.sh stop

 只停止特定server
 $ sudo ./ctlscript.sh stop apache
 $ sudo ./ctlscript.sh stop mysql
 $ sudo ./ctlscript.sh stop subversion
 $ sudo ./ctlscript.sh stop redmine

如何啟用HTTPS

  1. 修改/opt/redmine-1.2.0-0/apache2/conf/httpd.conf

     $ sudo vi /opt/redmine-1.2.0-0/apache2/conf/httpd.conf
    
     載入SSL設定檔,找出這行:
     #Include conf/extra/httpd-ssl.conf
     註解拿掉:
     Include conf/extra/httpd-ssl.conf
    
     避免Redmine的資料被HTTP存取,找到這行:
     Include "/opt/redmine-1.1.3-1/apps/redmine/conf/redmine.conf"
     加上註解:
     #Include "/opt/redmine-1.1.3-1/apps/redmine/conf/redmine.conf"
    
  2. 產生SSL憑證

     $ sudo /opt/redmine-1.2.0-0/common/bin/openssl genrsa -des3 -passout pass:密碼 -out /opt/redmine-1.2.0-0/apache2/conf/privatekey.pem 1024
     $ sudo /opt/redmine-1.2.0-0/common/bin/openssl req -new -key /opt/redmine-1.2.0-0/apache2/conf/privatekey.pem -out /opt/redmine-1.2.0-0/apache2/conf/cert.csr
     設定憑證資訊,這些資訊知道的話就輸入,但大部分如果不知道要打什麼就直接按Enter留白,但記得輪到Common Name(CN)時一定要回答,不可以空白。
     $ sudo /opt/redmine-1.2.0-0/common/bin/openssl rsa -in /opt/redmine-1.2.0-0/apache2/conf/privatekey.pem -out /opt/redmine-1.2.0-0/apache2/conf/server.key
     $ sudo /opt/redmine-1.2.0-0/common/bin/openssl x509 -in /opt/redmine-1.2.0-0/apache2/conf/cert.csr -out /opt/redmine-1.2.0-0/apache2/conf/server.crt -req -signkey /opt/redmine-1.2.0-0/apache/conf/server.key -days 36500
     36500指憑證有效期100年,夠久了吧。
    
  3. 修改/opt/redmine-1.2.0-0/apache2/conf/extra/httpd-ssl.conf

     $ sudo vi /opt/redmine-1.2.0-0/apache2/conf/extra/httpd-ssl.conf
    
     確保所有Request都會使用HTTPS。找出以下區段:
     #   General setup for the virtual host
     DocumentRoot "/opt/redmine-1.2.0-0/apache2/htdocs"
     ServerName www.example.com:443
     ServerAdmin you@example.com
     ErrorLog "/opt/redmine-1.2.0-0/apache2/logs/error_log"
     TransferLog "/opt/redmine-1.2.0-0/apache2/logs/access_log"
     後面加上一行設定如下:
     #   General setup for the virtual host
     DocumentRoot "/opt/redmine-1.2.0-0/apache2/htdocs"
     ServerName you@example.com:443
     ServerAdmin you@example.com
     ErrorLog "/opt/redmine-1.2.0-0/apache2/logs/error_log"
     TransferLog "/opt/redmine-1.2.0-0/apache2/logs/access_log"
     RequestHeader set X_FORWARDED_PROTO 'https'
    
     設定server.csr與server.key,不過剛好我們產生憑證時已故意將憑證與金鑰產生在與設定檔裡的設定相同,所以就不用再改了。
    
     加上Redmine相關設定,讓Redmine的網頁可以使用HTTPS連入。找出以下區段:
     CustomLog "/opt/redmine-1.2.0-0/apache2/logs/ssl_request_log" \
               "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    
     </VirtualHost>
     加上一行如下:
     CustomLog "/opt/redmine-1.2.0-0/apache2/logs/ssl_request_log" \
               "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
     Include "/opt/redmine-1.2.0-0/apps/redmine/conf/redmine.conf"
     </VirtualHost>
    
  4. 重新啟動Apache

     $ sudo /opt/redmine-1.2.0-0/ctlscript.sh restart apache
    
  5. 以後改用https://<;redmine_server_ip>/redmine/取代http://<;redmine_server_ip>/redmine/,而且HTTP不能再用來連Redmine了。

如何設定真的可以用的EMAIL通知

安裝時候可以設定SMTP參數,但那僅限走不加密的SMTP Server可以在設定好直接使用,而且一般是走25埠。因為我們這次打算使用gmail來送信, Gmail使用TLS加密,埠號是587,不幸的是,BitNami安裝Redmine時並沒有把TLS相關的程式加進來,所以有些事還是要自己來。

  1. 安裝TLS Plugin

     $ cd /opt/redmine-1.2.0-0
     $ sudo ./use_redmine
     # cd apps/redmine
     # ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git
     Initialized empty Git repository in /opt/redmine-1.2.0-0/apps/redmine/vendor/plugins/action_mailer_optional_tls/.git/
     remote: Counting objects: 14, done.
     remote: Compressing objects: 100% (10/10), done.
     remote: Total 14 (delta 2), reused 10 (delta 2)
     Unpacking objects: 100% (14/14), done.
     From git://github.com/collectiveidea/action_mailer_optional_tls
    • branch HEAD -> FETCH_HEAD
  2. 編輯/opt/redmine-1.2.0-0/apps/redmine/config/email.yml,修改如下:

     production:

    delivery_method: :smtp
    smtp_settings:
    tls: true
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication: :plain
    user_name: "projectname.iisi.com.tw@gmail.com"
    password: "密碼"

     development:

    delivery_method: :smtp
    smtp_settings:
    tls: true
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication: :plain
    user_name: "projectname.iisi.com.tw@gmail.com"
    password: "密碼"

  3. 重新啟動

     $ sudo /opt/redmine-1.2.0-0/ctlscript.sh stop
     $ sudo /opt/redmine-1.2.0-0/ctlscript.sh start
    

如何設定Subversion

Subversion支援四種Protocols: http://,https://,svn://,svn+ssh://,因為我們只要用https://所以其他類型就先省略了

  1. 編輯/opt/redmine-1.2.0-0/apache2/conf/httpd.conf,加入Subversion模組

     $ sudo vi /opt/redmine-1.2.0-0/apache2/conf/httpd.conf
     跟apache說要載入svn相關模組,找出這兩行:
     #LoadModule dav_svn_module     modules/mod_dav_svn.so
     #LoadModule authz_svn_module   modules/mod_authz_svn.so
     把註解拿掉
     LoadModule dav_svn_module     modules/mod_dav_svn.so
     LoadModule authz_svn_module   modules/mod_authz_svn.so
    
  2. 建立Subversion Repository

因為BitNami使用的Subversion Apache Module需要特定版本的SQLite檔案,但安裝時沒有放進去,會造成新版的Subversion資料庫檔案寫入失敗,因此建立儲存庫時必須註明相容1.6以前的版本:

 $ sudo /opt/redmine-1.2.0-0/subversion/bin/svnadmin create --fs-type fsfs --pre-1.6-compatible /var/svn/repos/儲存庫名稱

由於BitNami啟動Apache時使用daemon使用者,所以必須把儲存庫下所有檔案與目錄的擁有者改為daemon,否則會有無法開啟或寫入檔案的問題:

 $ sudo chown -R daemon.daemon /var/svn/repos/儲存庫名稱
 $ sudo chown -R g+w /var/svn/repos/儲存庫名稱/db

備註:如果想要從舊得儲存庫把資料搬過來,還是要先以上面的步驟建立一個相容1.6版以前的新儲存庫,接著進行匯出跟匯入:

 於舊得儲存庫執行匯出:
 $ sudo svnadmin dump 舊儲存庫路徑 > repo.backup

 在新的儲存庫進行匯入:
 $ sudo svnadmin load /var/svn/repos/儲存庫名稱 < repo.backup
  1. 編輯/opt/redmine-1.2.0-0/apache2/conf/extra/httpd-ssl.conf

     $ sudo vi /opt/redmine-1.2.0-0/apache2/conf/extra/httpd-ssl.conf
    
     在<VirtualHost>的最後 部份再加上一行,如下:
     Include "/opt/redmine-1.2.0-0/apps/redmine/conf/redmine.conf"
     Include "conf/extra/httpd-svn.conf"
     </VirtualHost>
    
  2. 建立新檔/opt/redmine-1.2.0-0/apache2/conf/extra/httpd-svn.conf

     $ sudo vi /opt/redmine-1.2.0-0/apache2/conf/extra/httpd-svn.conf
    
     新增內容如下:
        <Location "/svn">

    DAV svn
    AuthType Basic
    SVNParentPath /var/svn/repos
    AuthName "Subversion Repository"
    AuthUserFile /var/svn/repos/auth.conf
    AuthzSVNAccessFile /var/svn/repos/access.conf
    require valid-user

        </Location>
    
  3. 建立/var/svn/repos/auth.conf

為每一位使用者建立密碼檔:

 $ sudo /opt/redmine-1.2.0-0/apache2/bin/htpasswd -m -n 使用者名稱 >> /var/svn/repos/auth.conf
 $ sudo chown -R daemon.daemon /var/svn/repos/auth.conf
  1. 建立/var/svn/repos/access.conf

     $ sudo vi /var/svn/repos/access.conf
     新增如下內容:
     [儲存庫名稱:/]
     使用者名稱 = rw
     ﹍﹍
    
     $ sudo chown -R daemon.daemon /var/svn/repos/access.conf
    
  2. 重新啟動Apache

     $ sudo /opt/redmine-1.2.0-0/ctlscript.sh restart apache
    

好了,就醬!

TShock配置文件的相关解释

TShock是Terraria官方服务器的一个补充,可以在github上找到其源码和二进制包,需要下载以后将所有文件拷贝到Terraria中进行覆盖,第一次运行后会生成一个名为tshock的文件夹,不要删除里面的任何东西。
要详细讲解的是config.json这个文件

{
"InvasionMultiplier": 1, //入侵几率(哥布林和雪人) 单位是%
"DefaultMaximumSpawns": 5, //最大刷怪量
"DefaultSpawnRate": 600, //刷怪速度 
"ServerPort": 7777, //端口
"EnableWhitelist": false, //开启白名单
"InfiniteInvasion": false, //开启会使入侵几率无效 会无限入侵
"PvPMode": "normal", //PVP模式 可以设置成"normal(普通)", "always(经常)", "disabled(关闭)"
"SpawnProtection": true, //出生点保护
"SpawnProtectionRadius": 10, //出生点保护距离
"MaxSlots": 8, //最大玩家数量
"RangeChecks": true, //不明意义
"DisableBuild": false, //无法建筑
"SuperAdminChatRGB": [ //管理员打字颜色 颜色代码跟创建人物时的一样
255.0,
0.0,
0.0
],
"SuperAdminChatPrefix": "(Admin) ", //管理员前缀
"SuperAdminChatSuffix": "", //管理员后缀。。。。。。
"BackupInterval": 0, //备份间隔 单位分钟
"BackupKeepFor": 60, //备份保留时间 单位分钟
"RememberLeavePos": false, //目测就是所有玩家退出后服务器会继续运行 false不会
"HardcoreOnly": false, //仅限高难度玩家(就是创建角色时选择的难度)
"MediumcoreOnly": false, //仅限中等难度 中等指死亡后死亡后所有物品掉落的
"KickOnMediumcoreDeath": false, //中等难度玩家死亡后被T出
"BanOnMediumcoreDeath": false, //中等难度玩家死亡后会被BAN
"AutoSave": true, //自动保存
"MaximumLoginAttempts": 3, //登录失败n次自动T出
"RconPassword": "", //不懂
"RconPort": 7777, //不懂
"ServerName": "", //服务器名
"MasterServer": "127.0.0.1", //IP
"StorageType": "sqlite", //数据库格式 默认就好
"MySqlHost": "localhost:3306", //没用
"MySqlDbName": "", //没用
"MySqlUsername": "", //没用
"MySqlPassword": "", //没用
"MediumcoreBanReason": "Death results in a ban", //中等难度玩家死亡后被T时的说明
"MediumcoreKickReason": "Death results in a kick",//中等难度玩家死亡后被BAN时的说明
"EnableDNSHostResolution": false, //可以使用DNS解析进入
"EnableIPBans": true, //开始IP BAN
"EnableBanOnUsernames": false, //开启用户名 BAN
"DefaultRegistrationGroupName": "default", //模式用户组名字
"DefaultGuestGroupName": "guest", //默认来宾用户组名字
"DisableSpewLogs": true, //貌似是不给玩家看日志
"HashAlgorithm": "sha512", //加密方式
"BufferPackets": true, //缓冲区的数据包并发送他们在每帧结束 意义不明
"ServerFullReason": "Server is full", //服务器满人时的提示
"ServerFullNoReservedReason": "Server is full. No reserved slots open.", //服务器满人时不给人进的原因
"SaveWorldOnCrash": true, //在有异常是自动保存
"EnableGeoIP": false, //有玩家加入时提示
"EnableTokenEndpointAuthentication": false, //开启/status 给任何人
"ServerNickname": "TShock Server", //在↑指令开启时适用
"RestApiEnabled": false, //不懂 
"RestApiPort": 7878, //不懂
"DisableTombstones": true, //没有墓碑
"DisplayIPToAdmins": false, //貌似是IP登录
"EnableInsecureTileFixes": true, //不懂 貌似会让砖变样子
"KickProxyUsers": true, //T出使用代理的玩家
"DisableHardmode": false, //高难度模式关闭
"DisableDungeonGuardian": false, //关闭地牢守卫
"ServerSideInventory": false, //人物的数据保存在服务器上
"DisablePlayerCountReporting": false, //禁用统计系统
"DisableClownBombs": false, //禁止小丑在出生点放炸弹
"DisableSnowBalls": false, //在出生地没有雪球?
"ChatFormat": "{1}{2}{3}: {4}", //改变游戏内聊天格式,{ 0 } =组名,{ 1 } =组前缀,{ 2 } =玩家名字,{ 3 } =组后缀,{ 4 } =聊天消息 
"ForceTime": "normal", //使时间正常
"TileKillThreshold": 60, //不懂
"TilePlaceThreshold": 20, //不懂
"TileLiquidThreshold": 15, //不懂
"ProjectileThreshold": 50, //不懂
"RequireLogin": false, //必须登陆
"DisableInvisPvP": false, //禁止隐形药剂用于PVP
"MaxRangeForDisabled": 10, //貌似是体力值什么的 不懂
"ServerPassword": "", //服务器密码
"RegionProtectChests": false, //建筑权限之内的
"DisableLoginBeforeJoin": false, //开启登陆前输入密码
"AllowRegisterAnyUsername": false, //可以用任何用户名注册
"AllowLoginAnyUsername": true //可以使用任何用户名登陆
}

Minecraft的存档保存路径

As the Minepedia mentions, your save files are in:

~/Library/Application Support/minecraft/saves/

请注意在终端下应该转义空格:

~/Library/Application\ Support/minecraft/saves/

If you were running Linux, it'd just be:

~/.minecraft/saves

If you were running Windows, instead, it'd be:

%APPDATA%\.minecraft\saves\

In all cases, you can reach the correct folder easily with your file manager of choice using this little trickery:

Start Minecraft
Choose "Mods and Texture packs"
Choose "Open texture pack folder"
Go up a level
Open the saves directory.