YP.Lam

YP.Lam

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

斐讯 N1 搭建私有 Kubernetes 集群运行 HomeAssistant

手上有几台闲置的几台斐讯 N1 刚好达到安装 Kubernetes 的最低硬件要求,于是趁着五一假期在家捣弄个“高可用”斐讯 N1 K8S 集群,用于运行 HomeAssistant


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。