编程技巧两则:7zip的pax headers和iOS的multiple files upload问题

两个技术小问题,花了点时间解决掉,备忘于此。

1.  -7zip 的解压包后自动生成pax header文件夹的问题
-7zip 是我推荐全面取代 -zip 和 其他类似压缩软件的一个极好的开源压缩、解压缩的软件包。 在最近使用中,发现如果使用 -7zip 解压某些 xxx.tar.gz 的压缩包时,会自动生成 paxheader的文件夹。
经过网络查探,可能跟posix系统的设置有关,而且 -7zip 也发布了补丁代码。
但总觉得太麻烦,而且令人奇怪的是,新版的 -7zip 居然没有解决掉这个”bug”, 后经比对发现,如果在 tar 的命令行中增加 –format=gnu 告诉tar时,不使用默认的 –format=posix 则可以避免上面的 -7zip 在解压时自动生成paxheader的问题。
相关技术背景及其论述,可以在 -google-jp 上找到。

2. iOS设备在使用 -safari 浏览器进行多个文件上传时,图片文件总是统一命名为 image.jpg
不管选择了多少个文件,通过form的file字段的multiple属性允许多选是,浏览器所呈现的,和服务器后台所看到的文件名都是一样的:image.jpg .
这让人头疼,如果同时上传多个文件,则后面的文件会引起前面文件重名而对前面的文件进行覆盖!
解决的办法是,在服务器端,在按文件名循环时,如果发现第二个文件的文件名与前一个相同时,自动在后面追加类似 _1 这样的标记来避开文件在服务器端的重名。
同理,image.jpg 在前端的名称相同问题也可以通过这样的方式避免。
这个问题是在开发一个极其简便的跨屏传输工具 -mobxpc 时遇到的, 在 -R/02Sx1  这里也讨论。

发表在 编程技术, 计算机技术 | 2条评论

UfqiWork有福工坊UfqiNews有福常在Google Books亮月亮科技

育儿经(1)

这是个命题作文的一系列,这是第一篇。Yoyo学校很多次会要求家长写一些与学校一道教育孩子的故事。我们就这样也积累这个系列的一些文章。希望在Yoyo和Hanu学有所成时对其他父母和孩子能有些帮助。

孩子养成。我们很多人都知道一条不成文、约定俗成的规定,禁止近亲结婚,会对后代不利。其原理是什么且不论,几乎没人敢以身试法。接下来要写的是反面,远到多远合适,更远更有理于下一代?

我长大的家族中,只有我一个从村庄里上大学走出那个县城。直到很久以后,我仍能回想其上小学时那种聪明劲,背诵课文时,我可以看一眼课文,像照相机存照片一样将课文的“样子”存在脑子里,然后再根据脑子里的画面逐句“背诵”出课文来——对,就是这么快——过目不忘。那时的我被认为是聪明的。直到几十年后,我才知道,我是随母亲一起来到养父的家庭的,我的生父母一个是安徽人,一个山西人。

在上面我所说的这个家族中,第二个通过考学出来的娃儿是“大爷”家的一位“小叔”家的儿子。大爷(爷爷的哥哥)是位教书先生,长子是人所共知的抱养的外乡的孩子,“小叔”是其第二个儿子,除了这两个儿子外,大爷还有五个女儿——对,你没看错,一共七个孩子。
这位大爷的考学出来的孙子,给这个家族挣得第二份荣誉。我也是新近才知道,而且是很委婉地从母亲口中知道,她说是从已过世的她的二奶奶(相当于大爷的二嫂,我的二太奶奶)的口中知道,这个“小叔”亦是大爷领养的外乡的孩子,他与本地人女子结婚后有了这个家族第二个考取“功名”的孩子。他的生父母一个是当地人,一个外乡人。

我的大学老师,经历过很多事后,我们成为忘年交。知道他有三个女儿,像他一样,三个女儿都在教育口,三个女儿分别嫁人,各育有一个孩子(独生子女)。老大、老二的孩子学业平平、几无可以谈资,大概是靠父辈的辅助才谋了职位,平淡的工作、平凡的日子。独老三的女儿北京四中高中毕业直升香港中文大学,然后去美国读研究生,估计会在华尔街谋职,如果用世俗的眼光看,老三的女儿是成功的。我不解地思考一些日子,发现老师的大女儿、二儿女嫁的都是北京本地人,而三女儿嫁的是广东的留京的男子——也即这个去了华尔街的女孩的生父母一个是北京人,一个广东人。

