Sunday, December 4

三年困难时期的数学讨论 math

 


前面有一个图:



然后我有了主意,能够给具体的数字。

第一步,我先到国家统计局拿到每年人口的数字,放到 excel里,得到和前面图一致的曲线 (单位是万人):


Download

然后用每一年新增的人口除以前一年的人口,得到每年的自然增长率(千分之): 这个曲线也是和前面的图一致。




Download

戏肉来了:
在增长率上,从1956年的22到1967年的24之间,我简单划了条线



Download

我们认为,自然增长率是比较稳定、比较平滑的变化,所以这条线会是正常年景的(原来的)增长率。
根据这个变化后的增长率,我得到数字:

1963年人口数应该是 73812.59721, 比现实多了 4640.597213 (万人) (也就是说,那几年少了四千六百万人)

========
1957年增长率特别高,如果我保留这一年,到1958年才用22~24来修改的话,得到:



Download

1963年人口数应该是 81757.06338 比现实多了 5389.063382(万人).




我把1963年前都设置成22,免得说我作弊。这样得到的数字是最低的:

Download


得到1963年 少了3994万人。 这个是调试几种可接受的设定后得到的最低的数字。所以说,这三年困难时期少了四千万人,是最低的估算。

找到了2000年普查的按年龄数据:
36岁: 24144848
37岁: 27866189
38岁: 20923112
39岁: 11414017
40岁: 14684726 (1960年出生)
41岁: 13059787
42岁: 17135981
43岁: 18998424
44岁: 17364027

从17xxxxxx一下子减少到 13xxxxxx, 14xxxxxx,11xxxxxxx。 当然这17xxxxx比我刚才估算的 每年1320万多了一些,大概跟各年龄的分布有关。 抛弃刚才的数据,用 17xxxx, 18xxxx来算,就是少了700+400+500=1600万人。

这1600万人包括少出生的,也包括早死的:在2000年人口普查前就比其它年度的人(1956/1957年出生的等)*多*死的人。


此外的2400万人是纯饿死的。

Labels:

Thursday, November 10

Python calling shell commands

First of all, for this topic, we should always reference the official site of subprocess: https://docs.python.org/3.10/library/subprocess.html


Because when you do random google search, you will find some answers for this topic using os.system, Popen. You should know these answers are obsolete. The answers might be correct 10 years ago, but now, whenever possible, use the subprocess class to solve this problem. Of course if you are reading/using a 10-year-old program and trying to make sense of it ( you have my sympathy), then you can know the answer is still valid (but deprecated).


Second, I limit my scope in Linux shell only. Running python command in Windows is another topic that I don't have the capability to cover.


In one of my project, the code evolves itself into calling a lot of shell commands. At first it is calling ffmpeg to decode a video, then it is calling another python program to process , and it even calls "echo" to write timestamp and some information into a log file:


To keep the code simple, I was using `os.system()`. 



Thursday, October 6

CDC COVID19 隔离指引

 当前的美国 CDC所发布的 COVID19 隔离指引 可以在 CDC网站上找到,我做一下整理和翻译如下:


0,如果你有接触到 COVID19病人,从当天起10天,要注意:
  0.1,如果与别人接触,要带口罩。
  0.2,注意观察自己有没有症状;如果有症状就做测试。
  0.3,接触后5天做测试。
  如果有症状或者测试阳性,请进入下一步。否则10天后解除警惕。


1,如果你测试阳性,或者出现症状,首先要隔离5天:
  1.1,隔离期间,尽量在家里。
  1.2,如果出去(或者与家中其他人接触),一定带好口罩。
  1.3,不要旅行(去外省市)。
  1.4,如果可能,在家里使用独立的卫生间,并提高室内空气流动。
  1.5,5天后,如果一直没有症状,可解除隔离。
  1.6,5天后,如果只有轻微症状,体温在没有用发烧药的前提下正常了24小时,就可解除隔离(Ben加注:比如第四天发烧,吃了泰诺,第五天温度正常,那么第六天就可以解除隔离了)。
  1.7,如果有中度的症状,比如呼吸短促或呼吸困难,要等到10天才能解除隔离。
  1.8,如果有重度症状,或者你的免疫系统弱(小孩或老人或有免疫系统疾病),及时寻求医疗救助,如果需要住院,由医生决定何时解除隔离。
  1.9,不管你哪天解除隔离,在室内活动时请继续戴口罩,直到第10天。


