化石原创文章,转载请注明来源并保留原文链接


刚刚嵌入过Three.js,我们又来镶嵌Babylon.js。话说当年玩具型的小东西,几年不看都长这么大了。还具备了编辑器,而且同时支持在线和桌面(虽然今天跑桌面遇到问题,还没解掉)。文档也很丰富。真是不能小觑了。当年的Unity3d,不也曾经是玩具吗?

 
   
   
  

在WordPress里面内嵌类似Babylon.js,或者Three.js,只要使用WordPress的Custom HTML块即可(我使用的是Block编辑方式)。比如,上面的3D场景显示的代码,就是一段用<pre></pre>包起来的自定义html代码。全部代码(在一个Custom HTML中)如下:

<pre> 
  <canvas id="renderCanvas" width="640" height="480"></canvas> 
  <script src="https://cdn.bootcss.com/babylonjs/4.0.3/babylon.js"></script> 
  <script> 
  // Get the canvas DOM element
var canvas = document.getElementById('renderCanvas');
// Load the 3D engine
var engine = new BABYLON.Engine(canvas, true, {preserveDrawingBuffer: true, stencil: true});
// CreateScene function that creates and return the scene
var createScene = function(){
    // Create a basic BJS Scene object
    var scene = new BABYLON.Scene(engine);
    // Create a FreeCamera, and set its position to {x: 0, y: 5, z: -10}
    var camera = new BABYLON.FreeCamera('camera1', new BABYLON.Vector3(0, 5, -10), scene);
    // Target the camera to scene origin
    camera.setTarget(BABYLON.Vector3.Zero());
    // Attach the camera to the canvas
    camera.attachControl(canvas, false);
    // Create a basic light, aiming 0, 1, 0 - meaning, to the sky
    var light = new BABYLON.HemisphericLight('light1', new BABYLON.Vector3(0, 1, 0), scene);
    // Create a built-in "sphere" shape; its constructor takes 6 params: name, segment, diameter, scene, updatable, sideOrientation
    var sphere = BABYLON.Mesh.CreateSphere('sphere1', 16, 2, scene, false, BABYLON.Mesh.FRONTSIDE);
    // Move the sphere upward 1/2 of its height
    sphere.position.y = 1;
    // Create a built-in "ground" shape; its constructor takes 6 params : name, width, height, subdivision, scene, updatable
    var ground = BABYLON.Mesh.CreateGround('ground1', 6, 6, 2, scene, false);
    // Return the created scene
    return scene;
}
// call the createScene function
var scene = createScene();
// run the render loop
engine.runRenderLoop(function(){
    scene.render();
});
// the canvas/window resize event handler
window.addEventListener('resize', function(){
    engine.resize();
});
  </script>
</pre>

注:上面的3D场景可以通过鼠标控制转动。


化石原创文章,转载请注明来源并保留原文链接



化石原创文章,转载请注明来源并保留原文链接


突然想在WordPress的Post里嵌入WebGL的内容。探索一番后有了下面的结果。下面的WebGL内容显示了一个彩色立方体的显示,用到了gl-matrix.js库(感谢bootcss.com的cdn)。有了这个基础后我们以后就可以在博客里镶嵌webgl内容了,谁叫webgl现在这么方便呢。


  




化石原创文章,转载请注明来源并保留原文链接



化石原创文章,转载请注明来源并保留原文链接


刚建这个博客站的时候写过一篇文章,那时遇到的问题是,wordpress站建好以后,只要改动后台的permanentlinks的结构后。点击任何文章的头出现的url都是不正确的,会出现url not found错误。这篇文章在这里:

原来的文章

当时的确用一种方式解决了该问题,不过每次看到浏览器中的index.php总是心里不爽,所以有时间再次捋了一下网上的一些文章,尝试了后,发现在原来的基础上,再加上这里的一个小小改动就能彻底解决问题。

这个方式就是:改动apache的设置。具体如下:

  1. 进入 /etc/httpd/conf/httpd.conf.
  2. 改动 AllowOverride None 到 AllowOverride All.
  3. systemctl restart httpd.

这个文件里面,我总共为此问题改了3个地方,分别在Directory /段里,Directory /var/www段里,Directory /var/www/html段里。


化石原创文章,转载请注明来源并保留原文链接



化石原创文章,转载请注明来源并保留原文链接


WordPress后台修改帖子的Permalinks的格式(也就是我们在浏览器上看到的每个帖子的url的格式)。在我使用的版本中,第一个选项是PlainText,使用这种方式,随便找一个帖子测试,都没有什么问题。但是该其他的格式,无论是复杂的使用年、月、日、小时、分,还是简单的仅用一个帖子id,都不能成功,显示使用这个url访问不到内容(The requested URL was not found on this server)。

搜索了一下,大致明白了可以通过apache的.htaccess文件解决这个问题。于是在服务器的WordPress所在的目录下,创建了一个.htaccess文件,并且通过

chmod 666 .htaccess

命令把这个文件的写权限打开(我用的是centos 7)。然后通过linux命令

systemctl restart httpd

重新启动了apache服务器。

再次进入Word Press后台,尝试新的Permalinks方案,保存后用帖子测试。还是不行。后来无意中在stackoverflow上看到了一个解决方案:把后台生成的自定义链接的最前面加上index.php就可以了,大致如下:

/index.php/%year%/%monthnum%/%day%/%hour%/%post_id%/

最后生成的帖子url就会差不多是这个样子:

https://mysite.com/index.php/2019/05/22/06/6/

我估摸着大多数人可能通过放入一个.htaccess文件就能解决我这里遇到的问题。所以这里记录的方法,算是给有缘人吧。


化石原创文章,转载请注明来源并保留原文链接



化石原创文章,转载请注明来源并保留原文链接


想用wordpress构造自己的博客系统,写文章前使用的版本是5.6。按惯例去官网读了一下相关的安装的方法,发现用户体验是做的真好。但是作为用户,总是会忽略相关的信息,这也是这篇文章的来源。事情是这样的:

根据wordpress官方的教程,在centos上安装了apache、mysql、php,然后上传wordpress到/var/www/html下。这一步结束后就通过浏览器访问服务器,进入安装画面,填写数据库的user name、password等信息后,wordpress直接报无法连接数据库的信息。具体信息为:Error Establishing a Database Connection。

通过额外的mysql客户端,尝试user name和password,发现填写信息没有错。又通过网络搜索,试了改动wordpress下的文件的权限,还是无法解决这个问题。最后只能拿出大招:自己在服务器上写一个php,专门用来测试数据库连接。因为服务器的php版本是7.3,所以代码如下:

<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");

if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);
?>

通过直接访问这个php连接,我们在浏览器可以看到出错码是2054,进而通过搜索引擎,了解到应该是mysql的版本有问题。再仔细看了官方的相关信息,发现wordpress这个时候对应的mysql的版本是5.6的,而我直接装了最新的mysql,version 8。于是卸载这个mysql,装上5.6版本的。问题解决。


化石原创文章,转载请注明来源并保留原文链接