自然语言处理综论 第2版 中文版 下载
https://drive.google.com/file/d/1a3j3tGemcX5qRUpLbayhzkqcMhA0Udcu/view?usp=sharing
解压密码:onlyke.com
自然语言处理综论 第2版 中文版 下载
https://drive.google.com/file/d/1a3j3tGemcX5qRUpLbayhzkqcMhA0Udcu/view?usp=sharing
解压密码:onlyke.com
很长时间没有再去上海迪士尼了,最近在油管(来源:DLP Welcome Music)上发现了这一宝贵资源。包含了你在园区商店/街边音响等一些地方最常听到的背景音乐(BGM)。这个视频下面的评论很少,难道还没有很多人发现么?
下面是播放列表,尤其是第一首简直太耳熟了。
01. Be Our Guest
02. Let’s Go Fly a Kite – 3:22
03. Carnival of the Animals – 6:17
04. So this is Love – 8:45
05. I’le Got No Strings – 10:43
06. Something There – 13:35
07. Chim Chim Cher-ee – 16:25
08. I’ve Got a Dream – 18:50
09. Almost There – 22:02
10. Treasure Cove Medley – 24:37
11. Adventure Isle Medley – 37:04
12. Volcanoes – 29:30
13. For the First Time in Forever – 44:06
14. You Can Fly! You Can Fly! You Can Fly! – 47:46
15. Beauty and the Beast – 50:48
16. You’ve Got a Friend in Me – 53:43
如果你没有梯子访问油管,这里提供一个已经转换好的mp3下载链接(仅供学习试听参考)
https://mydansun.lanzoui.com/i4Wg8lt14za
其实,在上海迪士尼,还有一个特别的bgm就是巡游cue10,在夏日狂欢的巡游时使用的。这个背景音乐以前在网易云是刘泉铨_MrQ发布过的原版音乐,现在网易云上已经没有了。刘老师在网易云上之前还有关于此歌曲的动态,现在也是查无此歌了。
经过千辛万苦的搜寻,终于收集到了这首歌的刘老师之前发布过的原始版本(非外部录音,非现场视频转录)在这里分享给大家:
https://mydansun.lanzoui.com/iHhdJmo65mj
博主这里该是上面这首歌的全网唯一资源了(大概吧
最近搭建反代需要使用ngrok反向代理,查了很多地方都需要手动编译, 并且repo中的代码已经存在一些问题,直接编译有困难。这里提供静态编译好的版本,不需要额外依赖,平台对应代码即可运行。经过测试,ngrok性能比frp要强很多。
如果使用动态编译的版本,在缺少对应动态链接库的情况下会报下面的错误。
No such file or directory
ngrokd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, stripped
https://drive.google.com/file/d/1Ihbmb5ZLuNjjEBJpG1rG-7G0uTarf6Re/view?usp=sharing
链接: https://pan.baidu.com/s/10FgUEmnhWau08z–p1Pw5A 提取码: rp29
ngrokd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
https://drive.google.com/file/d/1GUWa5DUuGzk-ZohGnHDEnuz1jozfFJwA/view?usp=sharing
链接: https://pan.baidu.com/s/1rm0SSyyPT5n8kOgzh_gzfA 提取码: 9u3m
ngrok: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, not stripped
https://drive.google.com/file/d/18ft5G-xUGoCXs3mhFpLUjklgpG2i0UIL/view?usp=sharing
链接: https://pan.baidu.com/s/1rEQ-1ZWBzlBjD267bgemCw 提取码: h3kf
ngrok: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
可以放在软路由,Openwrt-amd64上
https://drive.google.com/file/d/1D6vcpDif8MPm3bG7UAt1lCDHNvozJn6n/view?usp=sharing
链接: https://pan.baidu.com/s/1yGP-c9VP7A-9ieAckG881Q 提取码: 54cg
ngrok: Mach-O 64-bit executable x86_64
https://drive.google.com/file/d/10IBGQIcoRLx_4LaoEigVGQISuoJXnLJH/view?usp=sharing
链接: https://pan.baidu.com/s/1KrolVlEy0CdiwSAmkb9ARA 提取码: puxh
想象一下,您有两个进程同时执行以下PHP代码,将显示什么结果?
\DB::transaction(function (){ dump(User::where('id',1)->lockForUpdate()->first()); });
令人惊讶的是,一个进程打印正常的查询结果,而另一个进程打印一个空集合(数组)。 返回空集合的代码并未按照我们想的那样触发死锁异常!然而,如果您查阅了transaction方法的源代码,则会发现在发现死锁之后,该方法会自动重试事务。 而且当死锁的数量达到设定值时,最终死锁将被作为异常抛出。 但是,当前这个实际发生死锁的查询看起来却很正常,因为它返回了一个空集合!
这个意外返回的空数组和未抛出的死锁异常实际上是一个古老且棘手的PHP-PDO bug。 在7.4.13发布之前,它已经广泛存在于许多PHP版本中。 有许多与此相关的讨论,例如:
在PHP7.4.13之前,你几乎没有办法直接检测到此错误。 切勿尝试打开PDO :: ATTR_EMULATE_PREPARES来解决此问题! 因为此选项将使您所有的PDO查询结果都变成字符串,数据类型的丢失将会导致更严重的后果。
因此,唯一可行的方法是手动编译已修复的PHP源代码,或安装新的预编译版本的PHP7.4.13。
编辑/etc/firewall.user,加入以下代码:
# Log会drop的包 iptables -N LOGDROP > /dev/null 2> /dev/null iptables -F LOGDROP iptables -A LOGDROP -j LOG --log-prefix "LOGDROP " iptables -A LOGDROP -j DROP # 屏蔽种子下载的关键词 iptables -I FORWARD -m string --algo bm --string "BitTorrent" -j LOGDROP iptables -I FORWARD -m string --algo bm --string "BitTorrent protocol" -j LOGDROP iptables -I FORWARD -m string --algo bm --string "peer_id=" -j LOGDROP iptables -I FORWARD -m string --algo bm --string ".torrent" -j LOGDROP iptables -I FORWARD -m string --algo bm --string "announce.php?passkey=" -j LOGDROP iptables -I FORWARD -m string --algo bm --string "torrent" -j LOGDROP iptables -I FORWARD -m string --algo bm --string "announce" -j LOGDROP iptables -I FORWARD -m string --algo bm --string "info_hash" -j LOGDROP # 屏蔽DHT网络 iptables -I FORWARD -m string --string "get_peers" --algo bm -j LOGDROP iptables -I FORWARD -m string --string "announce_peer" --algo bm -j LOGDROP iptables -I FORWARD -m string --string "find_node" --algo bm -j LOGDROP # 网上找到貌似上面就够了,但是目测p2p已深入ipv6,所以可以再屏蔽一下ipv6,操作都是一样的 ip6tables -N LOGDROP > /dev/null 2> /dev/null ip6tables -F LOGDROP ip6tables -A LOGDROP -j LOG --log-prefix "LOGDROP " ip6tables -A LOGDROP -j DROP ip6tables -I FORWARD -m string --algo bm --string "BitTorrent" -j LOGDROP ip6tables -I FORWARD -m string --algo bm --string "BitTorrent protocol" -j LOGDROP ip6tables -I FORWARD -m string --algo bm --string "peer_id=" -j LOGDROP ip6tables -I FORWARD -m string --algo bm --string ".torrent" -j LOGDROP ip6tables -I FORWARD -m string --algo bm --string "announce.php?passkey=" -j LOGDROP ip6tables -I FORWARD -m string --algo bm --string "torrent" -j LOGDROP ip6tables -I FORWARD -m string --algo bm --string "announce" -j LOGDROP ip6tables -I FORWARD -m string --algo bm --string "info_hash" -j LOGDROP ip6tables -I FORWARD -m string --string "get_peers" --algo bm -j LOGDROP ip6tables -I FORWARD -m string --string "announce_peer" --algo bm -j LOGDROP ip6tables -I FORWARD -m string --string "find_node" --algo bm -j LOGDROP
保存之后,执行:
/etc/init.d/firewall restart
即生效。
文章转载来源:https://xintun.lofter.com/post/1dcd13e8_c8fb947
vue-echarts在启用了dataZoom后如果options被更新,dataZoom的start和from会被重置。解决这个问题可以采用下面的方法。
假设你之前是这么配置组件的
<e-charts :options="options" v-if="options" class="chart" autoresize ></e-charts>
首先,在组件上监听dataZoom事件
<e-charts :options="options" class="chart" @datazoom="dataZoom" autoresize ></e-charts>
在data中添加zoomStart和zoomEnd
dataZoom(action) { if ( "batch" in action && Array.isArray(action.batch) && action.batch.length > 0 ) { this.zoomStart = action.batch[0].start; this.zoomEnd = action.batch[0].end; } else if ("start" in action && "end" in action) { this.zoomStart = action.start; this.zoomEnd = action.end; } }
dataZoom事件有两种触发方式,第一个if分支将在使用滚轮时触发,第二个分支将在拖动手柄时触发。
在data中添加realOptions。然后,在watch下面监听options的变化,将zoomStart和zoomEnd重新赋值。
options(newValue) { if (newValue) { for (let i = 0; i < newValue.dataZoom.length; i++) { newValue.dataZoom[i].start = this.zoomStart; newValue.dataZoom[i].end = this.zoomEnd; } this.realOptions = newValue; } }
最后,修改组件的属性
<e-charts :options="realOptions" v-if="realOptions" class="chart" @datazoom="dataZoom" autoresize ></e-charts>
If the options are updated after dataZoom has enabled in vue-echarts, the start and from of dataZoom will be reset. The following methods can be used to solve this problem.
Suppose your component looks like this
<e-charts :options="options" v-if="options" class="chart" autoresize ></e-charts>
First, listen to the dataZoom event on the component
<e-charts :options="options" class="chart" @datazoom="dataZoom" autoresize ></e-charts>
Create zoomStart and zoomEnd fields to data.
dataZoom(action) { if ( "batch" in action && Array.isArray(action.batch) && action.batch.length > 0 ) { this.zoomStart = action.batch[0].start; this.zoomEnd = action.batch[0].end; } else if ("start" in action && "end" in action) { this.zoomStart = action.start; this.zoomEnd = action.end; } }
There are two ways to trigger the dataZoom event. The first if branch will be triggered when the scroll wheel is used, and the second branch will be triggered when the handle is dragged.
Create a realOptions field to data. Then, watch the changes of options and assign zoomStart and zoomEnd.
options(newValue) { if (newValue) { for (let i = 0; i < newValue.dataZoom.length; i++) { newValue.dataZoom[i].start = this.zoomStart; newValue.dataZoom[i].end = this.zoomEnd; } this.realOptions = newValue; } }
Finally, modify the properties of your component
<e-charts :options="realOptions" v-if="realOptions" class="chart" @datazoom="dataZoom" autoresize ></e-charts>
Recently, my project needs the HATP planner. Compiling under Ubuntu 16 encountered the following problems. Here I wrote down some solutions.
This problem is caused by not installing Antlr2.7.7, so we need compile and install Antlr.
First, download the source package from https://www.antlr2.org/download/antlr-2.7.7.tar.gz
You may meet the following problem during compiling, caused by CharScanner.cpp
make[3]: Entering directory '/home/mydansun/antlr-2.7.7/lib/cpp/src' *** compiling /home/mydansun/antlr-2.7.7/lib/cpp/src/../../../lib/cpp/src/CharScanner.cpp In file included from /home/mydansun/antlr-2.7.7/lib/cpp/src/../../../lib/cpp/src/CharScanner.cpp:10:0: /home/mydansun/antlr-2.7.7/scripts/../lib/cpp/antlr/CharScanner.hpp:474:30: error: ‘EOF’ was not declared in this scope static const int EOF_CHAR = EOF; ^ /home/mydansun/antlr-2.7.7/scripts/../lib/cpp/antlr/CharScanner.hpp: In member function ‘bool antlr::CharScannerLiteralsLess::operator()(const string&, const string&) const’: /home/mydansun/antlr-2.7.7/scripts/../lib/cpp/antlr/CharScanner.hpp:565:41: error: ‘strcasecmp’ was not declared in this scope return (strcasecmp(x.c_str(),y.c_str())<0);
The solution is to modify the CharScanner.hpp file manually, add the following code at the beginning.
#include <stdio.h> #include <strings.h>
The above modification refers to the following two posts
After the compilation and installation, when I tried to execute the antlr command, I got this error: Could not find or load main class antlr.Tool
Then I found that there is no antlr.jar file in the /usr/local/lib directory, just copy this file (in the source code directory) to /usr/local/lib.
Important: When compiling HATP later, please use the following command to declare the executable path of Antlr. Otherwise, you may get this error: Unable to find Antlr executable!
catkin_make -DAntlr_BIN=/usr/local/bin/antlr
Execute the following command.
sudo ln -s /usr/local/lib/libantlr.a /usr/lib/libantlr.a
This is because toaster is not installed, please visit the following link
https://github.com/laas/toaster/wiki/Installation
Toaster.git can be cloned into the same workspace as HATP and compile together.
Execute the following command.
sudo ln -s /usr/local/lib/libtoaster.so /lib/libtoaster.so
最近项目需要HATP规划器,在Ubuntu 16下编译遇到了下面的问题,这里记录一下解决方案。
这个问题是没有安装Antlr2.7.7导致的,我们先编译安装Antlr
首先,下载源码包https://www.antlr2.org/download/antlr-2.7.7.tar.gz
在编译过程中遇到下面的问题,CharScanner.cpp编译失败
make[3]: Entering directory '/home/mydansun/antlr-2.7.7/lib/cpp/src' *** compiling /home/mydansun/antlr-2.7.7/lib/cpp/src/../../../lib/cpp/src/CharScanner.cpp In file included from /home/mydansun/antlr-2.7.7/lib/cpp/src/../../../lib/cpp/src/CharScanner.cpp:10:0: /home/mydansun/antlr-2.7.7/scripts/../lib/cpp/antlr/CharScanner.hpp:474:30: error: ‘EOF’ was not declared in this scope static const int EOF_CHAR = EOF; ^ /home/mydansun/antlr-2.7.7/scripts/../lib/cpp/antlr/CharScanner.hpp: In member function ‘bool antlr::CharScannerLiteralsLess::operator()(const string&, const string&) const’: /home/mydansun/antlr-2.7.7/scripts/../lib/cpp/antlr/CharScanner.hpp:565:41: error: ‘strcasecmp’ was not declared in this scope return (strcasecmp(x.c_str(),y.c_str())<0);
解决方案就是手动修改CharScanner.hpp 文件,在开头加上下面的代码
#include <stdio.h> #include <strings.h>
上面的修改参考了下面两篇文章
编译安装结束后,尝试执行antlr 命令,却提示Error: Could not find or load main class antlr.Tool
然后发现在/usr/local/lib 目录里没有antlr.jar 文件,将源码目录中的同名文件拷贝到该目录即可。
非常重要:后面编译HATP的时候,请使用下面的命令执行Antlr的可执行文件路径。否则会出现Unable to find Antlr executable!的问题
catkin_make -DAntlr_BIN=/usr/local/bin/antlr
执行下面的命令
sudo ln -s /usr/local/lib/libantlr.a /usr/lib/libantlr.a
这是因为没有安装toaster导致的,参考下面的链接https://github.com/laas/toaster/wiki/Installation
其中toaster.git可以克隆到和HATP相同的workspace,一起编译即可。
执行下面的命令
sudo ln -s /usr/local/lib/libtoaster.so /lib/libtoaster.so
该文章首次编写于2020年1月24日,在该时间点后可能会有新的改变导致安装失败,如果有问题请查看官方文档的更新或给我评论。
我假设你已经安装了ROS核心组件
首先,安装依赖
sudo apt install flex bison freeglut3-dev libbdd-dev python-catkin-tools ros-$ROS_DISTRO-navigation ros-$ROS_DISTRO-tf2-bullet sudo apt-get install python-pymongo mongodb scons
然后创建一个存放ROSPlan包的工作空间,我假设你使用~/ros_playground .
打开这个工作空间的src目录,克隆所需要的文件
cd ~/ros_playground/src git clone https://github.com/KCL-Planning/ROSPlan.git git clone https://github.com/KCL-Planning/rosplan_demos.git git clone https://github.com/clearpathrobotics/occupancy_grid_utils.git git clone -b kinetic-devel https://github.com/strands-project/mongodb_store.git
然后,返回上一级目录,编译
cd ../ catkin_make
使用下面的命令为数据库创建一个文件夹,否则你后面会遇到类似下面的错误
Can’t find database at supplied path ~/ros_playground/src/ROSPlan/rosplan_knowledge_base/common/mongoDB/. If this is a new DB, create it as an empty directory
mkdir -p ~/ros_playground/src/ROSPlan/rosplan_knowledge_base/common/mongoDB/
现在,你可以返回官网继续教程了,在启动tutorial_01.launc 之前别忘了运行roscore
This article is written on 24 Jan 2020. Some materials may be expired after that time, please check the latest related documents.
Install the following dependencies.
sudo apt install flex bison freeglut3-dev libbdd-dev python-catkin-tools ros-$ROS_DISTRO-navigation ros-$ROS_DISTRO-tf2-bullet sudo apt-get install python-pymongo mongodb scons
Select or create a workspace for the ROSPlan package. I assume you are using ~/ros_playground .
Go to the source folder of your workspace and clone all the necessary packages by using Git.
cd ~/ros_playground/src git clone https://github.com/KCL-Planning/ROSPlan.git git clone https://github.com/KCL-Planning/rosplan_demos.git git clone https://github.com/clearpathrobotics/occupancy_grid_utils.git git clone -b kinetic-devel https://github.com/strands-project/mongodb_store.git
Go to the parent directory and compile these packages
cd ../ catkin_make
Create an empty directory for the new database or you will get an error such like Can’t find database at supplied path ~/ros_playground/src/ROSPlan/rosplan_knowledge_base/common/mongoDB/. If this is a new DB, create it as an empty directory
mkdir -p ~/ros_playground/src/ROSPlan/rosplan_knowledge_base/common/mongoDB/
Now, you can try to back to the official tutorial. Please remind before you execute the tutorial_01.launch you need to run a ROS master node at first. For example, try to execute
roscore