就这么些了。祝大家健康平安!


Thursday, September 15

电和油

 我的 Prius Prime是油电混合的;充满电后能跑28 mile (刚买的时候是30~32 mile, 现在两年了,衰退了一些),也能加10加仑油来跑, 用的是90号油。


前两天查了一下,充电6度(kWh)就能跑28 mile.

电费单很复杂,有阶梯费用,还有其他费用;简化一些,上个月账单里我家用了641度电,花费是 $91.90 ,所以这6度电的花费是 $0.8602 ,每mile用钱:
0.8602/28 = $0.0307


如果这车的电全跑完了(比如忘记充电了),完全用油来跑,效能是 50MPG (miles per gallon), 现在窗外我能看到远处的加油站牌子,$5.43每加仑,我所用的89号油。所以用油的时候,每mile用钱:
5.43/50 = $0.1086


所以这车用电的花费是用油的 三分之一。这里当然不计算充电时每天都要冲一次(才28miles), 来回走路所花费的时间 overhead;邮箱充满一次能跑500miles,抵上17次的充电了.


一般车的 MPG只有 25~30MPG左右,可参考上面的数字。

刚才说了每天冲这6度电的花费是 $0.8602,公司里停车场可以免费冲。 如果在家里,直接用的是车库墙上的普通的110伏电源,用6个小时才充满;在公司里的充电桩,两 个小时完成。

有时从公司里充了电回来,到了家里就用了一半的电,有时就懒得拉线了,等着第二天,还足够开到公司的;到了公司里,用一个 APP排队,等充电桩空闲了就通知到我的APP上,出来挪一下车,充上电;两小时后充满了再去挪车;这来回走动不算这充电的overhead,因为其他人也可以有一个 smoke break,出来走一走,不算什么;
有时候排队太长,或者轮到自己的时候,正在会议上,或者是没有看到APP的提醒(我最近经常碰到),就被轮空了,下班时只能开着没电的车回去,用油。到了家里再接线。

其实也就是$0.8602的事。


另二则:
1,车的颜色

我买的第一辆车就不说了,十几年旧的二手车,碰到什么颜色就什么颜色,便宜就好。

到了买新车的时候,对车的颜色做了一番调查。我自己来说,对颜色没有什么喜好的,真要问我“喜欢什么颜色”的话,只能是同周星驰那样回答:“黄色咯。”

皇天不负有心人,我查到一份报告,说是美国的统计,白色的车是最清晰、最显目的,因此发生事故最少,因为对方司机很容易看到白车的到来。

好,那就白色。

买了半年后,发现错了。

冬天到了,一下雪,白茫茫一片,真是好干净!白车在这里就好像隐形了似的。


没错,那时候我在加拿大。

2,车灯
加拿大和美国在车灯上有一个区别:

美国要求在晚上或者天气昏暗行驶的时候,车灯一定要亮,让 别人能看到这车,保证道路的行驶安全,否则警察在路上看到就会过来找你麻烦;当然,每个州对“晚上”和“天气昏暗”的定义不完全一样。加拿大直接要求在所有时候,开车时就要亮灯。事实是,加拿大要求“行驶时亮灯”的车才能卖,根本就没有关灯的选项。原因是,亮着车灯的车,即使在白天,也比其它的车更容易辨识。

Labels:

mid autumn 天涯共此时。美国人什么时候庆祝中秋?

 


我们都知道中秋那天月亮圆。今年,是公历的9月10日。

精确一些计算,可以得到月亮圆的那一刻。比如说,9月10日19点30分,正是月上柳梢头,人约黄昏后的点。
当然,我说的是北京时间。这个时刻,是美国的9月10日早上4点30分(三藩市时间)。所以在美国的华人在当天晚上才庆祝中秋。


