请吃饭

请吃饭

这是一个app的名字,也是我使用中,对我影响比较大的一个app。

当然,你们会问,为什么会影响大?难道能解决了你的单身狗的问题?目前木有,但我相信应该快了。

你们又会在想?这个看来是个IM(yuepao)工具啊?好吧,在某些人的眼中,只要带有IM,他们就能当(yuepao)工具。

目前,使用这个app?我遇见了六个人。

第一次

当时在深圳实习,大学的朋友几乎没有在身边的,于是,我只能在家里宅着,或者自己一个人去野海滩吹吹满是腐烂味道的海风。

突然有一天发现了这个app,于是就想着看看,看看能不能遇到不一样的人,大家一起出来吃饭和聊天,毕竟IM工具带来的交流感实在是太差了。

有天,有人发了邀请,正好,那天我在家休息,所以点击赴约。简单聊了一下,发现那个地方我做公交要一个多小时。不过我还是去了,毕竟在家

我也没事干。

到地方之后,也迅速的找到了对方,对方带了自己的闺蜜过来,毕竟大家不认识,所以这点安全常识,我觉得选择赴约的女生,还是要有心理准备的,

毕竟不是所有的人都是绅士。

当时去吃了日本料理,那是我第二次吃日本料理。在吃的过程中,大家做了一些简单的介绍,虽然之前交流的时候,已经介绍过了。聊了聊,彼此的 工作,发现原来大家不再一个圈子里面,不过也发现,原来自己将自己封闭在自己所从事行业的圈子中。以至于自己不能对于圈子以外的人,有一个 深刻的了解(其实了解了,也许还真有卵用)

本来AA,不过我还是买单了,毕竟我觉自己吃的很开心。

吃完了,去看了电影,很烂的片子(好像是跑男的电影版),平时不太看综艺,突然去电影院,看综艺,也是然我有点不舒服,不过总体来说,我也才知道, 竟然有人会去电影院,看这个。这个当然是吐槽(我知道自己为什么没有女朋友了)

这次,美女请客。算是公平约会吧。

最后,各回各家,各找各妈。算是一个不错的体验。

第二次

当时从深圳回学校,在学校那几天,接了外包,所以工作也比较忙。有时突然闲了,想找个人吃饭聊聊,当然工科学校,整天就和周围的汉子吃饭,也没 什么好聊的(好吧,我承认,我就是想约一个妹子聊聊)。

打开App,发现,使用的人好少,毕竟,小地方。不过我还是找到了一个妹子,果断私信骚扰。不过了解一下,发现是同一个学校的,同一个年级。 那就约了一个时间,最终去吃了自助披萨(现在想想,为什么要吃自助披萨,我也不知道,可能自己没有表达,不想吃的意见吧)。

上了餐桌,两个人拿了好多,我知道自己的能吃等级,所以正常拿了些。不过最终还是那多了,太撑了(自助要的就是,扶墙进,扶墙出)。

后来,我们两个就成了,朋友,经常能在朋友圈里面扯扯淡。

第三次

上周,想想自己五一没事干,所以又想起了,请吃饭,果断下载,然后发送邀请,邀请一个人,五一带我出去玩,我请客。

应征的有几个人,第一个是某大学一个大二的同学,聊了聊,发现,不适合,我不想给人讲解人生的哲理,毕竟,我自己很爱讲这些,对我我那些,我很熟悉的朋友。

所以没答应。

到了周五上午,有人私信了我,问了具体的一些信息,不过下午发信息告诉我,闺蜜来了,不能来了,好吧,看了照片感觉很漂亮的一个妹子, 也是在互联网公司工作。

到了周六上午,她又发信息了,说朋友有事来不了了。问我有没有时间,我飞快的打下了我有时间(也许这时我得到了打字极限速度值)。

其中,妹子问了一个问题?

为什么你会在app上,请陌生的女生吃饭,这个问题你先回答一下?

这样的问题,我当然就直说了我的答案,我想认识新的朋友而已。

