YP.Lam

YP.Lam

关于物联网, 互联网, 机器学习

iMX6ULL 运行 OpenWRT

本笔记并不是一个完整的关于 OpenWRT 移植的笔记,只作为个人备忘用。同时亦分享出来给需要的朋友作为参考。水平有限,如果有出错地方请反馈 yplam(at)yplam.com


iMX6ULL SD卡系统制作与启动

鉴于之前玩的 MT7688A 已经停产并且模块断货,最近把目光投向一款新芯片:iMX6ULL,因为其起点价格在接受范围,最低配置的核心板价格在百元以内,128M+128M 足够跑我的OpenThread网关,通用芯片该有的功能都有,按功能来算的话比 MT7688A 性价比还高。


iMX6ULL 内核编译

最近想在 iMX6ULL 上运行 OpenWRT,第一步准备将内核版本升到 4.14,按着官方说明操作一通,顺便在此记录一下


树莓派 OpenThread 边界路由器配置

OpenThread 边界路由器的作用是作为 Thread 网络与其他基于IP的网络(如WIFI、以太网)的桥梁。有了边界路由器的存在才让 Thread 网络中的设备成了跟手机、电脑等对等的一员(是的,基于IP就是那么自信)。


基于 OpenWRT 与 MT7688 DIY 4G WIFI 路由器

最近经常要到一些没有有线网络的地方,虽然手机可以共享WIFI出来,但总不能24小时开着,刚好手上空闲着一块 EC20 4G 模块, 于是淘宝弄了块最便宜的 MT7688 4G 路由板回来,DIY 自己的 4G WIFI共享路由器。


Symfony 4 the new way

Symfony 5 已经发布了一段时间,Symfony 4 也出了 4.4 LTS 版本,于是准备把手上一个历史遗留项目升级到 4.4,然而一动手就遇到麻烦,因为现在官方已经不推荐使用之前那种传统的大 bundle,而是倾向于更通用的组件(作为一个从 Symfony 2 过来的用户,不得不说挺支持官方的做法,因为经常会因为有 bundle 不及时更新而导致 composer 冲突)。

本文章将尝试从头开始创建一个 Symfony 4 基础应用。


Tensorflow Serving Nsfw

两年多前曾经在服务器上部署了个 Tensorflow 模型,由于 Tensorflow serving 刚公布不久,并且还没阅读相关文档,所以当时就粗暴的用 Flask 写了个接口就放到线上跑了两年。

最近又需要在服务器上部署些模型,决定用回比较官方的方式,研究一下 Tensorflow serving。


Chromium 源码阅读:Could not decode image bug 跟踪

偶尔有收到用户关于 “Could not decode image: ***” 的反馈,并且最近频率有增加的趋势,解开 Theme 文件除了图片有点大以外看不出其他问题,所以决定花点时间跟踪一下 Chromium 源码。


Chromium 源码阅读:C++ 基础

阅读 Chromium 源码的过程中,发现最大的障碍在于自己对 C++ 的理解还停留在大学时期,平时使用 C++ 也 仅仅停留在写个简单类,单例、工厂等简单的模式;所以在此针对 Chromium 源码中自己未曾用过的编程方式 做一个笔记。


Chromium 源码阅读:chrome/browser/ui/views 入门概览

从上一篇知道 chrome/browser/themes/ 的数据流为从 Extension Service 得到 Theme 安装信息,并且通过 BrowserThemeProvider 为 UI 层提供 Theme UI 信息。本篇分析 UI 的 views 层,不过由于 views 层代码量实在庞大,以及对 Chromium 内部实现机制欠缺了解,所以本文只能作为一个入门概览。


Chromium 源码阅读:chrome/browser/themes

前言:最近花了几天时间解决 Chromium CRX3 文件格式编码问题,然后决定用部分业余时间学习 Chromium 源码,从 UI/Theme/Extension 开始。(因为7,8年前曾经马马虎虎地看了一遍 Theme 以及其渲染过程的代码,并且写了一个简单的 Theme 打包工具,所以现在决定还是以此作为入口。)


Chromium 编译与调试笔记

最近手上有个小项目需要兼容 Chrome CRX3 版本的扩展格式,Google 了一下竟然完全没有相关介绍文档,于是决定啃一下相关代码。


