程序员与黑客

记录自余弦在qcon上的演讲程序员与黑客(1)防御就是提高攻击的成本架构思想一:黑客思维应该贯穿整个公司的业务[..->架构->研发->运维->..](理想状态技术团队每个人都有黑客思维)思想二:优美的架构一定是健壮的想象下生态系统有漏洞/被黑很正常快速自愈是关键思想三:优美的架构一定是处处优美的(金刚狼)...文档(小注释,大系统,接替)代码(代码龊漏洞也多)逻辑(逻辑不

C++ 的脚本语言:ChaiScript

ChaiScript 是一个可以方便的嵌在 C++ 程序里的脚本语言,相比于 V8(Google JavaScript)和 Lua 来说,它的用法要简单得多。ChaiScript 和 STL 一样只有头文件,缺点是编译慢,而且因为大量使用模板,编译就更慢。说明:本文示例代码一律假定已经 using namespace chaiscript。本文已经有些年头了,不代表 Cha

三栏布局的n种实现

本文主要讨论左右边栏固定宽度,中间栏填满其余空间的布局。至于其他类型,基本上也就是半斤和八两。每一种布局都会有个Demo,个人依然认为文章里帖代码并没有Demo来的直接。所以正文负责解释,源码参见Demo。其中讨论了这么多种(6种)布局,有以下理由:1是每种布局也都有他的毛病,没有十全十美的,每种布局也都有人在用。2是虽然有相对优秀的方案,但是不优秀的方案也有有用的东西在里

阿里云VPS搭建自己的的Heo博客

1. 博客的架构先搞明白Hexo博客从搭建到自动发布的架构,才能更好的理解我们每一步进行的操作。不然只跟着步骤过了一遍,却不知道为什么这么做。首先看这张架构图:整个流程就是本地将 *.md 渲染成静态文件,然后Git推送到服务器的repository,服务器再通过 git-hooks 同步网站根目录。2. 整个搭建流程第一部分: 服务器环境搭建,包括安装 Git 、Ngin

用 Django 零成本快速实现 API 服务

写后台的时候经常需要写数据接口,这时就需要用到序列化工具, 而默认到序列化工具对 Django model 的序列化支持有限。 同时 Django 本身的序列化工具我在使用时也觉得有诸多不便,因此我尝试自己写了一个快速序列化工具,帮助我快速简单的实现数据接口。Django Simple Serializer 是一个可以帮助开发者快速将 Django 数据或者 python

关于this的全面解析(上)

关于this的全面解析(下)页面链接this的调用位置调用位置就是函数在代码中被调用的位置(而不是声明的位置),寻找调用位置就是寻找“函数被调用的位置”,最重要的是分析调用栈(就是为了到达当前执行位置所调用的所有函数)。 function baz() { //当前调用栈是baz //当前调用位置是全局位置 console.log

密码学协议 门限

密码学协议 门限这是以前在Matrix67的博客上看到的,补充些我自己的理解背景设想:老大某天想要向某人传送一封密信,为了避免一个特工被抓了送信就失败了,于是他把密文加密,把密文和密钥都给了几个特工----这样挂了一个或者被抓了一个也没关系,只要还有别的特工送到就行了.但是,情报虽然是能比较大概率的送到了,由于这个情报是秘密情报,老大不希望它被泄漏在别人手里.一旦某个特工被

虚拟化实践

引言这里的虚拟化等于私有云。本文并非虚拟化的科普文章,主要将我们在私有云实践过程中的一些思想和遇到的问题拿出来跟大家讨论分享。我们虚拟化实践包含了传统的基于libvirt协议的KVM以及目前流行的docker。为什么要虚拟化虚拟化的目的各家公司原因应该都差不多,一般都是为了实现如下目标:* 资源交付效率**传统物理机的时代,一个服务器交付要经历找资源,网络配置,idc安装

对JavaScript对象数组按指定属性和排序方向进行排序

标签:JavaScript 对象数组 排序引言在以数据为中心的信息系统中,以表格形式展示数据是在常见不过的方式了。对数据进行排序是必不可少的功能。排序可以分为按单个字段排序和按多个字段不同排序方向排序。单字段排序局限性较大,不能满足用户对数据的关注点变化的需求,而多字段排序就可以较好的弥补这个缺陷。多字段排序,实现的方式从大的层面上可以分为后端实现和前端实现。后端排序后端实

简单的多选框选择功能js代码

最近没事写了个特别基础的多选框功能代码,代码如下: js部分: //获取所有class为checkbox的多选按钮(需要以下功能需要先写出对应功能的元素)。 var checkBoxList = document.getElementsByClassName("checkbox"),checkAll = document.getElementById("checkAll")

hackit小游戏writeup

我的博客游戏地址第1关地址chrome的查看源代码有点坑啊,居然不显示注释,找了半天,发现审查元素可以看到。。。简直巨坑。第2关地址有时候网页源码并不是唯一可以隐藏信息的既然这么说,那我猜可能在请求头里,打开开发者工具的network标签,刷新页面,在请求头里看到这样一行。Key:SDUH@HEADER第3关地址right,但还是有地方可以隐藏信息还是再看看请求头吧,没有明

PCTF 2016 writeup BASIC部分

我的博客0x01 base64?GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXGM3TINLGGY4DGNBXGYZTGNLGGY3DGNBWMU3WI===base32加密,Python解密即可。from base64 import *b32decode('GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXG

PCTF 2016 writeup WEB部分

PCTF 2016 算是一次训练赛,题目较多,很多是原题,时间长,是一次很好的提升姿势的比赛。然而我姿势太低以至于只能在赛后看看别人的题解自己摸索。。。0x01 PORT 51 WEB 100题目链接这题本来不难,然而我在校内网,端口一过路由就变了,导致一直没做出来,后来看到别人说拔路由我才反应过来应该上VPS做的。。。sudo curl --local-port 51 w

关于正则表达式,你想知道的一切

这里只讲在JavaScript中的正则表达式1: 如何创建一个正则表达式在JS中有 2 种方式创建一个正则表达式:1: 通过正则表达式字面量const pattern = /test/; 这里的双斜杠(//)就像字符串的引号一样(“”或者‘’)一样,用来表明它的类型,是必不可少的。2: 实例化一个RegExp对象 const pattern = new RegExp('te

[总结] js 模板引擎

嗯,这也是一个学习笔记,材料均来自网络,有改动。。文章主要分为三部分,第一部分通过实现一个简易的ERB模板引擎来介绍其原理,参考javascript模板引擎和实现原理,有改动,看了很多关于模板引擎的文章,就这一篇最通俗易懂,适合入门。第二部分介绍一个非常NB的模板引擎,参考JavaScript template engine in just 20 lines,超级简洁,仅2

XA 分布式事务研究

在开始讲解XA事务前,先引出一个例子来讲解这样比较容易理解XA事务。比如有一笔交易,在交易完成后,接受到到交易成功信息和扣款成功信息,代码如下:public void savePayOrder(PayOrder payOrder) throws Exception { try { ...//交易前预备逻辑 PayOrderRes

市长信箱邮件查询服务: 使用WebSocket实现增量抓取进度进度条的展示

使用WebSocket实现增量抓取进度进度条的展示自从上次全量抓取完所有市长信箱的所有邮件后, 过去了一个多星期,期间又有了很多新的信件产生. 如何抓取这些新邮件呢? 需要开发一个增量抓取的功能才能解决更新邮件的问题.我这次把增量抓取的按钮放到页面上,取名为"同步所有邮件".并在开始抓取后,页面上展示出当前增量抓取的进度.增量抓取的时间往往会超过10分钟,一般从页面获取当前

基于Docker搭建Hadoop集群之升级版

摘要: kiwenlau/hadoop-cluster-docker是去年参加Docker巨好玩比赛开发的,得了二等奖并赢了一块苹果手表,目前这个项目已经在GitHub上获得了236个Star,DockerHub的镜像下载次数2000+。总之,项目还算很受欢迎吧,这篇博客将介绍项目的升级版。一. 项目介绍将Hadoop打包到Docker镜像中,就可以快速地在单个机器上搭建H

WWDC 观后感

作者:Erica Sadun,原文链接,原文日期:2016-06-13译者:小铁匠Linus;校对:numbbbbb;定稿:numbbbbb今年,苹果的 WWDC 演讲在更新其产品线的同时并没有太多的惊喜和创新。虽然观众都在热情地回应,但我并不确定科技新闻会为此喝彩。我很喜欢 iOS playgrounds,它为教育机构(如斯坦福)提供了一种比看教程更好的方式。我自己写的