github 替代

现在喜欢上了git,还是不错的嘛,github现在国内也可以用了,速度很快。但是它的收费可就不便宜了,5个私人仓库要7美刀每月。组织用户起步价是25美刀每月。

 

这里介绍几个替代方案:

 

https://codeplane.com/

九美刀每月,就这一种价格

 

https://unfuddle.com/tour 

 

 

http://repositoryhosting.com

Unlimited Repositories

Unlimited Trac Projects

Unlimited Users

Custom Domains

Agile Workflows

SSL Secured

WebDAV Shared Drives

Scheduled Backups

2GB Storage

$1/GB Additional Storage

 

 

 

 

 

 

 

 

 

 

 

支持svn,git,hg 这个站似乎很简单,靠谱么?

 

 

最后是 https://bitbucket.org

这个是免费的(5个合作者),之所以这么优惠的东东放在最后,是因为我之前用它还是蛮痛苦的,为什么呢,速度非常慢,提交个2k的东西要几分钟,甚至超时,连它的web界面也经常登陆不了。不过最近似乎有所改善,而且支持git,难道被github刺痛了?

 

这个还得保留观察一下。

Continue reading github 替代

heroku使用笔记

 

这两天将一个项目转到了heroku上面,哎呀我的个神,真心不好用:

 

Java:

https://devcenter.heroku.com/articles/java-support

默认不支持mysql而是支持protress,但是可用addon--cleardb来集成mysql,cleardb也有免费的级别。

但是即使是免费级别,必须要通过身份验证,也就是验证你的信用卡,否则无法添加addon。

 

http://www.ibm.com/developerworks/cn/java/j-javadev2-21/

maven不是必需的,可以直接发布war包 https://devcenter.heroku.com/articles/war-deployment

 

eclipse插件安装:

https://devcenter.heroku.com/articles/getting-started-with-heroku-eclipse

这个安装总是报错,尝试几次才成功,要看人品了。有了这个才差不多,否则那个控制台工具真不好用。

 

不存在永久的文件系统

https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem

http://stackoverflow.com/questions/12123050/no-permanent-filesystem-for-heroku

只能两个可写文件夹https://devcenter.heroku.com/articles/read-only-filesystem

./tmp ./log

 

servletContext.getRealPath();返回null问题,这是因为使用的webrunner跑的是未展开的war包。

解决办法是:

pom里面配置为展开war文件夹:

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.2</version>
				<executions>
				  <execution>
				    <phase>package</phase>
				    <goals><goal>exploded</goal></goals>
				    <configuration>
				      <webappDirectory>${build.directory}/webapp</webappDirectory>
				    </configuration>
				  </execution>
				</executions>				
			</plugin>

然后在Procfile里面指定webruner的目标(procfile是heroku添加参数的方法):

web: java $JAVA_OPTS -Dspring.profiles.active=prod -Dmidware.path.conf="distributed" -jar target/dependency/webapp-runner.jar --port $PORT target/webapp

 

这其实就是配置webrunner跑文件夹。

注:procfile的注释也是#号。

这样就可以得到webapp运行目录了,而且,此目录下的文件也是可写的!

但是要注意保持这个概念,都是临时性的文件系统,你用的时候要考虑这一点。

 

这里面讲了大部分问题:

https://devcenter.heroku.com/articles/java-faq

是直接发布war包还是用maven+嵌入的容器?

后者更容易发布,修改代码后直接构建测试,和heroku环境更接近。

而且源码方式更容易改配置,对于开发来说,每次改一个文件要传半天是很麻烦的。

项目目录下有个Procfile文件,heroku会依据其来启动,你可以修改它来添加系统参数。

https://devcenter.heroku.com/articles/procfile#deploying-to-heroku

本地运行可参见项目下的readme.md