网上有一篇清华学生的现身说法,其中表达了这样的观点:“就我在北京的生活经验来讲,尽管清北在北京的招生比例远高于外省,但是对于很多土生土长的老北京而言,清北还是那样遥不可及。我甚至可以讲,清华北大在北京的招生名额,多数被那些早些年通过自己努力考入北京、留在北京的外地人的后代所瓜分。我在清北认识的北京同学,大多数父母教育程度都很高,就职于北京的政府机关、高校、科研院所、高科技企业等。” (-R/d2Sg )

清北的名额被“留在北京的外地人的后代所瓜分”。这个说法如果成立,我有个大胆的假设,这群在北京的外地人的配偶应该不会是他/她的同乡,很大的可能是一个山西人和一个安徽人结婚了,一个广东人和一个北京人等等。这样的组合,是否有基因上的优势,还有待印证。

通过上面的观察,我大概能根据生活经验,当为我们的孩子们出主意、做婚姻参谋时,我会建议他们嫁/娶的配偶对象,应该远远的,至少远过几个省,而不是和一个本地人结婚,这样或许后代的聪明基因会多一些。

发表在 社会生活 | 一条评论

UfqiNews有福常在Google Books亮月亮科技Apache Softwares

乙未羊年2015春节记事:汽车时代,系统意志及机器学习

乙未羊年2015春节,没有外出,而且一人留守北京,所以有一些时间看书或者思考问题。

1. 中国汽车时代的来临
岳父母家亲属,到我们这一代的姑舅、姨老表,连襟等,今年春节都开着私家车走亲访友和聚餐了。有的家庭已经不只一辆车了。
我的老家是农业小县城,老同学在那个从城东开到西只要5分钟的县城,现在开始堵车了,一堵能有个把小时而且因为堵车耽误了吃中午饭。
进入汽车时代,意味着人的活动半径从2公里扩展到20公里;意味着汽车产业成为一个庞大而成熟的产业。

2. 系统意志理论
如果人有命运的话,那就是其自身的属性决定其行为模式。摇晃的木桶(-R/22TP )就是描述这个客观世界的一个很好的例子。简单地说,我们每个人处于当下的时空点上,是由于我们本身的“属性”决定的,同样的,如果要改变我们的“坐标”,也需要改变我们的属性。在摇晃的木桶的例子是,我们每个个体的“密度”——密度小的上浮、密度大的下沉,然后阶层及聚类就形成了,在现实生活中,可能是一个人年龄、性别、相貌、学历、能力、道德、财富等一系列的属性或者属性组合。
“我要变成有钱人”,这既是一个目标,也是一个属性,将目前的财富属性值从100元提升到100亿元。然后可以按照致福的“方法”前行。“财富”可能靠买彩票得来,也可能是苦心经营省吃俭用而来,或是知遇达官贵人?
一个系统可以是一个木桶,也可以是一个国家,或者一个地球,一个宇宙,系统总是有利于自身地尽可能的保持系统的稳定、协调与一致,保持独立的边界。这就是系统的意志。
有神论的这个系统是“上帝”,无神论的这个系统是宇宙能量,中国传统哲学上的“顺其自然”,天人合一大概就是这个概念。符合“系统的意志”,则利益最大。

3. Hanu会叫爸爸
这件事很让人开心!Hanu学说话这件事总算有个开始了。

4. 心智模式
优点还在,缺点也在,还在时时困扰自己。
个人提升和进化上,并没有像年龄那样稳步匀速增长。这有时候会让人沮丧,就是那种放假安排做得很完美,读书、写作、旅行等,但到假期终了发现根本没在计划轨道上,人总是会这样宽恕自己吗?
有时候我们能趴在玻璃上看到美好的“世界”,但没有途径能够走出眼前的困境,或者找到进入那美好“世界”的入口。
适巧看到《秀春刀》的那句话,-R/l2Sv  ,

“兄弟,这窝囊日子你还没过够吗?咱没银子没路子,靠的就是机会,机会来了接住了,就能翻身。”

这种代入感极强的句子,让人深思。机会留给做准备的人,需要做什么准备?怎样才算做好了准备?
机会啥时候来,还有吗,如果一辈子等不来是不是也是大概率事件?

5. 机器学习与属性关系
机器学习有个通俗的解释的例子,-Quora 上买芒果的例子, -R/w2Sp  , 比如基于规则的编程会将人的认知写成程序“如果是大个的芒果就是甜的”,而机器学习就是希望输入一些忙芒果的属性如尺寸,颜色,产地等信息,然后通过一定的计算得出,苹果是否是甜的——一个训练集和分类器的例子。
进一步地,我们发现这是分析一个对象之间的属性相互影响及作用,也即某些芒果是满足这一的属性间相关作用的结果“广州产的大个的黄的芒果=甜的芒果”。
这样的思考与之前所构思的认识世界的一般规律或者组建智能生物的逻辑又进一步。 anyobject.201502

