bookmark_border如果生活有低谷,那这就是低谷了

 

工作几乎没有,每天到公司看一天网页,写一点点代码,偶尔改几行bug,到点走人,回家玩6小时lol,凌晨3点睡觉。
这种生活也许称得上清闲,40年后过这样的生活的话我也许会满意。可问题是现在的我完全不能承受这种被搁置的生活,每时每刻都是煎熬。
我心里还是那个迫切需要吸收新知识新技术来维持快乐和满足的年轻人,但我的无力也显而易见——我很难扭转已经步入轨道的生活状态。借口也好什么也好,现在的事实就是如此。
现在手里唯一可以抗衡这股惯性的武器,就是“6月底完成demo和求职简历一起投出去”的这个决定。每天6小时lol,别说demo了,清醒地工作这个底线都快完不成了,但是有“截止日期”这个倒计时加速器在,我对完成demo还是抱有一定自信的。结果可能是各种妥协,比如放弃移动平台,只做html5版,甚至只放截图和描述,不提供在线访问的连接等等,但肯定会在妥协到某一步的时候完成demo。毕竟是有着“每一届寒暑假都能且只能在最后一天(在有一定偷懒的基础上)完成作业”的传奇般的男人,哇——哈哈哈哈。
在截止日期发挥功效之前的这段低谷,就让我用lol(和伏特加)麻醉自己吧!

bookmark_border一个混淆数字userid的简单方法

/* 

一个混淆数字userid的简单方法

效果是 encode: 1234 => 48915174

decode : 48915174 => 1234

*/ 

function encodeNumber( $number, $modulo, $prime ){
    return ( $number * $prime ) & $modulo; // &操作等价于取模
}

function decodeNumber( $code, $modulo, $primeInverse ){
    return ( $code * $primeInverse ) & $modulo; // &操作等价于取模
}

// 例:
// magic number 可以用在线工具事先算出来 http://planetcalc.com/3311/
$modulo = pow( 2, 26 ) – 1;
$prime = 7381371;
$primeInverse = 5555;

$id = 1234;
function show( $number ){
    global $modulo, $prime, $primeInverse;
    $encoded = encodeNumber( $number, $modulo, $prime );
    $decoded = decodeNumber( $encoded, $modulo, $primeInverse );
    print_r( [ 
        “id” => $number, 
        “encoded” => $encoded,
        “decoded” => $decoded,
    ] );
}
show( $id );

—————-  代码文字分隔线  —————-

有兴趣可以在 http://www.compileonline.com/execute_php_online.php 上演练一下,复制粘贴就好。

简单介绍一下。

出处是这里,我是从stackoverflow上看来的。原理是利用模逆元素的特性,blablabla。
模用2的幂减1是为了求模计算的效率。

限制是可以混淆的数字不能大于模,否则编码后的数值会有重复,或者说会从头开始新一轮循环。
另外这毕竟不是加密,用途类似base64吧,不过不会像base64那样一眼被人识破然后被轻易解读。