• 学习笔记:Continuation-passing Style

    |

    说来惭愧,虽然对于 CPS transform 这个概念略有耳闻(当时的理解是一种将普通递归调用变化为尾递归的方法),但是对于 CPS 这个概念还是在看轮子哥的文章 时才想起去详细了解。终究还是CS基础不牢。

    Definition

    In functional programming, continuation-passing style (CPS) is a style of programming in which control is passed explicitly in the form of a continuation. This is contrasted with direct style, which is the usual style of programming. Gerald Jay Sussman and Guy L. Steele, Jr. coined the phrase in AI Memo 349 (1975), which sets out the first version of the Scheme programming language.[1][2] John C. Reynolds gives a detailed account of the numerous discoveries of continuations.[3]

    简单来说,就是一种程序调用方式,在每次函数调用时通过传参决定下一步执行的内容。

  • 2016第一篇

    2016年的21天后

    我写下了这个标题

    只是为了

    测试一下博客的时间轴

    跨年之后

    是不是正常

    另外

    听说会换行的人

    都能写诗

  • WTF BCM43142 Bluetooth

    |

    This shit is not supported by any version of stock Linux.

    rfkill showed this device but cannot work at all.

    I found this post and this bug, using hex file in windows, but seems that i must rebuild kernel. F**k.

  • H大综合楼,一跃解千愁

    |

    -- fuck**u.hs

    import Data.List

    import Data.List.Split



    -- *大综合楼

    -- 一跃解千愁

    getFloor :: Int -> String -> String

    getFloor count char =

    "│" ++ fuck char ++ "│"

    where

    fuck = concat.replicate count

    build :: Int -> Int -> Int -> String

    build width height jump =

    concat (top : fuck ++ [ground])

    where

    top = '┌' : replicate (width * 2) '─' ++ "┐\n"

    ground = '┴' : replicate (width * 2) '─' ++ "┴" ++ replicate 10 '─'

    fuck = zipWith `++` (concat (replicate height floors)) overflow

    where

    floors = map (getFloor width) ["┌┐", "└┘"]

    body = [" ╰O╯\n", " /\n", " /)\n"]

    repl' p c = replicate c p

    overflow = replicate ((height - jump) * 2 - 1) "\n" ++ body ++ replicate (jump * 2 - 1) "\n"



    main :: IO ()

    main = do

    putStrLn "综合楼高 综合楼宽 飞翔层数"

    params <- getLine

    let [width, height, jump] = splitOn " " params in

    putStrLn $ build (read width :: Int) (read height :: Int) (read jump :: Int)

    putStrLn "*大综合楼\n一跃解千愁"

    hehe

  • 折腾论坛运维

    |

    杀一个运维不用枪

    接手了学校最大学生论坛的运维(听起来好屌然并卵),结果没想到是个天坑。

    然而,说到底,还是我图样。

    频繁502,数据库报错

    论坛服务器是阿里云一台2核2G内存的ECS,安装LNMP集成环境,运行了十余年,一度是X大学子网络信息交流的首选平台,数据量可观。然而最近数年呈现颓势,访问量下滑,相对压力,应该也不是很大吧!?

    从韩*处刚接手时,我试着ssh到服务器。

    结果。

    TMD。

    连。

    不。

    上。

    你大爷。

    enter image description here

  • 把多说整合进 React

    |

    由于使用了 React 构建 Single Page Application,多说那种通过每次页面加载完成后在header中插入script标签来实现评论框的插件无疑是不能直接用了,我的博客便有了长达数个月的无法评论状态。

    这种情况终于在10月的最后一天结束。

  • 重新启用https

    |

    之前因为误操作把老版站点的服务器给挂了【手残把iptables drop all了orz】,新版博客弄到了另一台服务器,于是便没有开启https。

    今天把证书弄了回来,于是重新开启了https访问。

    然而个人小站开https存粹装逼罢了= =

    开启https需要把证书放在指定的位置,然后配置nginx开启ssl

    server {
      listen 80;
      server_name hcyue.me www.hcyue.me;
      rewrite ^ https://$server_name$request_uri? permanent;
    }
    server {
        listen 443 ssl http2;
        server_name www.hcyue.me hcyue.me;
        include none.conf;
        location / {
            proxy_set_header X-Real-IP $remote_addr;  
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
            proxy_set_header Host $http_host;  
            proxy_set_header X-NginX-Proxy true;  
            proxy_pass http://127.0.0.1:4000/;  
            proxy_redirect off;  
        }
        location /static/ {
            alias [打码];
            expires 30d;
            autoindex on;
        }
        access_log  [打码]  access;
        ssl on;
        ssl_certificate [打码]/hcyue_me.crt;
        ssl_certificate_key [打码]/hcyue_me.key;
    }

    然后打开iptables的443端口

    iptables -A INPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT

    重启nginx,小绿锁就回来咯

  • 新版博客上线

    |

    从上个期末开始到上个星期,总算撸完了这个新版博客wwwww

    采用的是后端nodejs+mongodb前端react渲染的架构,其中后台使用的是顺便撸的web框架yue.js。前端本来也想造轮子,后来中了react的毒就用了react(比传统的渲染方便多了啊摔)

    大体目录结构附下。handler即路由处理模块(controller层);model即m层;view中放置的是html静态文件和jade模板文件。

    整个博客的前端是spa形式,使用React-Router实现前端路由控制.

    文本部分的样式使用了Typo样式,不得不说中文排版确实挺赞的

    style使用sass编写,调用了轻量的sassCore库(其实只用了clearfix)

    构建最后采用的是gulp,简单粗暴,嗯。

    目前blog功能较简单,只实现了基本的curd和登录登出。计划下一个实现标签云(现在的标签只是摆看。。。)

    ├─handler
    │  ├─admin
    │  └─api
    │      └─article
    ├─model
    ├─public
    │  ├─img
    │  ├─script
    │  └─style
    ├─src
    │  ├─script
    │  │  └─components
    │  │      └─_partial
    │  └─style
    │      ├─sassCore
    │      └─_partial
    └─view
        └─admin
  • 从校园网里扒了点照片

    怎么说呢,学校这个越权访问漏洞貌似并没有什么卵用。

    查看照片时候的search参数是学号,然后只要有登录的cookie就可以拿到任意学号的照片= =

    于是写了个python脚本把我们院新生照片全部扒下来了

    (欸好像韩师傅也干过这事)

    改天找个图床上传一下。