理论上,如果月亮圆的那一刻是9月10日的上午8点23分,这时是美国的9月9日下午5点23分,那么美国华人就应该在当天晚上(9月9日晚上)庆祝中秋。中国亲人还在上班呢(假设这天不是星期六,或者你在996福报的公司上班),美国亲人已经吃完月饼盖被子睡觉了。


要是月亮圆的一刻是9月10日的14点53分,美国就分裂了。这时候,美国的西部,三藩市这边,是9月9日的23点53分,而在美国东部,在纽约这边,是9月10日的凌晨2点53分。这时候,三藩市的美国亲人应该已经吃完月饼盖被子睡觉,而纽约的美国亲人还在等着晚上的月上柳梢头。

所以其实美国华人不喜欢这么分裂;就按照北京时间来算好了,既然在中国是9月10日,美国就等到9月10日的晚上再庆祝。海上生明月,天涯共此时。


对于春节、夏至等,其实也有同样的问题,也同样处理。欧洲那边也是同样,按着中国的日历走。但是一些东南亚国家并不是如此,比如越南和日本,他们自己按照自己的时区来计算春节、中秋,所以有时候会得到与中国不同的日期。

Labels:

Sunday, March 13

期货(future)是什么,有什么意义

 这天中午午餐时,朋友们在一起聊着社会、经济,说到一些跳楼事件后,一个朋友A问:“什么是期货?”,跟着一个灵魂追问:“期货有什么用?”


我想着今天的日子,说:

现在是三月份,青黄不接的时候,粮食要7月份才能种出来(我说的可能是南方种两季稻或者三季稻的情况,也有可能我用的是农历的7月份,请不要纠缠细节),我这个农民就要饿死了;你现在给我一千块钱,按照1块钱1公斤的价格,商量好,在7月收获的时候,我就给你一吨谷子。

这就是期货,而它的意义就是:对我来说,我现在就有了钱,能活下来了,能存活到收获的时候。对你来说,你用相对低廉的价格(你认为在7月的时候,价格会比1块钱1公斤更高)买到了粮食。

故事还没有完。期货怎么交易呢?时间飞速来到6月1日,市面价格涨到了10块钱1公斤,所以你(A)可以拿着单子跟B商量,说:你用5000块钱从我这里买这个单子,下个月就能拿到1吨谷子了。好,B给了5000块钱给A,回头又把这个单子以6000块钱卖给了C。从A到B到C,完成了一连串的交易,其实这谷子还没有种出来。

这就是期货的交易。期货的英文词是“ Future ”(未来),这些交易,买卖的就是未来。

在这里,期货交易的意义是:经过多人的预测,越靠近交易日期,这些预测越准确,可以比较有效地避免价格大起大落,对社会造成冲击。



去年原油宝出现了这期货是负的,怎么算呢?


6月份粮食价格风云变幻,忽然降低到了1分钱1公斤的程度;C拿着单子,叫嚷着1分钱1公斤,都没有人来搭理,6月30日,合约就要到期了,而C本身并没有仓库,要是不把这个单子搞出去,农民明天就开着拖拉机把这谷子倒在他的家门口,到时候所需要的清理费(仓储费用、运输费用)还要高,所以他只好换了招牌,说“谁把这个单子拿过去,不仅明天拿到1吨谷子,我还送你一百块钱!”

好好的谷子,白送都没有人要,只好倒贴钱了。


空头又是什么呢?那就要换一个位置了。


现在你给了我1000块钱,我答应你7月份给你一吨谷子;但是我偷懒了,不想去种田, 我就去找另一个相信到时候的价格会便宜的人。我跟D说,这一吨谷子到时只要100块钱就能买到,现在我给你600块钱,你把这个单子(卖单)拿去。D只要认可到时候的价格会比现在的交易价格更低,这个交易就成功了;我什么事都没做,就赚了400块钱;D也不一定去种田,而是转头把这个单子以300块钱又卖给了E。


一群不事生产的家伙,把这一吨还没有种出来的粮食买过来卖过去,变着法子买卖。如果E成功的话,在7月1日交割的时候,从市场上用100块钱买来谷子堆在A的门口,他就赚了200块。


要是最后一天(或者最后10天),粮食价格上涨很厉害,那可怎么样?比如涨到了10,000块?

