pzque's Blog

On the way.

Real World Haskell开发指南(习题答案)

前些时间刷real world haskell,特整理一下。 项目地址:https://github.com/pzque/realword-haskell 说明haskell版本:8.2.0 resolver: lts10.2 stack:1.6.4 这是看”real world haskell”这本书的过程中积累的包括书中实例、习题答案以及功能累积到比较实用的程度然后写成模块的代码集。 这......

深入探究linq原理——如何在自己的语言里实现linq

坑挖的有点多,最近打算填一个:给scala加上linq。 在spark RDD和DataFrame上直接用岂不是美滋滋。 用过几次c#,linq还是非常直观的,很喜欢这个设计。不过现在都忘的差不多了,再来回顾一下linq到底是个什么东西。 overview先不讲类型签名扩展方法这些细节,我们从从官网给的最基本的例子开始,来一个整体的概览,看看linq到底是什么: 12345678910111......

Scala-C++交叉编译

前些天有个项目有scala-c++交叉编译的需求,于是简单做了个demo把构建流程打通,并且尽量自动化。 现在项目好像是黄了,还是整理一下发出来吧。 项目地址: https://github.com/pzque/scala_native_demo Dependencies jdk sbt / idea内置sbt scala / idea内置scala cmake / clion内置cmake......

Spark job执行流程

最近讨论spark,发现我对spark的了解仅限于原理层面,对stage划分、job执行的细节理解不够充分。 所以就翻开spark2.2.0的源码,梳理一下一个任务从提交到执行的流程。 以经典的wordcount代码为例: 1234567891011121314151617181920212223package org.apache.spark.examplesimport org.apac......

scala implicit关键字详解(隐式转换函数、隐式类、隐式参数、隐式值)

一、Overviewimplicit是scala中的一个关键字,关于它有着丰富的用法,使得scala更灵活和容易扩展。截止目前,scala已经来到了2.12.3版本,本篇文章把目前scala支持的implicit用法作了较为全面的整理,以方便在阅读scala源码的时候稍作参考。文中全部的代码和测试结果均以scala2.12.3为准。 闲话不多讲,目前可以见到的implict用法有如下几种: ......

11、初步使用roswtf

在实践本篇文章前,请确保你的机器上没有roscore在运行。 一、检查安装状态roswtf检查你的系统并且报告存在的问题,让我们尝试一下: 12roscdroswtf 我的机器里得到: 123456789No package or stack in context=================================================================......

10、ROS记录和重现数据

在使用ROS系统的时候,我们可能会遇到这样的需求——重现机器人在的运行状况或者分析机器人的某些运行数据。这时候我们就十分需要对数据进行记录和备份的功能,好在ROS提供了非常方便的这样的功能。 一、记录数据(通过创建bag文件)这一节里介绍的是在一个运行中的ROS系统中记录某一个话题的信息,我们以小海龟节点为例,介绍如何在一个bag文件里记录话题发布的信息。 首先运行ROS:1roscore ......

9、ROS使用C++编写一个简单的Service和Client

在开始本篇文章之前,默认我们在前面的几篇文章中已经进行了如下的工作: 创建了beginner_tutorial包 在beginner_tutorial包中创建了AddTwoInts.srv文件 如果没有满足以上条件的话,请重新阅读本系列的第7、8篇文章。 一、Service节点在包内的src下创建add_two_ints_server.cpp,粘贴以下内容:123456789101112......

8、ROS使用C++编写一个简单的Publisher和Subscriber

一、Publisher节点“节点” 是一个连接着ROS框架的可执行文件,这里我们用C++写一个publisher节点 (命名为”talker”) ,不断地发布一条信息。 首先进入包目录的src文件夹: 12roscd beginner_tutorialscd src 然后创建一个名为'talker.cpp'的文件,内容为: 12345678910111213141516171......

7、创建ROS msg和srv

一、msg和srv介绍msg: msg文件使用简单的文本格式声明一个ROS message的各个域。仅需要创建一个msg文件,就可以使用它来生成不同语言的message定义代码。 srv:srv文件则声明了一个服务,包括request(请求)和response(响应)。 msg文件和srv文件分别存储在包的msg目录和srv目录下。 1、msg文件msgs是简单的txt文件,每行定义一个信息......