SX1280 LoraRanging 功能测试

之前用现成的Lora串口模块感觉挺顺手,最近偶尔看到带 LoraRanging 功能的 SX1280,于是买了两个模块回来测试一下。

源码地址 https://github.com/yplam/LoraRangingTest


Mbed Bootloader配置笔记

  • In Mbed
  • /
  • Posted 2018-11-10

此笔记记录 Mbed OS 在 STM32F405RG 下配置 Bootloader 的过程。 Mbed OS 是 Arm 公司推出的专门面向 Arm 微处理器以及物联网应用的开源实时操作系统。


PredictionIO Universal Recommender 笔记

Universal Recommender (UR) 是 ActionML 公司基于 PredictionIO 开发的协同过滤引擎,使用 Correlated Cross-Occurrence (CCO) 算法,可以应用与个性化推荐、物品相关推荐、购物车推荐、基于业务逻辑的推荐等。


PredictionIO实现论坛广告贴过滤

关注 Apache PredictionIO 已有一段时间,最近需要做一个过滤论坛广告贴的功能,调研了一番市面上提供文本检测的API服务,发现靠谱的公司都比较贵,并且准确率不高(一个可能性是他们使用的训练数据集是互联网上的通用信息,而我们是一个垂直行业论坛,攻击来源也可能是固定的那么若干个),于是尝试自己实现个文本分类器来过滤广告。


推荐系统笔记

距离度量 评估 RMSE AUC 算法


Symfony 4 尝鲜

Symfony 4 如期在11月的最后一天发布,相比与 Symfony 2 到 Symfony 3 的升级,Symfony 4 的变化似乎更大,特别是由于加入 Flex 以及 Service Autowired,开发方式都会发生比较大的变化。


Tensorflow Object Detection API 入门笔记 - 基于 Google Cloud 与 阿里云

跟风关注机器学习已有一段时间,最近需要做一个图像识别的项目,刚好 Google 开源了 Tensorflow Object Detection API , 于是在此基础上做了一次尝试。本笔记从一名程序员的角度记录一次基于 Tensorflow Object Detection API 的图像物体识别项目过程,项目使用 Google Cloud Machine Learning 进行模型训练, 使用阿里云 GPU 服务器进行模型测试评估。


Netflix Prize 相关资料

Netflix Prize 是2006年Netflix启动的一个机器学习和数据挖掘比赛,旨在解决电影评分预测问题。


一步步搭建 Edison ROS Indigo 环境

  • In ROS
  • /
  • Posted 2017-03-25

最近在琢磨能不能用 CNN 来训练一个模型,用于控制一个模型小车,实现简单的循迹或者所谓的自动驾驶。于是拿出布灰已久的 Edison + 两轮平衡车 + 罗技摄像头,计划将这几样组装起来,上面运行 ROS 作为我的“机器人”平台,然后在笔记本上运行 master 做运算与控制。本笔记记录 ROS 在 Edison 上安装与运行 usb_cam 获取图像传输到主机的过程。


Install ROS Indigo on Edison Ubilinux

  • In ROS
  • /
  • Posted 2017-03-19

This tutorial shows you how to install ROS Indigo on Edison Ubilinux from source.


[翻译]用户行为预测:使用机器学习技术预测付费用户

:本文为 Predicting customer behavior: How we use machine learning to identify paying customers before they subscribe 的简单翻译版本,详细内容请阅读原文。

本案例为 strong.io 公司的一位创业公司客户,该客户开发了一个类SaaS软件,但在经过多年的稳固发展后,他们的每月收入增长却开始变得很缓慢。他们曾经尝试改善他们的产品,但效果可能不好,因此现在将重点放在客户获取上面。


用户画像笔记

用户画像是根据用户社会属性、生活习惯和消费行为等信息而抽象出的一个标签化的用户模型。构建用户画像的核心工作即是给用户贴“标签”,而标签是通过对用户信息分析而来的高度精炼的特征标识。


AWS TensorFlow 安装与测试

最近迷上了机器学习,花了不少时间学习相关的基础内容;虽然数学跟不上,也不妨碍跟风玩玩各位大牛的开源成果。 本文记录了购买AWS GPU服务器,安装cuda、 TensorFlow,运行 Neural Style 测试的过程。


