====================
== Hi, I'm Vimiix ==
====================
Get hands dirty.

Golang实现Google在RTB广告中价格加密方案

solution golang rtb

RTB

RTB 广告是一种实时竞价广告,就是在针对每个广告位有展示机会的时候,会实时多方竞价,价格最有优势的广告主会竞得这次展示机会,在媒体测在拿到素材的时候,需将本次成交的价格,上报给指定的监控服务器,这时就需要将实时价格按照指定的加密方案加密后,替换 GET 链接中的请求参数中的价格宏来上报。

官方给出的源代码有 Java 和 C++ 版本, 下载地址: https://code.google.com/archive/p/privatedatacommunicationprotocol/source/default/source

本文主要通过 golang 来实现的 google 的价格加密方案

Read more...

Mac 升级10.12.6 mvim 打开文件报错

solution mac mvim

当昨天把 Mac 升级了 10.12.6 Sierra 以后,mvim 打开文件的时候就开始报错,使用该方法已解决~

报错信息

dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
  Referenced from: /usr/local/Cellar/macvim/8.0-146/MacVim.app/Contents/bin/../MacOS/Vim
  Reason: image not found
[1]    33114 abort      mvim -v
Read more...

Golang如何确保一个类型实现了某个interface

note interface golang

在 golang 中,接口(interface)代表一种『协议』存在,它是一个声明了多个方法的集合。

接口是被隐式实现的,也就是说,我们在开发中定义一个类型(type)的时候,不需要声明这个类型实现了哪个接口。在使用的时候往往通过断言来的 ok-idom 来进行类型判断该类型是否实现了目标接口,放置调用方法失败抛出 panic:

if value, ok := AType.(BInterface) {
  fmt.Println("ok")
} else {
  fmt.Println("no")
}

如果断言失败,那么 ok 的值将会是 false,但是如果断言成功 ok 的值将会是 true,同时 value 将会得到所期待的正确的值。

Read more...

HLS视频加密

note video encrypt ffmpeg hls

最近在做视频管理后台,主要提供点播服务,涉及到需要对视频进行加密处理以防止视频被随意下载。

调研了一番之后确定使用 HLS(HTTP Live Streaming) 基于 HTTP 的流媒体网络传输协议技术来处理视频。

所以本文主要记录关于学习 HLS 视频加密技术的笔记

为什么要加密?

简单的说就是:增加获取被加密资源的代价。对于视频这种资源来说,绝对的加密就是不要上线给人看,但那是不可能的,因为提供的服务就是给人看视频,只要上线,别人就可以通过各种手段解密或者简单的录屏的方式来传播,所以目前俩看,不存在绝对的加密。只要让恶意的人获取源视频的代价很大,就可以阻挡绝大多数的不法分子。这样,加密的目的也就基本达到了。

Read more...

获取存储在又拍云CDN中视频的时长

note video CDN 又拍云

前置条件

  • 可用的账户

  • 安装又拍云 Python 版本的 SDK:

pip install upyun

(官方代码开源地址:https://github.com/upyun/python-sdk/ )

Read more...

快速切换本地Git用户记录

git tool bash

现在大部分的科技公司开发模式,都是基于 Git 进行多人协作开发。所以,对于我们每一个开发者来说,Git 的操作就是必不可少的技能了(不是锦上添花,而是必不可少)。对于 Git 的操作,不是本次记录的内容,网上的教程可以在官网找到。

今天我想记录一下我本机多用户管理的一点小操作。

当每进入一家新公司的时候,总会在新公司领到一个新的公司邮箱,基本上这个邮箱也就是你在公司期间进行代码开发的 git 账户。这时候,加上我们平时在 GitHub 的账户,就会有两个账户需要切换使用。

下面是我个人的一点小技巧记录,不一定是最好的,但只要自己用着方便就 OK,如果此时看文章的你有好的方法的话,可以请在讨论区交流。

Read more...

从七牛云到阿里云的自动化迁移代码说明

Python tool

前几天叙事性的写了一篇,有点像日记,这篇分析一下代码逻辑,便于以后回顾。

工具

  • python3.5
  • 顺手的 IDE(轻量级推荐vscode
  • qiniu/qshell (本文是基于 mac 系统开发,所以使用 qshell 的 mac 版本,读者请根据自己的系统下载,也可以直接跳至文末,下载本文源码,源码中 tool 文件夹中已经下载好了 mac 下的工具。这个工具只有一步使用到,所以如果只是使用一下,可以不用研究他的所有指令)
Read more...

七牛云数据自动迁移到阿里云OSS

Python tool migrate

背景

近期收到两封七牛云发来的邮件:

测试域名回收通知

您的账号 xxx 在七牛云融合 CDN 加速平台有以下测试域名还剩 7 个自然日会被系统自动回收

由于,我博客所有的图片文件都是存储在七牛云的,这个域名也使用了一年多了,怎么突然要回收呢?

上网一搜才知道,大概是有什么不法分子之类的,使用七牛云的免费空间传播色情暴力之类的内容,被 Godday 制裁了,现在新申请的 bucket 只能使用一个月,要想绑定域名,还得备案操作。俺这小博客,也就自己玩玩的一个国外服务器,也备不了案啊。

无奈,看网上很多人都是被回收了才知道自己的图片都访问不了。还好我习惯性的看这些推送邮件,给自己留了一周时间用来备份转移。既然免费的不好用了,微博之类的图床不好迁移,所以就买了一年阿里云的 OSS 服务。

虽然我的图片还算不是很多,但要是一张一张手动下载再上传到阿里云,也是不小的工作量,而且太浪费时间了。

Read more...

pipenv错误解决:TypeError: "module" object is not callable

Python note pipenv solution

软件版本

今天在折腾一台新的云主机,所以我在安装环境的时候pippipenv都选择安装了最新版本

注:正是这两个版本配合才会出现下面的报错,旧版本或以后的新版本的 Pipenv 不会出现)。

具体如下:

// pipenv 的版本 2018.7.1
$ pipenv --version
pipenv, version 2018.7.1

// pip 的版本 18.1
$ pip --version
pip 18.1 from /usr/bin/python3.6/lib/python3.6/site-packages/pip (python 3.6)
Read more...

macOXS中使用matplotlib遇到的问题及探究

Python note matplotlib solution

第一次在 mac 系统上使用matplotlib库的时候,在执行的时候,往往会遇到下面这样的问题:

ImportError: Python is not installed as a framework. balabala....

解决方案

当然这个问题很好解决,网上有一搜就会找到如下两种解决方案:

第一种方案是在系统中设置

  • 假设你已经通过pip install matplotlib安装了 matplotlib,那么在你的根目录中会有一个名为〜/ .matplotlib的目录。
  • 在这个目录中创建一个matplotlibrc的文件 ,在里面添加一行代码:backend: TkAgg,保存退出即可。

总结为一行 shell 命令就是:echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc

这种方式可以设定整个系统的 matplotlib 渲染使用的引擎,但是不好的是,代码会变得不可移植,如果服务器很多,我们需要每一台机器都去设置这个参数,这时候就需要使用第二种方案。

Read more...
上一页 2 of 9 下一页