今天把博客从3.2.1升级到了3.4.1,虽然不是什么最新版本但也算是我自从在sinaapp上安装wordpress以来第一次更新程序。
我对html和css并不怎么熟,只是想找个空间写写博客,选sinaapp也不过是图新浪名气大,稳定性应该不会太差,而且新浪云空间费用不高,还可以为以后做云上(这里特指PaaS)留点经验。国外的云空间普遍存在墙的问题,配置cdn在我看来也是件麻烦的事情,所以也就在这里安家落户,装个wordpress了事。

这几天虽然因为工作忙,没怎么更新博客,但并不代表不关注,其实我还是默默的在背后干了很多事情的,比如在新网申请了一个cn顶级域名,但是马上就发现不该买,原因太简单了,备案。备案这个事情我倒是也做过,很久以前在做论坛的时候,那时候是在某家代理商申的域名,当时申备案还比较容易,只要把资料填得差不多,提交上去就OK了,而现在……

所以买了这个域名但迟迟没有投入使用,也就这么先拿二级域名挂着……

再有是把内容导出了,打算搬家到点点。点点是几次无意中在Google东西时才知道的网站,做轻博客的,类似于Tumbler,轻博客这个概念还是比较火的,但大意无非还是微博+长博结合在一起。在我看来,微博是有存在的意义,人嘛,偶尔总想找个地方吐吐槽,叨叨两句,这个时候发到长博客略显不合适,和长篇的技术的或生活的或思考的文章混在一起,多变扭啊,所以轻博客这类我并不怎么感兴趣,甚至宁愿在博客里开个状态栏专门放微博(像QQ空间那样,虽然说着挺恶的,但是确实是这个意思)但是点点比较吸引我的是博客可以互相加关注,虽然说这个和百度空间没区别,但是在百度空间开的空间,一来域名上难看二来不够自由,所以我才放弃了维护近两三年的百度空间,至于点点,继承了百度的优点——我可以关注别人的站点,查看他们的更新,而且简单快捷省心;又避开了百度的缺点——域名上好看还可以绑定顶级域名,至于自由度么,国内现在的空间我只能说声呵呵……

据说文章的重点往往在但是之后,那么下面就是重点了:我尝试了N+M次的博客搬家但是都失败了,给点点博客的私信了两次也没回音,正如上面所说的,我对html和css不算一窍不通但也差不多,所以看了几下从wordpress导出的那个400+kb的文件也没看出个头绪来,这种搬家不成的不爽加上感觉点点博客设置的不自由最终让我还是打消了搬家的念头,嗯,如果不是点点的不给力,也许你现在看到的这篇文章网址已经变成diandian.com结尾了……

再说说升级博客程序吧,其实3.4.1早就出来了,现在貌似都3.6了,但是sae上跑的程序并不能直接照搬一般LAMP环境大家都知道,自己改程序不一定会出什么鸟事呢,何况我对php也不熟,所以只能等wp4sae这边更新,不过这边虽然3.4.1已经出了很久了,但是我3.2也一直用的好好的啊,何苦升级呢,我这人一向是要把麻烦排除在萌芽阶段的,但是前几天看着以前装的主题是在有些审美疲劳了,Twenty Ten虽好但也抵不住我看了一年了,所以决心换个主题,刚好看到一篇文章推荐Contango,自己看着也挺好,现代风格,清新简单,OK,就他了,sae版的wordpress不能直接在线安装主题,我就下下来,上sae后台传上去,在设置主题,结果,侧边全悲剧了,看了下出错的代码也没什么头绪,Google之,网上早有人碰到过这个问题,原来是wp3.4的文件组织改了,主题是面向新版本的,老版本自然被无情的抛弃了。

依我凡事烦则去之,易则取之的性格,我一看原来和程序版本还有关系,心里就打开退堂鼓了,这么麻烦,要么不换这个主题了,万一升级时候再出点什么事呢,而且插件也不一定好搞,现在工作这么忙哪有闲情逸致在这儿研究WordPress组织,SAE架构……既然看Twenty Ten看烦了那换成那个Twenty Eleven好了,简单省事。于是把主题换成那个了Twenty Eleven。

可是俗话说得好,人是会有执念的……即使换了Eleven,Contango还是在我脑海萦绕挥之不去,嗯,Contango啊,页面布局非常清晰,还有立体感,绿色调调主题看着还养眼,背景是个拟亚麻布材质,看着舒服……反正怎么都念着Contango的好。最终受不了了,升级博客版本吧,反正 wordpress for sae 人家都做好新版本了,应该不会有问题吧……

