2018年1月2日星期二

[读书]贸易可以使得每个人的状况更好的一个充分必要条件

假设有两个人A和B,分别可以生产两种商品1和2。A每天可以生产a1个商品1,或a2个商品2,B每天可以生产b1个商品1,或b2个商品2。
假设混合生产两种商品并不会造成任何人生产效率的变化,也就是说,如果A用一半的时间生产商品1,另一半的时间生产商品2,那么每天则可以生产a1/2个商品1,a2/2个商品2。
在没有贸易的情况下,A的生产可能边界曲线就是他的消费边界曲线,也就是横轴交于a1纵轴交于a2的一条线段。生产组合可以达到这条线段下方,就是A偷懒的情况,或者说是生产没有效率的情况。消费组合也可以达到线段下方,就是A用不完的情况,或者说是浪费的情况。如果A和B不偷懒、不浪费、还老死不相往来,就只能在各自的线段上移动。
考虑贸易:A给B d1个商品1,换得B给A d2个商品2,前提是A和B要有那么多。
贸易可以使得两者的消费组合都达到各自生产可能边界曲线之上,也就是说,每个人的状况更好,也就是双赢的局面。
a1,a2,b1,b2以及生产组合需要满足什么条件才可能双赢呢?a1:a2!=b1:b2,也就是说,某人存在生产某种商品的比较优势,或者说,两个人生产同一种商品的机会成本不同。生产组合几乎没有要求,只需要任何人都不把全部时间都只用来生产一种商品即可。事实上,一个人把全部时间用来生产他有比较优势的商品,也就是机会成本较低的商品,也是可以的。

证明:
充分性
对称的不妨假设a1/a2<b1/b2,则存在c使得a1/a2<c<b1/b2。
另A的生产组合为x1, x2,B的生产组合为y1, y2。x2>0, y1>0。
点在直线上,则有x1/a1+x2/a2=1, y1/b1+y2/b2=1

A出售d个商品2给B,换得cd个商品1。则他们的消费组合为
A:x1+cd, x2-d
B:y1-cd, y2+d

带入直线方程
(x1+cd)/a1+(x2-d)/a2=x1/a1+x2/a2+cd/a1-d/a2=1+(c-a1/a2)d/a1>1,即点在直线上方。
(y1-cd)/b1+(y2+d)/b2=1+(b1/b2-c)d/b2>1,也在直线上方!

必要性
假设a1:a2=b1:b2,贸易后的消费组合
A:x1+d1, x2-d2
B:y1-d1, y2+d2
如果贸易使得A的状况更好,即
(x1+d1)/a1+(x2-d2)/a2>1
d1/a1>d2/a2
d1/d2>b1/b2
(y1-d1)/b1+(y2+d2)/b2<1
即贸易使得B的状况更差

证毕。

2017年12月31日星期日

null as SqlParameter.Value

假设你有一个DB sproc:

Foo
@p1 int = 1

在C#调用时
p1.Value = null和不设p1,效果都是一样的,都是param value not set,结果会用sproc定义的默认值1
要想强制传NULL过去,需要设DBNull


2016年2月21日星期日

Fwd: Caller Info

经常在打log的时候要把上下文带上,很麻烦,好在C#提供了一个功能,可以在编译时获得调用者的方法名、文件名和行号,十分方便。
如果你以前用C++写Logger,一定对这些宏不陌生:
二者功能类似。

常言道:If it can be done in authoring time, don't do it in compile time. If it can be done in compile time, don't do it in run-time.

是为一点小小的心得。

2016年2月14日星期日

ssh tunnel from the phone

sometimes I want to share a photo from my phone via facebook, then I need ssh tunnel on phone.
As I used Android, I get VX connectbot from my local app store. It has port forward functionality build-in.
As I cannot always open putty on my laptop, I put the proxy into background
cat start_proxy.sh
{{{
nohup python proxy.py --port 8080 --hostname '' > proxy.log 2>&1 &
}}}


On my phone, the proxy setting is not at browser level, but at WALN setting, which means the network traffic of any app will go to the proxy, but interesting, the ssh tunnel itself didn't go to the proxy.

Don't forget to stop the proxy when you want to save money.

{{{
pkill -f proxy.py
}}}


2016年2月12日星期五

Fwd: Proxy.py + SSH Tunnel

I have a Linux server S in JP WEST, which can connect to Google.
Then I setup a proxy.py, a single file web proxy which support HTTPS, at S:8080.
Then I use SwitchySharp locally and set S:8080 as proxy server.
However, when I open Google in browser and search something, the connection is closed.
Checked proxy.py log, it should be because the communication between local machine and S was detected contains Google in plain text. Then I understand what happened on the wire.

Then I use Putty to setup SSH Tunnel, map local:1234 to S:8080, and set localhost:1234 as proxy in SwitchSharp.

Finally the information goes like this: my browser -- local proxy at localhost:1234 -- remote proxy at S:8080 -- internet





 


2015年12月31日星期四

A command line tool to sync your AdWords account to your BingAds


In my dream, it will be a cloud based application. You can use your phone to manage the update: control how to sync your campaigns from AdWords to BingAds. Workflows:

config: grant access to 2 networks. trigger full sync and rebuild id map (required before the first sync). how to automatically resolve conflict by entity type by attribute. skip and ignore, skip and notify, take suggestion

recent conflict report: (duplicate conflict should be detected and removed): ignore once (resolve manually by yourself later), take suggestion...checkbox: remember option

historical sync report. what has been updated on g, what has been synced/skipped to bingads, over the time, statistics

Just a dream of adops.