机器学习笔记

机器学习是人工智能的一个分支。人工智能的研究是从以“推理”为重点到以“知识”为重点,再到以“学习”为重点,一条自然、清晰的脉络。显然,机器学习是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。机器学习在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。来源

本文记录机器学习相关的概念与资料索引。


使用localStorage进行跨标签页通讯

localStorage 对象用来在浏览器本地存取数据,并且数据不因浏览器的关闭而丢失。浏览器中同一个域下的窗口可以共享 localStorage 数据。因此我们可以利用这一特性进行跨浏览器内的跨页的事件发送,从而进行通讯。


ELK日志分析入门

  • In ELK
  • /
  • Posted 2016-09-09

ELK Stack 由 Elastic.co 公司名下的 Elasticsearch、Logstash、Kibana 三个开源软件的组成,用于日志的快速搜索和分析。


Symfony 性能优化

测试环境 ubuntu 14.04, php 5.5.9,使用 ab -c 10 -t 5 的方式针对不同的Symfony配置进行性能测试。


Configuring 6lbr for Ubuntu and SensorTag CC2650

This post show you how to configure Ubuntu as 6LoWPAN router and bridge 6LoWPAN devices to the IPv4/IPv6 Internet.


Symfony2 太“重”了?试试 Symfony2 微框架

Symfony2 是一个全功能的框架,因此有些开发人员会以它太“重”了(而不是太“难”了)为理由而拒绝使用。在开发环境下,一个简单的Symfony页面大概需要花费 70ms,而prod环境下大概需要30ms(以上是个人在一个Web App上实践后数据)。虽然相对其提供的功能而言,这是一个可观的数据,但对于一个简单的REST API请求而言,这也许真的太“重”了。


使用 Jenkins 与 Github 对 Symfony 2 应用进行持续集成

持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。本文记录如何使用 Jenkins 与 Github 对 Symfony 2 应用进行持续集成。


配置 Nginx Http 认证以及 IP 访问策略

网络世界充满漏洞,同样,网络世界充满着寻找漏洞的人。为Web服务器的后台路径添加HTTP AUTH认证,是防范漏洞被探测到的一个简单有有效的方法。


Debian 8 服务器运行多Redis实例

Redis 由于功能强大、性能优越、支持持久化等优点,在很多应用上已经替代Memcached,成为首选的缓存系统,还可以作为简单的db使用。


使用Nginx做AWS S3的反向代理

对于一些UGC(用户创建内容)类网站而言,特别是图片网站,随着用户数的增长,时间的推移,网站上的文件会越来越多;得益于云服务的出现,存储系统的扩展变得简单,一个比较常用的做法就是将文件存储于AWS S3,然后用户通过S3或者CloudFront下载。然而虽然AWS S3的储存价格相对便宜,但流量价格却非常高,最终导致网站的托管开销增加。


不能忽略 .htaccess 对性能的影响

在Apache环境下使用 .htaccess 进行URL重写或许已经是一种非常常用的方式;然而,如果URL重写规则比较复杂,使用.htaccess的方式可能会影响到Apache的性能。


服务器SSD以及SSD RAID性能测试

  • In Linux
  • /
  • Posted 2015-08-15

最近拿到几块Intel的企业级SSD准备搭建新的服务器,下面分享一些这段时间的测试数据。

测试主要在DELL R610、阿里云4核非IO优化SSD服务器环境下进行,测试工具为sysbench。

测试过程主要是使用sysbench命令分别对 SATA、SAS、SSD盘进行测试,其中测试重点在于SSD性能对比。


为个人博客配置 HTTPS 访问

如何能让个人博客显得更有逼格?配置成HTTPS访问是一个不错的选择,下面分享 yplam.com 切换到 HTTPS 的过程。


如何将一个Drupal网站转到Symfony

最近尝试将自己的一些Drupal网站转移到Symfony(这个个人博客就是其中之一),下面分享一些转移过程的心得,主要包括Drupal基本功能在Symfony上的实现。


SonataAdminBundle创建自定义后台页面

