夏日再见, 隆冬再会

| 0 Comments

所有的开心与不开心都会随着季节的变迁而慢慢消逝...
想来我并不是对这里失去兴趣了, 而是每次感触满满的时候都是在工作时间, 呃, 好吧

我所有的来这里溜达留言的朋友们, 谢谢大家还记得我~
嗯, 我需要一点时间去忙活别的去,
所以, 继续的请个假, 咱们隆冬再会~
20140727004729181.png


opencv&Qt环境配置过程记录

| 6 Comments

我就找地记录下配置过程.

  1. 先下载opencv 官网http://opencv.org/

  2. 编译opencv需要cmake, so下载cmake吧 官网https://cmake.org

  3. 在Qt选项中--编译与运行cmake项中配置好cmake

  4. 用Qt打开项目opencv/source/CmakeLists.txt, 于是你会发现它哗啦啦生成一大堆东西.
    然后一般的教程就不往下说了, 于是就被坑了!!!
    好吧, 经过各种谷各种歌之后, 果然let's go!

  5. 生成完了后 用qt运行, 这个时候会调用mingW32-make来编译opencv

  6. 嗯最好加一下mingW32-make的环境变量.

  7. 编译好了后 进入qt刚刚生成的build-xxxxx的目录, 在项目中可以配置该目录

  8. 用 mingW32-make install 很快的就会安装好 安装好后文件在当前目录下的install文件夹内.

  9. 我们需要用到的就是 opencv源码包里 build/include (里面有opencv和opencv2文件夹)
    mingW32-make install命令生成的 install文件夹
    添加install文件夹下的xx/bin到系统path下。

  10. [开始使用opencv]

  11. 用qt创建一个新的控制台应用

  12. 修改pro文件的内容, 加入

    INCLUDEPATH += \
        D:/OpenCV/include \
        D:/OpenCV/include/opencv/ \
        D:/OpenCV/include/opencv2/
    
    LIBS += \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_calib3d310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_core310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_features2d310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_flann310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_highgui310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_imgcodecs310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_imgproc310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_ml310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_objdetect310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_photo310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_shape310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_stitching310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_superres310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_ts310.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_video310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_videoio310.dll.a \
        D:/OpenCV/mingw/x86/mingw/lib/libopencv_videostab310.dll.a
    
    //当然D盘什么的地址是我当前的盘符地址, 记得改一下嗷, 还有libs中 x.dll.a文件由于opencv版本不一样, 可能有差别
    
  13. 在main.cpp中添加一个测试代码吧

    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/imgproc/imgproc.hpp>
    
    using namespace cv;
    
    int main()
    {
        //声明IplImage指针
        IplImage*pImg;
        //载入图片
        pImg=cvLoadImage("e:/a.jpg",1);
        //创建窗口
        cvNamedWindow("my",1);
        //显示图像
        cvShowImage("my",pImg);
        //等待按键
        cvWaitKey(0);
        //销毁窗口
        cvDestroyWindow("my");
        //释放图像
        cvReleaseImage(&pImg);
        return 0;
    }
    

能运行就说明安装ok啦, 嗯, 我去玩opencv去了~


这年头,不能没网啊

| 1 Comments

在我苦盼的周末来临之际,各种原因之下,家里的路由器的电源,挂了。
于是,变成只有一条网线能上网且没有路由的苦逼局面。

尼玛,真是不知道,原来这年头,真的不能脱离网络存活了。
想写代码,发现有点超纲的知识要web上找资料;看看电影吧,都是online版;哦还有若干软件在网上等着我搬到碗里来。
这一断网,简直欲哭无泪。
啊啊啊啊啊~啊啊啊啊啊~
我的周末黄金的coding time啊~

给维修人员打电话,好吧,要一天后才来,还说这个电源很好买,让我们自己去买多快。
这一屋子懒得出门的人啊。
于是,无奈之下,把linux的笔记本做了wifi热点,win的台式躺了不能连网,好吧手头只剩下小mac能用了,哎,维修人员你啥时候来啊。
哭……