我先到了,然后开始等,前后等了一个多小时,个人感觉是礼仪常识,最好还是早到好点,并且不要让别人知道你等了很久,毕竟如果说了,人家总会过意不去的, 大家都很忙,让人久等确实不太好。不过见面之后,我觉得,等的值啊(想想我冒血的鼻孔)。

一个漂亮的妹子,站在我面前,穿着一件很合适的衣服(衣服的场合和搭配我这个lower)。

未到之前,也是马上到了,她让我买电影票了。我就买了。当时是一搜,发现距离我最近的电影院,要1.5KM.所以就定了一个小时以后的电影。

她到了,给我打电话,问我为什么?没有看见我,我说“我在D口”,她还说没看见,然后,我们核对了一下信息,发现我把约定的地方弄错了(想想我当时多尴尬,

不过电话里面说清了,见面也就不尴尬了)。然后我定的电影票,就在她说的地点。(这是智慧,本来想定3:25 的,但是一想,她要是因为其他原因来晚了, 那不就尴尬了)

见面,稍微称赞了一下我,“你是一个灵活的胖子”(让我自己哭会,别拦我)。

然后吃了一点简餐,等着电影上映,期间我们开始聊天。发现跟情商高的人聊天,真的很有趣,她不会让你陷入尴尬,除非自己作死。聊了工作,聊了旅行, 聊了家乡。很随意,很舒服,就想一个老朋友一个样。

电影看的是《北京遇见西雅图2:不二情书》,作为一个男人,我觉得我受不了生离死别,可能经历太多,也可能本来自己就多愁善感。

严重剧透::

也许,相伴一生,才是我想要的爱情,当老头和老太太,在婚礼生,讨论谁先离开时,老头说,我身体好,我应该比你离开的晚,你要是在下面等不及了。
你就先投胎吧。不要在遇到我这样脾气又不好,又倔的老头。

当电影中,背诵一些古诗时,觉得就是自己。古人的古诗,将我的情感描述的淋漓尽致。同样,我也是一个比较喜欢传统文化的人。

当老头去世了。骨灰带回湖南老家,撒入汨罗江。这一刻,我泪崩了。不过我最终使劲揉了揉鼻子,让眼泪没有流出眼眶。旁边的她,早已成了泪人。

电影结束

我们开始谈情说爱(讨论剧情)

然后她说,也许爱情只能在电影里面那样演。生活,不会给我们太多机会的。也许未来,爱情,也仅仅是等价物交换吧(电影台词意思)。

我说,人生只有一辈子,遇到一个差不多的人,努力过幸福的生活。彼此相濡以沫,这就是我的爱情。

我很幼稚,她很成熟,我们同岁。

我们接着,开始吃饭,讨论了工作问题::

她喜欢大公司,喜欢那种很规矩的工作环境。同样,她也对我目前的职业计划做出了指导,在她看来,IT行业似乎只要跳槽一条涨薪的路,并且要
有好的工作背景,比如在大公司呆过,比如公司规模一定要很大,很成熟。并且做好自己的螺丝钉。再过两年,她就回家了。准备嫁人,然后开始
新的人生旅程。

我的职业观点::

年轻人,要有点追求,大公司,流程化太严重,自己散漫管了,可能不适应,并且,自己感觉把公司当成了家, 天天加班,工作就是生活,所以对
公司的情感比较深刻,也可能是刚刚毕业,自己太过孤独,单身狗,回家也没什么事情。

结论点::

1. 自己必须承认,自己就是一个北漂,自己为什么来北京奋斗?
2. 总感觉自己是个孩子,自己不能承担一些重要的工作。
3. 工作就是工作,是生活的一部分,不是生活的全部。
4. 准备好简历,开始换一家大点的公司,将自己作为一个螺丝钉。好好的发挥自己的作用

不过最后一条,我可能不知道自己怎么处理了。也许这就是幼稚的表现。

最后,目送她上了地铁。

发送微信消息告别“到家了,给我说一下”。

第四次