升级这个博客其实非常简单,只不过以前没弄过而已罢了,我电脑刚重装完,连git都没有,更别提svn了,所以就直接在后台新建了一个版本,下下来新版本的代码,往里面加个主题,填点别的东西,然后重新打包,往上一传,访问版本2的情况,一看基本没问题,就切换了默认版本,然后嫌占地方就把版本1删了。

不过说没问题也不对,那就是插件。上个版本自带了codebox和无觅,无觅对我来说也就是玩玩,可codebox可就影响重大了,毕竟博客上的代码可都靠这个插件来给我着色呢,现在可到好,全程白底黑字了。不过根据之前看的一些文章,似乎很多人都建议不要用着色插件,毕竟不利于博客搬家啊什么的,但是很久以前用的代码发芽弄出来的代码真心感觉不是很好看啊,差我sublime渲染出来的太多了,所以不愿意用,至于codebox虽然也也不怎么好看但胜在方便,于是以前就这样了,现在可要改了,稍稍挑了一下,准备用CodeRenderUnmi,虽然支持的语言不算多,但效果还是不错的,跟博客主题也挺搭,如果用到别的语言,就再拿代码发芽凑乎吧,或者以后再搞别的。

关于CodeRenderUnmi配置,主要参考了这篇文章

下面试试效果(这个是用Matplotlib做了一个二级摆的演示动画),以后再把以前的代码的高亮改了吧。

  1. “””  
  2. general numerical solver for the 1d time-dependent schrodinger’s equation.  
  3.  
  4. adapted from code at http://matplotlib.sourceforge.net/examples/animation/double_pendulum_animated.py  
  5.  
  6. double pendulum formula translated from the c code at  
  7. http://www.physics.usyd.edu.au/~wheat/dpend_html/solve_dpend.c  
  8.  
  9. author: jake vanderplas  
  10. email: vanderplas@astro.washington.edu  
  11. website: http://jakevdp.github.com  
  12. license: bsd  
  13. please feel free to use and modify this, but keep the above information. thanks!  
  14. “””  
  15.   
  16. from numpy import sin, cos   
  17. import numpy as np   
  18. import matplotlib.pyplot as plt   
  19. import scipy.integrate as integrate   
  20. import matplotlib.animation as animation   
  21.   
  22. class doublependulum:   
  23.     “””double pendulum class
  24.  
  25.     init_state is [theta1, omega1, theta2, omega2] in degrees,  
  26.     where theta1, omega1 is the angular position and velocity of the first  
  27.     pendulum arm, and theta2, omega2 is that of the second pendulum arm  
  28.     “””  
  29.     def __init__(self,   
  30.                  init_state = [120, 0, -20, 0],   
  31.                  l1=1.0,  # length of pendulum 1 in m   
  32.                  l2=1.0,  # length of pendulum 2 in m   
  33.                  m1=1.0,  # mass of pendulum 1 in kg   
  34.                  m2=1.0,  # mass of pendulum 2 in kg   
  35.                  g=9.8,  # acceleration due to gravity, in m/s^2   
  36.                  origin=(0, 0)):    
  37.         self.init_state = np.asarray(init_state, dtype=’float‘)   
  38.         self.params = (l1, l2, m1, m2, g)   
  39.         self.origin = origin   
  40.         self.time_elapsed = 0   
  41.   
  42.         self.state = self.init_state * np.pi / 180.   
  43.        
  44.     def position(self):   
  45.         “””compute the current x,y positions of the pendulum arms”””  
  46.         (l1, l2, m1, m2, g) = self.params   
  47.   
  48.         x = np.cumsum([self.origin[0],   
  49.                        l1 * sin(self.state[0]),   
  50.                        l2 * sin(self.state[2])])   
  51.         y = np.cumsum([self.origin[1],   
  52.                        -l1 * cos(self.state[0]),   
  53.                        -l2 * cos(self.state[2])])   
  54.         return (x, y)   
  55.   
  56.     def energy(self):   
  57.         “””compute the energy of the current state”””  
  58.         (l1, l2, m1, m2, g) = self.params   
  59.   
  60.         x = np.cumsum([l1 * sin(self.state[0]),   
  61.                        l2 * sin(self.state[2])])   
  62.         y = np.cumsum([-l1 * cos(self.state[0]),   
  63.                        -l2 * cos(self.state[2])])   
  64.         vx = np.cumsum([l1 * self.state[1] * cos(self.state[0]),   
  65.                         l2 * self.state[3] * cos(self.state[2])])   
  66.         vy = np.cumsum([l1 * self.state[1] * sin(self.state[0]),   
  67.                         l2 * self.state[3] * sin(self.state[2])])   
  68.   
  69.         u = g * (m1 * y[0] + m2 * y[1])   
  70.         k = 0.5 * (m1 * np.dot(vx, vx) + m2 * np.dot(vy, vy))   
  71.   
  72.         return u + k   
  73.   
  74.     def dstate_dt(self, state, t):   
  75.         “””compute the derivative of the given state”””  
  76.         (m1, m2, l1, l2, g) = self.params   
  77.   
  78.         dydx = np.zeros_like(state)   
  79.         dydx[0] = state[1]   
  80.         dydx[2] = state[3]   
  81.   
  82.         cos_delta = cos(state[2] - state[0])   
  83.         sin_delta = sin(state[2] - state[0])   
  84.   
  85.         den1 = (m1 + m2) * l1 - m2 * l1 * cos_delta * cos_delta   
  86.         dydx[1] = (m2 * l1 * state[1] * state[1] * sin_delta * cos_delta   
  87.                    + m2 * g * sin(state[2]) * cos_delta   
  88.                    + m2 * l2 * state[3] * state[3] * sin_delta   
  89.                    - (m1 + m2) * g * sin(state[0])) / den1   
  90.   
  91.         den2 = (l2 / l1) * den1   
  92.         dydx[3] = (-m2 * l2 * state[3] * state[3] * sin_delta * cos_delta   
  93.                    + (m1 + m2) * g * sin(state[0]) * cos_delta   
  94.                    - (m1 + m2) * l1 * state[1] * state[1] * sin_delta   
  95.                    - (m1 + m2) * g * sin(state[2])) / den2   
  96.            
  97.         return dydx   
  98.   
  99.     def step(self, dt):   
  100.         “””execute one time step of length dt and update state”””  
  101.         self.state = integrate.odeint(self.dstate_dt, self.state, [0, dt])[1]   
  102.         self.time_elapsed += dt   
  103.   
  104. #————————————————————   
  105. # set up initial state and global variables   
  106. pendulum = doublependulum([180., 0.0, -20., 0.0])   
  107. dt = 1./30 # 30 fps   
  108.   
  109. #————————————————————   
  110. # set up figure and animation   
  111. fig = plt.figure()   
  112. ax = fig.add_subplot(111, aspect=’equal’, autoscale_on=false,   
  113.                      xlim=(-2, 2), ylim=(-2, 2))   
  114. ax.grid()   
  115.   
  116. line, = ax.plot([], [], ‘o-’, lw=2)   
  117. time_text = ax.text(0.02, 0.95, ”, transform=ax.transaxes)   
  118. energy_text = ax.text(0.02, 0.90, ”, transform=ax.transaxes)   
  119.   
  120. def init():   
  121.     “””initialize animation”””  
  122.     line.set_data([], [])   
  123.     time_text.set_text(”)   
  124.     energy_text.set_text(”)   
  125.     return line, time_text, energy_text   
  126.   
  127. def animate(i):   
  128.     “””perform animation step”””  
  129.     global pendulum, dt   
  130.     pendulum.step(dt)   
  131.        
  132.     line.set_data(*pendulum.position())   
  133.     time_text.set_text(‘time = %.1f’ % pendulum.time_elapsed)   
  134.     energy_text.set_text(‘energy = %.3f j’ % pendulum.energy())   
  135.     return line, time_text, energy_text   
  136.   
  137. # choose the interval based on dt and the time to animate one step   
  138. from time import time  
  139. t0 = time()   
  140. animate(0)   
  141. t1 = time()   
  142. interval = 1000 * dt - (t1 - t0)   
  143.   
  144. ani = animation.funcanimation(fig, animate, frames=200,   
  145.                               interval=interval, blit=true, init_func=init)   
  146.   
  147. # save the animation as an mp4.  this requires ffmpeg or mencoder to be   
  148. # installed.  the extra_args ensure that the x264 codec is used, so that   
  149. # the video can be embedded in html5.  you may need to adjust this for   
  150. # your system: for more information, see   
  151. # http://matplotlib.sourceforge.net/api/animation_api.html   
  152. #ani.save(‘double_pendulum.mp4′, fps=30, extra_args=['-vcodec', 'libx264'])   
  153.   
  154. plt.show()   

 

差点忘了,今天还心血来潮打开了gzip,现在博客首页压缩整个不过30kb,hoho~

One Thought on “最近的博客

  1. 话说用CodeRender转换完标签都是大写,想正常用还得转换成小写……

Post Navigation