嗯,今儿母亲节,当麻麻的节日快乐。


实现一个竖向滚轮吧

| 1 Comments

嗯,其实在qt里有滚轮的控件,叫 ScrollBar ,在 Qt.labs.controls 1.0 包里,好吧,我就是闲的慌,想自己实现一个它的效果。=。=说起来汗颜的是,一开始看 Documentation 的时候,看到这个控件的几个属性,还各种的满不在乎,觉得尼玛这个设计好愚蠢。但当我实现了这个控件时,才发现,尼玛,我自己竟然也把这几个属性留出接口了,这真是,好尴尬啊……打脸啊……


分析下它的功能吧,仔细把玩了下竖向滚轮。

  • 滚轮的中间有一个滑块
  • 滑块占整体滚轮的比例跟文本区的可显示大小/整体文本大小有关
  • 滑块的显示高度跟当前可见文本区域在整个文本区域的位置有关
  • 滑块可以拖动的,拖动的时候会跟随鼠标的拖动方向移动
  • 滑块拖动的时候,它控制的文本也会同方向移动
  • 点击滑块上面的空白,页面会随着向上滚动,直至滑块到达鼠标位置
  • 点击滑块下面的空白,页面会随着向下滚动,直至滑块到达鼠标位置

其实,从描述上可以看到,如果就是简单的拿 Rectangle 堆出一个滚轮的话,它是一个三层结构。

三层结构大概的示意图

一开始我的第一反应是在中间的滑块上单独再有一个 MouseArea ,不过后来仔细琢磨了下发现其实那样设计会造成移动滑块的时候的处理变得更加复杂,其实那样设计除了看着舒心,并没有带来什么好处。所以,权衡之后,还是打算只用一个大 MouseArea 盖在上面,通过对鼠标坐标移动的信号来对不同的事件进行处理。