今天出去溜达,从住的地方,溜达到了雍和宫。出了一身汗,不过感觉很棒,我喜欢漫无目的的行走。

去雍和宫磕了好多头,菩萨太多了,都有点磕傻了。

逛了两个多小时,找个地方休息。

突然有人发消息,我看了一下,然后回复了一下。

之前和她聊过,不过因为时间问题,我取消了。大体说了一下时间,地点,然后我就到了约定地点等待。

妹子带她的闺蜜来了,两个大四的学生,刚开始有点尴尬,不过我还是慢慢的把自己放到了一个学长的位置。

聊聊天,扯扯蛋,就像和自己的同学一样。

吃火锅点菜,也可能是比较拘谨,点菜时,我让先点,不过她们也没点什么,我就自己点了,然后问问她们的意见。

吃饭时,我也尽量找找话题,讨论一下她们实习的事情,我工作的内容,以及这两天发生的“魏则西”问题。

吃完去结账,妹子说要AA,我说可以报销(能不能报销,还不知道),所以自己就刷卡结账了。然后送她们回学校,

路上扯扯自己在北京的一些遭遇,然后感觉自己就像一个学生一样(死不要脸,装一下年轻人)

送到学校,其中一个妹子说,她要去趟商场,我正好顺路,就和她一起去了。路上,聊聊减肥的事情,送到地点,她去找朋友,我回家。

回家发微信告诉她,我要开始减肥,她给了鼓励,我就换了衣服,绕着小区跑了一圈,然后从楼梯爬上22楼到家。

总的来说

我觉得,认识一个活生生的人,比在IM中表情飞来飞去会有更大的收获。

声明

提到的应用,和本人没有任何关系,我仅仅是一个使用者,当然,这份随笔,我也会给官方发送邮件。

改进意见

  1. 请吃饭有了,可以适当的加上请看电影,这样对单身狗的影响可能更大。
  2. 谨防发生不安全事故,毕竟社会流氓多,一些必要的提醒信息,还是要发送给女性用户。

rust linux 初体验

rust linux 初体验

就在昨天rust发布了1.0版本,开始了自己正式的linux rust 之旅

四月多回学校之后,开始在闲暇时间接触rust,当初想要学习rust的原因,个人觉得自己缺一门语言,即使现 在的python写的还成(自己的代码很垃圾,感觉有点不要脸了)

  1. python的性能问题,这个都是大家老生常谈的事情,经常在写脚本时,处理一些数据,但是python运行时 间有时达到了半个小时以上,尽管有各方面的问题,但是自己也是明确的感觉到了python的性能问题,而不是从 他人那里知道的,自己实践过才能知道,自己为什么要做什么

  2. python跨平台问题,尽管你可以说python是完备的语言,跨平台问题就不是问题,但是当你要写一个桌面 应用程序时,你就要开始选择是使用pyqt,还是pytk ,即使选好了,开始写也是感觉不太完美(好吧其实这个不算理由)

  3. 技术在不断的发展,2010年安卓还是刚刚起步的样子,现在已经发展到了这样的地步,不得不说,如果一门 新的技术出现时,我们没有去学习,自己可能就会脱离这个快速发展的行业,rust的出现,让我不用再回去学习c++了, 可能真是个人愚钝,不能很好的学习好c++,rust的出现,让我有了一个更好的选择机会

个人实践

rust-lang下载对应版本,之前在win7 64 位下写程序,但是有个gcc 依赖问题,耗费了好久也没有解决,于是最终放弃了win7 64平台,在虚拟机上跑rust