E以200块钱的价格拿到这个,以为他能以低于这个数字的价格转手出去,或者从市面上以低于这个数字的价格买到粮食,现在失算了,自己点的炮...打碎了牙齿往肚里咽,就只能以市场价格来把这场交易完成了。


几天前青山控股在镍交易上,就是出现了类似这样的打碎了牙齿往肚里咽的事。


Wednesday, February 9

Damn it, I almost got hacked, by "Norton renewal" trick

Declaimer: After I think it over, I don't think it is related to Symantec or Norton.

Declaimer: I was an employee of Symantec for 5 years.



Here is the story: I found a "Purchase update" email :


And the attached invoice has the Norton letter head:





and the information:




I am a ex-employee of Symantec security product, and I like this product, and I did subscript for its service some time in previous years from my own pocket, after I already left the company.  But at this moment I am not using it now, and I don't have intention to use it. I guess I forgot to discontinue the subscription?


Without thinking further, I took out my phone and start dialing the listed number 1-872-234-8154 , talked to the representative. The office sounds crowdy because I can hear another representative talking in another line when I am talking to this one.  After I told him I received this email, and I wanted to unsubscribe the service and get my money back, he asked for the invoice number , and confirmed this transaction was already occurred this morning , but he pleasurably assured me that he would guide me through the process and I would have my money back.

That is a good start.

He confirmed I was in front of a computer, then asked which operating system that was, Windows or MacBook. After getting the answer of Windows, he guided me to type Win+R to a command line, and type in "www.anydesk.com" .   A browser is open to visit this AnyDesk website. I checked it, and it looks like a normal remote IT Help Desk platform. So I followed his instruction and download it and got to the setting to type in a password.

Maybe he was not familiar with the procedure, he let me waited 2 minutes when he was looking for password for me to type in (set a password in my client, so that he is able to connect ), so I used this time to google "AnyDesk", confirm it is a legitimate website.



Yes, he comes back with a password "norton1234" for me to type in, and I did so.  I remembered doing similar procedure when I need IT help from headquarter office, they would require me to do similar thing, so that they can control my work computer to fix things.


Wait, I don't need Norton to fix anything in my computer. I don't even have the Norton software installed in this computer. Why do they need to control my computer? I am here to ask them to unsubscribe and get my money back.


Before anything happened, I modified the password in my client from "norton1234" to another password, then I asked him:"why do you want to control my computer?" He assured me this was the process of getting my money back. 


I don't buy it. Insisted on not letting his control my computer. Even if my computer don't have any sensitive data, getting it control would be a humiliation to me, as a de-facto expert in security for all these years. He said this was the only way to get my money back. That is unreasonable! I asked for his manager, and yelled at the manager about him trying to connect/control my computer, but the manager also said that was the correct way to get my money. I refused to let them connect to my computer, and they refused to return to my money. I had to say:" do you have any other way to complain about this process, or do I have to go to court to get my money back?" The manager just simply said:"Yes you can go to the court."


The argument was so heated, my wife in next room came over to make sure things was still under control.


Anyway, I hung up the phone, not accomplished anything. 


 I need to go to Norton website.


Then I logged into my Norton account, and found it says my subscription was expired. Didn't they just charged my $299.99 to renew?  Maybe the transaction is completed but the account is not refreshed with new info? But why  is says $49.99 to renew? That is fishy...


So I came back to the origin "Purchase update" email. The sender is not even from @norton.com. It is from a @gmail.com email address!


Damn, that was a social engineering hack! and I almost fell for it! Had I not reset the password fast enough, the bad guys would have full control of my computer and do things I don't want to know! My sense of "not being remote-control" saved me!


I don't think AnyDesk is part of this hack, but it is being exploited by the bad guys. 

Saturday, July 24

煮饭

两点钟了,饿了,虽然周六早饭都吃得晚,但是这个点,真的应该吃午饭了,孩子们虽然都在玩游戏,但是也要抓来吃 。

到厨房一看,还有很多剩菜,特别是豆豉梅菜扣肉,很下饭的那种,可是没有米饭。

好吧,任务开始:煮饭。