例如:$java -jar target/dependency/webapp-runner.jar target/*.war

这个使用的jsimone项目,可在eclipse里面调试:

https://github.com/jsimone/webapp-runner

添加引用:

<dependency> 

 <groupId>com.github.jsimone</groupId> 

 <artifactId>webapp-runner</artifactId> 

 <version>7.0.34.1</version> 

 <scope>provided</scope> 

</dependency> 

运行配置:

Right-click on your project and choose 'Debug As -> Debug Configurations...'

From the 'Debug Configuration' window create a new 'Java Application' launch configuration by double-clicking on 'Java Application' in the left hand list or right-clicking on it and selecting 'New' 类型为java工程

Give your launch configuration a sensible name. Then enter the name of your project in the 'Project' box

Enter 'webapp.runner.launch.Main' in the 'Main Class' box 启动类为webapp.runner.launch.Main;--path /abc --port 10080 (--path是指context)

java -jar target/dependency/webapp-runner.jar --help 参见所有参数

Click on the 'Arguments' tab and enter './src/main/webapp' in the 'Program Arguments' box 添加程序参数./src/main/webapp

Click 'Apply' and then 'Run'

 

需要注意的几点:

1:tomcat7较高版本有自带的servletapi依赖,如果你配置了自己的servletapi则可能造成冲突,例如报错:

java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig

说明你配置的servletapi版本太低。这就需要将你配置的servletapi去掉而依赖jsimone的包。在打包时这个不应该包含在包中,因为实际环境的容器都应该有自己的servlet包。

 

由于是分布式结构,不存在任何共享数据(数据库,memcache这些是另外的概念除外),所以实例之间的线程是互不可见的。

 

mysql:cleardb:

怎样查看信息,远程连接:

http://stackoverflow.com/questions/9822313/remote-connect-to-cleardb-heroku-database

运行heroku config --app 你app的名字就可看到信息。

通过此信息可以远程连接,例如heidisql可直接连,但是官方推荐的是用ssl连接:

https://devcenter.heroku.com/articles/cleardb#using-ssl-with-cleardb-and-rails

默认的cleardb信息是在环境变量里的,可以依据此变量来,

https://devcenter.heroku.com/articles/cleardb#using-cleardb-in-a-play-framework-app

当然你可以copy出变量信息直接用在程序中。

 

 

 

这里吐槽一下,那个自带的工具真是垃圾,不能粘贴,不能复制,有时还显示错行,powercommand里面怎么也运行不正确,所以还是eclipse插件靠谱。

例如查看程序信息,可得到cleardb的参数:

Snap1

 

可导入已存在项目,也可以创建项目,提交到git上后heroku会自动重启。

可直接通过console查看日志,很方便。

 

 

再来吐槽一下它的客服:

慢!问了个问题24小时之后才得到回复,而且由于是java相关问题,他又转到了编程人员,这样第三天才得到回复。

 

它的GIT经常访问不了,理由你懂得. http://ruby-china.org/topics/10813

    Continue reading heroku使用笔记

    Freemarker 笔记

    几点实用的:

     

    转义$的写法:

    <div class="span${'$'}{span}">

     

    则最终输出为

    <div class="dashboard-item span${span}">

     

     

    安全判断是否为空

    <#if (a.b.c.d)??>hi</#if>

    这样即使a都不存在也不会报错。

    Continue reading Freemarker 笔记

    【转】office 启动总是配置 解决办法

    (改注册表的办法是生效的,其他没试验,应该也有效)

    解决方法: 1. 注册  如若是Office 2003的对应问题,在运行对话框中输入: reg add HKCU\Software\Microsoft\Office\11.0\Word\Options /v NoReReg /t REG_DWORD /d 1 回车即可  若是Office 2007的对应问题,在运行对话框中输入: reg add HKCU\Software\Microsoft\Office\12.0\Word\Options /v NoReReg /t REG_DWORD /d 1 回车即可 

    2. 改文件,也最简单  打开“我的电脑”——“C盘”——“Program Files\Common Files\Microsoft Shared\OFFICE12\Office Setup Controller”——找到一个“SETUP.EXE”的文件,对此文件重命名  3. 改注册表  开始-》运行-》输入regedit-》打开注册列表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Classes,右键—》权限—》高级,选下面第二张图中第二个选项CREATOR OWNER ,点编辑,在完全控制,允许那边打钩!确定!这时可能防火墙会跳出警告,你点放过,重启,OK!解决问题!

     

    注册表测试可用

    Continue reading 【转】office 启动总是配置 解决办法

    Soundmanager2 使用

    Soundmanager2目前比较流行,功能也比较强大。主页 http://www.schillmania.com/projects/soundmanager2/

     

    其文档很详细,主要需要两个文件soundmanager2-jsmin.js

    如果使用falsh则需要指明flash路径:

    soundManager.setup({
    	  url: '/js/soundmanager2/swf/'
    	});

    例如想播放某个声音:

    soundManager.onready(function() {
    					alertsms = soundManager.createSound({
    								id : 'alert', // required
    								url : '/assets/j/alert.mp3'
    							});
    				});

     

    这里创建了一个alertsms对象(Sound Object),那么可对此对象进行播放暂停等动作。

     

    另外一种用途是整个页面上的音乐资源自动渲染成播放器,这个在其文档中有demo:

    demo/mp3-player-button/index.html 就是比较酷的例子,基于html5:

    能显示音乐下载进度以及播放帧,使用也很简单,需要引用

    <link rel="stylesheet" type="text/css" href="360player.css" />

    <script type="text/javascript" src="script/berniecode-animator.js"></script>

    <script type="text/javascript" src="script/360player.js"></script>

    然后需要css对应的图片(在demo文件夹中)

     

    html代码中只需要这样的结构:

    <div class="ui360">
     <a href="/path/to/an.mp3">play "an.mp3"</a>
    </div>

    注意是以扩展名来分析类型的。

    脚本中仍然需要设置好soundmanager。

     

    这样就可以了,参看效果:

    Snap1

    Continue reading Soundmanager2 使用

    win7,windows was unable to connect to this network问题

    换了个联通的无线网络环境,ipod和android都可以连上去,win7找得到网络,但是点击连接后,密码都没让输就报错:windows was unable to connect to this network.

     

    这种问题可通过手动创建连接来解决:

    打开网络与共享中心/添加一连接或网络/手动连接到无线网络,然后输入连接信息,成功。

    Continue reading win7,windows was unable to connect to this network问题

    乐理基础

    电子琴资源:http://bbs.cndzq.com/forum.php

     

    大叔级菜鸟弹琴课程:http://www.pianohome.com

     

    这个课程不错,遇到不懂的问题可以看看:

    http://www.ccnt.com.cn/music/huod/yykt/ketang.htm?file=1

     

    当你觉得自己的手指太短了的时候,往往是你的指法有问题,快看曲谱,(说实话我的手指确实比较短)。

     

    和弦转位:根音与三音五音并不是上下关系,而是音程关系。

    Continue reading 乐理基础

    rapheal 与 d3.js 以及svg以及android 内置浏览器

    目前似乎d3比较火,细想一下,我觉得是其在android浏览器上兼容性上占优势,为什么呢?

     

    原来android4.0之前的内置浏览器居然不是chrome,他们只是共享了些代码,具体是叫什么内核,我是没找到。参见 https://developers.google.com/chrome/mobile/docs/overview

     

    而糟糕的是此浏览器居然不支持svg而只支持canvas。所以d3这方面就能兼容了。

     

    在ios 是safari,那是自然支持svg得了,参见这里可看到svg支持表:http://caniuse.com/#search=svg .

     

    那么你想找到一种支持所有主流浏览器的绘图方案还居然是不可能的,rapheal使用svg,vxml,但是它不能兼容andriod4.0之前的版本,你说这个android可恨不可恨。

     

     

     

    参见:

    http://coding.smashingmagazine.com/2012/02/22/web-drawing-throwdown-paper-processing-raphael/

    http://stackoverflow.com/questions/8985682/svg-support-on-android-current-status

    Continue reading rapheal 与 d3.js 以及svg以及android 内置浏览器

    Godaddy域名被误删的经历

    原来的域名ig2net.info和ig2net.com被我误删了! 其原因是godaddy那误导性的界面还有我的手贱!

     

    本来我是买了两年的一直到2015年,花了50刀,当看到信用卡上已经出了账单时我以为已经购买成功,因此为安全原因就想把我的信用卡信息从godaddy上删掉。删的过程中,godaddy提示有两个item被绑定(ig2net.info和ig2net.com),我当时想款都已经付了,应该没问题吧。结果就点了确认,居然没有出错,居然就这样删了。结果就是ig2net.info和ig2net.com域名被删。我的博客马上就访问不了。

     

    一身冷汗!赶紧找Godaddy客服,不好意思没有在线客服,除非你打电话直接联系,发了邮件说是18小时内回复,其实是第二天快24小时候才回个邮件说可以从domain可以恢复:

     

    1. Log in to your Account Manager. 登陆godaddy账户
    2. Next to Domains, click Launch. 点击Domains,点击Launch
    3. From the Domains menu, select Recover Expired Domains. 从Domains菜单中选择Recover Expired Domains
    4. Select the domain name(s) you want to recover. 选择你想恢复的域名
    5. Click Recover. 点击Recover
    6. Select the renewal length for the domain name(s), and then click Next.

      NOTE: Renewal lengths for multiple domain names can vary depending on maximum renewal lengths allowed by each domain name registry.

    7. (Optional) Select the registration and website options you want to apply to your domain name renewals.
    8. Click Next, and then complete the checkout process.

    一路下来居然要我300美刀,有没有搞错啊!什么附加项目也没选,居然要这么多。

    再联系客服,还是一天后回复:

     


    Days after expirationAction
    Day 1We make the first of three billing attempts to renew the domain name. If the billing fails, the domain name expires. The domain name can be renewed by the registrant at no extra cost.
    Day 5We make the second billing attempt. If the billing fails again, the domain name is parked. The domain name can still be renewed by the registrant at no extra cost.
    Day 12We make the third and final attempt to renew the domain name. The domain name can still be renewable by the registrant at no extra cost.
    Day 19
    The domain name can be renewed by the registrant for the cost of a one-year renewal plus an $80.00 redemption fee.
    Day 26We add the domain name to an expired domain name auction.
    Day 36The expired domain name auction ends. If there are no backorders and no bidders in the expired domain name auction, we list the domain name in a closeout auction.
    Day 41The closeout auction ends.
    Day 43We assign the domain name to the winner of the expired domain name auction, backorder, or closeout. If there are no bidders, we return the domain name to the registry.


    我还是不明白,明明还没过期,怎么就到Day19了?

    然后再看看Recovery,居然要我500刀,有没有搞错!

     

    看来恢复无望,看能不能把钱要回来。再问客服,还是一天后恢复:

    可以,要回复此邮件我们将退款给你。

     

    这还差不多,不至于域、财两空。

     

    只好再从name.com买了个域名kazge.com。

     

    godaddy用了几年了,界面真是烂,一点也不fashion. 客服反映慢,邮件都是一天后才回复,我明明是他给我邮件后马上回复的。

    不过它支持支付宝这点对国内来说还是比较方便的。

     

    name.com是别人推荐的,目前用起来还没什么问题。不过传说的whois免费是没碰到的。

     

    买域名要想能自动renew,那还得信用卡。否则,到时再续费就行了。

     

     

    换了域名,原来许多文章指向站内链接也需要换,这片文章介绍了个插件Velvet Blues Update URLs

    http://www.wpdaxue.com/wordpress-change-domain-update-urls.html

    还行,但是不能更新评论中的链接。

    Continue reading Godaddy域名被误删的经历

    HttpClient ssl 无验证

    今天发现httpclient完全是个版本帝,前段时间刚刚从升级到4.o,丢弃曾经熟悉的使用结构。这次升级到4.2后里面又一堆方法被丢弃了。

    看着写的类一堆黄行行,心里确实不舒服,这里干个时髦。

     

    Httpclient创建ssl无验证的工厂代码:

    name="code" class="java:showcolumns">public static HttpClient getHttpClient() { if (httpClient != null) return httpClient;

    Continue reading HttpClient ssl 无验证

    Pagination


    Total views.

    © 2013 - 2019. All rights reserved.

    Powered by Hydejack v6.6.1