其实想通的话,整个滚轮实现起来并不难。不过有两个坑的地方,一个是按空白的地方,页面自动跑那里,我是靠了一个定时器来实现的页面滚动,通过定时页面高度自增自减。还一个地方其实就是滚轮移动比例到页面移动比例的换算千万别弄忘了,(。・`ω´・) 我一开始就忘记了,结果整个页面起飞了。


嗯,剩下这个控件很简单了,我依然将控件的逻辑部分和样式进行了分离,分别在 control 和 style 里,同时 control 里为了能够控制页面滚动,所以留了一个 Item 类型的属性,如果没对这个属性进行设置,会发现滚轮没有效果,但是不会报错的!

最终的大概效果。
控件的样子

代码如下:

control文件

//VerticalScrollBar.qml
import QtQuick 2.5
import QtQuick.Controls 1.3
import QtQuick.Controls.Private 1.0

Control {
    id: root
    implicitWidth: 10
    implicitHeight: parent.height

    style: Qt.createComponent("VerticalScrollBarStyle.qml", root)

    property Item handleItem // verticalscrollbar 控制的Flickable类控件,必须要设置哦,不设置滚轮是没有反应的
    property alias size: scrollbtn.height //滚轮的长度 height
    property alias position: scrollbtn.y //滚轮的高度 y

    property int __scrollState: 0 //-1向上滚 0不滚 1向下滚
    property int __scrollStep: 20 //按下空白时候的移动步长
    property double __offset: 0
    property bool __dragScroll: false //是否按下滚轮

    clip: true

    Timer {
        interval: 20
        running: !!handleItem
             &&__scrollState!==0
             && handleItem.contentY>=0
             && handleItem.contentY<=handleItem.contentHeight-handleItem.height
        repeat: true
        onTriggered: {
            if (!!handleItem) {
                handleItem.contentY += __scrollStep*__scrollState
            }
        }
    }

    Loader {
        id: backboard
        property Component __bkract //背景图案
        anchors.fill: parent
        sourceComponent: __style && __style.background ? __style.background : __bkract
    }

    Loader {
        id: scrollbtn
        property Component __scrollbtn //滑轮图案
        width: parent.width
        sourceComponent: __style && __style.scroll ? __style.scroll : __scrollbtn

        onYChanged: {
            if (y<mousearea.mouseY && y>mousearea.mouseY-height) {
                __scrollState = 0
            }
        }
    }

    MouseArea {
        id: mousearea
        anchors.fill: backboard

        property double oldY: -1
        onPressed: {
            if(mouseY<=scrollbtn.y) {//按住滚轮空白区域滚轮往上
                __scrollState = -1

            }else if(mouseY>=scrollbtn.y+scrollbtn.height) {//按住滚轮空白区域滚轮往下
                __scrollState = 1

            }else {
                __scrollState = 0
                __dragScroll = true
                oldY = mouseY

                __offset = !!handleItem? handleItem.contentY-oldY*handleItem.contentHeight/handleItem.height : 0
            }
        }
        onReleased: {
            __scrollState = 0
            __dragScroll = false
            oldY = -1
        }
        onPositionChanged: {
            if(!!handleItem && pressed && oldY!==-1) {
                var offsetMouseY = mouseY*handleItem.contentHeight/handleItem.height
                handleItem.contentY = __offset+offsetMouseY>=0? (__offset+offsetMouseY<=handleItem.contentHeight-handleItem.height? __offset+offsetMouseY : handleItem.contentHeight-handleItem.height) : 0
            }
        }
    }
}

style文件

//VerticalScrollBarStyle.qml
import QtQuick 2.5
import QtQuick.Controls 1.3
import QtQuick.Controls.Private 1.0

Style {
    id:style

    //背景样式
    property Component background: Rectangle {
        color: "#fcfcfc"
        Rectangle {
            width: 1
            height: control.height
            color: "#cccccc"
        }
    }

    //滚动条滚轮
    property Component scroll: Item {
        Rectangle {
            width: parent.width-4
            height: parent.height-4
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.horizontalCenterOffset: 0.5
            anchors.verticalCenter: parent.verticalCenter
            color: control.__dragScroll? "#777777" : "#bbbbbb"
            radius: width
        }
    }
}

嗯,就是酱紫简单就哦了,具体使用例子,请烦劳移驾github吧~[(๑→ܫ←)github传送门]


但求你也问心无愧

| 6 Comments

于是,再一次验证了,人果然都是惰性的。
习惯停下了,就这么习惯了。
大约是一个冬季,一字未落笔,好吧。
其实写的过程就是思考的过程,但是果然,我更喜欢思考,想明白了就懒于动笔。
这约莫是上学期间就积累下来的坏习惯了。

这个冬季真的发生了很多事。有的,想想总是很寒心,不过总算是尘埃落地。
……

上一个东家,是一个很小、很小、很小的创业公司。
在这个创业一词莫名火了的年代,我也算是跟了把潮流去感受了下。
嗯,简单形容就是,环境很艰苦,加班很常态……
我是想来吐槽来着。
一直是这样觉得,对于创业公司来说,idea很重要、团队很重要,但是boss最重要,或者说boss的想法、理念、思考最重要。idea不好,嘴来凑、技术来补;团队不好,大浪淘沙、终归是有合适的能留下的;boss没能力,那就真的…………呃,炒boss?洗洗睡吧。
很不幸的,上个老板就是这样的人。

他呀,也许是年龄的关系吧,幼稚、固执、想一出是一出。其实idea构想还不错,也确实是当下比较会流行的玩意,但是当时市面上已有不少同类app了,并且有一家同类刚刚获得比较大的投资。在这种情况下,好吧,我们的app并没有自己的特色,每天boss在公众号上孜孜不倦的卖萌以拉来用户、增加黏度=。=
其实也没啥,要是那么容易还叫创业嘛。
但问题是,他真的是想一出是一出。
一天说,我们做个网站xxx吧;一天说,嗯淘宝店要装修,我们要卖东西;一天说,要再上线个app……
我真的是无语的不得了,也跟他提了很多想法,毫不意外的被无视掉了。
这都不是事啊,最奇葩的是,某天突然说,从今天开始我们996吧,因为别的公司都这样……
还有,2月不是天数少么,他算工资的时候,竟然是按天数的,还刨去了法定节假日,我就去了!

其实,如果在做有意思的事儿,干活我心情好,这些我真的都不在乎。
但是,老板最爱做的事就是给你一活,半小时就问你一次“做完没?”、“还没弄完?”、“你怎么弄的这么慢?”、“这很难么?”。
一次次给人幼小的心灵不要脸的打击,我真的开心不起来啊,“你来干好不好啊,老板”。
嗯,还有就是尼玛我入职的时候问有社保的吧,他说有。
然后,嗯?亲,说好的社保呢?

说到底,不合适就散了吧,大家都轻松,我就是这么想的,于是春光明媚的3月,我就跟他说拜拜了。
我必须承认,当时没忍住,跟他撕逼了一场后,收拾东西,滚犊子了。
走之前,跟管财务的汉纸说,给我结一下工资呗,他说好,但是现在忙,晚点给我,让我先走吧。
我就这么信了,然后走了。
然后,就这么没信了,信了,了……
过程不想细说了,总之就是我每次给财物汉纸打电话他拒接,发微信他不回,各种说我走老板很生气,不让给我发工资;什么公司没钱,发不出工资,要分期……
我也是脾气好、包子呗,每次他说啥,我其实都特别体谅他,完了各种说好之后,我说行,然后他又骗了我。反反复复……
我跟他说,你在这样,我要去找仲裁了。他说,去呗,公司没钱,不给你发也是一样是想拖着你。
……

这事挺打击我的,真的,我没想过会遇见这样的人、这样的公司。我是那种特别看重承诺的人,一诺千金,我不会轻易答应别人,但是一旦答应,累死累活也会去完成。在整个过程中,他们各种答应我,各种我们说好了哦,然后就像耳畔吹过的风。
我也反思过,为何会这么轻易的相信他们的话……约莫是因为,我就是这样的人吧。

终归是有个好结果,在我准备好资料,做好仲裁的准备,最后一次打电话给他,明确的说了,今天解决不了我明天就去仲裁,2月工资数不对您也别发了我直接仲裁去,等等之后,他在拖我2个月后,终于发了。虽然还有被扣的钱,我真的就当买教训了。

好吧,跟上个东家,就是这样,缘已尽了。
……

这是3月到前几天的事啦。
这些天,过的很开心了,跟着有趣的人做有趣的事,不累,很开心。
真要说的什么感触的话,就是深深的感到,果然什么都是相通的,这就是起源罢。
还是,下次再说吧,好久不见~

- Read more -


I'll be back after the Chinese new year

| 1 Comments

工作小忙&捣鼓一些没什么大不了的小把戏,so……


晚霞明似锦

| 3 Comments

IMG_0162-small.jpg

只是想分享下,今天下午偶然捕获到的美景~
果然站在高处,总是会有想要起飞的冲动
为何没有一双翅膀,带我装b带我飞呀~

嗯,已是周三,想来周五也不远了。
未来的周末,愉快啦。


在停下的地方重新上路

| 12 Comments

每次更新的时候,都是发现自己已经快有一月余没有更新过了。
嗯,这个毛病还是要改~

好吧,消失这么久,我果断的是去渣电视剧了。
看完了狼牙棒。
一直感觉我应该是属于那种蛮不容易入戏的人。
也在看第一集的时候,就意识到苏先生一定会领便当啊领便当。
但是看到最后苏先生跟琅琊阁主说要出征那儿,背景音乐一起,眼泪哗啦一下子,就泄开来……
好吧,这么多年来,不多的入戏了。
……
结果就是,我花了一周的时间,终于心情平复下来了,哎!
客观的给个评价吧,虽然还是有值得吐槽的地方,但是确实是,不多的良心剧了。

然后就是确实最近工作蛮忙的,上班都找不到摸鱼的时间好么!!!
23333
对了,说到上班,我一定要吐槽,尼玛,那天新来了个ios的开发小哥。
说起他来,我真是,头一次见到,代码洁癖那么严重的人。
自问,我也算是有代码洁癖了。譬如,要求缩进对齐、注释、变量函数等命名好看= =
但跟他一比,我简直是弱爆了!!!

本来的ios小妹水平不好,老大招了他来。
着急项目上线,让他帮着小妹一起解决完了上线。
他吭哧吭哧2天,老大问“怎么样了”
他他,他,他说“无法接手别人的代码、要自己把那项目代码重写”
……
当然,作为现在不做技术的我来说,跟我一毛钱关系都没有^_^
不过但我听到后,那个万马奔腾,我勒个去啊
就差给我个内心切个镜头,我的独白能绕地球两周半……
嗯,两周半!!!

想想还有啥可吐槽的没,
最近帝都好冷啊,
我已经开始穿秋裤+毛衣了。
暖气君快来(招手~)

最后附一个,今天下午跟基友的聊天记录,原谅我们年少轻狂爱装逼
23333,黑历史留底~ (左:基友,右:我)

屏幕快照 2015-10-26 21.57.56.png
屏幕快照 2015-10-26 21.58.12.png
屏幕快照 2015-10-26 21.58.25.png
屏幕快照 2015-10-26 21.58.39.png

- Read more -


念旧的我们

| 5 Comments

公司旁边的麦当劳今天开业,放着礼炮、做着活动。
突然发现麦当劳25周年了。
想起小时候的奶昔大哥还有汉堡神偷,门口的麦当劳叔叔,
他们都去哪儿了……

在网上看到这样一段话

后来汉堡神偷、大鸟姐姐和奶昔大哥
都不知道去哪儿了
只剩下麦当劳叔叔一个人坐在门口
画着小丑的妆容 强颜欢笑
再后来门口的麦当劳叔叔
竟然也不见了
……
一晃眼十几年
我最喜欢喝的奶昔没有了
我也再找不见汉堡神偷他们了

麦当劳25周年

时间不经意间就慢慢流淌。
翻一页就是新时代。
从80后、90后、95后、到00后。
于是,蓦然回首,我发现我已然不再年少了……


嘿,这个家伙是不是弃坑了~

| 4 Comments

嗯哼,我知道一定会有人这么想。
其实、本来、今天也有点懒得写字。
不过想想来,已经好久没有动笔了,好吧。
=。=乃们要相信,我真的没有弃坑,这么可爱的域名,我怎么会轻易弃坑呢。

最近,在努力学习ui技术。嗯,每天起早贪黑辛苦啊QAQ
入门阶段快要结束了,哎,学无止境。
不过还有不少没有掌握好。
从一个熟悉的领域跳到另一个,其实还是有不少差距的。
我会加油的。
作品的话,其实我早在index上留了study的口子,但是一直没有给链接。
原因的话,我的作品都泡在本子里发芽懒得上传呢。
约莫不会直接传到这边了,图片都太大,会拖累页面加载速度的。
还是去费大公司的流量吧,咩哈哈哈哈哈哈哈~
嗯,打算可能明年转阿里云去吧,这样可以自己开发些功能了,到时候再重新整理下博客啥的。其实我真的不想备案,看着好麻烦啊~

最近帝都上空的雨娘娘老在看韩剧,雨水哗啦啦啦的往下掉。
目睹好几次浪花朵朵啦~
其实我真的不太喜欢下雨。