淘客熙熙

主题:【原创】一个有趣的程序 -- 懒厨

共:💬25 🌺22 新:
分页树展主题 · 全看首页 上页
/ 2
下页 末页
  • 家园 【原创】一个有趣的程序

    入行多年,编程无数,只是有趣的程序却是罕见,上星期总算让我遇到一次,虽然只花了一天功夫,那种乐趣却是很少见的。

    背景是这样的:

    本单位有20几台PC,遍布全市各地,这些机器是特别定制的,在Windows XP上运行一个程序,连接两个显示器,其中一个是接触式液晶屏,显示最近的100条信息细节,可以做一些简单的操作。另外一个是40几寸的大电视,如果有紧急状况发生,而且是跟本地相关的,大电视就会显示,而且有声音警告发出,如果没有什么事情,大电视就显示时间。整个机器没有安装键盘,鼠标。

    按IT部门的说法,是Mission Critical的机器,就是说机器和软件不能垮。那个软件是外包给悉尼的一家公司开发的,嘿嘿,他们的收费很贵。

    先说说用户的要求,用户说,95%的时间,大电视无所事事,太浪费了,能否用来显示其他若干个相关软件的屏幕呢?反正只是显示,又不操作,没有键盘、鼠标没关系,应该很容易吧?

    一开始,这个要求被拒绝了,按照合同,那台机器只能运行那个软件,否则外包公司不保证机器的可靠性,另外如果真的让这些机器运行那些相关软件的话,有紧急情况发生时,软件间的切换难以保证。

    迫于用户的压力,我的经理答应想办法,找到我,小弟不才,真的找到一个办法,然后,我的经理再把我的方案完善一下,我左想右想,确实找不到更廉价的方案了。

    我先把砖抛出来,希望看看河里的同行的想法。这里有些提示:

    1。合同没有变,那些机器还是只运行那个软件

    2。软件公司要做一下轻微的改动,收费应该不会很离谱。

    3。确实可以动态显示几个相关软件的页面

    4。我只花了一天的功夫来编程,而我不是那种特牛的程序员。

    明天再把我的方案贴出来

    土鳖出来扛一下。。。。

    • 家园 【原创】解决方案

      我的想法跟红黑树的几乎一样:找一台机器,运行那几个相关软件,然后,我写个小程序,每隔若干秒,就轮流把相关软件的屏幕抓下来,以JPG格式,存放网络某处,外包方只需要更改一下那个程序,每隔若干秒,就显示一下指定的若干个JPG文件,做一个Slide Show, 而不是显示时间。

      这个已经算很简单了,但我的老板还想得到更简单的:

      把这几个JPG合并成一个GIF文件,GIF的特点就是可以动态显示若干个画面,达到一种动画的效果。外包方的更改就更简单了,只需要定时显示一下GIF就成了!这样他们就没有理由收费太贵了!

      而且,合同也不必修改了,一举数得。

      至于我这方面的编程,虽然我不牛,放狗还是会的,一搜,找到原码,于是一天就搞定了。

      • 家园 如果没狗而全自己写的话,大约需要多久搞定?

        看来平时得注意收集代码,我想临时抱佛脚,万一搜的不顺利,岂不误事?

        • 家园 确如风北客所言

          抓屏容易,合并gif难。关键在于弄懂gif的编码格式,如果搞清楚了,编程倒不是特别难。

          如果让我自己搞,恐怕得花两三个星期。

          • 家园 两三个星期?

            如果让我自己搞,恐怕得花两三个星期。

            额滴神啊?!幸亏问了问,又学到了!

            • 家园 应该不要这么久了,又不是生孩子

              gif, tiff, png都可以使用类似按页编码的格式,只要熟悉文件结构和一些页编码规则就可以了。 正常的话,感觉1个星期足够了。 我虽然没动手自己实现过,但是粗看过相关的格式介绍文章,感觉2,3天内弄个明白不困难。

              国内程序员写一个png压缩程序员也就化了几天时间而已,不过我这种懒人肯定是不会去写的。

              • 家园 我想大多数人是不会自己写的,呵呵

                其实我倒是一直想问:

                这编程工作量的问题,如何骗骗老板?就是说1周内搞定了,对老板说还要2,3天,那么这2,3天岂不是可以休息休息啦?

        • 家园 抓屏这种东西

          在一般语言工具的基础工具包里都有,不难,一般就是几句话而已。

          倒是合成jpeg到gif比较麻烦一些,有些主要语言现成的包很多。 如果用其他语言又不想研究gif编码的,可能稍微麻烦一点了。gif编码和jpeg的编码研究明白,大概还是要个几天时间。

          • 家园 怎么把老兄炸出来了?

            多日不见,老兄的去留问题考虑的如何了?

            有两句词是我当年推崇的,如今看来也不尽然,送给老兄,淫者见淫吧。

            佳处尽须携杖去,

            能消几两平生屐?

    • 家园 这个不是太难。

      写个程序创建那些要在大屏幕电视上显示的程序进程并将这些进程的主窗口映射到大屏幕电视的显示位置上,看CreateProcess函数。

      用窗口最小化和最大化消息实现"在任何时候,大屏幕电视上只有一个进程的主窗口最大化"。当然,你必须在程序中找出那些进程对应的主窗口的句柄。

      由于这些程序的进程由你的程序创建,“要杀要剐”还不是由你说了算。

      对于那个关键程序的相应时间问题,可以采用指定CPU的方法解决。

      • 家园 这个还是有点复杂

        复杂在于更改合同,合同之所以那么签,就是担心其他软件拖垮这套软件。

        我特意去查了下那台机器的设置,如果用预定的登陆,夸张到连Windows Explorer都不能用。

        当然可以用指定CPU的方法来降低风险,但外包方的收费肯定就贵了。

        • 家园 你写的程序作为一个进程在哪台机器上运行?

          至于用上什么方法来达到目的,完全取决于设计者对某种技术手段的熟练程度。俺对进程和线程比较熟,比较喜欢用这个方法解决问题。

          至于其他程序拖垮关键程序的事情,现在根本不是什么大问题。升级硬件的费用比修改软件的费用还贵?

          • 家园 说来就话长了

            我写的那个小程序,就放在一台单独的pc, 由其中一个用户负责,不属于那种Mission Critical的PC,如果软件垮了,重新启动就是,反正不是那么重要。

            而那些Mission Critical的PC上运行的那套软件,不是本公司负责的,外包给另外一家公司,有签合同,保证Up Time的,合同的条款有列明,没有他们允许,是不可运行其他软件的。

            站在我老板的角度,他希望那套软件的改动越少越好,这个意味着越便宜,而且稳定性越容易保证。

    • 家园 大电视开画中画

      小画老不变,显示那个critical的,大画想干什么干什么

分页树展主题 · 全看首页 上页
/ 2
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河