家里的象印牌电饭锅,煮饭很香,可是要一个多小时才能搞好,等不及了。开来今天只好用传统的煮饭方式。

我们用柴火煮饭的时候,淘好米,加上水(秘诀:“渣米拳,糯米掌”。如果是煮糯米饭,就加水覆盖米上一掌,横躺着的掌,那么高的水。如果是另一种米,非糯米,我们叫渣米,那就要在米上有一拳高的水), 然后就要看火候了,什么时候发现出来的水汽是直上的,锅里基本就没有水了,这就是米饭好了的提示,赶紧把火撤了,别烧焦。 在煮饭过程中掀开锅盖来看里面还有没有水,这是绝对行不通的,只会做出夹生饭来。

这种做饭方式比较考验火候、技巧。我们熟手能够正好放一灶柴火,正好烧完柴了,饭也正好,不夹生,也不糊锅。这年头没有人用柴火,这个手艺也就成了屠龙之技。


其实,我们还有另一种做饭方式,不需要技巧。过10分钟来继续写。先去看锅。

2:20饭成。

这种新的方式(老的方式)是在锅里放多一些水,就跟煮粥一样;水开之后注意米汤不要溢出来,可以把火关小,也可以把锅盖打开。总之就是跟煮粥一样;时不时捞一些米粒出来看看,只要里面没有了白点,就可以把饭用漏勺捞出来了;如果喜欢软一些的米饭,可以煮更久一些。

是的,这个方式就叫做“捞饭”。捞出米饭后,锅里留着一些,你同时还得到了一锅粥! 不用担心糊了锅,也不用担心夹生。老少咸宜,真是居家旅行必备技巧。

Tuesday, June 15

wildcard in no_proxy

 I searched information about no_proxy , and this post open my eyes. In summary, it shows the discrepancy between upper case HTTP_PROXY, HTTPS_PROXY, NO_PROXY and lower case http_proxy, https_proxy, no_proxy, and the tools behave differently to them. Basic rule: only use lower case of these variables.


no_proxy was not very famous, and I wonder why. Whenever you set proxy to visit out-of-network resource, it is guarantee that you need to set no_proxy to visit local network resources without going though the proxy.


Anyway, that post tested 5 different tools (curl, wget, ruby, python, go), and for no_proxy setting, it tested *.hostname . Now I want to report that "no_proxy=192.168.0.*" would not work for curl and wget, but it is working for telnet .




Yes it is all so strange. I agree with the title of that post: We need to standardize no_proxy.

This comment has been removed by a blog administrator.
 

Sunday, April 18

下载youtube音乐

 Copyright disclaimer: 本文介绍开源工具YOUTUBE-DL,可以从YOUTUBE下载音乐、视频。仅用于个人娱乐用。


我经常在YOUTUBE看到好的音乐,下载下来刻在CD里,开车的时候播放。每次需要下载时就在Google临时搜索“ YOUTUBE MP3",在找到的链接里操作。这些链接大多充满广告,而且经常改变,我都忍下来了,理解他们谋生不易。可是我上次辛苦找到的一个能够让我下载部分音频(比如把前面的21秒广告、后面的1分钟语音切掉)的链接,今天果然失效了,连着翻了1屏幕的google链接都没有能够找到能够用的,我知道,我需要修改方法了。


youtube-dl 是一个很成熟的下载youtube的开源软件,命令行操作,你可以下载源代码编译,也可以在它页面上找到WINDOWS版本的链接;如果你用MacBook,可以执行


brew install youtube-dl
或者
sudo port install youtube-dl
安装。
安装后,如果要下载整个视频:
youtube-dl https://www.youtube.com/watch?v=lWwmYn0nXLE
视频就被存在本地一个 MP4 文档里了。
如果只要音乐(音频),指定用MP3格式:
youtube-dl -x --audio-format mp3   https://www.youtube.com/watch?v=lWwmYn0nXLE
这个音频里,我只要1分5秒之后,到5分15秒,共4分钟10秒的音频:
youtube-dl -x --audio-format mp3 --postprocessor-args "-ss 00:1:05 -t 00:04:10"   https://www.youtube.com/watch?v=lWwmYn0nXLE