机器学习能够帮助人们更快更好的理清对象的各种属性之间的关系,比如给一个信用卡的额度多少合适?将经验值进行数学建模,然后就是公式化,让经验有理论依据。
如果机器有了这种学习能力,一定能够在未来的某个时间点上超越人类的认知。这个“智能生物”应该具有如上图所示的认知结构。

6. “洗脑的历史”
-R/C2St  , 这是一篇天涯社区上连载的长文,花了大约两个半天以“只看楼主”的方式读完。值得了解近现代史的人读读。
人世间两件困难的事:把自己的想法装进别人脑袋;把别人的钱装进自己口袋。洗脑是为了完成前者,完成前者后者就水到渠成了。
从宗教到专制体制,洗脑的手段,首先是将对象的脑子清空、变成木头疙瘩,然后制造恐惧或将其原罪;这样对象就服帖了——不会独立思考没有想法,不知道明天怎样/吃啥喝啥,不听“上面”的就无法生存, 害怕….
广而言之,专制的体制的效率非常之高,因为“下面”都是机器人,会即刻地一丝不苟地执行任务,这能解释在历史的长河中专制的浪花闪闪。与生俱来的,专制有缺陷:能思考如何改造大自然的就一个或几个人,而且专制要时刻将维护体制的力量分成两半:一部分对外、一部分对内。相对应的,非专制的体制,全民思考着怎么改造大自然,维护体制的力量无需分一半对内,只对外就行了。
两相比较,高下立判。

7. GTAjax 6
着手重写 -GTAjax 发现挺难的,要将 ECMAScript 5/6 , HTTP/2 , HTML5 等都考虑进来还是有些难度的,面向未来,还是要前行。

8. 母亲
这是母亲逝世后的第一个春节,我们缅怀她的点滴,纪念她的生平,祝愿她在天堂安息。

 

发表在 体育健身, 社会生活 | 留下评论

床上电脑桌大学生宿舍上铺懒人可折叠小桌子家用寝室简约学习书桌京东制作护发素发膜正品修复干枯免洗家用护发补水顺滑女士发热焗油膏捐助乌克兰Help Ukraine

-gMIS 更新:字符串处理,op字段及github

-gMIS  继续更新。

1. ./jdo.php
在操作列表增加 “打印”功能,可以从list页面直接呼出打印预览的页面;
修改 comm/ido.js 修正 doActSelect函数使之配合完成上面的任务;
修改字符串处理函数,使之在list模式下对HTML的过滤更加智能,由替换 < 为 &lt; 变成将 <.*?> 内容替换掉, str_replace 换成使用 preg_replace;

2. op字段
修正 act/doaddmodi.php 中的bug,使之能够记录当前操作人的身份到记录表;确认了 $opfield 的列表状态;
对应地,可以在 xml 中配置 op 字段为:

<field name=”op”>
<chnname>递交人</chnname>
<selectoption>fromtable::info_usertbl::email</selectoption>
<listview>1</listview>
<inputtype>select</inputtype>
</field>

3. 分层代码的使用
在新部署项目中,代码使用带有层级的风格,通用的字典表结构:

create table internet_typetbl(
id int(11) not null auto_increment,
icode char(16) not null default ”,
iname char(32) not null default ”,
iserial mediumint(4) not null default 0,
op char(32) not null default ”,
inserttime datetime not null default ‘0000-00-00 00:00:00’,
istate tinyint(1) not null default 1,
primary key(id),
unique index key2(iname)
);

其中icode是名称,iserial是显示顺序。
在调用字典表的主表中,存储的值可能不再是值的id,而是值的icode,这样主要是为了能够方面的按父类检索、聚合(-R/k2Sl)。

4.  -gMIS 迁入 -github
为便于管理,-gMIS 近日迁入 -github , 与此同时的还有 -GWA2 和 -GTAjax  也一并迁入 -github .

5. 在 -人民网 交流 -gMIS
2015年1月,在人民网内部交流,以题目:-gmis系统在业务运营中的应用
-gmis-@people.cn-201501

 

发表在 -gMIS, 计算机技术 | 标签为 , , | 留下评论

UfqiNews有福常在Google Books亮月亮科技Apache Softwares

-mathjs, -mathjax 很赞的数学表达式工具