SonataAdminBundle可以非常简便地实现CRUD页面,然而,如果我们需要在后台中实现与Entity无关的管理页面,应该怎么办呢?下面分享自己在摸索工程中的一个实现方法。


使用twigExtension实现页面区块功能

所谓区块,就是在页面中展示的一块内容,可以与当前页面内容相关或者无关。譬如常见的在网站侧边栏展示 “最新文章”区块,或者在文章内容页展示“相关文章”区块。


30个最常用的Symfony组件

在Symfony官网上有个投票,让用户选出工作中最有用的组件,下面是评选结果:


PHP中的empty()与isset()

  • In PHP
  • /
  • Posted 2014-12-02

对PHP程序员而言,empty()与isset()肯定不会陌生,甚至是每天都会调用N百遍,正因为如此,我们每个人都认为对它们已经熟悉的不得了,甚至连文档都懒得再翻阅一下,前赴后继的往坑里冲。


Discuz移动接口原理简介

Discuz论坛内置提供针对移动端开发的json接口,下面根据源码进行一些分析。


Drupal 8服务与依赖注入

原文地址:Services and dependency injection in Drupal 8

Drupal 8 引入了服务的概念,用来解耦可复用的功能,并且可以通过在服务容器中注册这些服务,让它们可插拔与可替换。身为开发者,最佳的方式就是通过服务容器来访问Drupal提供的所有服务,这样可以保证遵循系统的解耦特性。在Symfony 2的文档中对服务有非常好的介绍。


Drupal 专题页面模块

Drupal Special Topic 模块提供一种通用并且可定制的 Drupal 专题页面功能。

这里的专题页面,指的是将网站中与某个话题相关的内容聚合到一个页面中,具有特殊的布局与样式设计。国内常见的专题页面大多以区块的形式展现,不同的位置显示不同的内容列表,有链接与图文混合等展示形式。


Drupal微信公众平台模块

最近在用Drupal做一个微信公众平台后台,决定发扬一下开源精神,将微信部分的module分享出来,给有需要的朋友参考使用。现在还是不稳定版本,有任何建议请反馈 yplam#yplam.com 欢迎关注测试反馈:


FOSUserBundle 入门

这是一篇介绍FOSUserBundle的安装与配置笔记,面向Symfony2.1+,更详细的内容请参考:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md


Symfony服务容器 ( Symfony Service Container )

这是一篇关于Symfony2服务容器实现的笔记,原文请查看文章末尾的相关资料部分。

上一篇笔记介绍了依赖注入容器,依赖注入容器使得对各种系统功能的调用变得简便,但同时引入了一个新的问题就是容器的编写与维护变得非常复杂。Symfony2试图通过ServiceContainer、ServiceContainerBuilder以及xml、yml配置文件来使容器的实现变得简单。


依赖注入容器(Dependency Injection Container)

这是一篇关于Symfony依赖注入容器 Dependency Injection Container 的笔记,原文地址:http://fabien.potencier.org/article/12/do-you-need-a-dependency-injection-container


依赖注入 ( Dependency Injection )

这是一篇关于Symfony依赖注入(Dependency Injection)的笔记,原文地址:http://fabien.potencier.org/article/11/what-is-dependency-injection


Symfony2 启动流程分析

Symfony2 启动流程分析


使用Capifony对Symfony网站进行发布

以前一直使用Drupal来搭建网站,由于需要定制的代码量不是很大,所以每次修改都是直接用sftp传到服务器,再到Drupal后台清一下缓存。最近使用Symfony2进行开发,到了发布环节遇到了问题。Symfony代码的发布并不像其他CMS那么方便,因为更新代码后还需要assetic:dump,assets:install,cache:clear等一系列操作,因此每次更新往往需要登录到服务器去更新代码,运行清理cache的一系列命令。 capifony是针对Symfony开发的应用部署脚本,基于Capistrano。使用capifony只需要进行简单的配置,就可以很方便的将代码部署到不同的服务器上。


Centos Nginx PHP-FPM Mysql 服务器环境配置

  • In Linux
  • /
  • Posted 2011-02-15

此笔记基于Linode Centos 5.x 64 bit 系统,安装与配置LNMP服务器环境,此配置主要用于运行Drupal。