Laravel Union操作后排序错误的问题 Fix the wrong order after using union method in Laravel query

解决方法,在两个子查询中分别加上limit即可。可以使用较大的数确保所有记录返回。

The solution is to use the limit method on the two subqueries. You can use a larger number to ensure that all records are returned.

 

Laravel 5.5在浏览器中预览Notification渲染 Previewing Laravel Notification In Browser

对于Mail,我们可以通过下面的代码在浏览器中预览Mailables

For Mail, we can preview Mailables in the browser with the following code.

然而Notification类中toMail返回的MailMessage实例,Laravel文档中并没有给出直接方法在浏览器中预览,我们可以采取下面的方法。

However, the MailMessage instance returned by toMail method in the Notification class does not give a direct method to preview in the browser in the Laravel document. We can use the following code.

在Laravel5.8及以上,MailMessage实现了Renderable接口(PR in Github),所以可以直接return MailMessage实例作为响应了。

In Laravel 5.8 and above, MailMessage implements the Renderable interface (PR in Github), so you can directly return the MailMessage instance as a response.

 

Intellij编写Kotlin的Hello world并打包成JAR

首先,创建Kotlin项目

然后,在src文件夹下新建main.kt,编写Hello world

接着,菜单File->Project Structure

添加JAR工件

选择主类

最后所有的设置如下图,点击OK,确认和应用即可。

然后我们构建JAR,在弹出的小窗口中选择Build

最后,在输出文件夹就可以看到JAR了,可以打开命令行用 java -jar xxxx.jar来运行一下。会输出Hello, World!

 

 

配合Clion在Ubuntu上安装并使用OpenMPI

如果你在虚拟机上安装Ubuntu,请确认系统的CPU拥有多个核心,比如下图的4核心

首先,我们在Ubuntu上安装OpenMPI

安装完成后,我们到Clion新建一个项目。打开项目的CMakeLists.txt,在任意set下加入下面的参数。

然后,我们打开菜单Run->Edit Configurations

找到当前应用的配置文件(默认应该就是),比如我这里这个项目叫mpi_t1,左边应用就应该选择mpi_t1。

然后,找到Executable编辑框右侧的向下箭头,选择Select other,在路径里输入 /usr/bin/mpiexec ,点击OK即可

然后在Program arguments里输入 -n 4 ./<你的应用可执行文件的名字> ,比如我这里叫mpi_t1,应该输入 -n 4 ./mpi_t1 ,这里4代表的是你电脑处理器的核心数,如果你的电脑没有4核心,也要修改。

然后修改Working directory,为你的项目目录+ cmake-build-debug ,一个比较简单的方式是直接到项目左侧的项目文件栏右键 cmake-build-debug 文件夹,然后选择Copy Path

最后修改的效果如下:

现在,你可以使用Build+Run来直接编译和运行你的OpenMPI程序了。

python在ROS中订阅地图消息,在opencv中可视化

在本例中,博主将介绍如何把OccupancyGrid的地图数据在opencv中可视化。

首先,我们阅读OccupancyGrid的文档,可以发现这个结构体主要分为两部分,其MapMetaData存储的是地图的元数据,比如宽度,高度,分辨率等信息。而 int8[] data 是一个行主序的数组,数组的值为当前区域被占用的可能性,值域为[0,100],特别地,未知区域的值为-1。

下面是关键部分的示例代码,我们首先订阅一次 /map 的消息,并且获取地图元信息,然后我们创建一个numpy数组,并且将可能性的值转换为0-255的颜色。不过在下面的代码中,我将忽略这一特性。所以在 probability > 0 这直接写了 color=0 ,实际上你可以使用 color = (1 - probability) * 255 来代替这一行。最后,因为map_server生成的默认地图未知区域的颜色为205,所以空的numpy数组在一开始用了205来进行填充。

 

重装Win10并删除ESP分区后,修复Ubuntu16在UEFI的双系统引导

介绍

最近笔记本的win10一直无法升级到最新版本,查看原因后发现是ESP分区太小了,只有不到100M,而win10推荐的大小是至少500-700M的空间。为了扩大处于分区表开头位置的ESP分区,我删除了ESP以及在ESP之后的win10系统分区。现在硬盘上还存在于Ubuntu的两个分区,一个是挂载点 / ,一个是 /home

由于ESP分区直接被删除并且在Win10的重新安装中被彻底重置,原先Ubuntu的EFI启动文件已经被删除。经过多方查找资料。修复的方法如下。

首先,我们用一个Ubuntu的live cd(刻录的U盘也是可以的)启动系统。如果你想先启动你之前的Ubuntu系统内核,请遵循下面的步骤,如果想直接用live cd修复,请直接到修复部分。

启动原Ubuntu内核

在GURB页面按c进去命令行模式,接着输入 ls 命令。屏幕中会显示目前所有识别的硬盘以及分区。比如 (hd0,gpt1), (ht0,gpt2) 之类的。接下来,使用命令 ls (hd0,gpt1)/ 查看这些分区下面的文件夹,找到原先Ubuntu系统 / 挂载点所在的分区。用上面的命令尝试所有的分区(更改命令中的 gpt1 为对应的序号),找到含有 /boot 文件夹的分区。

找到之后(比如我们确定了是 gpt3 ),我们输入 set root=(hd0,gpt3)

然后,我们输入 set pager=1 来确保分屏显示。

然后,输入 cat /boot/grub/grub.cfg 来查看原grub的配置文件。找到第一个 menuentry 的启动项。

记录上面以 linux 开头这一行的命令,注意可能有折行,要一直抄到尾部,UUID不能错。

然后,稍微上面几行,记录以 initrd 开头这一行的命令。

然后,我们依次输入上面记录的两个命令,注意不要出错。最好拍照片拍下来,除了UUID,其他路径部分都是可以用tab补全的。

最后,我们输入 boot 命令,启动系统。

修复引导

如果你是使用live cd,请先输入下面的命令进入root用户

然后,我们添加 boot-repair 的ppa源并安装,我们需要使用这款软件进行修复。

然后,我们使用 sudo boot-repair 命令运行这个工具,然后选择第一个选项。然后按照该工具的提醒进行修复即可。最后这个工具会生成一个报告,可能会花一点时间,耐心等待就好。

显示下面这样的提示证明修复成功,可以重新启动系统进入BIOS调整UEFI的启动顺序为ubuntu即可。

博主在使用 boot-repair完成修复后,发现编辑 /etc/default/grub 的自定义设置不生效了,并且 boot-repair生成的启动菜单项目太多。如果你也遇到上面的问题,你可以在上面的所有操作完成后,进入到你的Ubuntu系统,运行下面的命令重装你的GRUB2

然后再重启系统即可。

使用Clion在Ubuntu 16上使用OpenMP编写C

首先,安装OpenMP

然后,编辑Clion生成的CMakeLists.txt,在任意set后面加上下面的代码

下面是一个完整的例子

然后,我们编写一个测试程序

运行后,应该可以看到乱序输出的数字,代表OpenMP运行成功

 

Turtlebot plays Robotic Cluedo Demo

Project Description

You are asked to implement a program that plays Robotic Cluedo! Robotic Cluedo is slightly different than the board game Cluedo. In our version, your robot needs to visit a room in an arena and identify the character and weapon in the room along with their location.

Project Demo

University of Leeds

Orestis Pourgourides, Chengke Sun, Antonis Simonis, Nikolay Kyorov

项目描述

机器人访问一个已知地图的房间,在该房间内寻找和识别数张不同的海报。

项目演示

(墙内观看)https://www.bilibili.com/video/av41989932/