math-javascript-201502这么复杂的数据表达式可以用javascript在浏览器中画出,令人表赞。

自然域名(NatureDNS): -mathjs , -mathjax

 

 

发表在 编程技术, 计算机技术 | 标签为 , | 留下评论

得力彩色铅笔油性彩铅学生用专业手绘48色水溶性彩铅笔24色画画笔36色小学生安全无毒水溶款绘画素描儿童铅笔医用外科口罩一次性医疗专用口罩防尘透气成人三层防护透气医生床上电脑桌大学生宿舍上铺懒人可折叠小桌子家用寝室简约学习书桌京东制作

掌握C/C++的程序员最能挣钱

-Quora 上的讨论,只从经济上说,那些编程语言让程序员赚得最多?
阅工程师无数的谷歌的工程经理Carter Page回答说,学C/C++,而两者相比较时,又进一步的选择C++,既有C的风格,也有OO思想。
如下是原文。最后一节给个比喻甚好,说怎么能成为罗马语系的好的演讲者,答案是学习拉丁文。
Carter PageCarter Page, Engineering Manager at Google

There is a short answer, but this a borderline religious discussion, so it requires some context first.

I’ve hired many software engineers, and the single most valuable skill is the ability to pick up anything and master it quickly.

Some years ago an offshore company was producing Java for me with inconsistent quality.  I was able to build remote teams by looking at their resumes, but I couldn’t interview them individually because they didn’t speak English.  This kind of constraint makes for an interesting experiment.

The developers’ resumes looked good, with years of experience.  Still, the code was often buggy, hard-to-read, and poorly organized.  As an experiment I started asking just for their C++ developers.  Some of them didn’t know Java, but I was willing to pay them for a few weeks to learn it.  With the help of their coworkers, they picked up the language and its idioms, and excelled as our top Java programmers.

So here’s the short answer: Learn C/C++

You might never use it professionally, but it contains a lifetime of lessons.  And the hardest problems, the ones that the top engineers are asked to solve, will sooner or later hit some foundational C code.

Here are some things that are written in C:

  • The Java virtual machine is written in ANSI C
  • Linux is written in C (and some assembly, but mostly C)
  • Python is written in C
  • Mac OS X kernel is written in C
  • Windows is written in C and C++
  • The Oracle database is written in C and C++
  • Cisco routers, those things which connect the Internet, also C

Name anything that is foundational, complex, and performance critical.  It was written in C, with a sprinkling of assembly thrown in.

C will make you a better Java programmer.  You’ll know when the JVM is using the stack and when it’s using the heap, and what that means.  You’ll have a more intuitive sense of what garbage collection does.  You’ll have a better sense of the relative performance cost of objects versus primitives.

C++ will make you a better Python programmer.  Its class mechanism is largely based on C++.  You’ll have to learn to write clean, well-organized code if you ever expect to maintain it.  You’ll learn to be careful with your global variables.

C will make you a better Objective-C programmer.  You’ll know how to manage your refcounts and which piece of code should “own” an object.  You’ll be able to avoid memory leaks.

So which is better C or C++?  I lean slightly to C++ because they are very similar, but with C++ you get the added benefit of object-oriented programming.  Even if you decide you’re only ever going to program in functional languages, learning how to think in OO teaches organizational patterns that are critical to engineering and maintaining really large projects.

So maybe you won’t make as much per hour as you would during some brief, weird supply/demand anomaly like COBOL in ’99, but once you know C, you can learn that language, and the next, and the next.  Because if there’s one long-term constant in this industry, today’s hot skill is a quaint novelty in a few years.  Learn the skills behind the skills and you’ll do great.

*** EDIT ***

Based on many of the comments below, I should clarify.

Nowhere do I say you should program in C for a living.  Or learn C as your only language.  Or that you can make more per hour on C than programming in Foobar.  Generally speaking, you shouldn’t even program your applications in C unless you have a really good reason.

But you should learn C.  Because it’s the abstraction other languages use to understand the physical machine.  You can strut like a champ when the other programmers are still scratching their heads.  And that will make you more “senior” and earn you more money in the long run.

If you want to be the best and best-paid Formula 1 driver, learn how to take that engine apart.  Not because it is your job, but because it will make you better at your job.  And as the cars change and evolve over time, you’ll get what makes them different too.

TL;DR (thanks to Juan Mendes)
Q: How do become a better speaker of all Romance languages?
A: Learn Latin (and a bit of Greek won’t hurt).

发表在 编程技术, 计算机技术 | 标签为 | 留下评论

UfqiWork有福工坊UfqiNews有福常在Google Books亮月亮科技