全文例子在linux ubuntu 14.04下通过

  1. 安装

    rust的源码编译安装是官方给出的方案,本人能力有限,所以源码安装到了最后失败了,最后使用二进制包安装

    下载下来之后解压一下,其中有个install.sh 这个是安装脚本

    sudo bash install.sh
    

    等待一下,就能安装成功了

    还有一种安装方式

    sudo  curl -sSf https://static.rust-lang.org/rustup.sh | sh
    

    下来开始检测linux是否安装成功

    xxxx@ubuntu:~$ rustc -V
    rustc 1.0.0 (a59de37e9 2015-05-13) (built 2015-05-14)
    

    成功安装完成

    rust的包管理器使用了cargo这个软件,在我们安装rust的时候,cargo已经安装了

  2. hello world

    我们开始写第一个rust程序

    mkdir -p code/rust
    cd code/rust
    

    创建一个first.rs 文件,

    fn main(){
        println!("hello {}","world")
    }
    

    保存退出执行:

    rustc first.rs
    

    如果没有错误会编译完成,产生一个first的可执行文件,如果在win下产生一个first.exe

     ./first
     hello world
    

    伟大的hello world 完成了

    想要写更多的东西,就去看看rustbyexample

  3. cargo的使用

    在python中我们要使用一个非标准库的包时,比如requests,就要使用pip来安装这个包

    在rust中,同样我们也会有这样的需求的

    cargo这个是一个极佳的包管理器

    cargo new site-demo
    

    这个时候我们能看到产生了site—demo的文件夹

    .
    ├── Cargo.toml
    └── src
    └── lib.rs
    
    1 directory, 2 files
    

    当前有这些文件,在src的文件夹下创建一个main.rs文件,文件夹目录

    .
    ├── Cargo.toml
    └── src
    ├── lib.rs
    └── main.rs
    
    1 directory, 3 files
    

    然后编译:

    cargo build
    

    再次看目录结构:

     .
    ├── Cargo.lock
    ├── Cargo.toml
    ├── src
    │   ├── lib.rs
    │   └── main.rs
    └── target
        └── debug
            ├── build
            ├── deps
            ├── examples
            ├── libsite_demo.rlib
            ├── native
            └── site-demo
    
    7 directories, 6 files
    

    出现了一个site-demo的可执行文件(在win下是site-demo.exe)

    执行项目:

    cargo run
    
        Running `target/debug/site-demo`
    hello world
    

    这可以就算是一个一个项目的雏形了

    当一个项目稳定时,或者一些功能开发完时,我们就要发布最终的版本了,运行:

    cargo build --release
    

    再看目录结构:

     .
    ├── Cargo.lock
    ├── Cargo.toml
    ├── src
    │   ├── lib.rs
    │   └── main.rs
    └── target
        ├── debug
        │   ├── build
        │   ├── deps
        │   ├── examples
        │   ├── libsite_demo.rlib
        │   ├── native
        │   └── site-demo
        └── release
            ├── build
            ├── deps
            ├── examples
            ├── libsite_demo.rlib
            ├── native
            └── site-demo
    
    12 directories, 8 files
    

    文件有点多,这个就是cargo的基本使用

  4. 使用cargo来管理第三反包:

    个人是做web后端开发的,所以就用了rust的web框架,来看看rust的web框架

    1. iron
    2. nickel

    都可以试试

    使用iron创建一个hello world(好吧,貌似只会写这些)

    我们在刚刚创建的项目中继续开始,打开Cargo.toml:

    [package]
    name = "site-demo"
    version = "0.1.0"
    authors = ["22too"]
    

    看到了刚刚的信息,版本号和作者,我们在其中添加一下信息:

    [dependencies.iron]
    version = "*"
    

    最终变为:

    [package]
    name = "site-demo"
    version = "0.1.0"
    authors = ["xxx"]
    
    
    [dependencies.iron]
    version = "*"
    

    这个时候,表示我们把依赖的包iron添加到了项目中,但是这个iron又会依赖其他的项目?在iron的 cargo.toml中添加了依赖,所以我们仅仅添加当前依赖就行了

    编译一下:

    cargo build
    

    报错了:

     Updating registry `https://github.com/rust-lang/crates.io-index`
     Downloading groupable v0.2.0
     Downloading regex v0.1.30
     Downloading mustache v0.6.1
     Downloading hyper v0.3.16
     Downloading nickel v0.4.0
       Compiling regex v0.1.30
       Compiling groupable v0.2.0
       Compiling mustache v0.6.1
       Compiling openssl-sys v0.6.2
    Build failed, waiting for other jobs to finish...
    failed to run custom build command for `openssl-sys v0.6.2`
    Process didn't exit successfully: `/home/xxx/workspace/site/target/debug/build/openssl-sys-5040130ff99796a0/build-script-build` (exit code: 101)
    --- stdout
    .
    .
    .
    running: "cc" "-O0" "-c" "-ffunction-sections" "-fdata-sections" "-m64" "-fPIC" "/home/xxx/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.6.2/src/old_openssl_shim.c" "-o" "/home//workspace/site/target/debug/build/openssl-sys-5040130ff99796a0/out/src/old_openssl_shim.o"
    
    
    command did not execute successfully, got: exit code: 1
    
    
    
    --- stderr
    /home/xxx/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.6.2/src/old_openssl_shim.c:1:26: fatal error: openssl/hmac.h: No such file or directory
     #include <openssl/hmac.h>
                              ^
    compilation terminated.
    thread '<main>' panicked at 'explicit panic', /home/xxx/.cargo/registry/src/github.com-1ecc6299db9ec823/gcc-0.3.5/src/lib.rs:384
    

    在openssl开发库这里报错了,查了一下,是说没有这个库,于是安装:

    sudo apt-get install libssl-dev
    

    继续执行:

    xxxx@ubuntu:~/workspace/code/rust/site-demo$ cargo build 
    Updating registry `https://github.com/rust-lang/crates.io-index`
    Compiling lazy_static v0.1.10
    Compiling pkg-config v0.3.4
    Compiling gcc v0.3.5
    Compiling traitobject v0.0.1
    Compiling matches v0.1.2
    Compiling unicase v0.1.0
    Compiling typeable v0.1.1
    Compiling traitobject v0.0.3
    Compiling modifier v0.1.0
    Compiling bitflags v0.1.1
    Compiling rustc-serialize v0.3.14
    Compiling libc v0.1.7
    Compiling httparse v0.1.2
    Compiling error v0.1.7
    Compiling unsafe-any v0.4.1
    Compiling time v0.1.25
    Compiling openssl-sys v0.6.2
    Compiling typemap v0.3.2
    Compiling log v0.3.1
    Compiling num_cpus v0.2.5
    Compiling plugin v0.2.6
    Compiling mime v0.0.11
    Compiling openssl v0.6.2
    Compiling url v0.2.34
    Compiling conduit-mime-types v0.7.3
    Compiling cookie v0.1.20
    Compiling hyper v0.5.0
    Compiling iron v0.1.17
    Compiling site-demo v0.1.0 (file:///home/xxxx/workspace/code/rust/site-demo)
    

    完成依赖库的安装,下来开始写web版的hello world,打开src/main.rs文件,将这个例子写入

    extern crate iron;
    
    use iron::prelude::*;
    use iron::status;
    
    fn main() {
        fn hello_world(_: &mut Request) -> IronResult<Response> {
            Ok(Response::with((status::Ok, "Hello World!")))
        }
    
        Iron::new(hello_world).http("localhost:3000").unwrap();
        println!("On 3000");
    }
    

    编译一下:

    cargo build
    

    编译完成:

    .
    ├── Cargo.lock
    ├── Cargo.toml
    ├── src
    │   ├── lib.rs
    │   └── main.rs
    └── target
        ├── debug
        │   ├── build
        │   │   ├── openssl-sys-5040130ff99796a0
        │   │   │   ├── build-script-build
        │   │   │   ├── out
        │   │   │   │   ├── libold_openssl_shim.a
        │   │   │   │   └── src
        │   │   │   │       └── old_openssl_shim.o
        │   │   │   └── output
        │   │   └── time-e758cbe877e9589d
        │   │       ├── build-script-build
        │   │       ├── out
        │   │       │   ├── libtime_helpers.a
        │   │       │   └── src
        │   │       │       └── time_helpers.o
        │   │       └── output
        │   ├── deps
        │   │   ├── libbitflags-518ea12e21428edd.rlib
        │   │   ├── libconduit_mime_types-1e81c78d29a43be5.rlib
        │   │   ├── libcookie-06b0342919872728.rlib
        │   │   ├── liberror-d564459ef07110c0.rlib
        │   │   ├── libgcc-982b24959a427c6e.rlib
        │   │   ├── libhttparse-262bba09b9a8af87.rlib
        │   │   ├── libhyper-7af3be4b39937ea7.rlib
        │   │   ├── libiron-87b54b416aeb130f.rlib
        │   │   ├── liblazy_static-953c0e8789f76850.rlib
        │   │   ├── liblibc-674726c388d62fa2.rlib
        │   │   ├── liblog-54cf393d3c69686f.rlib
        │   │   ├── libmatches-68db25b520030534.rlib
        │   │   ├── libmime-e3d384f950d18291.rlib
        │   │   ├── libmodifier-43745f03a85dbd92.rlib
        │   │   ├── libnum_cpus-51b2c6c8fecf9ef6.rlib
        │   │   ├── libopenssl-a36d86f1beea2185.rlib
        │   │   ├── libopenssl_sys-5040130ff99796a0.rlib
        │   │   ├── libpkg_config-915289378d7b38e9.rlib
        │   │   ├── libplugin-3a7a2e6890e6fef2.rlib
        │   │   ├── librustc_serialize-9ef26f158d5284e0.rlib
        │   │   ├── libtime-e758cbe877e9589d.rlib
        │   │   ├── libtraitobject-5421cd207a7a63b6.rlib
        │   │   ├── libtraitobject-dc1e70e5c4501fdd.rlib
        │   │   ├── libtypeable-e1c7f5ec8654ad3e.rlib
        │   │   ├── libtypemap-3869793a80fd19d6.rlib
        │   │   ├── libunicase-29c711cff0d04b16.rlib
        │   │   ├── libunsafe_any-a082092056257a0f.rlib
        │   │   └── liburl-beb2c5952735425a.rlib
        │   ├── examples
        │   ├── libsite_demo.rlib
        │   ├── native
        │   └── site-demo
        └── release
            ├── build
            ├── deps
            ├── examples
            ├── libsite_demo.rlib
            ├── native
            └── site-demo
    
    18 directories, 44 files
    

    看到了无数的文件,当前release中的可执行文件依旧是刚刚我们执行的hello的可执行文件,不是这次生成的,为了消除歧义,在执行一次编译:

    cargo build --release
    Compiling unicase v0.1.0
    Compiling modifier v0.1.0
    Compiling httparse v0.1.2
    Compiling gcc v0.3.5
    Compiling typeable v0.1.1
    Compiling rustc-serialize v0.3.14
    Compiling pkg-config v0.3.4
    Compiling lazy_static v0.1.10
    Compiling bitflags v0.1.1
    Compiling traitobject v0.0.3
    Compiling libc v0.1.7
    Compiling matches v0.1.2
    Compiling traitobject v0.0.1
    Compiling error v0.1.7
    Compiling unsafe-any v0.4.1
    Compiling num_cpus v0.2.5
    Compiling log v0.3.1
    Compiling time v0.1.25
    Compiling openssl-sys v0.6.2
    Compiling typemap v0.3.2
    Compiling mime v0.0.11
    Compiling plugin v0.2.6
    Compiling openssl v0.6.2
    Compiling url v0.2.34
    Compiling conduit-mime-types v0.7.3
    Compiling cookie v0.1.20
    Compiling hyper v0.5.0
    Compiling iron v0.1.17
    Compiling site-demo v0.1.0 (file:///home/xxxx/workspace/code/rust/site-demo)
    

    完成编译,现在的release已经是web的了

    运行:

    cargo run
    
      Running `target/debug/site-demo`
    

    在浏览器查看:

    hello world
    

    基本结束

postgresql nosql sqlalchemy的使用

postgresql nosql sqlalchemy的使用

一直想要使用nosql,但是发现自己没有使用场景,于是就没做太多的练习,闲来无事试试这个折腾一下自己

在postgresql 9.4 版本上加入了nosql属性,可以支持jsonb(我也不懂,仅仅知道是json格式)。

在sqlalchemy 1.0版本中也加入了对postgresql nosql属性的支持,不过个人感觉自己写的nosql感觉和 sql没什么区别了,同样是使用唯一键值对应,不过就是将数据表的列去掉了,现在的感觉仅仅需要两列,就能完 成自己想要的东西,唯一主键和json数据

个人理解中的nosql和sql

sql,举例来说,这个用户有username,password,id 这些固定的属性,注册的网站的用户都有这些属性, 每个用户唯一对应,当这个用户成长一段时间之后,他有了自己的关注者,建立一张关注对应表,如果产生关注 关系,我们就把用户的信息放到关注表中,这样用户的关注关系就会很明确,这些信息会伴随着用户的整个存在 周期

突然我们要举办一个活动,这个活动个个别用户有关,或者仅仅和网站有关,这时我们同样可以建立一 个数据表,将需要的所有东西全部建立成为一一对应的关系,这次活动结束之后,这时我们可能仅仅需要一个统计 结果,数据之类的东西可能就以后几乎不会用到,每次活动的形式被复用的可能性极小,这样就会导致最终出现无 数的杂乱的数据表,比如 table1,table2,table3,直到有一天出现自己都不知道具体是什么东西了,因为 在传统数据库中,线上环境删除数据表,这种行为还是要不得的

这个时候我们nosql,可以帮助我们解决这些问题,现在我们重新设计活动,应用举办了一个活动A,有几百个用 户参与了这个活动,就把这几百个用户id信息存一下,用到的统计资料存一下,将数据信息放到以id为key,活动 统计信息为value的json串中,下次再开一个活动,继续这样使用,这个用户参加活动,我们直接写入到nosql中, 参加多次活动,我们就给他的value加上多次活动的信息,这样最终的到的结果是设计最简单的,但是key/value 的查找方式是最快的。

下面是postgresql nosql sqlalchemy代码实例:

创建属于自己的linux命令

经常使用ssh或者使用需要随时登录mysql,总是需要一步一步的输入命令然后输入,输入密码,即使这样的一个动作,敲得时间长了,我就烦了,在想能不能使用python写一个,然后在任何位置都能直接登录或者执行登录输入密码

直接登录这样的事情,我暂时没有做,我做成了链接到你的ssh服务器,然后输入密码,好吧,我只是想玩玩,感觉仅仅提高了我百分之零点一的工作效率。

通常我们会这样做

ssh 888@www.888.com

然后输入密码,尽管可以自动提示,但是每次大这样几个字,我还是觉得有点多

我希望这样

888

然后输入密码,完成登录

使用python实现,线上目录结构

├── go
│   ├── __init__.py
│   └── go.py
└── setup.py

看看setup.py的源码

from setuptools import setup

setup(
        name="Sshgo",
        version="0.1.0dev",
        packages=["go"],
        entry_points={
            "console_scripts":"""
                888 = go.go:main
            """,
        },
)

我们创建了这样一个文件,name表示这个软件的名字,也就是你使用pip list查看到的名字

`version表示版本号,packages表示你的包名,`entry_points 里面的东西就是你的命令名字和你的包名和执行函数

我们看看go.py里面的东西,

import os

def main():
    os.system("ssh 888@www.888.com")

这个时候我们就完成了我们的命令创建

python setup.py install

完成安装,现在就可以使用888命令了

代码地址 这个也是一个例子

python自然月和自然周的处理

在创建一些统计数据的是时候需要处理每个自然月和自然周之类的问题,比如老板告诉你说需要前四周的自然后周用户的增长分析数据,或者是需要统计以后每个自然月的pv数量,这些问题都是需要使用自然周来处理的,而不是按照七天或者三十天

自然周处理

  • 知道当天是星期几
  • 如果今天不是星期天,假设是星期三,就是说三天前就是上一周
  • 然后我们可以知道十天之前就是上一个星期一
  • 得到开始时间,得到结束时间,然后就可以使用sql语句得到你要的数据了

```

def get_week():
    today = date.today()
    week = today.isoweekday()
    if int(week) == 7:
        return 0
    return int(week)

```

自然月处理

  • 得到当前是几月,然后减一就得到上一个月是几月了
  • 如果是1月,那直接指定上一个月就是12,
  • 然后查看这一年是不是润年,如果是拿二月就是28天,
  • 如果月份是1,3,5,7,8,10,12则就是31天,其他的为30天
  • 得到这个月开始的一天,得到最后的一天,使用sql就能得到数据这个月的统计数据了
class MakeTime(object):

need = localtime()

def get_year(self):
    if self.need.tm_mon == 1:
        year = self.need.tm_year - 1
    else:
        year = self.need.tm_year
    return year

def get_month(self):

    if self.need.tm_mon == 1:
        month = 12
    else:
        month = self.need.tm_mon - 1
    return month

def get_february_day(self):

    if self.need.tm_year / 400 == 0:
        day_2 = 29
    elif self.need.tm_year / 100 != 0 and self.need.tm_year / 4 ==0:
        day_2 = 29
    else:
        day_2 = 28
    return day_2

def get_day(self):

    if self.get_month() in (1,3,5,7,8,10,12):
        day = 31
    elif self.get_month() == 2:
        day = self.get_february_day()
    else:
        day = 30
    return day

def get_need_month(self):
    start_day =  datetime(year=self.get_year(),month=self.get_month(),day=1)
    end_day = datetime(year=self.get_year(),month=self.get_month(),day=self.get_day())
    return start_day,end_day

死锁(笑话)

我工作是电话客服。

今天,工作上出了点问题,我要打给公司里的另一个电话客服解决。

我们在电话里把事情说明白了。

但公司里的规章是电话客服绝对不能先挂电话。

于是我俩都不能挂电话,就一直拖着。

最后,我们都不得不找上级请示,才能挂掉电话

两天时间将服务器配置完成


今天最后的时候我差点就卸载了我的阿里云服务器,原因是我使用的debian的python 版本为2.7.8,但是debian的是2.6.6,我自己就安装了2.7.8安装顺利,一切我以为要结束了,但是一切的恶梦才刚刚开始

安装完成之后发现我的pip的model全部在2.6.6下面,但是我想要在2.7.8下面,但是无所谓我不去理会,因为我遇到无数这样的情况,最终决定在2.6.6 下面运行自己的软件

  • 问题开始出现了,我使用的markdowm 模块有一个函数提示说不存在,我去安装时候发现这个东西仅仅存在于python2.7版本,
  • 于是开始折腾,你们懂得,我就想要所有的pip安装的软件全部可以被python2.7.8使用,看到有使用软连接什么的?开始实践
  • 于是悲剧了,我的pip 总是告诉我说,缺少 from pkg_resources import resource_stream
  • 我开始卸载我的pip,重新安装,但是发现不行,还这个问题,即使使用 apt-get remove --purge 。依旧不好使,于是我相当了,easy_install 但是他也出问题了,即使重新安装也同样不好使,最终放弃
  • 下来我想到了阿里云有ubuntu14.04的,我就想要换服务器,因为我的服务器里面几乎是空的除了一些配置文件,但是我知道自己疯了,我最终决定出去一下,不要碰电脑,要不我一定会从楼上跳下去的

最终回来时候相到了解决方案,更改系统库,这个很危险不是必要最好不要做,我该的仅仅时markdown的一个函数,

sudo python2.6 server.py

于是最终在服务器上跑了起来

总结一下这次配置

  • 不要盲目的在一个问题上面兜圈子
  • 遇到问题停止思考,吃点东西,出去一会
  • 经常总结,不断学习